1import{r as o,j as e,a1 as ke,s as Le,ai as X,aj as Ce}from"./react-vendor-4YRa2s_z.js";import{a as Pe,u as _e,c as Be,N as Ee}from"./router-vendor-DbhFwP6h.js";import{u as Fe}from"./ClientContext-CrE4I_Sk.js";import{u as Te,w as Oe,L as b,R as Z,S as m,c as ee,B as Ae,s as w,l as Ie}from"./index-DZis4BhX.js";import{u as ze}from"./useSubscription-CF2cxNke.js";import{u as Me}from"./tooltip-BMREYJY1.js";import{S as B}from"./SEO-D4KcVU5R.js";import{P as Re}from"./PageSectionHeader-CV_ZaWFq.js";import{N as De,P as Ue}from"./NoBrandScreen-g8tfE5uf.js";import{T as He}from"./TodaysFocusWhiteboard-DM4pJbLP.js";import{u as We}from"./useEnabledTools-DdI-oZ9I.js";import{u as $e}from"./use-mobile-PderYAPM.js";import{F as qe}from"./FirstBrandOnboardingDialog-BOCc-g-n.js";import{g as Ye}from"./clientSlug-N6OnVfxX.js";import"./supabase-vendor-LPZzPchk.js";import"./useMutation-CpXffuWa.js";import"./date-vendor-DFlaJNMG.js";import"./siteMetadata-3HzScZE-.js";import"./alert-dialog-CPHz3EYf.js";import"./task-C3Xac8gw.js";import"./taskService-C4ap92W2.js";import"./urlUtils-WRQucguB.js";import"./dialog-CZSrocdd.js";import"./input-7Hx0az1B.js";import"./textarea-C6YuCnJA.js";import"./label-u4XokumS.js";import"./calendar-CEA79WZ7.js";import"./popover--EErJZvO.js";import"./select-V03c1WxC.js";import"./teamService-B4PiPLxm.js";import"./avatar-B4lXnb_J.js";import"./badge-CodlCdyR.js";import"./command-C_ZOqpN5.js";import"./teamPermissions-CpjNsE_C.js";import"./checkbox-xQfbvPBN.js";import"./IndustryCombobox-Bm0LEwt2.js";import"./SubstackIcon-Edk6crYn.js";import"./Footer-Bol1Yhzu.js";const Es=()=>{const h=Pe(),se=_e(),[f,E]=Be(),{user:a,session:te,isAuthReady:g}=Te(),{selectedClient:u,clients:v=[],archivedClients:re=[],isClientLoading:S,createClient:ae,setSelectedClient:oe}=Fe(),{canCreateClients:F,role:ne,isLoading:j}=Oe(),{subscription:i,refreshSubscription:N}=ze(),{credits:y,availableCredits:ie,refreshCredits:k}=Me(),{categories:T,categoriesWithLocked:O,isLoading:le}=We(),L=$e(),[ce,A]=o.useState(!1),[I,z]=o.useState(!1),[de,M]=o.useState(!1),me=120,[R,ue]=o.useState(!1),[pe,D]=o.useState(!1),[p,he]=o.useState(null),[C,U]=o.useState(""),[fe,H]=o.useState("");o.useEffect(()=>{let s=!0;return(async()=>{if(!(a!=null&&a.id)){s&&U("");return}try{const{data:r,error:n}=await w.from("profiles").select("first_name, nickname").eq("id",a.id).maybeSingle();if(n){console.error("Failed to fetch profile names for onboarding:",n);return}if(!s)return;U(String((r==null?void 0:r.first_name)||"").trim()),H(String((r==null?void 0:r.nickname)||"").trim())}catch(r){console.error("Unexpected error fetching profile names:",r)}})(),()=>{s=!1}},[a==null?void 0:a.id]);const ge=(()=>{var l,c,x,$,q,Y,G,V,J,K;const s=a==null?void 0:a.user_metadata,t=(c=(l=a==null?void 0:a.identities)==null?void 0:l[0])==null?void 0:c.identity_data,n=[s==null?void 0:s.first_name,s==null?void 0:s.given_name,($=(x=s==null?void 0:s.full_name)==null?void 0:x.split(" "))==null?void 0:$[0],(Y=(q=s==null?void 0:s.name)==null?void 0:q.split(" "))==null?void 0:Y[0],t==null?void 0:t.first_name,t==null?void 0:t.given_name,(V=(G=t==null?void 0:t.full_name)==null?void 0:G.split(" "))==null?void 0:V[0],(K=(J=t==null?void 0:t.name)==null?void 0:J.split(" "))==null?void 0:K[0]].find(Q=>typeof Q=="string"&&Q.trim().length>0);return C||(typeof n=="string"?n.trim():"")})(),xe=fe||C.trim(),P=v.length+re.length,_=!!a&&g&&!j&&F&&!S&&P===0&&!R,be=!!a&&g&&!S&&!j&&!F&&ne==="social_media_manager"&&P===0,we=(pe||_)&&!R;o.useEffect(()=>{_&&D(!0)},[_]),o.useEffect(()=>{if(!(f.get("checkout")==="success")||!a)return;let t=!0;M(!0),(async()=>{const l=await N();if(await k(),!t)return;const c=(l==null?void 0:l.subscription_tier)??(i==null?void 0:i.subscription_tier);(c==="pro"||c==="premium")&&z(!0),M(!1)})();const n=new URLSearchParams(f);return n.delete("checkout"),E(n,{replace:!0}),()=>{t=!1}},[f,E,a,N,k,i==null?void 0:i.subscription_tier]);const ve=()=>{z(!1),N(),k()},Se=async s=>{const t=s.trim();if(!(!t||!(a!=null&&a.id)))try{await w.from("profiles").update({nickname:t}).eq("id",a.id),await w.auth.updateUser({data:{nickname:t}}),H(t)}catch(r){console.error("Failed to update nickname during onboarding:",r)}},je=async s=>{const t=await ae(s);return oe(t),he(t),{id:t.id}},Ne=async()=>
1{if(!p)return;if(a!=null&&a.id){const{error:t}=await w.from("profiles").update({last_selected_client_id:p.id}).eq("id",a.id);t&&console.error("Failed to persist onboarding dashboard path:",t)}ue(!0),D(!1);const s=new URLSearchParams(f);s.set("client",Ye(p,v.length?v:[p])),h({pathname:"/brand-dashboard",search:s.toString()},{replace:!0,state:{clientId:p.id}})},ye=o.useMemo(()=>O.flatMap(s=>s.items),[O]),d=o.useMemo(()=>{const s=[{tab:"brand-dashboard",label:"Dashboard",shortLabel:"Dashboard"},...T.flatMap(t=>t.items.map(r=>({tab:r.tab,label:r.label,shortLabel:r.shortLabel??r.label})))];return s.length<=1?null:s[1]??null},[T]);o.useEffect(()=>{if(!L||!d){A(!1);return}const s=()=>document.getElementById("app-scroll-container"),t=()=>{const n=s(),l=(n==null?void 0:n.scrollTop)??0,c=window.pageYOffset||document.documentElement.scrollTop||0,x=Math.max(l,c);A(x>me)};t();const r=s();return window.addEventListener("scroll",t,{passive:!0}),r==null||r.addEventListener("scroll",t,{passive:!0}),window.addEventListener("resize",t),()=>{window.removeEventListener("scroll",t),r==null||r.removeEventListener("scroll",t),window.removeEventListener("resize",t)}},[L,d]);const W=s=>{const t=new URLSearchParams(se.search);t.delete("tab"),h({pathname:Ie(s),search:t.toString()})};return de?e.jsx(b,{message:"Finalizing your subscription...",size:"sm",fullScreen:!1,className:"min-h-[24vh] gap-2"}):g?!a&&!te&&g?e.jsx(Ee,{to:"/auth",replace:!0}):S||j&&P===0?e.jsx(b,{message:"Loading dashboard...",size:"sm",fullScreen:!1,className:"min-h-[24vh] gap-2"}):we?e.jsxs(e.Fragment,{children:[e.jsx(B,{title:"Welcome",description:"Set up your first brand to continue.",keywords:"onboarding, brand setup",noIndex:!0}),e.jsx(Z,{children:e.jsx(qe,{open:!0,firstName:ge,lastName:xe,onCreateBrand:je,onSavePreferredName:Se,onComplete:Ne})})]}):be?e.jsxs(e.Fragment,{children:[e.jsx(B,{title:"No Assigned Brands",description:"Your account does not have any assigned brands yet.",keywords:"assigned brands, team access",noIndex:!0}),e.jsx(Z,{children:e.jsx(De,{title:"No brands assigned yet",description:"Ask your main account owner to assign at least one brand to your profile.",primaryActionLabel:"Open Help",onPrimaryAction:()=>h("/help")})})]}):u?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mx-auto w-full max-w-7xl p-4 sm:p-6",children:[e.jsx(B,{title:`${u.name} Brand Dashboard`,description:`Single-brand dashboard for ${u.name}.`,keywords:"brand dashboard, focus",noIndex:!0}),e.jsx(Re,{icon:ke,title:`${u.name}'s Dashboard`,description:"Your brand hub."}),e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsx(He,{clientId:u.id,title:"What are you working on?",showAddTask:!1}),le?e.jsx("div",{className:"grid grid-cols-1 gap-3 min-[560px]:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4","aria-label":"Loading dashboard tools",children:Array.from({length:8}).map((s,t)=>e.jsx("div",{className:"rounded-xl border border-border/50 bg-card px-3.5 py-3.5 min-[480px]:h-[180px] min-[480px]:px-4 min-[480px]:py-4",children:e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(m,{className:"h-9 w-9 rounded-lg"}),e.jsx(m,{className:"h-3 w-16"})]}),e.jsx(m,{className:"h-4 w-4"})]}),e.jsxs("div",{className:"mt-4 space-y-2",children:[e.jsx(m,{className:"h-5 w-2/3"}),e.jsx(m,{className:"h-4 w-full"}),e.jsx(m,{className:"h-4 w-5/6"})]})]})},t))}):e.jsx("div",{className:"grid grid-cols-1 gap-3 min-[560px]:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4",children:ye.map(s=>{const t=s.icon,r=s.isLockedForCurrentTier;return e.jsx("button",{type:"button",onClick:()=>{if(r){h("/subscription");return}W(s.tab)},"aria-disabled":r,title:r?"Upgrade to unlock":void 0,className:ee("group w-full rounded-xl border border-border/50 bg-card px-3.5 py-3.5 text-left transition-all duration-200 min-[480px]:h-[180px] min-[480px]:px-4 min-[480px]:py-4",r?"opacity-70 hover:border-primary/25 hover:bg-primary/5":"hover:border-border hover:shadow-sm hover:bg-muted/30"),children:e.jsxs("div",{className:"flex h-full flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:ee("flex h-9 w-9 shrink-0 items-center justify-center rounded-lg transition-colors duration-200",r?"bg-muted text-muted-foreground":"bg-
1accent/10 text-accent group-hover:bg-accent/20"),children:e.jsx(t,{className:"h-4.5 w-4.5"})}),e.jsx("p",{className:"font-nunito text-[10px] font-semibold uppercase tracking-widest text-muted-foreground/70",children:s.category})]}),r?e.jsx(Le,{className:"h-4 w-4 shrink-0 text-muted-foreground/70","aria-label":`${s.label} is locked on this plan`}):e.jsx(X,{className:"h-4 w-4 shrink-0 text-muted-foreground/40 transition-transform duration-200 group-hover:translate-x-0.5 group-hover:text-muted-foreground"})]}),e.jsxs("div",{className:"mt-3 min-w-0 space-y-1.5 min-[480px]:mt-4 min-[480px]:space-y-2",children:[e.jsx("p",{className:"font-nunito text-[15px] font-semibold leading-tight text-foreground min-[480px]:text-base",children:s.dashboardLabel??s.label}),e.jsx("p",{className:"font-nunito text-sm leading-snug text-muted-foreground min-[480px]:leading-relaxed",children:s.dashboardDescription??s.description})]})]})},s.id)})})]}),L&&d&&ce&&typeof document<"u"?Ce.createPortal(e.jsx("div",{className:"fixed bottom-2 left-4 z-50 transition-all duration-200 sm:bottom-4 sm:left-auto sm:right-6 motion-reduce:transition-none",children:e.jsx("div",{"data-mobile-next-tool-fab":"true",children:e.jsxs(Ae,{type:"button",onClick:()=>W(d.tab),className:"h-10 rounded-full px-3 text-xs font-nunito shadow-md hover:shadow-lg",children:[e.jsxs("span",{children:["Go to ",d.shortLabel??d.label]}),e.jsx(X,{className:"ml-1 h-3.5 w-3.5"})]})})}),document.body):null]}),I&&e.jsx(Ue,{open:I,onClose:ve,anniversaryDate:(y==null?void 0:y.last_reset_date)??new Date().toISOString(),currentCredits:Math.max(0,Math.floor(ie)),tier:(i==null?void 0:i.subscription_tier)==="pro"?"pro":"premium"})]}):e.jsx(b,{message:"Loading tool...",size:"sm",fullScreen:!1,className:"min-h-[24vh] gap-2"}):e.jsx(b,{message:"Loading dashboard...",size:"sm",fullScreen:!1,className:"min-h-[24vh] gap-2"})};export{Es as default};
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.