1import{K as ee,r as T,_ as se,a5 as ae,a as y,a6 as te,j as e,B as w,bS as S,C as t,b as m,d as o,U as re,e as l,bh as M,bt as O,V as ie,q as R,X as le,c_ as K,v as ne,E as ce,bJ as de,s as p,f as xe,a4 as D}from"./index-CuSEeJFb.js";import{T as me,a as oe,b as C,c as L}from"./tabs-CcPOXtvT.js";import{U as H}from"./user-plus-Bycr7F9K.js";import{U as he}from"./upload-rep3KVPL.js";/** 2 * @license lucide-react v0.453.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const z=ee("UserMinus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]),ue=()=>{var P,q,E,F,B,_,I,$;const[g,r]=T.useState("overview"),[h,u]=T.useState(30),{toast:v}=se();ae();const{data:c,isLoading:J}=y({queryKey:["/api/user-management/analytics-summary"],queryFn:async()=>{const s=await fetch("/api/user-management/analytics-summary",{credentials:"include"});if(!s.ok)throw new Error("Failed to fetch analytics summary");return s.json()}}),{data:A,isLoading:V}=y({queryKey:["/api/user-management/activity-heatmap",h],queryFn:async()=>{const s=await fetch(`/api/user-management/activity-heatmap?days=${h}`,{credentials:"include"});if(!s.ok)throw new Error("Failed to fetch activity heatmap");return s.json()}}),{data:x,isLoading:Y}=y({queryKey:["/api/user-management/permission-conflicts"],queryFn:async()=>{const s=await fetch("/api/user-management/permission-conflicts",{credentials:"include"});if(!s.ok)throw new Error("Failed to fetch permission conflicts");return s.json()}}),{data:j,isLoading:Q}=y({queryKey:["/api/user-management/unused-permissions"],queryFn:async()=>{const s=await fetch("/api/user-management/unused-permissions",{credentials:"include"});if(!s.ok)throw new Error("Failed to fetch unused permissions");return s.json()}}),{data:U,isLoading:G}=y({queryKey:["/api/user-management/company-distribution"],queryFn:async()=>{const s=await fetch("/api/user-management/company-distribution",{credentials:"include"});if(!s.ok)throw new Error("Failed to fetch company distribution");return s.json()}}),{data:n,isLoading:pe}=y({queryKey:["/api/user-management/bulk-stats",h],queryFn:async()=>{const s=await fetch(`/api/user-management/bulk-stats?days=${h}`,{credentials:"include"});if(!s.ok)throw new Error("Failed to fetch bulk stats");return s.json()}}),k=te({mutationFn:async s=>{const a=new URLSearchParams;s.userIds&&a.append("userIds",s.userIds.join(",")),s.includeInactive&&a.append("includeInactive","true");const i=await fetch(`/api/user-management/export?${a}`,{credentials:"include"});if(!i.ok)throw new Error("Failed to export users");const d=await i.json(),N=new Blob([JSON.stringify(d,null,2)],{type:"application/json"}),f=URL.createObjectURL(N),b=document.createElement("a");return b.href=f,b.download=`user-permissions-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(b),b.click(),document.body.removeChild(b),URL.revokeObjectURL(f),d},onSuccess:()=>{v({title:"Export Successful",description:"User permissions exported successfully."})},onError:s=>{v({title:"Export Failed",description:s.message,variant:"destructive"})}}),W=({data:s})=>{if(!(s!=null&&s.length))return e.jsx("div",{className:"p-4 text-center text-gray-500",children:"No activity data available"});const a=Math.max(...s.flatMap(i=>i.dailyActivity.map(d=>d.activityCount)));return e.jsx("div",{className:"space-y-4",children:s.slice(0,10).map(i=>e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"font-medium",children:i.userName}),e.jsxs(p,{variant:"outline",children:[i.totalActivity," total"]})]}),e.jsx("div",{className:"flex gap-1",children:i.dailyActivity.map((d,N)=>{const f=a>0?d.activityCount/a*100:0;return e.jsx("div",{className:"w-3 h-3 rounded-sm border border-gray-200 dark:border-gray-700",style:{backgroundColor:f>0?`rgba(34, 197, 94, ${Math.max(.1,f/100)})`:"transparent"},title:`${d.date}: ${d.activityCount} activities`},N)})})]},i.userId))})},X=({conflicts:s})=>{if(!(s!=null&&s.length))return e.jsx("div",{className:"p-4 text-center text-gray-500",children:"No conflicts detected"});const a={high:"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200",medium:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200",low:"bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200"};return e.jsx("div",{className:"space-y-4",children:s.slice(0,10).map(i=>e.jsxs(t,{className:"p-4",children:[e.jsxs("div",{className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:i.userName}),e.jsx("div",{className:"text-sm text-gray-600 dark:text-gray-400",children:i.email})]}),e.jsxs(p,{className:"ml-2",children:[i.conflicts.length," conflicts"]})]}),e.jsx("div",{className:"space-y-2",children:i.conflicts.map((d,N)=>e.jsxs("div",{className:"p-2 rounded border border-gray-200 dark:border-gray-700",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(p,{className:a[d.severity],children:d.severity}),e.jsx("span",{className:"text-sm font-medium capitalize",children:d.type.replace(/_/g," ")})]}),e.jsx("div",{className:"text-sm text-gray-600 dark:text-gray-400 mb-1",children:d.description}),e.jsxs("div",{className:"text-sm text-green-600 dark:text-green-400",children:["ð¡ ",d.recommendation]})]},N))})]},i.userId))})},Z=({data:s})=>s!=null&&s.length?(s.reduce((a,i)=>a+i.userCount,0),e.jsx("div",{className:"space-y-4",children:s.slice(0,8).map(a=>e.jsxs(t,{className:"p-4",children:[e.jsxs("div",{className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:a.companyName}),e.jsx("div",{className:"text-sm text-gray-600 dark:text-gray-400 capitalize",children:a.companyType})]}),e.jsxs(p,{variant:"outline",children:[a.userCount," users"]})]}),e.jsxs("div",{className:"mb-3",children:[e.jsx("div",{className:"text-sm font-medium mb-1",children:"Access Levels"}),e.jsxs("div",{className:"flex h-6 rounded-md overflow-hidden border border-gray-200 dark:border-gray-700",children:[e.jsx("div",{className:"bg-green-500",style:{width:`${a.accessLevels.full/a.userCount*100}%`},title:`${a.accessLevels.full} full access`}),e.jsx("div",{className:"bg-yellow-500",style:{width:`${a.accessLevels.campaigns_only/a.userCount*100}%`},title:`${a.accessLevels.campaigns_only} campaigns only`}),e.jsx("div",{className:"bg-blue-500",style:{width:`${a.accessLevels.view_only/a.userCount*100}%`},title:`${a.accessLevels.view_only} view only`})]}),e.jsxs("div",{className:"flex justify-between text-xs text-gray-500 mt-1",children:[e.jsxs("span",{children:["Full: ",a.accessLevels.full]}),e.jsxs("span",{children:["Campaigns: ",a.accessLevels.campaigns_only]}),e.jsxs("span",{children:["View: ",a.accessLevels.view_only]})]})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(R,{className:"w-4 h-4"}),e.jsxs("span",{children:["Activity Score: ",a.activityScore]}),a.activityScore>10&&e.jsx(p,{variant:"outline",className:"text-green-600",children:"Active"})]})]},a.companyId))})):e.jsx("div",{className:"p-4 text-center text-gray-500",children:"No company data available"});return J?e.jsx("div",{className:"p-6 space-y-4",children:e.jsxs("div",{className:"animate-pulse space-y-4",children:[e.jsx("div",{className:"h-8 bg-gray-200 rounded w-1/3"}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[...Array(4)].map((s,a)=>e.jsx("div",{className:"h-24 bg-gray-200 rounded"},a))})]})}
6):e.jsxs("div",{className:"p-6 max-w-7xl mx-auto space-y-6","data-testid":"advanced-user-dashboard",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 dark:text-gray-100",children:"Advanced User Management"}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"Comprehensive team analytics, permission management, and bulk operations"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("select",{value:h,onChange:s=>u(Number(s.target.value)),className:"px-3 py-2 border border-gray-300 rounded-md dark:border-gray-600 dark:bg-gray-800",children:[e.jsx("option",{value:7,children:"Last 7 days"}),e.jsx("option",{value:30,children:"Last 30 days"}),e.jsx("option",{value:90,children:"Last 90 days"})]}),e.jsxs(w,{onClick:()=>k.mutate({includeInactive:!1}),disabled:k.isPending,variant:"outline",className:"flex items-center gap-2","data-testid":"button-export-users",children:[e.jsx(S,{className:"w-4 h-4"}),"Export Users"]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsxs(t,{children:[e.jsxs(m,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(o,{className:"text-sm font-medium",children:"Total Users"}),e.jsx(re,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(l,{children:[e.jsx("div",{className:"text-2xl font-bold",children:(c==null?void 0:c.totalUsers)||0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Active team members"})]})]}),e.jsxs(t,{children:[e.jsxs(m,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(o,{className:"text-sm font-medium",children:"Company Assignments"}),e.jsx(M,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(l,{children:[e.jsx("div",{className:"text-2xl font-bold",children:(c==null?void 0:c.totalCompanyAssignments)||0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Total assignments"})]})]}),e.jsxs(t,{children:[e.jsxs(m,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(o,{className:"text-sm font-medium",children:"Permission Changes"}),e.jsx(O,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(l,{children:[e.jsx("div",{className:"text-2xl font-bold",children:(c==null?void 0:c.totalPermissionChanges)||0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"All time"})]})]}),e.jsxs(t,{children:[e.jsxs(m,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(o,{className:"text-sm font-medium",children:"Recent Activity"}),e.jsx(ie,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(l,{children:[e.jsx("div",{className:"text-2xl font-bold",children:(c==null?void 0:c.recentActivity)||0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Last 7 days"})]})]})]}),e.jsxs(me,{value:g,onValueChange:r,className:"space-y-4",children:[e.jsxs(oe,{className:"grid w-full grid-cols-4",children:[e.jsx(C,{value:"overview","data-testid":"tab-overview",children:"Team Overview"}),e.jsx(C,{value:"conflicts","data-testid":"tab-conflicts",children:"Conflicts"}),e.jsx(C,{value:"cleanup","data-testid":"tab-cleanup",children:"Cleanup"}),e.jsx(C,{value:"bulk","data-testid":"tab-bulk",children:"Bulk Operations"})]}),e.jsx(L,{value:"overview",className:"space-y-6",children:e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsxs(t,{children:[e.jsx(m,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(R,{className:"w-5 h-5"}),"User Activity Heatmap"]})}),e.jsx(l,{children:V?e.jsx("div",{className:"animate-pulse space-y-2",children:[...Array(5)].map((s,a)=>e.jsx("div",{className:"h-12 bg-gray-200 rounded"},a))}):e.jsx(W,{data:(A==null?void 0:A.heatmapData)||[]})})]}),e.jsxs(t,{children:[e.jsx(m,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(le,{className:"w-5 h-5"}),"Company Access Distribution"]})}),e.jsx(l,{children:G?e.jsx("div",{className:"animate-pulse space-y-2",children:[...Array(4)].map((s,a)=>e.jsx("div",{className:"h-16 bg-gray-200 rounded"},a))}):e.jsx(Z,{data:(U==null?void 0:U.distribution)||[]})})]})]})}),e.jsxs(L,{value:"conflicts",className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4 mb-6",children:[e.jsx(t,{children:e.jsx(l,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-red-600",children:((q=(P=x==null?void 0:x.summary)==null?void 0:P.severityBreakdown)==null?void 0:q.high)||0}),e.jsx("p",{className:"text-sm text-gray-600",children:"High Priority"})]}),e.jsx(K,{className:"w-8 h-8 text-red-500"})]})})}),e.jsx(t,{children:e.jsx(l,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-yellow-600",children:((F=(E=x==null?void 0:x.summary)==null?void 0:E.severityBreakdown)==null?void 0:F.medium)||0}),e.jsx("p",{className:"text-sm text-gray-600",children:"Medium Priority"})]}),e.jsx(ne,{className:"w-8 h-8 text-yellow-500"})]})})}),e.jsx(t,{children:e.jsx(l,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-blue-600",children:((_=(B=x==null?void 0:x.summary)==null?void 0:B.severityBreakdown)==null?void 0:_.low)||0}),e.jsx("p",{className:"text-sm text-gray-600",children:"Low Priority"})]}),e.jsx(ce,{className:"w-8 h-8 text-blue-500"})]})})})]}),e.jsxs(t,{children:[e.jsx(m,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(K,{className:"w-5 h-5 text-red-500"}),"Permission Conflicts"]})}),e.jsx(l,{children:Y?e.jsx("div",{className:"animate-pulse space-y-4",children:[...Array(3)].map((s,a)=>e.jsx("div",{className:"h-24 bg-gray-200 rounded"},a))}):e.jsx(X,{conflicts:(x==null?void 0:x.conflicts)||[]})})]})]}),e.jsx(L,{value:"cleanup",className:"space-y-6",children:e.jsxs(t,{children:[e.jsx(m,{children:e.jsxs(o,{className:"flex items-center gap-2",children:[e.jsx(de,{className:"w-5 h-5"}),"Unused Permission Cleanup"]})}),e.jsx(l,{children:Q?e.jsx("div",{className:"animate-pulse space-y-4",children:[...Array(5)].map((s,a)=>e.jsx("div",{className:"h-16 bg-gray-200 rounded"},a))}):((I=j==null?void 0:j.suggestions)==null?void 0:I.length)>
60?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-4 mb-6",children:[e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-2xl font-bold text-red-600",children:j.summary.recommendationBreakdown.remove}),e.jsx("div",{className:"text-sm text-gray-600",children:"Remove"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-2xl font-bold text-yellow-600",children:j.summary.recommendationBreakdown.consolidate}),e.jsx("div",{className:"text-sm text-gray-600",children:"Consolidate"})]}),e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"text-2xl font-bold text-blue-600",children:j.summary.recommendationBreakdown.review}),e.jsx("div",{className:"text-sm text-gray-600",children:"Review"})]})]}),j.suggestions.slice(0,10).map((s,a)=>e.jsx(t,{className:"p-4",children:e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("code",{className:"px-2 py-1 bg-gray-100 dark:bg-gray-800 rounded text-sm",children:s.permission}),e.jsx(p,{className:s.recommendation==="remove"?"bg-red-100 text-red-800":s.recommendation==="consolidate"?"bg-yellow-100 text-yellow-800":"bg-blue-100 text-blue-800",children:s.recommendation})]}),e.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-2",children:s.description}),e.jsxs("div",{className:"flex items-center gap-4 text-sm text-gray-500",children:[e.jsxs("span",{children:[s.usersWithPermission," users"]}),s.lastUsed&&e.jsxs("span",{children:["Last used: ",new Date(s.lastUsed).toLocaleDateString()]})]})]})})},a))]}):e.jsxs("div",{className:"text-center py-8 text-gray-500",children:[e.jsx(xe,{className:"w-12 h-12 mx-auto mb-4 text-green-500"}),e.jsx("p",{children:"No unused permissions found. Your permission system is optimized!"})]})})]})}),e.jsxs(L,{value:"bulk",className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsx(t,{children:e.jsx(l,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-green-600",children:(n==null?void 0:n.usersCreated)||0}),e.jsx("p",{className:"text-sm text-gray-600",children:"Users Created"})]}),e.jsx(H,{className:"w-8 h-8 text-green-500"})]})})}),e.jsx(t,{children:e.jsx(l,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-red-600",children:(n==null?void 0:n.usersDeactivated)||0}),e.jsx("p",{className:"text-sm text-gray-600",children:"Users Deactivated"})]}),e.jsx(z,{className:"w-8 h-8 text-red-500"})]})})}),e.jsx(t,{children:e.jsx(l,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-blue-600",children:(n==null?void 0:n.permissionChanges)||0}),e.jsx("p",{className:"text-sm text-gray-600",children:"Permission Changes"})]}),e.jsx(O,{className:"w-8 h-8 text-blue-500"})]})})}),e.jsx(t,{children:e.jsx(l,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-2xl font-bold text-purple-600",children:(n==null?void 0:n.companyAssignments)||0}),e.jsx("p",{className:"text-sm text-gray-600",children:"Company Assignments"})]}),e.jsx(M,{className:"w-8 h-8 text-purple-500"})]})})})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsxs(t,{children:[e.jsx(m,{children:e.jsx(o,{children:"User Templates"})}),e.jsx(l,{children:(($=n==null?void 0:n.templates)==null?void 0:$.length)>0?e.jsx("div",{className:"space-y-3",children:n.templates.map(s=>e.jsxs("div",{className:"p-3 border border-gray-200 dark:border-gray-700 rounded-md",children:[e.jsx("div",{className:"font-medium",children:s.name}),e.jsx("div",{className:"text-sm text-gray-600 dark:text-gray-400 mt-1",children:s.description}),e.jsxs("div",{className:"flex items-center gap-2 mt-2",children:[e.jsx(p,{variant:"outline",children:s.role}),e.jsxs("span",{className:"text-xs text-gray-500",children:[s.permissions.length," permissions"]})]})]},s.id))}):e.jsx("div",{className:"text-center py-4 text-gray-500",children:"No templates available"})})]}),e.jsxs(t,{children:[e.jsx(m,{children:e.jsx(o,{children:"Bulk Operations"})}),e.jsxs(l,{className:"space-y-3",children:[e.jsxs(w,{variant:"outline",className:"w-full justify-start","data-testid":"button-bulk-create",children:[e.jsx(H,{className:"w-4 h-4 mr-2"}),"Bulk Create Users"]}),e.jsxs(w,{variant:"outline",className:"w-full justify-start",onClick:()=>k.mutate({includeInactive:!0}),disabled:k.isPending,"data-testid":"button-bulk-export",children:[e.jsx(S,{className:"w-4 h-4 mr-2"}),"Export All Users"]}),e.jsxs(w,{variant:"outline",className:"w-full justify-start","data-testid":"button-bulk-import",children:[e.jsx(he,{className:"w-4 h-4 mr-2"}),"Import Users"]}),e.jsxs(w,{variant:"outline",className:"w-full justify-start text-red-600 hover:text-red-700","data-testid":"button-bulk-deactivate",children:[e.jsx(z,{className:"w-4 h-4 mr-2"}),"Bulk Deactivate"]})]})]})]})]})]})]})},je=g=>{const{data:r,isLoading:h,error:u}=y({queryKey:["/api/permissions/check-tier",g],queryFn:async()=>{const v=await fetch("/api/permissions/check-tier",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({permission:g}),credentials:"include"});if(!v.ok){const c=await v.json();throw new Error(c.message||"Permission check failed")}return v.json()},retry:!1,staleTime:3e5});return{hasAccess:(r==null?void 0:r.hasAccess)??!1,subscriptionAccess:(r==null?void 0:r.subscriptionAccess)??!1,userPermission:(r==null?void 0:r.userPermission)??!1,isLoading:h,error:u==null?void 0:u.message,requiresUpgrade:(r==null?void 0:r.subscriptionAccess)===!1,requiresPermission:(r==null?void 0:r.userPermission)===!1}};function fe(){const{isLoading:g,hasAccess:r,requiresUpgrade:h,requiresPermission:u}=je("users.manage");return g?e.jsx("div",{className:"flex items-center justify-center min-h-screen","data-testid":"loading-spinner",children:e.jsx(D,{className:"w-8 h-8 animate-spin text-gray-500"})}):r?e.jsx(T.Suspense,{fallback:e.jsx("div",{className:"flex items-center justify-center min-h-screen","data-testid":"loading-spinner",children:e.jsx(D,{className:"w-8 h-8 animate-spin text-gray-500"})}),children:e.jsx(ue,{})}):e.jsx("div",{className:"flex items-center justify-center min-h-screen",children:e.jsxs("div",{className:"text-center p-6 max-w-md",children:[e.jsx("h2",{className:"text-xl font-semibold mb-4",children:"Access Denied"}),h&&e.jsx("p",{className:"text-gray-600 mb-4",children:"Your subscription plan doesn't include user management features. Please upgrade to access this page."}),u&&e.jsx("p",{className:"text-gray-600 mb-4",children:"You don't have permission to manage users. Contact your administrator for access."})]})})}export{fe 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.