(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7177],{2950:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,PointsNotificationProvider:()=>o});var i=n(95155),r=n(12115);let a=(0,r.createContext)(void 0);function o(e){let{children:t}=e,[n,o]=(0,r.useState)([]),[s]=(0,r.useState)(()=>"undefined"!=typeof Audio?new Audio("/sounds/notification.mp3"):null),l=(0,r.useCallback)(e=>{let t="notification-".concat(Date.now(),"-").concat(Math.random()),n={id:t,points:e};o(e=>[...e,n]),s&&(s.currentTime=0,s.play().catch(e=>console.log("Audio playback failed:",e))),setTimeout(()=>{o(e=>e.filter(e=>e.id!==t))},3200)},[s]),c=(0,r.useCallback)(e=>{o(t=>t.filter(t=>t.id!==e))},[]);return(0,r.useEffect)(()=>{let e=e=>{let t=e.detail;t&&"number"==typeof t.points&&l(t.points)};return window.addEventListener("newPoints",e),()=>window.removeEventListener("newPoints",e)},[l]),(0,i.jsx)(a.Provider,{value:{notifications:n,showPointsNotification:l,dismissNotification:c},children:t})}function s(){let e=(0,r.useContext)(a);if(!e)throw Error("usePointsNotification must be used within PointsNotificationProvider");return e}},3166:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});let i=(0,n(71847).A)("wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]])},3998:(e,t,n)=>{"use strict";n.d(t,{$:()=>l});var i=n(95155);n(12115);var r=n(32467),a=n(83101),o=n(64269);let s=(0,a.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function l(e){let{className:t,variant:n,size:a,asChild:l=!1,...c}=e,d=l?r.DX:"button";return(0,i.jsx)(d,{"data-slot":"button",className:(0,o.cn)(s({variant:n,size:a,className:t})),...c})}},10578:(e,t,n)=>{"use strict";n.d(t,{L:()=>r});var i=n(2950);function r(){let{showPointsNotification:e}=(0,i.E)();return e}},11647:(e,t,n)=>{"use strict";n.d(t,{E:()=>l});var i=n(95155);n(12115);var r=n(32467),a=n(83101),o=n(64269);let s=(0,a.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:n,asChild:a=!1,...l}=e,c=a?r.DX:"span";return(0,i.jsx)(c,{"data-slot":"badge",className:(0,o.cn)(s({variant:n}),t),...l})}},12165:(e,t,n)=>{"use strict";n.d(t,{PWAStatus:()=>l});var i=n(95155),r=n(12115),a=n(11647),o=n(3166),s=n(33738);function l(){let[e,t]=(0,r.useState)(!0),[n,l]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{l(window.matchMedia("(display-mode: standalone)").matches);let e=()=>t(!0),n=()=>t(!1);return t(navigator.onLine),window.addEventListener("online",e),window.addEventListener("offline",n),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",n)}},[]),n)?(0,i.jsx)(a.E,{variant:e?"default":"destructive",className:"flex items-center gap-1 text-xs",children:e?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.A,{className:"w-3 h-3"}),"آنلاین"]}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.A,{className:"w-3 h-3"}),"آفلاین"]})}):null}},13673:()=>{},14734:(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var i=n(12115),r=n(45520),a=n(36489),o=n(95704);function s(){let{data:e}=(0,a.useSession)(),[t,n]=(0,i.useState)(null),[s,l]=(0,i.useState)(!1),[c,d]=(0,i.useState)(null),u=(0,i.useRef)(null);return(0,i.useEffect)(()=>{(async()=>{try{var e;let t=await fetch("/api/settings/socket-status"),n=await t.json();d(null==(e=n.socketEnabled)||e),console.log("\uD83D\uDD0C Socket enabled status:",n.socketEnabled)}catch(e){console.error("Error checking socket status:",e),d(!0)}})()},[]),(0,i.useEffect)(()=>{if(!(null==e?void 0:e.user)||null===c)return;if(!1===c)return void console.log("\uD83D\uDD0C Socket.IO disabled by admin - SSE will be used instead");let i=window.location.hostname.includes("app.github.dev")||window.location.hostname.includes("github.dev"),a=window.location.origin;console.log("\uD83D\uDD0C Socket URL Detection:"),console.log("  - isCodespace:",i),console.log("  - NODE_ENV:","production"),console.log("  - NEXT_PUBLIC_SITE_URL:",o.env.NEXT_PUBLIC_SITE_URL),console.log("  - window.location.origin:",window.location.origin),console.log("  - window.location.hostname:",window.location.hostname),console.log("  - Final socketUrl:",a);let s=(0,r.io)(a,{path:"/api/socket/io",addTrailingSlash:!1,transports:["polling","websocket"],timeout:1e4,reconnection:!0,reconnectionAttempts:3,reconnectionDelay:5e3,reconnectionDelayMax:1e4,randomizationFactor:0,forceNew:!0});return s.on("connect",()=>{console.log("✅ Socket connected:",s.id),l(!0),e.user.id&&s.emit("joinUserRoom",e.user.id)}),s.on("disconnect",e=>{console.log("❌ Socket disconnected:",e),l(!1),"io server disconnect"===e&&(u.current=setTimeout(()=>{s.connect()},5e3))}),s.on("connect_error",e=>{console.error("\uD83D\uDD25 Socket connection error:",e.message),l(!1)}),s.io.on("reconnect_failed",()=>{console.log("❌ Socket reconnection failed after all attempts. Stopping socket."),l(!1)}),n(s),()=>{u.current&&clearTimeout(u.current),null==t||t.disconnect()}},[null==e?void 0:e.user,c]),{socket:t,isConnected:s,joinUserRoom:()=>{t&&(null==e?void 0:e.user.id)&&t.emit("joinUserRoom",e.user.id)},leaveUserRoom:()=>{t&&(null==e?void 0:e.user.id)&&t.emit("leaveUserRoom",e.user.id)},joinCafeRoom:e=>{t&&t.emit("joinCafeRoom",e)},leaveCafeRoom:e=>{t&&t.emit("leaveCafeRoom",e)},joinEventRoom:e=>{t&&t.emit("joinEventRoom",e)},leaveEventRoom:e=>{t&&t.emit("leaveEventRoom",e)}}}},16485:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});let i=(0,n(71847).A)("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]])},20063:(e,t,n)=>{"use strict";var i=n(47260);n.o(i,"redirect")&&n.d(t,{redirect:function(){return i.redirect}}),n.o(i,"useParams")&&n.d(t,{useParams:function(){return i.useParams}}),n.o(i,"usePathname")&&n.d(t,{usePathname:function(){return i.usePathname}}),n.o(i,"useRouter")&&n.d(t,{useRouter:function(){return i.useRouter}}),n.o(i,"useSearchParams")&&n.d(t,{useSearchParams:function(){return i.useSearchParams}})},20508:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});let i=(0,n(71847).A)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]])},21873:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});let i=(0,n(71847).A)("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]])},23082:(e,t,n)=>{"use strict";n.d(t,{SessionProvider:()=>a});var i=n(95155),r=n(36489);function a(e){let{children:t,session:n}=e;return(0,i.jsx)(r.SessionProvider,{session:n,children:t})}},23825:()=>{},25112:(e,t,n)=>{"use strict";n.d(t,{h:()=>a});var i=n(12115),r=n(36489);function a(){var e;let{data:t}=(0,r.useSession)(),[n,a]=(0,i.useState)(!1),[o,s]=(0,i.useState)(null),[l,c]=(0,i.useState)(null),d=(0,i.useRef)(null);return(0,i.useEffect)(()=>{var e;if(!(null==t||null==(e=t.user)?void 0:e.id))return;console.log("\uD83D\uDCE1 Setting up SSE connection for user:",t.user.id);let n=new EventSource("/api/notifications/sse");return d.current=n,n.onopen=()=>{console.log("✅ SSE connection established"),a(!0),c(null)},n.onmessage=e=>{try{let t=JSON.parse(e.data);console.log("\uD83D\uDD14 SSE notification received:",t),s(t),"notification"===t.type&&window.dispatchEvent(new CustomEvent("newNotification",{detail:t})),"points"===t.type&&window.dispatchEvent(new CustomEvent("newPoints",{detail:t}))}catch(e){console.error("❌ Error parsing SSE message:",e)}},n.onerror=e=>{console.error("❌ SSE connection error:",e),a(!1),c("اتصال real-time قطع شد")},()=>{console.log("\uD83E\uDDF9 Cleaning up SSE connection"),n.close(),a(!1)}},[null==t||null==(e=t.user)?void 0:e.id]),{isConnected:n,lastNotification:o,connectionError:l}}},33425:(e,t,n)=>{Promise.resolve().then(n.t.bind(n,96168,23)),Promise.resolve().then(n.t.bind(n,33944,23)),Promise.resolve().then(n.bind(n,18720)),Promise.resolve().then(n.t.bind(n,13673,23)),Promise.resolve().then(n.t.bind(n,23825,23)),Promise.resolve().then(n.bind(n,92725)),Promise.resolve().then(n.bind(n,54826)),Promise.resolve().then(n.bind(n,36758)),Promise.resolve().then(n.bind(n,23082)),Promise.resolve().then(n.bind(n,76162)),Promise.resolve().then(n.bind(n,81192)),Promise.resolve().then(n.bind(n,12165)),Promise.resolve().then(n.bind(n,2950))},33738:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});let i=(0,n(71847).A)("wifi-off",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]])},33944:e=>{e.exports={style:{fontFamily:"'Geist Mono', 'Geist Mono Fallback'",fontStyle:"normal"},className:"__className_9a8899",variable:"__variable_9a8899"}},36758:(e,t,n)=>{"use strict";n.d(t,{GlobalNotificationManager:()=>d});var i=n(95155),r=n(36489),a=n(12115),o=n(14734),s=n(25112),l=n(18720);function c(e){let{userId:t}=e,{socket:n,isConnected:i}=(0,o.F)(),{isConnected:r}=(0,s.h)(),{playNotificationSound:c}=function(){let e=(0,a.useRef)(null),t=(0,a.useRef)(!1),n=(0,a.useCallback)(()=>{if(!t.current)try{e.current=new(window.AudioContext||window.webkitAudioContext),t.current=!0,console.log("\uD83D\uDD0A Audio context initialized")}catch(e){console.error("Failed to initialize audio context:",e)}},[]);return(0,a.useEffect)(()=>{let e=()=>{n(),document.removeEventListener("click",e),document.removeEventListener("touchstart",e),document.removeEventListener("keydown",e)};return document.addEventListener("click",e),document.addEventListener("touchstart",e),document.addEventListener("keydown",e),()=>{document.removeEventListener("click",e),document.removeEventListener("touchstart",e),document.removeEventListener("keydown",e)}},[n]),{playNotificationSound:(0,a.useCallback)(()=>{e.current||n();let t=e.current;if(!t)return void console.warn("\uD83D\uDD07 Audio context not available");try{"suspended"===t.state&&t.resume();let e=t.currentTime,n=t.createOscillator(),i=t.createOscillator(),r=t.createOscillator(),a=t.createOscillator(),o=t.createGain(),s=t.createGain(),l=t.createGain(),c=t.createGain(),d=t.createGain();n.frequency.value=880,i.frequency.value=1318.5,r.frequency.value=1760,a.frequency.value=2637,n.type="triangle",i.type="sine",r.type="sine",a.type="sine",n.connect(o),i.connect(s),r.connect(l),a.connect(c),o.connect(d),s.connect(d),l.connect(d),c.connect(d),d.connect(t.destination),o.gain.setValueAtTime(0,e),o.gain.linearRampToValueAtTime(.6,e+.01),s.gain.setValueAtTime(0,e),s.gain.linearRampToValueAtTime(.5,e+.01),l.gain.setValueAtTime(0,e),l.gain.linearRampToValueAtTime(.4,e+.01),c.gain.setValueAtTime(0,e),c.gain.linearRampToValueAtTime(.25,e+.01),o.gain.exponentialRampToValueAtTime(.001,e+.8),s.gain.exponentialRampToValueAtTime(.001,e+.7),l.gain.exponentialRampToValueAtTime(.001,e+.6),c.gain.exponentialRampToValueAtTime(.001,e+.4),d.gain.setValueAtTime(.8,e),setTimeout(()=>{if("closed"===t.state)return;let e=t.currentTime,n=t.createOscillator(),i=t.createOscillator(),r=t.createOscillator(),a=t.createGain(),o=t.createGain(),s=t.createGain(),l=t.createGain();n.frequency.value=1318.5,i.frequency.value=1760,r.frequency.value=2637,n.type="sine",i.type="sine",r.type="sine",n.connect(a),i.connect(o),r.connect(s),a.connect(l),o.connect(l),s.connect(l),l.connect(t.destination),a.gain.setValueAtTime(0,e),a.gain.linearRampToValueAtTime(.5,e+.01),a.gain.exponentialRampToValueAtTime(.001,e+.4),o.gain.setValueAtTime(0,e),o.gain.linearRampToValueAtTime(.4,e+.01),o.gain.exponentialRampToValueAtTime(.001,e+.35),s.gain.setValueAtTime(0,e),s.gain.linearRampToValueAtTime(.25,e+.01),s.gain.exponentialRampToValueAtTime(.001,e+.25),l.gain.setValueAtTime(.7,e),n.start(e),i.start(e),r.start(e),n.stop(e+.4),i.stop(e+.35),r.stop(e+.25)},150),n.start(e),i.start(e),r.start(e),a.start(e),n.stop(e+.8),i.stop(e+.7),r.stop(e+.6),a.stop(e+.4),console.log("\uD83D\uDD14 Notification sound played")}catch(e){console.error("Failed to play notification sound:",e)}},[n])}}(),d=(0,a.useCallback)((e,t,n)=>{let i=(null==t?void 0:t.toLowerCase())||"",r=(null==n?void 0:n.toLowerCase())||"";return i.includes("لغو")||i.includes("کنسل")||i.includes("حذف")||r.includes("لغو شد")||r.includes("کنسل شد")||r.includes("لغو کرد")?"❌":i.includes("ثبت")||i.includes("تایید")||i.includes("موفق")||r.includes("ثبت شد")||r.includes("تایید شد")||i.includes("رزرو جدید")?"✅":({BOOKING:"\uD83D\uDCC5",EVENT:"\uD83C\uDFAE",SYSTEM:"\uD83D\uDD14",FRIEND_REQUEST:"\uD83D\uDC65",PAYMENT:"\uD83D\uDCB3",REVIEW:"⭐"})[e]||"\uD83D\uDD14"},[]),u=(0,a.useCallback)(e=>{c(),(0,l.o)(e.title,{description:e.message,icon:d(e.type,e.title,e.message),duration:"SYSTEM"===e.type?3e3:5e3,position:"top-left"})},[c,d]);return(0,a.useEffect)(()=>{console.log("\uD83D\uDD14 EnhancedNotificationManager status:",{userId:t,socketConnected:i,sseConnected:r,hasSocket:!!n})},[t,i,r,n]),(0,a.useEffect)(()=>{if(!n||!i)return void console.log("⏳ Socket.IO not ready yet, waiting...",{hasSocket:!!n,isConnected:i});console.log("✅ Socket.IO connected, setting up notification listeners for user:",t),n.emit("joinUserRoom",t);let e=async e=>{u(e),console.log("\uD83D\uDCF1 Socket.IO notification received and displayed")},r=e=>{c(),(0,l.o)("درخواست دوستی از ".concat(e.fromUserName),{description:"می‌توانید از طریق پروفایل پاسخ دهید",icon:"\uD83D\uDC65",duration:8e3,position:"top-left"})},a=e=>{c(),(0,l.o)("".concat(e.userName," درخواست دوستی شما را پذیرفت"),{description:"حالا می‌توانید با هم در رویدادها شرکت کنید",icon:"✅",duration:5e3,position:"top-left"})};return n.on("notification",e),n.on("friendRequestReceived",r),n.on("friendRequestAccepted",a),()=>{n.off("notification",e),n.off("friendRequestReceived",r),n.off("friendRequestAccepted",a),n.emit("leaveUserRoom",t)}},[n,i,t,c,u]),(0,a.useEffect)(()=>{let e=e=>{let t=e.detail;t&&"notification"===t.type&&(u({...t,type:t.notificationType||t.type}),console.log("\uD83D\uDCE1 SSE notification received and displayed"))};return window.addEventListener("newNotification",e),()=>{window.removeEventListener("newNotification",e)}},[u]),null}function d(){var e;let{data:t}=(0,r.useSession)();return(null==t||null==(e=t.user)?void 0:e.id)?(0,i.jsx)(c,{userId:t.user.id}):null}},39867:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});let i=(0,n(71847).A)("download",[["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"}]])},54826:(e,t,n)=>{"use strict";n.d(t,{MobileNavigation:()=>h});var i=n(95155),r=n(20063),a=n(12115),o=n(52619),s=n.n(o),l=n(20508),c=n(16485),d=n(21873),u=n(36489),m=n(58415),v=n(2950);function f(){let{notifications:e}=(0,v.E)();return 0===e.length?null:(0,i.jsx)(i.Fragment,{children:e.map((e,t)=>{let{id:n,points:r}=e,a=r>=0,o=(e=>{let t=["۰","۱","۲","۳","۴","۵","۶","۷","۸","۹"];return Math.abs(e).toString().replace(/\d/g,e=>t[parseInt(e)])})(r),s="".concat(o).concat(a?"+":"-");return(0,i.jsx)("div",{className:"absolute bottom-10 left-1/2 -translate-x-1/2 z-[100] pointer-events-none",style:{animationDelay:"".concat(150*t,"ms")},children:(0,i.jsxs)("div",{className:"relative w-14 h-14 animate-float-up-fade overflow-visible",children:[(0,i.jsx)("div",{className:"absolute inset-0 bg-[#FFA515] rounded-full shadow-[0_4px_15px_rgba(255,165,21,0.4)] border-2 border-white/20"}),(0,i.jsx)("div",{className:"absolute inset-0 flex items-center justify-center p-2.5 overflow-visible",children:(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 57.26 52.41",className:"w-full h-full text-black overflow-visible",children:(0,i.jsxs)(m.P.g,{animate:a?{y:r>=4?[0,0,0,0,-14,0,-8,0]:[0,0,0,0,-6,0,-4,0],rotate:[0,0,0,0,-5,5,-3,0]}:{x:[0,0,0,0,-4,4,-4,4,-2,2,0]},transition:{duration:2.5,times:a?[0,.2,.5,.7,.75,.8,.85,.9]:[0,.2,.5,.7,.73,.76,.79,.82,.85,.88,.9],ease:"easeInOut"},style:{originX:"28.63px",originY:"26.2px"},children:[(0,i.jsx)("path",{d:"M57.26,7.61v37.2a7.6,7.6,0,0,1-7.6,7.6H7.6A7.6,7.6,0,0,1,0,44.81V7.66A7.6,7.6,0,0,1,11.09.91l14,7.23a7.61,7.61,0,0,0,7,0L46.18.85A7.6,7.6,0,0,1,57.26,7.61Z",fill:"currentColor"}),(0,i.jsx)(m.P.ellipse,{cx:"19.04",cy:"30.22",rx:"7.44",ry:"2.29",fill:"#ffffff",animate:{rx:[7.44,7.2,7.2,7.2,7.2],ry:[2.29,7.2,7.2,7.2,7.2],x:[0,6,6,0,0],y:[0,-8,-8,0,0]},transition:{duration:2.5,times:[0,.2,.5,.7,1],ease:"easeInOut"},style:{originX:"19.04px",originY:"30.22px"}}),(0,i.jsx)(m.P.rect,{x:"11",y:"22",width:"16",height:"0",fill:"currentColor",animate:r>=4?{height:[0,0,0,12,12,12,12],x:[0,6,6,6,0,0,0],y:[0,-8,7.42,.22,8.22,8.22,8.22]}:a?{height:[0,0,0,0,16,0,0],x:[0,6,6,0,0,0,0],y:[0,-8,-8,0,0,0,0]}:{height:[0,0,0,8,8,8,8],x:[0,6,6,6,0,0,0],y:[0,-8,-8,-8,0,0,0]},transition:{duration:2.5,times:r>=4?[0,.2,.45,.5,.7,.85,1]:a?[0,.2,.5,.7,.75,.85,1]:[0,.2,.45,.5,.7,.85,1],ease:"easeInOut"}}),(0,i.jsx)(m.P.circle,{cx:"39.48",cy:"30.22",r:"6.18",fill:"#ffffff",animate:{r:[6.18,7.2,7.2,7.2,7.2],x:[0,6,6,0,0],y:[0,-8,-8,0,0]},transition:{duration:2.5,times:[0,.2,.5,.7,1],ease:"easeInOut"},style:{originX:"39.48px",originY:"30.22px"}}),(0,i.jsx)(m.P.rect,{x:"32",y:"22",width:"16",height:"0",fill:"currentColor",animate:r>=4?{height:[0,0,0,12,12,12,12],x:[0,6,6,6,0,0,0],y:[0,-8,7.42,.22,8.22,8.22,8.22]}:a?{height:[0,0,0,0,16,0,0],x:[0,6,6,0,0,0,0],y:[0,-8,-8,0,0,0,0]}:{height:[0,0,0,8,8,8,8],x:[0,6,6,6,0,0,0],y:[0,-8,-8,-8,0,0,0]},transition:{duration:2.5,times:r>=4?[0,.2,.45,.5,.7,.85,1]:a?[0,.2,.5,.7,.75,.85,1]:[0,.2,.45,.5,.7,.85,1],ease:"easeInOut"}})]})})}),(0,i.jsx)("div",{className:"absolute -top-5 -right-1.5 bg-white rounded-full px-2 py-1 shadow-md border border-gray-100 min-w-[28px] flex items-center justify-center",children:(0,i.jsx)("span",{className:"text-[20px] font-black leading-none ".concat(a?"text-emerald-600":"text-rose-600"),children:s})}),(0,i.jsx)("div",{className:"absolute inset-0 bg-[#FFA515] rounded-full blur-md opacity-30 -z-10"})]})},n)})})}let p=e=>{let{href:t,icon:n,label:r,isActive:a,activeColorClass:o,activeBgClass:l}=e;return(0,i.jsxs)(s(),{href:t,className:"relative flex flex-col items-center justify-center py-2 px-1 rounded-2xl transition-all duration-300 ease-[cubic-bezier(0.4,0,0.2,1)] ".concat(a?"".concat(o," ").concat(l):"text-gray-500 hover:text-gray-600 hover:bg-gray-100"),children:[(0,i.jsxs)("div",{className:"relative transition-transform duration-300 ".concat(a?"scale-110 -translate-y-0.5":""),children:[(0,i.jsx)(n,{className:"w-6 h-6 transition-all duration-300",strokeWidth:a?2.5:2}),a&&(0,i.jsx)("div",{className:"absolute inset-0 bg-current opacity-20 blur-md rounded-full -z-10"})]}),(0,i.jsx)("span",{className:"text-[10px] mt-1 transition-all duration-300 ".concat(a?"font-bold scale-105":"font-medium"),children:r})]})};function h(){let e=(0,r.usePathname)(),{data:t}=(0,u.useSession)(),n=null==e?void 0:e.includes("/auth/"),o=(null==e?void 0:e.includes("/dashboard"))||(null==e?void 0:e.includes("/admin-dashboard"))||(null==e?void 0:e.includes("/business-dashboard")),s=(0,a.useMemo)(()=>{let t="/events"===e,n="/cafes"===e;return!o&&!t&&!n},[e,o]);return((0,a.useEffect)(()=>{if(n)return;let e=document.body;return e.classList.add("mobile-bottom-nav-padding"),()=>{e.classList.remove("mobile-bottom-nav-padding")}},[n]),n)?null:(0,i.jsx)(i.Fragment,{children:(0,i.jsxs)("div",{className:"md:hidden fixed bottom-0 left-0 right-0 bg-white/50 backdrop-blur-xl border-t border-gray-200/60 shadow-[0_-8px_30px_rgba(0,0,0,0.04)] z-50 pb-safe",children:[s&&(0,i.jsxs)("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[(0,i.jsx)("div",{className:"absolute inset-0 animate-nav-shimmer",style:{background:"linear-gradient(75deg, transparent 0%, transparent 35%, rgba(255,255,255,0.7) 45%, rgba(255,255,255,0.95) 50%, rgba(255,255,255,0.7) 55%, transparent 65%, transparent 100%)",width:"150%",height:"200%",top:"-50%"}}),(0,i.jsx)("div",{className:"absolute top-0 left-0 right-0 h-[2px] overflow-hidden",children:(0,i.jsx)("div",{className:"absolute inset-0 animate-nav-shimmer",style:{background:"linear-gradient(90deg, transparent 0%, transparent 40%, rgba(255,255,255,0.9) 48%, rgba(255,255,255,1) 50%, rgba(255,255,255,0.9) 52%, transparent 60%, transparent 100%)",width:"150%",boxShadow:"0 0 8px 2px rgba(255,255,255,0.6)"}})})]}),(0,i.jsxs)("div",{className:"grid grid-cols-3 gap-2 py-1 px-6 relative z-10",children:[(0,i.jsxs)("div",{className:"relative",children:[(0,i.jsx)(p,{href:(()=>{var e;if(!(null==t?void 0:t.user))return"/auth/customer/signin";switch(null==(e=t.user)?void 0:e.role){case"ADMIN":case"SUPER_ADMIN":return"/admin-dashboard";case"CAFE_OWNER":return"/business-dashboard";default:return"/dashboard"}})(),icon:l.A,label:"حساب",isActive:!!o,activeColorClass:"text-violet-600",activeBgClass:"bg-violet-50"}),(0,i.jsx)(f,{})]}),(0,i.jsx)(p,{href:"/events",icon:c.A,label:"رویدادها",isActive:"/events"===e,activeColorClass:"text-orange-500",activeBgClass:"bg-orange-50"}),(0,i.jsx)(p,{href:"/cafes",icon:d.A,label:"کافه‌ها",isActive:"/cafes"===e,activeColorClass:"text-emerald-600",activeBgClass:"bg-emerald-50"})]})]})})}},64269:(e,t,n)=>{"use strict";n.d(t,{cn:()=>a});var i=n(2821),r=n(75889);function a(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,r.QP)((0,i.$)(t))}},65229:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});let i=(0,n(71847).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},76162:(e,t,n)=>{"use strict";n.d(t,{InstallPrompt:()=>l});var i=n(95155),r=n(12115),a=n(3998),o=n(39867),s=n(65229);function l(){let[e,t]=(0,r.useState)(null),[n,l]=(0,r.useState)(!1),[c,d]=(0,r.useState)(!1),[u,m]=(0,r.useState)(!1),[v,f]=(0,r.useState)(!1);(0,r.useEffect)(()=>{d(/iPad|iPhone|iPod/.test(navigator.userAgent)),f(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.innerWidth<768);let e=window.matchMedia("(display-mode: standalone)").matches;m(e);let i="true"===localStorage.getItem("installPromptDismissed")?36e5:3e4,r=r=>{r.preventDefault(),t(r),setTimeout(()=>{e||n||l(!0)},i)};return window.addEventListener("beforeinstallprompt",r),()=>{window.removeEventListener("beforeinstallprompt",r)}},[n]);let p=async()=>{if(!e)return;e.prompt();let{outcome:n}=await e.userChoice;"accepted"===n&&(l(!1),localStorage.removeItem("installPromptDismissed")),t(null)},h=()=>{l(!1),localStorage.setItem("installPromptDismissed","true")};return((0,r.useEffect)(()=>{"true"===localStorage.getItem("installPromptDismissed")&&l(!1)},[]),!u&&v&&(e||c)&&n)?(0,i.jsx)("div",{className:"fixed bottom-4 left-4 right-4 z-50 animate-slide-up",children:(0,i.jsxs)("div",{className:"bg-white dark:bg-gray-800 border rounded-lg shadow-lg p-4 mx-auto max-w-sm",children:[(0,i.jsxs)("div",{className:"flex items-start justify-between mb-3",children:[(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)("div",{className:"w-10 h-10 bg-purple-600 rounded-lg flex items-center justify-center",children:(0,i.jsx)(o.A,{className:"w-5 h-5 text-white"})}),(0,i.jsxs)("div",{children:[(0,i.jsx)("h3",{className:"font-semibold text-sm",children:"نصب Playmo"}),(0,i.jsx)("p",{className:"text-xs text-gray-600 dark:text-gray-400",children:"دسترسی سریع‌تر از صفحه اصلی"})]})]}),(0,i.jsx)(a.$,{variant:"ghost",size:"sm",onClick:h,className:"h-6 w-6 p-0",children:(0,i.jsx)(s.A,{className:"w-4 h-4"})})]}),c?(0,i.jsxs)("div",{className:"text-xs text-gray-600 dark:text-gray-400 mb-3",children:["برای نصب: روی"," ",(0,i.jsx)("span",{className:"inline-flex items-center mx-1",children:(0,i.jsx)("svg",{className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24",children:(0,i.jsx)("path",{d:"M7 14l5-5 5 5z"})})}),'کلیک کرده و "Add to Home Screen" را انتخاب کنید']}):(0,i.jsxs)("div",{className:"flex gap-2",children:[(0,i.jsx)(a.$,{onClick:p,size:"sm",className:"flex-1 text-xs",children:"نصب کن"}),(0,i.jsx)(a.$,{onClick:h,variant:"outline",size:"sm",className:"flex-1 text-xs",children:"بعداً"})]})]})}):null}},81192:(e,t,n)=>{"use strict";n.d(t,{NajvaSubscriber:()=>r});var i=n(12115);function r(){let e=(0,i.useRef)(!1);return(0,i.useEffect)(()=>{let t=async t=>{if(!e.current)try{(await fetch("/api/user/push-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t})})).ok&&(e.current=!0,console.log("✅ Najva push token synced successfully"))}catch(e){console.error("❌ Error syncing Najva push token:",e)}},n=()=>{window.NAJVA&&(window.NAJVA.najvaUserSubscribed=e=>{console.log("\uD83D\uDD14 New Najva subscription:",e),t(e)},(async()=>{try{let e=await window.NAJVA.getUserToken();e&&t(e)}catch(e){}})())};if(window.NAJVA)n();else{let e=0,t=setInterval(()=>{e++,window.NAJVA?(n(),clearInterval(t)):e>=50&&clearInterval(t)},500);return()=>clearInterval(t)}},[]),null}},92725:(e,t,n)=>{"use strict";n.d(t,{PointsTracker:()=>o});var i=n(12115),r=n(36489),a=n(10578);function o(){return!function(){var e;let{data:t}=(0,r.useSession)(),n=(0,a.L)(),o=(0,i.useRef)(null),s=(0,i.useRef)(!1),l=(null==t||null==(e=t.user)?void 0:e.id)?"playmo_last_points_".concat(t.user.id):null;(0,i.useEffect)(()=>{(null==t?void 0:t.user)&&(async()=>{try{var e,t,i;if(null===o.current&&l){let e=localStorage.getItem(l);null!==e&&(o.current=parseInt(e,10))}let r=await fetch("/api/user/profile");if(!r.ok)return;let a=await r.json(),c=(null==(t=a.data)||null==(e=t.points)?void 0:e.totalPoints)||(null==(i=a.data)?void 0:i.totalPoints)||a.totalPoints||0;if(!s.current){if(null!==o.current&&c!==o.current){let e=c-o.current;0!==e&&n(e)}o.current=c,l&&localStorage.setItem(l,c.toString()),s.current=!0;return}if(null!==o.current&&c!==o.current){let e=c-o.current;0!==e&&n(e),o.current=c,l&&localStorage.setItem(l,c.toString())}}catch(e){console.error("[PointsTracker] Error checking points:",e)}})()},[t,n,l])}(),null}},96168:e=>{e.exports={style:{fontFamily:"'Geist', 'Geist Fallback'",fontStyle:"normal"},className:"__className_188709",variable:"__variable_188709"}}},e=>{e.O(0,[7997,2978,454,5636,7620,8501,6489,8720,5279,8415,4623,7358],()=>e(e.s=33425)),_N_E=e.O()}]);