PageSourceSearch

https://china-hdmi.com/assets/RedeemView-dHPnFsmv.js

js china-hdmi.com collected 2026-10-08 01:29:17 UTC 26,892 bytes, 2 lines download raw bytes

vendor: 4,756 bytes, line 1
1import{d as Ne,r as y,c as f,q as O,w as qe,o as Qe,a as Je,G as k,I as p,k as x,y as c,C as b,u as r,A as s,E as d,z as D,J as w,F as j,U as Q,Q as h,V as E,P as te,K as Ke,_ as J,S as Ye,B as i}from"./vendor-vue-CkHOcbHv.js";import{a as We,j as ue,_ as $,k as U}from"./index-DCb3LKEv.js";import{u as Xe}from"./useClipboard-Dat0Cj91.js";import{u as Ze}from"./useTableSelection-CQ2D2EKH.js";import{g as et}from"./usePersistedPageSize-x0WpaIWh.js";import{_ as tt}from"./AppLayout.vue_vue_type_script_setup_true_lang-Ie2_Hs-h.js";import{T as at}from"./TablePageLayout-rjCOfLJY.js";import{D as st}from"./DataTable-BcYqotqL.js";import{P as ot}from"./Pagination-6uhLxlj0.js";import{_ as ce}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-Dlywpj7s.js";import{S as T}from"./Select-B-2ewlpK.js";import{_ as rt}from"./GroupBadge.vue_vue_type_script_setup_true_lang-mq2zgntH.js";import{G as lt}from"./GroupOptionItem-BnKVthtX.js";import{u as nt}from"./vendor-i18n-GqxpthPm.js";import"./vendor-misc-BmVSJmPY.js";import"./AppHeader.vue_vue_type_style_index_0_scoped_d60e9128_lang-D6LrH4Mm.js";import"./url-BYJmegJ5.js";import"./LocaleSwitcher-CSglkd-P.js";/* empty css                                                                       */import"./peak-rate-qZGUWdry.js";import"./PlatformIcon.vue_vue_type_script_setup_true_lang-BZcBegGJ.js";const dt={class:"flex flex-wrap items-center gap-3"},it={class:"flex-1 sm:max-w-64"},ut=["placeholder"],ct={class:"flex flex-1 flex-wrap items-center justify-end gap-2"},mt=["disabled","title"],pt=["disabled"],bt=["checked"],yt=["checked","onChange"],gt={class:"flex items-center space-x-2"},xt={class:"font-mono text-sm text-gray-900 dark:text-gray-100"},vt=["onClick","title"],_t={key:1,class:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft={class:"text-sm font-medium text-gray-900 dark:text-white"},ht={key:0,class:"ml-1 text-xs text-gray-500 dark:text-gray-400"},kt={class:"text-sm text-gray-500 dark:text-dark-400"},wt={class:"text-sm text-gray-500 dark:text-dark-400"},Ct={class:"flex items-center space-x-2"},Ut=["onClick"],St={class:"text-xs"},Vt={key:1,class:"text-gray-400 dark:text-dark-500"},Dt={key:0,class:"mb-4 flex flex-wrap items-center justify-between gap-3 rounded-lg bg-primary-50 p-3 dark:bg-primary-900/20"},Et={class:"text-sm font-medium text-primary-900 dark:text-primary-100"},Tt={class:"flex flex-wrap items-center gap-2"},zt={key:2,class:"flex justify-end"},jt={key:0,class:"fixed inset-0 z-50 flex items-center justify-center"},$t={class:"relative z-10 w-full max-w-md rounded-xl bg-white p-6 shadow-xl dark:bg-dark-800"},Rt={class:"mb-4 text-lg font-semibold text-gray-900 dark:text-white"},At={class:"input-label"},Bt={key:0},Ft={class:"input-label"},Gt=["step","min"],It={key:1,class:"rounded-lg bg-blue-50 p-3 dark:bg-blue-900/20"},Lt={class:"text-sm text-blue-700 dark:text-blue-300"},Ot={class:"input-label"},Pt={key:1,class:"text-gray-400"},Mt={class:"input-label"},Ht={class:"input-label"},Nt={class:"grid grid-cols-2 gap-2 sm:grid-cols-5"},qt=["onClick"],Qt=["placeholder"],Jt={class:"input-label"},Kt={class:"flex justify-end gap-3 pt-2"},Yt=["disabled"],Wt={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4"},Xt={class:"relative z-10 w-full max-w-lg rounded-xl bg-white p-6 shadow-xl dark:bg-dark-800"},Zt={class:"mb-1 text-lg font-semibold text-gray-900 dark:text-white"},ea={class:"mb-4 text-sm text-gray-500 dark:text-gray-400"},ta={class:"space-y-2"},aa={class:"flex items-center gap-2 text-sm font-medium text-gray-700 dark:text-gray-300"},sa={class:"space-y-2"},oa={class:"flex items-center gap-2 text-sm font-medium text-gray-700 dark:text-gray-300"},ra={class:"space-y-2"},la={class:"flex items-center gap-2 text-sm font-medium text-gray-700 dark:text-gray-300"},na=["placeholder"],da={class:"space-y-2"},ia={class:"flex items-center gap-2 text-sm font-medium text-gray-700 dark:text-gray-300"},ua={class:"flex justify-end gap-3 pt-2"},ca=["disabled"],ma={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4"},pa={class:"relative z-10 w-full max-w-lg rounded-xl bg-white shadow-xl dark:bg-dark-800"},ba={class:"flex items-center justify-between border-b border-gray-200 px-5 py-4 dark:border-dark-600"},ya={class:"flex items-center gap-3"},ga={class:"text-base font-semibold text-gray-900 dark:text-white"},xa={class:"text-sm text-gray-500 dark:text-gray-400"},va={class:"p-5"},_a={class:"relative"},fa=["value"],ha={class:"flex justify-end gap-2 rounded-b-xl border-t border-gray-200 bg-gray-50 px-5 py-4 dark:border-dark-600 dark:bg-dark-700/50"},ka={key:1,class:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Na=Ne({__name:"RedeemView",setup(wa){const{t:a}=nt(),m=We(),{copyToClipboard:ae}
1=Xe(),R=y(!1),K=y(!1),A=y([]),se=y([]),oe=f(()=>se.value.filter(o=>o.subscription_type==="subscription").map(o=>({value:o.id,label:o.name,description:o.description,platform:o.platform,subscriptionType:o.subscription_type,rate:o.rate_multiplier}))),me=f(()=>[{value:null,label:a("admin.redeem.clearGroup")},...oe.value]),Y=f(()=>A.value.map(o=>o.code).join(`
2`)),pe=f(()=>{const o=A.value.length;return`${Math.min(Math.max(o*24+24,60),240)}px`}),z=y(!1),re=()=>{K.value=!1,A.value=[],z.value=!1},be=async()=>{await ae(Y.value,a("admin.redeem.copied"))&&(z.value=!0,setTimeout(()=>{z.value=!1},2e3))},ye=()=>{const o=new Blob([Y.value],{type:"text/plain"}),t=window.URL.createObjectURL(o),e=document.createElement("a");e.href=t,e.download=`redeem-codes-${new Date().toISOString().split("T")[0]}.txt`,document.body.appendChild(e),e.click(),document.body.removeChild(e),window.URL.revokeObjectURL(t)},ge=f(()=>[{key:"select",label:""},{key:"code",label:a("admin.redeem.columns.code")},{key:"type",label:a("admin.redeem.columns.type"),sortable:!0},{key:"value",label:a("admin.redeem.columns.value"),sortable:!0},{key:"status",label:a("admin.redeem.columns.status"),sortable:!0},{key:"used_by",label:a("admin.redeem.columns.usedBy")},{key:"used_at",label:a("admin.redeem.columns.usedAt"),sortable:!0},{key:"expires_at",label:a("admin.redeem.columns.expiresAt"),sortable:!0},{key:"actions",label:a("admin.redeem.columns.actions")}]),xe=f(()=>[{value:"balance",label:a("admin.redeem.balance")},{value:"concurrency",label:a("admin.redeem.concurrency")},{value:"subscription",label:a("admin.redeem.subscription")},{value:"invitation",label:a("admin.redeem.invitation")}]),ve=f(()=>[{value:"",label:a("admin.redeem.allTypes")},{value:"balance",label:a("admin.redeem.balance")},{value:"concurrency",label:a("admin.redeem.concurrency")},{value:"subscription",label:a("admin.redeem.subscription")},{value:"invitation",label:a("admin.redeem.invitation")}]),_e=f(()=>[{value:"",label:a("admin.redeem.allStatus")},{value:"unused",label:a("admin.redeem.unused")},{value:"used",label:a("admin.redeem.used")},{value:"expired",label:a("admin.redeem.status.expired")},{value:"disabled",label:a("admin.redeem.status.disabled")}]),fe=f(()=>[{value:"unused",label:a("admin.redeem.status.unused")},{value:"disabled",label:a("admin.redeem.status.disabled")}]),he=f(()=>[{value:"clear",label:a("admin.redeem.neverExpires")},{value:"custom",label:a("admin.redeem.customExpiry")}]),W=y([]),B=y(!1),P=y(!1),F=y(!1),X=y(""),S=O({type:"",status:""}),v=O({page:1,page_size:et(),total:0,pages:0}),M=O({sort_by:"id",sort_order:"desc"});let C=null;const H=y(!1),G=y(!1),N=y(!1),q=y(null),I=y(null),{selectedSet:le,selectedCount:L,allVisibleSelected:ke,select:we,deselect:Ce,clear:Z,toggleVisible:Ue}=Ze({rows:W,getId:o=>o.id}),l=O({update_status:!1,status:"disabled",update_expires_at:!1,expires_mode:"clear",expires_at_local:"",update_notes:!1,notes:"",update_group_id:!1,group_id:null}),Se=f(()=>[{value:"never",label:a("admin.redeem.neverExpires")},{value:"1",label:a("admin.redeem.expiryPresetDays",{days:1})},{value:"3",label:a("admin.redeem.expiryPresetDays",{days:3})},{value:"7",label:a("admin.redeem.expiryPresetDays",{days:7})},{value:"custom",label:a("admin.redeem.customExpiry")}]),n=O({type:"balance",value:10,count:1,group_id:null,validity_days:30,expiry_option:"never",custom_expiry_days:7});qe(()=>n.type,o=>{o==="invitation"?n.value=0:n.value===0&&(n.value=10)});const ne=()=>({type:S.type||void 0,status:S.status||void 0,search:X.value||void 0,sort_by:M.sort_by,sort_order:M.sort_order}),_=async()=>{C&&C.abort();const o=new AbortController;C=o,B.value=!0;try{const t=await U.redeem.list(v.page,v.page_size,ne(),{signal:o.signal});if(o.signal.aborted)return;W.value=t.items,v.total=t.total,v.pages=t.pages}catch(t){if(o.signal.aborted||(t==null?void 0:t.name)==="AbortError"||(t==null?void 0:t.code)==="ERR_CANCELED")return;m.showError(a("admin.redeem.failedToLoad")),console.error("Error loading redeem codes:",t)}finally{C===o&&!o.signal.aborted&&(B.value=!1,C=null)}};let ee;const Ve=()=>{clearTimeout(ee),ee=setTimeout(()=>{v.page=1,_()},300)},De=o=>{v.page=o,_()}
2,Ee=o=>{v.page_size=o,v.page=1,_()},Te=(o,t)=>{M.sort_by=o,M.sort_order=t,v.page=1,_()},ze=(o,t)=>{if(t.target.checked){we(o);return}Ce(o)},je=o=>{const t=o.target;Ue(t.checked)},$e=()=>{if(n.expiry_option!=="never")return n.expiry_option==="custom"?!Number.isFinite(n.custom_expiry_days)||n.custom_expiry_days<1?null:Math.floor(n.custom_expiry_days):Number(n.expiry_option)},Re=o=>{const t=e=>String(e).padStart(2,"0");return`${o.getFullYear()}-${t(o.getMonth()+1)}-${t(o.getDate())}T${t(o.getHours())}:${t(o.getMinutes())}`},Ae=()=>{l.update_status=!1,l.status="disabled",l.update_expires_at=!1,l.expires_mode="clear",l.expires_at_local=Re(new Date(Date.now()+24*60*60*1e3)),l.update_notes=!1,l.notes="",l.update_group_id=!1,l.group_id=null},de=()=>{if(L.value===0){m.showInfo(a("admin.redeem.selectCodesFirst"));return}Ae(),N.value=!0},ie=()=>{N.value=!1},Be=()=>{const o={};if(l.update_status&&(o.status=l.status),l.update_expires_at)if(l.expires_mode==="clear")o.expires_at=null;else{const t=new Date(l.expires_at_local);if(!l.expires_at_local||Number.isNaN(t.getTime()))return m.showError(a("admin.redeem.expiryDaysRequired")),null;o.expires_at=t.toISOString()}return l.update_notes&&(o.notes=l.notes),l.update_group_id&&(o.group_id=l.group_id==null?null:Number(l.group_id)),Object.keys(o).length>0?o:null},Fe=async()=>{var t,e;if(n.type==="subscription"&&!n.group_id){m.showError(a("admin.redeem.groupRequired"));return}const o=$e();if(o===null){m.showError(a("admin.redeem.expiryDaysRequired"));return}P.value=!0;try{const u=await U.redeem.generate(n.count,n.type,n.value,n.type==="subscription"?n.group_id:void 0,n.type==="subscription"?n.validity_days:void 0,o);R.value=!1,A.value=u,K.value=!0,n.group_id=null,n.validity_days=30,n.expiry_option="never",n.custom_expiry_days=7,_()}catch(u){m.showError(((e=(t=u.response)==null?void 0:t.data)==null?void 0:e.detail)||a("admin.redeem.failedToGenerate")),console.error("Error generating codes:",u)}finally{P.value=!1}},Ge=async o=>{await ae(o,a("admin.redeem.copied"))&&(I.value=o,setTimeout(()=>{I.value=null},2e3))},Ie=async()=>{var o,t;try{const e=await U.redeem.exportCodes(ne()),u=window.URL.createObjectURL(e),g=document.createElement("a");g.href=u,g.download=`redeem-codes-${new Date().toISOString().split("T")[0]}.csv`,document.body.appendChild(g),g.click(),document.body.removeChild(g),window.URL.revokeObjectURL(u),m.showSuccess(a("admin.redeem.codesExported"))}catch(e){m.showError(((t=(o=e.response)==null?void 0:o.data)==null?void 0:t.detail)||a("admin.redeem.failedToExport")),console.error("Error exporting codes:",e)}},Le=o=>{q.value=o,H.value=!0},Oe=async()=>{var o,t;if(q.value)try{await U.redeem.delete(q.value.id),m.showSuccess(a("admin.redeem.codeDeleted")),H.value=!1,q.value=null,_()}catch(e){m.showError(((t=(o=e.response)==null?void 0:o.data)==null?void 0:t.detail)||a("admin.redeem.failedToDelete")),console.error("Error deleting code:",e)}},Pe=async()=>{var o,t;try{const u=(await U.redeem.list(1,1e3,{status:"unused"})).items.map(V=>V.id);if(u.length===0){m.showInfo(a("admin.redeem.noUnusedCodes")),G.value=!1;return}const g=await U.redeem.batchDelete(u);m.showSuccess(a("admin.redeem.codesDeleted",{count:g.deleted})),G.value=!1,_()}catch(e){m.showError(((t=(o=e.response)==null?void 0:o.data)==null?void 0:t.detail)||a("admin.redeem.failedToDeleteUnused")),console.error("Error deleting unused codes:",e)}},Me=async()=>{var u,g;const o=Array.from(le.value);if(o.length===0){m.showInfo(a("admin.redeem.selectCodesFirst"));return}if(!(l.update_status||l.update_expires_at||l.update_notes||l.update_group_id)){m.showError(a("admin.redeem.noBatchFieldsSelected"));return}const e=Be();if(e){F.value=!0;try{const V=await U.redeem.batchUpdate(o,e);m.showSuccess(a("admin.redeem.batchUpdateSuccess",{count:V.updated})),N.value=!1,Z(),_()}catch(V){m.showError(((g=(u=V.response)==null?void 0:u.data)==null?void 0:g.detail)||a("admin.redeem.failedToBatchUpdate")),console.error("Error batch updating codes:",V)}finally{F.value=!1}}},He=async()=>{try{const o=await U.groups.getAll();se.value=o}catch(o){console.error("Error loading subscription groups:",o)}};return Qe(()=>{_(),He()}),Je(()=>{clearTimeout(ee),C==null||C.abort()}),(o,t)=>(i(),k(tt,null,{default:p(()=>[x(at,null,{filters:p(()=>[s("div",dt,[s("div",it,[h(s("input",{"onUpdate:modelValue":t[0]||(t[0]=e=>X.value=e),type:"text",placeholder:r(a)("admin.redeem.searchCodes"),class:"input",onInput:Ve},null,40,ut),[[E,X.value]])]),x(T,{modelValue:S.type,"onUpdate:modelValue":t[1]||(t[1]=e=>S.type=e),options:ve.value,class:"w-36",onChange:_},null,8,["modelValue","options"]),x(T,{modelValue:S.status,"onUpdate:modelValue":t[2]||(t[2]=e=>S.status=e),options:_e.value,class:"w-36",onChange:_},null,8,["modelValue","options"]),s("div",ct,[s("button",{onClick:_,disabled:B.value,class:"btn btn-secondary",title:r(a)("common.refresh")},[x($,{name:"refresh",size:"md",class:D(B.value?"animate-spin":"")},null,8,["class"])],8,mt),s("button",{onClick:Ie,class:"btn btn-secondary"},d(r(a)("admin.redeem.exportCsv")),1),s("button",{"data-test":"batch-update-open",onClick:de,disabled:r(L)===0||F.value,class:"btn btn-secondary"},[x($,{name:"edit",size:"md",class:"mr-2"}),w(" "+d(r(a)("admin.redeem.batchUpdate")),1)],8,pt),s("button",{onClick:t[3]||(t[3]=e=>R.value=!0),class:"btn btn-primary"},d(r(a)("admin.redeem.generateCodes")),1)])])]),table:p(()=>[x(st,{columns:ge.value,data:W.value,loading:B.value,"server-side-sort":!0,"default-sort-key":"id","default-sort-order":"desc",onSort:Te},{"header-select":p(()=>[s("input",{"data-test":"select-all-codes",type:"checkbox",class:"h-4 w-4 cursor-pointer rounded border-gray-300 text-primary-600 focus:ring-primary-500",checked:r(ke),onClick:t[4]||(t[4]=Q(()=>{}
2,["stop"])),onChange:t[5]||(t[5]=e=>je(e))},null,40,bt)]),"cell-select":p(({row:e})=>[s("input",{"data-test":"select-code",type:"checkbox",class:"h-4 w-4 cursor-pointer rounded border-gray-300 text-primary-600 focus:ring-primary-500",checked:r(le).has(e.id),onClick:t[6]||(t[6]=Q(()=>{},["stop"])),onChange:u=>ze(e.id,u)},null,40,yt)]),"cell-code":p(({value:e})=>[s("div",gt,[s("code",xt,d(e),1),s("button",{onClick:u=>Ge(e),class:D(["flex items-center transition-colors",I.value===e?"text-green-500":"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300"]),title:I.value===e?r(a)("admin.redeem.copied"):r(a)("keys.copyToClipboard")},[I.value!==e?(i(),k($,{key:0,name:"copy",size:"sm","stroke-width":2})):(i(),c("svg",_t,[...t[28]||(t[28]=[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"},null,-1)])]))],10,vt)])]),"cell-type":p(({value:e})=>[s("span",{class:D(["badge",e==="balance"?"badge-success":e==="subscription"?"badge-warning":"badge-primary"])},d(r(a)("admin.redeem.types."+e)),3)]),"cell-value":p(({value:e,row:u})=>[s("span",ft,[u.type==="balance"?(i(),c(j,{key:0},[w("$"+d(e.toFixed(2)),1)],64)):u.type==="subscription"?(i(),c(j,{key:1},[w(d(u.validity_days||30)+" "+d(r(a)("admin.redeem.days"))+" ",1),u.group?(i(),c("span",ht,"("+d(u.group.name)+")",1)):b("",!0)],64)):(i(),c(j,{key:2},[w(d(e),1)],64))])]),"cell-status":p(({value:e})=>[s("span",{class:D(["badge",e==="unused"?"badge-success":e==="used"?"badge-gray":"badge-danger"])},d(r(a)("admin.redeem.status."+e)),3)]),"cell-used_by":p(({value:e,row:u})=>{var g;return[s("span",kt,d(((g=u.user)==null?void 0:g.email)||(e?r(a)("admin.redeem.userPrefix",{id:e}):"-")),1)]}),"cell-used_at":p(({value:e})=>[s("span",wt,d(e?r(ue)(e):"-"),1)]),"cell-expires_at":p(({value:e,row:u})=>[s("span",{class:D(["text-sm",u.status==="expired"?"text-red-600 dark:text-red-400":"text-gray-500 dark:text-dark-400"])},d(e?r(ue)(e):r(a)("admin.redeem.neverExpires")),3)]),"cell-actions":p(({row:e})=>[s("div",Ct,[e.status==="unused"?(i(),c("button",{key:0,onClick:u=>Le(e),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-900/20 dark:hover:text-red-400"},[t[29]||(t[29]=s("svg",{class:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})],-1)),s("span",St,d(r(a)("common.delete")),1)],8,Ut)):(i(),c("span",Vt,"-"))])]),_:1},8,["columns","data","loading"])]),pagination:p(()=>[r(L)>0?(i(),c("div",Dt,[s("span",Et,d(r(a)("admin.redeem.selectedCount",{count:r(L)})),1),s("div",Tt,[s("button",{type:"button",class:"text-xs font-medium text-primary-700 hover:text-primary-800 dark:text-primary-300 dark:hover:text-primary-200",onClick:t[7]||(t[7]=(...e)=>r(Z)&&r(Z)(...e))},d(r(a)("admin.redeem.clearSelection")),1),s("button",{type:"button",class:"btn btn-primary btn-sm",onClick:de},d(r(a)("admin.redeem.batchUpdate")),1)])])):b("",!0),v.total>0?(i(),k(ot,{key:1,page:v.page,total:v.total,"page-size":v.page_size,"onUpdate:page":De,"onUpdate:pageSize":Ee},null,8,["page","total","page-size"])):b("",!0),S.status==="unused"?(i(),c("div",zt,[s("button",{onClick:t[8]||(t[8]=e=>G.value=!0),class:"btn btn-danger"},d(r(a)("admin.redeem.deleteAllUnused")),1)])):b("",!0)]),_:1}),x(ce,{show:H.value,title:r(a)("admin.redeem.deleteCode"),message:r(a)("admin.redeem.deleteCodeConfirm"),"confirm-text":r(a)("common.delete"),"cancel-text":r(a)("common.cancel"),danger:"",onConfirm:Oe,onCancel:t[9]||(t[9]=e=>H.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),x(ce,{show:G.value,title:r(a)("admin.redeem.deleteAllUnused"),message:r(a)("admin.redeem.deleteAllUnusedConfirm"),"confirm-text":r(a)("admin.redeem.deleteAll"),"cancel-text":r(a)("common.cancel"),danger:"",onConfirm:Pe,onCancel:t[10]||(t[10]=e=>G.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),(i(),k(te,{to:"body"},[R.value?(i(),c("div",jt,[s("div",{class:"fixed inset-0 bg-black/50",onClick:t[11]||(t[11]=e=>R.value=!1)}),s("div",$t,[s("h2",Rt,d(r(a)("admin.redeem.generateCodesTitle")),1),s("form",{onSubmit:Q(Fe,["prevent"]),class:"space-y-4"},[s("div",null,[s("label",At,d(r(a)("admin.redeem.codeType")),1),x(T,{modelValue:n.type,"onUpdate:modelValue":t[12]||(t[12]=e=>n.type=e),options:xe.value},null,8,["modelValue","options"])]),n.type!=="subscription"&&n.type!=="invitation"?(i(),c("div",Bt,[s("label",Ft,d(n.type==="balance"?r(a)("admin.redeem.amount"):r(a)("admin.redeem.columns.value")),1),h(s("input",{"onUpdate:modelValue":t[13]||(t[13]=e=>
2n.value=e),type:"number",step:n.type==="balance"?"0.01":"1",min:n.type==="balance"?"0.01":"1",required:"",class:"input"},null,8,Gt),[[E,n.value,void 0,{number:!0}]])])):b("",!0),n.type==="invitation"?(i(),c("div",It,[s("p",Lt,d(r(a)("admin.redeem.invitationHint")),1)])):b("",!0),n.type==="subscription"?(i(),c(j,{key:2},[s("div",null,[s("label",Ot,d(r(a)("admin.redeem.selectGroup")),1),x(T,{modelValue:n.group_id,"onUpdate:modelValue":t[14]||(t[14]=e=>n.group_id=e),options:oe.value,placeholder:r(a)("admin.redeem.selectGroupPlaceholder")},{selected:p(({option:e})=>[e?(i(),k(rt,{key:0,name:e.label,platform:e.platform,"subscription-type":e.subscriptionType,"rate-multiplier":e.rate},null,8,["name","platform","subscription-type","rate-multiplier"])):(i(),c("span",Pt,d(r(a)("admin.redeem.selectGroupPlaceholder")),1))]),option:p(({option:e,selected:u})=>[x(lt,{name:e.label,platform:e.platform,"subscription-type":e.subscriptionType,"rate-multiplier":e.rate,description:e.description,selected:u},null,8,["name","platform","subscription-type","rate-multiplier","description","selected"])]),_:1},8,["modelValue","options","placeholder"])]),s("div",null,[s("label",Mt,d(r(a)("admin.redeem.validityDays")),1),h(s("input",{"onUpdate:modelValue":t[15]||(t[15]=e=>n.validity_days=e),type:"number",min:"1",max:"365",required:"",class:"input"},null,512),[[E,n.validity_days,void 0,{number:!0}]])])],64)):b("",!0),s("div",null,[s("label",Ht,d(r(a)("admin.redeem.codeExpiry")),1),s("div",Nt,[(i(!0),c(j,null,Ke(Se.value,e=>(i(),c("button",{key:e.value,type:"button",onClick:u=>n.expiry_option=e.value,class:D(["rounded-lg border px-3 py-2 text-sm transition-colors",n.expiry_option===e.value?"border-primary-500 bg-primary-50 text-primary-700 dark:border-primary-400 dark:bg-primary-900/20 dark:text-primary-300":"border-gray-200 text-gray-700 hover:bg-gray-50 dark:border-dark-600 dark:text-gray-300 dark:hover:bg-dark-700"])},d(e.label),11,qt))),128))]),n.expiry_option==="custom"?h((i(),c("input",{key:0,"onUpdate:modelValue":t[16]||(t[16]=e=>n.custom_expiry_days=e),type:"number",min:"1",max:"3650",required:"",class:"input mt-2",placeholder:r(a)("admin.redeem.customExpiryDays")},null,8,Qt)),[[E,n.custom_expiry_days,void 0,{number:!0}]]):b("",!0)]),s("div",null,[s("label",Jt,d(r(a)("admin.redeem.count")),1),h(s("input",{"onUpdate:modelValue":t[17]||(t[17]=e=>n.count=e),type:"number",min:"1",max:"100",required:"",class:"input"},null,512),[[E,n.count,void 0,{number:!0}]])]),s("div",Kt,[s("button",{type:"button",onClick:t[18]||(t[18]=e=>R.value=!1),class:"btn btn-secondary"},d(r(a)("common.cancel")),1),s("button",{type:"submit",disabled:P.value,class:"btn btn-primary"},d(P.value?r(a)("admin.redeem.generating"):r(a)("admin.redeem.generate")),9,Yt)])],32)])])):b("",!0)])),(i(),k(te,{to:"body"},[N.value?(i(),c("div",Wt,[s("div",{class:"fixed inset-0 bg-black/50",onClick:ie}),s("div",Xt,[s("h2",Zt,d(r(a)("admin.redeem.batchUpdateTitle")),1),s("p",ea,d(r(a)("admin.redeem.selectedCount",{count:r(L)})),1),s("form",{"data-test":"batch-update-form",class:"space-y-4",onSubmit:Q(Me,["prevent"])},[s("div",ta,[s("label",aa,[h(s("input",{"data-test":"batch-field-status","onUpdate:modelValue":t[19]||(t[19]=e=>l.update_status=e),type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500"},null,512),[[J,l.update_status]]),w(" "+d(r(a)("admin.redeem.batchFields.status")),1)]),l.update_status?(i(),k(T,{key:0,modelValue:l.status,"onUpdate:modelValue":t[20]||(t[20]=e=>l.status=e),"data-test":"batch-status-select",options:fe.value},null,8,["modelValue","options"])):b("",!0)]),s("div",sa,[s("label",oa,[h(s("input",{"onUpdate:modelValue":t[21]||(t[21]=e=>l.update_expires_at=e),type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500"},null,512),[[J,l.update_expires_at]]),w(" "+d(r(a)("admin.redeem.batchFields.expiresAt")),1)]),l.update_expires_at?(i(),c(j,{key:0},[x(T,{modelValue:l.expires_mode,"onUpdate:modelValue":t[22]||(t[22]=e=>l.expires_mode=e),options:he.value},null,8,["modelValue","options"]),l.expires_mode==="custom"?h((i(),c("input",{key:0,"onUpdate:modelValue":t[23]||(t[23]=e=>l.expires_at_local=e),type:"datetime-local",class:"input"}
2,null,512)),[[E,l.expires_at_local]]):b("",!0)],64)):b("",!0)]),s("div",ra,[s("label",la,[h(s("input",{"data-test":"batch-field-notes","onUpdate:modelValue":t[24]||(t[24]=e=>l.update_notes=e),type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500"},null,512),[[J,l.update_notes]]),w(" "+d(r(a)("admin.redeem.batchFields.notes")),1)]),l.update_notes?h((i(),c("textarea",{key:0,"data-test":"batch-notes-input","onUpdate:modelValue":t[25]||(t[25]=e=>l.notes=e),rows:"3",class:"input",placeholder:r(a)("admin.redeem.batchNotesPlaceholder")},null,8,na)),[[E,l.notes]]):b("",!0)]),s("div",da,[s("label",ia,[h(s("input",{"onUpdate:modelValue":t[26]||(t[26]=e=>l.update_group_id=e),type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500"},null,512),[[J,l.update_group_id]]),w(" "+d(r(a)("admin.redeem.batchFields.group")),1)]),l.update_group_id?(i(),k(T,{key:0,modelValue:l.group_id,"onUpdate:modelValue":t[27]||(t[27]=e=>l.group_id=e),options:me.value,placeholder:r(a)("admin.redeem.selectGroupPlaceholder")},null,8,["modelValue","options","placeholder"])):b("",!0)]),s("div",ua,[s("button",{type:"button",onClick:ie,class:"btn btn-secondary"},d(r(a)("common.cancel")),1),s("button",{"data-test":"batch-update-submit",type:"submit",disabled:F.value,class:"btn btn-primary"},d(F.value?r(a)("common.submitting"):r(a)("admin.redeem.batchUpdate")),9,ca)])],32)])])):b("",!0)])),(i(),k(te,{to:"body"},[K.value?(i(),c("div",ma,[s("div",{class:"fixed inset-0 bg-black/50",onClick:re}),s("div",pa,[s("div",ba,[s("div",ya,[t[30]||(t[30]=s("div",{class:"flex h-10 w-10 items-center justify-center rounded-full bg-green-100 dark:bg-green-900/30"},[s("svg",{class:"h-5 w-5 text-green-600 dark:text-green-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"})])],-1)),s("div",null,[s("h2",ga,d(r(a)("admin.redeem.generatedSuccessfully")),1),s("p",xa,d(r(a)("admin.redeem.codesCreated",{count:A.value.length})),1)])]),s("button",{onClick:re,class:"rounded-lg p-1.5 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-dark-700 dark:hover:text-gray-300"},[x($,{name:"x",size:"md","stroke-width":2})])]),s("div",va,[s("div",_a,[s("textarea",{readonly:"",value:Y.value,style:Ye
2({height:pe.value}),class:"w-full resize-none rounded-lg border border-gray-200 bg-gray-50 p-3 font-mono text-sm text-gray-800 focus:outline-none dark:border-dark-600 dark:bg-dark-700 dark:text-gray-200"},null,12,fa)])]),s("div",ha,[s("button",{onClick:be,class:D(["btn flex items-center gap-2 transition-all",z.value?"btn-success":"btn-secondary"])},[z.value?(i(),c("svg",ka,[...t[31]||(t[31]=[s("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M5 13l4 4L19 7"},null,-1)])])):(i(),k($,{key:0,name:"copy",size:"sm","stroke-width":2})),w(" "+d(z.value?r(a)("admin.redeem.copied"):r(a)("admin.redeem.copyAll")),1)],2),s("button",{onClick:ye,class:"btn btn-primary flex items-center gap-2"},[x($,{name:"download",size:"sm","stroke-width":2}),w(" "+d(r(a)("admin.redeem.download")),1)])])])])):b("",!0)]))]),_:1}))}});export{Na 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.