1import{f as ne,a as re,b as de,c as ue,d as ie,e as fe,_ as me,t as B}from"./AppLayout.vue_vue_type_script_setup_true_lang-CiKWQwK6.js";import{b as pe,u as E,h as ce,r as F}from"./app-CgPjWXEI.js";import{_ as O,a as I}from"./CardContent.vue_vue_type_script_setup_true_lang-DM1hNT11.js";import{_ as q}from"./CardDescription.vue_vue_type_script_setup_true_lang-Bwk4dPk3.js";import{_ as H}from"./CardHeader.vue_vue_type_script_setup_true_lang-NeBuR_Lq.js";import{_ as K}from"./CardTitle.vue_vue_type_script_setup_true_lang-C_HbQq4g.js";import{_ as b}from"./index-i4I5CGQt.js";import{_ as _e}from"./Badge.vue_vue_type_script_setup_true_lang-CZH0eI_-.js";import{e as X,_ as Y,a as A,b as v,c as G,d as x}from"./TableHeader.vue_vue_type_script_setup_true_lang-CN4ksyrF.js";import{d as J,_ as Q,a as W,b as Z,c as T}from"./index-BdndWajx.js";import{_ as ve}from"./index-I792jtTI.js";import{d as ee,w as te,K as w,u as e,L as o,O as t,_ as m,a0 as a,$ as u,a2 as xe,U as c,P as g,M as f,l as ge,q as N,bb as h,b5 as $e,F as P,V as j,bc as be,aC as ye,aB as we,aL as ke,b9 as Ce,a$ as Ve,b0 as Se,ba as Ue}from"./icons-0dJroYbd.js";import{_ as D}from"./Input.vue_vue_type_script_setup_true_lang-BHX8rmaI.js";import{_ as U}from"./Label.vue_vue_type_script_setup_true_lang-DhRWlfb5.js";import{U as De}from"./useStaffSidebar-B6HulAMj.js";import{f as Me}from"./format-BlyJTOGp.js";import"./reka-ui-CcWaZdOU.js";import"./SheetTrigger.vue_vue_type_script_setup_true_lang-Dv_GtiQ6.js";import"./index-ynJjy3SW.js";import"./TooltipTrigger.vue_vue_type_script_setup_true_lang-b7ep43Cb.js";import"./useInitials-C0AQeawK.js";import"./index-CH2G6zFJ.js";import"./index-BnmYe9Gg.js";import"./index-ByXXhYUA.js";const Le={class:"flex flex-col gap-1.5"},Ae={key:0,class:"text-xs text-destructive"},Ne={class:"grid grid-cols-2 gap-4"},Pe={class:"flex flex-col gap-1.5"},Re={key:0,class:"text-xs text-destructive"},Te={class:"flex flex-col gap-1.5"},ze={key:0,class:"text-xs text-destructive"},Fe={class:"grid grid-cols-2 gap-4"},he={class:"flex flex-col gap-1.5"},je={key:0,class:"text-xs text-destructive"},Be={class:"flex flex-col gap-1.5"},Ee={key:0,class:"text-xs text-destructive"},Oe={class:"flex flex-col gap-1.5"},Ie={key:0,class:"text-xs text-destructive"},qe=ee({__name:"CouponDialog",props:{open:{type:Boolean},coupon:{}},emits:["update:open","saved"],setup(i,{emit:C}){const _=i,y=C,V=$=>{if(!$)return"";const n=new Date($);if(Number.isNaN(n.getTime()))return"";const p=z=>String(z).padStart(2,"0");return`${n.getFullYear()}-${p(n.getMonth()+1)}-${p(n.getDate())}T${p(n.getHours())}:${p(n.getMinutes())}`},l=pe({code:"",product:"year",discount_percent:40,active_from:"",active_to:"",stripe_coupon_id:""}),k=()=>{_.coupon?(l.code=_.coupon.code,l.product=_.coupon.product,l.discount_percent=_.coupon.discount_percent,l.active_from=V(_.coupon.active_from),l.active_to=V(_.coupon.active_to),l.stripe_coupon_id=_.coupon.stripe_coupon_id??""):l.reset(),l.clearErrors()};te(()=>_.open,$=>{$&&k()});const S=()=>y("update:open",!1),M=()=>{const $={preserveScroll:!0,onSuccess:()=>{y("saved"),S()}};_.coupon?l.put(route("admin.coupons.update",_.coupon.id),$):l.post(route("admin.coupons.store"),$)};return($,n)=>(f(),w(e(ne),{open:i.open,"onUpdate:open":n[6]||(n[6]=p=>y("update:open",p))},{default:o(()=>[t(e(re),{class:"sm:max-w-md"},{default:o(()=>[t(e(de),null,{default:o(()=>[t(e(ue),null,{default:o(()=>[a(u(i.coupon?"Edit coupon":"New coupon"),1)]),_:1}),t(e(ie),null,{default:o(()=>[a(u(i.coupon?"Update the promo code details.":"Create a promo code for checkout discounts."),1)]),_:1})]),_:1}),m("form",{class:"flex flex-col gap-4",onSubmit:xe(M,["prevent"])},[m("div",Le,[t(e(U),{for:"coupon-code"},{default:o(()=>[...n[7]||(n[7]=[a("Code",-1)])]),_:1}),t(e(D),{id:"coupon-code",modelValue:e(l).code,"onUpdate:modelValue":n[0]||(n[0]=p=>e(l).code=p),placeholder:"EXPLORERS40",class:"uppercase",autocomplete:"off"},null,8,["modelValue"]),e(l).errors.code?(f(),c("p",Ae,u(e(l).errors.code),1)):g("",!0)]),m("div",Ne,[m("div",Pe,[t(e(U),{for:"coupon-product"},{default:o(()=>[...n[8]||(n[8]=[a("Product",-1)])]),_:1}),t(e(J),{modelValue:e(l).product,"onUpdate:modelValue":n[1]||(n[1]=p=>e(l).product=p)},{default:o(()=>[t(e(Q),{id:"coupon-product",class:"w-full"},{default:o(()=>[t(e(W))]),_:1}),t(e(Z),null,{default:o(()=>[t(e(T),{value:"month"},{default:o(()=>[...n[9]||(n[9]=[a("Monthly",-1)])]),_:1}),t(e(T),{value:"year"},{default:o(()=>[...n[10]||(n[10]=[a("Annual",-1)])]),_:1})]),_:1})]),_:1},8,["modelValue"]),e(l).errors.product?(f(),c("p",Re,u(e(l).errors.product),1)):g("",!0)]),m("div",Te,[t(e(U),{for:"coupon-discount"},{default:o(()=>[...n[11]||(n[11]=[a("Discount %",-1)])]),_:1}),t(e(D),{id:"coupon-discount",modelValue:e(l).discount_percent,"onUpdate:modelValue":n[2]||(n[2]=p=>e(l).discount_percent=p),type:"number",min:"0",max:"100"},null,8,["modelValue"]),e(l).errors.discount_percent?(f(),c("p",ze,u(e(l).errors.discount_percent),1)):g("",!0)])]),m("div",Fe,[m("div",he,[t(e(U),{for:"coupon-from"},{default:o(()=>[...n[12]||(n[12]=[a("Active from",-1)])]),_:1}),t(e(D),{id:"coupon-from",modelValue:e(l).active_from,"onUpdate:modelValue":n[3]||(n[3]=p=>e(l).active_from=p),type:"datetime-local"},null,8,["modelValue"]),e(l).errors.active_from?(f(),c("p",je,u(e(l).errors.active_from),1)):g("",!0)]),m("div",Be,[t(e(U),{for:"coupon-to"},{default:o(()=>[...n[13]||(n[13]=[a("Active to",-1)])]),_:1}),t(e(D),{id:"coupon-to",modelValue:e(l).active_to,"onUpdate:modelValue":n[4]||(n[4]=p=>e(l).active_to=p),type:"datetime-local"},null,8,["modelValue"]),e(l).errors.active_to?(f(),c("p",Ee,u(e(l).errors.active_to),1)):g("",!0)])]),m("div",Oe,[t(e(U),{for:"coupon-stripe"},{default:o(()=>[...n[14]||(n[14]=[a("Stripe coupon ID",-1)])]),_:1}),t(e(D),{id:"coupon-stripe",modelValue:e(l).stripe_coupon_id,"onUpdate:modelValue":n[5]||(n[5]=p=>e(l).stripe_coupon_id=p),placeholder:"Optional",autocomplete:"off"},null,8,["modelValue"]),e(l).errors.stripe_coupon_id?(f(),c("p",Ie,u(e(l).errors.stripe_coupon_id),1)):g("",!0)]),t(e(fe),null,{default:o(()=>[t(e(b),{variant:"outline",type:"button",disabled:e(l).processing,onClick:S},{default:o(()=>[...n[15]||(n[15]=[a("Cancel",-1)])]),_:1},8,["disabled"]),t(e(b),{type:"submit",disabled:e(l).processing},{default:o(()=>[a(u(e(l).processing?"Savingâ¦":i.coupon?"Save changes":"Create coupon"),1)]),_:1},8,["disabled"])]),_:1})],32)]),_:1})]),_:1},8,["open"]))}}
1),He={class:"mx-auto flex h-full w-full max-w-7xl flex-1 flex-col gap-4 rounded-xl p-4"},Ke={class:"flex flex-wrap items-start justify-between gap-4"},Xe={key:0,class:"rounded-lg border border-dashed border-border py-16 text-center"},Ye={key:1,class:"rounded-md border overflow-x-auto"},Ge={class:"flex justify-end gap-1"},Je={class:"flex flex-wrap items-end justify-between gap-4"},Qe={class:"flex items-end gap-2"},We={class:"flex flex-col gap-1.5"},Ze={key:0,class:"rounded-lg border border-dashed border-border py-16 text-center"},et={key:1,class:"rounded-md border relative overflow-x-auto"},tt={key:0,class:"absolute inset-0 z-10 flex items-center justify-center rounded-md bg-background/80 backdrop-blur-sm"},ot={class:"font-medium text-foreground"},st={key:0,class:"text-xs text-muted-foreground"},lt={key:2,class:"mt-4 flex items-center justify-between gap-4"},at={class:"text-sm text-muted-foreground"},nt={class:"flex items-center gap-1"},R="__all__",At=ee({layout:me,__name:"Coupons",props:{promoCodes:{},redemptions:{},codeOptions:{},filters:{}},setup(i){const C=ge(()=>{var d,s,r;return((r=(s=(d=E().props.auth)==null?void 0:d.user)==null?void 0:s.role)==null?void 0:r.role)===De.ADMIN}),_=i,y=N(!1),V=N(null),l=N(_.filters.code??R),k=N(!1),S=(d,s="MMM d, yyyy")=>d?Me(new Date(d),s):"â",M=d=>d==="month"?"Monthly":d==="year"?"Annual":d??"â",$=()=>{V.value=null,y.value=!0},n=d=>{V.value={...d},y.value=!0},p=()=>{const d=E().props.flash;d!=null&&d.error?B.error(d.error):d!=null&&d.success&&B.success(d.success)},z=()=>p(),oe=d=>{window.confirm(`Delete coupon ${d.code}? This also removes its ${d.redemptions_count} redemption(s).`)&&F.delete(route("admin.coupons.destroy",d.id),{preserveScroll:!0,onSuccess:p})},se=(d=1)=>{F.get(route("admin.coupons.index"),{code:l.value===R?void 0:l.value,per_page:_.filters.per_page,page:d},{preserveState:!0,preserveScroll:!0,only:["redemptions","filters"],onStart:()=>{k.value=!0},onFinish:()=>{k.value=!1}})};te(l,()=>se(1));const L=d=>{d&&F.get(d,{},{preserveState:!0,preserveScroll:!0,only:["redemptions","filters"],onStart:()=>{k.value=!0},onFinish:()=>{k.value=!1}})},le=()=>route("admin.coupons.redemptions.export",l.value===R?{}:{code:l.value});return(d,s)=>(f(),c(P,null,[t(e(ce),{title:"Admin - Coupons"}),t(e(ve),{"rich-colors":"",position:"top-center"}),m("div",He,[t(e(I),null,{default:o(()=>[t(e(H),null,{default:o(()=>[m("div",Ke,[m("div",null,[t(e(K),{class:"flex items-center gap-2"},{default:o(()=>[t(e(h),{class:"h-5 w-5"}),s[6]||(s[6]=a(" Promo Codes ",-1))]),_:1}),t(e(q),{class:"mt-1"},{default:o(()=>[...s[7]||(s[7]=[a("Manage checkout discount codes.",-1)])]),_:1})]),C.value?(f(),w(e(b),{key:0,onClick:$},{default:o(()=>[t(e($e),{class:"mr-2 h-4 w-4"}),s[8]||(s[8]=a(" New coupon ",-1))]),_:1})):g("",!0)])]),_:1}),t(e(O),null,{default:o(()=>[i.promoCodes.length===0?(f(),c("div",Xe,[t(e(h),{class:"mx-auto h-10 w-10 text-muted-foreground/60"}),s[9]||(s[9]=m("p",{class:"mt-4 text-sm text-muted-foreground"},"No promo codes yet.",-1))])):(f(),c("div",Ye,[t(e(X),{class:"text-sm"},{default:o(()=>[t(e(Y),null,{default:o(()=>[t(e(A),null,{default:o(()=>[t(e(v),null,{default:o(()=>[...s[10]||(s[10]=[a("Code",-1)])]),_:1}),t(e(v),null,{default:o(()=>[...s[11]||(s[11]=[a("Product",-1)])]),_:1}),t(e(v),null,{default:o(()=>[...s[12]||(s[12]=[a("Discount",-1)])]),_:1}),t(e(v),null,{default:o(()=>[...s[13]||(s[13]=[a("Active window",-1)])]),_:1}),t(e(v),null,{default:o(()=>[...s[14]||(s[14]=[a("Stripe coupon",-1)])]),_:1}),t(e(v),{class:"text-right"},{default:o(()=>[...s[15]||(s[15]=[a("Redemptions",-1)])]),_:1}),t(e(v),null,{default:o(()=>[...s[16]||(s[16]=[a("Status",-1)])]),_:1}),C.value?(f(),w(e(v),{key:0,class:"text-right"},{default:o(()=>[...s[17]||(s[17]=[a("Actions",-1)])]),_:1})):g("",!0)]),_:1})]),_:1}),t(e(G),null,{default:o(()=>[(f(!0),c(P,null,j(i.promoCodes,r=>(f(),w(e(A),{key:r.id},{default:o(()=>[t(e(x),{class:"font-mono font-medium"},{default:o(()=>[a(u(r.code),1)]),_:2},1024),t(e(x),null,{default:o(()=>[a(u(M(r.product)),1)]),_:2},1024),t(e(x),{class:"tabular-nums"},{default:o(()=>[a(u(r.discount_percent)+"%",1)]),_:2},1024),t(e(x),{class:"whitespace-nowrap text-muted-foreground"},{default:o(()=>[a(u(S(r.active_from))+" â "+u(S(r.active_to)),1)]),_:2},1024),t(e(x),{class:"font-mono text-xs text-muted-foreground"},{default:o(()=>[a(u(r.stripe_coupon_id??"â"),1)]),_:2},1024),t(e(x),{class:"text-right tabular-nums"},{default:o(()=>[a(u(r.redemptions_count),1)]),_:2},1024),t(e(x),null,{default:o(()=>[t(e(_e),{variant:r.is_active?"default":"secondary"},{default:o(()=>[a(u(r.is_active?"Active":"Inactive"),1)]),_:2},1032,["variant"])]),_:2},1024),C.value?(f(),w(e(x),{key:0},{default:o(()=>[m("div",Ge,[t(e(b),{variant:"ghost",size:"icon",class:"h-8 w-8",onClick:ae=>n(r)},{default:o(()=>[t(e(be),{class:"h-4 w-4"})]),_:1},8,["onClick"]),t(e(b),{variant:"ghost",size:"icon",class:"h-8 w-8 text-destructive hover:text-destructive",onClick:ae=>oe(r)},{default:o(()=>[t(e(ye),{class:"h-4 w-4"})]),_:1},8,["onClick"])])]),_:2},1024)):g("",!0)]),_:2},1024))),128))]),_:1})]),_:1})]))]),_:1})]),_:1}),t(e(I),null,{default:o(()=>[t(e(H),null,{default:o(()=>[m("div",Je,[m("div",null,[t(e(K),null,{default:o(()=>[...s[18]||(s[18]=[a("Redemptions",-1)])]),_:1}),t(e(q),{class:"mt-1"},{default:o(()=>[a(u(i.redemptions.from??0)+"-"+u(i.redemptions.to??0)+" of "+u(i.redemptions.total.toLocaleStr
1ing())+" redemptions ",1)]),_:1})]),m("div",Qe,[m("div",We,[s[20]||(s[20]=m("span",{class:"text-xs font-medium text-muted-foreground"},"Coupon code",-1)),t(e(J),{modelValue:l.value,"onUpdate:modelValue":s[0]||(s[0]=r=>l.value=r)},{default:o(()=>[t(e(Q),{class:"w-[200px]"},{default:o(()=>[t(e(W))]),_:1}),t(e(Z),null,{default:o(()=>[t(e(T),{value:R},{default:o(()=>[...s[19]||(s[19]=[a("All codes",-1)])]),_:1}),(f(!0),c(P,null,j(i.codeOptions,r=>(f(),w(e(T),{key:r,value:r},{default:o(()=>[a(u(r),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1},8,["modelValue"])]),t(e(b),{as:"a",href:le(),variant:"outline"},{default:o(()=>[t(e(we),{class:"mr-2 h-4 w-4"}),s[21]||(s[21]=a(" Download CSV ",-1))]),_:1},8,["href"])])])]),_:1}),t(e(O),null,{default:o(()=>[i.redemptions.data.length===0?(f(),c("div",Ze,[t(e(h),{class:"mx-auto h-10 w-10 text-muted-foreground/60"}),s[22]||(s[22]=m("p",{class:"mt-4 text-sm text-muted-foreground"},"No redemptions found.",-1))])):(f(),c("div",et,[k.value?(f(),c("div",tt,[t(e(ke),{class:"h-6 w-6 animate-spin text-muted-foreground"})])):g("",!0),t(e(X),{class:"text-sm"},{default:o(()=>[t(e(Y),null,{default:o(()=>[t(e(A),null,{default:o(()=>[t(e(v),null,{default:o(()=>[...s[23]||(s[23]=[a("User",-1)])]),_:1}),t(e(v),null,{default:o(()=>[...s[24]||(s[24]=[a("Code",-1)])]),_:1}),t(e(v),null,{default:o(()=>[...s[25]||(s[25]=[a("Product",-1)])]),_:1}),t(e(v),null,{default:o(()=>[...s[26]||(s[26]=[a("Subscription",-1)])]),_:1}),t(e(v),null,{default:o(()=>[...s[27]||(s[27]=[a("Redeemed at",-1)])]),_:1})]),_:1})]),_:1}),t(e(G),null,{default:o(()=>[(f(!0),c(P,null,j(i.redemptions.data,r=>(f(),w(e(A),{key:r.id},{default:o(()=>[t(e(x),null,{default:o(()=>[m("p",ot,u(r.user_name??"Unknown"),1),r.user_email?(f(),c("p",st,u(r.user_email),1)):g("",!0)]),_:2},1024),t(e(x),{class:"font-mono"},{default:o(()=>[a(u(r.code??"â"),1)]),_:2},1024),t(e(x),null,{default:o(()=>[a(u(M(r.product)),1)]),_:2},1024),t(e(x),{class:"tabular-nums text-muted-foreground"},{default:o(()=>[a(u(r.subscription_id??"â"),1)]),_:2},1024),t(e(x),{class:"whitespace-nowrap text-muted-foreground"},{default:o(()=>[a(u(S(r.redeemed_at,"MMM d, yyyy · h:mm a")),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})])),i.redemptions.last_page>1?(f(),c("div",lt,[m("div",at,u(i.redemptions.current_page)+"/"+u(i.redemptions.last_page),1),m("div",nt,[t(e(b),{variant:"outline",size:"icon",class:"h-9 w-9",disabled:i.redemptions.current_page===1,onClick:s[1]||(s[1]=r=>L(i.redemptions.first_page_url))},{default:o(()=>[t(e(Ce),{class:"h-4 w-4"})]),_:1},8,["disabled"]),t(e(b),{variant:"outline",size:"icon",class:"h-9 w-9",disabled:!i.redemptions.prev_page_url,onClick:s[2]||(s[2]=r=>L(i.redemptions.prev_page_url))},{default:o(()=>[t(e(Ve),{class:"h-4 w-4"})]),_:1},8,["disabled"]),t(e(b),{variant:"outline",size:"icon",class:"h-9 w-9",disabled:!i.redemptions.next_page_url,onClick:s[3]||(s[3]=r=>L(i.redemptions.next_page_url))},{default:o(()=>[t(e(Se),{class:"h-4 w-4"})]),_:1},8,["disabled"]),t(e(b),{variant:"outline",size:"icon",class:"h-9 w-9",disabled:i.redemptions.current_page===i.redemptions.last_page,onClick:s[4]||(s[4]=r=>L(i.redemptions.last_page_url))},{default:o(()=>[t(e(Ue),{class:"h-4 w-4"})]),_:1},8,["disabled"])])])):g("",!0)]),_:1})]),_:1})]),C.value?(f(),w(qe,{key:0,open:y.value,"onUpdate:open":s[5]||(s[5]=r=>y.value=r),coupon:V.value,onSaved:z},null,8,["open","coupon"])):g("",!0)],64))}});export{At 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.