PageSourceSearch

https://gw-link.com/assets/UsersView-BM98uYQf.js

js gw-link.com collected 2026-10-07 13:13:49 UTC 112,021 bytes, 1 lines download raw bytes

1import{d as ce,w as ve,z as i,k as C,u as t,K as B,B as e,G as a,H as Y,r as k,F as q,W as Z,E as z,L as H,M as W,p as fe,$ as Bt,U as be,C as n,A as se,c as j,D as re,a4 as Js,o as St,a2 as Ws,a as Xt,Q as Zt,S as es,a6 as Ys,O as Xs,Y as wt}from"./vendor-vue-CO3ApL3c.js";import{a as he,g as ge,_ as T,j as K,aI as Ft,h as Ne,A as Zs}from"./index-Cso_LBa8.js";import{g as ea}from"./usePersistedPageSize-x0WpaIWh.js";import{u as ta}from"./useTableSelection-ovp2_28P.js";import{_ as sa}from"./AppLayout.vue_vue_type_script_setup_true_lang-D37IuHur.js";import{T as aa}from"./TablePageLayout-CkQYrU_U.js";import{D as oa}from"./DataTable-DcnkDVaw.js";import{P as la}from"./Pagination-DDP2G-PT.js";import{_ as Ct}from"./ConfirmDialog.vue_vue_type_script_setup_true_lang-DlSXnqdo.js";import{_ as ra}from"./EmptyState.vue_vue_type_script_setup_true_lang-DnA5sN0X.js";import{_ as ts}from"./GroupBadge.vue_vue_type_script_setup_true_lang-DRO7JgvR.js";import{S as Ce}from"./Select-tZ28QLZq.js";import{c as na}from"./stableObjectKey-DullU5Fx.js";import{u as me}from"./vendor-i18n-DCjIvhmF.js";import{_ as ss,u as as,a as os,i as ls,s as rs}from"./TotpStepUpDialog.vue_vue_type_script_setup_true_lang-MFEUaWzf.js";import{u as ia}from"./useClipboard-CjWBydCx.js";import{_ as Pt}from"./Toggle.vue_vue_type_script_setup_true_lang-hlqWocRZ.js";import{G as ua}from"./GroupOptionItem-g0HwJ56R.js";import{_ as Tt}from"./PlatformIcon.vue_vue_type_script_setup_true_lang-DZ4wnuyd.js";import{a as ns}from"./apiError-zX02PgX9.js";import{_ as da}from"./UserBalanceHistoryModal.vue_vue_type_script_setup_true_lang-Djs4nY0X.js";import"./vendor-misc-CxyBHc-c.js";/* empty css                                                                  */import"./LocaleSwitcher-BSNonSzG.js";/* empty css                                                                       */import"./peak-rate-qZGUWdry.js";import"./totp-CXaxNsTy.js";const ca=-1,ma=-2,pa=-3,ya=-4;function fa(A,c){const d=[],L=[],l=[],I=[];for(const M of A){const G={value:M.id,label:M.name};M.status!=="active"?I.push(G):M.subscription_type==="subscription"?l.push(G):M.is_exclusive?d.push(G):L.push(G)}const g=[{value:null,label:c.all}],f=[[c.exclusive,ca,d],[c.public,ma,L],[c.subscription,pa,l],[c.disabled,ya,I]];for(const[M,G,v]of f)v.length!==0&&(g.push({value:G,label:M,kind:"group",disabled:!0}),g.push(...v));return g}const va={class:"space-y-4"},ba={class:"flex items-center justify-between"},ga={class:"text-sm text-gray-500 dark:text-dark-400"},ha={key:0,class:"flex justify-center py-12"},_a={key:1,class:"py-12 text-center"},xa={class:"mt-2 text-sm text-gray-500 dark:text-dark-400"},ka={class:"text-xs text-gray-400 dark:text-dark-500"},wa={key:2,class:"max-h-96 space-y-2 overflow-y-auto"},$a=["title"],Ca={class:"min-w-0 flex-1"},Sa={class:"flex items-center gap-2"},Ua={class:"font-medium text-gray-900 dark:text-white"},Aa={class:"rounded bg-gray-100 px-1.5 py-0.5 font-mono text-xs text-gray-500 dark:bg-dark-700 dark:text-dark-400"},Va={key:0,class:"badge badge-danger text-xs"},Ea={key:1,class:"badge badge-gray text-xs"},Ma={class:"mt-0.5 flex items-center gap-2 text-xs text-gray-500 dark:text-dark-400"},Ga={class:"badge badge-gray"},za={key:0,class:"truncate"},Ra={class:"flex items-center gap-1"},La=["onClick","title"],Ia=["onClick","title"],Da={class:"flex justify-end"},Na={class:"input-label"},Oa=["placeholder","disabled"],Ba={class:"input-hint"},Fa={class:"input-label"},Pa=["placeholder"],Ta={class:"input-label"},Ha={key:0,class:"space-y-2"},ja={class:"input-label"},Ka=["onUpdate:modelValue","placeholder"],Qa=["onUpdate:modelValue","placeholder"],qa=["onClick"],Ja={class:"input-label"},Wa=["placeholder"],Ya={class:"input-label"},Xa=["placeholder"],Za={class:"flex items-center gap-6"},eo={class:"flex items-center gap-2"},to={class:"text-sm text-gray-700 dark:text-gray-300"},so={class:"flex items-center gap-2"},ao={class:"text-sm text-gray-700 dark:text-gray-300"},oo={class:"flex justify-end gap-3"},lo=["disabled"],ro={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},no=ce({__name:"UserAttributesConfigModal",props:{show:{type:Boolean}},emits:["close"],setup(A,{emit:c}){const{t:d}=me(),L=he(),l=A,I=c,g=["text","textarea","number","email","url","date","select","multi_select"],f=k(!1),M=k(!1),G=k([]),v=k(!1),V=k(!1),h=k(null),y=k(null),N=na("user-attr-option"),u=fe({key:"",name:"",type:"text",description:"",placeholder:"",required:!1,enabled:!0,options:[]}),U=async()=>{var b,p;f.value=!0;try{G.value=await K.userAttributes.listDefinitions()}catch(R){L.showError(((p=(b=R.response)==null?void 0:b.data)==null?void 0:p.detail)||d("admin.users.attributes.failedToLoad"))}finally{f.value=!1}},J=()=>{h.value=null,u.key="",u.name="",u.type="text",u.description="",u.placeholder="",u.required=!1,u.enabled=!0,u.options=[],v.value=!0},F=b=>{h.value=b,u.key=b.key,u.name=b.name,u.type=b.type,u.description=b.description||"",u.placeholder=b.placeholder||"",u.required=b.required,u.enabled=b.enabled,u.o
1ptions=b.options?b.options.map(p=>({...p})):[],v.value=!0},de=()=>{v.value=!1,h.value=null},ae=()=>{u.options.push({value:"",label:""})},$=b=>{u.options.splice(b,1)},O=async()=>{var b,p;if(!u.key.trim()){L.showError(d("admin.users.attributes.keyRequired"));return}if(!u.name.trim()){L.showError(d("admin.users.attributes.nameRequired"));return}if((u.type==="select"||u.type==="multi_select")&&u.options.length===0){L.showError(d("admin.users.attributes.optionsRequired"));return}M.value=!0;try{const R={key:u.key,name:u.name,type:u.type,description:u.description,placeholder:u.placeholder,required:u.required,enabled:u.enabled,options:u.type==="select"||u.type==="multi_select"?u.options:void 0};h.value?(await K.userAttributes.updateDefinition(h.value.id,R),L.showSuccess(d("admin.users.attributes.updated"))):(await K.userAttributes.createDefinition(R),L.showSuccess(d("admin.users.attributes.created"))),de(),U()}catch(R){const S=h.value?d("admin.users.attributes.failedToUpdate"):d("admin.users.attributes.failedToCreate");L.showError(((p=(b=R.response)==null?void 0:b.data)==null?void 0:p.detail)||S)}finally{M.value=!1}},_=b=>{y.value=b,V.value=!0},x=async()=>{var b,p;if(y.value)try{await K.userAttributes.deleteDefinition(y.value.id),L.showSuccess(d("admin.users.attributes.deleted")),V.value=!1,y.value=null,U()}catch(R){L.showError(((p=(b=R.response)==null?void 0:b.data)==null?void 0:p.detail)||d("admin.users.attributes.failedToDelete"))}};return ve(()=>l.show,b=>{b&&U()}),(b,p)=>{var R;return n(),i(q,null,[C(ge,{show:A.show,title:t(d)("admin.users.attributes.title"),width:"wide",onClose:p[1]||(p[1]=S=>I("close"))},{footer:B(()=>[e("div",Da,[e("button",{onClick:p[0]||(p[0]=S=>I("close")),class:"btn btn-secondary"},a(t(d)("common.close")),1)])]),default:B(()=>[e("div",va,[e("div",ba,[e("p",ga,a(t(d)("admin.users.attributes.description")),1),e("button",{onClick:J,class:"btn btn-primary btn-sm"},[C(T,{name:"plus",size:"sm",class:"mr-1.5","stroke-width":2}),Y(" "+a(t(d)("admin.users.attributes.addAttribute")),1)])]),f.value?(n(),i("div",ha,[...p[10]||(p[10]=[e("svg",{class:"h-8 w-8 animate-spin text-primary-500",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),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"})],-1)])])):G.value.length===0?(n(),i("div",_a,[p[11]||(p[11]=e("svg",{class:"mx-auto h-12 w-12 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z"}),e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 6h.008v.008H6V6z"})],-1)),e("p",xa,a(t(d)("admin.users.attributes.noAttributes")),1),e("p",ka,a(t(d)("admin.users.attributes.noAttributesHint")),1)])):(n(),i("div",wa,[(n(!0),i(q,null,Z(G.value,S=>(n(),i("div",{key:S.id,class:"flex items-center gap-3 rounded-lg border border-gray-200 bg-white p-3 dark:border-dark-600 dark:bg-dark-800"},[e("div",{class:"cursor-move text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",title:t(d)("admin.users.attributes.dragToReorder")},[C(T,{name:"menu",size:"md"})],8,$a),e("div",Ca,[e("div",Sa,[e("span",Ua,a(S.name),1),e("span",Aa,a(S.key),1),S.required?(n(),i("span",Va,a(t(d)("admin.users.attributes.required")),1)):z("",!0),S.enabled?z("",!0):(n(),i("span",Ea,a(t(d)("common.disabled")),1))]),e("div",Ma,[e("span",Ga,a(t(d)(`admin.users.attributes.types.${S.type}`)),1),S.description?(n(),i("span",za,a(S.description),1)):z("",!0)])]),e("div",Ra,[e("button",{onClick:Q=>F(S),class:"rounded-lg p-1.5 text-gray-500 hover:bg-gray-100 hover:text-primary-600 dark:hover:bg-dark-700 dark:hover:text-primary-400",title:t(d)("common.edit")},[C(T,{name:"edit",size:"sm"})],8,La),e("button",{onClick:Q=>_(S),class:"rounded-lg p-1.5 text-gray-500 hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-900/20 dark:hover:text-red-400",title:t(d)("common.delete")},[C(T,{name:"trash",size:"sm"})],8,Ia)])]))),128))]))])]),_:1},8,["show","title"]),C(ge,{show:v.value,title:h.value?t(d)("admin.users.attributes.editAttribute"):t(d)("admin.users.attributes.addAttribute"),width:"normal",onClose:de},{footer:B(()=>[e("div",oo,[e("button",{onClick:de,type:"button",class:"btn btn-secondary"},a(t(d)("common.cancel")),1),e("button",{type:"submit",form:"attribute-form",disabled:M.value,class:"btn btn-primary"},[M.value?(n(),i("svg",ro,[...p[12]||(p[12]=[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)])])):z("",!0),Y(" "+a(M.value?t(d)("common.saving"):h.value?t(d)("common.update"):t(d)("common.create")),1)],8,lo)])]),default:B(()=>[e("form",{id:"attribute-form",onSubmit:be(O,["prevent"]),class:"space-y-4"},[e("div",null,[e("label",Na,a(t(d)("admin.users.attributes.key")),1),H(e("input",{"onUpdate:modelValue":p[2]||(p[2]=S=>u.key=S),type:"text",required:"",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$",class:"input font-mono",placeholder:t(d)("admin.users.attributes.keyHint"),disabled:!!h.value},null,8,Oa),[[W,u.key]]),e("p",Ba,a(t(d)("admin.users.attributes.keyHint")),1)]),e("div",null,[e("label",Fa,a(t(d)("admin.users.attributes.name")),1),H(e("input",{"onUpdate:modelValue":p[3]||(p[3]=S=>u.name=S),type:"text",required:"",class:"input",placeholder:t(d)("admin.users.attributes.nameHint")},null,8,Pa),[[W,u.name]])]),e("div",null,[e("label",Ta,a(t(d)("admin.users.attributes.type")),1),C(Ce,{modelValue:u.type,"onUpdate:modelValue":p[4]||(p[4]=S=>u.type=S),options:g.map(S=>({value:S,label:t(d)(`admin.users.attributes.types.${S}`)}))},null,8,["modelValue","options"])]),u.type==="select"||u.type==="multi_select"?(n(),i("div",Ha,[e("label",ja,a(t(d)("admin.users.attributes.options")),1),(n(!0),i(q,null,Z(u.options,
1(S,Q)=>(n(),i("div",{key:t(N)(S),class:"flex items-center gap-2"},[H(e("input",{"onUpdate:modelValue":D=>S.value=D,type:"text",class:"input flex-1 font-mono text-sm",placeholder:t(d)("admin.users.attributes.optionValue"),required:""},null,8,Ka),[[W,S.value]]),H(e("input",{"onUpdate:modelValue":D=>S.label=D,type:"text",class:"input flex-1 text-sm",placeholder:t(d)("admin.users.attributes.optionLabel"),required:""},null,8,Qa),[[W,S.label]]),e("button",{type:"button",onClick:D=>$(Q),class:"rounded-lg p-1.5 text-gray-500 hover:bg-red-50 hover:text-red-600"},[C(T,{name:"x",size:"sm","stroke-width":2})],8,qa)]))),128)),e("button",{type:"button",onClick:ae,class:"btn btn-secondary btn-sm"},[C(T,{name:"plus",size:"sm",class:"mr-1","stroke-width":2}),Y(" "+a(t(d)("admin.users.attributes.addOption")),1)])])):z("",!0),e("div",null,[e("label",Ja,a(t(d)("admin.users.attributes.fieldDescription")),1),H(e("input",{"onUpdate:modelValue":p[5]||(p[5]=S=>u.description=S),type:"text",class:"input",placeholder:t(d)("admin.users.attributes.fieldDescriptionHint")},null,8,Wa),[[W,u.description]])]),e("div",null,[e("label",Ya,a(t(d)("admin.users.attributes.placeholder")),1),H(e("input",{"onUpdate:modelValue":p[6]||(p[6]=S=>u.placeholder=S),type:"text",class:"input",placeholder:t(d)("admin.users.attributes.placeholderHint")},null,8,Xa),[[W,u.placeholder]])]),e("div",Za,[e("label",eo,[H(e("input",{"onUpdate:modelValue":p[7]||(p[7]=S=>u.required=S),type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600"},null,512),[[Bt,u.required]]),e("span",to,a(t(d)("admin.users.attributes.required")),1)]),e("label",so,[H(e("input",{"onUpdate:modelValue":p[8]||(p[8]=S=>u.enabled=S),type:"checkbox",class:"h-4 w-4 rounded border-gray-300 text-primary-600"},null,512),[[Bt,u.enabled]]),e("span",ao,a(t(d)("admin.users.attributes.enabled")),1)])])],32)]),_:1},8,["show","title"]),C(Ct,{show:V.value,title:t(d)("admin.users.attributes.deleteAttribute"),message:t(d)("admin.users.attributes.deleteConfirm",{name:(R=y.value)==null?void 0:R.name}),"confirm-text":t(d)("common.delete"),"cancel-text":t(d)("common.cancel"),danger:!0,onConfirm:x,onCancel:p[9]||(p[9]=S=>V.value=!1)},null,8,["show","title","message","confirm-text","cancel-text"])],64)}}}),io={class:"flex items-center"},uo={class:"font-mono"},co={class:"font-mono"},mo=ce({__name:"UserConcurrencyCell",props:{current:{},max:{}},setup(A){const c=A,d=j(()=>{const{current:L,max:l}=c;return L>=l&&l>0?"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400":L>0?"bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400":"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400"});return(L,l)=>(n(),i("div",io,[e("span",{class:se(["inline-flex items-center gap-1 rounded-md px-2 py-0.5 text-xs font-medium",d.value])},[l[0]||(l[0]=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:"M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z"})],-1)),e("span",uo,a(A.current),1),l[1]||(l[1]=e("span",{class:"text-gray-400 dark:text-gray-500"},"/",-1)),e("span",co,a(A.max),1)],2)]))}}),po={class:"group/usage relative text-sm"},yo={class:"flex items-center gap-1.5"},fo={class:"text-gray-500 dark:text-gray-400"},vo={class:"font-medium text-gray-900 dark:text-white"},bo={class:"mt-0.5 flex items-center gap-1.5"},go={class:"text-gray-500 dark:text-gray-400"},ho={class:"font-medium text-gray-900 dark:text-white"},_o={key:0,class:"pointer-events-none absolute left-full top-0 z-50 ml-2 min-w-[220px] whitespace-nowrap rounded-md bg-gray-900 px-3 py-2 text-xs text-white opacity-0 shadow-xl transition-opacity duration-100 group-hover/usage:opacity-100 dark:bg-dark-600"},xo={class:"mb-1.5 flex items-center justify-between gap-3 border-b border-white/10 pb-1 text-[11px] opacity-80"},ko={class:"font-mono"},wo={class:"capitalize"},$o={class:"font-mono"},Ht=1e-4,Co=ce({__name:"PlatformUsageBreakdown",props:{today:{},total:{},byPlatform:{}},setup(A){const c=A,{t:d}=me(),L=j(()=>{const M=[...c.byPlatform??[]].sort((y,N)=>N.total_actual_cost-y.total_actual_cost).map(y=>({...y})),G=M.reduce((y,N)=>y+N.total_actual_cost,0),v=M.reduce((y,N)=>y+N.today_actual_cost,0),V=Math.max(0,c.total-G),h=Math.max(0,c.today-v);return(V>Ht||h>Ht)&&M.push({platform:"__other__",today_actual_cost:h,total_actual_cost:V,isOther:!0}),M}),l=j(()=>L.value.length>0),I={anthropic:"Claude",openai:"OpenAI",gemini:"Gemini",antigravity:"Antigravity",grok:"Grok",kimi:"Kimi",zhipu:"Zhipu GLM",deepseek:"DeepSeek",minimax:"MiniMax"};function g(f){return I[f]??f}return(f,M)=>(n(),i("div",po,[e("div",yo,[e("span",fo,a(t(d)("admin.users.today"))+":",1),e("span",vo,"$"+a(A.today.toFixed(4)),1),l.value?(n(),re(T,{key:0,name:"infoCircle",size:"xs",class:"text-gray-400 dark:text-gray-500"})):z("",!0)]),e("div",bo,[e("span",go,a(t(d)("admin.users.total"))+":",1),e("span",ho,"$"+a(A.total.toFixed(4)),1)]),l.value?(n(),i("div",_o,[e("div",xo,[e("span",null,a(t(d)("admin.users.platformBreakdown")),1),e("span",ko,a(t(d)("admin.users.today"))+" / "+a(t(d)("admin.users.total")),1)]),(n(!0),i(q,null,Z(L.value,G=>(n(),i("div",{key:G.platform,class:se(["flex items-center justify-between gap-3 py-0.5",{"opacity-70 italic":G.isOther}])},[e("span",wo,a(G.isOther?t(d)("admin.users.platformOther"):g(G.platform)),1
1),e("span",$o,[Y(" $"+a(G.today_actual_cost.toFixed(4))+" ",1),M[0]||(M[0]=e("span",{class:"opacity-50"},"/",-1)),Y(" $"+a(G.total_actual_cost.toFixed(4)),1)])],2))),128))])):z("",!0)]))}}),So={key:0,class:"text-sm"},Uo={class:"flex items-center gap-1.5"},Ao={class:"text-gray-500 dark:text-gray-400"},Vo={class:"font-medium text-gray-900 dark:text-white"},Eo={class:"mt-0.5 flex items-center gap-1.5"},Mo={class:"text-gray-500 dark:text-gray-400"},Go={class:"font-medium text-gray-900 dark:text-white"},zo={key:1,class:"text-sm text-gray-400 dark:text-gray-500"},Ye=ce({__name:"PlatformCostCell",props:{usage:{}},setup(A){const{t:c}=me();return(d,L)=>A.usage?(n(),i("div",So,[e("div",Uo,[e("span",Ao,a(t(c)("admin.users.today"))+":",1),e("span",Vo,"$"+a(A.usage.today_actual_cost.toFixed(4)),1)]),e("div",Eo,[e("span",Mo,a(t(c)("admin.users.total"))+":",1),e("span",Go,"$"+a(A.usage.total_actual_cost.toFixed(4)),1)])])):(n(),i("span",zo,"—"))}}),Ro={key:0,class:"text-xs text-gray-400 dark:text-gray-500"},Lo={key:1,class:"text-xs text-gray-400 dark:text-gray-500"},Io={key:2,class:"space-y-0.5 text-xs"},Do={class:"w-20 shrink-0 font-mono text-gray-700 dark:text-gray-300"},No={class:"text-gray-500 dark:text-gray-400"},Oo={class:"text-gray-900 dark:text-white"},Bo={class:"text-gray-500 dark:text-gray-400"},Fo={class:"text-gray-900 dark:text-white"},Po={class:"text-gray-500 dark:text-gray-400"},To={class:"text-gray-900 dark:text-white"},Ho=ce({__name:"UserPlatformQuotaCell",props:{quotas:{}},setup(A){const c=A,{t:d}=me(),L=["anthropic","openai","gemini","antigravity","grok","typesafe"],l=j(()=>c.quotas?c.quotas.filter(f=>f.daily_limit_usd!=null||f.weekly_limit_usd!=null||f.monthly_limit_usd!=null).slice().sort((f,M)=>L.indexOf(f.platform)-L.indexOf(M.platform)):[]);function I(f){return f==null||Number.isNaN(f)?"0":String(Math.round(f*100)/100)}function g(f){return f==null?"—":I(f)}return(f,M)=>c.quotas===void 0?(n(),i("span",Ro,"…")):l.value.length===0?(n(),i("span",Lo,a(t(d)("admin.users.platformQuota.cellNotConfigured")),1)):(n(),i("div",Io,[(n(!0),i(q,null,Z(l.value,G=>(n(),i("div",{key:G.platform,class:"flex items-center gap-2 whitespace-nowrap"},[e("span",Do,a(G.platform),1),e("span",No,[Y(a(t(d)("admin.users.platformQuota.windowDaily"))+" ",1),e("span",Oo,a(I(G.daily_usage_usd))+"/"+a(g(G.daily_limit_usd)),1)]),e("span",Bo,[Y(a(t(d)("admin.users.platformQuota.windowWeekly"))+" ",1),e("span",Fo,a(I(G.weekly_usage_usd))+"/"+a(g(G.weekly_limit_usd)),1)]),e("span",Po,[Y(a(t(d)("admin.users.platformQuota.windowMonthly"))+" ",1),e("span",To,a(I(G.monthly_usage_usd))+"/"+a(g(G.monthly_limit_usd)),1)])]))),128))]))}}),jo={class:"input-label"},Ko=["placeholder"],Qo={class:"input-label"},qo={class:"flex gap-2"},Jo={class:"relative flex-1"},Wo=["placeholder"],Yo={class:"input-label"},Xo=["placeholder"],Zo={class:"input-label"},el={value:"user"},tl={value:"admin"},sl={class:"grid grid-cols-1 sm:grid-cols-2 gap-4"},al={class:"input-label"},ol={class:"input-label"},ll={class:"input-label"},rl=["placeholder"],nl={class:"input-hint"},il={class:"flex justify-end gap-3"},ul=["disabled"],dl=ce({__name:"UserCreateModal",props:{show:{type:Boolean}},emits:["close","success"],setup(A,{emit:c}){const d=A,L=c,{t:l}=me(),I=he(),g=fe({email:"",password:"",username:"",notes:"",role:"user",balance:"",concurrency:1,rpm_limit:0}),f=as(),M=k(!1),G=async()=>{if(!M.value){M.value=!0;try{const{balance:V,...h}={...g},y=String(V).trim(),N={...h};y!==""&&(N.balance=Number(y)),await f.run(()=>K.users.create(N)),I.showSuccess(l("admin.users.userCreated")),L("success"),L("close")}catch(V){os(V)||(ls(V)?I.showError(rs(V)==="STEP_UP_ADMIN_API_KEY_FORBIDDEN"?l("stepUp.adminApiKeyForbidden"):l("stepUp.notEnabled")):I.showError((V==null?void 0:V.message)||l("admin.users.failedToCreate")))}finally{M.value=!1}}};ve(()=>d.show,V=>{V&&Object.assign(g,{email:"",password:"",username:"",notes:"",role:"user",balance:"",concurrency:1,rpm_limit:0})});const v=()=>{const V="ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789!@#$%^&*";let h="";for(let y=0;y<16;y++)h+=V.charAt(Math.floor(Math.random()*V.length));g.password=h};return(V,h)=>(n(),i(q,null,[C(ge,{show:A.show,title:t(l)("admin.users.createUser"),width:"normal",onClose:h[8]||(h[8]=y=>V.$emit("close"))},{footer:B(()=>[e("div",il,[e("button",{onClick:h[7]||(h[7]=y=>V.$emit("close")),type:"button",class:"btn btn-secondary"},a(t(l)("common.cancel")),1),e("button",{type:"submit",form:"create-user-form",disabled:M.value,class:"btn btn-primary"},a(M.value?t(l)("admin.users.creating"):t(l)("common.create")),9,ul)])]),default:B(()=>[e("form",{id:"create-user-form",onSubmit:be(G,["prevent"]),class:"space-y-5"},[e("div",null,[e("label",jo,a(t(l)("admin.users.email")),1),H(e("input",{"onUpdate:modelValue":h[0]||(h[0]=y=>g.email=y),type:"email",required:"",class:"input",placeholder:t(l)("admin.users.enterEmail")},null,8,Ko),[[W,g.email]])]),e("div",null,[e("label",Qo,a(t(l)("admin.users.password")),1),e("div",qo,[e("div",Jo,[H(e("input",{"onUpdate:modelValue":h[1]||(h[1]=y=>g.password=y),type:"text",required:"",class:"input pr-10",placeholder:t(l)("admin.users.enterPassword")},null,8,Wo),[[W,g.password]])]),e("button",{type:"button",onClick:v,class:"btn btn-secondary px-3"},[C(T,{name:"refresh",size:"md"})])])]),e("div",null,[e("label",Yo,a(t(l)("admin.users.username")),1),H(e("input",{"onUpdate:modelValue":h[2]||(h[2]=y=>g.username=y),type:"text",class:"input",placeholder:t(l)("admin.users.enterUsername")},null,8,Xo),[[W,g.username]])]),e("div",null,[e("label",Zo,a(t(l)("admin.users.form.roleLabel")),1),H(e("select",{"onUpdate:modelValue":h[3]||(h[3]=y=>g.role=y),class:"input"},[e("option",el,a(t(l)("admin.users.roles.user")),1),e("option",tl,a(t(l)("admin.users.roles.admin")),1)],512),[[Js,g.role]])]),e("div",sl,[e("div",null,[e("label",al,a(t(l)("admin.users.columns.balance")),1),H(e("input",{"onUpdate:modelValue":h[4]||(h[4]=y=>g.balance=y),type:"number",step:"any",class:"input"},null,512),[[W,g.balance]])]),e("div",null,[e("label",ol,a(t(l)("admin.users.columns.concurrency")),1),H(e("input",{"onUpdate:modelValue":h[5]||(h[5]=y=>g.concurrency=y),type:"number",class:"input"},null,512),[[W,g.concurrency,void 0,{number:!0}]])])]),e("div",null,[e("label",ll,a(t(l)("admin.users.form.rpmLimit")),1),H(e("input",{"onUpdate:modelValue":h[6]||(h[6]=y=>g.rpm_limit=y),type:"number",min:"0",step:"1",class:"input",placeholder:t(l)("admin.users.form.rpmLimitPlaceholder")},null,8,rl),[[W,g.rpm_limit,void 0,{number:!0}]]),e("p",nl,a(t(l)("admin.users.form.rpmLimitHint")),1)])],32)]),_:1},8,["show","title"]),C(ss,{controller:t(f)},null,8,["controller"])],64))}}),cl={key:0,class:"space-y-4"},ml={class:"input-label"},pl={key:0,class:"text-red-500"},yl=["onUpdate:modelValue","type","required","placeholder"],fl=["value","required","placeholder","min","max","onInput"],vl=["onUpdate:modelValue","required"],bl=["onUpdate:modelValue","required","placeholder"],gl={key:5,class:"space-y-2"},hl=["value","checked","onChange"],_l={class:"text-sm text-gray-700 dark:text-gray-300"},xl={key:6,class:"input-hint"},kl={key:1,class:"flex justify-center py-4"},wl=ce({__name:"UserAttributeForm",props:{userId:{},modelValue:{}},emits:["update:modelValue"],setup(A,{emit:c}){const d=A,L=c,l=k(!1),I=k([]),g=k({});let f=0;const M=async()=>{l.value=!0;try{I.value=await K.userAttributes.listEnabledDefinitions()}catch(y){console.error("Failed to load attributes:",y)}finally{l.value=!1}},G=async()=>
1{if(!d.userId)return;const y=++f;try{const N=await K.userAttributes.getUserAttributeValues(d.userId);if(y!==f)return;const u={};N.forEach(U=>{u[U.attribute_id]=U.value}),g.value={...u},L("update:modelValue",g.value)}catch(N){console.error("Failed to load user attribute values:",N)}},v=()=>{L("update:modelValue",{...g.value})},V=(y,N)=>{const u=g.value[y];if(!u)return!1;try{const U=JSON.parse(u);return Array.isArray(U)&&U.includes(N)}catch{return!1}},h=(y,N)=>{let u=[];const U=g.value[y];if(U)try{u=JSON.parse(U),Array.isArray(u)||(u=[])}catch{u=[]}const J=u.indexOf(N);J>-1?u.splice(J,1):u.push(N),g.value[y]=JSON.stringify(u),v()};return ve(()=>d.modelValue,y=>{y&&Object.keys(y).length>0&&(g.value={...y})},{immediate:!0}),ve(()=>d.userId,(y,N,u)=>{u(()=>{f++}),g.value={},y&&G()},{immediate:!0}),St(()=>{M()}),(y,N)=>I.value.length>0?(n(),i("div",cl,[(n(!0),i(q,null,Z(I.value,u=>{var U,J;return n(),i("div",{key:u.id},[e("label",ml,[Y(a(u.name)+" ",1),u.required?(n(),i("span",pl,"*")):z("",!0)]),u.type==="text"||u.type==="email"||u.type==="url"?H((n(),i("input",{key:0,"onUpdate:modelValue":F=>g.value[u.id]=F,type:u.type==="text"?"text":u.type,required:u.required,placeholder:u.placeholder,class:"input",onInput:v},null,40,yl)),[[Ws,g.value[u.id]]]):u.type==="number"?(n(),i("input",{key:1,value:g.value[u.id],type:"number",required:u.required,placeholder:u.placeholder,min:(U=u.validation)==null?void 0:U.min,max:(J=u.validation)==null?void 0:J.max,class:"input",onInput:F=>{g.value[u.id]=F.target.value,v()}},null,40,fl)):u.type==="date"?H((n(),i("input",{key:2,"onUpdate:modelValue":F=>g.value[u.id]=F,type:"date",required:u.required,class:"input",onInput:v},null,40,vl)),[[W,g.value[u.id]]]):u.type==="textarea"?H((n(),i("textarea",{key:3,"onUpdate:modelValue":F=>g.value[u.id]=F,required:u.required,placeholder:u.placeholder,rows:"3",class:"input",onInput:v},null,40,bl)),[[W,g.value[u.id]]]):u.type==="select"?(n(),re(Ce,{key:4,modelValue:g.value[u.id],"onUpdate:modelValue":F=>g.value[u.id]=F,options:u.options||[],onChange:v},null,8,["modelValue","onUpdate:modelValue","options"])):u.type==="multi_select"?(n(),i("div",gl,[(n(!0),i(q,null,Z(u.options,F=>(n(),i("label",{key:F.value,class:"flex items-center gap-2"},[e("input",{type:"checkbox",value:F.value,checked:V(u.id,F.value),onChange:de=>h(u.id,F.value),class:"h-4 w-4 rounded border-gray-300 text-primary-600"},null,40,hl),e("span",_l,a(F.label),1)]))),128))])):z("",!0),u.description?(n(),i("p",xl,a(u.description),1)):z("",!0)])}),128))])):l.value?(n(),i("div",kl,[...N[0]||(N[0]=[e("svg",{class:"h-5 w-5 animate-spin text-gray-400",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),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"})],-1)])])):z("",!0)}}),$l={class:"input-label"},Cl={class:"input-label"},Sl={class:"flex gap-2"},Ul={class:"relative flex-1"},Al=["placeholder"],Vl={key:0,class:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2"},El={key:1,class:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"1.5"},Ml={class:"input-label"},Gl={class:"input-label"},zl={class:"input-label"},Rl={class:"input-label"},Ll=["placeholder"],Il={class:"input-hint"},Dl={class:"input-label"},Nl=["placeholder"],Ol={class:"input-hint"},Bl={class:"flex justify-end gap-3"},Fl=["disabled"],Pl=ce({__name:"UserEditModal",props:{show:{type:Boolean},user:{}},emits:["close","success"],setup(A,{emit:c}){const d=A,L=c,{t:l}=me(),I=he(),{copyToClipboard:g}=ia(),f=k(!1),M=k(!1),G=j(()=>[{value:"user",label:l("admin.users.roles.user")},{value:"admin",label:l("admin.users.roles.admin")}]),v=fe({email:"",password:"",username:"",notes:"",role:"user",concurrency:1,rpm_limit:0,customAttributes:{}});ve(()=>d.user,u=>{u&&(Object.assign(v,{email:u.email,password:"",username:u.username||"",notes:u.notes||"",role:u.role||"user",concurrency:u.concurrency,rpm_limit:u.rpm_limit??0,customAttributes:{}}),M.value=!1)},{immediate:!0});const V=()=>{const u="ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789!@#$%^&*";let U="";for(let J=0;J<16;J++)U+=u.charAt(Math.floor(Math.random()*u.length));v.password=U},h=async()=>{v.password&&await g(v.password,l("admin.users.passwordCopied"))&&(M.value=!0,setTimeout(()=>M.value=!1,2e3))},y=as(),N=async()=>
1{if(!d.user)return;if(!v.email.trim()){I.showError(l("admin.users.emailRequired"));return}if(!Number.isInteger(v.concurrency)||v.concurrency<0){I.showError(l("admin.users.concurrencyNonNegative"));return}const u=d.user.id;f.value=!0;try{const U={email:v.email,username:v.username,notes:v.notes,role:v.role,concurrency:v.concurrency,rpm_limit:v.rpm_limit};v.password.trim()&&(U.password=v.password.trim()),await y.run(()=>K.users.update(u,U)),Object.keys(v.customAttributes).length>0&&await K.userAttributes.updateUserAttributeValues(u,v.customAttributes),I.showSuccess(l("admin.users.userUpdated")),L("success"),L("close")}catch(U){os(U)||(ls(U)?I.showError(rs(U)==="STEP_UP_ADMIN_API_KEY_FORBIDDEN"?l("stepUp.adminApiKeyForbidden"):l("stepUp.notEnabled")):I.showError((U==null?void 0:U.message)||l("admin.users.failedToUpdate")))}finally{f.value=!1}};return(u,U)=>(n(),i(q,null,[C(ge,{show:A.show,title:t(l)("admin.users.editUser"),width:"normal",onClose:U[9]||(U[9]=J=>u.$emit("close"))},{footer:B(()=>[e("div",Bl,[e("button",{onClick:U[8]||(U[8]=J=>u.$emit("close")),type:"button",class:"btn btn-secondary"},a(t(l)("common.cancel")),1),e("button",{type:"submit",form:"edit-user-form",disabled:f.value,class:"btn btn-primary"},a(f.value?t(l)("admin.users.updating"):t(l)("common.update")),9,Fl)])]),default:B(()=>{var J;return[A.user?(n(),i("form",{key:0,id:"edit-user-form",onSubmit:be(N,["prevent"]),class:"space-y-5"},[e("div",null,[e("label",$l,a(t(l)("admin.users.email")),1),H(e("input",{"onUpdate:modelValue":U[0]||(U[0]=F=>v.email=F),type:"email",class:"input"},null,512),[[W,v.email]])]),e("div",null,[e("label",Cl,a(t(l)("admin.users.password")),1),e("div",Sl,[e("div",Ul,[H(e("input",{"onUpdate:modelValue":U[1]||(U[1]=F=>v.password=F),type:"text",class:"input pr-10",placeholder:t(l)("admin.users.enterNewPassword")},null,8,Al),[[W,v.password]]),v.password?(n(),i("button",{key:0,type:"button",onClick:h,class:se(["absolute right-2 top-1/2 -translate-y-1/2 rounded-lg p-1 transition-colors hover:bg-gray-100 dark:hover:bg-dark-700",M.value?"text-green-500":"text-gray-400"])},[M.value?(n(),i("svg",Vl,[...U[10]||(U[10]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 13l4 4L19 7"},null,-1)])])):(n(),i("svg",El,[...U[11]||(U[11]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.666 3.888A2.25 2.25 0 0013.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 01-.75.75H9a.75.75 0 01-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 01-2.25 2.25H6.75A2.25 2.25 0 014.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 011.927-.184"},null,-1)])]))],2)):z("",!0)]),e("button",{type:"button",onClick:V,class:"btn btn-secondary px-3"},[C(T,{name:"refresh",size:"md"})])])]),e("div",null,[e("label",Ml,a(t(l)("admin.users.username")),1),H(e("input",{"onUpdate:modelValue":U[2]||(U[2]=F=>v.username=F),type:"text",class:"input"},null,512),[[W,v.username]])]),e("div",null,[e("label",Gl,a(t(l)("admin.users.form.roleLabel")),1),C(Ce,{modelValue:v.role,"onUpdate:modelValue":U[3]||(U[3]=F=>v.role=F),options:G.value,searchable:!1},null,8,["modelValue","options"])]),e("div",null,[e("label",zl,a(t(l)("admin.users.notes")),1),H(e("textarea",{"onUpdate:modelValue":U[4]||(U[4]=F=>v.notes=F),rows:"3",class:"input"},null,512),[[W,v.notes]])]),e("div",null,[e("label",Rl,a(t(l)("admin.users.columns.concurrency")),1),H(e("input",{"onUpdate:modelValue":U[5]||(U[5]=F=>v.concurrency=F),type:"number",min:"0",step:"1",class:"input",placeholder:t(l)("admin.users.form.concurrencyPlaceholder"),"data-test":"concurrency-input"},null,8,Ll),[[W,v.concurrency,void 0,{number:!0}]]),e("p",Il,a(t(l)("admin.users.form.concurrencyHint")),1)]),e("div",null,[e("label",Dl,a(t(l)("admin.users.form.rpmLimit")),1),H(e("input",{"onUpdate:modelValue":U[6]||(U[6]=F=>v.rpm_limit=F),type:"number",min:"0",step:"1",class:"input",placeholder:t(l)("admin.users.form.rpmLimitPlaceholder")},null,8,Nl),[[W,v.rpm_limit,void 0,{number:!0}]]),e("p",Ol,a(t(l)("admin.users.form.rpmLimitHint")),1)]),C(wl,{modelValue:v.customAttributes,"onUpdate:modelValue":U[7]||(U[7]=F=>v.customAttributes=F),"user-id":(J=A.user)==null?void 0:J.id},null,8,["modelValue","user-id"])],32)):z("",!0)]}),_:1},8,["show","title"]),C(ss,{controller:t(y)},null,8,["controller"])],64))}}),Tl={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Hl={class:"divide-y divide-gray-200 border-y border-gray-200 dark:divide-dark-700 dark:border-dark-700"},jl={class:"space-y-3 py-4"},Kl={class:"flex items-center justify-between gap-4"},Ql={for:"bulk-concurrency",class:"input-label mb-0"},ql={class:"space-y-3 py-4"},Jl={class:"flex items-center justify-between gap-4"},Wl={for:"bulk-rpm-limit",class:"input-label mb-0"},Yl={key:0},Xl={key:0,class:"input-hint"},Zl={key:0,class:"text-sm text-red-600 dark:text-red-400"},er={key:1,class:"text-sm text-red-600 dark:text-red-400"},tr={class:"flex justify-end gap-3"},sr=["disabled"],jt=500,ar=ce({__name:"BulkEditUserModal",props:{show:{type:Boolean},selectedIds:{}},emits:["close","success"],setup(A,{emit:c}){const d=A,L=c,{t:l}=me(),I=he(),g=k(!1),f=k(!1),M=k(""),G=k(""),v=k(!1),V=ae=>{const $=String(ae).trim();if(!$)return;const O=Number($);return!Number.isInteger(O)||O<0?null:O},h=j(()=>g.value?V(M.value):void 0),y=j(()=>f.value?V(G.value):void 0),N=j(()=>h.value===null||y.value===null),u=j(()=>h.value!==void 0&&h.value!==null||y.value!==void 0&&y.value!==null),U=j(()=>d.selectedIds.length>jt),J=j(()=>d.selectedIds.length>0&&!U.value&&u.value&&!N.value&&!v.value),F=()=>{g.value=!1,f.value=!1,M.value="",G.value="",v.value=!1};ve(()=>d.show,ae=>{ae&&F()});const de=async()=>{var _,x,b,p;if(!J.value)return;const ae={user_ids:[...d.selectedIds],all:!1},$=[];if(h.value!==void 0&&h.value!==null&&(ae.concurrency=h.value,$.push(l("admin.users.bulkLimits.concurrencyValue",{value:h.value}))),y.value!==void 0&&y.value!==null&&(ae.rpm_limit=y.value,$.push(y.value===0?l("admin.users.bulkLimits.rpmUnlimitedValue"):l("admin.users.bulkLimits.rpmValue",{value:y.value}))),!!window.confirm(l("admin.users.bulkLimits.confirm",{count:d.selectedIds.length,fields:$.join(", ")}))){v.value=!0;try{const R=await K.users.batchUpdateLimits(ae);I.showSuccess(l("admin.users.bulkLimits.success",{count:R.affected})),L("success",R.affected),L("close")}catch(R){I.showError(((x=(_=R.response)==null?void 0:_.data)==null?void 0:x.message)||((p=(b=R.response)==null?void 0:b.data)==null?void 0:p.detail)||l("admin.users.bulkLimits.failed"))}finally{v.value=!1}}};return(ae,$)=>(n(),re(ge,{show:A.show,title:t(l)("admin.users.bulkLimits.title"),width:"normal",onClose:$[5]||($[5]=O=>L("close"))},{footer:B(()=>[e("div",tr,[e("button",{type:"button",class:"btn btn-secondary",onClick:$[4]||($[4]=O=>L("close"))},a(t(l)("common.cancel")),1),e("button",{type:"submit",form:"bulk-edit-user-limits-form",class:"btn btn-primary",disabled:!J.value,"data-test":"submit"},a(v.value?t(l)("admin.users.bulkLimits.applying"):t(l)("admin.users.bulkLimits.apply")),9,sr)])]),default:B(()=>[e("form",{id:"bulk-edit-user-limits-form",class:"space-y-5",onSubmit:be(de,["prevent"])},[e("p",Tl,a(t(l)("admin.users.bulkLimits.selectedCount",{count:A.selectedIds.length})),1),e("div",Hl,[e("div",jl,[e("div",Kl,[e("label",Ql,a(t(l)("admin.users.columns.concurrency")),1),C(Pt,{modelValue:g.value,"onUpdate:modelValue":$[0]||($[0]=O=>g.value=O),"aria-label":t(l)("admin.users.bulkLimits.enableConcurrency"),"data-test":"enable-concurrency"},null,8,["modelValue","aria-label"])]),g.value?H((n(),i("input",{key:0,id:"bulk-concurrency","onUpdate:modelValue":$[1]||($[1]=O=>M.value=O),type:"number",min:"0",step:"1",class:"input","data-test":"concurrency-input"},null,512)),[[W,M.value]]):z("",!0)]),e("div",ql,[e("div",Jl,[e("label",Wl,a(t(l)("admin.users.form.rpmLimit")),1),C(Pt,{modelValue:f.value,"onUpdate:modelValue":$[2]||($[2]=O=>f.value=O),"aria-label":t(l)("admin.users.bulkLimits.enableRPMLimit"),"data-test":"enable-rpm-limit"},null,8,["modelValue","aria-label"])]),f.value?(n(),i("div",Yl,[H(e("input",{id:"bulk-rpm-limit","onUpdate:modelValue":$[3]||($[3]=O=>G.value=O),type:"number",min:"0",step:"1",class:"input","data-test":"rpm-limit-input"},null,512),[[W,G.value]]),y.value===0?(n(),i("p",Xl,a(t(l)("admin.users.bulkLimits.unlimited")),1)):z("",!0)])):z("",!0)])]),N.value?(n(),i("p",Zl,a(t(l)("admin.users.bulkLimits.nonNegativeInteger")),1)):z("",!0),U.value?(n(),i("p",er,a(t(l)("admin.users.bulkLimits.selectionLimit",{max:jt})),1)):z("",!0)],32)]),_:1},8,["show","title"]))}}),or={key:0,class:"space-y-4"},lr={key:0,class:"rounded-xl border border-amber-200 bg-amber-50 px-4 py-3 text-sm text-amber-700 dark:border-amber-500/30 dark:bg-amber-500/10 dark:text-amber-200"},rr={class:"text-sm text-gray-600 dark:text-gray-400"},nr={key:1,class:"py-10 text-center text-gray-500"},ir={key:2,class:"overflow-x-auto"},ur={class:"min-w-full text-sm"},dr={class:"border-b border-gray-200 text-gray-700 dark:border-dark-700 dark:text-gray-300"},cr={class:"px-3 py-2 text-left font-medium"},mr={class:"px-3 py-2 text-left font-medium"},pr={class:"px-3 py-2 text-left font-medium"},yr={class:"px-3 py-2 text-left font-medium"},fr={class:"px-3 py-2 text-left font-medium"},vr={class:"px-3 py-2 font-mono text-gray-900 dark:text-white"},br={class:"px-3 py-2"},gr={class:"flex items-center gap-1"},hr=["onUpdate:modelValue","placeholder"],_r=["disabled","title","onClick"],xr={class:"px-3 py-2"},kr={class:"flex items-center gap-1"},wr=["onUpdate:modelValue","placeholder"],$r=["disabled","title","onClick"],Cr={class:"px-3 py-2"},Sr={class:"flex items-center gap-1"},Ur=["onUpdate:modelValue","placeholder"],Ar=["disabled","title","onClick"],Vr={class:"px-3 py-2 text-xs text-gray-500 dark:text-gray-400"},Er={class:"mt-3 text-xs text-gray-500"},Mr={class:"mt-3"},Gr={class:"flex justify-end gap-3"},zr=["disabled"],Rr=ce({__name:"UserPlatformQuotaModal",props:{show:{type:Boolean},user:{}},emits:["close","success"],setup(A,{emit:c}){const d=A,L=c,{t:l}=me(),I=he(),g=j(()=>{var $,O;return((O=($=d.user)==null?void 0:$.subscriptions)==null?void 0:O.some(_=>_.status==="active"))??!1}),f=k(!1),M=k(!1),G=fe({}),v=k([]),V=k(new Set);function h($){const O=new Set;for(const _ of $)(_.daily_limit_usd!=null||_.weekly_limit_usd!=null||_.monthly_limit_usd!=null)&&O.add(_.platform);return O}function y($){return{platform:$,daily_limit_usd:null,weekly_limit_usd:null,monthly_limit_usd:null,daily_usage_usd:0,weekly_usage_usd:0,monthly_usage_usd:0}}function N($){const O=new Map;
1for(const _ of $)O.set(_.platform,_);return Ft.map(_=>{const x=O.get(_);return x?{platform:_,daily_limit_usd:x.daily_limit_usd??null,weekly_limit_usd:x.weekly_limit_usd??null,monthly_limit_usd:x.monthly_limit_usd??null,daily_usage_usd:x.daily_usage_usd??0,weekly_usage_usd:x.weekly_usage_usd??0,monthly_usage_usd:x.monthly_usage_usd??0}:y(_)})}function u($){return $==null||Number.isNaN($)?"-":$.toFixed(2)}async function U(){if(d.user){f.value=!0;try{const $=await K.users.getPlatformQuotas(d.user.id);v.value=N($.platform_quotas||[]),V.value=h($.platform_quotas||[])}catch{I.showError(l("admin.users.platformQuota.loadFailed")),v.value=Ft.map(y),V.value=new Set}finally{f.value=!1}}}ve(()=>d.show,$=>{$&&d.user&&U()});function J(){if(window.confirm(l("admin.users.platformQuota.clearAllConfirm")))for(const O of v.value)O.daily_limit_usd=null,O.weekly_limit_usd=null,O.monthly_limit_usd=null}async function F(){var O,_;if(!d.user)return;const $=[];for(const x of v.value)for(const b of["daily","weekly","monthly"]){const p=x[`${b}_limit_usd`];typeof p=="number"&&(!Number.isFinite(p)||p<0)&&$.push(`${x.platform}.${b}`)}if($.length>0){I.showError(l("admin.users.platformQuota.invalidNumber",{fields:$.join(", ")}));return}M.value=!0;try{const x=v.value.map(b=>({platform:b.platform,daily_limit_usd:de(b.daily_limit_usd),weekly_limit_usd:de(b.weekly_limit_usd),monthly_limit_usd:de(b.monthly_limit_usd)}));await K.users.updatePlatformQuotas(d.user.id,x),I.showSuccess(l("admin.users.platformQuota.updateSuccess")),L("success"),L("close")}catch(x){I.showError(((_=(O=x==null?void 0:x.response)==null?void 0:O.data)==null?void 0:_.message)||l("admin.users.platformQuota.updateFailed"))}finally{M.value=!1}}function de($){return $==null?null:typeof $=="number"&&Number.isFinite($)&&$>=0?$:null}async function ae($,O){var p,R;if(!d.user)return;const _=l(`admin.users.platformQuota.window${O.charAt(0).toUpperCase()+O.slice(1)}`);if(!window.confirm(l("admin.users.platformQuota.reset.confirm",{platform:$,window:_})))return;const b=`${$}.${O}`;G[b]=!0;try{const S=await K.users.resetPlatformQuotaWindow(d.user.id,$,O);v.value=N(S.platform_quotas||[]),V.value=h(S.platform_quotas||[]),I.showSuccess(l("admin.users.platformQuota.reset.success",{platform:$,window:_}))}catch(S){I.showError(((R=(p=S==null?void 0:S.response)==null?void 0:p.data)==null?void 0:R.message)||l("admin.users.platformQuota.reset.failed"))}finally{G[b]=!1}}return($,O)=>(n(),re(ge,{show:A.show,title:t(l)("admin.users.platformQuota.title"),width:"wide",onClose:O[1]||(O[1]=_=>$.$emit("close"))},{footer:B(()=>[e("div",Gr,[e("button",{type:"button",class:"btn btn-secondary",onClick:O[0]||(O[0]=_=>$.$emit("close"))},a(t(l)("admin.users.platformQuota.cancel")),1),e("button",{type:"button",class:"btn btn-primary",disabled:M.value||f.value,onClick:F},a(M.value?t(l)("admin.users.platformQuota.saving"):t(l)("admin.users.platformQuota.save")),9,zr)])]),default:B(()=>[A.user?(n(),i("div",or,[g.value?(n(),i("div",lr,a(t(l)("admin.users.platformQuota.subscriptionWarning")),1)):z("",!0),e("p",rr,a(t(l)("admin.users.platformQuota.subtitle",{email:A.user.email})),1),f.value?(n(),i("div",nr,a(t(l)("common.loading")),1)):(n(),i("div",ir,[e("table",ur,[e("thead",null,[e("tr",dr,[e("th",cr,a(t(l)("admin.users.platformQuota.columns.platform")),1),e("th",mr,a(t(l)("admin.users.platformQuota.columns.daily")),1),e("th",pr,a(t(l)("admin.users.platformQuota.columns.weekly")),1),e("th",yr,a(t(l)("admin.users.platformQuota.columns.monthly")),1),e("th",fr,a(t(l)("admin.users.platformQuota.columns.usage")),1)])]),e("tbody",null,[(n(!0),i(q,null,Z(v.value,_=>(n(),i("tr",{key:_.platform,class:"border-b border-gray-100 dark:border-dark-800"},[e("td",vr,a(_.platform),1),e("td",br,[e("div",gr,[H(e("input",{"onUpdate:modelValue":x=>_.daily_limit_usd=x,type:"number",min:"0",step:"0.01",class:"input w-24",placeholder:t(l)("admin.users.platformQuota.placeholder")},null,8,hr),[[W,_.daily_limit_usd,void 0,{number:!0}]]),e("button",{type:"button",class:"text-xs text-gray-400 hover:text-amber-500 disabled:opacity-50",disabled:!!G[`${_.platform}.daily`]||!V.value.has(_.platform),title:t(l)(V.value.has(_.platform)?"admin.users.platformQuota.reset.button":"admin.users.platformQuota.reset.unavailable"),onClick:x=>ae(_.platform,"daily")},"↻",8,_r)])]),e("td",xr,[e("div",kr,[H(e("input",{"onUpdate:modelValue":x=>_.weekly_limit_usd=x,type:"number",min:"0",step:"0.01",class:"input w-24",placeholder:t(l)("admin.users.platformQuota.placeholder")},null,8,wr),[[W,_.weekly_limit_usd,void 0,{number:!0}]]),e("button",{type:"button",class:"text-xs text-gray-400 hover:text-amber-500 disabled:opacity-50",disabled:!!G[`${_.platform}.weekly`]||!V.value.has(_.platform),title:t(l)(V.value.has(_.platform)?"admin.users.platformQuota.reset.button":"admin.users.platformQuota.reset.unavailable"),onClick:x=>ae(_.platform,"weekly")},"↻",8,$r)])]),e("td",Cr,[e("div",Sr,[H(e("input",{"onUpdate:modelValue":x=>_.monthly_limit_usd=x,type:"number",min:"0",step:"0.01",class:"input w-24",placeholder:t(l)("admin.users.platformQuota.placeholder")},null,8,Ur),[[W,_.monthly_limit_usd,void 0,{number:!0}]]),e("button",{type:"button",class:"text-xs text-gray-400 hover:text-amber-500 disabled:opacity-50",disabled:!!G[`${_.platform}.monthly`]||!V.value.has(_.platform),title:t(l)(V.value.has(_.platform)?"admin.users.platformQuota.reset.button":"admin.users.platformQuota.reset.unavailable"),onClick:x=>ae(_.platform,"monthly")},"↻",8,Ar)])]),e("td",Vr,a(u(_.daily_usage_usd))+" / "+a(u(_.weekly_usage_usd))+" / "+a(u(_.monthly_usage_usd)),1)]))),128))])]),e("p",Er,a(t(l)("admin.users.platformQuota.hint")),1),e("div",Mr,[e("button",{type:"button",class:"btn btn-secondary text-sm",onClick:J},a(t(l)("admin.users.platformQuota.clearAll")),1)])]))])):z("",!0)]),_:1},8,["show","title"]))}}),Lr={key:0,class:"space-y-4"},Ir={class:"flex items-center gap-3 rounded-xl bg-gray-50 p-4 dark:bg-dark-700"},Dr={class:"flex h-10 w-10 items-center justify-center rounded-full bg-primary-100 dark:bg-primary-900/30"},Nr={class:"text-lg font-medium text-primary-700 dark:text-primary-300"},Or={class:"font-medium text-gray-900 dark:text-white"},Br={class:"text-sm text-gray-500 dark:text-dark-400"},Fr={key:0,class:"flex justify-center py-8"},Pr={key:1,class:"py-8 text-center"},Tr={class:"text-sm text-gray-500"},Hr={class:"flex items-start justify-between"},jr={class:"min-w-0 flex-1"},Kr={class:"mb-1 flex items-center gap-2"},Qr={class:"font-medium text-gray-900 dark:text-white"},qr={class:"truncate font-mono text-sm text-gray-500"},Jr={class:"mt-3 flex flex-wrap gap-4 text-xs text-gray-500"},Wr={class:"flex items-center gap-1"},Yr=["onClick","disabled"],Xr={key:1,class:"text-gray-400 italic"},Zr={key:2,class:"h-3 w-3 animate-spin text-primary-500",fill:"none",viewBox:"0 0 24 24"},en={key:3,class:"h-3 w-3 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2"},tn={class:"flex items-center gap-1"},sn={class:"max-h-64 overflow-y-auto p-1.5"},an={class:"text-gray-500 italic"},on={key:0,class:"ml-auto h-4 w-4 shrink-0 text-primary-600 dark:text-primary-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","stroke-width":"2"},ln=["onClick"],Kt=272,Qt=4,rn=ce({__name:"UserApiKeysModal",props:{show:{type:Boolean},user:{}},emits:["close"],setup(A,{emit:c}){const d=A,L=c,{t:l}=me(),I=he(),g=k([]),f=k([]),M=k(!1);let G=0;const v=k(new Set),V=k(null),h=k(null),y=k(null),N=k(null),u=k(new Map),U=j(()=>V.value===null?null:g.value.find(p=>p.id===V.value)||null),J=(p,R)=>{R instanceof HTMLElement?u.value.set(p,R):u.value.delete(p)};ve(()=>{var p;return[d.show,(p=d.user)==null?void 0:p.id]},([p],R,S)=>{S(()=>{G++}),$(),p&&d.user&&(F(),de())});const F=async()=>
1{if(!d.user)return;const p=++G;g.value=[],M.value=!0,u.value.clear();try{const R=await K.users.getUserApiKeys(d.user.id);p===G&&(g.value=R.items||[])}catch(R){if(p!==G)return;console.error("Failed to load API keys:",R)}finally{p===G&&(M.value=!1)}},de=async()=>{try{const p=await K.groups.getAll();f.value=p}catch(p){console.error("Failed to load groups:",p)}},ae=p=>{if(V.value===p.id)$();else{const R=u.value.get(p.id);if(R){const S=R.getBoundingClientRect(),Q=window.innerHeight-S.bottom,D=Q<Kt&&S.top>Q;h.value={top:D?S.top-Kt-Qt:S.bottom+Qt,left:S.left}}V.value=p.id}},$=()=>{V.value=null,h.value=null},O=async(p,R)=>{if($(),!(p.group_id===R||!p.group_id&&R===null)){v.value.add(p.id);try{const S=await K.apiKeys.updateApiKeyGroup(p.id,R),Q=g.value.findIndex(D=>D.id===p.id);Q!==-1&&(g.value[Q]=S.api_key),S.auto_granted_group_access&&S.granted_group_name?I.showSuccess(l("admin.users.groupChangedWithGrant",{group:S.granted_group_name})):I.showSuccess(l("admin.users.groupChangedSuccess"))}catch(S){I.showError((S==null?void 0:S.message)||l("admin.users.groupChangeFailed"))}finally{v.value.delete(p.id)}}},_=p=>{p.key==="Escape"&&V.value!==null&&(p.stopPropagation(),$())},x=p=>{const R=p.target;if(y.value&&!y.value.contains(R)){for(const S of u.value.values())if(S.contains(R))return;$()}},b=()=>{$(),L("close")};return St(()=>{document.addEventListener("click",x),document.addEventListener("keydown",_,!0)}),Xt(()=>{document.removeEventListener("click",x),document.removeEventListener("keydown",_,!0)}),(p,R)=>{var S,Q;return n(),i(q,null,[C(ge,{show:A.show,title:t(l)("admin.users.userApiKeys"),width:"wide",onClose:b},{default:B(()=>[A.user?(n(),i("div",Lr,[e("div",Ir,[e("div",Dr,[e("span",Nr,a(A.user.email.charAt(0).toUpperCase()),1)]),e("div",null,[e("p",Or,a(A.user.email),1),e("p",Br,a(A.user.username),1)])]),M.value?(n(),i("div",Fr,[...R[1]||(R[1]=[e("svg",{class:"h-8 w-8 animate-spin text-primary-500",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),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"})],-1)])])):g.value.length===0?(n(),i("div",Pr,[e("p",Tr,a(t(l)("admin.users.noApiKeys")),1)])):(n(),i("div",{key:2,ref_key:"scrollContainerRef",ref:N,class:"max-h-96 space-y-3 overflow-y-auto",onScroll:$},[(n(!0),i(q,null,Z(g.value,D=>(n(),i("div",{key:D.id,class:"rounded-xl border border-gray-200 bg-white p-4 dark:border-dark-600 dark:bg-dark-800"},[e("div",Hr,[e("div",jr,[e("div",Kr,[e("span",Qr,a(D.name),1),e("span",{class:se(["badge text-xs",D.status==="active"?"badge-success":"badge-danger"])},a(D.status),3)]),e("p",qr,a(D.key.substring(0,20))+"..."+a(D.key.substring(D.key.length-8)),1)])]),e("div",Jr,[e("div",Wr,[e("span",null,a(t(l)("admin.users.group"))+":",1),e("button",{ref_for:!0,ref:_e=>J(D.id,_e),onClick:_e=>ae(D),class:"-mx-1 -my-0.5 flex cursor-pointer items-center gap-1 rounded-md px-1 py-0.5 transition-colors hover:bg-gray-100 dark:hover:bg-dark-700",disabled:v.value.has(D.id)},[D.group_id&&D.group?(n(),re(ts,{key:0,name:D.group.name,platform:D.group.platform,"subscription-type":D.group.subscription_type,"rate-multiplier":D.group.rate_multiplier,"peak-rate-enabled":D.group.peak_rate_enabled,"peak-start":D.group.peak_start,"peak-end":D.group.peak_end,"peak-rate-multiplier":D.group.peak_rate_multiplier},null,8,["name","platform","subscription-type","rate-multiplier","peak-rate-enabled","peak-start","peak-end","peak-rate-multiplier"])):(n(),i("span",Xr,a(t(l)("admin.users.none")),1)),v.value.has(D.id)?(n(),i("svg",Zr,[...R[2]||(R[2]=[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)])])):(n(),i("svg",en,[...R[3]||(R[3]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 15L12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"},null,-1)])]))],8,Yr)]),e("div",tn,[e("span",null,a(t(l)("admin.users.columns.created"))+": "+a(t(Ne)(D.created_at)),1)])])]))),128))],544))])):z("",!0)]),_:1},8,["show","title"]),(n(),re(Zt,{to:"body"},[V.value!==null&&h.value?(n(),i("div",{key:0,ref_key:"dropdownRef",ref:y,class:"animate-in fade-in slide-in-from-top-2 fixed z-[100000020] w-64 overflow-hidden rounded-xl bg-white shadow-lg ring-1 ring-black/5 duration-200 dark:bg-dark-800 dark:ring-white/10",style:es({top:h.value.top+"px",left:h.value.left+"px"})},[e("div",sn,[e("button",{onClick:R[0]||(R[0]=D=>
1O(U.value,null)),class:se(["flex w-full items-center rounded-lg px-3 py-2 text-sm transition-colors",(S=U.value)!=null&&S.group_id?"hover:bg-gray-100 dark:hover:bg-dark-700":"bg-primary-50 dark:bg-primary-900/20"])},[e("span",an,a(t(l)("admin.users.none")),1),(Q=U.value)!=null&&Q.group_id?z("",!0):(n(),i("svg",on,[...R[4]||(R[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 13l4 4L19 7"},null,-1)])]))],2),(n(!0),i(q,null,Z(f.value,D=>{var _e,Ge;return n(),i("button",{key:D.id,onClick:Ze=>O(U.value,D.id),class:se(["flex w-full items-center justify-between rounded-lg px-3 py-2 text-sm transition-colors",((_e=U.value)==null?void 0:_e.group_id)===D.id?"bg-primary-50 dark:bg-primary-900/20":"hover:bg-gray-100 dark:hover:bg-dark-700"])},[C(ua,{name:D.name,platform:D.platform,"subscription-type":D.subscription_type,"rate-multiplier":D.rate_multiplier,"peak-rate-enabled":D.peak_rate_enabled,"peak-start":D.peak_start,"peak-end":D.peak_end,"peak-rate-multiplier":D.peak_rate_multiplier,description:D.description,selected:((Ge=U.value)==null?void 0:Ge.group_id)===D.id},null,8,["name","platform","subscription-type","rate-multiplier","peak-rate-enabled","peak-start","peak-end","peak-rate-multiplier","description","selected"])],10,ln)}),128))])],4)):z("",!0)]))],64)}}}),nn={key:0,class:"space-y-6"}
1,un={class:"flex items-center gap-4 rounded-2xl bg-gradient-to-r from-primary-50 to-primary-100 p-5 dark:from-primary-900/30 dark:to-primary-800/20"},dn={class:"flex h-14 w-14 items-center justify-center rounded-full bg-white shadow-sm dark:bg-dark-700"},cn={class:"text-2xl font-semibold text-primary-600 dark:text-primary-400"},mn={class:"flex-1"},pn={class:"text-lg font-semibold text-gray-900 dark:text-white"},yn={class:"mt-1 text-sm text-gray-600 dark:text-gray-400"},fn={key:0,class:"flex justify-center py-12"},vn={key:1,class:"space-y-6"},bn={key:0},gn={class:"mb-3 flex items-center gap-2"},hn={class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},_n={class:"text-xs text-gray-400"},xn={class:"grid gap-3"},kn={class:"flex items-center gap-4"},wn={class:"flex-shrink-0"},$n={class:"relative flex h-6 w-6 cursor-pointer items-center justify-center"},Cn=["checked","onChange"],Sn={class:"h-5 w-5 rounded-md border-2 border-gray-300 transition-all peer-checked:border-primary-500 peer-checked:bg-primary-500 dark:border-dark-500 peer-checked:dark:border-primary-500"},Un={key:0,class:"h-full w-full text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"3"},An={class:"min-w-0 flex-1"},Vn={class:"flex items-center gap-2"},En={class:"text-base font-semibold text-gray-900 dark:text-white"},Mn={class:"inline-flex items-center rounded-full bg-purple-100 px-2 py-0.5 text-xs font-medium text-purple-700 dark:bg-purple-900/40 dark:text-purple-300"},Gn={class:"mt-1.5 flex items-center gap-3 text-sm"},zn={class:"inline-flex items-center gap-1 text-gray-500 dark:text-gray-400"},Rn={class:"text-gray-500 dark:text-gray-400"},Ln={class:"font-medium text-gray-700 dark:text-gray-300"},In={class:"flex flex-shrink-0 items-center gap-3"},Dn={class:"text-sm font-medium text-gray-600 dark:text-gray-400"},Nn=["value","onInput","placeholder"],On={key:1},Bn={class:"mb-3 flex flex-wrap items-center gap-2"},Fn={class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},Pn={class:"text-xs text-gray-400"},Tn={class:"ml-auto flex cursor-pointer items-center gap-2 text-sm text-gray-600 dark:text-gray-400"},Hn=["checked"],jn={class:"mb-3 text-xs text-gray-500 dark:text-gray-400"},Kn={class:"grid gap-3"},Qn={class:"flex items-center gap-4"},qn={class:"flex-shrink-0"},Jn=["checked","onChange"],Wn={key:1,class:"flex h-5 w-5 items-center justify-center rounded-md border-2 border-green-400 bg-green-500 dark:border-green-600 dark:bg-green-600"},Yn={class:"min-w-0 flex-1"},Xn={class:"flex items-center gap-2"},Zn={class:"text-base font-semibold text-gray-900 dark:text-white"},ei={class:"mt-1.5 flex items-center gap-3 text-sm"},ti={class:"inline-flex items-center gap-1 text-gray-500 dark:text-gray-400"},si={class:"text-gray-500 dark:text-gray-400"},ai={class:"font-medium text-gray-700 dark:text-gray-300"},oi={class:"flex flex-shrink-0 items-center gap-3"},li={class:"text-sm font-medium text-gray-600 dark:text-gray-400"},ri=["value","onInput","placeholder"],ni={key:2,class:"flex flex-col items-center justify-center py-12 text-center"},ii={class:"text-gray-500 dark:text-gray-400"},ui={class:"flex justify-end gap-3"},di=["disabled"],ci={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},mi=ce({__name:"UserAllowedGroupsModal",props:{show:{type:Boolean},user:{}},emits:["close","success"],setup(A,{emit:c}){const d=A,L=c,{t:l}=me(),I=he(),g=k([]),f=k([]),M=k({}),G=k(!1),v=k(!1),V=k(!1),h=k(!1),y=j(()=>g.value.filter(_=>_.is_exclusive)),N=j(()=>g.value.filter(_=>!_.is_exclusive)),u=j(()=>f.value.filter(_=>_.isExclusive)),U=j(()=>f.value.filter(_=>!_.isExclusive));ve(()=>d.show,_=>{_&&d.user&&J()});const J=async()=>{var _,x,b;v.value=!1,G.value=!0;try{const p=await K.groups.list(1,1e3);g.value=p.items.filter(Q=>Q.subscription_type==="standard"&&Q.status==="active");const R=((_=d.user)==null?void 0:_.allowed_groups)||[],S=((x=d.user)==null?void 0:x.group_rates)||{};h.value=((b=d.user)==null?void 0:b.restrict_public_groups)??!1,M.value={...S},f.value=g.value.map(Q=>({groupId:Q.id,groupName:Q.name,platform:Q.platform,isExclusive:Q.is_exclusive,defaultRate:Q.rate_multiplier,customRate:S[Q.id]??null,isSelected:Q.is_exclusive||h.value?R.includes(Q.id):!0})),v.value=!0}catch(p){console.error("Failed to load groups:",p)}finally{G.value=!1}},F=_=>{const x=f.value.find(b=>b.groupId===_);x&&x.isExclusive&&(x.isSelected=!x.isSelected)},de=_=>{const x=f.value.find(b=>b.groupId===_);x&&!x.isExclusive&&(x.isSelected=!x.isSelected)},ae=()=>{if(h.value=!h.value,!h.value)for(const _ of f.value)_.isExclusive||(_.isSelected=!0)},$=(_,x)=>{const b=f.value.find(p=>p.groupId===_);if(b)if(x===""||x===null||x===void 0)b.customRate=null;else{const p=parseFloat(x);b.customRate=isNaN(p)?null:p}},O=async()=>
1{if(!(!d.user||!v.value)){V.value=!0;try{const _=f.value.filter(b=>b.isSelected&&(b.isExclusive||h.value)).map(b=>b.groupId),x={};for(const b of f.value){const p=M.value[b.groupId]!==void 0;b.customRate!==null?x[b.groupId]=b.customRate:p&&(x[b.groupId]=null)}await K.users.update(d.user.id,{allowed_groups:_,restrict_public_groups:h.value,group_rates:Object.keys(x).length>0?x:void 0}),I.showSuccess(l("admin.users.groupConfigUpdated")),L("success"),L("close")}catch(_){console.error("Failed to update user group config:",_)}finally{V.value=!1}}};return(_,x)=>(n(),re(ge,{show:A.show,title:t(l)("admin.users.groupConfig"),width:"wide",onClose:x[1]||(x[1]=b=>_.$emit("close"))},{footer:B(()=>[e("div",ui,[e("button",{onClick:x[0]||(x[0]=b=>_.$emit("close")),class:"btn btn-secondary px-5"},a(t(l)("common.cancel")),1),e("button",{onClick:O,disabled:V.value||!v.value,class:"btn btn-primary px-6"},[V.value?(n(),i("svg",ci,[...x[10]||(x[10]=[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)])])):z("",!0),Y(" "+a(V.value?t(l)("common.saving"):t(l)("common.save")),1)],8,di)])]),default:B(()=>[A.user?(n(),i("div",nn,[e("div",un,[e("div",dn,[e("span",cn,a(A.user.email.charAt(0).toUpperCase()),1)]),e("div",mn,[e("p",pn,a(A.user.email),1),e("p",yn,a(t(l)("admin.users.groupConfigHint",{email:A.user.email})),1)])]),G.value?(n(),i("div",fn,[...x[2]||(x[2]=[e("svg",{class:"h-10 w-10 animate-spin text-primary-500",fill:"none",viewBox:"0 0 24 24"},[e("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"}),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"})],-1)])])):(n(),i("div",vn,[y.value.length>0?(n(),i("div",bn,[e("div",gn,[x[3]||(x[3]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-purple-500"},null,-1)),e("h4",hn,a(t(l)("admin.users.exclusiveGroups")),1),e("span",_n,"("+a(u.value.filter(b=>b.isSelected).length)+"/"+a(u.value.length)+")",1)]),e("div",xn,[(n(!0),i(q,null,Z(u.value,b=>(n(),i("div",{key:b.groupId,class:se(["group relative overflow-hidden rounded-xl border-2 p-4 transition-all duration-200",b.isSelected?"border-primary-400 bg-primary-50/50 shadow-sm dark:border-primary-500 dark:bg-primary-900/20":"border-gray-200 bg-white hover:border-gray-300 dark:border-dark-600 dark:bg-dark-800 dark:hover:border-dark-500"])},[e("div",kn,[e("div",wn,[e("label",$n,[e("input",{type:"checkbox",checked:b.isSelected,onChange:p=>F(b.groupId),class:"peer sr-only"},null,40,Cn),e("div",Sn,[b.isSelected?(n(),i("svg",Un,[...x[4]||(x[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 13l4 4L19 7"},null,-1)])])):z("",!0)])])]),e("div",An,[e("div",Vn,[e("span",En,a(b.groupName),1),e("span",Mn,a(t(l)("admin.groups.exclusive")),1)]),e("div",Gn,[e("span",zn,[C(Tt,{platform:b.platform,size:"xs"},null,8,["platform"]),e("span",null,a(b.platform),1)]),x[5]||(x[5]=e("span",{class:"text-gray-300 dark:text-dark-500"},"•",-1)),e("span",Rn,[Y(a(t(l)("admin.users.defaultRate"))+": ",1),e("span",Ln,a(b.defaultRate)+"x",1)])])]),e("div",In,[e("label",Dn,a(t(l)("admin.users.customRate")),1),e("input",{type:"number",step:"0.001",min:"0.001",value:b.customRate??"",onInput:p=>$(b.groupId,p.target.value),placeholder:String(b.defaultRate),class:"hide-spinner w-24 rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm font-medium transition-colors focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:border-dark-500 dark:bg-dark-700 dark:focus:border-primary-500"},null,40,Nn)])])],2))),128))])])):z("",!0),N.value.length>0?(n(),i("div",On,[e("div",Bn,[x[6]||(x[6]=e("div",{class:"h-1.5 w-1.5 rounded-full bg-green-500"},null,-1)),e("h4",Fn,a(h.value?t(l)("admin.users.publicGroupsRestricted"):t(l)("admin.users.publicGroups")),1),e("span",Pn,"("+a(U.value.length)+")",1),e("label",Tn,[e("input",{type:"checkbox",checked:h.value,onChange:ae,class:"h-4 w-4 cursor-pointer rounded border-gray-300 text-primary-600 focus:ring-primary-500 dark:border-dark-500"},null,40,Hn),Y(" "+a(t(l)("admin.users.restrictPublicGroups")),1)])]),e("p",jn,a(t(l)("admin.users.restrictPublicGroupsHint")),1),e("div",Kn,[(n(!0),i(q,null,Z(U.value,b=>(n(),i("div",{key:b.groupId,class:"relative overflow-hidden rounded-xl border-2 border-green-200 bg-green-50/50 p-4 dark:border-green-800/50 dark:bg-green-900/10"}
1,[e("div",Qn,[e("div",qn,[h.value?(n(),i("input",{key:0,type:"checkbox",checked:b.isSelected,onChange:p=>de(b.groupId),class:"h-5 w-5 cursor-pointer rounded-md border-2 border-green-400 text-green-600 focus:ring-green-500 dark:border-green-600"},null,40,Jn)):(n(),i("div",Wn,[...x[7]||(x[7]=[e("svg",{class:"h-full w-full text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor","stroke-width":"3"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 13l4 4L19 7"})],-1)])]))]),e("div",Yn,[e("div",Xn,[e("span",Zn,a(b.groupName),1)]),e("div",ei,[e("span",ti,[C(Tt,{platform:b.platform,size:"xs"},null,8,["platform"]),e("span",null,a(b.platform),1)]),x[8]||(x[8]=e("span",{class:"text-gray-300 dark:text-dark-500"},"•",-1)),e("span",si,[Y(a(t(l)("admin.users.defaultRate"))+": ",1),e("span",ai,a(b.defaultRate)+"x",1)])])]),e("div",oi,[e("label",li,a(t(l)("admin.users.customRate")),1),e("input",{type:"number",step:"0.001",min:"0.001",value:b.customRate??"",onInput:p=>$(b.groupId,p.target.value),placeholder:String(b.defaultRate),class:"hide-spinner w-24 rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm font-medium transition-colors focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:border-dark-500 dark:bg-dark-700 dark:focus:border-primary-500"},null,40,ri)])])]))),128))])])):z("",!0),g.value.length===0?(n(),i("div",ni,[x[9]||(x[9]=e("div",{class:"mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-100 dark:bg-dark-700"},[e("svg",{class:"h-8 w-8 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})])],-1)),e("p",ii,a(t(l)("common.noGroupsAvailable")),1)])):z("",!0)]))])):z("",!0)]),_:1},8,["show","title"]))}}),pi=Zs(mi,[["__scopeId","data-v-363e1b0b"]]),yi={class:"flex items-center gap-3 rounded-xl bg-gray-50 p-4 dark:bg-dark-700"},fi={class:"flex h-10 w-10 items-center justify-center rounded-full bg-primary-100"},vi={class:"text-lg font-medium text-primary-700"},bi={class:"flex-1"},gi={class:"font-medium text-gray-900 dark:text-gray-100"},hi={class:"text-sm text-gray-500 dark:text-gray-400"},_i={class:"input-label"},xi={class:"relative flex gap-2"},ki={class:"relative flex-1"},wi={class:"input-label"},$i={key:0,class:"rounded-xl border border-blue-200 bg-blue-50 p-4 dark:border-blue-800 dark:bg-blue-950"},Ci={class:"flex items-center justify-between text-sm"},Si={class:"text-gray-700 dark:text-gray-300"},Ui={class:"font-bold text-gray-900 dark:text-gray-100"},Ai={class:"flex justify-end gap-3"},Vi=["disabled"],Ei=ce({__name:"UserBalanceModal",props:{show:{type:Boolean},user:{},operation:{}},emits:["close","success"],setup(A,{emit:c}){const d=A,L=c,{t:l}=me(),I=he(),g=k(!1),f=fe({amount:0,notes:""});ve(()=>d.show,h=>{h&&(f.amount=0,f.notes="")});const M=h=>{if(h===0)return"0.00";const y=h.toFixed(8).replace(/\.?0+$/,""),N=y.split(".");return N.length===1?y+".00":N[1].length===1?y+"0":y},G=()=>{d.user&&(f.amount=d.user.balance)},v=()=>{if(!d.user)return 0;const h=d.operation==="add"?d.user.balance+f.amount:d.user.balance-f.amount;return Math.abs(h)<1e-10?0:h},V=async()=>{if(d.user){if(!f.amount||f.amount<=0){I.showError(l("admin.users.amountRequired"));return}if(d.operation==="subtract"&&f.amount>d.user.balance){I.showError(l("admin.users.insufficientBalance"));return}g.value=!0;try{await K.users.updateBalance(d.user.id,f.amount,d.operation,f.notes),I.showSuccess(l("common.success")),L("success"),L("close")}catch(h){console.error("Failed to update balance:",h),I.showError(ns(h,l("common.error")))}finally{g.value=!1}}};return(h,y)=>(n(),re(ge,{show:A.show,title:A.operation==="add"?t(l)("admin.users.deposit"):t(l)("admin.users.withdraw"),width:"narrow",onClose:y[3]||(y[3]=N=>h.$emit("close"))},{footer:B(()=>[e("div",Ai,[e("button",{onClick:y[2]||(y[2]=N=>h.$emit("close")),class:"btn btn-secondary"},a(t(l)("common.cancel")),1),e("button",{type:"submit",form:"balance-form",disabled:g.value||!f.amount,class:se(["btn",A.operation==="add"?"bg-emerald-600 text-white":"btn-danger"])},a(g.value?t(l)("common.saving"):t(l)("common.confirm")),11,Vi)])]),default:B(()=>[A.user?(n(),i("form",{key:0,id:"balance-form",onSubmit:be(V,["prevent"]),class:"space-y-5"},[e("div",yi,[e("div",fi,[e("span",vi,a(A.user.email.charAt(0).toUpperCase()),1)]),e("div",bi,[e("p",gi,a(A.user.email),1),e("p",hi,a(t(l)("admin.users.currentBalance"))+": $"+a(M(A.user.balance)),1)])]),e("div",null,[e("label",_i,a(A.operation==="add"?t(l)("admin.users.depositAmount"):t(l)("admin.users.withdrawAmount")),1),e("div",xi,[e("div",ki,[y[4]||(y[4]=e("div",{class:"absolute left-3 top-1/2 -translate-y-1/2 font-medium text-gray-500"},"$",-1)),H(e("input",{"onUpdate:modelValue":y[0]||(y[0]=N=>f.amount=N),type:"number",step:"any",min:"0",required:"",class:"input pl-8"},null,512),[[W,f.amount,void 0,{number:!0}
1]])]),A.operation==="subtract"?(n(),i("button",{key:0,type:"button",onClick:G,class:"btn btn-secondary whitespace-nowrap"},a(t(l)("admin.users.withdrawAll")),1)):z("",!0)])]),e("div",null,[e("label",wi,a(t(l)("admin.users.notes")),1),H(e("textarea",{"onUpdate:modelValue":y[1]||(y[1]=N=>f.notes=N),rows:"3",class:"input"},null,512),[[W,f.notes]])]),f.amount>0?(n(),i("div",$i,[e("div",Ci,[e("span",Si,a(t(l)("admin.users.newBalance"))+":",1),e("span",Ui,"$"+a(M(v())),1)])])):z("",!0)],32)):z("",!0)]),_:1},8,["show","title"]))}}),Mi={key:0,class:"space-y-4"},Gi={class:"text-sm text-gray-600 dark:text-gray-400"},zi={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-dark-600 dark:bg-dark-800"},Ri={class:"flex items-center gap-2"},Li={class:"font-medium text-gray-900 dark:text-white"},Ii={key:0,class:"font-medium text-primary-600 dark:text-primary-400"},Di={key:1,class:"text-sm text-gray-400"},Ni={key:0,class:"max-h-64 space-y-2 overflow-y-auto"},Oi=["value"],Bi={key:0,class:"h-2 w-2 rounded-full bg-white"},Fi={class:"flex-1"},Pi={class:"font-medium text-gray-900 dark:text-white"},Ti={class:"ml-2 text-xs text-gray-400"},Hi={key:1,class:"py-6 text-center text-sm text-gray-400"},ji={class:"flex justify-end gap-3"},Ki=["disabled"],Qi={key:0,class:"-ml-1 mr-2 h-4 w-4 animate-spin",fill:"none",viewBox:"0 0 24 24"},qi=ce({__name:"GroupReplaceModal",props:{show:{type:Boolean},user:{},oldGroup:{},allGroups:{}},emits:["close","success"],setup(A,{emit:c}){const d=A,L=c,{t:l}=me(),I=he(),g=k(null),f=k(!1),M=j(()=>d.oldGroup?d.allGroups.filter(v=>v.status==="active"&&v.is_exclusive&&v.subscription_type==="standard"&&v.id!==d.oldGroup.id):[]);ve(()=>d.show,v=>{v&&(g.value=null)});const G=async()=>{if(!(!d.user||!d.oldGroup||!g.value)){f.value=!0;try{const v=await K.users.replaceGroup(d.user.id,d.oldGroup.id,g.value);I.showSuccess(l("admin.users.replaceGroupSuccess",{count:v.migrated_keys})),L("success"),L("close")}catch(v){I.showError(ns(v,l("common.error"))),console.error("Failed to replace group:",v)}finally{f.value=!1}}};return(v,V)=>(n(),re(ge,{show:A.show,title:t(l)("admin.users.replaceGroupTitle"),width:"narrow",onClose:V[2]||(V[2]=h=>v.$emit("close"))},{footer:B(()=>[e("div",ji,[e("button",{onClick:V[1]||(V[1]=h=>v.$emit("close")),class:"btn btn-secondary px-5"},a(t(l)("common.cancel")),1),e("button",{onClick:G,disabled:!g.value||f.value,class:"btn btn-primary px-6"},[f.value?(n(),i("svg",Qi,[...V[3]||(V[3]=[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)])])):z("",!0),Y(" "+a(f.value?t(l)("common.saving"):t(l)("admin.users.replaceGroupConfirm")),1)],8,Ki)])]),default:B(()=>{var h;return[A.oldGroup?(n(),i("div",Mi,[e("p",Gi,a(t(l)("admin.users.replaceGroupHint",{old:A.oldGroup.name})),1),e("div",zi,[e("div",Ri,[C(T,{name:"shield",size:"sm",class:"text-purple-500"}),e("span",Li,a(A.oldGroup.name),1),C(T,{name:"arrowRight",size:"sm",class:"ml-auto text-gray-400"}),g.value?(n(),i("span",Ii,a((h=M.value.find(y=>y.id===g.value))==null?void 0:h.name),1)):(n(),i("span",Di,"?"))])]),M.value.length>0?(n(),i("div",Ni,[(n(!0),i(q,null,Z(M.value,y=>(n(),i("label",{key:y.id,class:se(["flex cursor-pointer items-center gap-3 rounded-lg border-2 p-3 transition-all",g.value===y.id?"border-primary-400 bg-primary-50/50 dark:border-primary-500 dark:bg-primary-900/20":"border-gray-200 hover:border-gray-300 dark:border-dark-600 dark:hover:border-dark-500"])},[H(e("input",{type:"radio",value:y.id,"onUpdate:modelValue":V[0]||(V[0]=N=>g.value=N),class:"sr-only"},null,8,Oi),[[Ys,g.value]]),e("div",{class:se(["flex h-5 w-5 items-center justify-center rounded-full border-2 transition-all",g.value===y.id?"border-primary-500 bg-primary-500":"border-gray-300 dark:border-dark-500"])},[g.value===y.id?(n(),i("div",Bi)):z("",!0)],2),e("div",Fi,[e("span",Pi,a(y.name),1),e("span",Ti,a(y.platform),1)])],2))),128))])):(n(),i("div",Hi,a(t(l)("admin.users.noOtherGroups")),1))])):z("",!0)]}),_:1},8,["show","title"]))}}),Ji={class:"flex flex-wrap items-center gap-3"},Wi={class:"flex flex-1 flex-wrap items-center gap-3"},Yi={class:"relative w-full md:w-64"},Xi=["placeholder"],Zi={key:0,class:"w-full sm:w-32"},eu={key:1,class:"w-full sm:w-32"},tu={key:2,class:"w-full sm:w-44"},su={key:3,class:"w-full sm:w-44"},au={key:0,class:"relative w-full sm:w-36"},ou=["value","onInput","placeholder"],lu=["value","onInput","placeholder"],ru={key:2,class:"w-full"},nu=["value","onInput","placeholder"],iu={class:"flex flex-wrap items-center justify-end gap-2"},uu={class:"flex items-center gap-2 md:contents"},du=["disabled","title"],cu=["title"],mu={class:"hidden md:inline"},pu={key:0,class:"absolute right-0 top-full z-50 mt-1 w-48 rounded-lg border border-gray-200 bg-white py-1 shadow-lg dark:border-dark-600 dark:bg-dark-800"},yu=["onClick"],fu={key:0,class:"my-1 border-t border-gray-100 dark:border-dark-700"},vu=["onClick"],bu=["title"],gu={class:"hidden md:inline"},hu={key:0,class:"absolute right-0 top-full z-50 mt-1 max-h-80 w-48 overflow-y-auto rounded-lg border border-gray-200 bg-white py-1 shadow-lg dark:border-dark-600 dark:bg-dark-800"},_u=["disabled","onClick","title"],xu=["title"],ku={class:"hidden md:inline"},wu=["disabled"],$u={class:"flex items-center gap-2"},Cu={class:"flex h-8 w-8 items-center justify-center rounded-full bg-primary-100 dark:bg-primary-900/30"},Su={class:"text-sm font-medium text-primary-700 dark:text-primary-300"},Uu={class:"font-medium text-gray-900 dark:text-white"},Au={class:"text-sm text-gray-700 dark:text-gray-300"},Vu={class:"max-w-xs"},Eu=["title"],Mu={key:1,class:"text-sm text-gray-400"},Gu={class:"max-w-xs"},zu=["title"],Ru={key:0,class:"flex flex-col gap-1"}
1,Lu=["onClick"],Iu={class:"font-medium text-purple-600 dark:text-purple-400"},Du={class:"text-gray-500 dark:text-dark-400"},Nu={key:0,class:"pointer-events-none absolute left-0 top-full z-50 mt-1.5 rounded bg-gray-900 px-2.5 py-1.5 text-xs text-white opacity-0 shadow-lg transition-opacity duration-75 group-hover/ex:opacity-100 dark:bg-dark-600"},Ou={class:"flex flex-col gap-0.5 whitespace-nowrap"},Bu={key:1,class:"absolute left-0 top-full z-50 mt-1.5 min-w-[160px] overflow-hidden rounded-lg border border-gray-200 bg-white py-1 text-xs shadow-xl dark:border-dark-600 dark:bg-dark-700"},Fu={class:"border-b border-gray-100 px-3 py-1.5 text-[10px] font-medium uppercase tracking-wider text-gray-400 dark:border-dark-600 dark:text-dark-400"},Pu=["onClick"],Tu={class:"flex-1"},Hu={key:1,class:"group/pub relative inline-flex cursor-default items-center gap-1 whitespace-nowrap text-xs"},ju={class:"font-medium text-gray-600 dark:text-dark-300"},Ku={class:"text-gray-400 dark:text-dark-500"},Qu={class:"pointer-events-none absolute left-0 top-full z-50 mt-1.5 rounded bg-gray-900 px-2.5 py-1.5 text-xs text-white opacity-0 shadow-lg transition-opacity duration-75 group-hover/pub:opacity-100 dark:bg-dark-600"},qu={class:"flex flex-col gap-0.5 whitespace-nowrap"},Ju={key:2,class:"text-xs text-gray-400 dark:text-dark-500"},Wu={key:1,class:"text-xs text-gray-400 dark:text-dark-500"},Yu={key:0,class:"flex flex-wrap gap-1.5"},Xu={key:1,class:"inline-flex items-center gap-1.5 rounded-md bg-gray-50 px-2 py-1 text-xs text-gray-400 dark:bg-dark-700/50 dark:text-dark-500"},Zu={class:"flex items-center gap-2"},ed={class:"group relative"},td=["onClick"],sd={class:"pointer-events-none absolute bottom-full left-1/2 z-50 mb-1.5 -translate-x-1/2 whitespace-nowrap rounded bg-gray-900 px-2 py-1 text-xs text-white opacity-0 shadow-lg transition-opacity duration-75 group-hover:opacity-100 dark:bg-dark-600"},ad=["onClick","title"],od=["title","onClick"],ld={class:"flex items-center gap-1.5"},rd={class:"usage-sort-trigger relative"},nd=["title","data-test","onClick"],id={key:0,class:"text-[10px] normal-case font-medium tracking-normal"},ud={key:2,class:"h-3.5 w-3.5",fill:"currentColor",viewBox:"0 0 20 20"},dd={key:0,class:"absolute right-0 top-full z-50 mt-1 min-w-[120px] rounded-lg border border-gray-200 bg-white py-1 shadow-lg dark:border-dark-600 dark:bg-dark-800"},cd=["data-test","onClick"],md={class:"mt-1 border-t border-gray-100 px-3 py-1 text-[10px] normal-case tracking-normal text-gray-400 dark:border-dark-700 dark:text-dark-500"},pd={class:"flex items-center gap-1.5"},yd={class:"text-sm text-gray-700 dark:text-gray-300"},fd={class:"text-sm text-gray-500 dark:text-dark-400"},vd={class:"text-sm text-gray-500 dark:text-dark-400"},bd={class:"text-sm text-gray-500 dark:text-dark-400"},gd={class:"flex items-center gap-1"},hd=["onClick"],_d={class:"text-xs"},xd=["onClick"],kd={class:"text-xs"},wd=["onClick"],$d={class:"text-xs"},Cd={class:"py-1"},Sd=["onClick"],Ud=["onClick"],Ad=["onClick"],Vd=["onClick"],Ed=["onClick"],Md=["onClick"],Gd=["onClick"],qt="user-hidden-columns",Xe="user-column-settings-version",De=3,Jt="admin-users-table-sort",Wt="user-filter-values",Yt="user-visible-filters",$t="admin-users-usage-sort",nc=ce({__name:"UsersView",setup(A){const{t:c}=me(),d=he(),L=j(()=>ke.value.filter(o=>o.enabled).map(o=>({key:`attr_${o.id}`,label:o.name,sortable:!1}))),l=(o,r)=>{const w=ot.value[o];if(!w)return"-";const s=w[r];if(!s)return"-";const m=ke.value.find(E=>E.id===r);if(!m)return s;if(m.type==="multi_select"&&s)try{const E=JSON.parse(s);if(Array.isArray(E))return E.map(P=>{var ue;const ee=(ue=m.options)==null?void 0:ue.find(le=>le.value===P);return(ee==null?void 0:ee.label)||P}).join(", ")}catch{return s}if(m.type==="select"&&s&&m.options){const E=m.options.find(P=>P.value===s);return(E==null?void 0:E.label)||s}return s},I=j(()=>[{key:"email",label:c("admin.users.columns.user"),sortable:!0},{key:"id",label:c("admin.users.columns.id"),sortable:!0},{key:"username",label:c("admin.users.columns.username"),sortable:!0},{key:"notes",label:c("admin.users.columns.notes"),sortable:!1},...L.value,{key:"role",label:c("admin.users.columns.role"),sortable:!0},{key:"groups",label:c("admin.users.columns.groups"),sortable:!1},{key:"subscriptions",label:c("admin.users.columns.subscriptions"),sortable:!1},{key:"balance",label:c("admin.users.columns.balance"),sortable:!0},{key:"balance_platform_quota",label:c("admin.users.columns.balancePlatformQuota"),sortable:!1},{key:"usage",label:c("admin.users.columns.usage"),sortable:!1},{key:"usage_anthropic",label:c("admin.users.columns.usageAnthropic"),sortable:!1},{key:"usage_openai",label:c("admin.users.columns.usageOpenAI"),sortable:!1},{key:"usage_gemini",label:c("admin.users.columns.usageGemini"),sortable:!1},{key:"usage_antigravity",label:c("admin.users.columns.usageAntigravity"),sortable:!1},{key:"concurrency",label:c("admin.users.columns.concurrency"),sortable:!0},{key:"status",label:c("admin.users.columns.status"),sortable:!0},{key:"last_active_at",label:c("admin.users.columns.lastActive"),sortable:!0},{key:"last_used_at",label:c("admin.users.columns.lastUsed"),sortable:!0},{key:"created_at",label:c("admin.users.columns.created"),sortable:!0},{key:"actions",label:c("admin.users.columns.actions"),sortable:!1}]),g=j(()=>I.value.filter(o=>o.key!=="email"&&o.key!=="actions")),f=fe(new Set),M=["notes","groups","subscriptions","usage","concurrency","usage_anthropic","usage_openai","usage_gemini","usage_antigravity","balance_platform_quota"],G=new Set(["last_login_at"]),v=new Set,V={2:["usage_anthropic","usage_openai","usage_gemini","usage_antigravity"],3:["balance_platform_quota"]},h=()=>{try{const o=localStorage.getItem(qt);if(o){JSON.parse(o).filter(s=>
1!G.has(s)&&!v.has(s)).forEach(s=>f.add(s));const w=Number(localStorage.getItem(Xe)??"1");if(w<De){let s=!1;for(let m=w+1;m<=De;m++)for(const E of V[m]??[])G.has(E)||v.has(E)||f.has(E)||(f.add(E),s=!0);s?y():localStorage.setItem(Xe,String(De))}}else M.forEach(r=>f.add(r)),localStorage.setItem(Xe,String(De))}catch(o){console.error("Failed to load saved columns:",o),M.forEach(r=>f.add(r))}},y=()=>{try{localStorage.setItem(qt,JSON.stringify([...f])),localStorage.setItem(Xe,String(De))}catch(o){console.error("Failed to save columns:",o)}},N=o=>v.has(o),u=o=>{if(v.has(o))return;const r=f.has(o);f.has(o)?f.delete(o):f.add(o),y(),r&&(o==="usage"||o.startsWith("usage_")||o.startsWith("attr_")||o==="balance_platform_quota")&&xs(),o==="subscriptions"&&te(),r&&o==="groups"&&_e()},U=o=>!f.has(o),J=["usage","usage_anthropic","usage_openai","usage_gemini","usage_antigravity"],F={usage:null,usage_anthropic:"anthropic",usage_openai:"openai",usage_gemini:"gemini",usage_antigravity:"antigravity"},de=J.filter(o=>o!=="usage"),ae=j(()=>!f.has("usage")||de.some(o=>!f.has(o))),$=j(()=>!f.has("groups")),O=j(()=>!f.has("balance_platform_quota")),_=j(()=>ke.value.some(o=>o.enabled&&!f.has(`attr_${o.id}`))),x=j(()=>I.value.filter(o=>o.key==="email"||o.key==="actions"||!f.has(o.key))),b=k([]),p=k(!1),R=k(""),Q=fe((()=>{const o={sort_by:"created_at",sort_order:"desc"},r=new Set(["email","id","username","role","balance","concurrency","status","last_used_at","last_active_at","created_at"]);try{const w=localStorage.getItem(Jt);if(!w)return o;const s=JSON.parse(w),m=typeof s.key=="string"?s.key:"";return r.has(m)?{sort_by:m,sort_order:s.order==="asc"?"asc":"desc"}:o}catch{return o}})()),D=k([]),_e=async()=>{if(!(D.value.length>0))try{D.value=await K.groups.getAll()}catch(o){console.error("Failed to load groups:",o)}},Ge=k([]),Ze=async()=>{if(!(Ge.value.length>0))try{Ge.value=await K.groups.getAllIncludingInactive()}catch(o){console.error("Failed to load groups for API key filter:",o)}},xe=o=>{var s;const r=[],w=[];for(const m of D.value)m.status!=="active"||m.subscription_type!=="standard"||(m.is_exclusive?(s=o.allowed_groups)!=null&&s.includes(m.id)&&r.push(m):w.push(m));return{exclusive:r,publicGroups:w}},is=j(()=>{const o=[{value:"",label:c("admin.users.allAuthorizedGroups")}];for(const r of D.value)r.status!=="active"||!r.is_exclusive||r.subscription_type!=="standard"||o.push({value:r.name,label:r.name});return o}
1),us=j(()=>fa(Ge.value,{all:c("admin.users.allApiKeyGroups"),exclusive:c("admin.users.apiKeyGroupExclusive"),public:c("admin.users.apiKeyGroupPublic"),subscription:c("admin.users.apiKeyGroupSubscription"),disabled:c("admin.users.apiKeyGroupDisabled")})),X=fe({role:"",status:"",group:"",apiKeyGroup:null}),Se=fe({}),ne=fe(new Set),Oe=k(!1),Be=k(!1),et=k(null),tt=k(null),Ut=j(()=>ke.value.filter(o=>o.enabled)),ds=j(()=>[{key:"role",name:c("admin.users.columns.role"),type:"select"},{key:"status",name:c("admin.users.columns.status"),type:"select"},{key:"group",name:c("admin.users.authorizedGroupFilter"),type:"select"},{key:"apiKeyGroup",name:c("admin.users.apiKeyGroupFilter"),type:"select"}]),cs=()=>{try{const o=localStorage.getItem(Yt);o&&JSON.parse(o).forEach(s=>ne.add(s));const r=localStorage.getItem(Wt);if(r){const w=JSON.parse(r);w.role&&(X.role=w.role),w.status&&(X.status=w.status),w.group&&(X.group=w.group),typeof w.apiKeyGroup=="number"&&(X.apiKeyGroup=w.apiKeyGroup),w.attributes&&Object.assign(Se,w.attributes)}}catch(o){console.error("Failed to load saved filters:",o)}},st=()=>{try{localStorage.setItem(Yt,JSON.stringify([...ne]));const o={role:X.role,status:X.status,group:X.group,apiKeyGroup:X.apiKeyGroup,attributes:Se};localStorage.setItem(Wt,JSON.stringify(o))}catch(o){console.error("Failed to save filters:",o)}},Fe=o=>ke.value.find(r=>r.id===o),Ue=k({}),Pe=k({}),Te=(o,r)=>{var w,s;return(s=(w=Ue.value[o])==null?void 0:w.by_platform)==null?void 0:s.find(m=>m.platform===r)},Ae=k(null),oe=k((()=>{try{const o=localStorage.getItem($t);if(!o)return null;const r=JSON.parse(o);if(!r.key||!J.includes(r.key))return null;const w=r.metric==="total"?"total":"today",s=r.order==="asc"?"asc":"desc";return{key:r.key,metric:w,order:s}}catch{return null}})()),At=()=>{try{oe.value?localStorage.setItem($t,JSON.stringify(oe.value)):localStorage.removeItem($t)}catch(o){console.error("Failed to persist usage sort:",o)}},ms=()=>{oe.value&&(oe.value=null,Ae.value=null,At())},Vt=(o,r)=>!!oe.value&&oe.value.key===o&&oe.value.metric===r,Et=(o,r)=>Vt(o,r)?oe.value.order:null,ps=(o,r)=>{const w=oe.value;w&&w.key===o&&w.metric===r?oe.value=w.order==="desc"?{key:o,metric:r,order:"asc"}:null:oe.value={key:o,metric:r,order:"desc"},At(),Ae.value=null},ys=o=>{Ae.value=Ae.value===o?null:o},Mt=(o,r,w)=>{var P;const s=Ue.value[o];if(!s)return 0;const m=F[r];if(m===null)return w==="today"?s.today_actual_cost??0:s.total_actual_cost??0;const E=(P=s.by_platform)==null?void 0:P.find(ee=>ee.platform===m);return E?w==="today"?E.today_actual_cost??0:E.total_actual_cost??0:0},Gt=j(()=>{const o=oe.value;return o?[...b.value].map((r,w)=>({row:r,index:w})).sort((r,w)=>{const s=Mt(r.row.id,o.key,o.metric),m=Mt(w.row.id,o.key,o.metric);return s!==m?o.order==="asc"?s-m:m-s:r.index-w.index}).map(r=>r.row):b.value}),{selectedIds:at,selectedCount:He,setSelectedIds:fs,clear:vs,removeMany:bs}=ta({rows:Gt,getId:o=>o.id}),gs=o=>{fs(o.filter(r=>typeof r=="number"))},hs=o=>c("admin.users.bulkLimits.selectUser",{email:o.email}),ke=k([]),ot=k({}),ie=fe({page:1,page_size:ea(),total:0,pages:0}),je=k(!1),lt=k(!1),rt=k(!1),Ke=k(!1),ze=k([]),nt=k(!1),it=k(!1),ut=k(!1),dt=k(!1),ct=k(null),Le=k(null),mt=k(null),pt=k(null),zt=o=>{pt.value=o,dt.value=!0},_s=()=>{dt.value=!1,pt.value=null};let we=null,Ve=0;const Rt=async(o,r,w)=>{if(o.length===0)return;const s=[];ae.value&&s.push((async()=>{try{const m=await K.dashboard.getBatchUsersUsage(o);if(r!=null&&r.aborted||typeof w=="number"&&w!==Ve)return;Ue.value=m.stats}catch(m){if(r!=null&&r.aborted)return;console.error("Failed to load usage stats:",m)}})()),ke.value.length>0&&_.value&&s.push((async()=>{try{const m=await K.userAttributes.getBatchUserAttributes(o);if(r!=null&&r.aborted||typeof w=="number"&&w!==Ve)return;ot.value=m.attributes}catch(m){if(r!=null&&r.aborted)return;console.error("Failed to load user attribute values:",m)}})()),O.value&&s.push((async()=>{try{for(let E=0;E<o.length;E+=6){if(r!=null&&r.aborted||typeof w=="number"&&w!==Ve)return;const P=o.slice(E,E+6),ee=await Promise.allSettled(P.map(le=>K.users.getPlatformQuotas(le)));if(r!=null&&r.aborted||typeof w=="number"&&w!==Ve)return;const ue={...Pe.value};ee.forEach((le,ye)=>{le.status==="fulfilled"&&(ue[P[ye]]=le.value.platform_quotas||[])}),Pe.value=ue}}catch(m){if(r!=null&&r.aborted)return;console.error("Failed to load platform quotas:",m)}})()),s.length>0&&await Promise.allSettled(s)},xs=()=>{const o=b.value.map(w=>w.id);if(o.length===0)return;const r=++Ve;Rt(o,void 0,r)},Re=k(null),Ie=k(null),ks=(o,r)=>
1{if(Re.value===o.id)pe();else{const w=r.currentTarget;if(!w){pe();return}const s=w.getBoundingClientRect(),m=200,E=240,P=8,ee=window.innerWidth,ue=window.innerHeight;let le,ye;ee<768?(le=Math.max(P,Math.min(s.left+s.width/2-m/2,ee-m-P)),ye=s.bottom+4,ye+E>ue-P&&(ye=s.top-E-4,ye<P&&(ye=P))):(le=Math.max(P,Math.min(r.clientX-m,ee-m-P)),ye=r.clientY,ye+E>ue-P&&(ye=ue-E-P)),Ie.value={top:ye,left:le},Re.value=o.id}},pe=()=>{Re.value=null,Ie.value=null},Lt=o=>{const r=o.target;!r.closest(".action-menu-trigger")&&!r.closest(".action-menu-content")&&pe(),et.value&&!et.value.contains(r)&&(Oe.value=!1),tt.value&&!tt.value.contains(r)&&(Be.value=!1),Ae.value!==null&&!r.closest(".usage-sort-trigger")&&(Ae.value=null),Ee.value!==null&&(Ee.value=null)},yt=k(!1),ft=k(null),Ee=k(null),ws=o=>{Ee.value=Ee.value===o?null:o},vt=k(!1),bt=k(null),gt=k(null),Qe=k(!1),qe=k(null),ht=k("add"),_t=k(!1),Me=k(null),$s=o=>{const r=new Date,s=new Date(o).getTime()-r.getTime();return Math.ceil(s/(1e3*60*60*24))},It=async()=>{try{ke.value=await K.userAttributes.listEnabledDefinitions()}catch(o){console.error("Failed to load attribute definitions:",o)}},Cs=async()=>{ut.value=!1,await It(),te()},te=async()=>{var w,s;we==null||we.abort();const o=new AbortController;we=o;const{signal:r}=o;p.value=!0;try{const m={};for(const[P,ee]of Object.entries(Se))ee&&(m[Number(P)]=ee);const E=await K.users.list(ie.page,ie.page_size,{role:X.role,status:X.status,search:R.value||void 0,group_name:X.group||void 0,api_key_group_id:X.apiKeyGroup??void 0,attributes:Object.keys(m).length>0?m:void 0,include_subscriptions:!0,sort_by:Q.sort_by,sort_order:Q.sort_order},{signal:r});if(r.aborted)return;if(b.value=E.items,ie.total=E.total,ie.pages=E.pages,Ue.value={},ot.value={},Pe.value={},E.items.length>0){const P=E.items.map(ue=>ue.id),ee=++Ve;window.setTimeout(()=>{r.aborted||ee!==Ve||Rt(P,r,ee)},50)}}catch(m){const E=m;if((E==null?void 0:E.name)==="AbortError"||(E==null?void 0:E.name)==="CanceledError"||(E==null?void 0:E.code)==="ERR_CANCELED")return;const P=((s=(w=m.response)==null?void 0:w.data)==null?void 0:s.detail)||m.message||c("admin.users.failedToLoad");d.showError(P),console.error("Error loading users:",m)}finally{we===o&&(p.value=!1)}},Ss=async()=>{vs(),await te()};let xt;const Us=()=>{clearTimeout(xt),xt=setTimeout(()=>{ie.page=1,te()},300)},As=o=>{const r=Math.max(1,Math.min(o,ie.pages||1));ie.page=r,te()},Vs=o=>{ie.page_size=o,ie.page=1,te()},Es=(o,r)=>{ms(),Q.sort_by=o,Q.sort_order=r,ie.page=1,te()},Je=o=>{const r=ke.value.find(w=>w.id===o);return(r==null?void 0:r.name)||String(o)},Ms=o=>{ne.has(o)?(ne.delete(o),o==="role"&&(X.role=""),o==="status"&&(X.status=""),o==="group"&&(X.group=""),o==="apiKeyGroup"&&(X.apiKeyGroup=null)):(ne.add(o),o==="group"&&_e(),o==="apiKeyGroup"&&Ze()),st(),ie.page=1,te()},Gs=o=>{const r=`attr_${o.id}`;ne.has(r)?(ne.delete(r),delete Se[o.id]):(ne.add(r),Se[o.id]=""),st(),ie.page=1,te()},We=(o,r)=>{Se[o]=r},$e=()=>{st(),te()},zs=o=>{ct.value=o,lt.value=!0},Rs=()=>{lt.value=!1,ct.value=null},Ls=async o=>{var w,s;const r=o.status==="active"?"disabled":"active";try{const m=await K.users.toggleStatus(o.id,r);if(d.showSuccess(c(r==="active"?"admin.users.userEnabled":"admin.users.userDisabled")),p.value){te();return}const E=b.value.find(P=>P.id===o.id);E&&(E.status=m.status,E.updated_at=m.updated_at)}catch(m){d.showError(((s=(w=m.response)==null?void 0:w.data)==null?void 0:s.detail)||c("admin.users.failedToToggle")),console.error("Error toggling user status:",m)}},Is=o=>{mt.value=o,it.value=!0},Ds=()=>{it.value=!1,mt.value=null},Ns=o=>{ft.value=o,yt.value=!0},Os=()=>{yt.value=!1,ft.value=null},Bs=(o,r)=>
1{Ee.value=null,bt.value=o,gt.value=r,vt.value=!0},Fs=()=>{vt.value=!1,bt.value=null,gt.value=null},Ps=o=>{Le.value=o,Ke.value=!0},Ts=async()=>{var o,r;if(Le.value)try{await K.users.delete(Le.value.id),d.showSuccess(c("common.success")),Ke.value=!1,Le.value=null,te()}catch(w){d.showError(((r=(o=w.response)==null?void 0:o.data)==null?void 0:r.detail)||c("admin.users.failedToDelete")),console.error("Error deleting user:",w)}},Hs=async()=>{const o=ze.value;ze.value=[],nt.value=!0;const r=[];for(const s of o)try{await K.users.delete(s),r.push(s)}catch(m){console.error("Error deleting user:",m)}bs(r),r.length>0&&(d.showSuccess(c("admin.users.bulkDelete.success",{count:r.length})),ie.page=1);const w=o.length-r.length;w>0&&d.showError(c("admin.users.bulkDelete.failed",{count:w})),await te(),nt.value=!1},kt=o=>{qe.value=o,ht.value="add",Qe.value=!0},Dt=o=>{qe.value=o,ht.value="subtract",Qe.value=!0},js=()=>{Qe.value=!1,qe.value=null},Nt=o=>{Me.value=o,_t.value=!0},Ks=()=>{_t.value=!1,Me.value=null},Qs=()=>{Me.value&&kt(Me.value)},qs=()=>{Me.value&&Dt(Me.value)},Ot=()=>{pe()};return St(async()=>{await It(),cs(),h(),te(),($.value||ne.has("group"))&&_e(),ne.has("apiKeyGroup")&&Ze(),document.addEventListener("click",Lt),window.addEventListener("scroll",Ot,!0)}),Xt(()=>{document.removeEventListener("click",Lt),window.removeEventListener("scroll",Ot,!0),clearTimeout(xt),we==null||we.abort()}),(o,r)=>(n(),re(sa,null,{default:B(()=>{var w;return[C(aa,null,{filters:B(()=>[e("div",Ji,[e("div",Wi,[e("div",Yi,[C(T,{name:"search",size:"md",class:"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400"}),H(e("input",{"onUpdate:modelValue":r[0]||(r[0]=s=>R.value=s),type:"text",placeholder:t(c)("admin.users.searchUsers"),class:"input pl-10",onInput:Us},null,40,Xi),[[W,R.value]])]),ne.has("role")?(n(),i("div",Zi,[C(Ce,{modelValue:X.role,"onUpdate:modelValue":r[1]||(r[1]=s=>X.role=s),options:[{value:"",label:t(c)("admin.users.allRoles")},{value:"admin",label:t(c)("admin.users.admin")},{value:"user",label:t(c)("admin.users.user")}],onChange:$e},null,8,["modelValue","options"])])):z("",!0),ne.has("status")?(n(),i("div",eu,[C(Ce,{modelValue:X.status,"onUpdate:modelValue":r[2]||(r[2]=s=>X.status=s),options:[{value:"",label:t(c)("admin.users.allStatus")},{value:"active",label:t(c)("common.active")},{value:"disabled",label:t(c)("admin.users.disabled")}],onChange:$e},null,8,["modelValue","options"])])):z("",!0),ne.has("group")?(n(),i("div",tu,[C(Ce,{modelValue:X.group,"onUpdate:modelValue":r[3]||(r[3]=s=>X.group=s),options:is.value,searchable:"",creatable:"","creatable-prefix":t(c)("admin.users.fuzzySearch"),"search-placeholder":t(c)("admin.users.searchAuthorizedGroups"),onChange:$e},null,8,["modelValue","options","creatable-prefix","search-placeholder"])])):z("",!0),ne.has("apiKeyGroup")?(n(),i("div",su,[C(Ce,{modelValue:X.apiKeyGroup,"onUpdate:modelValue":r[4]||(r[4]=s=>X.apiKeyGroup=s),options:us.value,searchable:"","search-placeholder":t(c)("admin.users.searchApiKeyGroups"),onChange:$e},null,8,["modelValue","options","search-placeholder"])])):z("",!0),(n(!0),i(q,null,Z(Se,(s,m)=>{var E,P,ee,ue;return n(),i(q,{key:m},[ne.has(`attr_${m}`)?(n(),i("div",au,[["text","textarea","email","url","date"].includes(((E=Fe(Number(m)))==null?void 0:E.type)||"text")?(n(),i("input",{key:0,value:s,onInput:le=>We(Number(m),le.target.value),onKeyup:wt($e,["enter"]),placeholder:Je(Number(m)),class:"input w-full"},null,40,ou)):((P=Fe(Number(m)))==null?void 0:P.type)==="number"?(n(),i("input",{key:1,value:s,type:"number",onInput:le=>We(Number(m),le.target.value),onKeyup:wt($e,["enter"]),placeholder:Je(Number(m)),class:"input w-full"},null,40,lu)):["select","multi_select"].includes(((ee=Fe(Number(m)))==null?void 0:ee.type)||"")?(n(),i("div",ru,[C(Ce,{"model-value":s,options:[{value:"",label:Je(Number(m))},...((ue=Fe(Number(m)))==null?void 0:ue.options)||[]],"onUpdate:modelValue":le=>{We(Number(m),String(le??"")),$e()}},null,8,["model-value","options","onUpdate:modelValue"])])):(n(),i("input",{key:3,value:s,onInput:le=>We(Number(m),le.target.value),onKeyup:wt($e,["enter"]),placeholder:Je(Number(m)),class:"input w-full"},null,40,nu))])):z("",!0)],64)}),128))]),e("div",iu,[e("div",uu,[e("button",{onClick:te,disabled:p.value,class:"btn btn-secondary px-2 md:px-3",title:t(c)("common.refresh")},[C(T,{name:"refresh",size:"md",class:se(p.value?"animate-spin":"")},null,8,["class"])],8,du),e("div",{class:"relative",ref_key:"filterDropdownRef",ref:et}
1,[e("button",{onClick:r[5]||(r[5]=s=>Oe.value=!Oe.value),class:"btn btn-secondary px-2 md:px-3",title:t(c)("admin.users.filterSettings")},[C(T,{name:"filter",size:"sm",class:"md:mr-1.5"}),e("span",mu,a(t(c)("admin.users.filterSettings")),1)],8,cu),Oe.value?(n(),i("div",pu,[(n(!0),i(q,null,Z(ds.value,s=>(n(),i("button",{key:s.key,onClick:m=>Ms(s.key),class:"flex w-full items-center justify-between px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"},[e("span",null,a(s.name),1),ne.has(s.key)?(n(),re(T,{key:0,name:"check",size:"sm",class:"text-primary-500","stroke-width":2})):z("",!0)],8,yu))),128)),Ut.value.length>0?(n(),i("div",fu)):z("",!0),(n(!0),i(q,null,Z(Ut.value,s=>(n(),i("button",{key:s.id,onClick:m=>Gs(s),class:"flex w-full items-center justify-between px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"},[e("span",null,a(s.name),1),ne.has(`attr_${s.id}`)?(n(),re(T,{key:0,name:"check",size:"sm",class:"text-primary-500","stroke-width":2})):z("",!0)],8,vu))),128))])):z("",!0)],512),e("div",{class:"relative",ref_key:"columnDropdownRef",ref:tt},[e("button",{onClick:r[6]||(r[6]=s=>Be.value=!Be.value),class:"btn btn-secondary px-2 md:px-3",title:t(c)("admin.users.columnSettings")},[r[16]||(r[16]=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",gu,a(t(c)("admin.users.columnSettings")),1)],8,bu),Be.value?(n(),i("div",hu,[(n(!0),i(q,null,Z(g.value,s=>(n(),i("button",{key:s.key,disabled:N(s.key),onClick:m=>u(s.key),class:se(["flex w-full items-center justify-between px-4 py-2 text-left text-sm",N(s.key)?"cursor-not-allowed text-gray-400 dark:text-gray-500":"text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"]),title:N(s.key)?t(c)("admin.users.columnAlwaysVisible"):""},[e("span",null,a(s.label),1),U(s.key)?(n(),re(T,{key:0,name:"check",size:"sm",class:se(N(s.key)?"text-gray-400 dark:text-gray-500":"text-primary-500"),"stroke-width":2},null,8,["class"])):z("",!0)],10,_u))),128))])):z("",!0)],512),e("button",{onClick:r[7]||(r[7]=s=>ut.value=!0),class:"btn btn-secondary px-2 md:px-3",title:t(c)("admin.users.attributes.configButton")},[C(T,{name:"cog",size:"sm",class:"md:mr-1.5"}),e("span",ku,a(t(c)("admin.users.attributes.configButton")),1)],8,xu)]),t(He)>0?(n(),i("button",{key:0,class:"btn btn-secondary flex-1 md:flex-initial","data-test":"bulk-edit-limits",onClick:r[8]||(r[8]=s=>rt.value=!0)},[C(T,{name:"users",size:"md",class:"mr-2"}),Y(" "+a(t(c)("admin.users.bulkLimits.action",{count:t(He)})),1)])):z("",!0),t(He)>0?(n(),i("button",{key:1,class:"btn btn-danger flex-1 md:flex-initial","data-test":"bulk-delete-users",disabled:nt.value,onClick:r[9]||(r[9]=s=>ze.value=[...t(at)])},[C(T,{name:"trash",size:"md",class:"mr-2"}),Y(" "+a(t(c)("admin.users.bulkDelete.action",{count:t(He)})),1)],8,wu)):z("",!0),e("button",{onClick:r[10]||(r[10]=s=>je.value=!0),class:"btn btn-primary flex-1 md:flex-initial"},[C(T,{name:"plus",size:"md",class:"mr-2"}),Y(" "+a(t(c)("admin.users.createUser")),1)])])])]),table:B(()=>[C(oa,{columns:x.value,data:Gt.value,loading:p.value,"row-key":"id",selectable:"","selected-keys":t(at),"selection-label":hs,"actions-count":7,"server-side-sort":!0,"default-sort-key":"created_at","default-sort-order":"desc","sort-storage-key":Jt,onSort:Es,"onUpdate:selectedKeys":gs},Xs({"cell-email":B(({value:s})=>[e("div",$u,[e("div",Cu,[e("span",Su,a(s.charAt(0).toUpperCase()),1)]),e("span",Uu,a(s),1)])]),"cell-username":B(({value:s})=>[e("span",Au,a(s||"-"),1)]),"cell-notes":B(({value:s})=>[e("div",Vu,[s?(n(),i("span",{key:0,title:s.length>30?s:void 0,class:"block truncate text-sm text-gray-600 dark:text-gray-400"},a(s.length>30?s.substring(0,25)+"...":s),9,Eu)):(n(),i("span",Mu,"-"))])]),"cell-role":B(({value:s})=>[e("span",{class:se(["badge",s==="admin"?"badge-purple":"badge-gray"])},a(t(c)("admin.users.roles."+s)),3)]),"cell-groups":B(({row:s})=>[D.value.length>0?(n(),i("div",Ru,[xe(s).exclusive.length>0?(n(),i("span",{key:0,class:"group/ex relative inline-flex cursor-pointer items-center gap-1 whitespace-nowrap text-xs",onClick:be(m=>ws(s.id),["stop"])},[C(T,{name:"shield",size:"xs",class:"h-3.5 w-3.5 text-purple-500 dark:text-purple-400"}),e("span",Iu,a(xe(s).exclusive.length),1),e("span",Du,a(t(c)("admin.users.exclusiveLabel")),1),Ee.value!==s.id?(n(),i("div",Nu,[r[17]||(r[17]=e("div",{class:"absolute left-4 bottom-full border-4 border-transparent border-b-gray-900 dark:border-b-dark-600"},null,-1)),e("div",Ou,[(n(!0),i(q,null,Z(xe(s).exclusive,m=>(n(),i("span",{key:m.id},a(m.name),1))),128))])])):z("",!0),Ee.value===s.id?(n(),i("div",Bu,[e("div",Fu,a(t(c)("admin.users.clickToReplace")),1),(n(!0),i(q,null,Z(xe(s).exclusive,m=>(n(),i("div",{key:m.id,class:"flex cursor-pointer items-center gap-2 px-3 py-2 text-gray-700 transition-colors hover:bg-primary-50 hover:text-primary-600 dark:text-dark-200 dark:hover:bg-primary-900/30 dark:hover:text-primary-400",onClick:be(E=>Bs(s,m),["stop"])},[C(T,{name:"swap",size:"xs",class:"h-3.5 w-3.5 flex-shrink-0 opacity-50"}),e("span",Tu,a(m.name),1)],8,Pu))),128))])):z("",!0)],8,Lu)):z("",!0),xe(s).publicGroups.length>0?(n(),i("span",Hu,[C(T,{name:"globe",size:"xs",class:"h-3.5 w-3.5 text-gray-400 dark:text-dark-500"}),e("span",ju,a(xe(s).publicGroups.length),1),e("span",Ku,a(t(c)("admin.users.publicLabel")),1),e("div",Qu,[r[18]||(r[18]=e("div",{class:"absolute left-4 bottom-full border-4 border-transparent border-b-gray-900 dark:border-b-dark-600"},null,-1)),e("div",qu,[(n(!0),i(q,null,Z(xe(s).publicGroups,m=>(n(),i("span",{key:m.id},a(m.name),1))),128))])])])):z("",!0),xe(s).exclusive.length===0&&xe(s).publicGroups.length===0?(n(),i("span",Ju,"-")):z("",!0)])):(n(),i("span",Wu,"-"))]),"cell-subscriptions":B(({row:s})=>[s.subscriptions&&s.subscriptions.length>0?(n(),i("div",Yu,[(n(!0),i(q,null,Z(s.subscriptions,m=>{var E,P,ee,ue;return n(),re(ts,{key:m.id,name:((E=m.group)==null?void 0:E.name)||"",platform:(P=m.group)==null?void 0:P.platform,"subscription-type":(ee=m.group)==null?void 0:ee.subscription_type,"rate-multiplier":(ue=m.group)==null?void 0:ue.rate_multiplier,"days-remaining":m.expires_at?$s(m.expires_at):null,title:m.expires_at?t(Ne)(m.expires_at):""},null,8,["name","platform","subscription-type","rate-multiplier","days-remaining","t
1itle"])}),128))])):(n(),i("span",Xu,[C(T,{name:"ban",size:"xs",class:"h-3.5 w-3.5"}),e("span",null,a(t(c)("admin.users.noSubscription")),1)]))]),"cell-balance":B(({value:s,row:m})=>[e("div",Zu,[e("div",ed,[e("button",{class:"font-medium text-gray-900 underline decoration-dashed decoration-gray-300 underline-offset-4 transition-colors hover:text-primary-600 dark:text-white dark:decoration-dark-500 dark:hover:text-primary-400",onClick:E=>Nt(m)}," $"+a(s.toFixed(2)),9,td),e("div",sd,[Y(a(t(c)("admin.users.balanceHistoryTip"))+" ",1),r[19]||(r[19]=e("div",{class:"absolute left-1/2 top-full -translate-x-1/2 border-4 border-transparent border-t-gray-900 dark:border-t-dark-600"},null,-1))])]),e("button",{onClick:be(E=>kt(m),["stop"]),class:"rounded px-2 py-0.5 text-xs font-medium text-emerald-600 transition-colors hover:bg-emerald-50 dark:text-emerald-400 dark:hover:bg-emerald-900/20",title:t(c)("admin.users.deposit")},a(t(c)("admin.users.deposit")),9,ad)])]),"cell-balance_platform_quota":B(({row:s})=>[e("button",{type:"button",class:"block text-left underline decoration-dashed decoration-gray-300 underline-offset-4 transition-colors hover:decoration-primary-400 dark:decoration-dark-500",title:t(c)("admin.users.platformQuota.cellColumnTooltip"),onClick:m=>zt(s)},[C(Ho,{quotas:Pe.value[s.id]},null,8,["quotas"])],8,od)]),"cell-usage":B(({row:s})=>{var m,E,P;return[C(Co,{today:((m=Ue.value[s.id])==null?void 0:m.today_actual_cost)??0,total:((E=Ue.value[s.id])==null?void 0:E.total_actual_cost)??0,"by-platform":(P=Ue.value[s.id])==null?void 0:P.by_platform},null,8,["today","total","by-platform"])]}),"cell-usage_anthropic":B(({row:s})=>[C(Ye,{usage:Te(s.id,"anthropic")},null,8,["usage"])]),"cell-usage_openai":B(({row:s})=>[C(Ye,{usage:Te(s.id,"openai")},null,8,["usage"])]),"cell-usage_gemini":B(({row:s})=>[C(Ye,{usage:Te(s.id,"gemini")},null,8,["usage"])]),"cell-usage_antigravity":B(({row:s})=>[C(Ye,{usage:Te(s.id,"antigravity")},null,8,["usage"])]),"cell-concurrency":B(({row:s})=>[C(mo,{current:s.current_concurrency??0,max:s.concurrency},null,8,["current","max"])]),"cell-status":B(({value:s})=>[e("div",pd,[e("span",{class:se(["inline-block h-2 w-2 rounded-full",s==="active"?"bg-green-500":"bg-red-500"])},null,2),e("span",yd,a(s==="active"?t(c)("common.active"):t(c)("admin.users.disabled")),1)])]),"cell-created_at":B(({value:s})=>[e("span",fd,a(t(Ne)(s)),1)]),"cell-last_used_at":B(({value:s})=>[e("span",vd,a(s?t(Ne)(s):"-"),1)]),"cell-last_active_at":B(({value:s})=>[e("span",bd,a(s?t(Ne)(s):"-"),1)]),"cell-actions":B(({row:s})=>[e("div",gd,[e("button",{onClick:m=>zs(s),class:"flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-gray-100 hover:text-primary-600 dark:hover:bg-dark-700 dark:hover:text-primary-400"},[C(T,{name:"edit",size:"sm"}),e("span",_d,a(t(c)("common.edit")),1)],8,hd),s.role!=="admin"?(n(),i("button",{key:0,onClick:m=>Ls(s),class:se(["flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors",s.status==="active"?"hover:bg-orange-50 hover:text-orange-600 dark:hover:bg-orange-900/20 dark:hover:text-orange-400":"hover:bg-green-50 hover:text-green-600 dark:hover:bg-green-900/20 dark:hover:text-green-400"])},[s.status==="active"?(n(),re(T,{key:0,name:"ban",size:"sm"})):(n(),re(T,{key:1,name:"checkCircle",size:"sm"})),e("span",kd,a(s.status==="active"?t(c)("admin.users.disable"):t(c)("admin.users.enable")),1)],10,xd)):z("",!0),e("button",{onClick:m=>ks(s,m),class:se(["action-menu-trigger flex flex-col items-center gap-0.5 rounded-lg p-1.5 text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-dark-700 dark:hover:text-white",{"bg-gray-100 text-gray-900 dark:bg-dark-700 dark:text-white":Re.value===s.id}])},[C(T,{name:"more",size:"sm"}),e("span",$d,a(t(c)("common.more")),1)],10,wd)])]),empty:B(()=>[C(ra,{title:t(c)("admin.users.noUsersYet"),description:t(c)("admin.users.createFirstUser"),"action-text":t(c)("admin.users.createUser"),onAction:r[11]||(r[11]=s=>je.value=!0)},null,8,["title","description","action-text"])]),_:2},[Z(ke.value.filter(s=>s.enabled),s=>({name:`cell-attr_${s.id}`,fn:B(({row:m})=>[e("div",Gu,[e("span",{class:"block truncate text-sm text-gray-700 dark:text-gray-300",title:l(m.id,s.id)},a(l(m.id,s.id)),9,zu)])])})),Z(J,s=>({name:`header-${s}`,fn:B(({column:m})=>[e("div",ld,[e("span",null,a(m.label),1),e("div",rd,[e("button",{type:"button",class:se(["flex items-center gap-1 rounded px-1 py-0.5 transition-colors hover:bg-gray-200 dark:hover:bg-dark-700",oe.value&&oe.value.key===s?"text-primary-600 dark:text-primary-400":"text-gray-400 dark:text-dark-500"]),title:t(c)("admin.users.sortBy"),"data-test":`usage-sort-trigger-${s}`,onClick:be(E=>ys(s),["stop"])},[oe.value&&oe.value.key===s?(n(),i("span",id,a(oe.value.metric==="today"?t(c)("admin.users.today"):t(c)("admin.users.total")),1)):z("",!0),oe.value&&oe.value.key===s?(n(),i("svg",{key:1,class:se(["h-3.5 w-3.5",{"rotate-180":oe.value.order==="desc"}]),fill:"currentColor",viewBox:"0 0 20 20"},[...r[20]||(r[20]=[e("path",{"fill-rule":"evenodd",d:"M14.707 12.707
1a1 1 0 01-1.414 0L10 9.414l-3.293 3.293a1 1 0 01-1.414-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 010 1.414z","clip-rule":"evenodd"},null,-1)])],2)):(n(),i("svg",ud,[...r[21]||(r[21]=[e("path",{d:"M10 3l-4 5h8l-4-5zM10 17l4-5H6l4 5z"},null,-1)])]))],10,nd),Ae.value===s?(n(),i("div",dd,[(n(),i(q,null,Z(["today","total"],E=>e("button",{key:E,type:"button",class:se(["flex w-full items-center justify-between gap-3 px-3 py-1.5 text-left text-xs normal-case tracking-normal hover:bg-gray-100 dark:hover:bg-dark-700",Vt(s,E)?"font-medium text-primary-600 dark:text-primary-400":"text-gray-700 dark:text-gray-300"]),"data-test":`usage-sort-${s}-${E}`,onClick:be(P=>ps(s,E),["stop"])},[e("span",null,a(E==="today"?t(c)("admin.users.today"):t(c)("admin.users.total")),1),Et(s,E)?(n(),i("svg",{key:0,class:se(["h-3 w-3",{"rotate-180":Et(s,E)==="desc"}]),fill:"currentColor",viewBox:"0 0 20 20"},[...r[22]||(r[22]=[e("path",{"fill-rule":"evenodd",d:"M14.707 12.707a1 1 0 01-1.414 0L10 9.414l-3.293 3.293a1 1 0 01-1.414-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 010 1.414z","clip-rule":"evenodd"},null,-1)])],2)):z("",!0)],10,cd)),64)),e("div",md,a(t(c)("admin.users.sortCurrentPageOnly")),1)])):z("",!0)])])])}))]),1032,["columns","data","loading","selected-keys"])]),pagination:B(()=>[ie.total>0?(n(),re(la,{key:0,page:ie.page,total:ie.total,"page-size":ie.page_size,"onUpdate:page":As,"onUpdate:pageSize":Vs},null,8,["page","total","page-size"])):z("",!0)]),_:1}),(n(),re(Zt,{to:"body"},[Re.value!==null&&Ie.value?(n(),i("div",{key:0,class:"action-menu-content fixed z-[9999] w-48 overflow-hidden rounded-xl bg-white shadow-lg ring-1 ring-black/5 dark:bg-dark-800 dark:ring-white/10",style:es({top:Ie.value.top+"px",left:Ie.value.left+"px"})},[e("div",Cd,[(n(!0),i(q,null,Z(b.value,s=>(n(),i(q,{key:s.id},[s.id===Re.value?(n(),i(q,{key:0},[e("button",{onClick:m=>{Is(s),pe()},class:"flex w-full items-center gap-2 px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"},[C(T,{name:"key",size:"sm",class:"text-gray-400","stroke-width":2}),Y(" "+a(t(c)("admin.users.apiKeys")),1)],8,Sd),e("button",{onClick:m=>{Ns(s),pe()},class:"flex w-full items-center gap-2 px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"},[C(T,{name:"users",size:"sm",class:"text-gray-400","stroke-width":2}),Y(" "+a(t(c)("admin.users.groups")),1)],8,Ud),r[24]||(r[24]=e("div",{class:"my-1 border-t border-gray-100 dark:border-dark-700"},null,-1)),e("button",{onClick:m=>{kt(s),pe()},class:"flex w-full items-center gap-2 px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"},[C(T,{name:"plus",size:"sm",class:"text-emerald-500","stroke-width":2}),Y(" "+a(t(c)("admin.users.deposit")),1)],8,Ad),e("button",{onClick:m=>{Dt(s),pe()},class:"flex w-full items-center gap-2 px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"},[r[23]||(r[23]=e("svg",{class:"h-4 w-4 text-amber-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 12H4"})],-1)),Y(" "+a(t(c)("admin.users.withdraw")),1)],8,Vd),e("button",{onClick:m=>{zt(s),pe()},class:"flex w-full items-center gap-2 px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"},[C(T,{name:"chartBar",size:"sm",class:"text-gray-400","stroke-width":2}),Y(" "+a(t(c)("admin.users.platformQuota.menuItem")),1)],8,Ed),e("button",{onClick:m=>{Nt(s),pe()},class:"flex w-full items-center gap-2 px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-dark-700"},[C(T,{name:"dollar",size:"sm",class:"text-gray-400","stroke-width":2}),Y(" "+a(t(c)("admin.users.balanceHistory")),1)],8,Md),r[25]||(r[25]=e("div",{class:"my-1 border-t border-gray-100 dark:border-dark-700"},null,-1)),s.role!=="admin"?(n(),i("button",{key:0,onClick:m=>{Ps(s),pe()},class:"flex w-full items-center gap-2 px-4 py-2 text-sm text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-900/20"},[C(T,{name:"trash",size:"sm","stroke-width":2}),Y(" "+a(t(c)("common.delete")),1)],8,Gd)):z("",!0)],64)):z("",!0)],64))),128))])],4)):z("",!0)])),C(Ct,{show:Ke.value,title:t(c)("admin.users.deleteUser"),message:t(c)("admin.users.deleteConfirm",{email:(w=Le.value)==null?void 0:w.email}),danger:!0,onConfirm:Ts,onCancel:r[12]||(r[12]=s=>Ke.value=!1)},null,8,["show","title","message"]),C(Ct,{show:ze.value.length>0,title:t(c)("admin.users.bulkDelete.title"),message:t(c)("admin.users.bulkDelete.confirm",{count:ze.value.length}),"confirm-text":t(c)("common.delete"),danger:"",onConfirm:Hs,onCancel:r[13]||(r[13]=s=>ze.value=[])},null,8,["show","title","message","confirm-text"]),C(dl,{show:je.value,onClose:r[14]||(r[14]=s=>je.value=!1),onSuccess:te},null,8,["show"]),C(Pl,{show:lt.value,user:ct.value,onClose:Rs,onSuccess:te},null,8,["show","user"]),C(ar,{show:rt.value,"selected-ids":t(at),onClose:r[15]||(r[15]=s=>rt.value=!1),onSuccess:Ss},null,8,["show","selected-ids"]),C(Rr,{show:dt.value,user:pt.value,onClose:_s,onSuccess:te},null,8,["show","user"]),C(rn,{show:it.value,user:mt.value,onClose:Ds},null,8,["show","user"]),C(pi,{show:yt.value,user:ft.value,onClose:Os,onSuccess:te},null,8,["show","user"]),C(Ei,{show:Qe.value,user:qe.value,operation:ht.value,onClose:js,onSuccess:te},null,8,["show","user","operation"]),C(da,{show:_t.value,user:Me.value,onClose:Ks,onDeposit:Qs,onWithdraw:qs},null,8,["show","user"]),C(qi,{show:vt.value,user:bt.value,"old-group":gt.value,"all-groups":D.value,onClose:Fs,onSuccess:te},null,8,["show","user","old-group","all-groups"]),C(no,{show:ut.value,onClose:Cs},null,8,["show"])]}),_:1}))}});
1export{nc 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.