@camstack/addon-admin-ui 1.2.530 → 1.2.531
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.
- package/CHANGELOG.md +6 -0
- package/dist/assets/{AddonAssetIcon-B1rn0DLw.js → AddonAssetIcon-Cp5zLEvD.js} +1 -1
- package/dist/assets/Addons-BES3OMn0.js +5 -0
- package/dist/assets/{AdminPage-DmkuRREx.js → AdminPage-D2S65e6Q.js} +1 -1
- package/dist/assets/{AdminSectionedPage-Dv8ahC-U.js → AdminSectionedPage-CKX5JkdQ.js} +1 -1
- package/dist/assets/{AiProfiles-BJrqkjtX.js → AiProfiles-BIQHK5vc.js} +1 -1
- package/dist/assets/{Build-DTcg9gkb.js → Build-DjlUwtu8.js} +3 -3
- package/dist/assets/{Calendars-x_EpS-cd.js → Calendars-Brkz06fF.js} +1 -1
- package/dist/assets/{Cluster-aj2_8TZC.js → Cluster-BtvDTlfe.js} +1 -1
- package/dist/assets/{ComposedDeviceEditDialog-DNGwDK80.js → ComposedDeviceEditDialog-UYQVMVk7.js} +1 -1
- package/dist/assets/{CompositionBlockEditor-O3eDPOLD.js → CompositionBlockEditor-CYd3iEcq.js} +2 -2
- package/dist/assets/{CompositionEditorPage-D09wEj7N.js → CompositionEditorPage-GtC8DYG6.js} +1 -1
- package/dist/assets/{Data-D4Sz8Rl9.js → Data-39SL2gbC.js} +1 -1
- package/dist/assets/{DeviceDetail-BE-C2aGY.js → DeviceDetail-C9eCLTmW.js} +2 -2
- package/dist/assets/{DeviceDoActionFields-D1rhgn3I.js → DeviceDoActionFields-Ca2TmJDn.js} +1 -1
- package/dist/assets/{Devices-BBsDc0QJ.js → Devices-DwFifk2g.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-D0lVyXps.js → EmbedPlayerPage-D91A6i3P.js} +1 -1
- package/dist/assets/{FormBuilder-BvQZWKCS.js → FormBuilder-C01MTb_b.js} +1 -1
- package/dist/assets/{History-TMZn0v_I.js → History-OBh3harZ.js} +1 -1
- package/dist/assets/{Identity-DNIHuEKY.js → Identity-Bx-Ja-MP.js} +1 -1
- package/dist/assets/IntegrationDetail-TLO47L5-.js +1 -0
- package/dist/assets/{IntegrationHub-DviGnYgu.js → IntegrationHub-C--hpDK-.js} +1 -1
- package/dist/assets/{Integrations-9bupF3uw.js → Integrations-Cm9BV3o8.js} +1 -1
- package/dist/assets/{Integrations-B7okjAJ8.js → Integrations-GHsM_7uc.js} +1 -1
- package/dist/assets/{Library-BHn4Iifg.js → Library-D2EugVqE.js} +1 -1
- package/dist/assets/{Locations-BVaRTbq0.js → Locations-Cb8RSNkt.js} +1 -1
- package/dist/assets/{Logs-DI7IZGug.js → Logs-Gsq1EPYC.js} +1 -1
- package/dist/assets/{MaskShapeCanvas-HJuLPIJP.js → MaskShapeCanvas-4rUt1muq.js} +1 -1
- package/dist/assets/{MotionZonesSettings-COMPKhfx.js → MotionZonesSettings-D8frKIxI.js} +1 -1
- package/dist/assets/{MyAccess-YiGVb3gF.js → MyAccess-WsIYje4M.js} +1 -1
- package/dist/assets/{Network-ZYEqAiF5.js → Network-CjuJ-PkF.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-Chb7RIE6.js → NodeAddonsSettingsPanel-DYEAw_0K.js} +1 -1
- package/dist/assets/{Notifications-DrVDMEuK.js → Notifications-DcpvQo5d.js} +1 -1
- package/dist/assets/Pipeline-CoNbGWDs.js +1 -0
- package/dist/assets/{PrivacyMaskSettings-C88JqmdE.js → PrivacyMaskSettings-LVUmj3W4.js} +1 -1
- package/dist/assets/Recordings-DeZnE3O5.js +1 -0
- package/dist/assets/RemoteGrid-CjSx3Aah.js +1 -0
- package/dist/assets/{ScanNetworkModal-Cq9BlXXk.js → ScanNetworkModal-CvlBpDgq.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-mE7W6emU.js → SceneMonitorEditor-CUgqZlLF.js} +1 -1
- package/dist/assets/SessionsList-CPlqGJSE.js +2 -0
- package/dist/assets/{Showroom-Crq5JUKV.js → Showroom-CoWYMVAI.js} +1 -1
- package/dist/assets/{System-CfurcyNZ.js → System-CqV_BBXI.js} +1 -1
- package/dist/assets/Templates-CMETwZM5.js +1 -0
- package/dist/assets/{Terminal-UyKanKPS.js → Terminal-BiuPjGjh.js} +5 -5
- package/dist/assets/{Trans-Bsz5Pghy.js → Trans-DlVN2FAm.js} +1 -1
- package/dist/assets/{Viewer-BTxcZ-BR.js → Viewer-VFeL3oiK.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CmowmspB.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BzI5prAS.js} +1 -1
- package/dist/assets/{addon-icons-context-DZZCjo9x.js → addon-icons-context-D_SbgBlL.js} +1 -1
- package/dist/assets/{archive-Bu9T4BL0.js → archive-BdOuJA6D.js} +1 -1
- package/dist/assets/{assignment-candidates-DWivr3bV.js → assignment-candidates-FrlfxULJ.js} +1 -1
- package/dist/assets/{authed-media-yW7W_8pm.js → authed-media-Cdlj2yED.js} +1 -1
- package/dist/assets/{bell-off-E0Abr7jJ.js → bell-off-DE260sCQ.js} +1 -1
- package/dist/assets/{board-model-CCD7fB3T.js → board-model-C8M8reLO.js} +1 -1
- package/dist/assets/{boxes-BkzsIUkw.js → boxes-ncBMqqF7.js} +1 -1
- package/dist/assets/circle-slash-bDMoAvuJ.js +1 -0
- package/dist/assets/{client-BvflqtP1.js → client-3nhKn2xf.js} +1 -1
- package/dist/assets/{cloud-upload-BIjzjy_K.js → cloud-upload-xWhkZB2K.js} +1 -1
- package/dist/assets/crop-BZhdHvRT.js +1 -0
- package/dist/assets/{device-integration-icon-BpHHi90B.js → device-integration-icon-DXsx1ovH.js} +1 -1
- package/dist/assets/device-picker-model-yyadLjpT.js +1 -0
- package/dist/assets/{dist-DoqhrZoo.js → dist-CxGqD88j.js} +1 -1
- package/dist/assets/{dist-Gm_hHBN2.js → dist-dKXZSA43.js} +1 -1
- package/dist/assets/{file-up-Cyg6A2qN.js → file-up-DSkaqgrs.js} +1 -1
- package/dist/assets/{format-ChSVChsY.js → format-5kuRrylR.js} +1 -1
- package/dist/assets/{grip-vertical-CLVyc1HC.js → grip-vertical-oBh5I9hk.js} +1 -1
- package/dist/assets/{hard-drive-download-Cd122TYb.js → hard-drive-download-BJ9Vaf4q.js} +1 -1
- package/dist/assets/{hostInit-DR1ykbVx.js → hostInit-ClzsOBVS.js} +1 -1
- package/dist/assets/{i18n-Bg2ooh3q.js → i18n-BTbD-8vc.js} +1 -1
- package/dist/assets/icons-B7ZVbtoQ.js +1 -0
- package/dist/assets/index-BGL4RiB2.css +2 -0
- package/dist/assets/{index-DGvsu0ui.js → index-BoU7NTPo.js} +3 -3
- package/dist/assets/{key-D_zqd1r-.js → key-5z5CPQqC.js} +1 -1
- package/dist/assets/{key-round-pNw827HU.js → key-round-DE61GWtp.js} +1 -1
- package/dist/assets/{layers-CFNXRt4j.js → layers-DUXoEBYs.js} +1 -1
- package/dist/assets/{linked-devices-model-D9m6pafu.js → linked-devices-model-D76tAwE6.js} +1 -1
- package/dist/assets/{list-ordered-Dy6tCUD8.js → list-ordered-DSox6EY0.js} +1 -1
- package/dist/assets/{location-owned-usage-DasgH3RR.js → location-owned-usage-BSaNp20e.js} +1 -1
- package/dist/assets/{memory-stick-Bt2KoB-0.js → memory-stick-f2B4Aw1x.js} +1 -1
- package/dist/assets/{message-square-plus-rkd_X0vs.js → message-square-plus-DUwM59NW.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-3390b09e.js → mf-entry-bootstrap-0-167f91f2.js} +2 -2
- package/dist/assets/{mic-off-DWb36TX2.js → mic-off-DpDwbFnF.js} +1 -1
- package/dist/assets/{monitor-off-B2GWMMt_.js → monitor-off-Cevi7ihB.js} +1 -1
- package/dist/assets/{monitor-smartphone-DJzvbVtx.js → monitor-smartphone-DPzM2qXf.js} +1 -1
- package/dist/assets/mount-yyadLjpT.js +1 -0
- package/dist/assets/{notification-schedule-field-B7FdiF_t.js → notification-schedule-field-B_Y6t98m.js} +1 -1
- package/dist/assets/{player-overlays-DpZIxQHp.js → player-overlays-D0HsTHUG.js} +1 -1
- package/dist/assets/{recycle-BWLoavmg.js → recycle-CK0-gO9v.js} +1 -1
- package/dist/assets/remoteEntry-CURqqH0d.js +1 -0
- package/dist/assets/{ruler-C1SbVRl3.js → ruler-C_9y2OuS.js} +1 -1
- package/dist/assets/{scan-eye-Bv4PGTFl.js → scan-eye-Cqs3dsDB.js} +1 -1
- package/dist/assets/{scissors-BsEkbrx_.js → scissors-BomV8klv.js} +1 -1
- package/dist/assets/{search-x-DE4DxdsF.js → search-x-Ck_vydrn.js} +1 -1
- package/dist/assets/{send-Dd0BBamd.js → send-B8Po_JT_.js} +1 -1
- package/dist/assets/{settings-2-z3X6U2eo.js → settings-2-CyAo_nYh.js} +1 -1
- package/dist/assets/shapes-CuqJ7CA_.js +1 -0
- package/dist/assets/{sigma-CxBVWJ85.js → sigma-YkVVm5dQ.js} +1 -1
- package/dist/assets/{speaker-Dy79a571.js → speaker-iL5Ep2q1.js} +1 -1
- package/dist/assets/{src-KDhMZ5Ob.js → src-D1j-98hX.js} +14 -14
- package/dist/assets/{sso-popup-BjTl8T6g.js → sso-popup-aQr_3YWW.js} +1 -1
- package/dist/assets/{step-inspector-model-D6NC9QoX.js → step-inspector-model-gcGmLTWD.js} +1 -1
- package/dist/assets/{table-2-IUuOvuT8.js → table-2-Bx38akVK.js} +1 -1
- package/dist/assets/{timer-reset-D1H0hoMf.js → timer-reset-Z1XvH6K-.js} +1 -1
- package/dist/assets/{unlink-DTu1e00O.js → unlink-Dx9zRmL9.js} +1 -1
- package/dist/assets/{usb-CFK8z-TS.js → usb-_-9JyMyy.js} +1 -1
- package/dist/assets/{use-device-bound-caps-DS4FtJtN.js → use-device-bound-caps-BR0aNe6v.js} +1 -1
- package/dist/assets/{use-scenes-feed-CE-KFGxN.js → use-scenes-feed-CNxJKI3Y.js} +1 -1
- package/dist/assets/{use-stationary-objects-CFLRkxjx.js → use-stationary-objects-CFFufETF.js} +1 -1
- package/dist/assets/useEventInvalidation-yyadLjpT.js +1 -0
- package/dist/assets/{useNodeUrlSelection-DytighTL.js → useNodeUrlSelection-zNi606-l.js} +1 -1
- package/dist/assets/user-round-BnFLdVEf.js +1 -0
- package/dist/assets/{user-x-KWsBR0tG.js → user-x-DCKuWnFc.js} +1 -1
- package/dist/assets/{variable-BG_qKWYf.js → variable-pzTTvzbo.js} +1 -1
- package/dist/assets/{video-D0guHpd1.js → video-Dn2Lqozt.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-FCSZ5q7m.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-o917suSb.js} +2 -2
- package/dist/index.html +14 -14
- package/dist/server/addon.js +9 -2
- package/package.json +1 -1
- package/dist/assets/Addons-DRU_qk60.js +0 -5
- package/dist/assets/IntegrationDetail-CYhU0hEL.js +0 -1
- package/dist/assets/Pipeline-BT9k34b_.js +0 -1
- package/dist/assets/Recordings-Dl-l1Vzi.js +0 -1
- package/dist/assets/RemoteGrid-CF92aN64.js +0 -1
- package/dist/assets/SessionsList-84zwfhuD.js +0 -2
- package/dist/assets/Templates-D0V7IdcS.js +0 -1
- package/dist/assets/circle-slash-pdaivo-U.js +0 -1
- package/dist/assets/crop-CZJDrMcX.js +0 -1
- package/dist/assets/device-picker-model-2dkiqOI6.js +0 -1
- package/dist/assets/icons-BSJCF6qM.js +0 -1
- package/dist/assets/index-CyqhCHax.css +0 -2
- package/dist/assets/mount-2dkiqOI6.js +0 -1
- package/dist/assets/remoteEntry-CD4F7fE2.js +0 -1
- package/dist/assets/shapes-D-IaC6en.js +0 -1
- package/dist/assets/useEventInvalidation-2dkiqOI6.js +0 -1
- package/dist/assets/user-round-BSVSJsjB.js +0 -1
|
@@ -1 +1 @@
|
|
|
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{Ci as d,D as f,Di as p,Dn as m,Gr as h,Ht as g,Mn as _,Oi as v,Si as y,_n as b,cr as x,ct as S,dt as C,gn as w,ki as ee,on as te,ot as T,pn as ne,pr as re,st as ie,ur as ae,xr as oe,zt as se}from"./player-overlays-DpZIxQHp.js";import{Di as ce}from"./client-BvflqtP1.js";import{i as le}from"./video-D0guHpd1.js";import{t as E}from"./key-round-pNw827HU.js";import{An as ue,Cr as de,Dn as fe,Er as pe,Gn as me,Gs as he,Hs as ge,Jn as D,Js as _e,Kn as O,Ks as ve,Ku as ye,Pr as be,Qs as xe,Sr as k,Tr as A,Us as j,Uu as M,Ws as Se,Xs as Ce,Ys as we,Yu as Te,Zs as Ee,af as De,br as Oe,fi as N,ii as P,jd as F,kn as I,kr as ke,qd as L,qn as Ae,qs as je,wr as Me,xn as R,xr as Ne,zd as z}from"./src-KDhMZ5Ob.js";import{t as B}from"./i18n-Bg2ooh3q.js";import{t as Pe}from"./Trans-Bsz5Pghy.js";import{t as V}from"./useTranslation-BJr-n0es.js";import{b as Fe,et as Ie,w as Le}from"./index-DGvsu0ui.js";import{t as Re}from"./AdminSectionedPage-Dv8ahC-U.js";import{t as H}from"./AdminPage-DmkuRREx.js";import{t as ze}from"./NodeAddonsSettingsPanel-Chb7RIE6.js";import{t as Be}from"./AddonAssetIcon-B1rn0DLw.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(re,{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(U,{entry:t,actions:n,activeProvider:s,isPending:c}):r(We,{entry:t,actions:n,isPending:c})]})}function U({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(y,{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 We({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 W({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 Ge=[`capabilities`,`listCapabilities`];function Ke(e){return e===`singleton`||e===`collection`}function qe(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:qe(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=C(),[s,c]=a(null),[u,f]=a(null),p=o({queryKey:Ge,queryFn:()=>i.trpcClient.capabilities.listCapabilities.query()}),m=t(()=>{let e=(p.data??[]).flatMap(e=>Ke(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]},[p.data]),h=t(()=>m.filter(e=>e.mode===`singleton`),[m]),g=t(()=>m.filter(e=>e.mode===`collection`),[m]),_=l({mutationFn:e=>i.trpcClient.capabilities.setActiveSingleton.mutate({capability:e.capName,addonId:e.addonId}),onMutate:e=>{c(e.capName),f(null)},onSuccess:async(e,t)=>{f({kind:`success`,message:n(`system.capabilities.isNowActive`,`{{capName}} → {{addonId}} is now active.`,{capName:t.capName,addonId:t.addonId})}),await p.refetch()},onError:(e,t)=>{f({kind:`error`,message:n(`system.capabilities.failedToSet`,{cap:t.capName,error:e instanceof Error?e.message:n(`common.unknownError`)})})},onSettled:()=>c(null)}),v=l({mutationFn:e=>i.trpcClient.capabilities.setActiveSingleton.mutate({capability:e.capName,addonId:e.addonId,nodeId:e.nodeId}),onMutate:e=>{c(e.capName),f(null)},onSuccess:async(e,t)=>{f({kind:`success`,message:`${t.capName} @ ${t.nodeId} → ${t.addonId}.`}),await p.refetch()},onError:(e,t)=>{f({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)}),b=l({mutationFn:e=>i.trpcClient.capabilities.clearSingletonNodeOverride.mutate({capability:e.capName,nodeId:e.nodeId}),onMutate:e=>{c(e.capName),f(null)},onSuccess:async(e,t)=>{f({kind:`success`,message:n(`system.capabilities.nowInheritsTheGlobalDefault`,`{{capName}} @ {{nodeId}} now inherits the global default.`,{capName:t.capName,nodeId:t.nodeId})}),await p.refetch()},onError:(e,t)=>{f({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)}),x=l({mutationFn:e=>i.trpcClient.capabilities.setCollectionEnabledProviders.mutate({capability:e.capName,enabledAddonIds:[...e.enabledAddonIds]}),onMutate:e=>{c(e.capName),f(null)},onSuccess:async(e,t)=>{f({kind:`success`,message:n(`system.capabilities.providerSEnabled`,`{{capName}}: {{length}} provider(s) enabled.`,{capName:t.capName,length:t.enabledAddonIds.length})}),await p.refetch()},onError:(e,t)=>{f({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)=>_.mutate({capName:e,addonId:t}),onSelectNodeSingleton:(e,t,n)=>v.mutate({capName:e,nodeId:t,addonId:n}),onClearNodeSingleton:(e,t)=>b.mutate({capName:e,nodeId:t}),onToggleCollection:(e,t)=>x.mutate({capName:e,enabledAddonIds:t}),pendingCapability:s};return e(H,{embedded:!0,icon:te,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(y,{className:`h-3.5 w-3.5 shrink-0`}):r(d,{className:`h-3.5 w-3.5 shrink-0`}),r(`span`,{children:u.message})]}),p.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`})}),p.isError&&!p.isLoading&&r(be,{title:n(`system.capabilities.failedToLoadCapabilities`,`Failed to load capabilities`),message:p.error instanceof Error?p.error.message:n(`system.capabilities.unknownError`,`Unknown error`),onRetry:()=>void p.refetch()}),!p.isLoading&&!p.isError&&m.length===0&&r(`div`,{className:`text-xs text-foreground-subtle text-center py-16`,children:n(`system.capabilities.noCapabilitiesRegistered`,`No capabilities registered.`)}),!p.isLoading&&!p.isError&&m.length>0&&e(`div`,{className:`space-y-6`,children:[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.singletonPickOneProvider`,`Singleton — pick one provider`)}),r(W,{capabilities:h,actions:S})]}),g.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(W,{capabilities:g,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:L(`flex min-w-0 items-center gap-0.5`,a),children:[r(`span`,{className:L(`min-w-0 truncate font-mono`,o),title:s,children:t}),r(R,{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(N,{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(I,{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(P,{size:`sm`,variant:`outline`,"aria-label":i(`secrets.keychainAuditTable.previousPage`,`Previous page`),disabled:u===0,onClick:()=>s(u-1),children:r(v,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),e(`span`,{className:`tabular-nums`,children:[u+1,` / `,l]}),r(P,{size:`sm`,variant:`outline`,"aria-label":i(`secrets.keychainAuditTable.nextPage`,`Next page`),disabled:u>=l-1,onClick:()=>s(u+1),children:r(p,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]})]})]})}function rt(e,t){switch(e){case`locked`:return r(P,{size:`sm`,variant:`danger`,disabled:t.busy,onClick:t.onReset,children:B.t(`secrets.keychainNoticeContent.resetKeychain`,`Reset keychain`)});case`reset`:return r(P,{size:`sm`,variant:`outline`,disabled:t.busy,onClick:t.onAcknowledgeReset,children:B.t(`secrets.keychainNoticeContent.dismiss`,`Dismiss`)});case`recovery-key`:return r(P,{size:`sm`,variant:`outline`,disabled:t.busy,onClick:t.onDownload,children:B.t(`secrets.keychainNoticeContent.download`,`Download`)});case`rotation-pending`:return r(P,{size:`sm`,variant:`outline`,disabled:t.busy,onClick:t.onRotate,children:B.t(`secrets.keychainNoticeContent.rotate`,`Rotate`)});case`orphans`:return r(P,{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(Pe,{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:le,text:`text-danger`,border:`border-danger/40`},warning:{icon:se,text:`text-warning`,border:`border-warning/40`},info:{icon:oe,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:L(`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(P,{size:`sm`,variant:`ghost`,"aria-expanded":s,onClick:()=>c(e=>!e),children:[r(ee,{className:L(`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:L(`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(P,{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(fe,{headingId:`keychain-status`,title:s(`secrets.keychainStatusCard.keychain`,`Keychain`),icon:E,actions:e(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[t.retiredWraps>0&&r(P,{size:`sm`,variant:`ghost`,disabled:n||c,onClick:o,children:s(`secrets.keychainStatusCard.purge`,{count:t.retiredWraps})}),r(P,{size:`sm`,variant:`outline`,disabled:n||c,onClick:a,children:s(`secrets.keychainStatusCard.rotateKey`,`Rotate key`)}),r(P,{size:`sm`,variant:`outline`,disabled:n||c,onClick:i,children:s(`secrets.keychainStatusCard.downloadRecoveryKey`,`Download recovery key`)})]}),children:e(`dl`,{className:`${f} 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(N,{variant:`danger`,className:`gap-1`,children:[r(ae,{className:`h-3 w-3`,"aria-hidden":!0}),s(`secrets.keychainStatusCard.locked`,`Locked`)]}):e(N,{variant:`success`,className:`gap-1`,children:[r(ne,{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(R,{value:t.fingerprint,srLabel:`fingerprint`})]})}),r(Y,{label:s(`secrets.keychainStatusCard.recoveryKey`,`Recovery key`),children:t.recoveryKeyDownloadedAt===null?r(N,{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(F);i(()=>{if(t===null)return;let e=Date.now();c(F);let r=setTimeout(n,F),i=setInterval(()=>c(Math.max(0,F-(Date.now()-e))),ft);return()=>{clearTimeout(r),clearInterval(i)}},[t,n]);let l=Math.ceil(s/1e3);return r(Oe,{open:t!==null,onOpenChange:e=>!e&&n(),children:r(k,{width:`lg`,placement:`sheet-on-mobile`,scroll:`body`,children:t!==null&&e(u,{children:[e(A,{children:[r(pe,{className:`break-all`,children:t.entry.fieldPath}),e(de,{className:`break-all`,children:[t.entry.owner,` · `,t.entry.scope]})]}),r(Ne,{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(Me,{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(R,{value:t.value,label:o(`common.copy`,`Copy`),srLabel:`revealed value`}),r(P,{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(P,{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(P,{size:`sm`,variant:`outline`,className:`ml-auto`,disabled:c||l,onClick:()=>s(d),children:[r(g,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),n(`secrets.secretsTableState.deleteOrphans`,{count:d.length})]})]}),r(I,{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?b:_,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(N,{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(P,{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(h,{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=ie(),r=T(),i=S(),a=Se(),o=Ee(),s=je(),c=_e(),l=ge(),u=j(),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:ce})})},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=xe({}),s=ve({}),c=he({limit:500}),l=we({}),u=Ce(),d=T(),[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:Le(e),variant:`danger`})}},w=n(()=>_(null),[]);return e(H,{embedded:!0,icon:E,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(me,{value:f,onValueChange:e=>p(e===`audit`?`audit`:`values`),children:[e(Ae,{children:[r(D,{value:`values`,children:i(`admin.system.secrets.storedValues`,`Stored values`)}),r(D,{value:`audit`,children:i(`admin.system.secrets.audit`,`Audit`)})]}),r(O,{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(O,{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=Te(),l=M(),[u,d]=a(``),[f,p]=a(``),[h,g]=a(null),_=o.data?.location??null;i(()=>{d(_===null?``:$(_.latitude)),p(_===null?``:$(_.longitude))},[_]);let v=async()=>{await n.invalidateQueries({queryKey:St})},y=async e=>{e.preventDefault();let t=Number(u),n=Number(f);if(u.trim()===``||f.trim()===``){g(`Enter both a latitude and a longitude, or press Clear.`);return}if(!Number.isFinite(t)||t<-90||t>90){g(`Latitude must be between -90 and 90 decimal degrees.`);return}if(!Number.isFinite(n)||n<-180||n>180){g(`Longitude must be between -180 and 180 decimal degrees.`);return}g(null),await s.mutateAsync({latitude:t,longitude:n}),await v()},b=async()=>{g(null),await s.mutateAsync(null),await v()},S=async()=>{g(null),await l.mutateAsync(),await v()},C=s.isPending||l.isPending||o.isLoading;return e(ke,{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(x,{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`)})})]}),_===null?r(N,{variant:`warning`,children:t(`settings.siteLocationCard.notConfigured`,`Not configured`)}):r(N,{variant:_.source===`operator-set`?`success`:`info`,children:_.source===`operator-set`?t(`settings.siteLocationCard.setByYou`,`Set by you`):t(`settings.siteLocationCard.derivedFromIp`,`Derived from IP`)})]}),_?.label!==void 0&&_.label!==``?r(`p`,{className:`text-xs text-muted-foreground`,children:t(`settings.siteLocationCard.detectedNear`,{place:_.label})}):null,_===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:y,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(z,{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(z,{className:`w-40`,value:f,inputMode:`decimal`,placeholder:`14.268100`,onChange:e=>p(e.target.value),"aria-label":t(`settings.siteLocationCard.longitude`,`Longitude`)})]}),r(P,{type:`submit`,disabled:C,children:t(`common.save`,`Save`)}),e(P,{type:`button`,variant:`ghost`,disabled:C,onClick:S,children:[r(m,{className:`h-3.5 w-3.5 mr-1`}),t(`settings.siteLocationCard.detectFromIp`,`Detect from IP`)]}),_===null?null:r(P,{type:`button`,variant:`ghost`,disabled:C,onClick:b,children:t(`settings.siteLocationCard.clear`,`Clear`)})]}),h===null?null:r(`p`,{className:`text-xs text-danger`,children:h}),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}=De(),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(w,{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=Fe(`/system/settings`,{t:e,isAdmin:!0})??{icon:w,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
|
+
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{Ci as d,D as f,Di as p,Dn as m,Gr as h,Ht as g,Mn as _,Oi as v,Si as y,_n as b,cr as x,ct as S,dt as C,gn as w,ki as ee,on as te,ot as T,pn as ne,pr as re,st as ie,ur as ae,xr as oe,zt as se}from"./player-overlays-D0HsTHUG.js";import{Di as ce}from"./client-3nhKn2xf.js";import{i as le}from"./video-Dn2Lqozt.js";import{t as E}from"./key-round-DE61GWtp.js";import{An as ue,Cr as de,Dn as fe,Er as pe,Gn as me,Gs as he,Hs as ge,Jn as D,Js as _e,Kn as O,Ks as ve,Ku as ye,Pr as be,Qs as xe,Sr as k,Tr as A,Us as j,Uu as M,Ws as Se,Xs as Ce,Ys as we,Yu as Te,Zs as Ee,br as De,fi as N,ii as P,jd as F,kn as I,kr as Oe,of as ke,qd as L,qn as Ae,qs as je,wr as Me,xn as R,xr as Ne,zd as z}from"./src-D1j-98hX.js";import{t as B}from"./i18n-BTbD-8vc.js";import{t as Pe}from"./Trans-DlVN2FAm.js";import{t as V}from"./useTranslation-BJr-n0es.js";import{b as Fe,et as Ie,w as Le}from"./index-BoU7NTPo.js";import{t as Re}from"./AdminSectionedPage-CKX5JkdQ.js";import{t as H}from"./AdminPage-D2S65e6Q.js";import{t as ze}from"./NodeAddonsSettingsPanel-DYEAw_0K.js";import{t as Be}from"./AddonAssetIcon-Cp5zLEvD.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(re,{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(U,{entry:t,actions:n,activeProvider:s,isPending:c}):r(We,{entry:t,actions:n,isPending:c})]})}function U({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(y,{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 We({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 W({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 Ge=[`capabilities`,`listCapabilities`];function Ke(e){return e===`singleton`||e===`collection`}function qe(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:qe(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=C(),[s,c]=a(null),[u,f]=a(null),p=o({queryKey:Ge,queryFn:()=>i.trpcClient.capabilities.listCapabilities.query()}),m=t(()=>{let e=(p.data??[]).flatMap(e=>Ke(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]},[p.data]),h=t(()=>m.filter(e=>e.mode===`singleton`),[m]),g=t(()=>m.filter(e=>e.mode===`collection`),[m]),_=l({mutationFn:e=>i.trpcClient.capabilities.setActiveSingleton.mutate({capability:e.capName,addonId:e.addonId}),onMutate:e=>{c(e.capName),f(null)},onSuccess:async(e,t)=>{f({kind:`success`,message:n(`system.capabilities.isNowActive`,`{{capName}} → {{addonId}} is now active.`,{capName:t.capName,addonId:t.addonId})}),await p.refetch()},onError:(e,t)=>{f({kind:`error`,message:n(`system.capabilities.failedToSet`,{cap:t.capName,error:e instanceof Error?e.message:n(`common.unknownError`)})})},onSettled:()=>c(null)}),v=l({mutationFn:e=>i.trpcClient.capabilities.setActiveSingleton.mutate({capability:e.capName,addonId:e.addonId,nodeId:e.nodeId}),onMutate:e=>{c(e.capName),f(null)},onSuccess:async(e,t)=>{f({kind:`success`,message:`${t.capName} @ ${t.nodeId} → ${t.addonId}.`}),await p.refetch()},onError:(e,t)=>{f({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)}),b=l({mutationFn:e=>i.trpcClient.capabilities.clearSingletonNodeOverride.mutate({capability:e.capName,nodeId:e.nodeId}),onMutate:e=>{c(e.capName),f(null)},onSuccess:async(e,t)=>{f({kind:`success`,message:n(`system.capabilities.nowInheritsTheGlobalDefault`,`{{capName}} @ {{nodeId}} now inherits the global default.`,{capName:t.capName,nodeId:t.nodeId})}),await p.refetch()},onError:(e,t)=>{f({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)}),x=l({mutationFn:e=>i.trpcClient.capabilities.setCollectionEnabledProviders.mutate({capability:e.capName,enabledAddonIds:[...e.enabledAddonIds]}),onMutate:e=>{c(e.capName),f(null)},onSuccess:async(e,t)=>{f({kind:`success`,message:n(`system.capabilities.providerSEnabled`,`{{capName}}: {{length}} provider(s) enabled.`,{capName:t.capName,length:t.enabledAddonIds.length})}),await p.refetch()},onError:(e,t)=>{f({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)=>_.mutate({capName:e,addonId:t}),onSelectNodeSingleton:(e,t,n)=>v.mutate({capName:e,nodeId:t,addonId:n}),onClearNodeSingleton:(e,t)=>b.mutate({capName:e,nodeId:t}),onToggleCollection:(e,t)=>x.mutate({capName:e,enabledAddonIds:t}),pendingCapability:s};return e(H,{embedded:!0,icon:te,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(y,{className:`h-3.5 w-3.5 shrink-0`}):r(d,{className:`h-3.5 w-3.5 shrink-0`}),r(`span`,{children:u.message})]}),p.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`})}),p.isError&&!p.isLoading&&r(be,{title:n(`system.capabilities.failedToLoadCapabilities`,`Failed to load capabilities`),message:p.error instanceof Error?p.error.message:n(`system.capabilities.unknownError`,`Unknown error`),onRetry:()=>void p.refetch()}),!p.isLoading&&!p.isError&&m.length===0&&r(`div`,{className:`text-xs text-foreground-subtle text-center py-16`,children:n(`system.capabilities.noCapabilitiesRegistered`,`No capabilities registered.`)}),!p.isLoading&&!p.isError&&m.length>0&&e(`div`,{className:`space-y-6`,children:[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.singletonPickOneProvider`,`Singleton — pick one provider`)}),r(W,{capabilities:h,actions:S})]}),g.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(W,{capabilities:g,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:L(`flex min-w-0 items-center gap-0.5`,a),children:[r(`span`,{className:L(`min-w-0 truncate font-mono`,o),title:s,children:t}),r(R,{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(N,{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(I,{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(P,{size:`sm`,variant:`outline`,"aria-label":i(`secrets.keychainAuditTable.previousPage`,`Previous page`),disabled:u===0,onClick:()=>s(u-1),children:r(v,{className:`h-3.5 w-3.5`,"aria-hidden":!0})}),e(`span`,{className:`tabular-nums`,children:[u+1,` / `,l]}),r(P,{size:`sm`,variant:`outline`,"aria-label":i(`secrets.keychainAuditTable.nextPage`,`Next page`),disabled:u>=l-1,onClick:()=>s(u+1),children:r(p,{className:`h-3.5 w-3.5`,"aria-hidden":!0})})]})]})]})}function rt(e,t){switch(e){case`locked`:return r(P,{size:`sm`,variant:`danger`,disabled:t.busy,onClick:t.onReset,children:B.t(`secrets.keychainNoticeContent.resetKeychain`,`Reset keychain`)});case`reset`:return r(P,{size:`sm`,variant:`outline`,disabled:t.busy,onClick:t.onAcknowledgeReset,children:B.t(`secrets.keychainNoticeContent.dismiss`,`Dismiss`)});case`recovery-key`:return r(P,{size:`sm`,variant:`outline`,disabled:t.busy,onClick:t.onDownload,children:B.t(`secrets.keychainNoticeContent.download`,`Download`)});case`rotation-pending`:return r(P,{size:`sm`,variant:`outline`,disabled:t.busy,onClick:t.onRotate,children:B.t(`secrets.keychainNoticeContent.rotate`,`Rotate`)});case`orphans`:return r(P,{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(Pe,{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:le,text:`text-danger`,border:`border-danger/40`},warning:{icon:se,text:`text-warning`,border:`border-warning/40`},info:{icon:oe,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:L(`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(P,{size:`sm`,variant:`ghost`,"aria-expanded":s,onClick:()=>c(e=>!e),children:[r(ee,{className:L(`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:L(`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(P,{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(fe,{headingId:`keychain-status`,title:s(`secrets.keychainStatusCard.keychain`,`Keychain`),icon:E,actions:e(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[t.retiredWraps>0&&r(P,{size:`sm`,variant:`ghost`,disabled:n||c,onClick:o,children:s(`secrets.keychainStatusCard.purge`,{count:t.retiredWraps})}),r(P,{size:`sm`,variant:`outline`,disabled:n||c,onClick:a,children:s(`secrets.keychainStatusCard.rotateKey`,`Rotate key`)}),r(P,{size:`sm`,variant:`outline`,disabled:n||c,onClick:i,children:s(`secrets.keychainStatusCard.downloadRecoveryKey`,`Download recovery key`)})]}),children:e(`dl`,{className:`${f} 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(N,{variant:`danger`,className:`gap-1`,children:[r(ae,{className:`h-3 w-3`,"aria-hidden":!0}),s(`secrets.keychainStatusCard.locked`,`Locked`)]}):e(N,{variant:`success`,className:`gap-1`,children:[r(ne,{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(R,{value:t.fingerprint,srLabel:`fingerprint`})]})}),r(Y,{label:s(`secrets.keychainStatusCard.recoveryKey`,`Recovery key`),children:t.recoveryKeyDownloadedAt===null?r(N,{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(F);i(()=>{if(t===null)return;let e=Date.now();c(F);let r=setTimeout(n,F),i=setInterval(()=>c(Math.max(0,F-(Date.now()-e))),ft);return()=>{clearTimeout(r),clearInterval(i)}},[t,n]);let l=Math.ceil(s/1e3);return r(De,{open:t!==null,onOpenChange:e=>!e&&n(),children:r(k,{width:`lg`,placement:`sheet-on-mobile`,scroll:`body`,children:t!==null&&e(u,{children:[e(A,{children:[r(pe,{className:`break-all`,children:t.entry.fieldPath}),e(de,{className:`break-all`,children:[t.entry.owner,` · `,t.entry.scope]})]}),r(Ne,{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(Me,{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(R,{value:t.value,label:o(`common.copy`,`Copy`),srLabel:`revealed value`}),r(P,{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(P,{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(P,{size:`sm`,variant:`outline`,className:`ml-auto`,disabled:c||l,onClick:()=>s(d),children:[r(g,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),n(`secrets.secretsTableState.deleteOrphans`,{count:d.length})]})]}),r(I,{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?b:_,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(N,{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(P,{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(h,{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=ie(),r=T(),i=S(),a=Se(),o=Ee(),s=je(),c=_e(),l=ge(),u=j(),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:ce})})},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=xe({}),s=ve({}),c=he({limit:500}),l=we({}),u=Ce(),d=T(),[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:Le(e),variant:`danger`})}},w=n(()=>_(null),[]);return e(H,{embedded:!0,icon:E,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(me,{value:f,onValueChange:e=>p(e===`audit`?`audit`:`values`),children:[e(Ae,{children:[r(D,{value:`values`,children:i(`admin.system.secrets.storedValues`,`Stored values`)}),r(D,{value:`audit`,children:i(`admin.system.secrets.audit`,`Audit`)})]}),r(O,{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(O,{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=Te(),l=M(),[u,d]=a(``),[f,p]=a(``),[h,g]=a(null),_=o.data?.location??null;i(()=>{d(_===null?``:$(_.latitude)),p(_===null?``:$(_.longitude))},[_]);let v=async()=>{await n.invalidateQueries({queryKey:St})},y=async e=>{e.preventDefault();let t=Number(u),n=Number(f);if(u.trim()===``||f.trim()===``){g(`Enter both a latitude and a longitude, or press Clear.`);return}if(!Number.isFinite(t)||t<-90||t>90){g(`Latitude must be between -90 and 90 decimal degrees.`);return}if(!Number.isFinite(n)||n<-180||n>180){g(`Longitude must be between -180 and 180 decimal degrees.`);return}g(null),await s.mutateAsync({latitude:t,longitude:n}),await v()},b=async()=>{g(null),await s.mutateAsync(null),await v()},S=async()=>{g(null),await l.mutateAsync(),await v()},C=s.isPending||l.isPending||o.isLoading;return e(Oe,{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(x,{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`)})})]}),_===null?r(N,{variant:`warning`,children:t(`settings.siteLocationCard.notConfigured`,`Not configured`)}):r(N,{variant:_.source===`operator-set`?`success`:`info`,children:_.source===`operator-set`?t(`settings.siteLocationCard.setByYou`,`Set by you`):t(`settings.siteLocationCard.derivedFromIp`,`Derived from IP`)})]}),_?.label!==void 0&&_.label!==``?r(`p`,{className:`text-xs text-muted-foreground`,children:t(`settings.siteLocationCard.detectedNear`,{place:_.label})}):null,_===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:y,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(z,{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(z,{className:`w-40`,value:f,inputMode:`decimal`,placeholder:`14.268100`,onChange:e=>p(e.target.value),"aria-label":t(`settings.siteLocationCard.longitude`,`Longitude`)})]}),r(P,{type:`submit`,disabled:C,children:t(`common.save`,`Save`)}),e(P,{type:`button`,variant:`ghost`,disabled:C,onClick:S,children:[r(m,{className:`h-3.5 w-3.5 mr-1`}),t(`settings.siteLocationCard.detectFromIp`,`Detect from IP`)]}),_===null?null:r(P,{type:`button`,variant:`ghost`,disabled:C,onClick:b,children:t(`settings.siteLocationCard.clear`,`Clear`)})]}),h===null?null:r(`p`,{className:`text-xs text-danger`,children:h}),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}=ke(),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(w,{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=Fe(`/system/settings`,{t:e,isAdmin:!0})??{icon:w,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};
|
|
@@ -0,0 +1 @@
|
|
|
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,o as c,q 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{Hn as d,Ht as f,In as p,It as m,aa as h,ai as g,ia as _,ot as v,ra as y,st as b,ta as x,vn as S}from"./player-overlays-D0HsTHUG.js";import{Dr as C,Or as w,Sr as T,ar as E,br as ee,ir as D,kr as O,rr as te,xr as ne,yi as re,yr as ie}from"./client-3nhKn2xf.js";import{u as ae}from"./video-Dn2Lqozt.js";import{n as oe,t as se}from"./shapes-CuqJ7CA_.js";import{t as ce}from"./unlink-Dx9zRmL9.js";import{$u as le,An as ue,Bd as k,Er as de,Et as A,Fr as fe,Lr as j,Pd as M,Pr as pe,Qu as me,Sr as he,Tr as ge,Vd as _e,Xn as ve,Xu as ye,Zd as be,Zu as xe,an as N,br as Se,fi as Ce,hu as we,ii as P,kn as Te,si as Ee,wr as De,wt as Oe,xr as ke,zd as F}from"./src-D1j-98hX.js";import{t as I}from"./useTranslation-BJr-n0es.js";import{t as Ae}from"./AdminPage-D2S65e6Q.js";import{C as L,D as R,E as je,S as Me,T as Ne,_ as Pe,a as Fe,b as Ie,c as Le,d as z,f as Re,g as ze,h as B,i as Be,l as Ve,m as He,n as Ue,o as We,p as Ge,r as Ke,s as V,t as qe,u as Je,v as Ye,w as Xe,x as Ze,y as Qe}from"./RemoteGrid-CjSx3Aah.js";s();function $e(e){return{past:[],present:e,future:[]}}var et=e=>e.past.length>0,tt=e=>e.future.length>0;function nt(e,t){switch(t.type){case`edit`:return Object.is(t.value,e.present)?e:{past:[...e.past,e.present].slice(-100),present:t.value,future:[]};case`undo`:{let t=e.past.at(-1);return t===void 0?e:{past:e.past.slice(0,-1),present:t,future:[e.present,...e.future]}}case`redo`:{let[t,...n]=e.future;return t===void 0?e:{past:[...e.past,e.present],present:t,future:n}}}}var H=12,U=4,W=3,G=(e,t,n,r,i,a={})=>({id:e,role:t,row:n,col:r,colSpan:i,...a}),K=e=>`custom:${e}`;function q(e,t,n=[]){return t.map((t,r)=>G(`r${e}c${r}`,t,e,r*U,U,{...n[r]===void 0?{}:{label:n[r]}}))}function J(e){return[G(`up`,`up`,e,U,U),G(`left`,`left`,e+1,0,U),G(`ok`,`ok`,e+1,U,U),G(`right`,`right`,e+1,2*U,U),G(`down`,`down`,e+2,U,U)]}function rt(e,t){return t.map((t,n)=>G(`app_${t}`,K(`app_${t}`),e,n*W,W,{icon:Ke(t)}))}var Y=(e,t)=>({id:`core:section-divider`,row:e,col:0,options:{scale:{cols:H},title:t}});function it(e,t,n){let r=V(H,e,t);for(let e of n){let t=E(r,te(e.id),{row:e.row,col:e.col},e.options);if(!t.ok)throw Error(`preset component ${e.id} at ${e.row}:${e.col}: ${t.reason}`);r=t.layout}return r}var X={scale:{cols:U}},at={scale:{rows:2,cols:U}},ot=(e,t,n,r)=>({idSuffix:e,row:3,col:t,rowSpan:1,colSpan:1,role:n,label:r}),st=it(23,[G(`input`,`input`,0,2*U,U),G(`mute`,`mute`,7,U,U),G(`ch_list`,K(`ch_list`),8,U,U,{label:`CH LIST`}),G(`settings`,K(`settings`),9,U,U,{label:`Settings`}),G(`home`,`home`,10,U,U),G(`guide`,`guide`,12,0,U),G(`e_manual`,K(`e_manual`),12,U,U,{label:`e-Manual`}),G(`info`,`info`,12,2*U,U),G(`back`,`back`,17,0,U),G(`exit`,`exit`,17,2*U,U),G(`color_a`,K(`color_a`),19,0,W,{label:`A`}),G(`color_b`,K(`color_b`),19,W,W,{label:`B`}),G(`color_c`,K(`color_c`),19,2*W,W,{label:`C`}),G(`color_d`,K(`color_d`),19,3*W,W,{label:`D`}),G(`pic_size`,K(`pic_size`),20,0,U,{label:`P.SIZE`}),G(`picture`,K(`picture`),20,U,U,{label:`Picture`}),G(`ad_subt`,K(`ad_subt`),20,2*U,U,{label:`AD/SUBT`})],[{id:`core:power`,row:0,col:0,options:{scale:{cols:2}}},Y(1,`Numbers`),{id:`core:keypad`,row:2,col:0,options:{scale:X.scale,extras:[ot(`ttx`,0,K(`ttx_mix`),`TTX/MIX`),ot(`prech`,2,K(`pre_ch`),`PRE-CH`)]}},Y(6,`Volume and channels`),{id:`core:rocker-volume-v`,row:7,col:0,options:at},{id:`core:rocker-channel-v`,row:7,col:2*U,options:at},Y(11,`Menus`),Y(13,`Navigation`),{id:`core:dpad`,row:14,col:0,options:X},Y(18,`Colour and picture`),Y(21,`Playback`),{id:`core:media-transport`,row:22,col:1,options:{scale:{cols:2}}}]),ct=[`netflix`,`youtube`,`primevideo`,`disneyplus`,`dazn`,`raiplay`],lt=it(20,[G(`input`,`input`,0,2*U,U),...q(4,[`menu`,`home`,`exit`]),G(`guide`,`guide`,6,0,U),G(`info`,`info`,6,2*U,U),G(`back`,`back`,10,0,U),G(`play_pause`,`play_pause`,10,2*U,U),G(`mute`,`mute`,12,U,U),G(`ch_list`,K(`ch_list`),13,U,U,{label:`CH.LIST`}),G(`subtitle`,K(`subtitle`),14,0,6,{label:`Subtitle`}),G(`text`,K(`text`),14,6,6,{label:`Text`})],[{id:`core:power`,row:0,col:0,options:{scale:{cols:2}}},{id:`core:panel`,row:1,col:0,options:{scale:X.scale,title:`Apps`,extras:ct.map((e,t)=>({idSuffix:e,row:Math.floor(t/3),col:t%3,rowSpan:1,colSpan:1,role:K(`app_${e}`),icon:Ke(e)}))}},{id:`core:colour-keys`,row:3,col:0,options:{scale:{cols:W}}},Y(5,`Navigation`),{id:`core:dpad`,row:7,col:0,options:X},Y(11,`Volume and channels`),{id:`core:rocker-volume-v`,row:12,col:0,options:X},{id:`core:rocker-channel-v`,row:12,col:2*U,options:X},Y(15,`Numbers`),{id:`core:keypad`,row:16,col:0,options:X}]),ut=V(H,8,[G(`power`,`power`,0,0,U),G(`input`,`input`,0,2*U,U),...J(1),...q(4,[`back`,`home`,`play_pause`]),G(`vol_up`,`volume_up`,5,0,U),G(`mute`,`mute`,5,U,U,{rowSpan:2}),G(`ch_up`,`channel_up`,5,2*U,U),G(`vol_down`,`volume_down`,6,0,U),G(`ch_down`,`channel_down`,6,2*U,U),...rt(7,[`netflix`,`primevideo`,`disneyplus`,`youtube`])]),dt=V(H,9,[G(`power`,`power`,0,0,U),G(`input`,`input`,0,2*U,U),G(`settings`,K(`settings`),1,0,U,{label:`Settings`}),G(`up`,`up`,1,U,U),G(`guide`,`guide`,1,2*U,U),G(`left`,`left`,2,0,U),G(`ok`,`ok`,2,U,U),G(`right`,`right`,2,2*U,U),G(`back`,`back`,3,0,U),G(`down`,`down`,3,U,U),G(`home`,`home`,3,2*U,U),G(`vol_up`,`volume_up`,4,0,U,{rowSpan:2}),G(`vol_down`,`volume_down`,6,0,U,{rowSpan:2}),G(`mute`,`mute`,4,U,U),G(`info`,`info`,5,U,U),G(`menu`,`menu`,6,U,U),G(`exit`,`exit`,7,U,U),G(`ch_up`,`channel_up`,4,2*U,U,{rowSpan:2}),G(`ch_down`,`channel_down`,6,2*U,U,{rowSpan:2}),...rt(8,[`netflix`,`primevideo`,`disneyplus`,`youtube`])]),ft=V(H,8,[G(`assistant`,K(`assistant`),0,0,U,{label:`Assistant`}),G(`input`,`input`,0,U,U),G(`power`,`power`,0,2*U,U),...J(1),...q(4,[`back`,`home`,`guide`]),G(`vol_up`,`volume_up`,5,0,U),G(`mute`,`mute`,5,U,U),G(`ch_up`,`channel_up`,5,2*U,U),G(`vol_down`,`volume_down`,6,0,U),G(`play_pause`,`play_pause`,6,U,U),G(`ch_down`,`channel_down`,6,2*U,U),...rt(7,[`youtube`,`netflix`,`primevideo`,`disneyplus`])]),pt=V(H,7,[G(`siri`,K(`siri`),0,0,U,{label:`Siri`}),G(`power`,`power`,0,2*U,U),...J(1),...q(4,[`back`,`play_pause`,`home`]),G(`vol_up`,`volume_up`,5,0,6),G(`vol_down`,`volume_down`,5,6,6),G(`mute`,`mute`,6,U,U)]),mt=[{id:`samsung-classic`,layout:st},{id:`hisense-vidaa`,layout:lt},{id:`samsung-smart`,layout:ut},{id:`lg-magic`,layout:dt},{id:`google-tv`,layout:ft},{id:`apple-tv`,layout:pt}];function ht(e){let t=mt.find(t=>t.id===e);return t===void 0?null:{...t.layout,buttons:t.layout.buttons.map(e=>({...e}))}}function gt(e){let t=new Map;for(let n of e)for(let e of n)t.has(e.id)||t.set(e.id,e);let n=[...t.values()];return[...n.filter(e=>e.id.startsWith(`core:`)),...n.filter(e=>!e.id.startsWith(`core:`))]}function _t(e,t){let n=e.nameI18n;return n===void 0?e.name:t.startsWith(`it`)?n.it:n.en}function vt(e){let t=E({columns:e.size.cols,rows:e.size.rows,buttons:[]},e,{row:0,col:0});return t.ok?t.layout:null}function yt(e,t,n,r){let i=t.trim().toLowerCase();return i===``?[...e]:e.filter(e=>_t(e,n).toLowerCase().includes(i)||r(e.category).toLowerCase().includes(i))}function bt(e,t){let n=D(e,t);return n!==null&&n>1}function xt(e,t,n={}){let r=n.fillWidth===!0?D(e,t):null,i=r===null||r<2?{}:{scale:{cols:r}};if(n.at!==void 0)return E(e,t,n.at,i);let a=E(e,t,{row:0,col:0},i);if(a.ok||a.reason===`outside`||a.reason===`too-many`)return a;for(let n=0;n<e.rows;n+=1)for(let r=0;r<e.columns;r+=1){let a=E(e,t,{row:n,col:r},i);if(a.ok)return a}return a}function St({open:t,grid:n,onOpenChange:r,onPick:a}){let{t:o,i18n:s}=I();return i(Se,{open:t,onOpenChange:r,children:e(he,{width:`lg`,placement:`sheet-on-mobile`,scroll:`body`,children:[i(ge,{children:i(de,{children:o(`remote.palette.title`)})}),i(ke,{children:t&&i(Ct,{grid:n,language:s.language,onPick:a})})]})})}function Ct({grid:t,language:r,onPick:a}){let{t:s}=I(),c=we({}),[l,u]=o(``),[d,f]=o(!1),[p,m]=o(null),h=e=>s(`remote.palette.category.${e}`,e),g=yt(n(()=>gt(c.data===void 0?[]:[c.data]),[c.data]),l,r,h),_=g.some(e=>bt(t,e));return c.isError?i(pe,{title:s(`remote.palette.errorTitle`),message:c.error.message,onRetry:()=>void c.refetch()}):c.data===void 0?e(`div`,{className:`grid gap-2 sm:grid-cols-2`,"data-testid":`palette-loading`,children:[i(j,{className:`h-24`}),i(j,{className:`h-24`}),i(j,{className:`h-24`}),i(j,{className:`h-24`})]}):e(`div`,{className:`space-y-3`,children:[e(`div`,{className:`relative`,children:[i(S,{className:`pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-foreground-subtle`,"aria-hidden":!0}),i(F,{value:l,className:`pl-8`,placeholder:s(`remote.palette.search`),"aria-label":s(`remote.palette.search`),onChange:e=>u(e.target.value),"data-testid":`palette-search`})]}),_&&e(`label`,{className:`flex items-center gap-2 text-xs text-foreground-muted`,children:[i(ve,{checked:d,onChange:e=>f(e.target.checked),"data-testid":`palette-fill-width`}),s(`remote.palette.fillWidth`)]}),p!==null&&i(`p`,{role:`status`,className:`text-xs text-success`,"data-testid":`palette-added`,children:s(`remote.palette.added`,{name:p})}),g.length===0?i(fe,{icon:se,title:s(`remote.palette.emptyTitle`),description:s(`remote.palette.emptyDescription`)}):i(`ul`,{className:`grid gap-2 sm:grid-cols-2`,"data-testid":`palette-list`,children:g.map(e=>i(`li`,{children:i(wt,{component:e,language:r,category:h(e.category),onPick:()=>{a(e,{fillWidth:d}),m(_t(e,r))}})},e.id))})]})}function wt({component:t,language:r,category:a,onPick:o}){let{t:s}=I(),c=n(()=>vt(t),[t]),l=_t(t,r);return e(`button`,{type:`button`,className:`flex h-full w-full items-center gap-3 rounded-lg border border-border bg-surface p-2 text-left hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary`,"data-testid":`palette-item-${t.id}`,onClick:o,children:[i(`span`,{className:`w-20 shrink-0`,children:c!==null&&i(qe,{grid:c,label:l,compact:!0})}),e(`span`,{className:`min-w-0`,children:[i(`span`,{className:`block truncate text-sm font-medium text-foreground`,children:l}),e(`span`,{className:`block truncate text-xs text-foreground-muted`,children:[a,` ·`,` `,s(`remote.palette.size`,{cols:t.size.cols,rows:t.size.rows})]})]})]})}function Z(e,t){let n=t.kind===`group`?z(e,t.id):e.buttons.find(e=>e.id===t.id);return n===void 0?void 0:{row:n.row,col:n.col,rowSpan:n.rowSpan,colSpan:n.colSpan}}function Tt(e,t,n,r,i){if(e.width<=0||e.height<=0)return{row:0,col:0};let a=Math.floor((n-e.left)/e.width*t.columns),o=(r-e.top)/e.height;if(i===void 0||i.length!==t.rows||o<0)return{col:a,row:Math.floor(o*t.rows)};let s=i.reduce((e,t)=>e+t,0),c=0;for(let[e,t]of i.entries())if(c+=t/s,o<c)return{col:a,row:e};return{col:a,row:Math.max(t.rows,Math.floor(o*t.rows))}}function Et(e,t,n){return{row:n.row-(t.row-e.row),col:n.col-(t.col-e.col)}}function Dt(e,t,n){return t.kind===`group`?Ye(e,t.id,n.row,n.col):Pe(e,t.id,n.row,n.col)}function Ot(e,t,n){let r=Z(e,t);if(r===void 0)return null;let i=Dt(e,t,n);return{rect:{...r,row:n.row,col:n.col},valid:i.status===`ok`,reason:i.status===`ok`?null:i.reason}}function kt(e){switch(e){case`ArrowUp`:return{dRow:-1,dCol:0};case`ArrowDown`:return{dRow:1,dCol:0};case`ArrowLeft`:return{dRow:0,dCol:-1};case`ArrowRight`:return{dRow:0,dCol:1};default:return null}}function At(e,t,n,r){let i=Z(e,t);return i===void 0?{status:`refused`,reason:`unknown-button`}:Dt(e,t,{row:i.row+n,col:i.col+r})}s();var jt=4;function Mt(e,n,i){let[s,c]=o(null),l=t({grid:e,onDrop:i});l.current={grid:e,onDrop:i};let u=t(null),d=t(!1);return a(()=>()=>u.current?.(),[]),{drag:s,onItemPointerDown:r((e,t)=>{let r=n.current;if(r===null||t.button!==0)return;let i=r.getBoundingClientRect();if(Z(l.current.grid,e)===void 0)return;let a={item:e,startX:t.clientX,startY:t.clientY,grabbed:Tt(i,l.current.grid,t.clientX,t.clientY,Me(l.current.grid)),active:!1,target:null},o=e=>{if(!a.active){if(Math.hypot(e.clientX-a.startX,e.clientY-a.startY)<jt)return;a.active=!0}let t=l.current.grid,n=Tt(r.getBoundingClientRect(),t,e.clientX,e.clientY,Me(t)),i=Z(t,a.item);i!==void 0&&(a.target=Et(i,a.grabbed,n),c({item:a.item,preview:Ot(t,a.item,a.target)}))},s=e=>{window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,f),window.removeEventListener(`pointercancel`,p),window.removeEventListener(`keydown`,m),u.current=null,c(null),a.active&&(d.current=!0,window.setTimeout(()=>{d.current=!1},0),e&&a.target!==null&&l.current.onDrop(Dt(l.current.grid,a.item,a.target)))},f=()=>s(!0),p=()=>s(!1),m=e=>{e.key===`Escape`&&s(!1)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,f),window.addEventListener(`pointercancel`,p),window.addEventListener(`keydown`,m),u.current=()=>s(!1)},[n]),consumeDragClick:r(()=>{let e=d.current;return d.current=!1,e},[])}}s();var Nt=`__custom__`;function Pt({value:n,onChange:r}){let{t:a}=I(),[s,c]=o(null),[l,u]=o(null),[d,f]=o(!1),m=t(null),h=s?.kind===`button`?s.id:null,g=s?.kind===`group`?s.id:null,_=n.buttons.find(e=>e.id===h)??null,v=g===null?void 0:z(n,g),y=(e,t)=>{if(e.status===`ok`){u(null),r(e.grid),t?.(e.grid);return}u(a(`remote.layout.refusal.${e.reason}`))},b=Mt(n,m,e=>y(e));return e(`div`,{className:`grid gap-4 md:grid-cols-[minmax(0,18rem)_minmax(0,1fr)]`,children:[e(`div`,{className:`space-y-3`,children:[e(`div`,{className:`grid grid-cols-2 gap-2`,children:[i(A,{label:a(`remote.layout.columns`),children:i(N,{value:n.columns,onDelta:e=>y(Ze(n,n.columns+e,n.rows))})}),i(A,{label:a(`remote.layout.rows`),children:i(N,{value:n.rows,onDelta:e=>y(Ze(n,n.columns,n.rows+e))})})]}),i(qe,{grid:n,label:a(`remote.layout.previewLabel`),selectedId:h,selectedGroupId:g,onSelect:e=>{b.consumeDragClick()||c({kind:`button`,id:e})},onSelectGroup:e=>{b.consumeDragClick()||c({kind:`group`,id:e})},showEmptyCells:!0,gridRef:m,drag:b.drag,onItemPointerDown:b.onItemPointerDown,onItemKeyDown:(e,t)=>{let r=kt(t.key);r!==null&&(t.preventDefault(),y(At(n,e,r.dRow,r.dCol)))}}),i(`p`,{className:`text-xs text-foreground-subtle`,children:a(`remote.layout.dragHint`)}),e(`div`,{className:`flex flex-wrap gap-2`,children:[e(P,{variant:`outline`,size:`sm`,onClick:()=>f(!0),"data-testid":`remote-add-component`,children:[i(se,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),a(`remote.layout.addComponent`)]}),e(P,{variant:`outline`,size:`sm`,onClick:()=>y(We(n,`ok`),e=>{let t=e.buttons.at(-1);c(t===void 0?null:{kind:`button`,id:t.id})}),"data-testid":`remote-add-button`,children:[i(p,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),a(`remote.layout.addButton`)]})]}),l!==null&&i(`p`,{role:`alert`,className:`text-xs text-warning`,"data-testid":`remote-layout-refusal`,children:l})]}),i(`div`,{className:`min-w-0`,children:_===null?v===void 0?i(`p`,{className:`text-xs text-foreground-subtle`,children:a(`remote.layout.selectHint`)}):i(Lt,{grid:n,groupId:v.id,apply:y,onGone:()=>c(null)}):i(It,{grid:n,buttonId:_.id,apply:y,onRemove:()=>{r(Qe(n,_.id)),c(null),u(null)}})}),i(St,{open:d,grid:n,onOpenChange:f,onPick:(e,t)=>{let i=xt(n,e,t);if(!i.ok){u(a(`remote.layout.refusal.${i.reason}`));return}u(null),r(i.layout);let o=i.buttonIds[0];c(i.groupId===null?o===void 0?null:{kind:`button`,id:o}:{kind:`group`,id:i.groupId})}})]})}function Ft(e){return[...Fe.flatMap(t=>He(t).map(n=>({value:n,label:e(`remote.role.${n}`,Re(n)),group:e(`remote.roleGroup.${t}`)}))),{value:Nt,label:e(`remote.layout.customRole`),group:e(`remote.roleGroup.custom`)}]}function It({grid:t,buttonId:n,apply:r,onRemove:a}){let{t:s}=I(),c=t.buttons.find(e=>e.id===n),l=c===void 0?null:C(c.role),[u,d]=o(null);if(c===void 0)return null;let p=Ge(c.role)||u!==null,m=u??l??``,g=O(m),v={trigger:s(`remote.layout.pickIcon`),panel:s(`remote.layout.iconPanel`),searchPlaceholder:s(`deviceDisplay.iconSearchPlaceholder`),clear:s(`remote.layout.noIcon`),noMatches:s(`deviceDisplay.iconNoMatches`)},b=e=>s(`deviceDisplay.iconCategory.${e}`,{defaultValue:re(e)});return e(`div`,{className:`space-y-3 rounded-lg border border-border bg-surface p-3`,"data-testid":`remote-inspector`,children:[i(Ee,{mode:`single`,singleDisplay:`field`,label:s(`remote.layout.role`),options:Ft((e,t)=>s(e,t??e)),value:p?Nt:c.role,onChange:e=>{if(e===Nt){d(l??``);return}d(null),r(L(t,c.id,{role:e}))}}),p&&i(A,{label:s(`remote.layout.customKey`),...m!==``&&!g?{error:s(`remote.layout.customKeyInvalid`)}:{},children:i(F,{value:m,placeholder:`hdmi_1`,onChange:e=>{let n=e.target.value;d(n),O(n)&&r(L(t,c.id,{role:w(n)}))}})}),e(`div`,{className:`grid grid-cols-[auto_minmax(0,1fr)] items-end gap-2`,children:[i(A,{label:s(`remote.layout.icon`),children:i(_e,{value:c.icon??null,onPick:e=>r(L(t,c.id,{icon:e})),fallbackGlyph:se,categoryLabel:b,labels:v})}),i(A,{label:s(`remote.layout.label`),children:i(F,{value:c.label??``,maxLength:40,onChange:e=>r(L(t,c.id,{label:e.target.value}))})})]}),i(A,{label:s(`remote.layout.appIcon`),children:i(M,{value:Be(c.icon)?.key??``,options:[{value:``,label:s(`remote.layout.noApp`)},...Ue.map(e=>({value:e.key,label:e.label}))],onChange:e=>{let n=e.target.value;n===``?Be(c.icon)!==void 0&&r(L(t,c.id,{icon:null})):r(L(t,c.id,{icon:Ke(n)}))},"data-testid":`remote-app-icon`})}),e(`div`,{className:`grid grid-cols-2 gap-3`,children:[i(A,{label:s(`remote.layout.shape`),children:i(M,{value:c.shape??``,options:[{value:``,label:s(`remote.layout.lookDefault`)},...ne.map(e=>({value:e,label:s(`remote.layout.shapes.${e}`)}))],onChange:e=>{let n=ne.find(t=>t===e.target.value);r(Xe(t,c.id,{shape:n??null}))},"data-testid":`remote-shape`})}),i(A,{label:s(`remote.layout.tone`),children:i(M,{value:c.tone??``,options:[{value:``,label:s(`remote.layout.lookDefault`)},...T.map(e=>({value:e,label:s(`remote.layout.tones.${e}`)}))],onChange:e=>{let n=T.find(t=>t===e.target.value);r(Xe(t,c.id,{tone:n??null}))},"data-testid":`remote-tone`})})]}),e(`div`,{className:`grid grid-cols-2 gap-3`,children:[i(A,{label:s(`remote.layout.move`),children:e(`div`,{className:`flex items-center gap-1`,children:[i(k,{icon:_,size:`sm`,variant:`secondary`,"aria-label":s(`remote.layout.moveLeft`),onClick:()=>r(R(t,c.id,0,-1))}),i(k,{icon:x,size:`sm`,variant:`secondary`,"aria-label":s(`remote.layout.moveUp`),onClick:()=>r(R(t,c.id,-1,0))}),i(k,{icon:h,size:`sm`,variant:`secondary`,"aria-label":s(`remote.layout.moveDown`),onClick:()=>r(R(t,c.id,1,0))}),i(k,{icon:y,size:`sm`,variant:`secondary`,"aria-label":s(`remote.layout.moveRight`),onClick:()=>r(R(t,c.id,0,1))})]})}),i(A,{label:s(`remote.layout.position`),children:i(`p`,{className:`text-xs text-foreground-muted`,"data-testid":`remote-position`,children:s(`remote.layout.positionValue`,{row:c.row+1,col:c.col+1})})}),i(A,{label:s(`remote.layout.height`),children:i(N,{value:c.rowSpan,onDelta:e=>r(Ie(t,c.id,c.rowSpan+e,c.colSpan))})}),i(A,{label:s(`remote.layout.width`),children:i(N,{value:c.colSpan,onDelta:e=>r(Ie(t,c.id,c.rowSpan,c.colSpan+e))})})]}),e(P,{variant:`danger`,size:`sm`,onClick:a,children:[i(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),s(`remote.layout.removeButton`)]})]})}function Lt({grid:t,groupId:n,apply:r,onGone:a}){let{t:o}=I(),s=z(t,n);if(s===void 0)return null;let c=ze(t,n).length;return e(`div`,{className:`space-y-3 rounded-lg border border-border bg-surface p-3`,"data-testid":`remote-group-inspector`,children:[i(`p`,{className:`text-xs text-foreground-muted`,children:o(`remote.layout.groupSummary`,{frame:o(`remote.layout.frames.${s.frame}`,s.frame),count:c,row:s.row+1,col:s.col+1})}),i(A,{label:o(`remote.layout.groupTitle`),children:i(F,{value:s.title??``,maxLength:40,onChange:e=>r(Ne(t,s.id,e.target.value)),"data-testid":`remote-group-title`})}),s.frame===`divider`&&e(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[i(A,{label:o(`remote.layout.separatorSize`),children:i(M,{value:s.size??`compact`,options:[{value:`compact`,label:o(`remote.layout.separatorSizeCompact`)},{value:`normal`,label:o(`remote.layout.separatorSizeNormal`)}],onChange:e=>r(je(t,s.id,{size:e.target.value===`normal`?`normal`:`compact`})),"data-testid":`remote-separator-size`})}),e(`label`,{className:`flex items-center gap-2 self-end pb-2 text-xs text-foreground-muted`,children:[i(ve,{checked:s.hideTitle===!0,onChange:e=>r(je(t,s.id,{hideTitle:e.target.checked})),"data-testid":`remote-separator-hide-title`}),o(`remote.layout.separatorHideLabel`)]})]}),e(`div`,{className:`flex flex-wrap gap-2`,children:[e(P,{variant:`outline`,size:`sm`,"data-testid":`remote-group-ungroup`,onClick:()=>{r(Ve(t,s.id,!0)),a()},children:[i(ce,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),o(`remote.layout.ungroup`)]}),e(P,{variant:`danger`,size:`sm`,"data-testid":`remote-group-delete`,onClick:()=>{r(Ve(t,s.id,!1)),a()},children:[i(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),o(`remote.layout.deleteGroup`)]})]})]})}var Rt={remote:{label:e=>e(`remote.templates.kind.remote`),emptyPayload:Je,summary:(e,t)=>{let n=B(e);return t(`remote.templates.layoutSummary`,{columns:n.columns,rows:n.rows,count:n.buttons.length})},renderEditor:(e,t)=>i(Pt,{value:B(e),onChange:t}),isSavable:e=>Le(B(e))!==null,presets:e=>mt.map(t=>({id:t.id,label:e(`remote.templates.preset.${t.id}`),payload:()=>ht(t.id)}))}};function Q(e){return Rt[e]}var $=ie;function zt(e,t){let n=ee(e,t);return n.ok?n.payload:null}s();function Bt({draft:e,saving:t,error:n,onSave:r,onClose:a}){return i(Se,{open:e!==null,onOpenChange:e=>!e&&a(),children:i(he,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,children:e!==null&&i(Vt,{draft:e,saving:t,error:n,onSave:r,onClose:a},e.id??`new`)})})}function Vt({draft:t,saving:n,error:r,onSave:a,onClose:s}){let{t:c}=I(),[d,f]=o(t.name),[p,h]=l(nt,{kind:t.kind,presetId:``,payload:t.payload},$e),{kind:g,presetId:_,payload:v}=p.present,y=e=>h({type:`edit`,value:{...p.present,payload:e}}),b=()=>h({type:`undo`}),x=()=>h({type:`redo`});be(`mod+z`,b,{allowInInput:!1}),be(`mod+shift+z`,x,{allowInInput:!1});let S=Q(g),C=S.presets(c),w=zt(g,v),T=d.trim()!==``&&w!==null&&S.isSavable(v)&&!n;return e(u,{children:[e(ge,{className:`flex-row items-center justify-between gap-2`,children:[i(de,{children:t.id===null?c(`remote.templates.newTitle`):c(`remote.templates.editTitle`)}),e(`div`,{className:`flex shrink-0 items-center gap-1`,children:[i(k,{icon:m,size:`sm`,variant:`ghost`,"aria-label":c(`remote.history.undo`),title:c(`remote.history.undo`),disabled:!et(p),onClick:b,"data-testid":`template-undo`}),i(k,{icon:oe,size:`sm`,variant:`ghost`,"aria-label":c(`remote.history.redo`),title:c(`remote.history.redo`),disabled:!tt(p),onClick:x,"data-testid":`template-redo`})]})]}),e(ke,{className:`space-y-4`,children:[e(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[i(A,{label:c(`remote.templates.name`),children:i(F,{value:d,maxLength:120,onChange:e=>f(e.target.value),"data-testid":`template-name`})}),t.id===null&&$.length>1&&i(A,{label:c(`remote.templates.kind.label`),children:i(M,{value:g,options:$.map(e=>({value:e,label:Q(e).label(c)})),onChange:e=>{let t=$.find(t=>t===e.target.value);t!==void 0&&h({type:`edit`,value:{kind:t,presetId:``,payload:Q(t).emptyPayload()}})}})}),t.id===null&&C.length>0&&i(A,{label:c(`remote.templates.startFrom`),children:i(M,{value:_,options:[{value:``,label:c(`remote.templates.startBlank`)},...C.map(e=>({value:e.id,label:e.label}))],onChange:e=>{let t=C.find(t=>t.id===e.target.value);h({type:`edit`,value:{kind:g,presetId:t?.id??``,payload:t===void 0?S.emptyPayload():t.payload()}}),t!==void 0&&d.trim()===``&&f(t.label)},"data-testid":`template-preset`})})]}),S.renderEditor(v,y),r!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger`,children:r})]}),e(De,{children:[i(P,{variant:`ghost`,onClick:s,children:c(`common.cancel`)}),i(P,{disabled:!T,onClick:()=>a({id:t.id,kind:g,name:d.trim(),payload:w}),"data-testid":`template-save`,children:c(`common.save`)})]})]})}s();var Ht=ie[0];function Ut(){let{t}=I(),r=c(),a=me({}),s=ye(),l=le(),u=xe(),m=b(),h=v(),[_,y]=o(null),[x,S]=o(null),C=()=>void r.invalidateQueries({queryKey:[[`template`]]}),w=async e=>{S(null);try{let t=e.id===null?await s.mutateAsync({kind:e.kind,name:e.name,payload:e.payload}):await l.mutateAsync({id:e.id,name:e.name,payload:e.payload});if(t.status===`refused`){S(t.detail);return}C(),y(null)}catch(e){S(e instanceof Error?e.message:String(e))}},T=async e=>{try{await s.mutateAsync({kind:e.kind,name:t(`remote.templates.copyName`,{name:e.name}),payload:e.payload}),C()}catch(e){await h({title:t(`remote.templates.duplicateFailed`),message:e instanceof Error?e.message:String(e),variant:`danger`})}},E=async e=>{if(await m({title:t(`remote.templates.deleteTitle`,{name:e.name}),message:t(`remote.templates.deleteMessage`),confirmLabel:t(`common.delete`),variant:`danger`}))try{let n=await u.mutateAsync({id:e.id});if(n.status===`in-use`){await h({title:t(`remote.templates.inUseTitle`,{name:e.name}),message:t(`remote.templates.inUseMessage`,{devices:n.devices.map(e=>e.name).join(`, `)}),variant:`warning`});return}C()}catch(e){await h({title:t(`remote.templates.deleteFailed`),message:e instanceof Error?e.message:String(e),variant:`danger`})}},ee=n(()=>[{key:`name`,header:t(`remote.templates.name`),sortValue:e=>e.name.toLowerCase(),render:e=>i(`span`,{className:`font-medium text-foreground`,children:e.name})},{key:`kind`,header:t(`remote.templates.kind.label`),sortValue:e=>e.kind,render:e=>i(Ce,{variant:`neutral`,children:Q(e.kind).label(t)})},{key:`summary`,header:t(`remote.templates.summary`),notSortableReason:`A sentence built from the payload.`,render:e=>i(`span`,{className:`text-foreground-muted`,children:Q(e.kind).summary(e.payload,t)})},{key:`updated`,header:t(`remote.templates.updated`),sortValue:e=>e.updatedAt,render:e=>i(`span`,{className:`text-foreground-muted`,children:new Date(e.updatedAt).toLocaleDateString()})},{key:`actions`,align:`right`,notSortableReason:`Row actions.`,render:e=>i(Oe,{title:t(`remote.templates.actionsFor`,{name:e.name}),items:[{id:`edit`,label:t(`common.edit`),icon:d,onClick:()=>{S(null),y({id:e.id,kind:e.kind,name:e.name,payload:e.payload})}},{id:`duplicate`,label:t(`remote.templates.duplicate`),icon:g,onClick:()=>void T(e)},{id:`delete`,label:t(`common.delete`),icon:f,danger:!0,onClick:()=>void E(e)}]})}],[t]),D=a.data??[],O=()=>{S(null),y({id:null,kind:Ht,name:``,payload:Q(Ht).emptyPayload()})};return e(Ae,{icon:ae,title:t(`remote.templates.title`),subtitle:t(`remote.templates.subtitle`),actions:e(P,{size:`sm`,onClick:O,"data-testid":`template-new`,children:[i(p,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),t(`remote.templates.new`)]}),children:[a.status===`error`?i(pe,{title:t(`remote.templates.loadFailed`),message:a.error.message,onRetry:()=>void a.refetch()}):a.data===void 0?i(j,{className:`h-32 w-full`}):D.length===0?i(fe,{icon:ae,title:t(`remote.templates.emptyTitle`),description:t(`remote.templates.emptyDescription`),action:i(P,{size:`sm`,onClick:O,children:t(`remote.templates.new`)})}):i(Te,{columns:ee,rows:D,rowKey:e=>e.id,maxBodyHeight:ue,defaultSort:{columnKey:`name`,dir:`asc`},onRowClick:e=>{S(null),y({id:e.id,kind:e.kind,name:e.name,payload:e.payload})}}),i(Bt,{draft:_,saving:s.isPending||l.isPending,error:x,onSave:e=>void w(e),onClose:()=>y(null)})]})}export{Ut as TemplatesPage};
|