1import{a as oe,u as le,j as x}from"./vendor-query-DvnPdOMX.js";import{v as G,bn as V,a6 as z,fE as W,fD as ue,U as f,bN as ce,cm as de,cj as pe,ji as fe,ck as me,cl as ge,gx as ye,a as ve}from"./index-1YQNuixL.js";import{u as we,r as t}from"./vendor-react-woJBpfBI.js";import{c as be}from"./brand-ops-WD3eOk2N.js";import{s as Y}from"./useReportSubscription-CEvvKQks.js";import{S as he}from"./StateNotice-CUVE_HHP.js";import{B as Be}from"./BrandLimitModal-DzfY-6R2.js";import"./vendor-supabase-DaZXgOw0.js";import"./vendor-utils-BNe0Xlio.js";import"./vendor-icons-BLMEbmRV.js";import"./vendor-motion-ZmH_6coE.js";import"./useUserActivity-kKUC7DRe.js";import"./Accordion-C19bvCrA.js";import"./PurchaseReview-DnYbOYuj.js";import"./PlanChangeDialog-DOrbwRVY.js";import"./SegmentedControl-CXT6J19h.js";function ke(){const{user:u,entitlements:o,syncSubscription:c,effectiveSubscription:q}=G(),{brands:d,activeBrand:E,refetch:B}=V(),r=oe(),Q=we(),{isClientPortal:k}=z(),[P,y]=t.useState(null),[_,m]=t.useState(!1),[n,g]=t.useState(null),[v,C]=t.useState(null),[K,L]=t.useState(!1),[D,U]=t.useState(!1),[p,M]=t.useState(null),[H,N]=t.useState(null),[J,$]=t.useState(!1),{data:T}=le({queryKey:["subscription-details",u?.id],queryFn:()=>ge(),enabled:!!u?.id&&!k,staleTime:300*1e3}),A=T?.capacity_breakdown??null,X=t.useMemo(()=>d.filter(e=>e.active).length,[d]),F=A?.active_count??X,I=A?.activation_limit??o.totalBrands,j=A?A.available_count>0:F<I,S=!u?.teamId||u.teamRole==="owner"||T?.can_manage_billing===!0,w=W(q)||W(T),b=t.useMemo(()=>ue(u?.id,u?.teamId),[u?.id,u?.teamId]),h=t.useCallback(async(e,s)=>{y(e),await r.cancelQueries({queryKey:["brands"]}),await r.cancelQueries({queryKey:["brands-with-visibility"]});const l=r.getQueryData(b);l&&r.setQueryData(b,{...l,brands:l.brands.map(i=>i.id===e?{...i,active:s}:i)}),r.setQueriesData({queryKey:["brands-with-visibility"]},i=>Array.isArray(i)?i.map(a=>a?.id===e?{...a,active:s}:a):i);try{const i=await be({user_id:u?.id||"",brand_ids:[e],active:s});if(!i.success)throw new Error(i.message||"Failed to update brand");if(s&&i.updated_count===0&&i.message)throw new Error(i.message||"No brand slots available to activate tracking");return s?i.reports_triggered>0?(Y(e),f.success("Tracking resumed",{description:"Your first report is generating now. Usually takes 2-4 minutes.",duration:5e3})):f.success("Tracking resumed",{description:"Data will be included in your next scheduled report.",duration:3e3}):f.success("Tracking paused"),r.invalidateQueries({predicate:a=>Array.isArray(a.queryKey)&&a.queryKey[0]==="brand-readiness"}),r.invalidateQueries({queryKey:["subscription-details"]}),!0}catch(i){return l&&r.setQueryData(b,l),r.invalidateQueries({queryKey:["brands-with-visibility"]}),B(),f.error(i instanceof Error?i.message:"Failed to update brand tracking"),!1}finally{y(null)}},[b,r,B,u?.id]),Z=t.useCallback(()=>{K||D||(m(!1),g(null),C(null),M(null))},[K,D]),ee=t.useCallback(e=>{if(M(null),k){f.error("Contact your account manager to resume tracking.");return}if(o.plan==="Free"||o.isTrialing||w){if(j){h(e.id,!0);return}g(e.id),C(null),m(!0);return}y(e.id),ce(e.domain||"").then(s=>{if(M(s),!s.requires_review)return h(e.id,!0);g(e.id),C(null),m(!0)}).catch(s=>f.error(s instanceof Error?s.message:"Could not check client capacity. Please retry.")).finally(()=>y(null))},[j,h,o.plan,o.isTrialing,w,k]),ae=t.useCallback(e=>{h(e,!1)},[h]);t.useEffect(()=>{if(!_||o.plan==="Free"||!S||p||w)return;let e=!1;$(!0),N(null);const s=o.extraBrands||0;return de("update_brands",{newExtraBrands:s+1}).then(l=>{e||N(l)}).catch(()=>{}).finally(()=>{e||$(!1)}),()=>{e=!0}},[_,o.plan,o.extraBrands,S,w,p]);const O=t.useCallback(async(e=!1)=>{if(n){L(!0);try{if(!e){if(p||!S||w)throw new Error("Review the complete billing change before continuing.");const l=await pe((o.extraBrands||0)+1);if(!l.success)throw new Error(l.message||"Capacity could not be updated.")}if(await c(!0),!await h(n,!0))throw new Error("Your subscription is updated. Retry to resume this client.");m(!1),g(null)}finally{L(!1)}}},[n,c,h,p,S,w,o.extraBrands]),te=t.useCallback(async()=>
1{if(!(!n||!v)){U(!0);try{const e=await fe(v,n);if(!e.success)throw new Error(e.message||"Tracking could not be changed.");const s=r.getQueryData(b);s&&r.setQueryData(b,{...s,brands:s.brands.map(a=>a.id===v?{...a,active:!1}:a.id===n?{...a,active:!0}:a)}),r.setQueriesData({queryKey:["brands-with-visibility"]},a=>Array.isArray(a)?a.map(R=>R?.id===v?{...R,active:!1}:R?.id===n?{...R,active:!0}:R):a);const l=d.find(a=>a.id===n),i=d.find(a=>a.id===v);m(!1),g(null),C(null),e.reports_triggered>0?(Y(n),f.success(`Resumed ${l?.name||"brand"}`,{description:`${i?.name||"Previous brand"} paused. First report generating now.`,duration:5e3})):f.success(`Resumed ${l?.name||"brand"}`,{description:`${i?.name||"Previous brand"} paused. Data in next report.`,duration:4e3}),r.invalidateQueries({predicate:a=>Array.isArray(a.queryKey)&&a.queryKey[0]==="brand-readiness"})}catch(e){f.error(e instanceof Error?e.message:"Failed to swap brands"),r.invalidateQueries({queryKey:["brands"]}),r.invalidateQueries({queryKey:["brands-with-visibility"]}),B()}finally{r.invalidateQueries({queryKey:["subscription-details"]}),U(!1)}}},[n,v,b,r,d,B]),re=t.useCallback(()=>{m(!1),g(null),C(null),Q(me({}))},[Q]),ie=t.useMemo(()=>n?d.find(e=>e.id===n)??null:null,[n,d]),ne=t.useMemo(()=>d.filter(e=>e.active&&e.id!==n),[d,n]),se={isOpen:_,onClose:Z,pendingBrand:ie,swappableBrands:ne,activeBrandId:E?.id??null,plan:o.plan,planCycle:o.planCycle,canManageBilling:S,isContractManaged:w,activeBrandsCount:F,brandLimit:I,capacityBreakdown:A,previewData:H,isLoadingPreview:J,swapBrandId:v,setSwapBrandId:C,isAddingSlot:K,isSwapping:D,reviewedActivation:p||void 0,purchaseSelection:p?.can_manage_billing&&p.self_serve&&n?{source:"resume_brand",resume_brand_id:n,brand_capacity:p.brand_capacity,cycle:p.cycle,plan:p.plan==="Scale"?"Scale":"Growth"}:void 0,onPurchaseApplied:()=>O(!0),onAddSlot:()=>{O().catch(e=>f.error(e.message))},onSwap:te,onUpgrade:re};return{requestResume:ee,pauseBrand:ae,togglingBrandId:P,canActivateMore:j,canManageBilling:S,activeBrandsCount:F,brandLimit:I,limitModalProps:se}}function je({hideOnPaths:u=["/settings"]}){const{entitlements:o}=G(),{activeBrand:c,activeBrandStatus:q}=V(),{activeBanner:d}=ye(),{isClientPortal:E}=z(),{requestResume:B,togglingBrandId:r,limitModalProps:Q}=ke();if(E||!c||q!=="paused"||d||o.isPaused||o.isRefreshPaused||o.hasPaymentIssue)return null;if(typeof window<"u"){const m=window.location.pathname;if(m.startsWith("/dashboard")&&new URLSearchParams(window.location.search).get("fromCancelledCheckout")==="true"||u.some(g=>m.startsWith(g)))return null}const k=c,P=k._isClient||k._role==="viewer",y=r===c.id,_=()=>{B({id:c.id,name:c.name,favicon:c.favicon??null,domain:c.domain??null,website:c.website??null})};return x.jsxs(x.Fragment,{children:[x.jsx(ve,{direction:"down",duration:"fast",distance:6,children:x.jsx(he,{kind:"paused",scope:"page",title:`${c.name} is paused`,description:P?"Tracking and automatic refreshes are off. Ask an owner to resume tracking.":"Tracking and automatic refreshes are off. Your existing data remains available.",action:P?void 0:{label:y?"Resuming tracking":"Resume tracking",onClick:_,disabled:y,variant:"secondary"},className:"border-b border-default"})}),x.jsx(Be,{...Q})]})}export{je as PausedBrandBanner};
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.