1import{r as w,j as e}from"./react-DdohInYl.js";import{u as Y}from"./client-state-B87OZatm.js";import{b as J,i as K,e as X,f as q,L as Q,C as W,D as Z,g as ee,R as se,h as te}from"./format-relative-time-DWLBd-gz.js";import{B as n,I as ae,T as re,aH as le,aI as ie,aJ as ne,c as de,bF as ce,bG as oe,bH as xe,bI as g,S as me,f as pe,g as he,i as ge,j as je}from"./index-JMlbVkbf.js";import{T as ue,a as be,b as d,c as i,d as fe,e as a}from"./table-Dq7jV-hE.js";import{A as Ne}from"./AuditTrailDialog-DB-m5ZZN.js";import{S as ve,L as C,F as ke,U as ye,bn as we,a5 as Ce,bo as Te,bp as Ie}from"./ui-Lc0_U7kl.js";import{u as T,f as Se}from"./format-Cs11E_6U.js";import"./state-CqDWEXGQ.js";import"./useClientApi-Dp8fnhQk.js";import"./form-B0qNJ6Z8.js";import"./users-api-BtuQ--8o.js";import"./useClientAdmin-BefOatuJ.js";import"./client-admin-api-I0H4ApzW.js";import"./keys-wArLlf7E.js";import"./useAuthorizedClients-BpPzTgI1.js";import"./gql-BD4E0enk.js";import"./addMonths-D5VNhrkF.js";import"./graphql-CNcS3FKT.js";import"./radix-CQR8bHqs.js";import"./CompactAuditEntry-Bz7JQOu6.js";import"./formatDistanceToNow-BdhDf-5T.js";import"./differenceInCalendarMonths-DGkqwrqK.js";import"./endOfMonth-BgjfydBZ.js";function Ze(){const{globalConfigFilterClientName:r}=Y(),{searchTerm:j,statusFilter:u,currentPage:l,pageSize:c,setSearchTerm:I,setStatusFilter:S,setClientFilter:o,setIsCreateUserOpen:U,setIsEditMode:D,setEditingUserId:A,setCurrentPage:x,setPageSize:E,setDeleteDialogOpen:M,setUserToDelete:R,setResetPasswordDialogOpen:P,setUserToResetPassword:L,setReactivateDialogOpen:$,setUserToReactivate:F,setNewUser:O}=J();w.useEffect(()=>(o(r||"All Clients"),()=>{o("All Clients")}),[r,o]);const N=w.useMemo(()=>({status:u,search:j,client:r||void 0}),[u,j,r]),{data:m=[],isLoading:v,isError:V}=K(N),b=X(),z=()=>{b.mutate({filters:N,clientName:r||""})},f=s=>{setTimeout(()=>{O(te(s)),D(!0),A(s.id),U(!0)},0)},B=s=>{setTimeout(()=>{R(s),M(!0)},0)},_=s=>{setTimeout(()=>{L(s),P(!0)},0)},H=s=>{setTimeout(()=>{F(s),$(!0)},0)},G=s=>{switch(s){case"Active":return e.jsx(Ie,{className:"w-4 h-4"});case"Inactive":return e.jsx(Te,{className:"w-4 h-4"});default:return e.jsx(Ce,{className:"w-4 h-4"})}},p=Math.ceil(m.length/c),k=(l-1)*c,y=m.slice(k,k+c);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-primary-foreground",children:"User Management"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r?`Manage users assigned to ${r}`:"Centralized control of user information and system access"})]}),e.jsxs("div",{className:"flex gap-2 items-center",children:[["All","Active","Inactive"].map(s=>e.jsxs(n,{size:"sm",variant:u===s?"default":"outline",onClick:()=>S(s),children:[G(s)," ",s]},s)),e.jsx("div",{className:"ml-2 border-l border-slate-200 pl-2",children:e.jsx(Ne,{entityType:"user",title:"User Management - Audit Trail",variant:"outline"})})]})]}),e.jsxs("div",{className:"flex flex-wrap justify-between gap-4 items-stretch w-full border border-slate-200 p-3 md:p-5 bg-white rounded-2xl shadow-sm",children:[e.jsx("div",{className:"flex flex-wrap gap-3 flex-1 min-w-0",children:e.jsxs("div",{className:"relative flex-1 min-w-0 sm:min-w-[200px]",children:[e.jsx(ve,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-slate-600"}),e.jsx(ae,{placeholder:"Search user by name or email",value:j,onChange:s=>I(s.target.value),className:"pl-10 w-full"})]})}),e.jsx("div",{className:"flex flex-wrap gap-2 justify-end min-w-[320px]",children:e.jsxs(n,{variant:"outline",onClick:z,disabled:v||m.length===0||b.isPending,children:[b.isPending?e.jsx(C,{className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(ke,{className:"w-4 h-4 mr-2"}),"Export CSV"]})})]}),e.jsx("div",{className:"bg-card backdrop-blur-sm overflow-hidden",children:e.jsx("div",{className:"responsive-table",children:e.jsxs(ue,{className:"border border-slate-200 dark:border-slate-700",children:[e.jsx(be,{children:e.jsxs(d,{children:[e.jsx(i,{className:"font-semibold text-primary dark:text-foreground",children:"NAME"}),e.jsx(i,{className:"font-semibold text-primary dark:text-foreground",children:"EMAIL"}),e.jsx(i,{className:"font-semibold text-primary dark:text-foreground hidden lg:table-cell",children:"CLIENTS"}),e.jsx(i,{className:"font-semibold text-primary dark:text-foreground hidden md:table-cell",children:"PERSONA"}),e.jsx(i,{className:"font-semibold text-primary dark:text-foreground",children:"STATUS"}),e.jsx(i,{className:"font-semibold text-primary dark:text-foreground hidden lg:table-cell",children:"LAST ACTIVITY"}),e.jsx(i,{className:"font-semibold text-primary dark:text-foreground",children:"ACTIONS"})]})}),e.jsx(fe,{children:v?e.jsx(d,{children:e.jsx(a,{colSpan:7,className:"text-center py-8",children:e.jsxs("div",{className:"flex items-center justify-center gap-2",children:[e.jsx(C,{className:"w-5 h-5 animate-spin"}),"Loading users..."]})})}):V?e.jsx(d,{children:e.jsx(a,{colSpan:7,className:"text-center py-8 text-red-500",children:"Failed to load users. Please try again."})}):y.length===0?e.jsx(d,{children:e.jsx(a,{colSpan:7,className:"text-center py-8 text-slate-600",children:"No users found"})}):y.map(s=>{var h;return e.jsxs(d,{role:"button",tabIndex:0,"aria-label":`Edit user ${s.name}
1`,className:`cursor-pointer hover:bg-slate-50/50 dark:hover:bg-slate-800/50 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset ${s.status==="Inactive"?"opacity-60 bg-slate-50/30 dark:bg-slate-800/30":""}`,onClick:()=>f(s),onKeyDown:t=>{(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),f(s))},children:[e.jsx(a,{className:`font-medium ${s.status==="Inactive"?"text-slate-600 dark:text-slate-600":""}`,children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-8 h-8 bg-primary rounded-full flex items-center justify-center",children:e.jsx(ye,{className:"w-4 h-4 text-white"})}),s.name]})}),e.jsx(a,{className:s.status==="Inactive"?"text-slate-600 dark:text-slate-600":"text-slate-600 dark:text-slate-300",children:s.email}),e.jsx(a,{className:`hidden lg:table-cell ${s.status==="Inactive"?"text-slate-600 dark:text-slate-600":"text-slate-600 dark:text-slate-300"}`,children:e.jsx("div",{className:"flex flex-wrap gap-1",children:e.jsx(re,{children:e.jsxs(le,{delayDuration:200,children:[e.jsx(ie,{asChild:!0,children:e.jsxs("p",{className:"text-sm",children:[e.jsx("strong",{children:(h=s.clients)==null?void 0:h.length})," ","Client(s)"]})}),e.jsx(ne,{side:"top",align:"center",sideOffset:5,className:"bg-transparent border-none shadow-none",children:Array.isArray(s.clients)?s.clients.map(t=>e.jsx("span",{className:`text-xs px-2 py-1 ml-1 rounded-full ${s.status==="Inactive"?"bg-slate-100 text-slate-600 dark:bg-slate-700 dark:text-slate-300":"bg-primary/10 text-primary dark:bg-primary/20 dark:text-primary-foreground"}`,children:t},t)):e.jsx("span",{className:`text-xs px-2 py-1 rounded-full ${s.status==="Inactive"?"bg-slate-100 text-slate-600 dark:bg-slate-700 dark:text-slate-300":"bg-brand-muted text-brand-primary dark:bg-brand-primary dark:text-brand-border"}`,children:s.clients})})]})})})}),e.jsx(a,{className:"hidden md:table-cell",children:s.persona?e.jsx(de,{variant:"secondary",className:`text-xs px-2 py-1 rounded-full font-medium ${s.status==="Inactive"?"bg-slate-100 text-slate-600 border-slate-200 dark:bg-slate-700 dark:text-slate-300 dark:border-slate-600":"bg-purple-100 text-purple-800 border-purple-200 dark:bg-purple-900 dark:text-purple-200 dark:border-purple-700"}`,children:s.persona}):e.jsx("p",{children:"-"})}),e.jsx(a,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:`w-2 h-2 rounded-full ${s.status==="Inactive"?"bg-red-500":"bg-green-500"}`}),e.jsx("span",{className:`text-sm ${s.status==="Inactive"?"text-red-700 dark:text-red-400":"text-slate-600 dark:text-slate-300"}`,children:s.status})]})}),e.jsx(a,{className:`hidden lg:table-cell ${s.status==="Inactive"?"text-slate-600 dark:text-slate-600":"text-slate-600 dark:text-slate-300"}`,children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"text-sm",children:T(new Date(s.lastActivity))?Se(new Date(s.lastActivity),"MMM dd, yyyy"):"Invalid Date"}),e.jsx("span",{className:"text-xs text-slate-600 dark:text-slate-600",children:T(new Date(s.lastActivity))?q(new Date(s.lastActivity),Q):""})]})}),e.jsx(a,{children:e.jsxs(ce,{children:[e.jsx(oe,{asChild:!0,children:e.jsx(n,{variant:"ghost",className:"h-8 w-8 p-0",onClick:t=>t.stopPropagation(),children:e.jsx(we,{className:"h-4 w-4"})})}),e.jsxs(xe,{align:"end",onClick:t=>t.stopPropagation(),children:[e.jsx(g,{className:"text-green-700 dark:text-green-400",onClick:()=>f(s),children:"Edit User"}),e.jsx(g,{onClick:()=>_(s),children:"Reset Password"}),s.status==="Inactive"?e.jsx(g,{className:"text-green-700 dark:text-green-400",onClick:()=>H(s),children:"Reactivate User"}):e.jsx(g,{className:"text-red-700 dark:text-red-400",onClick:()=>B(s),children:"Deactivate User"})]})]})})]},s.id)})})]})})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4",children:[e.jsxs("div",{className:"text-sm font-medium",children:["Displayed Records: ",m.length]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(n,{variant:"outline",size:"sm",onClick:()=>x(Math.max(1,l-1)),disabled:l===1,className:"w-8 h-8 p-0 backdrop-blur-sm",children:"â¹"}),[...Array(Math.min(5,p))].map((s,h)=>{const t=h+1;return e.jsx(n,{variant:l===t?"default":"outline",size:"sm",onClick:()=>x(t),className:`w-8 h-8 p-0 ${l===t?"bg-primary":"backdrop-blur-sm"}`,children:t},t)}),e.jsx(n,{variant:"outline",size:"sm",onClick:()=>x(Math.min(p,l+1)),disabled:l===p||p===0,className:"w-8 h-8 p-0 backdrop-blur-sm",children:"âº"})]}),e.jsxs(me,{value:String(c),onValueChange:s=>{E(Number(s)),x(1)},children:[e.jsx(pe,{className:"w-[100px]",children:e.jsx(he,{})}),e.jsx(ge,{children:[10,25,50].map(s=>e.jsxs(je,{value:String(s),children:[s," / page"]},s))})]})]}),e.jsx(W,{}),e.jsx(Z,{}),e.jsx(ee,{}),e.jsx(se,{})]})}
1export{Ze 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.