PageSourceSearch

https://partner-tools.lovable.app/assets/admin-CIkZE256.js

js partner-tools.lovable.app collected 2026-10-03 03:33:01 UTC 23,931 bytes, 1 lines download raw bytes

1import{D as me,r as d,j as e,E as ve,B as se,x as ye,X as pe,F as we,G as I,z as B,s as h,H as W,u as fe,J as je,K as ke,N as F,P as te,Q as Se,U as ae,V as Ce,Y as Ne,d as _e,Z as ne,$ as Ae,a0 as Pe,a1 as Ee,a2 as Me,a3 as re,a4 as Re,a5 as Le,a6 as Oe,a7 as De,a8 as Te,y as G,a9 as Ie,c as D,aa as oe,O as We}from"./index-BycdTO8j.js";import{u as ze}from"./gmail-connection-COpUq6lq.js";import{P as he}from"./plug-Bf6AGZMq.js";import{signOut as qe}from"./auth-DH1Ecueb.js";import{M as Be,T as Fe,L as Ge}from"./theme-switch-DJmjfjFf.js";import{E as Ue}from"./eye-off-BNS_UIvK.js";import{u as z,o as Ve,g as $e,s as K,a as Y}from"./use-admin-access-Cx8qrcB0.js";import{u as He,F as Ke}from"./feature-visibility-WI-jMip0.js";import{u as Ye}from"./use-finance-access-Ri6r8gPW.js";import{a as xe,A as Qe,u as X,b as Xe,s as Ze,c as Je}from"./admin-access-DIqfL5-A.js";import{D as es,a as ss,b as ts,c as ie,d as T,e as le}from"./dropdown-menu-WZf4XFdc.js";import{L as as}from"./layout-dashboard-BKrN12aZ.js";import{C as ns}from"./clipboard-list-nm_d6wzc.js";import{B as U}from"./book-open-CyUVetiM.js";import{U as rs}from"./user-x-BiAVKKNT.js";import{S as os}from"./shield-alert-BvgKR_Ae.js";import{S as V}from"./settings-C9ZnU1Ww.js";import{u as is}from"./admin-theme-DqDPSwrt.js";import"./gmail-draft.functions-B3wrDYXj.js";import"./circle-CkjdgFx1.js";const ls=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]],cs=me("panel-left-close",ls);const ds=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]],us=me("panel-left",ds);function ms(){const{needsReconnect:n,checking:r,busy:a,connect:s,email:l}=ze(),[u,m]=d.useState(!1);return r||u||!n?null:e.jsxs("div",{className:"flex items-center gap-3 bg-amber-50 px-4 py-2 dark:bg-amber-950/30",style:{borderBottom:"0.5px solid var(--ds-border-faint)"},children:[e.jsx(ve,{className:"h-3.5 w-3.5 shrink-0 text-amber-600"}),e.jsxs("p",{className:"min-w-0 flex-1 text-[11px] text-amber-800 dark:text-amber-400",children:["Your Gmail connection",l?` (${l})`:""," has send access only. Reconnect Gmail to grant read access so prospect replies appear in activity timelines."]}),e.jsxs(se,{size:"sm",variant:"outline",className:"h-7 shrink-0 gap-1.5 text-xs",disabled:a,onClick:s,children:[a?e.jsx(ye,{className:"h-3 w-3 animate-spin"}):e.jsx(he,{className:"h-3 w-3"}),"Reconnect Gmail"]}),e.jsx(se,{size:"icon",variant:"ghost",className:"h-7 w-7 shrink-0",onClick:()=>m(!0),"aria-label":"Dismiss",children:e.jsx(pe,{className:"h-3 w-3"})})]})}function ps({collapsed:n=!1}){const{enabled:r,setEnabled:a}=we(),s=[{key:!1,Icon:I,label:"Show real data"},{key:!0,Icon:Ue,label:"Demo mode — blur partner details"}];return e.jsx("div",{suppressHydrationWarning:!0,className:n?"flex flex-col items-center":"inline-flex items-center",style:{gap:2,padding:2,borderRadius:6,border:"0.5px solid var(--ds-border-faint)",background:"transparent"},role:"group","aria-label":"Demo mode",children:s.map(({key:l,Icon:u,label:m})=>{const x=r===l;return e.jsx("button",{onClick:()=>a(l),title:m,"aria-label":m,"aria-pressed":x,suppressHydrationWarning:!0,className:"flex items-center justify-center transition-colors",style:{width:26,height:22,borderRadius:4,background:x?"var(--ds-surface-elevated)":"transparent",color:x?"var(--ds-text-primary)":"var(--ds-text-tertiary)"},children:e.jsx(u,{className:"h-3.5 w-3.5 shrink-0"})},String(l))})})}const fs=["/admin/partners","/admin/co-sell","/admin/leads"],hs="/admin/partners";function be(n){return fs.some(r=>n===r||n.startsWith(r+"/"))}function ce({collapsed:n}){const{isSuperAdmin:r,isPreviewing:a,previewRole:s}=z(),[l,u]=d.useState(null);if(d.useEffect(()=>{const p=()=>u($e());return p(),Ve(p)},[]),!r&&!a&&!l)return null;const m=a||!!l,x=l?`Viewing as ${xe(l)}`:s==="sales"?"Viewing as Sales":s==="admin_viewer"?"Viewing as Admin viewer":"View as role",k=p=>{K(null),Y(p)},g=p=>{Y(null),K(p)};return e.jsxs(es,{children:[e.jsx(ss,{asChild:!0,children:e.jsxs("button",{title:"View the admin portal as another role",className:"group flex items-center gap-2 transition-colors",style:{height:28,width:n?28:"100%",
1justifyContent:n?"center":void 0,padding:n?0:"0 10px",borderRadius:6,fontSize:12,fontWeight:400,color:m?"var(--ds-text-primary)":"var(--ds-text-body)",backgroundColor:m?"var(--ds-row-hover)":"transparent",border:"0.5px solid var(--ds-border-faint)"},children:[e.jsx(I,{className:"h-3 w-3 shrink-0"}),!n&&e.jsx("span",{className:"flex-1 text-left truncate",children:x})]})}),e.jsxs(ts,{align:"start",className:"w-56",children:[e.jsx(ie,{style:{fontSize:11,fontWeight:400,color:"var(--ds-text-faint)"},children:"Roles"}),e.jsxs(T,{onClick:()=>k("admin_viewer"),style:{fontSize:12},children:[e.jsx("span",{className:"flex-1",children:"Admin viewer"}),s==="admin_viewer"&&e.jsx(B,{className:"h-3 w-3"})]}),e.jsxs(T,{onClick:()=>k("sales"),style:{fontSize:12},children:[e.jsx("span",{className:"flex-1",children:"Sales"}),s==="sales"&&e.jsx(B,{className:"h-3 w-3"})]}),e.jsx(le,{}),e.jsx(ie,{style:{fontSize:11,fontWeight:400,color:"var(--ds-text-faint)"},children:"Access presets"}),Qe.filter(p=>p.key!=="super_admin").map(p=>e.jsxs(T,{onClick:()=>g(p.key),style:{fontSize:12},children:[e.jsx("span",{className:"flex-1",children:p.label}),l===p.key&&e.jsx(B,{className:"h-3 w-3"})]},p.key)),m&&e.jsxs(e.Fragment,{children:[e.jsx(le,{}),e.jsx(T,{onClick:()=>{g(null)},style:{fontSize:12},children:"Exit preview"})]})]})]})}const xs=30,bs=.95,gs=2;function vs(n){const r=Date.parse(`${n}T00:00:00Z`),a=Date.parse(new Date().toISOString().slice(0,10)+"T00:00:00Z");return Math.max(0,Math.round((a-r)/864e5))}function ys(n=5){const[r,a]=d.useState([]),[s,l]=d.useState({}),[u,m]=d.useState(null),[x,k]=d.useState(!1),g=d.useCallback(async()=>{const{data:f}=await h.auth.getUser(),b=f?.user?.id??null;if(m(b),!b){k(!0);return}const P=new Date(Date.now()-xs*864e5).toISOString().slice(0,10),[{data:S},{data:q}]=await Promise.all([h.from("admin_page_usage").select("path, day, visits, seconds").eq("user_id",b).gte("day",P),h.from("admin_nav_pins").select("path, pinned").eq("user_id",b)]),C={};(q??[]).forEach(c=>{C[c.path]=c.pinned}),l(C);const w=new Map;(S??[]).forEach(c=>{const y=Math.pow(bs,vs(c.day)),N=w.get(c.path)??{path:c.path,score:0,visits:0,seconds:0,pinned:!1};N.score+=y*((c.visits??0)+(c.seconds??0)/60),N.visits+=c.visits??0,N.seconds+=c.seconds??0,w.set(c.path,N)}),Object.entries(C).forEach(([c,y])=>{y&&!w.has(c)&&w.set(c,{path:c,score:0,visits:0,seconds:0,pinned:!0})});const M=Array.from(w.values()).map(c=>({...c,pinned:C[c.path]===!0})),R=M.filter(c=>c.pinned).sort((c,y)=>y.score-c.score),L=M.filter(c=>!c.pinned&&C[c.path]!==!1&&c.path!=="/admin"&&c.score>=gs).sort((c,y)=>y.score-c.score);a([...R,...L].slice(0,Math.max(n,R.length))),k(!0)},[n]);d.useEffect(()=>{g()},[g]);const p=d.useCallback(async(f,b)=>{u&&(l(P=>{const S={...P};return b===null?delete S[f]:S[f]=b,S}),b===null?await h.from("admin_nav_pins").delete().eq("user_id",u).eq("path",f):await h.from("admin_nav_pins").upsert({user_id:u,path:f,pinned:b},{onConflict:"user_id,path"}),await g())},[u,g]);return{entries:r,pins:s,loaded:x,pin:f=>p(f,!0),dismiss:f=>p(f,!1),reset:f=>p(f,null),refresh:g}}const Q="/lovable-heart.png",ge=d.createContext({collapsed:!1,setCollapsed:()=>{},mobileOpen:!1,setMobileOpen:()=>{}});function Z(){return d.useContext(ge)}function ws({children:n}){const[r,a]=d.useState(!1),[s,l]=d.useState(!1);return e.jsx(ge.Provider,{value:{collapsed:r,setCollapsed:a,mobileOpen:s,setMobileOpen:l},children:n})}function js(){const{setMobileOpen:n}=Z();return e.jsxs("div",{className:"md:hidden sticky top-0 z-40 flex h-12 items-center gap-2 px-3",style:{background:"var(--ds-surface)",borderBottom:"0.5px solid var(--ds-border-faint)"},children:[e.jsx("button",{onClick:()=>n(!0),className:"flex h-11 w-11 -ml-1 items-center justify-center rounded-lg","aria-label":"Open menu",children:e.jsx(Be,{className:"h-5 w-5",style:{color:"var(--ds-text-primary)"}})}),e.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",style:{fontSize:13,fontWeight:500,color:"var(--ds-text-primary)"},children:[e.jsx("img",{src:Q,alt:"",className:"h-4 w-4 shrink-0"}),e.jsx("span",{className:"truncate",children:"Partner tools"})]})]})}const $=[{label:"Overview",defaultOpen:!0,items:[{label:"Dashboard",to:"/admin",icon:as},{label:"Program dashboard",to:"/admin/manager",icon:ke},{label:"Partner NPS",to:"/admin/nps",icon:F},{label:"Quarter-on-quarter OKRs",to:"/admin/okr-progression",icon:te},{label:"Program HQ",to:"/admin/programme",icon:Se},{label:"Partners",to:"/admin/partners",icon:ae}]},{label:"Recruit",defaultOpen:!0,items:[{label:"Prospects",to:"/admin/prospects",icon:te},{label:"Applications & forms",to:"/admin/requirements",icon:ns}]},{label:"Onboard",defaultOpen:!0,items:[{label:"Payment details",to:"/admin/payment-details",icon:Ce},{label:"ERP payment push",to:"/admin/payment-push",icon:Ne,financeOnly:!0}]},{label:"Activate",defaultOpen:!0,items:[{label:"Leads",to:"/admin/leads",icon:_e,badgeKey:"unviewedLeads"},{label:"Co-sell",to:"/admin/co-sell",icon:ne},{label:"Support inbox",to:"/admin/support",icon:F,badgeKey:"supportUnread"}]},{label:"Grow",defaultOpen:!0,items:[{label:"Tiers",to:"/admin/tiers",icon:Ae},{label:"Commissions",to:"/admin/commissions",icon:Pe},{label:"Referrals",to:"/admin/referrals",icon:Ee},{label:"Pricing router",to:"/admin/pricing-router",icon:Me},{label:"Credits",to:"/admin/credits",icon:re},{label:"Certification",to:"/admin/certification",icon:Re},{label:"Communications",to:"/admin/communications",icon:Le},{label:"Resources",to:"/admin/collateral",icon:U},{label:"Partner stories",to:"/admin/stories",icon:U},{label:"Webinars & office hours",to:"/admin/webinars",icon:Oe},{label:"Directory",to:"/admin/directory",icon:ne}]},{label:"Retire",defaultOpen:!0,items:[{label:"Offboarding",to:"/admin/offboarding",icon:rs},{label:"Violations",to:"/admin/violations",icon:os}]},{label:"System",defaultOpen:!0,items:[{label:"Assistant knowledge",to:"/admin/assistant-knowledge",icon:re},{label:"Slack agent",to:"/admin/slack-agent",icon:F},{label:"Users",to:"/admin/users",icon:ae},{label:"Lovable team",to:"/admin/sales-reps",icon:De},{label:"Settings",to:"/admin/settings",icon:V},{label:"Feature control",to:"/admin/feature-control",icon:V},{label:"Feature gating",to:"/admin/features",icon:V},{label:"Integrations",to:"/admin/integrations",icon:he},{label:"Link health",to:"/admin/link-health",icon:Te},{label:"Documentation",to:"/admin/documentation",icon:U}]}],ks=[];function de({onNavigate:n}){const r=W(),a=fe(),{collapsed:s,setCollapsed:l}=Z(),{startImpersonation:u}=je(),{isSalesOnly:m}=z(),{isFinance:x}=Ye(),{isVisible:k}=He(),g=X(),p=ys(3),f=d.useMemo(()=>(m?$.map(i=>({...i,items:i.items.filter(o=>be(o.to))})).filter(i=>i.items.length>0):$).map(i=>({...i,items:i.items.filter(o=>k(`nav:${o.to}`)&&(!o.financeOnly||x)&&g.can(o.to))})).filter(i=>i.items.length>0),[m,k,x,g]),b=()=>{u("f514feb1-8609-4f27-89d6-4cea65b66f4b","Rapid Dev Demo"),a({to:"/portal/welcome"}),n?.()},P=()=>{const t={};return $.forEach(i=>
1{const o=i.items.some(v=>v.to==="/admin"?r.pathname==="/admin":r.pathname.startsWith(v.to));t[i.label]=o||!!i.defaultOpen}),t},[S,q]=d.useState(P),[C,w]=d.useState({unviewedLeads:0,supportUnread:0});d.useEffect(()=>{let t=!1;const i=async()=>{const{count:_}=await h.from("support_threads").select("id",{count:"exact",head:!0}).eq("status","open").neq("kind","feedback").or("last_message_role.is.null,and(last_message_role.neq.admin,last_message_role.neq.ai)");t||w(A=>({...A,supportUnread:_??0}))},o=async()=>{const{count:_}=await h.from("leads").select("id",{count:"exact",head:!0}).is("admin_viewed_at",null).eq("is_test",!1);t||w(A=>({...A,unviewedLeads:_??0}))};i(),o();const v=Math.random().toString(36).slice(2),j=h.channel(`admin-sidebar-support-${v}`).on("postgres_changes",{event:"*",schema:"public",table:"support_threads"},()=>{i()}).subscribe(),O=h.channel(`admin-sidebar-leads-${v}`).on("postgres_changes",{event:"*",schema:"public",table:"leads"},()=>{o()}).subscribe();return()=>{t=!0,h.removeChannel(j),h.removeChannel(O)}},[]),d.useEffect(()=>{let t=!1;return h.from("leads").select("id",{count:"exact",head:!0}).is("admin_viewed_at",null).eq("is_test",!1).then(({count:i})=>{t||w(o=>({...o,unviewedLeads:i??0}))}),()=>{t=!0}},[r.pathname]);const M=t=>{q(i=>({...i,[t]:!i[t]}))},R=async()=>{await qe(),window.location.href="/login"},L=t=>t==="/admin"?r.pathname==="/admin":r.pathname.startsWith(t),c=d.useCallback(()=>{n?.()},[n]),y=d.useMemo(()=>{const t=new Map;return f.forEach(i=>i.items.forEach(o=>t.set(o.to,o))),p.entries.map(i=>t.get(i.path)).filter(i=>!!i)},[f,p.entries]),N=d.useMemo(()=>new Set(y.map(t=>t.to)),[y]);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between",style:{padding:s?"20px 8px 12px":"20px 12px 12px"},children:[!s&&e.jsxs(G,{to:"/admin",className:"flex items-center gap-2 group","aria-label":"Lovable PRM admin",children:[e.jsx("img",{src:Q,alt:"Lovable",style:{height:16,width:16,display:"block",flexShrink:0}}),e.jsx("span",{style:{color:"var(--ds-text-primary)",fontSize:13,fontWeight:500,whiteSpace:"nowrap"},children:"Lovable PRM"}),e.jsx("span",{style:{fontSize:10,fontWeight:500,color:"var(--ds-text-body)",backgroundColor:"var(--ds-row-hover)",padding:"2px 6px",borderRadius:4,letterSpacing:"0.02em"},children:"Admin"})]}),s&&e.jsx("img",{src:Q,alt:"Lovable",style:{height:16,width:16,display:"block",margin:"0 auto"}}),e.jsx("button",{onClick:()=>l(!s),className:"hidden md:flex h-7 w-7 items-center justify-center rounded-md transition-colors hover:bg-muted/50","aria-label":s?"Expand sidebar":"Collapse sidebar",children:s?e.jsx(us,{className:"h-3.5 w-3.5 text-muted-foreground"}):e.jsx(cs,{className:"h-3.5 w-3.5 text-muted-foreground"})})]}),!s&&e.jsx("div",{style:{padding:"0 12px 8px"},children:e.jsx(ce,{})}),s&&e.jsx("div",{style:{padding:"0 8px 8px",display:"flex",justifyContent:"center"},children:e.jsx(ce,{collapsed:!0})}),!s&&!m&&e.jsx("div",{style:{padding:"0 12px 8px"},children:e.jsxs("button",{onClick:b,className:"group flex w-full items-center gap-2 transition-colors",style:{height:28,padding:"0 10px",borderRadius:6,fontSize:12,fontWeight:400,color:"var(--ds-text-body)",backgroundColor:"transparent",border:"0.5px solid var(--ds-border-faint)",transition:"background-color 120ms ease, color 120ms ease, border-color 120ms ease"},onMouseEnter:t=>{t.currentTarget.style.backgroundColor="var(--ds-surface-subtle)",t.currentTarget.style.color="var(--ds-text-primary)",t.currentTarget.style.borderColor="var(--ds-border-strong)"},onMouseLeave:t=>{t.currentTarget.style.backgroundColor="transparent",t.currentTarget.style.color="var(--ds-text-body)",t.currentTarget.style.borderColor="var(--ds-border-faint)"},children:[e.jsx(I,{className:"h-3 w-3 shrink-0"}),e.jsx("span",{className:"flex-1 text-left",children:"View as test partner"})]})}),s&&!m&&e.jsx("div",{style:{padding:"0 8px 8px",display:"flex",justifyContent:"center"},children:e.jsx("button",{onClick:b,title:"View as test partner portal",className:"flex items-center justify-center transition-colors",style:{height:28,width:28,borderRadius:6,color:"var(--ds-text-body)",backgroundColor:"transparent",border:"0.5px solid var(--ds-border-faint)"},onMouseEnter:t=>{t.currentTarget.style.backgroundColor="var(--ds-surface-subtle)",t.currentTarget.style.color="var(--ds-text-primary)"},onMouseLeave:t=>{t.currentTarget.style.backgroundColor="transparent",t.currentTarget.style.color="var(--ds-text-body)"},children:e.jsx(I,{className:"h-3 w-3"})})}),e.jsx("nav",{className:"flex-1 overflow-y-auto px-2",children:f.map(t=>{const i=S[t.label]??!0;return e.jsxs("div",{children:[!s&&e.jsxs("button",{onClick:()=>M(t.label),className:"flex w-full items-center justify-between px-3 transition-colors",style:{marginTop:16,marginBottom:4,fontSize:9,letterSpacing:"0.1em",textTransform:"uppercase",color:"var(--ds-text-faint)",fontWeight:500},children:[e.jsx("span",{children:t.label}),e.jsx(Ie,{className:D("transition-transform duration-200",!i&&"-rotate-90"),style:{width:10,height:10}})]}),s&&e.jsx("div",{style:{marginTop:8}}),(s||i)&&e.jsx("div",{className:"space-y-px",children:t.items.map(o=>{const v=!o.external&&L(o.to),j=o.badgeKey?C[o.badgeKey]??0:0,O={height:36,padding:s?"8px 0":"8px 12px",borderRadius:6,fontSize:13,fontWeight:v?500:400,color:v?"var(--ds-text-primary)":"var(--ds-text-body)",backgroundColor:v?"var(--ds-row-hover)":"transparent",gap:s?0:8,transition:"background-color 120ms ease, color 120ms ease"},_=D("group relative flex items-center transition-colors",s&&"justify-center"),A=E=>{v||(E.currentTarget.style.backgroundColor="var(--ds-surface-subtle)",E.currentTarget.style.color="var(--ds-text-strong)")},J=E=>{v||(E.currentTarget.style.backgroundColor="transparent",E.currentTarget.style.color="var(--ds-text-body)")},ee=e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"relative shrink-0",children:[e.jsx(o.icon,{className:"h-3.5 w-3.5 shrink-0"}),s&&j>0&&e.jsx("span",{"aria-label":`${j} unviewed`,style:{position:"absolute",top:-3,right:-3,width:7,height:7,borderRadius:999,backgroundImage:oe,border:"1.5px solid var(--ds-surface)"}})]}),!s&&e.jsx("span",{children:o.label}),!s&&j===0&&N.has(o.to)&&e.jsx("span",{className:"ml-auto",title:"Also in Frequent","aria-hidden":"true",style:{width:4,height:4,borderRadius:999,backgroundColor:"var(--ds-text-faint)",flexShrink:0}}),!s&&j>0&&e.jsx("span",{className:"ml-auto inline-flex items-center justify-center",style:{minWidth:18,height:18,padding:"0 5px",borderRadius:999,backgroundImage:oe,color:"var(--ds-surface)",fontSize:10,fontWeight:500,lineHeight:1},"aria-label":`${j} unviewed leads`,children:j>99?"99+":j})]});return o.external?e.jsx("a",{href:o.to,target:"_blank",rel:"noopener noreferrer",onClick:c,className:_,title:s?o.label:void 0,style:O,onMouseEnter:A,onMouseLeave:J,children:ee},o.to+o.label):e.jsx(G,{to:o.to,onClick:c,className:_,title:s?o.label:void 0,style:O,onMouseEnter:A,onMouseLeave:J,children:ee},o.to+o.label)})})]},t.label)})}),e.jsxs("div",{style:{borderTop:"0.5px solid var(--ds-border-faint)",padding:"8px 8px"},className:"space-y-px",children:[ks.map(t=>{const i=L(t.to);return e.jsxs(G,{to:t.to,onClick:c,className:D("group flex items-center transition-colors",s&&"justify-center"),title:s?t.label:void 0,style:{height:36,padding:s?"8px 0":"8px 12px",borderRadius:6,fontSize:13,fontWeight:i?500:400,color:i?"var(--ds-text-primary)":"var(--ds-text-body)",backgroundColor:i?"var(--ds-row-hover)":"transparent",gap:s?0:8,transition:"background-color 120ms ease, color 120ms ease"},onMouseEnter:o=>{i||(o.currentTarget.style.backgroundColor="var(--ds-surface-subtle)",o.currentTarget.style.color="var(--ds-text-strong)")},onMouseLeave:o=>{i||(o.currentTarget.style.backgroundColor="transparent",o.currentTarget.style.color="var(--ds-text-body)")},children:[e.jsx(t.icon,{className:"h-3.5 w-3.5 shrink-0"}),!s&&e.jsx("span",{children:t.label})]},t.to)}),e.jsxs("div",{className:s?"flex flex-col items-center gap-2":"flex items-center gap-2",children:[e.jsx(Fe,{collapsed:s}),e.jsx(ps,{collapsed:s})]}),e.jsxs("button",{onClick:R,className:D("group flex w-full items-center transition-colors",s&&"justify-center"),title:s?"Sign out":void 0,style:{height:36,padding:s?"8px 0":"8px 12px",borderRadius:6,fontSize:13,fontWeight:400,color:"var(--color-muted-foreground)",backgroundColor:"transparent",gap:s?0:8,transition:"background-color 120ms ease, color 120ms ease"},onMouseEnter:t=>{t.currentTarget.style.backgroundColor="var(--color-accent)",t.currentTarget.style.color="var(--color-foreground)"},onMouseLeave:t=>{t.currentTarget.style.backgroundColor="transparent",t.currentTarget.style.color="var(--color-muted-foreground)"},children:[e.jsx(Ge,{className:"h-3.5 w-3.5 shrink-0"}),!s&&e.jsx("span",{children:"Sign out"})]})]})]})}function Ss(){const{collapsed:n,mobileOpen:r,setMobileOpen:a}=Z(),s=W();return d.useEffect(()=>{a(!1)},[s.pathname]),e.jsxs(e.Fragment,{children:[e.jsx("aside",{className:"hidden md:flex flex-col bg-background transition-all duration-200",style:{width:n?52:220,borderRight:"0.5px solid var(--color-border)",minWidth:n?52:220},children:e.jsx(de,{})}),r&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"md:hidden fixed inset-0 z-40 bg-black/30 backdrop-blur-sm",onClick:()=>a(!1)}),e.jsxs("aside",{className:"md:hidden fixed inset-y-0 left-0 z-50 flex flex-col bg-background",style:{width:"min(85vw, 280px)",boxShadow:"4px 0 16px rgba(0,0,0,0.08)"},children:[e.jsx("button",{onClick:()=>a(!1),className:"absolute top-3 right-3 flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted/50","aria-label":"Close menu",children:e.jsx(pe,{className:"h-4 w-4 text-muted-foreground"})}),e.jsx(de,{onNavigate:()=>a(!1)})]})]})]})}function Cs(n){if(!n.startsWith("/admin"))return null;
1const r=n.split("?")[0].split("/").filter(Boolean);return r.length<=1?"/admin":`/admin/${r[1]}`}function H(n,r,a){h.rpc("record_admin_page_usage",{_path:n,_visits:r,_seconds:a}).then(({error:s})=>{s&&console.warn("[admin usage] failed to record",s.message)})}function Ns(){const n=W(),r=d.useRef(null);d.useEffect(()=>{const a=Cs(n.pathname);if(!a)return;const s=r.current;if(!(s&&s.path===a)){if(s){const l=Math.round((Date.now()-s.enteredAt)/1e3);l>0&&H(s.path,0,l)}r.current={path:a,enteredAt:Date.now()},H(a,1,0)}},[n.pathname]),d.useEffect(()=>{const a=()=>{const l=r.current;if(!l)return;const u=Math.round((Date.now()-l.enteredAt)/1e3);u>0&&(H(l.path,0,u),r.current={...l,enteredAt:Date.now()})},s=()=>{document.visibilityState==="hidden"&&a()};return document.addEventListener("visibilitychange",s),window.addEventListener("pagehide",a),()=>{document.removeEventListener("visibilitychange",s),window.removeEventListener("pagehide",a)}},[])}function _s(){const{isReadOnly:n,isSalesOnly:r,isPreviewing:a,previewRole:s}=z(),l=X();if(l.previewing)return e.jsx(ue,{label:`Previewing as ${xe(l.preset)}`,desc:"— navigation and section access only; your real super admin permissions are unchanged.",onExit:()=>K(null)});if(!n)return null;const u=a?`Previewing as ${s==="sales"?"Sales":"Admin viewer"}`:r?"Sales view":"View-only access",m=a?"— UI restrictions only; your real admin permissions are unchanged.":r?"— read-only access to partners, co-sell, and leads.":"— you can browse all admin data but cannot make changes.";return e.jsx(ue,{label:u,desc:m,onExit:a?()=>Y(null):void 0})}function ue({label:n,desc:r,onExit:a}){return e.jsxs("div",{className:"flex items-center justify-center gap-2 px-4 py-2 text-[11px] font-medium",style:{background:"var(--ds-row-hover)",color:"var(--ds-text-body)",borderBottom:"0.5px solid var(--ds-border-faint)"},children:[e.jsx("span",{style:{color:"var(--ds-text-primary)"},children:n}),e.jsx("span",{children:r}),a&&e.jsx("button",{onClick:a,className:"ml-2 underline underline-offset-2 hover:opacity-70",style:{color:"var(--ds-text-primary)"},children:"Exit preview"})]})}function Ys(){return e.jsx(Xe,{children:e.jsx(As,{})})}function As(){is(),Ns();const{isSalesOnly:n,loading:r}=z(),a=X(),s=W(),l=fe();return d.useEffect(()=>{r||!n||be(s.pathname)||l({to:hs,replace:!0})},[r,n,s.pathname,l]),d.useEffect(()=>{if(a.loading||a.isSuperAdmin&&!a.previewing)return;const u=Ze(s.pathname);if(!u||a.can(u,"view"))return;const m=Je.find(x=>a.can(x.key,"view"));l({to:m?m.key:"/no-access",replace:!0})},[a,s.pathname,l]),e.jsx(Ke,{children:e.jsx(ws,{children:e.jsxs("div",{className:"flex h-screen overflow-hidden bg-background",children:[e.jsx(Ss,{}),e.jsxs("main",{className:"flex-1 overflow-y-auto flex flex-col","data-theme-surface":!0,children:[e.jsx(js,{}),e.jsx(_s,{}),e.jsx(ms,{}),e.jsx("div",{className:"flex-1 min-h-0",children:e.jsx(We,{})})]})]})})})}export{Ys as component};

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.