PageSourceSearch

https://qluu-opportunity-deployment-plan-pr.vercel.app/assets/LifecycleSurface-C_5LBwH1.js

js qluu-opportunity-deployment-plan-pr.vercel.app collected 2026-10-03 05:49:40 UTC 4,557 bytes, 1 lines download raw bytes

1import{r as x,j as s}from"./react-qoZPGuNy.js";import{u as j}from"./useCx-s94ryHGw.js";import{aD as v,T as u}from"./index-DvQEwp7Y.js";import{l as N,V as b,L as f}from"./cxShared-BJ2KLEBA.js";import"./supabase-kPbh7bwL.js";import"./icons-zCsHOLjc.js";function $({ctx:e}){const{accounts:i,cases:a,deployments:n,blockers:t,requests:r}=j(),c=x.useMemo(()=>v(i,a,n,t,r),[i,a,n,t,r]),m=c.length,p=c.reduce((l,o)=>l+(o.account.totalDrivers??0),0),d=a.filter(l=>u(l.status)).length,h=c.reduce((l,o)=>l+o.openP1,0);return s.jsxs("section",{className:"screen",id:"screen-lifecycle",children:[s.jsxs("div",{className:"page-head",children:[s.jsxs("div",{children:[s.jsx("h1",{children:"Lifecycle"}),s.jsx("p",{className:"sub",children:"Every live customer, how they're doing, and why."})]}),s.jsx("span",{className:"flag",children:"CX · Book of customers"})]}),s.jsxs("div",{className:"kpis",children:[s.jsxs("div",{className:"kpi",children:[s.jsx("span",{className:"lbl",children:"Live customers"}),s.jsx("span",{className:"val",children:m}),s.jsxs("span",{className:"note",children:[p.toLocaleString("en-US")," drivers under contract"]})]}),s.jsxs("div",{className:"kpi",children:[s.jsx("span",{className:"lbl",children:"Open cases"}),s.jsx("span",{className:`val ${d>0?"is-risk":""}`,children:d}),s.jsxs("span",{className:"note",children:[h," P1 across the book"]})]}),s.jsxs("div",{className:"kpi",children:[s.jsx("span",{className:"lbl",children:"At-risk / watch"}),s.jsx("span",{className:"val",children:c.filter(l=>l.verdict!=="steady").length}),s.jsx("span",{className:"note",children:"need a call this week"})]}),s.jsxs("div",{className:"kpi",children:[s.jsx("span",{className:"lbl",children:"Active rollouts"}),s.jsx("span",{className:"val",children:n.filter(l=>l.status==="active").length}),s.jsxs("span",{className:"note",children:[n.filter(l=>l.status==="complete").length," complete"]})]})]}),c.length===0?s.jsx("div",{className:"sum-row",children:s.jsx("span",{children:"No live customers yet. When a deal reaches closed-won and the account is marked pilot/customer, it appears here with a health verdict."})}):c.map(l=>k(l,e))]})}function k(e,i){const a=e.deployment,n=N(a,e.account.status),t=a?`${a.dcsLive??0} / ${a.dcsTotal??"—"} DCs`:"—",r=a?`${a.driversLive??0} of ${a.driversTotal??"—"} drivers live`:"—";return s.jsxs("div",{className:`health health--${e.verdict}`,children:[s.jsxs("div",{className:"health-head",children:[s.jsx("h2",{children:e.account.name}),s.jsx("span",{className:`status status--${(e.account.status||"customer").toLowerCase()}`,children:(e.account.status||"customer").replace(/^\w/,c=>c.toUpperCase())}),e.account.isDesignPartner&&s.jsx("span",{className:"tag tag--emerald",children:"DP"}),s.jsx(b,{verdict:e.verdict}),s.jsx("button",{type:"button",className:"link",onClick:()=>i.navigateAccount(e.account.id),children:"Open file →"})]}),s.jsx("div",{className:"health-rail",children:s.jsx(f,{phase:n,ariaLabel:`Lifecycle position for ${e.account.name}`})}),s.jsxs("p",{className:"because",children:[s.jsx("span",{className:"b-lbl",children:"Because"}),e.because]}),s.jsxs("div",{className:"vitals",children:[s.jsxs("div",{className:"vital",children:[s.jsx("span",{className:"lbl",children:"Open cases"}),s.jsxs("span",{className:"val",children:[e.openCases,e.openP1>0&&s.jsxs("span",{className:"hot",children:[" · ",e.openP1," P1"]})]}),s.jsx("span",{className:"note",children:e.openCases===0?"quiet":"on the desk"})]}),s.jsxs("div",{className:"vital",children:[s.jsx("span",{className:"lbl",children:"Deployment"}),s.jsx("span",{className:"val",children:a?a.status==="complete"?s.jsx("span",{className:"ok",children:"Complete"}):t:"—"}),s.jsx("span",{className:"note",children:a?r:"no rollout"})]}),s.jsxs("div",{className:"vital",children:[s.jsx("span",{className:"lbl",children:"Adoption"}),s.jsx("span",{className:"val",children:e.adoptionPct!=null?`${e.adoptionPct}%`:"—"}),s.jsx("span",{className:"note",children:"drivers submitting"})]}),s.jsxs("div",{className:"vital",children:[s.jsx("span",{className:"lbl",children:"Open asks"}),s.jsx("span",{className:"val",children:e.openAsks}),s.jsx("span",{className:"note",children:"on the feedback board"})]}),s.jsxs("div",{className:"vital",children:[s.jsx("span",{className:"lbl",children:"Blockers"}),s.jsx("span",{className:"val",children:e.blockers>0?s.jsx("span",{className:"hot",children:e.blockers}):0}),s.jsx("span",{className:"note",children:e.blockers>0?"clearing in progress":"none open"})]})]})]},e.account.id)}export{$ as LifecycleSurface};

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.