1import{d as As,w as gt,D as Y,c as I,u as o,K as x,B as e,z as r,E as d,G as n,r as c,W as K,F as V,L as de,M as Ee,s as ws,U as qe,A as ae,C as l,H as C,p as ue,$ as Rs,o as yt,a as _t,k as v,S as Je,a1 as Cs,Q as ft,_ as ht}from"./vendor-vue-CO3ApL3c.js";import{g as Xe,j as G,a as xt,_ as T,x as Ss,A as kt}from"./index-Cso_LBa8.js";import{u as wt}from"./useTableSelection-ovp2_28P.js";import{u as Is}from"./vendor-i18n-DCjIvhmF.js";import{g as Ct}from"./usePersistedPageSize-x0WpaIWh.js";import{_ as St,c as $t,i as Ut,a as $s}from"./AppLayout.vue_vue_type_script_setup_true_lang-D37IuHur.js";import{T as Dt}from"./TablePageLayout-CkQYrU_U.js";import{D as Et}from"./DataTable-DcnkDVaw.js";import{P as Tt}from"./Pagination-DDP2G-PT.js";import{_ as Ye}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DlSXnqdo.js";import{_ as At}from"./EmptyState.vue_vue_type_script_setup_true_lang-DnA5sN0X.js";import{S as Oe}from"./Select-tZ28QLZq.js";import{_ as Us}from"./GroupBadge.vue_vue_type_script_setup_true_lang-DRO7JgvR.js";import{G as Rt}from"./GroupOptionItem-g0HwJ56R.js";import{G as It}from"./platforms-Dme8ei5G.js";import"./vendor-misc-CxyBHc-c.js";/* empty css */import"./useClipboard-CjWBydCx.js";import"./LocaleSwitcher-BSNonSzG.js";/* empty css */import"./peak-rate-qZGUWdry.js";import"./PlatformIcon.vue_vue_type_script_setup_true_lang-DZ4wnuyd.js";const Ze=new Map;function Mt(){var f;try{const t=JSON.parse(((f=globalThis.localStorage)==null?void 0:f.getItem("auth_user"))??"null"),p=t==null?void 0:t.id;return typeof p=="number"&&Number.isSafeInteger(p)&&p>0?p:null}catch{return null}}function jt(f){var t;try{return((t=globalThis.sessionStorage)==null?void 0:t.getItem(f))??null}catch{return null}}function Ms(f,t){var p,k;try{t?(p=globalThis.sessionStorage)==null||p.setItem(f,t):(k=globalThis.sessionStorage)==null||k.removeItem(f)}catch{}}function zt(f){var N,X;const t={subscription_ids:[...new Set(f.subscription_ids)].sort((A,Z)=>A-Z),action:f.action};f.action==="extend"&&(t.days=f.days),f.action==="reset_quota"&&(t.daily=!!f.daily,t.weekly=!!f.weekly,t.monthly=!!f.monthly);const p=Mt(),k=p?`sub2api:admin:subscription-bulk:${p}:${JSON.stringify(t)}`:null;let b=k?Ze.get(k)??jt(k):null;const M=!!b;if(!b){const A=((X=(N=globalThis.crypto)==null?void 0:N.randomUUID)==null?void 0:X.call(N))??`${Date.now()}-${Math.random().toString(36).slice(2)}`;b=`subscription-bulk-${p??"unknown"}-${A}`}return k&&(Ze.set(k,b),Ms(k,b)),{request:t,key:b,storageKey:k,outcomeUncertain:M}}function Ds(f){f.storageKey&&(Ze.delete(f.storageKey),Ms(f.storageKey,null))}const Ft={class:"mb-2 text-sm font-medium text-gray-900 dark:text-gray-100"},Vt={class:"max-h-48 divide-y divide-gray-100 overflow-y-auto rounded-lg border border-gray-200 dark:divide-dark-700 dark:border-dark-600"},Ot={class:"break-all text-gray-900 dark:text-gray-100"},qt={class:"break-words text-xs text-gray-500 dark:text-gray-400"},Nt={key:0,class:"ml-2"},Lt=["disabled"],Pt={key:0},Ht={for:"bulk-subscription-days",class:"input-label"},Bt=["disabled","placeholder"],Qt={id:"bulk-subscription-days-hint",class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Gt={class:"text-sm font-medium text-gray-700 dark:text-gray-200"},Kt={class:"flex flex-wrap gap-5"},Wt=["onUpdate:modelValue","name","disabled"],Jt={class:"text-xs text-gray-500 dark:text-gray-400"},Yt={key:2,class:"rounded-lg bg-amber-50 p-3 text-sm text-amber-800 dark:bg-amber-900/20 dark:text-amber-200"},Xt={key:0,role:"alert",class:"text-sm text-red-600 dark:text-red-400"},Zt={key:1,role:"alert",class:"space-y-2 rounded-lg bg-red-50 p-3 text-sm text-red-700 dark:bg-red-900/20 dark:text-red-300"},ea={key:0},sa={key:2,"aria-live":"polite",class:"space-y-3"},ta={class:"rounded-lg bg-gray-50 p-3 text-sm font-medium text-gray-900 dark:bg-dark-700 dark:text-gray-100"},aa={key:0,class:"max-h-48 space-y-2 overflow-y-auto"},ia={class:"break-all font-medium"},oa={class:"mt-1 break-words"},na={class:"flex justify-end gap-3"},la=["disabled"],ra=["disabled"],ua=As({__name:"BulkSubscriptionActionDialog",props:{show:{type:Boolean},action:{},subscriptions:{}},emits:["close","completed"],setup(f,{emit:t}){const p=f,k=t,{t:b}=Is(),M=["daily","weekly","monthly"],N=c(30),X=ue({daily:!0,weekly:!0,monthly:!0}),A=c(!1),Z=c(""),O=ws(null),S=ws(null),W=c([]),ye=c(null),ee=I(()=>ye.value??p.action),ie=I(()=>A.value||!!S.value||!!O.value),ce=I(()=>!A.value),Te=I(()=>{var y;return((y=O.value)==null?void 0:y.results.filter(_=>!_.success))??[]}),se=I(()=>
1{if(W.value.length===0)return b("admin.subscriptions.bulk.selectionRequired");if(W.value.length>100)return b("admin.subscriptions.bulk.selectionLimit");if(ee.value==="extend"){const y=Number(N.value);if(!Number.isInteger(y)||y===0||Math.abs(y)>36500)return b("admin.subscriptions.bulk.invalidDays")}return ee.value==="reset_quota"&&!M.some(y=>X[y])?b("admin.subscriptions.bulk.selectWindow"):""});gt(()=>p.subscriptions,y=>{ie.value||(W.value=y.map(_=>{var m,L;return{id:_.id,email:(m=_.user)==null?void 0:m.email,group:(L=_.group)==null?void 0:L.name,groupId:_.group_id}}))},{immediate:!0});function me(){ce.value&&k("close")}function Ne(y){const _=W.value.find(m=>m.id===y);return _!=null&&_.email?`${_.email} · #${y}`:`#${y}`}async function oe(){var _,m,L;if(A.value||O.value)return;if(!S.value){if(se.value)return;const P={subscription_ids:W.value.map(U=>U.id),action:p.action};P.action==="extend"&&(P.days=Number(N.value)),P.action==="reset_quota"&&Object.assign(P,{...X}),S.value=zt(P),ye.value=P.action}const y=S.value;A.value=!0,Z.value="";try{O.value=await G.subscriptions.bulkAction(y.request,y.key),Ds(y),S.value=null,k("completed",O.value)}catch(P){const U=P;Z.value=(U==null?void 0:U.message)||((m=(_=U==null?void 0:U.response)==null?void 0:_.data)==null?void 0:m.message)||b("admin.subscriptions.bulk.requestFailed");const q=(U==null?void 0:U.status)??((L=U==null?void 0:U.response)==null?void 0:L.status);!y.outcomeUncertain&&q&&q>=400&&q<500&&q!==408&&q!==409?(Ds(y),S.value=null,ye.value=null):y.outcomeUncertain=!0}finally{A.value=!1}}return(y,_)=>(l(),Y(Xe,{show:f.show,title:o(b)(`admin.subscriptions.bulk.${ee.value}`),width:"normal","close-on-escape":ce.value,"show-close-button":ce.value,onClose:me},{footer:x(()=>[e("div",na,[e("button",{type:"button",class:"btn btn-secondary",disabled:!ce.value,onClick:me},n(O.value?o(b)("common.close"):o(b)("common.cancel")),9,la),O.value?d("",!0):(l(),r("button",{key:0,type:"submit",form:"bulk-subscription-action-form",class:ae(["btn",ee.value==="revoke"?"btn-danger":"btn-primary"]),disabled:A.value||!S.value&&!!se.value},n(A.value?o(b)("common.processing"):S.value?o(b)("admin.subscriptions.bulk.retry"):o(b)("admin.subscriptions.bulk.confirm")),11,ra))])]),default:x(()=>[e("form",{id:"bulk-subscription-action-form",class:"space-y-4",novalidate:"",onSubmit:qe(oe,["prevent"])},[e("div",null,[e("p",Ft,n(o(b)("admin.subscriptions.bulk.confirmTargets",{count:W.value.length})),1),e("ul",Vt,[(l(!0),r(V,null,K(W.value,m=>(l(),r("li",{key:m.id,class:"px-3 py-2 text-sm"},[e("div",Ot,n(m.email||`#${m.id}`),1),e("div",qt,[C(n(m.group||o(b)("admin.subscriptions.bulk.groupFallback",{id:m.groupId}))+" ",1),m.email?(l(),r("span",Nt,"#"+n(m.id),1)):d("",!0)])]))),128))])]),e("fieldset",{disabled:ie.value,class:"space-y-3 disabled:opacity-70"},[ee.value==="extend"?(l(),r("div",Pt,[e("label",Ht,n(o(b)("admin.subscriptions.form.adjustDays")),1),de(e("input",{id:"bulk-subscription-days","onUpdate:modelValue":_[0]||(_[0]=m=>N.value=m),type:"number",min:"-36500",max:"36500",step:"1",class:"input",disabled:ie.value,placeholder:o(b)("admin.subscriptions.adjustDaysPlaceholder"),"aria-describedby":"bulk-subscription-days-hint"},null,8,Bt),[[Ee,N.value,void 0,{number:!0}]]),e("p",Qt,n(o(b)("admin.subscriptions.bulk.extendHint")),1)])):ee.value==="reset_quota"?(l(),r(V,{key:1},[e("legend",Gt,n(o(b)("admin.subscriptions.bulk.resetWindows")),1),e("div",Kt,[(l(),r(V,null,K(M,m=>e("label",{key:m,class:"flex items-center gap-2 text-sm text-gray-700 dark:text-gray-300"},[de(e("input",{"onUpdate:modelValue":L=>X[m]=L,name:m,type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500",disabled:ie.value},null,8,Wt),[[Rs,X[m]]]),C(" "+n(o(b)(`admin.subscriptions.${m}`)),1)])),64))]),e("p",Jt,n(o(b)("admin.subscriptions.bulk.resetHint")),1)],64)):(l(),r("p",Yt,n(o(b)(`admin.subscriptions.bulk.${ee.value}Hint`)),1))],8,Lt),se.value&&!ie.value?(l(),r("p",Xt,n(se.value),1)):d("",!0),Z.value?(l(),r("div",Zt,[e("p",null,n(Z.value),1),S.value?(l(),r("p",ea,n(o(b)("admin.subscriptions.bulk.retryHint")),1)):d("",!0)])):d("",!0),O.value?(l(),r("div",sa,[e("p",ta,n(o(b)("admin.subscriptions.bulk.result",{success:O.value.success_count,failed:O.value.failed_count})),1),Te.value.length?(l(),r("ul",aa,[(l(!0),r(V,null,K(Te.value,m=>(l(),r("li",{key:m.subscription_id,class:"rounded-lg bg-red-50 p-3 text-sm text-red-700 dark:bg-red-900/20 dark:text-red-300"},[e("p",ia,n(Ne(m.subscription_id)),1),e("p",oa,n(m.error||o(b)("admin.subscriptions.bulk.itemFailed")),1)]))),128))])):d("",!0)])):d("",!0)],32)]),_:1},8,["show","title","close-on-escape","show-close-button"]))}}),da={class:"flex flex-wrap items-start justify-between gap-4"},ca={class:"flex flex-1 flex-wrap items-center gap-3"},ma={class:"relative w-full sm:w-64","data-filter-user-search":""},pa=["placeholder"],ba=["title"],va={key:1,class:"absolute z-50 mt-1 max-h-60 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-dark-700 dark:bg-dark-800"},ga={key:0,class:"px-4 py-3 text-sm text-gray-500 dark:text-gray-400"},ya={key:1,class:"px-4 py-3 text-sm text-gray-500 dark:text-gray-400"},_a=["onClick"],fa={class:"font-medium text-gray-900 dark:text-white"},ha={class:"ml-2 text-gray-500 dark:text-gray-400"},xa={class:"w-full sm:w-40"},ka={class:"w-full sm:w-48"},wa={class:"w-full sm:w-40"},Ca={class:"ml-auto flex flex-wrap items-center justify-end gap-3"},Sa=["disabled","title"],$a=["title"],Ua={class:"hidden md:inline"},Da={key:0,class:"absolute right-0 z-50 mt-2 w-48 origin-top-right rounded-lg border border-gray-200 bg-white shadow-lg dark:border-dark-700 dark:bg-dark-800"},Ea={class:"p-2"},Ta={class:"mb-2 border-b border-gray-200 pb-2 dark:border-dark-700"},Aa={class:"px-3 py-1 text-xs font-medium text-gray-500 dark:text-gray-400"},Ra=["onClick"],Ia=["title"],Ma={key:0,class:"mt-3 space-y-2 rounded-xl border border-primary-200 bg-primary-50 p-3 dark:border-primary-800 dark:bg-primary-900/20","data-test":"subscription-bulk-actions"},ja={class:"flex flex-wrap items-center gap-2"},za={class:"mr-2 text-sm font-medium text-primary-800 dark:text-primary-200"},Fa=["data-test","disabled","onClick"],Va={class:"text-xs text-gray-600 dark:text-gray-400"},Oa={class:"flex items-center gap-2"},qa={class:"flex h-8 w-8 items-center justify-center rounded-full bg-primary-100 dark:bg-primary-900/30"},Na={class:"text-sm font-medium text-primary-700 dark:text-primary-300"},La={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},Pa={class:"min-w-[280px] space-y-2"},Ha={key:0,class:"usage-row"},Ba={class:"flex items-center gap-2"},Qa={class:"usage-label"},Ga={class:"h-1.5 flex-1 rounded-full bg-gray-200 dark:bg-dark-600"},Ka={class:"usage-amount"},Wa={key:0,class:"reset-info"},Ja={key:1,class:"usage-row"},Ya={class:"flex items-center gap-2"},Xa={class:"usage-label"},Za={class:"h-1.5 flex-1 rounded-full bg-gray-200 dark:bg-dark-600"},ei={class:"usage-amount"},si={key:0,class:"reset-info"},ti={key:2,class:"usage-row"},ai={class:"flex items-center gap-2"},ii={class:"usage-label"},oi={class:"h-1.5 flex-1 rounded-full bg-gray-200 dark:bg-dark-600"},ni={class:"usage-amount"},li={key:0,class:"reset-info"},ri={key:3,class:"flex items-center gap-2 rounded-lg bg-gradient-to-r from-emerald-50 to-teal-50 px-3 py-2 dark:from-emerald-900/20 dark:to-teal-900/20"},ui={class:"text-xs font-medium text-emerald-700 dark:text-emerald-300"},di={key:0},ci={key:0,class:"text-xs text-gray-500"},mi={key:1,class:"text-sm text-gray-500"},pi={class:"flex items-center gap-1"},bi=["onClick"],vi={class:"text-xs"},gi=["onClick","disabled"],yi={class:"text-xs"},_i=["onClick"],fi={class:"text-xs"},hi=["onClick"],xi={class:"text-xs"},ki={class:"flex items-center gap-2 text-sm text-gray-700 dark:text-gray-300"},wi=["disabled"],Ci={key:0,class:"input-hint"},Si={class:"input-label"},$i={class:"relative","data-assign-user-search":""},Ui=["disabled","placeholder"],Di={key:1,class:"absolute z-50 mt-1 max-h-60 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-dark-700 dark:bg-dark-800"},Ei={key:0,class:"px-4 py-3 text-sm text-gray-500 dark:text-gray-400"},Ti={key:1,class:"px-4 py-3 text-sm text-gray-500 dark:text-gray-400"},Ai=["disabled","onClick"],Ri={class:"font-medium text-gray-900 dark:text-white"},Ii={class:"ml-2 text-gray-500 dark:text-gray-400"},Mi={key:0,class:"mt-2 space-y-2","data-test":"assign-users"},ji={class:"text-sm text-gray-600 dark:text-gray-400"},zi={class:"max-h-40 space-y-1 overflow-y-auto"},Fi={class:"truncate"},Vi={class:"text-gray-500"},Oi=["disabled","aria-label","onClick"],qi={class:"input-label"},Ni={key:1,class:"text-gray-400"},Li={class:"input-hint"},Pi={class:"input-label"},Hi=["disabled"],Bi={class:"input-hint"}
1,Qi={key:1,class:"space-y-2 text-sm",role:"status","data-test":"batch-assign-result"},Gi={key:0,class:"max-h-40 space-y-1 overflow-y-auto text-red-600 dark:text-red-400"},Ki={key:1,class:"input-hint"},Wi={class:"flex justify-end gap-3"},Ji=["disabled"],Yi=["disabled"],Xi={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},Zi={class:"rounded-lg bg-gray-50 p-4 dark:bg-dark-700"},eo={class:"text-sm text-gray-600 dark:text-gray-400"},so={class:"font-medium text-gray-900 dark:text-white"},to={class:"mt-1 text-sm text-gray-600 dark:text-gray-400"},ao={class:"font-medium text-gray-900 dark:text-white"},io={key:0,class:"mt-1 text-sm text-gray-600 dark:text-gray-400"},oo={class:"font-medium text-gray-900 dark:text-white"},no={class:"input-label"},lo={class:"flex items-center gap-2"},ro=["placeholder"],uo={class:"input-hint"},co={key:0,class:"flex justify-end gap-3"},mo=["disabled"],po={class:"relative max-h-[85vh] w-full max-w-2xl overflow-y-auto rounded-xl bg-white p-6 shadow-2xl dark:bg-dark-800"},bo={class:"mb-4 text-lg font-bold text-gray-900 dark:text-white"},vo={class:"mb-5 text-sm text-gray-500 dark:text-gray-400"},go={class:"mb-5"},yo={class:"mb-2 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},_o={class:"ml-8 list-decimal space-y-1 text-sm text-gray-600 dark:text-gray-300"},fo={class:"ml-8 mt-2"},ho={class:"mb-5"},xo={class:"mb-2 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},ko={class:"ml-8 list-decimal space-y-1 text-sm text-gray-600 dark:text-gray-300"},wo={class:"mb-5"},Co={class:"mb-2 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},So={class:"ml-8 overflow-hidden rounded-lg border border-gray-200 dark:border-dark-600"},$o={class:"w-full text-sm"},Uo={class:"whitespace-nowrap bg-gray-50 px-3 py-2 font-medium text-gray-700 dark:bg-dark-700 dark:text-gray-300"},Do={class:"px-3 py-2 text-gray-600 dark:text-gray-400"},Eo={class:"rounded-lg bg-blue-50 p-3 text-xs text-blue-700 dark:bg-blue-900/20 dark:text-blue-300"},To={class:"mt-4 text-right"},Es="subscription-user-column-mode",Ts="subscription-hidden-columns",Ao=As({__name:"SubscriptionsView",setup(f){const{t}=Is(),p=xt(),k=c(!1),b=I(()=>[{action:t("admin.subscriptions.guide.actions.adjust"),desc:t("admin.subscriptions.guide.actions.adjustDesc")},{action:t("admin.subscriptions.guide.actions.resetQuota"),desc:t("admin.subscriptions.guide.actions.resetQuotaDesc")},{action:t("admin.subscriptions.guide.actions.revoke"),desc:t("admin.subscriptions.guide.actions.revokeDesc")}]),M=c("email"),N=()=>{try{const a=localStorage.getItem(Es);(a==="email"||a==="username")&&(M.value=a)}catch(a){console.error("Failed to load user column mode:",a)}},X=()=>{try{localStorage.setItem(Es,M.value)}catch(a){console.error("Failed to save user column mode:",a)}},A=a=>{M.value=a,X()},Z=I(()=>[{key:"user",label:M.value==="email"?t("admin.subscriptions.columns.user"):t("admin.users.columns.username"),sortable:!1},{key:"group",label:t("admin.subscriptions.columns.group"),sortable:!1},{key:"usage",label:t("admin.subscriptions.columns.usage"),sortable:!1},{key:"expires_at",label:t("admin.subscriptions.columns.expires"),sortable:!0},{key:"status",label:t("admin.subscriptions.columns.status"),sortable:!0},{key:"actions",label:t("admin.subscriptions.columns.actions"),sortable:!1}]),O=I(()=>Z.value.filter(a=>a.key!=="user"&&a.key!=="actions")),S=ue(new Set),W=[],ye=()=>{try{const a=localStorage.getItem(Ts);a?JSON.parse(a).forEach(u=>S.add(u)):W.forEach(s=>S.add(s))}catch(a){console.error("Failed to load saved columns:",a),W.forEach(s=>S.add(s))}},ee=()=>{try{localStorage.setItem(Ts,JSON.stringify([...S]))}catch(a){console.error("Failed to save columns:",a)}},ie=a=>{S.has(a)?S.delete(a):S.add(a),ee()},ce=a=>!S.has(a),Te=I(()=>Z.value.filter(a=>a.key==="user"||a.key==="actions"||!S.has(a.key))),se=c(!1),me=c(null),Ne=I(()=>[{value:"",label:t("admin.subscriptions.allStatus")},{value:"active",label:t("admin.subscriptions.status.active")},{value:"expired",label:t("admin.subscriptions.status.expired")},{value:"revoked",label:t("admin.subscriptions.status.revoked")}]),oe=c([]),y=c([]),_=c(!1);let m=null;const{selectedIds:L,selectedCount:P,setSelectedIds:U,clear:q,removeMany:js}=wt({rows:oe,getId:a=>a.id}),zs=["extend","reset_quota","revoke","restore"],Ae=c(null),es=c([]),Re=I(()=>{const a=oe.value.filter(s=>
1L.value.includes(s.id));return{extend:a.filter(s=>["active","expired"].includes(s.status)),reset_quota:a.filter(s=>s.status==="active"),revoke:a.filter(s=>s.status==="active"),restore:a.filter(s=>s.status==="revoked")}}),Fs=a=>t("admin.subscriptions.bulk.selectSubscription",{id:a.id}),Vs=a=>{const s=new Set(oe.value.map(u=>u.id));U(a.filter(u=>typeof u=="number"&&s.has(u)))},Os=a=>{_.value||Re.value[a].length===0||(es.value=[...Re.value[a]],Ae.value=a)},qs=async a=>{js(a.results.filter(s=>s.success).map(s=>s.subscription_id)),await F()},ne=c(""),le=c([]),Le=c(!1),_e=c(!1),pe=c(null);let fe=null;const J=c(""),te=c([]),Pe=c(!1),be=c(!1),re=c(null),H=c(!1),$=c([]),B=c(null);let he=null;const R=ue({status:"active",group_id:"",platform:"",user_id:null}),Ie=ue({sort_by:"created_at",sort_order:"desc"}),j=ue({page:1,page_size:Ct(),total:0,pages:0}),Me=c(!1),He=c(!1),je=c(!1),ze=c(!1),Fe=c(!1),h=c(!1),ve=c(null),Ve=c(!1),z=c(null),xe=c(null),ke=c(null),w=ue({user_id:null,group_id:null,validity_days:30}),we=ue({days:30}),Ns=I(()=>[{value:"",label:t("admin.subscriptions.allGroups")},...y.value.map(a=>({value:a.id.toString(),label:a.name}))]),Ls=I(()=>[{value:"",label:t("admin.subscriptions.allPlatforms")},...It]),Ps=I(()=>y.value.filter(a=>a.subscription_type==="subscription"&&a.status==="active").map(a=>({value:a.id,label:a.name,description:a.description,platform:a.platform,subscriptionType:a.subscription_type,rate:a.rate_multiplier}))),ge=()=>{q(),j.page=1,F()},F=async()=>{m&&m.abort();const a=new AbortController;m=a;const{signal:s}=a;_.value=!0;try{const u=await G.subscriptions.list(j.page,j.page_size,{status:R.status||void 0,group_id:R.group_id?parseInt(R.group_id):void 0,platform:R.platform||void 0,user_id:R.user_id||void 0,sort_by:Ie.sort_by,sort_order:Ie.sort_order},{signal:s});if(s.aborted||m!==a)return;oe.value=u.items;const E=new Set(u.items.map(D=>D.id));U(L.value.filter(D=>E.has(D))),j.total=u.total,j.pages=u.pages}catch(u){if(s.aborted||(u==null?void 0:u.name)==="AbortError"||(u==null?void 0:u.code)==="ERR_CANCELED")return;p.showError(t("admin.subscriptions.failedToLoad")),console.error("Error loading subscriptions:",u)}finally{m===a&&(_.value=!1,m=null)}},Hs=async()=>{try{y.value=await G.groups.getAll()}catch(a){console.error("Error loading groups:",a)}},Bs=()=>{fe&&clearTimeout(fe),fe=setTimeout(Qs,300)},Qs=async()=>{const a=ne.value.trim();if(pe.value&&a!==pe.value.email&&(pe.value=null,R.user_id=null,ge()),!a){le.value=[];return}Le.value=!0;try{le.value=await G.usage.searchUsers(a)}catch(s){console.error("Failed to search users:",s),le.value=[]}finally{Le.value=!1}},Gs=a=>{pe.value=a,ne.value=a.email,_e.value=!1,R.user_id=a.id,ge()},Ks=()=>{pe.value=null,ne.value="",le.value=[],_e.value=!1,R.user_id=null,ge()},Ws=()=>{re.value&&J.value.trim()!==re.value.email&&(re.value=null,w.user_id=null),he&&clearTimeout(he),he=setTimeout(Js,300)},Js=async()=>{const a=J.value.trim();if(!a){te.value=[];return}Pe.value=!0;try{const s=await G.users.list(1,30,{search:a,sort_by:"email",sort_order:"asc"});te.value=s.items}catch(s){console.error("Failed to search users:",s),te.value=[]}finally{Pe.value=!1}},Ys=a=>{if(!h.value){if(H.value){$.value.length<100&&!$.value.some(s=>s.id===a.id)&&($.value=[...$.value,a]),J.value="",te.value=[],be.value=!1;return}re.value=a,J.value=a.email,be.value=!1,w.user_id=a.id}},ss=()=>{re.value=null,J.value="",te.value=[],w.user_id=null},Xs=()=>{ss(),$.value=[],B.value=null},Zs=a=>{q(),j.page=a,F()},et=a=>{q(),j.page_size=a,j.page=1,F()},st=(a,s)=>{q(),Ie.sort_by=a,Ie.sort_order=s,j.page=1,F()},Be=()=>{h.value||(Me.value=!1,H.value=!1,$.value=[],B.value=null,w.user_id=null,w.group_id=null,w.validity_days=30,re.value=null,J.value="",te.value=[],be.value=!1)},tt=async()=>{var a,s;if(!h.value){if(H.value?$.value.length===0:!w.user_id){p.showError(t("admin.subscriptions.pleaseSelectUser"));return}if(!w.group_id){p.showError(t("admin.subscriptions.pleaseSelectGroup"));return}if(!Number.isInteger(w.validity_days)||w.validity_days<1||w.validity_days>36500){p.showError(t("admin.subscriptions.validityDaysRequired"));return}h.value=!0;try{if(H.value){B.value=await G.subscriptions.bulkAssign({user_ids:$.value.map(D=>
1D.id),group_id:w.group_id,validity_days:w.validity_days});const u=B.value,E=new Set(u.subscriptions.map(D=>D.user_id));$.value=$.value.filter(D=>!E.has(D.id)),u.success_count>0&&(p.showSuccess(t("admin.subscriptions.batchAssign.result",{success:u.success_count,failed:u.failed_count})),await F());return}await G.subscriptions.assign({user_id:w.user_id,group_id:w.group_id,validity_days:w.validity_days}),p.showSuccess(t("admin.subscriptions.subscriptionAssigned")),h.value=!1,Be(),F()}catch(u){p.showError(((s=(a=u.response)==null?void 0:a.data)==null?void 0:s.detail)||t("admin.subscriptions.failedToAssign")),console.error("Error assigning subscription:",u)}finally{h.value=!1}}},at=a=>{z.value=a,we.days=30,He.value=!0},Qe=()=>{He.value=!1,z.value=null},it=async()=>{var a,s;if(z.value){if(z.value.expires_at){const u=new Date(z.value.expires_at);if(new Date(u.getTime()+we.days*24*60*60*1e3)<=new Date){p.showError(t("admin.subscriptions.adjustWouldExpire"));return}}h.value=!0;try{await G.subscriptions.extend(z.value.id,{days:we.days}),p.showSuccess(t("admin.subscriptions.subscriptionAdjusted")),Qe(),F()}catch(u){p.showError(((s=(a=u.response)==null?void 0:a.data)==null?void 0:s.detail)||t("admin.subscriptions.failedToAdjust")),console.error("Error adjusting subscription:",u)}finally{h.value=!1}}},ot=a=>{xe.value=a,je.value=!0},nt=async()=>{var a,s;if(xe.value)try{await G.subscriptions.revoke(xe.value.id),p.showSuccess(t("admin.subscriptions.subscriptionRevoked")),je.value=!1,xe.value=null,F()}catch(u){p.showError(((s=(a=u.response)==null?void 0:a.data)==null?void 0:s.detail)||t("admin.subscriptions.failedToRevoke")),console.error("Error revoking subscription:",u)}},lt=a=>{ke.value=a,ze.value=!0},rt=async()=>{var a,s;if(ke.value)try{await G.subscriptions.restore(ke.value.id),p.showSuccess(t("admin.subscriptions.subscriptionRestored")),ze.value=!1,ke.value=null,F()}catch(u){p.showError(((s=(a=u.response)==null?void 0:a.data)==null?void 0:s.detail)||t("admin.subscriptions.failedToRestore")),console.error("Error restoring subscription:",u)}},ut=a=>{ve.value=a,Fe.value=!0},dt=async()=>{var a,s;if(ve.value&&!Ve.value){Ve.value=!0;try{await G.subscriptions.resetQuota(ve.value.id,{daily:!0,weekly:!0,monthly:!0}),p.showSuccess(t("admin.subscriptions.quotaResetSuccess")),Fe.value=!1,ve.value=null,await F()}catch(u){p.showError(((s=(a=u.response)==null?void 0:a.data)==null?void 0:s.detail)||t("admin.subscriptions.failedToResetQuota")),console.error("Error resetting quota:",u)}finally{Ve.value=!1}}},ts=a=>{const s=new Date,E=new Date(a).getTime()-s.getTime();return E<0?null:Math.ceil(E/(1e3*60*60*24))},ct=a=>{const s=$t(a);return s?s.unit==="days"?t("admin.subscriptions.daysRemaining",{days:s.days}):s.hours?t("admin.subscriptions.hoursMinutesRemaining",{hours:s.hours,minutes:s.minutes}):t("admin.subscriptions.minutesRemaining",{minutes:s.minutes}):null},mt=a=>{const s=ts(a);return s!==null&&s<=7},Ge=(a,s)=>!s||s===0?"0%":`${Math.min((a??0)/s*100,100)}%`,Ke=(a,s)=>{if(!s||s===0)return"bg-gray-400";const E=(a??0)/s*100;return E>=90?"bg-red-500":E>=70?"bg-orange-500":"bg-green-500"},pt=a=>a.days>0?t("admin.subscriptions.resetInDaysHours",{days:a.days,hours:a.hours}):a.hours>0?t("admin.subscriptions.resetInHoursMinutes",{hours:a.hours,minutes:a.minutes}):t("admin.subscriptions.resetInMinutes",{minutes:a.minutes}),bt=a=>a.days>0?t("admin.subscriptions.quotaEndsInDaysHours",{days:a.days,hours:a.hours}):a.hours>0?t("admin.subscriptions.quotaEndsInHoursMinutes",{hours:a.hours,minutes:a.minutes}):t("admin.subscriptions.quotaEndsInMinutes",{minutes:a.minutes}),vt=a=>{if(Ut(a)&&a.expires_at){const s=$s(a.expires_at);return s?bt(s):t("admin.subscriptions.windowNotActive")}return We(a.daily_window_start,"daily")},We=(a,s)=>{if(!a)return t("admin.subscriptions.windowNotActive");const u=new Date(a),E=new Date;let D;switch(s){case"daily":D=new Date(u.getTime()+24*60*60*1e3);break;case"weekly":D=new Date(u.getTime()+7*24*60*60*1e3);break;case"monthly":D=new Date(u.getTime()+30*24*60*60*1e3);break}const Ce=$s(D,E);return Ce?pt(Ce):t("admin.subscriptions.windowNotActive")},as=a=>{const s=a.target;s.closest("[data-assign-user-search]")||(be.value=!1),s.closest("[data-filter-user-search]")||(_e.value=!1),me.value&&!me.value.contains(s)&&(se.value=!1)};return yt(()=>{N(),ye(),F(),Hs(),document.addEventListener("click",as)}),_t(()=>{document.removeEventListener("click",as),fe&&clearTimeout(fe),he&&clearTimeout(he)}),(a,s)=>{const u=Cs("RouterLink"),E=Cs("router-link");return l(),Y(St,null,{default:x(()=>{var D,Ce,is,os,ns,ls;return[v(Dt,null,{filters:x(()=>[e("div",da,[e("div",ca,[e("div",ma,[v(T,{name:"search",size:"md",class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400"}),de(e("input",{"onUpdate:modelValue":s[0]||(s[0]=i=>ne.value=i),type:"text",placeholder:o(t)("admin.users.searchUsers"),class:"input pl-10 pr-8",onInput:Bs,onFocus:s[1]||(s[1]=i=>_e.value=!0)},null,40,pa),[[Ee,ne.value]]),pe.value?(l(),r("button",{key:0,onClick:Ks,type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",title:o(t)("common.clear")},[v(T,{name:"x",size:"sm","stroke-width":2})],8,ba)):d("",!0),_e.value&&(le.value.length>0||ne.value)?(l(),r("div",va,[Le.value?(l(),r("div",ga,n(o(t)("common.loading")),1)):le.value.length===0&&ne.value?(l(),r("div",ya,n(o(t)("common.noOptionsFound")),1)):d("",!0),(l(!0),r(V,null,K(le.value,i=>(l(),r("button",{key:i.id,type:"button",onClick:g=>Gs(i),class:"w-full px-4 py-2 text-left text-sm hover:bg-gray-100 dark:hover:bg-dark-700"},[e("span",fa,n(i.email),1),e("span",ha,"#"+n(i.id),1)],8,_a))),128))])):d("",!0)]),e("div",xa,[v(Oe,{modelValue:R.status,"onUpdate:modelValue":s[2]||(s[2]=i=>R.status=i),options:Ne.value,placeholder:o(t)("admin.subscriptions.allStatus"),onChange:ge},null,8,["modelValue","options","placeholder"])]),e("div",ka,[v(Oe,{modelValue:R.group_id,"onUpdate:modelValue":s[3]||(s[3]=i=>R.group_id=i),options:Ns.value,placeholder:o(t)("admin.subscriptions.allGroups"),onChange:ge},null,8,["modelValue","options","placeholder"])]),e("div",wa,[v(Oe,{modelValue:R.platform,"onUpdate:modelValue":s[4]||(s[4]=i=>R.platform=i),options:Ls.value,placeholder:o(t)("admin.subscriptions.allPlatforms"),onChange:ge},null,8,["modelValue","options","placeholder"])])]),e("div",Ca,[e("button",{onClick:F,disabled:_.value,class:"btn btn-secondary",title:o(t)("common.refresh")},[v(T,{name:"refresh",size:"md",class:ae(_.value?"animate-spin":"")},null,8,["class"])],8,Sa),e("div",{class:"relative",ref_key:"columnDropdownRef",ref:me}
1,[e("button",{onClick:s[5]||(s[5]=i=>se.value=!se.value),class:"btn btn-secondary px-2 md:px-3",title:o(t)("admin.users.columnSettings")},[s[27]||(s[27]=e("svg",{class:"h-4 w-4 md:mr-1.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 4.5v15m6-15v15m-10.875 0h15.75c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125H4.125C3.504 4.5 3 5.004 3 5.625v12.75c0 .621.504 1.125 1.125 1.125z"})],-1)),e("span",Ua,n(o(t)("admin.users.columnSettings")),1)],8,$a),se.value?(l(),r("div",Da,[e("div",Ea,[e("div",Ta,[e("div",Aa,n(o(t)("admin.subscriptions.columns.user")),1),e("button",{onClick:s[6]||(s[6]=i=>A("email")),class:"flex w-full items-center justify-between rounded-md px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-200 dark:hover:bg-dark-700"},[e("span",null,n(o(t)("admin.users.columns.email")),1),M.value==="email"?(l(),Y(T,{key:0,name:"check",size:"sm",class:"text-primary-500"})):d("",!0)]),e("button",{onClick:s[7]||(s[7]=i=>A("username")),class:"flex w-full items-center justify-between rounded-md px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-200 dark:hover:bg-dark-700"},[e("span",null,n(o(t)("admin.users.columns.username")),1),M.value==="username"?(l(),Y(T,{key:0,name:"check",size:"sm",class:"text-primary-500"})):d("",!0)])]),(l(!0),r(V,null,K(O.value,i=>(l(),r("button",{key:i.key,onClick:g=>ie(i.key),class:"flex w-full items-center justify-between rounded-md px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-200 dark:hover:bg-dark-700"},[e("span",null,n(i.label),1),ce(i.key)?(l(),Y(T,{key:0,name:"check",size:"sm",class:"text-primary-500"})):d("",!0)],8,Ra))),128))])])):d("",!0)],512),e("button",{onClick:s[8]||(s[8]=i=>k.value=!0),class:"btn btn-secondary",title:o(t)("admin.subscriptions.guide.showGuide")},[v(T,{name:"questionCircle",size:"md"})],8,Ia),e("button",{onClick:s[9]||(s[9]=i=>Me.value=!0),class:"btn btn-primary"},[v(T,{name:"plus",size:"md",class:"mr-2"}),C(" "+n(o(t)("admin.subscriptions.assignSubscription")),1)])])]),o(P)>0?(l(),r("div",Ma,[e("div",ja,[e("span",za,n(o(t)("admin.subscriptions.bulk.selected",{count:o(P)})),1),(l(),r(V,null,K(zs,i=>e("button",{key:i,type:"button",class:ae(i==="revoke"?"btn btn-danger btn-sm":"btn btn-secondary btn-sm"),"data-test":`bulk-${i}`,disabled:_.value||Re.value[i].length===0,onClick:g=>Os(i)},n(o(t)(`admin.subscriptions.bulk.${i}`))+" ("+n(Re.value[i].length)+") ",11,Fa)),64)),e("button",{type:"button",class:"btn btn-secondary btn-sm",onClick:s[10]||(s[10]=(...i)=>o(q)&&o(q)(...i))},n(o(t)("admin.subscriptions.bulk.clearSelection")),1)]),e("p",Va,n(o(t)("admin.subscriptions.bulk.selectionHint")),1)])):d("",!0)]),table:x(()=>[v(Et,{columns:Te.value,data:oe.value,loading:_.value,"row-key":"id",selectable:"","selected-keys":o(L),"selection-label":Fs,"server-side-sort":!0,"default-sort-key":"created_at","default-sort-order":"desc",onSort:st,"onUpdate:selectedKeys":Vs},{"cell-user":x(({row:i})=>{var g,Q,Se,$e;return[e("div",Oa,[e("div",qa,[e("span",Na,n(M.value==="email"?((Q=(g=i.user)==null?void 0:g.email)==null?void 0:Q.charAt(0).toUpperCase())||"?":(($e=(Se=i.user)==null?void 0:Se.username)==null?void 0:$e.charAt(0).toUpperCase())||"?"),1)]),v(u,{to:{path:"/admin/usage",query:{user_id:i.user_id}},class:"rounded font-medium text-gray-900 hover:text-primary-600 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 dark:text-white dark:hover:text-primary-400 dark:focus-visible:ring-offset-dark-800"},{default:x(()=>{var Ue,De;return[C(n(M.value==="email"?((Ue=i.user)==null?void 0:Ue.email)||o(t)("admin.redeem.userPrefix",{id:i.user_id}):((De=i.user)==null?void 0:De.username)||o(t)("admin.redeem.userPrefix",{id:i.user_id})),1)]}),_:2},1032,["to"])])]}),"cell-group":x(({row:i})=>[i.group?(l(),Y(Us,{key:0,name:i.group.name,platform:i.group.platform,"subscription-type":i.group.subscription_type,"rate-multiplier":i.group.rate_multiplier,"show-rate":!1},null,8,["name","platform","subscription-type","rate-multiplier"])):(l(),r("span",La,"-"))]),"cell-usage":x(({row:i})=>{var g,Q,Se,$e,Ue,De,rs,us,ds,cs,ms,ps,bs,vs,gs,ys,_s,fs,hs,xs,ks;return[e("div",Pa,[(g=i.group)!=null&&g.daily_limit_usd?(l(),r("div",Ha,[e("div",Ba,[e("span",Qa,n(o(t)("admin.subscriptions.daily")),1),e("div",Ga,[e("div",{class:ae(["h-1.5 rounded-full transition-all",Ke(i.daily_usage_usd,(Q=i.group)==null?void 0:Q.daily_limit_usd)]),style:Je({width:Ge(i.daily_usage_usd,(Se=i.group)==null?void 0:Se.daily_limit_usd)})},null,6)]),e("span",Ka,[C(" $"+n((($e=i.daily_usage_usd)==null?void 0:$e.toFixed(2))||"0.00")+" ",1),s[28]||(s[28]=e("span",{class:"text-gray-400"},"/",-1)),C(" $"+n((De=(Ue=i.group)==null?void 0:Ue.daily_limit_usd)==null?void 0:De.toFixed(2)),1)])]),i.daily_window_start?(l(),r("div",Wa,[s[29]||(s[29]=e("svg",{class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",null,n(vt(i)),1)])):d("",!0)])):d("",!0),(rs=i.group)!=null&&rs.weekly_limit_usd?(l(),r("div",Ja,[e("div",Ya,[e("span",Xa,n(o(t)("admin.subscriptions.weekly")),1),e("div",Za,[e("div",{class:ae(["h-1.5 rounded-full transition-all",Ke(i.weekly_usage_usd,(us=i.group)==null?void 0:us.weekly_limit_usd)]),style:Je({width:Ge(i.weekly_usage_usd,(ds=i.group)==null?void 0:ds.weekly_limit_usd)})},null,6)]),e("span",ei,[C(" $"+n(((cs=i.weekly_usage_usd)==null?void 0:cs.toFixed(2))||"0.00")+" ",1),s[30]||(s[30]=e("span",{class:"text-gray-400"},"/",-1)),C(" $"+n((ps=(ms=i.group)==null?void 0:ms.weekly_limit_usd)==null?void 0:ps.toFixed(2)),1)])]),i.weekly_window_start?(l(),r("div",si,[s[31]||(s[31]=e("svg",{class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",null,n(We(i.weekly_window_start,"weekly")),1)])):d("",!0)])):d("",!0),(bs=i.group)!=null&&bs.monthly_limit_usd?(l(),r("div",ti,[e("div",ai,[e("span",ii,n(o(t)("admin.subscriptions.monthly")),1),e("div",oi,[e("div",{class:ae(["h-1.5 rounded-full transition-all",Ke(i.monthly_usage_usd,(vs=i.group)==null?void 0:vs.monthly_limit_usd)]),style:Je({width:Ge(i.monthly_usage_usd,(gs=i.group)==null?void 0:gs.monthly_limit_usd)})},null,6)]),e("span",ni,[C(" $"+n(((ys=i.monthly_usage_usd)==null?void 0:ys.toFixed(2))||"0.00")+" ",1),s[32]||(s[32]=e("span",{class:"text-gray-400"},"/",-1)),C(" $"+n((fs=(_s=i.group)==null?void 0:_s.monthly_limit_usd)==null?void 0:fs.toFixed(2)),1)])]),i.monthly_window_start?(l(),r("div",li,[s[33]||(s[33]=e("svg",{class:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),e("span",null,n(We(i.monthly_window_start,"monthly")),1)])):d("",!0)])):d("",!0),!((hs=i.group)!=null&&hs.daily_limit_usd)&&!((xs=i.group)!=null&&xs.weekly_limit_usd)&&!((ks=i.group)!=null&&ks.monthly_limit_usd)?(l(),r("div",ri,[s[34]||(s[34]=e("span",{class:"text-lg text-emerald-600 dark:text-emerald-400"},"â",-1)),e("span",ui,n(o(t)("admin.subscriptions.unlimited")),1)])):d("",!0)])]}),"cell-expires_at":x(({value:i})=>[i?(l(),r("div",di,[e("span",{class:ae(["text-sm",mt(i)?"text-orange-600 dar
1k:text-orange-400":"text-gray-700 dark:text-gray-300"])},n(o(Ss)(i)),3),(l(!0),r(V,null,K([ct(i)],g=>(l(),r(V,{key:g??"expired"},[g?(l(),r("div",ci,n(g),1)):d("",!0)],64))),128))])):(l(),r("span",mi,n(o(t)("admin.subscriptions.noExpiration")),1))]),"cell-status":x(({value:i})=>[e("span",{class:ae(["badge",i==="active"?"badge-success":i==="expired"?"badge-warning":"badge-danger"])},n(o(t)(`admin.subscriptions.status.${i}`)),3)]),"cell-actions":x(({row:i})=>{var g;return[e("div",pi,[i.status==="active"||i.status==="expired"?(l(),r("button",{key:0,onClick:Q=>at(i),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-blue-50 hover:text-blue-600 dark:hover:bg-blue-900/20 dark:hover:text-blue-400"},[v(T,{name:"calendar",size:"sm"}),e("span",vi,n(o(t)("admin.subscriptions.adjust")),1)],8,bi)):d("",!0),i.status==="active"?(l(),r("button",{key:1,onClick:Q=>ut(i),disabled:Ve.value&&((g=ve.value)==null?void 0:g.id)===i.id,class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-orange-50 hover:text-orange-600 dark:hover:bg-orange-900/20 dark:hover:text-orange-400 disabled:cursor-not-allowed disabled:opacity-50"},[v(T,{name:"refresh",size:"sm"}),e("span",yi,n(o(t)("admin.subscriptions.resetQuota")),1)],8,gi)):d("",!0),i.status==="active"?(l(),r("button",{key:2,onClick:Q=>ot(i),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"},[v(T,{name:"ban",size:"sm"}),e("span",fi,n(o(t)("admin.subscriptions.revoke")),1)],8,_i)):d("",!0),i.status==="revoked"?(l(),r("button",{key:3,onClick:Q=>lt(i),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-green-50 hover:text-green-600 dark:hover:bg-green-900/20 dark:hover:text-green-400"},[v(T,{name:"refresh",size:"sm"}),e("span",xi,n(o(t)("admin.subscriptions.restore")),1)],8,hi)):d("",!0)])]}),empty:x(()=>[v(At,{title:o(t)("admin.subscriptions.noSubscriptionsYet"),description:o(t)("admin.subscriptions.assignFirstSubscription"),"action-text":o(t)("admin.subscriptions.assignSubscription"),onAction:s[11]||(s[11]=i=>Me.value=!0)},null,8,["title","description","action-text"])]),_:1},8,["columns","data","loading","selected-keys"])]),pagination:x(()=>[j.total>0?(l(),Y(Tt,{key:0,page:j.page,total:j.total,"page-size":j.page_size,"onUpdate:page":Zs,"onUpdate:pageSize":et},null,8,["page","total","page-size"])):d("",!0)]),_:1}),Ae.value!==null?(l(),Y(ua,{key:0,show:!0,action:Ae.value,subscriptions:es.value,onClose:s[12]||(s[12]=i=>Ae.value=null),onCompleted:qs},null,8,["action","subscriptions"])):d("",!0),v(Xe,{show:Me.value,title:o(t)("admin.subscriptions.assignSubscription"),width:"normal","show-close-button":!h.value,"close-on-escape":!h.value,onClose:Be},{footer:x(()=>[e("div",Wi,[e("button",{onClick:Be,type:"button",disabled:h.value,class:"btn btn-secondary"},n(B.value?o(t)("common.close"):o(t)("common.cancel")),9,Ji),e("button",{type:"submit",form:"assign-subscription-form",disabled:h.value||H.value&&$.value.length===0,class:"btn btn-primary"},[h.value?(l(),r("svg",Xi,[...s[35]||(s[35]=[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),e("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])])):d("",!0),C(" "+n(h.value?o(t)("admin.subscriptions.assigning"):o(t)("admin.subscriptions.assign")),1)],8,Yi)])]),default:x(()=>[e("form",{id:"assign-subscription-form",onSubmit:qe(tt,["prevent"]),class:"space-y-5"},[e("label",ki,[de(e("input",{"onUpdate:modelValue":s[13]||(s[13]=i=>H.value=i),type:"checkbox",disabled:h.value,onChange:Xs},null,40,wi),[[Rs,H.value]]),C(" "+n(o(t)("admin.subscriptions.batchAssign.enable")),1)]),H.value?(l(),r("p",Ci,n(o(t)("admin.subscriptions.batchAssign.hint")),1)):d("",!0),e("div",null,[e("label",Si,n(o(t)("admin.subscriptions.form.user")),1),e("div",$i,[de(e("input",{"onUpdate:modelValue":s[14]||(s[14]=i=>J.value=i),type:"text",disabled:h.value||H.value&&$.value.length>=100,class:"input pr-8",placeholder:o(t)("admin.usage.searchUserPlaceholder"),onInput:Ws,onFocus:s[15]||(s[15]=i=>be.value=!0)},null,40,Ui),[[Ee,J.value]]),re.value?(l(),r("button",{key:0,onClick:ss,type:"button",class:"absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300"},[v(T,{name:"x",size:"sm","stroke-width":2})])):d("",!0),be.value&&(te.value.length>0||J.value)?(l(),r("div",Di,[Pe.value?(l(),r("div",Ei,n(o(t)("common.loading")),1)):te.value.length===0&&J.value?(l(),r("div",Ti,n(o(t)("common.noOptionsFound")),1)):d("",!0),(l(!0),r(V,null,K(te.value,i=>(l(),r("button",{key:i.id,type:"button",disabled:h.value||H.value&&$.value.some(g=>g.id===i.id),onClick:g=>Ys(i),class:"w-full px-4 py-2 text-left text-sm hover:bg-gray-100 disabled:opacity-50 dark:hover:bg-dark-700"},[e("span",Ri,n(i.email),1),e("span",Ii,"#"+n(i.id),1)],8,Ai))),128))])):d("",!0)]),H.value&&$.value.length>0?(l(),r("div",Mi,[e("p",ji,n(o(t)("admin.subscriptions.batchAssign.selected",{count:$.value.length})),1),e("ul",zi,[(l(!0),r(V,null,K($.value,i=>(l(),r("li",{key:i.id,class:"flex items-center justify-between gap-2 rounded-lg bg-gray-50 px-3 py-1 text-sm dark:bg-dark-700"},[e("span",Fi,[C(n(i.email)+" ",1),e("span",Vi,"#"+n(i.id),1)]),e("button",{type:"button",disabled:h.value,"aria-label":o(t)("admin.subscriptions.batchAssign.removeUser",{email:i.email}),onClick:g=>$.value=$.value.filter(Q=>Q.id!==i.id)},[v(T,{name:"x",size:"sm"})],8,Oi)]))),128))])])):d("",!0)]),e("div",null,[e("label",qi,n(o(t)("admin.subscriptions.form.group")),1),v(Oe,{modelValue:w.group_id,"onUpdate:modelValue":s[16]||(s[16]=i=>w.group_id=i),disabled:h.value,options:Ps.value,placeholder:o(t)("admin.subscriptions.selectGroup")},{selected:x(({option:i})=>[i?(l(),Y(Us,{key:0,name:i.label,platform:i.platform,"subscription-type":i.subscriptionType,"rate-multiplier":i.rate},null,8,["name","platform","subscription-type","rate-multiplier"])):(l(),r("span",Ni,n(o(t)("admin.subscriptions.selectGroup")),1))]),option:x(({option:i,selected:g})=>[v(Rt,{name:i.label,platform:i.platform,"subscription-type":i.subscriptionType,"rate-multiplier":i.rate,description:i.description,selected:g},null,8,["name","platform","subscription-type","rate-multiplier","description","selected"])]),_:1},8,["modelValue","disabled","options","placeholder"]),e("p",Li,n(o(t)("admin.subscriptions.groupHint")),1)]),e("div",null,[e("label",Pi,n(o(t)("admin.subscriptions.form.validityDays")),1),de(e("input",{"onUpdate:modelValue":s[17]||(s[17]=i=>w.validity_days=i),type:"number",min:"1",max:"36500",step:"1",disabled:h.value,class:"input"},null,8,Hi),[[Ee,w.validity_days,void 0,{number:!0}]]),e("p",Bi,n(o(t)("admin.subscriptions.validityHint")),1)]),B.value?(l(),r("div",Qi,[e("p",null,n(o(t)("admin.subscriptions.batchAssign.result",{success:B.value.success_count,failed:B.value.failed_count})),1),B.value.errors.length?(l(),r("ul",Gi,[(l(!0),r(V,null,K(B.value.errors,(i,g)=>(l(),r("li",{key:g},n(i),1))),128))])):d("",!0),B.value.failed_count>0?(l(),r("p",Ki,n(o(t)("admin.subscriptions.batchAssign.retryHint")),1)):d("",!0)])):d("",!0)],32)]),_:1},8,["show","title","show-close-button","close-on-escape"]),v(Xe,{show:He.value,title:o(t)("admin.subscriptions.adjustSubscription"),width:"narrow",onClose:Qe},{footer:x(()=>[z.value?(l(),r("div",co,[e("button",{onClick:Qe,type:"button",class:"btn btn-secondary"},n(o(t)("common.cancel")),1),e("button",{type:"submit",form:"extend-subscription-form",disabled:h.value,class:"btn btn-primary"},n(h.value?o(t)("admin.subscriptions.adjusting"):o(t)("admin.subscriptions.adjust")),9,mo)])):d("",!0)]),default:x(()=>{var i;return[z.value?(l(),r("form",{key:0,id:"extend-subscription-form",onSubmit:qe(it,["prevent"]),class:"space-y-5"},[e("div",Zi,[e("p",eo,[C(n(o(t)("admin.subscriptions.adjustingFor"))+" ",1),e("span",so,n((i=z.value.user)==null?void 0:i.email),1)]),e("p",to,[C(n(o(t)("admin.subscriptions.currentExpiration"))+": ",1),e("span",ao,n(z.value.expires_at?o(Ss)(z.value.expires_at):o(t)("admin.subscriptions.noExpiration")),1)]),z.value.expires_at?(l(),r("p",io,[C(n(o(t)("admin.subscriptions.remainingDays"))+": ",1),e("span",oo,n(ts(z.value.expires_at)??0),1)])):d("",!0)]),e("div",null,[e("label",no,n(o(t)("admin.subscriptions.form.adjustDays")),1),e("div",lo,[de(e("input",{"onUpdate:modelValue":s[18]||(s[18]=g=>we.days=g),type:"number",required:"",class:"input text-center",placeholder:o(t)("admin.subscriptions.adjustDaysPlaceholder")},null,8,ro),[[Ee,we.days,void 0,{number:!0}]])]),e("p",uo,n(o(t)("admin.subscriptions.adjustHint")),1)])],32)):d("",!0)]}),_:1},8,["show","title"]),v(Ye,{show:je.value,title:o(t)("admin.subscriptions.revokeSubscription"),message:o(t)("admin.subscriptions.revokeConfirm",{user:(Ce=(D=xe.value)==null?void 0:D.user)==null?void 0:Ce.email}),"confirm-text":o(t)("admin.subscriptions.revoke"),"cancel-text":o(t)("common.cancel"),danger:!0,onConfirm:nt,onCancel:s[19]||(s[19]=i=>je.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),v(Ye,{show:ze.value,title:o(t)("admin.subscriptions.restoreSubscription"),message:o(t)("admin.subscriptions.restoreConfirm",{user:(os=(is=ke.value)==null?void 0:is.user)==null?void 0:os.email}),"confirm-text":o(t)("admin.subscriptions.restore"),"cancel-text":o(t)("common.cancel"),onConfirm:rt,onCancel:s[20]||(s[20]=i=>ze.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),v(Ye,{show:Fe.value,title:o(t)("admin.subscriptions.resetQuotaTitle"),message:o(t)("admin.subscriptions.resetQuotaConfirm",{user:(ls=(ns=ve.value)==null?void 0:ns.user)==null?void 0:ls.email}),"confirm-text":o(t)("admin.subscriptions.resetQuota"),"cancel-text":o(t)("common.cancel"),onConfirm:dt,onCancel:s[21]||(s[21]=i=>Fe.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),(l(),Y(ft,{to:"body"},[v(ht,{name:"modal"},{default:x(()=>[k.value?(l(),r("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4",onMousedown:s[26]||(s[26]=qe(i=>k.value=!1,["self"]))},[e("div",{class:"fixed inset-0 bg-black/50",onClick:s[22]||(s[22]=i=>k.value=!1)}),e("div",po,[e("button",{type:"button",class:"absolute right-4 top-4 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200",onClick:s[23]||(s[23]=i=>k.value=!1)},[...s[36]||(s[36]=[e("svg",{class:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"2"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18L18 6M6 6l12 12"})],-1)])]),e("h2",bo,n(o(t)("admin.subscriptions.guide.title")),1),e("p",vo,n(o(t)("admin.subscriptions.guide.subtitle")),1),e("div",go,[e("h3",yo,[s[37]||(s[37]=e("span",{class:"flex h-6 w-6 items-center justify-center rounded-full bg-primary-100 text-xs font-bold text-primary-700 dark:bg-primary-900/40 dark:text-primary-300"},"1",-1)),C(" "+n(o(t)("admin.subscriptions.guide.step1.title")),1)]),e("ol",_o,[e("li",null,n(o(t)("admin.subscriptions.guide.step1.line1")),1),e("li",null,n(o(t)("admin.subscriptions.guide.step1.line2")),1),e("li",null,n(o(t)("admin.subscriptions.guide.step1.line3")),1)]),e("div",fo,[v(E,{to:"/admin/groups",onClick:s[24]||(s[24]=i=>k.value=!1),class:"inline-flex items-center gap-1 text-sm font-medium text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300"},{default:x(()=>[C(n(o(t)("admin.subscriptions.guide.step1.link"))+" ",1),v(T,{name:"arrowRight",size:"xs"})]),_:1})])]),e("div",ho,[e("h3",xo,[s[38]||(s[38]=e("span",{class:"flex h-6 w-6 items-center justify-center rounded-full bg-primary-100 text-xs font-bold text-primary-700 dark:bg-primary-900/40 dark:text-primary-300"},"2",-1)),C(" "+n(o(t)("admin.subscriptions.guide.step2.title")),1)]),e("ol",ko,[e("li",null,n(o(t)("admin.subscriptions.guide.step2.line1")),1),e("li",null,n(o(t)("admin.subscriptions.guide.step2.line2")),1),e("li",null,n(o(t)("admin.subscriptions.guide.step2.line3")),1)])]),e("div",w
1o,[e("h3",Co,[s[39]||(s[39]=e("span",{class:"flex h-6 w-6 items-center justify-center rounded-full bg-primary-100 text-xs font-bold text-primary-700 dark:bg-primary-900/40 dark:text-primary-300"},"3",-1)),C(" "+n(o(t)("admin.subscriptions.guide.step3.title")),1)]),e("div",So,[e("table",$o,[e("tbody",null,[(l(!0),r(V,null,K(b.value,(i,g)=>(l(),r("tr",{key:g,class:"border-b border-gray-100 dark:border-dark-700 last:border-0"},[e("td",Uo,n(i.action),1),e("td",Do,n(i.desc),1)]))),128))])])])]),e("div",Eo,n(o(t)("admin.subscriptions.guide.tip")),1),e("div",To,[e("button",{type:"button",class:"btn btn-primary btn-sm",onClick:s[25]||(s[25]=i=>k.value=!1)},n(o(t)("common.close")),1)])])],32)):d("",!0)]),_:1})]))]}),_:1})}}}),en=kt(Ao,[["__scopeId","data-v-c03c4556"]]);export{en 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.