@zenith-open/zenithcms-admin 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -0
  3. package/dist/assets/ApiExplorerPage-UJpoKRI0.js +42 -0
  4. package/dist/assets/ApiExplorerPage-UJpoKRI0.js.map +1 -0
  5. package/dist/assets/AuditLogPage-8xYlRl1I.js +1 -0
  6. package/dist/assets/AuditLogPage-8xYlRl1I.js.map +1 -0
  7. package/dist/assets/BlockBuilderPage-DcOo3Vnt.js +1 -0
  8. package/dist/assets/BlockBuilderPage-DcOo3Vnt.js.map +1 -0
  9. package/dist/assets/BuilderPage-Iu8F_bN1.js +1 -0
  10. package/dist/assets/BuilderPage-Iu8F_bN1.js.map +1 -0
  11. package/dist/assets/CollectionHooksPage-Dn_ujtlp.js +7 -0
  12. package/dist/assets/CollectionHooksPage-Dn_ujtlp.js.map +1 -0
  13. package/dist/assets/CollectionsPage-BSPHf7H2.js +1 -0
  14. package/dist/assets/CollectionsPage-BSPHf7H2.js.map +1 -0
  15. package/dist/assets/ComponentBuilderPage-CT6S12LA.js +14 -0
  16. package/dist/assets/ComponentBuilderPage-CT6S12LA.js.map +1 -0
  17. package/dist/assets/DashboardBuilder-Cbi9Ddiu.js +1 -0
  18. package/dist/assets/DashboardBuilder-Cbi9Ddiu.js.map +1 -0
  19. package/dist/assets/EmptyState-X_SXKpQY.js +1 -0
  20. package/dist/assets/EmptyState-X_SXKpQY.js.map +1 -0
  21. package/dist/assets/MediaLibrary-BzXE95xo.js +1 -0
  22. package/dist/assets/MediaLibrary-BzXE95xo.js.map +1 -0
  23. package/dist/assets/PluginsPage-5YRpbP-N.js +10 -0
  24. package/dist/assets/PluginsPage-5YRpbP-N.js.map +1 -0
  25. package/dist/assets/RedirectsPage-D_4jAdaI.js +1 -0
  26. package/dist/assets/RedirectsPage-D_4jAdaI.js.map +1 -0
  27. package/dist/assets/SchemaBuilderPage-EFA5XIAa.js +14 -0
  28. package/dist/assets/SchemaBuilderPage-EFA5XIAa.js.map +1 -0
  29. package/dist/assets/SettingsPage-BRpcMw48.js +33 -0
  30. package/dist/assets/SettingsPage-BRpcMw48.js.map +1 -0
  31. package/dist/assets/SetupWizard-D57HIkrs.js +62 -0
  32. package/dist/assets/SetupWizard-D57HIkrs.js.map +1 -0
  33. package/dist/assets/SpatialEditor-CPgS7Zrd.js +3 -0
  34. package/dist/assets/SpatialEditor-CPgS7Zrd.js.map +1 -0
  35. package/dist/assets/TemplatesPage-B-nNYv3o.js +1 -0
  36. package/dist/assets/TemplatesPage-B-nNYv3o.js.map +1 -0
  37. package/dist/assets/TrashPage-Ccusal1w.js +1 -0
  38. package/dist/assets/TrashPage-Ccusal1w.js.map +1 -0
  39. package/dist/assets/index-ChcKY5Xe.js +11 -0
  40. package/dist/assets/index-ChcKY5Xe.js.map +1 -0
  41. package/dist/assets/index-CxhwdV2K.css +1 -0
  42. package/dist/assets/login-bg.png +0 -0
  43. package/dist/assets/rolldown-runtime-CNC7AqOf.js +1 -0
  44. package/dist/assets/useUnsavedGuard-CMMKQT9a.js +1 -0
  45. package/dist/assets/useUnsavedGuard-CMMKQT9a.js.map +1 -0
  46. package/dist/assets/utils-fgvbH6CB.js +1 -0
  47. package/dist/assets/utils-fgvbH6CB.js.map +1 -0
  48. package/dist/assets/vendor-C-9IqjvY.js +1 -0
  49. package/dist/assets/vendor-C-9IqjvY.js.map +1 -0
  50. package/dist/assets/vendor-forms-BnBLxarY.js +1 -0
  51. package/dist/assets/vendor-forms-BnBLxarY.js.map +1 -0
  52. package/dist/assets/vendor-react-DQVTOTFO.js +195 -0
  53. package/dist/assets/vendor-react-DQVTOTFO.js.map +1 -0
  54. package/dist/favicon.svg +1 -0
  55. package/dist/icons.svg +24 -0
  56. package/dist/index.html +30 -0
  57. package/dist/logo/zenith.svg +9 -0
  58. package/dist/sw.js +3 -0
  59. package/dist/sw.js.map +1 -0
  60. package/dist/workbox-9c191d2f.js +3 -0
  61. package/dist/workbox-9c191d2f.js.map +1 -0
  62. package/dist/zenith.svg +9 -0
  63. package/package.json +60 -0
@@ -0,0 +1,33 @@
1
+ import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{$t as t,B as n,Bt as r,C as i,Cn as a,E as o,En as s,Et as c,F as l,G as u,Gn as d,H as f,Hn as p,Ht as m,I as h,J as g,Jn as _,Jt as v,K as y,Kt as b,L as x,Ln as S,Lt as C,Mn as w,Mt as T,Pn as E,Q as D,R as O,Rn as k,S as A,St as j,T as M,Tt as N,U as P,Ut as F,V as I,Vt as L,W as R,Wt as z,Yt as B,Z as V,Zn as ee,_ as te,an as H,br as ne,cn as U,d as W,dt as re,et as ie,g as G,gt as K,h as q,hn as ae,in as oe,ir as se,it as ce,j as le,kt as ue,l as J,m as de,mn as fe,nt as pe,o as me,pr as he,pt as ge,qn as _e,rr as ve,sn as ye,tt as be,u as xe,un as Se,v as Ce,vr as we,w as Te,wn as Ee,x as De,xr as Oe,y as ke}from"./vendor-react-DQVTOTFO.js";import{a as Ae,o as Y,s as je,t as X}from"./utils-fgvbH6CB.js";import{_ as Me,g as Ne,h as Pe,m as Fe,p as Ie,y as Le}from"./index-ChcKY5Xe.js";import Re from"./ApiExplorerPage-UJpoKRI0.js";import{t as ze}from"./EmptyState-X_SXKpQY.js";var Z=e(Oe(),1),Be={view:`viewer`,create:`editor`,edit:`editor`,publish:`editor`,unpublish:`editor`,delete:`editor`,view_audit_log:`editor`,manage_redirects:`editor`,manage_schema:`admin`,manage_settings:`admin`,manage_plugins:`admin`,manage_users:`admin`,manage_api_keys:`admin`,download_backup:`admin`},Ve={viewer:0,editor:1,admin:2};function He(e,t){if(!e)return!1;let n=Ve[Be[t]]??999;return(Ve[e]??-1)>=n}function Ue(){let e=Le(e=>e.user)?.role??`viewer`;return{role:e,can:t=>He(e,t),isAdmin:e===`admin`,isEditor:Ve[e]>=Ve.editor}}var Q=we();function We({children:e,sidebar:t,sidebarPosition:n=`right`,sidebarWidth:r=`w-[320px]`,className:i,...a}){let{theme:o}=Ae();return(0,Q.jsxs)(`div`,{className:X(`flex flex-col lg:flex-row h-full min-h-[calc(100vh-65px)]`,i),...a,children:[n===`left`&&t&&(0,Q.jsx)(`div`,{className:X(`shrink-0 border-b lg:border-b-0 lg:border-r flex flex-col`,r,o===`dark`?`border-z-border bg-[#050505]`:`border-z-border bg-[var(--z-bg-input)]/30`),children:t}),(0,Q.jsx)(`div`,{className:`flex-1 flex flex-col min-w-0`,children:e}),n===`right`&&t&&(0,Q.jsx)(`div`,{className:X(`shrink-0 border-t lg:border-t-0 lg:border-l flex flex-col`,r,o===`dark`?`border-z-border bg-[#050505]`:`border-z-border bg-[var(--z-bg-input)]/30`),children:t})]})}var Ge=`UTC.America/New_York.America/Chicago.America/Denver.America/Los_Angeles.America/Anchorage.America/Honolulu.America/Sao_Paulo.America/Toronto.America/Vancouver.Europe/London.Europe/Paris.Europe/Berlin.Europe/Amsterdam.Europe/Rome.Europe/Madrid.Europe/Stockholm.Europe/Athens.Europe/Warsaw.Europe/Prague.Asia/Dubai.Asia/Kolkata.Asia/Singapore.Asia/Tokyo.Asia/Shanghai.Asia/Seoul.Asia/Bangkok.Asia/Jakarta.Asia/Karachi.Asia/Tehran.Africa/Cairo.Africa/Lagos.Africa/Johannesburg.Africa/Nairobi.Australia/Sydney.Australia/Melbourne.Pacific/Auckland`.split(`.`),Ke=[{value:`en`,label:`English (en)`},{value:`en-US`,label:`English US (en-US)`},{value:`en-GB`,label:`English UK (en-GB)`},{value:`fr`,label:`French (fr)`},{value:`de`,label:`German (de)`},{value:`es`,label:`Spanish (es)`},{value:`it`,label:`Italian (it)`},{value:`pt`,label:`Portuguese (pt)`},{value:`ar`,label:`Arabic (ar)`},{value:`zh`,label:`Chinese (zh)`},{value:`ja`,label:`Japanese (ja)`},{value:`ko`,label:`Korean (ko)`},{value:`hi`,label:`Hindi (hi)`},{value:`ru`,label:`Russian (ru)`},{value:`nl`,label:`Dutch (nl)`},{value:`pl`,label:`Polish (pl)`},{value:`tr`,label:`Turkish (tr)`}],qe=({settings:e,setSettings:t,theme:n})=>{let r=n===`dark`,[i,a]=(0,Z.useState)(!1),[o,s]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(!1),p=localStorage.getItem(`activeSiteId`)||``,m=localStorage.getItem(`activeSiteName`)||`Unknown Site`,h=()=>{p&&navigator.clipboard.writeText(p).then(()=>{a(!0),setTimeout(()=>a(!1),2e3)})},g=async(n,r,i)=>{i(!0);try{let i=new FormData;i.append(`file`,n);let a=await Y.post(`/upload`,i,{headers:{"Content-Type":`multipart/form-data`}}),o=a.data?.data?.url||a.data?.url;o&&(t({...e,[r]:o}),J.success(`Image uploaded`))}catch{J.error(`Upload failed`)}finally{i(!1)}},_=X(`p-5 border rounded-none transition-all space-y-3`,r?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-[var(--z-bg-input)]/50 border-z-border shadow-sm`),y=X(`w-full border rounded-none py-2.5 px-4 text-sm transition-all outline-none focus:ring-1 focus:ring-z-active-border focus:border-z-accent`,r?`bg-app/80 border-z-border text-z-primary placeholder:text-z-primary`:`bg-z-panel border-z-border`),b=({field:n,label:i,value:a,uploading:o,setUploading:s})=>(0,Q.jsxs)(`div`,{className:_,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:i}),(0,Q.jsxs)(`div`,{className:`flex gap-3 items-start`,children:[(0,Q.jsx)(`div`,{className:X(`w-16 h-16 flex-shrink-0 border flex items-center justify-center overflow-hidden`,r?`bg-app/80 border-z-border`:`bg-[var(--z-bg-hover)] border-z-border`),children:a?(0,Q.jsx)(`img`,{src:a,alt:i,className:`w-full h-full object-contain`,onError:e=>{e.target.style.display=`none`}}):(0,Q.jsx)(c,{size:20,className:`text-z-secondary`})}),(0,Q.jsxs)(`div`,{className:`flex-1 space-y-2`,children:[(0,Q.jsx)(`input`,{type:`url`,value:a||``,onChange:r=>t({...e,[n]:r.target.value}),placeholder:`https://...`,className:y}),(0,Q.jsxs)(`label`,{className:X(`flex items-center gap-2 cursor-pointer text-sm font-semibold border px-3 py-2 w-fit transition-all`,r?`border-z-border text-z-muted hover:text-z-primary hover:border-z-border`:`border-z-border text-z-secondary hover:text-z-primary`),children:[o?(0,Q.jsx)(S,{size:12,className:`animate-spin`}):(0,Q.jsx)(ke,{size:12}),`Upload File`,(0,Q.jsx)(`input`,{type:`file`,accept:`image/*`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&g(t,n,s)}})]})]})]})]});return(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:X(`p-5 border space-y-3`,r?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-z-input border-z-border`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(K,{size:12,className:`text-z-secondary`}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-secondary`,children:`Site Identifier`}),(0,Q.jsx)(`span`,{className:`ml-auto text-sm text-z-secondary`,children:m})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`code`,{className:X(`flex-1 font-mono text-sm px-3 py-2 border truncate`,`bg-z-panel border-z-border text-z-primary`),children:p||(0,Q.jsx)(`span`,{className:`opacity-40`,children:`No site selected`})}),(0,Q.jsxs)(`button`,{onClick:h,disabled:!p,className:X(`flex items-center gap-2 px-4 py-2 text-xs font-bold border transition-all`,p?r?`bg-z-accent hover:brightness-110 text-z-logo-text border-transparent shadow-sm`:`bg-z-base text-z-primary border-transparent hover:bg-z-base`:`bg-z-hover text-z-secondary cursor-not-allowed border-z-border`),children:[i?(0,Q.jsx)(U,{size:13}):(0,Q.jsx)(v,{size:13}),i?`Copied!`:`Copy`]})]}),(0,Q.jsxs)(`p`,{className:X(`text-sm leading-relaxed`,`text-z-secondary`),children:[`Use this as `,(0,Q.jsx)(`code`,{className:`px-1 py-0.5 bg-z-panel/10`,children:`VITE_CMS_SITE_ID`}),` in template `,(0,Q.jsx)(`code`,{className:`px-1 py-0.5 bg-z-panel/10`,children:`.env`}),` files to connect storefronts to this site.`]})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,Q.jsxs)(`div`,{className:_,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Application Name`}),(0,Q.jsx)(`input`,{type:`text`,value:e.siteName||``,onChange:n=>t({...e,siteName:n.target.value}),className:y,placeholder:`My CMS`})]}),(0,Q.jsxs)(`div`,{className:_,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Support Email`}),(0,Q.jsx)(`input`,{type:`email`,value:e.supportEmail||``,onChange:n=>t({...e,supportEmail:n.target.value}),className:y,placeholder:`support@company.com`})]})]}),(0,Q.jsxs)(`div`,{className:_,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Site Description`}),(0,Q.jsx)(`textarea`,{value:e.siteDescription||``,onChange:n=>t({...e,siteDescription:n.target.value}),rows:3,className:X(y,`resize-none`),placeholder:`A short description of your platform...`})]}),(0,Q.jsxs)(`div`,{className:_,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Public API Endpoint`}),(0,Q.jsx)(`input`,{type:`url`,value:e.publicUrl||``,onChange:n=>t({...e,publicUrl:n.target.value}),className:y,placeholder:`https://api.yoursite.com`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`The publicly-accessible URL where your CMS API is hosted.`})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary px-1`,children:`Branding Assets`}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:[(0,Q.jsx)(b,{field:`logoUrl`,label:`Site Logo`,value:e.logoUrl,uploading:o,setUploading:s}),(0,Q.jsx)(b,{field:`faviconUrl`,label:`Favicon`,value:e.faviconUrl,uploading:l,setUploading:u}),(0,Q.jsx)(b,{field:`ogImageUrl`,label:`OG Share Image`,value:e.ogImageUrl||``,uploading:d,setUploading:f})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary px-1`,children:`Localization`}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:[(0,Q.jsxs)(`div`,{className:_,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Default Locale`}),(0,Q.jsx)(`select`,{value:e.defaultLocale||`en`,onChange:n=>t({...e,defaultLocale:n.target.value}),className:y,children:Ke.map(e=>(0,Q.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,Q.jsxs)(`div`,{className:_,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Timezone`}),(0,Q.jsx)(`select`,{value:e.timezone||`UTC`,onChange:n=>t({...e,timezone:n.target.value}),className:y,children:Ge.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))})]}),(0,Q.jsxs)(`div`,{className:_,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Date Format`}),(0,Q.jsx)(`select`,{value:e.dateFormat||`MM/DD/YYYY`,onChange:n=>t({...e,dateFormat:n.target.value}),className:y,children:[`MM/DD/YYYY`,`DD/MM/YYYY`,`YYYY-MM-DD`,`MMMM D, YYYY`,`D MMMM YYYY`].map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))})]})]})]}),(0,Q.jsxs)(`div`,{className:X(`p-5 border flex items-center justify-between transition-all group rounded-lg`,e.maintenanceMode?r?`bg-red-950/20 border-red-900/50 shadow-[0_0_15px_rgba(220,38,38,0.15)]`:`bg-red-50 border-red-200 shadow-sm`:r?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-[var(--z-bg-input)]/50 border-z-border shadow-sm`),children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:X(`text-sm font-bold`,e.maintenanceMode?`text-red-500`:`text-z-primary`),children:`Maintenance Protocol`}),e.maintenanceMode&&(0,Q.jsx)(`span`,{className:`px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider bg-red-500 text-white animate-pulse`,children:`Active`})]}),(0,Q.jsx)(`p`,{className:X(`text-sm mt-1`,e.maintenanceMode?`text-red-500/80`:`text-z-secondary`),children:`Restrict public access to the system while active. Admins can still log in.`})]}),(0,Q.jsxs)(`label`,{className:`relative inline-flex items-center cursor-pointer flex-shrink-0`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:e.maintenanceMode,onChange:n=>t({...e,maintenanceMode:n.target.checked}),className:`sr-only peer`}),(0,Q.jsx)(`div`,{className:X(`w-11 h-6 rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all shadow-inner`,r?`bg-gray-700 peer-checked:bg-red-600`:`bg-gray-300 peer-checked:bg-red-500`)})]})]}),(0,Q.jsxs)(`div`,{className:`pt-6 mt-6 border-t border-red-900/30`,children:[(0,Q.jsx)(`h4`,{className:`text-sm font-bold text-red-500 uppercase tracking-wider mb-4`,children:`Danger Zone`}),(0,Q.jsxs)(`div`,{className:X(`p-5 border flex items-center justify-between transition-all border-red-500/20`,r?`bg-red-950/10`:`bg-red-50`),children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-red-500`,children:`Delete Site Workspace`}),(0,Q.jsx)(`p`,{className:`text-sm text-red-400/80 mt-1`,children:`Permanently delete this site and all its content, media, and configurations. This action cannot be undone.`})]}),(0,Q.jsx)(`button`,{onClick:()=>{window.confirm(`Are you absolutely sure you want to permanently delete this site? This action cannot be undone.`)&&Y.delete(`/sites/${p}`).then(()=>{J.success(`Site deleted`),window.location.href=`/`}).catch(e=>{J.error(e.response?.data?.error?.message||`Failed to delete site`)})},className:`px-4 py-2 border border-red-500 text-red-500 hover:bg-red-500 hover:text-z-logo-text transition-colors text-sm font-medium`,children:`Delete Site`})]})]})]})},Je=({settings:e,setSettings:r,theme:i})=>{let a=i===`dark`,{user:o}=Le(me(e=>({user:e.user}))),[s,c]=(0,Z.useState)(`idle`),[l,u]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(``),[m,v]=(0,Z.useState)(!1),[y,b]=(0,Z.useState)(o?.twoFactorEnabled||!1),[C,w]=(0,Z.useState)(!1),[E,D]=(0,Z.useState)([]),[O,k]=(0,Z.useState)(!1),[A,j]=(0,Z.useState)(null),M=async()=>{k(!0);try{let e=await Y.get(`/auth/sessions`),t=e.data?.data||e.data;D(Array.isArray(t)?t:[])}catch{D([])}finally{k(!1)}};(0,Z.useEffect)(()=>{M()},[]);let P=async()=>{c(`loading`);try{u((await Y.post(`/auth/2fa/setup`)).data.data.qrCodeImage),c(`qrcode`)}catch{J.error(`Failed to initiate 2FA setup`),c(`idle`)}},F=async()=>{if(!f)return J.error(`Enter the 6-digit code`);v(!0);try{await Y.post(`/auth/2fa/verify-setup`,{token:f}),J.success(`2FA successfully enabled`),b(!0),c(`idle`)}catch{J.error(`Invalid token`)}finally{v(!1)}},I=async e=>{j(e);try{await Y.delete(`/auth/sessions/${e}`),D(t=>t.filter(t=>t.id!==e)),J.success(`Session revoked`)}catch{J.error(`Failed to revoke session`)}finally{j(null)}},L=X(`p-5 border rounded-none transition-all space-y-3`,a?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-[var(--z-bg-input)]/50 border-z-border shadow-sm`),R=X(`w-full border rounded-none py-2.5 px-4 text-sm font-mono outline-none transition-all focus:ring-1 focus:ring-z-active-border focus:border-z-accent`,a?`bg-app/80 border-z-border text-z-primary placeholder:text-z-primary`:`bg-z-panel border-z-border`);return(0,Q.jsxs)(`div`,{className:`space-y-5`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary px-1`,children:`Authentication`}),(0,Q.jsxs)(`div`,{className:X(`border rounded-none divide-y`,`border-z-border divide-z-border`),children:[(0,Q.jsxs)(`div`,{className:X(`flex items-center justify-between p-5`,a?`bg-z-panel backdrop-blur-md`:`bg-z-panel`),children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:`Open Registration`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary mt-1`,children:`Allow anyone to sign up. When off, users must be explicitly invited.`})]}),(0,Q.jsx)(({checked:e,onChange:t})=>(0,Q.jsxs)(`label`,{className:`relative inline-flex items-center cursor-pointer flex-shrink-0`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>t(e.target.checked),className:`sr-only peer`}),(0,Q.jsx)(`div`,{className:X(`w-11 h-6 rounded-none peer peer-checked:after:translate-x-full after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-[var(--z-bg-hover)] after:rounded-none after:h-5 after:w-5 after:transition-all border shadow-inner`,`bg-[var(--z-border-strong)] peer-checked:bg-z-accent border-transparent`)})]}),{checked:e.allowRegistration,onChange:t=>r({...e,allowRegistration:t})})]}),(0,Q.jsxs)(`div`,{className:`p-5 space-y-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(t,{size:13,className:`text-z-secondary`}),(0,Q.jsx)(`label`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:`Session Token Lifetime`})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[[`1h`,`12h`,`24h`,`7d`,`30d`].map(t=>(0,Q.jsx)(`button`,{onClick:()=>r({...e,jwtExpiresIn:t}),className:X(`px-3 py-2 text-sm font-semibold border transition-all`,e.jwtExpiresIn===t?a?`bg-z-accent/20 border-z-active-border text-z-active-text`:`bg-z-active-bg border-z-active-border text-z-accent`:a?`bg-z-hover border-z-border text-z-secondary hover:text-z-secondary`:`bg-z-input border-z-border text-z-secondary`),children:t},t)),(0,Q.jsx)(`input`,{type:`text`,value:e.jwtExpiresIn,onChange:t=>r({...e,jwtExpiresIn:t.target.value}),placeholder:`Custom (e.g. 2d)`,className:X(R,`max-w-32 py-2`)})]}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`Format: 1h, 7d, 30m etc. Tokens will expire after this duration.`})]}),(0,Q.jsxs)(`div`,{className:`p-5 space-y-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(ge,{size:13,className:`text-z-secondary`}),(0,Q.jsx)(`label`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:`Minimum Password Length`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`input`,{type:`range`,min:6,max:32,value:e.passwordMinLength||8,onChange:t=>r({...e,passwordMinLength:Number(t.target.value)}),className:`flex-1 accent-z-accent`}),(0,Q.jsx)(`span`,{className:X(`text-lg font-semibold min-w-[3ch] text-right`,a?`text-z-active-text`:`text-z-accent`),children:e.passwordMinLength||8})]})]})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary px-1`,children:`Rate Limiting`}),(0,Q.jsxs)(`div`,{className:X(`border rounded-none`,`z-panel`),children:[(0,Q.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 p-5`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Window (minutes)`}),(0,Q.jsx)(`input`,{type:`number`,value:e.rateLimitWindow||15,onChange:t=>r({...e,rateLimitWindow:parseInt(t.target.value)||15}),className:R,placeholder:`15`})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Max Requests / Window`}),(0,Q.jsx)(`input`,{type:`number`,value:e.rateLimitMax||100,onChange:t=>r({...e,rateLimitMax:parseInt(t.target.value)||100}),className:R,placeholder:`100`})]})]}),(0,Q.jsxs)(`div`,{className:X(`px-5 pb-4 text-sm text-z-secondary flex items-center gap-2 border-t`,`border-z-border`),children:[(0,Q.jsx)(N,{size:11,className:`text-z-active-text mt-0.5 shrink-0`}),(0,Q.jsxs)(`p`,{className:`mt-3`,children:[`Requests exceeding `,e.rateLimitMax||100,` per `,e.rateLimitWindow||15,` minutes will receive a 429 Too Many Requests error. Applies per IP address.`]})]})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary px-1`,children:`CORS & Origins`}),(0,Q.jsxs)(`div`,{className:X(L),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(T,{size:13,className:`text-z-secondary`}),(0,Q.jsx)(`label`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:`Allowed Origins`})]}),(0,Q.jsx)(`button`,{onClick:()=>w(!C),className:`text-sm text-z-active-text hover:text-z-active-text font-semibold`,children:C?`Collapse`:`Configure`})]}),C&&(0,Q.jsxs)(`div`,{className:`space-y-2 pt-2`,children:[(0,Q.jsx)(`textarea`,{value:(e.corsOrigins||[]).join(`
2
+ `),onChange:t=>r({...e,corsOrigins:t.target.value.split(`
3
+ `).map(e=>e.trim()).filter(Boolean)}),rows:4,placeholder:`https://yoursite.com
4
+ https://app.yoursite.com
5
+ http://localhost:3000`,className:X(R,`resize-none font-mono`)}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`One origin per line. Use * to allow all (not recommended in production).`})]})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary px-1`,children:`Two-Factor Authentication`}),(0,Q.jsxs)(`div`,{className:X(`border rounded-none p-6 space-y-6`,a?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-z-panel border-z-border`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,Q.jsx)(`div`,{className:X(`p-3`,a?`bg-z-accent/20 text-z-active-text`:`bg-z-active-bg text-z-accent`),children:y?(0,Q.jsx)(h,{size:24}):(0,Q.jsx)(x,{size:24})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:`Two-Factor Authentication (TOTP)`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary mt-1`,children:`Secure your admin account with an authenticator app (Google Authenticator, Authy, 1Password)`})]})]}),y?(0,Q.jsxs)(`div`,{className:X(`flex items-center gap-2 text-sm font-semibold `,a?`text-z-active-text`:`text-z-accent`),children:[(0,Q.jsx)(h,{size:16}),` 2FA is Active on your account`]}):s===`idle`?(0,Q.jsx)(`button`,{onClick:P,className:X(`px-6 py-3 text-z-primary text-sm font-semibold border transition-all`,a?`bg-z-accent border-transparent hover:opacity-90 shadow-sm`:`bg-z-accent border-transparent hover:brightness-110`),children:`Enable 2FA`}):s===`loading`?(0,Q.jsx)(S,{className:X(`animate-spin`,a?`text-z-active-text`:`text-z-secondary`),size:24}):(0,Q.jsxs)(`div`,{className:`space-y-5`,children:[(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold `,a?`text-z-muted`:`text-z-secondary`),children:`1. Scan this QR code with your authenticator app`}),l&&(0,Q.jsx)(`img`,{src:l,alt:`2FA QR Code`,className:`w-48 h-48 border-4 border-z-border rounded-none`})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold `,a?`text-z-muted`:`text-z-secondary`),children:`2. Enter the 6-digit code to verify`}),(0,Q.jsxs)(`div`,{className:`flex gap-3 items-center`,children:[(0,Q.jsx)(`input`,{type:`text`,placeholder:`000000`,maxLength:6,value:f,onChange:e=>p(e.target.value.replace(/\D/g,``)),className:X(R,`max-w-[140px] text-center text-2xl font-mono`)}),(0,Q.jsxs)(`button`,{onClick:F,disabled:f.length!==6||m,className:X(`px-6 py-3 disabled:opacity-50 text-z-primary text-sm font-semibold border flex items-center gap-2`,a?`bg-z-accent border-transparent hover:opacity-90`:`bg-z-accent border-transparent hover:brightness-110`),children:[m?(0,Q.jsx)(S,{size:13,className:`animate-spin`}):(0,Q.jsx)(_,{size:13}),`Verify & Enable`]})]})]})]})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-1`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary`,children:`Active Sessions`}),(0,Q.jsxs)(`button`,{onClick:M,className:`text-sm text-z-active-text hover:text-z-active-text font-semibold flex items-center gap-1`,children:[(0,Q.jsx)(g,{size:10}),` Refresh`]})]}),(0,Q.jsx)(`div`,{className:X(`border rounded-none overflow-hidden`,`z-panel`),children:O?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Q.jsx)(S,{size:20,className:`text-z-active-text animate-spin`})}):E.length===0?(0,Q.jsxs)(`div`,{className:`py-8 text-center`,children:[(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`No active session data available`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-primary mt-1`,children:`Sessions are tracked automatically on login`})]}):(0,Q.jsx)(`div`,{className:`divide-y`,style:{borderColor:`var(--z-border)`},children:E.map(e=>(0,Q.jsxs)(`div`,{className:`flex items-center gap-4 px-5 py-3`,children:[(0,Q.jsx)(`div`,{className:X(`w-8 h-8 flex items-center justify-center flex-shrink-0`,a?`bg-z-hover text-z-muted`:`bg-[var(--z-bg-input)] text-z-secondary`),children:(0,Q.jsx)(n,{size:14})}),(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Q.jsxs)(`p`,{className:X(`text-sm font-semibold truncate`,`text-z-primary`),children:[e.ipAddress||`Unknown IP`,e.current&&(0,Q.jsx)(`span`,{className:`ml-2 text-sm text-z-active-text font-semibold px-1.5 border border-z-active-border bg-z-active-bg`,children:`CURRENT`})]}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary truncate`,children:e.userAgent||`Unknown device`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-primary mt-0.5`,children:e.lastActivityAt?`Active ${new Date(e.lastActivityAt).toLocaleString()}`:`Created ${new Date(e.createdAt).toLocaleString()}`})]}),!e.current&&(0,Q.jsx)(`button`,{onClick:()=>I(e.id),disabled:A===e.id,className:`p-2 text-z-secondary hover:text-red-400 transition-colors disabled:opacity-40`,title:`Revoke session`,children:A===e.id?(0,Q.jsx)(S,{size:14,className:`animate-spin`}):(0,Q.jsx)(d,{size:14})})]},e.id))})})]})]})},Ye=[{id:`custom`,label:`Custom SMTP`,host:``,port:587},{id:`gmail`,label:`Gmail`,host:`smtp.gmail.com`,port:587},{id:`sendgrid`,label:`SendGrid`,host:`smtp.sendgrid.net`,port:587},{id:`mailgun`,label:`Mailgun`,host:`smtp.mailgun.org`,port:587},{id:`ses`,label:`Amazon SES`,host:`email-smtp.us-east-1.amazonaws.com`,port:587},{id:`outlook`,label:`Outlook / Office365`,host:`smtp.office365.com`,port:587},{id:`zoho`,label:`Zoho Mail`,host:`smtp.zoho.com`,port:587},{id:`postmark`,label:`Postmark`,host:`smtp.postmarkapp.com`,port:587},{id:`resend`,label:`Resend`,host:`smtp.resend.com`,port:587}],Xe=({settings:e,setSettings:t,theme:i,testingSmtp:a,setTestingSmtp:o})=>{let c=i===`dark`,[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(`custom`),[p,m]=(0,Z.useState)(``),[h,g]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(null),C=(0,Z.useRef)(!0);(0,Z.useEffect)(()=>()=>{C.current=!1},[]);let w=n=>{let r=Ye.find(e=>e.id===n);r&&(f(n),r.host&&t({...e,smtpHost:r.host,smtpPort:r.port}))},T=async()=>{o(!0),x(null);try{let t=await Y.post(`/system/smtp/test`,{smtpHost:e.smtpHost,smtpPort:e.smtpPort,smtpUser:e.smtpUser,smtpPass:e.smtpPass,resendKey:e.resendKey,fromEmail:e.fromEmail,smtpSecure:e.smtpSecure});x({ok:!0,msg:t.data?.message||`Connection successful`}),J.success(t.data?.message||`SMTP connected successfully`)}catch(e){x({ok:!1,msg:e?.response?.data?.error||e?.response?.data?.message||`SMTP connection failed`}),J.error(`SMTP connection failed`)}finally{o(!1)}},E=async()=>{if(!p.trim())return J.error(`Enter a recipient email`);y(!0);try{await Y.post(`/system/smtp/send-test`,{to:p,smtpHost:e.smtpHost,smtpPort:e.smtpPort,smtpUser:e.smtpUser,smtpPass:e.smtpPass,resendKey:e.resendKey,fromEmail:e.fromEmail}),J.success(`Test email sent to ${p}`),g(!1)}catch{J.error(`Failed to send test email`)}finally{y(!1)}},D=X(`p-5 border rounded-none transition-all`,c?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-[var(--z-bg-input)]/50 border-z-border shadow-sm`),O=X(`w-full border rounded-none py-2.5 px-4 text-sm outline-none transition-all focus:ring-1 focus:ring-z-active-border focus:border-z-accent`,c?`bg-app/80 border-z-border text-z-primary placeholder:text-z-primary`:`bg-z-panel border-z-border`),k=e.smtpPort===465?`SSL`:e.smtpPort===587?`TLS/STARTTLS`:`Custom`;return(0,Q.jsxs)(`div`,{className:`space-y-5`,children:[(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary px-1`,children:`Quick Configure`}),(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:Ye.map(e=>(0,Q.jsx)(`button`,{onClick:()=>w(e.id),className:X(`px-3 py-1.5 text-sm font-semibold border transition-all`,d===e.id?c?`bg-z-accent/20 border-z-active-border text-z-active-text`:`bg-z-active-bg border-z-active-border text-z-accent`:c?`bg-z-hover border-z-border text-z-secondary hover:text-z-secondary`:`bg-z-input border-z-border text-z-secondary`),children:e.label},e.id))})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,Q.jsxs)(`div`,{className:X(D,`space-y-2`),children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`SMTP Relay Host`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(n,{size:12,className:`text-z-secondary shrink-0`}),(0,Q.jsx)(`input`,{type:`text`,value:e.smtpHost||``,onChange:n=>t({...e,smtpHost:n.target.value}),className:O,placeholder:`smtp.example.com`})]})]}),(0,Q.jsxs)(`div`,{className:X(D,`space-y-2`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Port & Encryption`}),(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold px-2 py-0.5 border`,k===`SSL`?`text-z-active-text border-z-active-border bg-z-active-bg`:k===`TLS/STARTTLS`?`text-z-active-text border-z-accent/30 bg-z-accent/10`:`text-z-secondary border-z-border bg-z-hover`),children:k})]}),(0,Q.jsxs)(`div`,{className:`flex gap-2`,children:[[25,465,587,2525].map(n=>(0,Q.jsx)(`button`,{onClick:()=>t({...e,smtpPort:n}),className:X(`px-3 py-2 text-sm font-semibold border transition-all`,e.smtpPort===n?c?`bg-z-accent/20 border-z-active-border text-z-active-text`:`bg-z-active-bg border-z-active-border text-z-accent`:c?`bg-z-hover border-z-border text-z-secondary`:`bg-z-input border-z-border text-z-secondary`),children:n},n)),(0,Q.jsx)(`input`,{type:`number`,value:e.smtpPort||587,onChange:n=>t({...e,smtpPort:parseInt(n.target.value)||587}),className:X(O,`max-w-20`)})]})]}),(0,Q.jsxs)(`div`,{className:X(D,`space-y-2`),children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`SMTP Username`}),(0,Q.jsx)(`input`,{type:`text`,value:e.smtpUser||``,onChange:n=>t({...e,smtpUser:n.target.value}),className:O,placeholder:`user@example.com`})]}),(0,Q.jsxs)(`div`,{className:X(D,`space-y-2`),children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`SMTP Password`}),(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`input`,{type:l?`text`:`password`,value:e.smtpPass||``,onChange:n=>t({...e,smtpPass:n.target.value}),className:X(O,`pr-10`),placeholder:`••••••••`}),(0,Q.jsx)(`button`,{onClick:()=>u(!l),type:`button`,className:`absolute right-3 top-1/2 -translate-y-1/2 text-z-secondary hover:text-z-secondary transition-colors`,children:l?(0,Q.jsx)(L,{size:13}):(0,Q.jsx)(r,{size:13})})]})]}),(0,Q.jsxs)(`div`,{className:X(D,`space-y-2 md:col-span-2 mt-4`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,Q.jsx)(xe,{size:14,className:`text-z-accent`}),(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-primary`,children:`Resend Integration`})]}),(0,Q.jsx)(`p`,{className:`text-xs text-z-secondary mb-2`,children:`If provided, Zenith will use Resend instead of custom SMTP.`}),(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(`input`,{type:l?`text`:`password`,value:e.resendKey||``,onChange:n=>t({...e,resendKey:n.target.value}),className:X(O,`pr-10`),placeholder:`re_123456789`}),(0,Q.jsx)(`button`,{onClick:()=>u(!l),type:`button`,className:`absolute right-3 top-1/2 -translate-y-1/2 text-z-secondary hover:text-z-secondary transition-colors`,children:l?(0,Q.jsx)(L,{size:13}):(0,Q.jsx)(r,{size:13})})]})]}),(0,Q.jsxs)(`div`,{className:X(D,`space-y-2`),children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`From Email Address`}),(0,Q.jsx)(`input`,{type:`email`,value:e.fromEmail||``,onChange:n=>t({...e,fromEmail:n.target.value}),className:O,placeholder:`noreply@yoursite.com`})]}),(0,Q.jsxs)(`div`,{className:X(D,`space-y-2`),children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`From Display Name`}),(0,Q.jsx)(`input`,{type:`text`,value:e.smtpFromName||``,onChange:n=>t({...e,smtpFromName:n.target.value}),className:O,placeholder:`Zenith CMS`})]})]}),(0,Q.jsxs)(`div`,{className:X(D,`space-y-2`),children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Email Subject Prefix (optional)`}),(0,Q.jsx)(`input`,{type:`text`,value:e.emailSubjectPrefix||``,onChange:n=>t({...e,emailSubjectPrefix:n.target.value}),className:O,placeholder:`[MyApp] `}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`Prepended to all outgoing email subjects, e.g. "[Zenith] Password Reset"`})]}),(0,Q.jsxs)(`div`,{className:X(`flex items-center justify-between p-4 border`,`bg-z-panel border-z-border`),children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:`Force SSL/TLS`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary mt-0.5`,children:`Use implicit TLS (port 465). Disable for STARTTLS (port 587)`})]}),(0,Q.jsxs)(`label`,{className:`relative inline-flex items-center cursor-pointer`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:!!e.smtpSecure,onChange:n=>t({...e,smtpSecure:n.target.checked,smtpPort:n.target.checked?465:587}),className:`sr-only peer`}),(0,Q.jsx)(`div`,{className:X(`w-11 h-6 rounded-none peer peer-checked:after:translate-x-full after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-z-panel after:rounded-none after:h-5 after:w-5 after:transition-all border shadow-inner`,`bg-z-input peer-checked:bg-z-accent border-z-border`)})]})]}),b&&(0,Q.jsxs)(`div`,{className:X(`flex items-center gap-3 p-4 border`,b.ok?c?`bg-z-accent/5 border-z-accent/20`:`bg-z-active-bg border-z-active-border`:c?`bg-red-500/5 border-red-500/20`:`bg-red-50 border-red-200`),children:[b.ok?(0,Q.jsx)(_,{size:14,className:`text-z-active-text shrink-0`}):(0,Q.jsx)(s,{size:14,className:`text-red-400 shrink-0`}),(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold `,b.ok?`text-z-active-text`:`text-red-400`),children:b.msg})]}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,Q.jsxs)(`button`,{onClick:T,disabled:a,className:X(`flex items-center gap-2 px-6 py-3 text-sm font-semibold border transition-all active:scale-95`,c?`bg-z-accent border-transparent text-z-primary hover:opacity-90 shadow-sm`:`bg-z-accent text-z-primary border-transparent hover:brightness-110`),children:[a?(0,Q.jsx)(S,{size:13,className:`animate-spin`}):(0,Q.jsx)(xe,{size:13}),`Test Connection`]}),(0,Q.jsxs)(`button`,{onClick:()=>g(!h),className:X(`flex items-center gap-2 px-4 py-3 text-sm font-semibold border transition-all`,c?`border-z-border text-z-muted hover:text-z-primary`:`border-z-border text-z-secondary`),children:[(0,Q.jsx)(I,{size:12}),`Send Test Email`]})]}),h&&(0,Q.jsxs)(`div`,{className:X(`p-4 border space-y-3`,c?`bg-z-panel border-z-border`:`bg-z-input border-z-border`),children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Test Recipient Email`}),(0,Q.jsxs)(`div`,{className:`flex gap-3`,children:[(0,Q.jsx)(`input`,{type:`email`,value:p,onChange:e=>m(e.target.value),placeholder:`you@example.com`,className:X(O,`flex-1`),onKeyDown:e=>e.key===`Enter`&&E()}),(0,Q.jsxs)(`button`,{onClick:E,disabled:v||!p.trim(),className:X(`flex items-center gap-2 px-5 py-2.5 text-sm font-semibold border transition-all disabled:opacity-40`,c?`bg-z-accent text-z-logo-text border-transparent hover:opacity-90`:`bg-z-accent text-z-primary border-transparent hover:brightness-110`),children:[v?(0,Q.jsx)(S,{size:12,className:`animate-spin`}):(0,Q.jsx)(I,{size:12}),`Send`]})]}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`A sample email will be sent using the SMTP settings above.`})]})]})},Ze=({onClose:e,onInvited:t,theme:n})=>{let[r,i]=(0,Z.useState)(``),[a,o]=(0,Z.useState)(`editor`),[s,c]=(0,Z.useState)([`admin`,`editor`,`viewer`]),[l,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(!1),p=(0,Z.useRef)(!0);return(0,Z.useEffect)(()=>((async()=>{try{let e=await Y.get(`/system/roles`);if(e.data?.data){let t=e.data.data.map(e=>e.roleName);c(e=>Array.from(new Set([...e,...t])))}}catch{}})(),()=>{p.current=!1}),[]),(0,Q.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-[var(--z-bg-modal)] backdrop-blur-sm`,children:(0,Q.jsxs)(`div`,{className:X(`w-full max-w-md border rounded-none-none shadow-2xl`,n===`dark`?`bg-app border-z-border`:`bg-z-panel border-z-border shadow-sm shadow-[var(--z-border)]`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-8 py-6 border-b border-z-border`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`w-10 h-10 rounded-none-none bg-z-panel border border-z-border/20 flex items-center justify-center`,children:(0,Q.jsx)(q,{size:18,className:`text-z-secondary `})}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold tracking-wide`,children:`Initialize Operator`})]}),(0,Q.jsx)(`button`,{onClick:e,className:`text-z-secondary hover:text-z-primary transition-colors`,children:(0,Q.jsx)(W,{size:18})})]}),d?(0,Q.jsxs)(`div`,{className:`px-8 py-12 text-center space-y-4`,children:[(0,Q.jsx)(`div`,{className:`w-16 h-16 mx-auto rounded-none-none bg-z-panel border border-z-border/20 flex items-center justify-center`,children:(0,Q.jsx)(q,{size:28,className:`text-z-secondary `})}),(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary `,children:`Invitation Dispatched`}),(0,Q.jsxs)(`p`,{className:`text-sm text-z-secondary`,children:[r,` — check inbox for password reset link`]})]}):(0,Q.jsxs)(`form`,{onSubmit:async n=>{if(n.preventDefault(),r.trim()){u(!0);try{await Y.post(`/system/members`,{email:r.trim(),role:a}),J.success(`Invitation sent to ${r}`),f(!0),t(),setTimeout(()=>{p.current&&e()},1200)}catch(e){J.error(e?.response?.data?.error||`Failed to send invitation`)}finally{u(!1)}}},className:`px-8 py-6 space-y-6`,children:[(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Operator Email`}),(0,Q.jsx)(`input`,{type:`email`,value:r,onChange:e=>i(e.target.value),required:!0,autoFocus:!0,placeholder:`operator@example.com`,className:X(`w-full border rounded-none-none py-4 px-5 text-[13px] font-semibold transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,n===`dark`?`bg-z-hover border-z-border text-z-primary focus:border-z-border/50`:`bg-z-input border-z-border focus:border-z-border`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Auth Tier`}),(0,Q.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2`,children:s.map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>o(e),className:X(`py-3 text-sm font-semibold border rounded-none-none transition-all`,a===e?`border-z-border/40 bg-z-panel text-z-secondary`:n===`dark`?`border-z-border text-z-secondary hover:border-z-border`:`border-z-border text-z-muted hover:border-z-border-strong`),children:e},e))})]}),(0,Q.jsx)(`button`,{type:`submit`,disabled:l||!r.trim(),className:X(`w-full py-4 rounded-none-none text-sm font-semibold shadow-lg transition-all active:scale-95 disabled:opacity-40`,n===`dark`?`bg-z-border hover:bg-z-accent text-z-primary`:`bg-z-accent hover:brightness-110 text-z-primary`),children:l?(0,Q.jsxs)(`span`,{className:`flex items-center justify-center gap-2`,children:[(0,Q.jsx)(S,{size:14,className:`animate-spin`}),`Dispatching Invite...`]}):`Dispatch Invitation`})]}),(0,Q.jsx)(`div`,{className:`px-8 pb-6`,children:(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary text-center`,children:`48h expiring token · sent via SMTP relay · password set on first login`})})]})})},Qe=ne(),$e=[`var(--z-accent)`,`#3B82F6`,`#F59E0B`,`#EF4444`,`#EC4899`,`var(--z-accent)`,`#06B6D4`,`#64748B`],et=({user:e,onClose:t,onUpdated:n,theme:r})=>{let{data:i}=Me(),a=i?.collections||[],o=i?.globals||[],[s,c]=(0,Z.useState)([]),l=[...s.map(e=>({id:`site:${e.slug}`,label:`Site: ${e.name}`})),...a.map(e=>({id:`col:${e.slug}`,label:`Collection: ${e.name}`})),...o.map(e=>({id:`glb:${e.slug}`,label:`Global: ${e.name}`}))],[u,d]=(0,Z.useState)(e.role||`viewer`),[f,p]=(0,Z.useState)(e.color||``),[m,h]=(0,Z.useState)(new Set(e.specialAccess&&Array.isArray(e.specialAccess)?e.specialAccess:[])),[g,_]=(0,Z.useState)([`admin`,`editor`,`viewer`]),[v,y]=(0,Z.useState)(!1),b=(0,Z.useRef)(!0);(0,Z.useEffect)(()=>((async()=>{try{let[e,t]=await Promise.all([Y.get(`/roles`).catch(()=>({data:{data:[]}})),Y.get(`/sites`).catch(()=>({data:{data:[]}}))]);if(e.data?.data){let t=e.data.data.map(e=>e.roleName.toLowerCase());_(Array.from(new Set([`admin`,`editor`,`viewer`,...t])))}t.data?.data&&c(t.data.data)}catch{}})(),()=>{b.current=!1}),[]);let x=e=>{h(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})};return(0,Qe.createPortal)((0,Q.jsx)(`div`,{className:`fixed inset-0 z-[9999] flex items-center justify-center bg-[var(--z-bg-modal)] backdrop-blur-sm p-4`,children:(0,Q.jsxs)(`div`,{className:X(`w-full max-w-md border rounded-none-none shadow-2xl max-h-[90vh] flex flex-col`,r===`dark`?`bg-app border-z-border`:`bg-z-panel border-z-border shadow-sm shadow-[var(--z-border)]`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-8 py-6 border-b border-z-border shrink-0`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`w-10 h-10 rounded-none-none bg-z-panel border border-z-border/20 flex items-center justify-center`,children:(0,Q.jsx)(Ce,{size:18,className:`text-z-secondary `})}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold tracking-wide text-inherit`,children:`Edit Operator`})]}),(0,Q.jsx)(`button`,{onClick:t,className:`text-z-secondary hover:text-z-active-text transition-colors`,children:(0,Q.jsx)(W,{size:18})})]}),(0,Q.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:(0,Q.jsxs)(`form`,{onSubmit:async r=>{r.preventDefault(),y(!0);try{let r={role:u};f&&(r.color=f),r.specialAccess=Array.from(m),await Y.patch(`/system/users/${e._id}`,r),J.success(`Operator profile updated`),n(),b.current&&t()}catch(e){J.error(e?.response?.data?.error||`Failed to update operator`)}finally{b.current&&y(!1)}},className:`px-8 py-6 space-y-8`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`p`,{className:`text-[14px] font-semibold`,children:e.email}),(0,Q.jsxs)(`p`,{className:`text-sm text-z-secondary`,children:[`ID: `,e._id]})]}),(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Auth Tier`}),(0,Q.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2`,children:g.map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>d(e),className:X(`py-3 text-sm font-semibold border rounded-none-none transition-all`,u===e?`border-z-accent/40 bg-z-active-bg text-z-active-text`:r===`dark`?`border-z-border text-z-secondary hover:border-z-border`:`border-z-border text-z-muted hover:border-z-border-strong`),children:e},e))})]}),(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Profile Color`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[$e.map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>p(e),className:X(`w-8 h-8 rounded-none-none border-2 transition-transform hover:scale-110 flex items-center justify-center`,f===e?`border-z-border shadow-[0_0_10px_rgba(255,255,255,0.3)]`:`border-transparent`),style:{backgroundColor:e},title:`Select color ${e}`,children:f===e&&(0,Q.jsx)(U,{size:12,className:`text-z-primary mix-blend-difference`})},e)),(0,Q.jsx)(`input`,{type:`color`,value:f||`#000000`,onChange:e=>p(e.target.value),className:`w-8 h-8 cursor-pointer rounded-none-none bg-transparent border-0 p-0`,title:`Custom Color`})]}),!f&&(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`Currently auto-assigned deterministically`})]}),(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Restrict Content Access`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary mb-2`,children:`Select exactly which collections this operator can view/edit. If none are selected, they default to standard role constraints.`}),(0,Q.jsx)(`div`,{className:`space-y-2 max-h-48 overflow-y-auto pr-2 custom-scrollbar`,children:l.length>0?l.map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>x(e.id),className:X(`w-full flex items-center justify-between p-3 border rounded-none-none transition-all text-left`,m.has(e.id)?r===`dark`?`border-amber-500/30 bg-amber-500/5`:`border-amber-500/30 bg-amber-50`:`border-z-border hover:border-z-border-strong`),children:[(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold `,m.has(e.id)?`text-amber-500`:`text-z-secondary`),children:e.label}),(0,Q.jsx)(`div`,{className:X(`w-4 h-4 border rounded-none-none flex items-center justify-center transition-colors`,m.has(e.id)?`bg-amber-500 border-amber-500 text-z-primary`:`border-z-border/30 text-transparent`),children:(0,Q.jsx)(U,{size:10,strokeWidth:4})})]},e.id)):(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`No collections available to restrict.`})})]}),(0,Q.jsx)(`div`,{className:`pt-4`,children:(0,Q.jsx)(`button`,{type:`submit`,disabled:v,className:X(`w-full py-4 rounded-none-none text-sm font-semibold shadow-lg transition-all active:scale-95 disabled:opacity-40`,r===`dark`?`bg-z-accent hover:bg-z-accent text-z-primary`:`bg-z-accent hover:brightness-110 text-z-logo-text`),children:v?(0,Q.jsxs)(`span`,{className:`flex items-center justify-center gap-2`,children:[(0,Q.jsx)(S,{size:14,className:`animate-spin`}),`Updating Profile...`]}):`Save Operator Profile`})})]})})]})}),document.body)},tt=[`admin`,`editor`,`viewer`],nt={active:`text-z-active-text border-z-active-border bg-z-active-bg`,suspended:`text-red-400 border-red-500/30 bg-red-500/10`,pending:`text-amber-400 border-amber-500/30 bg-amber-500/10`},rt={admin:`text-red-400 border-red-500/30 bg-red-500/10`,editor:`text-amber-400 border-amber-500/30 bg-amber-500/10`,viewer:`text-z-active-text border-z-active-border bg-z-active-bg`},it=({users:e,theme:n,fetchData:r})=>{let a=n===`dark`,[o,s]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),[h,g]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(``),[C,w]=(0,Z.useState)(`all`),[T,E]=(0,Z.useState)(`all`),[D,O]=(0,Z.useState)([]),[k,A]=(0,Z.useState)(!1),j=async e=>{d(e);try{await Y.delete(`/system/users/${e}`),J.success(`Operator removed`),r()}catch(e){J.error(e?.response?.data?.error||`Failed to remove operator`)}finally{d(null)}},M=async e=>{m(e._id);try{let t=e.status===`suspended`;await Y.patch(`/system/users/${e._id}`,{status:t?`active`:`suspended`}),J.success(t?`User reactivated`:`User suspended`),r()}catch{J.error(`Action failed`)}finally{m(null)}},N=async e=>{g(e._id);try{await Y.post(`/auth/forgot-password`,{email:e.email}),J.success(`Password reset sent to ${e.email}`)}catch{J.error(`Failed to send reset email`)}finally{g(null)}},P=async(e,t)=>{y(e._id);try{await Y.patch(`/system/users/${e._id}`,{role:t}),J.success(`Role updated to ${t}`),r()}catch{J.error(`Failed to update role`)}finally{y(null)}},F=async()=>{if(D.length&&window.confirm(`Delete ${D.length} user(s)?`)){A(!0);try{await Promise.all(D.map(e=>Y.delete(`/system/users/${e}`))),J.success(`${D.length} users removed`),O([]),r()}catch{J.error(`Bulk delete failed`)}finally{A(!1)}}},I=e=>{O(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},L=e.filter(e=>{let t=!b||e.email.toLowerCase().includes(b.toLowerCase())||(e.firstName||``).toLowerCase().includes(b.toLowerCase()),n=C===`all`||e.role===C,r=T===`all`||(e.status||`active`)===T;return t&&n&&r}),R=X(`border rounded-none transition-all group`,a?`bg-z-panel backdrop-blur-md border-z-border hover:border-z-active-border shadow-sm`:`bg-z-panel border-z-border shadow-sm hover:border-z-active-border`),z=X(`border rounded-none py-2 px-3 text-sm outline-none transition-all focus:ring-1 focus:ring-z-active-border focus:border-z-accent`,a?`bg-app/80 border-z-border text-z-primary placeholder:text-z-primary`:`bg-z-panel border-z-border`);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,Q.jsxs)(`div`,{className:`relative flex-1 min-w-[200px]`,children:[(0,Q.jsx)(f,{size:12,className:`absolute left-3 top-1/2 -translate-y-1/2 text-z-secondary`}),(0,Q.jsx)(`input`,{value:b,onChange:e=>x(e.target.value),placeholder:`Search by email or name...`,className:X(z,`pl-8 w-full`)})]}),(0,Q.jsxs)(`select`,{value:C,onChange:e=>w(e.target.value),className:X(z,`min-w-[110px]`),children:[(0,Q.jsx)(`option`,{value:`all`,children:`All Roles`}),tt.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))]}),(0,Q.jsxs)(`select`,{value:T,onChange:e=>E(e.target.value),className:X(z,`min-w-[110px]`),children:[(0,Q.jsx)(`option`,{value:`all`,children:`All Status`}),(0,Q.jsx)(`option`,{value:`active`,children:`Active`}),(0,Q.jsx)(`option`,{value:`suspended`,children:`Suspended`}),(0,Q.jsx)(`option`,{value:`pending`,children:`Pending`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[D.length>0&&(0,Q.jsxs)(`button`,{onClick:F,disabled:k,className:X(`flex items-center gap-2 px-3 py-2 text-sm font-semibold border transition-all`,a?`bg-red-500/10 border-red-500/30 text-red-400 hover:bg-red-500/20`:`bg-red-50 border-red-200 text-red-600`),children:[k?(0,Q.jsx)(S,{size:11,className:`animate-spin`}):(0,Q.jsx)(i,{size:11}),`Delete (`,D.length,`)`]}),(0,Q.jsxs)(`span`,{className:X(`text-sm font-semibold `,`text-z-secondary`),children:[L.length,`/`,e.length,` users`]}),(0,Q.jsxs)(`button`,{onClick:()=>s(!0),className:X(`flex items-center gap-2 text-sm font-semibold border px-5 py-2.5 transition-all`,a?`border-z-active-border text-z-active-text hover:bg-z-active-bg`:`border-z-active-border text-z-accent hover:bg-z-active-bg`),children:[(0,Q.jsx)(te,{size:13}),`Invite User`]})]})]}),(0,Q.jsx)(`div`,{className:`space-y-2`,children:L.length===0?(0,Q.jsxs)(`div`,{className:X(`py-12 border border-dashed text-center`,`border-z-border`),children:[(0,Q.jsx)(q,{size:28,className:`text-z-secondary mx-auto mb-3`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`No users match your filters`})]}):L.map(e=>{let n=e.status||`active`,r=n===`suspended`;return(0,Q.jsx)(`div`,{className:R,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-4 p-4`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:D.includes(e._id),onChange:()=>I(e._id),className:`accent-z-accent w-3.5 h-3.5 flex-shrink-0`,onClick:e=>e.stopPropagation()}),(0,Q.jsx)(`div`,{className:X(`w-10 h-10 flex items-center justify-center text-sm font-semibold flex-shrink-0 border`,r?a?`bg-red-500/10 text-red-400 border-red-500/20`:`bg-red-50 text-red-500 border-red-200`:a?`bg-z-active-bg text-z-active-text border-z-active-border`:`bg-z-active-bg text-z-accent border-z-active-border`),children:(e.firstName?.[0]||e.email[0]).toUpperCase()}),(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold leading-none`,`text-z-primary`),children:e.firstName?`${e.firstName} ${e.lastName||``}`.trim():e.email}),(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold px-1.5 py-0.5 border`,rt[e.role]||`text-z-muted border-z-border bg-z-hover`),children:e.role}),(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold px-1.5 py-0.5 border`,nt[n]||nt.active),children:n})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 mt-1.5 flex-wrap`,children:[e.firstName&&(0,Q.jsx)(`span`,{className:`text-sm text-z-secondary`,children:e.email}),e.lastLogin&&(0,Q.jsxs)(`span`,{className:`text-sm text-z-secondary flex items-center gap-1`,children:[(0,Q.jsx)(t,{size:8}),` Last login `,new Date(e.lastLogin).toLocaleDateString()]}),e.createdAt&&(0,Q.jsxs)(`span`,{className:`text-sm text-z-secondary`,children:[`Joined `,new Date(e.createdAt).toLocaleDateString()]})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity`,children:[(0,Q.jsx)(`div`,{className:`relative`,children:(0,Q.jsx)(`select`,{value:e.role,onChange:t=>P(e,t.target.value),disabled:v===e._id,className:X(`text-sm font-semibold border py-1.5 px-2 outline-none transition-all cursor-pointer`,a?`bg-app/80 border-z-border text-z-muted hover:border-z-active-border`:`bg-z-panel border-z-border text-z-secondary`),onClick:e=>e.stopPropagation(),children:tt.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))})}),(0,Q.jsx)(`button`,{onClick:()=>N(e),disabled:h===e._id,className:X(`p-2 transition-colors`,a?`text-z-secondary hover:text-z-active-text`:`text-z-muted hover:text-z-active-text`),title:`Send password reset`,children:h===e._id?(0,Q.jsx)(S,{size:14,className:`animate-spin`}):(0,Q.jsx)(re,{size:14})}),(0,Q.jsx)(`button`,{onClick:()=>l(e),className:X(`p-2 transition-colors`,a?`text-z-secondary hover:text-z-active-text`:`text-z-muted hover:text-z-accent`),title:`Edit user`,children:(0,Q.jsx)(Ce,{size:14})}),(0,Q.jsx)(`button`,{onClick:()=>M(e),disabled:p===e._id,className:X(`p-2 transition-colors disabled:opacity-30`,r?a?`text-z-secondary hover:text-z-active-text`:`text-z-muted hover:text-z-accent`:a?`text-z-secondary hover:text-amber-400`:`text-z-muted hover:text-amber-600`),title:r?`Reactivate`:`Suspend`,children:p===e._id?(0,Q.jsx)(S,{size:14,className:`animate-spin`}):r?(0,Q.jsx)(_,{size:14}):(0,Q.jsx)(G,{size:14})}),(0,Q.jsx)(`button`,{onClick:()=>j(e._id),disabled:u===e._id,className:X(`p-2 transition-colors disabled:opacity-30`,a?`text-z-secondary hover:text-red-400`:`text-z-muted hover:text-red-600`),title:`Delete user`,children:u===e._id?(0,Q.jsx)(S,{size:14,className:`animate-spin`}):(0,Q.jsx)(i,{size:14})})]})]})},e._id)})})]}),o&&(0,Q.jsx)(Ze,{onClose:()=>s(!1),onInvited:r,theme:n}),c&&(0,Q.jsx)(et,{user:c,onClose:()=>l(null),onUpdated:r,theme:n})]})},at=({onClose:e,onGenerated:t,onOpenKeyModal:n,theme:r})=>{let[i,a]=(0,Z.useState)(``),[o,s]=(0,Z.useState)(`editor`),[c,l]=(0,Z.useState)(30),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(``);return(0,Q.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-[var(--z-bg-modal)] backdrop-blur-sm`,children:(0,Q.jsxs)(`div`,{className:X(`w-full max-w-md border rounded-none-none shadow-2xl`,r===`dark`?`bg-app border-z-border`:`bg-z-panel border-z-border shadow-sm`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-8 py-6 border-b border-z-border`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`w-10 h-10 rounded-none-none bg-z-panel border border-z-border/20 flex items-center justify-center`,children:(0,Q.jsx)(j,{size:18,className:`text-z-secondary `})}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold tracking-wide`,children:`Generate Access Token`})]}),(0,Q.jsx)(`button`,{onClick:e,className:`text-z-secondary hover:text-z-primary transition-colors`,children:(0,Q.jsx)(W,{size:18})})]}),(0,Q.jsxs)(`form`,{onSubmit:async r=>{if(r.preventDefault(),i.trim()){p(``),d(!0);try{let r=(await Y.post(`/system/api-keys`,{name:i.trim(),role:o,expiresInDays:c})).data.data;n({name:r.name,key:r.key}),t(r),e()}catch(e){p(e?.response?.data?.error||`Failed to generate key`)}finally{d(!1)}}},className:`px-8 py-6 space-y-6`,children:[(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Token Name`}),(0,Q.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),required:!0,autoFocus:!0,placeholder:`e.g. Production Relay`,className:X(`w-full border rounded-none-none py-4 px-5 text-[13px] font-semibold transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,r===`dark`?`bg-z-hover border-z-border text-z-primary focus:border-z-border/50`:`bg-z-input border-z-border focus:border-z-border`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Permissions Tier`}),(0,Q.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2`,children:[`admin`,`editor`,`viewer`].map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>s(e),className:X(`py-3 text-sm font-semibold border rounded-none-none transition-all`,o===e?`border-z-border/40 bg-z-panel text-z-secondary`:r===`dark`?`border-z-border text-z-secondary hover:border-z-border`:`border-z-border text-z-muted hover:border-z-border-strong`),children:e},e))})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Expires After (days)`}),(0,Q.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-2`,children:[7,30,90,365].map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>l(e),className:X(`py-3 text-sm font-semibold border rounded-none-none transition-all`,c===e?`border-z-border/40 bg-z-panel text-z-secondary`:r===`dark`?`border-z-border text-z-secondary hover:border-z-border`:`border-z-border text-z-muted hover:border-z-border-strong`),children:[e,`d`]},e))})]}),f&&(0,Q.jsx)(`p`,{className:`text-sm text-red-500 font-semibold`,children:f}),(0,Q.jsx)(`button`,{type:`submit`,disabled:u||!i.trim(),className:X(`w-full py-4 rounded-none-none text-sm font-semibold shadow-lg transition-all active:scale-95 disabled:opacity-40`,r===`dark`?`bg-z-border hover:bg-z-accent text-z-primary`:`bg-z-accent hover:brightness-110 text-z-primary`),children:u?(0,Q.jsxs)(`span`,{className:`flex items-center justify-center gap-2`,children:[(0,Q.jsx)(S,{size:14,className:`animate-spin`}),`Generating...`]}):`Generate Token`})]}),(0,Q.jsx)(`div`,{className:`px-8 pb-6`,children:(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary text-center`,children:`Keys are shown only once · store securely`})})]})})},ot=({theme:e,apiKeys:t})=>{let[r,i]=(0,Z.useState)(`fetch`),[a,s]=(0,Z.useState)(!1),c=localStorage.getItem(`activeSiteId`)||`<YOUR_SITE_ID>`,l=window.location.origin,u={fetch:`fetch('${l}/api/sites/${c}/collections/posts/items', {
6
+ headers: {
7
+ 'Authorization': 'Bearer <YOUR_API_KEY>',
8
+ 'X-Zenith-Site-Id': '${c}'
9
+ }
10
+ })
11
+ .then(res => res.json())
12
+ .then(data => console.log(data));`,curl:`curl -X GET '${l}/api/sites/${c}/collections/posts/items' \\
13
+ -H 'Authorization: Bearer <YOUR_API_KEY>' \\
14
+ -H 'X-Zenith-Site-Id: ${c}'`,axios:`import axios from 'axios';
15
+
16
+ axios.get('${l}/api/sites/${c}/collections/posts/items', {
17
+ headers: {
18
+ 'Authorization': 'Bearer <YOUR_API_KEY>',
19
+ 'X-Zenith-Site-Id': '${c}'
20
+ }
21
+ }).then(response => console.log(response.data));`};return(0,Q.jsxs)(`div`,{className:`mt-12 pt-12 border-t border-z-border space-y-8`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Q.jsxs)(`h3`,{className:`text-xl font-semibold flex items-center gap-3`,children:[(0,Q.jsx)(o,{className:`text-z-secondary `,size:24}),`Developer Integration Guide`]}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary font-bold max-w-2xl`,children:`Everything you need to connect your frontend to Zenith CMS. Follow these steps to fetch your content dynamically.`})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-6`,children:[(0,Q.jsxs)(`div`,{className:X(`p-6 border rounded-none-none relative overflow-hidden group`,e===`dark`?`bg-z-panel border-z-border`:`bg-z-input border-z-border`),children:[(0,Q.jsx)(`div`,{className:`absolute top-0 right-0 p-4 opacity-10 group-hover:opacity-20 transition-opacity`,children:(0,Q.jsx)(n,{size:48})}),(0,Q.jsx)(`div`,{className:`w-10 h-10 bg-z-hover border-z-border-strong text-z-secondary flex items-center justify-center rounded-none-none mb-4 font-semibold`,children:`1`}),(0,Q.jsx)(`h4`,{className:`text-[14px] font-semibold mb-2`,children:`Generate a Key`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary font-medium leading-relaxed`,children:`Create an API key above. Make sure to copy the secret key immediately, as it will only be shown once for security reasons.`})]}),(0,Q.jsxs)(`div`,{className:X(`p-6 border rounded-none-none relative overflow-hidden group`,e===`dark`?`bg-z-panel border-z-border`:`bg-z-input border-z-border`),children:[(0,Q.jsx)(`div`,{className:`absolute top-0 right-0 p-4 opacity-10 group-hover:opacity-20 transition-opacity`,children:(0,Q.jsx)(N,{size:48})}),(0,Q.jsx)(`div`,{className:`w-10 h-10 bg-z-hover border-z-border-strong text-z-secondary flex items-center justify-center rounded-none-none mb-4 font-semibold`,children:`2`}),(0,Q.jsx)(`h4`,{className:`text-[14px] font-semibold mb-2`,children:`Site Identification`}),(0,Q.jsxs)(`p`,{className:`text-sm text-z-secondary font-medium leading-relaxed`,children:[`Include the `,(0,Q.jsx)(`strong`,{children:`X-Zenith-Site-Id`}),` header in all your requests. Your current site ID is `,(0,Q.jsx)(`code`,{className:`bg-app/20 px-1 py-0.5 rounded-none text-z-secondary `,children:c}),`.`]})]}),(0,Q.jsxs)(`div`,{className:X(`p-6 border rounded-none-none relative overflow-hidden group`,e===`dark`?`bg-z-panel border-z-border`:`bg-z-input border-z-border`),children:[(0,Q.jsx)(`div`,{className:`absolute top-0 right-0 p-4 opacity-10 group-hover:opacity-20 transition-opacity`,children:(0,Q.jsx)(z,{size:48})}),(0,Q.jsx)(`div`,{className:`w-10 h-10 bg-z-hover border-z-border-strong text-z-secondary flex items-center justify-center rounded-none-none mb-4 font-semibold`,children:`3`}),(0,Q.jsx)(`h4`,{className:`text-[14px] font-semibold mb-2`,children:`Fetch Collections`}),(0,Q.jsxs)(`p`,{className:`text-sm text-z-secondary font-medium leading-relaxed`,children:[`Query the endpoints to retrieve your data. Replace `,(0,Q.jsx)(`code`,{children:`posts`}),` in the URL with the name of your specific collection.`]})]})]}),(0,Q.jsxs)(`div`,{className:X(`border rounded-none-none overflow-hidden mt-8`,e===`dark`?`bg-[#0A0A0A] border-z-border`:`bg-z-accent border-z-border`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b border-z-border bg-z-panel`,children:[(0,Q.jsx)(`div`,{className:`flex items-center gap-2`,children:[`fetch`,`curl`,`axios`].map(e=>(0,Q.jsx)(`button`,{onClick:()=>i(e),className:X(`px-4 py-1.5 text-sm font-semibold rounded-none-none transition-all`,r===e?`bg-z-hover border-z-border-strong text-z-secondary border border-z-border/30`:`text-z-secondary hover:text-z-secondary border border-transparent`),children:e},e))}),(0,Q.jsxs)(`button`,{onClick:()=>{navigator.clipboard.writeText(u[r]),s(!0),setTimeout(()=>s(!1),2e3)},className:`text-z-muted hover:text-z-primary transition-colors flex items-center gap-2 text-sm font-bold`,children:[a?(0,Q.jsx)(U,{size:14,className:`text-z-secondary `}):(0,Q.jsx)(v,{size:14}),a?`Copied!`:`Copy Code`]})]}),(0,Q.jsx)(`div`,{className:`p-6 overflow-x-auto`,children:(0,Q.jsx)(`pre`,{className:`text-[13px] text-z-secondary font-mono leading-relaxed`,children:(0,Q.jsx)(`code`,{dangerouslySetInnerHTML:{__html:u[r].replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/'(.*?)'/g,`<span class="text-z-secondary">'$1'</span>`).replace(/&lt;YOUR_API_KEY&gt;/g,`<span class="text-amber-400 font-bold">&lt;YOUR_API_KEY&gt;</span>`)}})})})]}),(0,Q.jsxs)(`div`,{className:X(`p-6 border-l-4 border-z-border bg-z-hover mt-6`,`text-z-primary`),children:[(0,Q.jsxs)(`h4`,{className:`flex items-center gap-2 text-[14px] font-semibold mb-2 text-z-secondary `,children:[(0,Q.jsx)(w,{size:16}),`Pro Tip for Next.js / React Users`]}),(0,Q.jsxs)(`p`,{className:`text-sm font-medium leading-relaxed opacity-80`,children:[`Never expose your API keys in the browser! Always make calls to Zenith CMS from a secure environment like Next.js API Routes, Server Actions, or getServerSideProps. Use environment variables (e.g., `,(0,Q.jsx)(`code`,{children:`process.env.ZENITH_API_KEY`}),`) to store your keys safely.`]})]})]})};function st(e){if(!e)return null;let t=new Date(e).getTime();return Math.ceil((t-Date.now())/(1e3*60*60*24))}function ct({expiresAt:e,dark:t}){let n=st(e);return n===null?null:n<0?(0,Q.jsxs)(`span`,{className:`text-sm font-semibold px-2 py-0.5 border border-red-500/30 bg-red-500/10 text-red-400 flex items-center gap-1`,children:[(0,Q.jsx)(s,{size:8}),` Expired`]}):n<=7?(0,Q.jsxs)(`span`,{className:`text-sm font-semibold px-2 py-0.5 border border-amber-500/30 bg-amber-500/10 text-amber-400`,children:[n,`d left`]}):n<=30?(0,Q.jsxs)(`span`,{className:`text-sm font-semibold px-2 py-0.5 border border-yellow-500/30 bg-yellow-500/10 text-yellow-400`,children:[n,`d`]}):(0,Q.jsxs)(`span`,{className:`text-sm font-semibold px-2 py-0.5 border border-z-active-border bg-z-active-bg text-z-active-text`,children:[n,`d`]})}var lt={admin:`text-red-400 border-red-500/30 bg-red-500/10`,editor:`text-amber-400 border-amber-500/30 bg-amber-500/10`,viewer:`text-z-active-text border-z-active-border bg-z-active-bg`},ut=({apiKeys:e,theme:t,fetchData:n,setNewKey:r})=>{let a=t===`dark`,[o,c]=(0,Z.useState)(!1),[l,u]=(0,Z.useState)(null),[d,f]=(0,Z.useState)(null),[p,m]=(0,Z.useState)(null),h=async e=>{u(e);try{await Y.post(`/system/api-keys/${e}/revoke`),J.success(`Token revoked`),n()}catch(e){J.error(e?.response?.data?.error||`Failed to revoke token`)}finally{u(null)}},g=e=>{navigator.clipboard.writeText(e),f(e),setTimeout(()=>f(null),2e3),J.success(`Key ID copied`)},_=X(`border rounded-none transition-all shadow-sm group`,a?`bg-z-panel backdrop-blur-md border-z-border hover:border-z-active-border`:`bg-z-input border-z-border shadow-sm hover:border-z-active-border`);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-1`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsxs)(`span`,{className:X(`text-sm font-semibold `,`text-z-secondary`),children:[e.length,` Active `,e.length===1?`Credential`:`Credentials`]}),e.some(e=>st(e.expiresAt)!==null&&st(e.expiresAt)<=7)&&(0,Q.jsxs)(`span`,{className:`flex items-center gap-1 text-sm text-amber-400 font-semibold`,children:[(0,Q.jsx)(s,{size:10}),` Expiring Soon`]})]}),(0,Q.jsxs)(`button`,{onClick:()=>c(!0),className:X(`flex items-center gap-2 text-sm font-semibold border px-5 py-2.5 transition-all`,a?`border-z-active-border text-z-active-text hover:bg-z-active-bg hover:border-z-accent`:`border-z-active-border text-z-accent hover:bg-z-active-bg`),children:[(0,Q.jsx)(D,{size:13}),`Generate Token`]})]}),e.length===0?(0,Q.jsx)(`div`,{className:X(`py-10 border border-dashed`,`border-z-border`),children:(0,Q.jsx)(ze,{icon:j,title:`No API keys`,message:`Generate an API key to authenticate external applications against the Zenith CMS API`,action:(0,Q.jsxs)(`button`,{onClick:()=>c(!0),className:X(`flex items-center gap-2 px-6 py-3 text-sm font-semibold border transition-all`,a?`border-z-active-border text-z-active-text hover:bg-z-active-bg`:`border-z-active-border text-z-accent hover:bg-z-active-bg`),children:[(0,Q.jsx)(D,{size:12}),` Generate Token`]})})}):(0,Q.jsx)(`div`,{className:`space-y-3`,children:e.map(e=>{let t=p===e._id;st(e.expiresAt);let n=lt[e.role]||`text-z-muted border-z-border bg-z-hover`;return(0,Q.jsxs)(`div`,{className:_,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-4 px-5 py-4 cursor-pointer`,onClick:()=>m(t?null:e._id),children:[(0,Q.jsx)(`div`,{className:X(`w-12 h-12 flex items-center justify-center border flex-shrink-0`,a?`bg-z-active-bg text-z-active-text border-z-active-border`:`bg-z-active-bg text-z-accent border-z-active-border`),children:(0,Q.jsx)(j,{size:20})}),(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Q.jsx)(`span`,{className:X(`text-[13px] font-semibold `,`text-z-primary`),children:e.name}),(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold px-2 py-0.5 border`,n),children:e.role}),(0,Q.jsx)(ct,{expiresAt:e.expiresAt,dark:a})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 mt-1.5 flex-wrap`,children:[(0,Q.jsxs)(`span`,{className:`text-sm text-z-secondary flex items-center gap-1`,children:[(0,Q.jsx)(Se,{size:9}),`Expires `,new Date(e.expiresAt).toLocaleDateString()]}),e.lastUsed&&(0,Q.jsxs)(`span`,{className:`text-sm text-z-secondary flex items-center gap-1`,children:[(0,Q.jsx)(Ee,{size:9}),`Last used `,new Date(e.lastUsed).toLocaleDateString()]}),e.usageCount!==void 0&&(0,Q.jsxs)(`span`,{className:`text-sm text-z-secondary flex items-center gap-1`,children:[(0,Q.jsx)(T,{size:9}),e.usageCount,` requests`]})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 opacity-0 group-hover:opacity-100 transition-opacity`,children:[(0,Q.jsx)(`button`,{onClick:t=>{t.stopPropagation(),g(e._id)},className:X(`p-2.5 transition-colors`,a?`text-z-secondary hover:text-z-active-text`:`text-z-muted hover:text-z-accent`),title:`Copy key ID`,children:d===e._id?(0,Q.jsx)(U,{size:15,className:`text-z-active-text`}):(0,Q.jsx)(v,{size:15})}),(0,Q.jsx)(`button`,{onClick:t=>{t.stopPropagation(),h(e._id)},disabled:l===e._id,className:X(`p-2.5 transition-colors disabled:opacity-30`,a?`text-z-secondary hover:text-red-400`:`text-z-muted hover:text-red-600`),title:`Revoke token`,children:l===e._id?(0,Q.jsx)(S,{size:15,className:`animate-spin`}):(0,Q.jsx)(i,{size:15})}),(0,Q.jsx)(H,{size:14,className:X(`text-z-secondary transition-transform`,t&&`rotate-90`)})]})]}),t&&(0,Q.jsxs)(`div`,{className:`px-5 pb-5 pt-3 border-t space-y-4`,style:{borderColor:`var(--z-border)`},children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Key ID (prefix)`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`code`,{className:X(`flex-1 font-mono text-sm px-3 py-2 border truncate`,`bg-z-panel border-z-border text-z-primary`),children:e._id}),(0,Q.jsx)(`button`,{onClick:()=>g(e._id),className:X(`p-2 border transition-all`,a?`border-z-border text-z-secondary hover:text-z-primary`:`border-z-border text-z-secondary`),children:d===e._id?(0,Q.jsx)(U,{size:13,className:`text-z-active-text`}):(0,Q.jsx)(v,{size:13})})]})]}),e.permissions&&e.permissions.length>0&&(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Granted Permissions`}),(0,Q.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.permissions.map((e,t)=>(0,Q.jsxs)(`span`,{className:X(`text-sm font-semibold px-2 py-1 border`,a?`bg-z-hover border-z-border text-z-muted`:`bg-z-input border-z-border text-z-secondary`),children:[e.resource,`: `,e.actions.join(`, `)]},t))})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Usage Example`}),(0,Q.jsx)(`pre`,{className:X(`text-sm font-mono p-3 border overflow-x-auto`,`bg-z-input border-z-border text-z-primary`),children:`curl https://api.example.com/api/v1/posts \\
22
+ -H "Authorization: Bearer YOUR_KEY"`})]})]})]},e._id)})}),(0,Q.jsx)(ot,{theme:t,apiKeys:e})]}),o&&(0,Q.jsx)(at,{onClose:()=>c(!1),onGenerated:e=>{r(e),n()},onOpenKeyModal:r,theme:t})]})},dt=({dbStats:e,theme:t})=>{let r=t===`dark`,[c,l]=(0,Z.useState)(!1),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(`mongodb`),[y,b]=(0,Z.useState)([]),[x,C]=(0,Z.useState)(!1),[w,T]=(0,Z.useState)(!1),[E,D]=(0,Z.useState)([]),[O,j]=(0,Z.useState)(!1),M=(0,Z.useCallback)(async()=>{C(!0);try{b((await Y.get(`/system/backup/list`)).data?.data||[])}catch{b([])}finally{C(!1)}},[]),N=(0,Z.useCallback)(async()=>{j(!0);try{D((await Y.get(`/system/db/slow-queries`)).data?.data||[])}catch{D([])}finally{j(!1)}},[]);(0,Z.useEffect)(()=>{w&&M()},[w,M]);let I=async()=>{l(!0);try{let e=(await Y.post(`/system/media/sweep`,{pruneUnreferencedMedia:!0})).data.data;J.success(`Swept ${e.removed||0} orphans · ${e.retained||0} retained`)}catch(e){J.error(e?.response?.data?.error||`Sweep failed`)}finally{l(!1)}},L=async()=>{l(!0);try{await Y.post(`/system/cache/flush`),J.success(`Cache flushed`)}catch(e){J.error(e?.response?.data?.error||`Failed to flush cache`)}finally{l(!1)}},R=async e=>{if(e.preventDefault(),m.trim()){d(!0);try{await Y.post(`/system/db/test-connection`,{uri:m,dialect:_}),J.success(`Connection verified`)}catch(e){J.error(e?.response?.data?.error||`Connection failed`)}finally{d(!1)}}},B=async()=>{p(!0);try{await Y.post(`/system/backup/create`),J.success(`Backup created`),M()}catch(e){J.error(e?.response?.data?.error||`Backup failed`)}finally{p(!1)}},V=async e=>{try{let t=je.getState().token||``,n=je.getState().activeSiteId||``,r=await fetch(`/api/v1/system/backup/download/${e.id}`,{headers:{...t?{Authorization:`Bearer ${t}`}:{},...n?{"x-zenith-site-id":n}:{}}});if(!r.ok)throw Error(`Download failed`);let i=await r.blob(),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=e.filename,o.click()}catch{J.error(`Download failed`)}},te=e?.size?(e.size/1024/1024).toFixed(2):`0.00`,H=e?.storageSize?(e.storageSize/1024/1024).toFixed(2):`0.00`,ne=e?.freeStorageSize?(e.freeStorageSize/1024/1024).toFixed(2):null,U=e?.collections||`0`,W=e?.documents||0,re=e?.indexes||0,ie=e?.avgObjSize||0,G=e?.collectionDetails||[],K=[{label:`Data Size`,value:`${te} MB`,icon:ue,color:`text-z-active-text`,bg:`bg-z-active-bg`,border:`border-z-active-border`},{label:`Storage Used`,value:`${H} MB`,icon:ue,color:`text-pink-400`,bg:`bg-pink-500/10`,border:`border-pink-500/20`},{label:`Collections`,value:String(U),icon:k,color:`text-z-active-text`,bg:`bg-z-accent/10`,border:`border-z-accent/20`},{label:`Documents`,value:Number(W).toLocaleString(),icon:z,color:`text-sky-400`,bg:`bg-sky-500/10`,border:`border-sky-500/20`},{label:`Total Indexes`,value:String(re),icon:ee,color:`text-amber-400`,bg:`bg-amber-500/10`,border:`border-amber-500/20`},{label:`Avg Doc Size`,value:ie?`${ie} B`:`—`,icon:xe,color:`text-violet-400`,bg:`bg-violet-500/10`,border:`border-violet-500/20`}],q=X(`border rounded-none transition-all`,r?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-z-input border-z-border shadow-sm`),ae=X(`border rounded-none py-3 px-4 text-sm font-mono transition-all outline-none focus:ring-1 focus:ring-z-active-border focus:border-z-accent`,r?`bg-app/80 border-z-border text-z-primary placeholder:text-z-primary`:`bg-z-panel border-z-border`);return(0,Q.jsxs)(`div`,{className:`space-y-6`,children:[(0,Q.jsxs)(`div`,{className:X(q,`p-5`),children:[(0,Q.jsxs)(`p`,{className:`text-sm font-semibold text-z-secondary mb-4 flex items-center gap-2`,children:[(0,Q.jsx)(n,{size:13}),` Database Identity`]}),(0,Q.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-3 gap-x-8 gap-y-3`,children:[{label:`Adapter`,value:e?.adapterType||`—`},{label:`Database`,value:e?.dbName||`—`},{label:`Server Ver.`,value:e?.dbVersion||`—`},{label:`Connections`,value:e?.connections==null?`—`:String(e.connections)},{label:`Free Storage`,value:ne?`${ne} MB`:`—`},{label:`Platform`,value:e?.platform||`—`},{label:`Node.js`,value:e?.nodeVersion||`—`},{label:`Process PID`,value:e?.pid?String(e.pid):`—`}].map(({label:e,value:t})=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`text-xs font-semibold text-z-secondary uppercase tracking-wide`,children:e}),(0,Q.jsx)(`p`,{className:`text-sm font-mono font-semibold text-z-primary mt-0.5`,children:t})]},e))})]}),(0,Q.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-3 gap-3`,children:K.map((e,t)=>(0,Q.jsxs)(`div`,{className:X(q,`p-5 flex flex-col gap-3`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`div`,{className:X(`w-9 h-9 flex items-center justify-center border`,e.bg,e.border),children:(0,Q.jsx)(e.icon,{size:16,className:e.color})}),(0,Q.jsxs)(`span`,{className:`text-xs font-semibold text-emerald-400 flex items-center gap-1`,children:[(0,Q.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse inline-block`}),`Live`]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:`text-xs font-semibold text-z-secondary uppercase tracking-wide`,children:e.label}),(0,Q.jsx)(`p`,{className:`text-xl font-semibold mt-1 text-z-primary tabular-nums`,children:e.value})]})]},t))}),G.length>0&&(0,Q.jsxs)(`div`,{className:X(q,`overflow-hidden`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 p-4 border-b`,style:{borderColor:`var(--z-border)`},children:[(0,Q.jsx)(o,{size:13,className:`text-z-secondary`}),(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-primary`,children:`Collection Breakdown`}),(0,Q.jsxs)(`span`,{className:`ml-auto text-xs text-z-secondary`,children:[G.length,` collections`]})]}),(0,Q.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Q.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,Q.jsx)(`thead`,{children:(0,Q.jsx)(`tr`,{className:X(`border-b`,r?`bg-z-hover border-z-border`:`bg-z-input border-z-border`),children:[`Collection`,`Docs`,`Size (MB)`,`Avg Doc`,`Indexes`].map(e=>(0,Q.jsx)(`th`,{className:`text-left px-4 py-2.5 font-semibold text-z-secondary uppercase tracking-wide`,children:e},e))})}),(0,Q.jsx)(`tbody`,{className:`divide-y`,style:{borderColor:`var(--z-border)`},children:G.map(e=>(0,Q.jsxs)(`tr`,{className:X(`transition-colors`,r?`hover:bg-z-hover/40`:`hover:bg-z-input/60`),children:[(0,Q.jsx)(`td`,{className:`px-4 py-2.5 font-mono font-semibold text-z-primary`,children:e.name.startsWith(`z_`)?(0,Q.jsx)(`span`,{className:`text-z-secondary`,children:e.name}):e.name}),(0,Q.jsx)(`td`,{className:`px-4 py-2.5 tabular-nums text-z-primary`,children:e.count.toLocaleString()}),(0,Q.jsx)(`td`,{className:`px-4 py-2.5 tabular-nums text-z-primary`,children:e.sizeMB}),(0,Q.jsx)(`td`,{className:`px-4 py-2.5 tabular-nums text-z-secondary`,children:e.avgDocSizeB>0?`${e.avgDocSizeB} B`:`—`}),(0,Q.jsx)(`td`,{className:`px-4 py-2.5 tabular-nums`,children:(0,Q.jsx)(`span`,{className:X(`px-1.5 py-0.5 border font-mono`,`text-amber-400 border-amber-500/20 bg-amber-500/10`),children:e.indexes})})]},e.name))})]})})]}),(0,Q.jsxs)(`div`,{className:X(q,`p-6 space-y-4`),children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary`,children:`Test New Connection`}),(0,Q.jsxs)(`form`,{onSubmit:R,className:`flex flex-wrap gap-3 items-end`,children:[(0,Q.jsxs)(`div`,{className:`flex-1 min-w-[200px] space-y-1`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Connection URI`}),(0,Q.jsx)(`input`,{type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`postgres://user:pass@host:5432/db or mongodb://...`,className:X(ae,`w-full`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Dialect`}),(0,Q.jsx)(`div`,{className:`flex gap-2`,children:[`postgres`,`mongodb`].map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>v(e),className:X(`px-4 py-3 text-sm font-semibold border transition-all`,_===e?r?`border-z-accent/50 bg-z-accent/20 text-z-active-text`:`border-z-active-border bg-z-active-bg text-z-accent`:r?`border-z-border text-z-secondary`:`border-z-border text-z-muted`),children:e},e))})]}),(0,Q.jsxs)(`button`,{type:`submit`,disabled:u||!m.trim(),className:X(`px-6 py-3 text-sm font-semibold border transition-all disabled:opacity-40 flex items-center gap-2`,r?`bg-z-accent border-transparent text-z-primary hover:opacity-90 shadow-sm`:`bg-z-accent border-transparent text-z-primary hover:brightness-110`),children:[u?(0,Q.jsx)(S,{size:12,className:`animate-spin`}):(0,Q.jsx)(g,{size:12}),`Validate`]})]})]}),(0,Q.jsxs)(`div`,{className:X(q,`overflow-hidden`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between p-5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(a,{size:16,className:`text-z-secondary`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:`Database Backups`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`Create and restore database snapshots`})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsxs)(`button`,{onClick:()=>{T(!w)},className:X(`text-sm font-semibold px-3 py-2 border transition-all`,r?`border-z-border text-z-muted hover:text-z-primary`:`border-z-border text-z-secondary`),children:[w?`Hide`:`View`,` Backups`]}),(0,Q.jsxs)(`button`,{onClick:B,disabled:f,className:X(`flex items-center gap-2 px-4 py-2 text-sm font-semibold border transition-all disabled:opacity-40`,r?`bg-z-active-bg border-z-active-border text-z-active-text hover:bg-z-active-bg`:`bg-z-active-bg border-z-active-border text-z-accent`),children:[f?(0,Q.jsx)(S,{size:11,className:`animate-spin`}):(0,Q.jsx)(a,{size:11}),`Create Backup`]})]})]}),w&&(0,Q.jsx)(`div`,{className:`border-t`,style:{borderColor:`var(--z-border)`},children:x?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Q.jsx)(S,{size:20,className:`text-z-active-text animate-spin`})}):y.length===0?(0,Q.jsx)(`div`,{className:`py-8 text-center`,children:(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`No backups yet — create one above`})}):(0,Q.jsx)(`div`,{className:`divide-y`,style:{borderColor:`var(--z-border)`},children:y.map(e=>(0,Q.jsxs)(`div`,{className:`flex items-center gap-4 px-5 py-3`,children:[(0,Q.jsx)(a,{size:14,className:`text-z-secondary shrink-0`}),(0,Q.jsxs)(`div`,{className:`flex-1`,children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold`,`text-z-primary`),children:e.filename}),(0,Q.jsxs)(`p`,{className:`text-sm text-z-secondary`,children:[new Date(e.createdAt).toLocaleString(),` · `,(e.size/1024/1024).toFixed(2),` MB`]})]}),(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold px-2 py-0.5 border`,e.status===`ready`?`text-z-active-text border-z-active-border bg-z-active-bg`:e.status===`processing`?`text-amber-400 border-amber-500/30 bg-amber-500/10`:`text-red-400 border-red-500/30 bg-red-500/10`),children:e.status}),e.status===`ready`&&(0,Q.jsx)(`button`,{onClick:()=>V(e),className:X(`p-2 transition-colors`,r?`text-z-secondary hover:text-z-active-text`:`text-z-muted hover:text-z-accent`),children:(0,Q.jsx)(F,{size:14})})]},e.id))})})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary px-1`,children:`Maintenance Actions`}),(0,Q.jsxs)(`div`,{className:`flex flex-wrap gap-3`,children:[(0,Q.jsxs)(`button`,{onClick:L,disabled:c,className:X(`flex items-center gap-2 px-6 py-3.5 border text-sm font-semibold transition-all active:scale-95 disabled:opacity-40`,r?`bg-red-500/10 text-red-400 border-red-500/20 hover:bg-red-500/20`:`bg-red-50 text-red-600 border-red-200 hover:bg-red-100`),children:[c?(0,Q.jsx)(S,{size:13,className:`animate-spin`}):(0,Q.jsx)(i,{size:13}),`Flush Cache`]}),(0,Q.jsxs)(`button`,{onClick:I,disabled:c,className:X(`flex items-center gap-2 px-6 py-3.5 border text-sm font-semibold transition-all active:scale-95 disabled:opacity-40`,r?`bg-z-active-bg text-z-active-text border-z-active-border hover:bg-z-active-bg`:`bg-[var(--z-bg-hover)] text-z-primary border-z-border hover:bg-[var(--z-border)]`),children:[c?(0,Q.jsx)(S,{size:13,className:`animate-spin`}):(0,Q.jsx)(P,{size:13}),`Sweep Orphan Media`]}),(0,Q.jsxs)(`button`,{onClick:N,disabled:O,className:X(`flex items-center gap-2 px-6 py-3.5 border text-sm font-semibold transition-all active:scale-95 disabled:opacity-40`,r?`bg-amber-500/10 text-amber-400 border-amber-500/20 hover:bg-amber-500/20`:`bg-amber-50 text-amber-700 border-amber-200 hover:bg-amber-100`),children:[O?(0,Q.jsx)(S,{size:13,className:`animate-spin`}):(0,Q.jsx)(A,{size:13}),`Analyze Slow Queries`]})]})]}),E.length>0&&(0,Q.jsxs)(`div`,{className:X(q,`overflow-hidden`),children:[(0,Q.jsx)(`div`,{className:`p-4 border-b`,style:{borderColor:`var(--z-border)`},children:(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-amber-400`,children:`Slow Query Analysis`})}),(0,Q.jsx)(`div`,{className:`divide-y`,style:{borderColor:`var(--z-border)`},children:E.slice(0,5).map((e,t)=>(0,Q.jsxs)(`div`,{className:`flex items-center gap-4 px-5 py-3`,children:[(0,Q.jsx)(s,{size:13,className:`text-amber-400 shrink-0`}),(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-mono truncate`,`text-z-secondary`),children:e.query||e.command||`Unknown query`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:e.collection||e.table})]}),(0,Q.jsxs)(`span`,{className:`text-sm font-semibold text-amber-400 shrink-0`,children:[e.millis||e.duration,`ms`]})]},t))})]})]})},ft=({onClose:e,onCreated:t,theme:n})=>{let[r,i]=(0,Z.useState)(``),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(``),u=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{let t=t=>{t.key===`Escape`&&e()};return document.addEventListener(`keydown`,t),document.body.style.overflow=`hidden`,()=>{document.removeEventListener(`keydown`,t),document.body.style.overflow=`unset`}},[e]),(0,Q.jsx)(`div`,{className:`fixed inset-0 z-[100] flex items-center justify-center bg-[var(--z-bg-modal)] backdrop-blur-sm`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`create-role-title`,children:(0,Q.jsxs)(`div`,{ref:u,className:X(`w-full max-w-sm border rounded-none-none shadow-2xl`,n===`dark`?`bg-app border-z-border`:`bg-z-panel border-z-border shadow-sm`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-8 py-6 border-b border-z-border`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`w-10 h-10 rounded-none-none bg-z-panel border border-z-border/20 flex items-center justify-center`,children:(0,Q.jsx)(_e,{size:18,className:`text-z-secondary `})}),(0,Q.jsx)(`span`,{id:`create-role-title`,className:`text-sm font-semibold tracking-wide`,children:`New Custom Role`})]}),(0,Q.jsx)(`button`,{onClick:e,"aria-label":`Close`,className:`text-z-secondary hover:text-z-primary transition-colors`,children:(0,Q.jsx)(W,{size:18})})]}),(0,Q.jsxs)(`form`,{onSubmit:async n=>{if(n.preventDefault(),r.trim()){c(``),o(!0);try{t((await Y.post(`/roles`,{roleName:r.trim(),description:``,permissions:[{resource:`*`,actions:[`read`]}]})).data.data),J.success(`Role "${r.trim()}" created`),e()}catch(e){c(e?.response?.data?.error?.message||`Failed to create role`)}finally{o(!1)}}},className:`px-8 py-6 space-y-6`,children:[(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Role Name`}),(0,Q.jsx)(`input`,{type:`text`,value:r,onChange:e=>i(e.target.value),required:!0,autoFocus:!0,placeholder:`e.g. Content Manager`,className:X(`w-full border rounded-none-none py-4 px-5 text-[13px] font-semibold transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,n===`dark`?`bg-z-hover border-z-border text-z-primary focus:border-z-border/50`:`bg-z-input border-z-border focus:border-z-border`)})]}),(0,Q.jsx)(`div`,{className:`p-4 border border-amber-500/10 bg-amber-500/5 rounded-none-none`,children:(0,Q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Q.jsx)(l,{size:14,className:`text-amber-500 mt-0.5 shrink-0`}),(0,Q.jsx)(`p`,{className:`text-sm font-bold text-amber-400 leading-relaxed`,children:`New roles start with read-only access on all resources. You can customize permissions after creation.`})]})}),s&&(0,Q.jsx)(`p`,{className:`text-sm text-red-500 font-semibold`,children:s}),(0,Q.jsx)(`button`,{type:`submit`,disabled:a||!r.trim(),className:X(`w-full py-4 rounded-none-none text-sm font-semibold shadow-lg transition-all active:scale-95 disabled:opacity-40`,n===`dark`?`bg-z-border hover:bg-z-accent text-z-primary`:`bg-z-accent hover:brightness-110 text-z-primary`),children:a?(0,Q.jsxs)(`span`,{className:`flex items-center justify-center gap-2`,children:[(0,Q.jsx)(S,{size:14,className:`animate-spin`}),`Creating...`]}):`Create Role`})]})]})})},pt=({role:e,onClose:t,onDeleted:n,theme:r})=>{let[a,o]=(0,Z.useState)(!1),[c,l]=(0,Z.useState)(``);return(0,Q.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-[var(--z-bg-modal)] backdrop-blur-sm`,children:(0,Q.jsxs)(`div`,{className:X(`w-full max-w-sm border rounded-none-none shadow-2xl`,r===`dark`?`bg-app border-red-500/10`:`bg-z-panel border-red-100`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-8 py-6 border-b border-z-border`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`w-10 h-10 rounded-none-none bg-red-500/10 border border-red-500/20 flex items-center justify-center`,children:(0,Q.jsx)(s,{size:18,className:`text-red-500`})}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold tracking-wide`,children:`Delete Role`})]}),(0,Q.jsx)(`button`,{onClick:t,className:`text-z-secondary hover:text-z-primary transition-colors`,children:(0,Q.jsx)(W,{size:18})})]}),(0,Q.jsxs)(`div`,{className:`px-8 py-6 space-y-5`,children:[(0,Q.jsxs)(`p`,{className:`text-sm font-semibold text-z-secondary leading-relaxed`,children:[`Are you sure you want to delete`,` `,(0,Q.jsxs)(`span`,{className:`text-z-primary`,children:[`"`,e.roleName,`"`]}),`? This action cannot be undone and any users assigned to this role will lose access.`]}),c&&(0,Q.jsx)(`p`,{className:`text-sm text-red-500 font-semibold`,children:c}),(0,Q.jsxs)(`div`,{className:`flex gap-3`,children:[(0,Q.jsx)(`button`,{type:`button`,onClick:t,disabled:a,className:X(`flex-1 py-3.5 rounded-none-none text-sm font-semibold border transition-all active:scale-95 disabled:opacity-40`,r===`dark`?`border-z-border text-z-muted hover:border-z-border hover:text-z-primary`:`border-z-border text-z-secondary hover:border-z-border-strong`),children:`Cancel`}),(0,Q.jsxs)(`button`,{type:`button`,onClick:async()=>{o(!0),l(``);try{await Y.delete(`/roles/${e.roleName}`),J.success(`Role "${e.roleName}" deleted`),n(),t()}catch(e){l(e?.response?.data?.error?.message||`Failed to delete role`)}finally{o(!1)}},disabled:a,className:X(`flex-1 py-3.5 rounded-none-none text-sm font-semibold shadow-lg transition-all active:scale-95 disabled:opacity-40 flex items-center justify-center gap-2`,`bg-red-500 hover:bg-red-600 text-z-primary shadow-sm/20`),children:[a?(0,Q.jsx)(S,{size:12,className:`animate-spin`}):(0,Q.jsx)(i,{size:12}),a?`Deleting...`:`Delete`]})]})]})]})})},mt=({roles:e,setRoles:t,editingRole:n,setEditingRole:a,roleFilter:o,setRoleFilter:s,healthData:c,users:l,theme:d})=>{let[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),y=o===`all`?e:o===`system`?e.filter(e=>e.isSystem):e.filter(e=>!e.isSystem),b=[{slug:`*`,label:`All Resources`},...(c?.collections||[]).map(e=>({slug:e.slug,label:e.label||e.slug}))],x=e=>{if(e===`*`)return[];let t=c?.collections?.find(t=>t.slug===e),n=[],r=e=>{for(let t of e)n.push(t.name),t.fields?.length&&r(t.fields)};return t?.fields?.length&&r(t.fields),n.length===0?[`title`,`slug`,`status`,`publishedAt`,`createdAt`,`updatedAt`,`content`,`description`,`coverImage`,`author`]:[...new Set(n)]},S=(e,t,r)=>{if(!n||n.isSystem)return;let i=n.permissions[e],o=i.fieldPermissions||{},s=o[t]||{},c={...i,fieldPermissions:{...o,[t]:{...s,...r}}},l=[...n.permissions];l[e]=c,a({...n,permissions:l})},C=(e,t)=>{if(!n||n.isSystem)return;let r=n.permissions[e],i={...r.fieldPermissions||{}};delete i[t];let o=[...n.permissions];o[e]={...r,fieldPermissions:i},a({...n,permissions:o})},w=(e,t,n,r)=>{n?.[r]?r===`read`&&n?.write?S(e,t,{read:!1}):r===`write`&&n?.read?S(e,t,{write:!1}):C(e,t):S(e,t,{[r]:!0})};return(0,Q.jsxs)(`div`,{className:`col-span-full space-y-6`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between border-b border-z-border pb-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Roles & Permissions`}),(0,Q.jsx)(`span`,{className:`text-sm text-z-secondary font-bold mt-1`,children:`Manage team access levels and granular resource permissions`})]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>p(!0),className:`flex items-center gap-2 px-4 py-2 border border-z-active-border hover:border-z-accent hover:bg-z-active-bg text-sm font-semibold transition-all text-z-accent dark:text-z-active-text hover:text-z-primary`,children:[(0,Q.jsx)(_e,{size:12}),`New Custom Role`]})]}),(0,Q.jsx)(`div`,{className:`flex items-center gap-1 border-b border-z-border pb-0`,children:[`all`,`system`,`custom`].map(t=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>s(t),className:X(`px-4 py-2 text-sm font-semibold border-b-2 transition-all`,o===t?`border-z-border text-z-primary`:`border-transparent text-z-secondary hover:text-z-primary`),children:t===`all`?`All (${e.length})`:t===`system`?`System (${e.filter(e=>e.isSystem).length})`:`Custom (${e.filter(e=>!e.isSystem).length})`},t))}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 xl:grid-cols-3 gap-8`,children:[(0,Q.jsxs)(`div`,{className:`xl:col-span-1 space-y-3`,children:[y.map(e=>(0,Q.jsxs)(`div`,{onClick:()=>a(e),className:X(`p-4 border rounded-none flex items-center justify-between cursor-pointer transition-all shadow-sm`,n?._id===e._id?`bg-z-active-bg border-z-active-border`:d===`dark`?`bg-z-panel backdrop-blur-md border-z-border hover:border-z-active-border`:`bg-z-input border-z-border`),children:[(0,Q.jsxs)(`div`,{className:`flex flex-col leading-none gap-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-primary`,children:e.roleName}),e.isSystem&&(0,Q.jsx)(`span`,{className:`text-sm font-semibold px-1.5 py-0.5 border border-amber-500/30 text-amber-500`,children:`SYSTEM`}),(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold px-1.5 py-0.5 border`,e.roleType===`admin`?`border-red-500/30 text-red-400`:e.roleType===`editor`?`border-z-border/30 text-z-secondary`:`border-z-border text-z-secondary`),children:e.roleType})]}),(0,Q.jsxs)(`span`,{className:`text-sm font-bold text-z-secondary`,children:[e.permissions?.length||0,` rule`,e.permissions?.length===1?``:`s`,e.description&&` · ${e.description.slice(0,40)}`]})]}),!e.isSystem&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`button`,{type:`button`,title:`Clone role`,onClick:async n=>{n.stopPropagation();try{let n=await Y.post(`/roles/clone/${e._id}`);t(e=>[...e,n.data.data]),J.success(`Cloned as "${n.data.data.roleName}"`)}catch{J.error(`Failed to clone role`)}},className:`text-z-secondary hover:text-z-secondary transition-colors`,children:(0,Q.jsx)(v,{size:14})}),(0,Q.jsx)(`button`,{type:`button`,title:`Delete role`,onClick:t=>{t.stopPropagation(),h(e)},className:`text-z-secondary hover:text-red-400 transition-colors`,children:(0,Q.jsx)(i,{size:14})})]})]},e._id)),y.length===0&&(0,Q.jsxs)(`p`,{className:`text-sm text-z-secondary font-bold py-4`,children:[`No `,o,` roles found.`]})]}),(0,Q.jsx)(`div`,{className:`xl:col-span-2`,children:n?(0,Q.jsxs)(`div`,{className:`space-y-6 p-6 border rounded-none shadow-sm transition-all bg-z-panel backdrop-blur-md border-z-border`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between border-b border-z-border pb-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsx)(`h4`,{className:`text-xs font-semibold text-z-secondary`,children:n.roleName}),n.description&&(0,Q.jsx)(`span`,{className:`text-sm font-bold text-z-secondary mt-0.5`,children:n.description})]}),(0,Q.jsx)(`div`,{className:`flex items-center gap-2`,children:!n.isSystem&&(0,Q.jsxs)(`button`,{type:`button`,onClick:async()=>{try{let e=await Y.patch(`/roles/${n._id}`,{roleName:n.roleName,description:n.description,permissions:n.permissions});t(t=>t.map(t=>t._id===n._id?e.data.data:t)),a(e.data.data),J.success(`Permissions saved`)}catch(e){J.error(e.response?.data?.error?.message||`Failed to save`)}},className:X(`flex items-center gap-2 px-4 py-2 text-z-primary text-sm font-semibold transition-all`,`bg-z-accent hover:brightness-110 shadow-sm text-z-logo-text`),children:[(0,Q.jsx)(u,{size:12}),`Save`]})})]}),n.isSystem&&(0,Q.jsx)(`div`,{className:`p-3 border border-amber-500/20 bg-amber-500/5 text-[9.5px] font-bold text-amber-400`,children:`System roles cannot be modified. Clone the role to customize its permissions.`}),(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-muted`,children:`Resource Permission Rules`}),!n.isSystem&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>a({...n,permissions:[...n.permissions||[],{resource:`*`,actions:[`read`]}]}),className:`text-sm font-semibold text-z-secondary hover:text-z-secondary flex items-center gap-1`,children:[(0,Q.jsx)(_e,{size:10}),`Add Rule`]})]}),(0,Q.jsxs)(`div`,{className:`space-y-3`,children:[(n.permissions||[]).map((e,t)=>(0,Q.jsxs)(`div`,{className:`border border-z-border bg-z-panel`,children:[(0,Q.jsx)(`div`,{className:`p-4 flex flex-col gap-4`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,Q.jsx)(`select`,{disabled:n.isSystem,value:e.resource,onChange:r=>{if(n.isSystem)return;let i=[...n.permissions];i[t]={...e,resource:r.target.value},a({...n,permissions:i})},className:X(`text-sm font-semibold outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black py-1.5 px-3 rounded-none focus:border-z-accent disabled:opacity-50 border`,`bg-z-input border-z-border text-z-primary`),children:b.map(e=>(0,Q.jsx)(`option`,{value:e.slug,children:e.label},e.slug))}),(0,Q.jsx)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[`create`,`read`,`update`,`delete`].map(r=>{let i=e.actions.includes(r);return(0,Q.jsxs)(`label`,{className:`flex items-center gap-1.5 cursor-pointer`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,disabled:n.isSystem,checked:i,onChange:i=>{if(n.isSystem)return;let o=[...e.actions];i.target.checked?o.push(r):o=o.filter(e=>e!==r);let s=[...n.permissions];s[t]={...e,actions:o},a({...n,permissions:s})},className:`rounded-none-none border-z-border text-z-secondary focus:ring-0 bg-app cursor-pointer`}),(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold `,`text-z-secondary`),children:r})]},r)})})]})}),e.resource!==`*`&&(0,Q.jsxs)(`div`,{className:`border-t border-z-border`,children:[(0,Q.jsxs)(`button`,{type:`button`,disabled:n.isSystem,onClick:()=>_(g===`${n._id}-${t}`?null:`${n._id}-${t}`),className:X(`w-full flex items-center gap-2 px-4 py-2.5 text-sm font-semibold transition-all`,d===`dark`?`hover:bg-z-hover text-z-muted hover:text-z-secondary`:`hover:bg-[var(--z-bg-input)] text-z-secondary hover:text-z-primary`,n.isSystem&&`opacity-50 cursor-not-allowed`),children:[g===`${n._id}-${t}`?(0,Q.jsx)(ye,{size:10}):(0,Q.jsx)(H,{size:10}),(0,Q.jsx)(ge,{size:9}),`Field-Level Access (`,Object.keys(e.fieldPermissions||{}).length,` configured)`]}),g===`${n._id}-${t}`&&(0,Q.jsx)(`div`,{className:`px-4 pb-4`,children:(()=>{let i=x(e.resource);return(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsxs)(`div`,{className:`grid grid-cols-12 gap-2 border-b border-z-border pb-2`,children:[(0,Q.jsx)(`div`,{className:`col-span-4 text-sm font-semibold text-z-secondary`,children:`Field`}),(0,Q.jsxs)(`div`,{className:`col-span-4 text-sm font-semibold text-z-secondary flex items-center gap-1 justify-center`,children:[(0,Q.jsx)(r,{size:8}),` Read`]}),(0,Q.jsxs)(`div`,{className:`col-span-4 text-sm font-semibold text-z-secondary flex items-center gap-1 justify-center`,children:[(0,Q.jsx)(E,{size:8}),` Write`]})]}),i.map(i=>{let a=e.fieldPermissions?.[i],o=a?.read,s=a?.write;return(0,Q.jsxs)(`div`,{className:`grid grid-cols-12 gap-2 items-center py-1.5 border-b border-z-border last:border-0`,children:[(0,Q.jsx)(`div`,{className:`col-span-4`,children:(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold `,`text-z-secondary`),children:i})}),(0,Q.jsx)(`div`,{className:`col-span-4 flex justify-center`,children:(0,Q.jsx)(`button`,{type:`button`,disabled:n.isSystem,onClick:()=>w(t,i,a,`read`),className:X(`w-6 h-6 border rounded-none flex items-center justify-center transition-all`,o?`bg-z-accent/20 border-z-active-border text-z-active-text`:`bg-transparent border-z-border text-z-secondary hover:border-z-active-border hover:text-z-active-text`,n.isSystem&&`opacity-50 cursor-not-allowed`),children:o&&(0,Q.jsx)(r,{size:9})})}),(0,Q.jsx)(`div`,{className:`col-span-4 flex justify-center`,children:(0,Q.jsx)(`button`,{type:`button`,disabled:n.isSystem,onClick:()=>w(t,i,a,`write`),className:X(`w-6 h-6 border rounded-none flex items-center justify-center transition-all`,s?`bg-z-accent/20 border-z-active-border text-z-active-text`:`bg-transparent border-z-border text-z-secondary hover:border-z-active-border hover:text-z-active-text`,n.isSystem&&`opacity-50 cursor-not-allowed`),children:s&&(0,Q.jsx)(E,{size:9})})})]},i)})]})})()})]})]},t)),n.permissions?.length===0&&(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary font-bold text-center py-4`,children:`No permission rules defined. Add a rule above.`})]})]}),(0,Q.jsxs)(`div`,{className:`border-t border-z-border pt-5 space-y-3`,children:[(0,Q.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,Q.jsxs)(`span`,{className:`text-sm font-semibold text-z-muted`,children:[`Assigned Users (`,l.filter(e=>e.role===n.roleName||e.role===n.roleType).length,`)`]})}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[l.filter(e=>e.role===n.roleName||e.role===n.roleType).map(e=>(0,Q.jsxs)(`div`,{className:`flex items-center justify-between p-3 border border-z-border bg-z-panel`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-primary`,children:e.email}),(0,Q.jsx)(`span`,{className:`text-sm font-bold text-z-secondary`,children:e._id})]}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-secondary border border-z-border/20 px-2 py-1`,children:e.role})]},e._id)),l.filter(e=>e.role===n.roleName||e.role===n.roleType).length===0&&(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary font-bold text-center py-2`,children:`No users assigned to this role.`})]})]})]}):(0,Q.jsx)(`div`,{className:`min-h-[300px] border border-dashed border-z-border flex items-center justify-center text-center p-8`,children:(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary font-bold max-w-xs`,children:`Select a role on the left to view and edit its permission rules.`})})})]}),f&&(0,Q.jsx)(ft,{onClose:()=>p(!1),onCreated:e=>{t(t=>[...t,e]),a(e)},theme:d}),m&&(0,Q.jsx)(pt,{role:m,onClose:()=>h(null),onDeleted:()=>{t(e=>e.filter(e=>e._id!==m._id)),n?._id===m._id&&a(null)},theme:d})]})},ht=[`Inter`,`Roboto`,`Outfit`,`DM Sans`,`Sora`,`Plus Jakarta Sans`,`Space Grotesk`,`Fira Code`,`Merriweather`],gt=e=>X(`p-6 border transition-all`,`z-card`),_t=e=>X(`w-full border py-2 px-3 text-sm font-semibold outline-none transition-all focus:ring-1 focus:ring-z-active-border focus:border-z-accent`,`bg-z-panel border-z-border text-z-primary`),$=`text-sm font-semibold text-z-secondary block mb-2`;function vt({settings:e,setSettings:t,theme:n}){let r=n===`dark`,{brand:i,preset:a,setBrand:o,applyPreset:s}=Ne(),c=(0,Z.useRef)(null),l=(0,Z.useRef)(null),u=(e,t)=>{if(!e.type.startsWith(`image/`))return J.error(`Must be an image file`);let n=new FileReader;n.onload=e=>{o({[t]:e.target?.result}),J.success(t===`logoUrl`?`Logo updated`:`Favicon updated`)},n.readAsDataURL(e)};return(0,Q.jsxs)(`div`,{className:`space-y-6`,children:[(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 xl:grid-cols-2 gap-6`,children:[(0,Q.jsxs)(`div`,{className:gt(r)+` space-y-5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 pb-4 border-b`,style:{borderColor:`var(--z-border)`},children:[(0,Q.jsx)(`div`,{className:`w-8 h-8 flex items-center justify-center border`,style:{background:`var(--z-active-bg)`,borderColor:`var(--z-active-border)`},children:(0,Q.jsx)(be,{size:15,className:`text-z-active-text`})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Brand Identity`}),(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary block mb-2 mt-0.5 mb-0`,children:`White-label your CMS`})]})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:$,children:`App Name`}),(0,Q.jsx)(`input`,{value:i.appName,onChange:e=>o({appName:e.target.value}),className:_t(r),placeholder:`Zenith`})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:$,children:`Tagline / Version`}),(0,Q.jsx)(`input`,{value:i.appTagline,onChange:e=>o({appTagline:e.target.value}),className:_t(r),placeholder:`v1.0 Beta`})]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:$,children:`Logo Image`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[i.logoUrl?(0,Q.jsx)(`img`,{src:i.logoUrl,alt:`Logo`,className:`w-10 h-10 object-contain border`,style:{borderColor:r?`rgba(255,255,255,0.08)`:`#e5e7eb`}}):(0,Q.jsx)(`div`,{className:`w-10 h-10 border flex items-center justify-center text-z-secondary text-sm font-semibold`,style:{borderColor:r?`rgba(255,255,255,0.08)`:`#e5e7eb`},children:`None`}),(0,Q.jsxs)(`div`,{className:`flex-1 flex gap-2`,children:[(0,Q.jsxs)(`button`,{onClick:()=>c.current?.click(),className:X(`flex-1 flex items-center justify-center gap-2 py-2 border text-sm font-semibold transition-all`,`border-z-border text-z-secondary hover:text-z-primary hover:border-z-border-strong`),children:[(0,Q.jsx)(ke,{size:11}),` Upload`]}),i.logoUrl&&(0,Q.jsx)(`button`,{onClick:()=>o({logoUrl:``}),className:`px-3 py-2 border border-red-500/20 text-red-400 text-sm font-semibold hover:bg-red-500/10 transition-all`,children:(0,Q.jsx)(y,{size:11})})]}),(0,Q.jsx)(`input`,{ref:c,type:`file`,accept:`image/*`,className:`hidden`,onChange:e=>e.target.files?.[0]&&u(e.target.files[0],`logoUrl`)})]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:$,children:`Favicon`}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[i.faviconUrl?(0,Q.jsx)(`img`,{src:i.faviconUrl,alt:`Favicon`,className:`w-8 h-8 object-contain border`,style:{borderColor:r?`rgba(255,255,255,0.08)`:`#e5e7eb`}}):(0,Q.jsx)(`div`,{className:`w-8 h-8 border flex items-center justify-center text-z-secondary text-sm`,style:{borderColor:r?`rgba(255,255,255,0.08)`:`#e5e7eb`},children:`ico`}),(0,Q.jsxs)(`button`,{onClick:()=>l.current?.click(),className:X(`flex items-center gap-2 px-4 py-2 border text-sm font-semibold transition-all`,`border-z-border text-z-secondary hover:text-z-primary hover:border-z-border-strong`),children:[(0,Q.jsx)(ke,{size:11}),` Upload`]}),(0,Q.jsx)(`input`,{ref:l,type:`file`,accept:`image/*`,className:`hidden`,onChange:e=>e.target.files?.[0]&&u(e.target.files[0],`faviconUrl`)})]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:$,children:`Typography`}),(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(De,{size:12,className:`absolute left-3 top-2.5 text-z-secondary`}),(0,Q.jsx)(`select`,{value:i.fontFamily,onChange:e=>o({fontFamily:e.target.value}),className:X(_t(r),`pl-9`),children:ht.map(e=>(0,Q.jsx)(`option`,{value:e,children:e},e))})]})]}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`label`,{className:$,children:`Default Color Mode`}),(0,Q.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:[`light`,`dark`].map(n=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>t({...e,theme:n}),className:X(`flex items-center justify-center gap-2 py-2.5 border text-sm font-semibold transition-all`,e.theme===n||!e.theme&&n===`dark`?`border-z-accent bg-z-active-bg text-z-active-text`:`border-z-border text-z-secondary hover:border-z-active-border`),children:[n===`light`?(0,Q.jsx)(le,{size:13}):(0,Q.jsx)(ce,{size:13}),n]},n))})]})]}),(0,Q.jsxs)(`div`,{className:gt(r)+` space-y-5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 pb-4 border-b`,style:{borderColor:`var(--z-border)`},children:[(0,Q.jsx)(`div`,{className:`w-8 h-8 flex items-center justify-center border`,style:{background:`var(--z-active-bg)`,borderColor:`var(--z-active-border)`},children:(0,Q.jsx)(be,{size:15,className:`text-z-active-text`})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-sm font-semibold`,children:`Accent Theme`}),(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary block mb-2 mt-0.5 mb-0`,children:`Plug-and-play presets`})]})]}),(0,Q.jsx)(`div`,{className:`grid grid-cols-2 gap-3`,children:Pe.map(e=>{let t=i.themePresetId===e.id;return(0,Q.jsxs)(`button`,{onClick:()=>s(e.id),className:X(`relative flex items-center gap-3 p-3 border text-left transition-all group`,t?`border-z-accent/50 bg-z-accent/5`:`border-z-border hover:border-z-border-strong`),children:[(0,Q.jsx)(`div`,{className:`w-8 h-8 flex-shrink-0 flex items-center justify-center font-semibold text-sm shadow-lg`,style:{backgroundColor:e.accentHex,color:e.logoIconText},children:e.name[0]}),(0,Q.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold truncate`,t?`text-z-active-text`:`text-z-secondary`),children:e.name}),(0,Q.jsx)(`span`,{className:`text-sm font-mono text-z-secondary`,children:e.accentHex})]}),t&&(0,Q.jsx)(U,{size:11,className:`absolute top-2 right-2 text-z-active-text`})]},e.id)})}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`label`,{className:$,children:`Live Preview`}),(0,Q.jsxs)(`div`,{className:`p-4 border space-y-2`,style:{borderColor:`var(--z-border)`,background:`var(--z-panel)`},children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-2 border`,style:{background:a.activeBg,borderColor:a.activeBorder,boxShadow:a.activeGlow},children:[(0,Q.jsx)(`div`,{className:`w-2 h-2`,style:{background:a.activeText}}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold`,style:{color:a.activeText},children:i.appName||`Zenith`})]}),(0,Q.jsxs)(`div`,{className:X(`flex items-center gap-3 px-3 py-2 border`,`border-z-border`),children:[(0,Q.jsx)(`div`,{className:`w-2 h-2 bg-z-accent`}),(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold `,`text-z-secondary`),children:`Collections`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,Q.jsx)(`div`,{className:`w-7 h-7 flex items-center justify-center font-semibold text-sm`,style:{background:a.logoIconBg,color:a.logoIconText},children:(i.appName||`Z`)[0]}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold`,style:{color:`var(--z-text-primary)`},children:i.appName||`Zenith`})]})]})]})]})]}),(0,Q.jsxs)(`div`,{className:gt(r)+` space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(`div`,{className:`w-8 h-8 flex items-center justify-center border`,style:{background:`rgba(59,130,246,0.1)`,borderColor:`rgba(59,130,246,0.2)`},children:(0,Q.jsx)(p,{size:15,className:`text-z-active-text`})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-sm font-semibold`,children:`CSS Override`}),(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary block mb-2 mt-0.5 mb-0`,children:`Global stylesheet injection`})]})]}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-active-text border border-z-accent/20 bg-z-accent/10 px-2 py-1`,children:`Live`})]}),(0,Q.jsx)(`textarea`,{value:e.customCSS,onChange:n=>{t({...e,customCSS:n.target.value}),o({customCSS:n.target.value})},rows:10,spellCheck:!1,className:X(`w-full border py-4 px-5 text-sm font-mono outline-none transition-all focus:ring-1 focus:ring-z-active-border resize-none`,`bg-z-input border-z-border text-z-primary`),placeholder:`:root {
23
+ /* Override brand accent */
24
+ --brand-accent: var(--z-accent);
25
+ }
26
+
27
+ /* Custom panel styles */
28
+ .my-panel {
29
+ backdrop-filter: blur(12px);
30
+ }`})]})]})}var yt=[{value:`posts.created`,label:`Post Created`},{value:`posts.updated`,label:`Post Updated`},{value:`posts.deleted`,label:`Post Deleted`},{value:`posts.published`,label:`Post Published`},{value:`posts.unpublished`,label:`Post Unpublished`},{value:`authors.created`,label:`Author Created`},{value:`authors.updated`,label:`Author Updated`},{value:`authors.deleted`,label:`Author Deleted`},{value:`products.created`,label:`Product Created`},{value:`products.updated`,label:`Product Updated`},{value:`products.deleted`,label:`Product Deleted`},{value:`media.uploaded`,label:`Media Uploaded`},{value:`media.deleted`,label:`Media Deleted`},{value:`*`,label:`All Events`}],bt=({theme:e})=>{let[n,r]=(0,Z.useState)([]),[a,o]=(0,Z.useState)(!0),[s,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(null),[m,h]=(0,Z.useState)(``),[g,v]=(0,Z.useState)(``),[b,x]=(0,Z.useState)([]),[C,w]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(null),[O,k]=(0,Z.useState)(null),[A,j]=(0,Z.useState)({}),[M,N]=(0,Z.useState)(null),[P,F]=(0,Z.useState)(null),L=(0,Z.useRef)(!0);(0,Z.useEffect)(()=>()=>{L.current=!1},[]);let R=async()=>{if(L.current){o(!0),c(null);try{let e=await Y.get(`/system/webhooks`);L.current&&r(e.data.data||[])}catch(e){let t=e?.response?.data?.error||e?.message||`Failed to load webhooks`;L.current&&c(t)}finally{L.current&&o(!1)}}};Z.useEffect(()=>{R()},[]);let z=async(e,t)=>{if(L.current){N(e);try{let n=await Y.get(`/system/webhooks/${e}/deliveries?limit=25`);L.current&&j(e=>({...e,[t]:n.data.data||[]}))}catch{L.current&&J.error(`Failed to load delivery log`)}finally{L.current&&N(null)}}},B=e=>{O===e.id?k(null):(k(e.id),A[e.url]||z(e.id,e.url))},V=()=>{h(``),v(``),x([]),p(null),u(!1)},ee=e=>{p(e.id),h(e.url),v(e.secret),x(e.events),u(!0)},te=async()=>{if(!m.trim()){J.error(`URL is required`);return}if(b.length===0){J.error(`Select at least one event`);return}w(!0);try{f?(await Y.put(`/system/webhooks/${f}`,{url:m,secret:g,events:b}),J.success(`Webhook updated`)):(await Y.post(`/system/webhooks`,{url:m,secret:g,events:b}),J.success(`Webhook created`)),V(),R()}catch(e){J.error(e.response?.data?.message||`Failed to save webhook`)}finally{w(!1)}},H=async e=>{if(await Fe({message:`Delete this webhook?`}))try{await Y.delete(`/system/webhooks/${e}`),J.success(`Webhook deleted`),R()}catch{J.error(`Failed to delete webhook`)}},ne=async e=>{try{await Y.put(`/system/webhooks/${e.id}`,{enabled:!e.enabled}),r(t=>t.map(t=>t.id===e.id?{...t,enabled:!e.enabled}:t)),J.success(e.enabled?`Webhook disabled`:`Webhook enabled`)}catch{J.error(`Failed to toggle webhook`)}},U=async(e,t)=>{E(e);try{let n=await Y.post(`/system/webhooks/${e}/test`);n.data.data.success?J.success(`Test delivered (status ${n.data.data.status})`):J.error(`Test failed: ${n.data.data.error||`Unknown error`}`),z(e,t)}catch(e){J.error(e.response?.data?.message||`Test failed`)}finally{E(null)}},W=async(e,t,n)=>{F(t);try{let r=await Y.post(`/system/webhooks/${e}/deliveries/${t}/replay`);r.data.data.success?J.success(`Replay delivered (status ${r.data.data.status})`):J.error(`Replay failed: ${r.data.data.error||`Unknown error`}`),z(e,n)}catch(e){J.error(e.response?.data?.message||`Replay failed`)}finally{F(null)}},re=e=>{if(e===`*`){x([`*`]);return}x(t=>{let n=t.filter(e=>e!==`*`);return n.includes(e)?n.filter(t=>t!==e):[...n,e]})},ie=e=>{try{return new Date(e).toLocaleString(`en-US`,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}catch{return e}};return(0,Q.jsxs)(`div`,{className:`col-span-full space-y-6`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between border-b border-z-border pb-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsxs)(`h3`,{className:`text-sm font-semibold flex items-center gap-3`,children:[(0,Q.jsx)(de,{size:16,className:`text-z-secondary`}),`Webhook Management`]}),(0,Q.jsx)(`span`,{className:`text-sm text-z-secondary font-bold mt-1`,children:`Configure HTTP callbacks for content lifecycle events`})]}),!l&&(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>u(!0),className:`flex items-center gap-2 px-4 py-2 border border-z-border hover:border-z-active-border hover:bg-z-hover text-sm font-semibold transition-all text-z-secondary hover:text-z-primary`,children:[(0,Q.jsx)(D,{size:12}),`Add Webhook`]})]}),l&&(0,Q.jsxs)(`div`,{className:X(`p-6 border rounded-none space-y-5 shadow-sm`,`bg-z-panel backdrop-blur-md border-z-border`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-secondary`,children:f?`Edit Webhook`:`New Webhook`}),(0,Q.jsx)(`button`,{onClick:V,className:`text-z-secondary hover:text-z-primary text-sm font-semibold`,children:`Cancel`})]}),(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Endpoint URL`}),(0,Q.jsx)(`input`,{type:`url`,value:m,onChange:e=>h(e.target.value),placeholder:`https://example.com/api/webhooks/zenith`,className:X(`w-full border rounded-none py-3 px-4 text-sm font-mono transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Signing Secret (optional)`}),(0,Q.jsx)(`input`,{type:`password`,value:g,onChange:e=>v(e.target.value),placeholder:`whsec_...`,className:X(`w-full border rounded-none py-3 px-4 text-sm font-mono transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Subscribed Events`}),(0,Q.jsx)(`div`,{className:X(`p-4 border rounded-none flex flex-wrap gap-2 max-h-40 overflow-y-auto`,`bg-z-panel border-z-border`),children:yt.map(e=>(0,Q.jsx)(`button`,{type:`button`,onClick:()=>re(e.value),className:X(`px-3 py-1.5 text-sm font-semibold border rounded-none transition-all`,b.includes(e.value)?`border-z-border/40 bg-z-panel text-z-secondary`:`border-z-border text-z-secondary hover:text-z-primary`),children:e.label},e.value))})]})]}),(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsxs)(`button`,{onClick:te,disabled:C,className:X(`flex items-center gap-2 px-6 py-3 text-z-primary text-sm font-semibold transition-all disabled:opacity-40`,`bg-z-accent hover:brightness-110 shadow-sm text-z-logo-text`),children:[C?(0,Q.jsx)(S,{size:12,className:`animate-spin`}):null,f?`Update Webhook`:`Create Webhook`]})})]}),a?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Q.jsx)(S,{size:24,className:`text-z-secondary animate-spin`})}):s?(0,Q.jsxs)(`div`,{className:X(`p-8 border border-dashed text-center space-y-3`,`border-z-border`),children:[(0,Q.jsx)(d,{size:28,className:`mx-auto text-red-400`}),(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-primary`,children:`Could not load webhooks`}),(0,Q.jsx)(`p`,{className:`text-xs text-z-secondary`,children:s}),(0,Q.jsxs)(`button`,{onClick:R,className:`inline-flex items-center gap-2 px-4 py-2 border border-z-border hover:border-z-active-border hover:bg-z-hover text-sm font-semibold text-z-secondary hover:text-z-primary transition-all`,children:[(0,Q.jsx)(y,{size:12}),` Retry`]})]}):n.length===0?(0,Q.jsx)(`div`,{className:`py-6`,children:(0,Q.jsx)(ze,{icon:de,title:`No webhooks configured`,message:`Add a webhook to receive HTTP callbacks when content events occur`,action:(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>u(!0),className:`flex items-center gap-2 px-4 py-2 border border-z-border hover:border-z-active-border hover:bg-z-hover text-sm font-semibold transition-all text-z-secondary hover:text-z-primary`,children:[(0,Q.jsx)(D,{size:12}),`Add Webhook`]})})}):(0,Q.jsx)(`div`,{className:`space-y-3`,children:n.map(e=>(0,Q.jsxs)(`div`,{className:`space-y-0`,children:[(0,Q.jsxs)(`div`,{className:X(`p-5 border rounded-none transition-all shadow-sm`,e.enabled?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-z-input border-z-border opacity-60`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[e.enabled?(0,Q.jsx)(_,{size:14,className:`text-z-secondary `}):(0,Q.jsx)(d,{size:14,className:`text-z-secondary`}),(0,Q.jsx)(`span`,{className:`text-sm font-mono font-bold truncate max-w-md`,children:e.url})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`button`,{onClick:()=>U(e.id,e.url),disabled:T===e.id||!e.enabled,className:X(`p-2 border rounded-none-none transition-colors`,`border-z-border text-z-secondary hover:text-z-primary`),title:`Send test event`,children:T===e.id?(0,Q.jsx)(S,{size:12,className:`animate-spin`}):(0,Q.jsx)(I,{size:12})}),(0,Q.jsx)(`button`,{onClick:()=>ne(e),className:X(`p-2 border rounded-none-none transition-colors`,e.enabled?`border-z-border text-status-orange hover:brightness-110`:`border-z-border text-z-secondary hover:text-z-primary`),title:e.enabled?`Disable`:`Enable`,children:e.enabled?(0,Q.jsx)(fe,{size:12}):(0,Q.jsx)(ae,{size:12})}),(0,Q.jsx)(`button`,{onClick:()=>ee(e),className:X(`px-3 py-1.5 text-sm font-semibold border rounded-none-none transition-colors`,`border-z-border text-z-secondary hover:text-z-primary`),children:`Edit`}),(0,Q.jsx)(`button`,{onClick:()=>H(e.id),className:X(`p-2 border rounded-none-none transition-colors`,`border-z-border text-z-secondary hover:text-status-red`),title:`Delete`,children:(0,Q.jsx)(i,{size:12})}),(0,Q.jsx)(`button`,{onClick:()=>B(e),className:X(`p-2 border rounded-none-none transition-colors`,O===e.id?`border-z-border/40 text-z-secondary`:`border-z-border text-z-secondary hover:text-z-primary`),title:`Delivery log`,children:O===e.id?(0,Q.jsx)(oe,{size:12}):(0,Q.jsx)(ye,{size:12})})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[e.events.map(e=>(0,Q.jsx)(`span`,{className:X(`px-2 py-0.5 text-sm font-semibold border rounded-none-none`,e===`*`?`border-z-border/30 text-z-secondary bg-z-hover`:`border-z-border text-z-secondary`),children:e},e)),e.secret&&(0,Q.jsx)(`span`,{className:X(`px-2 py-0.5 text-sm font-semibold border rounded-none-none`,`border-z-border text-z-secondary`),children:`Signed`})]})]}),O===e.id&&(0,Q.jsxs)(`div`,{className:X(`border border-t-0 rounded-none-none p-4`,`bg-z-input border-z-border`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(t,{size:12,className:`text-z-secondary`}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-secondary`,children:`Delivery Log`})]}),(0,Q.jsxs)(`button`,{onClick:()=>z(e.id,e.url),disabled:M===e.id,className:X(`flex items-center gap-1.5 px-3 py-1.5 text-sm font-semibold border rounded-none-none transition-colors`,`border-z-border text-z-secondary hover:text-z-primary`),children:[M===e.id?(0,Q.jsx)(S,{size:9,className:`animate-spin`}):(0,Q.jsx)(y,{size:9}),`Refresh`]})]}),M===e.id?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Q.jsx)(S,{size:16,className:`text-z-secondary animate-spin`})}):!A[e.url]||A[e.url].length===0?(0,Q.jsx)(`div`,{className:`py-2`,children:(0,Q.jsx)(ze,{icon:t,title:`No deliveries yet`,message:`Send a test event or wait for a content event to trigger this webhook`})}):(0,Q.jsxs)(`div`,{className:`space-y-2 max-h-80 overflow-y-auto`,children:[(0,Q.jsxs)(`div`,{className:X(`grid grid-cols-[1fr_1fr_80px_80px_100px_40px] gap-2 px-3 py-2 text-sm font-semibold border-b`,`text-z-secondary border-z-border`),children:[(0,Q.jsx)(`span`,{children:`Event`}),(0,Q.jsx)(`span`,{children:`Collection`}),(0,Q.jsx)(`span`,{children:`Status`}),(0,Q.jsx)(`span`,{children:`Code`}),(0,Q.jsx)(`span`,{children:`Time`}),(0,Q.jsx)(`span`,{className:`text-center`,children:`Action`})]}),A[e.url].map(t=>(0,Q.jsxs)(`div`,{className:X(`grid grid-cols-[1fr_1fr_80px_80px_100px_40px] gap-2 px-3 py-2.5 text-sm font-mono border rounded-none-none transition-colors items-center`,t.success?`bg-z-hover border-z-border`:`bg-z-active-bg border-z-active-border`),children:[(0,Q.jsx)(`span`,{className:`font-bold truncate`,children:t.event}),(0,Q.jsx)(`span`,{className:X(`truncate`,`text-z-secondary`),children:t.collectionSlug||`—`}),(0,Q.jsxs)(`span`,{className:`flex items-center gap-1`,children:[t.success?(0,Q.jsx)(_,{size:9,className:`text-z-secondary `}):(0,Q.jsx)(d,{size:9,className:`text-red-500`}),(0,Q.jsx)(`span`,{className:t.success?`text-z-secondary `:`text-red-500`,children:t.success?`OK`:`Failed`})]}),(0,Q.jsx)(`span`,{className:X(`font-bold`,t.responseStatus&&t.responseStatus>=200&&t.responseStatus<300?`text-z-secondary `:t.responseStatus&&t.responseStatus>=400?`text-red-500`:`text-z-secondary`),children:t.responseStatus||`—`}),(0,Q.jsx)(`span`,{className:X(`text-z-secondary`),children:ie(t.timestamp)}),(0,Q.jsx)(`div`,{className:`flex justify-center`,children:(0,Q.jsx)(`button`,{onClick:()=>W(e.id,t.id,e.url),disabled:P===t.id,className:X(`p-1.5 border rounded-none-none transition-colors`,`border-z-border text-z-secondary hover:text-z-primary hover:border-z-border-strong`),title:`Replay Delivery`,children:P===t.id?(0,Q.jsx)(S,{size:10,className:`animate-spin`}):(0,Q.jsx)(y,{size:10})})})]},t.id))]})]})]},e.id))})]})},xt=({theme:e})=>{let[t,n]=(0,Z.useState)([]),[r,a]=(0,Z.useState)(!0),[o,c]=(0,Z.useState)(null),[l,u]=(0,Z.useState)(``),[p,h]=(0,Z.useState)(null),[g,v]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(!1),[x,C]=(0,Z.useState)({id:``,name:``,version:`1.0.0`,description:``,author:``,homepage:``,packageName:``}),w=(0,Z.useRef)(!0);(0,Z.useEffect)(()=>(w.current=!0,()=>{w.current=!1}),[]);let T=async()=>{if(w.current){a(!0),c(null);try{let e=await Y.get(`/system/plugins`);w.current&&n(e.data.data||[])}catch(e){let t=e?.response?.data?.error||e?.message||`Failed to load plugins`;w.current&&c(t)}finally{w.current&&a(!1)}}};Z.useEffect(()=>{T()},[]);let E=async e=>{v(e.id);try{await Y.put(`/system/plugins/${e.id}`,{enabled:!e.enabled}),n(t=>t.map(t=>t.id===e.id?{...t,enabled:!t.enabled}:t)),J.success(e.enabled?`Plugin disabled`:`Plugin enabled`)}catch{J.error(`Failed to toggle plugin`)}finally{v(null)}},k=async e=>{if(await Fe({message:`Uninstall this plugin? Its functionality will be removed.`})){v(e);try{await Y.delete(`/system/plugins/${e}`),n(t=>t.filter(t=>t.id!==e)),J.success(`Plugin uninstalled`)}catch{J.error(`Failed to uninstall plugin`)}finally{v(null)}}},A=(e,t,r)=>{n(n=>n.map(n=>n.id===e?{...n,config:{...n.config,[t]:r}}:n))},j=async e=>{v(e.id);try{await Y.put(`/system/plugins/${e.id}`,{config:e.config}),J.success(`Plugin settings saved`)}catch{J.error(`Failed to save plugin settings`)}finally{v(null)}},N=async()=>{if(!x.id.trim()){J.error(`Plugin ID is required`);return}if(!x.name.trim()){J.error(`Plugin name is required`);return}v(`install`);try{await Y.post(`/system/plugins`,x),J.success(`Plugin "${x.name}" installed`),b(!1),C({id:``,name:``,version:`1.0.0`,description:``,author:``,homepage:``,packageName:``}),T()}catch(e){J.error(e.response?.data?.message||`Failed to install plugin`)}finally{v(null)}},P=t.filter(e=>e.name.toLowerCase().includes(l.toLowerCase())||e.id.toLowerCase().includes(l.toLowerCase())||e.description.toLowerCase().includes(l.toLowerCase())),I=t.filter(e=>e.enabled).length;return(0,Q.jsxs)(`div`,{className:`col-span-full space-y-6`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between border-b border-z-border pb-4`,children:[(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsxs)(`h3`,{className:`text-sm font-semibold flex items-center gap-3`,children:[(0,Q.jsx)(V,{size:16,className:`text-z-secondary`}),`Plugin Registry`]}),(0,Q.jsxs)(`span`,{className:`text-sm text-z-secondary font-bold mt-1`,children:[t.length,` installed · `,I,` active · Community extensibility framework`]})]}),(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>b(!y),className:`flex items-center gap-2 px-4 py-2 border border-z-active-border hover:border-z-accent hover:bg-z-active-bg text-sm font-semibold transition-all text-z-accent dark:text-z-active-text hover:text-z-primary`,children:[(0,Q.jsx)(D,{size:12}),`Install Plugin`]})]}),(0,Q.jsx)(se,{children:y&&(0,Q.jsx)(ve.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:`auto`},exit:{opacity:0,height:0},className:X(`border rounded-none overflow-hidden shadow-sm`,`bg-z-panel backdrop-blur-md border-z-border`),children:(0,Q.jsxs)(`div`,{className:`p-6 space-y-4`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-secondary`,children:`Register New Plugin`}),(0,Q.jsx)(`button`,{onClick:()=>b(!1),className:`text-z-secondary hover:text-z-primary text-sm font-semibold`,children:`Cancel`})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Plugin ID *`}),(0,Q.jsx)(`input`,{type:`text`,value:x.id,onChange:e=>C(t=>({...t,id:e.target.value})),placeholder:`acme-analytics`,className:X(`w-full border rounded-none py-2.5 px-3 text-sm font-mono transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Display Name *`}),(0,Q.jsx)(`input`,{type:`text`,value:x.name,onChange:e=>C(t=>({...t,name:e.target.value})),placeholder:`ACME Analytics`,className:X(`w-full border rounded-none py-2.5 px-3 text-sm transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Version`}),(0,Q.jsx)(`input`,{type:`text`,value:x.version,onChange:e=>C(t=>({...t,version:e.target.value})),placeholder:`1.0.0`,className:X(`w-full border rounded-none py-2.5 px-3 text-sm font-mono transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Author`}),(0,Q.jsx)(`input`,{type:`text`,value:x.author,onChange:e=>C(t=>({...t,author:e.target.value})),placeholder:`ACME Corp`,className:X(`w-full border rounded-none py-2.5 px-3 text-sm transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Homepage URL`}),(0,Q.jsx)(`input`,{type:`url`,value:x.homepage,onChange:e=>C(t=>({...t,homepage:e.target.value})),placeholder:`https://example.com/plugin`,className:X(`w-full border rounded-none py-2.5 px-3 text-sm font-mono transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`NPM Package`}),(0,Q.jsx)(`input`,{type:`text`,value:x.packageName,onChange:e=>C(t=>({...t,packageName:e.target.value})),placeholder:`zenith-plugin-acme-analytics`,className:X(`w-full border rounded-none py-2.5 px-3 text-sm font-mono transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Description`}),(0,Q.jsx)(`textarea`,{value:x.description,onChange:e=>C(t=>({...t,description:e.target.value})),placeholder:`What does this plugin do?`,rows:2,className:X(`w-full border rounded-none py-2.5 px-3 text-sm transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black resize-none`,e===`dark`?`bg-app border-z-border text-z-primary focus:border-z-accent`:`bg-z-panel border-z-border focus:border-z-accent`)})]}),(0,Q.jsx)(`div`,{className:`flex justify-end`,children:(0,Q.jsxs)(`button`,{onClick:N,disabled:g===`install`,className:X(`flex items-center gap-2 px-6 py-3 text-z-primary text-sm font-semibold transition-all disabled:opacity-40`,`bg-z-accent hover:brightness-110 shadow-sm text-z-logo-text`),children:[g===`install`?(0,Q.jsx)(S,{size:12,className:`animate-spin`}):(0,Q.jsx)(F,{size:12}),`Install Plugin`]})})]})})}),(0,Q.jsxs)(`div`,{className:`relative`,children:[(0,Q.jsx)(f,{size:14,className:`absolute left-4 top-1/2 -translate-y-1/2 text-z-secondary`}),(0,Q.jsx)(`input`,{type:`text`,placeholder:`Search plugins...`,value:l,onChange:e=>u(e.target.value),className:X(`w-full border rounded-none py-3 pl-11 pr-4 text-sm font-bold transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,e===`dark`?`bg-z-panel border-z-border text-z-primary focus:border-z-accent`:`bg-z-panel border-z-border focus:border-z-accent`)})]}),r?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Q.jsx)(S,{size:24,className:`text-z-secondary animate-spin`})}):o?(0,Q.jsxs)(`div`,{className:X(`p-12 border border-dashed rounded-none text-center space-y-4`,`border-z-border`),children:[(0,Q.jsx)(d,{size:36,className:`mx-auto text-red-400`}),(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-primary`,children:`Could not load plugins`}),(0,Q.jsx)(`p`,{className:`text-xs text-z-secondary max-w-xs mx-auto`,children:o}),(0,Q.jsxs)(`button`,{onClick:T,className:`inline-flex items-center gap-2 px-4 py-2 border border-z-border hover:border-z-active-border hover:bg-z-hover text-sm font-semibold text-z-secondary hover:text-z-primary transition-all`,children:[(0,Q.jsx)(s,{size:12}),` Retry`]})]}):P.length===0?(0,Q.jsxs)(`div`,{className:X(`p-12 border border-dashed rounded-none text-center space-y-4`,`border-z-border`),children:[(0,Q.jsx)(pe,{size:40,className:`mx-auto text-z-secondary`}),(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary`,children:t.length===0?`No plugins installed`:`No plugins match your search`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:t.length===0?`Install plugins to extend Zenith CMS functionality`:`Try a different search term`})]}):(0,Q.jsx)(`div`,{className:`space-y-3`,children:P.map(t=>{let n=p===t.id,r=t.configSchema&&Object.keys(t.configSchema).length>0;return(0,Q.jsxs)(ve.div,{layout:!0,className:X(`border rounded-none overflow-hidden transition-all shadow-sm`,t.enabled?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-z-input border-z-border opacity-60`),children:[(0,Q.jsxs)(`div`,{className:`px-5 py-4 flex items-center justify-between`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,Q.jsx)(`div`,{className:X(`w-10 h-10 rounded-none border flex items-center justify-center`,t.enabled?`bg-z-panel/5 border-z-border text-z-secondary`:e===`dark`?`bg-z-hover border-z-border text-z-secondary`:`bg-[var(--z-bg-hover)] border-z-border text-z-muted`),children:(0,Q.jsx)(V,{size:18})}),(0,Q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-primary`,children:t.name}),(0,Q.jsxs)(`span`,{className:`text-sm font-semibold text-z-secondary font-mono`,children:[`v`,t.version]}),t.enabled?(0,Q.jsx)(_,{size:12,className:`text-z-secondary `}):(0,Q.jsx)(d,{size:12,className:`text-z-secondary`})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 mt-0.5`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-bold text-z-secondary font-mono`,children:t.id}),t.author&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`text-z-primary`,children:`·`}),(0,Q.jsx)(`span`,{className:`text-sm font-bold text-z-secondary`,children:t.author})]})]}),t.description&&(0,Q.jsx)(`p`,{className:`text-sm text-z-muted mt-1 max-w-lg`,children:t.description})]})]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t.homepage&&(0,Q.jsx)(`a`,{href:t.homepage,target:`_blank`,rel:`noopener noreferrer`,className:X(`p-2 border rounded-none transition-colors`,`border-z-border text-z-secondary hover:text-z-primary`),title:`Plugin homepage`,children:(0,Q.jsx)(m,{size:12})}),(0,Q.jsx)(`button`,{onClick:()=>E(t),disabled:g===t.id,className:X(`p-2 border rounded-none transition-colors`,t.enabled?`border-amber-500/20 text-amber-500 hover:text-amber-400`:`border-z-border text-z-secondary hover:text-z-primary`),title:t.enabled?`Disable`:`Enable`,children:g===t.id?(0,Q.jsx)(S,{size:14,className:`animate-spin`}):t.enabled?(0,Q.jsx)(Te,{size:18}):(0,Q.jsx)(M,{size:18})}),r&&(0,Q.jsx)(`button`,{onClick:()=>h(n?null:t.id),className:X(`p-2 border rounded-none transition-colors`,n?`border-z-border/30 text-z-secondary`:e===`dark`?`border-z-border text-z-secondary hover:text-z-primary`:`border-z-border text-z-muted hover:text-z-secondary`),title:`Configure`,children:(0,Q.jsx)(O,{size:14})}),(0,Q.jsx)(`button`,{onClick:()=>k(t.id),disabled:g===t.id,className:X(`p-2 border rounded-none transition-colors`,`border-z-border text-z-secondary hover:text-status-red`),title:`Uninstall`,children:(0,Q.jsx)(i,{size:14})})]})]}),(0,Q.jsx)(se,{children:n&&r&&(0,Q.jsxs)(ve.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:`auto`},exit:{opacity:0,height:0},className:X(`border-t px-5 py-4 space-y-4`,e===`dark`?`border-z-border bg-app/20`:`border-z-border shadow-sm bg-[var(--z-bg-input)]/50`),children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-z-muted`,children:`Plugin Settings`}),Object.entries(t.configSchema).map(([e,n])=>(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsxs)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:[n.label,n.required&&(0,Q.jsx)(`span`,{className:`text-red-400 ml-1`,children:`*`})]}),n.description&&(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:n.description}),n.type===`boolean`?(0,Q.jsxs)(`button`,{onClick:()=>A(t.id,e,!t.config?.[e]),className:X(`flex items-center gap-2 px-3 py-2 border rounded-none transition-colors`,t.config?.[e]?`border-z-border/30 bg-z-panel text-z-secondary`:`border-z-border text-z-secondary`),children:[t.config?.[e]?(0,Q.jsx)(Te,{size:16}):(0,Q.jsx)(M,{size:16}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold`,children:t.config?.[e]?`Enabled`:`Disabled`})]}):n.type===`select`?(0,Q.jsx)(`select`,{value:t.config?.[e]||n.default||``,onChange:n=>A(t.id,e,n.target.value),className:X(`w-full border rounded-none py-2.5 px-3 text-sm font-bold transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`),children:n.options?.map(e=>(0,Q.jsx)(`option`,{value:e.value,children:e.label},e.value))}):n.type===`secret`?(0,Q.jsx)(`input`,{type:`password`,value:t.config?.[e]||``,onChange:n=>A(t.id,e,n.target.value),placeholder:`••••••••`,className:X(`w-full border rounded-none py-2.5 px-3 text-sm font-mono transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)}):(0,Q.jsx)(`input`,{type:n.type===`url`?`url`:n.type===`number`?`number`:`text`,value:t.config?.[e]||n.default||``,onChange:n=>A(t.id,e,n.target.value),className:X(`w-full border rounded-none py-2.5 px-3 text-sm transition-all outline-none focus-visible:ring-2 focus-visible:ring-z-active-border focus-visible:ring-offset-1 focus-visible:ring-offset-black`,`bg-z-panel border-z-border text-z-primary focus:border-z-active-border`)})]},e)),(0,Q.jsx)(`div`,{className:`flex justify-end pt-2`,children:(0,Q.jsxs)(`button`,{onClick:()=>j(t),disabled:g===t.id,className:X(`flex items-center gap-2 px-5 py-2.5 text-z-primary text-sm font-semibold transition-all disabled:opacity-40`,`bg-z-accent hover:brightness-110 shadow-sm text-z-logo-text`),children:[g===t.id?(0,Q.jsx)(S,{size:10,className:`animate-spin`}):null,`Save Settings`]})})]})})]},t.id)})}),(0,Q.jsxs)(`div`,{className:X(`p-5 border rounded-none-none space-y-3`,e===`dark`?`bg-z-hover border-z-border/10`:`bg-[var(--z-bg-input)] border-z-border`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Q.jsx)(s,{size:14,className:`text-amber-400`}),(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-amber-400`,children:`Developer Note`})]}),(0,Q.jsxs)(`ul`,{className:`space-y-1.5 text-sm text-z-muted font-bold leading-relaxed`,children:[(0,Q.jsx)(`li`,{children:`• Plugins are registered in the database and managed via this UI`}),(0,Q.jsx)(`li`,{children:`• Plugin code must be loaded at engine startup via cms.config.ts`}),(0,Q.jsxs)(`li`,{children:[`• Community plugins should be published as`,` `,(0,Q.jsx)(`code`,{className:`text-z-secondary font-mono`,children:`zenith-plugin-*`}),` on npm`]}),(0,Q.jsxs)(`li`,{children:[`• Use `,(0,Q.jsx)(`code`,{className:`text-z-secondary font-mono`,children:`configSchema`}),` to expose settings that admins can configure here`]}),(0,Q.jsx)(`li`,{children:`• Disabled plugins are not applied but remain installed for easy re-enabling`})]})]})]})},St=({newKey:e,setNewKey:t,theme:n})=>(0,Q.jsx)(`div`,{className:`fixed inset-0 z-[100] flex items-center justify-center p-4 bg-[var(--z-bg-modal)] backdrop-blur-sm`,children:(0,Q.jsxs)(ve.div,{initial:{scale:.9,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.9,opacity:0},className:X(`w-full max-w-md rounded-none-none p-6 border shadow-2xl relative overflow-hidden`,n===`dark`?`bg-[#0a0a0a] border-z-border`:`bg-z-panel border-z-border shadow-sm`),children:[(0,Q.jsx)(`div`,{className:`absolute top-0 right-0 p-6 text-z-secondary/10 pointer-events-none`,children:(0,Q.jsx)(j,{size:120,strokeWidth:.5})}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-4 mb-8`,children:[(0,Q.jsx)(`div`,{className:`w-12 h-12 rounded-none-none bg-z-panel flex items-center justify-center text-z-secondary border border-z-border/20`,children:(0,Q.jsx)(_,{size:24})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-lg font-semibold leading-none`,children:`Key Generated`}),(0,Q.jsxs)(`p`,{className:`text-sm font-bold text-z-secondary mt-2`,children:[`Vault Node: `,e.name]})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-4 mb-8`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-amber-500 leading-relaxed`,children:`CRITICAL: Copy this key now. It will never be displayed again for security integrity.`}),(0,Q.jsxs)(`div`,{className:X(`p-4 rounded-none-none border flex items-center justify-between gap-4 font-mono text-sm font-bold break-all transition-colors`,n===`dark`?`bg-z-hover border-z-border`:`bg-z-input border-z-border shadow-sm`),children:[e.key,(0,Q.jsx)(`button`,{onClick:()=>{navigator.clipboard.writeText(e.key),J.success(`KEY_COPIED_TO_CLIPBOARD`)},className:`p-2.5 rounded-none-none bg-z-border text-z-primary shrink-0 shadow-lg shadow-sm/20 hover:scale-105 active:scale-95 transition-all`,children:(0,Q.jsx)(v,{size:14})})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-2 mb-8`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-bold text-z-muted`,children:`Frontend .env Integration:`}),(0,Q.jsx)(`div`,{className:X(`p-4 rounded-none-none border font-mono text-sm whitespace-pre transition-colors text-z-secondary`,n===`dark`?`bg-[#0a0a0a] border-z-border`:`bg-z-accent border-z-border`),children:`VITE_CMS_URL=${typeof window<`u`?window.location.origin:`http://localhost:3000`}/api/v1
31
+ VITE_CMS_API_KEY=${e.key}
32
+ VITE_CMS_SITE_ID=your_tenant_id`})]}),(0,Q.jsx)(`button`,{onClick:()=>t(null),className:`w-full py-4 rounded-none-none bg-z-panel text-z-primary font-semibold text-sm hover:bg-[var(--z-border)] transition-all`,children:`I've copied the key`})]})}),Ct={2:`text-z-active-text bg-z-active-bg border-z-accent/20`,3:`text-z-active-text bg-z-accent/10 border-z-accent/20`,4:`text-amber-400 bg-amber-500/10 border-amber-500/20`,5:`text-red-400 bg-red-500/10 border-red-500/20`};function wt(e){return e&&Ct[String(Math.floor(e/100))]||`text-z-muted bg-z-hover border-z-border`}function Tt({theme:e=`dark`}){let n=e===`dark`,[r,i]=(0,Z.useState)([]),[a,o]=(0,Z.useState)(!0),[c,l]=(0,Z.useState)(!1),u=(0,Z.useRef)(!0);(0,Z.useEffect)(()=>()=>{u.current=!1},[]);let[p,m]=(0,Z.useState)(null),[h,v]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(`all`),[C,w]=(0,Z.useState)(``),[T,E]=(0,Z.useState)(1),[D,O]=(0,Z.useState)(0),k=(0,Z.useCallback)(async(e=!1)=>{e?l(!0):o(!0);try{let e={page:T,limit:20};b!==`all`&&(e.status=b),C.trim()&&(e.search=C.trim());let t=await Y.get(`/system/webhooks/deliveries`,{params:e}),n=t.data?.data;if(Array.isArray(n))i(n),O(t.data?.meta?.total||n.length);else if(n?.items)i(n.items),O(n.total||n.items.length);else{let e=await Y.get(`/system/audit-logs`,{params:{limit:20,page:T}}).catch(()=>null);if(e?.data?.data){let t=(e.data.data||[]).map(e=>({id:e._id||e.id,event:e.action||e.event||`unknown`,url:e.endpoint||`—`,success:e.status!==`error`,responseStatus:e.statusCode||(e.status===`error`?500:200),timestamp:e.createdAt||e.timestamp,durationMs:e.durationMs}));i(t),O(e.data?.meta?.total||t.length)}}}catch{}finally{o(!1),l(!1)}},[T,b,C]);(0,Z.useEffect)(()=>{k()},[k]);let A=async e=>{if(!e.webhookId)return J.error(`No webhook ID for replay`);v(e.id);try{await Y.post(`/system/webhooks/${e.webhookId}/replay`,{deliveryId:e.id}),J.success(`Webhook replayed`),k(!0)}catch(e){J.error(e?.response?.data?.error||`Replay failed`)}finally{v(null)}},j=()=>{let e=[`timestamp,event,url,status,duration_ms`,...r.map(e=>`"${e.timestamp}","${e.event}","${e.url}",${e.success?`success`:`failed`},${e.durationMs||``}`)].join(`
33
+ `),t=new Blob([e],{type:`text/csv`}),n=document.createElement(`a`);n.href=URL.createObjectURL(t),n.download=`webhook-logs-${new Date().toISOString().split(`T`)[0]}.csv`,n.click(),J.success(`Exported`)},M=r.filter(e=>{let t=!C||e.event.includes(C)||e.url.includes(C),n=b===`all`||b===`success`&&e.success||b===`failed`&&!e.success;return t&&n}),N=Math.max(1,Math.ceil(D/20)),P=X(`border rounded-none transition-all`,n?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-z-panel border-z-border shadow-sm`),I=X(`border rounded-none py-2 px-3 text-sm font-mono outline-none transition-all focus:ring-1 focus:ring-z-active-border focus:border-z-accent`,`bg-z-input border-z-border text-z-primary placeholder:text-z-muted`),L=r.filter(e=>e.success).length,R=r.filter(e=>!e.success).length,z=r.reduce((e,t)=>e+(t.durationMs||0),0)/(r.length||1);return(0,Q.jsxs)(`div`,{className:`space-y-6`,children:[(0,Q.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-3`,children:[{label:`Total Events`,value:D,icon:Ee,color:`text-z-active-text`},{label:`Successful`,value:L,icon:_,color:`text-z-active-text`},{label:`Failed`,value:R,icon:d,color:`text-red-400`},{label:`Avg Latency`,value:`${Math.round(z)}ms`,icon:t,color:`text-amber-400`}].map(({label:e,value:t,icon:r,color:i})=>(0,Q.jsxs)(`div`,{className:X(P,`p-4 flex items-center gap-3`),children:[(0,Q.jsx)(`div`,{className:X(`w-9 h-9 flex items-center justify-center border`,n?`bg-z-hover border-z-border`:`bg-z-input border-z-border`),children:(0,Q.jsx)(r,{size:16,className:i})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`div`,{className:X(`text-lg font-semibold`,`text-z-primary`),children:t}),(0,Q.jsx)(`div`,{className:`text-sm font-semibold text-z-secondary`,children:e})]})]},e))}),(0,Q.jsxs)(`div`,{className:X(P,`p-4 flex flex-wrap items-center gap-3`),children:[(0,Q.jsxs)(`div`,{className:`relative flex-1 min-w-[180px]`,children:[(0,Q.jsx)(f,{size:12,className:`absolute left-3 top-1/2 -translate-y-1/2 text-z-secondary`}),(0,Q.jsx)(`input`,{value:C,onChange:e=>w(e.target.value),placeholder:`Filter by event or URL...`,className:X(I,`pl-8 w-full`)})]}),(0,Q.jsx)(`div`,{className:`flex items-center gap-1`,children:[`all`,`success`,`failed`].map(e=>(0,Q.jsx)(`button`,{onClick:()=>{x(e),E(1)},className:X(`px-3 py-1.5 text-sm font-semibold border transition-all`,b===e?n?`bg-z-accent/20 border-z-active-border text-z-active-text`:`bg-z-active-bg border-z-active-border text-z-accent`:n?`bg-z-hover border-z-border text-z-secondary hover:text-z-secondary`:`bg-z-input border-z-border text-z-secondary`),children:e},e))}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[(0,Q.jsx)(`button`,{onClick:()=>k(!0),disabled:c,className:X(`p-2 border transition-all`,n?`border-z-border text-z-muted hover:text-z-primary hover:border-z-border`:`border-z-border text-z-secondary hover:text-z-primary`),children:(0,Q.jsx)(g,{size:13,className:c?`animate-spin`:``})}),(0,Q.jsxs)(`button`,{onClick:j,className:X(`flex items-center gap-1.5 px-3 py-2 text-sm font-semibold border transition-all`,n?`border-z-border text-z-muted hover:text-z-primary hover:border-z-border`:`border-z-border text-z-secondary hover:text-z-primary`),children:[(0,Q.jsx)(F,{size:11}),`Export CSV`]})]})]}),(0,Q.jsxs)(`div`,{className:X(P,`overflow-hidden`),children:[(0,Q.jsxs)(`div`,{className:X(`grid grid-cols-12 px-4 py-2 text-sm font-semibold text-z-secondary border-b`,`border-z-border`),children:[(0,Q.jsx)(`div`,{className:`col-span-1`,children:`Status`}),(0,Q.jsx)(`div`,{className:`col-span-3`,children:`Event`}),(0,Q.jsx)(`div`,{className:`col-span-4`,children:`Endpoint URL`}),(0,Q.jsx)(`div`,{className:`col-span-2`,children:`Time`}),(0,Q.jsx)(`div`,{className:`col-span-1`,children:`Latency`}),(0,Q.jsx)(`div`,{className:`col-span-1`,children:`Actions`})]}),a?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-16`,children:(0,Q.jsx)(S,{size:28,className:`text-z-active-text animate-spin`})}):M.length===0?(0,Q.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 gap-4`,children:[(0,Q.jsx)(`div`,{className:X(`w-16 h-16 flex items-center justify-center border`,n?`bg-z-hover border-z-border text-z-secondary`:`bg-z-input border-z-border text-z-muted`),children:(0,Q.jsx)(Ee,{size:28})}),(0,Q.jsxs)(`div`,{className:`text-center`,children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold `,n?`text-z-muted`:`text-z-secondary`),children:`No Event Logs`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary mt-1`,children:`Webhook deliveries will appear here`})]})]}):(0,Q.jsx)(`div`,{className:`divide-y`,style:{borderColor:`var(--z-border)`},children:M.map(e=>{let t=p===e.id;return(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:X(`grid grid-cols-12 px-4 py-3 items-center cursor-pointer group transition-colors`,n?`hover:bg-z-panel`:`hover:bg-[var(--z-bg-input)]`),onClick:()=>m(t?null:e.id),children:[(0,Q.jsx)(`div`,{className:`col-span-1 flex items-center`,children:e.success?(0,Q.jsx)(_,{size:14,className:`text-z-active-text`}):(0,Q.jsx)(d,{size:14,className:`text-red-400`})}),(0,Q.jsxs)(`div`,{className:`col-span-3`,children:[(0,Q.jsx)(`span`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:e.event}),e.responseStatus&&(0,Q.jsx)(`span`,{className:X(`ml-2 text-sm font-semibold px-1.5 py-0.5 border`,wt(e.responseStatus)),children:e.responseStatus})]}),(0,Q.jsx)(`div`,{className:`col-span-4`,children:(0,Q.jsx)(`span`,{className:X(`text-sm font-mono truncate block`,`text-z-secondary`),children:e.url||`—`})}),(0,Q.jsx)(`div`,{className:`col-span-2`,children:(0,Q.jsx)(`span`,{className:`text-sm text-z-secondary`,children:e.timestamp?new Date(e.timestamp).toLocaleString():`—`})}),(0,Q.jsx)(`div`,{className:`col-span-1`,children:(0,Q.jsx)(`span`,{className:X(`text-sm font-mono`,e.durationMs&&e.durationMs>1e3?`text-amber-400`:`text-z-secondary`),children:e.durationMs?`${e.durationMs}ms`:`—`})}),(0,Q.jsxs)(`div`,{className:`col-span-1 flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity`,children:[!e.success&&e.webhookId&&(0,Q.jsx)(`button`,{onClick:t=>{t.stopPropagation(),A(e)},disabled:h===e.id,className:`p-1.5 text-z-secondary hover:text-z-active-text transition-colors`,title:`Replay`,children:h===e.id?(0,Q.jsx)(S,{size:12,className:`animate-spin`}):(0,Q.jsx)(y,{size:12})}),t?(0,Q.jsx)(oe,{size:12,className:`text-z-secondary`}):(0,Q.jsx)(ye,{size:12,className:`text-z-secondary`})]})]}),t&&(0,Q.jsxs)(`div`,{className:X(`px-4 pb-4 pt-2 space-y-3 border-t`,n?`border-z-border bg-z-panel`:`border-z-border bg-[var(--z-bg-input)]`),children:[(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[e.requestBody&&(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary`,children:`Request Payload`}),(0,Q.jsx)(`pre`,{className:X(`text-sm font-mono p-3 border overflow-auto max-h-32 rounded-none`,n?`bg-app/60 border-z-border text-z-secondary`:`bg-z-panel border-z-border text-z-primary`),children:(()=>{try{return JSON.stringify(JSON.parse(e.requestBody),null,2)}catch{return e.requestBody}})()})]}),e.responseBody&&(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary`,children:`Response Body`}),(0,Q.jsx)(`pre`,{className:X(`text-sm font-mono p-3 border overflow-auto max-h-32 rounded-none`,n?`bg-app/60 border-z-border text-z-secondary`:`bg-z-panel border-z-border text-z-primary`),children:(()=>{try{return JSON.stringify(JSON.parse(e.responseBody),null,2)}catch{return e.responseBody}})()})]}),!e.requestBody&&!e.responseBody&&(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary italic`,children:`No payload data available for this entry`})]}),e.retryCount!==void 0&&e.retryCount>0&&(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(s,{size:11,className:`text-amber-400`}),(0,Q.jsxs)(`span`,{className:`text-sm text-amber-400 font-semibold`,children:[e.retryCount,` Retry `,e.retryCount===1?`Attempt`:`Attempts`]})]})]})]},e.id)})})]}),N>1&&(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsxs)(`span`,{className:`text-sm text-z-secondary`,children:[`Page `,T,` of `,N,` · `,D,` events`]}),(0,Q.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Q.jsx)(`button`,{onClick:()=>E(e=>Math.max(1,e-1)),disabled:T===1,className:X(`px-3 py-1.5 text-sm font-semibold border transition-all disabled:opacity-30`,n?`border-z-border text-z-muted hover:text-z-primary`:`border-z-border text-z-secondary`),children:`Prev`}),(0,Q.jsx)(`button`,{onClick:()=>E(e=>Math.min(N,e+1)),disabled:T===N,className:X(`px-3 py-1.5 text-sm font-semibold border transition-all disabled:opacity-30`,n?`border-z-border text-z-muted hover:text-z-primary`:`border-z-border text-z-secondary`),children:`Next`})]})]})]})}var Et={gdprEnabled:!1,ccpaEnabled:!1,cookieConsentEnabled:!1,cookieConsentCategories:[`necessary`,`analytics`,`marketing`],cookieExpiryDays:365,privacyPolicyUrl:``,termsOfServiceUrl:``,cookiePolicyUrl:``,dataRetentionDays:365,autoDeleteExpiredData:!1,dpoEmail:``,dpoName:``,companyName:``,companyAddress:``,soc2Compliant:!1,iso27001Compliant:!1,hipaaCompliant:!1},Dt=[{id:`necessary`,label:`Necessary`,desc:`Required for the site to function. Cannot be disabled.`,forced:!0},{id:`analytics`,label:`Analytics`,desc:`Help understand how visitors interact (Google Analytics, Plausible).`},{id:`marketing`,label:`Marketing`,desc:`Used for advertising and retargeting (Facebook Pixel, Google Ads).`},{id:`personalization`,label:`Personalization`,desc:`Remember user preferences and personalize the experience.`},{id:`functional`,label:`Functional`,desc:`Enable additional features like live chat, videos, social media.`}];function Ot({theme:e=`dark`}){let t=e===`dark`,[n,r]=(0,Z.useState)(Et),[a,o]=(0,Z.useState)(!0),[c,u]=(0,Z.useState)(!1),[d,f]=(0,Z.useState)(!1),[p,h]=(0,Z.useState)([]),[g,v]=(0,Z.useState)(`gdpr`),y=(0,Z.useCallback)(async()=>{o(!0);try{let e=await Y.get(`/system/settings/compliance`);e.data?.data&&r(t=>({...t,...e.data.data}))}catch{}finally{o(!1)}},[]);(0,Z.useEffect)(()=>{y()},[y]);let b=async()=>{u(!0);try{await Y.patch(`/system/settings/compliance`,n),J.success(`Compliance settings saved`)}catch{try{await Y.patch(`/system/settings`,{compliance:n}),J.success(`Compliance settings saved`)}catch{J.error(`Failed to save compliance settings`)}}finally{u(!1)}},w=X(`border rounded-none transition-all`,t?`bg-z-panel backdrop-blur-md border-z-border shadow-sm`:`bg-z-panel border-z-border shadow-sm`),T=X(`w-full border rounded-none py-2.5 px-4 text-sm font-mono outline-none transition-all focus:ring-1 focus:ring-z-active-border focus:border-z-accent`,`bg-z-input border-z-border text-z-primary placeholder:text-z-muted`),E=({checked:e,onChange:t})=>(0,Q.jsxs)(`label`,{className:`relative inline-flex items-center cursor-pointer flex-shrink-0`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>t(e.target.checked),className:`sr-only peer`}),(0,Q.jsx)(`div`,{className:X(`w-11 h-6 rounded-none peer peer-checked:after:translate-x-full after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-[var(--z-bg-hover)] after:rounded-none after:h-5 after:w-5 after:transition-all border shadow-inner`,`bg-[var(--z-border-strong)] peer-checked:bg-z-accent border-transparent`)})]}),D=({id:e,icon:n,title:r,desc:i,children:a})=>(0,Q.jsxs)(`div`,{className:w,children:[(0,Q.jsxs)(`button`,{className:`w-full flex items-center gap-4 p-5 text-left`,onClick:()=>v(g===e?``:e),children:[(0,Q.jsx)(`div`,{className:X(`w-10 h-10 flex items-center justify-center border flex-shrink-0`,t?`bg-z-active-bg border-z-active-border text-z-active-text`:`bg-z-active-bg border-z-active-border text-z-accent`),children:(0,Q.jsx)(n,{size:18})}),(0,Q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Q.jsx)(`h3`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:r}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary mt-0.5`,children:i})]}),g===e?(0,Q.jsx)(oe,{size:16,className:`text-z-secondary`}):(0,Q.jsx)(ye,{size:16,className:`text-z-secondary`})]}),g===e&&(0,Q.jsx)(`div`,{className:`px-5 pb-5 space-y-4 border-t`,style:{borderColor:`var(--z-border)`},children:(0,Q.jsx)(`div`,{className:`pt-4 space-y-4`,children:a})})]}),O=({label:e,desc:t,value:n,onChange:r,disabled:i=!1})=>(0,Q.jsxs)(`div`,{className:X(`flex items-center justify-between p-4 border`,`bg-z-panel border-z-border`),children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:e}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary mt-0.5`,children:t})]}),(0,Q.jsx)(E,{checked:n,onChange:i?()=>{}:r})]});return a?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,Q.jsx)(S,{size:28,className:`text-z-active-text animate-spin`})}):(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-3 gap-3`,children:[{key:`gdprEnabled`,label:`GDPR`,color:`violet`,icon:l},{key:`ccpaEnabled`,label:`CCPA`,color:`blue`,icon:l},{key:`soc2Compliant`,label:`SOC 2`,color:`emerald`,icon:_},{key:`iso27001Compliant`,label:`ISO 27001`,color:`amber`,icon:ge},{key:`hipaaCompliant`,label:`HIPAA`,color:`pink`,icon:z},{key:`cookieConsentEnabled`,label:`Cookie Consent`,color:`teal`,icon:B}].map(({key:e,label:i,color:a,icon:o})=>{let s=!!n[e];return(0,Q.jsxs)(`button`,{onClick:()=>r(t=>({...t,[e]:!s})),className:X(`flex items-center gap-3 p-4 border text-left transition-all`,s?t?`bg-${a}-500/10 border-${a}-500/30 shadow-sm`:`bg-${a}-50 border-${a}-200`:`bg-z-panel border-z-border hover:border-z-active-border`),children:[(0,Q.jsx)(o,{size:16,className:s?`text-${a}-400`:`text-z-secondary`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold `,s?t?`text-${a}-300`:`text-${a}-700`:t?`text-z-muted`:`text-z-secondary`),children:i}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:s?`Enabled`:`Disabled`})]})]},e)})}),(0,Q.jsxs)(D,{id:`gdpr`,icon:x,title:`GDPR & Privacy Compliance`,desc:`EU/UK General Data Protection Regulation configuration`,children:[(0,Q.jsx)(O,{label:`GDPR Mode`,desc:`Enables GDPR-compliant data handling across all system modules`,value:n.gdprEnabled,onChange:e=>r(t=>({...t,gdprEnabled:e}))}),(0,Q.jsx)(O,{label:`CCPA Compliance`,desc:`California Consumer Privacy Act — enables opt-out of data sale`,value:n.ccpaEnabled,onChange:e=>r(t=>({...t,ccpaEnabled:e}))}),(0,Q.jsx)(O,{label:`Auto-Delete Expired Data`,desc:`Automatically purge user data beyond the retention period`,value:n.autoDeleteExpiredData,onChange:e=>r(t=>({...t,autoDeleteExpiredData:e}))}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Data Retention Period (days)`}),(0,Q.jsx)(`input`,{type:`number`,value:n.dataRetentionDays,onChange:e=>r(t=>({...t,dataRetentionDays:parseInt(e.target.value)||365})),className:T,placeholder:`365`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary`,children:`User content and logs older than this will be eligible for deletion. Default: 365 days.`})]})]}),(0,Q.jsxs)(D,{id:`cookies`,icon:B,title:`Cookie Consent & Tracking`,desc:`Banner configuration and cookie category management`,children:[(0,Q.jsx)(O,{label:`Show Cookie Consent Banner`,desc:`Display an EU-compliant consent banner to all visitors on first visit`,value:n.cookieConsentEnabled,onChange:e=>r(t=>({...t,cookieConsentEnabled:e}))}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Cookie Categories`}),(0,Q.jsx)(`div`,{className:`space-y-2`,children:Dt.map(e=>{let t=n.cookieConsentCategories.includes(e.id);return(0,Q.jsxs)(`div`,{className:X(`flex items-start gap-3 p-3 border`,`border-z-border bg-z-hover`),children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:t||e.forced,disabled:e.forced,onChange:t=>{let i=t.target.checked?[...n.cookieConsentCategories,e.id]:n.cookieConsentCategories.filter(t=>t!==e.id);r(e=>({...e,cookieConsentCategories:i}))},className:`mt-0.5 accent-z-accent`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`p`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:[e.label,` `,e.forced&&(0,Q.jsx)(`span`,{className:`text-z-secondary`,children:`(Required)`})]}),(0,Q.jsx)(`p`,{className:`text-sm text-z-secondary mt-0.5`,children:e.desc})]})]},e.id)})})]}),(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Cookie Expiry (days)`}),(0,Q.jsx)(`input`,{type:`number`,value:n.cookieExpiryDays,onChange:e=>r(t=>({...t,cookieExpiryDays:parseInt(e.target.value)||365})),className:T,placeholder:`365`})]})]}),(0,Q.jsx)(D,{id:`docs`,icon:C,title:`Legal Document URLs`,desc:`Privacy policy, terms of service, and cookie policy links`,children:[{key:`privacyPolicyUrl`,label:`Privacy Policy URL`,placeholder:`https://yoursite.com/privacy`},{key:`termsOfServiceUrl`,label:`Terms of Service URL`,placeholder:`https://yoursite.com/terms`},{key:`cookiePolicyUrl`,label:`Cookie Policy URL`,placeholder:`https://yoursite.com/cookies`}].map(({key:e,label:t,placeholder:i})=>(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:t}),n[e]&&(0,Q.jsxs)(`a`,{href:n[e],target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1 text-sm text-z-active-text hover:text-z-active-text`,children:[`Preview `,(0,Q.jsx)(m,{size:9})]})]}),(0,Q.jsx)(`input`,{type:`url`,value:n[e]||``,onChange:t=>r(n=>({...n,[e]:t.target.value})),placeholder:i,className:T})]},e))}),(0,Q.jsx)(D,{id:`dpo`,icon:re,title:`Data Protection Officer (DPO)`,desc:`Required for GDPR compliance — DPO contact details`,children:(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[[{key:`dpoName`,label:`DPO Full Name`,placeholder:`Jane Doe`},{key:`dpoEmail`,label:`DPO Email Address`,placeholder:`dpo@company.com`},{key:`companyName`,label:`Legal Entity Name`,placeholder:`Acme Corp Ltd.`}].map(({key:e,label:t,placeholder:i})=>(0,Q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:t}),(0,Q.jsx)(`input`,{type:e===`dpoEmail`?`email`:`text`,value:n[e]||``,onChange:t=>r(n=>({...n,[e]:t.target.value})),placeholder:i,className:T})]},e)),(0,Q.jsxs)(`div`,{className:`space-y-1.5 md:col-span-2`,children:[(0,Q.jsx)(`label`,{className:`text-sm font-semibold text-z-secondary`,children:`Registered Business Address`}),(0,Q.jsx)(`textarea`,{value:n.companyAddress||``,onChange:e=>r(t=>({...t,companyAddress:e.target.value})),rows:2,placeholder:`123 Business St, City, Country`,className:X(T,`resize-none`)})]})]})}),(0,Q.jsxs)(D,{id:`certs`,icon:R,title:`Compliance Certifications`,desc:`Declare certification status for your enterprise compliance posture`,children:[(0,Q.jsxs)(`div`,{className:X(`p-4 border flex items-start gap-3`,t?`bg-z-accent/5 border-z-accent/20`:`bg-z-active-bg border-z-active-border`),children:[(0,Q.jsx)(N,{size:14,className:`text-z-active-text mt-0.5 flex-shrink-0`}),(0,Q.jsx)(`p`,{className:`text-sm text-z-active-text leading-relaxed`,children:`These flags are informational declarations only — enabling them does not automatically enforce the certification. Ensure your infrastructure and processes meet the actual certification requirements.`})]}),(0,Q.jsx)(O,{label:`SOC 2 Type II`,desc:`Declare SOC 2 certification for security, availability, and confidentiality`,value:n.soc2Compliant,onChange:e=>r(t=>({...t,soc2Compliant:e}))}),(0,Q.jsx)(O,{label:`ISO 27001`,desc:`Information security management system standard compliance`,value:n.iso27001Compliant,onChange:e=>r(t=>({...t,iso27001Compliant:e}))}),(0,Q.jsx)(O,{label:`HIPAA`,desc:`Health Insurance Portability and Accountability Act — healthcare data handling`,value:n.hipaaCompliant,onChange:e=>r(t=>({...t,hipaaCompliant:e}))})]}),(0,Q.jsxs)(D,{id:`rights`,icon:z,title:`Data Subject Rights`,desc:`Handle GDPR data export and deletion requests`,children:[(0,Q.jsxs)(`div`,{className:X(`p-4 border flex items-start gap-3`,t?`bg-amber-500/5 border-amber-500/20`:`bg-amber-50 border-amber-200`),children:[(0,Q.jsx)(s,{size:14,className:`text-amber-400 mt-0.5 flex-shrink-0`}),(0,Q.jsx)(`p`,{className:`text-sm text-amber-400 leading-relaxed`,children:`GDPR Articles 15-17 require you to fulfill data access, portability, and deletion requests within 30 days.`})]}),(0,Q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,Q.jsxs)(`button`,{onClick:async()=>{f(!0);try{let e=await Y.post(`/system/settings/gdpr/export-all`);J.success(e.data?.message||`Export initiated — check your email`)}catch{J.error(`Export request failed`)}finally{f(!1)}},className:X(`flex items-center justify-center gap-2 p-4 border text-sm font-semibold transition-all`,t?`bg-z-hover border-z-border text-z-secondary hover:border-z-active-border hover:text-z-active-text`:`bg-z-input border-z-border text-z-primary hover:bg-z-active-bg hover:text-z-accent`),children:[d?(0,Q.jsx)(S,{size:13,className:`animate-spin`}):(0,Q.jsx)(F,{size:13}),`Export All User Data`]}),(0,Q.jsxs)(`button`,{onClick:async()=>{if(window.confirm(`This will queue deletion of all expired user data. Are you sure?`)){f(!0);try{let e=await Y.post(`/system/settings/gdpr/purge-expired`);J.success(e.data?.message||`Purge queued`)}catch{J.error(`Purge request failed`)}finally{f(!1)}}},className:X(`flex items-center justify-center gap-2 p-4 border text-sm font-semibold transition-all`,t?`bg-red-500/5 border-red-500/20 text-red-400 hover:bg-red-500/10`:`bg-red-50 border-red-200 text-red-600 hover:bg-red-100`),children:[d?(0,Q.jsx)(S,{size:13,className:`animate-spin`}):(0,Q.jsx)(i,{size:13}),`Purge Expired Records`]})]})]}),(0,Q.jsx)(`div`,{className:`flex justify-end pt-2`,children:(0,Q.jsxs)(`button`,{onClick:b,disabled:c,className:X(`flex items-center justify-center gap-2 px-6 py-2.5 rounded-lg text-sm font-semibold transition-all shadow-sm hover:scale-105 active:scale-95 disabled:opacity-50 disabled:hover:scale-100`,t?`bg-emerald-500 hover:bg-emerald-400 text-black`:`bg-emerald-500 text-white hover:bg-emerald-600`),children:[c?(0,Q.jsx)(S,{size:13,className:`animate-spin`}):(0,Q.jsx)(_,{size:13}),`Save Compliance Config`]})})]})}var kt=({theme:e})=>{let r=e===`dark`,[c,l]=(0,Z.useState)(null),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(!0),[m,h]=(0,Z.useState)([]),[_,v]=(0,Z.useState)(!1),[y,x]=(0,Z.useState)(!1);(0,Z.useEffect)(()=>{let e=setInterval(()=>{d(e=>e&&e.uptime!=null?{...e,uptime:e.uptime+1}:e)},1e3);return()=>clearInterval(e)},[]);let C=(0,Z.useCallback)(async()=>{p(!0);try{let e=await Y.get(`/system/health`);d(e.data?.data||e.data)}catch{}finally{p(!1)}},[]);(0,Z.useEffect)(()=>{C()},[C]),(0,Z.useEffect)(()=>{let e=setInterval(C,3e4);return()=>clearInterval(e)},[C]);let w=async()=>{v(!0);try{h((await Y.get(`/system/ops/logs`,{params:{lines:50}})).data?.data||[`Log streaming not available in current environment`])}catch{h([`Unable to retrieve server logs. Ensure sufficient permissions.`])}finally{v(!1)}},T=async(e,t,n=!0)=>{if(!(n&&!await Fe({message:`Execute: ${e}? This may cause temporary downtime.`}))){l(e);try{let n=await Y.post(t);J.success(n.data?.message||`${e} executed successfully`)}catch(t){J.error(t?.response?.data?.message||`Failed to execute ${e}`)}finally{l(null)}}},E=[{id:`restart-backend`,title:`Restart Backend Node`,description:`Gracefully drains active connections and restarts the core Node.js server. PM2/nodemon will catch the exit.`,icon:n,color:`text-z-active-text`,bg:`bg-z-active-bg`,border:`border-z-active-border`,action:()=>T(`Restart Backend`,`/system/ops/restart-backend`)},{id:`restart-frontend`,title:`Restart Admin UI`,description:`Sends a reload signal to the frontend service or triggers a Vercel/PM2 restart for the admin dashboard.`,icon:b,color:`text-z-active-text`,bg:`bg-z-accent/10`,border:`border-z-accent/20`,action:()=>T(`Restart Frontend`,`/system/ops/restart-frontend`)},{id:`clear-cache`,title:`Flush System Cache`,description:`Purges Redis / in-memory caches, compiled templates, and temporary files. Forces fresh state.`,icon:i,color:`text-amber-400`,bg:`bg-amber-500/10`,border:`border-amber-500/20`,action:()=>T(`Clear Cache`,`/system/ops/clear-cache`,!1)},{id:`rebuild-backend`,title:`Rebuild Core API`,description:`Runs the TypeScript compiler and rebuilds the backend bundle before an automatic restart.`,icon:ue,color:`text-z-active-text`,bg:`bg-z-active-bg`,border:`border-z-accent/20`,action:()=>T(`Rebuild Backend`,`/system/ops/rebuild-backend`)},{id:`restart-all`,title:`Full Infrastructure Restart`,description:`Executes a cold boot of all services, databases, and caches. Use only for critical recovery.`,icon:xe,color:`text-red-400`,bg:`bg-red-500/10`,border:`border-red-500/20`,action:()=>T(`Restart All Systems`,`/system/ops/restart-all`)},{id:`create-backup`,title:`Create Database Backup`,description:`Snapshots the active database to a compressed archive. Download from the Database tab.`,icon:a,color:`text-teal-400`,bg:`bg-teal-500/10`,border:`border-teal-500/20`,action:()=>T(`Create Backup`,`/system/backup/create`,!1)}],D=u?.memoryUsage,O=D?.heapUsed?(D.heapUsed/1024/1024).toFixed(0):`—`,k=D?.heapTotal?(D.heapTotal/1024/1024).toFixed(0):`—`,A=u?.uptime,j=A?A<3600?`${Math.floor(A/60)}m ${Math.floor(A%60)}s`:`${Math.floor(A/3600)}h ${Math.floor(A%3600/60)}m ${Math.floor(A%60)}s`:`—`,M=u?.database||`unknown`,N=u?.status||`unknown`,P=X(`border rounded-none transition-all shadow-sm`,r?`bg-z-panel backdrop-blur-md border-z-border`:`bg-z-input border-z-border shadow-sm`);return(0,Q.jsxs)(`div`,{className:`space-y-6`,children:[(0,Q.jsxs)(`div`,{className:X(`p-5 border flex items-start gap-4`,r?`bg-amber-500/5 border-amber-500/30`:`bg-amber-50 border-amber-200 shadow-sm`),children:[(0,Q.jsx)(s,{size:20,className:`text-amber-500 shrink-0 mt-0.5`}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:X(`text-sm font-semibold `,r?`text-amber-400`:`text-amber-700`),children:`System Level Operations`}),(0,Q.jsx)(`p`,{className:X(`text-sm font-bold mt-1`,r?`text-z-muted`:`text-z-secondary`),children:`These operations directly manipulate process management (PM2, Docker) and may cause temporary service interruptions. Ensure all users are offline before executing destructive operations.`})]})]}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-1`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary`,children:`Live System Health`}),(0,Q.jsxs)(`button`,{onClick:C,className:X(`flex items-center gap-1 text-sm font-semibold `,r?`text-z-secondary hover:text-z-primary`:`text-z-muted hover:text-z-primary`),children:[(0,Q.jsx)(g,{size:10,className:f?`animate-spin`:``}),`Refresh`]})]}),(0,Q.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-3`,children:[{label:`System Status`,value:N.toUpperCase(),icon:Ee,color:N===`ok`?`text-z-active-text`:`text-red-400`,bg:N===`ok`?`bg-z-active-bg`:`bg-red-500/10`,border:N===`ok`?`border-z-accent/20`:`border-red-500/20`},{label:`Database`,value:M.toUpperCase(),icon:z,color:M===`ok`?`text-z-active-text`:`text-amber-400`,bg:M===`ok`?`bg-z-active-bg`:`bg-amber-500/10`,border:M===`ok`?`border-z-accent/20`:`border-amber-500/20`},{label:`Memory`,value:f?`...`:`${O}/${k} MB`,icon:ue,color:`text-z-active-text`,bg:`bg-z-accent/10`,border:`border-z-accent/20`},{label:`Uptime`,value:f?`...`:j,icon:t,color:`text-z-active-text`,bg:`bg-z-active-bg`,border:`border-z-active-border`}].map(({label:e,value:t,icon:n,color:r,bg:i,border:a})=>(0,Q.jsxs)(`div`,{className:X(P,`p-4 flex items-center gap-3`),children:[(0,Q.jsx)(`div`,{className:X(`w-9 h-9 flex items-center justify-center border`,i,a),children:(0,Q.jsx)(n,{size:15,className:r})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`p`,{className:X(`text-sm font-semibold`,`text-z-primary`),children:f?`...`:t}),(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary`,children:e})]})]},e))}),u&&(0,Q.jsx)(`div`,{className:X(P,`px-5 py-4 flex flex-wrap gap-4`),children:[{label:`CMS Version`,value:u.version||`—`},{label:`Node.js`,value:u.nodeVersion||`—`},{label:`Environment`,value:(u.environment||`production`).toUpperCase()},{label:`Platform`,value:navigator.platform||`—`}].map(({label:e,value:t})=>(0,Q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary`,children:e}),(0,Q.jsx)(`p`,{className:X(`text-sm font-mono font-bold`,`text-z-secondary`),children:t})]},e))})]}),(0,Q.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4`,children:E.map(e=>(0,Q.jsxs)(`div`,{className:X(P,`flex flex-col justify-between p-6 group`),children:[(0,Q.jsxs)(`div`,{className:`space-y-4`,children:[(0,Q.jsx)(`div`,{className:X(`w-12 h-12 flex items-center justify-center border`,e.bg,e.border,e.color),children:(0,Q.jsx)(e.icon,{size:20})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h4`,{className:X(`text-sm font-semibold `,`text-z-primary`),children:e.title}),(0,Q.jsx)(`p`,{className:X(`text-sm font-bold leading-relaxed mt-2`,`text-z-secondary`),children:e.description})]})]}),(0,Q.jsx)(`div`,{className:`mt-6 pt-4 border-t`,style:{borderColor:`var(--z-border)`},children:(0,Q.jsx)(`button`,{onClick:e.action,disabled:c!==null,className:X(`w-full flex items-center justify-center gap-2 px-4 py-3 text-sm font-semibold transition-all disabled:opacity-40`,r?`bg-z-hover hover:bg-[var(--z-bg-hover)] text-z-primary border border-z-border hover:border-z-border`:`bg-[var(--z-border)] hover:bg-z-input text-z-primary border border-transparent`),children:c===e.title?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(S,{size:12,className:`animate-spin`}),`Executing...`]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(g,{size:12}),`Execute`]})})})]},e.id))}),(0,Q.jsxs)(`div`,{className:`space-y-2`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-1`,children:[(0,Q.jsx)(`p`,{className:`text-sm font-semibold text-z-secondary`,children:`Server Log Stream`}),(0,Q.jsxs)(`button`,{onClick:()=>{x(!y),y||w()},className:X(`text-sm font-semibold flex items-center gap-1`,r?`text-z-active-text hover:text-z-active-text`:`text-z-accent hover:text-z-active-text`),children:[(0,Q.jsx)(o,{size:11}),y?`Hide`:`Show`,` Logs`]})]}),y&&(0,Q.jsxs)(`div`,{className:X(`border rounded-none overflow-hidden`,r?`bg-app border-z-border`:`bg-z-accent border-z-border`),children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-z-border`,children:[(0,Q.jsx)(`span`,{className:`text-sm font-semibold text-green-400`,children:`● LIVE`}),(0,Q.jsx)(`button`,{onClick:w,disabled:_,className:`text-sm text-z-secondary hover:text-z-primary`,children:(0,Q.jsx)(g,{size:10,className:_?`animate-spin`:``})})]}),(0,Q.jsx)(`div`,{className:`p-4 font-mono text-sm text-green-400/80 max-h-64 overflow-y-auto space-y-0.5`,children:_?(0,Q.jsx)(S,{size:14,className:`animate-spin text-green-400`}):m.length===0?(0,Q.jsx)(`p`,{className:`text-z-secondary`,children:`No log entries available`}):m.map((e,t)=>(0,Q.jsx)(`p`,{className:`leading-5`,children:e},t))})]})]})]})},At=()=>{let{theme:e}=Ae(),{isAdmin:t,isEditor:n}=Ue(),r=he(),i=new URLSearchParams(r.search),[a,s]=(0,Z.useState)(i.get(`tab`)||`general`),[c,d]=(0,Z.useState)({siteName:``,siteDescription:``,logoUrl:``,faviconUrl:``,ogImageUrl:``,publicUrl:``,maintenanceMode:!1,defaultLocale:`en`,supportedLocales:[`en`],timezone:`UTC`,dateFormat:`MM/DD/YYYY`,supportEmail:``,mediaProvider:`local`,maxUploadSize:5242880,jwtExpiresIn:`7d`,passwordMinLength:8,allowRegistration:!1,rateLimitWindow:15,rateLimitMax:100,corsOrigins:[],customCSS:``,enableTelemetry:!0}),[f,p]=(0,Z.useState)(!0),[m,h]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)([]),[w,E]=(0,Z.useState)([]),[D,k]=(0,Z.useState)(null),[A,M]=(0,Z.useState)(null),[N]=(0,Z.useState)(localStorage.getItem(`activeSiteId`)),[P,F]=(0,Z.useState)(null),[I,L]=(0,Z.useState)([]),[R,B]=(0,Z.useState)(null),[ee,te]=(0,Z.useState)(`all`),[H,ne]=(0,Z.useState)([]),U=(0,Z.useCallback)(async()=>{p(!0);try{let[e,t,n,r,i,a,o]=await Promise.all([Y.get(`/system/settings`),Y.get(`/system/db/stats`),Y.get(`/system/users`),Y.get(`/system/api-keys`),Y.get(`/system/health`),Y.get(`/roles`).catch(()=>({data:{data:[]}})),Y.get(`/system/plugins`).catch(()=>({data:{data:[]}}))]);if(d(e.data.data),y(t.data.data),x(n.data.data),E(r.data.data),F(i.data.data),L(a.data?.data||[]),ne(o.data?.data||[]),N)try{M((await Y.get(`/sites/${N}`)).data.data)}catch(e){console.error(`Failed to load active site details`,e),J.error(`Failed to load site details`)}}catch{console.error(`Failed to fetch system parameters`),J.error(`Failed to fetch system parameters`)}finally{setTimeout(()=>p(!1),300)}},[N]);(0,Z.useEffect)(()=>{let e=setTimeout(()=>{U()},0);return()=>clearTimeout(e)},[U]),(0,Z.useEffect)(()=>{let e=i.get(`tab`);e&&setTimeout(()=>s(e),0)},[r.search]);let W=async()=>{h(!0);try{await Y.patch(`/system/settings`,c),A&&N&&await Y.patch(`/sites/${N}`,{billingEnabled:A.billingEnabled,paymentProvider:A.paymentProvider,stripePublicKey:A.stripePublicKey,stripeSecretKey:A.stripeSecretKey,stripeWebhookSecret:A.stripeWebhookSecret,paypalClientId:A.paypalClientId,paypalClientSecret:A.paypalClientSecret,paypalWebhookId:A.paypalWebhookId,razorpayKeyId:A.razorpayKeyId,razorpayKeySecret:A.razorpayKeySecret,razorpayWebhookSecret:A.razorpayWebhookSecret,currency:A.currency,pricingPlans:A.pricingPlans}),J.success(`Settings committed successfully`)}catch{J.error(`Failed to commit settings`)}finally{h(!1)}},G=[{label:`Environment Settings`,tabs:[{id:`general`,label:`General Info`,icon:T,sub:`Site Profile`,adminOnly:!0},{id:`appearance`,label:`Appearance`,icon:ie,sub:`White-Label`,adminOnly:!0}]},{label:`Access Management`,tabs:[{id:`users`,label:`Users`,icon:q,sub:`Admin Registry`,adminOnly:!0},{id:`roles`,label:`Roles & Permissions`,icon:l,sub:`Granular Access`,adminOnly:!0},{id:`keys`,label:`API Keys`,icon:j,sub:`Access Tokens`,adminOnly:!0}]},{label:`Core Services`,tabs:[{id:`security`,label:`Security Policies`,icon:l,sub:`Access Control`,adminOnly:!0},{id:`api-explorer`,label:`API Explorer`,icon:o,sub:`GraphQL & REST`},{id:`database`,label:`Database`,icon:z,sub:`Storage Stats`,adminOnly:!0},...H.some(e=>e.id.includes(`email`)||e.id.includes(`smtp`)||e.name.toLowerCase().includes(`email`))?[{id:`notifications`,label:`Email Relay`,icon:re,sub:`Email Delivery`,adminOnly:!0}]:[],...H.some(e=>e.id.includes(`webhook`)||e.name.toLowerCase().includes(`webhook`))?[{id:`webhooks`,label:`Webhooks`,icon:de,sub:`HTTP Callbacks`,adminOnly:!0},{id:`webhook-logs`,label:`Event Logs`,icon:de,sub:`Webhook History`,adminOnly:!0}]:[],{id:`plugins`,label:`Plugins`,icon:V,sub:`Extensions`,adminOnly:!0},{id:`system`,label:`System Ops`,icon:O,sub:`Restart & Maintenance`,adminOnly:!0}]},{label:`Legal & Compliance`,tabs:[{id:`legal`,label:`Compliance`,icon:C,sub:`Privacy & GDPR`}]}],K=G.flatMap(e=>e.tabs).find(e=>e.id===a);return f?(0,Q.jsx)(`div`,{className:`min-h-[80vh] flex items-center justify-center`,children:(0,Q.jsx)(S,{size:32,className:`text-z-secondary animate-spin`})}):(0,Q.jsxs)(`div`,{className:`flex flex-col h-[calc(100vh-64px)] overflow-hidden`,children:[(0,Q.jsx)(Ie,{title:`Settings`,description:`Configure environment preferences, integrations, and access control.`,icon:(0,Q.jsx)(O,{size:24}),backLink:{to:`/`,label:`Dashboard`},actions:(0,Q.jsxs)(`button`,{onClick:W,disabled:m,className:X(`flex items-center justify-center gap-2 px-6 py-2.5 rounded-lg text-sm font-semibold transition-all shadow-sm hover:scale-105 active:scale-95 disabled:opacity-50 disabled:hover:scale-100`,e===`dark`?`bg-emerald-500 hover:bg-emerald-400 text-black`:`bg-emerald-500 text-white hover:bg-emerald-600`),children:[m?(0,Q.jsx)(S,{size:16,className:`animate-spin`}):(0,Q.jsx)(u,{size:16}),`Save Changes`]})}),(0,Q.jsx)(We,{sidebarPosition:`left`,sidebarWidth:`w-full lg:w-[320px]`,className:`flex-1 min-h-0`,sidebar:(0,Q.jsx)(`div`,{className:`p-6 space-y-8 h-full overflow-y-auto pb-24`,children:G.map(e=>(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h3`,{className:`text-sm font-semibold text-z-muted mb-3 px-3`,children:e.label}),(0,Q.jsx)(`div`,{className:`space-y-1`,children:e.tabs.filter(e=>!e.adminOnly||t).map(e=>(0,Q.jsxs)(`button`,{onClick:()=>s(e.id),className:X(`w-full flex items-center gap-3 px-3 py-2.5 rounded-none transition-all group border`,a===e.id?`bg-z-active-bg border-z-active-border text-z-active-text shadow-sm transform scale-[1.02]`:`text-z-secondary border-transparent hover:bg-z-hover hover:text-z-primary`),children:[(0,Q.jsx)(`div`,{className:X(`w-8 h-8 flex items-center justify-center transition-colors shadow-sm`,a===e.id?`bg-z-accent text-z-logo-text`:`bg-z-hover text-z-secondary group-hover:text-z-primary`),children:(0,Q.jsx)(e.icon,{size:16})}),(0,Q.jsx)(`div`,{className:`flex flex-col items-start leading-tight`,children:(0,Q.jsx)(`span`,{className:`text-sm font-semibold`,children:e.label})})]},e.id))})]},e.label))}),children:(0,Q.jsx)(`div`,{className:X(`flex-1 overflow-y-auto p-6 lg:p-10 pb-32 lg:pb-32`,e===`dark`&&`bg-app`),children:(0,Q.jsx)(`div`,{className:X(`min-h-[600px] border mb-16`,`z-card p-8`),children:(0,Q.jsx)(se,{mode:`wait`,children:(0,Q.jsxs)(ve.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:-10},className:`space-y-8 relative z-10`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-4 border-b pb-6`,style:{borderColor:`var(--z-border)`},children:[(0,Q.jsx)(`div`,{className:`w-10 h-10 bg-z-active-bg flex items-center justify-center text-z-active-text`,children:K?.icon&&(0,Q.jsx)(K.icon,{size:20})}),(0,Q.jsxs)(`div`,{children:[(0,Q.jsx)(`h2`,{className:X(`text-xl font-bold `,`text-z-primary`),children:K?.label}),(0,Q.jsx)(`p`,{className:X(`text-xs mt-1`,e===`dark`?`text-z-muted`:`text-z-secondary`),children:K?.sub})]})]}),(0,Q.jsx)(`div`,{className:`space-y-6 w-full`,children:(()=>{switch(a){case`general`:return(0,Q.jsx)(qe,{settings:c,setSettings:d,theme:e});case`security`:return(0,Q.jsx)(Je,{settings:c,setSettings:d,theme:e});case`notifications`:return(0,Q.jsx)(Xe,{settings:c,setSettings:d,theme:e,testingSmtp:g,setTestingSmtp:_});case`users`:return(0,Q.jsx)(it,{users:b,theme:e,fetchData:U});case`keys`:return(0,Q.jsx)(ut,{apiKeys:w,theme:e,fetchData:U,setNewKey:k});case`database`:return(0,Q.jsx)(dt,{dbStats:v,theme:e});case`roles`:return(0,Q.jsx)(mt,{roles:I,setRoles:L,editingRole:R,setEditingRole:B,roleFilter:ee,setRoleFilter:te,healthData:P,users:b,theme:e});case`appearance`:return(0,Q.jsx)(vt,{settings:c,setSettings:d,theme:e});case`api-explorer`:return(0,Q.jsx)(Re,{});case`webhooks`:return(0,Q.jsx)(bt,{theme:e});case`plugins`:return(0,Q.jsx)(xt,{theme:e});case`webhook-logs`:return(0,Q.jsx)(Tt,{theme:e});case`legal`:return(0,Q.jsx)(Ot,{theme:e});case`system`:return(0,Q.jsx)(kt,{theme:e});default:return null}})()})]},a)})})})}),(0,Q.jsx)(se,{children:D&&(0,Q.jsx)(St,{newKey:D,setNewKey:k,theme:e})})]})};export{At as default};