PageSourceSearch

https://soloapp.cn/assets/SubscriptionsView-C0kE1v9d.js

js soloapp.cn collected 2026-10-02 01:21:38 UTC 35,398 bytes, 1 lines download raw bytes

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