PageSourceSearch

https://ineedleads.co.uk/assets/Pipeline-BusCU_Cf.js

js ineedleads.co.uk collected 2026-10-09 22:57:08 UTC 61,665 bytes, 3 lines download raw bytes

1import{r as o,j as e,u as L,_ as ss}from"./index-DKJ0tKwF.js";import{cs as _s,b0 as $e,ap as we,aq as Ce,b1 as ee,ar as _e,as as ke,bK as ue,r as B,bL as Ie,by as as,q as F,aI as K,aJ as H,a3 as Se,J as E,bM as ks,bN as Ss,bO as Ae,a5 as Ue,bP as Me,T as ts,bf as Ds,bQ as Ts,z as He,cO as Pe,ba as ls,bR as As,bS as Ms,bT as Ps,bU as Fs,bV as ce,a8 as Es,bE as Rs,bW as Xe,aE as is,bt as ns,bw as Os,f as Ls,$ as Ne,at as We,bg as zs,s as se,v as ae,w as te,x as le,y as q,a2 as Bs,cw as Vs,c8 as rs,cC as cs,bz as qs,bB as $s,bC as Is,bD as Us,de as Ws,aK as Qs,aQ as Gs,aT as Fe,cZ as Ks,C as fe,cx as Hs,cy as Xs,bj as Js,aZ as Zs,df as Ys,bG as ea,ct as sa,bH as aa,bI as ta,bJ as la,c7 as ia,bm as na}from"./App-CL-mfmhu.js";import{u as ra}from"./useDesktopToolbarAction-BjAss24h.js";import{u as ca}from"./useDesktopStatusUpdate-V-hQXDku.js";import{u as oa,a as da,b as ma,c as xa,d as ha,D as ua,E as os,C as ds,Q as pa,e as ja,R as ga,f as Na}from"./RealPipelineBoard-3AAeBY19.js";import{u as ms}from"./useConfirmDialog-dmw0pMsa.js";import{D as u,M as De,P as xs,g as Ve,t as pe,k as hs,J as ne,T as us,d as Qe,q as be,X as fa,i as va,o as me,l as ps,p as Je,r as Ze,f as Ee,L as ba,a6 as ya}from"./button-DFML8rOM.js";import{T as js,a as gs,b as oe,c as z,d as Ns,e as A}from"./table-LmnZO84H.js";import{u as fs}from"./useTimezoneFormatters-hQJLw-zI.js";import{x as vs,g as qe,v as ye,T as je,B as wa,j as Ca,w as _a}from"./v3LegalOverrides-BUgTGJPl.js";import{U as Ge,c as ka,C as Te,o as bs,O as ys,am as Q,al as W,e as Ye,f as Re,j as Sa}from"./V2Layout-DEbe2yZA.js";import{Z as de,L as xe}from"./tracker-DzJH7QDt.js";import{i as Da}from"./isSameMonth-Bs-aNtni.js";import{R as Ta,T as Aa,B as Ma,C as Pa}from"./generateCategoricalChart-b5rLhkau.js";import{B as Fa}from"./BarChart-CqmLOmE4.js";import{C as Ea}from"./CartesianGrid-B9QQOuAa.js";import{X as Ra,Y as Oa}from"./YAxis-juuueSy8.js";import{O as La}from"./OnboardingTooltip-BBv7ZwBy.js";import{a as za,b as Ba}from"./useAIFeatures-BP7A1kLy.js";import{C as Oe,a as Le,b as ze}from"./collapsible-BxJD5XOj.js";import{u as Va}from"./useWorkspaceMembers-D43pMVTr.js";import{I as qa}from"./InternalPageSEO-loZWkmv4.js";import{S as $a}from"./SectionErrorBoundary-DOx_VnMl.js";import{T as Ia,a as Be}from"./toggle-group--rCtC8PF.js";import"./mouse-pointer-2-CzsmklB8.js";import"./index-BNGwt955.js";import"./SEOHead-B5IBZJEm.js";import"./types-DU7944Yl.js";import"./index.esm-m64ZLa92.js";import"./form-CA4Wy8za.js";import"./DealPipelineSwitcher-LIBi0Ycg.js";import"./useTeamMembers-CK4rx5Lj.js";import"./useWorkspaceTimezone-DuOduUly.js";import"./TaskDialog-BHq3WFgb.js";import"./useTasks-CRTt9fA0.js";import"./addYears-Cm967pk8.js";import"./addMonths-BWpr5jec.js";import"./addWeeks-OY5PkLlx.js";import"./addMinutes-Bu9j5c2_.js";import"./setMinutes-Dkmufa5H.js";import"./setHours--tQ0ZQly.js";import"./getDay-CijkPZp6.js";import"./calendar-C4_pM52F.js";import"./startOfMonth-C0iNPykm.js";import"./endOfWeek-CPg4SqbP.js";import"./isAfter-DrKDRHf5.js";import"./isYesterday-DAOrZ6gh.js";import"./differenceInDays-DVnkPVlP.js";import"./core.esm-CQopMhiN.js";import"./sortable.esm-BM3toCXR.js";import"./value-DqH_WevB.js";import"./toggle-C2nGyYDk.js";function Ua(a){return Da(a,_s(a))}const Wa={call:e.jsx(xs,{className:"w-4 h-4"}),email:e.jsx(De,{className:"w-4 h-4"}),meeting:e.jsx(Te,{className:"w-4 h-4"}),note:e.jsx(Ve,{className:"w-4 h-4"}),task:e.jsx(Ue,{className:"w-4 h-4"}),sms:e.jsx(hs,{className:"w-4 h-4"}),other:e.jsx(Ds,{className:"w-4 h-4"})},Qa={call:"bg-emerald-500/20 text-emerald-600",email:"bg-blue-500/20 text-blue-600",meeting:"bg-purple-500/20 text-purple-600",note:"bg-yellow-500/20 text-yellow-600",task:"bg-cyan-500/20 text-cyan-600",sms:"bg-pink-500/20 text-pink-600",other:"bg-muted text-muted-foreground"};function Ga({dealId:a,open:f,onOpenChange:j}){var P;const{data:i,isLoading:D}=oa(a),{data:C=[],isLoading:_}=da(a),{data:N=[],isLoading:M}=ma(a),{formatCurrency:v}=$e(),{formatShortDate:b,formatActivityTimestamp:d}=fs(),s=xa(),y=ha(),[T,l]=o.useState(""),[r,S]=o.useState(!1),[c,w]=o.useState(!1),[k,g]=o.useState("won"),O=async()=>
1{if(!(!T.trim()||!a))try{await s.mutateAsync({deal_id:a,content:T.trim()}),l(""),L.success("Note added")}catch{L.error("Failed to add note")}},X=async m=>{if(a)try{await y.mutateAsync({noteId:m,dealId:a}),L.success("Note deleted")}catch{L.error("Failed to delete note")}},G=i!=null&&i.contacts?[i.contacts.first_name,i.contacts.last_name].filter(Boolean).join(" "):null;return e.jsxs(we,{open:f,onOpenChange:j,children:[e.jsx(Ce,{className:"max-w-3xl max-h-[90vh] overflow-hidden flex flex-col",children:D?e.jsxs("div",{className:"space-y-4 p-4",children:[e.jsx(ee,{className:"h-8 w-2/3"}),e.jsx(ee,{className:"h-24 w-full"}),e.jsx(ee,{className:"h-48 w-full"})]}):i?e.jsxs(e.Fragment,{children:[e.jsx(_e,{className:"pb-4 border-b border-border",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(ke,{className:"text-xl font-bold",children:ue(i)}),e.jsxs("div",{className:"flex items-center gap-2 mt-2 flex-wrap",children:[i.pipeline_stages&&e.jsx(B,{variant:"secondary",style:{backgroundColor:`${i.pipeline_stages.color}20`,color:i.pipeline_stages.color||void 0},children:i.pipeline_stages.name}),e.jsx(B,{variant:i.status==="won"?"default":i.status==="lost"?"destructive":"outline",children:i.status}),((P=i.pipeline_stages)==null?void 0:P.probability)&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:[i.pipeline_stages.probability,"% probability"]})]})]}),e.jsxs("div",{className:"flex flex-col items-end gap-2",children:[e.jsx("p",{className:"text-2xl font-bold text-primary",children:v(Number(i.value))}),i.status==="open"&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs(u,{variant:"outline",size:"sm",onClick:()=>S(!0),children:[e.jsx(Ie,{className:"w-3 h-3 mr-1"}),"Edit"]}),e.jsxs(u,{variant:"outline",size:"sm",className:"text-success hover:text-success",onClick:()=>{g("won"),w(!0)},children:[e.jsx(vs,{className:"w-3 h-3 mr-1"}),"Won"]}),e.jsxs(u,{variant:"outline",size:"sm",className:"text-destructive hover:text-destructive",onClick:()=>{g("lost"),w(!0)},children:[e.jsx(as,{className:"w-3 h-3 mr-1"}),"Lost"]})]})]})]})}),e.jsxs("div",{className:"flex-1 overflow-y-auto",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 py-4",children:[e.jsxs(F,{className:"border-border/50",children:[e.jsx(K,{className:"pb-2",children:e.jsxs(H,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Se,{className:"w-4 h-4 text-muted-foreground"}),"Deal Information"]})}),e.jsxs(E,{className:"space-y-3 text-sm",children:[i.expected_close_date&&e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Expected Close"}),e.jsx("span",{children:b(i.expected_close_date)})]}),i.actual_close_date&&e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Closed On"}),e.jsx("span",{children:b(i.actual_close_date)})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("span",{className:"text-muted-foreground",children:"Created"}),e.jsx("span",{children:b(i.created_at)})]}),i.description&&e.jsxs("div",{className:"pt-2 border-t border-border/50",children:[e.jsx("p",{className:"text-muted-foreground mb-1",children:"Description"}),e.jsx("p",{children:i.description})]})]})]}),e.jsxs(F,{className:"border-border/50",children:[e.jsx(K,{className:"pb-2",children:e.jsxs(H,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Ge,{className:"w-4 h-4 text-muted-foreground"}),"Contact & Company"]})}),e.jsxs(E,{className:"space-y-4",children:[i.contacts?e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-gradient-to-br from-primary to-cyan-400 flex items-center justify-center text-primary-foreground text-sm font-medium flex-shrink-0",children:(G||"?").slice(0,2).toUpperCase()}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:G||"Unnamed"}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:i.contacts.job_title}),e.jsxs("div",{className:"flex items-center gap-3 mt-1",children:[i.contacts.email&&e.jsxs("a",{href:`mailto:${i.contacts.email}`,className:"text-primary hover:underline text-sm flex items-center gap-1",children:[e.jsx(De,{className:"w-3 h-3"}),"Email"]}
1),i.contacts.phone&&e.jsxs("a",{href:`tel:${i.contacts.phone}`,className:"text-primary hover:underline text-sm flex items-center gap-1",children:[e.jsx(xs,{className:"w-3 h-3"}),"Call"]})]})]})]}):e.jsx("p",{className:"text-muted-foreground text-sm",children:"No contact linked"}),i.companies&&e.jsxs("div",{className:"flex items-start gap-3 pt-3 border-t border-border/50",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg bg-muted flex items-center justify-center flex-shrink-0",children:e.jsx(ka,{className:"w-5 h-5 text-muted-foreground"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:i.companies.name}),i.companies.industry&&e.jsx("p",{className:"text-sm text-muted-foreground",children:i.companies.industry}),i.companies.website&&e.jsx("a",{href:i.companies.website.startsWith("http")?i.companies.website:`https://${i.companies.website}`,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline text-sm",children:"Visit website"})]})]})]})]})]}),e.jsxs(ks,{defaultValue:"activities",className:"mt-2",children:[e.jsxs(Ss,{children:[e.jsxs(Ae,{value:"activities",className:"gap-2",children:[e.jsx(qe,{className:"w-4 h-4"}),"Activities (",C.length,")"]}),e.jsxs(Ae,{value:"tasks",className:"gap-2",children:[e.jsx(Ue,{className:"w-4 h-4"}),"Tasks"]}),e.jsxs(Ae,{value:"notes",className:"gap-2",children:[e.jsx(Ve,{className:"w-4 h-4"}),"Notes (",N.length,")"]})]}),e.jsx(Me,{value:"activities",className:"mt-4",children:_?e.jsx("div",{className:"space-y-3",children:Array.from({length:3}).map((m,$)=>e.jsx(ee,{className:"h-16 w-full"},$))}):C.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(qe,{className:"w-12 h-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:"No activities recorded yet"})]}):e.jsx("div",{className:"space-y-3 max-h-[300px] overflow-y-auto pr-2",children:C.map(m=>e.jsxs("div",{className:"flex items-start gap-3 p-3 rounded-lg bg-muted/30 hover:bg-muted/50 transition-colors",children:[e.jsx("div",{className:pe("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0",Qa[m.type]),children:Wa[m.type]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(B,{variant:"outline",className:"text-xs capitalize",children:m.type}),m.is_completed&&e.jsx(B,{variant:"secondary",className:"text-xs",children:"Completed"})]}),m.subject&&e.jsx("p",{className:"font-medium mt-1",children:m.subject}),m.description&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:m.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:d(m.created_at)})]})]},m.id))})}),e.jsx(Me,{value:"tasks",className:"mt-4",children:a?e.jsx(ua,{dealId:a}):null}),e.jsx(Me,{value:"notes",className:"mt-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ts,{placeholder:"Add a note...",value:T,onChange:m=>l(m.target.value),className:"min-h-[80px]"}),e.jsxs(u,{onClick:O,disabled:!T.trim()||s.isPending,className:"self-end",children:[e.jsx(ye,{className:"w-4 h-4 mr-1"}),"Add"]})]}),M?e.jsx("div",{className:"space-y-3",children:Array.from({length:3}).map((m,$)=>e.jsx(ee,{className:"h-16 w-full"},$))}):N.length===0?e.jsxs("div",{className:"text-center py-8 text-muted-foreground",children:[e.jsx(Ve,{className:"w-12 h-12 mx-auto mb-3 opacity-50"}),e.jsx("p",{children:"No notes yet"})]}):e.jsx("div",{className:"space-y-3 max-h-[250px] overflow-y-auto pr-2",children:N.map(m=>e.jsxs("div",{className:pe("p-3 rounded-lg bg-muted/30 hover:bg-muted/50 transition-colors group",m.is_pinned&&"ring-1 ring-primary/30"),children:[e.jsxs("div",{className:"flex justify-between items-start gap-2",children:[e.jsx("p",{className:"text-sm whitespace-pre-wrap flex-1",children:m.content}),e.jsx(u,{variant:"ghost",size:"icon",className:"opacity-0 group-hover:opacity-100 transition-opacity h-7 w-7",onClick:()=>X(m.id),children:e.jsx(je,{className:"w-4 h-4 text-destructive"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:d(m.created_at)})]},m.id))})]})})]})]})]}):e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:e.jsx("p",{children:"Deal not found"})})}),a&&e.jsx(os,{dealId:a,open:r,onOpenChange:S}),a&&i&&e.jsx(ds,{dealId:a,dealName:ue(i),type:k,open:c,onOpenChange:w})]})}function Ka({deals:a,stages:f,selectedDealIds:j=[],onSelectedDealIdsChange:i}){const{formatCurrency:D}=$e(),C=Ts(),{confirm:_,ConfirmDialog:N}
1=ms(),[M,v]=o.useState(null),[b,d]=o.useState(null),[s,y]=o.useState(null),[T,l]=o.useState("won"),[r,S]=o.useState(null),[c,w]=o.useState(null),[k,g]=o.useState("created_at"),[O,X]=o.useState("desc"),G=n=>{k===n?X(O==="asc"?"desc":"asc"):(g(n),X("asc"))},P=[...a].sort((n,h)=>{let R=0;return k==="name"?R=(n.name||"").localeCompare(h.name||""):k==="value"?R=(Number(n.value)||0)-(Number(h.value)||0):R=new Date(n.created_at).getTime()-new Date(h.created_at).getTime(),O==="asc"?R:-R}),m=n=>{var h;return((h=f.find(R=>R.id===n))==null?void 0:h.name)||"Unknown"},$=n=>{var h;return((h=f.find(R=>R.id===n))==null?void 0:h.color)||"#8B5CF6"},he=async(n,h)=>{if(await _({title:"Delete Deal",description:`Are you sure you want to delete "${h}"? This action cannot be undone.`,confirmLabel:"Delete",variant:"destructive"}))try{await C.mutateAsync(n),L.success("Deal deleted")}catch{L.error("Failed to delete deal")}},J=s?a.find(n=>n.id===s):null;return e.jsxs("div",{className:"glass-card p-4",children:[e.jsxs(js,{children:[e.jsx(gs,{children:e.jsxs(oe,{children:[e.jsx(z,{className:"w-10",children:e.jsx(He,{checked:j.length===P.length&&P.length>0,onCheckedChange:n=>{i==null||i(n?P.map(h=>h.id):[])},"aria-label":"Select all deals"})}),e.jsx(z,{children:e.jsxs(u,{variant:"ghost",size:"sm",onClick:()=>G("name"),className:"flex items-center gap-1 -ml-3",children:["Deal",e.jsx(Pe,{className:"w-3 h-3"})]})}),e.jsx(z,{children:e.jsxs(u,{variant:"ghost",size:"sm",onClick:()=>G("value"),className:"flex items-center gap-1 -ml-3",children:["Value",e.jsx(Pe,{className:"w-3 h-3"})]})}),e.jsx(z,{children:"Stage"}),e.jsx(z,{children:"Status"}),e.jsx(z,{children:"Contact"}),e.jsx(z,{children:"Company"}),e.jsx(z,{children:e.jsxs(u,{variant:"ghost",size:"sm",onClick:()=>G("created_at"),className:"flex items-center gap-1 -ml-3",children:["Created",e.jsx(Pe,{className:"w-3 h-3"})]})}),e.jsx(z,{className:"w-12"})]})}),e.jsx(Ns,{children:P.length===0?e.jsx(oe,{children:e.jsx(A,{colSpan:9,className:"text-center py-8 text-muted-foreground",children:"No deals found"})}):P.map(n=>{var ie;const h=n.contacts&&[n.contacts.first_name,n.contacts.last_name].filter(Boolean).join(" ").trim()||"-",R=ue(n),Z=n.priority==="high"||n.is_complaint;return e.jsxs(oe,{className:pe("cursor-pointer hover:bg-muted/50",Z&&"bg-destructive/5 border-l-2 border-l-destructive"),onClick:()=>v(n.id),children:[e.jsx(A,{onClick:I=>I.stopPropagation(),children:e.jsx(He,{checked:j.includes(n.id),onCheckedChange:I=>{i==null||i(I?[...j,n.id]:j.filter(re=>re!==n.id))},"aria-label":`Select deal ${R}`})}),e.jsx(A,{className:"font-medium",children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:R}),n.is_complaint&&e.jsx(B,{variant:"destructive",className:"w-fit text-xs mt-1",children:"Complaint"})]})}),e.jsx(A,{className:"font-semibold",children:D(Number(n.value))}),e.jsx(A,{children:e.jsx(B,{variant:"secondary",style:{backgroundColor:`${$(n.stage_id)}20`,color:$(n.stage_id),borderColor:`${$(n.stage_id)}50`},className:"border",children:m(n.stage_id)})}),e.jsx(A,{children:e.jsx(B,{variant:n.status==="won"?"default":n.status==="lost"?"destructive":"secondary",className:pe(n.status==="won"&&"bg-success text-success-foreground"),children:n.status})}),e.jsx(A,{children:h}),e.jsx(A,{children:((ie=n.companies)==null?void 0:ie.name)||"-"}),e.jsx(A,{className:"text-muted-foreground text-sm",children:ls(n.created_at,"MMM d, yyyy")}),e.jsx(A,{children:e.jsxs(As,{children:[e.jsx(Ms,{asChild:!0,onClick:I=>I.stopPropagation(),children:e.jsx(u,{variant:"ghost",size:"icon",className:"h-8 w-8",children:e.jsx(Ps,{className:"w-4 h-4"})})}),e.jsxs(Fs,{align:"end",onClick:I=>I.stopPropagation(),children:[e.jsxs(ce,{onClick:()=>v(n.id),children:[e.jsx(Es,{className:"w-4 h-4 mr-2"}),"View Details"]}),e.jsxs(ce,{onClick:()=>d(n.id),children:[e.jsx(Ie,{className:"w-4 h-4 mr-2"}),"Edit"]}),e.jsxs(ce,{onClick:()=>S(n),children:[e.jsx(Rs,{className:"w-4 h-4 mr-2"}),"Add Note"]}),e.jsxs(ce,{onClick:()=>w(n),children:[e.jsx(bs,{className:"w-4 h-4 mr-2"}),"Add Task"]}),e.jsx(Xe,{}),e.jsxs(ce,{onClick:()=>{y(n.id),l("won")},children:[e.jsx(vs,{className:"w-4 h-4 mr-2 text-success"}),"Mark Won"]}),e.jsxs(ce,{onClick:()=>{y(n.id),l("lost")},children:[e.jsx(as,{className:"w-4 h-4 mr-2 text-destructive"}),"Mark Lost"]}),e.jsx(Xe,{}),e.jsxs(ce,{className:"text-destructive",onClick:()=>he(n.id,R),children:[e.jsx(je,{className:"w-4 h-4 mr-2"}),"Delete"]})]})]})})]},n.id)})})]}),e.jsx(Ga,{dealId:M,open:!!M,onOpenChange:n=>!n&&v(null)}),b&&e.jsx(os,{dealId:b,open:!!b,onOpenChange:n=>!n&&d(null)}),s&&J&&e.jsx(ds,{dealId:s,dealName:J.name,type:T,open:!!s,onOpenChange:n=>!n&&y(null)}),r&&e.jsx(pa,{dealId:r.id,dealName:ue(r),open:!!r,onOpenChange:n=>!n&&S(null)}),c&&e.jsx(ja,{dealId:c.id,dealName:ue(c),contactId:c.contact_id,companyId:c.company_id,open:!!c,onOpenChange:n=>!n&&w(null)}),e.jsx(N,{})]})}const ve=[{value:"send_email",label:"Send Email",icon:De,color:"bg-blue-500"},{value:"create_task",label:"Create Task",icon:Ue,color:"bg-green-500"},{value:"send_notification",label:"Send Notification",icon:wa,color:"bg-yellow-500"},{value:"assign_owner",label:"Assign Owner",icon:Ge,color:"bg-purple-500"},{value:"add_tag",label:"Add Tag",icon:us,color:"bg-pink-500"},{value:"wait_delay",label:"Wait/Delay",icon:qe,color:"bg-orange-500"},{value:"send_sms",label:"Send SMS",icon:hs,color:"bg-teal-500"}];function Ha({pipelineId:a,open:f,onOpenChange:j}){const{workspace:i}=is(),D=ys(),{data:C}=ns(),{data:_}
1=Os(),[N,M]=o.useState(null),[v,b]=o.useState(!1),[d,s]=o.useState(""),[y,T]=o.useState(""),[l,r]=o.useState(""),[S,c]=o.useState("enters"),[w,k]=o.useState([]),g=C==null?void 0:C.find(t=>t.id===a),O=(_==null?void 0:_.filter(t=>t.pipeline_id===a).sort((t,x)=>t.sort_order-x.sort_order))||[],{data:X=[],isLoading:G}=Ls({queryKey:["pipeline-automation-rules",a],queryFn:async()=>{const{data:t,error:x}=await ne.from("automations").select("*").eq("workspace_id",i==null?void 0:i.id).eq("trigger_type","deal_stage_changed").contains("trigger_config",{pipeline_id:a});if(x)throw x;return(t||[]).map(p=>{const V=p.trigger_config||{},Y=p.flow_data||{};return{id:p.id,name:p.name,description:p.description,is_active:p.status==="active",trigger_stage_id:V.stage_id||"",trigger_type:V.trigger_type||"enters",actions:Y.actions||[]}})},enabled:!!(i!=null&&i.id)&&!!a}),P=Ne({mutationFn:async t=>{const{data:x,error:p}=await ne.from("automations").insert([{workspace_id:i.id,name:t.name,description:t.description,trigger_type:"deal_stage_changed",trigger_config:{pipeline_id:a,stage_id:t.trigger_stage_id,trigger_type:t.trigger_type},flow_data:{actions:t.actions},status:t.is_active?"active":"draft"}]).select().single();if(p)throw p;return x},onSuccess:()=>{D.invalidateQueries({queryKey:["pipeline-automation-rules",a]}),L.success("Automation rule created"),J()},onError:()=>{L.error("Failed to create automation rule")}}),m=Ne({mutationFn:async({id:t,...x})=>{const{error:p}=await ne.from("automations").update({name:x.name,description:x.description,trigger_config:{pipeline_id:a,stage_id:x.trigger_stage_id,trigger_type:x.trigger_type},flow_data:{actions:x.actions},status:x.is_active?"active":"draft"}).eq("id",t);if(p)throw p},onSuccess:()=>{D.invalidateQueries({queryKey:["pipeline-automation-rules",a]}),L.success("Automation rule updated"),J()},onError:()=>{L.error("Failed to update automation rule")}}),$=Ne({mutationFn:async t=>{const{error:x}=await ne.from("automations").delete().eq("id",t);if(x)throw x},onSuccess:()=>{D.invalidateQueries({queryKey:["pipeline-automation-rules",a]}),L.success("Automation rule deleted")},onError:()=>{L.error("Failed to delete automation rule")}}),he=Ne({mutationFn:async({id:t,is_active:x})=>{const{error:p}=await ne.from("automations").update({status:x?"active":"draft"}).eq("id",t);if(p)throw p},onSuccess:()=>{D.invalidateQueries({queryKey:["pipeline-automation-rules",a]})}}),J=()=>{M(null),s(""),T(""),r(""),c("enters"),k([]),b(!1)},n=t=>{t?(M(t),s(t.name),T(t.description||""),r(t.trigger_stage_id),c(t.trigger_type),k(t.actions)):J(),b(!0)},h=t=>{k([...w,{type:t,config:{}}])},R=t=>{k(w.filter((x,p)=>p!==t))},Z=(t,x)=>{const p=[...w];p[t]={...p[t],config:x},k(p)},ie=async()=>{if(!d||!l||w.length===0){L.error("Please fill in all required fields");return}const t={name:d,description:y||null,is_active:!0,trigger_stage_id:l,trigger_type:S,actions:w};N?await m.mutateAsync({id:N.id,...t}):await P.mutateAsync(t)},I=t=>{const x=ve.find(p=>p.value===t);return(x==null?void 0:x.icon)||de},re=t=>{const x=ve.find(p=>p.value===t);return(x==null?void 0:x.color)||"bg-gray-500"};return e.jsx(we,{open:f,onOpenChange:j,children:e.jsxs(Ce,{className:"max-w-3xl max-h-[85vh]",children:[e.jsxs(_e,{children:[e.jsxs(ke,{className:"flex items-center gap-2",children:[e.jsx(de,{className:"h-5 w-5 text-primary"}),"Pipeline Automation Rules"]}),e.jsxs(We,{children:["Create rules to automate actions when deals move between stages in ",g==null?void 0:g.name]})]}),v?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(Q,{children:"Rule Name"}),e.jsx(W,{value:d,onChange:t=>s(t.target.value),placeholder:"e.g., Send welcome email on qualification"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Q,{children:"Description (optional)"}),e.jsx(W,{value:y,onChange:t=>T(t.target.value),placeholder:"Brief description of what this rule does"})]})]}),e.jsxs("div",{className:"p-4 border rounded-lg bg-muted/30 space-y-4",children:[e.jsxs("h4",{className:"font-medium flex items-center gap-2",children:[e.jsx(zs,{className:"h-4 w-4"}),"Trigger"]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(Q,{children:"When deal"}),e.jsxs(se,{value:S,onValueChange:t=>c(t),children:[e.jsx(ae,{children:e.jsx(te,{})}),e.jsxs(le,{children:[e.jsx(q,{value:"enters",children:"Enters stage"}),e.jsx(q,{value:"leaves",children:"Leaves stage"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Q,{children:"Stage"}),e.jsxs(se,{value:l,onValueChange:r,children:[e.jsx(ae,{children:e.jsx(te,{placeholder:"Select stage..."})}),e.jsx(le,{children:O.map(t=>e.jsx(q,{value:t.id,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:t.color||"#8B5CF6"}}),t.name]})},t.id))})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsxs("h4",{className:"font-medium flex items-center gap-2",children:[e.jsx(de,{className:"h-4 w-4"}),"Actions"]})}),w.length>0&&e.jsx("div",{className:"space-y-2",children:w.map((t,x)=>{var Y;const p=I(t.type),V=(Y=ve.find(U=>U.value===t.type))==null?void 0:Y.label;return e.jsxs("div",{className:"flex items-center gap-3 p-3 border rounded-lg bg-background",children:[e.jsx("div",{className:pe("w-8 h-8 rounded-full flex items-center justify-center",re(t.type)),children:e.jsx(p,{className:"h-4 w-4 text-white"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"font-medium text-sm",children:V}),t.type==="send_email"&&e.jsx(W,{placeholder:"Email subject...",value:t.config.subject||"",onChange:U=>Z(x,{...t.config,subject:U.target.value}),className:"mt-2"}),t.type==="create_task"&&e.jsx(W,{placeholder:"Task title...",value:t.config.title||"",onChange:U=>Z(x,{...t.config,title:U.target.value}),className:"mt-2"}),t.type==="wait_delay"&&e.jsxs("div",{className:"flex items-center gap-2 mt-2",children:[e.jsx(W,{type:"number",placeholder:"Duration",value:t.config.duration||"",onChange:U=>Z(x,{...t.config,duration:parseInt(U.target.value)}),className:"w-24"}),e.jsxs(se,{value:t.config.unit||"minutes",onValueChange:U=>Z(x,{...t.config,unit:U}),children:[e.jsx(ae,{className:"w-32",children:e.jsx(te,{})}),e.jsxs(le,{children:[e.jsx(q,{value:"minutes",children:"Minutes"}),e.jsx(q,{value:"hours",children:"Hours"}),e.jsx(q,{value:"days",children:"Days"})]})]})]})]}),e.jsx(u,{variant:"ghost",size:"icon",onClick:()=>R(x),children:e.jsx(je,{className:"h-4 w-4 text-muted-foreground"})})]},x)})}),e.jsx("div",{className:"flex flex-wrap gap-2",children:ve.map(t=>e.jsxs(u,{variant:"outline",size:"sm",onClick:()=>h(t.value),className:"gap-2",children:[e.jsx(t.icon,{className:"h-3 w-3"}),t.label]},t.value))})]}),e.jsxs("div",{className:"flex justify-between pt-4",children:[e.jsx(u,{variant:"outline",onClick:J,children:"Cancel"}),e.jsxs(u,{onClick:ie,disabled:P.isPending||m.isPending,children:[(P.isPending||m.isPending)&&e.jsx(xe,{className:"h-4 w-4 mr-2 animate-spin"}),N?"Update Rule":"Create Rule"]})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-end",children:e.jsxs(u,{onClick:()=>n(),children:[e.jsx(ye,{className:"h-4 w-4 mr-2"}),"Add Rule"]})}),G?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(xe,{className:"h-8 w-8 animate-spin text-primary"})}):X.length===0?e.jsx(F,{children:e.jsxs(E,{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(de,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("p",{className:"font-medium mb-2",children:"No automation rules yet"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:"Create rules to automate actions when deals move between stages"}),e.jsxs(u,{onClick:()=>n(),children:[e.jsx(ye,{className:"h-4 w-4 mr-2"}),"Create First Rule"]})]})}):e.jsx(Bs,{className:"h-[400px] pr-4",children:e.jsx("div",{className:"space-y-3",children:X.map(t=>{const x=O.find(p=>p.id===t.trigger_stage_id);return e.jsx(F,{children:e.jsx(E,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h4",{className:"font-medium",children:t.name}),e.jsx(B,{variant:t.is_active?"default":"secondary",children:t.is_active?"Active":"Inactive"})]}),t.description&&e.jsx("p",{className:"text-sm text-muted-foreground",children:t.description}),e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsxs("span",{children:["When deal ",t.trigger_type]}),e.jsx(Qe,{className:"h-3 w-3"}),x&&e.jsx(B,{variant:"outline",style:{borderColor:x.color||void 0},children:x.name})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[t.actions.map((p,V)=>{const Y=I(p.type);return e.jsx("div",{className:pe("w-6 h-6 rounded-full flex items-center justify-center",re(p.type)),children:e.jsx(Y,{className:"h-3 w-3 text-white"})},V)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[t.actions.length," action",t.actions.length!==1?"s":""]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Vs,{checked:t.is_active,onCheckedChange:p=>he.mutate({id:t.id,is_active:p})}),e.jsx(u,{variant:"ghost",size:"icon",onClick:()=>n(t),children:e.jsx(Ie,{className:"h-4 w-4"})}),e.jsx(u,{variant:"ghost",size:"icon",onClick:()=>$.mutate(t.id),children:e.jsx(je,{className:"h-4 w-4 text-muted-foreground"})})]})]})})},t.id)})})})]})]})})}const es=["#8B5CF6","#06B6D4","#F59E0B","#10B981","#22C55E","#EF4444","#6B7280"];function Xa({pipelineId:a}){const{data:f,isLoading:j}=rs(a),{formatCurrency:i}=$e(),{stages:D=[],deals:C=[]}=f||{},_=C.filter(l=>l.status==="open"),N=o.useMemo(()=>{const l=new Map;return D.forEach(r=>l.set(r.id,r)),l},[D]),M=_.reduce((l,r)=>l+(Number(r.value)||0),0),v=_.reduce((l,r)=>{const S=N.get(r.stage_id),c=r.probability??(S==null?void 0:S.probability)??50;return l+(Number(r.value)||0)*(c/100)},0),b=_.filter(l=>l.expected_close_date&&Ua(new Date(l.expected_close_date))).reduce((l,r)=>{const S=N.get(r.stage_id),c=r.probability??(S==null?void 0:S.probability)??50;return l+(Number(r.value)||0)*(c/100)},0),d=D.map((l,r)=>{const c=_.filter(w=>w.stage_id===l.id).reduce((w,k)=>w+(Number(k.value)||0),0);return{name:l.name,value:c,color:l.color||es[r%es.length]}}),s=_.map(l=>{var w;const r=N.get(l.stage_id),S=l.probability??(r==null?void 0:r.probability)??50,c=l.contacts?[l.contacts.first_name,l.contacts.last_name].filter(
1Boolean).join(" "):"—";return{id:l.id,name:ue(l),contact:c,company:((w=l.companies)==null?void 0:w.name)||"—",stage:(r==null?void 0:r.name)||"Unknown",value:Number(l.value)||0,probability:S,weighted:(Number(l.value)||0)*(S/100),expectedClose:l.expected_close_date,stageColor:(r==null?void 0:r.color)||"#8B5CF6"}}).sort((l,r)=>r.weighted-l.weighted),y={value:s.reduce((l,r)=>l+r.value,0),weighted:s.reduce((l,r)=>l+r.weighted,0)},T=()=>{ss(async()=>{const{exportToCSV:l}=await import("./export-BcRDJOy3.js");return{exportToCSV:l}},[]).then(({exportToCSV:l})=>{l(s,[{key:"name",label:"Deal"},{key:"contact",label:"Contact"},{key:"company",label:"Company"},{key:"stage",label:"Stage"},{key:"value",label:"Value"},{key:"probability",label:"Probability %"},{key:"weighted",label:"Weighted Value"},{key:"expectedClose",label:"Expected Close"}],"pipeline-forecast")})};return j?e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-3 gap-4",children:[1,2,3].map(l=>e.jsx(ee,{className:"h-24 rounded-xl"},l))}),e.jsx(ee,{className:"h-64 rounded-xl"}),e.jsx(ee,{className:"h-96 rounded-xl"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsx(F,{children:e.jsxs(E,{className:"p-4 flex items-center gap-4",children:[e.jsx("div",{className:"p-3 rounded-xl bg-primary/10",children:e.jsx(Se,{className:"w-6 h-6 text-primary"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Total Pipeline"}),e.jsx("p",{className:"text-xl font-bold",children:i(M)}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[_.length," open deals"]})]})]})}),e.jsx(F,{children:e.jsxs(E,{className:"p-4 flex items-center gap-4",children:[e.jsx("div",{className:"p-3 rounded-xl bg-emerald-500/10",children:e.jsx(be,{className:"w-6 h-6 text-emerald-500"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Weighted Forecast"}),e.jsx("p",{className:"text-xl font-bold",children:i(v)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Based on stage probability"})]})]})}),e.jsx(F,{children:e.jsxs(E,{className:"p-4 flex items-center gap-4",children:[e.jsx("div",{className:"p-3 rounded-xl bg-amber-500/10",children:e.jsx(Te,{className:"w-6 h-6 text-amber-500"})}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Expected This Month"}),e.jsx("p",{className:"text-xl font-bold",children:i(b)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Weighted by probability"})]})]})})]}),e.jsxs(F,{children:[e.jsxs(K,{className:"flex flex-row items-center justify-between pb-2",children:[e.jsx(H,{className:"text-base",children:"Pipeline Value by Stage"}),e.jsxs(u,{variant:"outline",size:"sm",onClick:T,children:[e.jsx(cs,{className:"w-4 h-4 mr-2"}),"Export CSV"]})]}),e.jsx(E,{children:e.jsx("div",{className:"h-64",children:e.jsx(Ta,{width:"100%",height:"100%",children:e.jsxs(Fa,{data:d,margin:{top:5,right:20,left:10,bottom:5},children:[e.jsx(Ea,{strokeDasharray:"3 3",className:"stroke-border"}),e.jsx(Ra,{dataKey:"name",tick:{fontSize:12},className:"fill-muted-foreground"}),e.jsx(Oa,{tickFormatter:l=>`£${(l/1e3).toFixed(0)}k`,tick:{fontSize:12},className:"fill-muted-foreground"}),e.jsx(Aa,{formatter:l=>[i(l),"Value"],contentStyle:{backgroundColor:"hsl(var(--card))",border:"1px solid hsl(var(--border))",borderRadius:"0.5rem",color:"hsl(var(--foreground))"}}),e.jsx(Ma,{dataKey:"value",radius:[6,6,0,0],children:d.map((l,r)=>e.jsx(Pa,{fill:l.color},r))})]})})})})]}),e.jsxs(F,{children:[e.jsx(K,{children:e.jsx(H,{className:"text-base",children:"Deal Forecast"})}),e.jsx(E,{className:"p-0",children:e.jsxs(js,{children:[e.jsx(gs,{children:e.jsxs(oe,{children:[e.jsx(z,{children:"Deal"}),e.jsx(z,{children:"Contact"}),e.jsx(z,{children:"Stage"}),e.jsx(z,{className:"text-right",children:"Value"}),e.jsx(z,{className:"text-right",children:"Prob %"}),e.jsx(z,{className:"text-right",children:"Weighted"}),e.jsx(z,{children:"Expected Close"})]})}),e.jsx(Ns,{children:s.length===0?e.jsx(oe,{children:e.jsx(A,{colSpan:7,className:"text-center py-8 text-muted-foreground",children:"No open deals"})}
1):e.jsxs(e.Fragment,{children:[s.map(l=>e.jsxs(oe,{children:[e.jsx(A,{className:"font-medium",children:e.jsxs("div",{children:[e.jsx("span",{children:l.name}),l.company!=="—"&&e.jsx("p",{className:"text-xs text-muted-foreground",children:l.company})]})}),e.jsx(A,{className:"text-sm",children:l.contact}),e.jsx(A,{children:e.jsx(B,{variant:"secondary",style:{backgroundColor:`${l.stageColor}20`,color:l.stageColor,borderColor:`${l.stageColor}50`},className:"border",children:l.stage})}),e.jsx(A,{className:"text-right font-semibold",children:i(l.value)}),e.jsxs(A,{className:"text-right",children:[l.probability,"%"]}),e.jsx(A,{className:"text-right font-semibold text-emerald-500",children:i(l.weighted)}),e.jsx(A,{className:"text-sm text-muted-foreground",children:l.expectedClose?ls(l.expectedClose,"MMM d, yyyy"):"—"})]},l.id)),e.jsxs(oe,{className:"bg-muted/30 font-bold",children:[e.jsxs(A,{colSpan:3,children:["Total (",s.length," deals)"]}),e.jsx(A,{className:"text-right",children:i(y.value)}),e.jsx(A,{}),e.jsx(A,{className:"text-right text-emerald-500",children:i(y.weighted)}),e.jsx(A,{})]})]})})]})})]})]})}function Ja({open:a,onOpenChange:f,selectedDealIds:j,stages:i,onComplete:D}){const[C,_]=o.useState(""),[N,M]=o.useState(!1),[v,b]=o.useState(!1),{workspace:d}=is(),s=ys(),{confirm:y,ConfirmDialog:T}=ms(),l=i.find(c=>c.id===C),r=async()=>{if(!(!C||j.length===0)){M(!0);try{for(let c=0;c<j.length;c+=100){const{error:w}=await ne.from("deals").update({stage_id:C,updated_at:new Date().toISOString()}).in("id",j.slice(c,c+100));if(w)throw w}L.success(`Moved ${j.length} deal${j.length>1?"s":""} to ${l==null?void 0:l.name}`),s.invalidateQueries({queryKey:["deals_with_stages"]});for(const c of j)ne.functions.invoke("fire-automation-triggers",{body:{eventType:"deal_stage_changed",workspaceId:d==null?void 0:d.id,dealId:c,triggerData:{stageId:C,newStageName:l==null?void 0:l.name}}}).catch(()=>{});D(),f(!1)}catch(c){L.error(`Failed to move deals: ${c.message}`)}finally{M(!1)}}},S=async()=>{if(!d||j.length===0)return;const c=j.length;if(await y({title:`Delete ${c} pipeline deal${c===1?"":"s"}?`,description:"This removes the selected cards from the pipeline. Their contacts and companies will stay in the CRM.",confirmLabel:"Delete deals",variant:"destructive"})){b(!0);try{for(let k=0;k<j.length;k+=100){const{error:g}=await ne.from("deals").delete().in("id",j.slice(k,k+100)).eq("workspace_id",d.id);if(g)throw g}await Promise.all([s.invalidateQueries({queryKey:["deals_with_stages"]}),s.invalidateQueries({queryKey:["deals",d.id]}),s.invalidateQueries({queryKey:["dashboard_stats",d.id]})]),L.success(`Deleted ${c} pipeline deal${c===1?"":"s"}`),D(),f(!1)}catch(k){const g=k instanceof Error?k.message:"Unknown error";L.error(`Failed to delete deals: ${g}`)}finally{b(!1)}}};return e.jsxs(e.Fragment,{children:[e.jsx(we,{open:a,onOpenChange:f,children:e.jsxs(Ce,{className:"sm:max-w-md",children:[e.jsxs(_e,{children:[e.jsx(ke,{children:"Bulk Pipeline Actions"}),e.jsxs(We,{children:["Move or remove ",j.length," selected deal",j.length>1?"s":"","."]})]}),e.jsx("div",{className:"space-y-4 py-4",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(B,{variant:"secondary",className:"text-sm",children:[j.length," deal",j.length>1?"s":""]}),e.jsx(Qe,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs(se,{value:C,onValueChange:_,children:[e.jsx(ae,{className:"flex-1",children:e.jsx(te,{placeholder:"Select target stage"})}),e.jsx(le,{children:i.map(c=>e.jsx(q,{value:c.id,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full",style:{backgroundColor:c.color||"#8B5CF6"}}),c.name]})},c.id))})]})]})}),e.jsxs(qs,{children:[e.jsxs(u,{variant:"destructive",onClick:S,disabled:N||v,className:"sm:mr-auto",children:[v?e.jsx(xe,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(je,{className:"h-4 w-4 mr-2"}),"Delete selected"]}),e.jsx(u,{variant:"outline",onClick:()=>f(!1),disabled:N||v,children:"Cancel"}),e.jsxs(u,{onClick:r,disabled:!C||N||v,children:[N?e.jsx(xe,{className:"h-4 w-4 mr-2 animate-spin"}):null,"Move ",j.length," Deal",j.length>
11?"s":""]})]})]})}),e.jsx(T,{})]})}const ws={stageId:"all",assignedUser:"all",valueMin:"",valueMax:"",closeDateFrom:"",closeDateTo:"",tag:"",utmSource:"",utmMedium:"",utmCampaign:""};function Za({filters:a,onFiltersChange:f,teamMembers:j=[],stages:i=[],externalOpen:D,onExternalOpenChange:C}){const[_,N]=o.useState(!1),M=D!==void 0?D:_,v=C||N,b=o.useMemo(()=>{let s=0;return a.stageId!=="all"&&s++,a.assignedUser!=="all"&&s++,(a.valueMin||a.valueMax)&&s++,(a.closeDateFrom||a.closeDateTo)&&s++,a.tag&&s++,a.utmSource&&s++,a.utmMedium&&s++,a.utmCampaign&&s++,s},[a]),d=()=>{f(ws)};return e.jsxs($s,{open:M,onOpenChange:v,children:[e.jsx(Is,{asChild:!0,children:e.jsxs(u,{variant:"outline",size:"sm",className:"gap-1.5",children:[e.jsx(Ca,{className:"w-4 h-4"}),"Filters",b>0&&e.jsx(B,{variant:"secondary",className:"ml-1 h-5 w-5 p-0 flex items-center justify-center text-[10px]",children:b})]})}),e.jsx(Us,{className:"w-80 p-4",align:"start",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h4",{className:"font-medium text-sm",children:"Filter Deals"}),b>0&&e.jsxs(u,{variant:"ghost",size:"sm",onClick:d,className:"h-7 text-xs",children:[e.jsx(fa,{className:"w-3 h-3 mr-1"})," Clear all"]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(Q,{className:"text-xs flex items-center gap-1.5",children:[e.jsx(Ws,{className:"w-3.5 h-3.5"})," Pipeline Stage"]}),e.jsxs(se,{value:a.stageId,onValueChange:s=>f({...a,stageId:s}),children:[e.jsx(ae,{className:"h-8 text-xs",children:e.jsx(te,{placeholder:"All stages"})}),e.jsxs(le,{children:[e.jsx(q,{value:"all",children:"All stages"}),i.map(s=>e.jsx(q,{value:s.id,children:s.name},s.id))]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(Q,{className:"text-xs flex items-center gap-1.5",children:[e.jsx(Ge,{className:"w-3.5 h-3.5"})," Assigned To"]}),e.jsxs(se,{value:a.assignedUser,onValueChange:s=>f({...a,assignedUser:s}),children:[e.jsx(ae,{className:"h-8 text-xs",children:e.jsx(te,{placeholder:"Anyone"})}),e.jsxs(le,{children:[e.jsx(q,{value:"all",children:"Anyone"}),e.jsx(q,{value:"unassigned",children:"Unassigned"}),j.map(s=>e.jsx(q,{value:s.id,children:s.full_name||"Unknown"},s.id))]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(Q,{className:"text-xs flex items-center gap-1.5",children:[e.jsx(Se,{className:"w-3.5 h-3.5"})," Value Range"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(W,{type:"number",placeholder:"Min",value:a.valueMin,onChange:s=>f({...a,valueMin:s.target.value}),className:"h-8 text-xs"}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"—"}),e.jsx(W,{type:"number",placeholder:"Max",value:a.valueMax,onChange:s=>f({...a,valueMax:s.target.value}),className:"h-8 text-xs"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(Q,{className:"text-xs flex items-center gap-1.5",children:[e.jsx(Te,{className:"w-3.5 h-3.5"})," Expected Close Date"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(W,{type:"date",value:a.closeDateFrom,onChange:s=>f({...a,closeDateFrom:s.target.value}),className:"h-8 text-xs"}),e.jsx("span",{className:"text-muted-foreground text-xs",children:"—"}),e.jsx(W,{type:"date",value:a.closeDateTo,onChange:s=>f({...a,closeDateTo:s.target.value}),className:"h-8 text-xs"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs(Q,{className:"text-xs flex items-center gap-1.5",children:[e.jsx(us,{className:"w-3.5 h-3.5"})," Tag / Label"]}),e.jsx(W,{placeholder:"Filter by tag...",value:a.tag,onChange:s=>f({...a,tag:s.target.value}),className:"h-8 text-xs"})]}),e.jsxs("div",{className:"space-y-1.5 border-t pt-3",children:[e.jsxs(Q,{className:"text-xs flex items-center gap-1.5",children:[e.jsx(va,{className:"w-3.5 h-3.5"})," UTM Attribution"]}),e.jsx(W,{placeholder:"utm_source (e.g. google)",value:a.utmSource,onChange:s=>f({...a,utmSource:s.target.value}),className:"h-8 text-xs"}),e.jsx(W,{placeholder:"utm_medium (e.g. cpc)",value:a.utmMedium,onChange:s=>f({...a,utmMedium:s.target.value}),className:"h-8 text-xs"}),e.jsx(W,{placeholder:"utm_campaign",value:a.utmCampaign,onChange:s=>
1f({...a,utmCampaign:s.target.value}),className:"h-8 text-xs"})]})]})})]})}function Ya(){const[a,f]=o.useState(null),{formatDateTime:j}=fs(),[i,D]=o.useState({insights:!0,atRisk:!0,opportunities:!1}),{mutate:C,isPending:_}=za(),N=()=>{C(void 0,{onSuccess:s=>{f(s)}})},M=s=>{D(y=>({...y,[s]:!y[s]}))},v=s=>new Intl.NumberFormat("en-GB",{style:"currency",currency:"GBP",minimumFractionDigits:0,maximumFractionDigits:0}).format(s),b=s=>{switch(s){case"high":return"bg-red-500";case"medium":return"bg-amber-500";case"low":return"bg-blue-500";default:return"bg-muted"}},d=s=>{switch(s){case"opportunity":return e.jsx(be,{className:"h-4 w-4 text-emerald-400"});case"risk":return e.jsx(Ze,{className:"h-4 w-4 text-red-400"});case"trend":return e.jsx(Ye,{className:"h-4 w-4 text-blue-400"});default:return e.jsx(de,{className:"h-4 w-4 text-primary"})}};return a?e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(me,{className:"h-6 w-6 text-primary"}),"AI Pipeline Intelligence"]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Last updated: ",j(a.metadata.generatedAt)]})]}),e.jsxs(u,{onClick:N,disabled:_,variant:"outline",size:"sm",className:"gap-2",children:[_?e.jsx(xe,{className:"h-4 w-4 animate-spin"}):e.jsx(ps,{className:"h-4 w-4"}),"Refresh"]})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[e.jsx(F,{children:e.jsxs(E,{className:"pt-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground text-sm mb-1",children:[e.jsx(Se,{className:"h-4 w-4"}),"Total Pipeline"]}),e.jsx("p",{className:"text-2xl font-bold",children:v(a.summary.totalPipelineValue)})]})}),e.jsx(F,{children:e.jsxs(E,{className:"pt-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground text-sm mb-1",children:[e.jsx(Je,{className:"h-4 w-4"}),"Weighted Value"]}),e.jsx("p",{className:"text-2xl font-bold text-primary",children:v(a.summary.weightedPipelineValue)})]})}),e.jsx(F,{children:e.jsxs(E,{className:"pt-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground text-sm mb-1",children:[e.jsx(Te,{className:"h-4 w-4"}),"This Month"]}),e.jsx("p",{className:"text-2xl font-bold text-emerald-400",children:v(a.summary.predictedCloseThisMonth)})]})}),e.jsx(F,{children:e.jsxs(E,{className:"pt-4",children:[e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground text-sm mb-1",children:[e.jsx(Ye,{className:"h-4 w-4"}),"Health Score"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("p",{className:"text-2xl font-bold",children:[a.summary.averageHealthScore,"%"]}),e.jsx(Gs,{value:a.summary.averageHealthScore,className:"h-2 flex-1"})]})]})})]}),e.jsxs(F,{children:[e.jsx(K,{className:"pb-3",children:e.jsx(H,{className:"text-lg",children:"Revenue Forecast"})}),e.jsx(E,{children:e.jsx("div",{className:"grid md:grid-cols-3 gap-4",children:[{label:"This Month",data:a.forecast.thisMonth},{label:"Next Month",data:a.forecast.nextMonth},{label:"This Quarter",data:a.forecast.thisQuarter}].map(s=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium",children:s.label}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex justify-between text-xs",children:[e.jsx("span",{className:"text-emerald-400",children:"Optimistic"}),e.jsx("span",{children:v(s.data.optimistic)})]}),e.jsxs("div",{className:"flex justify-between text-xs",children:[e.jsx("span",{className:"text-primary font-medium",children:"Realistic"}),e.jsx("span",{className:"font-medium",children:v(s.data.realistic)})]}),e.jsxs("div",{className:"flex justify-between text-xs",children:[e.jsx("span",{className:"text-amber-400",children:"Pessimistic"}),e.jsx("span",{children:v(s.data.pessimistic)})]})]})]},s.label))})})]}),e.jsx(Oe,{open:i.insights,onOpenChange:()=>M("insights"),children:e.jsxs(F,{children:[e.jsx(Le,{asChild:!0,children:e.jsx(K,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(H,{
1className:"text-lg flex items-center gap-2",children:[e.jsx(de,{className:"h-5 w-5 text-primary"}),"Key Insights (",a.insights.length,")"]}),i.insights?e.jsx(Fe,{className:"h-5 w-5"}):e.jsx(Re,{className:"h-5 w-5"})]})})}),e.jsx(ze,{children:e.jsx(E,{className:"space-y-3",children:a.insights.map((s,y)=>e.jsxs("div",{className:"flex gap-3 p-3 rounded-lg bg-muted/50",children:[d(s.type),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("p",{className:"font-medium text-sm",children:s.title}),e.jsx("div",{className:`w-2 h-2 rounded-full ${b(s.impact)}`})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.description}),e.jsxs("p",{className:"text-xs text-primary mt-1 flex items-center gap-1",children:[e.jsx(Qe,{className:"h-3 w-3"}),s.action]})]})]},y))})})]})}),a.atRiskDeals.length>0&&e.jsx(Oe,{open:i.atRisk,onOpenChange:()=>M("atRisk"),children:e.jsxs(F,{className:"border-red-500/30",children:[e.jsx(Le,{asChild:!0,children:e.jsx(K,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(H,{
1className:"text-lg flex items-center gap-2 text-red-400",children:[e.jsx(Ze,{className:"h-5 w-5"}),"At-Risk Deals (",a.atRiskDeals.length,")"]}),i.atRisk?e.jsx(Fe,{className:"h-5 w-5"}):e.jsx(Re,{className:"h-5 w-5"})]})})}),e.jsx(ze,{children:e.jsx(E,{className:"space-y-3",children:a.atRiskDeals.map((s,y)=>e.jsxs("div",{className:"flex gap-3 p-3 rounded-lg bg-red-500/5 border border-red-500/20",children:[e.jsx(_a,{className:"h-5 w-5 text-red-400 shrink-0 mt-0.5"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("p",{className:"font-medium",children:s.dealName}),e.jsx(B,{variant:"outline",className:"text-red-400 border-red-500/30",children:v(s.value)})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.risk}),e.jsxs("p",{className:"text-xs text-red-400 mt-1 font-medium",children:["⚡ ",s.urgentAction]})]})]},y))})})]})}),a.topOpportunities.length>0&&e.jsx(Oe,{open:i.opportunities,onOpenChange:()=>M("opportunities"),children:e.jsxs(F,{className:"border-emerald-500/30",children:[e.jsx(Le,{asChild:!0,children:e.jsx(K,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(H,{
1className:"text-lg flex items-center gap-2 text-emerald-400",children:[e.jsx(be,{className:"h-5 w-5"}),"Top Opportunities (",a.topOpportunities.length,")"]}),i.opportunities?e.jsx(Fe,{className:"h-5 w-5"}):e.jsx(Re,{className:"h-5 w-5"})]})})}),e.jsx(ze,{children:e.jsx(E,{className:"space-y-3",children:a.topOpportunities.map((s,y)=>e.jsxs("div",{className:"flex gap-3 p-3 rounded-lg bg-emerald-500/5 border border-emerald-500/20",children:[e.jsx(Je,{className:"h-5 w-5 text-emerald-400 shrink-0 mt-0.5"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsx("p",{className:"font-medium",children:s.dealName}),e.jsx(B,{variant:"outline",className:"text-emerald-400 border-emerald-500/30",children:v(s.value)})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.reason}),e.jsxs("p",{className:"text-xs text-emerald-400 mt-1",children:["Next step: ",s.nextStep]})]})]},y))})})]})}),e.jsxs("p",{className:"text-xs text-center text-muted-foreground",children:["Analysis based on ",a.metadata.dealsAnalyzed," active deals and ",a.metadata.historicalDealsUsed," historical deals • Historical win rate: ",a.metadata.historicalWinRate,"% • Avg sales cycle: ",a.metadata.averageSalesCycle," days"]})]}):e.jsxs(F,{className:"border-dashed border-primary/30 bg-gradient-to-br from-primary/5 to-transparent",children:[e.jsxs(K,{children:[e.jsxs(H,{
1className:"flex items-center gap-2",children:[e.jsx(me,{className:"h-5 w-5 text-primary"}),"AI Deal Predictions"]}),e.jsx(Qs,{children:"Get AI-powered forecasts, insights, and recommendations for your pipeline"})]}),e.jsx(E,{children:e.jsx(u,{onClick:N,disabled:_,className:"gap-2",size:"lg",children:_?e.jsxs(e.Fragment,{children:[e.jsx(xe,{className:"h-5 w-5 animate-spin"}),"Analyzing Pipeline..."]}):e.jsxs(e.Fragment,{children:[e.jsx(me,{className:"h-5 w-5"}),"Generate Predictions"]})})})]})}const et=[{value:"cold-outreach",label:"Cold Outreach",description:"Introduce your services"},{value:"follow-up",label:"Follow-up",description:"After a previous interaction"},{value:"meeting-request",label:"Meeting Request",description:"Request a demo or call"},{value:"proposal",label:"Proposal Follow-up",description:"Quote or proposal follow-up"},{value:"thank-you",label:"Thank You",description:"After a meeting"},{value:"re-engagement",label:"Re-engagement",description:"Revive a cold lead"},{value:"value-add",label:"Value Add",description:"Share content or insights"},{value:"closing",label:"Closing",description:"Finalize a deal"}],st=[{value:"professional",label:"Professional"},{value:"friendly",label:"Friendly"},{value:"casual",label:"Casual"},{value:"formal",label:"Formal"},{value:"enthusiastic",label:"Enthusiastic"}];function at({contactId:a,contactName:f,contactEmail:j}){var k;const[i,D]=o.useState(!1),[C,_]=o.useState("cold-outreach"),[N,M]=o.useState("professional"),[v,b]=o.useState(""),[d,s]=o.useState(null),[y,T]=o.useState(null),{mutate:l,isPending:r}=Ba(),S=()=>{l({contactId:a,emailType:C,tone:N,context:v,includeCallToAction:!0},{onSuccess:g=>{s(g)}})},c=(g,O)=>{navigator.clipboard.writeText(g),T(O),L.success("Copied to clipboard!"),setTimeout(()=>T(null),2e3)},w=()=>{s(null),b("")};return e.jsxs(we,{open:i,onOpenChange:D,children:[e.jsx(Ks,{asChild:!0,children:e.jsxs(u,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(me,{className:"h-4 w-4"}),"AI Write Email"]})}),e.jsxs(Ce,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(_e,{children:[e.jsxs(ke,{className:"flex items-center gap-2",children:[e.jsx(me,{className:"h-5 w-5 text-primary"}),"AI Email Writer"]}),e.jsxs(We,{children:["Generate a personalized email for ",f||"this contact",j&&e.jsxs("span",{className:"text-muted-foreground",children:[" (",j,")"]})]})]}),d?e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs(F,{children:[e.jsx(K,{className:"pb-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(H,{className:"text-sm",children:"Subject Line"}),e.jsx(u,{variant:"ghost",size:"sm",onClick:()=>c(d.subject,"subject"),children:y==="subject"?e.jsx(Ee,{className:"h-4 w-4 text-green-500"}):e.jsx(fe,{className:"h-4 w-4"})})]})}),e.jsxs(E,{children:[e.jsx("p",{className:"font-medium",children:d.subject}),d.alternativeSubjects&&d.alternativeSubjects.length>0&&e.jsxs("div",{className:"mt-3 space-y-1",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Alternatives:"}),d.alternativeSubjects.map((g,O)=>e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx("span",{children:"•"}),e.jsx("span",{children:g}),e.jsx(u,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>c(g,`alt-${O}`),children:y===`alt-${O}`?e.jsx(Ee,{className:"h-3 w-3 text-green-500"}):e.jsx(fe,{className:"h-3 w-3"})})]},O))]})]})]}),e.jsxs(F,{children:[e.jsx(K,{className:"pb-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(H,{className:"text-sm",children:"Email Body"}),e.jsx(u,{variant:"ghost",size:"sm",onClick:()=>c(d.body,"body"),children:y==="body"?e.jsx(Ee,{className:"h-4 w-4 text-green-500"}):e.jsx(fe,{className:"h-4 w-4"})})]})}),e.jsx(E,{children:e.jsx("div",{className:"whitespace-pre-wrap text-sm",children:d.body})})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(B,{variant:"secondary",children:[e.jsx(De,{className:"h-3 w-3 mr-1"}),d.estimatedReadTime," read"]}),(k=d.personalizedElements)==null?void 0:k.map((g,O)=>e.jsxs(B,{variant:"outline",className:"text-xs",children:["✓ ",g]},O))]}),d.toneAnalysis&&e.jsx("p",{className:"text-xs text-muted-foreground italic",children:d.toneAnalysis}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(u,{onClick:w,variant:"outline",className:"flex-1 gap-2",children:[e.jsx(ps,{className:"h-4 w-4"}),"Generate Another"]}),e.jsxs(u,{onClick:()=>{c(`Subject: ${d.subject}
2
3${d.body}`,"all")},className:"flex-1 gap-2",children:[e.jsx(fe,{className:"h-4 w-4"}),"Copy All"]})]})]}):e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(Q,{children:"Email Type"}),e.jsxs(se,{value:C,onValueChange:_,children:[e.jsx(ae,{children:e.jsx(te,{})}),e.jsx(le,{children:et.map(g=>e.jsx(q,{value:g.value,children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:g.label}),e.jsx("span",{className:"text-xs text-muted-foreground",children:g.description})]})},g.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Q,{children:"Tone"}),e.jsxs(se,{value:N,onValueChange:M,children:[e.jsx(ae,{children:e.jsx(te,{})}),e.jsx(le,{children:st.map(g=>e.jsx(q,{value:g.value,children:g.label},g.value))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Q,{children:"Additional Context (Optional)"}),e.jsx(ts,{placeholder:"Add any specific details, previous conversations, or points you want to mention...",value:v,onCh
3ange:g=>b(g.target.value),rows:3})]}),e.jsx(u,{onClick:S,disabled:r,className:"w-full gap-2",children:r?e.jsxs(e.Fragment,{children:[e.jsx(xe,{className:"h-4 w-4 animate-spin"}),"Generating..."]}):e.jsxs(e.Fragment,{children:[e.jsx(me,{className:"h-4 w-4"}),"Generate Email"]})})]})]})]})}function sl(){var J;const{data:a,isLoading:f}=ns(),j=Hs(),i=Xs(),[D,C]=o.useState(),[_,N]=o.useState(!1),[M,v]=o.useState(!1),[b,d]=o.useState(i?"list":"board"),[s,y]=o.useState(!1),[T,l]=o.useState([]),[r,S]=o.useState(ws),c=Va(),w=o.useMemo(()=>(c.data||[]).map(n=>({id:n.user_id,full_name:n.full_name})),[c.data]);o.useEffect(()=>{i&&b==="board"&&d("list")},[i,b]);const k=ba(),[g,O]=ya(),[X,G]=o.useState(!1);ra("pipeline",{"+ New Deal":()=>N(!0),Board:()=>d("board"),List:()=>d("list"),Forecast:()=>k("/reports"),"Filter ▾":()=>G(!0),"Sort ▾":()=>G(!0)},[X]),o.useEffect(()=>{g.get("add")==="true"&&(N(!0),O({},{replace:!0}))},[g,O]);const P=D||((J=a==null?void 0:a[0])==null?void 0:J.id),{data:m}=rs(P),$=o.useMemo(()=>{const n=(m==null?void 0:m.deals)||[],h=r,R=h.valueMin?Number(h.valueMin):null,Z=h.valueMax?Number(h.valueMax):null,ie=h.closeDateFrom?new Date(h.closeDateFrom).getTime():null,I=h.closeDateTo?new Date(h.closeDateTo).getTime():null,re=h.tag.trim().toLowerCase(),t=h.utmSource.trim().toLowerCase(),x=h.utmMedium.trim().toLowerCase(),p=h.utmCampaign.trim().toLowerCase();return n.filter(V=>{var Ke;if(h.stageId!=="all"&&V.stage_id!==h.stageId||h.assignedUser==="unassigned"&&V.owner_id||h.assignedUser!=="all"&&h.assignedUser!=="unassigned"&&V.owner_id!==h.assignedUser)return!1;const Y=Number(V.value||0);if(R!==null&&Y<R||Z!==null&&Y>Z)return!1;if(ie||I){const ge=V.expected_close_date?new Date(V.expected_close_date).getTime():null;if(!ge||ie&&ge<ie||I&&ge>I)return!1}if(re&&!(((Ke=V.custom_fields)==null?void 0:Ke.tags)||[]).some(Cs=>String(Cs).toLowerCase().includes(re)))return!1;const U=V.contacts||{};return!(t&&String(U.utm_source||"").toLowerCase()!==t||x&&String(U.utm_medium||"").toLowerCase()!==x||p&&!String(U.utm_campaign||"").toLowerCase().includes(p))})},[m==null?void 0:m.deals,r]),he=$.length;return ca("pipeline",he>0?`${he} open deals`:void 0),o.useEffect(()=>{const n=h=>{h.detail.action==="new-deal"&&N(!0)};return window.addEventListener("inl:quick-action",n),()=>window.removeEventListener("inl:quick-action",n)},[]),e.jsxs(Js,{children:[e.jsx(qa,{title:"Pipeline",description:"Manage your deals across stages"}),e.jsxs("main",{className:"flex-1 p-4 sm:p-6 overflow-auto mobile-scroll",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 rounded-xl bg-primary/15 backdrop-blur-md hidden sm:flex",children:e.jsx(Zs,{className:"w-6 h-6 text-primary"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl font-bold",children:"Pipeline"}),e.jsx("p",{className:"text-muted-foreground text-sm hidden sm:block",children:"Manage your deals across stages"})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 sm:gap-3",children:[e.jsx(Za,{filters:r,onFiltersChange:S,teamMembers:w,stages:(m==null?void 0:m.stages)||[],externalOpen:X,onExternalOpenChange:G}),e.jsxs(Ia,{type:"single",value:b,onValueChange:n=>n&&d(n),children:[e.jsx(Be,{value:"board","aria-label":"Board view",children:e.jsx(Sa,{className:"w-4 h-4"})}),e.jsx(Be,{value:"list","aria-label":"List view",children:e.jsx(Ys,{className:"w-4 h-4"})}),e.jsx(Be,{value:"forecast","aria-label":"Forecast view",children:e.jsx(be,{className:"w-4 h-4"})})]}),f?e.jsx(ee,{className:"h-10 w-32 sm:w-48"}):e.jsxs(se,{value:P,onValueChange:C,children:[e.jsx(ae,{className:"w-32 sm:w-48",children:e.jsx(te,{placeholder:"Select pipeline"})}),e.jsx(le,{children:a==null?void 0:a.map(n=>e.jsxs(q,{value:n.id,children:[n.name,n.is_default&&e.jsx("span",{className:"ml-2 text-xs text-muted-foreground",children:"(Default)"})]},n.id))})]}),e.jsx(La,{id:"pipeline-automations",title:"Pipeline Automations",description:"Set up automatic actions when deals move between stages. Send emails, create tasks, or trigger workflows automatically!",side:"bottom",children:e.jsx(u,{variant:"outline",size:"icon",onClick:()=>v(!0),disabled:!P,children:e.jsx(de,{className:"w-4 h-4"})})}),e.jsxs(ea,{children:[e.jsx(sa,{asChild:!0,children:e.jsxs(u,{variant:"outline",size:"sm",children:[e.jsx(me,{className:"w-4 h-4 mr-2 text-primary"}),"AI Tools"]})}),e.jsxs(aa,{className:"w-[400px] sm:w-[600px] overflow-y-auto",children:[e.jsx(ta,{children:e.jsx(la,{children:"AI-Powered Sales Tools"})}),e.jsxs("div",{className:"mt-4 space-y-6",children:[e.jsx(Ya,{}),e.jsx(at,{})]})]})]}),e.jsx(u,{variant:"outline",size:"icon",onClick:()=>k("/settings/pipelines"),className:"hidden sm:flex",children:e.jsx(ia,{className:"w-4 h-4"})}),e.jsxs(u,{variant:"outline",size:"sm",className:"hidden sm:flex",onClick:()=>{ss(async()=>
3{const{exportToCSV:n,DEAL_EXPORT_COLUMNS:h}=await import("./export-BcRDJOy3.js");return{exportToCSV:n,DEAL_EXPORT_COLUMNS:h}},[]).then(({exportToCSV:n,DEAL_EXPORT_COLUMNS:h})=>{$.length&&n($,h,"deals")})},children:[e.jsx(cs,{className:"w-4 h-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"Export"})]}),b==="list"&&e.jsxs(u,{variant:"outline",size:"sm",onClick:()=>y(!0),disabled:T.length===0,children:[e.jsx(bs,{className:"w-4 h-4 sm:mr-2"}),e.jsxs("span",{className:"hidden sm:inline",children:["Bulk Actions",T.length>0?` (${T.length})`:""]})]}),!j&&e.jsxs(u,{size:"sm",onClick:()=>N(!0),children:[e.jsx(ye,{className:"w-4 h-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline",children:"Add Deal"})]})]})]}),e.jsx($a,{title:"Pipeline failed to load",children:b==="board"?e.jsx(ga,{selectedPipelineId:P}):b==="forecast"?e.jsx(Xa,{pipelineId:P}):e.jsx(Ka,{deals:$,stages:(m==null?void 0:m.stages)||[],selectedDealIds:T,onSelectedDealIdsChange:l})})]}),e.jsx(Na,{open:_,onOpenChange:N,defaultPipelineId:P}),P&&e.jsx(Ha,{pipelineId:P,open:M,onOpenChange:v}),e.jsx(Ja,{open:s,onOpenChange:y,selectedDealIds:T,stages:(m==null?void 0:m.stages)||[],onComplete:()=>l([])}),e.jsx(na,{})]})}export{sl 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.