PageSourceSearch

https://mobilingo.ai/assets/chunks/chunk-uP5BzKDA.js

js mobilingo.ai collected 2026-10-01 14:11:45 UTC 179,763 bytes, 33 lines download raw bytes

1import{r as d,u as aa,j as e,l as Be,T as s,a8 as Ee,h as L,af as ta,M as se,aq as Oe,B,aH as sa,aI as $e,aU as K,I as oe,D as te,ag as Ae,a1 as Ge,m as ce,ai as re,J,aJ as Q,S as na,N as ia,a4 as Ue,b as ra,bv as ye,bw as De,b7 as oa,ae as q,aa as la,$ as ca,_ as da,p as Se,n as ma,a6 as ua,aw as ha,aA as pa,as as xa,U as ga,w as Ce,ay as fa,aj as Na}from"../entries/pages_index.DwH1fEUc.js";import{S as ba}from"./chunk-B5przYSq.js";import"./chunk-BugajZ7n.js";import{u as We,P as pe}from"./chunk-D4vL1ggd.js";import{N as $,a as va}from"./chunk-Dx3wp09w.js";import{F as Ke}from"./chunk-PUBb5iqP.js";import{F as ya}from"./chunk-BDlqpgVJ.js";import{F as Ve}from"./chunk-CkBSd324.js";import{T as ae}from"./chunk-Ct4DSnPm.js";import{F as Sa}from"./chunk-qBSQuzB3.js";import{L as ja,a as _a,C as wa}from"./chunk-Db78be4v.js";import{P as Aa}from"./chunk-752QIOKK.js";import{F as Ea}from"./chunk-DqBOCO2r.js";import{F as Ca}from"./chunk-y9xzrJ68.js";import{F as ka}from"./chunk-DXyYTw9-.js";import{T as Ra}from"./chunk-Bi54BlzQ.js";import{F as je}from"./chunk-JzTaV89o.js";import{F as Ta}from"./chunk-DVP18NGD.js";import{F as La}from"./chunk-BPA_5523.js";import{C as Ma}from"./chunk-DYqVuQw0.js";import{F as ke}from"./chunk-Dn8YLMW2.js";/* empty css              *//* empty css              *//* empty css              *//* empty css              *//* empty css              */import"./chunk-Cu13JRCW.js";import"./chunk-BtJPlET1.js";import"./chunk-DNCcTp_s.js";import"./chunk-SMnF6rVS.js";import"./chunk-BOx6UWN_.js";import"./chunk-DPgVrtpG.js";import"./chunk-BcxcWqIV.js";import"./chunk-Bftl_ZOY.js";import"./chunk-C1PnZ2mO.js";import"./chunk-CyWheaOv.js";import"./chunk-DJ8ynl1u.js";import"./chunk-BV0W2IeC.js";import"./chunk-CRE8Spew.js";import"./chunk-CCLHMY6W.js";import"./chunk-CIaLFCQO.js";import"./chunk-tvfcGmmw.js";import"./chunk-ojvCSnGn.js";import"./chunk-DIkC8li9.js";import"./chunk-CbR-4eJr.js";import"./chunk-BdhSanBx.js";function Pa({title:a,titleId:t,...i},r){return d.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},i),a?d.createElement("title",{id:t},a):null,d.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.75 3.104v5.714a2.25 2.25 0 0 1-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 0 1 4.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0 1 12 15a9.065 9.065 0 0 0-6.23-.693L5 14.5m14.8.8 1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0 1 12 21c-2.773 0-5.491-.235-8.135-.687-1.718-.293-2.3-2.379-1.067-3.61L5 14.5"}))}const Ia=d.forwardRef(Pa);function Fa({title:a,titleId:t,...i},r){return d.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},i),a?d.createElement("title",{id:t},a):null,d.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.5 6a7.5 7.5 0 1 0 7.5 7.5h-7.5V6Z"}),d.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.5 10.5H21A7.5 7.5 0 0 0 13.5 3v7.5Z"}))}const Ba=d.forwardRef(Fa);function Oa({title:a,titleId:t,...i},r){return d.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},i),a?d.createElement("title",{id:t},a):null,d.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6v12m-3-2.818.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"}))}const $a=d.forwardRef(Oa);function Ga({title:a,titleId:t,...i},r){return d.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},i),a?d.createElement("title",{id:t},a):null,d.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5.25 7.5A2.25 2.25 0 0 1 7.5 5.25h9a2.25 2.25 0 0 1 2.25 2.25v9a2.25 2.25 0 0 1-2.25 2.25h-9a2.25 2.25 0 0 1-2.25-2.25v-9Z"}))}const Re=d.forwardRef(Ga);function Ua({title:a,titleId:t,...i},r){return d.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"
1currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},i),a?d.createElement("title",{id:t},a):null,d.createElement("path",{fillRule:"evenodd",d:"M19.916 4.626a.75.75 0 0 1 .208 1.04l-9 13.5a.75.75 0 0 1-1.154.114l-6-6a.75.75 0 0 1 1.06-1.06l5.353 5.353 8.493-12.74a.75.75 0 0 1 1.04-.207Z",clipRule:"evenodd"}))}const Da=d.forwardRef(Ua);function Wa({title:a,titleId:t,...i},r){return d.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:r,"aria-labelledby":t},i),a?d.createElement("title",{id:t},a):null,d.createElement("path",{d:"M1.5 8.67v8.58a3 3 0 0 0 3 3h15a3 3 0 0 0 3-3V8.67l-8.928 5.493a3 3 0 0 1-3.144 0L1.5 8.67Z"}),d.createElement("path",{d:"M22.5 6.908V6.75a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3v.158l9.714 5.978a1.5 1.5 0 0 0 1.572 0L22.5 6.908Z"}))}const Te=d.forwardRef(Wa);function Ka(){const[a,t]=aa("newsletter-statistics",null),[i,r]=d.useState(!0),o=We("role:newsletter"),n="/admin/newsletter";d.useEffect(()=>{b()},[]);const m=l=>{if(typeof window<"u"){const h=l?new URLSearchParams(l).toString():"",g=h?`${n}/subscribers?${h}`:`${n}/subscribers`;Ee(g)}},u=l=>{if(typeof window<"u"){const h=`${n}/releases`;Ee(h)}},b=async()=>{try{r(!0);const l=await $.getOverview();if(o&&o(l))return;if(l&&typeof l=="object")t(l);else throw new Error("Invalid response format")}catch(l){console.error("Failed to load newsletter statistics:",l),L({type:"error",title:"Error",message:"Failed to load newsletter statistics. Please try again."})}finally{r(!1)}};if(i)return e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Be,{className:"w-5 h-5 animate-spin"}),e.jsx(s,{variant:"admin_body1_dim",children:"Loading newsletter statistics..."})]})});const c=[{title:"Total Subscribers",value:a?.subscribers?.total||0,subtitle:`${a?.subscribers?.active||0} active, ${a?.subscribers?.inactive||0} unsubscribed`,icon:Ke,color:"blue",onClick:()=>m()},{title:"Total Releases",value:a?.releases?.total||0,subtitle:`${a?.releases?.running||0} running, ${a?.releases?.scheduled||0} scheduled`,icon:ya,color:"green",onClick:()=>u()},{title:"Emails Sent Today",value:a?.sending?.today?.sent||0,subtitle:`${a?.sending?.today?.successRate||100}% success rate`,icon:Ve,color:"purple",onClick:()=>{}},{title:"Unsubscribe Rate",value:`${a?.unsubscribeStats?.rate||0}%`,subtitle:`${a?.unsubscribeStats?.thisMonth||0} this month`,icon:Ba,color:"orange",onClick:()=>m({filter:"unsubscribed"})}];return e.jsxs("div",{className:"p-4",children:[e.jsx(pe,{permission:"role:newsletter"}),e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-6",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(s,{component:"h1",variant:"admin_h3",className:"text-admin_text mt-2",children:"Newsletter Overview"}),e.jsx(s,{variant:"admin_body1_dim",className:"mt-2 mb-0",children:"Manage subscribers, releases, and track email campaign performance"})]})}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3 xl:gap-6",children:c.map((l,h)=>{const g=l.icon;return e.jsxs("div",{className:"h-[194px] flex flex-col items-start justify-between gap-6 bg-admin_paper rounded-xl border border-transparent hover:border-admin_primary/30 hover:shadow-md p-6 transition-all duration-600 cursor-pointer group",onClick:l.onClick,children:[e.jsxs("div",{children:[e.jsx(s,{variant:"admin_h4",className:"font-semibold",children:l.title}),e.jsx(s,{variant:"admin_txt2_dim",children:l.subtitle})]}),e.jsxs("div",{className:"w-full flex items-end justify-between mt-auto",children:[e.jsx("div",{className:"bg-admin_canvas rounded-xl p-3",children:e.jsx(g,{className:`w-6 h-6 text-${l.color}-600`})}),e.jsx(s,{component:"output",variant:"admin_h2",className:`text-${l.color}-600`,children:typeof l.value=="number"?l.value.toLocaleString():l.value})]})]},h)})}),a?.mailServiceUsage&&e.jsxs("div",{className:"bg-paper rounded-xl shadow-sm border border-admin_bordered",children:[e.jsxs("div",{className:"border-b border-admin_bordered p-6",children:[e.jsx(s,{component:"h2",variant:"admin_h4",className:"mb-1",children:"Mail Service Usage"}),e.jsx(s,{variant:"admin_txt1_dim",children:"SparkPost account limits and consumption"})]}),e.jsxs("div",{className:"p-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"border border-admin_bordered rounded-lg p-4",children:[e.jsx(s,{variant:"admin_txt2_dim",className:"mb-3",children:"Daily Usage"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1",children:"Limit:"}),e.jsx(s,{variant:"admin_txt1",className:"font-semibold",children:a.mailServiceUsage.daily.limit.toLocaleStr
1ing()})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1",children:"Used:"}),e.jsx(s,{variant:"admin_txt1",className:"font-semibold text-admin_warning",children:a.mailServiceUsage.daily.used.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1",children:"Remaining:"}),e.jsx(s,{variant:"admin_txt1",className:"font-semibold text-admin_success",children:a.mailServiceUsage.daily.remaining.toLocaleString()})]}),e.jsxs("div",{className:"mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(s,{variant:"admin_txt2_dim",children:"Usage"}),e.jsxs(s,{variant:"admin_txt2_dim",children:[a.mailServiceUsage.daily.percentUsed.toFixed(1),"%"]})]}),e.jsx("div",{className:"w-full bg-admin_canvas rounded-full h-2",children:e.jsx("div",{className:"bg-admin_warning rounded-full h-2 transition-all duration-300",style:{width:`${Math.min(a.mailServiceUsage.daily.percentUsed,100)}%`}})})]})]})]}),e.jsxs("div",{className:"border border-admin_bordered rounded-lg p-4",children:[e.jsx(s,{variant:"admin_txt2_dim",className:"mb-3",children:"Monthly Usage"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1",children:"Limit:"}),e.jsx(s,{variant:"admin_txt1",className:"font-semibold",children:a.mailServiceUsage.monthly.limit.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1",children:"Used:"}),e.jsx(s,{variant:"admin_txt1",className:"font-semibold text-admin_warning",children:a.mailServiceUsage.monthly.used.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1",children:"Remaining:"}),e.jsx(s,{variant:"admin_txt1",className:"font-semibold text-admin_success",children:a.mailServiceUsage.monthly.remaining.toLocaleString()})]}),e.jsxs("div",{className:"mt-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(s,{variant:"admin_txt2_dim",children:"Usage"}),e.jsxs(s,{variant:"admin_txt2_dim",children:[a.mailServiceUsage.monthly.percentUsed.toFixed(1),"%"]})]}),e.jsx("div",{className:"w-full bg-admin_canvas rounded-full h-2",children:e.jsx("div",{className:"bg-admin_warning rounded-full h-2 transition-all duration-300",style:{width:`${Math.min(a.mailServiceUsage.monthly.percentUsed,100)}%`}})})]})]})]})]}),a.mailServiceUsage.source&&e.jsx("div",{className:"mt-4",children:e.jsxs(s,{variant:"admin_txt2_dim",className:"text-xs",children:["Data source: ",a.mailServiceUsage.source]})})]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[a?.recentActivity&&a.recentActivity.length>0&&e.jsxs("div",{className:"bg-paper border border-admin_bordered rounded-xl shadow-sm",children:[e.jsxs("div",{className:"border-b border-admin_bordered p-6",children:[e.jsx(s,{variant:"admin_h3",className:"text-admin_text mb-1",children:"Recent Completed Releases"}),e.jsx(s,{variant:"admin_txt2_dim",children:"Latest completed newsletter campaigns"})]}),e.jsx("div",{className:"p-6 space-y-4",children:a.recentActivity.map((l,h)=>e.jsx("div",{className:"flex items-center justify-between p-4 border border-admin_border rounded-lg",children:e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center space-x-3 mb-2",children:[e.jsx(s,{variant:"admin_txt1",className:"font-semibold text-admin_text",children:l.name}),e.jsxs("div",{className:"text-xs text-admin_success bg-admin_success/10 rounded-full px-2 py-1",children:["✅ ",l.successRate,"%"]})]}),e.jsx("div",{className:"flex items-center space-x-6 text-sm",children:e.jsxs("span",{className:"text-admin_text_secondary",children:[l.emailsSent.toLocaleString()," sent • ",l.timeAgo]})})]})},h))})]}),a?.unsubscribeStats&&e.jsxs("div",{className:"bg-paper rounded-xl shadow-sm",children:[e.jsxs("div",{className:"border-b border-admin_bordered p-6",children:[e.jsx(s,{component:"h2",variant:"admin_h4",className:"mb-1",children:"Unsubscribe Analytics"}),e.jsx(s,{variant:"admin_txt1_dim",children:"Top reasons and trends"})]}),e.jsxs("div",{className:"p-6",children:[e.jsx("div",{className:"mb-6",children:e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs(s,{variant:"admin_txt1",className:"font-semibold text-admin_text",children:["This Month: ",a.unsubscribeStats.thisMonth]}),e.jsxs(s,{variant:"admin_txt1_dim",children:["Rate: ",a.unsubscribeStats.rate,"%"]})]})}),a.unsubscribeStats.topReasons&&a.unsubscribeStats.topReasons.length>0&&e.jsxs("div",{children:[e.jsx(s,{variant:"admin_txt1",className:"font-semibold mb-3",children:"Top Reasons"}),e.jsx("div",{className:"space-y-2",children:a.unsubscribeStats.topReasons.slice(0,3).map((l,h)=>e.jsxs("div",{className:"flex items-center justify-between rounded bg-admin_canvas p-2",children:[e.jsx(s,{variant:"admin_txt2",className:"text-admin_text",children:l.reason}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(s,{variant:"admin_txt2_dim",children:l.count}),e.jsxs(s,{variant:"admin_txt2_dim",children:["(",l.percentage.toFixed(1),"%)"]})]})]},h))})]})]})]})]})]})]})}var xe,Le;function Va(){return Le||(Le=1,xe={aa:{name:"Afar",nativeName:"Afaraf"},ab:{name:"Abkhaz",nativeName:"аҧсуа бызшәа"},ae:{name:"Avestan",nativeName:"avesta"},af:{name:"Afrikaans",nativeName:"Afrikaans"},ak:{name:"Akan",nativeName:"Akan"},am:{name:"Amharic",nativeName:"አማርኛ"},an:{name:"Aragonese",nativeName:"aragonés"},ar:{name:"Arabic",nativeName:"العربية"},as:{name:"Assamese",nativeName:"অসমীয়া"},av:{name:"Avaric",nativeName:"авар мацӀ"},ay:{name:"Aymara",nativeName:"aymar aru"},az:{name:"Azerbaijani",nativeName:"azərbaycan dili"},ba:{name:"Bashkir",nativeName:"башҡорт теле"},be:{name:"Belarusian",nativeName:"беларуская мова"},bg:{name:"Bulgarian",nativeName:"български език"},bi:{name:"Bislama",nativeName:"Bislama"},bm:{name:"Bambara",nativeName:"bamanankan"},bn:{name:"Bengali",nativeName:"বাংলা"},bo:{name:"Tibetan",nativeName:"བོད་ཡིག"},br:{name:"Breton",nativeName:"brezhoneg"},bs:{name:"Bosnian",nativeName:"bosanski jezik"},ca:{name:"Catalan",nativeName:"Català"},ce:{name:"Chechen",nativeName:"нохчийн мотт"}
1,ch:{name:"Chamorro",nativeName:"Chamoru"},co:{name:"Corsican",nativeName:"corsu"},cr:{name:"Cree",nativeName:"ᓀᐦᐃᔭᐍᐏᐣ"},cs:{name:"Czech",nativeName:"Čeština"},cu:{name:"Old Church Slavonic",nativeName:"ѩзыкъ словѣньскъ"},cv:{name:"Chuvash",nativeName:"чӑваш чӗлхи"},cy:{name:"Welsh",nativeName:"Cymraeg"},da:{name:"Danish",nativeName:"Dansk"},de:{name:"German",nativeName:"Deutsch"},dv:{name:"Divehi",nativeName:"ދިވެހި"},dz:{name:"Dzongkha",nativeName:"རྫོང་ཁ"},ee:{name:"Ewe",nativeName:"Eʋegbe"},el:{name:"Greek",nativeName:"Ελληνικά"},en:{name:"English",nativeName:"English"},eo:{name:"Esperanto",nativeName:"Esperanto"},es:{name:"Spanish",nativeName:"Español"},et:{name:"Estonian",nativeName:"eesti"},eu:{name:"Basque",nativeName:"euskara"},fa:{name:"Persian",nativeName:"فارسی"},ff:{name:"Fula",nativeName:"Fulfulde"},fi:{name:"Finnish",nativeName:"suomi"},fj:{name:"Fijian",nativeName:"vosa Vakaviti"},fo:{name:"Faroese",nativeName:"Føroyskt"},fr:{name:"French",nativeName:"Français"},fy:{name:"Western Frisian",nativeName:"Frysk"},ga:{name:"Irish",nativeName:"Gaeilge"},gd:{name:"Scottish Gaelic",nativeName:"Gàidhlig"},gl:{name:"Galician",nativeName:"galego"},gn:{name:"Guaraní",nativeName:"Avañe'ẽ"},gu:{name:"Gujarati",nativeName:"ગુજરાતી"},gv:{name:"Manx",nativeName:"Gaelg"},ha:{name:"Hausa",nativeName:"هَوُسَ"},he:{name:"Hebrew",nativeName:"עברית"},hi:{name:"Hindi",nativeName:"हिन्दी"},ho:{name:"Hiri Motu",nativeName:"Hiri Motu"},hr:{name:"Croatian",nativeName:"Hrvatski"},ht:{name:"Haitian",nativeName:"Kreyòl ayisyen"},hu:{name:"Hungarian",nativeName:"magyar"},hy:{name:"Armenian",nativeName:"Հայերեն"},hz:{name:"Herero",nativeName:"Otjiherero"},ia:{name:"Interlingua",nativeName:"Interlingua"},id:{name:"Indonesian",nativeName:"Bahasa Indonesia"},ie:{name:"Interlingue",nativeName:"Interlingue"},ig:{name:"Igbo",nativeName:"Asụsụ Igbo"},ii:{name:"Nuosu",nativeName:"ꆈꌠ꒿ Nuosuhxop"},ik:{name:"Inupiaq",nativeName:"Iñupiaq"},io:{name:"Ido",nativeName:"Ido"},is:{name:"Icelandic",nativeName:"Íslenska"},it:{name:"Italian",nativeName:"Italiano"},iu:{name:"Inuktitut",nativeName:"ᐃᓄᒃᑎᑐᑦ"},ja:{name:"Japanese",nativeName:"日本語"},jv:{name:"Javanese",nativeName:"basa Jawa"},ka:{name:"Georgian",nativeName:"ქართული"},kg:{name:"Kongo",nativeName:"Kikongo"},ki:{name:"Kikuyu",nativeName:"Gĩkũyũ"},kj:{name:"Kwanyama",nativeName:"Kuanyama"},kk:{name:"Kazakh",nativeName:"қазақ тілі"},kl:{name:"Kalaallisut",nativeName:"kalaallisut"},km:{name:"Khmer",nativeName:"ខេមរភាសា"},kn:{name:"Kannada",nativeName:"ಕನ್ನಡ"},ko:{name:"Korean",nativeName:"한국어"},kr:{name:"Kanuri",nativeName:"Kanuri"},ks:{name:"Kashmiri",nativeName:"कश्मीरी"},ku:{name:"Kurdish",nativeName:"Kurdî"},kv:{name:"Komi",nativeName:"коми кыв"},kw:{name:"Cornish",nativeName:"Kernewek"},ky:{name:"Kyrgyz",nativeName:"Кыргызча"},la:{name:"Latin",nativeName:"latine"},lb:{name:"Luxembourgish",nativeName:"Lëtzebuergesch"},lg:{name:"Ganda",nativeName:"Luganda"},li:{name:"Limburgish",nativeName:"Limburgs"},ln:{name:"Lingala",nativeName:"Lingála"},lo:{name:"Lao",nativeName:"ພາສາລາວ"},lt:{name:"Lithuanian",nativeName:"lietuvių kalba"},lu:{name:"Luba-Katanga",nativeName:"Kiluba"},lv:{name:"Latvian",nativeName:"latviešu valoda"},mg:{name:"Malagasy",nativeName:"fiteny malagasy"},mh:{name:"Marshallese",nativeName:"Kajin M̧ajeļ"},mi:{name:"Māori",nativeName:"te reo Māori"},mk:{name:"Macedonian",nativeName:"македонски јазик"},ml:{name:"Malayalam",nativeName:"മലയാളം"},mn:{name:"Mongolian",nativeName:"Монгол хэл"},mr:{name:"Marathi",nativeName:"मराठी"},ms:{name:"Malay",nativeName:"Bahasa Melayu"},mt:{name:"Maltese",nativeName:"Malti"},my:{name:"Burmese",nativeName:"ဗမာစာ"},na:{name:"Nauru",nativeName:"Dorerin Naoero"},nb:{name:"Norwegian Bokmål",nativeName:"Norsk bokmål"},nd:{name:"Northern Ndebele",nativeName:"isiNdebele"},ne:{name:"Nepali",nativeName:"नेपाली"},ng:{name:"Ndonga",nativeName:"Owambo"},nl:{name:"Dutch",nativeName:"Nederlands"},nn:{name:"Norwegian Nynorsk",nativeName:"Norsk nynorsk"},no:{name:"Norwegian",nativeName:"Norsk"},nr:{name:"Southern Ndebele",nativeName:"isiNdebele"},nv:{name:"Navajo",nativeName:"Diné bizaad"},ny:{name:"Chichewa",nativeName:"chiCheŵa"},oc:{name:"Occitan",nativeName:"occitan"},oj:{name:"Ojibwe",nativeName:"ᐊᓂᔑᓈᐯᒧᐎᓐ"}
1,om:{name:"Oromo",nativeName:"Afaan Oromoo"},or:{name:"Oriya",nativeName:"ଓଡ଼ିଆ"},os:{name:"Ossetian",nativeName:"ирон æвзаг"},pa:{name:"Panjabi",nativeName:"ਪੰਜਾਬੀ"},pi:{name:"Pāli",nativeName:"पाऴि"},pl:{name:"Polish",nativeName:"Polski"},ps:{name:"Pashto",nativeName:"پښتو"},pt:{name:"Portuguese",nativeName:"Português"},qu:{name:"Quechua",nativeName:"Runa Simi"},rm:{name:"Romansh",nativeName:"rumantsch grischun"},rn:{name:"Kirundi",nativeName:"Ikirundi"},ro:{name:"Romanian",nativeName:"Română"},ru:{name:"Russian",nativeName:"Русский"},rw:{name:"Kinyarwanda",nativeName:"Ikinyarwanda"},sa:{name:"Sanskrit",nativeName:"संस्कृतम्"},sc:{name:"Sardinian",nativeName:"sardu"},sd:{name:"Sindhi",nativeName:"सिन्धी"},se:{name:"Northern Sami",nativeName:"Davvisámegiella"},sg:{name:"Sango",nativeName:"yângâ tî sängö"},si:{name:"Sinhala",nativeName:"සිංහල"},sk:{name:"Slovak",nativeName:"Slovenčina"},sl:{name:"Slovenian",nativeName:"slovenščina"},sm:{name:"Samoan",nativeName:"gagana fa'a Samoa"},sn:{name:"Shona",nativeName:"chiShona"},so:{name:"Somali",nativeName:"Soomaaliga"}
1,sq:{name:"Albanian",nativeName:"Shqip"},sr:{name:"Serbian",nativeName:"српски језик"},ss:{name:"Swati",nativeName:"SiSwati"},st:{name:"Southern Sotho",nativeName:"Sesotho"},su:{name:"Sundanese",nativeName:"Basa Sunda"},sv:{name:"Swedish",nativeName:"Svenska"},sw:{name:"Swahili",nativeName:"Kiswahili"},ta:{name:"Tamil",nativeName:"தமிழ்"},te:{name:"Telugu",nativeName:"తెలుగు"},tg:{name:"Tajik",nativeName:"тоҷикӣ"},th:{name:"Thai",nativeName:"ไทย"},ti:{name:"Tigrinya",nativeName:"ትግርኛ"},tk:{name:"Turkmen",nativeName:"Türkmençe"},tl:{name:"Tagalog",nativeName:"Wikang Tagalog"},tn:{name:"Tswana",nativeName:"Setswana"},to:{name:"Tonga",nativeName:"faka Tonga"},tr:{name:"Turkish",nativeName:"Türkçe"},ts:{name:"Tsonga",nativeName:"Xitsonga"},tt:{name:"Tatar",nativeName:"татар теле"},tw:{name:"Twi",nativeName:"Twi"},ty:{name:"Tahitian",nativeName:"Reo Tahiti"},ug:{name:"Uyghur",nativeName:"ئۇيغۇرچە‎"},uk:{name:"Ukrainian",nativeName:"Українська"},ur:{name:"Urdu",nativeName:"اردو"},uz:{name:"Uzbek",nativeName:"Ўзбек"},ve:{name:"Venda",nativeName:"Tshivenḓa"},vi:{name:"Vietnamese",nativeName:"Tiếng Việt"},vo:{name:"Volapük",nativeName:"Volapük"},wa:{name:"Walloon",nativeName:"walon"},wo:{name:"Wolof",nativeName:"Wollof"},xh:{name:"Xhosa",nativeName:"isiXhosa"},yi:{name:"Yiddish",nativeName:"ייִדיש"},yo:{name:"Yoruba",nativeName:"Yorùbá"},za:{name:"Zhuang",nativeName:"Saɯ cueŋƅ"},zh:{name:"Chinese",nativeName:"中文"},zu:{name:"Zulu",nativeName:"isiZulu"}}),xe}var ge,Me;function Ha(){if(Me)return ge;Me=1;const a=Va(),t={},i={},r=[],o=[],n=[];for(const m in a){const{name:u,nativeName:b}=a[m];t[m]=i[u.toLowerCase()]=i[b.toLowerCase()]={code:m,name:u,nativeName:b},r.push(m),o.push(u),n.push(b)}return ge=class he{static getLanguages(u=[]){return u.map(b=>he.validate(b)?Object.assign({},t[b]):{code:b,name:"",nativeName:""})}static getName(u){return he.validate(u)?a[u].name:""}static getAllNames(){return o.slice()}static getNativeName(u){return he.validate(u)?a[u].nativeName:""}static getAllNativeNames(){return n.slice()}static getCode(u){return u=u.toLowerCase(),i.hasOwnProperty(u)?i[u].code:""}static getAllCodes(){return r.slice()}static validate(u){return a.hasOwnProperty(u)}},ge}var za=Ha();const Za=ta(za);var ee={},Pe;function Ya(){if(Pe)return ee;Pe=1,ee.byFips=function(i){return a("fips",i.toUpperCase())},ee.byIso=function(i){if(!isNaN(parseInt(i)))return a("isoNo",("00"+parseInt(i).toString()).slice(-3));if(i.length===2)return a("iso2",i.toUpperCase());if(i.length===3)return a("iso3",i.toUpperCase());throw new Error("cannot determine ISO code type")},ee.byInternet=function(i){return a("internet",i.toUpperCase())},ee.byCountry=function(i){return a("country",i)};function a(i,r){for(var o=0;o<t.length;o++)if(t[o][i]===r)return t[o];return null}var t=[{continent:"Asia",region:"South Asia",country:"Afghanistan",capital:"Kabul",fips:"AF",iso2:"AF",iso3:"AFG",isoNo:"004",internet:"AF"},{continent:"Europe",region:"South East Europe",country:"Albania",capital:"Tirana",fips:"AL",iso2:"AL",iso3:"ALB",isoNo:"008",internet:"AL"},{continent:"Africa",region:"Northern Africa",country:"Algeria",capital:"Algiers",fips:"AG",iso2:"DZ",iso3:"DZA",isoNo:"012",internet:"DZ"},{continent:"Oceania",region:"Pacific",country:"American Samoa",capital:"Pago Pago",fips:"AQ",iso2:"AS",iso3:"ASM",isoNo:"016",internet:"AS"},{continent:"Europe",region:"South West Europe",country:"Andorra",capital:"Andorra la Vella",fips:"AN",iso2:"AD",iso3:"AND",isoNo:"020",internet:"AD"},{continent:"Africa",region:"Southern Africa",country:"Angola",capital:"Luanda",fips:"AO",iso2:"AO",iso3:"AGO",isoNo:"024",internet:"AO"},{continent:"Americas",region:"West Indies",country:"Anguilla",capital:"The Valley",fips:"AV",iso2:"AI",iso3:"AIA",isoNo:"660",internet:"AI"},{continent:"Americas",region:"West Indies",country:"Antigua and Barbuda",capital:"Saint John's",fips:"AC",iso2:"AG",iso3:"ATG",isoNo:"028",internet:"AG"},{continent:"Americas",region:"South America",country:"Argentina",capital:"Buenos Aires",fips:"AR",iso2:"AR",iso3:"ARG",isoNo:"032",internet:"AR"},{continent:"Asia",region:"South West Asia",country:"Armenia",capital:"Yerevan",fips:"AM",iso2:"AM",iso3:"ARM",isoNo:"051",internet:"AM"},{continent:"Americas",region:"West Indies",country:"Aruba",capital:"Oranjestad",fips:"AA",iso2:"AW",iso3:"ABW",isoNo:"533",internet:"AW"},{continent:"Oceania",region:"Pacific",country:"Australia",capital:"Canberra",fips:"AS",iso2:"AU",iso3:"AUS",isoNo:"036",internet:"AU"},{continent:"Europe",region:"Central Europe",country:"Austria",capital:"Vienna",fips:"AU",iso2:"AT",iso3:"AUT",isoNo:"040",internet:"AT"},{continent:"Asia",region:"South West Asia",country:"Azerbaijan",capital:"Baku (Baki)",fips:"AJ",iso2:"AZ",iso3:"AZE",isoNo:"031",internet:"AZ"},{continent:"Americas",region:"West Indies",country:"The Bahamas",capital:"Nassau",fips:"BF",iso2:"BS",iso3:"BHS",isoNo:"044",internet:"BS"},{continent:"Asia",region:"South West Asia",country:"Bahrain",capital:"Manama",fips:"BA",iso2:"BH",iso3:"BHR",isoNo:"048",internet:"BH"},{continent:"Asia",region:"South Asia",country:"Bangladesh",capital:"Dhaka",fips:"BG",iso2:"BD",iso3:"BGD",isoNo:"050",internet:"BD"},{continent:"Americas",region:"West Indies",country:"Barbados",capital:"Bridgetown",fips:"BB",iso2:"BB",iso3:"BRB",
1isoNo:"052",internet:"BB"},{continent:"Europe",region:"Eastern Europe",country:"Belarus",capital:"Minsk",fips:"BO",iso2:"BY",iso3:"BLR",isoNo:"112",internet:"BY"},{continent:"Europe",region:"Western Europe",country:"Belgium",capital:"Brussels",fips:"BE",iso2:"BE",iso3:"BEL",isoNo:"056",internet:"BE"},{continent:"Americas",region:"Central America",country:"Belize",capital:"Belmopan",fips:"BH",iso2:"BZ",iso3:"BLZ",isoNo:"084",internet:"BZ"},{continent:"Africa",region:"Western Africa",country:"Benin",capital:"Porto-Novo",fips:"BN",iso2:"BJ",iso3:"BEN",isoNo:"204",internet:"BJ"},{continent:"Americas",region:"West Indies",country:"Bermuda",capital:"Hamilton",fips:"BD",iso2:"BM",iso3:"BMU",isoNo:"060",internet:"BM"},{continent:"Asia",region:"South Asia",country:"Bhutan",capital:"Thimphu",fips:"BT",iso2:"BT",iso3:"BTN",isoNo:"064",internet:"BT"},{continent:"Americas",region:"South America",country:"Bolivia",capital:"La Paz / Sucre",fips:"BL",iso2:"BO",iso3:"BOL",isoNo:"068",internet:"BO"},{continent:"Europe",region:"South East Europe",country:"Bosnia and Herzegovina",capital:"Sarajevo",fips:"BK",iso2:"BA",iso3:"BIH",isoNo:"070",internet:"BA"},{continent:"Africa",region:"Southern Africa",country:"Botswana",capital:"Gaborone",fips:"BC",iso2:"BW",iso3:"BWA",isoNo:"072",internet:"BW"},{continent:"Americas",region:"South America",country:"Brazil",capital:"Brasilia",fips:"BR",iso2:"BR",iso3:"BRA",isoNo:"076",internet:"BR"},{continent:"Americas",region:"West Indies",country:"British Virgin Islands",capital:"Road Town",fips:"VI",iso2:"VG",iso3:"VGB",isoNo:"092",internet:"VG"},{continent:"Asia",region:"South East Asia",country:"Brunei",capital:"Bandar Seri Begawan",fips:"BX",iso2:"BN",iso3:"BRN",isoNo:"096",internet:"BN"},{continent:"Europe",region:"South East Europe",country:"Bulgaria",capital:"Sofia",fips:"BU",iso2:"BG",iso3:"BGR",isoNo:"100",internet:"BG"},{continent:"Africa",region:"Western Africa",country:"Burkina Faso",capital:"Ouagadougou",fips:"UV",iso2:"BF",iso3:"BFA",isoNo:"854",internet:"BF"},{continent:"Africa",region:"Central Africa",country:"Burundi",capital:"Bujumbura",fips:"BY",iso2:"BI",iso3:"BDI",isoNo:"108",internet:"BI"},{continent:"Asia",region:"South East Asia",country:"Cambodia",capital:"Phnom Penh",fips:"CB",iso2:"KH",iso3:"KHM",isoNo:"116",internet:"KH"},{continent:"Africa",region:"Western Africa",country:"Cameroon",capital:"Yaounde",fips:"CM",iso2:"CM",iso3:"CMR",isoNo:"120",internet:"CM"},{continent:"Americas",region:"North America",country:"Canada",capital:"Ottawa",fips:"CA",iso2:"CA",iso3:"CAN",isoNo:"124",internet:"CA"},{continent:"Africa",region:"Western Africa",country:"Cape Verde",capital:"Praia",fips:"CV",iso2:"CV",iso3:"CPV",isoNo:"132",internet:"CV"},{continent:"Americas",region:"West Indies",country:"Cayman Islands",capital:"George Town",fips:"CJ",iso2:"KY",iso3:"CYM",isoNo:"136",internet:"KY"},{continent:"Africa",region:"Central Africa",country:"Central African Republic",capital:"Bangui",fips:"CT",iso2:"CF",iso3:"CAF",isoNo:"140",internet:"CF"},{continent:"Africa",region:"Central Africa",country:"Chad",capital:"N'Djamena",fips:"CD",iso2:"TD",iso3:"TCD",isoNo:"148",internet:"TD"},{continent:"Americas",region:"South America",country:"Chile",capital:"Santiago",fips:"CI",iso2:"CL",iso3:"CHL",isoNo:"152",internet:"CL"},{continent:"Asia",region:"East Asia",country:"China",capital:"Beijing",fips:"CH",iso2:"CN",iso3:"CHN",isoNo:"156",internet:"CN"},{continent:"Asia",region:"South East Asia",country:"Christmas Island",capital:"The Settlement",fips:"KT",iso2:"CX",iso3:"CXR",isoNo:"162",internet:"CX"},{continent:"Asia",region:"South East Asia",country:"Cocos (Keeling) Islands",capital:"West Island",fips:"CK",iso2:"CC",iso3:"CCK",isoNo:"166",internet:"CC"},{continent:"Americas",region:"South America",country:"Colombia",capital:"Bogota",fips:"CO",iso2:"CO",iso3:"COL",isoNo:"170",internet:"CO"},{continent:"Africa",region:"Indian Ocean",country:"Comoros",capital:"Moroni",fips:"CN",iso2:"KM",iso3:"COM",isoNo:"174",internet:"KM"},{continent:"Africa",region:"Central Africa",country:"Republic of the Congo",capital:"Brazzaville",fips:"CF",iso2:"CG",iso3:"COG",isoNo:"178",internet:"CG"},{continent:"Oceania",region:"Pacific",country:"Cook Islands",capital:"Avarua",fips:"CW",iso2:"CK",iso3:"COK",isoNo:"184",internet:"CK"},{continent:"Americas",region:"Central America",country:"Costa Rica",capital:"San Jose",fips:"CS",iso2:"CR",iso3:"CRI",isoNo:"188",internet:"CR"},{continent:"Africa",region:"Western Africa",country:"Cote d'Ivoire",capital:"Yamoussoukro",fips:"IV",iso2:"CI",iso3:"CIV",isoNo:"384",internet:"CI"},{continent:"Europe",region:"South East Europe",country:"Croatia",capital:"Zagreb",fips:"HR",iso2:"HR",iso3:"HRV",isoNo:"191",internet:"HR"},{continent:"Americas",region:"West Indies",country:"Cuba",capital:"Havana",fips:"CU",iso2:"CU",iso3:"CUB",isoNo:"192",internet:"CU"},{continent:"Asia",region:"South West Asia",country:"Cyprus",capital:"Nicosia",fips:"CY",iso2:"CY",iso3:"CYP",isoNo:"196",internet:"CY"},{continent:"Europe",region:"Central Europe",country:"Czechia",capital:"Prague",fips:"EZ",iso2:"CZ",iso3:"CZE",isoNo:"203",internet:"CZ"},{continent:"Europe",region:"Northern Europe",country:"Denmark",capital:"Copenhagen",fips:"DA",iso2:"DK",iso3:"DNK",isoNo:"208",internet:"DK"},{continent:"Africa",region:"Eastern Africa",country:"Djibouti",capital:"Djibouti",fips:"DJ",iso2:"DJ",iso3:"DJI",isoNo:"262",internet:"DJ"},{continent:"Americas",region:"West Indies",country:"Dominica",capital:"Roseau",fips:"DO",iso2:"DM",iso3:"DMA",isoNo:"212",internet:"DM"},{continent:"Americas",region:"West Indies",country:"Dominican Republic",capital:"Santo Domingo",fips:"DR",iso2:"DO",iso3:"DOM",isoNo:"214",internet:"DO"},{continent:"Americas",region:"South America",country:"Ecuador",capital:"Quito",fips:"EC",iso2:"EC",iso3:"ECU",isoNo:"218",internet:"EC"},{continent:"Africa",region:"Northern Africa",country:"Egypt",capital:"Cairo",fips:"EG",iso2:"EG",iso3:"EGY",isoNo:"818",internet:"EG"},{continent:"Americas",region:"Central America",country:"El Salvador",capital:"San Salvador",fips:"ES",iso2:"SV",iso3:"SLV",isoNo:"222",internet:"SV"},{continent:"Africa",region:"Western Africa",country:"Equatorial Guinea",capital:"Malabo",fips:"EK",iso2:"GQ",iso3:"GNQ",isoNo:"226",internet:"GQ"},{continent:"Africa",region:"Eastern Africa",country:"Eritrea",capital:"Asmara",fips:"ER",iso2:"ER",iso3:"ERI",isoNo:"232",internet:"ER"},{continent:"Europe",region:"Eastern Europe",country:"Estonia",capital:"Tallinn",fips:"EN",iso2:"EE",iso3:"EST",isoNo:"233",internet:"EE"},{continent:"Africa",region:"Eastern Africa",country:"Ethiopia",capital:"Addis Ababa",fips:"ET",iso2:"ET",iso3:"ETH",isoNo:"231",internet:"ET"},{continent:"Americas",region:"South America",country:"Falkland Islands (Islas Malvinas)",capital:"Stanley",fips:"FA",iso2:"FK",iso3:"FLK",isoNo:"238",internet:"FK"},{continent:"Europe",region:"Northern Europe",country:"Faroe Islands",capital:"Torshavn",fips:"FO",iso2:"FO",iso3:"FRO",isoNo:"234",internet:"FO"},{continent:"Oceania",region:"Pacific",country:"Fiji",capital:"Suva",fips:"FJ",iso2:"FJ",iso3:"FJI",isoNo:"242",internet:"FJ"},{continent:"Europe",region:"Northern Europe",country:"Finland",capital:"Helsinki",fips:"FI",iso2:"FI",iso3:"FIN",isoNo:"246",internet:"FI"},{continent:"Europe",region:"Western Europe",country:"France",capital:"Paris",fips:"FR",iso2:"FR",iso3:"FRA",isoNo:"250",internet:"FR"},{continent:"Americas",region:"South America",country:"French Guiana",capital:"Cayenne",fips:"FG",iso2:"GF",iso3:"GUF",isoNo:"254",internet:"GF"},{continent:"Oceania",region:"Pacific",country:"French Polynesia",capital:"Papeete",fips:"FP",iso2:"PF",iso3:"PYF",isoNo:"258",internet:"PF"},{continent:"Africa",region:"Western Africa",country:"Gabon",capital:"Libreville",fips:"GB",iso2:"GA",iso3:"GAB",isoNo:"266",internet:"GA"},{continent:"Africa",region:"Western Africa",country:"The Gambia",capital:"Banjul",fips:"GA",iso2:"GM",iso3:"GMB",isoNo:"270",internet:"GM"},{continent:"Asia",region:"South West Asia",country:"Georgia",capital:"T'bilisi",fips:"GG",iso2:"GE",iso3:"GEO",isoNo:"268",internet:"GE"},{continent:"Europe",region:"Western Europe",country:"Germany",capital:"Berlin",fips:"GM",iso2:"DE",iso3:"DEU",isoNo:"276",internet:"DE"},{continent:"Africa",region:"Western Africa",country:"Ghana",capital:"Accra",fips:"GH",iso2:"GH",iso3:"GHA",isoNo:"288",internet:"GH"},{continent:"Europe",region:"South West Europe",country:"Gibraltar",capital:"Gibraltar",fips:"GI",iso2:"GI",iso3:"GIB",isoNo:"292",internet:"GI"},{continent:"Europe",region:"South East Europe",country:"Greece",capital:"Athens",fips:"GR",iso2:"GR",iso3:"GRC",isoNo:"300",internet:"GR"},{continent:"Americas",region:"North America",country:"Greenland",capital:"Nuuk (Godthab)",fips:"GL",iso2:"GL",iso3:"GRL",isoNo:"304",internet:"GL"},{continent:"Americas",region:"West Indies",country:"Grenada",capital:"Saint George's",fips:"GJ",iso2:"GD",iso3:"GRD",isoNo:"308",internet:"GD"},{continent:"Americas",region:"West Indies",country:"Guadeloupe",capital:"Basse-Terre",fips:"GP",iso2:"GP",iso3:"GLP",isoNo:"312",internet:"GP"},{continent:"Oceania",region:"Pacific",country:"Guam",capital:"Hagatna (Agana)",fips:"GQ",iso2:"GU",iso3:"GUM",isoNo:"316",internet:"GU"},{continent:"Americas",region:"Central America",country:"Guatemala",capital:"Guatemala",fips:"GT",iso2:"GT",iso3:"GTM",isoNo:"320",internet:"GT"},{continent:"Africa",region:"Western Africa",country:"Guinea",capital:"Conakry",fips:"GV",iso2:"GN",
1iso3:"GIN",isoNo:"324",internet:"GN"},{continent:"Africa",region:"Western Africa",country:"Guinea-Bissau",capital:"Bissau",fips:"PU",iso2:"GW",iso3:"GNB",isoNo:"624",internet:"GW"},{continent:"Americas",region:"South America",country:"Guyana",capital:"Georgetown",fips:"GY",iso2:"GY",iso3:"GUY",isoNo:"328",internet:"GY"},{continent:"Americas",region:"West Indies",country:"Haiti",capital:"Port-au-Prince",fips:"HA",iso2:"HT",iso3:"HTI",isoNo:"332",internet:"HT"},{continent:"Europe",region:"Southern Europe",country:"Holy See (Vatican City)",capital:"Vatican City",fips:"VT",iso2:"VA",iso3:"VAT",isoNo:"336",internet:"VA"},{continent:"Americas",region:"Central America",country:"Honduras",capital:"Tegucigalpa",fips:"HO",iso2:"HN",iso3:"HND",isoNo:"340",internet:"HN"},{continent:"Europe",region:"Central Europe",country:"Hungary",capital:"Budapest",fips:"HU",iso2:"HU",iso3:"HUN",isoNo:"348",internet:"HU"},{continent:"Europe",region:"Northern Europe",country:"Iceland",capital:"Reykjavik",fips:"IC",iso2:"IS",iso3:"ISL",isoNo:"352",internet:"IS"},{continent:"Asia",region:"South Asia",country:"India",capital:"New Delhi",fips:"IN",iso2:"IN",iso3:"IND",isoNo:"356",internet:"IN"},{continent:"Asia",region:"South East Asia",country:"Indonesia",capital:"Jakarta",fips:"ID",iso2:"ID",iso3:"IDN",isoNo:"360",internet:"ID"},{continent:"Asia",region:"South West Asia",country:"Iran",capital:"Tehran",fips:"IR",iso2:"IR",iso3:"IRN",isoNo:"364",internet:"IR"},{continent:"Asia",region:"South West Asia",country:"Iraq",capital:"Baghdad",fips:"IZ",iso2:"IQ",iso3:"IRQ",isoNo:"368",internet:"IQ"},{continent:"Europe",region:"Western Europe",country:"Ireland",capital:"Dublin",fips:"EI",iso2:"IE",iso3:"IRL",isoNo:"372",internet:"IE"},{continent:"Asia",region:"South West Asia",country:"Israel",capital:"Jerusalem",fips:"IS",iso2:"IL",iso3:"ISR",isoNo:"376",internet:"IL"},{continent:"Europe",region:"Southern Europe",country:"Italy",capital:"Rome",fips:"IT",iso2:"IT",iso3:"ITA",isoNo:"380",internet:"IT"},{continent:"Americas",region:"West Indies",country:"Jamaica",capital:"Kingston",fips:"JM",iso2:"JM",iso3:"JAM",isoNo:"388",internet:"JM"},{continent:"Asia",region:"East Asia",country:"Japan",capital:"Tokyo",fips:"JA",iso2:"JP",iso3:"JPN",isoNo:"392",internet:"JP"},{continent:"Asia",region:"South West Asia",country:"Jordan",capital:"Amman",fips:"JO",iso2:"JO",iso3:"JOR",isoNo:"400",internet:"JO"},{continent:"Asia",region:"Central Asia",country:"Kazakhstan",capital:"Astana (Akmola)",fips:"KZ",iso2:"KZ",iso3:"KAZ",isoNo:"398",internet:"KZ"},{continent:"Africa",region:"Eastern Africa",country:"Kenya",capital:"Nairobi",fips:"KE",iso2:"KE",iso3:"KEN",isoNo:"404",internet:"KE"},{continent:"Oceania",region:"Pacific",country:"Kiribati",capital:"Tarawa",fips:"KR",iso2:"KI",iso3:"KIR",isoNo:"296",internet:"KI"},{continent:"Asia",region:"East Asia",country:"North Korea",capital:"P'yongyang",fips:"KN",iso2:"KP",iso3:"PRK",isoNo:"408",internet:"KP"},{continent:"Asia",region:"East Asia",country:"South Korea",capital:"Seoul",fips:"KS",iso2:"KR",iso3:"KOR",isoNo:"410",internet:"KR"},{continent:"Asia",region:"South West Asia",country:"Kuwait",capital:"Kuwait",fips:"KU",iso2:"KW",iso3:"KWT",isoNo:"414",internet:"KW"},{continent:"Asia",region:"Central Asia",country:"Kyrgyzstan",capital:"Bishkek",fips:"KG",iso2:"KG",iso3:"KGZ",isoNo:"417",internet:"KG"},{continent:"Asia",region:"South East Asia",country:"Laos",capital:"Vientiane",fips:"LA",iso2:"LA",iso3:"LAO",isoNo:"418",internet:"LA"},{continent:"Europe",region:"Eastern Europe",country:"Latvia",capital:"Riga",fips:"LG",iso2:"LV",iso3:"LVA",isoNo:"428",internet:"LV"},{continent:"Asia",region:"South West Asia",country:"Lebanon",capital:"Beirut",fips:"LE",iso2:"LB",iso3:"LBN",isoNo:"422",internet:"LB"},{continent:"Africa",region:"Southern Africa",country:"Lesotho",capital:"Maseru",fips:"LT",iso2:"LS",iso3:"LSO",isoNo:"426",internet:"LS"},{continent:"Africa",region:"Western Africa",country:"Liberia",capital:"Monrovia",fips:"LI",iso2:"LR",iso3:"LBR",isoNo:"430",internet:"LR"},{continent:"Africa",region:"Northern Africa",country:"Libya",capital:"Tripoli",fips:"LY",iso2:"LY",iso3:"LBY",isoNo:"434",internet:"LY"},{continent:"Europe",region:"Central Europe",country:"Liechtenstein",capital:"Vaduz",fips:"LS",iso2:"LI",iso3:"LIE",isoNo:"438",internet:"LI"},{continent:"Europe",region:"Eastern Europe",country:"Lithuania",capital:"Vilnius",fips:"LH",iso2:"LT",iso3:"LTU",isoNo:"440",internet:"LT"},{continent:"Europe",region:"Western Europe",country:"Luxembourg",capital:"Luxembourg",fips:"LU",iso2:"LU",iso3:"LUX",isoNo:"442",internet:"LU"},{continent:"Europe",region:"South East Europe",country:"North Macedonia",capital:"Skopje",fips:"MK",iso2:"MK",iso3:"MKD",isoNo:"807",internet:"MK"},{continent:"Africa",region:"Indian Ocean",country:"Madagascar",capital:"Antananarivo",fips:"MA",iso2:"MG",iso3:"MDG",isoNo:"450",internet:"MG"},{continent:"Africa",region:"Southern Africa",country:"Malawi",capital:"Lilongwe",fips:"MI",iso2:"MW",iso3:"MWI",isoNo:"454",internet:"MW"},{continent:"Asia",region:"South East Asia",country:"Malaysia",capital:"Kuala Lumpur",fips:"MY",iso2:"MY",iso3:"MYS",isoNo:"458",internet:"MY"},{continent:"Asia",region:"South Asia",country:"Maldives",capital:"Male (Maale)",fips:"MV",iso2:"MV",iso3:"MDV",isoNo:"462",internet:"MV"},{continent:"Africa",region:"Western Africa",country:"Mali",capital:"Bamako",fips:"ML",iso2:"ML",iso3:"MLI",isoNo:"466",internet:"ML"},{continent:"Europe",region:"Southern Europe",country:"Malta",capital:"Valletta",fips:"MT",iso2:"MT",iso3:"MLT",isoNo:"470",internet:"MT"},{continent:"Europe",region:"Western Europe",country:"Isle of Man",capital:"Douglas",fips:"IM",iso2:"IM",iso3:"IMN",isoNo:"833",internet:"IM"},{continent:"Oceania",region:"Pacific",country:"Marshall Islands",capital:"Majuro",fips:"RM",iso2:"MH",iso3:"MHL",isoNo:"584",internet:"MH"},{continent:"Americas",region:"West Indies",country:"Martinique",capital:"Fort-de-France",fips:"MB",iso2:"MQ",iso3:"MTQ",isoNo:"474",internet:"MQ"},{continent:"Africa",region:"Western Africa",country:"Mauritania",capital:"Nouakchott",fips:"MR",iso2:"MR",iso3:"MRT",isoNo:"478",internet:"MR"},{continent:"Africa",region:"Indian Ocean",country:"Mauritius",capital:"Port Louis",fips:"MP",iso2:"MU",iso3:"MUS",isoNo:"480",internet:"MU"},{continent:"Africa",region:"Indian Ocean",country:"Mayotte",capital:"Mamoutzou",fips:"MF",iso2:"YT",iso3:"MYT",isoNo:"175",internet:"YT"},{continent:"Americas",region:"Central America",country:"Mexico",capital:"Mexico",fips:"MX",iso2:"MX",iso3:"MEX",isoNo:"484",internet:"MX"},{continent:"Oceania",region:"Pacific",country:"Federated States of Micronesia",capital:"Palikir",fips:"",iso2:"FM",iso3:"FSM",isoNo:"583",internet:"FM"},{continent:"Europe",region:"Eastern Europe",country:"Moldova",capital:"Chisinau",fips:"MD",iso2:"MD",iso3:"MDA",isoNo:"498",internet:"MD"},{continent:"Europe",region:"Western Europe",country:"Monaco",capital:"Monaco",fips:"MN",iso2:"MC",iso3:"MCO",isoNo:"492",internet:"MC"},{continent:"Asia",region:"Northern Asia",country:"Mongolia",capital:"Ulaanbaatar",fips:"MG",iso2:"MN",iso3:"MNG",isoNo:"496",internet:"MN"},{continent:"Americas",region:"West Indies",country:"Montserrat",capital:"Plymouth",fips:"MH",iso2:"MS",iso3:"MSR",isoNo:"500",internet:"MS"},{continent:"Africa",region:"Northern Africa",country:"Morocco",capital:"Rabat",fips:"MO",iso2:"MA",iso3:"MAR",isoNo:"504",internet:"MA"},{continent:"Africa",region:"Southern Africa",country:"Mozambique",capital:"Maputo",fips:"MZ",iso2:"MZ",iso3:"MOZ",isoNo:"508",internet:"MZ"},{continent:"Asia",region:"South East Asia",country:"Myanmar (Burma)",capital:"Rangoon (Yangon)",fips:"BM",iso2:"MM",iso3:"MMR",isoNo:"104",internet:"MM"},{continent:"Africa",region:"Southern Africa",country:"Namibia",capital:"Windhoek",fips:"WA",iso2:"NA",iso3:"NAM",isoNo:"516",internet:"NA"},{continent:"Oceania",region:"Pacific",country:"Nauru",capital:"no official capital",fips:"NR",iso2:"NR",iso3:"NRU",isoNo:"520",internet:"NR"},{continent:"Asia",region:"South Asia",country:"Nepal",capital:"Kathmandu",fips:"NP",iso2:"NP",iso3:"NPL",isoNo:"524",internet:"NP"},{continent:"Europe",region:"Western Europe",country:"Netherlands",capital:"Amsterdam",fips:"NL",iso2:"NL",iso3:"NLD",isoNo:"528",internet:"NL"},{continent:"Americas",region:"West Indies",country:"Netherlands Antilles",capital:"Willemstad",fips:"NT",iso2:"AN",iso3:"ANT",isoNo:"530",internet:"AN"},{continent:"Oceania",region:"Pacific",country:"New Caledonia",capital:"Noumea",fips:"NC",iso2:"NC",iso3:"NCL",isoNo:"540",internet:"NC"},{continent:"Oceania",region:"Pacific",country:"New Zealand",capital:"Wellington",fips:"NZ",iso2:"NZ",iso3:"NZL",isoNo:"554",internet:"NZ"},{continent:"Americas",region:"Central America",country:"Nicaragua",capital:"Managua",fips:"NU",iso2:"NI",iso3:"NIC",isoNo:"558",internet:"NI"},{continent:"Africa",region:"Western Africa",country:"Niger",capital:"Niamey",fips:"NG",iso2:"NE",iso3:"NER",isoNo:"562",internet:"NE"},{continent:"Africa",region:"Western Africa",country:"Nigeria",capital:"Abuja",fips:"NI",
1iso2:"NG",iso3:"NGA",isoNo:"566",internet:"NG"},{continent:"Oceania",region:"Pacific",country:"Niue",capital:"Alofi",fips:"NE",iso2:"NU",iso3:"NIU",isoNo:"570",internet:"NU"},{continent:"Oceania",region:"Pacific",country:"Norfolk Island",capital:"Kingston",fips:"NF",iso2:"NF",iso3:"NFK",isoNo:"574",internet:"NF"},{continent:"Oceania",region:"Pacific",country:"Northern Mariana Islands",capital:"Saipan",fips:"CQ",iso2:"MP",iso3:"MNP",isoNo:"580",internet:"MP"},{continent:"Europe",region:"Northern Europe",country:"Norway",capital:"Oslo",fips:"NO",iso2:"NO",iso3:"NOR",isoNo:"578",internet:"NO"},{continent:"Asia",region:"South West Asia",country:"Oman",capital:"Muscat",fips:"MU",iso2:"OM",iso3:"OMN",isoNo:"512",internet:"OM"},{continent:"Asia",region:"South Asia",country:"Pakistan",capital:"Islamabad",fips:"PK",iso2:"PK",iso3:"PAK",isoNo:"586",internet:"PK"},{continent:"Oceania",region:"Pacific",country:"Palau",capital:"Koror",fips:"PS",iso2:"PW",iso3:"PLW",isoNo:"585",internet:"PW"},{continent:"Asia",region:"South West Asia",country:"Palestinian Territory",capital:"East Jerusalem",fips:"WE",iso2:"PS",iso3:"PSE",isoNo:"275",internet:"PS"},{continent:"Americas",region:"Central America",country:"Panama",capital:"Panama",fips:"PM",iso2:"PA",iso3:"PAN",isoNo:"591",internet:"PA"},{continent:"Oceania",region:"Pacific",country:"Papua New Guinea",capital:"Port Moresby",fips:"PP",iso2:"PG",iso3:"PNG",isoNo:"598",internet:"PG"},{continent:"Americas",region:"South America",country:"Paraguay",capital:"Asuncion",fips:"PA",iso2:"PY",iso3:"PRY",isoNo:"600",internet:"PY"},{continent:"Americas",region:"South America",country:"Peru",capital:"Lima",fips:"PE",iso2:"PE",iso3:"PER",isoNo:"604",internet:"PE"},{continent:"Asia",region:"South East Asia",country:"Philippines",capital:"Manila",fips:"RP",iso2:"PH",iso3:"PHL",isoNo:"608",internet:"PH"},{continent:"Oceania",region:"Pacific",country:"Pitcairn Islands",capital:"Adamstown",fips:"PC",iso2:"PN",iso3:"PCN",isoNo:"612",internet:"PN"},{continent:"Europe",region:"Eastern Europe",country:"Poland",capital:"Warsaw",fips:"PL",iso2:"PL",iso3:"POL",isoNo:"616",internet:"PL"},{continent:"Europe",region:"South West Europe",country:"Portugal",capital:"Lisbon",fips:"PO",iso2:"PT",iso3:"PRT",isoNo:"620",internet:"PT"},{continent:"Americas",region:"West Indies",country:"Puerto Rico",capital:"San Juan",fips:"RQ",iso2:"PR",iso3:"PRI",isoNo:"630",internet:"PR"},{continent:"Asia",region:"South West Asia",country:"Qatar",capital:"Doha",fips:"QA",iso2:"QA",iso3:"QAT",isoNo:"634",internet:"QA"},{continent:"Africa",region:"Indian Ocean",country:"Reunion",capital:"Saint-Denis",fips:"RE",iso2:"RE",iso3:"REU",isoNo:"638",internet:"RE"},{continent:"Europe",region:"South East Europe",country:"Romania",capital:"Bucharest",fips:"RO",iso2:"RO",iso3:"ROU",isoNo:"642",internet:"RO"},{continent:"Asia",region:"Northern Asia",country:"Russia",capital:"Moscow",fips:"RS",iso2:"RU",iso3:"RUS",isoNo:"643",internet:"RU"},{continent:"Africa",region:"Central Africa",country:"Rwanda",capital:"Kigali",fips:"RW",iso2:"RW",iso3:"RWA",isoNo:"646",internet:"RW"},{continent:"Americas",region:"West Indies",country:"Saint Kitts and Nevis",capital:"Basseterre",fips:"SC",iso2:"KN",iso3:"KNA",isoNo:"659",internet:"KN"},{continent:"Americas",region:"West Indies",country:"Saint Lucia",capital:"Castries",fips:"ST",iso2:"LC",iso3:"LCA",isoNo:"662",internet:"LC"},{continent:"Americas",region:"North America",country:"Saint Pierre and Miquelon",capital:"Saint-Pierre",fips:"SB",iso2:"PM",iso3:"SPM",isoNo:"666",internet:"PM"},{continent:"Americas",region:"West Indies",country:"Saint Vincent and the Grenadines",capital:"Kingstown",fips:"VC",iso2:"VC",iso3:"VCT",isoNo:"670",internet:"VC"},{continent:"Europe",region:"Southern Europe",country:"San Marino",capital:"San Marino",fips:"SM",iso2:"SM",iso3:"SMR",isoNo:"674",internet:"SM"},{continent:"Africa",region:"Western Africa",country:"Sao Tome and Principe",capital:"Sao Tome",fips:"TP",iso2:"ST",iso3:"STP",isoNo:"678",internet:"ST"},{continent:"Asia",region:"South West Asia",country:"Saudi Arabia",capital:"Riyadh",fips:"SA",iso2:"SA",iso3:"SAU",isoNo:"682",internet:"SA"},{continent:"Africa",region:"Western Africa",country:"Senegal",capital:"Dakar",fips:"SG",iso2:"SN",iso3:"SEN",isoNo:"686",internet:"SN"},{continent:"Africa",region:"Indian Ocean",country:"Seychelles",capital:"Victoria",fips:"SE",iso2:"SC",iso3:"SYC",isoNo:"690",internet:"SC"},{continent:"Africa",region:"Western Africa",country:"Sierra Leone",capital:"Freetown",fips:"SL",iso2:"SL",iso3:"SLE",isoNo:"694",internet:"SL"},{continent:"Asia",region:"South East Asia",country:"Singapore",capital:"Singapore",fips:"SN",iso2:"SG",iso3:"SGP",isoNo:"702",internet:"SG"},{continent:"Europe",region:"Central Europe",country:"Slovakia",capital:"Bratislava",fips:"LO",iso2:"SK",iso3:"SVK",isoNo:"703",internet:"SK"},{continent:"Europe",region:"South East Europe",country:"Slovenia",capital:"Ljubljana",fips:"SI",iso2:"SI",iso3:"SVN",isoNo:"705",internet:"SI"},{continent:"Oceania",region:"Pacific",country:"Solomon Islands",capital:"Honiara",fips:"BP",iso2:"SB",iso3:"SLB",isoNo:"090",internet:"SB"},{continent:"Africa",region:"Eastern Africa",country:"Somalia",capital:"Mogadishu",fips:"SO",iso2:"SO",iso3:"SOM",isoNo:"706",internet:"SO"},{continent:"Africa",region:"Southern Africa",country:"South Africa",capital:"Pretoria��",fips:"SF",iso2:"ZA",iso3:"ZAF",isoNo:"710",internet:"ZA"},{continent:"Europe",region:"South West Europe",country:"Spain",capital:"Madrid",fips:"SP",iso2:"ES",iso3:"ESP",isoNo:"724",internet:"ES"},{continent:"Asia",region:"South Asia",country:"Sri Lanka",capital:"Colombo",fips:"CE",iso2:"LK",iso3:"LKA",isoNo:"144",internet:"LK"},{continent:"Africa",region:"Northern Africa",country:"Sudan",capital:"Khartoum",fips:"SU",iso2:"SD",
1iso3:"SDN",isoNo:"729",internet:"SD"},{continent:"Americas",region:"South America",country:"Suriname",capital:"Paramaribo",fips:"NS",iso2:"SR",iso3:"SUR",isoNo:"740",internet:"SR"},{continent:"Europe",region:"Northern Europe",country:"Svalbard",capital:"Longyearbyen",fips:"SV",iso2:"SJ",iso3:"SJM",isoNo:"744",internet:"SJ"},{continent:"Africa",region:"Southern Africa",country:"Eswatini",capital:"Mbabane",fips:"WZ",iso2:"SZ",iso3:"SWZ",isoNo:"748",internet:"SZ"},{continent:"Europe",region:"Northern Europe",country:"Sweden",capital:"Stockholm",fips:"SW",iso2:"SE",iso3:"SWE",isoNo:"752",internet:"SE"},{continent:"Europe",region:"Central Europe",country:"Switzerland",capital:"Bern",fips:"SZ",iso2:"CH",iso3:"CHE",isoNo:"756",internet:"CH"},{continent:"Asia",region:"South West Asia",country:"Syria",capital:"Damascus",fips:"SY",iso2:"SY",iso3:"SYR",isoNo:"760",internet:"SY"},{continent:"Asia",region:"East Asia",country:"Taiwan",capital:"Taipei",fips:"TW",iso2:"TW",iso3:"TWN",isoNo:"158",internet:"TW"},{continent:"Asia",region:"Central Asia",country:"Tajikistan",capital:"Dushanbe",fips:"TI",iso2:"TJ",iso3:"TJK",isoNo:"762",internet:"TJ"},{continent:"Africa",region:"Eastern Africa",country:"Tanzania",capital:"Dar es Salaam",fips:"TZ",iso2:"TZ",iso3:"TZA",isoNo:"834",internet:"TZ"},{continent:"Asia",region:"South East Asia",country:"Thailand",capital:"Bangkok",fips:"TH",iso2:"TH",iso3:"THA",isoNo:"764",internet:"TH"},{continent:"Africa",region:"Western Africa",country:"Togo",capital:"Lome",fips:"TO",iso2:"TG",iso3:"TGO",isoNo:"768",internet:"TG"},{continent:"Oceania",region:"Pacific",country:"Tokelau",capital:"none",fips:"TL",iso2:"TK",iso3:"TKL",isoNo:"772",internet:"TK"},{continent:"Oceania",region:"Pacific",country:"Tonga",capital:"Nuku'alofa",fips:"TN",iso2:"TO",iso3:"TON",isoNo:"776",internet:"TO"},{continent:"Americas",region:"West Indies",country:"Trinidad and Tobago",capital:"Port-of-Spain",fips:"TD",iso2:"TT",iso3:"TTO",isoNo:"780",internet:"TT"},{continent:"Africa",region:"Northern Africa",country:"Tunisia",capital:"Tunis",fips:"TS",iso2:"TN",iso3:"TUN",isoNo:"788",internet:"TN"},{continent:"Asia",region:"South West Asia",country:"Turkey",capital:"Ankara",fips:"TU",iso2:"TR",iso3:"TUR",isoNo:"792",internet:"TR"},{continent:"Asia",region:"Central Asia",country:"Turkmenistan",capital:"Ashgabat",fips:"TX",iso2:"TM",iso3:"TKM",isoNo:"795",internet:"TM"},{continent:"Americas",region:"West Indies",country:"Turks and Caicos Islands",capital:"Grand Turk",fips:"TK",iso2:"TC",iso3:"TCA",isoNo:"796",internet:"TC"},{continent:"Oceania",region:"Pacific",country:"Tuvalu",capital:"Funafuti",fips:"TV",iso2:"TV",iso3:"TUV",isoNo:"798",internet:"TV"},{continent:"Africa",region:"Eastern Africa",country:"Uganda",capital:"Kampala",fips:"UG",iso2:"UG",iso3:"UGA",isoNo:"800",internet:"UG"},{continent:"Europe",region:"Eastern Europe",country:"Ukraine",capital:"Kyiv",fips:"UP",iso2:"UA",iso3:"UKR",isoNo:"804",internet:"UA"},{continent:"Asia",region:"South West Asia",country:"United Arab Emirates",capital:"Abu Dhabi",fips:"TC",iso2:"AE",iso3:"ARE",isoNo:"784",internet:"AE"},{continent:"Europe",region:"Western Europe",country:"United Kingdom",capital:"London",fips:"UK",iso2:"GB",iso3:"GBR",isoNo:"826",internet:"UK"},{continent:"Americas",region:"North America",country:"United States",capital:"Washington DC",fips:"US",iso2:"US",iso3:"USA",isoNo:"840",internet:"US"},{continent:"Americas",region:"North America",country:"United States Minor Outlying Islands",capital:"Washington DC",fips:"",iso2:"UM",iso3:"UMI",isoNo:"581",internet:"US"},{continent:"Americas",region:"South America",country:"Uruguay",capital:"Montevideo",fips:"UY",iso2:"UY",iso3:"URY",isoNo:"858",internet:"UY"},{continent:"Asia",region:"Central Asia",country:"Uzbekistan",capital:"Tashkent (Toshkent)",fips:"UZ",iso2:"UZ",iso3:"UZB",isoNo:"860",internet:"UZ"},{continent:"Oceania",region:"Pacific",country:"Vanuatu",capital:"Port-Vila",fips:"NH",iso2:"VU",iso3:"VUT",isoNo:"548",internet:"VU"},{continent:"Americas",region:"South America",country:"Venezuela",capital:"Caracas",fips:"VE",iso2:"VE",iso3:"VEN",isoNo:"862",internet:"UE"},{continent:"Asia",region:"South East Asia",country:"Vietnam",capital:"Hanoi",fips:"VN",iso2:"VN",iso3:"VNM",isoNo:"704",internet:"VN"},{continent:"Americas",region:"West Indies",country:"Virgin Islands",capital:"Charlotte Amalie",fips:"VQ",iso2:"VI",iso3:"VIR",isoNo:"850",internet:"VI"},{continent:"Oceania",region:"Pacific",country:"Wallis and Futuna",capital:"Mata-Utu (on Ile Uvea)",fips:"WF",iso2:"WF",iso3:"WLF",isoNo:"876",internet:"WF"},{continent:"Africa",region:"Northern Africa",country:"Western Sahara",capital:"none",fips:"WI",iso2:"EH",iso3:"ESH",isoNo:"732",internet:"EH"},{continent:"Oceania",region:"Pacific",country:"Western Samoa",capital:"Apia",fips:"WS",iso2:"WS",iso3:"WSM",isoNo:"882",internet:"WS"},{continent:"Asia",region:"South West Asia",country:"Yemen",capital:"Sanaa",fips:"YM",iso2:"YE",iso3:"YEM",isoNo:"887",internet:"YE"},{continent:"Africa",region:"Central Africa",country:"Democratic Republic of the Congo",capital:"Kinshasa",fips:"CG",iso2:"CD",iso3:"COD",isoNo:"180",internet:"ZR"},{continent:"Africa",region:"Southern Africa",country:"Zambia",capital:"Lusaka",fips:"ZA",iso2:"ZM",iso3:"ZMB",
1isoNo:"894",internet:"ZM"},{continent:"Africa",region:"Southern Africa",country:"Zimbabwe",capital:"Harare",fips:"ZI",iso2:"ZW",iso3:"ZWE",isoNo:"716",internet:"ZW"},{continent:"Asia",region:"East Asia",country:"Hong Kong",capital:"Victoria",fips:"HK",iso2:"HK",iso3:"HKG",isoNo:"344",internet:"HK"},{continent:"Asia",region:"East Asia",country:"Macau",capital:"Macau",fips:"MC",iso2:"MO",iso3:"MAC",isoNo:"446",internet:"MO"},{continent:"Antarctica",region:"Antarctica",country:"Antarctica",capital:"",fips:"AY",iso2:"AQ",iso3:"ATA",isoNo:"010",internet:"AQ"},{continent:"Atlantic Ocean",region:"South Atlantic Ocean",country:"Bouvet Island",capital:"",fips:"BV",iso2:"BV",iso3:"BVT",isoNo:"074",internet:"BV"},{continent:"Asia",region:"South Asia",country:"British Indian Ocean Territory",capital:"",fips:"IO",iso2:"IO",iso3:"IOT",isoNo:"086",internet:"IO"},{continent:"Indian Ocean",region:"Southern Indian Ocean",country:"French Southern and Antarctic Lands",capital:"",fips:"FS",iso2:"TF",iso3:"ATF",isoNo:"260",internet:"--"},{continent:"Indian Ocean",region:"Southern Indian Ocean",country:"Heard Island and McDonald Islands",capital:"",fips:"HM",iso2:"HM",iso3:"HMD",isoNo:"334",internet:"HM"},{continent:"Atlantic Ocean",region:"South Atlantic Ocean",country:"Saint Helena",capital:"",fips:"SH",iso2:"SH",iso3:"SHN",isoNo:"654",internet:"SH"},{continent:"Atlantic Ocean",region:"South Atlantic Ocean",country:"South Georgia and the South Sandwich Islands",capital:"",fips:"SX",iso2:"GS",iso3:"SGS",isoNo:"239",internet:"GS"},{continent:"Europe",region:"Western Europe",country:"Guernsey",capital:"Saint Peter Port",fips:"GK",iso2:"GG",iso3:"GGY",isoNo:"831",internet:"GG"},{continent:"Europe",region:"South East Europe",country:"Serbia",capital:"Belgrade",fips:"RI",iso2:"RS",iso3:"SRB",isoNo:"688",internet:"RS"},{continent:"Americas",region:"West Indies",country:"Saint Barthélemy",capital:"Gustavia",fips:"TB",iso2:"BL",iso3:"BLM",isoNo:"652",internet:"BL"},{continent:"Europe",region:"South East Europe",country:"Montenegro",capital:"Podgorica",fips:"MJ",iso2:"ME",iso3:"MNE",isoNo:"499",internet:"ME"},{continent:"Europe",region:"Western Europe",country:"Jersey",capital:"Saint Helier",fips:"JE",iso2:"JE",iso3:"JEY",isoNo:"832",internet:"JE"},{continent:"Americas",region:"West Indies",country:"Curaçao",capital:"Willemstad",fips:"UC",iso2:"CW",iso3:"CUW",isoNo:"531",internet:"CW"},{continent:"Americas",region:"West Indies",country:"Saint Martin",capital:"Marigot",fips:"RN",iso2:"MF",iso3:"MAF",isoNo:"663",internet:"MF"},{continent:"Americas",region:"West Indies",country:"Sint Maarten",capital:"Philipsburg",fips:"NN",iso2:"SX",iso3:"SXM",isoNo:"534",internet:"SX"},{continent:"Asia",region:"South East Asia",country:"Timor-Leste",capital:"Dili",fips:"TT",iso2:"TL",iso3:"TLS",isoNo:"626",internet:"TL"},{continent:"Africa",region:"Northern Africa",country:"South Sudan",capital:"Juba",fips:"OD",iso2:"SS",iso3:"SSD",isoNo:"728",internet:"SS"},{continent:"Europe",region:"Northern Europe",country:"Åland Islands",capital:"Mariehamn",fips:"AX",iso2:"AX",iso3:"ALA",isoNo:"248",internet:"AX"},{continent:"Americas",region:"West Indies",country:"Bonaire",capital:"Kralendijk",fips:"BQ",iso2:"BQ",iso3:"BES",isoNo:"535",internet:"BQ"},{continent:"Europe",region:"South East Europe",country:"Republic of Kosovo",capital:"Pristina",fips:"KV",iso2:"XK",iso3:"XKX",isoNo:null,internet:"XK"}];return ee.countries=t,ee}Ya();const _e=[{code:"en",name:"English",displayName:"English"},{code:"es",name:"Spanish",displayName:"Español"},{code:"fr",name:"French",displayName:"Français"},{code:"de",name:"German",displayName:"Deutsch"},{code:"it",name:"Italian",displayName:"Italiano"},{code:"pt",name:"Portuguese",displayName:"Português"},{code:"nl",name:"Dutch",displayName:"Nederlands"},{code:"sv",name:"Swedish",displayName:"Svenska"},{code:"da",name:"Danish",displayName:"Dansk"},{code:"no",name:"Norwegian",displayName:"Norsk"},{code:"fi",name:"Finnish",displayName:"Suomi"},{code:"ru",name:"Russian",displayName:"Русский"},{code:"pl",name:"Polish",displayName:"Polski"},{code:"bg",name:"Bulgarian",displayName:"Български"},{code:"cs",name:"Czech",displayName:"Čeština"},{code:"sk",name:"Slovak",displayName:"Slovenčina"},{code:"sl",name:"Slovenian",displayName:"Slovenščina"},{code:"hr",name:"Croatian",displayName:"Hrvatski"},{code:"sr",name:"Serbian",displayName:"Српски"},{code:"uk",name:"Ukrainian",displayName:"Українська"},{code:"be",name:"Belarusian",displayName:"Беларуская"},{code:"mk",name:"Macedonian",displayName:"Македонски"},{code:"ro",name:"Romanian",displayName:"Română"},{code:"hu",name:"Hungarian",displayName:"Magyar"},{code:"et",name:"Estonian",displayName:"Eesti"},{code:"lv",name:"Latvian",displayName:"Latviešu"},{code:"lt",name:"Lithuanian",displayName:"Lietuvių"},{code:"mt",name:"Maltese",displayName:"Malti"},{code:"is",name:"Icelandic",displayName:"Íslenska"},{code:"ga",name:"Irish",displayName:"Gaeilge"},{code:"cy",name:"Welsh",displayName:"Cymraeg"},{code:"eu",name:"Basque",displayName:"Euskera"}
1,{code:"ca",name:"Catalan",displayName:"Català"},{code:"gl",name:"Galician",displayName:"Galego"},{code:"tr",name:"Turkish",displayName:"Türkçe"},{code:"el",name:"Greek",displayName:"Ελληνικά"},{code:"zh",name:"Chinese",displayName:"中文"},{code:"ja",name:"Japanese",displayName:"日本語"},{code:"ko",name:"Korean",displayName:"한국어"},{code:"ar",name:"Arabic",displayName:"العربية"},{code:"he",name:"Hebrew",displayName:"עברית"},{code:"fa",name:"Persian",displayName:"فارسی"},{code:"ur",name:"Urdu",displayName:"اردو"},{code:"hi",name:"Hindi",displayName:"हिन्दी"},{code:"bn",name:"Bengali",displayName:"বাংলা"},{code:"ta",name:"Tamil",displayName:"தமிழ்"},{code:"te",name:"Telugu",displayName:"తెలుగు"},{code:"ml",name:"Malayalam",displayName:"മലയാളം"},{code:"kn",name:"Kannada",displayName:"ಕನ್ನಡ"},{code:"gu",name:"Gujarati",displayName:"ગુજરાતી"},{code:"mr",name:"Marathi",displayName:"मराठी"},{code:"th",name:"Thai",displayName:"ไทย"},{code:"vi",name:"Vietnamese",displayName:"Tiếng Việt"},{code:"id",name:"Indonesian",displayName:"Bahasa Indonesia"},{code:"ms",name:"Malay",displayName:"Bahasa Melayu"},{code:"tl",name:"Filipino",displayName:"Filipino"},{code:"sw",name:"Swahili",displayName:"Kiswahili"},{code:"am",name:"Amharic",displayName:"አማርኛ"},{code:"zu",name:"Zulu",displayName:"isiZulu"},{code:"xh",name:"Xhosa",displayName:"isiXhosa"},{code:"af",name:"Afrikaans",displayName:"Afrikaans"}],Ie={us:"en",usa:"en",uk:"en",gb:"en",au:"en",ca:"en",nz:"en",jp:"ja",cn:"zh",kr:"ko",mx:"es",br:"pt",ar:"es",cl:"es",co:"es",pe:"es",ve:"es",at:"de",ch:"de",be:"nl",in:"hi",pk:"ur",sa:"ar",ae:"ar",eg:"ar",il:"he",ir:"fa",th:"th",vn:"vi",id:"id",my:"ms",ph:"tl",sg:"en",hk:"zh",tw:"zh",za:"en",ke:"sw",ng:"en"},Ja=a=>{let t=a.toLowerCase().trim();Ie[t]&&(t=Ie[t]);const i=_e.find(o=>o.code.toLowerCase()===t);if(i)return i.name;const r=Za.getName(t);return r||a.toUpperCase()},qa=({isOpen:a,onClose:t,onConfirm:i})=>{const[r,o]=d.useState(!1),[n,m]=d.useState({email:!0,name:!0,language:!0,registered:!0,subscribed:!0,subscribedAt:!0,unsubscribeReason:!0});d.useEffect(()=>{a&&m({email:!0,name:!0,language:!0,registered:!0,subscribed:!0,subscribedAt:!0,unsubscribeReason:!0})},[a]);const u={email:"Email Address",name:"Name",language:"Language",registered:"Registration Status",subscribed:"Subscription Status",subscribedAt:"Subscribed Date",unsubscribeReason:"Unsubscribe Reason"},b=async()=>{o(!0);try{await i(n),t()}catch{}finally{o(!1)}},c=()=>{r||t()};return e.jsx(se,{isOpen:a,onClose:c,variant:"admin_compact",className:"max-w-md",children:e.jsxs("div",{className:"p-6",children:[e.jsx(s,{component:"h1",variant:"admin_h3",className:"mb-4",children:"Export Options"}),e.jsx(s,{variant:"admin_txt1_dim",children:"Select which fields to include in the exported CSV file:"}),e.jsx("div",{className:"space-y-4 mt-4",children:Object.entries(u).map(([l,h])=>{const g=l==="email",j=g||r,k=g?`${h} (Required)`:h;return e.jsxs("div",{className:"flex items-center rounded-lg hover:bg-admin_canvas space-x-3 p-2 transition-colors",children:[e.jsx(Oe,{variant:"admin",isOn:n[l],onChange:w=>{j||m(S=>({...S,[l]:w}))},disabled:j}),e.jsx(s,{variant:"admin_txt1",className:`cursor-pointer select-none flex-1 ${g?"text-admin_text font-semibold":"text-admin_text hover:text-admin_primary"}`,onClick:()=>{j||m(w=>({...w,[l]:!w[l]}))},children:k})]},l)})}),e.jsxs("div",{className:"flex items-center justify-end border-t border-admin_bordered space-x-3 mt-6 pt-4",children:[e.jsx(B,{variant:"admin_secondary",onClick:c,disabled:r,children:"Cancel"}),e.jsx(B,{variant:"admin_primary",onClick:b,loading:r,children:"Export CSV"})]})]})})},Xa=({isOpen:a,onClose:t})=>e.jsx(se,{isOpen:a,onClose:t,variant:"admin_compact",className:"max-w-3xl",children:e.jsxs("div",{className:"p-6",children:[e.jsx(s,{component:"h1",variant:"admin_h3",className:"mb-4",children:"CSV Format Example"}),e.jsx(s,{variant:"admin_txt1",className:"mb-4",children:"Your CSV file should include the following columns:"}),e.jsx("div",{className:"bg-admin_canvas rounded-lg p-4 mb-4 overflow-x-auto",children:e.jsxs("table",{className:"w-full text-left border-collapse",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-admin_bordered",children:[e.jsx("th",{className:"p-2 text-admin_text font-semibold",children:"Column"}),e.jsx("th",{className:"p-2 text-admin_text font-semibold",children:"Description"}),e.jsx("th",{className:"p-2 text-admin_text font-semibold",children:"Required"}),e.jsx("th",{className:"p-2 text-admin_text font-semibold",children:"Example"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{className:"border-b border-admin_bordered",children:[e.jsx("td",{className:"p-2 font-mono text-admin_primary",children:"email"}),e.jsx("td",{className:"p-2 text-admin_text",children:"Email address"}),e.jsx("td",{className:"p-2 text-admin_primary font-semibold",children:"Yes"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"[email protected]"})]}),e.jsxs("tr",{className:"border-b border-admin_bordered",children:[e.jsx("td",{className:"p-2 font-mono text-admin_text",children:"name"}),e.jsx("td",{className:"p-2 text-admin_text",children:"Subscriber name"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"No"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"John Doe"})]}),e.jsxs("tr",{className:"border-b border-admin_bordered",children:[e.jsx("td",{className:"p-2 font-mono text-admin_text",children:"language"}),e.jsx("td",{className:"p-2 text-admin_text",children:"Language code"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"No"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"en, fr, de"})]}),e.jsxs("tr",{className:"border-b border-admin_bordered",children:[e.jsx("td",{className:"p-2 font-mono text-admin_text",children:"registered"}),e.jsx("td",{className:"p-2 text-admin_text",children:"Has user account"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"No"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"yes, no"})]}),e.jsxs("tr",{className:"border-b border-admin_bordered",children:[e.jsx("td",{className:"p-2 font-mono text-admin_text",children:"subscribed"}),e.jsx("td",{className:"p-2 text-admin_text",children:"Subscription status"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"No"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"yes, no"})]}),e.jsxs("tr",{className:"border-b border-admin_bordered",children:[e.jsx("td",{className:"p-2 font-mono text-admin_text",children:"subscribedAt"}),e.jsx("td",{className:"p-2 text-admin_text",children:"Subscribe date"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"No"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"2024-01-15"})]}),e.jsxs("tr",{children:[e.jsx("td",{className:"p-2 font-mono text-admin_text",children:"platforms"}),e.jsx("td",{className:"p-2 text-admin_text",children:"Platform list"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"No"}),e.jsx("td",{className:"p-2 text-admin_text_secondary",children:"android, ios, web"})]})]})]})}),e.jsxs("div",{className:"bg-admin_neutral_1 rounded-lg p-4",children:[e.jsx(s,{variant:"admin_body1",className:"font-semibold mb-2",children:"Example CSV Content:"}),e.jsx("pre",{className:"text-admin_text_secondary text-sm overflow-x-auto",children:`email,name,language,registered,subscribed,subscribedAt,platforms
2[email protected],John Doe,en,yes,yes,2024-01-15,"android, ios"
3[email protected],Jane Smith,fr,no,yes,2024-01-16,web`})]}),e.jsx("div",{className:"flex justify-end mt-6",children:e.jsx(B,{variant:"admin_secondary",onClick:t,children:"Close"})})]})});class Qa{async exportSubscribers(t){try{const i=Object.keys(t).filter(u=>t[u]),r=await $.exportSubscribers({fields:i});if(!r.success)throw new Error(r.message||"Failed to export subscribers");const o=new Blob([r.csvData],{type:"text/csv"}),n=window.URL.createObjectURL(o),m=document.createElement("a");return m.href=n,m.download=`newsletter-subscribers-${new Date().toISOString().split("T")[0]}.csv`,document.body.appendChild(m),m.click(),document.body.removeChild(m),window.URL.revokeObjectURL(n),L({message:"Subscribers exported successfully",className:"bg-admin_success text-white"}),{success:!0}}catch(i){return console.error("Export error:",i),L({message:`Export failed: ${i.message}`,className:"bg-admin_error text-white"}),{success:!1,error:i.message}}}async analyzeImport(t){try{const i=await $.analyzeSubscribersImport(t);if(!i.success)throw new Error(i.message||"Failed to analyze file");return{success:!0,stats:i.stats}}catch(i){return console.error("Analysis error:",i),L({message:`Analysis failed: ${i.message}`,className:"bg-admin_error text-white"}),{success:!1,error:i.message}}}async importSubscribers(t,i){try{const r=await $.importSubscribers({file:t,importAsSubscribed:i});if(!r.success)throw new Error(r.message||"Failed to import subscribers");return L({message:`Successfully imported ${r.imported} subscribers`,className:"bg-admin_success text-white"}),{success:!0,results:r}}catch(r){return console.error("Import error:",r),L({message:`Import failed: ${r.message}`,className:"bg-admin_error text-white"}),{success:!1,error:r.message}}}async addSubscriber(t){try{const i=await $.addSubscriber(t);if(!i.success)throw new Error(i.message||"Failed to add subscriber");return L({message:"Subscriber added successfully",className:"bg-admin_success text-white"}),{success:!0,subscriber:i.subscriber}}catch(i){return console.error("Add subscriber error:",i),L({message:`Failed to add subscriber: ${i.message}`,className:"bg-admin_error text-white"}),{success:!1,error:i.message}}}async deleteSubscribers(t){try{const i=await $.deleteSubscribers(t);if(!i.success)throw new Error(i.message||"Failed to delete subscribers");return L({message:`Successfully deleted ${t.length} subscriber(s)`,className:"bg-admin_success text-white"}),{success:!0}}catch(i){return console.error("Delete error:",i),L({message:`Delete failed: ${i.message}`,className:"bg-admin_error text-white"}),{success:!1,error:i.message}}}async updateSubscriber(t,i){try{const r=await $.updateSubscriber(t,i);if(!r.success)throw new Error(r.message||"Failed to update subscriber");return L({message:"Subscriber updated successfully",className:"bg-admin_success text-white"}),{success:!0,subscriber:r.subscriber}}catch(r){return console.error("Update subscriber error:",r),L({message:`Failed to update subscriber: ${r.message}`,className:"bg-admin_error text-white"}),{success:!1,error:r.message}}}}const de=new Qa,et=({isOpen:a,onClose:t,onSuccess:i})=>{const[r,o]=d.useState(!1),[n,m]=d.useState(null),[u,b]=d.useState(!0),[c,l]=d.useState(null),[h,g]=d.useState(!1),[j,k]=d.use
3State(null),[w,S]=d.useState(!1),E=(v,A)=>{if(A.length>0){L({message:"Error: Only CSV files are allowed",className:"bg-admin_error text-white"});return}v.length>0&&(m(v[0]),k(null),S(!1))},N=async v=>{if(v&&v.preventDefault(),!n){L({message:"Error: Please select a CSV file to import",className:"bg-admin_error text-white"});return}o(!0);const A=await de.analyzeImport(n);o(!1),A.success&&(k(A.stats),S(!0))},T=async()=>{o(!0),S(!1);const v=await de.importSubscribers(n,u);o(!1),v.success&&(l(v.results),K.publish("newsletter.subscribers.imported",v.results),i&&i())},y=()=>{r||(m(null),l(null),k(null),S(!1),t())};return e.jsxs(se,{isOpen:a,onClose:y,variant:"admin_compact",className:"max-w-lg",children:[e.jsxs("form",{onSubmit:N,children:[e.jsxs("div",{className:"p-6",children:[e.jsx(s,{component:"h1",variant:"admin_h3",className:"mb-6 text-center",children:"Import Subscribers"}),c?e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-16 h-16 rounded-full bg-admin_primary/10 flex items-center justify-center",children:e.jsx("svg",{className:"w-10 h-10 text-admin_primary",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})})}),e.jsxs("div",{className:"text-center",children:[e.jsx(s,{variant:"admin_h3",className:"mb-2",children:"Import Complete"}),e.jsx(s,{variant:"admin_txt1_dim",children:"Your subscribers have been successfully imported"})]}),e.jsxs("div",{className:"bg-admin_canvas rounded-lg p-6 text-center",children:[e.jsx(s,{variant:"admin_h1",className:"text-admin_primary mb-2",children:c.imported.toLocaleString()}),e.jsx(s,{variant:"admin_body1",className:"text-admin_text",children:"New Subscribers"})]}),c.errors&&c.errors.length>0&&e.jsx("div",{className:"bg-admin_error/10 border border-admin_error/20 rounded-lg p-4",children:e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx("svg",{className:"w-5 h-5 text-admin_error flex-shrink-0 mt-0.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs(s,{variant:"admin_body1",className:"text-admin_error font-semibold mb-2",children:[c.errors.length," Error",c.errors.length!==1?"s":""," Occurred"]}),e.jsxs("div",{className:"max-h-32 overflow-y-auto space-y-1",children:[c.errors.slice(0,5).map((v,A)=>e.jsxs(s,{variant:"admin_txt2",className:"text-admin_error",children:["• ",v]},A)),c.errors.length>5&&e.jsxs(s,{variant:"admin_txt2",className:"text-admin_error/70 italic",children:["... and ",c.errors.length-5," more error",c.errors.length-5!==1?"s":""]})]})]})]})})]}):w&&j?e.jsxs("div",{className:"space-y-6",children:[e.jsx(s,{variant:"admin_h4",className:"mb-4",children:"Preview"}),e.jsxs("div",{className:"bg-admin_canvas rounded-lg p-4 divide-y divide-admin_bordered",children:[e.jsxs("div",{className:"flex justify-between py-2",children:[e.jsx(s,{variant:"admin_txt1",children:"Total Rows:"}),e.jsx(s,{variant:"admin_txt1",className:"font-semibold",children:j.totalRows.toLocaleString()})]}),e.jsxs("div",{className:"flex justify-between py-2",children:[e.jsx(s,{variant:"admin_txt1",children:"Valid Emails:"}),e.jsx(s,{variant:"admin_txt1",className:"text-admin_primary font-semibold",children:j.validEmails.toLocaleString()})]}
3),j.invalidEmails>0&&e.jsxs("div",{className:"flex justify-between py-2",children:[e.jsx(s,{variant:"admin_txt1",children:"Invalid Emails:"}),e.jsx(s,{variant:"admin_txt1",className:"text-admin_error font-semibold",children:j.invalidEmails.toLocaleString()})]}),e.jsxs("div",{className:"flex justify-between py-2",children:[e.jsx(s,{variant:"admin_txt1",children:"Languages:"}),e.jsx(s,{variant:"admin_txt1",className:"font-semibold",children:j.languageCount.toLocaleString()})]}),e.jsxs("div",{className:"flex justify-between py-2",children:[e.jsx(s,{variant:"admin_txt1",children:"Platforms:"}),e.jsx(s,{variant:"admin_txt1",className:"font-semibold",children:j.platforms.join(", ")})]})]}),j.errors&&j.errors.length>0&&e.jsxs("div",{className:"bg-admin_error/10 border border-admin_error/20 rounded-lg p-4",children:[e.jsx(s,{variant:"admin_body1",className:"text-admin_error font-semibold mb-2",children:"Errors Found:"}),e.jsxs("div",{className:"space-y-1",children:[j.errors.map((v,A)=>e.jsxs(s,{variant:"admin_txt2",className:"text-admin_error",children:["• ",v]},A)),j.hasMoreErrors&&e.jsx(s,{variant:"admin_txt2",className:"text-admin_error/70 italic",children:"... and more errors"})]})]})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{children:e.jsx(sa,{accept:{"text/csv":[".csv"]},maxFiles:1,onDrop:E,onRender:({isDragging:v,handleClick:A,handleDragEnter:p,handleDragOver:C,handleDragLeave:M,handleDrop:x})=>e.jsx("div",{onClick:r?void 0:A,onDragEnter:p,onDragOver:C,onDragLeave:M,onDrop:x,className:`
4                          relative border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-all
5                          ${n?"border-admin_primary bg-admin_primary/5":v?"border-admin_primary bg-admin_primary/10":"border-admin_bordered bg-admin_canvas hover:border-admin_primary hover:bg-admin_primary/5"}
6                          ${r?"opacity-50 cursor-not-allowed":""}
7                        `,children:n?e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"flex items-center justify-center",children:e.jsx("svg",{className:"w-12 h-12 text-admin_primary",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}),e.jsx(s,{variant:"admin_body1",className:"text-admin_primary font-medium",children:n.name}),e.jsx(s,{variant:"admin_txt2_dim",children:"Click to change file"})]}):e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"flex items-center justify-center",children:e.jsx($e,{className:"w-12 h-12 text-admin_text_secondary"})}),e.jsx(s,{variant:"admin_body1",children:v?"Drop CSV file here":"Click to select CSV file"}),e.jsx(s,{variant:"admin_txt2_dim",children:"or drag and drop your file here"})]})})})}),n&&e.jsx("div",{className:"bg-admin_canvas rounded-lg p-4",children:e.jsxs("div",{className:"flex items-center space-x-3",children:[e.jsx(Oe,{variant:"admin_compact",isOn:u,onChange:b,disabled:r}),e.jsxs("div",{className:"flex-1",children:[e.jsx(s,{variant:"admin_body1",className:"cursor-pointer leading-[1.25rem]",onClick:()=>!r&&b(!u),children:"Import all as subscribed"}),e.jsx(s,{variant:"admin_txt2_dim",className:"mt-2 block",children:"When enabled, all imported subscribers will be marked as active regardless of the CSV data"})]})]})})]})]}),e.jsxs("div",{className:"flex items-center justify-between border-t border-admin_bordered p-6",children:[!c&&!w&&e.jsx(B,{variant:"admin_secondary",onClick:v=>{v.preventDefault(),g(!0)},children:"See example"}),w&&!c&&e.jsx(B,{variant:"admin_secondary",onClick:()=>S(!1),disabled:r,children:"Back"}),c?e.jsx("div",{className:"flex justify-end w-full",children:e.jsx(B,{variant:"admin_secondary",onClick:y,children:"Close"})}):w?e.jsx(B,{variant:"admin_primary",loading:r,onClick:T,children:"Proceed"}):n&&e.jsx(B,{variant:"admin_primary",loading:r,className:"min-w-[120px]",onClick:N,children:"Analyze"})]})]}),e.jsx(Xa,{isOpen:h,onClose:()=>g(!1)})]})},at=({isOpen:a,onClose:t,onSuccess:i})=>{const[r,o]=d.useState(!1),[n,m]=d.useState({email:"",userName:"",language:"en",platforms:["web"]}),u=async c=>{if(c.preventDefault(),!n.email){L({message:"Validation Error: Email address is required",className:"bg-admin_error text-white"});return}o(!0);const l={email:n.email,name:n.userName,language:n.language,platforms:n.platforms},h=await de.addSubscriber(l);if(o(!1),h.success)i(),t(),m({email:"",userName:"",language:"en",platforms:["web"]});else{let g="Error";switch(h.error){case"EMAIL_EXISTS":g="Duplicate Subscriber";break;case"INVALID_EMAIL":g="Invalid Email";break;case"MISSING_EMAIL":g="Missing Email";break;case"SERVER_ERROR":g="Server Error";break;default:g="Error"}L({message:`${g}: ${h.message||"Failed to add subscriber"}`,className:"bg-admin_error text-white"})}},b=()=>{r||t()};return e.jsx(se,{isOpen:a,onClose:b,variant:"admin_compact",className:"max-w-md",children:e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"p-6 pb-8",children:[e.jsx(s,{component:"h1",variant:"admin_h3",className:"mb-6",children:"Add Subscriber"}),e.jsxs("div",{children:[e.jsxs("div",{children:[e.jsx(s,{variant:"admin_label",className:"mb-1",children:"Email Address *"}),e.jsx(oe,{type:"email",value:n.email,onChange:c=>m({...n,email:c.target.value}),placeholder:"[email protected]",required:!0,disabled:r})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx(s,{variant:"admin_label",className:"mb-1",children:"Name (Optional)"}),e.jsx(oe,{type:"text",value:n.userName,onChange:c=>m({...n,userName:c.target.value}),placeholder:"John Doe",disabled:r})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx(s,{variant:"admin_label",className:"mb-1",children:"Language"}),e.jsx(te,{variant:"admin",searchEnabled:!0,fixedWidth:"100%",valueField:"code",showCheckbox:!1,value:_e.filter(c=>
7c.code===n.language),onChange:c=>{const l=c?.[0]?.code||"en";m({...n,language:l})},options:_e,placeholder:"Select language...",disabled:r})]})]})]}),e.jsxs("div",{className:"flex items-center justify-end space-x-3 p-6",children:[e.jsx(B,{variant:"admin_secondary",onClick:b,disabled:r,children:"Cancel"}),e.jsx(B,{type:"submit",variant:"admin_primary",loading:r,children:"Add Subscriber"})]})]})})};function tt(){const[a,t]=d.useState([]),[i,r]=d.useState(0),[o,n]=d.useState(!1),[m,u]=d.useState(!1),[b,c]=d.useState(!1);d.useEffect(()=>{const E=K.subscribe("newsletter.subscribers.imported",()=>{r(N=>N+1)});return()=>{K.unsubscribe(E)}},[]);const l=()=>{r(E=>E+1),t([])},h=async()=>{if(!(a.length===0||!await re({variant:"admin",title:"Delete Subscribers",message:`Are you sure you want to delete ${a.length} subscriber(s)? This action cannot be undone.`,confirmText:"Delete",variant:"danger"})))try{await $.deleteSubscribers(a),L({message:`✅ ${a.length} subscriber(s) deleted successfully`,className:"bg-admin_primary text-white"}),l()}catch{L({message:"Error: Failed to delete subscribers",className:"bg-admin_error text-white"})}},g=async E=>{if(!await re({variant:"admin",title:"Delete Subscriber",message:"Are you sure you want to delete this subscriber? This action cannot be undone.",confirmText:"Delete",variant:"danger"}))return;(await de.deleteSubscribers([E])).success&&l()},j=async(E,N)=>{const T=await de.updateSubscriber(E,{active:!N});if(T.success)l();else{let y="Error";switch(T.error){case"SUBSCRIBER_NOT_FOUND":y="Subscriber Not Found";break;case"MISSING_EMAIL":y="Missing Email";break;case"MISSING_DATA":y="Missing Data";break;case"SERVER_ERROR":y="Server Error";break;default:y="Error"}L({message:`${y}: ${T.message||"Failed to update subscriber status"}`,className:"bg-admin_error text-white"})}},k=()=>{c(!0)},w=async E=>{try{const N=await $.exportSubscribers(E),T=window.URL.createObjectURL(N),y=document.createElement("a");y.href=T,y.download=`newsletter-subscribers-${new Date().toISOString().split("T")[0]}.csv`,document.body.appendChild(y),y.click(),document.body.removeChild(y),window.URL.revokeObjectURL(T),L({message:"✅ Subscribers exported successfully",className:"bg-admin_primary text-white"})}catch(N){console.error("Export error:",N),L({message:`Error: ${N.message||"Failed to export subscribers"}`,className:"bg-admin_error text-white"})}},S=[{id:"email",title:"Email",headerClassName:"w-1/3",render:(E,N)=>e.jsxs("div",{className:"flex flex-col",children:[e.jsx(J,{display:"block",content:e.jsxs("div",{className:"text-center",children:[e.jsx(s,{variant:"admin_txt1",className:"block",children:N.email}),e.jsx(s,{variant:"admin_txt2_dim",children:"Click to copy"})]}),children:e.jsx("button",{onClick:async()=>{try{await navigator.clipboard.writeText(N.email),L({message:"Copied to clipboard",className:"bg-admin_primary text-white"})}catch(T){console.error("Failed to copy:",T)}},className:"w-full truncate whitespace-nowrap text-admin_text hover:text-admin_primary transition-colors text-left",children:N.email})}),(N.name||N.userName)&&e.jsx(s,{variant:"admin_txt2_dim",className:"block mt-1",children:N.name||N.userName})]})},{id:"status",title:"Subscribed",headerClassName:"w-[96px]",render:(E,N)=>e.jsx(ae,{variant:"admin",isOn:N.active,onChange:T=>j(N.email,N.active),disabled:!1})},{id:"health",title:e.jsxs("div",{className:"flex items-center space-x-1",children:[e.jsx("span",{children:"Health"}),e.jsx(J,{content:e.jsxs("div",{className:"max-w-xs p-4",children:[e.jsx(s,{component:"h3",variant:"admin_body1_accent",className:"mb-5",children:"Subscriber Health Status"}),e.jsxs(s,{variant:"admin_txt1",className:"block mb-4",children:[e.jsx("strong",{children:"Healthy:"})," Emails are successfully delivered to this subscriber."]}),e.jsxs(s,{variant:"admin_txt1",className:"block mb-4",children:[e.jsx("strong",{children:"Unhealthy:"}),' 3 or more consecutive email delivery failures. Unhealthy subscribers are excluded from releases when "Include Unhealthy" is set to "No".']}),e.jsx(s,{variant:"admin_txt1_dim",children:'Health status is automatically restored to "Healthy" after any successful email delivery.'})]}),placement:"top",variant:"admin",children:e.jsx("div",{className:"w-4 h-4 flex items-center justify-center bg-admin_neutral_1 rounded-full cursor-help ml-1",children:e.jsx("span",{className:"text-xs text-admin_text_secondary",children:"?"})})})]}),headerClassName:"w-[90px]",render:(E,N)=>{const T=N.healthy!==!1;return e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Q,{variant:T?"admin_success":"admin_error",children:T?"Healthy":"Unhealthy"}),!T&&N.failedDeliveries&&e.jsxs(s,{variant:"admin_txt2_dim",children:[N.failedDeliveries," failures"]})]})}},{id:"type",title:e.jsxs("div",{className:"flex items-center space-x-1",children:[e.jsx("span",{children:"Type"}),e.jsx(J,{content:e.jsxs("div",{className:"max-w-xs p-4",children:[e.jsx(s,{component:"h3",variant:"admin_body1_accent",className:"mb-5",children:"Subscriber Type"}),e.jsxs(s,{variant:"admin_txt1",className:"block mb-4",children:[e.jsx("strong",{children:"Registered:"})," Subscriber has a user account in the system and has signed up through the app."]}),e.jsxs(s,{variant:"admin_txt1",className:"block mb-4",children:[e.jsx("strong",{children:"Anonymous:"})," Subscriber only provided their email address without creating a full user account."]}),e.jsx(s,{variant:"admin_txt1_dim",children:"Both types receive newsletters, but registered users can be filtered separately in release settings."})]}),placement:"top",variant:"admin",children:e.jsx("div",{className:"w-4 h-4 flex items-center justify-center bg-admin_neutral_1 rounded-full cursor-help ml-1",children:e.jsx("span",{className:"text-xs text-admin_text_secondary",children:"?"})})})]}),headerClassName:"w-[96px]",render:(E,N)=>{const T=N.userId||N.isRegistered;return e.jsx(Q,{variant:T?"admin_primary":"default",children:T?"Registered":"Anonymous"})}},{id:"subscribedAt",title:"Added On",headerClassName:"w-[86px] whitespace-nowrap",render:(E,N)=>e.jsx(s,{variant:"admin_txt2_dim",children:na(N.subscribedAt).format("MMM DD, YYYY")})},{id:"language",title:"Language",headerClassName:"w-[100px]",render:(E,N)=>e.jsx(s,{variant:"admin_txt2",children:Ja(N.language||"en")})},{id:"unsubscribeReason",title:"Unsubscribe Reason",headerClassName:"w-[170px] whitespace-nowrap",render:(E,N)=>N.active||!N.unsubscribeReason?e.jsx(s,{variant:"admin_txt2_dim",className:"italic",children:N.active?"Active subscriber":"-"}):e.jsx("div",{children:e.jsx(J,{content:`Unsubscribed: ${N.unsubscribeReason}`,placement:"top",variant:"admin",children:e.jsx(s,{variant:"admin_txt2",className:"text-admin_text truncate cursor-help",children:N.unsubscribeReason})})})},{id:"actions",title:"Actions",headerClassName:"w-20 text-center",render:(E,N)=>e.jsx("div",{className:"flex items-center justify-center",children:e.jsx(B,{variant:"admin_icon",onClick:()=>g(N.email),children:e.jsx(ce,{className:"w-4 h-4"})})})}];return e.jsxs("div",{className:"p-6",children:[e.jsx(pe,{permission:"role:newsletter"}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsx(s,{component:"h1",variant:"admin_h3",children:"Newsletter Subscribers"}),e.jsxs("div",{className:"flex items-center space-x-3",children:[e.jsxs(B,{variant:"admin_secondary",onClick:k,children:[e.jsx(Sa,{className:"w-4 h-4 mr-1"}),"Export"]}),e.jsxs(B,{variant:"admin_secondary",onClick:()=>u(!0),children:[e.jsx($e,{className:"w-4 h-4 mr-1"}),"Import"]}),e.jsxs(B,{variant:"admin_primary",onClick:()=>n(!0),children:[e.jsx(Ae,{className:"w-5 h-5 mr-1"}),"Add"]})]})]}),e.jsx(Ge,{variant:"admin_browser",preferredHeight:"85vh",apiMethod:$.getSubscribers,localUserPreferencesKey:"admin.newsletter.subscribers",renders:S,searchField:"email name userName",enableSelection:!0,selectedItems:a,onSelectionChange:E=>t(E),bulkActions:[{label:"Delete",variant:"admin_error",icon:e.jsx(ce,{className:"w-4 h-4"}),onClick:h}],itemIdField:"email",itemsPerPage:25,refreshKey:i,styleOverrides:{table:"w-full table-fixed",container:"relative w-full flex flex-col h-[85vh] justify-start bg-admin_paper rounded-3xl px-6 pt-12 pb-6",searchInput:"absolute top-4 right-4 text-text bg-transparent outline-none flex-1 w-[350px] h-[30px] px-2 py-1"}}),e.jsx(qa,{isOpen:b,onClose:()=>c(!1),onConfirm:w}),e.jsx(et,{isOpen:m,onClose:()=>u(!1),onSuccess:()=>l()}),e.jsx(at,{isOpen:o,onClose:()=>n(!1),onSuccess:()=>l()})]})]})}const st=({formData:a,errors:t,onInputChange:i})=>{const r=new Date;r.setMinutes(r.getMinutes()+5);const o=r.toISOString().slice(0,16);return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs(s,{variant:"admin_label",className:"mb-1",children:["Release Name ",e.jsx("span",{className:"text-admin_error",children:"*"})]}),e.jsx("input",{type:"text",value:a.name,onChange:n=>i("name",n.target.value),placeholder:"Monthly Newsletter - January 2025",className:`
8            w-full text-admin_text bg-admin_paper rounded-lg border  focus:outline-none focus:ring-1 focus:ring-admin_primary focus:border-transparent px-3 py-2 
9            ${t.name?"border-admin_error":"border-admin_bordered"}
10          `}),e.jsx("div",{className:"h-5 mt-1",children:t.name&&e.jsx(s,{variant:"admin_txt2",className:"text-admin_error",children:t.name})})]}),e.jsxs("div",{children:[e.jsx(s,{variant:"admin_label",className:"mb-1",children:"Description"}),e.jsx("textarea",{value:a.description,onChange:n=>i("description",n.target.value),placeholder:"Brief description of this newsletter release...",rows:3,className:`
11            w-full text-admin_text border border-admin_bordered bg-admin_paper rounded-lg focus:outline-none focus:ring-1 focus:ring-admin_primary focus:border-transparent resize-none px-3 py-2
12          `})]}),e.jsxs("div",{children:[e.jsxs(s,{variant:"admin_label",className:"mb-1",children:["Scheduled Date & Time ",e.jsx("span",{className:"text-admin_error",children:"*"})]}),e.jsx("input",{type:"datetime-local",value:a.scheduledAt,onChange:n=>i("scheduledAt",n.target.value),min:o,className:`
13            w-full text-admin_text bg-admin_paper rounded-lg border focus:outline-none focus:ring-1 focus:ring-admin_primary focus:border-transparent px-3 py-2
14            ${t.scheduledAt?"border-admin_error":"border-admin_bordered"}
15          `}),e.jsx("div",{className:"h-5 mt-1",children:t.scheduledAt?e.jsx(s,{variant:"admin_txt2",className:"text-admin_error",children:t.scheduledAt}):e.jsx(s,{variant:"admin_txt2_dim",children:"Must be 5+ minutes ahead"})})]})]})},He=({isOpen:a,onClose:t,templateId:i,templateName:r,releaseId:o,onSave:n})=>
15{const[m,u]=d.useState(null),[b,c]=d.useState(!1),[l,h]=d.useState(!1),g=ja();d.useEffect(()=>{a&&!l&&j()},[a]),d.useEffect(()=>{a&&i&&o&&l&&k()},[a,i,o,l]),d.useEffect(()=>{a||(u(null),h(!1))},[a]);const j=async()=>{try{c(!0);const S=await g.getLanguageStatistics();if(S&&S.languages){g.setLanguages(S.languages);const E=S.languages.find(N=>N.primary);E&&g.setPrimaryLanguage(E.code),h(!0)}}catch(S){console.error("Failed to load languages:",S),L({message:"Failed to load languages",className:"bg-admin_error text-white"})}finally{c(!1)}},k=async()=>{try{c(!0);let S=`newsletter_release_${o}_template_${i}_variables`,E=await g.getLocalizationKey(S);if(E&&E.length>0)u(E[0]);else{const T=(await $.getTemplateVariables(i))?.variables||{},y=Object.entries(T).map(([A,p])=>({key:A,value:String(p)}));await g.addLocalizationKey({key:S,type:"object",language:g.primaryLanguage||"en",content:y});const v=await g.getLocalizationKey(S);v&&v.length>0&&u(v[0])}}catch(S){console.error("Failed to load template variables:",S),L({message:"Failed to load template variables",className:"bg-admin_error text-white"})}finally{c(!1)}},w=async S=>{try{const E=S._id;await $.saveReleaseTemplateVariables(o,i,E),L({message:"Template variables saved successfully!",className:"bg-admin_success text-white"}),n&&n(),t()}catch(E){console.error("Failed to save template variables:",E),L({message:"Failed to save template variables",className:"bg-admin_error text-white"})}};return!a||b||!m||!l?null:e.jsx(_a,{isOpen:a,onClose:t,onSave:w,item:m,controller:g,parentObject:null})},nt=({formData:a,errors:t,onInputChange:i,clearFieldError:r,releaseId:o})=>{const[n,m]=d.useState([]),[u,b]=d.useState(!0),[c,l]=d.useState(!1),[h,g]=d.useState(null);d.useEffect(()=>{j()},[]);const j=async()=>{try{b(!0);const y=await $.getTemplates();y.success&&m(y.templates||[])}catch(y){console.error("Failed to load templates:",y)}finally{b(!1)}},k=()=>{const y={templateId:"",templateName:"",percentage:0},v=[...a.templates,y],A=Math.floor(100/v.length),p=100-A*v.length,C=v.map((M,x)=>({...M,percentage:A+(x<p?1:0)}));i("templates",C)},w=y=>{const v=a.templates.filter((M,x)=>x!==y);if(v.length===0){i("templates",v);return}const A=Math.floor(100/v.length),p=100-A*v.length,C=v.map((M,x)=>({...M,percentage:A+(x<p?1:0)}));i("templates",C)},S=(y,v,A)=>{const p=[...a.templates];if(p[y]={...p[y],[v]:A},v==="templateId"){const C=n.find(M=>M._id===A);C&&(p[y].templateName=C.name||"Unknown Template"),A&&r&&r(`template_${y}_id`)}v==="percentage"&&r&&r(`template_${y}_percentage`),i("templates",p)},E=(y=null)=>n.filter(v=>!a.templates.some(p=>p.templateId===v._id&&v._id!==y)).map(v=>({value:v._id,label:v.name||"Untitled Template"})),N=()=>{},T=async y=>{try{const A=await ra("crud")({get:{model:"CMSContent",match:{_id:y}}});if(A?.length>0){const p=A[0];ye({action:"toggle",data:{getContent:()=>{const C=p.content?.source;if(C){let M=C;const x=p.content?.data||{};return Object.keys(x).forEach(f=>{const _=`{{${f}}}`;M=M.replace(new RegExp(_,"g"),x[f])}),M}return`<div style="padding: 20px; text-align: center;">
16                <h2>${p.content?.name||"Newsletter Template"}</h2>
17                <p>Template ID: ${y}</p>
18                <p>Template source not found</p>
19              </div>`},openHtmlEditor:()=>{}}})}else{const p=n.find(C=>C._id===y);p&&ye({action:"toggle",data:{getContent:()=>`<div style="padding: 20px; text-align: center;">
20                <h2>${p.name||"Newsletter Template"}</h2>
21                <p>Template ID: ${y}</p>
22                <p>Template content not available for preview</p>
23              </div>`,openHtmlEditor:()=>{}}})}}catch(v){console.error("Failed to preview template:",v)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-start justify-between mb-2",children:[e.jsx(s,{component:"h1",variant:"admin_h4",children:"Email Templates"}),e.jsxs(B,{variant:"admin_secondary",onClick:k,disabled:a.templates.length>=n.length,children:[e.jsx(ia,{className:"w-4 h-4 mr-2"}),"Add Template"]})]}),e.jsx(s,{variant:"admin_txt1_dim",children:"Select one or more email templates for this release. Multiple templates enable A/B testing."})]}),u?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx("div",{className:"h-6 w-6 rounded-full border-b-2 border-admin_primary animate-spin"}),e.jsx(s,{variant:"admin_body1_dim",className:"ml-3",children:"Loading templates..."})]}):n.length===0?e.jsx("div",{className:"text-center bg-admin_canvas rounded-lg border border-admin_bordered py-8",children:e.jsx(s,{variant:"admin_body1_dim",children:"No email templates found. Please create newsletter templates first."})}):e.jsxs(e.Fragment,{children:[a.templates.length>0&&e.jsx("div",{className:"bg-admin_paper rounded-lg border border-admin_bordered overflow-hidden",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{className:"bg-admin_canvas border-b border-admin_bordered",children:e.jsxs("tr",{children:[e.jsxs("th",{className:"text-left px-4 py-3 text-sm font-medium text-admin_text",children:["Template ",e.jsx("span",{className:"text-admin_error",children:"*"})]}),e.jsx("th",{className:"text-left px-4 py-3 text-sm font-medium text-admin_text w-32",children:"Percentage"}),e.jsx("th",{className:"text-center px-4 py-3 text-sm font-medium text-admin_text w-24",children:"Actions"})]})}),e.jsx("tbody",{children:a.templates.map((y,v)=>e.jsxs("tr",{className:"border-b border-admin_bordered last:border-b-0",children:[e.jsx("td",{className:"px-4 py-3",children:e.jsx(te,{variant:"admin",searchEnabled:!0,fixedWidth:"100%",showCheckbox:!1,showSelectionTick:!0,value:E(y.templateId).find(A=>A.value===y.templateId)||null,onChange:A=>{let p="";
23typeof A=="string"?p=A:A&&A.value?p=A.value:Array.isArray(A)&&A.length>0&&(p=A[0].value||A[0]),S(v,"templateId",p)},options:E(y.templateId),placeholder:"Select a template...",error:t[`template_${v}_id`],required:!0})}),e.jsxs("td",{className:"px-4 py-3",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("input",{type:"number",value:y.percentage,onChange:A=>S(v,"percentage",parseInt(A.target.value)||1),min:1,max:100,className:`w-20 text-admin_text text-center bg-admin_paper rounded-lg border px-3 py-2 focus:outline-none focus:ring-1 focus:ring-admin_primary focus:border-transparent ${t[`template_${v}_percentage`]?"border-admin_error border-2":"border-admin_bordered"}`}),e.jsx("span",{className:"ml-1 text-admin_text_secondary",children:"%"})]}),t[`template_${v}_percentage`]&&e.jsx(s,{variant:"admin_txt2",className:"text-admin_error",children:t[`template_${v}_percentage`]})]}),e.jsx("td",{className:"px-4 py-3",children:e.jsxs("div",{className:"flex items-center justify-center space-x-2",children:[y.templateId&&e.jsx(B,{variant:"admin_icon",onClick:()=>T(y.templateId),title:"Preview Template",className:"text-admin_text_secondary",children:e.jsx(Ue,{className:"w-4 h-4"})}),e.jsx(B,{variant:"admin_icon",onClick:()=>w(v),title:"Remove Template",className:"text-admin_text_secondary hover:text-admin_error",children:e.jsx(ce,{className:"w-4 h-4"})})]})})]},v))})]})}),t.templates&&e.jsx(s,{variant:"admin_txt2",className:"text-admin_error",children:t.templates})]}),e.jsx(He,{isOpen:c,onClose:()=>{l(!1),g(null)},templateId:h?.templateId,templateName:h?.templateName,releaseId:o,onSave:N})]})},fe={name:"",description:"",scheduledAt:"",templates:[],segments:[],includeUnregistered:!0,targetLanguagesEnabled:!1,targetLanguages:["any"],targetPlatformsEnabled:!1,targetPlatforms:["any"],ltvFilterEnabled:!1,ltvAmount:null,ltvOperator:"gte",deliveryFilterEnabled:!1,deliveryOperator:"not_seen",deliveryReleases:[],audienceShareEnabled:!1,audienceShare:100},Fe=[{id:1,title:"Basic Info"},{id:2,title:"Templates"},{id:3,title:"Audience"},{id:4,title:"Review"}],we=[{value:"any",label:"Any Platform"},{value:"android",label:"Android"},{value:"ios",label:"iOS"},{value:"web",label:"Web"},{value:"mac",label:"Mac"},{value:"windows",label:"Windows"},{value:"linux",label:"Linux"}];class it{async loadSegments(){try{const t=await $.getSegments();return t&&t.success&&t.data?{success:!0,segments:t.data||[]}:{success:!1,segments:[]}}catch(t){return console.error("Failed to load segments:",t),{success:!1,segments:[],error:t.message}}}async loadSystemLanguages(){try{const t=await De();return t&&t.languages?{success:!0,languages:[{value:"any",label:"Any Language"},...t.languages.map(r=>({value:r.code,label:r.name}))]}:{success:!1,languages:this.getFallbackLanguages()}}catch(t){return console.error("Failed to load system languages:",t),{success:!1,languages:this.getFallbackLanguages(),error:t.message}}}getFallbackLanguages(){return[{value:"any",label:"Any Language"},{value:"en",label:"English"},{value:"es",label:"Spanish"},{value:"fr",label:"French"},{value:"de",label:"German"}]}async previewAudience(t,i,r,o,n,m,u,b,c){try{const l=r.includes("any")?[]:r,h=o.includes("any")?[]:o,g=await $.previewAudience(t,i,l,h,n,m,u,b,c||100);return g.success||g.audienceSize!==void 0?{success:!0,preview:g}:{success:!1,preview:null}}catch(l){return console.error("Failed to preview audience:",l),{success:!1,preview:null,error:l.message}}}findDefaultSegment(t){return!t||t.length===0?null:t.find(r=>r.name?.toLowerCase().includes("all")||r.name?.toLowerCase().includes("subscriber")||r.name?.toLowerCase().includes("everyone"))||t[0]}handleAnyExclusivity(t,i){const r=t.includes("any"),o=t.some(n=>n!=="any");return r&&o?i.includes("any")?t.filter(m=>m!=="any"):["any"]:t.length===0?["any"]:t}}const ie=new it,rt=({availableSegments:a,selectedSegments:t,loadingSegments:i,error:r,onChange:o})=>e.jsxs("div",{className:"mb-6",children:[e.jsx(s,{component:"h2",variant:"admin_h4",className:"mb-2",children:"Target Segments"}),e.jsx(s,{variant:"admin_txt2_dim",className:"block mb-3",children:"Select specific subscriber segments to target."}),i?e.jsxs("div",{className:"flex items-center justify-center py-8",children:[e.jsx("div",{className:"h-6 w-6 animate-spin rounded-full border-b-2 border-admin_primary"}),e.jsx(s,{variant:"admin_body1_dim",className:"ml-3 my-0",children:"Loading segments..."})]}):a.length===0?e.jsx("div",{className:"text-center bg-admin_canvas rounded-lg border border-admin_bordered py-8",children:e.jsx(s,{variant:"admin_body1_dim",className:"my-0",children:"No segments available. Newsletter will target all subscribers."})}):e.jsx(te,{variant:"admin",searchEnabled:!0,allowEmptySelection:!1,showCheckbox:!1,enableResetButton:!1,label:"Segments",placeholder:"Select audience segment...",options:a.map(n=>({value:n.id,id:n.id,name:n.count!==void 0?`${n.name}
23 (${n.count.toLocaleString()})`:n.name,description:n.description,count:n.count})),value:i?null:t,onChange:o,fixedWidth:"100%",error:r,showItemNamesInSelection:!0,onItemRender:n=>e.jsxs("div",{className:"p-2",children:[e.jsx(s,{variant:"admin_label",className:"mb-0.5",children:n.count!==void 0?`${n.name.replace(/ \(\d{1,3}(,\d{3})*\)$/,"")} (${n.count.toLocaleString()})`:n.name}),n.description&&e.jsx(s,{variant:"admin_txt1_dim",children:n.description})]}),onValueItemRender:n=>n?n.name||"Unknown Segment":null},`segments-${a.length}-${t?.id||"none"}`)]}),Ne=[{value:"gte",label:"More than or equal to"},{value:"lte",label:"Less than or equal to"}],be=[{value:"seen",label:"Users who have seen"},{value:"not_seen",label:"Users who haven't seen"}],ot=({formData:a,errors:t,systemLanguages:i,platforms:r,loadingLanguages:o,basePlatformBreakdown:n,baseLanguageBreakdown:m,baseAudienceTotal:u,releases:b,loadingReleases:c,onInputChange:l,onLanguageChange:h,onPlatformChange:g,onDeliveryReleasesChange:j,getSelectedLanguages:k,getSelectedPlatforms:w,getSelectedReleases:S})=>{const{data:E}=oa({contentType:"Text",match:{"content.id":"site_name"}}),N=E?.[0]?.text||"Platform",T=q.useMemo(()=>{if(!n)return r;const p=n,C=p.any||0;return r.map(M=>{if(M.value==="any")return{...M,label:`${M.label} (${u.toLocaleString()})`};const f=(p[M.value]||0)+C;return{...M,label:`${M.label} (${f.toLocaleString()})`}})},[r,n,u]),y=q.useMemo(()=>m?i.map(p=>{if(p.value==="any")return{...p,label:`${p.label} (${u.toLocaleString()})`};const C=m[p.value]||0;return{...p,label:`${p.label} (${C.toLocaleString()})`}}):i,[i,m,u]),v=()=>T.filter(p=>w().some(C=>C.value===p.value)),A=()=>y.filter(p=>k().some(C=>C.value===p.value));return e.jsxs("div",{children:[e.jsx(s,{component:"h2",variant:"admin_h4",className:"mb-3",children:"Filtering"}),e.jsxs("div",{className:"space-y-3 mb-3",children:[e.jsx("div",{className:"bg-admin_canvas rounded-lg border border-admin_bordered p-4",children:e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx(Ea,{className:"w-5 h-5 text-admin_primary flex-shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(s,{component:"h2",variant:"admin_h4",className:"mb-0",children:"Language"}),e.jsx(ae,{isOn:a.targetLanguagesEnabled,onChange:p=>{l("targetLanguagesEnabled",p),p||l("targetLanguages",["any"])}})]}),e.jsx(s,{variant:"admin_txt2_dim",className:"block mb-3",children:"Select target languages for the newsletter"}),a.targetLanguagesEnabled&&e.jsx(te,{variant:"admin",searchEnabled:!0,multiSelection:!0,showCheckbox:!1,showSelectionTick:!0,allowEmptySelection:!1,placeholder:o?"Loading languages...":"Select languages...",options:y,value:o?[]:A(),onChange:h,fixedWidth:"100%",error:t.targetLanguages,loading:o},`languages-${y.length}-${a.targetLanguages.length}`)]})]})}),e.jsx("div",{className:"bg-admin_canvas rounded-lg border border-admin_bordered p-4",children:e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx(la,{className:"w-5 h-5 text-admin_primary flex-shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(s,{component:"h2",variant:"admin_h4",className:"mb-0",children:"Platform"}),e.jsx(ae,{isOn:a.targetPlatformsEnabled,onChange:p=>{l("targetPlatformsEnabled",p),p||l("targetPlatforms",["any"])}})]}),e.jsx(s,{variant:"admin_txt2_dim",className:"block mb-3",children:"Select target platforms for the newsletter"}),a.targetPlatformsEnabled&&e.jsx(Aa,{placeholder:"Select platforms...",platforms:T,value:v(),onChange:g,fixedWidth:"100%",error:t.targetPlatforms},`platforms-${a.targetPlatforms.length}`)]})]})}),e.jsx("div",{className:"bg-admin_canvas rounded-lg border border-admin_bordered p-4",children:e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx(Ca,{className:"w-5 h-5 text-admin_primary flex-shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs(s,{component:"h2",variant:"admin_h4",className:"mb-0",children:["Users with no ",N," accounts"]}),e.jsx(ae,{isOn:a.includeUnregistered,onChange:p=>l("includeUnregistered",p)})]}),e.jsx(s,{variant:"admin_txt2_dim",className:"block",children:"Include users without platform accounts"})]})]})}),e.jsx("div",{className:"bg-admin_canvas rounded-lg border border-admin_bordered p-4",children:e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx($a,{className:"w-5 h-5 text-admin_primary flex-shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(s,{component:"h2",variant:"admin_h4",className:"mb-0",children:"LTV"}),e.jsx(ae,{isOn:a.ltvFilterEnabled,onChange:p=>l("ltvFilterEnabled",p)})]}),e.jsx(s,{variant:"admin_txt2_dim",className:"block mb-3",children:"Filter users by their total life time value on the platform"}),a.ltvFilterEnabled&&e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsx(te,{variant:"admin",searchEnabled:!1,multiSelection:!1,showCheckbox:!1,showSelectionTick:!0,placeholder:"Operator",options:Ne,value:Ne.find(p=>p.value===a.ltvOperator)?[Ne.find(p=>p.value===a.ltvOperator)]:[],onChange:p=>l("ltvOperator",p[0]?.value||"gte"),fixedWidth:"100%"}),e.jsx(oe,{variant:"admin",type:"number",min:"0",step:"0.01",value:a.ltvAmount||"",onChange:p=>l("ltvAmount",p.target.value),placeholder:"Amount ($)"})]})]})]})}),e.jsx("div",{className:"bg-admin_canvas rounded-lg border border-admin_bordered p-4",children:e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx(Ke,{className:"w-5 h-5 text-admin_primary flex-shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(s,{component:"h2",variant:"admin_h4",className:"mb-0",children:"Delivery"}),e.jsx(ae,{isOn:a.deliveryFilterEnabled,onChange:p=>l("deliveryFilterEnabled",p)})]}),e.jsx(s,{variant:"admin_txt2_dim",className:"block mb-3",children:"Select users based on previous interactions with your newsletter releases"}),a.deliveryFilterEnabled&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(te,{variant:"admin",searchEnabled:!1,multiSelection:!1,showCheckbox:!1,showSelectionTick:!0,placeholder:"Operator",options:be,value:be.find(p=>p.value===a.deliveryOperator)?[be.find(p=>p.value===a.deliveryOperator)]:[],onChange:p=>l("deliveryOperator",p[0]?.value||"not_seen"),fixedWidth:"100%"}),e.jsx(te,{variant:"admin",searchEnabled:!0,multiSelection:!0,showCheckbox:!1,showSelectionTick:!0,placeholder:c?"
23Loading releases...":"Select releases...",options:b||[],value:S(),onChange:j,fixedWidth:"100%",loading:c})]})]})]})}),e.jsx("div",{className:"bg-admin_canvas rounded-lg border border-admin_bordered p-4",children:e.jsxs("div",{className:"flex items-start space-x-3",children:[e.jsx(Ia,{className:"w-5 h-5 text-admin_warning flex-shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(s,{component:"h2",variant:"admin_h4",className:"mb-0",children:"Audience Share"}),e.jsx(ae,{isOn:a.audienceShareEnabled,onChange:p=>{l("audienceShareEnabled",p),p||l("audienceShare",100)}})]}),e.jsx(s,{variant:"admin_txt2_dim",className:"block mb-3",children:"Send to a percentage of the calculated audience."}),a.audienceShareEnabled&&e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"flex-1 max-w-32",children:e.jsx(oe,{variant:"admin",type:"number",min:"0.001",max:"100",step:"0.001",value:a.audienceShare||"",onChange:p=>{const C=p.target.value;if(C===""||C==="0."||C==="0.0"||C==="0.00"||C.endsWith(".")){l("audienceShare",C);return}const M=parseFloat(C);isNaN(M)||l("audienceShare",C)},onBlur:()=>{const p=a.audienceShare;if(p===""||p===null||p===void 0||p==="0."||p==="0"||p==="0.0"||p==="0.00"){l("audienceShare",100);return}const C=parseFloat(p);if(!isNaN(C)&&C>0){const M=Math.min(100,Math.max(.001,C));l("audienceShare",M)}else l("audienceShare",100)},placeholder:"100",error:t.audienceShare})}),e.jsx(s,{variant:"admin_body1_dim",className:"my-0",children:"% of calculated audience"})]})]})]})})]})]})},lt=({formData:a,errors:t,onInputChange:i})=>{const[r,o]=d.useState([]),[n,m]=d.useState(!0),[u,b]=d.useState([]),[c,l]=d.useState(!0),[h,g]=d.useState(null),[j,k]=d.use
23State(0),[w,S]=d.useState(null),[E,N]=d.useState([]),[T,y]=d.useState(!0);d.useEffect(()=>{v(),A(),p()},[]),d.useEffect(()=>{const R=setTimeout(()=>{a.segments.length>0?C():(g(null),S(null))},300);return()=>clearTimeout(R)},[a.segments,a.includeUnregistered,a.ltvFilterEnabled,a.ltvAmount,a.ltvOperator]);const v=async()=>{m(!0);const R=await ie.loadSegments();if(m(!1),R.success&&(o(R.segments),R.segments.length>0&&(!a.segments||a.segments.length===0))){const G=ie.findDefaultSegment(R.segments);G&&i("segments",[G.id])}},A=async()=>{l(!0);const R=await ie.loadSystemLanguages();l(!1),b(R.languages),a.targetLanguages.length===0&&i("targetLanguages",["any"])},p=async()=>{y(!0);try{const R=await $.getReleases({status:["running","completed","failed"],limit:100});if(R&&R.success&&R.releases){const G=R.releases.map(z=>{let X="";return z.createdAt&&(X=` (${new Date(z.createdAt).toLocaleDateString()})`),{value:z._id,label:`${z.name}${X}`}});N(G)}}catch(R){console.error("Failed to load releases:",R),N([])}finally{y(!1)}},C=async()=>{const R=await ie.previewAudience(a.segments,a.includeUnregistered,[],[],a.ltvFilterEnabled?a.ltvAmount:null,a.ltvFilterEnabled?a.ltvOperator:"gte",a.deliveryFilterEnabled?a.deliveryOperator:null,a.deliveryFilterEnabled?a.deliveryReleases:[],100);R.success&&(g(R.preview?.breakdown?.platforms),S(R.preview?.breakdown?.languages),k(R.preview?.breakdown?.total||0))},M=R=>{if((!R||R.length===0)&&r.find(z=>z.id==="all-subscribers")){i("segments",["all-subscribers"]);return}i("segments",[R[0].id])},x=()=>r.find(G=>a.segments.includes(G.id))||null,f=R=>{const G=R.map(X=>X.value),z=ie.handleAnyExclusivity(G,a.targetLanguages||[]);i("targetLanguages",z)},_=R=>{const G=R.map(X=>X.value),z=ie.handleAnyExclusivity(G,a.targetPlatforms||[]);i("targetPlatforms",z)},P=()=>u.filter(R=>a.targetLanguages.includes(R.value)),O=()=>we.filter(R=>a.targetPlatforms.includes(R.value)),U=R=>{const G=R.map(z=>z.value);i("deliveryReleases",G)},D=()=>E.filter(R=>a.deliveryReleases.includes(R.value));return e.jsxs("div",{className:"space-y-4",children:[t.general&&e.jsx("div",{className:"bg-admin_error/10 rounded-lg border border-admin_error p-4 mb-4",children:e.jsx(s,{variant:"admin_txt2",className:"text-admin_error",children:t.general})}),e.jsx(rt,{availableSegments:r,selectedSegments:x(),loadingSegments:n,error:t.segments,onChange:M}),e.jsx(ot,{formData:a,errors:t,systemLanguages:u,platforms:we,loadingLanguages:c,basePlatformBreakdown:h,baseLanguageBreakdown:w,baseAudienceTotal:j,releases:E,loadingReleases:T,onInputChange:i,onLanguageChange:f,onPlatformChange:_,onDeliveryReleasesChange:U,getSelectedLanguages:P,getSelectedPlatforms:O,getSelectedReleases:D})]})},ct=({formData:a,audiencePreview:t})=>{const[i,r]=d.useState([]);d.useEffect(()=>{o()},[]);const o=async()=>{try{const c=await De();if(c&&c.languages){const l=c.languages.map(h=>({value:h.code,label:h.name}));r(l)}}catch(c){console.error("Failed to load system languages:",c),r([])}},n=c=>{const l=we.find(h=>h.value===c);return l?l.label:c},m=c=>{const l=i.find(h=>h.value===c);return l?l.label:c},u=c=>c?new Date(c).toLocaleString():"Not set",b=()=>t?.audienceSize||0;return e.jsx("div",{className:"space-y-4",children:e.jsxs("div",{className:"bg-admin_paper shadow-lg border border-admin_bordered max-w-4xl mx-auto",style:{minHeight:"297mm",width:"210mm",padding:"20mm"},children:[e.jsxs("div",{className:"text-center border-b-2 border-admin_bordered pb-4 mb-8",children:[e.jsx("h1",{className:"text-3xl font-bold mb-2 text-admin_text",style:{letterSpacing:"1px"},children:"📄 NEWSLETTER RELEASE REPORT"}),e.jsx("div",{className:"text-lg text-admin_text_secondary font-semibold",children:"Configuration Summary & Release Details"}),e.jsxs("div",{className:"text-sm text-admin_text_secondary mt-2",children:["Generated on ",new Date().toLocaleDateString("en-US",{weekday:"long",year:"numeric",month:"long",day:"numeric"})," at ",new Date().toLocaleTimeString()]})]}),e.jsxs("div",{className:"space-y-6 text-sm leading-relaxed",children:[e.jsxs("div",{className:"bg-admin_paper p-4 rounded-lg border border-admin_bordered",children:[e.jsx("h3",{className:"font-bold text-admin_text mb-3 text-base",children:"📋 RELEASE SUMMARY"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-admin_text_secondary text-sm",children:"Name:"}),e.jsx("div",{className:"font-semibold text-admin_text",children:a.name||"Untitled Release"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-admin_text_secondary text-sm",children:"Scheduled:"}),e.jsx("div",{className:"font-semibold text-admin_text",children:u(a.scheduledAt)})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("span",{className:"text-admin_text_secondary text-sm",children:"Recipients:"}),e.jsxs("div",{className:"font-semibold text-admin_text",children:[b().toLocaleStr
23ing()," subscribers"]})]})]}),a.description&&e.jsxs("div",{className:"mt-3 pt-3 border-t border-admin_bordered",children:[e.jsx("span",{className:"text-admin_text_secondary text-sm",children:"Description:"}),e.jsx("div",{className:"mt-1 italic text-admin_text",children:a.description})]})]}),e.jsxs("div",{className:"bg-admin_paper p-4 rounded-lg border border-admin_bordered",children:[e.jsx("h3",{className:"font-bold text-admin_text mb-3 text-base",children:"✉️ EMAIL TEMPLATES"}),a.templates.length===0?e.jsx("p",{className:"text-error",children:"⚠️ No templates selected"}):e.jsxs("div",{className:"space-y-2",children:[a.templates.map((c,l)=>e.jsxs("div",{className:"flex items-center justify-between bg-admin_canvas p-2 rounded",children:[e.jsx("span",{className:"font-medium text-admin_text",children:c.templateName||"Unknown Template"}),e.jsxs("span",{className:"text-admin_text font-semibold",children:[c.percentage,"%"]})]},l)),a.templates.length>1&&e.jsx("p",{className:"text-success text-xs mt-2 italic",children:"✓ A/B Testing enabled - Recipients randomly distributed"})]})]}),e.jsxs("div",{className:"bg-admin_paper p-4 rounded-lg border border-admin_bordered",children:[e.jsx("h3",{className:"font-bold text-admin_text mb-3 text-base",children:"🎯 AUDIENCE TARGETING"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-start",children:[e.jsx("span",{className:"text-admin_text_secondary text-sm min-w-[140px]",children:"Segments:"}),e.jsx("span",{className:"font-medium text-admin_text",children:a.segments.length===0?"All Subscribers":a.segments.map(c=>c.replace("all-subscribers","All Subscribers")).join(", ")})]}),e.jsxs("div",{className:"flex items-start",children:[e.jsx("span",{className:"text-admin_text_secondary text-sm min-w-[140px]",children:"Languages:"}),e.jsx("span",{className:"font-medium text-admin_text",children:a.targetLanguagesEnabled?a.targetLanguages.map(c=>m(c)).join(", "):"All languages"})]}),e.jsxs("div",{className:"flex items-start",children:[e.jsx("span",{className:"text-admin_text_secondary text-sm min-w-[140px]",children:"Platforms:"}),e.jsx("span",{className:"font-medium text-admin_text",children:a.targetPlatformsEnabled?a.targetPlatforms.map(c=>n(c)).join(", "):"All platforms"})]}),e.jsxs("div",{className:"flex items-start",children:[e.jsx("span",{className:"text-admin_text_secondary text-sm min-w-[140px]",children:"Audience Share:"}),e.jsxs("span",{className:"font-semibold text-admin_text",children:[a.audienceShareEnabled&&a.audienceShare||100,"%"]})]}),e.jsxs("div",{className:"flex items-start",children:[e.jsx("span",{className:"text-admin_text_secondary text-sm min-w-[140px]",children:"User LTV:"}),e.jsx("span",{className:"font-medium text-admin_text",children:a.ltvFilterEnabled?`${a.ltvOperator==="gte"?"≥":"≤"} $${a.ltvAmount||0}`:"Not applied"})]}),e.jsxs("div",{className:"flex items-start",children:[e.jsx("span",{className:"text-admin_text_secondary text-sm min-w-[140px]",children:"Include Unregistered:"}),e.jsx("span",{className:`font-medium ${a.includeUnregistered?"text-admin_success":"text-admin_error"}`,children:a.includeUnregistered?"✓ Yes":"✗ No"})]})]})]}),t?.breakdown&&e.jsxs("div",{className:"bg-admin_paper p-4 rounded-lg border border-admin_bordered",children:[e.jsx("h3",{className:"font-bold text-admin_text mb-3 text-base",children:"📊 AUDIENCE BREAKDOWN"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"flex flex-col h-full justify-between bg-admin_canvas rounded-lg p-3",children:[e.jsx(s,{variant:"admin_label",className:"mb-2",children:"User Types"}),e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1_dim",children:"Registered"}),e.jsx(Q,{variant:"success",size:"sm",children:(t.breakdown.registered||0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1_dim",children:"Anonymous"}),e.jsx(Q,{variant:"admin_default",size:"sm",children:(t.breakdown.anonymous||0).toLocaleStr
23ing()})]})]})]}),t.breakdown?.languages&&Object.keys(t.breakdown.languages).length>0&&e.jsxs("div",{className:"flex flex-col h-full justify-between bg-admin_canvas rounded-lg p-3",children:[e.jsx(s,{variant:"admin_label",className:"mb-2",children:"Languages"}),e.jsxs("div",{className:"space-y-1",children:[Object.entries(t.breakdown.languages).sort(([,c],[,l])=>l-c).slice(0,3).map(([c,l])=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1_dim",className:"uppercase",children:c}),e.jsx(Q,{variant:"info",size:"sm",children:l.toLocaleString()})]},c)),Object.keys(t.breakdown.languages).length>3&&e.jsx("div",{className:"flex justify-center pt-1",children:e.jsxs(Q,{variant:"info",size:"sm",children:["+",Object.keys(t.breakdown.languages).length-3," more"]})})]})]}),t.breakdown?.platforms&&Object.keys(t.breakdown.platforms).length>0&&e.jsxs("div",{className:"flex flex-col h-full justify-between bg-admin_canvas rounded-lg p-3",children:[e.jsx(s,{variant:"admin_label",className:"mb-2",children:"Platforms"}),e.jsxs("div",{className:"space-y-1",children:[Object.entries(t.breakdown.platforms).sort(([,c],[,l])=>l-c).slice(0,3).map(([c,l])=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1_dim",className:"capitalize",children:c==="unknown"?"Unknown":c}),e.jsx(Q,{variant:"warning",size:"sm",children:l.toLocaleString()})]},c)),Object.keys(t.breakdown.platforms).length>3&&e.jsx("div",{className:"flex justify-center pt-1",children:e.jsxs(Q,{variant:"warning",size:"sm",children:["+",Object.keys(t.breakdown.platforms).length-3," more"]})})]})]})]})]})]})]})})},dt=({steps:a,currentStep:t,completedSteps:i,onStepClick:r,formData:o,audiencePreview:n})=>{const[m,u]=d.useState(""),[b,c]=d.useState(!1),l=async()=>{if(!(!m.trim()||o.templates.length===0))try{c(!0);const h=m.split(",").map(k=>k.trim()).filter(k=>
23k),g=o.templates[0];if(!g?.templateId){L({message:"Please select at least one template first",className:"bg-admin_error text-white"});return}const j=await $.sendTestEmail(g.templateId,h,{testMode:!0,previewData:{segments:o.segments,audienceSize:n?.audienceSize||0}});j.success?(L({message:`Test email sent to ${h.length} address${h.length>1?"es":""}`,className:"bg-admin_success text-white"}),u("")):L({message:"Failed to send test email: "+(j.message||"Unknown error"),className:"bg-admin_error text-white"})}catch(h){console.error("Failed to send test email:",h),L({message:"Failed to send test email: "+h.message,className:"bg-admin_error text-white"})}finally{c(!1)}};return e.jsxs("div",{className:"px-6 py-4 bg-admin_paper",children:[e.jsx("div",{className:"flex items-center justify-between max-w-4xl mx-auto mb-4",children:a.map((h,g)=>{const j=h.id===t,k=i&&i.has(h.id);return e.jsxs("div",{className:"flex items-center",children:[e.jsxs("div",{className:"flex items-center cursor-pointer transition-colors",onClick:()=>r(h.id),children:[e.jsx("div",{className:`
24                    w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium transition-colors
25                    ${k?"bg-admin_success text-white":j?"bg-admin_primary text-white":"bg-admin_neutral_3 text-white"}
26                  `,children:k?e.jsx(Da,{className:"w-5 h-5"}):h.id}),e.jsxs("div",{className:"ml-3",children:[e.jsx(s,{variant:"admin_label",className:`font-medium my-0 ${j?"text-admin_primary":"text-admin_text"}`,children:h.title}),e.jsx(s,{variant:"admin_txt2_dim",children:h.description})]})]}),g<a.length-1&&e.jsx("div",{className:`
27                    flex-1 h-0.5 mx-4 transition-colors
28                    ${k?"bg-admin_success":"bg-admin_neutral_3"}
29                  `})]},h.id)})}),t===4&&e.jsxs("div",{className:"max-w-4xl mx-auto border-t border-admin_bordered pt-4",children:[e.jsxs("div",{className:"flex items-center justify-center space-x-4",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(Te,{className:"w-5 h-5 text-admin_primary mr-2"}),e.jsx(s,{variant:"admin_label",className:"my-0",children:"Send Test Email:"})]}),e.jsx("div",{className:"flex-1 max-w-md",children:e.jsx(oe,{placeholder:"[email protected], [email protected]",value:m,onChange:h=>u(h.target.value),disabled:o?.templates?.length===0||b,className:"text-sm"})}),e.jsxs(B,{variant:"admin_secondary",onClick:l,disabled:!m.trim()||o?.templates?.length===0||b,className:"ml-auto",children:[e.jsx(Te,{className:"w-4 h-4"}),!b&&e.jsx("span",{className:"ml-1",children:"Send"}),b&&e.jsx("span",{className:"ml-1",children:"Sending..."})]})]}),o?.templates?.length===0&&e.jsx(s,{variant:"admin_txt2_dim",className:"block mt-2 text-center",children:"Please select at least one template to send test emails"})]})]})},mt=({currentStep:a,onPrevious:t,onNext:i,onGenerate:r,canProceed:o=!0})=>{const n=a===1,m=a===4;return e.jsx("div",{className:"px-6 py-3",children:e.jsxs("div",{className:"flex items-center justify-between max-w-4xl mx-auto",children:[e.jsx("div",{children:!n&&e.jsxs(B,{variant:"admin_secondary",onClick:t,className:"flex items-center",children:[e.jsx(ca,{className:"w-4 h-4 mr-1"}),"Previous"]})}),e.jsx("div",{className:"flex space-x-3",children:m?e.jsx(B,{variant:"admin_primary",onClick:r,disabled:!o,className:"flex items-center",children:"Create Release"}):e.jsxs(B,{variant:"admin_primary",onClick:i,disabled:!o,className:"flex items-center",children:["Next",e.jsx(da,{className:"w-4 h-4 ml-1"})]})})]})})},ut=({audiencePreview:a,loadingPreview:t})=>e.jsx("div",{className:"bg-admin_paper border-t border-admin_bordered shadow-sm",children:e.jsx("div",{className:"px-4 py-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ka,{className:"w-4 h-4 text-admin_primary"}),e.jsx(s,{variant:"admin_label",className:"mb-0",children:"Audience Reach"}),t&&e.jsx("div",{className:"h-3 w-3 animate-spin rounded-full border-b-2 border-admin_primary"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(s,{variant:"admin_txt2_dim",className:"mb-0",children:"Final Recipients:"}),e.jsx("div",{className:"text-2xl font-bold text-admin_primary",children:(a?.audienceSize||0).toLocaleStr
29ing()})]})]})})}),ht=({isOpen:a,onClose:t,onSuccess:i})=>{const[r,o]=d.useState(1),[n,m]=d.useState(fe),[u,b]=d.useState({}),[c,l]=d.useState(null),[h,g]=d.useState(!1),[j,k]=d.useState(!1),[w,S]=d.useState(new Set);d.useEffect(()=>{a&&(o(1),m(fe),b({}),l(null),S(new Set))},[a]);const E=(f,_)=>{m(P=>({...P,[f]:_})),u[f]&&b(P=>{const O={...P};return delete O[f],O})},N=f=>{u[f]&&b(_=>{const P={..._};return delete P[f],P})},T=f=>{const _={};switch(f){case 1:n.name.trim()||(_.name="Release name is required"),n.scheduledAt?new Date(n.scheduledAt)<=new Date&&(_.scheduledAt="Scheduled time must be in the future"):_.scheduledAt="Scheduled date and time is required";break;case 2:if(n.templates.length===0)_.templates="At least one template is required";else{n.templates.forEach((R,G)=>{R.templateId||(_[`template_${G}_id`]="Template selection is required"),(R.percentage<=0||R.percentage>100)&&(_[`template_${G}_percentage`]="Percentage must be between 1 and 100")});const D=n.templates.reduce((R,G)=>R+(G.percentage||0),0);D>100?_.templates=`Total percentage is ${D}% - cannot exceed 100%`:D<100&&(_.templates=`Total percentage is ${D}% - must equal 100%`)}break;case 3:n.segments.length===0&&(_.segments="Please select at least one audience segment"),n.targetLanguages.length===0&&(_.targetLanguages="Please select at least one target language"),n.targetPlatforms.length===0&&(_.targetPlatforms="Please select at least one target platform"),(!n.audienceShare||n.audienceShare<=0||n.audienceShare>100)&&(_.audienceShare="Audience share must be greater than 0% and at most 100%");break;case 4:const P=T(1),O=T(2),U=T(3);(!P||!O||!U)&&(_.general="Please fix errors in previous steps");break}return b(_),Object.keys(_).length===0},y=()=>{T(r)?(S(f=>new Set([...f,r])),o(f=>Math.min(f+1,Fe.length))):(L({message:"Please fix the highlighted errors before proceeding",className:"bg-admin_error text-white"}),setTimeout(()=>{const f=document.querySelector(".text-admin_error");f&&f.scrollIntoView({behavior:"smooth",block:"center"})},100))},v=()=>{o(f=>Math.max(f-1,1))},A=f=>{o(f)},p=async()=>{if((r===3||r===4)&&n.segments.length>0)try{g(!0);const f=n.targetLanguages.includes("any")?[]:n.targetLanguages,_=n.targetPlatforms.includes("any")?[]:n.targetPlatforms,P=await $.previewAudience(n.segments,n.includeUnregistered,f,_,n.ltvAmount,n.ltvOperator,n.deliveryFilterEnabled?n.deliveryOperator:null,n.deliveryFilterEnabled?n.deliveryReleases:[],n.audienceShare);(P.success||P.audienceSize!==void 0)&&l(P.preview||P)}catch(f){console.error("Failed to preview audience:",f)}finally{g(!1)}};d.useEffect(()=>{p()},[r,n.segments,n.includeUnregistered,n.targetLanguages,n.targetPlatforms,n.ltvAmount,n.ltvOperator,n.deliveryFilterEnabled,n.deliveryOperator,n.deliveryReleases,n.audienceShare]);const C=async()=>{if(T(4))try{k(!0);const f=n.targetLanguagesEnabled?n.targetLanguages.includes("any")?[]:n.targetLanguages:[],_=n.targetPlatformsEnabled?n.targetPlatforms.includes("any")?[]:n.targetPlatforms:[],O=new Date(n.scheduledAt).toISOString(),U={name:n.name,description:n.description,scheduledAt:O,templates:n.templates,segments:n.segments,includeUnregistered:n.includeUnregistered,targetLanguages:f,targetPlatforms:_,ltvFilterEnabled:n.ltvFilterEnabled,ltvAmount:n.ltvFilterEnabled?n.ltvAmount:null,ltvOperator:n.ltvFilterEnabled?n.ltvOperator:"gte",deliveryFilterEnabled:n.deliveryFilterEnabled,deliveryOperator:n.deliveryFilterEnabled?n.deliveryOperator:null,deliveryReleases:n.deliveryFilterEnabled?n.deliveryReleases:[],audienceShare:n.audienceShareEnabled?n.audienceShare:100},D=await $.createRelease(U);if(D.success)L({message:`Newsletter release "${n.name}" created successfully!`,className:"bg-admin_success text-white"}),i&&i(D.release),ma({variant:"admin",title:"🎉 Release Created!",message:`Your newsletter release "${n.name}" has been created and scheduled.
30
31Scheduled for: ${new Date(n.scheduledAt).toLocaleString()}
32Recipients: ${D.release?.audienceSize?.toLocaleString()||"Unknown"}`,yesLabel:"View Releases",noLabel:"Create Another",onConfirm:()=>{t()},onCancel:()=>{o(1),m(fe),b({}),l(null)}});else throw new Error(D.message||"Failed to create release")}catch(f){console.error("Failed to create release:",f),L({message:"Failed to create release: "+f.message,className:"bg-admin_error text-white"})}finally{k(!1)}},M=()=>{switch(r){case 1:return!0;case 2:return!0;case 3:return!0;case 4:return!0;default:return!1}},x={formData:n,errors:u,onInputChange:E,clearFieldError:N};return e.jsx(se,{isOpen:a,onClose:t,title:"Create Newsletter Release",variant:"admin_centered",className:"max-w-4xl",closeOnEscape:!1,closeOnClickOutside:!1,styleOverrides:{content:"px-5 sm:px-6"},footerContent:e.jsx(mt,{currentStep:r,onPrevious:v,onNext:y,onGenerate:C,canProceed:M()&&!j}),children:e.jsxs("div",{className:"flex flex-col h-[600px]",children:[e.jsx("div",{className:"flex-shrink-0 border-b border-admin_bordered",children:e.jsx(dt,{steps:Fe,currentStep:r,completedSteps:w,onStepClick:A,formData:n,audiencePreview:c})}),e.jsxs("div",{className:"flex-1 overflow-y-auto scrollbar-thin scrollbar-thumb-admin_neutral_2 scrollbar-track-admin_paper px-4 pt-4",children:[j&&e.jsx("div",{className:"bg-admin_primary/10 border border-admin_primary rounded-lg p-4 mb-6",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"h-5 w-5 rounded-full border-b-2 border-admin_primary mr-3 animate-spin"}),e.jsx(s,{variant:"admin_body1",className:"text-admin_primary",children:"Creating newsletter release..."})]})}),r===1&&e.jsx(st,{...x}),r===2&&e.jsx(nt,{...x}),r===3&&e.jsx(lt,{...x}),r===4&&e.jsx(ct,{formData:n,audiencePreview:c,errors:u}),u.general&&e.jsx("div",{className:"bg-admin_error/10 border border-admin_error roun
32ded-lg p-4 mt-4",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx(Se,{className:"w-5 h-5 text-admin_error mr-2"}),e.jsx(s,{variant:"admin_body1",className:"text-admin_error my-0",children:u.general})]})})]}),r===3&&n.segments.length>0&&e.jsx("div",{className:"flex-shrink-0",children:e.jsx(ut,{audiencePreview:c,loadingPreview:h})})]})})};class pt{constructor(){this.socket=null,this.isSubscribed=!1,this.connectionAttempts=0,this.maxRetries=3}init(){if(!this.socket)try{if(this.socket=ua("newsletter"),!this.socket){console.error("❌ [NL RT] Failed to get newsletter socket");return}this.socket.off("connect"),this.socket.off("connect_error"),this.socket.off("disconnect"),this.socket.off("newsletter:release_status_updated"),this.socket.off("newsletter:release_deleted"),this.socket.off("newsletter:release_rate_limited"),this.socket.off("newsletter:release_rate_updated"),this.socket.on("connect",()=>{this.connectionAttempts=0,this.subscribe(),K.publish("newsletter:realtime_connected",{connected:!0})}),this.socket.on("connect_error",t=>{console.error("❌ [NL RT] Connection error:",t.message),this.connectionAttempts++,this.connectionAttempts>=this.maxRetries&&K.publish("newsletter:realtime_error",{error:"Failed to connect after multiple attempts",attempts:this.connectionAttempts})}),this.socket.on("disconnect",t=>{this.isSubscribed=!1,K.publish("newsletter:realtime_connected",{connected:!1,reason:t})}),this.socket.on("newsletter:release_status_updated",t=>{K.publish("newsletter:release_status_updated",t)}),this.socket.on("newsletter:release_deleted",t=>{K.publish("newsletter:release_deleted",t)}),this.socket.on("newsletter:release_rate_limited",t=>{K.publish("newsletter:release_rate_limited",t)}),this.socket.on("newsletter:release_rate_updated",t=>{K.publish("newsletter:release_rate_updated",t)}),this.socket.connected&&this.subscribe()}catch(t){console.error("❌ [NL RT] Failed to initialize:",t),K.publish("newsletter:realtime_error",{error:t.message})}}subscribe(){!this.socket||this.isSubscribed||this.socket.emit("newsletter:subscribe_releases",{},t=>{t?.success?this.isSubscribed=!0:console.error("❌ [NL RT] Failed to subscribe:",t)})}unsubscribe(){!this.socket||!this.isSubscribed||(this.socket.emit("newsletter:unsubscribe_releases",{}),this.isSubscribed=!1)}destroy(){this.socket&&(this.unsubscribe(),this.socket.off("connect"),this.socket.off("connect_error"),this.socket.off("disconnect"),this.socket.off("newsletter:release_status_updated"),this.socket.off("newsletter:release_deleted"),this.socket.off("newsletter:release_rate_limited"),this.socket.off("newsletter:release_rate_updated"),this.socket=null,this.isSubscribed=!1)}}const me=new pt;class xt{constructor(){this.listeners=new Map}startPolling(t,i,r=5){if(this.listeners.has(t))return;const o=me.socket;if(!o||!o.connected)return;let n=0;const m=setInterval(()=>{n++,n>=r&&(n=0,this.fetchStats(t,i))},1e3);this.listeners.set(t,{pollInterval:m,onUpdate:i}),this.fetchStats(t,i)}fetchStats(t,i){const r=me.socket;!r||!r.connected||r.emit("newsletter:get_release_stats",{release_id:t},o=>{if(o?.success){const n=o.data||o;i(n)}})}stopPolling(t){const i=this.listeners.get(t);i&&(clearInterval(i.pollInterval),this.listeners.delete(t))}stopAll(){this.listeners.forEach((t,i)=>{clearInterval(t.pollInterval)}),this.listeners.clear()}}const ve=new xt,gt=(a,t,i,r)=>{const o=d.useRef(!1),n=d.useRef(i);d.useEffect(()=>{n.current=i},[i]),d.useEffect(()=>{if(!r||!a||!t)return;if(!(t.status!=="scheduled")){o.current&&(ve.stopPolling(a),o.current=!1);return}if(!o.current){const u=b=>n.current(b);ve.startPolling(a,u,5),o.current=!0}return()=>{o.current&&(ve.stopPolling(a),o.current=!1)}},[r,a,t?.status])};class ft{async startRelease(t){if(!await re({variant:"admin",title:"Start Release Now?",message:"This will start sending emails immediately, bypassing the scheduled time.",confirmText:"Start Now",cancelText:"Cancel",type:"warning"}))return{cancelled:!0};try{const r=await $.startRelease(t);if(!r.success)throw new Error(r.error||"Failed to start release");return{success:!0,message:"Release started successfully"}}catch(r){return console.error("Start release error:",r),{success:!1,error:r.message}}}async pauseRelease(t){try{const i=await $.pauseRelease(t);if(!i.success)throw new Error(i.error||"Failed to pause release");return{success:!0,message:"Release paused successfully"}}catch(i){return console.error("Pause release error:",i),{success:!1,error:i.message}}}async resumeRelease(t){try{const i=await $.resumeRelease(t);if(!i.success)throw new Error(i.error||"Failed to resume release");return{success:!0,message:"Release resumed successfully"}}catch(i){return console.error("Resume release error:",i),{success:!1,error:i.message}}}async stopRelease(t){if(!await re({variant:"admin",title:"Stop Release?",message:"This will stop the release and mark remaining emails as unsent. This action cannot be undone.",confirmText:"Stop Release",cancelText:"Cancel",type:"danger"}))return{cancelled:!0};try{const r=await $.cancelRelease(t);if(!r.success)throw new Error(r.error||"Failed to stop release");return{success:!0,message:"Release stopped successfully"}}catch(r){return console.error("Stop release error:",r),{success:!1,error:r.message}}}async deleteRelease(t,i){if(!await re({variant:"admin",title:"Delete Release?",message:`Are you sure you want to delete "${i}"? This action cannot be undone.`,confirmText:"Delete",cancelText:"Cancel",type:"danger"}))return{cancelled:!0};try{const o=await $.deleteRelease({releaseId:t});if(!o.success)throw new Error(o.error||"Failed to delete release");return{success:!0,message:"Release deleted successfully"}}catch(o){return console.error("Delete release error:",o),{success:!1,error:o.message}}}async rescheduleRelease(t,i){return{cancelled:!0}}}const le=new ft,Nt=({release:a,loading:t,onStart:i,onPause:r,onResume:o,onStop:n,onDelete:m,onReschedule:u})=>
32{if(t||!a)return e.jsx(s,{variant:"admin_h3",children:"Loading..."});const b=()=>{const h={scheduled:{label:"Scheduled",variant:"admin_info"},running:{label:"Running",variant:"admin_success"},paused:{label:"Paused",variant:"admin_warning"},completed:{label:"Completed",variant:"admin_success"},stopped:{label:"Stopped",variant:"admin_error"},failed:{label:"Failed",variant:"admin_error"}}[a.status]||{label:a.status,variant:"admin_default"},g=a.status==="scheduled"&&a.scheduledAtFormatted?`${h.label} · ${a.scheduledAtFormatted}`:h.label,j=e.jsx(Q,{variant:h.variant,size:"large",children:g});return a.status==="scheduled"?e.jsx(J,{text:"Click to reschedule",position:"bottom",children:e.jsx("button",{onClick:u,className:"cursor-pointer hover:opacity-80 transition-opacity",children:j})}):j},c=()=>{const l=[];return a.status==="scheduled"&&l.push(e.jsx(J,{text:"Start now",position:"bottom",children:e.jsx(B,{variant:"admin_icon",onClick:i,children:e.jsx(je,{className:"w-5 h-5 text-admin_success"})})},"start")),a.status==="running"&&(l.push(e.jsx(J,{text:"Pause",position:"bottom",children:e.jsx(B,{variant:"admin_icon",onClick:r,children:e.jsx(Ta,{className:"w-5 h-5 text-admin_warning"})})},"pause")),l.push(e.jsx(J,{text:"Stop",position:"bottom",children:e.jsx(B,{variant:"admin_icon",onClick:n,children:e.jsx(Re,{className:"w-5 h-5 text-admin_error"})})},"stop"))),a.status==="paused"&&(l.push(e.jsx(J,{text:"Resume",position:"bottom",children:e.jsx(B,{variant:"admin_icon",onClick:o,children:e.jsx(je,{className:"w-5 h-5 text-admin_success"})})},"resume")),l.push(e.jsx(J,{text:"Stop",position:"bottom",children:e.jsx(B,{variant:"admin_icon",onClick:n,children:e.jsx(Re,{className:"w-5 h-5 text-admin_error"})})},"stop"))),["completed","stopped","failed"].includes(a.status)&&l.push(e.jsx(J,{text:"Delete release",position:"bottom",children:e.jsx(B,{variant:"admin_icon",onClick:m,children:e.jsx(ce,{className:"w-5 h-5 text-admin_error"})})},"delete")),["scheduled","failed"].includes(a.status)&&l.push(e.jsx(J,{text:"Delete release",position:"bottom",children:e.jsx(B,{variant:"admin_icon",onClick:m,children:e.jsx(ce,{className:"w-5 h-5 text-admin_error"})})},"delete")),l};return e.jsxs("div",{className:"flex items-center gap-2 mr-10",children:[b(),c()]})},bt=({release:a,onPreview:t,onEditVariables:i})=>{const r=o=>!a.templateStats||a.templateStats.length===0?null:a.templateStats.find(n=>n.templateId.toString()===o.toString());return!a.templates||a.templates.length===0?e.jsxs("div",{className:"text-center py-8",children:[e.jsx(La,{className:"w-12 h-12 text-admin_text_secondary mx-auto mb-4"}),e.jsx(s,{variant:"admin_body1_dim",children:"No templates configured for this release"})]}):e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"space-y-3",children:a.templates.map((o,n)=>{const m=r(o.templateId),u=m?.sent||0,b=m?.delivered||0,c=m?.opened||0,l=m?.clicked||0,h=m?.bounced||0,g=m?.spamComplaint||0,j=m?.unsubscribed||0,k=u>0?(b/u*100).toFixed(1):0,w=u>0?(c/u*100).toFixed(1):0,S=u>0?(l/u*100).toFixed(1):0,E=u>0?(h/u*100).toFixed(1):0,N=u>0?(g/u*100).toFixed(1):0,T=u>0?(j/u*100).toFixed(1):0;return e.jsxs("div",{className:"border border-admin_bordered rounded-lg p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsx(s,{variant:"admin_label",className:"my-0",children:o.templateName&&o.templateName!=="Unknown Template"?o.templateName:`Template ${o.templateId.slice(-8)}`}),o.percentage&&e.jsxs(Q,{variant:"admin_info",size:"small",children:[o.percentage,"% traffic share"]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(J,{text:"Preview template",position:"top",children:e.jsx(B,{variant:"admin_icon",onClick:()=>t(o.templateId),children:e.jsx(Ue,{className:"w-4 h-4 text-admin_primary"})})}),e.jsx(J,{text:"Edit variables",position:"top",children:e.jsx(B,{variant:"admin_icon",onClick:()=>i(o),children:e.jsx(ha,{className:"w-4 h-4 text-admin_primary"})})})]})]}),m&&u>0&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-center gap-3",children:[e.jsxs("div",{className:"flex flex-col items-center min-w-[80px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Sent"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_text",children:u.toLocaleStr
32ing()}),e.jsx(s,{variant:"admin_txt3_dim",children:"Emails"})]}),e.jsx("div",{className:"flex items-center",children:e.jsx("svg",{width:"40",height:"24",viewBox:"0 0 40 24",className:"text-admin_bordered",children:e.jsx("path",{d:"M0 12 L35 12 M35 12 L28 6 M35 12 L28 18",stroke:"currentColor",strokeWidth:"2",fill:"none"})})}),e.jsxs("div",{className:"flex flex-col items-center min-w-[80px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Delivered"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_success",children:b.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_success",children:[k,"%"]})]}),e.jsx("div",{className:"flex items-center",children:e.jsx("svg",{width:"40",height:"24",viewBox:"0 0 40 24",className:"text-admin_bordered",children:e.jsx("path",{d:"M0 12 L35 12 M35 12 L28 6 M35 12 L28 18",stroke:"currentColor",strokeWidth:"2",fill:"none"})})}),e.jsxs("div",{className:"flex flex-col items-center min-w-[80px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Opened"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_primary",children:c.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_primary",children:[w,"%"]})]}),e.jsx("div",{className:"flex items-center",children:e.jsx("svg",{width:"40",height:"24",viewBox:"0 0 40 24",className:"text-admin_bordered",children:e.jsx("path",{d:"M0 12 L35 12 M35 12 L28 6 M35 12 L28 18",stroke:"currentColor",strokeWidth:"2",fill:"none"})})}),e.jsxs("div",{className:"flex flex-col items-center min-w-[80px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Clicked"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_info",children:l.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_info",children:[S,"%"]})]})]}),e.jsx("div",{className:"flex items-center justify-center pt-3 border-t border-admin_bordered",children:e.jsxs("div",{className:"flex items-center justify-evenly w-full max-w-xl",children:[e.jsxs("div",{className:"flex flex-col items-center min-w-[100px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Bounced"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_warning",children:h.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_warning",children:[E,"%"]})]}),e.jsxs("div",{className:"flex flex-col items-center min-w-[100px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Spam"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_error",children:g.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_error",children:[N,"%"]})]}),e.jsxs("div",{className:"flex flex-col items-center min-w-[100px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Unsubscribed"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_error",children:j.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_error",children:[T,"%"]})]})]})})]})]},n)})})})},vt=q.memo(bt),yt=({release:a,timeRemaining:t,nextBatchCountdown:i,serverTimeOffset:r,elapsedSeconds:o})=>{const n=a.deliveryStats||{},m=a.emailsSent||0,u=a.audienceSize>0?Math.min(100,Math.round((a.emailsSent||0)/a.audienceSize*100)):0,b=u===100?a.audienceSize:a.emailsSent||0,c=()=>{if(a.status!=="running"||!a.startedAt)return null;const p=o||0;if(p<60)return`${p}s`;const C=Math.floor(p/60),M=p%60;if(C<60)return`${C}m ${M}s`;const x=Math.floor(C/60),f=C%60;return`${x}h ${f}m`},l=()=>{if(!t||t<=0)return"Starting soon...";const p=Math.floor(t/1e3),C=Math.floor(p/86400),M=Math.floor(p%86400/3600),x=Math.floor(p%3600/60),f=p%60;return C>0?`${C}d ${M}h ${x}m`:M>0?`${M}h ${x}m ${f}s`:x>0?`${x}m ${f}s`:`${f}s`};if(!m||m===0)return e.jsxs("div",{className:"text-center py-12",children:[e.jsx(Ve,{className:"w-12 h-12 text-admin_text_secondary mx-auto mb-4"}),e.jsx(s,{variant:"admin_body1_dim",children:"No statistics available yet. Stats will appear as emails are sent and engagement events are received."})]});const h=n.delivered||0,g=n.opened||0,j=n.clicked||0,k=n.bounced||0,w=n.spamComplaint||0,S=n.unsubscribed||0,E=m>0?(h/m*100).toFixed(1):0,N=m>0?(g/m*100).toFixed(1):0,T=m>0?(j/m*100).toFixed(1):0,y=m>0?(k/m*100).toFixed(1):0,v=m>0?(w/m*100).toFixed(1):0,A=m>0?(S/m*100).toFixed(1):0;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"border border-admin_bordered rounded-lg p-4",children:[e.jsx(s,{variant:"admin_label",className:"mb-6",children:"Overall Performance"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-center gap-3",children:[e.jsxs("div",{className:"flex flex-col items-center min-w-[80px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Sent"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_text",children:m.toLocaleStr
32ing()}),e.jsx(s,{variant:"admin_txt3_dim",children:"Emails"})]}),e.jsx("div",{className:"flex items-center",children:e.jsx("svg",{width:"40",height:"24",viewBox:"0 0 40 24",className:"text-admin_bordered",children:e.jsx("path",{d:"M0 12 L35 12 M35 12 L28 6 M35 12 L28 18",stroke:"currentColor",strokeWidth:"2",fill:"none"})})}),e.jsxs("div",{className:"flex flex-col items-center min-w-[80px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Delivered"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_success",children:h.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_success",children:[E,"%"]})]}),e.jsx("div",{className:"flex items-center",children:e.jsx("svg",{width:"40",height:"24",viewBox:"0 0 40 24",className:"text-admin_bordered",children:e.jsx("path",{d:"M0 12 L35 12 M35 12 L28 6 M35 12 L28 18",stroke:"currentColor",strokeWidth:"2",fill:"none"})})}),e.jsxs("div",{className:"flex flex-col items-center min-w-[80px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Opened"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_primary",children:g.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_primary",children:[N,"%"]})]}),e.jsx("div",{className:"flex items-center",children:e.jsx("svg",{width:"40",height:"24",viewBox:"0 0 40 24",className:"text-admin_bordered",children:e.jsx("path",{d:"M0 12 L35 12 M35 12 L28 6 M35 12 L28 18",stroke:"currentColor",strokeWidth:"2",fill:"none"})})}),e.jsxs("div",{className:"flex flex-col items-center min-w-[80px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Clicked"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_info",children:j.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_info",children:[T,"%"]})]})]}),e.jsx("div",{className:"flex items-center justify-center pt-3 border-t border-admin_bordered",children:e.jsxs("div",{className:"flex items-center justify-evenly w-full max-w-xl",children:[e.jsxs("div",{className:"flex flex-col items-center min-w-[100px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Bounced"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_warning",children:k.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_warning",children:[y,"%"]})]}),e.jsxs("div",{className:"flex flex-col items-center min-w-[100px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Spam"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_error",children:w.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_error",children:[v,"%"]})]}),e.jsxs("div",{className:"flex flex-col items-center min-w-[100px]",children:[e.jsx(s,{variant:"admin_txt3_dim",className:"mb-1",children:"Unsubscribed"}),e.jsx(s,{variant:"admin_h3",className:"font-bold text-admin_error",children:S.toLocaleString()}),e.jsxs(s,{variant:"admin_txt3_dim",className:"text-admin_error",children:[A,"%"]})]})]})})]})]}),a.status==="scheduled"?e.jsxs("div",{className:"bg-admin_paper border border-admin_bordered rounded-lg p-6 text-center",children:[e.jsx(s,{variant:"admin_txt2_dim",className:"mb-2",children:"Release starts in"}),e.jsx(s,{variant:"admin_h2",className:"text-admin_primary font-bold",children:l()})]}):e.jsxs("div",{className:"bg-admin_paper border border-admin_bordered rounded-lg p-6",children:[a.status==="running"&&i!==null&&i>0&&e.jsxs("div",{className:"mb-4",children:[e.jsx(s,{variant:"admin_txt2_dim",className:"mb-1",children:"Next batch will be sent in"}),e.jsx(s,{variant:"admin_h3",className:"text-admin_primary",children:(()=>{const p=i,C=Math.floor(p/86400),M=Math.floor(p%86400/3600),x=Math.floor(p%3600/60),f=p%60;return C>0?`${C}d ${M}h ${x}m ${f}s`:M>0?`${M}h ${x}m ${f}s`:x>0?`${x}m ${f}s`:`${f}s`})()})]}),e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx(s,{variant:"admin_txt2_dim",children:"Progress"}),e.jsxs(s,{variant:"admin_txt2_dim",children:[b.toLocaleString()," / ",a.audienceSize.toLocaleStr
32ing()," emails"]})]}),e.jsx("div",{className:"w-full bg-admin_bordered rounded-full h-3 mb-2",children:e.jsx("div",{className:"bg-admin_success h-3 rounded-full transition-all duration-300",style:{width:`${u}%`}})}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(s,{variant:"admin_txt2",className:"text-admin_success font-semibold",children:[u,"%"]}),c()&&e.jsxs(s,{variant:"admin_txt2_dim",children:["Uptime: ",c()]})]})]})]})},St=q.memo(yt),jt=({release:a})=>{const t=r=>r?new Date(r).toLocaleString():"N/A",i=[{label:"Release ID",value:a._id},{label:"Name",value:a.name},{label:"Description",value:a.description||"N/A"},{label:"Status",value:a.status},{label:"Created At",value:t(a.createdAt)},{label:"Scheduled At",value:t(a.scheduledAt)},{label:"Started At",value:t(a.startedAt)},{label:"Completed At",value:t(a.completedAt)},{label:"Audience Size",value:a.audienceSize?.toLocaleString()||"0"},{label:"Base Audience Size",value:a.baseAudienceSize?.toLocaleString()||"0"},{label:"Audience Share",value:a.audienceShare?`${a.audienceShare}%`:"N/A"},{label:"Segments",value:a.segments?.join(", ")||"N/A"},{label:"Include Unregistered",value:a.includeUnregistered?"Yes":"No"},{label:"Target Languages",value:a.targetLanguages?.length?a.targetLanguages.join(", "):"All"},{label:"Target Platforms",value:a.targetPlatforms?.length?a.targetPlatforms.join(", "):"All"}];return e.jsx("div",{className:"space-y-4",children:e.jsxs("div",{className:"bg-admin_canvas rounded-lg p-4",children:[e.jsx(s,{variant:"admin_label",className:"mb-4",children:"Release Information"}),e.jsx("div",{className:"space-y-3 max-h-[400px] overflow-y-auto scrollbar-thin scrollbar-thumb-admin_neutral_2 scrollbar-track-admin_canvas",children:i.map((r,o)=>e.jsxs("div",{className:"flex items-start border-b border-admin_bordered pb-3 last:border-b-0 last:pb-0",children:[e.jsx("div",{className:"w-1/3",children:e.jsx(s,{variant:"admin_txt2_dim",children:r.label})}),e.jsx("div",{className:"w-2/3",children:e.jsx(s,{variant:"admin_txt2",className:"break-words",children:r.value})})]},o))})]})})},_t=q.memo(jt),wt=({isOpen:a,onClose:t,release:i,onReschedule:r})=>{const[o,n]=d.useState(""),[m,u]=d.useState(!1);d.useEffect(()=>{if(a&&i?.scheduledAt){const c=new Date(i.scheduledAt),l=c.getFullYear(),h=String(c.getMonth()+1).padStart(2,"0"),g=String(c.getDate()).padStart(2,"0"),j=String(c.getHours()).padStart(2,"0"),k=String(c.getMinutes()).padStart(2,"0"),w=`${l}-${h}-${g}T${j}:${k}`;n(w)}},[a,i]);const b=async()=>{if(!o){L({message:"Please select a date and time",className:"bg-admin_error text-white"});return}const c=new Date(o);if(c<=new Date){L({message:"Scheduled time must be in the future",className:"bg-admin_error text-white"});return}u(!0);try{const h=c.toISOString();await r(h),t()}catch(h){console.error("Failed to reschedule:",h),L({message:"Failed to reschedule release: "+h.message,className:"bg-admin_error text-white"})}finally{u(!1)}};return e.jsx(se,{isOpen:a,onClose:t,title:"Select when this release should be sent",variant:"admin_centered",className:"max-w-md",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(s,{variant:"admin_label",className:"mb-2",children:"Schedule Date & Time"}),e.jsx(oe,{type:"datetime-local",value:o,onChange:c=>n(c.target.value),disabled:m,variant:"admin",className:"w-full"})]}),e.jsxs("div",{className:"flex gap-3 justify-end pt-4",children:[e.jsx(B,{variant:"admin_secondary",onClick:t,disabled:m,children:"Cancel"}),e.jsx(B,{variant:"admin_primary",onClick:b,disabled:m,children:m?"Rescheduling...":"Reschedule"})]})]})})},At=({isOpen:a,onClose:t,releaseId:i,onReleaseUpdated:r})=>{const[o,n]=d.useState(null),[m,u]=d.useState(!0),[b,c]=d.useState(null),[l,h]=d.useState("statistics"),[g,j]=d.useState(null),[k,w]=d.useState(!1),[S,E]=d.useState(null),[N,T]=d.useState(0),[y,v]=d.useState(null),[A,p]=d.useState(new Date),[C,M]=d.useState(null),[x,f]=d.useState(0),[_,P]=d.useState(!1),O=d.useRef(o);d.useEffect(()=>{O.current=o},[o]),d.useEffect(()=>{a&&i&&U()},[a,i]);const U=async(I=!1)=>{try{I||(u(!0),c(null));const F=await $.getRelease({releaseId:i});if(!F||!F.release)throw new Error("Failed to load release details");n(F.release)}catch(F){console.error("Failed to load release:",F),I||c(F.message||"Failed to load release details")}finally{I||u(!1)}},D=d.useCallback(I=>{n(F=>{if(!F)return F;const V={};let H=!1;return I.emailsSent!==void 0&&I.emailsSent!==F.emailsSent&&(V.emailsSent=I.emailsSent,H=!0),I.status&&I.status!==F.status&&(V.status=I.status,H=!0),I.deliveryStats&&I.deliveryStats!==F.deliveryStats&&Object.keys(I.deliveryStats).some(W=>I.deliveryStats[W]!==F.deliveryStats?.[W])&&(V.deliveryStats=I.deliveryStats,H=!0),I.templateStats&&I.templateStats!==F.templateStats&&(V.templateStats=I.templateStats,H=!0),I.nextBatchInfo&&I.nextBatchInfo!==F.nextBatchInfo&&(V.nextBatchInfo=I.nextBatchInfo,H=!0),H?{...F,...V}:F})},[]);gt(i,o,D,a),d.useEffect(()=>{if(!a||!i)return;
32me.init();const I=(Z,W)=>{if(W.serverTime){const Y=new Date(W.serverTime).getTime(),ne=new Date().getTime();T(Y-ne)}W.releaseId?.toString()===i?.toString()&&n(Y=>Y&&{...Y,status:W.status||Y.status,emailsSent:W.emailsSent!==void 0?W.emailsSent:Y.emailsSent,estimatedMinutesLeft:W.estimatedMinutesLeft,nextBatchInfo:W.nextBatchInfo||Y.nextBatchInfo,deliveryStats:W.deliveryStats||Y.deliveryStats,templateStats:W.templateStats||Y.templateStats})},F=(Z,W)=>{W.releaseId?.toString()===i?.toString()&&U(!0)},V=(Z,W)=>{W.releaseId?.toString()===i?.toString()&&(t(),r&&r())},H=[K.subscribe("newsletter:release_status_updated",I),K.subscribe("newsletter:release_rate_limited",F),K.subscribe("newsletter:release_deleted",V)];return()=>{H.forEach(Z=>K.unsubscribe(Z))}},[a,i,t,r]),d.useEffect(()=>{if(!a||!o)return;const I=setInterval(()=>{p(new Date);const F=O.current;if(F?.scheduledAt&&F?.status==="scheduled"){const V=new Date(F.scheduledAt),H=new Date().getTime()+N,Z=V.getTime()-H;v(Z>0?Z:0)}if(F?.status==="running"&&F?.startedAt){const V=new Date(F.startedAt).getTime(),Z=new Date().getTime()+N-V,W=Math.floor(Z/1e3);f(W)}if(F?.status==="running"&&F?.nextBatchInfo?.nextBatchAt){const V=new Date(F.nextBatchInfo.nextBatchAt).getTime(),H=new Date().getTime(),Z=Math.max(0,Math.floor((V-H)/1e3));M(Z)}else M(null)},1e3);return()=>clearInterval(I)},[a,o?.status,o?.startedAt,o?.scheduledAt,N]);const R=async()=>{(await le.startRelease(i)).success&&(await U(!0),r&&r())},G=async()=>{(await le.pauseRelease(i)).success&&(await U(!0),r&&r())},z=async()=>{(await le.resumeRelease(i)).success&&(await U(!0),r&&r())},X=async()=>{(await le.stopRelease(i)).success&&(await U(!0),r&&r())},ue=async()=>{(await le.deleteRelease(i,o?.name)).success&&(r&&r(),t())},ze=()=>{P(!0)},Ze=async I=>{try{const F=await $.updateRelease(i,{scheduledAt:I});if(F.success)L({message:"Release rescheduled successfully",className:"bg-admin_success text-white"}),await U(!0),r&&r(),P(!1);else throw new Error(F.message||"Failed to reschedule release")}catch(F){throw F}},Ye=async I=>{j(I)},Je=I=>{E(I),w(!0)},qe=()=>{w(!1),U(!0)},Xe=[{value:"statistics",label:"Statistics"},{value:"templates",label:"Templates"},{value:"details",label:"Details"}];if(!a)return null;const Qe=()=>m||!o?null:e.jsx(Nt,{release:o,loading:m,onStart:R,onPause:G,onResume:z,onStop:X,onDelete:ue,onReschedule:ze}),ea=()=>{if(m||!o)return null;const I=V=>{if(!V||V<=0)return null;const H=Math.floor(V/1e3),Z=Math.floor(H/86400),W=Math.floor(H%86400/3600),Y=Math.floor(H%3600/60),ne=H%60;return Z>0?`${Z}d ${W}h ${Y}min ${ne}sec`:W>0?`${W}h ${Y}min ${ne}sec`:Y>0?`${Y}min ${ne}sec`:`${ne}sec`},F=o.status==="scheduled"&&y?I(y):null;return F?e.jsx("div",{className:"flex items-center justify-center py-3",children:e.jsxs(s,{variant:"admin_body1",className:"text-admin_text_secondary",children:["Release starts in ",F]})}):null};return e.jsxs(e.Fragment,{children:[e.jsx(se,{isOpen:a,onClose:t,title:o?.name||"Release Details",variant:"admin_centered",className:"max-w-4xl",showCloseButton:!0,headerContent:Qe(),footerContent:ea(),children:m?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-admin_primary mx-auto mb-4"}),e.jsx("p",{className:"text-admin_text_secondary",children:"Loading release details..."})]})}):b?e.jsx("div",{className:"text-center py-12",children:e.jsx("p",{className:"text-admin_error",children:b})}):o?e.jsxs("div",{children:[e.jsx(Ra,{tabs:Xe,value:l,onChange:h,variant:"admin"}),e.jsxs("div",{className:"mt-6",children:[l==="statistics"&&e.jsx(St,{release:o,timeRemaining:y,nextBatchCountdown:C,serverTimeOffset:N,elapsedSeconds:x}),l==="templates"&&e.jsx(vt,{release:o,onPreview:Ye,onEditVariables:Je}),l==="details"&&e.jsx(_t,{release:o})]})]}):e.jsx("div",{className:"text-center py-12",children:e.jsx("p",{className:"text-admin_text_secondary",children:"No release data available"})})}),g&&e.jsx(ye,{url:`/template/${g}/preview`,isOpen:!!g,onClose:()=>j(null)}),k&&S&&e.jsx(He,{isOpen:k,onClose:()=>w(!1),releaseId:i,template:S,onSave:qe}),e.jsx(wt,{isOpen:_,onClose:()=>P(!1),release:o,onReschedule:Ze})]})},Et=q.memo(()=>{q.useRef(Math.random().toString(36).substring(7));
32const a=We("role:newsletter"),[t,i]=d.useState(!1),[r,o]=d.useState([]),[n,m]=d.useState({page:1,itemsPerPage:25,totalItems:0,totalPages:0}),[u,b]=d.useState(!1),[c,l]=d.useState(!1),[h,g]=d.useState(null),j=async(x=1,f={})=>{try{i(!0);const _=await $.getReleases({page:x,itemsPerPage:n.itemsPerPage,filters:f});if(a&&a(_))return;_&&_.success?(o(Array.isArray(_.releases)?_.releases:[]),m(P=>({...P,page:_.pagination?.page||x,totalItems:_.pagination?.totalItems||0,totalPages:_.pagination?.totalPages||0}))):(console.error("Invalid API response:",_),o([]))}catch(_){console.error("Failed to load releases:",_),o([])}finally{i(!1)}};d.useEffect(()=>{if(j(),typeof window<"u"&&new URLSearchParams(window.location.search).get("openDialog")==="true"){b(!0);const f=new URL(window.location);f.searchParams.delete("openDialog"),window.history.replaceState({},"",f)}},[]);const[,k]=q.useReducer(x=>x+1,0),w=q.useCallback(x=>{o(f=>f.find(O=>O._id===x.releaseId)?f.map(O=>O._id!==x.releaseId?O:{...O,status:x.status,startedAt:x.startedAt||O.startedAt,resumedAt:x.resumedAt,updatedAt:x.updatedAt,completedAt:x.completedAt,emailsSent:x.emailsSent!==void 0?x.emailsSent:O.emailsSent,emailsFailed:x.emailsFailed!==void 0?x.emailsFailed:O.emailsFailed,progress:x.progress!==void 0?x.progress:O.progress,audienceSize:x.audienceSize!==void 0?x.audienceSize:O.audienceSize,_elapsedSeconds:x._elapsedSeconds!==void 0?x._elapsedSeconds:O._elapsedSeconds,_lastUpdated:Date.now()}):f)},[]),S=q.useCallback(x=>{o(f=>f.map(P=>P._id===x.releaseId?{...P,status:x.status,emailsSent:x.sent,emailsFailed:x.failed,progress:x.progress,_lastUpdated:Date.now()}:P))},[]),E=q.useCallback(x=>{o(f=>f.map(P=>P._id===x.releaseId?{...P,status:"completed",emailsSent:x.totalSent,emailsFailed:x.totalFailed,completedAt:new Date,_lastUpdated:Date.now()}:P))},[]),N=q.useCallback(x=>{o(f=>f.filter(_=>_._id!==x.releaseId))},[]);d.useEffect(()=>{me.init();const x=[K.subscribe("newsletter:release_status_updated",(f,_)=>w(_)),K.subscribe("newsletter:release_progress",(f,_)=>S(_)),K.subscribe("newsletter:release_completed",(f,_)=>E(_)),K.subscribe("newsletter:release_deleted",(f,_)=>N(_))];return()=>{x.forEach(f=>K.unsubscribe(f))}},[w,S,E,N]),d.useEffect(()=>{const x=r.filter(O=>O.status==="running");if(x.length===0)return;const f=me.socket;if(!f||!f.connected)return;const _=()=>{x.forEach(O=>{f.emit("newsletter:get_release_stats",{release_id:O._id},U=>{if(U?.success){const D=U.data||U;o(R=>R.map(G=>{if(G._id!==O._id)return G;const z=D.emailsSent!==void 0?D.emailsSent:G.emailsSent,X=D.audienceSize||G.audienceSize,ue=X>0?Math.min(100,Math.round(z/X*100)):0;return{...G,deliveryStats:D.deliveryStats||G.deliveryStats,templateStats:D.templateStats||G.templateStats,emailsSent:z,audienceSize:X,progress:ue,_lastUpdated:Date.now()}}))}})})};_();const P=setInterval(_,5e3);return()=>clearInterval(P)},[r.map(x=>`${x._id}:${x.status}`).join(",")]);const T=x=>{j(x)},y=x=>{const f={scheduled:"default",running:"info",completed:"success",paused:"warning",failed:"error",cancelled:"admin_error"};return e.jsx(Q,{variant:f[x]||"default",children:x})},v=()=>{b(!0)},A=x=>{j(n.page)},p=x=>{g(x._id),l(!0)},C=async(x,f)=>{if(await re({variant:"admin",title:"Delete Multiple Releases?",message:`Are you sure you want to delete ${x.length} release${x.length!==1?"s":""}? This action cannot be undone.`,confirmText:"Delete",cancelText:"Cancel",type:"danger"}))try{const P=x.map(R=>$.deleteRelease({releaseId:R})),O=await Promise.all(P),U=O.filter(R=>R.success).length,D=O.length-U;U>0&&L({message:`Successfully deleted ${U} release${U!==1?"s":""}`,className:"bg-success text-text_inv"}),D>0&&L({message:`Failed to delete ${D} release${D!==1?"s":""}`,className:"bg-error text-text_inv"}),j(n.page)}catch(P){console.error("Bulk delete error:",P),L({message:"Failed to delete releases",className:"bg-error text-text_inv"})}},M=[{id:"name",title:"Release Name",sortable:!0,headerClassName:"w-[30%]",render:(x,f)=>e.jsx("button",{className:"text-left hover:text-admin_primary hover:underline cursor-pointer transition-colors duration-200",onClick:()=>p(f),children:x})},{id:"status",title:"Status",headerClassName:"w-[100px]",width:"100px",render:x=>y(x)},{id:"emailsSent",title:"Sent",headerClassName:"w-[100px]",render:(x,f)=>
32{const _=x||0,P=f.audienceSize||0;if(P===0)return e.jsx("div",{className:"w-12 h-12 flex items-center justify-center",children:e.jsx("span",{className:"text-xs font-semibold text-admin_text",children:"0%"})});const O=Math.min(100,Math.round(_/P*100)),U=f.status==="running"&&f.progress!==void 0?Math.min(100,f.progress):O;return e.jsxs("div",{className:"w-12 h-12 flex items-center justify-center relative",children:[e.jsx("div",{className:`absolute inset-0 transition-opacity duration-300 ${f.status==="running"?"opacity-100":"opacity-0"}`,children:e.jsx(pa,{variant:"loading",size:"xl"})}),e.jsxs("span",{className:"relative z-10 text-xs font-semibold text-admin_text",children:[U,"%"]})]})}},{id:"audienceSize",title:"Audience",sortable:!0,headerClassName:"w-[100px]",render:x=>(x||0).toLocaleString()},{id:"scheduledAtFormatted",title:"Scheduled Time",sortable:!0,headerClassName:"w-[200px]"},{id:"createdAtFormatted",title:"Created",sortable:!0,headerClassName:"w-[150px]"}];return e.jsxs("div",{className:"p-6",children:[e.jsx(pe,{permission:"role:newsletter"}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsx(s,{component:"h1",variant:"admin_h3",children:"Newsletter Releases"}),e.jsxs(B,{variant:"admin_primary",onClick:v,children:[e.jsx(Ae,{className:"w-5 h-5 mr-1"}),e.jsx("span",{children:"Create Release"})]})]}),e.jsx(Ge,{variant:"admin_browser",data:r||[],localUserPreferencesKey:"admin.newsletter.releases",renders:M,loading:t,enableSelection:!0,itemIdField:"_id",bulkActions:[{label:"Delete Selected",variant:"admin_error",onClick:C}],pagination:{...n,onPageChange:T},searchField:"name description",sort:{createdAt:-1},styleOverrides:{table:"w-full table-fixed",container:"relative w-full flex flex-col h-[85vh] justify-start bg-admin_paper rounded-3xl px-6 pt-12 pb-6",searchInput:"absolute top-4 right-4 text-text bg-transparent outline-none flex-1 w-[350px] h-[30px] px-2 py-1"}},`datatable-${r.length}-${r.map(x=>`${x._id}-${x.status}-${x._lastUpdated||0}`).join(",").slice(0,50)}`)]}),e.jsx(ht,{isOpen:u,onClose:()=>b(!1),onSuccess:A}),e.jsx(At,{isOpen:c,onClose:()=>{l(!1),g(null)},releaseId:h,onReleaseUpdated:()=>j(n.page)})]})}),Ct=()=>{const[a,t]=q.useState(!1),[i,r]=q.useState(!1),o=m=>({...m,category:"newsletter"}),n=async m=>{try{const u=m?.content?.id;if(!u)return{canDelete:!0};const b=await $.checkTemplateUsage(u);return!b||!b.success?{canDelete:!1,message:"Failed to check template usage",releases:[]}:{canDelete:b.canDelete,message:b.message,releases:b.releases||[]}}catch(u){return console.error("Error checking template usage:",u),{canDelete:!1,message:"Failed to check template usage",releases:[]}}};return e.jsx("div",{className:"p-6",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsx(s,{component:"h1",variant:"admin_h3",children:"Newsletter Templates"}),e.jsxs("div",{className:"flex items-center space-x-3",children:[e.jsx(B,{variant:"admin_secondary",onClick:()=>r(!0),children:"Restore"}),e.jsxs(B,{variant:"admin_primary",onClick:()=>t(!0),children:[e.jsx(Ae,{className:"w-5 h-5 mr-1"}),"Add Template"]})]})]}),e.jsx(Ma,{contentType:"MailTemplate",contentTitle:"",addButtonText:"",allowTypeSelection:!1,allowTypeBrowsing:!1,showPreview:!0,searchFields:"content.description content.id content.name",additionalFilters:{"content.category":"newsletter"},defaultFieldValues:{category:"newsletter"},onPreSaveFormatter:o,onPreDeleteCheck:n,externalAddTrigger:a,onAddDialogClose:()=>t(!1),externalRestoreTrigger:i,onRestoreDialogClose:()=>r(!1),showRestoreButton:!1,styleOverrides:{wrapper:"px-0",container:"relative w-full flex flex-col h-[85vh] justify-start bg-admin_paper rounded-3xl px-6 pt-6 pb-6",searchInput:"absolute top-4 right-4 text-admin_text bg-transparent outline-none flex-1 w-[350px] h-[30px] px-2 py-1"},additionalColumns:[{id:"name",title:"Name",headerClassName:"w-[28%] xl:w-[30%]",render:(m,u)=>e.jsx("span",{className:"text-admin_text font-medium truncate block",children:u?.content?.name||"Unnamed"})},{id:"description",title:"Description",headerClassName:"w-[30%]",render:(m,u)=>e.jsx("div",{className:"truncate max-w-full",children:e.jsx("span",{className:"text-admin_text_secondary text-sm truncate block",children:u?.content?.description||"No description"})})}
32,{id:"id",title:"Template ID",headerClassName:"w-[16%]",render:(m,u)=>e.jsx("span",{className:"text-admin_text font-mono text-xs truncate block",children:u?.content?.id||"No ID"})}]})]})})},kt=()=>{const[a,t]=d.useState({}),[i,r]=d.useState(!0),[o,n]=d.useState({}),[m,u]=d.useState(!1),b=async()=>{try{const h={MAX_BATCH_SIZE:5e3,SPARKPOST_WEBHOOK_USERNAME:"",SPARKPOST_WEBHOOK_PASSWORD:""},g=["Newsletter.MAX_BATCH_SIZE","Newsletter.SPARKPOST_WEBHOOK_USERNAME","Newsletter.SPARKPOST_WEBHOOK_PASSWORD"];for(const j of g)try{const k=await fa({match:{address:j}}).catch(()=>null);if(k?.data?.[0]){const w=j.replace("Newsletter.","");let S=k.data[0].value;console.log(`Loading ${w}:`,S,typeof S),(S==="none"||S===null||S===void 0)&&(w==="MAX_BATCH_SIZE"&&(S=5e3),w==="SPARKPOST_WEBHOOK_USERNAME"&&(S=""),w==="SPARKPOST_WEBHOOK_PASSWORD"&&(S="")),w==="MAX_BATCH_SIZE"&&(S=Number(S)),(w==="SPARKPOST_WEBHOOK_USERNAME"||w==="SPARKPOST_WEBHOOK_PASSWORD")&&(S=String(S||"")),h[w]=S}}catch(k){console.warn(`Failed to load ${j}:`,k)}return h}catch(h){return console.error("Failed to load current settings:",h),{MAX_BATCH_SIZE:5e3,SPARKPOST_WEBHOOK_USERNAME:"",SPARKPOST_WEBHOOK_PASSWORD:""}}},c=async h=>{try{if(console.log("handleSave called with values:",h),console.log("originalValues:",o),console.log("isInitialized:",m),!m)return console.log("Skipping save: not initialized yet"),!1;const g=[];if(Object.entries(h).forEach(([k,w])=>{if(w==null){console.log(`Skipping ${k}: value is ${w}`);return}if(k==="MAX_BATCH_SIZE"&&(typeof w!="number"||isNaN(w))){console.log(`Skipping ${k}: invalid number value`,w);return}const S=o[k],E=w!==S;if(console.log(`Field ${k}: current=${w} (${typeof w}), original=${S} (${typeof S}), changed=${E}`),E){const N=`Newsletter.${k}`,T=l(k);console.log(`Saving ${N} with value:`,w,typeof w);const y=xa(N).then(v=>{const A={address:N,value:w,description:T};return v&&v.result!==!1?(console.log(`Updating param ${N}:`,A),ga(A)):(console.log(`Creating param ${N}:`,A),Ce(A))}).catch(v=>(console.log(`GetParam failed for ${N}, creating:`,{address:N,value:w,description:T}),Ce({address:N,value:w,description:T})));g.push(y)}}),g.length===0)return console.log("No changes detected, skipping save"),!1;console.log(`Saving ${g.length} parameter(s)...`);const j=await Promise.all(g);return console.log("Save results:",j),n({...h}),t({...h}),L({message:`Newsletter settings saved successfully (${g.length} changes)`,className:"bg-admin_success text-admin_text_inv"}),console.log("Save completed successfully"),!0}catch(g){return console.error("Failed to save newsletter settings:",g),L({message:"Failed to save newsletter settings",className:"bg-admin_error text-admin_text_inv"}),!1}},l=h=>({MAX_BATCH_SIZE:"Maximum recipients per SparkPost transmission. SparkPost allows up to 10,000 per batch. Lower values provide more frequent progress updates but slower overall sending.",SPARKPOST_WEBHOOK_USERNAME:"Basic auth username for SparkPost webhook authentication. Leave empty to disable authentication (development only).",SPARKPOST_WEBHOOK_PASSWORD:"Basic auth password for SparkPost webhook authentication. Leave empty to disable authentication (development only)."})[h]||"Newsletter configuration setting";return d.useEffect(()=>{(async()=>{r(!0),u(!1);try{const g=await b();t(g),n(g),setTimeout(()=>{u(!0),console.log("Settings initialized, auto-save now enabled")},1e3)}catch(g){console.error("Failed to initialize newsletter settings:",g),L({message:"Failed to load newsletter settings",className:"bg-admin_error text-admin_text_inv"})}finally{r(!1)}})()},[]),i?e.jsx("div",{className:"p-6",children:e.jsx(s,{variant:"admin_body1",children:"Loading newsletter settings..."})}):e.jsxs("div",{className:"p-6",children:[e.jsx(pe,{permission:"role:newsletter"}),e.jsx("div",{className:"max-w-6xl mx-auto",children:e.jsx("div",{className:"bg-paper rounded-lg border border-admin_bordered",children:e.jsx(wa,{title:"Newsletter Configuration",contentType:va,dataItem:{content:a},fieldValues:a,onFieldChange:(h,g)=>{console.log("Field changed:",h,"=",g,typeof g)},onSave:c,onError:h=>{L({message:Object.values(h).find(g=>g)||"Validation error",className:"bg-admin_error text-admin_text_inv"})},variant:"default",showCopyPaste:!1,showExport:!1,autoSave:!0,autoSaveDelay:500})})})]})},Rt=()=>{const[a,t]=d.useState(!1),[i,r]=d.useState([]),o=(c,l,h=null)=>{const g=new Date().toLocaleTimeString(),j=`${Date.now()}-${Math.random().toString(36).substr(2,9)}`;r(k=>[{id:j,type:c,message:l,details:h,timestamp:g},...k.slice(0,9)])},n=async()=>{try{t(!0),o("info","Triggering newsletter scheduler...");const c=await $.triggerScheduler();c.success?o("success","Newsletter scheduler completed successfully",c.message):o("error","Scheduler failed",c.error)}catch(c){o("error","Failed to trigger scheduler",c.message)}finally{t(!1)}},m=async()=>{try{t(!0),o("info","Resetting running releases...");const c=await $.getReleases({match:{status:{$in:["running","paused"]}}});if(c.success&&c.releases?.length>0){let l=0;for(const h of c.releases)try{const g=await $.resetRelease(h._id);g.success?(l++,o("success",`Reset release: ${h.name}`)):o("warning",`Failed to reset: ${h.name}`,g.error)}catch(g){o("error",`Error resetting: ${h.name}`,g.message)}o("success",`Reset completed: ${l} releases reset`)}else o("info","No running or paused releases found to reset")}catch(c){o("error","Failed to reset releases",c.message)}finally{t(!1)}},u=c=>{switch(c){case"success":return"success";case"error":return"error";
32case"warning":return"warning";default:return"info"}},b=c=>{switch(c){case"success":return e.jsx(Na,{className:"w-4 h-4"});case"error":return e.jsx(Se,{className:"w-4 h-4"});case"warning":return e.jsx(Se,{className:"w-4 h-4"});default:return e.jsx(ke,{className:"w-4 h-4"})}};return e.jsxs("div",{className:"p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx(s,{variant:"admin_h3",className:"mb-2",children:"Newsletter System Diagnostics"}),e.jsx(s,{variant:"admin_body1",className:"text-admin_text_secondary",children:"Manual controls for testing and debugging newsletter releases"})]}),e.jsxs("div",{className:"bg-admin_canvas p-6 rounded-lg",children:[e.jsx(s,{variant:"admin_h4",className:"mb-4",children:"System Controls"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(s,{variant:"admin_txt1",className:"font-medium",children:"Process Running Releases"}),e.jsx(s,{variant:"admin_txt2",className:"text-admin_text_secondary mb-3",children:"Manually trigger the newsletter scheduler to process any running releases and send email batches."}),e.jsxs(B,{variant:"admin_primary",onClick:n,disabled:a,className:"w-full",children:[e.jsx(je,{className:"w-4 h-4 mr-2"}),"Trigger Scheduler"]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(s,{variant:"admin_txt1",className:"font-medium",children:"Reset Running Releases"}),e.jsx(s,{variant:"admin_txt2",className:"text-admin_text_secondary mb-3",children:"Reset all running and paused releases back to scheduled status for testing."}),e.jsxs(B,{variant:"admin_secondary",onClick:m,disabled:a,className:"w-full",children:[e.jsx(Be,{className:"w-4 h-4 mr-2"}),"Reset All Running"]})]})]})]}),e.jsxs("div",{className:"bg-admin_canvas p-6 rounded-lg",children:[e.jsx(s,{variant:"admin_h4",className:"mb-4",children:"Operation Log"}),i.length===0?e.jsxs("div",{className:"text-center py-8",children:[e.jsx(ke,{className:"w-12 h-12 text-admin_text_secondary mx-auto mb-4"}),e.jsx(s,{variant:"admin_body1",className:"text-admin_text_secondary",children:"No operations performed yet. Use the controls above to test the newsletter system."})]}):e.jsx("div",{className:"space-y-3 max-h-96 overflow-y-auto",children:i.map(c=>e.jsxs("div",{className:"flex items-start space-x-3 p-3 bg-admin_background rounded border",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx(Q,{variant:u(c.type),className:"flex items-center space-x-1",children:b(c.type)})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(s,{variant:"admin_txt1",className:"font-medium",children:c.message}),e.jsx(s,{variant:"admin_txt2",className:"text-admin_text_secondary text-xs",children:c.timestamp})]}),c.details&&e.jsx(s,{variant:"admin_txt2",className:"text-admin_text_secondary mt-1",children:c.details})]})]},c.id))})]}),e.jsxs("div",{className:"bg-blue-50 border border-blue-200 p-4 rounded-lg",children:[e.jsx(s,{variant:"admin_txt1",className:"font-medium text-blue-800 mb-2",children:"Testing Instructions"}),e.jsxs("div",{className:"text-blue-700 space-y-1",children:[e.jsx(s,{variant:"admin_txt2",children:"1. Start a newsletter release from the Releases page"}),e.jsx(s,{variant:"admin_txt2",children:'2. Use "Trigger Scheduler" to manually process email batches'}),e.jsx(s,{variant:"admin_txt2",children:"3. Check the Activity page to see sent mock emails"}),e.jsx(s,{variant:"admin_txt2",children:'4. Use "Reset All Running" to reset releases for repeated testing'})]})]})]})},js=()=>e.jsx(ba,{menuName:"AdminNewsletterMenu",tabs:{overview:Ka,subscribers:tt,releases:Et,templates:Ct,settings:kt,diagnostics:Rt}});export{js as default};
33//# sourceMappingURL=chunk-uP5BzKDA.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.