1import{_ as E}from"./DPBbG9mr.js";import{_ as F}from"./DTKgnZnG.js";import{_ as O}from"./R-hx0Dyv.js";import{d as q,a as j,u as P,C as T,b as G,s as H,D as J,w as x,r as p,o as l,i as s,f as d,h as t,t as a,k as b,F as C,E as U,m as A,j as R,g as M,q as N}from"./C2UU-Vq0.js";import"./DO9oaV8r.js";import"./BNIoS1dD.js";import"./BEV94D_H.js";import"./DlAUqK2U.js";const K=["disabled"],Q={key:0,class:"loading loading-spinner loading-sm"},W={key:1,class:"ms-icon"},X={class:"text-base-content/70 text-body mb-2"},Y={class:"text-headline font-bold"},Z={key:0,class:"alert alert-error border-error/30 fixed bottom-4 left-1/2 z-[1000] w-auto max-w-lg -translate-x-1/2 border"},tt={class:"bg-base-100 flex flex-1 flex-col"},et={class:"min-h-[500px] flex-1 overflow-x-auto"},nt={class:"table-zebra table"},st={key:0},ot={key:0},at=["colspan"],lt={key:0},dt={tabindex:"0",class:"dropdown-content menu bg-base-100 border-base-300 rounded-box z-[80] w-56 border p-2"},it={class:"menu-title"},rt=["onClick","disabled"],ct={class:"flex items-center gap-3"},ut={class:"font-semibold"},mt={class:"text-body font-mono"},pt={class:"text-body"},bt={key:1},_t=["colspan"],Ut=q({__name:"admin-users",setup(ht){const S=j(),z=P(),B=T(),w=G(),c=p(!0),i=p([]),u=p(""),g=p(null),f=p(null),m=N(()=>w.account?.adminRole==="owner"),v=["owner","editor","viewer"],I={owner:"badge-secondary",editor:"badge-primary",viewer:"badge-accent"},L=N(()=>v.map(e=>({role:e,count:i.value.filter(n=>n.adminRole===e).length}))),k=async()=>{try{c.value=!0,u.value="";const e=await S.get("/admin/admin-users");e?.data&&(i.value=[...e.data].sort((n,r)=>{const _=v.indexOf(n.adminRole),h=v.indexOf(r.adminRole);if(_!==h)return _-h;const o=(n.name||n.email||"").toLowerCase(),y=(r.name||r.email||"").toLowerCase();return o.localeCompare(y)}))}catch(e){console.error("Error loading admin users:",e),u.value=e?.message||z.t("admin.dashboard.error")}finally{c.value=!1}},V=(e,n)=>{g.value=e,f.value=n},$=()=>{f.value=null,g.value=null},D=e=>{const n=i.value.findIndex(r=>
1r.id===e.id);n!==-1&&(i.value[n]=e),$()};return H(()=>{k()}),(e,n)=>{const r=E,_=F,h=O;return l(),J(h,{title:e.$t("admin.dashboard.adminUsers"),subtitle:e.$t("admin.dashboard.adminUsersSubtitle")},{actions:x(()=>[t("button",{onClick:k,class:"btn btn-ghost btn-sm",disabled:s(c)},[s(c)?(l(),d("span",Q)):(l(),d("span",W,"refresh")),R(" "+a(e.$t("admin.refresh")),1)],8,K)]),stats:x(()=>[(l(!0),d(C,null,U(s(L),o=>(l(),d("div",{key:o.role,class:""},[t("div",X,a(e.$t(`admin.accounts.${o.role}`)),1),t("div",Y,a(o.count),1)]))),128))]),default:x(()=>[s(u)?(l(),d("div",Z,[n[2]||(n[2]=t("span",{class:"ms-icon"},"error",-1)),t("span",null,a(s(u)),1),t("button",{class:"btn btn-ghost btn-xs",onClick:n[0]||(n[0]=o=>u.value="")},[...n[1]||(n[1]=[t("span",{class:"ms-icon"},"close",-1)])])])):b("",!0),t("div",tt,[t("div",et,[t("table",nt,[t("thead",null,[t("tr",null,[s(m)?(l(),d("th",st,a(e.$t("admin.accounts.actions")),1)):b("",!0),t("th",null,a(e.$t("admin.accounts.name")),1),t("th",null,a(e.$t("admin.accounts.email")),1),t("th",null,a(e.$t("admin.accounts.adminRole")),1),t("th",null,a(e.$t("admin.accounts.created")),1)])]),t("tbody",null,[s(c)?(l(),d("tr",ot,[t("td",{colspan:s(m)?5:4,class:"py-8 text-center"},[...n[3]||(n[3]=[t("span",{class:"loading loading-spinner loading-md"},null,-1)])],8,at)])):b("",!0),(l(!0),d(C,null,U(s(i),(o,y)=>(l(),d("tr",{key:o.id},[s(m)?(l(),d("td",lt,[t("div",{class:A(["dropdown dropdown-start",{"dropdown-top":y>=s(i).length-2&&s(i).length>=4}])},[n[5]||(n[5]=t("label",{tabindex:"0",class:"btn btn-ghost btn-xs btn-square"},[t("span",{class:"ms-icon"},"more_vert")],-1)),t("ul",dt,[t("li",it,a(e.$t("admin.accounts.actions")),1),t("li",null,[t("button",{onClick:gt=>V(o,"adminRole"),disabled:o.id===s(w).account?.id},[n[4]||(n[4]=t("span",{class:"ms-icon"},"admin_panel_settings",-1)),R(" "+a(e.$t("admin.accounts.manageRole")),1)],8,rt)])])],2)])):b("",!0),t("td",null,[t("div",ct,[M(r,{user:o,size:"sm"},null,8,["user"]),t("div",ut,a(o.name||"-"),1)])]),t("td",mt,a(o.email||"-"),1),t("td",null,[t("span",{class:A(["badge badge-sm",I[o.adminRole||"viewer"]])},a(o.adminRole?e.$t(`admin.accounts.${o.adminRole}`):"-"),3)]),t("td",pt,a(o.createdAt?s(B).formatDate(o.createdAt,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"-"),1)]))),128)),!s(c)&&s(i).length===0?(l(),d("tr",bt,[t("td",{colspan:s(m)?5:4,class:"text-base-content/70 py-8 text-center"},a(e.$t("admin.dashboard.noAdminUsers")),9,_t)])):b("",!0)])])])]),M(_,{account:s(g),"modal-type":s(f),"can-manage-admins":s(m),onClose:$,onUpdateAccount:D},null,8,["account","modal-type","can-manage-admins"])]),_:1},8,["title","subtitle"])}}});export{Ut 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.