r({type:"logout"})},saveSettings:async a=>{const s=await $i.saveSettings(a);r({type:"settings",settings:s}),n("success","Ustawienia zapisane.")}}),[n,t]);return O.jsx(GO.Provider,{value:i,children:e})},Wr=()=>{const e=x.useContext(GO);if(!e)throw new Error("useApp must be used within AppProvider");return e},nz=()=>{const{user:e,loading:t}=Wr();return t?O.jsx("div",{className:"flex min-h-screen items-center justify-center bg-white",children:O.jsx(ug,{className:"h-16 w-72"})}):e?O.jsx(xO,{}):O.jsx(Py,{to:"/login",replace:!0})};/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const YO=(...e)=>e.filter((t,r,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===r).join(" ").trim();/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const iz=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const az=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,r,n)=>n?n.toUpperCase():r.toLowerCase());/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Z1=e=>{const t=az(e);return t.charAt(0).toUpperCase()+t.slice(1)};/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */var bv={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const oz=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0;return!1},sz=x.createContext({}),lz=()=>x.useContext(sz),uz=x.forwardRef(({color:e,size:t,strokeWidth:r,absoluteStrokeWidth:n,className:i="",children:a,iconNode:s,...u},c)=>{const{size:d=24,strokeWidth:h=2,absoluteStrokeWidth:p=!1,color:m="currentColor",className:g=""}=lz()??{},b=n??p?Number(r??h)*24/Number(t??d):r??h;return x.createElement("svg",{ref:c,...bv,width:t??d??bv.width,height:t??d??bv.height,stroke:e??m,strokeWidth:b,className:YO("lucide",g,i),...!a&&!oz(u)&&{"aria-hidden":"true"},...u},[...s.map(([w,S])=>x.createElement(w,S)),...Array.isArray(a)?a:[a]])});/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const He=(e,t)=>{const r=x.forwardRef(({className:n,...i},a)=>x.createElement(uz,{ref:a,iconNode:t,className:YO(`lucide-${iz(Z1(e))}`,`lucide-${e}`,n),...i}));return r.displayName=Z1(e),r};/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const cz=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],dz=He("arrow-right",cz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const fz=[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"2",key:"9lu3g6"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M6 12h.01M18 12h.01",key:"113zkx"}]],hz=He("banknote",fz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const pz=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],XO=He("boxes",pz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const vz=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],mz=He("chart-column",vz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const gz=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],yz=He("circle-check",gz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const wz=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],bz=He("circle-x",wz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const xz=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],JO=He("download",xz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const _z=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],Sz=He("house",_z);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const kz=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],Pz=He("info",kz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Ez=[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]],Oz=He("key-round",Ez);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Az=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],Cz=He("log-out",Az);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const jz=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],Tz=He("menu",jz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Nz=[["path",{d:"M12 22v-9",key:"x3hkom"}],["path",{d:"M15.17 2.21a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.655 1.655 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z",key:"2ntwy6"}],["path",{d:"M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13",key:"1pmm1c"}],["path",{d:"M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.636 1.636 0 0 0 1.63 0z",key:"12ttoo"}]],QO=He("package-open",Nz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Iz=[["path",{d:"M12 22V12",key:"d0xqtd"}],["path",{d:"M16 17h6",key:"1ook5g"}],["path",{d:"M19 14v6",key:"1ckrd5"}],["path",{d:"M21 10.535V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.675-.955",key:"28k6lz"}],["path",{d:"M3.29 7 12 12l8.71-5",key:"19ckod"}],["path",{d:"m7.5 4.27 8.997 5.148",key:"9yrvtv"}]],Rz=He("package-plus",Iz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Dz=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],Mz=He("pen",Dz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const $z=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],ZO=He("plus",$z);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Lz=[["path",{d:"M13 16H8",key:"wsln4y"}],["path",{d:"M14 8H8",key:"1l3xfs"}],["path",{d:"M16 12H8",key:"1fr5h0"}],["path",{d:"M4 3a1 1 0 0 1 1-1 1.3 1.3 0 0 1 .7.2l.933.6a1.3 1.3 0 0 0 1.4 0l.934-.6a1.3 1.3 0 0 1 1.4 0l.933.6a1.3 1.3 0 0 0 1.4 0l.933-.6a1.3 1.3 0 0 1 1.4 0l.934.6a1.3 1.3 0 0 0 1.4 0l.933-.6A1.3 1.3 0 0 1 19 2a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1 1.3 1.3 0 0 1-.7-.2l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.934.6a1.3 1.3 0 0 1-1.4 0l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-1.4 0l-.934-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-.7.2 1 1 0 0 1-1-1z",key:"ycz6yz"}]],eA=He("receipt-text",Lz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const zz=[["path",{d:"M12 17V7",key:"pyj7ub"}],["path",{d:"M16 8h-6a2 2 0 0 0 0 4h4a2 2 0 0 1 0 4H8",key:"1elt7d"}],["path",{d:"M4 3a1 1 0 0 1 1-1 1.3 1.3 0 0 1 .7.2l.933.6a1.3 1.3 0 0 0 1.4 0l.934-.6a1.3 1.3 0 0 1 1.4 0l.933.6a1.3 1.3 0 0 0 1.4 0l.933-.6a1.3 1.3 0 0 1 1.4 0l.934.6a1.3 1.3 0 0 0 1.4 0l.933-.6A1.3 1.3 0 0 1 19 2a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1 1.3 1.3 0 0 1-.7-.2l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.934.6a1.3 1.3 0 0 1-1.4 0l-.933-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-1.4 0l-.934-.6a1.3 1.3 0 0 0-1.4 0l-.933.6a1.3 1.3 0 0 1-.7.2 1 1 0 0 1-1-1z",key:"ycz6yz"}]],Uz=He("receipt",zz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Bz=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],Fz=He("refresh-cw",Bz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Wz=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],qz=He("save",Wz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Hz=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],tA=He("search",Hz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Kz=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],Vz=He("settings",Kz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Gz=[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]],Ay=He("shopping-cart",Gz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Yz=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],rA=He("trash-2",Yz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Xz=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],Jz=He("trending-up",Xz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const Qz=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],Zz=He("triangle-alert",Qz);/**
 * @license lucide-react v1.17.0 - ISC
 *
 * This source code is licensed under the ISC license.
 * See the LICENSE file in the root directory of this source tree.
 */const e3=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Cy=He("x",e3),e_=[{label:"Pulpit",path:"/",icon:Sz},{label:"Magazyn",path:"/inventory",icon:XO},{label:"SprzedaĹĽ",path:"/sales",icon:Ay},{label:"Raporty",path:"/reports",icon:mz},{label:"Ustawienia",path:"/settings",icon:Vz}],t3={"/":"Pulpit","/inventory":"Magazyn","/sales":"SprzedaĹĽ","/sales/new":"Nowa sprzedaĹĽ","/reports":"Raporty","/settings":"Ustawienia"},r3=()=>{const{user:e,signOut:t,settings:r}=Wr(),n=Ha(),i=t3[n.pathname]??"RetailCRM";return O.jsxs("div",{className:"min-h-screen bg-white text-slate-950",children:[O.jsxs("aside",{className:"fixed left-0 top-0 z-30 hidden h-screen w-60 border-r border-slate-200 bg-white px-4 py-5 lg:block",children:[O.jsxs("div",{className:"flex items-center gap-3 px-2",children:[O.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-primary-600 text-white",children:O.jsx(eA,{className:"h-5 w-5"})}),O.jsxs("div",{children:[O.jsx("p",{className:"text-base font-extrabold tracking-normal",children:"RetailCRM"}),O.jsx("p",{className:"text-xs font-medium text-slate-500",children:r.shopName})]})]}),O.jsx("nav",{className:"mt-8 space-y-1",children:e_.map(a=>O.jsxs(w1,{to:a.path,end:a.path==="/",className:({isActive:s})=>`flex items-center gap-3 rounded-md px-3 py-2.5 text-sm font-semibold transition ${s?"bg-primary-600 text-white shadow-sm":"text-slate-600 hover:bg-slate-50 hover:text-slate-950"}`,children:[O.jsx(a.icon,{className:"h-5 w-5"}),a.label]},a.path))}),O.jsxs("div",{className:"absolute bottom-5 left-4 right-4 rounded-lg border border-slate-200 p-3",children:[O.jsx("p",{className:"truncate text-sm font-semibold text-slate-800",children:e==null?void 0:e.email}),O.jsxs("button",{className:"mt-3 flex w-full items-center gap-2 text-sm font-semibold text-slate-500 hover:text-rose-600",onClick:t,children:[O.jsx(Cz,{className:"h-4 w-4"})," Wyloguj"]})]})]}),O.jsxs("div",{className:"lg:pl-60",children:[O.jsxs("header",{className:"sticky top-0 z-20 flex h-16 items-center justify-between border-b border-slate-200 bg-white/95 px-4 backdrop-blur sm:px-6",children:[O.jsxs("div",{children:[O.jsxs("div",{className:"flex items-center gap-2 text-xs font-semibold text-slate-500",children:[O.jsx(Tz,{className:"h-4 w-4 lg:hidden"}),"RetailCRM / ",i]}),O.jsx("h1",{className:"mt-0.5 text-xl font-bold text-slate-950",children:i})]}),O.jsx("div",{className:"hidden rounded-full bg-slate-100 px-3 py-1.5 text-xs font-semibold text-slate-600 sm:block",children:e==null?void 0:e.email})]}),O.jsx("main",{className:"px-4 py-6 pb-24 sm:px-6 lg:pb-8",children:O.jsx(xO,{})})]}),O.jsx("nav",{className:"fixed bottom-0 left-0 right-0 z-40 grid grid-cols-5 border-t border-slate-200 bg-white px-2 py-2 lg:hidden",children:e_.map(a=>O.jsxs(w1,{to:a.path,end:a.path==="/",className:({isActive:s})=>`flex flex-col items-center gap-1 rounded-md px-1 py-1.5 text-[11px] font-semibold ${s?"text-primary-600":"text-slate-500"}`,children:[O.jsx(a.icon,{className:"h-5 w-5"}),a.label]},a.path))})]})},n3=()=>{const{toasts:e,dismiss:t}=Wr();return O.jsx("div",{className:"fixed right-4 top-4 z-50 flex w-[min(360px,calc(100vw-2rem))] flex-col gap-3",children:e.map(r=>{const n=r.type==="success"?yz:r.type==="error"?bz:Pz,i=r.type==="success"?"text-emerald-600":r.type==="error"?"text-rose-600":"text-primary-600";return O.jsxs("div",{className:"panel flex items-start gap-3 p-3 shadow-soft",children:[O.jsx(n,{className:`mt-0.5 h-5 w-5 ${i}`}),O.jsx("p",{className:"flex-1 text-sm font-medium text-slate-700",children:r.message}),O.jsx("button",{className:"text-slate-400 hover:text-slate-700",onClick:()=>t(r.id),"aria-label":"Zamknij",children:O.jsx(Cy,{className:"h-4 w-4"})})]},r.id)})})},Ho=[{src:"https://fifth-gentle-45902158.figma.site/_components/v2/4de492f6d9cf8244ad5293233e5c6f52407d42fc/1.02464a56.png",bg:"#F4845F",panel:"#F79B7F"},{src:"https://fifth-gentle-45902158.figma.site/_components/v2/4de492f6d9cf8244ad5293233e5c6f52407d42fc/2.b977faab.png",bg:"#6BBF7A",panel:"#85CC92"},{src:"https://fifth-gentle-45902158.figma.site/_components/v2/4de492f6d9cf8244ad5293233e5c6f52407d42fc/3.4df853b4.png",bg:"#E882B4",panel:"#ED9DC4"},{src:"https://fifth-gentle-45902158.figma.site/_components/v2/4de492f6d9cf8244ad5293233e5c6f52407d42fc/4.4457fbce.png",bg:"#6EB5FF",panel:"#8DC4FF"}],i3=()=>{const{user:e,signIn:t,notify:r}=Wr(),[n,i]=x.useState(0),[a,s]=x.useState(window.innerWidth<640),[u,c]=x.useState("biuro@3mindset.pl"),[d,h]=x.useState(""),[p,m]=x.useState(""),[g,b]=x.useState(!1);if(x.useEffect(()=>{Ho.forEach(P=>{const C=new Image;C.src=P.src});const k=()=>s(window.innerWidth<640),A=window.setInterval(()=>i(P=>(P+1)%Ho.length),4e3);return window.addEventListener("resize",k),()=>{window.removeEventListener("resize",k),window.clearInterval(A)}},[]),e)return O.jsx(Py,{to:"/",replace:!0});const w=async k=>{k.preventDefault(),m(""),b(!0);try{await t(u,d,"login")}catch{const A="BĹ‚Ä™dny e-mail lub hasĹ‚o. SprĂłbuj ponownie.";m(A),r("error",A)}finally{b(!1)}},S=Ho[n];return O.jsxs("div",{style:{backgroundColor:S.bg,transition:"background-color 650ms cubic-bezier(0.4, 0, 0.2, 1)",fontFamily:"'Inter', sans-serif"},className:"relative flex h-screen w-full flex-col overflow-hidden sm:flex-row",children:[O.jsx("div",{className:"pointer-events-none absolute inset-0 z-50 opacity-40",style:{backgroundImage:`url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.08'/%3E%3C/svg%3E")`,backgroundSize:"200px 200px",backgroundRepeat:"repeat"}}),O.jsxs("div",{className:"relative z-40 hidden h-full w-full flex-col justify-between border-r border-white/10 bg-black/15 p-6 text-white shadow-[20px_0_50px_rgba(0,0,0,0.15)] backdrop-blur-2xl sm:flex sm:w-[380px] sm:p-10 md:w-[420px] md:p-12 lg:w-[460px]",children:[O.jsx("div",{className:"text-lg font-bold uppercase tracking-wider",children:"MadziaCRM"}),O.jsxs("div",{className:"my-auto py-6",children:[O.jsx("h1",{className:"mb-2 text-3xl font-bold tracking-normal",children:"Witamy"}),O.jsx("p",{className:"mb-8 text-sm text-white/70",children:"Zaloguj siÄ™ do systemu MadziaCRM"}),O.jsxs("form",{onSubmit:w,className:"space-y-5",children:[p&&O.jsx("div",{className:"rounded-2xl border border-red-500/30 bg-red-500/20 px-4 py-3 text-left text-sm text-red-100",children:p}),O.jsxs("label",{className:"block space-y-1.5 text-left",children:[O.jsx("span",{className:"pl-1 text-xs font-semibold uppercase tracking-wider text-white/80",children:"E-mail"}),O.jsx("input",{type:"email",required:!0,placeholder:"WprowadĹş swĂłj e-mail",value:u,onChange:k=>c(k.target.value),className:"w-full rounded-2xl border border-white/20 bg-white/10 px-5 py-4 text-white placeholder-white/30 transition-all duration-150 focus:bg-white/15 focus:outline-none focus:ring-2 focus:ring-white/50"})]}),O.jsxs("label",{className:"block space-y-1.5 text-left",children:[O.jsx("span",{className:"pl-1 text-xs font-semibold uppercase tracking-wider text-white/80",children:"HasĹ‚o"}),O.jsx("input",{type:"password",required:!0,placeholder:"WprowadĹş swoje hasĹ‚o",value:d,onChange:k=>h(k.target.value),className:"w-full rounded-2xl border border-white/20 bg-white/10 px-5 py-4 text-white placeholder-white/30 transition-all duration-150 focus:bg-white/15 focus:outline-none focus:ring-2 focus:ring-white/50"})]}),O.jsx("button",{type:"submit",disabled:g,className:"