1import{r as i,j as s,L as F}from"./react-vendor-CU6Sz31W.js";import{u as H,dQ as K,lP as U,as as S,lQ as X,t as B,R as Y,L as D,I as J,i as V,d as Z,j as w,lR as ss,aQ as es}from"./index-DEXJEDAi.js";import{f as N,d as $,e as M,q as ts,l as as,w as is,t as ns,s as rs}from"./firebase-w6DYUbFN.js";import{B as _}from"./BusinessPageBar-D3kd5CGd.js";import{B as T}from"./BusinessState-DD1p_okQ.js";import{r as q,B as us}from"./BusinessTypeGrid-DBqLMYtq.js";import{B as os}from"./BusinessRouteEntry-F6ni-Fpc.js";import"./payment-icons-Daq1K3F1.js";import"./RoutePageTitle-D_8Od-sv.js";import"./businessServiceApi-JTbEPrX-.js";import"./servicePricing-BPZAE8eG.js";import"./resourceCategoriesApi-FphVWuNp.js";import"./businessLocationsApi-DEC_9nvT.js";import"./giftCardSettings-CEmOIn5N.js";import"./locationOperatingHours-CWb6MVBg.js";import"./businessTagsApi-BWZKtrAp.js";function ls({row:e,expanded:o,onExpand:y,children:r}){const p=ss(e);return s.jsxs("li",{className:`business-setup-task-row ${e.complete?"is-complete":""} ${o?"is-expanded":""}`,children:[s.jsxs("button",{type:"button",className:"business-setup-task-row__head","aria-expanded":o,onClick:()=>y(o?null:e.id),"data-testid":w("button","business-setup-row",e.id),children:[s.jsx("span",{className:"business-setup-task-row__mark","aria-hidden":"true",children:e.complete?s.jsx(es,{className:"size-3.5",strokeWidth:3}):null}),s.jsx("span",{className:"business-setup-task-row__title",children:e.label}),e.complete?s.jsx("span",{className:"business-setup-task-row__state",children:"Done"}):s.jsx("span",{className:"business-setup-task-row__state",children:p||(e.optional?"Optional":"")})]}),s.jsx("div",{className:"business-reveal","data-open":o?"true":"false","aria-hidden":!o,children:s.jsx("div",{className:"business-setup-task-row__bodyWrap",children:s.jsxs("div",{className:"business-setup-task-row__body",children:[s.jsx("p",{className:"business-setup-task-row__sentence",children:e.sentence}),o?r:null]})})})]})}function ds(){const{userDoc:e,userType:o}=H(),y=K(),r=e==null?void 0:e.businessId,p=(e==null?void 0:e.userType)==="Business Admin",[a,Q]=i.useState(null),[d,W]=i.useState([]),[R,E]=i.useState(null),[b,m]=i.useState(!0),[G,h]=i.useState(""),[v,k]=i.useState(null),[L,I]=i.useState(!1),[l,C]=i.useState(""),[g,O]=i.useState(""),P=i.useRef(!1),A=i.useRef(!1),x=i.useMemo(()=>U(e,o),[e,o]);i.useEffect(()=>{if(!r||!p){m(!1);return}m(!0),h("");const t=N($(S,"Businesses",r),u=>{if(!u.exists()){h("That business record could not be found."),m(!1);return}Q({id:u.id,...u.data()}),m(!1)},u=>{h(u.message||"Setup could not load."),m(!1)}),n=N(M(S,"Businesses",r,"Locations"),u=>W(u.docs.map(f=>({id:f.id,...f.data()}))),u=>h(u.message||"Your locations could not load.")),j=N(ts(M(S,"Businesses",r,"Services"),is("price",">",0),as(1)),u=>E(u.docs.map(f=>({id:f.id,...f.data()}))),()=>E([]));return()=>{t(),n(),j()}},[p,r]);const c=i.useMemo(()=>X({business:a,locations:d,services:R,user:e}),[d,a,R,e]);i.useEffect(()=>{var t,n,j,u;P.current||!a||(P.current=!0,C(((n=(t=a.onboarding)==null?void 0:t.workspaceSetup)==null?void 0:n.businessType)||""),O(((u=(j=a.onboarding)==null?void 0:j.workspaceSetup)==null?void 0:u.businessTypeOther)||""))},[a]),i.useEffect(()=>{var t,n;A.current||b||!r||!a||(n=(t=a.onboarding)==null?void 0:t.workspaceSetup)!=null&&n.businessType&&d.length!==0&&(A.current=!0,q({businessId:r,business:a,locations:d,actor:x}).catch(()=>{}))},[x,b,d,a,r]),i.useEffect(()=>{b||v!==null||k(c.nextRowId)},[b,v,c.nextRowId]);const z=i.useCallback(async()=>{var t;if(!(!r||!l)){if(l==="other"&&!g.trim()){B.error("Tell us what to call it.");return}I(!0);try{await ns($(S,"Businesses",r),{"onboarding.workspaceSetup.businessType":l,"onboarding.workspaceSetup.businessTypeOther":l==="other"?g.trim():"",updatedAt:rs()});const n=await q({businessId:r,business:{...a,onboarding:{...(a==null?void 0:a.onboarding)||{},workspaceSetup:{...((t=a==null?void 0:a.onboarding)==null?void 0:t.workspaceSetup)||{},businessType:l}}},locations:d,actor:x});B.success(n!=null&&n.seeded?"Business type saved and your defaults applied.":"Business type saved."),k(null)}catch(n){Y(n,{area:"onboarding",surface:"frontend/src/business/pages/setup/BusinessSetupPage.jsx",operation:"frontend/src/business/pages/setup/BusinessSetupPage.jsx:210"}),B.error(n.message||"That change could not be saved.")}finally{I(!1)}}},[x,l,g,d,a,r]);return p?b?s.jsxs("main",{className:"business-page-shell business-page-shell--config","aria-label":"Get started",children:[s.jsx(_,{title:"Get started",variant:"config"}),s.jsx(T,{kind:"loading",title:"Loading setup"})]}):G?s.jsxs("main",{className:"business-page-shell business-page-shell--config","aria-label":"Get started",children:[s.jsx(_,{title:"Get started",variant:"config"}),s.jsx(T,{kind:"error",title:"Setup could not load",description:G})]}):s.jsxs("main",{className:"business-page-shell business-page-shell--config","aria-label":"Get started","data-business-feature":"setup","data-testid":"page-business-setup",children:[s.jsx(_,{title:"Get started",variant:"config",status:`${c.completedCount} of ${c.requiredCount} done`,testId:"page-bar-business-setup"}),s.jsx("div",{className:"business-setup-progress",role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":c.progressPercent,"aria-label":"Setup progress",children:s.jsx("div",{className:"business-setup-progress__fill",style:{transform:`scaleX(${c.progressPercent/100})`}})}),s.jsx("ul",{className:"business-setup-tasks","data-testid":"list-business-setup-tasks",children:c.rows.map(t=>s.jsx(ls,{row:t,expanded:v===t.id,onExpand:k,children:t.inline==="businessType"?s.jsxs("div",{className:"business-setup-task-row__inline",children:[s.jsx(us,{value:l,onCh
1ange:C,reduceMotion:y}),l==="other"?s.jsxs("div",{className:"business-setup-field",children:[s.jsx(D,{htmlFor:"business-setup-business-other",children:"What do you call it?"}),s.jsx(J,{id:"business-setup-business-other",value:g,placeholder:"Sports recovery studio",onChange:n=>O(n.target.value)})]}):null,s.jsx("div",{children:s.jsxs(V,{type:"button",onClick:z,disabled:L||!l,"data-testid":w("button","business-setup","save-business-type"),children:[L?s.jsx(Z,{className:"size-4 animate-spin","aria-hidden":"true"}):null,"Save"]})})]}):t.to?s.jsx(F,{className:"business-setup-task-row__action",to:t.to,"data-testid":w("link","business-setup-row",t.id),children:t.action}):s.jsx("p",{className:"business-setup-note",children:"Saved when you finished setting up your account."})},t.id))}),s.jsx("p",{className:"business-setup-note",children:"Get started stays in your profile menu and in Apps, whether or not it is finished."})]}):s.jsx("main",{className:"business-page-shell business-page-shell--config","aria-label":"Get started",children:s.jsx(T,{kind:"restricted",title:"Only a business admin can run setup",de
1scription:"Business details, locations, and invitations are managed by a business admin."})})}function Ts(){return s.jsx(os,{routeKey:"setup",children:s.jsx(ds,{})})}export{Ts 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.