PageSourceSearch

https://bogey.app/assets/admins-G6GtZ9uk.js

js bogey.app collected 2026-09-25 03:39:56 UTC 15,616 bytes, 1 lines download raw bytes

1import{ef as B,da as A,dq as W,cd as $,bu as Y,cG as Z,bZ as J,cE as e,aT as P,a1 as X,l as Q,bj as j,d8 as ee,K as L,a as se,dh as G,bM as _,a3 as re}from"./index-BmYEzG-O.js";import{a as te}from"./user-edit-sheet-JW-1sRC9.js";import{D as o}from"./detail-dialog-ZMmrGohh.js";import{I as E}from"./icon-filter-dropdown-lDVlnqtQ.js";import{I as S,L as T}from"./indicator-badge-BWaxAD-q.js";import{M as U}from"./metric-stat-card-BBdxPtlN.js";import{P as ae}from"./page-title-header-B_OoX6fi.js";import{d as ie,a as le,j as oe,k as z,i as k,g as ne,h as g,l as de,m as ce}from"./primitives-SxrZwjo8.js";import{K as me,i as xe,S as pe,c as ue,g as be}from"./search-toolbar-DL_FNrpl.js";import{u as he,t as ge,p as je,S as q,T as fe}from"./filters-Ti7w2Pt8.js";import{T as Ne}from"./table-section-BQomQ76M.js";import{T as ve}from"./table-skeleton-kc_UTggk.js";import{D as ye,a as we,c as ke,d as Ae,b as Se}from"./dialog-B1UQGQE_.js";import{u as F}from"./useQuery-BrKwFBY8.js";import{u as Ce}from"./useMutation-Dxy1gZ1Q.js";import{m as De,s as Ie,p as Re}from"./client-list-CCAzDZyw.js";import{u as C,i as O,a as H,b as K}from"./users-oemQ4L3u.js";import{S as Te}from"./shield-check-CFDOt2Na.js";import{C as ze}from"./calendar-days-CfuxvD35.js";import{M as Pe}from"./mail-BfHF94pV.js";import"./check-CIAmH2sc.js";import"./arrow-left-DDNx1Nx7.js";import"./menu-DgKj1iPW.js";import"./arrow-up-right-DuQFIjGq.js";import"./badge-check-BKjD29j6.js";import"./users-round-CPLcVWxB.js";import"./car-DmP7RIaf.js";import"./wallet-cards-CAjA88kY.js";import"./bug-CE7PpLNE.js";import"./building-2-CFHEubG2.js";import"./calendar-clock-DmGEhpnH.js";import"./link-2-CsB3jNXw.js";import"./chevron-right-DFvFM1gD.js";import"./wallet-EYdjJ0eL.js";import"./clipboard-check-CrPyzZJd.js";import"./clock-3-Czcep0bl.js";import"./clock-G34Au6BH.js";import"./percent-CK_VPndd.js";import"./external-link-BrpSo8hr.js";import"./file-text-7ldNvCY5.js";import"./film-CUjuuSW3.js";import"./flag-CNxXiMqh.js";import"./gauge-BOMuAwvk.js";import"./globe-BkLA_WEW.js";import"./play-CuQsYI61.js";import"./pencil-BASHt_tt.js";import"./image-gyrgWkYb.js";import"./lightbulb-CQLWk9TX.js";import"./lock-keyhole-BV1jvhnP.js";import"./map-pin-ClRwF7i3.js";import"./map-pinned-oTby61SC.js";import"./messages-square-0cP2mR4G.js";import"./navigation-CyFknVru.js";import"./phone-DGemGhsW.js";import"./scale-BDx7NPRL.js";import"./save-BimmZwa5.js";import"./share-2-Bbac5fC7.js";import"./square-play-y7UcShl2.js";import"./star-DQhLfNWy.js";import"./trash-2-DMMa-sSH.js";import"./trophy-Coch3jM6.js";import"./users-DwGlDBeq.js";import"./video-D5Z1NCMQ.js";const M=$("/ops-vault/admins");function Le(){const s=B(),t=M.useSearch(),a=M.useNavigate(),[i,l]=A.useState(null),{patchSearch:c,clearFilters:u}=he(a,Y),m=F({queryKey:["admin","admins"],queryFn:Z}),f=F({queryKey:["admin","dashboard"],queryFn:J}),N=Ce({mutationFn:({userId:d,adminRole:b})=>W(d,b),onSuccess:async()=>{await s.invalidateQueries({queryKey:["admin"]})}}),D=A.useMemo(()=>{const b=(m.data??[]).filter(r=>t.role!=="all"&&r.adminRole!==t.role?!1:De([r.id,r.name,r.username,r.email,r.handle],t.q));return Ie(b,t.order,(r,h)=>t.sort==="id"?r.id.localeCompare(h.id):C(r).localeCompare(C(h)))},[m.data,t.order,t.q,t.role,t.sort]),{items:I,total:x,totalPages:v,pageStart:y,pageEnd:n}=Re(D,t.page,t.pageSize),p=(m.data??[]).filter(d=>d.adminRole==="super_admin").length;function w(d){ge(t,c,d)}return{search:t,admins:I,totalAdmins:x,totalPages:v,pageStart:y,pageEnd:n,superAdminCount:p,dashboardTotal:f.data?.admins??m.data?.length??0,adminsQuery:m,viewAdmin:i,setViewAdmin:l,roleMutation:N,patchSearch:c,toggleSort:w,clearFilters:u}}function Ks(){const[s,t]=A.useState(""),[a,i]=A.useState("admin"),{search:l,admins:c,totalAdmins:u,totalPages:m,pageStart:f,pageEnd:N,superAdminCount:D,dashboardTotal:I,adminsQuery:x,viewAdmin:v,setViewAdmin:y,roleMutation:n,patchSearch:p,toggleSort:w,clearFilters:d}=Le();function b(r){r.preventDefault();const h=s?.trim();h&&n.mutate({userId:h,adminRole:a},{onSuccess:()=>{t("")}})}return e.jsxs("div",{className:"grid gap-6",children:[e.jsx(ae,{title:"Admin Access",description:"Manage platform administrators and grant elevated access",meta:u>0?e.jsxs("p",{className:"text-sm text-ink-soft",children:[f,"-",N," of ",u," admins"]}):null}),e.jsxs("section",{className:"grid grid-cols-1 gap-4 md:grid-cols-2",children:[e.jsx(U,{label:"Total Admins",value:I,icon:P,iconClass:"text-stat-purple",bgClass:"bg-stat-purple-soft"}),e.jsx(U,{label:"Super Admins",value:D,icon:P,iconClass:"text-stat-blue",bgClass:"bg-stat-blue-soft"})]}),e.jsx(ie,{header:e.jsxs("div",{className:"flex w-full flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"grid size-10 shrink-0 place-items-center rounded bg-stat-purple-soft text-stat-purple",children:e.jsx(xe,{className:"size-5"})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-semibold text-ink",children:"Grant admin role"}),e.jsx("p",{className:"mt-1 text-sm text-ink-soft",children:"Promote an existing user into the admin console by user ID."})]})]}
1),n.isSuccess?e.jsx("span",{className:"w-fit rounded-sm border border-stat-green/20 bg-stat-green-soft px-2.5 py-1 text-xs font-medium text-stat-green",children:"Access updated"}):null]}),children:e.jsxs("form",{className:"grid gap-0 lg:grid-cols-[1fr_1.1fr_0.85fr]",onSubmit:b,children:[e.jsxs("section",{className:"border-b border-border p-5 lg:border-r lg:border-b-0",children:[e.jsxs("div",{className:"mb-4 flex items-center gap-2",children:[e.jsx("span",{className:"grid size-6 place-items-center rounded-sm border border-border bg-neutral-50 text-xs font-semibold text-ink-muted",children:"1"}),e.jsx("h3",{className:"text-sm font-semibold text-ink",children:"Identify user"})]}),e.jsxs("label",{className:"grid gap-1.5",children:[e.jsx("span",{className:"text-xs font-semibold text-ink-muted",children:"User ID"}),e.jsx(X,{placeholder:"Example: 42",value:s,onChange:r=>t(r.target.value),className:"h-10 rounded bg-white text-ink",required:!0})]}),e.jsx("p",{className:"mt-3 text-xs leading-5 text-ink-soft",children:"Use the numeric ID from the users table or a user profile URL."})]}),e.jsxs("section",{className:"border-b border-border p-5 lg:border-r lg:border-b-0",children:[e.jsxs("div",{className:"mb-4 flex items-center gap-2",children:[e.jsx("span",{className:"grid size-6 place-items-center rounded-sm border border-border bg-neutral-50 text-xs font-semibold text-ink-muted",children:"2"}),e.jsx("h3",{className:"text-sm font-semibold text-ink",children:"Choose access"})]}),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsx(V,{title:"Admin",description:"Can operate day-to-day admin workflows.",selected:a==="admin",onSelect:()=>i("admin")}),e.jsx(V,{title:"Super admin",description:"Full access for senior operators.",selected:a==="super_admin",onSelect:()=>i("super_admin")})]})]}),e.jsxs("section",{className:"p-5",children:[e.jsxs("div",{className:"mb-4 flex items-center gap-2",children:[e.jsx("span",{className:"grid size-6 place-items-center rounded-sm border border-border bg-neutral-50 text-xs font-semibold text-ink-muted",children:"3"}),e.jsx("h3",{className:"text-sm font-semibold text-ink",children:"Apply change"})]}),e.jsxs("div",{className:"rounded border border-border bg-neutral-50 px-3 py-3",children:[e.jsx("p",{className:"text-xs font-semibold uppercase text-ink-muted",children:"Grant summary"}),e.jsxs("dl",{className:"mt-3 grid gap-2 text-sm",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("dt",{className:"text-ink-soft",children:"User"}),e.jsx("dd",{className:"font-mono text-xs font-semibold text-ink",children:s?.trim()||"Waiting for ID"})]}),e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx("dt",{className:"text-ink-soft",children:"Access"}),e.jsx("dd",{className:"font-semibold capitalize text-ink",children:a.replace("_"," ")})]})]})]}),e.jsxs(Q,{type:"submit",disabled:n.isPending||s?.trim().length===0,className:j(ee,"mt-4 h-10 w-full rounded shadow-none"),children:[e.jsx(me,{className:"size-4"}),n.isPending?"Granting access...":"Grant access"]}),e.jsx("p",{className:"mt-3 text-xs leading-5 text-ink-soft",children:"This updates admin access immediately for the selected user."}),n.isError?e.jsx("div",{className:"mt-4",children:e.jsx(L,{error:n.error})}):null]})]})}),e.jsx(pe,{query:l.q,placeholder:"Search by name, email, or ID...",onQueryChange:r=>p({q:r,page:1}),onClear:d,filters:e.jsxs(e.Fragment,{children:[e.jsx(E,{value:String(l.pageSize),defaultValue:"10",onChange:r=>p({pageSize:Number(r),page:1}),options:je(),icon:ue,label:"Page size"}),e.jsx(E,{value:l.role,onChange:r=>p({role:r,page:1}),options:se,icon:be,label:"Admin role"})]})}),x.isLoading?e.jsx(ve,{titleWidth:"w-16"}):null,x.isError?e.jsx(L,{error:x.error}):null,x.data?e.jsx(Ne,{title:"Admins",footer:e.jsx(fe,{page:l.page,totalPages:m,pageStart:f,pageEnd:N,total:u,itemLabel:"admins",onPageChange:r=>p({page:r})}),children:e.jsxs(le,{className:"[&_td:first-child]:w-24 [&_th:first-child]:w-24",children:[e.jsx(oe,{children:e.jsxs(z,{children:[e.jsx(k,{children:e.jsx(q,{label:"ID",onClick:()=>w("id")})}),e.jsx(k,{children:e.jsx(q,{label:"Admin Details",onClick:()=>w("name")}
1)}),e.jsx(k,{children:"Status"}),e.jsx(k,{children:"Role"})]})}),e.jsx(ne,{children:c.length===0?e.jsx(z,{className:"hover:bg-transparent",children:e.jsx(g,{colSpan:4,className:"px-5 py-12 text-center text-sm text-ink-soft",children:"No admins match your filters."})}):c.map(r=>e.jsx(_e,{admin:r,onView:y},r.id))})]})}):null,v?e.jsx(Ee,{admin:v,open:!0,onOpenChange:r=>{r||y(null)}}):null]})}function V({title:s,description:t,selected:a,onSelect:i}){return e.jsxs("button",{type:"button","aria-pressed":a,onClick:i,className:j("grid gap-2 rounded border p-3 text-left transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none",a?"border-stat-blue/30 bg-stat-blue-soft text-stat-blue":"border-border bg-white text-ink hover:border-border-strong hover:bg-neutral-50"),children:[e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:j("grid size-5 place-items-center rounded-full border",a?"border-stat-blue bg-stat-blue text-white":"border-border bg-white"),"aria-hidden":!0,children:a?e.jsx("span",{className:"size-1.5 rounded-full bg-white"}):null}),e.jsx("span",{className:"text-sm font-semibold",children:s})]}),e.jsx("span",{className:j("text-xs leading-5",a?"text-stat-blue":"text-ink-soft"),children:t})]})}function _e({admin:s,onView:t}){const a=C(s);return e.jsxs(z,{children:[e.jsx(g,{children:e.jsx("button",{type:"button",className:de,onClick:()=>t(s),children:s.id})}),e.jsx(g,{className:"whitespace-normal",children:e.jsxs("button",{type:"button",className:ce,onClick:()=>t(s),"aria-label":`Open ${a}`,children:[e.jsx("img",{className:"size-9 shrink-0 rounded-full object-cover",src:G(s.avatar),alt:""}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("strong",{className:"block truncate text-sm font-semibold text-ink group-hover:text-stat-blue",children:s.username||a}),e.jsx("span",{className:"block truncate text-xs text-ink-soft",children:s.email})]})]})}),e.jsx(g,{className:"whitespace-normal",children:e.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[O(s)?e.jsx(S,{label:"Active",tone:"active"}):null,H(s)?e.jsx(S,{label:"Verified",tone:"verified"}):null]})}),e.jsx(g,{children:e.jsx(T,{children:K(s).replace("_"," ")})})]})}function Ee({admin:s,open:t,onOpenChange:a}){const i=C(s),l=s.adminRole.replace("_"," "),c=K(s).replace("_"," ");return e.jsx(ye,{open:t,onOpenChange:a,children:e.jsxs(we,{className:"overflow-hidden p-0 sm:max-w-2xl",children:[e.jsxs(ke,{className:"border-b border-border bg-white px-6 py-5 pr-14",children:[e.jsx(Ae,{className:"text-lg font-semibold text-ink",children:"Admin profile"}),e.jsx(Se,{children:"Review operator identity, access level, and account status."})]}),e.jsx("section",{className:"border-b border-border bg-fairway-deep px-6 py-5 text-white",children:e.jsxs("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-4",children:[e.jsx("img",{className:"size-16 shrink-0 rounded-full border border-white/10 object-cover",src:G(s.avatar),alt:""}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[11px] font-semibold uppercase text-accent",children:"Admin operator"}),e.jsx("h3",{className:"mt-1 truncate text-xl font-semibold text-white",children:s.username||i}),e.jsx("p",{className:"mt-1 truncate text-sm text-white/60",children:s.email})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 sm:justify-end",children:[e.jsx("span",{className:"rounded-sm border border-white/10 bg-white/5 px-2.5 py-1 text-xs font-medium capitalize text-white/75",children:l}),s.verifiedPro?e.jsx("span",{className:"rounded-sm border border-accent/30 bg-accent/10 px-2.5 py-1 text-xs font-medium text-accent",children:"Verified pro"}):null]})]})}),e.jsxs("section",{className:"grid border-b border-border bg-white md:grid-cols-3",children:[e.jsx(R,{icon:Te,label:"Admin role",value:l,className:"border-b border-border md:border-r md:border-b-0"}),e.jsx(R,{icon:ze,label:"Created",value:_(s.createdAt),className:"border-b border-border md:border-r md:border-b-0"}),e.jsx(R,{icon:Pe,label:"Email",value:s.email})]}),e.jsxs("div",{className:"grid gap-5 bg-surface px-6 py-5 md:grid-cols-[1fr_0.85fr]",children:[e.jsxs("section",{className:"rounded border border-border bg-white",children:[e.jsx("div",{className:"border-b border-border px-4 py-3",children:e.jsx("h4",{className:"text-sm font-semibold text-ink",children:"Identity"})}),e.jsxs("dl",{className:"grid gap-3 p-4",children:[e.jsx(o,{label:"ID",value:s.id}),e.jsx(o,{label:"Name",value:s.name||"-"}),e.jsx(o,{label:"Username",value:s.username||"-"}),e.jsx(o,{label:"Handle",value:s.handle||"-"}),e.jsx(o,{label:"Email",value:s.email}),e.jsx(o,{label:"Product role",value:e.jsx(T,{children:c})})]})]}),e.jsxs("section",{className:"rounded border border-border bg-white",children:[e.jsx("div",{className:"border-b border-border px-4 py-3",children:e.jsx("h4",{className:"text-sm font-semibold text-ink",children:"Access"})}),e.jsxs("div",{className:"grid gap-4 p-4",children:[e.jsxs("div",{className:"flex flex-wrap gap-2",children:[O(s)?e.jsx(S,{label:"Active",tone:"active"}):null,H(s)?e.jsx(S,{label:"Verified",tone:"verified"}):null,e.jsx(T,{children:l})]}),e.jsxs("dl",{className:"grid gap-3",children:[e.jsx(o,{label:"Approval",value:s.approvalStatus}),e.jsx(o,{label:"Verification",value:s.verificationStatus}),e.jsx(o,{label:"Verified pro",value:s.verifiedPro?"Yes":"No"}),e.jsx(o,{label:"Updated",value:_(s.updatedAt)})]}),e.jsxs(Q,{variant:"outline",className:"h-9 w-full rounded shadow-none",render:e.jsx(re,{to:"/ops-vault/users/$userId",params:{userId:s.id}}),children:[e.jsx(te,{className:"size-4"}),"Open user record"]})]})]})]})]})})}function R({icon:s,label:t,value:a,className:i}){return e.jsxs("div",{className:j("flex min-w-0 items-center gap-3 px-5 py-4",i),children:[e.jsx("div",{className:"grid size-9 shrink-0 place-items-center rounded bg-stat-blue-soft text-stat-blue",children:e.jsx(s,{className:"size-4"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[11px] font-semibold uppercase text-ink-muted",children:t}),e.jsx("p",{className:"mt-1 truncate text-sm font-medium text-ink",children:a})]})]})}export{Ks as component};

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.