1import{u as T,h as N,a as m,j as t,L as M}from"./vendor-react-DQmRrvQV.js";import{l as D}from"./vendor-state-3t2mugU9.js";import{c as L,h as f,D as O}from"./DashboardDatePicker-CdNDQNkI.js";import{c as k}from"./dashboard-DT7abwiX.js";import{a7 as S}from"./index-Cn9rYaym.js";import{S as y}from"./StandardBadge-BpGdLBVj.js";import{T as w,a as H}from"./TableContainer-CYHVIWle.js";import{T as A}from"./TableHeader-CrEWoyFa.js";import{P as Y}from"./PageTitle-a6p5JUJv.js";import{O as P,B as _}from"./OverlayTrigger-Cye-397R.js";import"./vendor-mui-BxA0N6WT.js";import"./floating-ui.dom-CDmV5yS9.js";import"./sse-B8JMfTht.js";import"./Spinner-D3-9kPSi.js";import"./ImperativeTransition-asvRCvEN.js";const $={hot:{label:"Hot",variant:"danger"},warm:{label:"Warm",variant:"warning"},cold:{label:"Cold",variant:"info"}},q={new:{label:"New",variant:"primary"},reply_sent:{label:"Reply Sent",variant:"info"},meeting_requested:{label:"Meeting Requested",variant:"info"},meeting_link_sent:{label:"Link Sent",variant:"info"},meeting_booked:{label:"Meeting Booked",variant:"success"},quote_requested:{label:"Quote Requested",variant:"warning"},quote_sent:{label:"Quote Sent",variant:"warning"},won:{label:"Won",variant:"success"},lost:{label:"Lost",variant:"danger"}},v=n=>n==null?"-":n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m`:`${Math.floor(n/3600)}h ${Math.floor(n%3600/60)}m`,I=n=>{const h=[["Date Received","Contact Name","Company","Email Address","Score","Priority","Status","Next Action","Response Time"].join(","),...n.map(a=>[f(a.dateReceived).format("YYYY-MM-DD HH:mm"),`"${a.contactName??""}"`,`"${a.company??""}"`,a.email??"",a.score??"",a.priority??"",`"${a.fields?Object.entries(a.fields).filter(([,r])=>r!=null).map(([r,d])=>`${r}: ${d}`).join("; "):""}"`,a.status??"",a.nextAction??"",v(a.responseTimeSeconds)].join(","))],l=new Blob([h.join(` 2`)],{type:"text/csv"}),c=URL.createObjectURL(l),s=document.createElement("a");s.href=c,s.download=`new-leads-${f().format("YYYY-MM-DD")}.csv`,s.click(),URL.revokeObjectURL(c)},ae=()=>{var x;const n=T(),b=N(),l=(n.state??{}).preset??"TODAY",c=L(l)??{},[s,a]=m.useState({preset:l,from:c.from??null,to:c.to??null}),[r,d]=m.useState(""),g=m.useMemo(()=>s.preset==="CUSTOM"?{range:"CUSTOM",from:s.from?new Date(s.from).toISOString():void 0,to:s.to?new Date(s.to).toISOString():void 0}:{range:s.preset??"TODAY"},[s]),{data:i,isLoading:j}=D({queryKey:["report-new-leads",g,r],queryFn:()=>k({...g,search:r,limit:100}),select:e=>e.data??{}}),p=(i==null?void 0:i.data)??[],u=((x=i==null?void 0:i.pagination)==null?void 0:x.total)??null,C=m.useMemo(()=>[{Header:"Date Received",accessor:"dateReceived",Cell:({value:e})=>e?f(e).format("MMM D, h:mm A"):"-"},{Header:"Contact Name",accessor:"contactName",Cell:({value:e,row:o})=>t.jsx(M,{to:S(o.original.id),className:"fw-semibold table-link",children:e||"-"})},{Header:"Company",accessor:"company",Cell:({value:e})=>e||"-"},{Header:"Email Address",accessor:"email"},{Header:"Score",accessor:"score",Cell:({value:e})=>e??"-"},{Header:"Priority",accessor:"priority",Cell:({value:e})=>{const o=$[e];return o?t.jsx(y,{label:o.label,variant:o.variant}):"-"}},{Header:"Status",accessor:"status",Cell:({value:e})=>{const o=q[e]??{label:e,variant:"secondary"};return t.jsx(y,{label:o.label,variant:o.variant})}},{Header:"Next Action",accessor:"nextAction",Cell:({value:e})=>t.jsx("span",{style:{textTransform:"capitalize"},children:(e==null?void 0:e.replace(/_/g," "))||"-"})},{Header:"Response Time",accessor:"responseTimeSeconds",Cell:({value:e})=>{const o=e>3600;return t.jsx("span",{style:{color:o?"#dc3545":void 0,fontWeight:o?600:void 0},children:v(e)})}}],[]);return t.jsxs("div",{className:"page-content",children:[t.jsx(Y,{title:"New Leads",badge:t.jsx(P,{placement:"right",overlay:t.jsx(_,{children:"Inbound leads that haven't been actioned yet. Filter by date to track volume over time."}),children:t.jsx("i",{className:"mdi mdi-information-outline text-muted",style:{cursor:"default",fontSize:16}})}),actions:t.jsx(O,{initialPreset:l,onApply:({preset:e,from:o,to:R})=>a({preset:e,from:o,to:R})})}),t.jsxs(w,{children:[t.jsx(A,{searchValue:r,onSearchChange:d,searchPlaceholder:"Search name, company, email...",rightContent:t.jsxs("button",{className:"btn btn-sm btn-outline-secondary",onClick:()=>I(p),disabled:p.length===0,children:[t.jsx("i",{className:"mdi mdi-download me-1"}),"Export CSV"]})}),u!=null&&t.jsxs("p",{className:"text-muted mb-2 px-1",style:{fontSize:13},children:["Showing ",u," new lead",u!==1?"s":""]}),t.jsx(H,{columns:C,data:p,loading:j,emptyMsg:"No leads found for this period.",emptyIcon:"mdi-account-off-outline",pageSize:10,onRowClick:e=>b(S(e.id))})]})]})};export{ae 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.