1import{u as $,al as B,r as N,j as e,aq as F,B as y,aN as L,Q as n,$ as i,ba as h,ap as P,p as Q,q as w,t as D,bj as R,bk as O,bl as V,bm as c,b9 as z,aV as K,bi as H,bp as U,bq as X,br as G,bs as J,bt as W,bu as Y,bv as Z,K as g,an as o,m as d,d as ee}from"./index-B01jGDSO.js";import{T as se,a as ae,b as m,c as te}from"./tabs-DXmrEda4.js";import{I as le}from"./InlineEmptyState-DpbsC1Nn.js";import{u as re,a as ne}from"./useOrgQuery-JRPR4imB.js";import{E as ie}from"./ellipsis-OJmsTjJu.js";import{P as ce}from"./pencil-DNtHowmg.js";import{C as oe}from"./copy-DFDGBUs2.js";function je(){const r=$(),{orgId:p}=re(),j=B(),[t,_]=N.useState("all"),[x,u]=N.useState(null),{data:l=[],isLoading:S}=ne(["sms-campaigns"],async s=>{const{data:a,error:v}=await g.from("sms_campaigns").select("id, name, status, message_body, total_recipients, total_sent, total_delivered, total_failed, created_at, scheduled_at, sent_at").eq("organization_id",s).order("created_at",{ascending:!1});if(v)throw v;return a}),b=t==="all"?l:l.filter(s=>s.status===t.toUpperCase()),k=l.length,f=l.reduce((s,a)=>s+a.total_delivered,0),A=l.reduce((s,a)=>s+a.total_failed,0),C=l.reduce((s,a)=>s+a.total_sent,0),T=C>0?(f/C*100).toFixed(1):"â",M=async()=>{if(!x)return;const{error:s}=await g.from("sms_campaigns").delete().eq("id",x);if(s){o.error("Failed to delete campaign");return}o.success("Campaign deleted"),u(null),j.invalidateQueries({queryKey:["sms-campaigns"]})},E=async s=>{if(!p)return;const{error:a}=await g.from("sms_campaigns").insert({organization_id:p,name:`${s.name} (Copy)`,message_body:s.message_body,status:"DRAFT"});if(a){o.error("Clone failed");return}o.success("Campaign cloned as draft"),j.invalidateQueries({queryKey:["sms-campaigns"]})},q=s=>{switch(s){case"COMPLETED":return e.jsx(d,{className:"bg-green-600 text-white",children:"Completed"});case"SCHEDULED":return e.jsx(d,{variant:"secondary",children:"Scheduled"});case"ACTIVE":return e.jsx(d,{className:"bg-blue-600 text-white",children:"Active"});default:return e.jsx(d,{variant:"outline",children:"Draft"})}},I=[{label:"Campaigns",value:k,icon:h,color:"text-blue-500"},{label:"Delivered",value:f,icon:w,color:"text-green-500"},{label:"Failed",value:A,icon:D,color:"text-destructive"},{label:"Delivery Rate",value:`${T}%`,icon:ee,color:"text-primary"}];return e.jsxs(F,{title:"SMS Blast",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Send targeted SMS campaigns to customer segments."}),e.jsxs(y,{onClick:()=>r("/marketing/sms-blast/new"),children:[e.jsx(L,{className:"mr-2 h-4 w-4"}),"Create SMS Blast"]})]}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:I.map(s=>e.jsx(n,{children:e.jsxs(i,{className:"p-4 flex items-center gap-3",children:[e.jsx(s.icon,{className:`h-5 w-5 ${s.color} shrink-0`}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:s.label}),e.jsx("p",{className:"text-lg font-semibold",children:s.value})]})]})},s.label))}),e.jsxs(se,{value:t,onValueChange:_,children:[e.jsxs(ae,{children:[e.jsx(m,{value:"all",children:"All"}),e.jsx(m,{value:"completed",children:"Completed"}),e.jsx(m,{value:"scheduled",children:"Scheduled"}),e.jsx(m,{value:"draft",children:"Draft"})]}),e.jsx(te,{value:t,children:S?e.jsx(n,{children:e.jsx(i,{className:"p-8 text-center text-sm text-muted-foreground",children:"Loadingâ¦"})}):b.length===0?e.jsx(n,{children:e.jsx(i,{className:"p-8",children:e.jsx(le,{icon:h,title:`No ${t==="all"?"":t+" "}campaigns yet`,description:"Create a campaign to reach your audience."})})}):e.jsx("div",{className:"space-y-2",children:b.map(s=>e.jsx(n,{className:"hover:bg-muted/30 transition-colors cursor-pointer",onClick:()=>r(`/marketing/sms-blast/${s.id}`),children:e.jsxs(i,{className:"p-4 flex items-center gap-4",children:[e.jsx(h,{className:"h-8 w-8 text-blue-500 shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:s.name}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[P(ne
1w Date(s.created_at),"MMM d, yyyy")," · ",s.total_recipients," recipients"]})]}),e.jsxs("div",{className:"hidden sm:flex items-center gap-3 text-xs",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(Q,{className:"h-3.5 w-3.5 text-muted-foreground"}),s.total_sent]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(w,{className:"h-3.5 w-3.5 text-green-500"}),s.total_delivered]}),s.total_failed>0&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(D,{className:"h-3.5 w-3.5 text-destructive"}),s.total_failed]})]}),q(s.status),e.jsxs(R,{children:[e.jsx(O,{asChild:!0,onClick:a=>a.stopPropagation(),children:e.jsx(y,{variant:"ghost",size:"icon",className:"h-8 w-8",children:e.jsx(ie,{className:"h-4 w-4"})})}),e.jsxs(V,{align:"end",onClick:a=>a.stopPropagation(),children:[e.jsxs(c,{onClick:()=>r(`/marketing/sms-blast/${s.id}`),children:[e.jsx(z,{className:"mr-2 h-4 w-4"}),"View"]}),s.status==="DRAFT"&&e.jsxs(c,{onClick:()=>r(`/marketing/sms-blast/new?edit=${s.id}`),children:[e.jsx(ce,{className:"mr-2 h-4 w-4"}),"Edit"]}),e.jsxs(c,{onClick:()=>E(s),children:[e.jsx(oe,{className:"mr-2 h-4 w-4"}),"Clone"]}),e.jsxs(c,{className:"text-destructive",onClick:()=>u(s.id),children:[e.jsx(K,{className:"mr-2 h-4 w-4"}),"Delete"]})]})]})]})},s.id))})})]})]}),e.jsx(H,{open:!!x,onOpenChange:()=>u(null),children:e.jsxs(U,{children:[e.jsxs(X,{children:[e.jsx(G,{children:"Delete Campaign?"}),e.jsx(J,{children:"This action cannot be undone. All recipient data will be permanently deleted."})]}),e.jsxs(W,{children:[e.jsx(Y,{children:"Cancel"}),e.jsx(Z,{onClick:M,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Delete"})]})]})})]})}export{je 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.