1import{u as A,O as U,l as O,r as y,j as e,A as I,q as w,be as u,bC as M,t as F,v as P,ao as _,ap as E,aq as D,ar as S,as as l,c_ as $,am as Q,b2 as C,c as V,D as q,B,G as H,H as K,E as G,av as J}from"./index.BZs0H5f9.js";const c={QUEUED:"bg-gray-400",SENT:"bg-blue-400",DELIVERED:"bg-emerald-500",READ:"bg-emerald-500",FAILED:"bg-red-400"},b={QUEUED:"Queued",SENT:"Sent",DELIVERED:"Delivered",READ:"Read",FAILED:"Failed"},j={order_confirmation:"Order Confirmation",order_shipped:"Order Shipped",order_delivered:"Order Delivered",cod_confirmation:"COD Confirmation",payment_reminder:"Payment Reminder",ndr_update:"NDR Update",abandoned_cart:"Abandoned Cart","abandoned_cart.reminder_1":"Cart Reminder 1","abandoned_cart.reminder_2":"Cart Reminder 2","abandoned_cart.reminder_3":"Cart Reminder 3",promotional:"Promotional"};function W(t){return V({queryKey:["messages-sent",t],queryFn:async()=>{const n=new URLSearchParams;return t.page&&n.append("page",t.page),t.per_page&&n.append("per_page",t.per_page),t.status&&t.status!=="all"&&n.append("status",t.status),t.event&&t.event!=="all"&&n.append("event",t.event),t.from&&n.append("from",t.from),t.to&&n.append("to",t.to),t.search&&n.append("search",t.search),await C.get(`/comet/api/wa/managed/messages/sent/?${n}`)},staleTime:3e4,keepPreviousData:!0})}function X({message:t,open:n,onOpenChange:r}){if(!t)return null;const i=c[t.status]||c.QUEUED,p=b[t.status]||"Unknown";return e.jsx(q,{open:n,onOpenChange:r,children:e.jsxs(B,{className:"max-w-lg sm:max-w-xl max-h-[90vh] overflow-y-auto",children:[e.jsx(H,{children:e.jsx(K,{className:"text-left",children:"Message Details"})}),e.jsxs("div",{className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-600 dark:text-gray-400",children:[e.jsx("span",{className:`inline-block h-1.5 w-1.5 rounded-full ${i} flex-shrink-0`}),p]}),t.event&&e.jsx("span",{className:"text-xs text-gray-500 bg-gray-50 dark:bg-gray-800 px-2 py-0.5 rounded",children:j[t.event]||t.event})]}),e.jsx("div",{className:"grid grid-cols-2 gap-3",children:[{label:"Sent To",value:t.masked_phone,mono:!0},{label:"Template",value:t.template_name},{label:"Sent At",value:t.sent_at?new Date(t.sent_at).toLocaleString():"Pending"},{label:"Delivered At",value:t.delivered_at?new Date(t.delivered_at).toLocaleString():"-"}].map(d=>e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] font-semibold text-gray-400 uppercase tracking-wider",children:d.label}),e.jsx("p",{className:u("text-sm font-medium text-gray-900 dark:text-gray-100 mt-0.5",d.mono&&"font-mono"),children:d.value})]},d.label))}),t.order_id&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] font-semibold text-gray-400 uppercase tracking-wider",children:"Related Order"}),e.jsxs("a",{href:`/orders/${t.order_id}`,className:"flex items-center gap-1.5 text-sm text-gray-900 dark:text-gray-100 hover:underline font-medium mt-0.5",children:["Order #",t.order_id,e.jsx(G,{className:"w-3 h-3 text-gray-400"})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] font-semibold text-gray-400 uppercase tracking-wider mb-1.5",children:"Message Content"}),e.jsx("div",{className:"p-3 bg-gray-50 dark:bg-gray-800 rounded-lg",children:e.jsx("p",{className:"text-sm text-gray-700 dark:text-gray-300 whitespace-pre-wrap",children:t.body_text})})]}),t.status==="FAILED"&&t.failure_reason&&e.jsxs("div",{className:"flex items-start gap-2 text-xs",children:[e.jsx(J,{className:"h-3 w-3 text-red-400 mt-0.5 flex-shrink-0"}),e.jsxs("div",{children:[e.jsx("span",{className:"font-semibold text-red-700 dark:text-red-300",children:"Failure Reason: "}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:t.failure_reason})]})]}),t.meta_json&&e.jsxs("details",{className:"text-xs",children:[e.jsx("summary",{className:"cursor-pointer text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 transition-colors",children:"View Raw Delivery Receipt"}),e.jsx("pre",{className:"mt-2 p-2 bg-gray-50 dark:bg-gray-800 rounded text-xs overflow-x-auto text-gray-600 dark:text-gray-400",children:JSON.stringify(t.meta_json,null,2)})]})]})]})})}function z(){const t=A(),{toast:n}=U();O();const[r,i]=y.useState({page:1,per_page:20,status:"all",event:"all",from:"",to:"",search:""}),[p,d]=y.useState(null),[v,f]=y.useState(!1),{data:N,isLoading:g,refetch:L}=W(r),o=N?.results||[],m=N?.count||0,k=Math.ceil(m/r.per_page),R=async()=>{f(!0);try{const a=new URLSearchParams;r.status!=="all"&&a.append("status",r.status),r.event!=="all"&&a.append("event",r.event),r.from&&a.append("from",r.from),r.to&&a.append("to",r.to);const s=await C.get(`/comet/api/wa/managed/messages/export/?${a}`,{responseType:"blob"}),T=window.URL.createObjectURL(new Blob([s])),x=document.createElement("a");x.href=T,x.setAttribute("download",`messages-${new Date().toISOString().split("T")[0]}.csv`),document.body.appendChild(x),x.click(),x.remove(),n({title:"Export Complete",description:"Your messages have been exported."})}catch(a){n({title:"Export Failed",description:a.message||"Failed to export messages.",variant:"destructive"})}finally{f(!1)}}
1,h=r.search||r.status!=="all"||r.event!=="all";return e.jsxs("div",{className:"min-h-screen bg-[#f6f6f7] dark:bg-gray-950 p-3 sm:p-6",children:[e.jsxs("div",{className:"max-w-[1400px] mx-auto space-y-5",children:[e.jsxs("div",{className:"flex items-end justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("button",{onClick:()=>t("/comet"),className:"h-8 w-8 rounded-md flex items-center justify-center text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors flex-shrink-0",children:e.jsx(I,{className:"h-4 w-4"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"font-heading text-xl sm:text-2xl tracking-tight text-gray-900 dark:text-gray-100",children:"Messages Sent"}),e.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400 mt-0.5 hidden sm:block",children:"Messages sent to your customers via OrderLyne WhatsApp"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx("button",{onClick:()=>L(),disabled:g,className:"h-8 w-8 rounded-md flex items-center justify-center text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors flex-shrink-0 disabled:opacity-50",children:e.jsx(w,{className:u("h-3.5 w-3.5",g&&"animate-spin")})}),e.jsxs("button",{onClick:R,disabled:v,className:"h-8 rounded-md text-xs font-medium border border-gray-200 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors inline-flex items-center justify-center gap-1.5 px-3 disabled:opacity-50",children:[e.jsx(M,{className:u("h-3.5 w-3.5",v&&"animate-pulse")}),e.jsx("span",{className:"hidden sm:inline",children:"Export"})]})]})]}),e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3 sm:gap-4",children:[{label:"Total Messages",value:m,dot:null},{label:"Delivered",value:o.filter(a=>a.status==="DELIVERED"||a.status==="READ").length,dot:"bg-emerald-500"},{label:"Sent",value:o.filter(a=>a.status==="SENT").length,dot:"bg-blue-400"},{label:"Failed",value:o.filter(a=>a.status==="FAILED").length,dot:"bg-red-400"}].map(a=>e.jsxs("div",{className:"bg-white dark:bg-gray-900 rounded-lg border border-gray-200/80 dark:border-gray-800 p-3.5 sm:p-4",children:[e.jsx("p",{className:"text-lg sm:text-xl font-bold text-gray-900 dark:text-gray-100",children:a.value}),e.jsxs("p",{className:"text-[11px] font-medium text-gray-400 mt-1 flex items-center gap-1.5",children:[a.dot&&e.jsx("span",{className:`inline-block h-1.5 w-1.5 rounded-full ${a.dot} flex-shrink-0`}),a.label]})]},a.label))}),e.jsx("div",{className:"bg-white dark:bg-gray-900 rounded-lg border border-gray-200/80 dark:border-gray-800",children:e.jsx("div",{className:"px-4 sm:px-5 py-3",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(F,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-gray-400"}),e.jsx(P,{placeholder:"Search by phone or order...",value:r.search,onChange:a=>i(s=>({...s,search:a.target.value,page:1})),className:"pl-9 h-8 text-sm bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-700"})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsxs(_,{value:r.status,onValueChange:a=>i(s=>({...s,status:a,page:1})),children:[e.jsx(E,{className:"w-[100px] sm:w-[130px] h-8 text-xs border-gray-200 dark:border-gray-700",children:e.jsx(D,{placeholder:"Status"})}),e.jsxs(S,{children:[e.jsx(l,{value:"all",children:"All Status"}),e.jsx(l,{value:"DELIVERED",children:"Delivered"}),e.jsx(l,{value:"SENT",children:"Sent"}),e.jsx(l,{value:"QUEUED",children:"Queued"}),e.jsx(l,{value:"FAILED",children:"Failed"})]})]}),e.jsxs(_,{value:r.event,onValueChange:a=>i(s=>({...s,event:a,page:1})),children:[e.jsx(E,{className:"w-[120px] sm:w-[150px] h-8 text-xs border-gray-200 dark:border-gray-700",children:e.jsx(D,{placeholder:"Event Type"})}),e.jsxs(S,{children:[e.jsx(l,{value:"all",children:"All Events"}),e.jsx(l,{value:"order_confirmation",children:"Order Confirmation"}),e.jsx(l,{value:"order_shipped",children:"Order Shipped"}),e.jsx(l,{value:"order_delivered",children:"Order Delivered"}),e.jsx(l,{value:"cod_confirmation",children:"COD Confirmation"}),e.jsx(l,{value:"payment_reminder",children:"Payment Reminder"})]})]}),h&&e.jsx("button",{onClick:()=>i({page:1,per_page:20,status:"all",event:"all",from:"",to:"",search:""}),className:"text-xs font-medium text-gray-500 hover:text-gray-900 dark:hover:text-gray-100 transition-colors whitespace-nowrap px-2 py-1",children:"Clear"})]})]})})}),g?e.jsx("div",{className:"flex items-center justify-center py-20",children:e.jsx(w,{className:"h-5 w-5 animate-spin text-gray-400"})}):o.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-center",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-gray-100 dark:bg-gray-800 flex items-center justify-center mb-4",children:e.jsx($,{className:"h-5 w-5 text-gray-400"})}),e.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-gray-100",children:h?"No messages match your filters":"No Messages Found"}),e.jsx("p",{className:"text-xs text-gray-400 mt-1 max-w-[240px]",children:h?"Try adjusting your filters":"Messages sent to your customers will appear here"})]}):e.jsxs("div",{className:"bg-white dark:bg-gray-900 rounded-lg border border-gray-200/80 dark:border-gray-800 overflow-hidden",children:[e.jsx("div",{className:"hidden md:block overflow-x-auto",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-gray-100 dark:border-gray-800",children:[e.jsx("th",{className:"text-left px-4 py-3 text-[11px] font-semibold text-gray-400 uppercase tracking-wider",children:"Date/Time"}),e.jsx("th",{className:"text-left px-4 py-3 text-[11px] font-semibold text-gray-400 uppercase tracking-wider",children:"Phone"}),e.jsx("th",{className:"text-left px-4 py-3 text-[11px] font-semibold text-gray-400 uppercase tracking-wider",children:"Order"}),e.jsx("th",{className:"text-left px-4 py-3 text-[11px] font-semibold text-gray-400 uppercase tracking-wider",children:"Template"}),e.jsx("th",{className:"text-left px-4 py-3 text-[11px] font-semibold text-gray-400 uppercase tracking-wider",children:"Preview"}),e.jsx("th",{className:"text-left px-4 py-3 text-[11px] font-semibold text-gray-400 uppercase tracking-wider",children:"Status"}),e.jsx("th",{className:"text-left px-4 py-3 text-[11px] font-semibold text-gray-400 uppercase tracking-wider",children:"Delivered"}),e.jsx("th",{className:"w-10 px-4 py-3"})]})}),e.jsx("tbody",{className:"divide-y divide-gray-100/70 dark:divide-gray-800/50",children:o.map(a=>e.jsxs("tr",{className:"group cursor-pointer hover:bg-[#f8f8f9] dark:hover:bg-gray-800/50 transition-colors duration-100",onClick:()=>d(a),children:[e.jsx("td",{className:"px-4 py-3 text-sm text-gray-600 dark:text-gray-400",children:new Date(a.sent_at||a.created_at).toLocaleStr
1ing("en-IN",{day:"2-digit",month:"short",hour:"2-digit",minute:"2-digit"})}),e.jsx("td",{className:"px-4 py-3",children:e.jsx("span",{className:"font-mono text-sm text-gray-900 dark:text-gray-100",children:a.masked_phone})}),e.jsx("td",{className:"px-4 py-3",children:a.order_id?e.jsxs("a",{href:`/orders/${a.order_id}`,className:"text-sm text-gray-900 dark:text-gray-100 hover:underline",onClick:s=>s.stopPropagation(),children:["#",a.order_id]}):e.jsx("span",{className:"text-sm text-gray-400",children:"-"})}),e.jsx("td",{className:"px-4 py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-300",children:a.template_name}),e.jsx("span",{className:"text-xs text-gray-400 bg-gray-50 dark:bg-gray-800 px-1.5 py-0.5 rounded hidden xl:inline",children:j[a.event]||a.event})]})}),e.jsx("td",{className:"px-4 py-3 max-w-[200px]",children:e.jsx("p",{className:"text-sm text-gray-500 truncate",children:a.body_text})}),e.jsx("td",{className:"px-4 py-3",children:e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-600 dark:text-gray-400",children:[e.jsx("span",{className:`inline-block h-1.5 w-1.5 rounded-full ${c[a.status]||c.QUEUED} flex-shrink-0`}),b[a.status]||"Unknown"]})}),e.jsx("td",{className:"px-4 py-3",children:e.jsx("span",{className:"text-xs text-gray-500",children:a.delivered_at?new Date(a.delivered_at).toLocaleTimeString("en-IN",{hour:"2-digit",minute:"2-digit"}):"-"})}),e.jsx("td",{className:"px-4 py-3",children:e.jsx("div",{className:"opacity-0 group-hover:opacity-100 transition-opacity",children:e.jsx("button",{className:"h-7 w-7 rounded-md flex items-center justify-center text-gray-400 hover:text-gray-600 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors",onClick:s=>{s.stopPropagation(),d(a)},children:e.jsx(Q,{className:"h-3.5 w-3.5"})})})})]},a.id))})]})}),e.jsx("div",{className:"md:hidden space-y-1.5 p-3",children:o.map(a=>e.jsxs("div",{className:"bg-white dark:bg-gray-900 rounded-lg border border-gray-200/80 dark:border-gray-800 px-3.5 py-3 active:bg-gray-50 dark:active:bg-gray-800/50 transition-colors",onClick:()=>d(a),role:"button",tabIndex:0,onKeyDown:s=>s.key==="Enter"&&d(a),children:[e.jsxs("div",{className:"flex items-start justify-between gap-2 mb-1.5",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[e.jsx("span",{className:"font-mono text-[13px] font-semibold text-gray-900 dark:text-gray-100",children:a.masked_phone}),e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs font-medium text-gray-600 dark:text-gray-400",children:[e.jsx("span",{className:`inline-block h-1.5 w-1.5 rounded-full ${c[a.status]||c.QUEUED} flex-shrink-0`}),b[a.status]]})]}),e.jsx("p",{className:"text-xs text-gray-500 truncate",children:a.template_name})]}),e.jsx("span",{className:"text-xs text-gray-400 flex-shrink-0",children:new Date(a.sent_at||a.created_at).toLocaleDateString()})]}),e.jsx("p",{className:"text-xs text-gray-500 line-clamp-2 mt-1.5",children:a.body_text}),e.jsxs("div",{className:"flex items-center justify-between mt-2",children:[e.jsx("span",{className:"text-xs text-gray-400 bg-gray-50 dark:bg-gray-800 px-1.5 py-0.5 rounded",children:j[a.event]||a.event}),a.order_id&&e.jsxs("a",{href:`/orders/${a.order_id}`,className:"text-xs text-gray-600 dark:text-gray-400 hover:underline",onClick:s=>s.stopPropagation(),children:["Order #",a.order_id]})]})]},a.id))}),k>1&&e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-t border-gray-100 dark:border-gray-800",children:[e.jsxs("p",{className:"text-xs text-gray-400",children:["Showing ",(r.page-1)*r.per_page+1," to"," ",Math.min(r.page*r.per_page,m)," of ",m]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{disabled:r.page===1,onClick:()=>i(a=>({...a,page:a.page-1})),className:"h-8 px-3 rounded-md text-xs font-medium border border-gray-200 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors disabled:opacity-50",children:"Previous"}),e.jsx("button",{disabled:r.page>=k,onClick:()=>i(a=>({...a,page:a.page+1})),className:"h-8 px-3 rounded-md text-xs font-medium border border-gray-200 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors disabled:opacity-50",children:"Next"})]})]})]})]}),e.jsx(X,{message:p,open:!!p,onOpenChange:a=>!a&&d(null)})]})}export{z 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.