1import{d as As,r as c,c as T,q as L,o as Rs,a as Is,G as $,I as p,k as m,D as d,u as o,A as e,y as l,C as n,z as Q,N as Ce,J as y,S as ue,W as de,F as ce,V as me,M as Se,K as Os,a0 as Ns,L as Ps,B as r}from"./vendor-vue-BRjbeJGJ.js";import{a as Ls,_ as x,v as qe,g as j,z as Qs}from"./index-DG7INg5y.js";import{g as Gs,P as Bs}from"./Pagination-Cg--IBEI.js";import{_ as Hs}from"./AppLayout.vue_vue_type_script_setup_true_lang-B94PZ8cE.js";import{T as qs}from"./TablePageLayout-DHO1cWsk.js";import{D as Ks}from"./DataTable-DgAUhKO5.js";import{_ as Ke}from"./BaseDialog.vue_vue_type_script_setup_true_lang-zxqIPt6B.js";import{_ as We}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-BOt5U97F.js";import{_ as Ws}from"./EmptyState.vue_vue_type_script_setup_true_lang-Sw4UV7g8.js";import{S as pe}from"./Select-BBgoSpkz.js";import{_ as Je}from"./GroupBadge.vue_vue_type_script_setup_true_lang-CtJ37qkd.js";import{G as Js}from"./GroupOptionItem-BYXK5CNQ.js";import{i as Ys,g as Ye}from"./subscriptionQuota-BxYniwXV.js";import{u as Xs}from"./vendor-i18n-BZoxDmZq.js";import"./vendor-misc-T69nC9V6.js";/* empty css */import"./LocaleSwitcher-DcUvo7xm.js";/* empty css */import"./PlatformIcon.vue_vue_type_script_setup_true_lang-BB_cIYal.js";const Zs={class:"flex flex-wrap items-start justify-between gap-4"},et={class:"flex flex-1 flex-wrap items-center gap-3"},st={class:"relative w-full sm:w-64","data-filter-user-search":""},tt=["placeholder"],at=["title"],it={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-gray-700 dark:bg-gray-800"},ot={key:0,class:"px-4 py-3 text-sm text-gray-500 dark:text-gray-400"},nt={key:1,class:"px-4 py-3 text-sm text-gray-500 dark:text-gray-400"},rt=["onClick"],lt={class:"font-medium text-gray-900 dark:text-white"},ut={class:"ml-2 text-gray-500 dark:text-gray-400"},dt={class:"w-full sm:w-40"},ct={class:"w-full sm:w-48"},mt={class:"w-full sm:w-40"},pt={class:"ml-auto flex flex-wrap items-center justify-end gap-3"},gt=["disabled","title"],bt=["title"],yt={class:"hidden md:inline"},vt={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-gray-700 dark:bg-gray-800"},_t={class:"p-2"},ft={class:"mb-2 border-b border-gray-200 pb-2 dark:border-gray-700"},ht={class:"px-3 py-1 text-xs font-medium text-gray-500 dark:text-gray-400"},xt=["onClick"],kt=["title"],wt={class:"flex items-center gap-2"},Ct={class:"flex h-8 w-8 items-center justify-center rounded-full bg-primary-100 dark:bg-primary-900/30"},St={class:"text-sm font-medium text-primary-700 dark:text-primary-300"},Et={class:"font-medium text-gray-900 dark:text-white"},Dt={key:1,class:"text-sm text-gray-400 dark:text-dark-500"},Ut={class:"min-w-[280px] space-y-2"},zt={key:0,class:"usage-row"},Tt={class:"flex items-center gap-2"},$t={class:"usage-label"},jt={class:"h-1.5 flex-1 rounded-full bg-gray-200 dark:bg-dark-600"},Ft={class:"usage-amount"},Mt={key:0,class:"reset-info"},Vt={key:1,class:"usage-row"},At={class:"flex items-center gap-2"},Rt={class:"usage-label"},It={class:"h-1.5 flex-1 rounded-full bg-gray-200 dark:bg-dark-600"},Ot={class:"usage-amount"},Nt={key:0,class:"reset-info"},Pt={key:2,class:"usage-row"},Lt={class:"flex items-center gap-2"},Qt={class:"usage-label"},Gt={class:"h-1.5 flex-1 rounded-full bg-gray-200 dark:bg-dark-600"},Bt={class:"usage-amount"},Ht={key:0,class:"reset-info"},qt={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"},Kt={class:"text-xs font-medium text-emerald-700 dark:text-emerald-300"},Wt={key:0},Jt={key:0,class:"text-xs text-gray-500"},Yt={key:1,class:"text-sm text-gray-500"},Xt={class:"flex items-center gap-1"},Zt=["onClick"],ea={class:"text-xs"},sa=["onClick","disabled"],ta={class:"text-xs"},aa=["onClick"],ia={class:"text-xs"},oa={class:"input-label"},na={class:"relative","data-assign-user-search":""},ra=["placeholder"],la={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-gray-700 dark:bg-gray-800"},ua={key:0,class:"px-4 py-3 text-sm text-gray-500 dark:text-gray-400"},da={key:1,class:"px-4 py-3 text-sm text-gray-500 dark:text-gray-400"},ca=["onClick"],ma={class:"font-medium text-gray-900 dark:text-white"},pa={class:"ml-2 text-gray-500 dark:text-gray-400"},ga={class:"input-label"},ba={key:1,class:"text-gray-400"},ya={class:"input-hint"},va={class:"input-label"},_a={class:"input-hint"},fa={class:"flex justify-end gap-3"},ha=["disabled"],xa={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},ka={class:"rounded-lg bg-gray-50 p-4 dark:bg-dark-700"},wa={class:"text-sm text-gray-600 dark:text-gray-400"},Ca={class:"font-medium text-gray-900 dark:text-white"},Sa={class:"mt-1 text-sm text-gray-600 dark:text-gray-400"},Ea={class:"font-medium text-gray-900 dark:text-white"},Da={key:0,class:"mt-1 text-sm text-gray-600 dark:text-gray-400"},Ua={class:"font-medium text-gray-900 dark:text-white"},za={class:"input-label"},Ta={class:"flex items-center gap-2"},$a=["placeholder"],ja={class:"input-hint"},Fa={key:0,class:"flex justify-end gap-3"},Ma=["disabled"],Va={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"},Aa={class:"mb-4 text-lg font-bold text-gray-900 dark:text-white"},Ra={class:"mb-5 text-sm text-gray-500 dark:text-gray-400"},Ia={class:"mb-5"},Oa={class:"mb-2 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},Na={class:"ml-8 list-decimal space-y-1 text-sm text-gray-600 dark:text-gray-300"},Pa={class:"ml-8 mt-2"},La={class:"mb-5"},Qa={class:"mb-2 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},Ga={class:"ml-8 list-decimal space-y-1 text-sm text-gray-600 dark:text-gray-300"},Ba={class:"mb-5"},Ha={class:"mb-2 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},qa={class:"ml-8 overflow-hidden rounded-lg border border-gray-200 dark:border-dark-600"},Ka={class:"w-full text-sm"},Wa={class:"whitespace-nowrap bg-gray-50 px-3 py-2 font-medium text-gray-700 dark:bg-dark-700 dark:text-gray-300"},Ja={class:"px-3 py-2 text-gray-600 dark:text-gray-400"},Ya={class:"rounded-lg bg-blue-50 p-3 text-xs text-blue-700 dark:bg-blue-900/20 dark:text-blue-300"},Xa={class:"mt-4 text-right"},Xe="subscription-user-column-mode",Ze="subscription-hidden-columns",Za=As({__name:"SubscriptionsView",setup(ei){const{t:i}=Xs(),_=Ls(),F=c(!1),es=T(()=>[{action:i("admin.subscriptions.guide.actions.adjust"),desc:i("admin.subscriptions.guide.actions.adjustDesc")},{action:i("admin.subscriptions.guide.actions.resetQuota"),desc:i("admin.subscriptions.guide.actions.resetQuotaDesc")},{action:i("admin.subscriptions.guide.actions.revoke"),desc:i("admin.subscriptions.guide.actions.revokeDesc")}]),E=c("email"),ss=()=>{try{const s=localStorage.getItem(Xe);(s==="email"||s==="username")&&(E.value=s)}catch(s){console.error("Failed to load user column mode:",s)}},ts=()=>{try{localStorage.setItem(Xe,E.value)}catch(s){console.error("Failed to save user column mode:",s)}},Ee=s=>{E.value=s,ts()},De=T(()=>[{key:"user",label:E.value==="email"?i("admin.subscriptions.columns.user"):i("admin.users.columns.username"),sortable:!1},{key:"group",label:i("admin.subscriptions.columns.group"),sortable:!1},{key:"usage",label:i("admin.subscriptions.columns.usage"),sortable:!1},{key:"expires_at",label:i("admin.subscriptions.columns.expires"),sortable:!0},{key:"status",label:i("admin.subscriptions.columns.status"),sortable:!0},{key:"actions",label:i("admin.subscriptions.columns.actions"),sortable:!1}]),as=T(()=>De.value.filter(s=>s.key!=="user"&&s.key!=="actions")),C=L(new Set),Ue=[],is=()=>{try{const s=localStorage.getItem(Ze);
1s?JSON.parse(s).forEach(u=>C.add(u)):Ue.forEach(a=>C.add(a))}catch(s){console.error("Failed to load saved columns:",s),Ue.forEach(a=>C.add(a))}},os=()=>{try{localStorage.setItem(Ze,JSON.stringify([...C]))}catch(s){console.error("Failed to save columns:",s)}},ns=s=>{C.has(s)?C.delete(s):C.add(s),os()},rs=s=>!C.has(s),ls=T(()=>De.value.filter(s=>s.key==="user"||s.key==="actions"||!C.has(s.key))),te=c(!1),ge=c(null),us=T(()=>[{value:"",label:i("admin.subscriptions.allStatus")},{value:"active",label:i("admin.subscriptions.status.active")},{value:"expired",label:i("admin.subscriptions.status.expired")},{value:"revoked",label:i("admin.subscriptions.status.revoked")}]),ze=c([]),be=c([]),G=c(!1);let I=null;const M=c(""),V=c([]),ye=c(!1),B=c(!1),O=c(null);let H=null;const D=c(""),U=c([]),ve=c(!1),q=c(!1),A=c(null);let K=null;const v=L({status:"active",group_id:"",platform:"",user_id:null}),ae=L({sort_by:"created_at",sort_order:"desc"}),f=L({page:1,page_size:Gs(),total:0,pages:0}),ie=c(!1),_e=c(!1),oe=c(!1),ne=c(!1),S=c(!1),N=c(null),re=c(!1),h=c(null),W=c(null),g=L({user_id:null,group_id:null,validity_days:30}),J=L({days:30}),ds=T(()=>[{value:"",label:i("admin.subscriptions.allGroups")},...be.value.map(s=>({value:s.id.toString(),label:s.name}))]),cs=T(()=>[{value:"",label:i("admin.subscriptions.allPlatforms")},{value:"anthropic",label:"Anthropic"},{value:"openai",label:"OpenAI"},{value:"gemini",label:"Gemini"},{value:"antigravity",label:"Antigravity"}]),ms=T(()=>be.value.filter(s=>s.subscription_type==="subscription"&&s.status==="active").map(s=>({value:s.id,label:s.name,description:s.description,platform:s.platform,subscriptionType:s.subscription_type,rate:s.rate_multiplier}))),P=()=>{f.page=1,w()},w=async()=>{I&&I.abort();const s=new AbortController;I=s;const{signal:a}=s;G.value=!0;try{const u=await j.subscriptions.list(f.page,f.page_size,{status:v.status||void 0,group_id:v.group_id?parseInt(v.group_id):void 0,platform:v.platform||void 0,user_id:v.user_id||void 0,sort_by:ae.sort_by,sort_order:ae.sort_order},{signal:a});if(a.aborted||I!==s)return;ze.value=u.items,f.total=u.total,f.pages=u.pages}catch(u){if(a.aborted||(u==null?void 0:u.name)==="AbortError"||(u==null?void 0:u.code)==="ERR_CANCELED")return;_.showError(i("admin.subscriptions.failedToLoad")),console.error("Error loading subscriptions:",u)}finally{I===s&&(G.value=!1,I=null)}},ps=async()=>{try{be.value=await j.groups.getAll()}catch(s){console.error("Error loading groups:",s)}},gs=()=>{H&&clearTimeout(H),H=setTimeout(bs,300)},bs=async()=>{const s=M.value.trim();if(O.value&&s!==O.value.email&&(O.value=null,v.user_id=null,P()),!s){V.value=[];return}ye.value=!0;try{V.value=await j.usage.searchUsers(s)}catch(a){console.error("Failed to search users:",a),V.value=[]}finally{ye.value=!1}},ys=s=>{O.value=s,M.value=s.email,B.value=!1,v.user_id=s.id,P()},vs=()=>{O.value=null,M.value="",V.value=[],B.value=!1,v.user_id=null,P()},_s=()=>{K&&clearTimeout(K),K=setTimeout(fs,300)},fs=async()=>{const s=D.value.trim();if(A.value&&s!==A.value.email&&(A.value=null,g.user_id=null),!s){U.value=[];return}ve.value=!0;try{U.value=await j.usage.searchUsers(s)}catch(a){console.error("Failed to search users:",a),U.value=[]}finally{ve.value=!1}},hs=s=>{A.value=s,D.value=s.email,q.value=!1,g.user_id=s.id},xs=()=>{A.value=null,D.value="",U.value=[],g.user_id=null},ks=s=>{f.page=s,w()},ws=s=>{f.page_size=s,f.page=1,w()},Cs=(s,a)=>{ae.sort_by=s,ae.sort_order=a,f.page=1,w()},fe=()=>{ie.value=!1,g.user_id=null,g.group_id=null,g.validity_days=30,A.value=null,D.value="",U.value=[],q.value=!1},Ss=async()=>{var s,a;if(!g.user_id){_.showError(i("admin.subscriptions.pleaseSelectUser"));return}if(!g.group_id){_.showError(i("admin.subscriptions.pleaseSelectGroup"));return}if(!g.validity_days||g.validity_days<1){_.showError(i("admin.subscriptions.validityDaysRequired"));return}S.value=!0;try{await j.subscriptions.assign({user_id:g.user_id,group_id:g.group_id,validity_days:g.validity_days}),_.showSuccess(i("admin.subscriptions.subscriptionAssigned")),fe(),w()}catch(u){_.showError(((a=(s=u.response)==null?void 0:s.data)==null?void 0:a.detail)||i("admin.subscriptions.failedToAssign")),console.error("Error assigning subscription:",u)}finally{S.value=!1}},Es=s=>{h.value=s,J.days=30,_e.value=!0},he=()=>{_e.value=!1,h.value=null},Ds=async()=>{var s,a;if(h.value){if(h.value.expires_at){const u=new Date(h.value.expires_at);if(new Date(u.getTime()+J.days*24*60*60*1e3)<=new Date){_.showError(i("admin.subscriptions.adjustWouldExpire"));return}}S.value=!0;try{await j.subscriptions.extend(h.value.id,{days:J.days}),_.showSuccess(i("admin.subscriptions.subscriptionAdjusted")),he(),w()}catch(u){_.showError(((a=(s=u.response)==null?void 0:s.data)==null?void 0:a.detail)||i("admin.subscriptions.failedToAdjust")),console.error("Error adju
1sting subscription:",u)}finally{S.value=!1}}},Us=s=>{W.value=s,oe.value=!0},zs=async()=>{var s,a;if(W.value)try{await j.subscriptions.revoke(W.value.id),_.showSuccess(i("admin.subscriptions.subscriptionRevoked")),oe.value=!1,W.value=null,w()}catch(u){_.showError(((a=(s=u.response)==null?void 0:s.data)==null?void 0:a.detail)||i("admin.subscriptions.failedToRevoke")),console.error("Error revoking subscription:",u)}},Ts=s=>{N.value=s,ne.value=!0},$s=async()=>{var s,a;if(N.value&&!re.value){re.value=!0;try{await j.subscriptions.resetQuota(N.value.id,{daily:!0,weekly:!0,monthly:!0}),_.showSuccess(i("admin.subscriptions.quotaResetSuccess")),ne.value=!1,N.value=null,await w()}catch(u){_.showError(((a=(s=u.response)==null?void 0:s.data)==null?void 0:a.detail)||i("admin.subscriptions.failedToResetQuota")),console.error("Error resetting quota:",u)}finally{re.value=!1}}},le=s=>{const a=new Date,k=new Date(s).getTime()-a.getTime();return k<0?null:Math.ceil(k/(1e3*60*60*24))},js=s=>{const a=le(s);return a!==null&&a<=7},xe=(s,a)=>!a||a===0?"0%":`${Math.min((s??0)/a*100,100)}%`,ke=(s,a)=>{if(!a||a===0)return"bg-gray-400";const k=(s??0)/a*100;return k>=90?"bg-red-500":k>=70?"bg-orange-500":"bg-green-500"},Fs=s=>s.days>0?i("admin.subscriptions.resetInDaysHours",{days:s.days,hours:s.hours}):s.hours>0?i("admin.subscriptions.resetInHoursMinutes",{hours:s.hours,minutes:s.minutes}):i("admin.subscriptions.resetInMinutes",{minutes:s.minutes}),Ms=s=>s.days>0?i("admin.subscriptions.quotaEndsInDaysHours",{days:s.days,hours:s.hours}):s.hours>0?i("admin.subscriptions.quotaEndsInHoursMinutes",{hours:s.hours,minutes:s.minutes}):i("admin.subscriptions.quotaEndsInMinutes",{minutes:s.minutes}),Vs=s=>{if(Ys(s)&&s.expires_at){const a=Ye(s.expires_at);return a?Ms(a):i("admin.subscriptions.windowNotActive")}return we(s.daily_window_start,"daily")},we=(s,a)=>{if(!s)return i("admin.subscriptions.windowNotActive");const u=new Date(s),k=new Date;let R;switch(a){case"daily":R=new Date(u.getTime()+24*60*60*1e3);break;case"weekly":R=new Date(u.getTime()+7*24*60*60*1e3);break;case"monthly":R=new Date(u.getTime()+30*24*60*60*1e3);break}const Y=Ye(R,k);return Y?Fs(Y):i("admin.subscriptions.windowNotActive")},Te=s=>{const a=s.target;a.closest("[data-assign-user-search]")||(q.value=!1),a.closest("[data-filter-user-search]")||(B.value=!1),ge.value&&!ge.value.contains(a)&&(te.value=!1)};return Rs(()=>{ss(),is(),w(),ps(),document.addEventListener("click",Te)}),Is(()=>{document.removeEventListener("click",Te),H&&clearTimeout(H),K&&clearTimeout(K)}),(s,a)=>{const u=Ns("router-link");return r(),$(Hs,null,{default:p(()=>{var k,R,Y,$e;return[m(qs,null,{filters:p(()=>[e("div",Zs,[e("div",et,[e("div",st,[m(x,{name:"search",size:"md",class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400"}),ue(e("input",{"onUpdate:modelValue":a[0]||(a[0]=t=>M.value=t),type:"text",placeholder:o(i)("admin.users.searchUsers"),class:"input pl-10 pr-8",onInput:gs,onFocus:a[1]||(a[1]=t=>B.value=!0)},null,40,tt),[[de,M.value]]),O.value?(r(),l("button",{key:0,onClick:vs,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(i)("common.clear")},[m(x,{name:"x",size:"sm","stroke-width":2})],8,at)):d("",!0),B.value&&(V.value.length>0||M.value)?(r(),l("div",it,[ye.value?(r(),l("div",ot,n(o(i)("common.loading")),1)):V.value.length===0&&M.value?(r(),l("div",nt,n(o(i)("common.noOptionsFound")),1)):d("",!0),(r(!0),l(ce,null,me(V.value,t=>(r(),l("button",{key:t.id,type:"button",onClick:b=>ys(t),class:"w-full px-4 py-2 text-left text-sm hover:bg-gray-100 dark:hover:bg-gray-700"},[e("span",lt,n(t.email),1),e("span",ut,"#"+n(t.id),1)],8,rt))),128))])):d("",!0)]),e("div",dt,[m(pe,{modelValue:v.status,"onUpdate:modelValue":a[2]||(a[2]=t=>v.status=t),options:us.value,placeholder:o(i)("admin.subscriptions.allStatus"),onChange:P},null,8,["modelValue","options","placeholder"])]),e("div",ct,[m(pe,{modelValue:v.group_id,"onUpdate:modelValue":a[3]||(a[3]=t=>v.group_id=t),options:ds.value,placeholder:o(i)("admin.subscriptions.allGroups"),onChange:P},null,8,["modelValue","options","placeholder"])]),e("div",mt,[m(pe,{modelValue:v.platform,"onUpdate:modelValue":a[4]||(a[4]=t=>v.platform=t),options:cs.value,placeholder:o(i)("admin.subscriptions.allPlatforms"),onChange:P},null,8,["modelValue","options","placeholder"])])]),e("div",pt,[e("button",{onClick:w,disabled:G.value,class:"btn btn-secondary",title:o(i)("common.refresh")},[m(x,{name:"refresh",size:"md",class:Q(G.value?"animate-spin":"")},null,8,["class"])],8,gt),e("div",{class:"relative",ref_key:"columnDropdownRef",ref:ge},[e("button",{onClick:a[5]||(a[5]=t=>te.value=!te.value),class:"btn btn-secondary px-2 md:px-3",title:o(i)("admin.users.columnSettings")},[a[23]||(a[23]=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",yt,n(o(i)("admin.users.columnSettings")),1)],8,bt),te.value?(r(),l("div",vt,[e("div",_t,[e("div",ft,[e("div",ht,n(o(i)("admin.subscriptions.columns.user")),1),e("button",{onClick:a[6]||(a[6]=t=>Ee("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-gray-700"},[e("span",null,n(o(i)("admin.users.columns.email")),1),E.value==="email"?(r(),$(x,{key:0,name:"check",size:"sm",class:"text-primary-500"})):d("",!0)]),e("button",{onClick:a[7]||(a[7]=t=>Ee("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-gray-700"},[e("span",null,n(o(i)("admin.users.columns.username")),1),E.value==="username"?(r(),$(x,{key:0,name:"check",size:"sm",class:"text-primary-500"})):d("",!0)])]),(r(!0),l(ce,null,me(as.value,t=>
1(r(),l("button",{key:t.key,onClick:b=>ns(t.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-gray-700"},[e("span",null,n(t.label),1),rs(t.key)?(r(),$(x,{key:0,name:"check",size:"sm",class:"text-primary-500"})):d("",!0)],8,xt))),128))])])):d("",!0)],512),e("button",{onClick:a[8]||(a[8]=t=>F.value=!0),class:"btn btn-secondary",title:o(i)("admin.subscriptions.guide.showGuide")},[m(x,{name:"questionCircle",size:"md"})],8,kt),e("button",{onClick:a[9]||(a[9]=t=>ie.value=!0),class:"btn btn-primary"},[m(x,{name:"plus",size:"md",class:"mr-2"}),y(" "+n(o(i)("admin.subscriptions.assignSubscription")),1)])])])]),table:p(()=>[m(Ks,{columns:ls.value,data:ze.value,loading:G.value,"server-side-sort":!0,"default-sort-key":"created_at","default-sort-order":"desc",onSort:Cs},{"cell-user":p(({row:t})=>{var b,z,X,Z,ee,se;return[e("div",wt,[e("div",Ct,[e("span",St,n(E.value==="email"?((z=(b=t.user)==null?void 0:b.email)==null?void 0:z.charAt(0).toUpperCase())||"?":((Z=(X=t.user)==null?void 0:X.username)==null?void 0:Z.charAt(0).toUpperCase())||"?"),1)]),e("span",Et,n(E.value==="email"?((ee=t.user)==null?void 0:ee.email)||o(i)("admin.redeem.userPrefix",{id:t.user_id}):((se=t.user)==null?void 0:se.username)||"-"),1)])]}),"cell-group":p(({row:t})=>[t.group?(r(),$(Je,{key:0,name:t.group.name,platform:t.group.platform,"subscription-type":t.group.subscription_type,"rate-multiplier":t.group.rate_multiplier,"show-rate":!1},null,8,["name","platform","subscription-type","rate-multiplier"])):(r(),l("span",Dt,"-"))]),"cell-usage":p(({row:t})=>{var b,z,X,Z,ee,se,je,Fe,Me,Ve,Ae,Re,Ie,Oe,Ne,Pe,Le,Qe,Ge,Be,He;return[e("div",Ut,[(b=t.group)!=null&&b.daily_limit_usd?(r(),l("div",zt,[e("div",Tt,[e("span",$t,n(o(i)("admin.subscriptions.daily")),1),e("div",jt,[e("div",{class:Q(["h-1.5 rounded-full transition-all",ke(t.daily_usage_usd,(z=t.group)==null?void 0:z.daily_limit_usd)]),style:Ce({width:xe(t.daily_usage_usd,(X=t.group)==null?void 0:X.daily_limit_usd)})},null,6)]),e("span",Ft,[y(" $"+n(((Z=t.daily_usage_usd)==null?void 0:Z.toFixed(2))||"0.00")+" ",1),a[24]||(a[24]=e("span",{class:"text-gray-400"},"/",-1)),y(" $"+n((se=(ee=t.group)==null?void 0:ee.daily_limit_usd)==null?void 0:se.toFixed(2)),1)])]),t.daily_window_start?(r(),l("div",Mt,[a[25]||(a[25]=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(Vs(t)),1)])):d("",!0)])):d("",!0),(je=t.group)!=null&&je.weekly_limit_usd?(r(),l("div",Vt,[e("div",At,[e("span",Rt,n(o(i)("admin.subscriptions.weekly")),1),e("div",It,[e("div",{class:Q(["h-1.5 rounded-full transition-all",ke(t.weekly_usage_usd,(Fe=t.group)==null?void 0:Fe.weekly_limit_usd)]),style:Ce({width:xe(t.weekly_usage_usd,(Me=t.group)==null?void 0:Me.weekly_limit_usd)})},null,6)]),e("span",Ot,[y(" $"+n(((Ve=t.weekly_usage_usd)==null?void 0:Ve.toFixed(2))||"0.00")+" ",1),a[26]||(a[26]=e("span",{class:"text-gray-400"},"/",-1)),y(" $"+n((Re=(Ae=t.group)==null?void 0:Ae.weekly_limit_usd)==null?void 0:Re.toFixed(2)),1)])]),t.weekly_window_start?(r(),l("div",Nt,[a[27]||(a[27]=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(t.weekly_window_start,"weekly")),1)])):d("",!0)])):d("",!0),(Ie=t.group)!=null&&Ie.monthly_limit_usd?(r(),l("div",Pt,[e("div",Lt,[e("span",Qt,n(o(i)("admin.subscriptions.monthly")),1),e("div",Gt,[e("div",{class:Q(["h-1.5 rounded-full transition-all",ke(t.monthly_usage_usd,(Oe=t.group)==null?void 0:Oe.monthly_limit_usd)]),style:Ce({width:xe(t.monthly_usage_usd,(Ne=t.group)==null?void 0:Ne.monthly_limit_usd)})},null,6)]),e("span",Bt,[y(" $"+n(((Pe=t.monthly_usage_usd)==null?void 0:Pe.toFixed(2))||"0.00")+" ",1),a[28]||(a[28]=e("span",{class:"text-gray-400"},"/",-1)),y(" $"+n((Qe=(Le=t.group)==null?void 0:Le.monthly_limit_usd)==null?void 0:Qe.toFixed(2)),1)])]),t.monthly_window_start?(r(),l("div",Ht,[a[29]||(a[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(we(t.monthly_window_start,"monthly")),1)])):d("",!0)])):d("",!0),!((Ge=t.group)!=null&&Ge.daily_limit_usd)&&!((Be=t.group)!=null&&Be.weekly_limit_usd)&&!((He=t.group)!=null&&He.monthly_limit_usd)?(r(),l("div",qt,[a[30]||(a[30]=e("span",{class:"text-lg text-emerald-600 dark:text-emerald-400"},"â",-1)),e("span",Kt,n(o(i)("admin.subscriptions.unlimited")),1)])):d("",!0)])]}),"cell-expires_at":p(({value:t})=>[t?(r(),l("div",Wt,[e("span",{class:Q(["text-sm",js(t)?"text-orange-600 dar
1k:text-orange-400":"text-gray-700 dark:text-gray-300"])},n(o(qe)(t)),3),le(t)!==null?(r(),l("div",Jt,n(le(t))+" "+n(o(i)("admin.subscriptions.daysRemaining")),1)):d("",!0)])):(r(),l("span",Yt,n(o(i)("admin.subscriptions.noExpiration")),1))]),"cell-status":p(({value:t})=>[e("span",{class:Q(["badge",t==="active"?"badge-success":t==="expired"?"badge-warning":"badge-danger"])},n(o(i)(`admin.subscriptions.status.${t}`)),3)]),"cell-actions":p(({row:t})=>{var b;return[e("div",Xt,[t.status==="active"||t.status==="expired"?(r(),l("button",{key:0,onClick:z=>Es(t),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"},[m(x,{name:"calendar",size:"sm"}),e("span",ea,n(o(i)("admin.subscriptions.adjust")),1)],8,Zt)):d("",!0),t.status==="active"?(r(),l("button",{key:1,onClick:z=>Ts(t),disabled:re.value&&((b=N.value)==null?void 0:b.id)===t.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"},[m(x,{name:"refresh",size:"sm"}),e("span",ta,n(o(i)("admin.subscriptions.resetQuota")),1)],8,sa)):d("",!0),t.status==="active"?(r(),l("button",{key:2,onClick:z=>Us(t),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"},[m(x,{name:"ban",size:"sm"}),e("span",ia,n(o(i)("admin.subscriptions.revoke")),1)],8,aa)):d("",!0)])]}),empty:p(()=>[m(Ws,{title:o(i)("admin.subscriptions.noSubscriptionsYet"),description:o(i)("admin.subscriptions.assignFirstSubscription"),"action-text":o(i)("admin.subscriptions.assignSubscription"),onAction:a[10]||(a[10]=t=>ie.value=!0)},null,8,["title","description","action-text"])]),_:1},8,["columns","data","loading"])]),pagination:p(()=>[f.total>0?(r(),$(Bs,{key:0,page:f.page,total:f.total,"page-size":f.page_size,"onUpdate:page":ks,"onUpdate:pageSize":ws},null,8,["page","total","page-size"])):d("",!0)]),_:1}),m(Ke,{show:ie.value,title:o(i)("admin.subscriptions.assignSubscription"),width:"normal",onClose:fe},{footer:p(()=>[e("div",fa,[e("button",{onClick:fe,type:"button",class:"btn btn-secondary"},n(o(i)("common.cancel")),1),e("button",{type:"submit",form:"assign-subscription-form",disabled:S.value,class:"btn btn-primary"},[S.value?(r(),l("svg",xa,[...a[31]||(a[31]=[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),y(" "+n(S.value?o(i)("admin.subscriptions.assigning"):o(i)("admin.subscriptions.assign")),1)],8,ha)])]),default:p(()=>[e("form",{id:"assign-subscription-form",onSubmit:Se(Ss,["prevent"]),class:"space-y-5"},[e("div",null,[e("label",oa,n(o(i)("admin.subscriptions.form.user")),1),e("div",na,[ue(e("input",{"onUpdate:modelValue":a[11]||(a[11]=t=>D.value=t),type:"text",class:"input pr-8",placeholder:o(i)("admin.usage.searchUserPlaceholder"),onInput:_s,onFocus:a[12]||(a[12]=t=>q.value=!0)},null,40,ra),[[de,D.value]]),A.value?(r(),l("button",{key:0,onClick:xs,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"},[m(x,{name:"x",size:"sm","stroke-width":2})])):d("",!0),q.value&&(U.value.length>0||D.value)?(r(),l("div",la,[ve.value?(r(),l("div",ua,n(o(i)("common.loading")),1)):U.value.length===0&&D.value?(r(),l("div",da,n(o(i)("common.noOptionsFound")),1)):d("",!0),(r(!0),l(ce,null,me(U.value,t=>(r(),l("button",{key:t.id,type:"button",onClick:b=>hs(t),class:"w-full px-4 py-2 text-left text-sm hover:bg-gray-100 dark:hover:bg-gray-700"},[e("span",ma,n(t.email),1),e("span",pa,"#"+n(t.id),1)],8,ca))),128))])):d("",!0)])]),e("div",null,[e("label",ga,n(o(i)("admin.subscriptions.form.group")),1),m(pe,{modelValue:g.group_id,"onUpdate:modelValue":a[13]||(a[13]=t=>g.group_id=t),options:ms.value,placeholder:o(i)("admin.subscriptions.selectGroup")},{selected:p(({option:t})=>[t?(r(),$(Je,{key:0,name:t.label,platform:t.platform,"subscription-type":t.subscriptionType,"rate-multiplier":t.rate},null,8,["name","platform","subscription-type","rate-multiplier"])):(r(),l("span",ba,n(o(i)("admin.subscriptions.selectGroup")),1))]),option:p(({option:t,selected:b})=>[m(Js,{name:t.label,platform:t.platform,"subscription-type":t.subscriptionType,"rate-multiplier":t.rate,de
1scription:t.description,selected:b},null,8,["name","platform","subscription-type","rate-multiplier","description","selected"])]),_:1},8,["modelValue","options","placeholder"]),e("p",ya,n(o(i)("admin.subscriptions.groupHint")),1)]),e("div",null,[e("label",va,n(o(i)("admin.subscriptions.form.validityDays")),1),ue(e("input",{"onUpdate:modelValue":a[14]||(a[14]=t=>g.validity_days=t),type:"number",min:"1",class:"input"},null,512),[[de,g.validity_days,void 0,{number:!0}]]),e("p",_a,n(o(i)("admin.subscriptions.validityHint")),1)])],32)]),_:1},8,["show","title"]),m(Ke,{show:_e.value,title:o(i)("admin.subscriptions.adjustSubscription"),width:"narrow",onClose:he},{footer:p(()=>[h.value?(r(),l("div",Fa,[e("button",{onClick:he,type:"button",class:"btn btn-secondary"},n(o(i)("common.cancel")),1),e("button",{type:"submit",form:"extend-subscription-form",disabled:S.value,class:"btn btn-primary"},n(S.value?o(i)("admin.subscriptions.adjusting"):o(i)("admin.subscriptions.adjust")),9,Ma)])):d("",!0)]),default:p(()=>{var t;return[h.value?(r(),l("form",{key:0,id:"extend-subscription-form",onSubmit:Se(Ds,["prevent"]),class:"space-y-5"},[e("div",ka,[e("p",wa,[y(n(o(i)("admin.subscriptions.adjustingFor"))+" ",1),e("span",Ca,n((t=h.value.user)==null?void 0:t.email),1)]),e("p",Sa,[y(n(o(i)("admin.subscriptions.currentExpiration"))+": ",1),e("span",Ea,n(h.value.expires_at?o(qe)(h.value.expires_at):o(i)("admin.subscriptions.noExpiration")),1)]),h.value.expires_at?(r(),l("p",Da,[y(n(o(i)("admin.subscriptions.remainingDays"))+": ",1),e("span",Ua,n(le(h.value.expires_at)??0),1)])):d("",!0)]),e("div",null,[e("label",za,n(o(i)("admin.subscriptions.form.adjustDays")),1),e("div",Ta,[ue(e("input",{"onUpdate:modelValue":a[15]||(a[15]=b=>J.days=b),type:"number",required:"",class:"input text-center",placeholder:o(i)("admin.subscriptions.adjustDaysPlaceholder")},null,8,$a),[[de,J.days,void 0,{number:!0}]])]),e("p",ja,n(o(i)("admin.subscriptions.adjustHint")),1)])],32)):d("",!0)]}),_:1},8,["show","title"]),m(We,{show:oe.value,title:o(i)("admin.subscriptions.revokeSubscription"),message:o(i)("admin.subscriptions.revokeConfirm",{user:(R=(k=W.value)==null?void 0:k.user)==null?void 0:R.email}),"confirm-text":o(i)("admin.subscriptions.revoke"),"cancel-text":o(i)("common.cancel"),danger:!0,onConfirm:zs,onCancel:a[16]||(a[16]=t=>oe.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),m(We,{show:ne.value,title:o(i)("admin.subscriptions.resetQuotaTitle"),message:o(i)("admin.subscriptions.resetQuotaConfirm",{user:($e=(Y=N.value)==null?void 0:Y.user)==null?void 0:$e.email}),"confirm-text":o(i)("admin.subscriptions.resetQuota"),"cancel-text":o(i)("common.cancel"),onConfirm:$s,onCancel:a[17]||(a[17]=t=>ne.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"]),(r(),$(Os,{to:"body"},[m(Ps,{name:"modal"},{default:p(()=>[F.value?(r(),l("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4",onMousedown:a[22]||(a[22]=Se(t=>F.value=!1,["self"]))},[e("div",{class:"fixed inset-0 bg-black/50",onClick:a[18]||(a[18]=t=>F.value=!1)}),e("div",Va,[e("button",{type:"button",class:"absolute right-4 top-4 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200",onClick:a[19]||(a[19]=t=>F.value=!1)},[...a[32]||(a[32]=[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",Aa,n(o(i)("admin.subscriptions.guide.title")),1),e("p",Ra,n(o(i)("admin.subscriptions.guide.subtitle")),1),e("div",Ia,[e("h3",Oa,[a[33]||(a[33]=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)),y(" "+n(o(i)("admin.subscriptions.guide.step1.title")),1)]),e("ol",Na,[e("li",null,n(o(i)("admin.subscriptions.guide.step1.line1")),1),e("li",null,n(o(i)("admin.subscriptions.guide.step1.line2")),1),e("li",null,n(o(i)("admin.subscriptions.guide.step1.line3")),1)]),e("div",Pa,[m(u,{to:"/admin/groups",onClick:a[20]||(a[20]=t=>F.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:p(()=>[y(n(o(i)("admin.subscriptions.guide.step1.link"))+" ",1),m(x,{name:"arrowRight",size:"xs"})]),_:1})])]),e("div",La,[e("h3",Qa,[a[34]||(a[34]=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)),y(" "+n(o(i)("admin.subscriptions.guide.step2.title")),1)]),e("ol",Ga,[e("li",null,n(o(i)("admin.subscriptions.guide.step2.line1")),1),e("li",null,n(o(i)("admin.subscriptions.guide.step2.line2")),1),e("li",null,n(o(i)("admin.subscriptions.guide.step2.line3")),1)])]),e("div",Ba,[e("h3",Ha,[a[35]||(a[35]=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)),y(" "+n(o(i)("admin.subscriptions.guide.step3.title")),1)]),e("div",qa,[e("table",Ka,[e("tbody",null,[(r(!0),l(ce,null,me(es.value,(t,b)=>(r(),l("tr",{key:b,class:"border-b border-gray-100 dark:border-dark-700 last:border-0"},[e("td",Wa,n(t.action),1),e("td",Ja,n(t.desc),1)]))),128))])])])]),e("div",Ya,n(o(i)("admin.subscriptions.guide.tip")),1),e("div",Xa,[e("button",{type:"button",class:"btn btn-primary btn-sm",onClick:a[21]||(a[21]=t=>F.value=!1)},n(o(i)("common.close")),1)])])],32)):d("",!0)]),_:1})]))]}),_:1})}}}),hi=Qs(Za,[["__scopeId","data-v-85c33fd6"]]);export{hi 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.