1/*! For license information please see 7214.0f60ee4d.chunk.js.LICENSE.txt */ 2"use strict";(self.webpackChunkui=self.webpackChunkui||[]).push([[7214],{86(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("rotate-cw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]])},1680(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]])},2024(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},2054(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},3883(e,t,a){a.d(t,{$:()=>s,_:()=>r});const s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=new Set;return e.filter(e=>{const a=(e.title||e.categorytitle||"").trim();return!(!a||t.has(a))&&(t.add(a),!0)})},r=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=new Map;for(const s of e){const e=(s.title||s.categorytitle||"").trim().toLowerCase();if(!e)continue;const a=Number(s.productCount||0),r=t.get(e);(!r||a>Number(r.productCount||0))&&t.set(e,s)}const a=new Set([...t.values()].map(e=>e.id||e._id));return e.filter(e=>a.has(e.id||e._id))}},5087(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]])},5088(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]])},5469(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},5711(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]])},5746(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])},7214(e,t,a){a.r(t),a.d(t,{default:()=>R});var s=a(9379),r=a(5043),n=a(7819),l=a(2054),i=a(2024),c=a(5469),o=a(7475),d=a(2382),x=a(9463),m=a(5711),p=a(8326),g=a(5088),h=a(5087),y=a(1680),f=a(5327),u=a(86),b=a(5746),j=a(614),N=a(7874),v=a(3046),w=a(3883),k=a(2339),A=a(579);const S={sent:{label:"Sent",icon:l.A,color:"text-green-600",bg:"bg-green-100"},pending:{label:"Scheduled",icon:g.A,color:"text-yellow-600",bg:"bg-yellow-100"},sending:{label:"In Progress",icon:i.A,color:"text-blue-600",bg:"bg-blue-100"},failed:{label:"Failed",icon:n.A,color:"text-red-600",bg:"bg-red-100"},cancelled:{label:"Cancelled",icon:o.A,color:"text-gray-500",bg:"bg-gray-100"}},C={subscribers:"All subscribers",members:"Active members",purchasers:"With purchases",categories:"Category subscribers",specific:"Specific emails"},z=e=>{let{campaign:t,onClose:a,apiBaseUrl:s}=e;const[c,o]=(0,r.useState)(t),[d,m]=(0,r.useState)("preview"),[g,u]=(0,r.useState)(null),[b,N]=(0,r.useState)([]),[w,k]=(0,r.useState)(0),[C,z]=(0,r.useState)(1),[L,R]=(0,r.useState)(1),[M,E]=(0,r.useState)("all"),[F,U]=(0,r.useState)(!1),D=(0,r.useRef)(null);(0,r.useEffect)(()=>{localStorage.getItem("token")||sessionStorage.getItem("token");return(async()=>{try{const e=await v.A.get("".concat(s,"/email-campaign/").concat(c.id,"/preview"),{responseType:"text"}),t=new Blob([e.data],{type:"text/html"});u(URL.createObjectURL(t))}catch(e){u("error")}})(),()=>{g&&"error"!==g&&URL.revokeObjectURL(g)}},[c.id,s]);const I=(0,r.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:M;U(!0);try{const a=new URLSearchParams({page:e,limit:50});"all"!==t&&a.set("status",t);const r=await v.A.get("".concat(s,"/email-campaign/").concat(c.id,"/delivery-logs?").concat(a));r.data.status&&(N(r.data.data),k(r.data.total),R(r.data.pages))}catch(a){}finally{U(!1)}},[c.id,s,M]),P=(0,r.useCallback)(async()=>{try{const e=await v.A.get("".concat(s,"/email-campaign/").concat(c.id));e.data.status&&o(e.data.data)}catch(e){}},[c.id,s]);(0,r.useEffect)(()=>{"recipients"===d&&I(C,M)},[d,C,M]),(0,r.useEffect)(()=>("sending"===c.status?D.current=setInterval(async()=>{await P(),"recipients"===d&&I(C,M)},3e3):clearInterval(D.current),()=>clearInterval(D.current)),[c.status,d,C,M]);const B=S[c.status]||S.sent,T=B.icon;c.sent,c.failed;return(0,A.jsx)("div",{className:"fixed inset-0 z-50 bg-black/70 flex items-center justify-center p-2 md:p-4",children:(0,A.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-full max-w-6xl h-[92vh] flex flex-col overflow-hidden",children:[(0,A.jsxs)("div",{className:"flex items-center justify-between px-5 py-3 border-b border-gray-200 shrink-0",children:[(0,A.jsxs)("div",{className:"flex-1 min-w-0 mr-4",children:[(0,A.jsx)("h2",{className:"text-sm font-bold text-gray-800 font-montserrat truncate",children:c.subject}),(0,A.jsxs)("div",{className:"flex items-center gap-3 mt-0.5 flex-wrap",children:[(0,A.jsxs)("span",{className:"inline-flex items-center gap-1 text-[10px] font-bold px-2 py-0.5 rounded-full font-montserrat ".concat(B.bg," ").concat(B.color),children:[(0,A.jsx)(T,{size:10,
2className:"sending"===c.status?"animate-spin":""}),B.label]}),"pending"!==c.status&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)("span",{className:"text-[11px] text-green-600 font-bold font-montserrat",children:[(c.sent||0).toLocaleString()," sent"]}),(c.failed||0)>0&&(0,A.jsxs)("span",{className:"text-[11px] text-red-500 font-bold font-montserrat",children:[c.failed.toLocaleString()," failed"]}),"sending"===c.status&&(0,A.jsx)("span",{className:"text-[11px] text-blue-500 font-montserrat animate-pulse",children:"Updating..."})]}),(0,A.jsxs)("span",{className:"text-[10px] text-gray-400 font-montserrat",children:[new Date(c.sendAt).toLocaleDateString("en-GB")," ",new Date(c.sendAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})]})]})]}),(0,A.jsx)("button",{onClick:a,className:"text-gray-400 hover:text-gray-700 p-1.5 rounded-lg hover:bg-gray-100",children:(0,A.jsx)(j.A,{size:18})})]}),(0,A.jsx)("div",{className:"flex border-b border-gray-200 shrink-0",children:[{key:"preview",icon:h.A,label:"Email Preview"},{key:"recipients",icon:f.A,label:"Recipients".concat(w>0?" (".concat(w.toLocaleString(),")"):"")}].map(e=>(0,A.jsxs)("button",{onClick:()=>m(e.key),className:"flex items-center gap-2 px-5 py-3 text-xs font-bold font-montserrat border-b-2 transition-colors ".concat(d===e.key?"border-primary text-primary":"border-transparent text-gray-500 hover:text-gray-700"),children:[(0,A.jsx)(e.icon,{size:13})," ",e.label]},e.key))}),(0,A.jsxs)("div",{className:"flex-1 overflow-hidden",children:["preview"===d&&(0,A.jsxs)("div",{className:"h-full flex items-center justify-center bg-gray-100",children:[null===g&&(0,A.jsxs)("div",{className:"flex items-center gap-2 text-gray-400",children:[(0,A.jsx)(i.A,{size:18,className:"animate-spin"}),(0,A.jsx)("span",{className:"font-montserrat text-sm",children:"Loading preview..."})]}),"error"===g&&(0,A.jsx)("p",{className:"text-red-500 font-montserrat text-sm",children:"Failed to load preview."}),g&&"error"!==g&&(0,A.jsx)("iframe",{src:g,title:"Email Preview",className:"w-full h-full border-0",sandbox:"allow-same-origin"})]}),"recipients"===d&&(0,A.jsxs)("div",{className:"h-full flex flex-col overflow-hidden",children:[(0,A.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2.5 border-b border-gray-100 bg-gray-50 shrink-0 flex-wrap",children:[[{key:"all",label:"All"},{key:"sent",label:"Sent"},{key:"failed",label:"Failed"}].map(e=>(0,A.jsx)("button",{onClick:()=>
2{E(e.key),z(1)},className:"px-3 py-1 text-[11px] font-bold font-montserrat rounded-full border transition-colors ".concat(M===e.key?"bg-primary text-white border-primary":"bg-white text-gray-600 border-gray-300 hover:border-primary"),children:e.label},e.key)),(0,A.jsx)("span",{className:"ml-auto text-[10px] text-gray-400 font-montserrat",children:w>0?"".concat(w.toLocaleString()," emails"):"No logs yet"})]}),(0,A.jsx)("div",{className:"flex-1 overflow-y-auto",children:F&&0===b.length?(0,A.jsxs)("div",{className:"flex items-center justify-center gap-2 py-12 text-gray-400",children:[(0,A.jsx)(i.A,{size:18,className:"animate-spin text-primary"}),(0,A.jsx)("span",{className:"font-montserrat text-sm",children:"Loading..."})]}):0!==w||F?(0,A.jsxs)("table",{className:"w-full text-sm",children:[(0,A.jsx)("thead",{className:"sticky top-0 bg-gray-50 z-10",children:(0,A.jsxs)("tr",{className:"border-b border-gray-200",children:[(0,A.jsx)("th",{className:"px-4 py-2.5 text-left text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat",children:"#"}),(0,A.jsx)("th",{className:"px-4 py-2.5 text-left text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat",children:"Email"}),(0,A.jsx)("th",{className:"px-4 py-2.5 text-left text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat",children:"Status"}),(0,A.jsx)("th",{className:"px-4 py-2.5 text-left text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat hidden md:table-cell",children:"Time"})]})}),(0,A.jsx)("tbody",{className:"divide-y divide-gray-100",children:b.map((e,t)=>(0,A.jsxs)("tr",{className:"hover:bg-gray-50/60",children:[(0,A.jsx)("td",{className:"px-4 py-2 text-[11px] text-gray-400 font-montserrat w-12",children:50*(C-1)+t+1}),(0,A.jsx)("td",{className:"px-4 py-2 text-[12px] text-gray-700 font-montserrat font-medium",children:e.email}),(0,A.jsx)("td",{className:"px-4 py-2",children:"sent"===e.status?(0,A.jsxs)("span",{className:"inline-flex items-center gap-1 text-[11px] font-bold text-green-600 font-montserrat",children:[(0,A.jsx)(l.A,{size:11})," Sent"]}):(0,A.jsxs)("span",{className:"inline-flex items-center gap-1 text-[11px] font-bold text-red-500 font-montserrat",title:e.error||"",children:[(0,A.jsx)(n.A,{size:11})," Failed"]})}),(0,A.jsx)("td",{className:"px-4 py-2 text-[10px] text-gray-400 font-montserrat hidden md:table-cell whitespace-nowrap",children:new Date(e.sentAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})})]},e.id))})]}):(0,A.jsxs)("div",{className:"py-12 text-center text-gray-400",children:[(0,A.jsx)(y.A,{size:32,className:"mx-auto mb-3 opacity-30"}),(0,A.jsx)("p",{className:"text-sm font-montserrat",children:c.sent>0?"No delivery logs \u2014 this campaign was sent before logging was enabled.":"No recipients yet."})]})}),L>1&&(0,A.jsxs)("div",{className:"flex items-center justify-between px-4 py-2.5 border-t border-gray-100 bg-white shrink-0",children:[(0,A.jsxs)("button",{onClick:()=>z(e=>Math.max(1,e-1)),disabled:1===C,className:"flex items-center gap-1 text-xs font-bold font-montserrat text-gray-600 disabled:opacity-40 hover:text-primary transition-colors",children:[(0,A.jsx)(x.A,{size:14})," Prev"]}),(0,A.jsxs)("span",{className:"text-xs text-gray-500 font-montserrat",children:["Page ",C," of ",L,(0,A.jsxs)("span",{className:"text-gray-400 ml-1",children:["(",w.toLocaleString()," total)"]})]}),(0,A.jsxs)("button",{onClick:()=>z(e=>Math.min(L,e+1)),disabled:C===L,className:"flex items-center gap-1 text-xs font-bold font-montserrat text-gray-600 disabled:opacity-40 hover:text-primary transition-colors",children:["Next ",(0,A.jsx)(p.A,{size:14})]})]})]})]})]})})},L=e=>{let{campaign:t,onClose:a,onResent:n,apiBaseUrl:l}=e;const[c,o]=(0,r.useState)("same"),[x,p]=(0,r.useState)(t.subject),[g,y]=(0,r.useState)(""),[f,N]=(0,r.useState)(!1),[S,z]=(0,r.useState)("form"),[L,R]=(0,r.useState)(null),[M,E]=(0,r.useState)([]),[F,U]=(0,r.useState)([]),[D,I]=(0,r.useState)([]),[P,B]=(0,r.useState)({}),[T,H]=(0,r.useState)(!1),O=(0,r.useMemo)(()=>{const e={};return F.forEach(t=>{e[t.categoryId]||(e[t.categoryId]=[]),e[t.categoryId].push(t)}),e},[F]);(0,r.useEffect)(()=>{"categories"===c&&(H(!0),Promise.all([v.A.get("".concat(l,"/category/fetch?withProducts=true")),v.A.get("".concat(l,"/subcategory/fetch"))]).then(e=>
2{let[t,a]=e;if(t.data.status){const e=(0,w.$)(t.data.data||[]);E(e);const a={};e.forEach(e=>{a[e.id]=!0}),B(a)}a.data.status&&U(a.data.data||[])}).catch(()=>{}).finally(()=>H(!1)))},[c,l]),(0,r.useEffect)(()=>{"preview"!==S||L||(R("loading"),v.A.get("".concat(l,"/email-campaign/").concat(t.id,"/preview"),{responseType:"text"}).then(e=>{const t=new Blob([e.data],{type:"text/html"});R(URL.createObjectURL(t))}).catch(()=>R("error")))},[S,t.id,l]);const q=e=>I(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]);return(0,A.jsx)("div",{className:"fixed inset-0 z-50 bg-black/60 flex items-center justify-center p-4",children:(0,A.jsxs)("div",{className:"bg-white rounded-xl shadow-2xl w-full max-w-2xl flex flex-col",style:{maxHeight:"90vh"},children:[(0,A.jsxs)("div",{className:"flex items-center justify-between p-4 border-b border-gray-200 shrink-0",children:[(0,A.jsxs)("h3",{className:"text-sm font-bold text-gray-700 font-montserrat flex items-center gap-2",children:[(0,A.jsx)(u.A,{size:15,className:"text-primary"})," Resend Campaign"]}),(0,A.jsx)("button",{onClick:a,className:"text-gray-400 hover:text-gray-600 p-1",children:(0,A.jsx)(j.A,{size:18})})]}),(0,A.jsx)("div",{className:"flex border-b border-gray-200 shrink-0",children:[{key:"form",icon:b.A,label:"Resend Options"},{key:"preview",icon:h.A,label:"Preview Email"}].map(e=>(0,A.jsxs)("button",{onClick:()=>z(e.key),className:"flex items-center gap-2 px-4 py-2.5 text-xs font-bold font-montserrat border-b-2 transition-colors ".concat(S===e.key?"border-primary text-primary":"border-transparent text-gray-500 hover:text-gray-700"),children:[(0,A.jsx)(e.icon,{size:12})," ",e.label]},e.key))}),"preview"===S&&(0,A.jsx)("div",{className:"flex-1 overflow-hidden bg-gray-100 min-h-[400px]",children:"loading"===L||null===L?(0,A.jsxs)("div",{className:"h-full flex items-center justify-center gap-2 text-gray-400 py-12",children:[(0,A.jsx)(i.A,{size:18,className:"animate-spin"}),(0,A.jsx)("span",{className:"font-montserrat text-sm",children:"Loading preview..."})]}):"error"===L?(0,A.jsx)("p",{className:"text-red-500 text-sm font-montserrat p-6",children:"Failed to load preview."}):(0,A.jsx)("iframe",{src:L,title:"Email Preview",className:"w-full h-full border-0",style:{minHeight:"400px"},sandbox:"allow-same-origin"})}),"form"===S&&(0,A.jsx)("div",{className:"overflow-y-auto flex-1",children:(0,A.jsxs)("div",{className:"p-5 space-y-4",children:[(0,A.jsxs)("div",{className:"bg-gray-50 border border-gray-100 rounded-lg p-3",children:[(0,A.jsx)("p",{className:"text-[10px] text-gray-400 font-montserrat uppercase tracking-wide mb-1",children:"Original Subject"}),(0,A.jsx)("p",{className:"text-sm font-bold text-gray-700 font-montserrat",children:t.subject})]}),(0,A.jsxs)("div",{children:[(0,A.jsx)("label",{className:"text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat mb-1.5 block",children:"Subject Line (edit if needed)"}),(0,A.jsx)("input",{type:"text",value:x,onChange:e=>p(e.target.value),className:"w-full border border-gray-300 rounded-lg px-3 py-2.5 text-sm outline-none focus:border-primary font-montserrat"})]}),(0,A.jsxs)("div",{children:[(0,A.jsx)("label",{className:"text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat mb-2 block",children:"Send To"}),(0,A.jsx)("div",{className:"space-y-2",children:[{key:"same",label:"Same audience as original (".concat((t.audience||[]).map(e=>C[e]||e).join(", "),")")},{key:"specific",label:"Specific email addresses"},{key:"categories",label:"Specific category subscribers"}].map(e=>(0,A.jsxs)("label",{className:"flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all ".concat(c===e.key?"border-primary bg-primary/5":"border-gray-200 hover:border-gray-300"),children:[(0,A.jsx)("input",{type:"radio",checked:c===e.key,onChange:()=>o(e.key),className:"accent-primary"}),(0,A.jsx)("span",{className:"text-sm font-montserrat ".concat(c===e.key?"font-bold text-primary":"text-gray-700"),children:e.label})]},e.key))})]}),"specific"===c&&(0,A.jsxs)("div",{children:[(0,A.jsx)("label",{className:"text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat mb-1.5 block",children:"Email Addresses (one per line or comma-separated)"}),(0,A.jsx)("textarea",{value:g,onChange:e=>y(e.target.value),placeholder:"[email protected]\[email protected]",rows:4,className:"w-full border border-gray-300 rounded-lg px-3 py-2 text-sm outline-none focus:border-primary font-mono resize-none"})]}),"categories"===c&&(0,A.jsxs)("div",{children:[(0,A.jsx)("label",{className:"text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat mb-2 block",children:"Select Categories"}),T?(0,A.jsxs)("div",{className:"flex items-center gap-2 text-gray-400 text-xs py-2",children:[(0,A.jsx)(i.A,{size:13,className:"animate-spin"})," Loading..."]}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)("div",{className:"grid grid-cols-2 gap-2 max-h-48 overflow-y-auto border border-gray-200 rounded-lg p-2",children:M.map(e=>{const t=e.title||e.categorytitle||"",a=O[e.id]||[],r=P[e.id];return(0,A.jsxs)("div",{className:"border border-gray-100 rounded overflow-hidden",children:[(0,A.jsxs)("div",{className:"flex items-center justify-between bg-gray-50 px-2 py-1.5",children:[(0,A.jsxs)("label",{className:"flex items-center gap-1.5 cursor-pointer flex-1 min-w-0",children:[(0,A.jsx)("input",{type:"checkbox",checked:D.includes(t),onChange:()=>q(t),className:"accent-primary h-3 w-3 shrink-0"}),(0,A.jsx)("span",{className:"text-[11px] font-bold text-gray-700 truncate font-montserrat",children:t})]}),a.length>0&&(0,A.jsx)("button",{onClick:()=>B(t=>(0,s.A)((0,s.A)({},t),{},{[e.id]:!t[e.id]})),className:"text-gray-400 hover:text-primary ml-1 shrink-0",children:r?(0,A.jsx)(m.A,{size:10}):(0,A.jsx)(d.A,{size:10})})]}),r&&a.map(e=>{const t=e.name||"";return(0,A.jsxs)("label",{className:"flex items-center gap-1.5 px-3 py-1 cursor-pointer border-t border-gray-100",children:[(0,A.jsx)("input",{type:"checkbox",checked:D.includes(t),onChange:()=>q(t),className:"accent-primary h-3 w-3 shrink-0"}),(0,A.jsx)("span",{className:"text-[10px] text-gray-600 truncate font-montserrat",children:t})]},e.id)})]},e.id)})}),D.length>0&&(0,A.jsxs)("p",{className:"text-[10px] text-primary font-bold font-montserrat mt-1.5",children:[D.length," selected: ",D.join(", ")
2]})]})]})]})}),(0,A.jsxs)("div",{className:"flex gap-3 p-4 border-t border-gray-200 shrink-0",children:["form"===S?(0,A.jsx)("button",{onClick:async()=>{if(!x.trim())return k.Ay.error("Subject is required");let e=t.audience,s=t.categories||[],r=[];if("specific"===c){const t=g.split(/[\n,;]+/).map(e=>e.trim()).filter(Boolean);if(0===t.length)return k.Ay.error("Enter at least one email address");e=["specific"],r=t}else if("categories"===c){if(0===D.length)return k.Ay.error("Select at least one category");e=["categories"],s=D}N(!0);const i=k.Ay.loading("Resending campaign...");try{const c=await v.A.post("".concat(l,"/email-campaign/resend/").concat(t.id),{subject:x.trim(),audience:e,selectedCategories:s,specificEmails:r});c.data.status?(k.Ay.success(c.data.msg,{id:i}),n(),a()):k.Ay.error(c.data.msg||"Resend failed",{id:i})}catch(m){var o,d;k.Ay.error((null===(o=m.response)||void 0===o||null===(d=o.data)||void 0===d?void 0:d.msg)||"Resend failed",{id:i})}finally{N(!1)}},disabled:f,className:"flex-1 bg-primary text-white py-2.5 rounded-lg font-montserrat font-bold text-sm flex items-center justify-center gap-2 hover:bg-primary-hover disabled:opacity-50 transition-all active:scale-95",children:f?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(i.A,{size:14,className:"animate-spin"})," Sending..."]}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(b.A,{size:14})," Resend Campaign"]})}):(0,A.jsxs)("button",{onClick:()=>z("form"),className:"flex-1 bg-primary text-white py-2.5 rounded-lg font-montserrat font-bold text-sm flex items-center justify-center gap-2 hover:bg-primary-hover transition-all",children:[(0,A.jsx)(b.A,{size:14})," Go to Resend Options"]}),(0,A.jsx)("button",{onClick:a,className:"flex-1 bg-white border border-gray-300 text-gray-600 py-2.5 rounded-lg font-montserrat font-bold text-sm hover:bg-gray-50 transition-all",children:"Cancel"})]})]})})},R=()=>{const e=(0,N.Zp)(),[t,a]=(0,r.useState)([]),[n,l]=(0,r.useState)(!0),[d,x]=(0,r.useState)(null),[m,p]=(0,r.useState)(null),g="https://www.bagchee.com/api",y=async()=>{l(!0);try{const e=await v.A.get("".concat(g,"/email-campaign/history"));e.data.status&&a(e.data.data)}catch(e){k.Ay.error("Failed to load campaign history")}finally{l(!1)}};(0,r.useEffect)(()=>{y()},[g]);const j=(0,r.useMemo)(()=>{const e=t.filter(e=>"sent"===e.status),a=e.reduce((e,t)=>e+(t.sent||0),0),s=e.reduce((e,t)=>e+(t.failed||0),0),r=t.filter(e=>"pending"===e.status).length;return{totalCampaigns:t.length,totalSent:a,totalFailed:s,pending:r}},[t]);return(0,A.jsxs)("div",{className:"bg-gray-50 min-h-screen p-4 md:p-6 font-body text-text-main",children:[(0,A.jsxs)("div",{className:"flex items-center gap-3 mb-6",children:[(0,A.jsx)("button",{onClick:()=>e("/admin/newsletter-subs"),className:"p-2 bg-white border border-gray-200 rounded shadow-sm hover:bg-gray-50 transition-colors",children:(0,A.jsx)(c.A,{size:18,className:"text-gray-600"})}),(0,A.jsxs)("div",{className:"flex-1",children:[(0,A.jsxs)("h1",{className:"text-xl font-bold font-display text-text-main flex items-center gap-2",children:[(0,A.jsx)(f.A,{size:22,className:"text-primary"})," Newsletter Campaign Reports"]}),(0,A.jsx)("p",{className:"text-xs text-gray-500 font-montserrat mt-0.5",children:"All sent and scheduled email campaigns"})]}),(0,A.jsxs)("div",{className:"flex items-center gap-2",children:[(0,A.jsxs)("button",{onClick:()=>e("/admin/send-email"),className:"bg-primary text-white px-4 py-2 rounded-lg font-montserrat font-bold text-xs uppercase flex items-center gap-2 hover:bg-primary-hover transition-all active:scale-95",children:[(0,A.jsx)(b.A,{size:13})," New Campaign"]}),(0,A.jsx)("button",{onClick:y,disabled:n,className:"p-2 bg-white border border-gray-200 rounded shadow-sm hover:bg-gray-50 transition-colors",children:(0,A.jsx)(u.A,{size:16,className:"text-gray-500 ".concat(n?"animate-spin":"")})})]})]}),(0,A.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3 mb-6",children:[{label:"Total Campaigns",value:j.totalCampaigns,color:"text-primary"},{label:"Emails Delivered",value:j.totalSent.toLocaleString(),color:"text-green-600"}
2,{label:"Failed Deliveries",value:j.totalFailed.toLocaleString(),color:"text-red-500"},{label:"Scheduled",value:j.pending,color:"text-yellow-600"}].map(e=>(0,A.jsxs)("div",{className:"bg-white rounded-lg border border-gray-200 shadow-sm p-4",children:[(0,A.jsx)("p",{className:"text-[10px] font-bold text-gray-400 uppercase tracking-wide font-montserrat mb-1",children:e.label}),(0,A.jsx)("p",{className:"text-2xl font-bold font-display ".concat(e.color),children:e.value})]},e.label))}),(0,A.jsxs)("div",{className:"bg-white rounded-lg border border-gray-200 shadow-sm overflow-hidden",children:[(0,A.jsxs)("div",{className:"px-5 py-3 border-b border-gray-100 flex items-center justify-between",children:[(0,A.jsx)("h2",{className:"text-sm font-bold text-gray-700 font-montserrat",children:"All Campaigns"}),(0,A.jsxs)("span",{className:"text-xs text-gray-400 font-montserrat",children:[t.length," total"]})]}),n?(0,A.jsxs)("div",{className:"flex items-center justify-center gap-3 py-16 text-gray-400",children:[(0,A.jsx)(i.A,{size:20,className:"animate-spin text-primary"}),(0,A.jsx)("span",{className:"font-montserrat text-sm",children:"Loading campaigns..."})]}):0===t.length?(0,A.jsxs)("div",{className:"py-16 text-center text-gray-400 font-montserrat",children:[(0,A.jsx)(f.A,{size:32,className:"mx-auto mb-3 opacity-30"}),(0,A.jsx)("p",{className:"text-sm",children:"No campaigns yet."}),(0,A.jsx)("button",{onClick:()=>e("/admin/send-email"),className:"mt-4 text-primary font-bold text-sm hover:underline",children:"Send your first campaign \u2192"})]}):(0,A.jsx)("div",{className:"overflow-x-auto",children:(0,A.jsxs)("table",{className:"w-full min-w-[700px] text-sm",children:[(0,A.jsx)("thead",{children:(0,A.jsxs)("tr",{className:"bg-gray-50 border-b border-gray-200",children:[(0,A.jsx)("th",{className:"p-3 text-left text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat",children:"Subject"}),(0,A.jsx)("th",{className:"p-3 text-left text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat",children:"Audience"}),(0,A.jsx)("th",{className:"p-3 text-left text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat",children:"Date"}),(0,A.jsx)("th",{className:"p-3 text-left text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat",children:"Status"}),(0,A.jsx)("th",{className:"p-3 text-left text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat",children:"Result"}),(0,A.jsx)("th",{className:"p-3 text-center text-[11px] font-bold text-gray-500 uppercase tracking-wide font-montserrat",children:"Actions"})]})}),(0,A.jsx)("tbody",{className:"divide-y divide-gray-100",children:t.map(e=>{const t=S[e.status]||S.sent,r=t.icon,n=(e.sent||0)+(e.failed||0),l=(e.audience||[]).map(e=>C[e]||e).join(", "),c=e.categories&&e.categories.length>0?" \u2192 ".concat(e.categories.slice(0,2).join(", ")).concat(e.categories.length>2?" +".concat(e.categories.length-2):""):"";return(0,A.jsxs)("tr",{className:"hover:bg-gray-50/50 transition-colors",children:[(0,A.jsx)("td",{className:"p-3 max-w-[200px]",children:(0,A.jsxs)("button",{onClick:()=>p(e),className:"text-left group",title:"Click to view details & preview",children:[(0,A.jsxs)("p",{className:"font-bold text-primary font-montserrat truncate text-[13px] group-hover:underline underline-offset-2 flex items-center gap-1",children:[(0,A.jsx)(h.A,{size:11,className:"shrink-0 opacity-60"}),e.subject]}),(0,A.jsxs)("p",{className:"text-[10px] text-gray-400 font-montserrat mt-0.5",children:["#",e.id]})]})}),(0,A.jsxs)("td",{className:"p-3 max-w-[180px]",children:[(0,A.jsx)("p",{className:"text-[11px] text-gray-600 font-montserrat truncate",children:l}),c&&(0,A.jsx)("p",{className:"text-[10px] text-primary font-montserrat truncate",children:c})]}),(0,A.jsxs)("td",{className:"p-3 whitespace-nowrap",children:[(0,A.jsx)("p",{className:"text-xs text-gray-600 font-montserrat",children:new Date(e.sendAt).toLocaleDateString("en-GB")}),(0,A.jsx)("p",{className:"text-[10px] text-gray-400 font-montserrat",children:new Date(e.sendAt).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})})]}),(0,A.jsx)("td",{className:"p-3",children:(0,A.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-xs font-bold px-2.5 py-1 rounded-full font-montserrat ".concat(t.bg," ").concat(t.color),children:[(0,A.jsx)(r,{size:11,className:"sending"===e.status?"animate-spin":""}),t.label]})}),(0,A.jsxs)("td",{className:"p-3",children:["sent"===e.status&&n>0&&(0,A.jsxs)("div",{children:[(0,A.jsxs)("p",{className:"text-xs font-bold text-green-600 font-montserrat",children:[(e.sent||0).toLocaleStr
2ing()," sent"]}),(e.failed||0)>0&&(0,A.jsxs)("p",{className:"text-[10px] text-red-500 font-montserrat",children:[e.failed.toLocaleString()," failed"]}),(0,A.jsx)("div",{className:"w-24 bg-gray-200 rounded-full h-1.5 mt-1",children:(0,A.jsx)("div",{className:"bg-green-500 h-1.5 rounded-full",style:{width:"".concat(n>0?Math.round(e.sent/n*100):0,"%")}})})]}),"pending"===e.status&&(0,A.jsxs)("p",{className:"text-[11px] text-yellow-600 font-montserrat",children:["Sends ",new Date(e.sendAt).toLocaleString()]}),"sending"===e.status&&(0,A.jsxs)("p",{className:"text-[11px] text-blue-600 font-montserrat flex items-center gap-1",children:[(0,A.jsx)(i.A,{size:10,className:"animate-spin"})," In progress..."]}),"failed"===e.status&&(0,A.jsx)("p",{className:"text-[11px] text-red-500 font-montserrat",children:"Send failed"}),"cancelled"===e.status&&(0,A.jsx)("p",{className:"text-[11px] text-gray-400 font-montserrat",children:"Cancelled"})]}),(0,A.jsx)("td",{className:"p-3",children:(0,A.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[("sent"===e.status||"failed"===e.status)&&(0,A.jsxs)("button",{onClick:()=>x(e),className:"flex items-center gap-1.5 text-[11px] font-bold text-primary border border-primary/30 px-2.5 py-1.5 rounded-lg hover:bg-primary/5 transition-all font-montserrat",title:"Resend",children:[(0,A.jsx)(u.A,{size:11})," Resend"]}),"pending"===e.status&&(0,A.jsxs)("button",{onClick:()=>(async e=>{if(window.confirm("Cancel this scheduled campaign?"))try{const t=await v.A.delete("".concat(g,"/email-campaign/scheduled/").concat(e));t.data.status?(k.Ay.success("Campaign cancelled."),a(t=>t.map(t=>t.id===e?(0,s.A)((0,s.A)({},t),{},{status:"cancelled"}):t))):k.Ay.error(t.data.msg)}catch(n){var t,r;k.Ay.error((null===(t=n.response)||void 0===t||null===(r=t.data)||void 0===r?void 0:r.msg)||"Failed to cancel")}})(e.id),className:"flex items-center gap-1.5 text-[11px] font-bold text-red-500 border border-red-200 px-2.5 py-1.5 rounded-lg hover:bg-red-50 transition-all font-montserrat",children:[(0,A.jsx)(o.A,{size:11})," Cancel"]})]})})]},e.id)})})]})})]}),m&&(0,A.jsx)(z,{campaign:m,onClose:()=>p(null),apiBaseUrl:g}),d&&(0,A.jsx)(L,{campaign:d,onClose:()=>x(null),onResent:y,apiBaseUrl:g})]})}},7475(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("ban",[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]])},7819(e,t,a){a.d(t,{A:()=>s});const s=(0,a(7784).A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])}}]); 3//# sourceMappingURL=7214.0f60ee4d.chunk.js.map
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.