PageSourceSearch

https://valuethropy.ai/assets/ExpertsPreviewPage-DYWCj05f.js

js valuethropy.ai collected 2026-10-05 15:01:57 UTC 16,823 bytes, 1 lines download raw bytes

1import{j as e,a as U,r as d}from"./vendor-query-CVWBAYQN.js";import{P as K}from"./PageShell-DDy5DWJ7.js";import{A as V,a as J,b as W}from"./alert-CvCQHsjB.js";import{B as N}from"./badge-CtvL8b_T.js";import{C as j,b as D,d as I,e as Q,f as S,c as L,h as X,s as Y,a1 as Z,B as C}from"./index-DJLejKcN.js";import{G as ee}from"./GoldButton-BIVXRXfD.js";import{u as ae,E as se}from"./ExpertRequestDialog-kxWMhL9E.js";import{I as te,Y as ie,bN as re,aj as ne,bO as oe,bP as le}from"./vendor-icons-BJ-Rh-HN.js";import{a as de}from"./useExpertEngagements-9--t61tM.js";import{g as ce}from"./stakeholderTypes-BI_BrWzy.js";import"./ErrorState-De3uL_pY.js";import"./HeroBackdrop-CytUHOCH.js";import"./DrawerHero-CNs4a2F0.js";import"./HelpButton-C88-Kq3v.js";import"./HelpOverlayContext-vHZe9ebM.js";import"./vendor-supabase-DhFQUKws.js";import"./vendor-motion-8aOieDHp.js";import"./textarea-Tq7jsQdy.js";import"./select-BvxMsBnz.js";import"./index-BdQq_4o_.js";import"./index-DuqMQ53p.js";function me(a){try{return new Date(a).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}catch{return a}}function ue({requests:a,className:i}){return e.jsxs(j,{className:L("border-navy/15",i),children:[e.jsxs(D,{className:"pb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(te,{className:"h-4 w-4 text-oposgold"}),e.jsx(I,{className:"text-base",children:"My requests"})]}),e.jsx(Q,{children:"We reach out within 2 business days during beta. Requests are stored on this device for your reference."})]}),e.jsx(S,{className:"space-y-3",children:a.length===0?e.jsxs("p",{className:"text-sm text-muted-foreground",children:["No requests yet. Use ",e.jsx("span",{className:"font-medium text-foreground",children:"Request introduction"})," on a profile to add one."]}):e.jsx("ul",{className:"max-h-[min(420px,50vh)] space-y-3 overflow-y-auto pr-1",children:a.map(t=>e.jsxs("li",{className:"rounded-lg border bg-muted/20 p-3 text-sm dark:bg-muted/10",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsx("span",{className:"font-medium leading-tight",children:t.topic}),e.jsx(N,{variant:"outline",className:"shrink-0 border-navy/30 text-step-caption text-navy dark:text-amber-100",children:t.status})]}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:me(t.createdAt)}),t.campaignName?e.jsxs("p",{className:"mt-1 text-xs text-muted-foreground",children:["Campaign: ",e.jsx("span",{className:"text-foreground",children:t.campaignName})]}):null,t.expertName?e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Sample expert: ",e.jsx("span",{className:"text-foreground",children:t.expertName})]}):null]},t.id))})})]})}function pe(a){const i=typeof a.hourly_rate_usd=="number"?a.hourly_rate_usd:Number(a.hourly_rate_usd);return{id:a.id,name:a.name,title:a.title,industries:a.industries??[],geographies:a.geographies??[],topics:a.topics??[],bio:a.bio,rate_band:`~$${Math.round(i)}/hr`,availability:a.availability||"-",initials:ce(a.name),hourly_rate_usd:i,status:a.status??"active"}}function he(a=!1,i){const{user:t}=X();return U({queryKey:["platform-experts",a],queryFn:async()=>{let n=Y.from("platform_experts").select("*").order("name",{ascending:!0});a||(n=n.eq("status","active"));const{data:h,error:u}=await n;if(u)throw u;return(h??[]).map(pe)},enabled:!!t&&!0})}const ge="Illustrative sample profiles only - this dummy directory will be replaced before launch. Live expert marketplace: coming soon.",w=[{id:"se-saas-1",name:"Jordan Ellis",title:"Former CRO · B2B SaaS",industries:["SaaS"],geographies:["North America"],topics:["GTM","Pricing","Board pack"],bio:"Scaled two PE-backed SaaS platforms through $20M to $80M ARR with repeatable expansion motions. Helps teams pressure-test pipeline, packaging, and board-ready growth narratives.",rate_band:"$500–900/hr",availability:"~2 weeks",initials:"JE"},{id:"se-saas-2",name:"Priya Nandakumar",title:"Product & RevOps Advisor",industries:["SaaS"],geographies:["Europe","UK"],topics:["Product","Unit economics","Retention"],bio:"Former VP Product at a vertical SaaS unicorn; specializes in cohort quality, NRR levers, and roadmap trade-offs under PE timelines. Delivers crisp, audit-friendly insight memos.",rate_band:"$550–950/hr",availability:"~10 days",initials:"PN"},{id:"se-saas-3",name:"Marcus Webb",title:"Technology DD & Security",industries:["SaaS"],geographies:["North America"],topics:["Tech diligence","Security","Integrations"],bio:"Former CTO of a mid-market workflow SaaS sold to a strategics buyer. Reviews architecture risk, integration backlog, and cloud spend with buyer-grade rigor.",rate_band:"$600–1,000/hr",availability:"~3 weeks",initials:"MW"},{id:"se-hc-1",name:"Dr. Elena Vasquez",title:"Healthcare Services · Operations",industries:["Healthcare"],geographies:["North America"],topics:["Clinical ops","Margin","Compliance"],bio:"Led turnaround of multi-site specialty practices for sponsor-backed platforms. Focuses on capacity, payer mix, and quality metrics that survive diligence.",rate_band:"$550–900/hr",availability:"~2 weeks",initials:"EV"},{id:"se-hc-2",name:"James Okonkwo",title:"MedTech Commercialization",industries:["Healthcare"],geographies:["Europe","Africa"],topics:["Regulatory","GTM","Partnerships"],bio:"Former commercial lead for Class II devices in EU and emerging markets. Helps portcos align regulatory path, channel strategy, and revenue milestones.",rate_band:"$500–850/hr",availability:"~2 weeks",initials:"JO"},{id:"se-hc-3",name:"Rachel Kim",title:"Payer & Revenue Cycle",industries:["Healthcare"],geographies:["North America"],topics:["RCM","Payer contracts","KPIs"],bio:"Former RCM leader for PE-backed physician groups. Stress-tests AR days, denial patterns, and contract economics for value-creation plans.",rate_band:"$480–820/hr",availability:"~1 week",initials:"RK"},{id:"se-ind-1",name:"Henrik Lindström",title:"Industrial Manufacturing · Ops",industries:["Industrial"],geographies:["Europe","Nordics"],topics:["Lean","Supply chain","Safety"],bio:"Former plant COO across automotive and industrial 
1components. Maps bottlenecks, working capital, and capex sequencing for 100-day plans.",rate_band:"$520–880/hr",availability:"~3 weeks",initials:"HL"},{id:"se-ind-2",name:"Anita Desai",title:"Industrials · Procurement & Cost",industries:["Industrial"],geographies:["North America","India"],topics:["Procurement","Cost-out","ESG"],bio:"Led procurement transformations for sponsor-owned manufacturers. Quantifies quick wins vs. structural savings with board-ready tracking.",rate_band:"$500–860/hr",availability:"~2 weeks",initials:"AD"},{id:"se-ind-3",name:"Tom Brennan",title:"Field Services & Asset Uptime",industries:["Industrial"],geographies:["North America"],topics:["Field ops","Warranty","Spare parts"],bio:"Former SVP Services for industrial equipment OEMs. Aligns technician productivity, SLA design, and aftermarket revenue with PE exit narratives.",rate_band:"$480–800/hr",availability:"~2 weeks",initials:"TB"},{id:"se-cons-1",name:"Sofia Martins",title:"Consumer Brands · Retail",industries:["Consumer"],geographies:["Latin America","North America"],topics:["Brand","Retail","DTC"],bio:"Former CMO for omnichannel consumer brands. Sharp on positioning, promo efficiency, and retail execution under margin pressure.",rate_band:"$500–900/hr",availability:"~2 weeks",initials:"SM"},{id:"se-cons-2",name:"David Chen",title:"CPG · Supply & Sourcing",industries:["Consumer"],geographies:["Asia Pacific","North America"],topics:["Sourcing","COGS","Inventory"],bio:"Former supply chain head for global CPG. Models ingredient risk, co-man relationships, and inventory policy for sponsor-backed brands.",rate_band:"$520–920/hr",availability:"~10 days",initials:"DC"},{id:"se-cons-3",name:"Olivia Grant",title:"Hospitality & Leisure",industries:["Consumer"],geographies:["Europe","UK"],topics:["RevPAR","Labor","Expansion"],bio:"Former COO of a PE-owned hospitality group. Stress-tests unit economics, labor models, and site rollout cadence for board and lender audiences.",rate_band:"$480–840/hr",availability:"~3 weeks",initials:"OG"}];
1function p(a){return[...new Set(a)].sort((i,t)=>i.localeCompare(t))}p(w.flatMap(a=>a.industries));p(w.flatMap(a=>a.geographies));p(w.flatMap(a=>a.topics));function xe(a,i,t,r){const n=i.length?l=>l.industries.some(c=>i.includes(c)):()=>!0,h=t.length?l=>l.geographies.some(c=>t.includes(c)):()=>!0,u=r.length?l=>l.topics.some(c=>r.includes(c)):()=>!0;return a.filter(l=>n(l)&&h(l)&&u(l))}function _({label:a,active:i,onClick:t}){return e.jsx("button",{type:"button",onClick:t,className:L("rounded-full border px-3 py-1 text-xs font-medium transition-colors",i?"border-[var(--navy-deep)] surface-navy text-[var(--gold-dark)]":"border-border bg-background text-muted-foreground hover:bg-muted/60"),children:a})}function fe(a,i=700){return{id:a.id,name:a.name,title:a.title,industries:a.industries,geographies:a.geographies,topics:a.topics,bio:a.bio,rate_band:a.rate_band,availability:a.availability,initials:a.initials,hourly_rate_usd:i,status:"active"}}function be({expert:a,onRequest:i,fromDirectory:t}){return e.jsx(j,{className:"flex flex-col border-navy/12 shadow-sm transition-shadow hover:shadow-md",children:e.jsxs(S,{className:"flex flex-1 flex-col p-4",children:[e.jsxs("div",{className:"mb-3 flex items-start gap-3",children:[e.jsx("div",{className:"flex h-12 w-12 shrink-0 items-center justify-center rounded-full surface-navy text-sm font-bold text-[var(--gold-dark)]","aria-hidden":!0,children:a.initials}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"font-semibold leading-tight text-foreground",children:a.name}),e.jsx("p",{className:"text-xs text-muted-foreground",children:a.title})]})]}),e.jsxs("div",{className:"mb-2 flex flex-wrap gap-1",children:[a.industries.map(r=>e.jsx(N,{variant:"secondary",className:"text-step-caption font-normal",children:r},r)),a.geographies.slice(0,2).map(r=>e.jsx(N,{variant:"outline",className:"text-step-caption font-normal",children:r},r))]}),e.jsx("div",{className:"mb-2 flex flex-wrap gap-1",children:a.topics.slice(0,4).map(r=>e.jsx("span",{className:"rounded-md bg-muted/50 px-2 py-0.5 text-step-caption text-muted-foreground",children:r},r))}),e.jsx("p",{className:"mb-3 line-clamp-3 flex-1 text-xs leading-relaxed text-muted-foreground",children:a.bio}),e.jsxs("div",{className:"mt-auto space-y-2 border-t pt-3 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"flex justify-between gap-2",children:[e.jsx("span",{children:"Rate"}),e.jsx("span",{className:"font-medium text-foreground",children:a.rate_band})]}),e.jsxs("div",{className:"flex justify-between gap-2",children:[e.jsx("span",{children:"Availability"}),e.jsx("span",{className:"font-medium text-foreground",children:a.availability})]})]}),e.jsx("div",{className:"mt-3 flex justify-end",children:e.jsx(ee,{type:"button",onClick:()=>i(a),children:t?"Request introduction":"Register interest"})})]})})}function $e(){const{campaignId:a,campaigns:i}=Z(),{requests:t,refresh:r}=ae(),{data:n,isLoading:h,isError:u,refetch:l}=he(!1),{data:c=[]}=de(a||void 0),m=d.useMemo(()=>n&&n.length>0?n:w.map(s=>fe(s,700)),[n]),F=d.useMemo(()=>p(m.flatMap(s=>s.industries)),[m]),$=d.useMemo(()=>p(m.flatMap(s=>s.geographies)),[m]),B=d.useMemo(()=>p(m.flatMap(s=>s.topics)),[m]),[x,P]=d.useState(new Set),[f,R]=d.useState(new Set),[b,M]=d.useState(new Set),[z,E]=d.useState(!1),[o,G]=d.useState(null),A=d.useMemo(()=>i.filter(s=>s.status!=="archived").map(s=>({id:s.id,name:s.company_name??s.id.slice(0,8)})),[i]),O=d.useMemo(()=>xe(m,[...x],[...f],[...b]),[m,x,f,b]),k=(s,g)=>{s(H=>{const v=new Set(H);return v.has(g)?v.delete(g):v.add(g),v})},q=()=>{P(new Set),R(new Set),M(new Set)},T=s=>{G(s),E(!0)},y=!!(n&&n.length>0);return e.jsxs(e.Fragment,{children:[e.jsxs(K,{icon:ie,accent:"gold",heroGradient:!0,title:"Expert Directory",subtitle:"Browse profiles by industry, geography, and topic - then request an introduction for fee-based validation of your materials.",badge:e.jsx(N,{variant:"outline",className:"border-navy/30 text-xs text-navy dark:text-amber-100",children:y?"Directory":"Sample data"}),error:u?!0:void 0,onRetry:()=>void l(),errorNoun:"the expert directory",children:[e.jsxs(V,{className:"border-oposgold/40 bg-accent",children:[e.jsx(J,{className:"text-sm font-semibold text-foreground",children:y?"Platform directory":"Sample directory"}),e.jsx(W,{className:"text-sm text-muted-foreground",children:y?"Admin-curated expert profiles stored in your workspace. Engagements and fee estimates sync to your active campaign when you submit on Premium tier.":ge})]}),e.jsxs("div",{className:"grid gap-8 lg:grid-cols-[1fr_320px]",children:[e.jsxs("div",{className:"min-w-0 space-y-6",children:[e.jsxs("section",{className:"space-y-3",children:[e.jsxs("h2",{className:"flex items-center gap-2 text-sm font-semibold text-foreground",children:[e.jsx(re,{className:"size-4 shrink-0 text-muted-foreground","aria-hidden":!0}),"Filters"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Multi-select within each row; experts must match all active filter groups (OR within a group)."}),h?e.jsx("p",{className:"text-xs text-muted-foreground",children:"Loading directory…"}):null,e.jsxs("div",{className:"space-y-2",children:[e.jsxs("p",{className:"flex items-center gap-1.5 text-step-caption font-medium uppercase tracking-wide text-muted-foreground",children:[e.jsx(ne,{className:"size-3.5 shrink-0 opacity-70","aria-hidden":!0}),"Industry"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:F.map(s=>e.jsx(_,{label:s,active:x.has(s),onClick:()=>k(P,s)},s))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("p",{className:"flex items-center gap-1.5 text-step-caption font-medium uppercase tracking-wide text-muted-foreground",children:[e.jsx(oe,{className:"size-3.5 shrink-0 opacity-70","aria-hidden":!0}),"Geography"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:$.map(s=>e.jsx(_,{label:s,active:f.has(s),onClick:()=>k(R,s)},s))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("p",{className:"flex items-center gap-1.5 text-step-caption font-medium uppercase tracking-wide text-muted-foreground",children:[e.jsx(le,{className:"size-3.5 shrink-0 opacity-70","aria-hidden":!0}),"Topic"]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:B.map(s=>e.jsx(_,{label:s,active:b.has(s),onClick:()=>k(M,s)},s))})]}),(x.size>0||f.size>0||b.size>0)&&e.jsx(C,{type:"button",variant:"ghost",size:"sm",className:"h-8 px-2",onClick:q,children:"Clear filters"})]}),O.length===0?e.jsxs("div",{className:"rounded-xl border border-dashed bg-muted/20 px-6 py-12 text-center",children:[e.jsx("p",{className:"font-medium text-foreground",children:"No experts match these filters"}),e.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"Try clearing a filter or adjusting your selection."}),e.jsx(C,{type:"button",variant:"outline",className:"mt-4",onClick:q,children:"Reset filters"})]}):e.jsx("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:O.map(s=>e.jsx(be,{expert:s,onRequest:g=>T(g),fromDirectory:y},s.id))}),e.jsx(j,{className:"border-navy/15 bg-muted/10",children:e.jsxs(S,{className:"p-4 sm:p-5",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Payments"}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Engagements record fee estimates in-app; payment processing connects when billing integration ships."})]})})]}),e.jsxs("aside",{className:"min-w-0 space-y-4 lg:sticky lg:top-24 lg:self-start",children:[a&&
1c.length>0?e.jsxs(j,{className:"border-navy/15",children:[e.jsx(D,{className:"pb-2",children:e.jsx(I,{className:"text-sm",children:"Active campaign engagements"})}),e.jsx(S,{className:"space-y-2 text-xs",children:c.slice(0,5).map(s=>e.jsxs("div",{className:"rounded-md border border-border px-2 py-1.5",children:[e.jsx("span",{className:"font-medium capitalize",children:s.status}),s.fee_estimate_usd!=null?e.jsxs("span",{className:"text-muted-foreground",children:[" ","· est. $",Number(s.fee_estimate_usd).toLocaleString()]}):null,s.scope_summary?e.jsx("p",{className:"mt-0.5 line-clamp-2 text-muted-foreground",children:s.scope_summary}):null]},s.id))})]}):null,e.jsx(ue,{requests:t}),e.jsx(C,{type:"button",variant:"outline",className:"w-full border-navy/25",onClick:()=>T(null),disabled:A.length===0,children:"New request (no specific profile)"})]})]})]}),e.jsx(se,{open:z,onOpenChange:E,campaigns:A,defaultCampaignId:a||null,expertId:(o==null?void 0:o.id)??null,expertName:(o==null?void 0:o.name)??null,defaultTopic:o==null?void 0:o.topics[0],expertHourlyRateUsd:(o==null?void 0:o.hourly_rate_usd)??null,onSubmitted:()=>r()})]})}export{$e 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.