@camstack/addon-admin-ui 1.2.491 → 1.2.492

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 (140) hide show
  1. package/dist/assets/{AddonAssetIcon-C-W05jOS.js → AddonAssetIcon-DPfW-s0a.js} +1 -1
  2. package/dist/assets/Addons-gtliNZKC.js +5 -0
  3. package/dist/assets/{AdminPage-Dy-fEJbf.js → AdminPage-BdEQCHFs.js} +1 -1
  4. package/dist/assets/{AdminSectionedPage-CLYqZKQj.js → AdminSectionedPage-7l_b_UM1.js} +1 -1
  5. package/dist/assets/AiProfiles-DiN_iC0i.js +3 -0
  6. package/dist/assets/{BrokerEditorDialog-BfNVIR0c.js → BrokerEditorDialog-DpESkmwf.js} +1 -1
  7. package/dist/assets/Build-B7gqcqjg.js +40 -0
  8. package/dist/assets/{Calendars-CJ9P43Kk.js → Calendars-B9HfY7pV.js} +1 -1
  9. package/dist/assets/Cluster-Uz6OqlVa.js +1 -0
  10. package/dist/assets/{CompositionBlockEditor-CosgjAjy.js → CompositionBlockEditor-CmDkv2bG.js} +1 -1
  11. package/dist/assets/{CompositionEditorPage-CJx0RCW8.js → CompositionEditorPage-C5eZuMFZ.js} +1 -1
  12. package/dist/assets/Data-C9kIrnCS.js +2 -0
  13. package/dist/assets/DeviceDetail-DbYvDHGL.js +2 -0
  14. package/dist/assets/{DeviceDoActionFields-Bb2ej2cH.js → DeviceDoActionFields-BQBSfHSr.js} +1 -1
  15. package/dist/assets/{Devices-BF4EQ5d8.js → Devices-BaRmnv1a.js} +1 -1
  16. package/dist/assets/{EmbedPlayerPage-evY5cBae.js → EmbedPlayerPage-D_5IGoVF.js} +1 -1
  17. package/dist/assets/HelperWizard-3t0KSEHM.js +2 -0
  18. package/dist/assets/History-CSkUfCQp.js +1 -0
  19. package/dist/assets/Identity-DzkRf83p.js +1 -0
  20. package/dist/assets/IntegrationDetail-BuQFUn72.js +1 -0
  21. package/dist/assets/IntegrationHub-cZVxvlwv.js +1 -0
  22. package/dist/assets/Integrations--EaU9bdJ.js +1 -0
  23. package/dist/assets/Integrations-DeS_5dJb.js +1 -0
  24. package/dist/assets/Library-sgObS0IL.js +1 -0
  25. package/dist/assets/Locations-DrOt7YT5.js +3 -0
  26. package/dist/assets/{Logs-DWUljlNw.js → Logs-DCL8j2dX.js} +1 -1
  27. package/dist/assets/{MaskShapeCanvas-BvI_4dLm.js → MaskShapeCanvas-CEO3VTVU.js} +1 -1
  28. package/dist/assets/{MotionZonesSettings-BvSmNtWZ.js → MotionZonesSettings-Dxe-b_w-.js} +1 -1
  29. package/dist/assets/{MyAccess-DyOUww3e.js → MyAccess-CGPcoa0o.js} +1 -1
  30. package/dist/assets/Network-CVqG_YWz.js +1 -0
  31. package/dist/assets/{NodeAddonsSettingsPanel-TyErVJaa.js → NodeAddonsSettingsPanel-BDdBjBR6.js} +1 -1
  32. package/dist/assets/Notifications-aQWpR38O.js +1 -0
  33. package/dist/assets/Pipeline-S9l6g7rC.js +1 -0
  34. package/dist/assets/{PrivacyMaskSettings-BBpPNBYz.js → PrivacyMaskSettings--AmTjVWH.js} +1 -1
  35. package/dist/assets/Recordings-BUt6suUH.js +1 -0
  36. package/dist/assets/{ScanNetworkModal-Dn_Cbh-y.js → ScanNetworkModal-BclXo106.js} +1 -1
  37. package/dist/assets/SceneMonitorEditor-BwCuyEh-.js +1 -0
  38. package/dist/assets/SessionsList-CA8CTvaN.js +2 -0
  39. package/dist/assets/{Showroom-Hd3Y1pZa.js → Showroom-DzExLJ-t.js} +1 -1
  40. package/dist/assets/System-B05hIwRj.js +1 -0
  41. package/dist/assets/{Terminal-DZwz7oSc.js → Terminal-DEhXvwWb.js} +3 -3
  42. package/dist/assets/{Viewer-Dupx7vL4.js → Viewer-wkTckbx1.js} +1 -1
  43. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CWGVTk4s.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-Df7aVLZ8.js} +1 -1
  44. package/dist/assets/{addon-icons-context-CzTWZHSh.js → addon-icons-context-C1pY0Jxx.js} +1 -1
  45. package/dist/assets/{archive-COytoRbW.js → archive-BbyhgjWL.js} +1 -1
  46. package/dist/assets/{assignment-candidates-6WyXElcY.js → assignment-candidates-CMyWsd7o.js} +1 -1
  47. package/dist/assets/{authed-media-BYn8KpCA.js → authed-media-CYHzcXg2.js} +1 -1
  48. package/dist/assets/{bell-off-CqaftCCC.js → bell-off-BSZr41wl.js} +1 -1
  49. package/dist/assets/{board-model-BnBpDyVJ.js → board-model-DpCndLv1.js} +1 -1
  50. package/dist/assets/{boxes-DiH5aKPU.js → boxes-C9MrE-GD.js} +1 -1
  51. package/dist/assets/circle-slash-kaaJHDJP.js +1 -0
  52. package/dist/assets/{cloud-upload-CydKKaEp.js → cloud-upload-DQNky4H3.js} +1 -1
  53. package/dist/assets/crop-CPejcRNN.js +1 -0
  54. package/dist/assets/{device-integration-icon-BJlT_oa3.js → device-integration-icon-BXlumGnh.js} +1 -1
  55. package/dist/assets/device-picker-model-D7B8bsDV.js +1 -0
  56. package/dist/assets/{eraser-BvwiPI1u.js → eraser-CUFimZpD.js} +1 -1
  57. package/dist/assets/{format-pVRrtm44.js → format-B-2R99aG.js} +1 -1
  58. package/dist/assets/{hard-drive-download-qh4K1hU8.js → hard-drive-download-BObH6Vyd.js} +1 -1
  59. package/dist/assets/{hostInit-BSSPz1Tp.js → hostInit-JMVVBCFU.js} +1 -1
  60. package/dist/assets/i18n-D7mWXOH-.js +1 -0
  61. package/dist/assets/icons-oE92iMVl.js +1 -0
  62. package/dist/assets/{index-DTd1apaT.css → index-DrkhFGtr.css} +1 -1
  63. package/dist/assets/index-QtGtcmlM.js +4 -0
  64. package/dist/assets/{key-GQVUlMPP.js → key-JyYB9gnI.js} +1 -1
  65. package/dist/assets/{key-round-BYU9tibU.js → key-round-CBNBBS9z.js} +1 -1
  66. package/dist/assets/{layers-wvbWI8iv.js → layers-BSjuwfeB.js} +1 -1
  67. package/dist/assets/{linked-devices-model-CXZKHslN.js → linked-devices-model-Dt0g8o39.js} +1 -1
  68. package/dist/assets/{list-ordered-DcXCNlr1.js → list-ordered-BNIrg43G.js} +1 -1
  69. package/dist/assets/location-owned-usage-gqoXJMPj.js +1 -0
  70. package/dist/assets/{log-in-BEcXcuRp.js → log-in-CMkgyQRs.js} +1 -1
  71. package/dist/assets/{memory-stick-CzBkDqRK.js → memory-stick-wHF0f3FH.js} +1 -1
  72. package/dist/assets/{message-square-plus-DAfPpZoi.js → message-square-plus-DkMEFxkw.js} +1 -1
  73. package/dist/assets/{mf-entry-bootstrap-0-2a116f23.js → mf-entry-bootstrap-0-eacfb2da.js} +2 -2
  74. package/dist/assets/{mic-off-DJsgLuRv.js → mic-off-8IZcOYj3.js} +1 -1
  75. package/dist/assets/{monitor-off-BIDr69WD.js → monitor-off-CLYkAPWS.js} +1 -1
  76. package/dist/assets/{monitor-smartphone-0cl5JG2q.js → monitor-smartphone-BAM_Pnvy.js} +1 -1
  77. package/dist/assets/mount-D7B8bsDV.js +1 -0
  78. package/dist/assets/player-overlays-C0MwGGCz.js +1 -0
  79. package/dist/assets/{recycle-6xhPDDKa.js → recycle-C1WW7862.js} +1 -1
  80. package/dist/assets/remoteEntry-C2offcwH.js +1 -0
  81. package/dist/assets/{scan-eye-C_qPMtrX.js → scan-eye-Dt5KUwOk.js} +1 -1
  82. package/dist/assets/{scissors-5gO0XeLA.js → scissors-BDs6D_EV.js} +1 -1
  83. package/dist/assets/{search-x-LetCZ_ep.js → search-x-D22Vg4Xu.js} +1 -1
  84. package/dist/assets/{send-BfNViT0x.js → send-DdEV1Nk_.js} +1 -1
  85. package/dist/assets/{settings-2-T7g84dNm.js → settings-2-B7DN8MZt.js} +1 -1
  86. package/dist/assets/{sigma-BlXZ2aw7.js → sigma-B9KtLJQ5.js} +1 -1
  87. package/dist/assets/{speaker-Ca-uaBj6.js → speaker-vP0Jzm3D.js} +1 -1
  88. package/dist/assets/src-BLJh-44s.js +67 -0
  89. package/dist/assets/{step-inspector-model-CQm0mKvR.js → step-inspector-model-Ju3q4CZU.js} +1 -1
  90. package/dist/assets/{table-2-CxbhwUvc.js → table-2-BTRcysei.js} +1 -1
  91. package/dist/assets/{timer-reset-BZJJw_vy.js → timer-reset-Byxo5HZN.js} +1 -1
  92. package/dist/assets/{ungroup-B0PNlyKk.js → ungroup-DHuQH4zo.js} +1 -1
  93. package/dist/assets/{unlink-BTcNOC7C.js → unlink-CLur1WlL.js} +1 -1
  94. package/dist/assets/{usb-CVx1D-fe.js → usb-6aY8GAbW.js} +1 -1
  95. package/dist/assets/{use-scenes-feed-CyaFpfUP.js → use-scenes-feed-BKeBSQyR.js} +1 -1
  96. package/dist/assets/{use-stationary-objects-CE5HpIjg.js → use-stationary-objects-DqsMnj7J.js} +1 -1
  97. package/dist/assets/useEventInvalidation-D7B8bsDV.js +1 -0
  98. package/dist/assets/{useNodeUrlSelection-DzLKeuVO.js → useNodeUrlSelection-Bnfx9MW8.js} +1 -1
  99. package/dist/assets/user-round-Cktilqeo.js +1 -0
  100. package/dist/assets/{user-x-CDW03V4s.js → user-x-4Hfj3QdW.js} +1 -1
  101. package/dist/assets/{video-CWc9XxJk.js → video-6lAlm9YD.js} +1 -1
  102. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-Dq9ZgXY3.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-Brtll3hk.js} +2 -2
  103. package/dist/index.html +9 -9
  104. package/dist/server/addon.js +1 -1
  105. package/package.json +1 -1
  106. package/dist/assets/Addons-DzzCgAq-.js +0 -5
  107. package/dist/assets/AiProfiles-CgwzlUVs.js +0 -3
  108. package/dist/assets/Build-CkP-FHmg.js +0 -40
  109. package/dist/assets/Cluster-BY0AJ7Y8.js +0 -1
  110. package/dist/assets/Data-B9ZuZX-A.js +0 -2
  111. package/dist/assets/DeviceDetail-CB185X1z.js +0 -2
  112. package/dist/assets/HelperWizard-CD_0QhkR.js +0 -2
  113. package/dist/assets/History-afx6dKjt.js +0 -1
  114. package/dist/assets/Identity-BrjQOQ40.js +0 -1
  115. package/dist/assets/IntegrationDetail-DWTyAAj6.js +0 -1
  116. package/dist/assets/IntegrationHub-BXbnNmwc.js +0 -1
  117. package/dist/assets/Integrations-B_RGvZtR.js +0 -1
  118. package/dist/assets/Integrations-kKJWlcWD.js +0 -1
  119. package/dist/assets/Library-jWD_BsMv.js +0 -1
  120. package/dist/assets/Locations-Da36xo8K.js +0 -3
  121. package/dist/assets/Network-f3eno7Nz.js +0 -1
  122. package/dist/assets/Notifications-Bx6F55kk.js +0 -1
  123. package/dist/assets/Pipeline-yNzjqrit.js +0 -1
  124. package/dist/assets/Recordings-Ci4LULiQ.js +0 -1
  125. package/dist/assets/SceneMonitorEditor-CuPQcK5y.js +0 -1
  126. package/dist/assets/SessionsList-DRYMTqqU.js +0 -2
  127. package/dist/assets/System-C4I1BL8G.js +0 -1
  128. package/dist/assets/circle-slash-DjmuKPXI.js +0 -1
  129. package/dist/assets/crop-FLPers4o.js +0 -1
  130. package/dist/assets/device-picker-model-GAczoeeF.js +0 -1
  131. package/dist/assets/i18n-CI5vBtLY.js +0 -1
  132. package/dist/assets/icons-wHAKhjV4.js +0 -1
  133. package/dist/assets/index-B5aMjANu.js +0 -4
  134. package/dist/assets/location-owned-usage-BP75gZgA.js +0 -1
  135. package/dist/assets/mount-GAczoeeF.js +0 -1
  136. package/dist/assets/player-overlays-DN3wN3kB.js +0 -1
  137. package/dist/assets/remoteEntry-CxXnwLxt.js +0 -1
  138. package/dist/assets/src-DaPCpXY_.js +0 -67
  139. package/dist/assets/useEventInvalidation-GAczoeeF.js +0 -1
  140. package/dist/assets/user-round-DmS1e16J.js +0 -1
@@ -1,2 +0,0 @@
1
- import{C as e,J as t,K as n,R as r,S as i,V as a,Y as o,et as s}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{D as c,Lt as l,ca as u,cn as d,dt as f,ln as p,mi as m,ot as h,sr as g,zr as _}from"./player-overlays-DN3wN3kB.js";import{a as v,i as y,s as b}from"./video-CWc9XxJk.js";import{t as x}from"./key-round-BYU9tibU.js";import{$r as S,Ad as C,Bn as w,Cn as T,Et as E,Ju as D,Qr as O,Rn as k,Sn as A,Tr as j,Vn as M,Wn as N,Zr as P,_d as F,_r as I,bn as L,ct as R,dr as z,fn as B,fr as V,ft as ee,gr as H,hr as U,id as W,ld as G,mn as te,mr as K,mt as ne,oi as q,pn as J,pr as re,si as ie,st as ae,ud as oe,xo as se}from"./src-DaPCpXY_.js";import{t as Y}from"./i18n-CI5vBtLY.js";import{t as X}from"./useTranslation-BJr-n0es.js";import{er as ce,n as Z,t as le,ur as ue}from"./index-B5aMjANu.js";s();function de({id:t,title:n,icon:r,description:a,actions:o,tone:s=`default`,notice:l=null,onDismissNotice:u,children:d}){return i(L,{headingId:`access-${t}`,title:n,icon:r,actions:o,testId:`access-${t}`,children:e(`div`,{className:`${c} space-y-3`,children:[i(`div`,{className:F(`text-[11px] leading-relaxed`,s===`danger`?`rounded-md border border-danger/30 bg-danger/5 px-3 py-2 text-foreground`:`text-foreground-subtle`),children:a}),l!==null&&i(pe,{notice:l,onDismiss:u}),d]})})}var fe={success:{icon:m,line:`border-success/30 text-foreground`,mark:`text-success`},danger:{icon:y,line:`border-danger/40 text-danger`,mark:`text-danger`}};function pe({notice:t,onDismiss:n}){let{t:r}=X(),a=fe[t.tone],o=a.icon;return e(`div`,{role:t.tone===`danger`?`alert`:`status`,className:F(`flex items-start gap-2 rounded-md border bg-surface px-3 py-2 text-[11px]`,a.line),children:[i(o,{className:F(`mt-0.5 h-3.5 w-3.5 shrink-0`,a.mark),"aria-hidden":!0}),i(`span`,{className:`min-w-0 flex-1`,children:t.message}),n!==void 0&&i(oe,{type:`button`,variant:`ghost`,size:`sm`,icon:f,"aria-label":r(`access.accessSection.dismiss`,`Dismiss`),onClick:n,className:`-my-1 h-5 w-5`})]})}function me(){let{data:e}=D();return n(()=>{let t=new Map;for(let n of e??[])t.set(n.id,n.username);return t},[e])}function he(e,t=null){return e===null?t:{tone:`danger`,message:e}}var ge={active:`access.credentialColumns.statusActive`,expired:`access.credentialColumns.statusExpired`,revoked:`access.credentialColumns.statusRevoked`,current:`access.credentialColumns.statusCurrent`};function _e(e){return Y.t(ge[e])}var ve={active:`success`,expired:`warning`,revoked:`default`,current:`info`},ye={current:0,active:1,expired:2,revoked:3};function be(e,t){if(e===null)return t;let n=new Date(e);return Number.isNaN(n.getTime())?`—`:n.toLocaleString()}function xe({status:e}){return i(q,{variant:ve[e],className:`text-[10px]`,children:_e(e)})}function Se({row:t,action:n}){if(!n.isAvailable(t))return null;let r=n.icon,a=n.busyId===t.id;return e(S,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>n.onRun(t),disabled:n.disabled,"aria-label":Y.t(`access.credentialColumns.actionOn`,{action:n.label,name:t.name}),className:n.tone===`neutral`?void 0:`text-danger hover:bg-danger/10`,children:[a?i(g,{className:`h-3 w-3 animate-spin`,"aria-hidden":!0}):i(r,{className:`h-3 w-3`,"aria-hidden":!0}),n.label]})}function Ce(t){return[{key:`name`,header:Y.t(`access.credentialColumns.name`,`Name`),sortValue:e=>e.name.toLowerCase(),render:t=>e(`div`,{className:`min-w-0 max-w-[18rem]`,children:[i(`div`,{className:`truncate font-medium text-foreground`,title:t.name,children:t.name}),t.detail!==null&&i(`div`,{className:`truncate font-mono text-[10px] text-foreground-subtle`,title:t.detail,children:t.detail})]})},t.hideOwner?null:{key:`owner`,header:Y.t(`access.credentialColumns.owner`,`Owner`),sortValue:e=>e.ownerName.toLowerCase(),render:e=>e.ownerName},{key:`kind`,header:Y.t(`access.credentialColumns.kindScope`,`Kind / scope`),sortValue:e=>e.kind.toLowerCase(),nowrap:!1,render:t=>e(`div`,{className:`min-w-[8rem] max-w-[16rem]`,children:[i(`div`,{className:`text-foreground`,children:t.kind}),t.scope!==null&&i(`div`,{className:`line-clamp-2 text-[10px] text-foreground-subtle`,title:t.scope,children:t.scope})]})},{key:`status`,header:Y.t(`access.credentialColumns.status`,`Status`),sortValue:e=>ye[e.status],render:e=>i(xe,{status:e.status})},{key:`created`,header:Y.t(`access.credentialColumns.created`,`Created`),sortValue:e=>e.createdAt,render:e=>i(`span`,{className:`text-foreground-subtle`,children:be(e.createdAt,`—`)})},{key:`lastUsed`,header:Y.t(`access.credentialColumns.lastUsed`,`Last used`),sortValue:e=>e.lastUsedAt,render:e=>i(`span`,{className:`text-foreground-subtle`,children:be(e.lastUsedAt,Y.t(`access.credentialColumns.never`))})},{key:`expires`,header:Y.t(`access.credentialColumns.expires`,`Expires`),sortValue:e=>e.expiresAt,render:e=>i(`span`,{className:`text-foreground-subtle`,children:be(e.expiresAt,t.expiresNone)})},t.action===null?null:{key:`actions`,header:``,align:`right`,notSortableReason:Y.t(`access.credentialColumns.actionsHeader`),render:e=>i(`div`,{className:`flex items-center justify-end gap-1`,children:[...t.extraActions??[],t.action].map(t=>t===null?null:i(Se,{row:e,action:t},t.label))})}].filter(e=>e!==null)}s();var we=6,Te={"current-session":`access.bulk.skipCurrentSession`,"not-active":`access.bulk.skipNotActive`};function Ee(e){let t=Te[e];return t===void 0?e:Y.t(t)}function De(e,t){return Y.t(t.key,{count:e})}function Q(e,t){return Y.t(`access.bulk.countOf`,{count:e,noun:De(e,t)})}function Oe(e){let t=new Map;for(let n of e)t.set(n.status,(t.get(n.status)??0)+1);return[...t.entries()].map(([e,t])=>Y.t(`access.bulk.statusCount`,{count:t,status:_e(e).toLowerCase()})).join(`, `)}function ke(e,t){let n=e.slice(0,we).map(e=>`• ${e.name} — ${e.ownerName}`),r=e.length>we?[Y.t(`access.bulk.previewMore`,{count:e.length-we})]:[];return[Y.t(`access.bulk.previewIntro`,{what:Q(e.length,t),breakdown:Oe(e)}),``,...n,...r].join(`
2
- `)}async function Ae(e,t,n){let r=String(t.length),i=await e({title:Y.t(`access.bulk.confirmTitle`,{what:Q(t.length,n)}),message:ke(t,n),label:Y.t(`access.bulk.confirmLabel`,{expected:r}),placeholder:r,confirmLabel:Y.t(`access.bulk.confirmButton`,{expected:r}),variant:`danger`,validate:e=>e.trim()===r?null:Y.t(`access.bulk.confirmMismatch`,{expected:r,noun:De(2,n)})});return i!==null&&i.trim()===r}function je(e,t){let n=O(),r=C.auth.revokeCredentials.useMutation(),[i,a]=o(null);return{run:async i=>{if(i.length===0||!await Ae(n,i,e))return!1;a(null);try{let t=await r.mutateAsync({ids:i.map(e=>e.id),confirmCount:i.length}),n=t.skipped.map(e=>Ee(e.reason));return a({tone:`success`,message:n.length>0?Y.t(`access.bulk.revokedSkipped`,{what:Q(t.revoked.length,e),count:n.length,reasons:[...new Set(n)].join(`, `)}):Y.t(`access.bulk.revoked`,{what:Q(t.revoked.length,e)})}),!0}catch(e){return a({tone:`danger`,message:Y.t(`access.bulk.revokeFailed`,{error:e instanceof Error?e.message:Y.t(`access.bulk.requestFailed`)})}),!1}finally{t()}},busy:r.isPending,outcome:i,dismiss:()=>a(null)}}function Me(e,t,n){let r=O(),[i,a]=o(!1),[s,c]=o(null);return{run:async i=>{if(i.length===0||!await Ae(r,i,e))return!1;c(null),a(!0);let o=[],s=0;for(let e of i)try{await t(e.id),s+=1}catch(t){o.push(`${e.name}: ${t instanceof Error?t.message:Y.t(`access.bulk.requestFailed`)}`)}return a(!1),n(),o.length===0?(c({tone:`success`,message:Y.t(`access.bulk.revoked`,{what:Q(s,e)})}),!0):(c({tone:`danger`,message:Y.t(o.length>3?`access.bulk.eachPartialMore`:`access.bulk.eachPartial`,{what:Q(s,e),count:o.length,details:o.slice(0,3).join(`; `)})}),s>0)},busy:i,outcome:s,dismiss:()=>c(null)}}s();var Ne={searchText:e=>[e.name,e.detail??``,e.ownerName,e.kind,e.scope??``],facetGroups:[{id:`status`,value:e=>e.status},{id:`owner`,value:e=>e.ownerName},{id:`kind`,value:e=>e.kind}]},Pe={status:`access.credentialTable.groupStatus`,owner:`access.credentialTable.groupOwner`,kind:`access.credentialTable.groupKind`},Fe=e=>e.status!==`current`,Ie=[`active`,`current`];function Le({rows:t,label:r,isLoading:a,loadError:s,emptyText:c,hideOwner:l=!1,expiresNone:u,action:d,extraActions:f,bulk:p,defaultStatus:m=Ie}){let{t:h}=X(),[_]=o(()=>m.length===0?{search:``,facets:[]}:{search:``,facets:[],groups:{status:[...m]}}),v=B(t,Ne,_),[y,b]=o(()=>new Set),x=u??h(`access.credentialColumns.never`),S=n(()=>Ce({hideOwner:l,expiresNone:x,action:d??null,...f===void 0?{}:{extraActions:f}}),[l,x,d,f,h]),C=n(()=>p===void 0?()=>!1:e=>Fe(e)&&p.isSelectable(e),[p]),w=n(()=>v.rows.filter(e=>y.has(e.id)&&C(e)),[v.rows,y,C]);return a?e(`div`,{className:`flex items-center gap-2 py-4 text-xs text-foreground-subtle`,children:[i(g,{className:`h-3.5 w-3.5 animate-spin`,"aria-hidden":!0}),h(`access.credentialTable.loading`,{label:r})]}):s===null?e(`div`,{className:`space-y-3`,children:[i(J,{state:v.state,facets:v.facets,groups:v.groups.filter(e=>!(l&&e.id===`owner`)).map(e=>({...e,label:Pe[e.id]===void 0?e.id:h(Pe[e.id]),...e.id===`status`?{facetLabel:e=>_e(e)}:{}})),labels:{searchPlaceholder:h(`access.credentialTable.searchPlaceholder`,{label:r}),searchLabel:h(`access.credentialTable.searchLabel`,{label:r}),facetsLabel:h(`access.credentialTable.facetsLabel`,{label:r}),clearLabel:h(`access.credentialTable.clearFilters`)},onSearch:v.setSearch,onToggleFacet:v.toggleFacet,onToggleGroupFacet:v.toggleGroupFacet,onClear:v.clear}),p!==void 0&&i(Re,{bulk:p,shown:v.rows.filter(C),targets:w,onSelect:b}),i(A,{columns:S,rows:v.rows,rowKey:e=>e.id,minWidthPx:l?760:860,maxBodyHeight:T,defaultSort:{columnKey:`created`,dir:`desc`},pageSize:25,paginationLabels:{navLabel:h(`access.credentialTable.pagesLabel`,{label:r}),previous:h(`access.credentialTable.previousPage`),next:h(`access.credentialTable.nextPage`),range:(e,t,n)=>h(`access.credentialTable.range`,{from:e,to:t,total:n})},emptyMessage:v.active?h(`access.credentialTable.noMatchTheFilters`,`No {{label}} match the filters.`,{label:r}):c,rowClassName:e=>e.status===`revoked`||e.status===`expired`?`opacity-70`:void 0,...p===void 0?{}:{selection:{selected:y,onChange:b,isSelectable:C,rowLabel:e=>h(`access.credentialTable.rowLabel`,{name:e.name,owner:e.ownerName}),pageLabel:h(`access.credentialTable.pageLabel`,{noun:De(1,p.noun)})}}})]}):i(j,{title:h(`access.credentialTable.couldNotLoad`,`Could not load {{label}}`,{label:r}),message:s})}function Re({bulk:t,shown:n,targets:r,onSelect:a}){let{t:o}=X(),{revoke:s,noun:c}=t,u=(t.quickSelect??[]).map(e=>({...e,rows:n.filter(e.match)})).filter(e=>e.rows.length>0),d=async()=>{await s.run(r)&&a(new Set)};return e(`div`,{className:`flex flex-wrap items-center gap-2`,"data-testid":`bulk-bar`,children:[n.length>0&&i(S,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>a(new Set(n.map(e=>e.id))),children:o(`access.credentialTable.selectAllShown`,{count:n.length})}),u.map(t=>e(S,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>a(new Set(t.rows.map(e=>e.id))),children:[t.label,` (`,String(t.rows.length),`)`]},t.label)),r.length>0&&e(`div`,{className:`ml-auto flex flex-wrap items-center gap-2`,children:[i(`span`,{className:`text-[11px] tabular-nums text-foreground`,"aria-live":`polite`,children:o(`access.credentialTable.selectedLabel`,{what:Q(r.length,c)})}),e(S,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>a(new Set),children:[i(f,{className:`h-3 w-3`,"aria-hidden":!0}),o(`access.credentialTable.clearSelection`,`Clear selection`)]}),e(S,{type:`button`,variant:`danger`,size:`sm`,disabled:s.busy,onClick:()=>void d(),children:[s.busy?i(g,{className:`h-3 w-3 animate-spin`,"aria-hidden":!0}):i(l,{className:`h-3 w-3`,"aria-hidden":!0}),o(`access.credentialTable.revoke`,{what:Q(r.length,c)})]})]})]})}var ze=(e,t)=>t===null?`—`:e.get(t)??t;function Be(e,t){return e!=null&&e<=t?`expired`:`active`}function Ve(e,t,n){return{id:e.id,name:n.client(e.client),detail:e.ip,ownerId:e.userId,ownerName:ze(t,e.userId),kind:n.method(e.method),scope:null,status:e.current?`current`:`active`,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function He(e,t){return{id:e.id,name:e.integrationId,detail:null,ownerId:e.userId,ownerName:e.username,kind:e.integrationId,scope:t,status:e.revokedAt===null?`active`:`revoked`,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,expiresAt:null}}var Ue=`All permissions`,We=`View link`,Ge=`Scoped`,Ke={"grid-view":`Grid`,"events-view":`Events`};function qe(e,t){return e.map(e=>t.get(e)??`#${String(e)}`).join(`, `)}function Je(e){return e!==`*`&&e.type===`share-view`&&`grant`in e}function Ye(e,t,n){return e===`*`?Ue:Je(e)?`${`${Ke[e.grant.kind]} view${e.grant.talk===!0?` + talk`:``}`}: ${qe(e.grant.deviceIds,t)}`:n(e)}function Xe(e){return e.includes(`*`)?Ue:e.some(Je)?We:Ge}function Ze(e,t,n,r){return{id:e.id,name:e.label,detail:null,ownerId:e.subjectId,ownerName:ze(t,e.subjectId),kind:Xe(e.scopes),scope:n,status:e.revokedAt===null?Be(e.expiresAt,r):`revoked`,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function Qe(e){return`${e.provider}\u0000${e.subject}`}function $e(e,t){return{id:Qe(e),name:e.label??e.subject,detail:e.issuer,ownerId:e.userId,ownerName:ze(t,e.userId),kind:e.provider,scope:null,status:`active`,createdAt:e.linkedAt,lastUsedAt:null,expiresAt:null}}var et=40,tt=[{test:/Electron\//,name:`CamStack desktop`},{test:/Edg(e|A|iOS)?\//,name:`Edge`},{test:/OPR\/|Opera/,name:`Opera`},{test:/Firefox\/|FxiOS\//,name:`Firefox`},{test:/Chrome\/|CriOS\//,name:`Chrome`},{test:/Version\/[\d.]+.*Safari\//,name:`Safari`}],nt=[{test:/iPhone/,name:`iPhone`},{test:/iPad/,name:`iPad`},{test:/Android/,name:`Android`},{test:/Mac OS X|Macintosh/,name:`macOS`},{test:/Windows/,name:`Windows`},{test:/CrOS/,name:`ChromeOS`},{test:/Linux/,name:`Linux`}],rt=[{test:/CFNetwork\/.*Darwin\//,name:`CamStack app on iOS`},{test:/^okhttp\//i,name:`CamStack app on Android`},{test:/^(node|undici)\b/i,name:`Script (Node.js)`},{test:/^curl\//i,name:`curl`}];function it(e,t){return e.find(e=>e.test.test(t))?.name??null}function at(e){return e.length<=et?e:`${e.slice(0,et)}…`}function ot(e){if(e===null||e.trim().length===0)return{label:Y.t(`helpers.sessionClient.unknownDevice`),raw:null};let t=e.trim(),n=it(rt,t);if(n!==null)return{label:n,raw:t};let r=it(tt,t),i=it(nt,t);return r!==null&&i!==null?{label:Y.t(`helpers.sessionClient.browserOnSystem`,{browser:r,system:i}),raw:t}:r===null?{label:at(t),raw:t}:{label:r,raw:t}}var st={password:`helpers.sessionClient.method.password`,passkey:`helpers.sessionClient.method.passkey`,sso:`helpers.sessionClient.method.sso`,handoff:`helpers.sessionClient.method.handoff`,exchange:`helpers.sessionClient.method.exchange`};function ct(e){let t=st[e];return t===void 0?e:Y.t(t)}function lt(e){if(e==null)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toLocaleString()}s();function ut(e,t){return e instanceof Error&&e.message.length>0?e.message:t}function dt(n){let{t:a}=X(),s=h(),[c,l]=o(!1),[u,d]=o(``),[f,p]=o(null),[m,_]=o(null),v=t(null),y=r(e=>{v.current?.(e),v.current=null,l(!1),d(``),p(null),_(null)},[]),b=r(()=>new Promise(e=>{v.current?.(null),v.current=e,_(null),l(!0)}),[]),C=async()=>{p(`password`),_(null);try{let{reauthToken:e}=await s.reauthenticate({password:u});y(e)}catch(e){_(ut(e,`Password is incorrect`)),p(null)}},w=async()=>{p(`passkey`),_(null);try{let{optionsJSON:e}=await s.reauthBeginPasskey();if(!le(e))throw Error(`passkey authentication options missing challenge`);let t=await Z({optionsJSON:e}),{reauthToken:n}=await s.reauthenticate({passkeyResponse:Object.fromEntries(Object.entries(t))});y(n)}catch(e){_(ut(e,`Passkey verification failed`)),p(null)}};return{requestProof:b,dialog:i(z,{open:c,onOpenChange:e=>!e&&y(null),children:e(re,{children:[e(H,{children:[i(I,{children:a(`auth.reauthDialog.confirmItSYou`,`Confirm it’s you`)}),i(K,{children:a(`auth.reauthDialog.needsPassword`,{action:n})})]}),e(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),u.length>0&&f===null&&C()},children:[i(G,{type:`password`,autoComplete:`current-password`,placeholder:a(`auth.reauthDialog.currentPassword`,`Current password`),value:u,onChange:e=>d(e.target.value),"aria-label":a(`auth.reauthDialog.currentPassword`,`Current password`)}),m!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger`,children:m}),e(U,{className:`flex flex-wrap gap-2`,children:[e(S,{type:`button`,variant:`outline`,disabled:f!==null,onClick:()=>void w(),children:[f===`passkey`?i(g,{className:`h-4 w-4 animate-spin`}):i(x,{className:`h-4 w-4`}),a(`auth.reauthDialog.useAPasskey`,`Use a passkey`)]}),e(S,{type:`submit`,disabled:u.length===0||f!==null,children:[f===`password`&&i(g,{className:`h-4 w-4 animate-spin`}),a(`common.confirm`,`Confirm`)]})]})]})]})})}}function ft({token:t,label:n,onClose:r}){let{t:a}=X();return i(z,{open:!0,onOpenChange:e=>!e&&r(),children:e(re,{width:`md`,scroll:`body`,children:[i(H,{children:i(I,{children:a(`auth.tokenModals.token`,`Token: {{label}}`,{label:n})})}),e(V,{className:`space-y-3`,children:[i(`div`,{className:`rounded-md border border-warning/30 bg-warning/10 px-3 py-2 text-xs text-warning`,children:a(`auth.tokenModals.copyThisTokenNowOnce`,`Copy this token now. Once you close this dialog the secret cannot be displayed again.`)}),i(`div`,{className:`select-all break-all rounded-md border border-border bg-background p-2 font-mono text-[11px] text-foreground`,children:t})]}),e(U,{children:[i(te,{value:t,label:a(`common.copy`,`Copy`),srLabel:`token`}),i(S,{type:`button`,variant:`primary`,size:`sm`,onClick:r,children:a(`auth.tokenModals.done`,`Done`)})]})]})})}var pt={token:`newToken`,scoped:`newScoped`,admin:`newAdmin`};s();var mt=80,$=86400,ht=[{value:`1`,seconds:$},{value:`7`,seconds:7*$},{value:`30`,seconds:30*$},{value:`90`,seconds:90*$},{value:`never`,seconds:`never`}],gt={type:`device-multiselect`,key:`cameras`,deviceFilter:{types:[`camera`]},maxItems:64},_t={type:`capability`,target:``,access:[`view`,`create`]};function vt({open:t,users:r,onClose:s,onSubmit:c,submitting:l,formError:f,awaitingProof:m}){let{t:h}=X(),v=u(),{user:y}=ce(),b=y?.isAdmin===!0,C=b?null:y?.scopes??[],[T,E]=o(`scopes`),[D,O]=o(y?.id??``),[A,j]=o(``),[P,F]=o([_t]),[I,L]=o([]),[z,B]=o(`grid-view`),[V,ee]=o(!1),[H,U]=o(`30`);a(()=>{t||(E(`scopes`),O(y?.id??``),j(``),F([_t]),L([]),B(`grid-view`),ee(!1),U(`30`))},[t,y?.id]),a(()=>{T!==`view-link`&&H===`never`&&U(`30`)},[T,H]);let te=n(()=>ht.filter(e=>e.seconds!==`never`||T===`view-link`).map(e=>({value:e.value,label:e.seconds===`never`?h(`access.createTokenModal.never`,`Never (until revoked)`):h(`access.createTokenModal.days`,{count:Number(e.value)})})),[T,h]),K=A.trim(),q=T===`scopes`?R(P,v):null,J=I.map(Number).filter(e=>Number.isInteger(e)&&e>=0),re=ht.find(e=>e.value===H)?.seconds??30*$,oe=()=>T===`all`?[`*`]:T===`view-link`?[{type:`share-view`,grant:{kind:z,deviceIds:J,...V?{talk:!0}:{}}}]:P,se=K.length>0&&K.length<=mt&&!l&&!m&&(T===`all`?b:T===`view-link`?J.length>0:P.length>0&&q===null),Y=()=>{if(!se)return;let e=b&&T!==`all`&&D!==``&&D!==y?.id;c({scopes:oe(),expiresIn:re,label:K,...e?{subjectId:D}:{}})},Z=T===`all`,le=Z?p:d;return i(ne,{open:t,onClose:s,title:h(`access.createTokenModal.createToken`,`Create token`),icon:Z?p:x,error:f,width:`md`,testId:`create-token-dialog`,footer:e(S,{type:`button`,variant:Z?`danger`:`primary`,size:`sm`,onClick:Y,disabled:!se,"data-testid":`create-token-submit`,children:[l||m?i(g,{className:`h-3.5 w-3.5 animate-spin`,"aria-hidden":!0}):i(le,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),h(`access.createTokenModal.issueToken`,`Issue token`)]}),children:e(`div`,{className:`space-y-3`,children:[e(`div`,{className:`space-y-1`,children:[i(N,{children:h(`access.createTokenModal.whatItMayDo`,`What it may do`)}),i(k,{appearance:`pills`,value:T,onValueChange:e=>{(e===`scopes`||e===`view-link`||e===`all`)&&E(e)},children:e(w,{"aria-label":h(`access.createTokenModal.whatItMayDo`,`What it may do`),children:[e(M,{value:`scopes`,"data-testid":`token-reach-scopes`,children:[i(d,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),h(`access.createTokenModal.reachScopes`,`Scopes`)]}),e(M,{value:`view-link`,"data-testid":`token-reach-view-link`,children:[i(_,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),h(`access.createTokenModal.reachViewLink`,`View link`)]}),b?e(M,{value:`all`,"data-testid":`token-reach-all`,children:[i(p,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),h(`access.createTokenModal.reachAll`,`All permissions`)]}):null]})})]}),Z?i(`div`,{className:`space-y-1 rounded-md border border-danger/30 bg-danger/5 px-3 py-2 text-[11px] leading-relaxed text-foreground`,"data-testid":`admin-token-warning`,children:i(`p`,{children:i(ue,{i18nKey:`auth.adminTokenNoticeShort`,components:{strong:i(`strong`,{})}})})}):null,b&&T!==`all`&&r.length>1?e(`div`,{className:`space-y-1`,children:[i(N,{htmlFor:`token-user`,children:h(`access.createTokenModal.onBehalfOfUser`,`On behalf of user`)}),i(W,{id:`token-user`,value:D,onChange:e=>O(e.target.value),options:r.map(e=>({value:e.id,label:e.username}))})]}):null,e(`div`,{className:`space-y-1`,children:[i(N,{htmlFor:`token-name`,children:h(`access.createTokenModal.label`,`Label`)}),i(G,{id:`token-name`,value:A,maxLength:mt,required:!0,onChange:e=>j(e.target.value),placeholder:T===`view-link`?`kitchen-wall`:`nightly-backup`,autoFocus:!0})]}),T===`scopes`?e(`div`,{className:`space-y-1`,children:[i(N,{children:h(`access.createTokenModal.scopes`,`Scopes`)}),i(ae,{value:P,onChange:F,clampToParent:C}),q&&i(`p`,{className:`text-[10px] text-danger`,children:q}),i(`p`,{className:`text-[10px] text-foreground-subtle`,children:h(`access.createTokenModal.eachScopePicksACap`,`Each scope picks a (cap or addon) target + one or more access flavours. The token can access ONLY what's listed.`)})]}):null,T===`view-link`?e(`div`,{className:`space-y-2`,"data-testid":`token-view-link`,children:[e(`div`,{className:`space-y-1`,children:[i(N,{children:h(`access.createTokenModal.cameras`,`Cameras`)}),i(ie,{field:{...gt,label:h(`access.createTokenModal.cameras`,`Cameras`)},value:I,onChange:e=>L(Array.isArray(e)?e.filter(e=>typeof e==`string`):[])})]}),e(`div`,{className:`space-y-1`,children:[i(N,{htmlFor:`token-view-kind`,children:h(`access.createTokenModal.viewKind`,`Shows`)}),i(W,{id:`token-view-kind`,value:z,onChange:e=>B(e.target.value===`events-view`?`events-view`:`grid-view`),options:[{value:`grid-view`,label:h(`access.createTokenModal.viewGrid`,`Live grid`)},{value:`events-view`,label:h(`access.createTokenModal.viewEvents`,`Events`)}]})]}),z===`grid-view`?e(`label`,{className:`flex items-start gap-2 text-sm text-foreground`,children:[i(`input`,{type:`checkbox`,className:`mt-0.5`,checked:V,onChange:e=>ee(e.target.checked),"data-testid":`token-view-talk`}),i(`span`,{children:h(`access.createTokenModal.talk`,`Allow talk-back on these cameras`)})]}):null]}):null,e(`div`,{className:`space-y-1`,children:[i(N,{htmlFor:`token-lifetime`,children:h(`access.createTokenModal.expires`,`Expires after`)}),i(W,{id:`token-lifetime`,value:H,onChange:e=>U(e.target.value),options:te})]})]})})}s();var yt={key:`access.nouns.token`};function bt(e){return typeof e==`object`&&!!e&&`kind`in e}function xt(e,t){let n=e.access===void 0?``:` [${e.access.join(`, `)}]`;return e.type===`device`?`device:[${bt(e.selector)?E(e.selector,t):`?`}]${n}`:e.type===`addon-routes`?`${t(`access.tokensSection.everyAddonRoutes`,`every addon's routes`)}${n}`:`${e.type}:${e.target??``}${n}`}function St({headerOwnsCreate:t=!1,createRequested:r=!1,onCreateConsumed:s,ownOnly:c=!1}){let{t:d}=X(),f=u(),{user:p}=ce(),m=P(),h=C.useUtils(),g=me(),{data:_}=D(),v=n(()=>_??[],[_]),{data:y}=se({}),b=n(()=>{let e=new Map;for(let t of y??[])e.set(t.id,t.name);return e},[y]),w=C.auth.listTokens.useQuery(void 0),{requestProof:T,dialog:E}=dt(`Creating a token with all permissions`),{state:O,openNew:k,close:A}=ee({newKey:pt.token}),[j,M]=o(null),[N,F]=o(null),[I,L]=o(!1),[R,z]=o(null),[B,V]=o(null);a(()=>{r&&(k(),s?.())},[r,k,s]);let H=()=>{h.auth.listTokens.invalidate(),h.auth.listAuthAudit.invalidate()},U=C.auth.mintToken.useMutation({onSuccess:({token:e,record:t})=>{H(),A(),F(null),L(!1),z({token:e,label:t.label})},onError:e=>{F(`Create failed: ${e.message}`),L(!1)}}),W=C.auth.revokeToken.useMutation({onSuccess:()=>{V(null),H()},onError:e=>{V(null),M(`Revoke failed: ${e.message}`)}}),G=je(yt,H),te=Date.now(),K=(w.data??[]).filter(e=>!c||e.subjectId===p?.id).map(e=>Ze(e,g,e.scopes.includes(`*`)?null:e.scopes.map(e=>Ye(e,b,e=>xt(e,f))).join(`, `),te)),ne=async e=>{await m({title:d(`access.tokensSection.revoke`,`Revoke "{{name}}"?`,{name:e.name}),message:e.kind===`All permissions`?d(`access.tokensSection.everyScriptUsingItLoses`,`Every script using it loses access immediately. This cannot be undone.`):d(`access.tokensSection.stopsWorking`,`Whoever holds it loses access immediately. This cannot be undone.`),confirmLabel:d(`access.tokensSection.revoke2`,`Revoke`),variant:`danger`})&&(M(null),V(e.id),W.mutate({id:e.id}))},q=e=>{(async()=>{M(null),F(null);let t;if(e.scopes.includes(`*`)){L(!0);let e=await T();if(L(!1),e===null)return;t=e}U.mutate({scopes:[...e.scopes],expiresIn:e.expiresIn,label:e.label,...e.subjectId===void 0?{}:{subjectId:e.subjectId},...t===void 0?{}:{reauthToken:t}})})()};return e(`div`,{"data-testid":`tokens`,children:[E,i(de,{notice:he(j,G.outcome),onDismissNotice:()=>{M(null),G.dismiss()},id:c?`my-tokens`:`tokens`,title:c?d(`access.tokensSection.myTokens`,`My tokens`):d(`access.tokensSection.tokens`,`Tokens`),icon:x,actions:t?void 0:e(S,{size:`sm`,type:`button`,"data-testid":`tokens-new`,onClick:k,children:[i(x,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),d(`system.access.newToken`,`New token`)]}),description:d(`access.tokensSection.oneFormat`,`Every token is its scopes: a few permissions for a script, all permissions for an admin script, or a view of some cameras for a share link. Revoking one stops it on its next use.`),children:i(Le,{rows:K,label:d(`common.tokensLabel`),isLoading:w.isLoading,loadError:w.isError?w.error?.message??`Request failed`:null,emptyText:d(`access.tokensSection.noTokens`,`No tokens.`),action:{label:d(`access.tokensSection.revoke2`,`Revoke`),icon:l,isAvailable:e=>e.status===`active`,onRun:e=>void ne(e),busyId:B,disabled:G.busy||B!==null},...p?.isAdmin===!0?{bulk:{revoke:G,noun:yt,isSelectable:e=>e.status===`active`}}:{}})}),i(vt,{open:O.mode===`new`,users:v.map(e=>({id:e.id,username:e.username})),onClose:()=>{A(),F(null),L(!1)},submitting:U.isPending,formError:N,awaitingProof:I,onSubmit:q}),R&&i(ft,{token:R.token,label:R.label,onClose:()=>z(null)})]})}var Ct=864e5,wt={qr:`QR (by an admin)`,self:`Self-enrolled`},Tt={ios:`iOS`,android:`Android`,web:`Web`,other:`Other`};function Et(e){return e.status===`revoked`}function Dt(e){return e.status!==`revoked`}function Ot(e,t=`—`){if(e===null)return t;let n=new Date(e);return Number.isNaN(n.getTime())?t:n.toLocaleString()}function kt(e,t){return e===null||Number.isNaN(e)?null:Math.floor((e-t)/Ct)}function At(e,t){let n=kt(e,t);return n===null?`unknown`:n<0?`expired`:n<30?`soon`:`ok`}function jt(e,t){let n=kt(e,t);return n===null?Y.t(`helpers.certificateModel.unknown`):n===0?Y.t(`helpers.certificateModel.today`):n>0?Y.t(`helpers.certificateModel.inDays`,{count:n}):Y.t(`helpers.certificateModel.daysAgo`,{count:-n})}function Mt(e){if(e===null)return null;let t=Date.parse(e);return Number.isNaN(t)?null:t}function Nt(e){return e===null||e.length===0?`—`:e.length<=17?e:`${e.slice(0,8)}…${e.slice(-8)}`}function Pt(e){return e.length<=10?e:`${e.slice(0,10)}…`}function Ft(e){if(!e.online)return{allowed:!1,reason:Y.t(`helpers.certificateModel.nodeOffline`)};if(e.isHub&&e.https.kind===`served`){if(e.https.status.mode===`uploaded`)return{allowed:!1,reason:Y.t(`helpers.certificateModel.uploadedCert`)};if(e.https.status.mode===`disabled`)return{allowed:!1,reason:Y.t(`helpers.certificateModel.tlsDisabled`)}}return{allowed:!0,reason:null}}var It={prepare:`helpers.certificateModel.stage.prepare`,issue:`helpers.certificateModel.stage.issue`,install:`helpers.certificateModel.stage.install`,reconnect:`helpers.certificateModel.stage.reconnect`,confirm:`helpers.certificateModel.stage.confirm`};function Lt(e){if(e.ok)return{tone:`success`,message:Y.t(`helpers.certificateModel.renewed`,{nodeId:e.nodeId,serial:Pt(e.newSerial)})};let t=e.keptPreviousLeaf?Y.t(`helpers.certificateModel.keptPrevious`):Y.t(`helpers.certificateModel.maybeNoCert`);return{tone:`danger`,message:Y.t(`helpers.certificateModel.renewalFailed`,{nodeId:e.nodeId,stage:Y.t(It[e.stage]),reason:e.reason,kept:t})}}function Rt(e,t){let n=Math.max(0,e-t),r=Math.ceil(n/1e3),i=Math.floor(r/60),a=r%60;return{expired:n===0,label:`${String(i)}:${String(a).padStart(2,`0`)}`}}var zt=11;function Bt(e,t){let n=e.slice(0,zt);return t===null?n:`${n} · ${t}`}function Vt(e){return{id:e.id,name:e.deviceName,detail:Bt(e.fingerprint,e.lastUsedFrom),ownerId:e.userId,ownerName:e.username??e.userId,kind:Tt[e.platform],scope:wt[e.enrolledVia],status:e.status,createdAt:e.issuedAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function Ht(e,t){return{id:e.id,name:e.deviceName,detail:null,ownerId:null,ownerName:t,kind:Tt[e.platform],scope:null,status:e.status,createdAt:e.issuedAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function Ut({sessions:t,isLoading:n,loadError:r,emptyText:a,onRevoke:o,revokingId:s}){let{t:c}=X();return n?e(`div`,{className:`flex items-center gap-2 text-xs text-foreground-subtle`,children:[i(g,{className:`h-3.5 w-3.5 animate-spin`}),c(`auth.sessionsList.loadingSessions`,`Loading sessions…`)]}):r===null?t.length===0?i(`div`,{className:`rounded border border-dashed border-border px-3 py-4 text-xs text-foreground-subtle text-center`,children:a}):i(`ul`,{className:`divide-y divide-border rounded-md border border-border`,children:t.map(e=>i(Wt,{session:e,revoking:s===e.id,onRevoke:()=>o(e)},e.id))}):e(`div`,{className:`text-[11px] text-danger`,children:[c(`auth.sessionsList.couldNotLoadSessions`,`Could not load sessions:`),` `,r]})}function Wt({session:t,revoking:n,onRevoke:r}){let{t:a}=X(),o=ot(t.client);return e(`li`,{"data-testid":`session-row`,className:`flex items-start gap-3 px-3 py-2 text-xs`,children:[i(v,{className:`h-3.5 w-3.5 mt-0.5 shrink-0 text-foreground-subtle`}),e(`div`,{className:`flex-1 min-w-0 space-y-0.5`,children:[e(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[i(`span`,{className:`font-medium text-foreground truncate`,title:o.raw??void 0,children:o.label}),t.current&&i(`span`,{className:`rounded bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium text-primary`,children:a(`auth.sessionsList.thisDevice`,`This device`)})]}),e(`div`,{className:`flex flex-wrap gap-x-3 text-[11px] text-foreground-subtle`,children:[i(`span`,{children:ct(t.method)}),i(`span`,{className:`font-mono`,children:t.ip??a(`auth.sessionsList.ipUnknown`,`IP unknown`)}),i(`span`,{children:a(`auth.sessionsList.lastActive`,{when:lt(t.lastUsedAt)})}),i(`span`,{children:a(`auth.sessionsList.expires`,{when:lt(t.expiresAt)})})]})]}),!t.current&&e(`button`,{onClick:r,disabled:n,className:`inline-flex items-center gap-1 rounded px-2 py-1 text-[10px] text-danger hover:bg-danger/10 disabled:opacity-50`,children:[n?i(g,{className:`h-3 w-3 animate-spin`}):i(b,{className:`h-3 w-3`}),a(`auth.sessionsList.signOut`,`Sign out`)]})]})}export{me as A,He as C,Me as D,je as E,de as O,$e as S,Le as T,dt as _,Dt as a,lt as b,jt as c,Ot as d,Ft as f,pt as g,St as h,Et as i,he as k,Lt as l,Pt as m,Vt as n,Rt as o,Nt as p,Ht as r,Mt as s,Ut as t,At as u,ot as v,Ve as w,Qe as x,ct as y};
@@ -1 +0,0 @@
1
- import{C as e,K as t,R as n,S as r,V as i,Y as a,a as o,et as s,o as c,t as l,x as u}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{D as d,En as f,Lt as p,Pt as m,Si as h,bi as g,cn as _,dn as v,fn as y,gi as b,hi as x,hr as S,ir as C,nr as w,ot as ee,sr as te,tn as ne,xi as re,xn as ie,zr as ae}from"./player-overlays-DN3wN3kB.js";import{oi as oe}from"./client-CoTSmvjZ.js";import{i as se}from"./video-CWc9XxJk.js";import{t as T}from"./key-round-BYU9tibU.js";import{$r as E,As as ce,Bn as le,Cn as ue,Ds as de,Es as fe,Fs as D,Is as O,Ms as pe,Ns as me,Os as he,Ps as ge,Qr as _e,Rn as ve,Sn as k,Su as ye,Td as be,Tr as A,Tu as j,Vn as M,Xr as N,Zr as xe,_d as P,_r as Se,bn as Ce,br as we,dr as Te,fr as Ee,gr as De,hr as Oe,js as ke,ks as Ae,ld as F,mn as I,mr as je,nd as L,oi as R,pr as Me,yu as Ne,zn as z}from"./src-DaPCpXY_.js";import{t as B}from"./i18n-CI5vBtLY.js";import{t as V}from"./useTranslation-BJr-n0es.js";import{S as Pe,T as Fe,gr as Ie,ur as Le}from"./index-B5aMjANu.js";import{t as Re}from"./AdminSectionedPage-CLYqZKQj.js";import{t as H}from"./AdminPage-Dy-fEJbf.js";import{t as ze}from"./NodeAddonsSettingsPanel-TyErVJaa.js";import{t as Be}from"./AddonAssetIcon-C-W05jOS.js";s();var Ve={detection:`border-green-500`,detector:`border-green-500`,streaming:`border-blue-500`,decode:`border-blue-500`,decoder:`border-blue-500`,recording:`border-orange-500`,recorder:`border-orange-500`,transcoding:`border-purple-500`,transcoder:`border-purple-500`,restream:`border-cyan-500`,restreamer:`border-cyan-500`,storage:`border-yellow-500`,notification:`border-pink-500`,notifier:`border-pink-500`,faces:`border-indigo-500`},He={detection:`bg-green-500/5`,detector:`bg-green-500/5`,streaming:`bg-blue-500/5`,decode:`bg-blue-500/5`,decoder:`bg-blue-500/5`,recording:`bg-orange-500/5`,recorder:`bg-orange-500/5`,transcoding:`bg-purple-500/5`,transcoder:`bg-purple-500/5`,restream:`bg-cyan-500/5`,restreamer:`bg-cyan-500/5`,storage:`bg-yellow-500/5`,notification:`bg-pink-500/5`,notifier:`bg-pink-500/5`,faces:`bg-indigo-500/5`};function Ue({entry:t,actions:n}){let i=t.name.toLowerCase(),a=Ve[i]??`border-primary`,o=He[i]??`bg-primary/5`,s=t.providers.find(e=>e.active),c=n?.pendingCapability===t.name;return e(`div`,{className:`rounded-lg border-t-2 border border-border ${a} ${o} p-3 space-y-2`,children:[e(`div`,{className:`flex items-center justify-between gap-2`,children:[e(`span`,{className:`text-xs font-semibold text-foreground capitalize flex items-center gap-1.5`,children:[t.name,c&&r(te,{className:`h-3 w-3 animate-spin text-primary`})]}),r(`span`,{className:`rounded-full px-2 py-0.5 text-[10px] font-medium ${t.mode===`singleton`?`bg-primary/10 text-primary`:`bg-info/10 text-info`}`,children:t.mode})]}),t.mode===`singleton`?r(We,{entry:t,actions:n,activeProvider:s,isPending:c}):r(Ge,{entry:t,actions:n,isPending:c})]})}function We({entry:t,actions:n,activeProvider:i,isPending:a}){let{t:o}=V();if(!n)return r(`div`,{children:i?e(`div`,{className:`flex items-center gap-1.5 text-[10px] text-foreground`,children:[r(x,{className:`h-3 w-3 text-green-400 shrink-0`}),r(`span`,{className:`font-medium`,children:i.addonName}),r(`span`,{className:`rounded-full bg-green-500/10 text-green-400 px-1.5 py-0.5 font-medium ml-auto`,children:`ACTIVE`})]}):r(`div`,{className:`text-[10px] text-foreground-subtle italic`,children:o(`addons.capabilityMap.noActiveProvider`,`No active provider`)})});if(t.providers.length===0)return r(`div`,{className:`text-[10px] text-foreground-subtle italic`,children:o(`addons.capabilityMap.noProviders`,`No providers`)});let s=`__inherit__`;return e(`div`,{className:`space-y-2`,children:[r(`div`,{className:`space-y-1`,children:t.providers.map(i=>{let o=i.active;return e(`button`,{type:`button`,disabled:a||o,onClick:()=>n.onSelectSingleton(t.name,i.addonId),className:`flex w-full items-center gap-1.5 rounded px-1.5 py-1 text-[10px] text-left transition-colors ${o?`bg-green-500/10 text-foreground cursor-default`:`text-foreground-subtle hover:bg-surface-hover hover:text-foreground disabled:opacity-50`}`,children:[r(`span`,{className:`h-2.5 w-2.5 rounded-full border shrink-0 ${o?`border-green-400 bg-green-400`:`border-border`}`}),r(`span`,{className:`font-medium truncate`,children:i.addonName}),o&&r(`span`,{className:`rounded-full bg-green-500/10 text-green-400 px-1.5 py-0.5 font-medium ml-auto shrink-0`,children:`ACTIVE`})]},i.addonId)})}),t.perNode&&t.perNode.length>0&&r(`div`,{className:`space-y-2 pt-1 border-t border-border/40`,children:t.perNode.map(i=>{let c=i.hasOverride&&i.resolvedActive?i.resolvedActive:s,l=[{value:s,label:i.resolvedActive?o(`addons.capabilityMap.inheritGlobalWith`,{provider:i.resolvedActive}):o(`addons.capabilityMap.inheritGlobal`)},...i.providers.map(e=>({value:e,label:e}))],u=e=>{e===s?n.onClearNodeSingleton(t.name,i.nodeId):n.onSelectNodeSingleton(t.name,i.nodeId,e)},d=a;return e(`div`,{className:`space-y-0.5`,children:[e(`div`,{className:`text-[9px] font-semibold uppercase tracking-widest text-foreground-subtle/60 px-1.5`,children:[i.nodeId,i.hasOverride&&r(`span`,{className:`ml-1.5 rounded-full bg-primary/10 text-primary px-1 py-0.5 normal-case tracking-normal font-medium`,children:o(`common.override`)})]}),l.map(t=>{let n=c===t.value;return e(`button`,{type:`button`,disabled:d||n,onClick:()=>u(t.value),className:`flex w-full items-center gap-1.5 rounded px-1.5 py-1 text-[10px] text-left transition-colors ${n?`bg-green-500/10 text-foreground cursor-default`:`text-foreground-subtle hover:bg-surface-hover hover:text-foreground disabled:opacity-50`}`,children:[r(`span`,{className:`h-2.5 w-2.5 rounded-full border shrink-0 ${n?`border-green-400 bg-green-400`:`border-border`}`}),r(`span`,{className:`font-medium truncate`,children:t.label}),n&&t.value!==s&&r(`span`,{className:`rounded-full bg-green-500/10 text-green-400 px-1.5 py-0.5 font-medium ml-auto shrink-0`,children:`ACTIVE`})]},t.value)})]},i.nodeId)})})]})}function Ge({entry:t,actions:n,isPending:i}){let{t:a}=V();if(t.providers.length===0)return r(`div`,{className:`text-[10px] text-foreground-subtle italic`,children:a(`addons.capabilityMap.noProviders`,`No providers`)});if(!n)return r(`div`,{className:`space-y-1`,children:t.providers.map(t=>e(`div`,{className:`flex items-center justify-between gap-2 text-[10px]`,children:[r(`span`,{className:`text-foreground-subtle`,children:t.addonName}),t.active&&r(`span`,{className:`rounded-full bg-green-500/10 text-green-400 px-1.5 py-0.5 font-medium`,children:`ACTIVE`})]},t.addonId))});let o=t.providers.filter(e=>e.active).map(e=>e.addonId),s=(e,r)=>{let i=r?[...new Set([...o,e])]:o.filter(t=>t!==e);n.onToggleCollection(t.name,i)};return r(`div`,{className:`space-y-1`,children:t.providers.map(t=>e(`label`,{className:`flex items-center justify-between gap-2 text-[10px] rounded px-1.5 py-1 transition-colors ${i?`opacity-50`:`hover:bg-surface-hover cursor-pointer`}`,children:[e(`span`,{className:`flex items-center gap-1.5 min-w-0`,children:[r(`input`,{type:`checkbox`,checked:t.active,disabled:i,onChange:e=>s(t.addonId,e.target.checked),className:`h-3 w-3 accent-green-500 shrink-0`}),r(`span`,{className:`text-foreground truncate`,children:t.addonName})]}),t.active&&r(`span`,{className:`rounded-full bg-green-500/10 text-green-400 px-1.5 py-0.5 font-medium shrink-0`,children:`ACTIVE`})]},t.addonId))})}function U({capabilities:e,actions:t}){let{t:n}=V();return e.length===0?r(`div`,{className:`text-xs text-foreground-subtle text-center py-8`,children:n(`addons.capabilityMap.noCapabilitiesRegistered`,`No capabilities registered`)}):r(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3`,children:e.map(e=>r(Ue,{entry:e,actions:t},e.name))})}var Ke=[`capabilities`,`listCapabilities`];function qe(e){return e===`singleton`||e===`collection`}function W(e){let t=e.indexOf(`@`);return t===-1?B.t(`system.capabilities.providerHub`,{addonId:e}):`${e.slice(0,t)} (${e.slice(t+1)})`}function Je(e,t){return{name:e.name,mode:t,providers:e.providers.map(n=>({addonId:n,addonName:W(n),active:t===`singleton`?e.activeProvider===n:!e.disabledProviders.includes(n)})),...t===`singleton`&&e.perNode?{perNode:e.perNode}:{}}}function Ye(){let{t:n}=V(),i=ee(),[s,c]=a(null),[u,d]=a(null),f=o({queryKey:Ke,queryFn:()=>i.trpcClient.capabilities.listCapabilities.query()}),p=t(()=>{let e=(f.data??[]).flatMap(e=>qe(e.mode)?[Je(e,e.mode)]:[]),t=e.filter(e=>e.mode===`singleton`).toSorted((e,t)=>e.name.localeCompare(t.name)),n=e.filter(e=>e.mode===`collection`).toSorted((e,t)=>e.name.localeCompare(t.name));return[...t,...n]},[f.data]),m=t(()=>p.filter(e=>e.mode===`singleton`),[p]),h=t(()=>p.filter(e=>e.mode===`collection`),[p]),g=l({mutationFn:e=>i.trpcClient.capabilities.setActiveSingleton.mutate({capability:e.capName,addonId:e.addonId}),onMutate:e=>{c(e.capName),d(null)},onSuccess:async(e,t)=>{d({kind:`success`,message:n(`system.capabilities.isNowActive`,`{{capName}} → {{addonId}} is now active.`,{capName:t.capName,addonId:t.addonId})}),await f.refetch()},onError:(e,t)=>{d({kind:`error`,message:n(`system.capabilities.failedToSet`,{cap:t.capName,error:e instanceof Error?e.message:n(`common.unknownError`)})})},onSettled:()=>c(null)}),_=l({mutationFn:e=>i.trpcClient.capabilities.setActiveSingleton.mutate({capability:e.capName,addonId:e.addonId,nodeId:e.nodeId}),onMutate:e=>{c(e.capName),d(null)},onSuccess:async(e,t)=>{d({kind:`success`,message:`${t.capName} @ ${t.nodeId} → ${t.addonId}.`}),await f.refetch()},onError:(e,t)=>{d({kind:`error`,message:n(`system.capabilities.failedToSetOnNode`,{cap:t.capName,node:t.nodeId,error:e instanceof Error?e.message:n(`common.unknownError`)})})},onSettled:()=>c(null)}),v=l({mutationFn:e=>i.trpcClient.capabilities.clearSingletonNodeOverride.mutate({capability:e.capName,nodeId:e.nodeId}),onMutate:e=>{c(e.capName),d(null)},onSuccess:async(e,t)=>{d({kind:`success`,message:n(`system.capabilities.nowInheritsTheGlobalDefault`,`{{capName}} @ {{nodeId}} now inherits the global default.`,{capName:t.capName,nodeId:t.nodeId})}),await f.refetch()},onError:(e,t)=>{d({kind:`error`,message:n(`system.capabilities.failedToClearOnNode`,{cap:t.capName,node:t.nodeId,error:e instanceof Error?e.message:n(`common.unknownError`)})})},onSettled:()=>c(null)}),y=l({mutationFn:e=>i.trpcClient.capabilities.setCollectionEnabledProviders.mutate({capability:e.capName,enabledAddonIds:[...e.enabledAddonIds]}),onMutate:e=>{c(e.capName),d(null)},onSuccess:async(e,t)=>{d({kind:`success`,message:n(`system.capabilities.providerSEnabled`,`{{capName}}: {{length}} provider(s) enabled.`,{capName:t.capName,length:t.enabledAddonIds.length})}),await f.refetch()},onError:(e,t)=>{d({kind:`error`,message:n(`system.capabilities.failedToUpdate`,{cap:t.capName,error:e instanceof Error?e.message:n(`common.unknownError`)})})},onSettled:()=>c(null)}),S={onSelectSingleton:(e,t)=>g.mutate({capName:e,addonId:t}),onSelectNodeSingleton:(e,t,n)=>_.mutate({capName:e,nodeId:t,addonId:n}),onClearNodeSingleton:(e,t)=>v.mutate({capName:e,nodeId:t}),onToggleCollection:(e,t)=>y.mutate({capName:e,enabledAddonIds:t}),pendingCapability:s};return e(H,{embedded:!0,icon:ne,title:n(`system.capabilities.capabilities`,`Capabilities`),subtitle:n(`system.capabilities.chooseWhichProviderIsActive`,`Choose which provider is active for each system capability. Singleton caps pick exactly one provider; collection caps enable a set.`),children:[u&&e(`div`,{className:`flex items-center gap-2 rounded-md border px-3 py-2 text-xs ${u.kind===`success`?`border-success/30 bg-success/10 text-success`:`border-danger/40 bg-danger/10 text-danger`}`,children:[u.kind===`success`?r(x,{className:`h-3.5 w-3.5 shrink-0`}):r(b,{className:`h-3.5 w-3.5 shrink-0`}),r(`span`,{children:u.message})]}),f.isLoading&&r(`div`,{className:`flex items-center justify-center py-16`,children:r(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})}),f.isError&&!f.isLoading&&r(A,{title:n(`system.capabilities.failedToLoadCapabilities`,`Failed to load capabilities`),message:f.error instanceof Error?f.error.message:n(`system.capabilities.unknownError`,`Unknown error`),onRetry:()=>void f.refetch()}),!f.isLoading&&!f.isError&&p.length===0&&r(`div`,{className:`text-xs text-foreground-subtle text-center py-16`,children:n(`system.capabilities.noCapabilitiesRegistered`,`No capabilities registered.`)}),!f.isLoading&&!f.isError&&p.length>0&&e(`div`,{className:`space-y-6`,children:[m.length>0&&e(`section`,{className:`space-y-2`,children:[r(`h2`,{className:`text-[11px] font-semibold uppercase tracking-widest text-foreground-subtle/70`,children:n(`system.capabilities.singletonPickOneProvider`,`Singleton — pick one provider`)}),r(U,{capabilities:m,actions:S})]}),h.length>0&&e(`section`,{className:`space-y-2`,children:[r(`h2`,{className:`text-[11px] font-semibold uppercase tracking-widest text-foreground-subtle/70`,children:n(`system.capabilities.collectionEnableASet`,`Collection — enable a set`)}),r(U,{capabilities:h,actions:S})]})]})]})}var G=[`locked`,`reset`,`shares-backup`,`recovery-key`,`rotation-pending`,`orphans`],Xe={"key-missing":`helpers.keychainNotices.lockedKeyMissing`,"wrong-key":`helpers.keychainNotices.lockedWrongKey`,"key-file-unreadable":`helpers.keychainNotices.lockedKeyFileUnreadable`,"store-unavailable":`helpers.keychainNotices.lockedStoreUnavailable`,"not-initialized":`helpers.keychainNotices.lockedNotInitialized`,"decrypt-failed":`helpers.keychainNotices.lockedDecryptFailed`};function Ze(e){let t=Xe[e];return t===void 0?e:B.t(t)}function Qe({status:e,reset:t,pendingReentry:n,orphans:r}){let i=e.keychain.state===`locked`,a=e.keySource??e.configuredSource,o=[];return e.keychain.state===`locked`&&o.push({id:`locked`,tone:`danger`,title:B.t(`helpers.keychainNotices.locked`,{reason:Ze(e.keychain.reason)})}),t!==null&&t.acknowledgedAt===null&&o.push({id:`reset`,tone:`danger`,title:n>0?B.t(`helpers.keychainNotices.resetPending`,{count:n}):B.t(`helpers.keychainNotices.resetDone`)}),a.sharesBackupWithDatabase&&o.push({id:`shares-backup`,tone:`warning`,title:B.t(`helpers.keychainNotices.sharesBackup`)}),!i&&e.recoveryKeyDownloadedAt===null&&o.push({id:`recovery-key`,tone:`warning`,title:B.t(`helpers.keychainNotices.recoveryKey`)}),!i&&e.rotationPending&&o.push({id:`rotation-pending`,tone:`info`,title:B.t(`helpers.keychainNotices.rotationPending`)}),!i&&r>0&&o.push({id:`orphans`,tone:`info`,title:B.t(`helpers.keychainNotices.orphans`,{count:r})}),[...o].sort((e,t)=>G.indexOf(e.id)-G.indexOf(t.id))}var $e={dateStyle:`short`,timeStyle:`short`};function K(e){return e===null?`—`:new Date(e).toLocaleString(void 0,$e)}function q({value:t,copyValue:n,srLabel:i,maxWidthClass:a,className:o}){let s=n??t;return e(`span`,{className:P(`flex min-w-0 items-center gap-0.5`,a),children:[r(`span`,{className:P(`min-w-0 truncate font-mono`,o),title:s,children:t}),r(I,{value:s,srLabel:i,className:`h-6 shrink-0 px-1.5`})]})}s();var et=new Set([`reveal`,`download-recovery-key`,`rotate-master-key`,`reset`]);function tt(e){return[{key:`at`,header:e(`system.keychainAuditTable.colWhen`),render:e=>K(e.at)},{key:`action`,header:e(`system.keychainAuditTable.colAction`),render:e=>r(R,{variant:et.has(e.action)?`warning`:`default`,children:e.action})},{key:`actor`,header:e(`system.keychainAuditTable.colActor`),render:e=>r(`span`,{className:`font-mono`,children:e.actor})},{key:`ref`,header:e(`system.keychainAuditTable.colRef`),render:e=>e.ref===null?r(`span`,{className:`text-foreground-subtle`,children:`—`}):r(q,{value:e.ref,srLabel:`secret ref`,maxWidthClass:`max-w-[22rem]`})},{key:`detail`,header:e(`system.keychainAuditTable.colDetail`),render:e=>r(`span`,{className:`text-foreground-muted`,children:e.detail??``})}]}function nt({entries:n}){let{t:i}=V(),[o,s]=a(0),c=t(()=>tt(i),[i]);if(n===void 0)return r(`p`,{className:`text-xs text-foreground-subtle`,children:i(`common.loading`,`Loading…`)});let l=Math.max(1,Math.ceil(n.length/25)),u=Math.min(o,l-1),d=u*25,f=n.slice(d,d+25);return e(`div`,{className:`space-y-2`,children:[r(k,{columns:c,rows:f,rowKey:e=>e.id,minWidthPx:760,emptyMessage:i(`secrets.keychainAuditTable.nothingHasBeenAuditedYet`,`Nothing has been audited yet.`)}),n.length>25&&e(`div`,{className:`flex flex-wrap items-center justify-between gap-2 text-[11px] text-foreground-subtle`,children:[r(`span`,{children:i(n.length>=500?`system.keychainAuditTable.rangeRecent`:`system.keychainAuditTable.range`,{from:d+1,to:d+f.length,total:n.length})}),e(`span`,{className:`inline-flex items-center gap-1`,children:[r(E,{size:`sm`,variant:`outline`,"aria-label":i(`secrets.keychainAuditTable.previousPage`,`Previous page`),disabled:u===0,onClick:()=>s(u-1),children:r(re,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),e(`span`,{className:`tabular-nums`,children:[u+1,` / `,l]}),r(E,{size:`sm`,variant:`outline`,"aria-label":i(`secrets.keychainAuditTable.nextPage`,`Next page`),disabled:u>=l-1,onClick:()=>s(u+1),children:r(g,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]})]})]})}function rt(e,t){switch(e){case`locked`:return r(E,{size:`sm`,variant:`danger`,disabled:t.busy,onClick:t.onReset,children:B.t(`secrets.keychainNoticeContent.resetKeychain`,`Reset keychain`)});case`reset`:return r(E,{size:`sm`,variant:`outline`,disabled:t.busy,onClick:t.onAcknowledgeReset,children:B.t(`secrets.keychainNoticeContent.dismiss`,`Dismiss`)});case`recovery-key`:return r(E,{size:`sm`,variant:`outline`,disabled:t.busy,onClick:t.onDownload,children:B.t(`secrets.keychainNoticeContent.download`,`Download`)});case`rotation-pending`:return r(E,{size:`sm`,variant:`outline`,disabled:t.busy,onClick:t.onRotate,children:B.t(`secrets.keychainNoticeContent.rotate`,`Rotate`)});case`orphans`:return r(E,{size:`sm`,variant:`outline`,onClick:t.onShowOrphans,children:B.t(`secrets.keychainNoticeContent.review`,`Review`)});case`shares-backup`:return null}}function it(e,t){switch(e){case`locked`:return r(`p`,{children:B.t(`secrets.keychainNoticeContent.noValueCanBeRead`,`No value can be read or stored. If the master key is lost for good, Reset archives every stored value and starts a new keychain; every secret field then reads “not set”.`)});case`reset`:return t.reset===null?null:r(at,{reset:t.reset,pending:t.pendingReentry});case`shares-backup`:return r(`p`,{children:r(Le,{i18nKey:`secrets.keychainNoticeContent.backupKeyFile`,components:{code:r(`code`,{className:`font-mono`})}})});case`recovery-key`:return r(`p`,{children:B.t(`secrets.keychainNoticeContent.withoutACopyOfThe`,`Without a copy of the master key, the stored values cannot be recovered.`)});case`rotation-pending`:return r(`p`,{children:B.t(`secrets.keychainNoticeContent.theKeychainUnlockedWithA`,`The keychain unlocked with a previous key. Rotate to move onto the configured one.`)});case`orphans`:return null}}function at({reset:t,pending:n}){let{t:i}=V(),a=t.actor===`trigger-file`?i(`secrets.keychainNoticeContent.resetByTrigger`):i(`secrets.keychainNoticeContent.resetByAdmin`,{actor:t.actor});return e(`div`,{className:`space-y-1.5`,children:[r(`p`,{children:i(`secrets.keychainNoticeContent.resetDetail`,{when:K(t.at),by:a,archived:t.archived})}),n.length>0&&r(`ul`,{className:`max-h-40 space-y-0.5 overflow-y-auto rounded-md border border-border bg-background p-2 font-mono text-[11px] text-foreground`,children:n.map(t=>e(`li`,{className:`break-all`,children:[t.owner,` · `,t.scope,` · `,t.fieldPath]},t.ref))})]})}s();var ot=2,J={danger:{icon:se,text:`text-danger`,border:`border-danger/40`},warning:{icon:m,text:`text-warning`,border:`border-warning/40`},info:{icon:S,text:`text-info`,border:`border-border`}};function st({notices:t,renderAction:n,renderDetail:i}){let{t:o}=V(),[s,c]=a(!1),l=t[0];if(l===void 0)return null;let u=t.length>ot,d=u&&!s?t.slice(0,1):t,f=t.length-d.length;return e(`section`,{"aria-label":o(`secrets.keychainNotices.keychainNotices`,`Keychain notices`),className:P(`rounded-lg border bg-surface`,J[l.tone].border),children:[r(`ul`,{className:`divide-y divide-border`,children:d.map(e=>r(ct,{notice:e,action:n(e.id),detail:i(e.id)},e.id))}),u&&r(`div`,{className:`border-t border-border px-3 py-1`,children:e(E,{size:`sm`,variant:`ghost`,"aria-expanded":s,onClick:()=>c(e=>!e),children:[r(h,{className:P(`h-3.5 w-3.5 transition-transform`,s&&`rotate-180`),"aria-hidden":!0}),s?o(`secrets.keychainNotices.showLess`,`Show less`):o(`secrets.keychainNotices.more`,`{{hidden}} more`,{hidden:f})]})})]})}function ct({notice:t,action:n,detail:i}){let{t:o}=V(),[s,c]=a(!1),l=J[t.tone],u=l.icon,d=i!=null,f=`keychain-notice-${t.id}`;return e(`li`,{className:`px-3 py-2`,children:[e(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:gap-3`,children:[e(`p`,{className:`flex min-w-0 flex-1 items-start gap-2 text-xs text-foreground`,children:[r(u,{className:P(`mt-0.5 h-3.5 w-3.5 shrink-0`,l.text),"aria-hidden":!0}),r(`span`,{className:`min-w-0 break-words`,children:t.title})]}),e(`div`,{className:`flex shrink-0 flex-wrap items-center gap-1.5 pl-5 sm:pl-0`,children:[d&&r(E,{size:`sm`,variant:`ghost`,"aria-expanded":s,"aria-controls":f,onClick:()=>c(e=>!e),children:o(`secrets.keychainNotices.details`,`Details`)}),n]})]}),d&&s&&r(`div`,{id:f,className:`mt-2 pl-5 text-xs text-foreground-muted`,children:i})]})}var lt={"config-file":`Key file (config.yaml)`,"previous-config-file":`Previous key file`,platform:`OS keychain`,"default-file":`Default key file (data volume)`},ut=8;function dt({status:t,busy:n,onDownload:i,onRotate:a,onPurge:o}){let{t:s}=V(),c=t.keychain.state===`locked`,l=t.keySource??t.configuredSource;return r(Ce,{headingId:`keychain-status`,title:s(`secrets.keychainStatusCard.keychain`,`Keychain`),icon:T,actions:e(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[t.retiredWraps>0&&r(E,{size:`sm`,variant:`ghost`,disabled:n||c,onClick:o,children:s(`secrets.keychainStatusCard.purge`,{count:t.retiredWraps})}),r(E,{size:`sm`,variant:`outline`,disabled:n||c,onClick:a,children:s(`secrets.keychainStatusCard.rotateKey`,`Rotate key`)}),r(E,{size:`sm`,variant:`outline`,disabled:n||c,onClick:i,children:s(`secrets.keychainStatusCard.downloadRecoveryKey`,`Download recovery key`)})]}),children:e(`dl`,{className:`${d} grid grid-cols-1 gap-x-6 gap-y-3 sm:grid-cols-2 xl:grid-cols-4`,children:[e(Y,{label:s(`secrets.keychainStatusCard.state`,`State`),children:[c?e(R,{variant:`danger`,className:`gap-1`,children:[r(C,{className:`h-3 w-3`,"aria-hidden":!0}),s(`secrets.keychainStatusCard.locked`,`Locked`)]}):e(R,{variant:`success`,className:`gap-1`,children:[r(_,{className:`h-3 w-3`,"aria-hidden":!0}),s(`secrets.keychainStatusCard.unlocked`,`Unlocked`)]}),r(`span`,{className:`ml-2 text-foreground-subtle`,children:s(`common.stored`,{count:t.secretCount})})]}),e(Y,{label:s(`secrets.keychainStatusCard.keySource`,`Key source`),children:[r(`span`,{className:`block`,children:lt[l.kind]}),l.path!==void 0&&r(q,{value:l.path,srLabel:`key path`})]}),r(Y,{label:s(`secrets.keychainStatusCard.fingerprint`,`Fingerprint`),children:t.fingerprint===null?r(`span`,{className:`text-foreground-subtle`,children:`—`}):e(`span`,{className:`inline-flex items-center gap-0.5`,children:[r(`span`,{className:`font-mono`,title:t.fingerprint,children:t.fingerprint.slice(0,ut)}),r(I,{value:t.fingerprint,srLabel:`fingerprint`})]})}),r(Y,{label:s(`secrets.keychainStatusCard.recoveryKey`,`Recovery key`),children:t.recoveryKeyDownloadedAt===null?r(R,{variant:`warning`,children:s(`secrets.keychainStatusCard.notTaken`,`Not taken`)}):r(`span`,{children:s(`secrets.keychainStatusCard.taken`,{when:K(t.recoveryKeyDownloadedAt)})})})]})})}function Y({label:t,children:n}){return e(`div`,{className:`min-w-0 text-xs`,children:[r(`dt`,{className:`text-foreground-subtle`,children:t}),r(`dd`,{className:`mt-0.5 min-w-0 text-foreground`,children:n})]})}s();var ft=1e3;function pt({revealed:t,onClose:n}){let{t:o}=V(),[s,c]=a(L);i(()=>{if(t===null)return;let e=Date.now();c(L);let r=setTimeout(n,L),i=setInterval(()=>c(Math.max(0,L-(Date.now()-e))),ft);return()=>{clearTimeout(r),clearInterval(i)}},[t,n]);let l=Math.ceil(s/1e3);return r(Te,{open:t!==null,onOpenChange:e=>!e&&n(),children:r(Me,{width:`lg`,placement:`sheet-on-mobile`,scroll:`body`,children:t!==null&&e(u,{children:[e(De,{children:[r(Se,{className:`break-all`,children:t.entry.fieldPath}),e(je,{className:`break-all`,children:[t.entry.owner,` · `,t.entry.scope]})]}),r(Ee,{children:r(`pre`,{"data-testid":`revealed-value`,className:`whitespace-pre-wrap break-all rounded-md border border-border bg-background p-3 font-mono text-xs text-foreground`,children:t.value})}),e(Oe,{className:`flex-col items-stretch gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[r(`p`,{className:`text-[11px] text-foreground-subtle`,children:o(`secrets.revealDialog.recorded`,{seconds:l})}),e(`div`,{className:`flex justify-end gap-2`,children:[r(I,{value:t.value,label:o(`common.copy`,`Copy`),srLabel:`revealed value`}),r(E,{size:`sm`,variant:`outline`,onClick:n,children:o(`secrets.revealDialog.hide`,`Hide`)})]})]})]})})})}var X={orphan:{labelKey:`secrets.secretsTableState.usageOrphan`,variant:`warning`,hintKey:`secrets.secretsTableState.usageOrphanHint`,rank:0},unknown:{labelKey:`secrets.secretsTableState.usageUnknown`,variant:`default`,hintKey:`secrets.secretsTableState.usageUnknownHint`,rank:1},"in-use":{labelKey:`secrets.secretsTableState.usageInUse`,variant:`success`,hintKey:`secrets.secretsTableState.usageInUseHint`,rank:2}},mt=[{id:`all`,labelKey:`common.all`},{id:`in-use`,labelKey:`secrets.secretsTableState.usageInUse`},{id:`orphan`,labelKey:`secrets.secretsTableState.filterOrphans`},{id:`unknown`,labelKey:`secrets.secretsTableState.usageUnknown`}],Z=`system`;function ht(t){let{t:n}=V(),{secrets:i,filter:a,onFilterChange:o,onDeleteOrphans:s,deleting:c,locked:l}=t;if(i===void 0)return r(`p`,{className:`text-xs text-foreground-subtle`,children:n(`common.loading`,`Loading…`)});let u=e=>e===`all`?i.length:i.filter(t=>t.usage===e).length,d=i.filter(e=>e.usage===`orphan`).map(e=>e.ref),f=a===`all`?i:i.filter(e=>e.usage===a);return e(`div`,{className:`space-y-2`,children:[e(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[r(`div`,{className:`flex flex-wrap gap-1`,role:`group`,"aria-label":n(`secrets.secretsTable.filterByUsage`,`Filter by usage`),children:mt.map(t=>e(E,{size:`sm`,variant:a===t.id?`secondary`:`ghost`,"aria-pressed":a===t.id,className:a===t.id?`ring-1 ring-border`:void 0,onClick:()=>o(t.id),children:[n(t.labelKey),r(`span`,{className:`text-foreground-subtle tabular-nums`,children:u(t.id)})]},t.id))}),d.length>0&&e(E,{size:`sm`,variant:`outline`,className:`ml-auto`,disabled:c||l,onClick:()=>s(d),children:[r(p,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),n(`secrets.secretsTableState.deleteOrphans`,{count:d.length})]})]}),r(k,{columns:_t(t),rows:f,rowKey:e=>e.ref,minWidthPx:860,maxBodyHeight:ue,defaultSort:{columnKey:`owner`,dir:`asc`},emptyMessage:i.length===0?n(`secrets.secretsTable.noValueIsStoredIn`,`No value is stored in the keychain yet.`):n(`secrets.secretsTable.noStoredValueMatchesThis`,`No stored value matches this filter.`)})]})}function gt({owner:t}){let{t:n}=V();return e(`span`,{className:`flex items-center gap-2`,children:[r(Be,{addonId:t,fallback:t===Z?y:f,tileClassName:`bg-surface-hover text-foreground-subtle`,size:`sm`}),r(`span`,{className:`font-medium`,children:t===Z?n(`secrets.secretsTable.hubSystem`,`Hub (system)`):t})]})}function _t({locked:t,onReveal:n,revealing:i}){return[{key:`owner`,header:B.t(`secrets.secretsTable.owner`,`Owner`),render:e=>r(gt,{owner:e.owner}),sortValue:e=>e.owner},{key:`scope`,header:B.t(`secrets.secretsTable.scope`,`Scope`),render:e=>r(`span`,{className:`block max-w-[11rem] truncate font-mono`,title:e.scope,children:e.scope}),sortValue:e=>e.scope},{key:`field`,header:B.t(`secrets.secretsTable.field`,`Field`),render:e=>r(q,{value:e.fieldPath,copyValue:e.ref,srLabel:`secret ref`,maxWidthClass:`max-w-[16rem]`}),sortValue:e=>e.fieldPath},{key:`updated`,header:B.t(`secrets.secretsTable.updated`,`Updated`),render:e=>K(e.updatedAt),sortValue:e=>e.updatedAt},{key:`last-read`,header:B.t(`secrets.secretsTable.lastRead`,`Last read`),render:e=>K(e.lastReadAt),sortValue:e=>e.lastReadAt},{key:`status`,header:B.t(`secrets.secretsTable.status`,`Status`),render:e=>r(R,{variant:X[e.usage].variant,title:B.t(X[e.usage].hintKey),children:B.t(X[e.usage].labelKey)}),sortValue:e=>X[e.usage].rank},{key:`actions`,header:``,align:`right`,notSortableReason:`Actions`,render:a=>e(E,{size:`sm`,variant:`ghost`,disabled:t||i,"aria-label":B.t(`secrets.secretsTable.reveal`,`Reveal {{fieldPath}}`,{fieldPath:a.fieldPath}),title:t?B.t(`secrets.secretsTable.theKeychainIsLocked`,`The keychain is locked`):B.t(`secrets.secretsTable.revealAudited`,`Reveal (audited)`),onClick:()=>n(a),children:[r(ae,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),B.t(`secrets.secretsTable.reveal2`,`Reveal`)]})}]}function vt(e){return e instanceof Error?e.message:String(e)}function yt(e){let{t}=V(),n=xe(),r=N(),i=_e(),a=he(),o=D(),s=ke(),c=pe(),l=fe(),u=de(),d=async(t,n)=>{try{await n()}catch(e){await r({title:t,message:vt(e),variant:`danger`})}e()};return{busy:a.isPending||o.isPending||s.isPending||c.isPending,deleting:u.isPending,download:async()=>{await n({title:t(`secrets.useKeychainActions.downloadTitle`),message:t(`secrets.useKeychainActions.downloadMessage`),confirmLabel:t(`secrets.useKeychainActions.downloadConfirm`),variant:`warning`})&&await d(t(`secrets.useKeychainActions.downloadRefused`),async()=>{let e=await a.mutateAsync({});await i({title:t(`secrets.useKeychainActions.recoveryTitle`,{fingerprint:e.fingerprint}),message:t(`secrets.useKeychainActions.recoveryMessage`),defaultValue:e.key,readOnly:!0,confirmLabel:t(`secrets.useKeychainActions.recoveryDone`)})})},rotate:async()=>{await n({title:t(`secrets.useKeychainActions.rotateTitle`),message:t(`secrets.useKeychainActions.rotateMessage`),confirmLabel:t(`secrets.useKeychainActions.rotateConfirm`),variant:`warning`})&&await d(t(`secrets.useKeychainActions.rotateRefused`),async()=>{let e=await o.mutateAsync({});await r({title:t(`secrets.useKeychainActions.rotatedTitle`),message:t(`secrets.useKeychainActions.rotatedMessage`,{fingerprint:e.fingerprint})})})},purge:async()=>{await n({title:t(`secrets.useKeychainActions.purgeTitle`),message:t(`secrets.useKeychainActions.purgeMessage`),confirmLabel:t(`secrets.useKeychainActions.purgeConfirm`),variant:`warning`})&&await d(t(`secrets.useKeychainActions.purgeRefused`),async()=>{await s.mutateAsync({})})},reset:async()=>{await i({title:t(`secrets.useKeychainActions.resetTitle`),message:t(`secrets.useKeychainActions.resetMessage`,{confirmation:`RESET KEYCHAIN`}),confirmLabel:t(`secrets.useKeychainActions.resetConfirm`),validate:e=>e===`RESET KEYCHAIN`?null:t(`secrets.useKeychainActions.resetMismatch`)})===`RESET KEYCHAIN`&&await d(t(`secrets.useKeychainActions.resetRefused`),async()=>{await c.mutateAsync({confirm:oe})})},acknowledgeReset:async()=>{await d(t(`secrets.useKeychainActions.dismissFailed`),async()=>{await l.mutateAsync({})})},deleteOrphans:async e=>{await n({title:t(`secrets.useKeychainActions.orphansTitle`,{count:e.length}),message:t(`secrets.useKeychainActions.orphansMessage`),confirmLabel:t(`secrets.useKeychainActions.orphansConfirm`),variant:`danger`})&&await d(t(`secrets.useKeychainActions.orphansRefused`),async()=>{let n=await u.mutateAsync({refs:[...e]});n.kept.length>0&&await r({title:t(`secrets.useKeychainActions.keptTitle`),message:t(`secrets.useKeychainActions.keptMessage`,{deleted:n.deleted.length,kept:n.kept.length})})})}}}s();var Q=`view`;function bt(){let[e,t]=Ie();return[e.get(Q)===`audit`?`audit`:`values`,n=>{let r=new URLSearchParams(e);n===`values`?r.delete(Q):r.set(Q,n),t(r,{replace:!0})}]}function xt(){let{t:i}=V(),o=O({}),s=ce({}),c=Ae({limit:500}),l=me({}),u=ge(),d=N(),[f,p]=bt(),[m,h]=a(`all`),[g,_]=a(null),v=yt(()=>{o.refetch(),s.refetch(),c.refetch(),l.refetch()}),y=o.data?.keychain.state===`locked`,b=t(()=>(s.data??[]).filter(e=>e.usage===`orphan`).length,[s.data]),x=t(()=>o.data===void 0?[]:Qe({status:o.data,reset:l.data?.reset??null,pendingReentry:l.data?.pendingReentry.length??0,orphans:b}),[o.data,l.data,b]),S={reset:l.data?.reset??null,pendingReentry:l.data?.pendingReentry??[],busy:v.busy,onReset:()=>void v.reset(),onAcknowledgeReset:()=>void v.acknowledgeReset(),onDownload:()=>void v.download(),onRotate:()=>void v.rotate(),onShowOrphans:()=>{h(`orphan`),p(`values`)}},C=async e=>{try{_({entry:e,value:(await u.mutateAsync({ref:e.ref})).value}),s.refetch()}catch(e){await d({title:i(`admin.system.secrets.revealRefused`,`Reveal refused`),message:Fe(e),variant:`danger`})}},w=n(()=>_(null),[]);return e(H,{embedded:!0,icon:T,title:i(`admin.system.secrets.secrets`,`Secrets`),subtitle:i(`admin.system.secrets.passwordsTokensAndKeysEncrypted`,`Passwords, tokens and keys, encrypted in the hub keychain. Values leave the hub only through an audited reveal.`),children:[r(st,{notices:x,renderAction:e=>rt(e,S),renderDetail:e=>it(e,S)}),o.data!==void 0&&r(dt,{status:o.data,busy:v.busy,onDownload:S.onDownload,onRotate:S.onRotate,onPurge:()=>void v.purge()}),e(ve,{value:f,onValueChange:e=>p(e===`audit`?`audit`:`values`),children:[e(le,{children:[r(M,{value:`values`,children:i(`admin.system.secrets.storedValues`,`Stored values`)}),r(M,{value:`audit`,children:i(`admin.system.secrets.audit`,`Audit`)})]}),r(z,{value:`values`,children:r(ht,{secrets:s.data,locked:y,filter:m,onFilterChange:h,onReveal:e=>void C(e),revealing:u.isPending,onDeleteOrphans:e=>void v.deleteOrphans(e),deleting:v.deleting})}),r(z,{value:`audit`,children:r(nt,{entries:c.data})})]}),r(pt,{revealed:g,onClose:w})]})}s();var St=[[`system`]];function $(e){return e.toFixed(6).replace(/0+$/,``).replace(/\.$/,``)}function Ct(){let{t}=V(),n=c(),o=ye(),s=j(),l=Ne(),[u,d]=a(``),[f,p]=a(``),[m,h]=a(null),g=o.data?.location??null;i(()=>{d(g===null?``:$(g.latitude)),p(g===null?``:$(g.longitude))},[g]);let _=async()=>{await n.invalidateQueries({queryKey:St})},v=async e=>{e.preventDefault();let t=Number(u),n=Number(f);if(u.trim()===``||f.trim()===``){h(`Enter both a latitude and a longitude, or press Clear.`);return}if(!Number.isFinite(t)||t<-90||t>90){h(`Latitude must be between -90 and 90 decimal degrees.`);return}if(!Number.isFinite(n)||n<-180||n>180){h(`Longitude must be between -180 and 180 decimal degrees.`);return}h(null),await s.mutateAsync({latitude:t,longitude:n}),await _()},y=async()=>{h(null),await s.mutateAsync(null),await _()},b=async()=>{h(null),await l.mutateAsync(),await _()},x=s.isPending||l.isPending||o.isLoading;return e(we,{className:`space-y-3`,children:[e(`div`,{className:`flex items-start justify-between gap-3`,children:[e(`div`,{className:`flex items-start gap-2`,children:[r(w,{className:`h-4 w-4 mt-0.5 text-muted-foreground shrink-0`}),r(`div`,{children:r(`h3`,{className:`text-sm font-medium`,children:t(`settings.siteLocationCard.siteLocation`,`Site location`)})})]}),g===null?r(R,{variant:`warning`,children:t(`settings.siteLocationCard.notConfigured`,`Not configured`)}):r(R,{variant:g.source===`operator-set`?`success`:`info`,children:g.source===`operator-set`?t(`settings.siteLocationCard.setByYou`,`Set by you`):t(`settings.siteLocationCard.derivedFromIp`,`Derived from IP`)})]}),g?.label!==void 0&&g.label!==``?r(`p`,{className:`text-xs text-muted-foreground`,children:t(`settings.siteLocationCard.detectedNear`,{place:g.label})}):null,g===null&&o.data?.derivationAttemptedAt!==null?e(`p`,{className:`text-xs text-warning`,children:[t(`settings.siteLocationCard.automaticDetectionFromThePublic`,`Automatic detection from the public IP did not succeed`),o.data?.derivationError!==null&&o.data?.derivationError!==void 0?`: ${o.data.derivationError}`:`.`,` `,t(`settings.siteLocationCard.itIsNotRetriedOn`,`It is not retried on its own — enter the coordinates, or press Detect.`)]}):null,e(`form`,{className:`flex flex-wrap items-end gap-3`,onSubmit:v,children:[e(`label`,{className:`flex flex-col gap-1 text-xs`,children:[r(`span`,{className:`text-muted-foreground`,children:t(`settings.siteLocationCard.latitude`,`Latitude`)}),r(F,{className:`w-40`,value:u,inputMode:`decimal`,placeholder:`40.851800`,onChange:e=>d(e.target.value),"aria-label":t(`settings.siteLocationCard.latitude`,`Latitude`)})]}),e(`label`,{className:`flex flex-col gap-1 text-xs`,children:[r(`span`,{className:`text-muted-foreground`,children:t(`settings.siteLocationCard.longitude`,`Longitude`)}),r(F,{className:`w-40`,value:f,inputMode:`decimal`,placeholder:`14.268100`,onChange:e=>p(e.target.value),"aria-label":t(`settings.siteLocationCard.longitude`,`Longitude`)})]}),r(E,{type:`submit`,disabled:x,children:t(`common.save`,`Save`)}),e(E,{type:`button`,variant:`ghost`,disabled:x,onClick:b,children:[r(ie,{className:`h-3.5 w-3.5 mr-1`}),t(`settings.siteLocationCard.detectFromIp`,`Detect from IP`)]}),g===null?null:r(E,{type:`button`,variant:`ghost`,disabled:x,onClick:y,children:t(`settings.siteLocationCard.clear`,`Clear`)})]}),m===null?null:r(`p`,{className:`text-xs text-danger`,children:m}),r(`p`,{className:`text-xs text-muted-foreground`,children:t(`settings.siteLocationCard.wgs84DecimalDegreesDetectAsks`,`WGS84 decimal degrees. Detect asks a public geo-IP service once and will not overwrite a value you typed — clear it first.`)})]})}function wt(){let{t}=V(),{nodes:n,isLoading:i}=be(),a=n.find(e=>e.isHub&&e.isOnline),o=a?.addons.map(e=>e.addonId)??[];return e(H,{embedded:!0,children:[r(Ct,{}),i?r(`div`,{className:`text-muted-foreground text-sm py-12 text-center`,children:t(`admin.system.settings.loadingHubTopology`,`Loading hub topology…`)}):a?o.length===0?r(`div`,{className:`text-muted-foreground text-sm py-12 text-center`,children:t(`admin.system.settings.noAddonsInstalledOnThe`,`No addons installed on the hub yet.`)}):r(ze,{nodeId:a.id,addonIds:o,level:`global`}):e(`div`,{className:`flex flex-col items-center justify-center text-muted-foreground text-sm gap-2 py-12`,children:[r(v,{className:`h-8 w-8 opacity-30`}),r(`p`,{children:t(`admin.system.settings.noOnlineHubNodeFound`,`No online hub node found.`)}),r(`p`,{className:`text-xs`,children:t(`admin.system.settings.settingsWillAppearOnceThe`,`Settings will appear once the hub is reachable.`)})]})]})}function Tt(){let{t:e}=V(),t=Pe(`/system/settings`,{t:e,isAdmin:!0})??{icon:v,title:e(`system.systemNav`,`System`)};return r(Re,{icon:t.icon,title:t.title,defaultSection:`settings`,sectionsLabel:`${t.title} sections`,sections:[{id:`settings`,label:e(`system.system.settings`,`Settings`),content:r(wt,{})},{id:`secrets`,label:e(`system.system.secrets`,`Secrets`),content:r(xt,{}),ownedParams:[`view`]},{id:`capabilities`,label:e(`system.system.capabilities`,`Capabilities`),content:r(Ye,{})}]})}export{Tt as SystemPage};
@@ -1 +0,0 @@
1
- import{ra as e}from"./player-overlays-DN3wN3kB.js";var t=e(`circle-slash`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`9`,x2:`15`,y1:`15`,y2:`9`,key:`1dfufj`}]]);export{t};
@@ -1 +0,0 @@
1
- import{ra as e}from"./player-overlays-DN3wN3kB.js";var t=e(`crop`,[[`path`,{d:`M6 2v14a2 2 0 0 0 2 2h14`,key:`ron5a4`}],[`path`,{d:`M18 22V8a2 2 0 0 0-2-2H2`,key:`7s9ehn`}]]);export{t};
@@ -1 +0,0 @@
1
- import"./src-DaPCpXY_.js";