PageSourceSearch

https://lifecv-d2724.web.app/assets/AdminPanel-BYZgWArO.js

js lifecv-d2724.web.app collected 2026-10-03 12:29:42 UTC 19,862 bytes, 2 lines download raw bytes

1import{t as D}from"./activity-C5ZaPIhi.js";import{t as te}from"./ban-Ykop3uRS.js";import{t as H}from"./check-circle-gp5pVP1b.js";import{t as se}from"./chevron-up-CPtc3-gw.js";import{t as ae}from"./download-D-Rr4kON.js";import{t as re}from"./pen-square-pN9hTFbV.js";import{t as ie}from"./search-Fe9hJ7cP.js";import{t as $}from"./trash-2-BPQivBb_.js";import{t as N}from"./users-CRspHWou.js";import{F as O,Ft as ne,I as le,It as w,Lt as S,N as A,P as oe,Pt as V,Rt as L,Wr as j,dt as de,pi as ce,pt as xe,rn as h,rt as me,st as ge,yi as ue}from"./index-BOFPxDZZ.js";import{a as pe,c as he,p as I,t as G,u as ye}from"./coreAdminGrantService-CACyfj6f.js";var c=ue(ce(),1),q={getSettings:async()=>{try{return(await ye({appId:S,clusterId:L})).settings}catch(t){throw h.error("Error fetching system settings:",t),t}},updateSettings:async(t,r="system")=>{try{return await G({appId:S,clusterId:L,capability:w.SETTINGS_MANAGE,action:"settings_update",targetId:"global_config",reason:"Updated from Core Hub admin panel",details:{updates:t,requestedBy:r}})}catch(n){throw h.error("Error updating system settings:",n),n}}},e=ne(),be=()=>{const{adminGrant:t}=V(),[r,n]=(0,c.useState)("users"),[a,p]=(0,c.useState)(!0),[x,l]=(0,c.useState)({totalUsers:0,activeUsers:0,totalProfiles:0,publicProfiles:0,auditLogs:0,systemHealth:100}),[s,i]=(0,c.useState)([]),[v,U]=(0,c.useState)([]),[C,W]=(0,c.useState)(""),[J,Q]=(0,c.useState)(new Set),[k,_]=(0,c.useState)(null),[Y,T]=(0,c.useState)(!1),[P,M]=(0,c.useState)(!1),E=20,B=t?.tenantId||null,F=t?.entityId||null,y=(0,c.useMemo)(()=>({appId:S,clusterId:L,tenantId:B,entityId:F}),[B,F]);(0,c.useEffect)(()=>{(async()=>{try{l(await he(y))}catch(d){h.error("Error loading stats:",d)}finally{p(!1)}})()},[y]),(0,c.useEffect)(()=>{r==="users"&&(async()=>{try{const{users:d=[],lastVisible:m,hasMore:g}=await I({...y,pageSize:E});i(d),_(m),T(g)}catch(d){h.error("Error loading users:",d)}})()},[r,y]);const Z=async()=>{if(!(!k||P)){M(!0);try{const{users:o=[],lastVisible:d,hasMore:m}=await I({...y,pageSize:E,startAfter:k});i(g=>[...g||[],...o]),_(d),T(m)}catch(o){h.error("Error loading more users:",o)}finally{M(!1)}}};(0,c.useEffect)(()=>{r==="audit"&&(async()=>{try{const{logs:d=[]}=await pe({...y,pageSize:50});U(d)}catch(d){h.error("Error loading audit logs:",d)}})()},[r,y]);const K=async(o,d)=>{const m={ban:{action:"user_suspend",capability:w.USER_SUSPEND,reason:"Banned from admin panel"},unban:{action:"user_unsuspend",capability:w.USER_UNSUSPEND,reason:"Unbanned from admin panel"},delete:{action:"user_delete",capability:w.USER_DELETE,reason:"Deleted from admin panel"}}[d];if(m){d==="delete"?i(g=>g.filter(u=>u.id!==o)):d==="ban"?i(g=>g.map(u=>u.id===o?{...u,status:"banned",bannedAt:new Date().toISOString()}:u)):d==="unban"&&i(g=>g.map(u=>u.id===o?{...u,status:"active",bannedAt:null}:u));try{await G({appId:S,clusterId:L,capability:m.capability,action:m.action,targetId:o,reason:m.reason,tenantId:t?.tenantId||null,entityId:t?.entityId||null})}catch(g){h.error("Error performing user action:",g);const{users:u=[]}=await I({...y,pageSize:E});i(u)}}},X=o=>{Q(d=>{const m=new Set(d);return m.has(o)?m.delete(o):m.add(o),m})},ee=(s||[]).filter(o=>o.email?.toLowerCase().includes(C.toLowerCase())||o.displayName?.toLowerCase().includes(C.toLowerCase()));return a?(0,e.jsx)("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center",children:(0,e.jsxs)("div",{className:"text-center",children:[(0,e.jsx)("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4"}),(0,e.jsx)("p",{className:"text-gray-600",children:"Loading Admin Panel..."})]})}):(0,e.jsxs)("div",{className:"min-h-screen bg-gray-50",children:[(0,e.jsx)("div",{className:"bg-white border-b border-gray-200",children:(0,e.jsx)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6",children:(0,e.jsxs)("div",{className:"flex items-center justify-between",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:"Admin Panel"}),(0,e.jsx)("p",{className:"text-sm text-gray-600",children:"System administration and management"})]}),(0,e.jsxs)("div",{className:"flex items-center gap-3",children:[(0,e.jsxs)(j,{to:"/admin/users",className:"flex items-center gap-2 px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-700 rounded-lg transition-colors text-sm font-medium",children:[(0,e.jsx)(N,{size:18}),"User Management"]}),(0,e.jsxs)(j,{to:"/admin/content",className:"flex items-center gap-2 px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-700 rounded-lg transition-colors text-sm font-medium",children:[(0,e.jsx)(me,{size:18}),"Content Management"]}),(0,e.jsxs)(j,{to:"/admin/analytics",className:"flex items-center gap-2 px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-700 rounded-lg transition-colors text-sm font-medium",children:[(0,e.jsx)(de,{size:18}),"Analytics"]}),(0,e.jsxs)(j,{to:"/admin/safety",className:"flex items-center gap-2 px-4 py-2 bg-gray-100 hover:bg-gray-200 text-gray-700 rounded-lg transition-colors text-sm font-medium",children:[(0,e.jsx)(oe,{size:18}),"Safety Reports"]}),(0,e.jsxs)("button",{onClick:()=>window.location.reload(),className:"flex items-center gap-2 px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors",children:[(0,e.jsx)(le,{size:18}),"Refresh"]})]})]})})}),(0,e.jsx)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6",children:(0,e.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 ga
1p-4",children:[(0,e.jsx)(f,{icon:(0,e.jsx)(N,{size:24}),label:"Total Users",value:x.totalUsers,color:"blue"}),(0,e.jsx)(f,{icon:(0,e.jsx)(D,{size:24}),label:"Active Users",value:x.activeUsers,color:"green"}),(0,e.jsx)(f,{icon:(0,e.jsx)(A,{size:24}),label:"Public Profiles",value:x.publicProfiles,color:"purple"}),(0,e.jsx)(f,{icon:(0,e.jsx)(xe,{size:24}),label:"Audit Logs",value:x.auditLogs,color:"yellow"}),(0,e.jsx)(f,{icon:(0,e.jsx)(O,{size:24}),label:"System Health",value:`${x.systemHealth}%`,color:"green"})]})}),(0,e.jsx)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",children:(0,e.jsx)("div",{className:"border-b border-gray-200 bg-white rounded-t-lg",children:(0,e.jsxs)("nav",{className:"flex space-x-8 px-6","aria-label":"Tabs",children:[(0,e.jsx)(z,{active:r==="users",onClick:()=>n("users"),icon:(0,e.jsx)(N,{size:18}),label:"Users"}),(0,e.jsx)(z,{active:r==="audit",onClick:()=>n("audit"),icon:(0,e.jsx)(D,{size:18}),label:"Audit Logs"}),(0,e.jsx)(z,{active:r==="settings",onClick:()=>n("settings"),icon:(0,e.jsx)(O,{size:18}),label:"Settings"}),(0,e.jsxs)(j,{to:"/admin/monitoring",className:"flex items-center gap-2 px-1 py-4 border-b-2 border-transparent font-medium text-sm text-gray-500 hover:text-gray-700 hover:border-gray-300 transition-colors",children:[(0,e.jsx)(A,{size:18}),"Monitoring"]})]})})}),(0,e.jsxs)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6",children:[r==="users"&&(0,e.jsx)(je,{users:ee,searchQuery:C,onSearchChange:W,onUserAction:K,hasMore:Y,onLoadMore:Z,loadingMore:P}),r==="audit"&&(0,e.jsx)(fe,{logs:v,expandedLogs:J,onToggleExpansion:X}),r==="settings"&&(0,e.jsx)(ve,{})]})]})},f=({icon:t,label:r,value:n,color:a})=>(0,e.jsx)("div",{className:"bg-white rounded-lg shadow-sm p-6",children:(0,e.jsxs)("div",{className:"flex items-center justify-between",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"text-sm font-medium text-gray-600",children:r}),(0,e.jsx)("p",{className:"text-2xl font-bold text-gray-900 mt-1",children:n})]}),(0,e.jsx)("div",{className:`${{blue:"bg-blue-500",green:"bg-green-500",purple:"bg-purple-500",yellow:"bg-yellow-500",red:"bg-red-500"}[a]} p-3 rounded-lg text-white`,children:t})]})}),z=({active:t,onClick:r,icon:n,label:a})=>(0,e.jsxs)("button",{onClick:r,className:`flex items-center gap-2 px-1 py-4 border-b-2 font-medium text-sm transition-colors ${t?"border-blue-600 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"}`,children:[n,a]}),je=({users:t,searchQuery:r,onSearchChange:n,onUserAction:a,hasMore:p,onLoadMore:x,loadingMore:l})=>(0,e.jsxs)("div",{className:"bg-white rounded-lg shadow-sm",children:[(0,e.jsx)("div",{className:"p-4 border-b border-gray-200",children:(0,e.jsxs)("div",{className:"relative",children:[(0,e.jsx)(ie,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400",size:20}),(0,e.jsx)("input",{type:"text",placeholder:"Search users by email or name...",value:r,onChange:s=>n(s.target.value),className:"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"})]})}),(0,e.jsx)("div",{className:"overflow-x-auto",children:(0,e.jsxs)("table",{className:"w-full",children:[(0,e.jsx)("thead",{className:"bg-gray-50",children:(0,e.jsxs)("tr",{children:[(0,e.jsx)("th",{className:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:"User"}),(0,e.jsx)("th",{className:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:"Email"}),(0,e.jsx)("th",{className:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:"Status"}),(0,e.jsx)("th",{className:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:"Last Login"}),(0,e.jsx)("th",{className:"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",children:"Actions"})]})}),(0,e.jsx)("tbody",{className:"divide-y divide-gray-200",children:t.map(s=>(0,e.jsxs)("tr",{className:"hover:bg-gray-50",children:[(0,e.jsx)("td",{className:"px-6 py-4 whitespace-nowrap",children:(0,e.jsxs)("div",{className:"flex items-center",children:[(0,e.jsx)("div",{className:"w-10 h-10 rounded-full bg-blue-500 flex items-center justify-center text-white font-bold",children:s.displayName?.charAt(0)||s.email?.charAt(0)}),(0,e.jsxs)("div",{className:"ml-4",children:[(0,e.jsx)("div",{className:"text-sm font-medium text-gray-900",children:s.displayName||"N/A"}),(0,e.jsxs)("div",{className:"text-xs text-gray-500",children:["ID: ",s.id.slice(0,8),"..."]})]})]})}),(0,e.jsx)("td",{className:"px-6 py-4 whitespace-nowrap text-sm text-gray-900",children:s.email}),(0,e.jsx)("td",{className:"px-6 py-4 whitespace-nowrap",children:(0,e.jsx)("span",{className:`px-2 py-1 text-xs font-medium rounded-full ${s.status==="banned"?"bg-red-100 text-red-800":"bg-green-100 text-green-800"}`,children:s.status==="banned"?"Banned":"Active"})}),(0,e.jsx)("td",{className:"px-6 py-4 whitespace-nowrap text-sm text-gray-500",children:s.lastLogin?new Date(s.lastLogin).toLocaleDateString():"Never"}),(0,e.jsx)("td",{className:"px-6 py-4 whitespace-nowrap text-sm",children:(0,e.jsxs)("div",{className:"flex items-center gap-2",children:[s.status==="banned"?(0,e.jsx)("button",{onClick:()=>a(s.id,"unban"),className:"text-green-600 hover:text-green-800",title:"Unban User",children:(0,e.jsx)(H,{size:18})}):(0,e.jsx)("button",{onClick:()=>a(s.id,"ban"),className:"text-red-600 hover:text-red-800",title:"Ban User",children:(0,e.jsx)(te,{size:18})}),(0,e.jsx)("button",{onClick:()=>a(s.id,"delete"),className:"text-red-600 hover:text-red-800",title:"Delete User",children:(0,e.jsx)($,{size:18})})]})})]},s.id))})]})}),t.length===0&&(0,e.jsxs)("div",{className:"p-8 text-center text-gray-500",children:[(0,e.jsx)(N,{size:48,className:"mx-auto mb-4 text-gray-300"}),(0,e.jsx)("p",{children:"No users found"})]}),p&&t.length>0&&(0,e.jsx)("div",{className:"p-4 border-t border-gray-200 text-center",children:(0,e.jsx)("button",{onClick:x,disabled:l,className:"px-4 py-2 bg-blue-50 hover:bg-blue-100 text-blue-700 rounded-lg text-sm font-medium transition-colors disabled:opacity-50",children:l?"Loading...":"Load More"})})]}),fe=({logs:t,expandedLogs:r,onToggleExpansion:n})=>(0,e.jsxs)("div",{className:"bg-white rounded-lg shadow-sm",children:[(0,e.jsxs)("div",{className:"p-4 border-b border-gray-200 flex items-center justify-between",children:[(0,e.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"Recent Audit Logs"}),(0,e.jsxs)("button",{onClick:()=>{const a=[["Action","Entity","User ID","Timestamp","Details"],...t.map(s=>[s.action||"",s.entity||"",s.userId||"",s.timestamp?new Date(s.timestamp).toLocaleStr
1ing():"",JSON.stringify(s.details||{})])].map(s=>s.map(i=>`"${String(i).replace(/"/g,'""')}"`).join(",")).join(`
2`),p=new Blob([a],{type:"text/csv"}),x=window.URL.createObjectURL(p),l=document.createElement("a");l.href=x,l.download=`audit-logs-${new Date().toISOString().split("T")[0]}.csv`,document.body.appendChild(l),l.click(),document.body.removeChild(l),window.URL.revokeObjectURL(x)},className:"flex items-center gap-2 px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors",children:[(0,e.jsx)(ae,{size:18}),"Export Logs"]})]}),(0,e.jsx)("div",{className:"divide-y divide-gray-200",children:t.map(a=>(0,e.jsxs)("div",{className:"p-4",children:[(0,e.jsxs)("div",{className:"flex items-start justify-between cursor-pointer",onClick:()=>n(a.id),children:[(0,e.jsxs)("div",{className:"flex items-start gap-3",children:[(0,e.jsxs)("div",{className:`p-2 rounded-lg ${a.action==="delete"?"bg-red-100":a.action==="update"?"bg-yellow-100":"bg-blue-100"}`,children:[a.action==="delete"&&(0,e.jsx)($,{size:18,className:"text-red-600"}),a.action==="update"&&(0,e.jsx)(re,{size:18,className:"text-yellow-600"}),a.action==="create"&&(0,e.jsx)(H,{size:18,className:"text-blue-600"})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"text-sm font-medium text-gray-900",children:a.action||"Action"}),(0,e.jsx)("p",{className:"text-xs text-gray-500",children:a.entity||"Unknown Entity"})]})]}),(0,e.jsxs)("div",{className:"flex items-center gap-3",children:[(0,e.jsx)("span",{className:"text-xs text-gray-500",children:a.timestamp?new Date(a.timestamp).toLocaleString():"Unknown time"}),r.has(a.id)?(0,e.jsx)(se,{size:18,className:"text-gray-400"}):(0,e.jsx)(ge,{size:18,className:"text-gray-400"})]})]}),r.has(a.id)&&(0,e.jsxs)("div",{className:"mt-3 pl-11 text-sm",children:[(0,e.jsxs)("div",{className:"bg-gray-50 rounded-lg p-3",children:[(0,e.jsx)("p",{className:"font-medium text-gray-700 mb-2",children:"Details:"}),(0,e.jsx)("pre",{className:"text-xs text-gray-600 overflow-x-auto",children:JSON.stringify(a.details||{},null,2)})]}),a.userId&&(0,e.jsxs)("p",{className:"text-xs text-gray-500 mt-2",children:["User ID: ",a.userId]})]})]},a.id))}),t.length===0&&(0,e.jsxs)("div",{className:"p-8 text-center text-gray-500",children:[(0,e.jsx)(D,{size:48,className:"mx-auto mb-4 text-gray-300"}),(0,e.jsx)("p",{children:"No audit logs found"})]})]}),ve=()=>{const[t,r]=(0,c.useState)(null),[n,a]=(0,c.useState)(!0),[p,x]=(0,c.useState)(!1);(0,c.useEffect)(()=>
2{l()},[]);const l=async()=>{try{r(await q.getSettings())}catch(i){h.error("Failed to load settings:",i)}finally{a(!1)}},s=async(i,v)=>{try{x(!0),r({...t,[i]:v}),await q.updateSettings({[i]:v})}catch(U){h.error("Failed to save setting:",U)}finally{x(!1)}};return n?(0,e.jsx)("div",{className:"p-8 text-center",children:"Loading settings..."}):(0,e.jsxs)("div",{className:"bg-white rounded-lg shadow-sm p-6",children:[(0,e.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,e.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"System Settings"}),p&&(0,e.jsx)("span",{className:"text-sm text-blue-600",children:"Saving..."})]}),(0,e.jsxs)("div",{className:"space-y-6",children:[(0,e.jsx)(R,{title:"User Management",description:"Configure user registration and authentication settings",children:(0,e.jsxs)("div",{className:"space-y-4",children:[(0,e.jsx)(b,{label:"Allow Self-Registration",type:"toggle",checked:t?.allowSelfRegistration??!0,onChange:i=>s("allowSelfRegistration",i)}),(0,e.jsx)(b,{label:"Require Email Verification",type:"toggle",checked:t?.requireEmailVerification??!0,onChange:i=>s("requireEmailVerification",i)}),(0,e.jsx)(b,{label:"Default User Role",type:"select",options:["user","verified","admin"],value:t?.defaultUserRole??"user",onChange:i=>s("defaultUserRole",i)})]})}),(0,e.jsx)(R,{title:"Security",description:"Configure security and access control settings",children:(0,e.jsxs)("div",{className:"space-y-4",children:[(0,e.jsx)(b,{label:"Two-Factor Authentication",type:"toggle",checked:t?.twoFactorAuth??!1,onChange:i=>s("twoFactorAuth",i)}),(0,e.jsx)(b,{label:"Session Timeout (minutes)",type:"input",value:t?.sessionTimeout??30,onChange:i=>s("sessionTimeout",parseInt(i)||30)}),(0,e.jsx)(b,{label:"Max Login Attempts",type:"input",value:t?.maxLoginAttempts??5,onChange:i=>s("maxLoginAttempts",parseInt(i)||5)})]})}),(0,e.jsx)(R,{title:"Audit Logging",description:"Configure audit and logging settings",children:(0,e.jsxs)("div",{className:"space-y-4",children:[(0,e.jsx)(b,{label:"Enable Audit Logging",type:"toggle",checked:t?.enableAuditLogging??!0,onChange:i=>s("enableAuditLogging",i)}),(0,e.jsx)(b,{label:"Log Retention Days",type:"input",value:t?.logRetentionDays??90,onChange:i=>s("logRetentionDays",parseInt(i)||90)})]})})]})]})},R=({title:t,description:r,children:n})=>(0,e.jsxs)("div",{className:"border-b border-gray-200 pb-6",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("h4",{className:"text-base font-medium text-gray-900",children:t}),(0,e.jsx)("p",{className:"text-sm text-gray-500 mt-1",children:r})]}),(0,e.jsx)("div",{className:"mt-4",children:n})]}),b=({label:t,type:r,checked:n,value:a,options:p,onChange:x})=>(0,e.jsxs)("div",{className:"flex items-center justify-between",children:[(0,e.jsx)("label",{className:"text-sm font-medium text-gray-700",children:t}),(0,e.jsxs)("div",{children:[r==="toggle"&&(0,e.jsx)("button",{onClick:()=>x(!n),className:`relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none ${n?"bg-blue-600":"bg-gray-200"}`,role:"switch","aria-checked":n,children:(0,e.jsx)("span",{className:`translate-x-0 pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out ${n?"translate-x-5":"translate-x-0"}`})}),r==="select"&&(0,e.jsx)("select",{value:a,onChange:l=>x(l.target.value),className:"border border-gray-300 rounded-lg px-3 py-2 text-sm focus:ring-2 focus:ring-blue-500",children:p?.map(l=>(0,e.jsx)("option",{value:l,children:l},l))}),r==="input"&&(0,e.jsx)("input",{type:"text",value:a,onChange:l=>x(l.target.value),className:"border border-gray-300 rounded-lg px-3 py-2 text-sm w-24 focus:ring-2 focus:ring-blue-500"})]})]}),De=()=>{const{canAccessAdmin:t,mfaEnrolled:r,adminGrantResolved:n}=V();return n??!0?t?(0,e.jsx)(be,{}):(0,e.jsxs)("div",{className:"admin-panel-access-denied",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"60vh",textAlign:"center",padding:"2rem"},children:[(0,e.jsx)(A,{size:48,style:{marginBottom:"1rem",opacity:.5}}),(0,e.jsx)("h2",{children:"Admin Access Required"}),(0,e.jsx)("p",{style:{color:"var(--muted, #888)",maxWidth:"400px"},children:r?"You do not have permission to access this area. Admin access requires an authorised role with MFA enrolled and authority dashboards enabled.":"You need to enroll in MFA (TOTP) before accessing admin surfaces. Please enable two-factor authentication in your security settings."})]}):(0,e.jsxs)("div",{className:"admin-panel-access-denied",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"60vh",textAlign:"center",padding:"2rem"},children:[(0,e.jsx)(A,{size:48,style:{marginBottom:"1rem",opacity:.5}}),(0,e.jsx)("h2",{children:"Resolving admin authority"}),(0,e.jsx)("p",{style:{color:"var(--muted, #888)",maxWidth:"400px"},children:"Please wait while the server verifies your administration grant."})]})};export{De 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.