PageSourceSearch

https://visipage.ai/_assets/admin.growth-DfiIFs5P.js

js visipage.ai collected 2026-10-05 13:15:11 UTC 25,236 bytes, 1 lines download raw bytes

1import{S as y,o as q,s as $,aK as X,m as ee,r as f,j as e,aU as se,Z as O,ag as H,bI as ae,d as te,W as ne,w as M,aG as W,U as ie,aD as B,k as re,e as le,ba as ce,a9 as oe,bs as de,bJ as me,aB as he,aa as ue}from"./vendor-BNYS6O0P.js";import{a as pe,b as xe,G as _e,c as je,d as ge}from"./growthQueries-DmNwldmj.js";import{u as fe}from"./useEmailLogsQuery-DtNzJJuB.js";import{T as ve,a as Ne,b as L,c as R}from"./Tabs-PYoc5Jta.js";import{I as z}from"./Input-DeO5_FHm.js";import{S as U,a as K,b as Q,c as Y,d as J,e as Z}from"./Select-RxvDqAVw.js";import{B as k,S as w,l as V,m as G,n as D,a as E,u as be}from"./index-Cz5nqbOF.js";import{P as Ce}from"./Progress-BG3n-GMw.js";import{P as we,a as Se,b as T,c as ye,f as Ee,d as Ie,e as ke}from"./Pagination-Bv8P1tyz.js";import"./claim_POST.schema-HW_LIsci.js";import{A as F}from"./Alert-DJwJMaUi.js";import"./schema-DnF2nRfe.js";const qe=q({prospectId:$().uuid()}),Le=async(n,c)=>{const l=qe.parse(n),r=await fetch("/_api/admin/growth/enrich-email",{method:"POST",body:y.stringify(l),...c,headers:{"Content-Type":"application/json"}});if(!r.ok){const d=y.parse(await r.text());throw new Error(d.error)}return y.parse(await r.text())},Re=q({prospectId:$().uuid("Invalid prospect ID"),sendEmails:X().optional().default(!1)}),Te=async(n,c)=>{const l=Re.parse(n),r=await fetch("/_api/admin/growth/process-prospect",{method:"POST",body:y.stringify(l),...c,headers:{"Content-Type":"application/json"}});if(!r.ok){const d=y.parse(await r.text());throw new Error(d.error)}return y.parse(await r.text())},Pe=()=>ee({mutationFn:n=>Te(n)}),Ae="_container_89fqn_1",Ve="_header_89fqn_11",Ge="_title_89fqn_17",De="_subtitle_89fqn_25",Be="_tabIcon_89fqn_31",ze="_tabContentContainer_89fqn_35",Fe="_form_89fqn_41",$e="_formRow_89fqn_48",Oe="_formGroup_89fqn_54",He="_label_89fqn_60",Me="_checkboxGroup_89fqn_66",We="_checkbox_89fqn_66",Ue="_checkboxLabel_89fqn_84",Ke="_checkboxHint_89fqn_94",Qe="_campaignsList_89fqn_101",Ye="_campaignCard_89fqn_107",Je="_campaignHeader_89fqn_114",Ze="_campaignInfo_89fqn_127",Xe="_chevron_89fqn_133",es="_campaignName_89fqn_138",ss="_campaignVertical_89fqn_145",as="_campaignStats_89fqn_150",ts="_statGroup_89fqn_156",ns="_statValue_89fqn_162",is="_statLabel_89fqn_168",rs="_actionButtons_89fqn_175",ls="_progressContainer_89fqn_181",cs="_progressText_89fqn_188",os="_progressBar_89fqn_196",ds="_prospectsList_89fqn_200",ms="_table_89fqn_206",hs="_prospectName_89fqn_230",us="_campaignNameRow_89fqn_234",ps="_missingEmailBadge_89fqn_241",xs="_emailValue_89fqn_255",_s="_emailInput_89fqn_269",js="_emailMissing_89fqn_282",gs="_noEmailWarning_89fqn_287",fs="_warningIcon_89fqn_294",vs="_noEmailText_89fqn_299",Ns="_emptyProspects_89fqn_311",bs="_dripEngine_89fqn_320",Cs="_dripInfo_89fqn_327",ws="_dripActions_89fqn_340",Ss="_dripResult_89fqn_346",ys="_filterRow_89fqn_350",Es="_filterSelect_89fqn_356",Is="_emailLogsTab_89fqn_360",ks="_tableContainer_89fqn_366",qs="_recipientName_89fqn_376",Ls="_recipientEmail_89fqn_382",Rs="_failedBadge_89fqn_388",Ts="_profileLink_89fqn_393",Ps="_pagination_89fqn_403",As="_loadingState_89fqn_408",Vs="_errorState_89fqn_414",Gs="_emptyState_89fqn_414",s={container:Ae,header:Ve,title:Ge,subtitle:De,tabIcon:Be,tabContentContainer:ze,form:Fe,formRow:$e,formGroup:Oe,label:He,checkboxGroup:Me,checkbox:We,checkboxLabel:Ue,checkboxHint:Ke,campaignsList:Qe,campaignCard:Ye,campaignHeader:Je,campaignInfo:Ze,chevron:Xe,campaignName:es,campaignVertical:ss,campaignStats:as,statGroup:ts,statValue:ns,statLabel:is,actionButtons:rs,progressContainer:ls,progressText:cs,progressBar:os,prospectsList:ds,table:ms,prospectName:hs,campaignNameRow:us,missingEmailBadge:ps,emailValue:xs,emailInput:_s,emailMissing:js,noEmailWarning:gs,warningIcon:fs,noEmailText:vs,emptyProspects:Ns,dripEngine:bs,dripInfo:Cs,dripActions:ws,dripResult:Ss,filterRow:ys,filterSelect:Es,emailLogsTab:Is,tableContainer:ks,recipientName:qs,recipientEmail:Ls,failedBadge:Rs,profileLink:Ts,pagination:Ps,loadingState:As,errorState:Vs,emptyState:Gs}
1,Ds=[{value:"startup_founders",label:"Startup Founders"},{value:"authors_thought_leaders",label:"Authors & Thought Leaders"},{value:"consultants_advisors",label:"Consultants & Advisors"},{value:"investors_vcs",label:"Investors & VCs"},{value:"academics_researchers",label:"Academics & Researchers"},{value:"speakers_coaches",label:"Speakers & Coaches"},{value:"agency_founders",label:"Agency Founders"},{value:"lawyers_doctors",label:"Lawyers & Doctors"},{value:"real_estate_leaders",label:"Real Estate Leaders"},{value:"tech_leaders",label:"Tech Leaders"},{value:"nonprofit_leaders",label:"Nonprofit Leaders"},{value:"company_executives",label:"Company Executives"},{value:"hr_chros",label:"HR & CHROs"}],Bs=({className:n})=>{const[c,l]=f.useState("launch"),[r,d]=f.useState(null);return e.jsxs("div",{className:`${s.container} ${n||""}`,children:[e.jsxs("div",{className:s.header,children:[e.jsx("h2",{className:s.title,children:"Growth Pipeline"}),e.jsx("p",{className:s.subtitle,children:"Autonomous outreach and campaign management"})]}),e.jsxs(ve,{value:c,onValueChange:l,children:[e.jsxs(Ne,{children:[e.jsxs(L,{value:"launch",children:[e.jsx(se,{size:16,className:s.tabIcon}),"Launch Campaign"]}),e.jsxs(L,{value:"campaigns",children:[e.jsx(O,{size:16,className:s.tabIcon}),"Campaigns"]}),e.jsxs(L,{value:"drip",children:[e.jsx(H,{size:16,className:s.tabIcon}),"Drip Engine"]}),e.jsxs(L,{value:"emaillogs",children:[e.jsx(ae,{size:16,className:s.tabIcon}),"Email Log"]})]}),e.jsxs("div",{className:s.tabContentContainer,children:[e.jsx(R,{value:"launch",children:e.jsx($s,{onLaunchSuccess:(m,o)=>{d({campaignId:m,sendEmails:o}),l("campaigns")}})}),e.jsx(R,{value:"campaigns",children:e.jsx(Hs,{autoProcessParams:r,onAutoProcessStart:()=>d(null)})}),e.jsx(R,{value:"drip",children:e.jsx(Ms,{})}),e.jsx(R,{value:"emaillogs",children:e.jsx(Fs,{})})]})]})]})},zs=[{value:"all",label:"All Types"},{value:"outreach",label:"Outreach"},{value:"drip_1",label:"Drip 1"},{value:"drip_2",label:"Drip 2"},{value:"drip_3",label:"Drip 3"},{value:"referral",label:"Referral"},{value:"build_for_colleague",label:"Build For Colleague"}],Fs=()=>{const[n,c]=f.useState(1),[l,r]=f.useState("all"),d=20,{data:m,isFetching:o,isError:_,error:N}=fe({page:n,limit:d,emailType:l==="all"?void 0:l}),p=m?Math.ceil(m.total/d):0,x=(i,h)=>{const g=[];if(h<=7)for(let t=1;t<=h;t++)g.push(t);else{g.push(1),i>3&&g.push("ellipsis-1");const t=Math.max(2,i-1),b=Math.min(h-1,i+1);for(let j=t;j<=b;j++)g.push(j);i<h-2&&g.push("ellipsis-2"),b<h&&g.push(h)}return g};return e.jsxs("div",{className:s.emailLogsTab,children:[e.jsx("div",{className:s.filterRow,children:e.jsxs(U,{value:l,onValueChange:i=>{r(i),c(1)},disabled:o,children:[e.jsx(K,{className:s.filterSelect,children:e.jsx(Q,{placeholder:"Filter by type"})}),e.jsx(Y,{children:e.jsx(J,{children:zs.map(i=>e.jsx(Z,{value:i.value,children:i.label},i.value))})})]})}),_&&e.jsxs("div",{className:s.errorState,children:["Error loading email logs: ",N instanceof Error?N.message:"Unknown error"]}),o&&!m?e.jsxs("div",{className:s.loadingState,children:[e.jsx(w,{style:{height:"3rem"}}),e.jsx(w,{style:{height:"3rem"}}),e.jsx(w,{style:{height:"3rem"}})]}):m?.logs.length===0?e.jsx("div",{className:s.emptyState,children:"No emails sent yet."}):m?e.jsxs("div",{className:s.tableContainer,children:[e.jsxs("table",{className:s.table,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Sent At"}),e.jsx("th",{children:"Recipient"}),e.jsx("th",{children:"Subject"}),e.jsx("th",{children:"Type"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Profile"})]})}),e.jsx("tbody",{children:m.logs.map(i=>e.jsxs("tr",{children:[e.jsx("td",{children:i.sentAt?new Date(i.sentAt).toLocaleString():"N/A"}),e.jsxs("td",{children:[e.jsx("div",{className:s.recipientName,children:i.recipientName||"Unknown"}),e.jsx("div",{className:s.recipientEmail,children:i.recipientEmail})]}),e.jsx("td",{children:i.subject}),e.jsx("td",{children:e.jsx(E,{variant:"outline",children:i.emailType})}),e.jsx("td",{children:i.status==="sent"?e.jsx(E,{variant:"success",children:"Sent"}):e.jsxs(V,{children:[e.jsx(G,{asChild:!0,children:e.jsx("span",{className:s.failedBadge,children:e.jsx(E,{variant:"destructive",children:"Failed"})})}),e.jsx(D,{children:e.jsx("p",{children:i.errorMessage||"Unknown error"})})]})}),e.jsx("td",{children:i.profileSlug?e.jsx(ie,{to:`/${i.profileSlug}`,target:"_blank",className:s.profileLink,children:"View"}):"—"})]},i.id))})]}),p>1&&e.jsx(we,{className:s.pagination,children:e.jsxs(Se,{children:[e.jsx(T,{children:e.jsx(ye,{href:"#",onClick:i=>{i.preventDefault(),n>1&&c(n-1)},style:{opacity:n===1?.5:1,pointerEvents:n===1?"none":"auto"}})}),x(n,p).map((i,h)=>typeof i=="string"?e.jsx(T,{children:e.jsx(Ee,{})},i):e.jsx(T,{children:e.jsx(Ie,{href:"#",isActive:n===i,onClick:g=>{g.preventDefault(),c(i)},children:i})},i)),e.jsx(T,{children:e.jsx(ke,{href:"#",onClick:i=>{i.preventDefault(),n<p&&c(n+1)}
1,style:{opacity:n===p?.5:1,pointerEvents:n===p?"none":"auto"}})})]})})]}):null]})},$s=({onLaunchSuccess:n})=>{const[c,l]=f.useState(""),[r,d]=f.useState(""),[m,o]=f.useState(10),[_,N]=f.useState(!1),{mutate:p,isPending:x}=pe(),i=h=>{h.preventDefault(),!(!c||!r||m<1)&&p({campaignName:c,vertical:r,count:m},{onSuccess:g=>{l(""),d(""),o(10),n(g.campaignId,_)}})};return e.jsxs("form",{className:s.form,onSubmit:i,children:[e.jsxs("div",{className:s.formGroup,children:[e.jsx("label",{className:s.label,htmlFor:"campaignName",children:"Campaign Name"}),e.jsx(z,{id:"campaignName",placeholder:"e.g. Q3 SaaS Leaders Outreach",value:c,onChange:h=>l(h.target.value),required:!0,disabled:x})]}),e.jsxs("div",{className:s.formRow,children:[e.jsxs("div",{className:s.formGroup,children:[e.jsx("label",{className:s.label,children:"Target Vertical"}),e.jsxs(U,{value:r,onValueChange:d,disabled:x,required:!0,children:[e.jsx(K,{children:e.jsx(Q,{placeholder:"Select vertical..."})}),e.jsx(Y,{children:e.jsx(J,{children:Ds.map(h=>e.jsx(Z,{value:h.value,children:h.label},h.value))})})]})]}),e.jsxs("div",{className:s.formGroup,children:[e.jsx("label",{className:s.label,htmlFor:"count",children:"Prospect Count (Max 50)"}),e.jsx(z,{id:"count",type:"number",min:1,max:50,value:m,onChange:h=>o(parseInt(h.target.value)||0),required:!0,disabled:x})]})]}),e.jsxs("div",{className:s.checkboxGroup,children:[e.jsx("input",{id:"sendEmails",type:"checkbox",className:s.checkbox,checked:_,onChange:h=>N(h.target.checked),disabled:x}),e.jsxs("label",{className:s.checkboxLabel,htmlFor:"sendEmails",children:["Send automated outreach emails",e.jsx("span",{className:s.checkboxHint,children:"If enabled, verified profiles will enter the drip sequence immediately."})]})]}),e.jsx(k,{type:"submit",disabled:x||!c||!r,children:x?"Launching...":"🚀 Launch Discovery"})]})},Os=({prospect:n})=>{const{mutate:c,isPending:l}=ge(),[r,d]=f.useState(n.email??""),[m,o]=f.useState(!1),_=()=>{const p=r.trim();if(!p||p===(n.email??"")){o(!1),d(n.email??"");return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(p)){o(!1),d(n.email??"");return}c({prospectId:n.id,email:p},{onSettled:()=>{o(!1)}})},N=p=>{p.key==="Enter"?_():p.key==="Escape"&&(o(!1),d(n.email??""))};
1return m?e.jsx("input",{autoFocus:!0,type:"email",className:s.emailInput,value:r,onChange:p=>d(p.target.value),onBlur:_,onKeyDown:N,disabled:l,placeholder:"[email protected]"}):n.email?e.jsx("span",{className:s.emailValue,onClick:()=>o(!0),title:"Click to edit",children:n.email}):e.jsx("div",{className:s.emailMissing,children:e.jsxs(V,{children:[e.jsx(G,{asChild:!0,children:e.jsxs("span",{className:s.noEmailWarning,children:[e.jsx(W,{size:14,className:s.warningIcon}),e.jsx("span",{className:s.noEmailText,onClick:()=>o(!0),children:"No email — click to add"})]})}),e.jsx(D,{children:e.jsx("p",{children:"Email not found. Outreach emails cannot be sent without one."})})]})})},Hs=({autoProcessParams:n,onAutoProcessStart:c})=>{const{data:l,isPending:r,isError:d,error:m}=xe(),{mutateAsync:o}=Pe(),_=te(),[N,p]=f.useState(null),[x,i]=f.useState(null),h=f.useRef(!1),g=f.useCallback(async(t,b,j,I)=>{if(j.length!==0){if(I.includes("enrich")){i({campaignId:t,phase:"enriching",current:0,total:j.length,currentName:j[0].name});for(let C=0;C<j.length;C++){const v=j[C];i(u=>u?{...u,current:C,currentName:v.name}:null);try{await Le({prospectId:v.id})}catch(u){console.error("Failed to enrich email",u)}}}if(I.includes("process")){i({campaignId:t,phase:"processing",current:0,total:j.length,currentName:j[0].name});for(let C=0;C<j.length;C++){const v=j[C];i(u=>u?{...u,current:C,currentName:v.name}:null);try{await o({prospectId:v.id,sendEmails:b})}catch(u){console.error("Failed to process prospect",u)}}}
1i(null),h.current=!1,_.invalidateQueries({queryKey:_e})}},[o,_]);return f.useEffect(()=>{if(n&&l){const t=l.recentProspects.filter(b=>b.campaignId===n.campaignId&&b.status==="discovered");t.length>0&&!h.current&&(h.current=!0,c(),g(n.campaignId,n.sendEmails,t,["enrich","process"]))}},[n,l,c,g]),r?e.jsxs("div",{className:s.loadingState,children:[e.jsx(w,{style:{height:"3rem"}}),e.jsx(w,{style:{height:"3rem"}}),e.jsx(w,{style:{height:"3rem"}})]}):d?e.jsxs("div",{className:s.errorState,children:["Error loading campaigns:"," ",m instanceof Error?m.message:"Unknown error"]}):l?.campaigns?.length?e.jsx("div",{className:s.campaignsList,children:l.campaigns.map(t=>{const b=N===t.id,j=l.recentProspects.filter(u=>u.campaignId===t.id),I=t.status==="discovered",C=x?.campaignId===t.id,v=j.filter(u=>!u.email).length;return e.jsxs("div",{className:s.campaignCard,children:[e.jsxs("div",{className:s.campaignHeader,onClick:()=>p(b?null:t.id),children:[e.jsxs("div",{className:s.campaignInfo,children:[b?e.jsx(ne,{size:18,className:s.chevron}):e.jsx(M,{size:18,className:s.chevron}),e.jsxs("div",{children:[e.jsxs("div",{className:s.campaignNameRow,children:[e.jsx("h4",{className:s.campaignName,children:t.name}),v>0&&e.jsxs(V,{children:[e.jsx(G,{asChild:!0,children:e.jsxs("span",{className:s.missingEmailBadge,children:[e.jsx(W,{size:13}),v," missing email",v>1?"s":""]})}),e.jsx(D,{children:e.jsxs("p",{children:[v," prospect",v>1?"s":""," without an email address. Outreach cannot be sent to them."]})})]})]}),e.jsx("span",{className:s.campaignVertical,children:t.vertical})]})]}),e.jsx("div",{className:s.campaignStats,children:C?e.jsxs("div",{className:s.progressContainer,children:[e.jsxs("div",{className:s.progressText,children:[x.phase==="enriching"?"Enriching email":"Processing"," ",x.current+1," of"," ",x.total,": ",x.currentName]}),e.jsx(Ce,{value:x.current/x.total*100,className:s.progressBar})]}):e.jsxs(e.Fragment,{children:[e.jsx(E,{variant:I?"default":t.status==="completed"?"success":t.status==="running"?"secondary":"outline",children:I?"discovered":t.status}),e.jsxs("div",{className:s.statGroup,children:[e.jsxs("span",{className:s.statValue,children:[t.processedCount," / ",t.totalProspects]}),e.jsx("span",{className:s.statLabel,children:"Processed"})]}),e.jsxs("div",{className:s.statGroup,children:[e.jsx("span",{className:s.statValue,children:t.emailsSent}),e.jsx("span",{className:s.statLabel,children:"Emails"})]}),e.jsxs("div",{className:s.statGroup,children:[e.jsx("span",{className:s.statValue,children:t.conversions}),e.jsx("span",{className:s.statLabel,children:"Converted"})]}),e.jsxs("div",{className:s.actionButtons,children:[v>0&&!x&&e.jsx(k,{variant:"secondary",size:"sm",onClick:u=>{u.stopPropagation();const P=j.filter(A=>!A.email);g(t.id,!1,P,["enrich"])},children:"Enrich Emails"}),I&&!x&&e.jsx(k,{size:"sm",onClick:u=>{u.stopPropagation();const P=j.filter(A=>A.status==="discovered");g(t.id,!0,P,["enrich","process"])},children:"Process & Email"})]})]})})]}),b&&e.jsx("div",{className:s.prospectsList,children:j.length>0?e.jsxs("table",{className:s.table,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Name"}),e.jsx("th",{children:"Company"}),e.jsx("th",{children:"Email"}),e.jsx("th",{children:"Status"})]})}),e.jsx("tbody",{children:j.map(u=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("div",{className:s.prospectName,children:u.name})}),e.jsx("td",{children:u.company||"—"}),e.jsx("td",{children:e.jsx(Os,{prospect:u})}),e.jsx("td",{children:e.jsx(E,{variant:"outline",children:u.status})})]},u.id))})]}):e.jsx("p",{className:s.emptyProspects,children:"No prospects tracked yet."})})]},t.id)})}):e.jsx("div",{className:s.emptyState,children:"No campaigns found."})},Ms=()=>{const{mutate:n,isPending:c}=je(),[l,r]=f.useState(null),d=()=>{n(void 0,{onSuccess:m=>{r(m.count)}})};return e.jsxs("div",{className:s.dripEngine,children:[e.jsxs("div",{className:s.dripInfo,children:[e.jsx("h3",{children:"Email Delivery System"}),e.jsx("p",{children:"The Drip Engine periodically checks for scheduled outreach sequences and dispatches pending emails. You can trigger a manual processing run here."})]}),e.jsx("div",{className:s.dripActions,children:e.jsxs(k,{onClick:d,disabled:c,size:"lg",children:[e.jsx(H,{size:18}),c?"Processing...":"Process Pending Emails"]}
1)}),l!==null&&!c&&e.jsx("div",{className:s.dripResult,children:e.jsxs(E,{variant:"success",children:["Successfully processed ",l," emails"]})})]})};q({});q({});q({});const Ws=q({status:re(["completed","pending","rewarded"]).optional().nullable(),limit:B.number().min(1).max(100).optional(),offset:B.number().min(0).optional()}),Us=async(n,c)=>{const l=Ws.parse(n),r=new URLSearchParams;l.status&&r.set("status",l.status),l.limit&&r.set("limit",l.limit.toString()),l.offset&&r.set("offset",l.offset.toString());const d=await fetch(`/_api/admin/referrals?${r.toString()}`,{method:"GET",...c,headers:{"Content-Type":"application/json"}});if(!d.ok){const m=y.parse(await d.text());throw new Error(m.error)}return y.parse(await d.text())},Ks=["admin","referrals"],Qs=n=>le({queryKey:[...Ks,n],queryFn:()=>Us(n),placeholderData:c=>c}),Ys="_container_vw21r_1",Js="_statsGrid_vw21r_9",Zs="_statCard_vw21r_15",Xs="_statIcon_vw21r_25",ea="_statContent_vw21r_55",sa="_statLabel_vw21r_61",aa="_statValue_vw21r_68",ta="_statSkeleton_vw21r_75",na="_tableSection_vw21r_81",ia="_toolbar_vw21r_90",ra="_title_vw21r_99",la="_filterWrapper_vw21r_106",ca="_filterIcon_vw21r_112",oa="_select_vw21r_119",da="_tableWrapper_vw21r_139",ma="_table_vw21r_81",ha="_userCell_vw21r_166",ua="_userName_vw21r_172",pa="_userEmail_vw21r_177",xa="_code_vw21r_182",_a="_dateCell_vw21r_191",ja="_alignRight_vw21r_197",ga="_reward_vw21r_201",fa="_noReward_vw21r_206",va="_loadingContainer_vw21r_211",Na="_rowSkeleton_vw21r_218",ba="_errorContainer_vw21r_223",Ca="_emptyState_vw21r_227",wa="_emptyIcon_vw21r_237",Sa="_emptyText_vw21r_247",ya="_pagination_vw21r_252",Ea="_pageInfo_vw21r_261",Ia="_paginationControls_vw21r_266",a={container:Ys,statsGrid:Js,statCard:Zs,statIcon:Xs,statContent:ea,statLabel:sa,statValue:aa,statSkeleton:ta,tableSection:na,toolbar:ia,title:ra,filterWrapper:la,filterIcon:ca,select:oa,tableWrapper:da,table:ma,userCell:ha,userName:ua,userEmail:pa,code:xa,dateCell:_a,alignRight:ja,reward:ga,noReward:fa,loadingContainer:va,rowSkeleton:Na,errorContainer:ba,emptyState:Ca,emptyIcon:wa,emptyText:Sa,pagination:ya,pageInfo:Ea,paginationControls:Ia},ka=()=>{const{authState:n}=be(),[c,l]=f.useState("all"),[r,d]=f.useState(0),m=10,{data:o,isLoading:_,error:N}=Qs({status:c==="all"?void 0:c,limit:m,offset:r*m});if(n.type!=="authenticated"||n.user.role!=="admin")return e.jsx(F,{variant:"error",title:"Access Denied",children:"You do not have permission to view this page."});const p=()=>{o&&(r+1)*m<o.total&&d(t=>t+1)},x=()=>{r>0&&d(t=>t-1)},i=t=>{l(t.target.value),d(0)},h=t=>new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}),g=t=>{switch(t){case"completed":return"success";case"rewarded":return"default";case"pending":return"warning";default:return"secondary"}};return e.jsxs("div",{className:a.container,children:[e.jsxs("div",{className:a.statsGrid,children:[e.jsxs("div",{className:a.statCard,children:[e.jsx("div",{className:a.statIcon,"data-color":"blue",children:e.jsx(O,{size:20})}),e.jsxs("div",{className:a.statContent,children:[e.jsx("span",{className:a.statLabel,children:"Total Referrals"}),_?e.jsx(w,{className:a.statSkeleton}):e.jsx("span",{className:a.statValue,children:o?.stats.totalReferrals??0})]})]}),e.jsxs("div",{className:a.statCard,children:[e.jsx("div",{className:a.statIcon,"data-color":"green",children:e.jsx(ce,{size:20})}),e.jsxs("div",{className:a.statContent,children:[e.jsx("span",{className:a.statLabel,children:"Completed"}),_?e.jsx(w,{className:a.statSkeleton}):e.jsx("span",{className:a.statValue,children:o?.stats.completedCount??0})]})]}),e.jsxs("div",{className:a.statCard,children:[e.jsx("div",{className:a.statIcon,"data-color":"yellow",children:e.jsx(oe,{size:20})}),e.jsxs("div",{className:a.statContent,children:[e.jsx("span",{className:a.statLabel,children:"Pending"}),_?e.jsx(w,{className:a.statSkeleton}):e.jsx("span",{className:a.statValue,children:o?.stats.pendingCount??0})]})]}),e.jsxs("div",{className:a.statCard,children:[e.jsx("div",{className:a.statIcon,"data-color":"purple",children:e.jsx(de,{size:20})}),e.jsxs("div",{className:a.statContent,children:[e.jsx("span",{className:a.statLabel,children:"Credits Awarded"}),_?e.jsx(w,{className:a.statSkeleton}):e.jsx("span",{className:a.statValue,children:o?.stats.totalCreditsAwarded??0})]})]})]}),e.jsxs("div",{className:a.tableSection,children:[e.jsxs("div",{className:a.toolbar,children:[e.jsx("h2",{className:a.title,children:"Referral History"}),e.jsxs("div",{className:a.filterWrapper,children:[e.jsx(me,{size:16,className:a.filterIcon}),e.jsxs("select",{className:a.select,value:c,onChange:i,disabled:_,children:[e.jsx("option",{value:"all",children:"All Status"}),e.jsx("option",{value:"pending",children:"Pending"}),e.jsx("option",{value:"completed",children:"Completed"}),e.jsx("option",{value:"rewarded",children:"Rewarded"})]})]})]}),N?e.jsx("div",{className:a.errorContainer,children:e.jsx(F,{variant:"error",title:"Error loading data",children:N.message})}):_?e.jsx("div",{className:a.loadingContainer,children:[1,2,3,4,5].map(t=>e.jsx(w,{className:a.rowSkeleton},t))}):!o?.referrals||o.referrals.length===0?e.jsxs("div",{className:a.emptyState,children:[e.jsx("div",{className:a.emptyIcon,
1children:e.jsx(he,{size:32})}),e.jsx("p",{className:a.emptyText,children:"No referrals found matching your criteria."})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:a.tableWrapper,children:e.jsxs("table",{className:a.table,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Referrer"}),e.jsx("th",{children:"Referred User"}),e.jsx("th",{children:"Code"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Date"}),e.jsx("th",{className:a.alignRight,children:"Reward"})]})}),e.jsx("tbody",{children:o.referrals.map(t=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsxs("div",{className:a.userCell,children:[e.jsx("span",{className:a.userName,children:t.referrerName}),e.jsx("span",{className:a.userEmail,children:t.referrerEmail})]})}),e.jsx("td",{children:e.jsxs("div",{className:a.userCell,children:[e.jsx("span",{className:a.userName,children:t.referredName}),e.jsx("span",{className:a.userEmail,children:t.referredEmail})]})}),e.jsx("td",{children:e.jsx("code",{className:a.code,children:t.code})}),e.jsx("td",{children:e.jsx(E,{variant:g(t.status),children:t.status})}),e.jsx("td",{className:a.dateCell,children:h(t.createdAt)}),e.jsx("td",{className:a.alignRight,children:t.rewardAmount?e.jsxs("span",{className:a.reward,children:["+",t.rewardAmount]}):e.jsx("span",{className:a.noReward,children:"-"})})]},t.id))})]})}),e.jsxs("div",{className:a.pagination,children:[e.jsxs("span",{className:a.pageInfo,children:["Showing ",r*m+1," to ",Math.min((r+1)*m,o.total)," of ",o.total," results"]}),e.jsxs("div",{className:a.paginationControls,children:[e.jsxs(k,{variant:"outline",size:"sm",onClick:x,disabled:r===0||_,children:[e.jsx(ue,{size:16})," Previous"]}),e.jsxs(k,{variant:"outline",size:"sm",onClick:p,disabled:(r+1)*m>=o.total||_,children:["Next ",e.jsx(M,{size:16})]})]})]})]})]})]})},qa="_container_1wur5_1",La="_header_1wur5_15",Ra="_title_1wur5_20",Ta="_subtitle_1wur5_28",Pa="_section_1wur5_34",Aa="_sectionHeader_1wur5_40",Va="_sectionTitle_1wur5_45",S={container:qa,header:La,title:Ra,subtitle:Ta,section:Pa,sectionHeader:Aa,sectionTitle:Va};function Qa(){return e.jsxs(e.Fragment,{children:[e.jsx("title",{children:"Growth & Pipeline | Admin | Visipage.io"}),e.jsx("meta",{name:"robots",content:"noindex, nofollow"}),e.jsxs("div",{className:S.container,children:[e.jsxs("header",{className:S.header,children:[e.jsx("h1",{className:S.title,children:"Growth Pipeline & Referrals"}),e.jsx("p",{className:S.subtitle,children:"Manage automated growth campaigns and system-wide referrals"})]}),e.jsxs("section",{className:S.section,children:[e.jsx("div",{className:S.sectionHeader,children:e.jsx("h2",{className:S.sectionTitle,children:"Outreach & Campaigns"})}),e.jsx(Bs,{})]}),e.jsxs("section",{className:S.section,children:[e.jsx("div",{className:S.sectionHeader,children:e.jsx("h2",{className:S.sectionTitle,children:"Referrals Program"})}),e.jsx(ka,{})]})]})]})}export{Qa 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.