1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2fd38f73-9862-4c1f-aa70-dd88b792771e",e._sentryDebugIdIdentifier="sentry-dbid-2fd38f73-9862-4c1f-aa70-dd88b792771e")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5810],{85810:function(e,t,n){n.d(t,{r:function(){return P}});var r=n(57437),i=n(2265),a=n(87138),o=n(16463),s=n(55153),l=n(33907),c=n(87140),d=n(17355),u=n(11240),h=n(24258),m=n(21657),p=n(89896),f=n(15191),x=n(26474),g=n(46708),v=n(67427),b=n(4444),y=n(25366),k=n(80767),j=n(67763),w=n(93069),q=n(43416),S=n(50615),D=n(30085),_=n(51388),C=n(42421),N=n(49219);let z=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:18;return(0,r.jsx)(e,{size:t,strokeWidth:N.Hi,"aria-hidden":!0})};function A(){return(0,y.getAccessToken)()}let E=null,I=0,T=0,R=0,B=0,L=0,W=0,H=0,Z=null,M=null,O="nav_sidebar_collapsed";function F(e){try{document.documentElement.setAttribute("data-nav-collapsed",e?"1":"0")}catch(e){}}function P(e){let{profile:t,active:n}=e;(0,i.useEffect)(()=>{(null==t?void 0:t.role)&&(E=t)},[t]);let y=(null==t?void 0:t.role)?t:null!=E?E:t,P=(0,o.useRouter)(),J=(0,o.usePathname)(),Q=(0,s.T)("navigation"),V=(0,s.T)(),{theme:X}=(0,g.F)(),Y="light-pro"!==X,[$,G]=(0,i.useState)(null!=Z&&Z);(0,i.useEffect)(()=>{if(null!==Z){F(Z);return}let e=!1;try{e="1"===localStorage.getItem(O)}catch(e){}Z=e,F(e),e&&G(!0)},[]);let K=(0,i.useRef)(null);(0,i.useEffect)(()=>{let e=K.current;if(!e)return;H&&(e.scrollTop=H);let t=()=>{H=e.scrollTop};return e.addEventListener("scroll",t,{passive:!0}),()=>e.removeEventListener("scroll",t)},[]);let U=$?64:240,[ee,et]=(0,i.useState)(null!=M?M:{});(0,i.useEffect)(()=>{if(null!==M)return;let e=(0,N.Ok)();M=e,et(e)},[]);let en=(e,t)=>{let n=(0,N.AJ)(ee,e,t);M=n,et(n),(0,N.rO)(n)},[er,ei]=(0,i.useState)(null),[ea,eo]=(0,i.useState)(I),[es,el]=(0,i.useState)(T),[ec,ed]=(0,i.useState)(R),[eu,eh]=(0,i.useState)(B),[em,ep]=(0,i.useState)(L),[ef,ex]=(0,i.useState)(W);(0,i.useEffect)(()=>{if(!(null==y?void 0:y.id))return;let e=A();e&&fetch("/api/reminders?dueWithinHours=24",{headers:{Authorization:"Bearer ".concat(e)},cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{e&&"number"==typeof e.count&&(I=e.count,eo(e.count))}).catch(()=>{})},[null==y?void 0:y.id]),(0,i.useEffect)(()=>{if(!(null==y?void 0:y.id)||"provider"!==y.role&&"admin"!==y.role)return;let e=A();e&&(fetch("/api/provider/inquiries/count-new",{headers:{Authorization:"Bearer ".concat(e)},cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{e&&"number"==typeof e.count_new&&(T=e.count_new,el(e.count_new))}).catch(()=>{}),fetch("/api/marketplace/inquiries/count-new",{headers:{Authorization:"Bearer ".concat(e)},cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{e&&"number"==typeof e.count_new&&(R=e.count_new,ed(e.count_new))}).catch(()=>{}))},[null==y?void 0:y.id,null==y?void 0:y.role]),(0,i.useEffect)(()=>{if(!(null==y?void 0:y.id))return;let e=A();e&&fetch("/api/marketplace/inquiries/count-new?box=shipper",{headers:{Authorization:"Bearer ".concat(e)},cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{e&&"number"==typeof e.count_new&&(B=e.count_new,eh(e.count_new))}).catch(()=>{})},[null==y?void 0:y.id,null==y?void 0:y.role]),(0,i.useEffect)(()=>{if((null==y?void 0:y.role)!=="admin")return;let e=A();e&&(fetch("/api/admin/moderation",{headers:{Authorization:"Bearer ".concat(e)},cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{e&&"number"==typeof e.count&&(L=e.count,ep(e.count))}).catch(()=>{}),fetch("/api/admin/support",{headers:{Authorization:"Bearer ".concat(e)},cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{e&&"number"==typeof e.count&&(W=e.count,ex(e.count))}).catch(()=>{}))},[null==y?void 0:y.role]);let eg=async()=>{let e=(0,x.createClient)();await e.auth.signOut({scope:"local"}),E=null,I=0,T=0,R=0,B=0,H=0,(0,q.O)(),P.push("/login")},ev=(null==y?void 0:y.role)==="provider",eb=(null==y?void 0:y.role)==="shipper",ey="admin"===(null==y?void 0:y.role),ek=(0,r.jsx)("span",{style:{width:22,height:22,borderRadius:6,flexShrink:0,background:N.hb.ai,color:"#fff",display:"inline-flex",alignItems:"center",justifyContent:"center"},children:(0,r.jsx)(l.Z,{size:13,strokeWidth:N.Hi,"aria-hidden":!0})}),ej=[[z(b.cq.moderation.icon),Q("menu.moderation"),"/admin/moderation"],[z(b.cq.supportQueue.icon),Q("menu.supportQueue"),"/admin/support"],[z(b.cq.admin.icon),"Admin","/admin"]],ew=ey?[{key:"groups.admin",header:Q("groups.admin"),items:ej}]:[],eq=[{key:null,header:null,items:[[z(c.Z),Q("menu.dashboard"),"/provider-dashboard"]]},{key:"groups.myRatesSchedules",header:Q("groups.myRatesSchedules"),items:[[z(b.cq.rates.icon),Q("menu.quickRates"),"/quick-rates"],[z(d.Z,16),Q("menu.sailingSchedules"),"/quick-rates/schedules",void 0,!0],[z(b.cq.rateTpl.icon,16),Q("menu.rateTemplates"),"/rate-templates",void 0,!0],[z(b.cq.emailTariff.icon),Q("menu.emailTariff"),"/rate-templates/email-drafts"]]},{key:"groups.salesOpportunities",header:Q("groups.salesOpportunities"),items:[[z(b.cq.marketplace.icon),Q("marketplace"),"/marketplace"],[z(b.cq.ebid
1ding.icon),Q("menu.ebidding"),"/e-bidding?mode=auction"],[z(b.cq.rfq.icon,16),Q("menu.rfq"),"/e-bidding?mode=rfq",void 0,!0],[z(b.cq.inquiriesIn.icon),Q("menu.inquiriesIn"),"/provider/marketplace-inquiries"],[z(b.cq.inquiriesSent.icon),Q("menu.inquiriesSent"),"/marketplace/inquiries"]]},{key:"groups.operations",header:Q("groups.operations"),items:[[z(b.cq.bookings.icon),Q("menu.bookings"),"/bookings"],[z(b.cq.contracts.icon),Q("menu.contracts"),"/contracts"],[z(b.cq.track.icon),Q("menu.track"),"/track"],[z(b.cq.routeLookup.icon),Q("menu.routeLookup"),"/map"],[z(b.cq.data.icon),Q("menu.data"),"/data"],...(0,D.d_)()?[[z(b.cq.fleet.icon),Q("fleet"),"/fleet"]]:[]]},{key:"groups.ai",header:Q("groups.ai"),items:[[ek,Q("menu.ai"),"/ai"],[z(b.cq.aiActions.icon),Q("menu.aiActions"),"/ai/actions"],[z(b.cq.manageAi.icon),Q("menu.manageAi"),"/provider/ai"]]},{key:"groups.comms",header:Q("groups.comms"),items:[[z(b.cq.messages.icon),Q("menu.messages"),"/messages"],[z(b.cq.reminders.icon),Q("menu.reminders"),"/reminders"]]},...ew],eS=[{key:null,header:null,items:[[z(c.Z),Q("menu.dashboard"),"/dashboard"]]},{key:"groups.findRates",header:Q("groups.findRates"),items:[[z(b.cq.rates.icon),Q("menu.quickRates"),"/quick-rates"],[z(b.cq.marketplace.icon),Q("marketplace"),"/marketplace"],[z(b.cq.ebidding.icon),Q("menu.ebidding"),"/e-bidding?mode=auction"],[z(b.cq.rfq.icon,16),Q("menu.rfq"),"/e-bidding?mode=rfq",void 0,!0],[z(u.Z),Q("menu.providers"),"/providers"]]},{key:"groups.inquiries",header:Q("groups.inquiries"),items:[[z(b.cq.myInquiries.icon),Q("menu.myInquiries"),"/marketplace/inquiries"]]},{key:"groups.planning",header:Q("groups.planning"),items:[[z(b.cq.cargoPlans.icon),Q("fleetPlan"),"/cargo-plans"],[z(b.cq.calendar.icon),Q("calendar"),"/calendar"],[z(b.cq.bookings.icon),Q("menu.bookings"),"/bookings"],[z(b.cq.contracts.icon),Q("menu.contracts"),"/contracts"],[z(b.cq.track.icon),Q("menu.track"),"/track"],[z(b.cq.routeLookup.icon),Q("menu.routeLookup"),"/map"],[z(b.cq.data.icon),Q("menu.data"),"/data"]]},{key:"groups.comms",header:Q("groups.comms"),items:[[z(b.cq.messages.icon),Q("menu.messages"),"/messages"],[z(b.cq.reminders.icon),Q("menu.reminders"),"/reminders"]]},{key:"groups.ai",header:Q("groups.ai"),items:[[ek,Q("menu.ai"),"/ai"],[z(b.cq.aiActions.icon),Q("menu.aiActions"),"/ai/actions"]]},...ew],eD=[...ew,...eS.filter(e=>"groups.admin"!==e.key)],e_=(0,N.t2)(null==y?void 0:y.role),eC=e=>"/reminders"===e?ea:"/provider/marketplace-inquiries"===e?ec+es:"/marketplace/inquiries"===e?eu:"/admin/moderation"===e?em:"/admin/support"===e?ef:0;return(0,r.jsx)("div",{className:"hidden md:block","data-app-chrome":"sidebar",children:(0,r.jsxs)("div",{style:{width:U,background:"var(--theme-bg)",color:"var(--theme-text-primary)",borderRight:"1px solid var(--theme-border)",display:"flex",flexDirection:"column",position:"fixed",top:0,left:0,height:"100vh",zIndex:100,transition:"width 0.2s ease, background-color .2s ease, color .2s ease",overflow:"hidden"},children:[(0,r.jsxs)("div",{style:{padding:"10px 12px",borderBottom:"1px solid var(--theme-border)",display:"flex",alignItems:"center",justifyContent:"space-between",flexShrink:0},children:[(0,r.jsx)(a.default,{href:(0,_.o)(null==y?void 0:y.role),style:{display:"flex",alignItems:"center",gap:8,textDecoration:"none",color:"var(--theme-text-primary)",overflow:"hidden",flex:1},children:$?(0,r.jsx)(f.T,{variant:"badge",size:32}):(0,r.jsx)(f.T,{variant:"lockup",theme:Y?"dark":"light",size:30})}),(0,r.jsx)("button",{onClick:()=>{let e=!$;G(e),Z=e;try{localStorage.setItem(O,e?"1":"0")}catch(e){}F(e),window.dispatchEvent(new CustomEvent("sidebar-collapse",{detail:e}))},style:{background:"none",border:"none",color:"var(--theme-text-muted)",cursor:"pointer",fontSize:16,padding:"4px",flexShrink:0,lineHeight:1},children:$?"âº":"â¹"})]}),(0,r.jsx)("div",{ref:K,style:{padding:"6px 8px",flex:1,overflowY:"auto",background:"\n linear-gradient(var(--theme-bg) 30%, rgba(0,0,0,0)) center top,\n linear-gradient(rgba(0,0,0,0), var(--theme-bg) 70%) center bottom,\n radial-gradient(farthest-side at 50% 0, rgba(0,0,0,0.22), rgba(0,0,0,0)) center top,\n radial-gradient(farthest-side at 50% 100%, rgba(0,0,0,0.22), rgba(0,0,0,0)) center bottom\n ",backgroundRepeat:"no-repeat",backgroundSize:"100% 32px, 100% 32px, 100% 12px, 100% 12px",backgroundAttachment:"local, local, scroll, scroll"},children:(ey?eD:ev?eq:eS).map((e,t)=>{var i,o;let s=(0,N.F0)((0,N.$z)(e.key),Y),l=e.items.some(e=>{let[,,t]=e;return t===n||!!J&&t.split("?")[0]===J}),c=!e.key||$||(0,N.bh)(e.key,e_,ee,l),d=c?0:e.items.reduce((e,t)=>
1{let[,,n]=t;return e+eC(n)},0);return(0,r.jsxs)("div",{"data-qa":"nav-group","data-group":null!==(i=e.key)&&void 0!==i?i:"","data-open":c?"1":"0",style:{marginTop:t>0&&!$?4:0,marginBottom:2},children:[e.header&&!$&&(0,r.jsxs)(r.Fragment,{children:[t>0&&(0,r.jsx)("div",{style:{borderTop:"1px solid var(--theme-border)",margin:"0 9px 3px"}}),(0,r.jsxs)("button",{type:"button",onClick:()=>en(e.key,c),"aria-expanded":c,"data-qa":"nav-group-toggle",style:{display:"flex",alignItems:"center",gap:6,width:"100%",background:"none",border:"none",cursor:"pointer",padding:"3px 9px",minHeight:22,fontSize:10,lineHeight:1.3,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.05em",color:s.ink,whiteSpace:"nowrap",overflow:"hidden",textAlign:"left"},children:[(0,r.jsx)("span",{"aria-hidden":!0,"data-qa":"nav-group-dot",style:{width:6,height:6,borderRadius:999,background:s.dot,flexShrink:0}}),(0,r.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:e.header}),d>0&&(0,r.jsx)("span",{"data-qa":"nav-group-badge",style:{minWidth:16,height:16,padding:"0 5px",borderRadius:999,background:"var(--theme-accent)",color:"var(--theme-bg)",fontSize:9.5,fontWeight:800,display:"inline-flex",alignItems:"center",justifyContent:"center",letterSpacing:0},children:(0,S.CZ)(d)}),(0,r.jsx)(C.Z,{"aria-hidden":!0,size:13,strokeWidth:1.8,style:{flexShrink:0,color:"var(--theme-text-muted)",transform:c?"rotate(0deg)":"rotate(-90deg)",transition:"transform .15s"}})]})]}),e.header&&$&&t>0&&(0,r.jsx)("div",{style:{borderTop:"1px solid var(--theme-border)",margin:"6px"}}),c&&e.items.map(e=>{let[t,i,o,l,c]=e,d=o===n,u=!d&&er===o,h=eC(o),m=h>0;return(0,r.jsxs)(a.default,{href:(0,k.y)(o),onClick:e=>{(0,j.TI)(o)&&(e.preventDefault(),(0,w.I)(o,{message:Q("webOnly.toast"),open:
1Q("webOnly.open")}))},title:$?i:void 0,onMouseEnter:()=>ei(o),onMouseLeave:()=>ei(e=>e===o?null:e),"data-hover":u?"1":void 0,style:{display:"flex",alignItems:"center",gap:$?0:10,padding:c&&!$?"3px 8px 3px 26px":"3px 8px",minHeight:c&&!$?25:28,justifyContent:$?"center":"flex-start",borderRadius:8,color:d?s.activeText:u?s.hoverText:"var(--theme-text-secondary)",textDecoration:"none",marginBottom:0,background:d?s.activeBg:u?s.hoverBg:"transparent",boxShadow:d?"inset 0 0 0 1px ".concat(s.activeRing):"none",whiteSpace:"nowrap",overflow:"hidden",transition:"background-color .15s, color .15s",position:"relative"},children:[(0,r.jsxs)("span",{"data-qa":"nav-item-icon",style:{fontSize:18,lineHeight:1,flexShrink:0,position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",color:u?s.hoverIcon:s.icon,transition:"color .15s"},children:[t,m&&$&&(0,r.jsx)("span",{"aria-hidden":!0,style:{position:"absolute",top:-4,right:-4,minWidth:14,height:14,padding:"0 3px",borderRadius:999,background:"var(--theme-accent)",color:"var(--theme-bg)",fontSize:9,fontWeight:800,display:"inline-flex",alignItems:"center",justifyContent:"center",lineHeight:1},children:(0,S.CZ)(h)})]}),!$&&(0,r.jsxs)(r.Fragment,{children:[l?(0,r.jsxs)("span",{style:{display:"flex",flexDirection:"column",flex:1,minWidth:0,lineHeight:1.15},children:[(0,r.jsx)("span",{style:{fontSize:12.5,fontWeight:500},children:i}),(0,r.jsx)("span",{style:{fontSize:10,color:"var(--theme-text-muted)"},children:l})]}):(0,r.jsx)("span",{style:{fontSize:c?11.5:12.5,fontWeight:500,flex:1},children:i}),m&&(0,r.jsx)("span",{style:{marginLeft:"auto",minWidth:18,height:18,padding:"0 6px",borderRadius:999,background:"var(--theme-accent)",color:"var(--theme-bg)",fontSize:10,fontWeight:800,display:"inline-flex",alignItems:"center",justifyContent:"center"},children:(0,S.CZ)(h)})]})]},o)})]},null!==(o=e.key)&&void 0!==o?o:"sec-".concat(t))})}),$?(0,r.jsxs)("div",{style:{padding:"0 0 12px",display:"flex",flexDirection:"column",alignItems:"center",gap:6},children:[(0,r.jsx)(v.L,{}),(0,r.jsx)(a.default,{href:"/settings",title:Q("settings"),"aria-label":Q("settings"),className:"tap-44 inline-flex items-center justify-center rounded-lg p-2 text-[var(--theme-text-secondary)] transition-colors hover:bg-[var(--theme-surface-hover)] hover:text-[var(--theme-text-primary)]",children:(0,r.jsx)(h.Z,{size:18,strokeWidth:N.Hi,"aria-hidden":!0})}),(0,r.jsx)(a.default,{href:"/help",title:Q("support"),"aria-label":Q("support"),className:"tap-44 inline-flex items-center justify-center rounded-lg p-2 text-[var(--theme-text-secondary)] transition-colors hover:bg-[var(--theme-surface-hover)] hover:text-[var(--theme-text-primary)]",children:(0,r.jsx)(m.Z,{size:18})}),(0,r.jsx)("button",{onClick:eg,title:Q("logout"),"aria-label":Q("logout"),className:"tap-44 inline-flex items-center justify-center rounded-lg p-2 text-[var(--theme-text-secondary)] transition-colors hover:bg-[var(--theme-surface-hover)] hover:text-red-500",children:(0,r.jsx)(p.Z,{size:18})})]}):(0,r.jsxs)("div",{style:{padding:"0 12px 10px",display:"flex",flexDirection:"column",gap:6,flexShrink:0},children:[(0,r.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"stretch"},children:[(0,r.jsxs)("div",{style:{flex:1,background:"var(--theme-surface)",border:"1px solid var(--theme-border)",borderRadius:10,padding:"8px 12px",minWidth:0},children:[(0,r.jsx)("div",{style:{fontSize:11,color:"var(--theme-text-muted)",marginBottom:2},children:ey?V("settings.team.admin"):ev?V("marketplace.sellerRole.provider"):eb?V("marketplace.sellerRole.shipper"):""}),(0,r.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"var(--theme-text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:null==y?void 0:y.full_name})]}),(0,r.jsx)("div",{style:{display:"flex",alignItems:"center",flexShrink:0},children:(0,r.jsx)(v.L,{})})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,r.jsxs)(a.default,{href:"/settings",className:"flex-1 inline-flex items-center justify-center gap-1.5 rounded-lg border border-[var(--theme-border)] bg-transparent px-2 py-1.5 text-xs font-medium text-[var(--theme-text-secondary)] transition-colors hover:bg-[var(--theme-surface-hover)] hover:text-[var(--theme-text-primary)]",children:[(0,r.jsx)(h.Z,{size:14,strokeWidth:N.Hi,"aria-hidden":!0})," ",Q("settings")]}),(0,r.jsxs)(a.default,{href:"/help","data-qa":"sidebar-help",className:"tap-44 flex-1 inline-flex items-center justify-center gap-1.5 rounded-lg border border-[var(--theme-border)] bg-transparent px-2 py-1.5 text-xs font-medium text-[var(--theme-text-secondary)] transition-colors hover:bg-[var(--theme-surface-hover)] hover:text-[var(--theme-text-primary)]",children:[(0,r.jsx)(m.Z,{size:14,strokeWidth:N.Hi,"aria-hidden":!0})," ",Q("support")]})]}),(0,r.jsxs)("button",{onClick:eg,className:"w-full inline-flex items-center justify-center gap-1.5 rounded-lg border border-[var(--theme-border)] bg-transparent px-3 py-1.5 text-xs font-medium text-[var(--theme-text-secondary)] transition-colors hover:bg-[var(--theme-surface-hover)] hover:text-red-500",children:[(0,r.jsx)(p.Z,{size:14,strokeWidth:N.Hi,"aria-hidden":!0})," ",Q("logout")]})]})]})})}},67427:function(e,t,n){n.d(t,{L:function(){return p}});var r=n(57437),i=n(2265),a=n(54887),o=n(16463),s=n(80767),l=n(55153),c=n(25366),d=n(633),u=n(50615);function h(){return(0,c.getAccessToken)()||null}let m={booking_new:"\uD83D\uDCE6",booking_confirmed:"â
",booking_c
1ancelled:"â",auction_new_bid:"\uD83D\uDCB0",auction_winner:"\uD83C\uDFC6",invitation_received:"\uD83D\uDCE8",invitation_accepted:"\uD83C\uDF89",join_request_new:"\uD83D\uDC4B",test:"\uD83E\uDDEA",new_bid:"\uD83D\uDCB0"};function p(){let{variant:e="default"}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,l.T)("notifications"),n=(0,l.T)("common"),[c,p]=(0,i.useState)(0),[f,x]=(0,i.useState)(0),[g,v]=(0,i.useState)(!1),[b,y]=(0,i.useState)(!1),[k,j]=(0,i.useState)([]),[w,q]=(0,i.useState)(null),[S,D]=(0,i.useState)(!1),[_,C]=(0,i.useState)({}),N=(0,i.useRef)(null),z=(0,i.useRef)(null),A=(0,i.useRef)(null),E=(0,o.useRouter)();(0,i.useEffect)(()=>{D(!0)},[]);let I=async()=>{y(!0);let e=h();if(!e){y(!1);return}try{var t,n;let r=await fetch("/api/notifications?limit=20&include_count=true&_t=".concat(Date.now()),{headers:{Authorization:"Bearer ".concat(e)},cache:"no-store"});if(!r.ok){y(!1);return}let i=await r.json();j(i.notifications||[]),p(null!==(n=null!==(t=i.unread_work_count)&&void 0!==t?t:i.unread_count)&&void 0!==n?n:0)}catch(e){}finally{y(!1)}};(0,i.useEffect)(()=>(0,d.X)(e=>{p(e.notifications),x(e.messages)}),[]),(0,i.useEffect)(()=>{function e(e){var t,n;let r=e.target,i=null===(t=N.current)||void 0===t?void 0:t.contains(r),a=null===(n=A.current)||void 0===n?void 0:n.contains(r);i||a||v(!1)}return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,i.useEffect)(()=>{if(!g||!z.current)return;let e=z.current.getBoundingClientRect(),t=e.bottom+500+16>window.innerHeight,n=e.left,r=window.innerWidth-384-8;C({position:"fixed",...t?{bottom:"".concat(window.innerHeight-e.top+8,"px")}:{top:"".concat(e.bottom+8,"px")},left:"".concat(Math.max(8,Math.min(n,r)),"px"),zIndex:1e3})},[g]);let T=async e=>{if(!e.read_at){q(e.id);let t=h(),n=new Date().toISOString();try{await fetch("/api/notifications/".concat(e.id),{method:"PATCH",headers:{Authorization:"Bearer ".concat(t),"Content-Type":"application/json"},body:JSON.stringify({read:!0})}),j(t=>t.map(t=>t.id===e.id?{...t,read_at:n}:t)),p(e=>Math.max(0,e-1))}catch(e){}finally{q(null)}}e.link&&window.open((0,s.y)(e.link),"_blank","noopener,noreferrer")},R=async()=>{if(0===c)return;let e=h();try{await fetch("/api/notifications",{method:"POST",headers:{Authorization:"Bearer ".concat(e),"Content-Type":"application/json"},body:JSON.stringify({action:"mark_all_read"})});let t=new Date().toISOString();j(e=>e.map(e=>{var n;return{...e,read_at:null!==(n=e.read_at)&&void 0!==n?n:t}})),p(0)}catch(e){}},B=async(e,t)=>{e.stopPropagation();let n=h();try{var r;await fetch("/api/notifications/".concat(t),{method:"DELETE",headers:{Authorization:"Bearer ".concat(n)}});let e=!(null===(r=k.find(e=>e.id===t))||void 0===r?void 0:r.read_at);j(e=>e.filter(e=>e.id!==t)),e&&p(e=>Math.max(0,e-1))}catch(e){}};return(0,r.jsxs)("div",{className:"relative",ref:N,children:[(0,r.jsxs)("button",{ref:z,onClick:()=>{g?v(!1):(v(!0),I())},className:"tap-44 relative p-2 rounded-full ".concat("hover:bg-[var(--theme-surface-hover)]"," transition-colors"),title:t("title"),"aria-label":t("title"),children:[(0,r.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor",className:"text-[var(--theme-text-secondary)]",children:(0,r.jsx)("path",{d:"M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z"})}),c+f>0&&(0,r.jsx)(u.Z2,{count:c+f,tone:"danger",size:"sm",className:"absolute -top-0.5 -right-0.5"})]}),g&&S&&(0,a.createPortal)((0,r.jsxs)("div",{ref:A,style:{..._,width:"min(384px, calc(100vw - 16px))",maxHeight:500},className:"bg-[var(--theme-surface-elevated)] border border-[var(--theme-border)] rounded-lg shadow-xl flex flex-col",children:[(0,r.jsxs)("div",{className:"px-4 py-3 border-b flex items-center justify-between flex-shrink-0",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"font-semibold text-[var(--theme-text-primary)]",children:t("title")}),c>0&&(0,r.jsx)("p",{className:"text-xs text-[var(--theme-text-secondary)] mt-0.5",children:t("unreadCountLabel",{count:c}
1)})]}),c>0&&(0,r.jsx)("button",{onClick:R,className:"tap-44 -my-2 text-xs text-blue-600 hover:text-blue-700 font-medium",children:t("markAllReadLong")})]}),f>0&&(0,r.jsxs)("button",{onClick:()=>{E.push("/messages"),v(!1)},className:"px-4 py-2.5 border-b border-[var(--theme-border)] flex items-center justify-between transition-colors flex-shrink-0",style:{background:"color-mix(in srgb, #3B82F6 12%, var(--theme-surface-elevated))"},children:[(0,r.jsxs)("span",{className:"flex items-center gap-2 text-sm text-[var(--theme-text-primary)]",children:[(0,r.jsx)("span",{className:"text-lg leading-none",children:"\uD83D\uDCAC"}),(0,r.jsx)("span",{className:"font-medium",children:t("unreadMessages")})]}),(0,r.jsx)(u.Z2,{count:f,tone:"info",size:"md"})]}),(0,r.jsxs)("div",{className:"flex-1 overflow-y-auto",children:[b&&(0,r.jsx)("div",{className:"text-center text-[var(--theme-text-secondary)] py-8 text-sm",children:n("loading")}),!b&&0===k.length&&(0,r.jsxs)("div",{className:"text-center text-[var(--theme-text-secondary)] py-12",children:[(0,r.jsx)("div",{className:"text-4xl mb-2",children:"\uD83D\uDCED"}),(0,r.jsx)("p",{className:"text-sm",children:t("empty")})]}),!b&&k.map(e=>{let i=m[e.type]||"\uD83D\uDD14",a=w===e.id;return(0,r.jsxs)("div",{onClick:()=>T(e),className:"\n px-4 py-3 border-b border-[var(--theme-border)] flex items-start gap-3 cursor-pointer\n hover:bg-[var(--theme-surface-hover)] transition-colors group\n ".concat(a?"opacity-50":"","\n "),style:e.read_at?void 0:{background:"color-mix(in srgb, #3B82F6 10%, var(--theme-surface-elevated))"},children:[(0,r.jsx)("div",{className:"flex-shrink-0 w-9 h-9 rounded-full bg-[var(--theme-surface-hover)] flex items-center justify-center text-lg",children:i}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsxs)("div",{className:"flex items-start gap-2",children:[(0,r.jsx)("span",{className:"text-sm flex-1 ".concat(e.read_at?"text-[var(--theme-text-secondary)]":"font-semibold text-[var(--theme-text-primary)]"),children:e.title}),!e.read_at&&(0,r.jsx)("span",{className:"flex-shrink-0 w-2 h-2 rounded-full bg-blue-500 mt-1.5"})]}),e.body&&(0,r.jsx)("p",{className:"text-xs text-[var(--theme-text-secondary)] mt-0.5 line-clamp-2",children:e.body}),(0,r.jsx)("p",{className:"text-xs text-[var(--theme-text-muted)] mt-1",children:function(e,t){let n=Math.floor((Date.now()-new Date(e).getTime())/1e3);if(n<60)return t("timeAgo.justNow");let r=Math.floor(n/60);if(r<60)return t("timeAgo.minutes",{count:r});let i=Math.floor(r/60);if(i<24)return t("timeAgo.hours",{count:i});let a=Math.floor(i/24);if(a<7)return t("timeAgo.days",{count:a});let o=Math.floor(a/7);return o<4?t("timeAgo.weeks",{count:o}):new Date(e).toLocaleDateString("vi-VN",{day:"2-digit",month:"2-digit",year:"numeric"})}(e.created_at,t)})]}),(0,r.jsx)("button",{onClick:t=>B(t,e.id),className:"tap-44 -m-2 opacity-100 md:opacity-0 md:group-hover:opacity-100 flex-shrink-0 text-[var(--theme-text-muted)] hover:text-red-500 transition-opacity",title:n("delete"),children:(0,r.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 20 20",fill:"currentColor",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]},e.id)})]}),k.length>0&&(0,r.jsx)("div",{className:"px-4 py-2 border-t border-[var(--theme-border)] bg-[var(--theme-surface-hover)] rounded-b-lg flex-shrink-0",children:(0,r.jsx)("button",{onClick:()=>{E.push("/notifications"),v(!1)},className:"tap-44 w-full text-center text-xs text-[var(--theme-text-secondary)] hover:text-[var(--theme-text-primary)] font-medium py-1",children:t("viewAll")})})]}),document.body)]})}},51388:function(e,t,n){n.d(t,{o:function(){return r}});function r(e){return"admin"===e?"/admin":"/ai"}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.