1import{l as y,d as re,T as le,c as F,w as D,H as ie,D as E,a as h,b as r,e as l,g as a,u as t,j as M,h as o,t as c,i as _,f,o as m,k as H,F as W,r as z}from"./app-D7w3B4aJ.js";import{c as oe,s as ne}from"./timepieceShiftSelect-BeO8THLs.js";import{_ as de}from"./AdminLayout.vue_vue_type_script_setup_true_lang-CZLWBtiM.js";import{_ as C}from"./index-CevIKuGi.js";import{_ as I}from"./Input.vue_vue_type_script_setup_true_lang-DpZAWJzy.js";import{_ as b}from"./Label.vue_vue_type_script_setup_true_lang-BFMSrjFy.js";import{_ as ue}from"./Textarea.vue_vue_type_script_setup_true_lang-aK88j_E8.js";import{_ as me}from"./index-B08n5-as.js";import{_ as _e}from"./Checkbox.vue_vue_type_script_setup_true_lang-C1LP1Huo.js";import{_ as ce,a as fe}from"./CardContent.vue_vue_type_script_setup_true_lang-4JbJtrQQ.js";import{_ as pe,a as ve}from"./CardTitle.vue_vue_type_script_setup_true_lang-Cb0xAGrz.js";import{_ as be}from"./CardDescription.vue_vue_type_script_setup_true_lang-Bveub0ve.js";import{_ as ye,a as ge,b as xe,c as Te,d as Y}from"./SelectItem.vue_vue_type_script_setup_true_lang-CEKu5SYz.js";import{_ as we,a as Se}from"./index-8RotOFbN.js";import{_ as ke}from"./AlertTitle.vue_vue_type_script_setup_true_lang-DwLadZpj.js";import{_ as he,a as N}from"./RadioGroupItem.vue_vue_type_script_setup_true_lang-Bx80iiBH.js";import{_ as Ae,a as q}from"./TabsContent.vue_vue_type_script_setup_true_lang-cO1MMl5w.js";import{_ as Ve,a as K}from"./TabsList.vue_vue_type_script_setup_true_lang-WnoIO140.js";import{M as U}from"./mail-DfvKipXN.js";import{H as Ee}from"./hash-BYPxEwJs.js";import{U as Oe}from"./users-DpkGOGj9.js";import{c as $e}from"./createLucideIcon-B668pyko.js";import{L as Q}from"./loader-2-0flKRcvm.js";import{A as je}from"./alert-circle-QKREAL4I.js";import{S as De}from"./send-yROl0b0j.js";import"./index-DjnFMCfw.js";import"./DropdownMenuContent.vue_vue_type_script_setup_true_lang-Ri4XGI3F.js";import"./x-DKm8XY3A.js";import"./message-square-D7mTy92E.js";import"./index-DNG2I9w-.js";import"./index-CP3QblFn.js";import"./check-D8hauryK.js";/** 2 * @license lucide-vue-next v0.311.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const Me=$e("EyeIcon",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),Ce=1,Ie=1e6,x={ADD_TOAST:"ADD_TOAST",UPDATE_TOAST:"UPDATE_TOAST",DISMISS_TOAST:"DISMISS_TOAST",REMOVE_TOAST:"REMOVE_TOAST"};let B=0;function Ne(){return B=(B+1)%Number.MAX_VALUE,B.toString()}const P=new Map;function X(d){if(P.has(d))return;const u=setTimeout(()=>{P.delete(d),O({type:x.REMOVE_TOAST,toastId:d})},Ie);P.set(d,u)}const p=y({toasts:[]});function O(d){switch(d.type){case x.ADD_TOAST:p.value.toasts=[d.toast,...p.value.toasts].slice(0,Ce);break;case x.UPDATE_TOAST:p.value.toasts=p.value.toasts.map(u=>u.id===d.toast.id?{...u,...d.toast}:u);break;case x.DISMISS_TOAST:{const{toastId:u}=d;u?X(u):p.value.toasts.forEach(s=>{X(s.id)}),p.value.toasts=p.value.toasts.map(s=>s.id===u||u===void 0?{...s,open:!1}:s);break}case x.REMOVE_TOAST:d.toastId===void 0?p.value.toasts=[]:p.value.toasts=p.value.toasts.filter(u=>u.id!==d.toastId);break}}function Z(d){const u=Ne(),s=w=>O({type:x.UPDATE_TOAST,toast:{...w,id:u}}),T=()=>O({type:x.DISMISS_TOAST,toastId:u});return O({type:x.ADD_TOAST,toast:{...d,id:u,open:!0,onOpenChange:w=>{w||T()}}}),{id:u,dismiss:T,update:s}}const Ue={class:"container mx-auto max-w-3xl"},Be={class:"flex-1 space-y-6 pt-6"},Pe={class:"flex items-center gap-2 text-sm text-muted-foreground"},Le={class:"space-y-1"},Re={class:"text-muted-foreground"},Fe={key:0},He={key:0,class:"space-y-2"},We={key:1,class:"space-y-4"},ze={class:"flex items-center gap-2"},Ye={class:"flex items-center gap-2"},qe={class:"flex items-center gap-2"},Ke={class:"flex items-center gap-2"},Qe={key:0,class:"ml-6 grid grid-cols-2 gap-4"},Xe={class:"space-y-1"},Ze={key:0,class:"text-sm text-destructive"},Ge={class:"space-y-1"},Je={key:0,class:"text-sm text-destructive"},et={key:1,class:"ml-6 space-y-3"},tt={class:"max-h-48 overflow-y-auto border rounded-md p-3 grid grid-cols-2 gap-2 sm:grid-cols-3"},st={key:0,class:"text-sm text-muted-foreground"},at={key:1,class:"text-sm text-destructive"},rt={class:"flex items-center gap-2 p-4 bg-muted rounded-lg"},lt={key:0,class:"text-sm text-muted-foreground"},it={key:1,class:"text-sm"},ot={class:"space-y-2"},nt={key:0,class:"text-sm text-destructive"},dt={class:"space-y-2"},ut={class:"overflow-hidden rounded-lg border bg-muted/30"},mt={class:"border-b bg-background px-4 py-3 text-sm"},_t={key:0,class:"flex min-h-80 items-center justify-center text-muted-foreground"},ct={key:1,class:"flex min-h-80 items-center justify-center p-6 text-destructive"},ft=["srcdoc"],pt={key:0,class:"text-sm text-destructive"},vt={key:3,class:"text-sm text-destructive"},bt={class:"flex justify-end gap-4 pt-4 border-t"},Xt=re({__name:"Create",props:{allocation:{},deliveryDates:{},serialNumbers:{},recipientCount:{},authorEmail:{}},setup(d){const u=d,s=le({subject:"",body:"",estimated_delivery_date:"all",serial_number_filter_type:"all",serial_number_range_from:null,serial_number_range_to:null,serial_number_individual:[]}),T=y(u.recipientCount),w=y(!1),A=y("write"),L=y(""),$=y(!1),V=y(""),S=y(!1);let k=null;const G=F(()=>u.serialNumbers.length>0),R=F(()=>u.serialNumbers.map(n=>n.value)),j=y(null);D(()=>
6s.serial_number_filter_type,()=>{j.value=null}),D(()=>[s.estimated_delivery_date,s.serial_number_filter_type,s.serial_number_range_from,s.serial_number_range_to,s.serial_number_individual],async()=>{await J()},{deep:!0}),D(()=>[A.value,s.subject,s.body],()=>{A.value==="preview"&&(k&&clearTimeout(k),k=setTimeout(ee,300))}),ie(()=>{k&&clearTimeout(k)});async function J(){w.value=!0;try{const n={estimated_delivery_date:s.estimated_delivery_date==="all"?null:s.estimated_delivery_date,serial_number_filter_type:s.serial_number_filter_type};s.serial_number_filter_type==="range"?(n.serial_number_range_from=s.serial_number_range_from,n.serial_number_range_to=s.serial_number_range_to):s.serial_number_filter_type==="individual"&&(n.serial_number_individual=s.serial_number_individual);const e=await E.post(route("admin.broadcasts.preview-count",{allocation:u.allocation.id}),n);T.value=e.data.count}catch{}finally{w.value=!1}}async function ee(){$.value=!0,V.value="";try{const n=await E.post(route("admin.broadcasts.preview",{allocation:u.allocation.id}),{subject:s.subject||null,body:s.body||null});L.value=n.data.html}catch{V.value="The email preview could not be loaded."}finally{$.value=!1}}async function te(){var n,e,i;S.value=!0,s.clearErrors("subject","body");try{const v=await E.post(route("admin.broadcasts.send-test",{allocation:u.allocation.id}),{subject:s.subject,body:s.body});Z({title:"Test email sent",description:v.data.message})}catch(v){if(E.isAxiosError(v)&&((n=v.response)==null?void 0:n.status)===422){const g=v.response.data.errors;(e=g.subject)!=null&&e[0]&&s.setError("subject",g.subject[0]),(i=g.body)!=null&&i[0]&&s.setError("body",g.body[0])}else Z({title:"Test email failed",description:"The test email could not be sent. Please try again.",variant:"destructive"})}finally{S.value=!1}}function se(n,e,i){i.preventDefault(),i.stopPropagation();const{nextSelected:v,lastAnchorIndex:g}=oe(R.value,n,e,j.value,i.shiftKey,new Set(s.serial_number_individual));s.serial_number_individual=ne(R.value,v),j.value=g}function ae(){s.transform(n=>{const e={subject:n.subject,body:n.body,estimated_delivery_date:n.estimated_delivery_date==="all"?null:n.estimated_delivery_date,serial_number_filter_type:n.serial_number_filter_type};return n.serial_number_filter_type==="range"?(e.serial_number_range_from=n.serial_number_range_from,e.serial_number_range_to=n.serial_number_range_to):n.serial_number_filter_type==="individual"&&(e.serial_number_individual=n.seri
6al_number_individual),e}).post(route("admin.broadcasts.store",{allocation:u.allocation.id}))}return(n,e)=>(m(),h(de,null,{default:r(()=>[l("div",Ue,[l("div",Be,[l("div",Pe,[a(t(M),{href:n.route("admin.broadcasts.index"),class:"hover:text-foreground"},{default:r(()=>[...e[7]||(e[7]=[o("Broadcasts",-1)])]),_:1},8,["href"]),e[8]||(e[8]=l("span",null,"/",-1)),a(t(M),{href:n.route("admin.broadcasts.show",{allocation:d.allocation.id}),class:"hover:text-foreground"},{default:r(()=>[o(c(d.allocation.name),1)]),_:1},8,["href"]),e[9]||(e[9]=l("span",null,"/",-1)),e[10]||(e[10]=l("span",{class:"text-foreground"},"New Broadcast",-1))]),l("div",Le,[e[12]||(e[12]=l("h2",{class:"text-3xl font-bold tracking-tight"},"New Broadcast",-1)),l("p",Re,[e[11]||(e[11]=o(" Send a status update to customers in ",-1)),l("strong",null,c(d.allocation.name),1),d.allocation.product?(m(),_("span",Fe," ("+c(d.allocation.product.name)+")",1)):f("",!0)])]),a(t(ce),null,{default:r(()=>[a(t(pe),null,{default:r(()=>[a(t(ve),{class:"flex items-center gap-2"},{default:r(()=>[a(t(U),{class:"h-5 w-5"}),e[13]||(e[13]=o(" Compose Broadcast ",-1))]),_:1}),a(t(be),null,{default:r(()=>[...e[14]||(e[14]=[o(" Optionally narrow recipients by delivery date or serial number ",-1)])]),_:1})]),_:1}),a(t(fe),null,{default:r(()=>[l("form",{onSubmit:H(ae,["prevent"]),class:"space-y-6"},[d.deliveryDates.length>0?(m(),_("div",He,[a(t(b),{for:"estimated_delivery_date"},{default:r(()=>[...e[15]||(e[15]=[o("Delivery Date (Optional)",-1)])]),_:1}),a(t(ye),{modelValue:t(s).estimated_delivery_date,"onUpdate:modelValue":e[0]||(e[0]=i=>t(s).estimated_delivery_date=i)},{default:r(()=>[a(t(ge),null,{default:r(()=>[a(t(xe),{placeholder:"All delivery dates"})]),_:1}),a(t(Te),null,{default:r(()=>[a(t(Y),{value:"all"},{default:r(()=>[...e[16]||(e[16]=[o("All delivery dates",-1)])]),_:1}),(m(!0),_(W,null,z(d.deliveryDates,i=>(m(),h(t(Y),{key:i,value:i},{default:r(()=>[o(c(i),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"]),e[17]||(e[17]=l("p",{class:"text-sm text-muted-foreground"}," Filter to customers whose timepiece has a specific estimated delivery date ",-1))])):f("",!0),G.value?(m(),_("div",We,[l("div",ze,[a(t(Ee),{class:"h-4 w-4 text-muted-foreground"}),a(t(b),null,{default:r(()=>[...e[18]||(e[18]=[o("Serial Number Filter (Optional)",-1)])]),_:1})]),a(t(he),{modelValue:t(s).serial_number_filter_type,"onUpdate:modelValue":e[1]||(e[1]=i=>t(s).serial_number_filter_type=i),class:"gap-3"},{default:r(()=>[l("div",Ye,[a(t(N),{id:"sn-all",value:"all"}),a(t(b),{for:"sn-all",class:"font-normal cursor-pointer"},{default:r(()=>[...e[19]||(e[19]=[o("All serial numbers",-1)])]),_:1})]),l("div",qe,[a(t(N),{id:"sn-range",value:"range"}),a(t(b),{for:"sn-range",class:"font-normal cursor-pointer"},{default:r(()=>[...e[20]||(e[20]=[o("Serial number range",-1)])]),_:1})]),l("div",Ke,[a(t(N),{id:"sn-individual",value:"individual"}),a(t(b),{for:"sn-individual",class:"font-normal cursor-pointer"},{default:r(()=>[...e[21]||(e[21]=[o("Pick individual serial numbers",-1)])]),_:1})])]),_:1},8,["modelValue"]),t(s).serial_number_filter_type==="range"?(m(),_("div",Qe,[l("div",Xe,[a(t(b),{for:"sn-from"},{default:r(()=>[...e[22]||(e[22]=[o("From (serial #)",-1)])]),_:1}),a(t(I),{id:"sn-from",type:"number",min:"1",modelValue:t(s).serial_number_range_from,"onUpdate:modelValue":e[2]||(e[2]=i=>t(s).serial_number_range_from=i),modelModifiers:{number:!0},placeholder:"e.g. 1"},null,8,["modelValue"]),t(s).errors.serial_number_range_from?(m(),_("p",Ze,c(t(s).errors.serial_number_range_from),1)):f("",!0)]),l("div",Ge,[a(t(b),{for:"sn-to"},{default:r(()=>[...e[23]||(e[23]=[o("To (serial #)",-1)])]),_:1}),a(t(I),{id:"sn-to",type:"number",min:"1",modelValue:t(s).serial_number_range_to,"onUpdate:modelValue":e[3]||(e[3]=i=>t(s).serial_number_range_to=i),modelModifiers:{number:!0},placeholder:"e.g. 50"},null,8,["modelValue"]),t(s).errors.serial_number_range_to?(m(),_("p",Je,c(t(s).errors.serial_number_range_to),1)):f("",!0)]),e[24]||(e[24]=l("p",{class:"col-span-2 text-sm text-muted-foreground"}," Sends to customers whose assigned timepiece serial number falls within this range (inclusive). ",-1))])):f("",!0),t(s).serial_number_filter_type==="individual"?(m(),_("div",et,[e[25]||(e[25]=l("p",{class:"text-xs text-muted-foreground"},[o("Hold "),l("kbd",{class:"rounded border px-1 font-mono text-xs"},"Shift"),o(" and click to select a range.")],-1)),l("div",tt,[(m(!0),_(W,null,z(d.serialNumbers,(i,v)=>(m(),_("label",{key:i.value,class:"flex items-center gap-2 cursor-pointer select-none text-sm py-1 px-2 rounded hover:bg-muted"},[a(t(_e),{id:`sn-${i.value}`,checked:t(s).serial_number_individual.includes(i.value),onClick:H(g=>se(i.value,v,g),["prevent","stop"])},null,8,["id","checked","onClick"]),o(" "+c(i.label),1)]))),128))]),t(s).serial_number_individual.length>0?(m(),_("p",st,c(t(s).serial_number_individual.length)+" serial number(s) selected ",1)):f("",!0),t(s).errors.serial_number_individual?(m(),_("p",at,c(t(s).errors.serial_number_individual),1)):f("",!0)])):f("",!0)])):f("",!0),l("div",rt,[a(t(Oe),{class:"h-5 w-5 text-muted-foreground"}),w.value?(m(),_("span",lt,"Counting recipients...")):(m(),_("span",it,[a(t(me),{variant:"secondary",class:"mr-2"},{default:r(()=>[o(c(T.value),1)]),_:1}),e[26]||(e[26]=o(" customers will receive this broadcast ",-1))]))]),l("div",ot,[a(t(b),{for:"subject"},{default:r(()=>[...e[27]||(e[27]=[o("Subject ",-1),l("span",{class:"text-destructive"},"*",-1)])]),_:1}),a(t(I),{id:"subject",modelValue:t(s).subject,"onUpdate:modelValue":e[4]||(e[4]=i=>t(s).subject=i),placeholder:"e.g., Production Update: Your Watch Status"},null,8,["modelValue"]),t(s).errors.subject?(m(),_("p",nt,c(t(s).errors.subject),1)):f("",!0)]),l("div",dt,[a(t(b),null,{default:r(()=>[...e[28]||(e[28]=[o("Message Body ",-1),l("span",{class:"text-destructive"},"*",-1)])]),_:1}),a(t(Ae),{modelValue:A.value,"onUpdate:modelValue":e[6]||(e[6]=i=>A.value=i),"default-value":"write",class:"space-y-3"},{default:r(()=>[a(t(Ve),{class:"grid w-full grid-cols-2"},{default:r(()=>[a(t(K),{value:"write"},{default:r(()=>[a(t(U),{class:"mr-2 h-4 w-4"}),e[29]||(e[29]=o(" Write ",-1))]),_:1}),a(t(K),{value:"preview"},{default:r(()=>[a(t(Me),{class:"mr-2 h-4 w-4"}),e[30]||(e[30]=o(" Preview ",-1))]),_:1})]),_:1}),a(t(q),{value:"write",class:"space-y-2"},{default:r(()=>[a(t(ue),{id:"body",modelValue:t(s).body,"onUpdate:modelValue":e[5]||(e[5]=i=>t(s).body=i),placeholder:`Write your message here. Markdown is supported: 7 8**Bold text**, *italic text*, [links](https://example.com) 9 10- Bullet points 11- Another point`,rows:"12",class:"font-mono text-sm"},null,8,["modelValue"]),e[31]||(e[31]=l("p",{class:"text-sm text-muted-foreground"}," Supports Markdown, including headings, emphasis, links, and lists. ",-1))]),_:1}),a(t(q),{value:"preview"},{default:r(()=>[l("div",ut,[l("div",mt,[e[32]||(e[32]=l("span",{class:"font-medium"},"Subject:",-1)),o(" "+c(t(s).subject||"(No subject)"),1)]),$.value?(m(),_("div",_t,[a(t(Q),{class:"mr-2 h-5 w-5 animate-spin"}),e[33]||(e[33]=o(" Rendering email... ",-1))])):V.value?(m(),_("div",ct,c(V.value),1)):(m(),_("iframe",{key:2,srcdoc:L.value,sandbox:"",title:"Broadcast email preview",class:"h-[600px] w-full bg-white"},null,8,ft))])]),_:1})]),_:1},8,["modelValue"]),t(s).errors.body?(m(),_("p",pt,c(t(s).errors.body),1)):f("",!0)]),T.value===0?(m(),h(t(we),{key:2,variant:"destructive"},{default:r(()=>[a(t(je),{class:"h-4 w-4"}),a(t(ke),null,{default:r(()=>[...e[34]||(e[34]=[o("No recipients found",-1)])]),_:1}),a(t(Se),null,{default:r(()=>[...e[35]||(e[35]=[o(" There are no customers with accepted orders matching your criteria. ",-1)])]),_:1})]),_:1})):f("",!0),t(s).errors.recipients?(m(),_("p",vt,c(t(s).errors.recipients),1)):f("",!0),l("div",bt,[a(t(M),{href:n.route("admin.broadcasts.show",{allocation:d.allocation.id})},{default:r(()=>[a(t(C),{type:"button",variant:"outline"},{default:r(()=>[...e[36]||(e[36]=[o("Cancel",-1)])]),_:1})]),_:1},8,["href"]),a(t(C),{type:"button",variant:"secondary",disabled:S.value||t(s).processing,title:`Send a test to ${d.authorEmail}`,onClick:te},{default:r(()=>[S.value?(m(),h(t(Q),{key:0,class:"h-4 w-4 mr-2 animate-spin"})):(m(),h(t(De),{key:1,class:"h-4 w-4 mr-2"})),o(" "+c(S.value?"Sending...":"Send to me"),1)]),_:1},8,["disabled","title"]),a(t(C),{type:"submit",disabled:t(s).processing||T.value===0},{default:r(()=>[a(t(U),{class:"h-4 w-4 mr-2"}),e[37]||(e[37]=o(" Send Broadcast ",-1))]),_:1},8,["disabled"])])],32)]),_:1})]),_:1})])])]),_:1}))}});
11export{Xt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.