@harperfast/harper 5.3.0-beta.3 → 5.3.0-beta.4
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/bin/cliOperations.ts +25 -3
- package/bin/run.ts +18 -0
- package/components/Application.ts +52 -78
- package/components/DESIGN.md +76 -3
- package/components/Scope.ts +10 -4
- package/components/anthropic/index.ts +10 -1
- package/components/bedrock/index.ts +10 -1
- package/components/componentLoader.ts +23 -14
- package/components/mcp/tools/operations.ts +3 -1
- package/components/ollama/index.ts +10 -1
- package/components/openai/index.ts +265 -18
- package/components/operations.js +40 -1
- package/config/configUtils.ts +3 -19
- package/dataLayer/DESIGN.md +29 -5
- package/dataLayer/harperBridge/ResourceBridge.ts +39 -3
- package/dataLayer/restoreMarker.ts +250 -14
- package/dataLayer/schema.ts +2 -7
- package/dataLayer/schemaDescribe.ts +10 -0
- package/dist/bin/cliOperations.js +28 -3
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/run.js +19 -0
- package/dist/bin/run.js.map +1 -1
- package/dist/components/Application.d.ts +8 -2
- package/dist/components/Application.js +43 -69
- package/dist/components/Application.js.map +1 -1
- package/dist/components/Scope.d.ts +1 -1
- package/dist/components/Scope.js +9 -4
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/anthropic/index.d.ts +0 -10
- package/dist/components/anthropic/index.js +9 -1
- package/dist/components/anthropic/index.js.map +1 -1
- package/dist/components/bedrock/index.d.ts +0 -12
- package/dist/components/bedrock/index.js +9 -1
- package/dist/components/bedrock/index.js.map +1 -1
- package/dist/components/componentLoader.js +23 -14
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/mcp/tools/operations.js +1 -1
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/ollama/index.d.ts +0 -13
- package/dist/components/ollama/index.js +9 -1
- package/dist/components/ollama/index.js.map +1 -1
- package/dist/components/openai/index.d.ts +11 -15
- package/dist/components/openai/index.js +224 -12
- package/dist/components/openai/index.js.map +1 -1
- package/dist/components/operations.d.ts +9 -0
- package/dist/components/operations.js +32 -2
- package/dist/components/operations.js.map +1 -1
- package/dist/config/configUtils.d.ts +1 -2
- package/dist/config/configUtils.js +7 -22
- package/dist/config/configUtils.js.map +1 -1
- package/dist/dataLayer/harperBridge/ResourceBridge.js +29 -2
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/restoreMarker.d.ts +25 -3
- package/dist/dataLayer/restoreMarker.js +213 -13
- package/dist/dataLayer/restoreMarker.js.map +1 -1
- package/dist/dataLayer/schema.js +1 -4
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +10 -0
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/json/systemSchema.json +28 -0
- package/dist/resources/DatabaseTransaction.d.ts +21 -1
- package/dist/resources/DatabaseTransaction.js +147 -8
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/PrimaryRocksDatabase.js +1 -1
- package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
- package/dist/resources/Table.d.ts +31 -3
- package/dist/resources/Table.js +397 -79
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.js +16 -10
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/blob.d.ts +1 -0
- package/dist/resources/blob.js +14 -5
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/branchDatabase.js +3 -3
- package/dist/resources/branchDatabase.js.map +1 -1
- package/dist/resources/databaseDropPreparation.d.ts +20 -0
- package/dist/resources/databaseDropPreparation.js +106 -0
- package/dist/resources/databaseDropPreparation.js.map +1 -0
- package/dist/resources/databases.d.ts +26 -21
- package/dist/resources/databases.js +1040 -204
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/derivedIndexRegistry.d.ts +23 -0
- package/dist/resources/derivedIndexRegistry.js +92 -0
- package/dist/resources/derivedIndexRegistry.js.map +1 -1
- package/dist/resources/derivedIndexRuntime.d.ts +10 -0
- package/dist/resources/derivedIndexRuntime.js +136 -25
- package/dist/resources/derivedIndexRuntime.js.map +1 -1
- package/dist/resources/derivedIndexes.d.ts +39 -0
- package/dist/resources/derivedIndexes.js +733 -0
- package/dist/resources/derivedIndexes.js.map +1 -0
- package/dist/resources/fullTextSchema.d.ts +8 -0
- package/dist/resources/fullTextSchema.js +42 -0
- package/dist/resources/fullTextSchema.js.map +1 -1
- package/dist/resources/fullTextSchemaLifecycle.d.ts +0 -5
- package/dist/resources/fullTextSchemaLifecycle.js +0 -9
- package/dist/resources/fullTextSchemaLifecycle.js.map +1 -1
- package/dist/resources/graphql.js +101 -9
- package/dist/resources/graphql.js.map +1 -1
- package/dist/resources/indexes/hnswDerivedIndex.d.ts +0 -10
- package/dist/resources/indexes/hnswDerivedIndex.js +0 -230
- package/dist/resources/indexes/hnswDerivedIndex.js.map +1 -1
- package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.d.ts +3 -0
- package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js +57 -8
- package/dist/resources/indexes/nativeFullTextDerivedIndexLifecycle.js.map +1 -1
- package/dist/resources/models/Models.d.ts +26 -3
- package/dist/resources/models/Models.js +256 -13
- package/dist/resources/models/Models.js.map +1 -1
- package/dist/resources/models/TestBackend.d.ts +3 -1
- package/dist/resources/models/TestBackend.js +35 -1
- package/dist/resources/models/TestBackend.js.map +1 -1
- package/dist/resources/models/analyticsTable.d.ts +2 -2
- package/dist/resources/models/analyticsTable.js +4 -2
- package/dist/resources/models/analyticsTable.js.map +1 -1
- package/dist/resources/models/backendHelpers.d.ts +24 -0
- package/dist/resources/models/backendHelpers.js +18 -1
- package/dist/resources/models/backendHelpers.js.map +1 -1
- package/dist/resources/models/backendRegistry.d.ts +10 -21
- package/dist/resources/models/backendRegistry.js +74 -18
- package/dist/resources/models/backendRegistry.js.map +1 -1
- package/dist/resources/models/bootstrap.d.ts +7 -0
- package/dist/resources/models/bootstrap.js +36 -4
- package/dist/resources/models/bootstrap.js.map +1 -1
- package/dist/resources/models/decideHook.d.ts +33 -0
- package/dist/resources/models/decideHook.js +105 -0
- package/dist/resources/models/decideHook.js.map +1 -0
- package/dist/resources/models/decision.d.ts +64 -0
- package/dist/resources/models/decision.js +507 -0
- package/dist/resources/models/decision.js.map +1 -0
- package/dist/resources/models/decisionStore.d.ts +134 -0
- package/dist/resources/models/decisionStore.js +350 -0
- package/dist/resources/models/decisionStore.js.map +1 -0
- package/dist/resources/models/embedHook.d.ts +66 -8
- package/dist/resources/models/embedHook.js +228 -61
- package/dist/resources/models/embedHook.js.map +1 -1
- package/dist/resources/models/generativeDecision.d.ts +58 -0
- package/dist/resources/models/generativeDecision.js +315 -0
- package/dist/resources/models/generativeDecision.js.map +1 -0
- package/dist/resources/models/types.d.ts +232 -4
- package/dist/security/authn/oidc/tokenExchange.js +3 -33
- package/dist/security/authn/oidc/tokenExchange.js.map +1 -1
- package/dist/security/authn/oidc/tokenUseTable.d.ts +9 -0
- package/dist/security/authn/oidc/tokenUseTable.js +28 -0
- package/dist/security/authn/oidc/tokenUseTable.js.map +1 -0
- package/dist/security/certificateVerification/certificateVerificationSource.d.ts +0 -1
- package/dist/security/certificateVerification/certificateVerificationSource.js +3 -3
- package/dist/security/certificateVerification/certificateVerificationSource.js.map +1 -1
- package/dist/security/certificateVerification/crlVerification.js +77 -165
- package/dist/security/certificateVerification/crlVerification.js.map +1 -1
- package/dist/security/certificateVerification/types.d.ts +0 -3
- package/dist/security/certificateVerification/verificationTables.d.ts +19 -0
- package/dist/security/certificateVerification/verificationTables.js +125 -0
- package/dist/security/certificateVerification/verificationTables.js.map +1 -0
- package/dist/security/certificateVerification/verificationUtils.d.ts +1 -1
- package/dist/security/certificateVerification/verificationUtils.js +6 -31
- package/dist/security/certificateVerification/verificationUtils.js.map +1 -1
- package/dist/security/jsLoader.d.ts +5 -0
- package/dist/security/jsLoader.js +8 -0
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/server/Server.d.ts +1 -0
- package/dist/server/Server.js.map +1 -1
- package/dist/server/http.js +2 -2
- package/dist/server/http.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +21 -2
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/jobOwnership.d.ts +25 -0
- package/dist/server/jobs/jobOwnership.js +127 -0
- package/dist/server/jobs/jobOwnership.js.map +1 -0
- package/dist/server/jobs/jobProcess.js +9 -2
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobs.js +18 -5
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/loadRootComponents.js +10 -0
- package/dist/server/loadRootComponents.js.map +1 -1
- package/dist/server/serverHelpers/contentTypes.js +11 -1
- package/dist/server/serverHelpers/contentTypes.js.map +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +12 -2
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/threads/itc.d.ts +4 -1
- package/dist/server/threads/itc.js +29 -6
- package/dist/server/threads/itc.js.map +1 -1
- package/dist/server/threads/manageThreads.d.ts +12 -4
- package/dist/server/threads/manageThreads.js +241 -119
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/threadServer.d.ts +1 -0
- package/dist/server/threads/threadServer.js +15 -1
- package/dist/server/threads/threadServer.js.map +1 -1
- package/dist/server/threads/windowsProcessTree.d.ts +91 -0
- package/dist/server/threads/windowsProcessTree.js +361 -0
- package/dist/server/threads/windowsProcessTree.js.map +1 -0
- package/dist/server/throttle.d.ts +1 -1
- package/dist/server/throttle.js +8 -1
- package/dist/server/throttle.js.map +1 -1
- package/dist/upgrade/directives/5-3-0.js +53 -46
- package/dist/upgrade/directives/5-3-0.js.map +1 -1
- package/dist/utility/errors/hdbError.d.ts +10 -1
- package/dist/utility/errors/hdbError.js +55 -11
- package/dist/utility/errors/hdbError.js.map +1 -1
- package/dist/utility/fsync.d.ts +2 -0
- package/dist/utility/fsync.js +20 -0
- package/dist/utility/fsync.js.map +1 -0
- package/dist/utility/globalSchema.d.ts +18 -0
- package/dist/utility/hdbTerms.d.ts +3 -0
- package/dist/utility/hdbTerms.js +3 -0
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/signalling.d.ts +7 -1
- package/dist/utility/signalling.js +27 -3
- package/dist/utility/signalling.js.map +1 -1
- package/dist/utility/when.d.ts +1 -0
- package/dist/utility/when.js +21 -0
- package/dist/utility/when.js.map +1 -1
- package/dist/validation/configValidator.js +30 -3
- package/dist/validation/configValidator.js.map +1 -1
- package/index.ts +13 -0
- package/json/systemSchema.json +28 -0
- package/npm-shrinkwrap.json +151 -55
- package/package.json +14 -13
- package/resources/DESIGN.md +80 -100
- package/resources/DatabaseTransaction.ts +157 -10
- package/resources/PrimaryRocksDatabase.ts +2 -2
- package/resources/Table.ts +494 -101
- package/resources/auditStore.ts +18 -10
- package/resources/blob.ts +13 -6
- package/resources/branchDatabase.ts +3 -3
- package/resources/databaseDropPreparation.ts +120 -0
- package/resources/databases.ts +1155 -205
- package/resources/derivedIndexRegistry.ts +122 -0
- package/resources/derivedIndexRuntime.ts +157 -30
- package/resources/derivedIndexes.ts +856 -0
- package/resources/fullTextSchema.ts +55 -0
- package/resources/fullTextSchemaLifecycle.ts +0 -15
- package/resources/graphql.ts +107 -12
- package/resources/indexes/DESIGN.md +7 -0
- package/resources/indexes/hnswDerivedIndex.ts +0 -260
- package/resources/indexes/nativeFullTextDerivedIndexLifecycle.ts +72 -9
- package/resources/models/DESIGN.md +39 -0
- package/resources/models/Models.ts +361 -18
- package/resources/models/TestBackend.ts +56 -1
- package/resources/models/analyticsTable.ts +6 -4
- package/resources/models/backendHelpers.ts +17 -0
- package/resources/models/backendRegistry.ts +76 -21
- package/resources/models/bootstrap.ts +57 -7
- package/resources/models/decideHook.ts +135 -0
- package/resources/models/decision.ts +505 -0
- package/resources/models/decisionStore.ts +419 -0
- package/resources/models/embedHook.ts +272 -55
- package/resources/models/generativeDecision.ts +459 -0
- package/resources/models/types.ts +231 -4
- package/security/DESIGN.md +22 -2
- package/security/authn/oidc/tokenExchange.ts +6 -34
- package/security/authn/oidc/tokenUseTable.ts +27 -0
- package/security/certificateVerification/certificateVerificationSource.ts +2 -3
- package/security/certificateVerification/crlVerification.ts +96 -174
- package/security/certificateVerification/types.ts +0 -3
- package/security/certificateVerification/verificationTables.ts +124 -0
- package/security/certificateVerification/verificationUtils.ts +8 -32
- package/security/jsLoader.ts +9 -1
- package/server/DESIGN.md +27 -1
- package/server/Server.ts +2 -1
- package/server/http.ts +4 -2
- package/server/itc/serverHandlers.js +29 -1
- package/server/jobs/jobOwnership.ts +89 -0
- package/server/jobs/jobProcess.ts +8 -2
- package/server/jobs/jobs.ts +15 -4
- package/server/loadRootComponents.js +11 -0
- package/server/serverHelpers/contentTypes.ts +13 -1
- package/server/serverHelpers/serverHandlers.js +11 -2
- package/server/threads/itc.js +32 -6
- package/server/threads/manageThreads.js +268 -122
- package/server/threads/threadServer.js +13 -1
- package/server/threads/windowsProcessTree.ts +409 -0
- package/server/throttle.ts +11 -1
- package/studio/web/assets/{Chat-CveGbxe6.js → Chat-Bq60AO-g.js} +1 -1
- package/studio/web/assets/{FloatingChat-IpCFgYWL.js → FloatingChat-D4560T0p.js} +3 -3
- package/studio/web/assets/{apiToken-CS8fFTgL.js → apiToken-BEvbFPMc.js} +1 -1
- package/studio/web/assets/{applications-D7F4Jopl.js → applications-CSUVTH4E.js} +1 -1
- package/studio/web/assets/{cssMode-Daw_oLPq.js → cssMode-DJyc9mHj.js} +1 -1
- package/studio/web/assets/{editor-B3Bs1zWX.js → editor-DDIsQfj6.js} +1 -1
- package/studio/web/assets/{html-CDaQwWiE.js → html-g1BJHxLy.js} +1 -1
- package/studio/web/assets/{htmlMode-Cb6emO4U.js → htmlMode-Vh5IglCQ.js} +1 -1
- package/studio/web/assets/{index-B4g2Fu_2.js → index-DGRAzvO4.js} +5 -5
- package/studio/web/assets/{index.lazy-NwhvF1q1.js → index.lazy-vgSic7et.js} +1 -1
- package/studio/web/assets/{javascript-2_86gB9Q.js → javascript-5VIolqf7.js} +1 -1
- package/studio/web/assets/{jsonMode-DX-i86uQ.js → jsonMode-DG4zQraI.js} +1 -1
- package/studio/web/assets/{languageServices-B85WN-Ej.js → languageServices-t5FBpX-i.js} +1 -1
- package/studio/web/assets/{lspLanguageFeatures-JCWHIsKg.js → lspLanguageFeatures-DgVnNPh-.js} +1 -1
- package/studio/web/assets/{notifications-D9ejzt52.js → notifications-BeWcX04m.js} +1 -1
- package/studio/web/assets/{notifications-B7hjKhai.js → notifications-DUGWrWoO.js} +1 -1
- package/studio/web/assets/{profile-D8B6No3F.js → profile-BvUEDBzW.js} +1 -1
- package/studio/web/assets/{regions-DFazIfTK.js → regions-CB-_2m7M.js} +1 -1
- package/studio/web/assets/{register-CwFLviLF.js → register-1w1Zr3b2.js} +2 -2
- package/studio/web/assets/{setComponentFile-VnJ80SSJ.js → setComponentFile-z4-qJCbA.js} +1 -1
- package/studio/web/assets/{setup-BYQxFy-C.js → setup-CS50uJ4x.js} +2 -2
- package/studio/web/assets/{status-Cn5XjmsL.js → status-CI0wOdOE.js} +1 -1
- package/studio/web/assets/{toggleHighContrast-g9xIh6TX.js → toggleHighContrast-BsAE4jPe.js} +1 -1
- package/studio/web/assets/{tsMode-EC-n0Wqc.js → tsMode-D83Gg3cq.js} +1 -1
- package/studio/web/assets/{typescript-DHmM9JCO.js → typescript-Dfp-GrNq.js} +1 -1
- package/studio/web/assets/{useEntityRestURL-BUdnVSVv.js → useEntityRestURL-BKetlINf.js} +1 -1
- package/studio/web/assets/{workers-BVl9bBB-.js → workers-CCvmDLH3.js} +1 -1
- package/studio/web/assets/{xml-C4_sqOkX.js → xml-06pZp00U.js} +1 -1
- package/studio/web/assets/{yaml-CVkbDqtW.js → yaml-iSnWMVlV.js} +1 -1
- package/studio/web/index.html +1 -1
- package/upgrade/directives/5-3-0.ts +61 -54
- package/utility/DESIGN.md +5 -1
- package/utility/errors/hdbError.ts +56 -8
- package/utility/fsync.ts +16 -0
- package/utility/hdbTerms.ts +3 -0
- package/utility/signalling.ts +33 -4
- package/utility/when.ts +22 -0
- package/validation/configValidator.ts +36 -7
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/notifications-
|
|
2
|
-
import{i as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{_ as n,a as r,b as i,d as a,g as o,h as s,i as c,m as l,n as u,o as d,p as f,r as p,t as m,v as h,y as g}from"./authStore-5jSS5pTW.js";import{D as _,O as v,T as y,_ as b,f as x,g as S,h as C,i as w,o as T,r as E,s as D,t as O,u as k,v as A,w as j,y as ee}from"./vendor-core-BdkdbUek.js";import{i as M,n as N,t as P}from"./button-MFP9n8Ck.js";import{a as te,i as F,t as ne}from"./vendor-datadog-fCQhBHGk.js";import{r as re,t as ie}from"./vendor-react-izWchTRL.js";import{A as ae,B as oe,C as I,D as se,E as L,F as ce,H as le,I as R,J as ue,K as de,L as z,M as fe,N as pe,O as me,P as he,R as ge,S as _e,T as ve,U as ye,V as be,W as xe,_ as Se,a as Ce,b as we,c as Te,d as Ee,f as De,g as Oe,h as ke,i as Ae,k as B,l as je,m as Me,n as Ne,o as Pe,p as Fe,q as Ie,r as Le,s as Re,t as ze,u as Be,v as Ve,w as V,y as He,z as H}from"./vendor-tanstack-CQ1aRjVa.js";import{t as Ue}from"./safeParse-DeaoCCWH.js";import{n as We,t as Ge}from"./setSessionStorage-B0bf71m4.js";import{$ as Ke,A as qe,At as Je,B as Ye,C as Xe,Ct as Ze,D as Qe,Dt as $e,E as et,Et as tt,F as nt,Ft as rt,H as it,I as at,It as U,L as ot,Lt as st,M as ct,Mt as lt,N as ut,Nt as dt,O as ft,Ot as pt,P as mt,Pt as ht,R as gt,S as _t,St as vt,T as yt,Tt as bt,U as xt,V as St,W as Ct,_t as wt,at as Tt,b as Et,bt as Dt,ct as Ot,dt as kt,et as At,ft as jt,gt as Mt,ht as Nt,it as Pt,j as Ft,jt as It,k as Lt,kt as Rt,lt as zt,mt as Bt,nt as Vt,ot as Ht,pt as Ut,rt as Wt,st as Gt,tt as Kt,ut as qt,v as Jt,vt as Yt,w as Xt,wt as Zt,x as Qt,xt as $t,y as en,yt as tn,z as nn}from"./vendor-ui-aE1tHcW7.js";import{t as W}from"./createLucideIcon-bziYxJli.js";import{a as rn,c as an,i as on,l as sn,n as cn,o as ln,r as un,s as dn,t as fn}from"./dialog-DTepachC.js";import{n as pn,r as mn,t as hn}from"./chevron-up-CFe8x5Bp.js";import{t as gn}from"./x-vYntCxm4.js";import{t as _n}from"./errorText-NpBmvk9I.js";import{n as vn,r as yn,t as bn}from"./setLocalStorage-D_kflv4U.js";import{t as xn}from"./useLocalStorage-BYoZF60G.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var G=e(te(),1);function Sn(){let[e,t]=(0,G.useState)(()=>({...u.getAllConnections()}));return(0,G.useEffect)(()=>u.listenToAllEntities((e,n)=>{t(t=>({...t,[n]:e}))}),[]),e}function Cn(){let e=u.calculateIdFromEntity(m),[t,n]=(0,G.useState)(u.getConnectionById(m));return(0,G.useEffect)(()=>u.listenToEntity(e,n),[e]),t}function wn(){return Cn()}function Tn(e,t){return!e||!(`fabricRole`in e)?!1:e.staffPermissions?e.staffPermissions.includes(t):e.fabricRole===`fabric_admin`||e.fabricRole===`super_user`}function En(e){let{user:t}=wn();return Tn(t,e)}function Dn(e){let t=m,{clusterId:n,instanceId:r}=B({strict:!1}),[i,a]=(0,G.useState)(u.getConnectionById(t??r??n));return(0,G.useEffect)(()=>u.listenToEntity(t,a),[t]),i}var K=re();function On({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card`,className:N(`bg-card text-card-foreground flex flex-col gap-4 rounded-2xl py-5 shadow-deep ring-1 ring-black/5 dark:ring-white/5`,e),...t})}function kn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-header`,className:N(`flex flex-col gap-1.5 px-6`,e),...t})}function An({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-title`,className:N(`leading-none text-lg`,e),...t})}function jn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-description`,className:N(`text-muted-foreground text-xs`,e),...t})}function Mn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-content`,className:N(`px-6`,e),...t})}function Nn(e){return e!==null&&!!e.username}function Pn(e){if(e&&!Nn(e)){let t=Object.keys(e.roles);if(t.length===1)return`/${t[0]}`}return`/`}var Fn={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};Fn.node;var In=W(Fn),Ln={name:`arrow-down-to-line`,size:24,node:[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]};Ln.node;var Rn=W(Ln),zn={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};zn.node;var Bn=W(zn),Vn={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};Vn.node;var Hn=W(Vn),Un={name:`arrow-up-down`,size:24,node:[[`path`,{d:`m21 16-4 4-4-4`,key:`f6ql7i`}],[`path`,{d:`M17 20V4`,key:`1ejh1v`}],[`path`,{d:`m3 8 4-4 4 4`,key:`11wl7u`}],[`path`,{d:`M7 4v16`,key:`1glfcx`}]]};Un.node;var Wn=W(Un),Gn={name:`arrow-up-from-line`,size:24,node:[[`path`,{d:`m18 9-6-6-6 6`,key:`kcunyi`}],[`path`,{d:`M12 3v14`,key:`7cf3v8`}],[`path`,{d:`M5 21h14`,key:`11awu3`}]]};Gn.node;var Kn=W(Gn),qn={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};qn.node;var Jn=W(qn),Yn={name:`book-open-text`,size:24,node:[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M16 13h2`,key:`weia3s`}],[`path`,{d:`M16 9h2`,key:`1n7gjm`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}],[`path`,{d:`M6 13h2`,key:`1cckiz`}],[`path`,{d:`M6 9h2`,key:`1k7j9f`}]]};Yn.node;var Xn=W(Yn),Zn={name:`box`,size:24,node:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]};Zn.node;var Qn=W(Zn),$n={name:`brush-cleaning`,size:24,node:[[`path`,{d:`m16 22-1-4`,key:`1ow2iv`}],[`path`,{d:`M19 14a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v1a1 1 0 0 0 1 1`,key:`11gii7`}],[`path`,{d:`M19 14H5l-1.973 6.767A1 1 0 0 0 4 22h16a1 1 0 0 0 .973-1.233z`,key:`bju7h4`}],[`path`,{d:`m8 22 1-4`,key:`s3unb`}]]};$n.node;var er=W($n),tr={name:`bug`,size:24,node:[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]};tr.node;var nr=W(tr),rr={name:`calendar-clock`,size:24,node:[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`path`,{d:`M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338`,key:`7hb8p4`}],[`path`,{d:`M3 9h5.859`,key:`numkqi`}],[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]};rr.node;var ir=W(rr),ar={name:`chart-column-increasing`,size:24,node:[[`path`,{d:`M13 17V9`,key:`1fwyjl`}],[`path`,{d:`M18 17V5`,key:`sfb6ij`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]],aliases:[`bar-chart-4`]};ar.node;var or=W(ar),sr={name:`chart-pie`,size:24,node:[[`path`,{d:`M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z`,key:`pzmjnu`}],[`path`,{d:`M21.21 15.89A10 10 0 1 1 8 2.83`,key:`k2fpak`}]],aliases:[`pie-chart`]};sr.node;var cr=W(sr),lr={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]};lr.node;var ur=W(lr),dr={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};dr.node;var fr=W(dr),pr={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};pr.node;var mr=W(pr),hr={name:`circle-check-big`,size:24,node:[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]],aliases:[`check-circle`]};hr.node;var gr=W(hr),_r={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};_r.node;var vr=W(_r),yr={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};yr.node;var br=W(yr),xr={name:`circle`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]};xr.node;var Sr=W(xr),Cr={name:`clipboard-check`,size:24,node:[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]};Cr.node;var wr=W(Cr),Tr={name:`clipboard`,size:24,node:[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}]]};Tr.node;var Er=W(Tr),Dr={name:`cloud-alert`,size:24,node:[[`path`,{d:`M12 12v4`,key:`tww15h`}],[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.128 16.949A7 7 0 1 1 15.71 8h1.79a1 1 0 0 1 0 9h-1.642`,key:`1namsd`}]]};Dr.node;var Or=W(Dr),kr={name:`cloud-download`,size:24,node:[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]],aliases:[`download-cloud`]};kr.node;var Ar=W(kr),jr={name:`cloud-upload`,size:24,node:[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]],aliases:[`upload-cloud`]};jr.node;var Mr=W(jr),Nr={name:`columns-3-cog`,size:24,node:[[`path`,{d:`M10.6 21H5a2 2 0 01-2-2V5a2 2 0 012-2h14a2 2 0 012 2v5.6`,key:`19s2bv`}],[`path`,{d:`m14.305 19.53.923-.382`,key:`3m78fa`}],[`path`,{d:`M15 3v7.6`,key:`mv9izd`}],[`path`,{d:`m15.229 16.852-.924-.383`,key:`qpfz85`}],[`path`,{d:`m16.852 15.228-.383-.923`,key:`5xggr7`}],[`path`,{d:`m16.852 20.772-.383.924`,key:`dpfhf9`}],[`path`,{d:`m19.148 15.228.383-.923`,key:`1reyyz`}],[`path`,{d:`m19.53 21.696-.382-.924`,key:`1goivc`}],[`path`,{d:`m20.773 16.852.922-.383`,key:`59dfo2`}],[`path`,{d:`m20.773 19.148.922.383`,key:`1lk755`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}]],aliases:[`columns-settings`,`table-config`]};Nr.node;var Pr=W(Nr),Fr={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};Fr.node;var Ir=W(Fr),Lr={name:`credit-card`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`2`,key:`ynyp8z`}],[`line`,{x1:`2`,x2:`22`,y1:`10`,y2:`10`,key:`1b3vmo`}],[`path`,{d:`M6 14h2`,key:`mk7k0u`}]]};Lr.node;var Rr=W(Lr),zr={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};zr.node;var Br=W(zr),Vr={name:`ellipsis`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]],aliases:[`more-horizontal`]};Vr.node;var Hr=W(Vr),Ur={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};Ur.node;var Wr=W(Ur),Gr={name:`eye-off`,size:24,node:[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]};Gr.node;var Kr=W(Gr),qr={name:`eye`,size:24,node:[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};qr.node;var Jr=W(qr),Yr={name:`file-up`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]};Yr.node;var Xr=W(Yr),Zr={name:`funnel-plus`,size:24,node:[[`path`,{d:`M13.354 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l1.218-1.348`,key:`8mvsmf`}],[`path`,{d:`M16 6h6`,key:`1dogtp`}],[`path`,{d:`M19 3v6`,key:`1ytpjt`}]]};Zr.node;var Qr=W(Zr),$r={name:`funnel-x`,size:24,node:[[`path`,{d:`M12.531 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l.427-.473`,key:`ol2ft2`}],[`path`,{d:`m16.5 3.5 5 5`,key:`15e6fa`}],[`path`,{d:`m21.5 3.5-5 5`,key:`m0lwru`}]],aliases:[`filter-x`]};$r.node;var ei=W($r),ti={name:`funnel`,size:24,node:[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]],aliases:[`filter`]};ti.node;var ni=W(ti),ri={name:`gauge`,size:24,node:[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]};ri.node;var ii=W(ri),ai={name:`git-graph`,size:24,node:[[`circle`,{cx:`5`,cy:`6`,r:`3`,key:`1qnov2`}],[`path`,{d:`M5 9v6`,key:`158jrl`}],[`circle`,{cx:`5`,cy:`18`,r:`3`,key:`104gr9`}],[`path`,{d:`M12 3v18`,key:`108xh3`}],[`circle`,{cx:`19`,cy:`6`,r:`3`,key:`108a5v`}],[`path`,{d:`M16 15.7A9 9 0 0 0 19 9`,key:`1e3vqb`}]]};ai.node;var oi=W(ai),si={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};si.node;var ci=W(si),li={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]};li.node;var ui=W(li),di={name:`handshake`,size:24,node:[[`path`,{d:`m11 17 2 2a1 1 0 1 0 3-3`,key:`efffak`}],[`path`,{d:`m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4`,key:`9pr0kb`}],[`path`,{d:`m21 3 1 11h-2`,key:`1tisrp`}],[`path`,{d:`M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3`,key:`1uvwmv`}],[`path`,{d:`M3 4h8`,key:`1ep09j`}]]};di.node;var fi=W(di),pi={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};pi.node;var mi=W(pi),hi={name:`info`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]};hi.node;var gi=W(hi),_i={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};_i.node;var vi=W(_i),yi={name:`key`,size:24,node:[[`path`,{d:`m2 21 9.6-9.6`,key:`9l79m3`}],[`path`,{d:`m7.5 15.5 2.3 2.3a1 1 0 0 1 0 1.4l-2.1 2.1a1 1 0 0 1-1.4 0L4 19`,key:`fw8biw`}],[`circle`,{cx:`15.5`,cy:`7.5`,r:`5.5`,key:`4wxmhb`}]]};yi.node;var bi=W(yi),xi={name:`layout-dashboard`,size:24,node:[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]};xi.node;var Si=W(xi),Ci={name:`life-buoy`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m4.93 4.93 4.24 4.24`,key:`1ymg45`}],[`path`,{d:`m14.83 9.17 4.24-4.24`,key:`1cb5xl`}],[`path`,{d:`m14.83 14.83 4.24 4.24`,key:`q42g0n`}],[`path`,{d:`m9.17 14.83-4.24 4.24`,key:`bqpfvv`}],[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}]]};Ci.node;var wi=W(Ci),Ti={name:`list-todo`,size:24,node:[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]};Ti.node;var Ei=W(Ti),Di={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};Di.node;var Oi=W(Di),ki={name:`lock-keyhole`,size:24,node:[[`circle`,{cx:`12`,cy:`16`,r:`1`,key:`1au0dj`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`,key:`6s8ecr`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`,key:`1pqi11`}]]};ki.node;var Ai=W(ki),ji={name:`lock`,size:24,node:[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]};ji.node;var Mi=W(ji),Ni={name:`log-in`,size:24,node:[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]};Ni.node;var Pi=W(Ni),Fi={name:`log-out`,size:24,node:[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]};Fi.node;var Ii=W(Fi),Li={name:`mail-check`,size:24,node:[[`path`,{d:`M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8`,key:`12jkf8`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}],[`path`,{d:`m16 19 2 2 4-4`,key:`1b14m6`}]]};Li.node;var Ri=W(Li),zi={name:`mail-warning`,size:24,node:[[`path`,{d:`M22 10.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12.5`,key:`e61zoh`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}],[`path`,{d:`M20 14v4`,key:`1hm744`}],[`path`,{d:`M20 22v.01`,key:`12bgn6`}]]};zi.node;var Bi=W(zi),Vi={name:`mail`,size:24,node:[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]};Vi.node;var Hi=W(Vi),Ui={name:`map-pin`,size:24,node:[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]};Ui.node;var Wi=W(Ui),Gi={name:`menu`,size:24,node:[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]};Gi.node;var Ki=W(Gi),qi={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};qi.node;var Ji=W(qi),Yi={name:`moon`,size:24,node:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]};Yi.node;var Xi=W(Yi),Zi={name:`notepad-text`,size:24,node:[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`16`,height:`18`,x:`4`,y:`4`,rx:`2`,key:`1u9h20`}],[`path`,{d:`M8 10h6`,key:`3oa6kw`}],[`path`,{d:`M8 14h8`,key:`1fgep2`}],[`path`,{d:`M8 18h5`,key:`17enja`}]]};Zi.node;var Qi=W(Zi),$i={name:`octagon-alert`,size:24,node:[[`path`,{d:`M12 16h.01`,key:`1drbdi`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z`,key:`1fd625`}]],aliases:[`alert-octagon`]};$i.node;var ea=W($i),ta={name:`package`,size:24,node:[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]};ta.node;var na=W(ta),ra={name:`pencil`,size:24,node:[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]};ra.node;var ia=W(ra),aa={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};aa.node;var oa=W(aa),sa={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};sa.node;var ca=W(sa),la={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};la.node;var ua=W(la),da={name:`rocket`,size:24,node:[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]};da.node;var fa=W(da),pa={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};pa.node;var ma=W(pa),ha={name:`rotate-cw`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]};ha.node;var ga=W(ha),_a={name:`save`,size:24,node:[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]};_a.node;var va=W(_a),ya={name:`scale`,size:24,node:[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`m19 8 3 8a5 5 0 0 1-6 0zV7`,key:`zcdpyk`}],[`path`,{d:`M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1`,key:`1yorad`}],[`path`,{d:`m5 8 3 8a5 5 0 0 1-6 0zV7`,key:`eua70x`}],[`path`,{d:`M7 21h10`,key:`1b0cd5`}]]};ya.node;var ba=W(ya),xa={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};xa.node;var Sa=W(xa),Ca={name:`server`,size:24,node:[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]};Ca.node;var wa=W(Ca),Ta={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};Ta.node;var Ea=W(Ta),Da={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};Da.node;var Oa=W(Da),ka={name:`shield-x`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m14.5 9.5-5 5`,key:`17q4r4`}],[`path`,{d:`m9.5 9.5 5 5`,key:`18nt4w`}]],aliases:[`shield-close`]};ka.node;var Aa=W(ka),ja={name:`shield`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]};ja.node,W(ja);var Ma={name:`sliders-horizontal`,size:24,node:[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]};Ma.node;var Na=W(Ma),Pa={name:`square-pen`,size:24,node:[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]],aliases:[`pen-box`,`edit`,`pen-square`]};Pa.node;var Fa=W(Pa),Ia={name:`square`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]};Ia.node;var La=W(Ia),Ra={name:`sun`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]};Ra.node;var za=W(Ra),Ba={name:`table-2`,size:24,node:[[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]};Ba.node;var Va=W(Ba),Ha={name:`table`,size:24,node:[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}]]};Ha.node;var Ua=W(Ha),Wa={name:`tag`,size:24,node:[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`,key:`vktsd0`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`kqv944`}]]};Wa.node;var Ga=W(Wa),Ka={name:`terminal`,size:24,node:[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]};Ka.node;var qa=W(Ka),Ja={name:`ticket`,size:24,node:[[`path`,{d:`M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z`,key:`qn84l0`}],[`path`,{d:`M13 5v2`,key:`dyzc3o`}],[`path`,{d:`M13 17v2`,key:`1ont0d`}],[`path`,{d:`M13 11v2`,key:`1wjjxi`}]]};Ja.node;var Ya=W(Ja),Xa={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};Xa.node;var Za=W(Xa),Qa={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};Qa.node;var $a=W(Qa),eo={name:`user-minus`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]};eo.node;var to=W(eo),no={name:`user-round`,size:24,node:[[`circle`,{cx:`12`,cy:`8`,r:`5`,key:`1hypcn`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`,key:`rfgkzh`}]],aliases:[`user-2`]};no.node;var ro=W(no),io={name:`user`,size:24,node:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]};io.node;var ao=W(io),oo={name:`users`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};oo.node;var so=W(oo),co={name:`zap`,size:24,node:[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]};co.node;var lo=W(co),uo=`An unexpected error occurred.`;function fo(e){return typeof e==`string`?e.length>0:typeof e==`number`||(0,G.isValidElement)(e)?!0:Array.isArray(e)?e.length>0&&e.every(fo):!1}function po(e){if(e instanceof Error)return e.message.length>0?e.message:uo;if(typeof e==`object`&&e&&`message`in e){let t=e.message;return fo(t)?t:uo}return fo(e)?e:uo}function mo({className:e,error:t,title:n,showReturnToHome:r,children:i}){let{user:a,isLoading:o}=Cn();Pn(a);let s=po(t);return(0,K.jsxs)(On,{className:N(`text-red p-5 border border-red rounded-md m-12 mt-36`,e),children:[(0,K.jsxs)(kn,{children:[(0,K.jsx)(An,{className:`text-2xl`,children:(0,K.jsx)(`h2`,{children:n??`Component Error`})}),(0,K.jsx)(jn,{children:s})]}),(0,K.jsxs)(Mn,{children:[i,r!==!1&&(a&&!o?(0,K.jsx)(V,{to:`/`,children:(0,K.jsxs)(P,{children:[` `,(0,K.jsx)(Bn,{}),` Return to Home`]})}):(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsxs)(P,{children:[` `,(0,K.jsx)(Bn,{}),` Go to Sign In Page`]})}))]})]})}function ho(){let{user:e,isLoading:t}=Cn();return Pn(e),(0,K.jsx)(`div`,{className:`flex items-center justify-center h-screen px-3`,children:(0,K.jsxs)(On,{className:`text-red p-5 border border-red rounded-md w-full max-w-md`,children:[(0,K.jsx)(kn,{children:(0,K.jsx)(An,{className:`text-2xl`,children:(0,K.jsx)(`h2`,{children:`Sorry, Page Not Found`})})}),(0,K.jsx)(Mn,{children:e&&!t?(0,K.jsx)(V,{to:`/`,children:(0,K.jsxs)(P,{children:[` `,(0,K.jsx)(Bn,{}),` Return to Home`]})}):(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsxs)(P,{children:[` `,(0,K.jsx)(Bn,{}),` Go Sign In Page`]})})})]})})}function go(){return`ontouchstart`in window||navigator.maxTouchPoints>0}function _o(e){let t=`Error`,n=`We had some trouble!`,r=!0,i=e,a=e;if(typeof e==`string`)n=e;else if(i?.response?.data){let e=i.response.data;if(typeof e==`string`)n=e;else if(typeof e.title==`string`&&e.title){typeof e.code==`string`&&e.code&&(t=e.code);let i=_n(e.detail);n=i?`${e.title}: ${i}`:e.title,r=!1}else n=_n(e.error)??_n(e.message)??n}else n=_n(a?.message)??n;let o=n;if(r&&n.includes(`:`)&&!n.startsWith(`{`)&&!n.startsWith(`[`)){let e=n.split(`:`);t=e.shift(),n=e.join(`:`)}return{title:t,description:n,message:o}}function vo(e){console.error(e);let{title:t,description:n}=_o(e),r=e,i=r?.code===`ECONNABORTED`||r?.code===`ETIMEDOUT`,a=r?.response?.status===403;U.error(t,{id:i?`request-timeout`:a?`request-forbidden`:void 0,description:n,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}var yo=new be({queryCache:new le({onError:vo}),mutationCache:new ye({onError:(e,t,n,r)=>{r.meta?.skipGlobalErrorToast||vo(e)}})});function bo({...e}){return(0,K.jsx)(Rt,{"data-slot":`dropdown-menu`,...e})}function xo({...e}){return(0,K.jsx)(ht,{"data-slot":`dropdown-menu-trigger`,...e})}function So({className:e,sideOffset:t=4,...n}){return(0,K.jsx)(pt,{children:(0,K.jsx)(Zt,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:N(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md`,e),...n})})}function Co({className:e,inset:t,variant:n=`default`,...r}){return(0,K.jsx)(bt,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:N(`focus:bg-accent focus:text-grey`,`data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10`,`dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive`,`data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground`,`relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm`,`outline-hidden select-none`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function wo({className:e,children:t,checked:n,...r}){return(0,K.jsxs)(Ze,{"data-slot":`dropdown-menu-checkbox-item`,className:N(`focus:bg-accent focus:text-accent-foreground relative flex cursor-pointer items-center gap-2 rounded-sm`,`py-1.5 pr-2 pl-8`,`text-sm outline-hidden`,`select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),checked:n,...r,children:[(0,K.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,K.jsx)(tt,{children:(0,K.jsx)(mn,{className:`size-4`})})}),t]})}function To({className:e,inset:t,...n}){return(0,K.jsx)($e,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:N(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function Eo({className:e,...t}){return(0,K.jsx)(Je,{"data-slot":`dropdown-menu-separator`,className:N(`bg-border -mx-1 my-1 h-px`,e),...t})}function Do({className:e,...t}){return(0,K.jsx)(`span`,{"data-slot":`dropdown-menu-shortcut`,className:N(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}function Oo({...e}){return(0,K.jsx)(It,{"data-slot":`dropdown-menu-sub`,...e})}function ko({className:e,inset:t,children:n,...r}){return(0,K.jsxs)(dt,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:N(`focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground`,`flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none`,`data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0`,`[&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...r,children:[n,(0,K.jsx)(fr,{className:`ml-auto size-4`})]})}function Ao({className:e,...t}){return(0,K.jsx)(lt,{"data-slot":`dropdown-menu-sub-content`,className:N(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg`,e),...t})}var jo=`flex items-center gap-3 p-2 rounded-lg text-sm transition-colors`,Mo=`block p-2 rounded-lg text-sm transition-colors`,No={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-grey-700`},Po={className:`font-medium text-primary bg-primary/10 dark:text-white dark:bg-white/10`};function Fo({items:e,ariaLabel:t}){let{pathname:n}=Oe(),r=e=>e.exact?n===e.to:n.startsWith(e.to),i=e.find(r)??e[0],a=i.icon;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{className:`hidden md:flex flex-col gap-1`,"aria-label":t,children:e.map(e=>{let t=e.icon;return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(V,{to:e.to,className:jo,activeOptions:{exact:!!e.exact},activeProps:Po,inactiveProps:No,children:[(0,K.jsx)(t,{className:`size-4 shrink-0`}),e.label]}),e.children&&r(e)&&(0,K.jsx)(`div`,{className:`mt-1 ml-4 flex flex-col gap-1 border-l border-border pl-3`,children:e.children.map(e=>(0,K.jsx)(V,{to:e.to,className:Mo,activeOptions:{exact:!!e.exact},activeProps:Po,inactiveProps:No,children:e.label},e.to))})]},e.to)})}),(0,K.jsx)(`div`,{className:`md:hidden`,children:(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsxs)(P,{variant:`outline`,className:`w-full justify-between`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(a,{className:`size-4`}),i.label]}),(0,K.jsx)(pn,{className:`size-4`})]})}),(0,K.jsx)(So,{align:`start`,className:`w-(--radix-dropdown-menu-trigger-width)`,children:e.map(e=>{let t=e.icon;return[(0,K.jsx)(Co,{asChild:!0,children:(0,K.jsxs)(V,{to:e.to,className:`flex items-center gap-2`,children:[(0,K.jsx)(t,{className:`size-4`}),e.label]})},e.to),...e.children&&r(e)?e.children.map(e=>(0,K.jsx)(Co,{asChild:!0,children:(0,K.jsx)(V,{to:e.to,className:`flex items-center gap-2 pl-8`,children:e.label})},e.to)):[]]})})]})})]})}var Io=[{to:`/admin/notifications`,label:`Notifications`,icon:Jn,permission:`systemStatus:write`},{to:`/admin/regions`,label:`Regions`,icon:ci,permission:`region:read`},{to:`/admin/api-token`,label:`API Token`,icon:vi,permission:`apiToken:create`,ssoAccountOnly:!0}];function Lo(e){let t=e!==null&&`fabricRole`in e&&e.fabricRole===`super_user`;return Io.filter(n=>Tn(e,n.permission)&&!(n.ssoAccountOnly&&t))}function Ro(e){return Lo(e).length>0}function zo(){let{isLoading:e,user:t}=wn(),{pathname:n}=Oe();if(e)return null;let r=Lo(t);if(!r.length)return(0,K.jsx)(L,{to:`/`,replace:!0});let i=Io.find(e=>n.startsWith(e.to));return i&&!r.includes(i)?(0,K.jsx)(L,{to:r[0].to,replace:!0}):(0,K.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,K.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,K.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,K.jsx)(Fo,{items:r,ariaLabel:`Admin sections`})}),(0,K.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:(0,K.jsx)(He,{})})]})})}function Bo({className:e,text:t,centered:n,...r}){return(0,K.jsxs)(`div`,{className:`text-foreground h-full w-full ${e||``} ${n?`flex flex-col items-center justify-center`:``}`,...r,children:[(0,K.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`100px`,height:`100px`,alt:`HDB Dog Logo Loading`,className:`inline-block`}),(0,K.jsx)(`p`,{className:`pt-4`,children:t||`Loading...`})]})}function Vo(){return(0,K.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 126.644 96`,width:24,height:24,children:(0,K.jsx)(`path`,{fill:`currentColor`,d:`M81.15,0c-1.2376,2.1973-2.3489,4.4704-3.3591,6.794-9.5975-1.4396-19.3718-1.4396-28.9945,0-.985-2.3236-2.1216-4.5967-3.3591-6.794-9.0166,1.5407-17.8059,4.2431-26.1405,8.0568C2.779,32.5304-1.6914,56.3725.5312,79.8863c9.6732,7.1476,20.5083,12.603,32.0505,16.0884,2.6014-3.4854,4.8998-7.1981,6.8698-11.0623-3.738-1.3891-7.3497-3.1318-10.8098-5.1523.9092-.6567,1.7932-1.3386,2.6519-1.9953,20.281,9.547,43.7696,9.547,64.0758,0,.8587.7072,1.7427,1.3891,2.6519,1.9953-3.4601,2.0457-7.0718,3.7632-10.835,5.1776,1.97,3.8642,4.2683,7.5769,6.8698,11.0623,11.5419-3.4854,22.3769-8.9156,32.0509-16.0631,2.626-27.2771-4.496-50.9172-18.817-71.8548C98.9811,4.2684,90.1918,1.5659,81.1752.0505l-.0252-.0505ZM42.2802,65.4144c-6.2383,0-11.4159-5.6575-11.4159-12.6535s4.9755-12.6788,11.3907-12.6788,11.5169,5.708,11.4159,12.6788c-.101,6.9708-5.026,12.6535-11.3907,12.6535ZM84.3576,65.4144c-6.2637,0-11.3907-5.6575-11.3907-12.6535s4.9755-12.6788,11.3907-12.6788,11.4917,5.708,11.3906,12.6788c-.101,6.9708-5.026,12.6535-11.3906,12.6535Z`})})}function Ho(){let e=`studio`,t=`Harper Studio`;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`img`,{src:`/harper-${e}_black.png`,alt:t,className:`w-64 hidden md:inline-block dark:hidden`}),(0,K.jsx)(`img`,{src:`/harper-${e}_white.png`,alt:t,className:`w-64 hidden md:dark:inline-block`}),(0,K.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`50px`,height:`44px`,alt:`Harper`,className:`inline-block md:hidden`})]})}var Uo=j(`inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-auto`,{variants:{variant:{default:`border-primary bg-primary/40 text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-secondary bg-secondary/40 text-secondary-foreground [a&]:hover:bg-secondary/90`,warning:`border-yellow bg-yellow/40 text-foreground [a&]:hover:bg-yellow/90`,success:`border-green bg-green/40 text-foreground [a&]:hover:bg-green/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}});function Wo({className:e,variant:t,asChild:n=!1,...r}){return(0,K.jsx)(n?st:`span`,{"data-slot":`badge`,className:N(Uo({variant:t}),e),...r})}function Go({className:e,children:t,...n}){return(0,K.jsxs)(tn,{"data-slot":`scroll-area`,className:N(`relative`,e),...n,children:[(0,K.jsx)(vt,{"data-slot":`scroll-area-viewport`,className:`focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1`,children:t}),(0,K.jsx)(Ko,{}),(0,K.jsx)(Yt,{})]})}function Ko({className:e,orientation:t=`vertical`,...n}){return(0,K.jsx)(Dt,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:N(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,K.jsx)($t,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}var qo=[`notification-acks`];function Jo(){let e=yn(vn.AckedNotificationIds,[]);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function Yo(e){yo.setQueryData(qo,e);try{bn(vn.AckedNotificationIds,e)}catch(e){console.warn(`[notifications] could not persist acknowledgements`,e)}}function Xo(){return z({queryKey:qo,queryFn:Jo,staleTime:1/0,gcTime:1/0,initialData:Jo})}function Zo(e){Yo(Array.from(new Set([...Jo(),e])))}function Qo(e){Yo(Jo().filter(t=>t!==e))}function $o(){let{data:e}=H(Xo());return(0,G.useMemo)(()=>new Set(e??[]),[e])}var es={critical:{severity:`critical`,label:`Critical`,Icon:ea,badgeVariant:`destructive`,bannerClass:`bg-destructive/10 border-destructive/40 text-foreground`,iconClass:`text-destructive`},warning:{severity:`warning`,label:`Warning`,Icon:$a,badgeVariant:`warning`,bannerClass:`bg-yellow/10 border-yellow/40 text-foreground`,iconClass:`text-yellow`},info:{severity:`info`,label:`Info`,Icon:gi,badgeVariant:`secondary`,bannerClass:`bg-secondary/20 border-secondary/50 text-foreground`,iconClass:`text-secondary-foreground`}},ts=new Set([`critical`,`error`,`outage`,`incident`,`down`,`danger`]),ns=new Set([`warning`,`warn`,`maintenance`,`degraded`,`notice`]),rs=new Set([`info`,`information`,`informational`,`success`,`ok`]);function is(e){let t=(e??``).trim().toLowerCase();return ns.has(t)?`warning`:rs.has(t)?`info`:(ts.has(t),`critical`)}function as(e){return es[is(e)]}var os={critical:0,warning:1,info:2};function ss(e){if(e==null)return{kind:`absent`};if(typeof e==`number`)return Number.isFinite(e)?{kind:`valid`,ms:e}:{kind:`invalid`};if(typeof e!=`string`)return{kind:`invalid`};let t=e.trim();if(!t)return{kind:`absent`};if(/^\d+$/.test(t))return{kind:`valid`,ms:Number(t)};let n=Date.parse(t);return Number.isNaN(n)?{kind:`invalid`}:{kind:`valid`,ms:n}}function cs(e){let t=ss(e);return t.kind===`valid`?t.ms:null}function ls(e){return new Date(e).toLocaleString()}function us(e,t){let n=ss(e.startAt),r=ss(e.endAt);return n.kind===`invalid`||r.kind===`invalid`?{state:`expired`,label:`Schedule unavailable`}:n.kind===`valid`&&t<n.ms?{state:`upcoming`,label:`Starts ${ls(n.ms)}`}:r.kind===`valid`&&t>r.ms?{state:`expired`,label:`Ended ${ls(r.ms)}`}:r.kind===`valid`?{state:`active`,label:`Active until ${ls(r.ms)}`}:{state:`active`,label:`Active`}}var ds=new Set([`http`,`https`,`mailto`]);function fs(e){if(!e)return null;let t=e.trim();if(!t)return null;if(t.startsWith(`//`))return{kind:`external`,href:t};let n=t.match(/^([a-z][a-z0-9+.-]*):/i)?.[1]?.toLowerCase();return n?ds.has(n)?{kind:`external`,href:t}:null:{kind:`internal`,href:t.startsWith(`/`)?t:`/${t}`}}function ps({url:e,className:t,children:n,onNavigate:r}){let i=fs(e);return i?i.kind===`external`?(0,K.jsxs)(`a`,{href:i.href,target:`_blank`,rel:`noreferrer noopener`,className:t,children:[n??`Learn more`,(0,K.jsx)(Wr,{className:`inline size-3 ml-1 align-[-1px]`})]}):(0,K.jsx)(V,{to:i.href,className:t,onClick:r,children:n??`View details`}):null}var ms=[`system-status`];async function hs(){let{data:e}=await M.get(`/SystemStatus/`);return Array.isArray(e)?e:[]}function gs(){return z({queryKey:ms,queryFn:hs,refetchInterval:6e4,staleTime:3e4})}var _s=3e4,vs=new Set,ys=Date.now(),bs=null;function xs(e){return vs.add(e),bs||=(ys=Date.now(),setInterval(()=>{ys=Date.now(),vs.forEach(e=>e())},_s)),()=>{vs.delete(e),vs.size===0&&bs&&(clearInterval(bs),bs=null)}}function Ss(){return(0,G.useSyncExternalStore)(xs,()=>ys,()=>ys)}function Cs(){return H(gs())}function ws(){let[e,t]=(0,G.useState)(()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);return(0,G.useEffect)(()=>{let e=window.matchMedia(`(prefers-color-scheme: dark)`),n=e=>t(e.matches?`dark`:`light`);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}var Ts=(0,G.createContext)([`system`,()=>{}]);function Es({children:e}){let[t,n]=xn(vn.Theme,`system`),r=ws();return(0,G.useEffect)(()=>{let e=t===`dark`||t===`system`&&r===`dark`;document.documentElement.classList.toggle(`dark`,e)},[t,r]),(0,K.jsx)(Ts.Provider,{value:[t,n],children:e})}function Ds(){return(0,G.useContext)(Ts)}var Os=[{value:`light`,icon:(0,K.jsx)(za,{className:`size-4`}),label:`Light`},{value:`system`,icon:(0,K.jsx)(Ji,{className:`size-4`}),label:`System`},{value:`dark`,icon:(0,K.jsx)(Xi,{className:`size-4`}),label:`Dark`}];function ks(){let[e,t]=Ds();return(0,K.jsx)(`div`,{className:`flex items-center bg-muted dark:bg-black rounded-xl p-0.5 gap-0.5`,children:Os.map(({value:n,icon:r,label:i})=>(0,K.jsx)(`button`,{type:`button`,title:i,onClick:()=>t(n),className:`p-1.5 rounded-lg transition-colors ${e===n?`bg-background text-foreground shadow-xs`:`text-muted-foreground hover:text-foreground`}`,children:r},n))})}function As({className:e,...t}){return(0,K.jsx)(`div`,{className:N(`absolute top-full left-0 isolate z-50 flex justify-center`),children:(0,K.jsx)(wt,{"data-slot":`navigation-menu-viewport`,className:N(`origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]`,e),...t})})}function js({className:e,children:t,viewport:n=!0,...r}){return(0,K.jsxs)(Mt,{"data-slot":`navigation-menu`,"data-viewport":n,className:N(`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,e),...r,children:[t,n&&(0,K.jsx)(As,{})]})}function Ms({className:e,...t}){return(0,K.jsx)(Ut,{"data-slot":`navigation-menu-item`,className:N(`relative`,e),...t})}function Ns({className:e,...t}){return(0,K.jsx)(Bt,{"data-slot":`navigation-menu-link`,className:N(`hover:text-foreground dark:hover:text-white ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 flex flex-col gap-1 rounded-sm p-2 text-sm transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4`,e),...t})}function Ps({className:e,...t}){return(0,K.jsx)(Nt,{"data-slot":`navigation-menu-list`,className:N(`group flex flex-1 list-none items-center justify-center gap-1`,e),...t})}function Fs({delayDuration:e=0,...t}){return(0,K.jsx)(qt,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function Is({...e}){return(0,K.jsx)(Fs,{children:(0,K.jsx)(kt,{"data-slot":`tooltip`,...e})})}function Ls({...e}){return(0,K.jsx)(jt,{"data-slot":`tooltip-trigger`,...e})}function Rs({className:e,sideOffset:t=0,arrowClassName:n,children:r,...i}){return(0,K.jsx)(zt,{children:(0,K.jsxs)(Ot,{"data-slot":`tooltip-content`,sideOffset:t,className:N(`bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance`,e),...i,children:[r,(0,K.jsx)(Gt,{className:N(`bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`,n)})]})})}function zs(){let e=`v5.3.0-beta.3`,t=e.startsWith(`v`)?`https://github.com/HarperFast/studio/releases/tag/${e}`:`https://github.com/HarperFast/studio/releases`;return(0,K.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,children:(0,K.jsxs)(`span`,{className:N(Uo({variant:`default`}),`text-xs inline-block ml-2 align-text-top`),children:[e,` BETA`]})})}function Bs(e={}){let{instanceId:t,clusterId:n}=B({strict:!1});return o({id:m,...e})}function Vs(e={}){let{instanceId:t,clusterId:n}=B({strict:!1});return{instanceClient:o({id:m,...e}),entityType:`instance`}}function q(e={}){let{instanceId:t,clusterId:n}=B({strict:!1});return(0,G.useMemo)(()=>Hs({instanceId:t,clusterId:n,...e}),[e.instanceId??t,e.clusterId??n,e.operationsUrl,e.port,e.secure,e.disableFabricConnect,e.forceFabricConnect])}function Hs({instanceId:e,clusterId:t,...n}){let r=m;if(!r)throw Error(`id could not be automatically calculated in useInstanceClientIdParams`);return{instanceClient:o({id:r,...n}),entityId:r,entityType:`instance`}}function Us(){localStorage.clear()}function Ws(){sessionStorage.clear()}async function Gs(){u.setUserForEntity(m,null),yo.getQueryCache().clear(),Us(),Ws(),await yo.invalidateQueries({refetchType:`none`})}async function Ks(e){await u.signOutFromPotentiallyAuthenticatedInstances(),await d({...e,entityId:m})}function qs(){let e=Bs();return R({mutationFn:()=>Ks({instanceClient:e}),onSuccess:Gs})}function Js(e){return!!e}var Ys={className:`text-foreground dark:text-white font-semibold`};function Xs(){let{mutate:e}=qs(),t=se(),{user:n}=Cn(),r=Ro(n),i=fe(),a=(0,G.useCallback)(()=>{e(void 0,{onSuccess:async()=>{U.success(`Success`,{description:`You have been signed out successfully.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),t({to:`/sign-in`}),i.invalidate()}})},[e,i,t]),o=(0,G.useMemo)(()=>[!1,!1,{to:`https://docs.harperdb.io/docs`,target:`_blank`,icon:(0,K.jsx)(Xn,{}),text:`Docs`,textBreakpoint:`md`},{to:`https://github.com/HarperFast/studio/issues`,target:`_blank`,icon:(0,K.jsx)(nr,{}),text:`Report an Issue`,textBreakpoint:`lg`},{to:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,icon:(0,K.jsx)(Vo,{}),text:`Discord`,textBreakpoint:`lg`},{onClick:a,icon:(0,K.jsx)(Ii,{}),text:`Sign Out`,textBreakpoint:`md`}].filter(Js),[a,r]);return n?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(tc,{menuItems:o}),(0,K.jsx)($s,{menuItems:o})]}):(0,K.jsx)(Qs,{})}function Zs(e){return e.items!==void 0}function Qs(){return(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`inline-block`,children:[(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsx)(Ho,{})}),(0,K.jsx)(zs,{})]}),(0,K.jsx)(js,{children:(0,K.jsxs)(Ps,{className:`text-muted-foreground dark:text-grey-400`,children:[(0,K.jsx)(Ms,{children:(0,K.jsx)(Ns,{asChild:!0,children:(0,K.jsxs)(V,{to:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noreferrer noopener`,className:`flex-row items-center`,children:[(0,K.jsx)(Xn,{}),` `,(0,K.jsx)(`span`,{className:`hidden md:inline-block`,children:`Docs`})]})})}),(0,K.jsx)(Ms,{children:(0,K.jsx)(ks,{})}),(0,K.jsx)(Ms,{children:(0,K.jsx)(Ns,{asChild:!0,children:(0,K.jsxs)(V,{to:`/sign-in`,className:`flex-row items-center`,activeProps:Ys,children:[(0,K.jsx)(Pi,{}),` Sign In`]})})})]})})]})}function $s({menuItems:e}){let{user:t}=Cn();return Pn(t),(0,K.jsx)(`div`,{className:`hidden md:[@media(hover:hover)]:block xl:block`,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`inline-block`,children:[(0,K.jsx)(V,{to:`/`,children:(0,K.jsx)(Ho,{})}),(0,K.jsx)(zs,{})]}),(0,K.jsx)(js,{children:(0,K.jsxs)(Ps,{className:`text-muted-foreground dark:text-grey-400`,children:[e.map(e=>Zs(e)?!!e.items.length&&(0,K.jsx)(`div`,{className:`bg-muted dark:bg-black rounded-2xl flex`,children:e.items.map(e=>(0,K.jsx)(ec,{menuItem:e},e.text))},e.text):(0,K.jsx)(ec,{menuItem:e},e.text)),!1,(0,K.jsx)(Ms,{children:(0,K.jsx)(ks,{})})]})})]})})}function ec({menuItem:e}){return(0,K.jsx)(Ms,{className:`text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,children:(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(Ns,{asChild:!0,children:(0,K.jsxs)(V,{to:e.to,onClick:e.onClick,"aria-label":e.text,className:`flex-row items-center`,target:e.target,activeProps:e.to?Ys:void 0,children:[e.icon,(0,K.jsx)(`span`,{className:`hidden ${e.textBreakpoint}:inline-block`,children:e.text}),(0,K.jsx)(`span`,{className:`${e.textBreakpoint}:hidden`,children:`\xA0`})]})})}),(0,K.jsx)(Rs,{side:`bottom`,className:`${e.textBreakpoint}:hidden`,children:e.text})]})})}function tc({menuItems:e}){let{user:t}=Cn();Pn(t);let[n,r]=(0,G.useState)(!1),i=(0,G.useCallback)(()=>r(e=>!e),[]),a=(0,G.useCallback)(()=>r(!1),[]);return(0,K.jsxs)(`div`,{className:`md:[@media(hover:hover)]:hidden xl:hidden`,id:`mobile-menu`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(V,{to:`/`,children:(0,K.jsx)(Ho,{})}),(0,K.jsx)(zs,{}),(0,K.jsxs)(`div`,{className:`flex items-center`,children:[!1,(0,K.jsxs)(`button`,{type:`button`,className:`shadow-xs text-muted-foreground dark:text-grey-400 hover:text-foreground dark:hover:text-white hover:bg-muted dark:hover:bg-black-dark`,onClick:i,children:[(0,K.jsx)(`span`,{className:`sr-only`,children:n?`Close menu`:`Open menu`}),n?(0,K.jsx)(gn,{}):(0,K.jsx)(Ki,{})]})]})]}),(0,K.jsx)(`div`,{className:`${n?`fixed`:`hidden`} top-40 bottom-0 left-0 right-0 bg-foreground/20 dark:bg-black-dark dark:opacity-70`,onClick:a}),(0,K.jsxs)(`div`,{className:`${n?`block`:`hidden`} md:hidden z-50 space-y-1 pb-3 bg-card border-b border-border dark:bg-black-dark dark:border-none absolute left-0 top-full w-full rounded-b-md`,children:[(0,K.jsx)(`div`,{className:`flex justify-end px-3 pt-2`,children:(0,K.jsx)(ks,{})}),e.map(e=>Zs(e)?!!e.items.length&&(0,K.jsx)(`div`,{className:`bg-muted dark:bg-black pl-10 pr-2 py-2`,children:e.items.map(e=>(0,K.jsx)(nc,{menuItem:e,onClick:a},e.text))},e.text):(0,K.jsx)(nc,{menuItem:e,onClick:a},e.text))]})]})}function nc({menuItem:e,onClick:t}){let n=(0,G.useCallback)(()=>{e.onClick?.(),t()},[e,t]);return(0,K.jsxs)(V,{to:e.to,onClick:n,target:e.target,className:`flex flex-row px-3 py-2 text-base font-medium rounded-md text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,activeProps:e.to?Ys:void 0,children:[e.icon,(0,K.jsx)(`span`,{className:`ml-4`,children:e.text})]})}function rc(){let{isLoading:e}=Cn(),{createCluster:t}=me({strict:!1}),[,n]=xn(vn.SavedClusterState,null);return(0,G.useEffect)(()=>{t&&n(t)},[t,n]),e?(0,K.jsx)(Bo,{className:`fixed z-50 translate-1/2`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,K.jsx)(Xs,{})}),(0,K.jsx)(`main`,{children:(0,K.jsx)(He,{})})]})}function ic(){let e=location.hash;return e?e.startsWith(`#/`)?e.slice(1):e:`/`}var ac=[`/`,`/forgot-password`,`/reset-password`,`/sign-in`,`/sign-up`,`/verify-email`];function oc(){let e=ic();return!ac.includes(e)&&{redirect:e}}var sc=`me|email|token|access_token|id_token|refresh_token|code|secret|password|api[-_]?key`,cc=String.raw`[^&#\s",<>[\]{}|\\]+`,lc=String.raw`[\w.%+!~*'()-]+(?:@|%40)[\w-]+(?:\.[\w-]+)*\.\w{2,}`;new RegExp(String.raw`([?&](?:${sc})=)${cc}`,`gi`),new RegExp(String.raw`([?&](?:${sc})=)${cc}|${lc}`,`gi`);var uc=String.raw`[\w-]+-extension`;new RegExp(String.raw`^${uc}://`),new RegExp(String.raw`^\s*at\s.* @ ((?:blob:)?(?:https?|${uc})://\S*)\s*$`);var dc=!1;function fc(){(0,G.useEffect)(()=>{dc||=!0},[])}function pc(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(ke,{}),(0,K.jsx)(He,{})]})}var mc=_e()({component:pc}),hc=I({getParentRoute:()=>mc,id:`_dashboardLayout`,component:rc,beforeLoad:({context:e})=>{let t=e.authentication[m];if(t&&!t.isLoading&&!t.user)throw ce({to:`/sign-in`,search:oc()})}}),gc=I({getParentRoute:()=>hc,path:`admin`,component:zo});I({getParentRoute:()=>gc,path:`/`,beforeLoad:()=>{throw ce({to:`/admin/notifications`})}}),I({getParentRoute:()=>gc,path:`notifications`,head:()=>({meta:[{title:`Notifications — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./notifications-B7hjKhai.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])),`NotificationsAdminIndex`)}),I({getParentRoute:()=>gc,path:`regions`,head:()=>({meta:[{title:`Regions — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./regions-DFazIfTK.js`),__vite__mapDeps([15,1,3,2,4,5,6,7,8,9,10,11,12,13,16])),`RegionsIndex`)}),I({getParentRoute:()=>gc,path:`api-token`,head:()=>({meta:[{title:`API Token — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./apiToken-CS8fFTgL.js`),__vite__mapDeps([17,1,2,3,4,5,6,7])),`ApiTokenIndex`)});function _c(){let[e,t]=(0,G.useState)(()=>typeof document<`u`&&document.documentElement.classList.contains(`dark`));return(0,G.useEffect)(()=>{let e=document.documentElement;t(e.classList.contains(`dark`));let n=new MutationObserver(()=>{t(e.classList.contains(`dark`))});return n.observe(e,{attributes:!0,attributeFilter:[`class`]}),()=>n.disconnect()},[]),e?`dark`:`light`}var vc={dark:[`M 246 426 C 211 389 184 377 154 386 C 72 399 44 492 0 576`,`M 658 383 C 693 318 748 286 795 286 C 905 281 957 477 952 583`,`M 750 438 C 915 444 1083 562 1183 766`,`M 0 576 C 119 529 273 575 372 766`,`M 1196 766 C 1291 526 1514 442 1690 432 C 1844 430 1973 530 2054 651`],light:[`M 258 355 C 212 300 171 289 136 313 C 74 352 37 434 0 542`,`M 633 350 C 684 251 744 193 790 200 C 882 201 967 380 951 548`,`M 756 405 C 891 368 1055 510 1169 766`,`M 0 542 C 112 440 299 588 356 766`,`M 1285 766 C 1391 564 1556 518 1710 505 C 1840 504 1971 571 2054 668`]},yc={dark:[[246,426,0,576],[658,383,952,583],[750,438,1183,766],[0,576,372,766],[1196,766,2054,651]],light:[[258,355,0,542],[633,350,951,548],[756,405,1169,766],[0,542,356,766],[1285,766,2054,668]]},bc=[{path:0,duration:12,phase:3},{path:1,duration:16,phase:6},{path:1,duration:16,phase:14},{path:2,duration:14,phase:4},{path:3,duration:18,phase:11},{path:4,duration:22,phase:5},{path:4,duration:22,phase:16}];function xc({theme:e}){let t=(0,G.useId)();return(0,K.jsxs)(`svg`,{className:`auth-energy-particles`,viewBox:`0 0 2054 766`,"aria-hidden":`true`,focusable:`false`,children:[(0,K.jsxs)(`defs`,{children:[(0,K.jsxs)(`radialGradient`,{id:`${t}-fade`,children:[(0,K.jsx)(`stop`,{offset:`0`,stopColor:`black`}),(0,K.jsx)(`stop`,{offset:`1`,stopColor:`white`})]}),yc[e].map(([e,n,r,i],a)=>(0,K.jsxs)(`mask`,{id:`${t}-${a}`,maskUnits:`userSpaceOnUse`,x:`0`,y:`0`,width:`2054`,height:`766`,children:[(0,K.jsx)(`rect`,{width:`2054`,height:`766`,fill:`white`}),(0,K.jsx)(`circle`,{cx:e,cy:n,r:`60`,fill:`url(#${t}-fade)`}),(0,K.jsx)(`circle`,{cx:r,cy:i,r:`60`,fill:`url(#${t}-fade)`})]},a))]}),vc[e].map((e,n)=>(0,K.jsx)(`path`,{className:`auth-energy-line`,d:e,mask:`url(#${t}-${n})`},e)),bc.map(({path:t,duration:n,phase:r},i)=>(0,K.jsxs)(`g`,{className:`auth-energy-particle`,opacity:`0`,children:[(0,K.jsx)(`circle`,{r:`12`,fill:`currentColor`,opacity:`0.06`}),(0,K.jsx)(`circle`,{r:`6`,fill:`currentColor`,opacity:`0.16`}),(0,K.jsx)(`circle`,{r:`2.2`,fill:`currentColor`}),(0,K.jsx)(`animateMotion`,{path:vc[e][t],dur:`${n}s`,begin:`-${r}s`,repeatCount:`indefinite`}),(0,K.jsx)(`animate`,{attributeName:`opacity`,values:`0;0.85;0.85;0`,keyTimes:`0;0.12;0.82;1`,dur:`${n}s`,begin:`-${r}s`,repeatCount:`indefinite`})]},`${e}-${i}`))]})}var Sc=[{title:`App`,description:`Build faster`,Icon:Qn},{title:`Database`,description:`Store smarter`,Icon:Br},{title:`Cache`,description:`Move quicker`,Icon:lo},{title:`Messaging`,description:`Stay connected`,Icon:Hi}];function Cc(){let e=_c();return(0,K.jsxs)(`div`,{className:`fabric-sign-in-page`,children:[(0,K.jsxs)(`header`,{className:`sign-in-header`,children:[(0,K.jsxs)(`div`,{className:`sign-in-brand`,children:[(0,K.jsx)(V,{to:`/`,"aria-label":`Harper Fabric home`,children:(0,K.jsx)(Ho,{})}),(0,K.jsx)(zs,{})]}),(0,K.jsxs)(`nav`,{"aria-label":`Authentication navigation`,children:[(0,K.jsxs)(`a`,{className:`sign-in-docs`,href:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noreferrer noopener`,children:[(0,K.jsx)(Xn,{"aria-hidden":`true`}),` `,(0,K.jsx)(`span`,{children:`Docs`})]}),(0,K.jsx)(ks,{})]})]}),(0,K.jsxs)(`main`,{className:`sign-in-content`,children:[(0,K.jsxs)(`section`,{className:`sign-in-story`,"aria-labelledby":`sign-in-story-title`,children:[(0,K.jsxs)(`div`,{className:`sign-in-story-copy`,children:[(0,K.jsxs)(`h2`,{id:`sign-in-story-title`,children:[`One runtime.`,(0,K.jsx)(`br`,{}),(0,K.jsx)(`span`,{children:`Endless possibilities.`})]}),(0,K.jsxs)(`p`,{children:[`Build, deploy, and scale distributed applications`,(0,K.jsx)(`br`,{className:`sign-in-desktop-break`}),` `,`with built-in data, cache, and messaging.`]}),(0,K.jsx)(`ul`,{className:`sign-in-features`,children:Sc.map(({title:e,description:t,Icon:n})=>(0,K.jsxs)(`li`,{children:[(0,K.jsx)(`span`,{className:`sign-in-feature-icon`,children:(0,K.jsx)(n,{"aria-hidden":`true`})}),(0,K.jsx)(`strong`,{children:e}),(0,K.jsx)(`span`,{children:t})]},e))})]}),(0,K.jsx)(`div`,{className:`sign-in-artwork`,children:(0,K.jsxs)(`div`,{className:`auth-hero-panorama`,children:[(0,K.jsx)(`img`,{className:`auth-hero-globe`,src:`/auth/fabric-globe-${e}.png`,alt:``,"aria-hidden":`true`}),(0,K.jsx)(xc,{theme:e}),(0,K.jsx)(`img`,{className:`auth-hero-platform`,src:`/auth/fabric-platform-${e}.png`,width:`2054`,height:`766`,alt:`App, database, cache, and messaging together on a globally distributed platform.`,fetchPriority:`high`})]})}),(0,K.jsxs)(`div`,{className:`sign-in-story-footer`,children:[(0,K.jsx)(`span`,{children:`Free to deploy`}),(0,K.jsx)(`span`,{"aria-hidden":`true`}),(0,K.jsx)(`span`,{children:`Live in minutes`})]})]}),(0,K.jsx)(`section`,{className:`sign-in-card`,"aria-label":`Account access`,children:(0,K.jsx)(He,{})})]})]})}function wc(){(0,G.useEffect)(()=>{},[])}var Tc=[`gmail.com`,`yahoo.com`,`hotmail.com`,`outlook.com`,`icloud.com`,`aol.com`,`protonmail.com`,`mail.com`,`zoho.com`,`yandex.com`,`gmx.com`,`live.com`,`msn.com`,`me.com`,`inbox.com`];function Ec(e){if(!e||!e.includes(`@`))return null;let t=e.split(`@`).pop()||``;if(!t)return null;for(let e of Tc)if(t===e||t.endsWith(`.`+e))return null;return t}var Dc=`utm_`;function Oc(e){let t=new URLSearchParams(e),n=Array.from(t.keys()).filter(e=>e.toLowerCase().startsWith(Dc));if(n.length===0)return e;for(let e of n)t.delete(e);let r=t.toString();return r?`?${r}`:``}function kc(){if(typeof location>`u`||typeof history>`u`)return;let{search:e,pathname:t,hash:n,origin:r}=location,i=Oc(e);i!==e&&history.replaceState(history.state,``,`${r}${t}${i}${n}`)}function Ac({icon:e,title:t,subtitle:n,loading:r=!1}){return(0,K.jsxs)(`div`,{className:`auth-heading`,children:[(0,K.jsx)(`span`,{className:`auth-status-icon`,children:(0,K.jsx)(e,{"aria-hidden":`true`,className:r?`auth-loading-icon`:void 0})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h1`,{children:t}),n&&(0,K.jsx)(`p`,{className:`auth-heading-subtitle`,children:n})]})]})}var jc=null;function Mc(){let e=se(),t=fe(),n=ue(),{redirect:r}=me({strict:!1});return(0,G.useEffect)(()=>{jc||=(async function(){let i=await l().catch(()=>null);if(!i)U.error(`We were not able to verify your sign-in. Please try signing in again.`,{duration:1e4}),await e({to:`/sign-in`});else{u.setUserForEntity(m,i),kc();let a=Pn(i);Ec(i.email),await n.invalidateQueries({queryKey:f,refetchType:`none`}),await t.invalidate(),await e({to:r?.startsWith(`/`)?r:a})}jc=null})()},[]),(0,K.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`auth-form flex flex-col gap-4`,children:[(0,K.jsx)(Ac,{icon:Oi,title:`Checking...`,subtitle:`We’re confirming your sign-in.`,loading:!0}),(0,K.jsx)(`div`,{className:`auth-links`,children:(0,K.jsx)(V,{className:`text-sm`,to:`/sign-in`,children:`Try signing in again`})})]})}var Nc=new Map;function Pc(e){if(!e)return``;if(Nc.has(e))return Nc.get(e);let t=e.replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim();if(!t)return Nc.set(e,``),``;let n=t.match(/([A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+|[0-9]+)/g);if(!n)return Nc.set(e,``),``;let r=[];for(let e=0;e<n.length;e++){let t=n[e],i=e+1<n.length?n[e+1]:void 0;/^[A-Z]{2,}$/.test(t)&&i&&/[A-Z]*s$/.test(i)||/^[A-Z]$/.test(t)&&i!==void 0&&/^[A-Z]s$/.test(i)?(r.push(t+i),e++):r.push(t)}let i=r.map(Fc).join(` `);return Nc.set(e,i),i}function Fc(e){return/^[A-Z]{2,3}s?$/.test(e)||/^[0-9]+$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function Ic({restartRequired:e}){let t=Oe(),{organization:n,instance:r,cluster:i}=ve({strict:!1}),a=(0,G.useMemo)(()=>{let e=t.pathname.split(`/`).filter(e=>e&&e.length>0),a=[(0,K.jsxs)(V,{to:`/`,children:[(0,K.jsx)(mi,{"aria-hidden":`true`,className:`size-5 shrink-0`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Home`})]},`home`)];for(let t=0;t<e.length;t++){let o=e[t];if(o===`instance`)continue;let s=`/${e.slice(0,t+1).join(`/`)}`,c=Pc(o);o===`databases`&&e.length===t+3?(c=e[t+2],t+=2):c.startsWith(`Org `)?c=n?.name||`Org`:c.startsWith(`Clu `)?(c=i?.name||`Cluster`,e[t+1]===`instance`&&(s+=`/instances`)):c.startsWith(`Ins `)?c=r?.name?.split(`.`)?.shift()||`Instance`:c===`Apis`&&(c=`APIs`),a.push((0,K.jsx)(`svg`,{fill:`currentColor`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`size-5 shrink-0 text-grey`,children:(0,K.jsx)(`path`,{d:`M5.555 17.776l8-16 .894.448-8 16-.894-.448z`})},a.length+`-dash`),(0,K.jsx)(V,{to:s,className:`text-xs md:text-sm font-medium hover:text-grey truncate max-w-48`,children:c},s))}return a},[t.pathname,i?.name,r?.name,n?.name]);return(0,K.jsxs)(`div`,{role:`list`,className:`flex items-center space-x-2 xl:space-x-4 sm:max-w-9/10 max-w-[calc(100%-56px)]`,children:[...a,e&&(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsxs)(`div`,{className:`text-xs italic text-muted-foreground`,children:[`* Restart `,(0,K.jsx)(`span`,{className:`hidden lg:inline-block`,children:`Requested`})]})}),(0,K.jsxs)(Rs,{side:`bottom`,children:[`This `,`Instance`,` is requesting a restart, when convenient, to apply your latest changes.`,(0,K.jsx)(`br`,{}),`You can do this from the Apps or Config pages.`]})]})]})}var Lc=Vt,Rc=(0,G.createContext)({}),zc=(0,G.createContext)({});function Bc(){let e=(0,G.useContext)(Rc),t=(0,G.useContext)(zc),{getFieldState:n}=Tt(),r=Ht({name:e.name}),i=n(e.name,r);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}}function J({...e}){let{error:t,formItemId:n,formDescriptionId:r,formMessageId:i}=Bc();return(0,K.jsx)(st,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${r} ${i}`:`${r}`,"aria-invalid":!!t,...e})}function Y({...e}){return(0,K.jsx)(Rc,{value:{name:e.name},children:(0,K.jsx)(Kt,{...e})})}function X({className:e,...t}){let n=(0,G.useId)();return(0,K.jsx)(zc,{value:{id:n},children:(0,K.jsx)(`div`,{"data-slot":`form-item`,className:N(`grid gap-2`,e),...t})})}function Vc({className:e,...t}){return(0,K.jsx)(At,{"data-slot":`label`,className:N(`text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function Z({className:e,...t}){let{error:n,formItemId:r}=Bc();return(0,K.jsx)(Vc,{"data-slot":`form-label`,"data-error":!!n,className:N(`data-[error=true]:text-destructive`,e),htmlFor:r,...t})}function Q({className:e,...t}){let{error:n,formMessageId:r}=Bc(),i=n?String(n?.message):t.children;return i?(0,K.jsx)(`p`,{"data-slot":`form-message`,id:r,className:N(`text-destructive text-sm`,e),...t,children:i}):null}function $({className:e,type:t,...n}){return(0,K.jsx)(`input`,{type:t,"data-slot":`input`,className:N(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/notifications-DUGWrWoO.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/button-MFP9n8Ck.js","assets/vendor-core-BdkdbUek.js","assets/vendor-datadog-fCQhBHGk.js","assets/vendor-react-izWchTRL.js","assets/vendor-ui-aE1tHcW7.js","assets/vendor-tanstack-CQ1aRjVa.js","assets/dialog-DTepachC.js","assets/createLucideIcon-bziYxJli.js","assets/x-vYntCxm4.js","assets/setLocalStorage-D_kflv4U.js","assets/safeParse-DeaoCCWH.js","assets/useLocalStorage-BYoZF60G.js","assets/alertDialog-UrbiMgQt.js","assets/regions-CB-_2m7M.js","assets/chevron-up-CFe8x5Bp.js","assets/apiToken-BEvbFPMc.js","assets/setup-CS50uJ4x.js","assets/dist-Cz2Y6-6G.js","assets/register-1w1Zr3b2.js","assets/register-jjEx9u7D.css","assets/editor-DDIsQfj6.js","assets/toggleHighContrast-BsAE4jPe.js","assets/toggleHighContrast--ixms01u.css","assets/index.lazy-vgSic7et.js","assets/authStore-5jSS5pTW.js","assets/setSessionStorage-B0bf71m4.js","assets/useEntityRestURL-BKetlINf.js","assets/tabs-CnQ_zenf.js","assets/applications-CSUVTH4E.js","assets/download-CtostjYn.js","assets/setComponentFile-z4-qJCbA.js","assets/languageServices-t5FBpX-i.js","assets/applications-DNZhsH95.css","assets/FloatingChat-D4560T0p.js","assets/status-CI0wOdOE.js","assets/errorText-NpBmvk9I.js","assets/linear-Ds1AeO4V.js","assets/step-vX8bovaY.js","assets/defaultLocale-BFoDCU3G.js","assets/init-ZlXS9mIS.js","assets/ordinal-CPleeUAT.js","assets/time-Ci1v4fvT.js","assets/band-DZ4Jagyz.js","assets/getAnalytics-CjthMQqF.js","assets/notifications-BeWcX04m.js","assets/profile-BvUEDBzW.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{i as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{_ as n,a as r,b as i,d as a,g as o,h as s,i as c,m as l,n as u,o as d,p as f,r as p,t as m,v as h,y as g}from"./authStore-5jSS5pTW.js";import{D as _,O as v,T as y,_ as b,f as x,g as S,h as C,i as w,o as T,r as E,s as D,t as O,u as k,v as A,w as j,y as ee}from"./vendor-core-BdkdbUek.js";import{i as M,n as N,t as P}from"./button-MFP9n8Ck.js";import{a as te,i as F,t as ne}from"./vendor-datadog-fCQhBHGk.js";import{r as re,t as ie}from"./vendor-react-izWchTRL.js";import{A as ae,B as oe,C as I,D as se,E as L,F as ce,H as le,I as R,J as ue,K as de,L as z,M as fe,N as pe,O as me,P as he,R as ge,S as _e,T as ve,U as ye,V as be,W as xe,_ as Se,a as Ce,b as we,c as Te,d as Ee,f as De,g as Oe,h as ke,i as Ae,k as B,l as je,m as Me,n as Ne,o as Pe,p as Fe,q as Ie,r as Le,s as Re,t as ze,u as Be,v as Ve,w as V,y as He,z as H}from"./vendor-tanstack-CQ1aRjVa.js";import{t as Ue}from"./safeParse-DeaoCCWH.js";import{n as We,t as Ge}from"./setSessionStorage-B0bf71m4.js";import{$ as Ke,A as qe,At as Je,B as Ye,C as Xe,Ct as Ze,D as Qe,Dt as $e,E as et,Et as tt,F as nt,Ft as rt,H as it,I as at,It as U,L as ot,Lt as st,M as ct,Mt as lt,N as ut,Nt as dt,O as ft,Ot as pt,P as mt,Pt as ht,R as gt,S as _t,St as vt,T as yt,Tt as bt,U as xt,V as St,W as Ct,_t as wt,at as Tt,b as Et,bt as Dt,ct as Ot,dt as kt,et as At,ft as jt,gt as Mt,ht as Nt,it as Pt,j as Ft,jt as It,k as Lt,kt as Rt,lt as zt,mt as Bt,nt as Vt,ot as Ht,pt as Ut,rt as Wt,st as Gt,tt as Kt,ut as qt,v as Jt,vt as Yt,w as Xt,wt as Zt,x as Qt,xt as $t,y as en,yt as tn,z as nn}from"./vendor-ui-aE1tHcW7.js";import{t as W}from"./createLucideIcon-bziYxJli.js";import{a as rn,c as an,i as on,l as sn,n as cn,o as ln,r as un,s as dn,t as fn}from"./dialog-DTepachC.js";import{n as pn,r as mn,t as hn}from"./chevron-up-CFe8x5Bp.js";import{t as gn}from"./x-vYntCxm4.js";import{t as _n}from"./errorText-NpBmvk9I.js";import{n as vn,r as yn,t as bn}from"./setLocalStorage-D_kflv4U.js";import{t as xn}from"./useLocalStorage-BYoZF60G.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var G=e(te(),1);function Sn(){let[e,t]=(0,G.useState)(()=>({...u.getAllConnections()}));return(0,G.useEffect)(()=>u.listenToAllEntities((e,n)=>{t(t=>({...t,[n]:e}))}),[]),e}function Cn(){let e=u.calculateIdFromEntity(m),[t,n]=(0,G.useState)(u.getConnectionById(m));return(0,G.useEffect)(()=>u.listenToEntity(e,n),[e]),t}function wn(){return Cn()}function Tn(e,t){return!e||!(`fabricRole`in e)?!1:e.staffPermissions?e.staffPermissions.includes(t):e.fabricRole===`fabric_admin`||e.fabricRole===`super_user`}function En(e){let{user:t}=wn();return Tn(t,e)}function Dn(e){let t=m,{clusterId:n,instanceId:r}=B({strict:!1}),[i,a]=(0,G.useState)(u.getConnectionById(t??r??n));return(0,G.useEffect)(()=>u.listenToEntity(t,a),[t]),i}var K=re();function On({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card`,className:N(`bg-card text-card-foreground flex flex-col gap-4 rounded-2xl py-5 shadow-deep ring-1 ring-black/5 dark:ring-white/5`,e),...t})}function kn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-header`,className:N(`flex flex-col gap-1.5 px-6`,e),...t})}function An({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-title`,className:N(`leading-none text-lg`,e),...t})}function jn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-description`,className:N(`text-muted-foreground text-xs`,e),...t})}function Mn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-content`,className:N(`px-6`,e),...t})}function Nn(e){return e!==null&&!!e.username}function Pn(e){if(e&&!Nn(e)){let t=Object.keys(e.roles);if(t.length===1)return`/${t[0]}`}return`/`}var Fn={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};Fn.node;var In=W(Fn),Ln={name:`arrow-down-to-line`,size:24,node:[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]};Ln.node;var Rn=W(Ln),zn={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};zn.node;var Bn=W(zn),Vn={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};Vn.node;var Hn=W(Vn),Un={name:`arrow-up-down`,size:24,node:[[`path`,{d:`m21 16-4 4-4-4`,key:`f6ql7i`}],[`path`,{d:`M17 20V4`,key:`1ejh1v`}],[`path`,{d:`m3 8 4-4 4 4`,key:`11wl7u`}],[`path`,{d:`M7 4v16`,key:`1glfcx`}]]};Un.node;var Wn=W(Un),Gn={name:`arrow-up-from-line`,size:24,node:[[`path`,{d:`m18 9-6-6-6 6`,key:`kcunyi`}],[`path`,{d:`M12 3v14`,key:`7cf3v8`}],[`path`,{d:`M5 21h14`,key:`11awu3`}]]};Gn.node;var Kn=W(Gn),qn={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};qn.node;var Jn=W(qn),Yn={name:`book-open-text`,size:24,node:[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M16 13h2`,key:`weia3s`}],[`path`,{d:`M16 9h2`,key:`1n7gjm`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}],[`path`,{d:`M6 13h2`,key:`1cckiz`}],[`path`,{d:`M6 9h2`,key:`1k7j9f`}]]};Yn.node;var Xn=W(Yn),Zn={name:`box`,size:24,node:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]};Zn.node;var Qn=W(Zn),$n={name:`brush-cleaning`,size:24,node:[[`path`,{d:`m16 22-1-4`,key:`1ow2iv`}],[`path`,{d:`M19 14a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v1a1 1 0 0 0 1 1`,key:`11gii7`}],[`path`,{d:`M19 14H5l-1.973 6.767A1 1 0 0 0 4 22h16a1 1 0 0 0 .973-1.233z`,key:`bju7h4`}],[`path`,{d:`m8 22 1-4`,key:`s3unb`}]]};$n.node;var er=W($n),tr={name:`bug`,size:24,node:[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]};tr.node;var nr=W(tr),rr={name:`calendar-clock`,size:24,node:[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`path`,{d:`M21 7.338V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h2.338`,key:`7hb8p4`}],[`path`,{d:`M3 9h5.859`,key:`numkqi`}],[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]};rr.node;var ir=W(rr),ar={name:`chart-column-increasing`,size:24,node:[[`path`,{d:`M13 17V9`,key:`1fwyjl`}],[`path`,{d:`M18 17V5`,key:`sfb6ij`}],[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]],aliases:[`bar-chart-4`]};ar.node;var or=W(ar),sr={name:`chart-pie`,size:24,node:[[`path`,{d:`M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z`,key:`pzmjnu`}],[`path`,{d:`M21.21 15.89A10 10 0 1 1 8 2.83`,key:`k2fpak`}]],aliases:[`pie-chart`]};sr.node;var cr=W(sr),lr={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]};lr.node;var ur=W(lr),dr={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};dr.node;var fr=W(dr),pr={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};pr.node;var mr=W(pr),hr={name:`circle-check-big`,size:24,node:[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]],aliases:[`check-circle`]};hr.node;var gr=W(hr),_r={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};_r.node;var vr=W(_r),yr={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};yr.node;var br=W(yr),xr={name:`circle`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]};xr.node;var Sr=W(xr),Cr={name:`clipboard-check`,size:24,node:[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]};Cr.node;var wr=W(Cr),Tr={name:`clipboard`,size:24,node:[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}]]};Tr.node;var Er=W(Tr),Dr={name:`cloud-alert`,size:24,node:[[`path`,{d:`M12 12v4`,key:`tww15h`}],[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.128 16.949A7 7 0 1 1 15.71 8h1.79a1 1 0 0 1 0 9h-1.642`,key:`1namsd`}]]};Dr.node;var Or=W(Dr),kr={name:`cloud-download`,size:24,node:[[`path`,{d:`M12 13v8l-4-4`,key:`1f5nwf`}],[`path`,{d:`m12 21 4-4`,key:`1lfcce`}],[`path`,{d:`M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284`,key:`ui1hmy`}]],aliases:[`download-cloud`]};kr.node;var Ar=W(kr),jr={name:`cloud-upload`,size:24,node:[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]],aliases:[`upload-cloud`]};jr.node;var Mr=W(jr),Nr={name:`columns-3-cog`,size:24,node:[[`path`,{d:`M10.6 21H5a2 2 0 01-2-2V5a2 2 0 012-2h14a2 2 0 012 2v5.6`,key:`19s2bv`}],[`path`,{d:`m14.305 19.53.923-.382`,key:`3m78fa`}],[`path`,{d:`M15 3v7.6`,key:`mv9izd`}],[`path`,{d:`m15.229 16.852-.924-.383`,key:`qpfz85`}],[`path`,{d:`m16.852 15.228-.383-.923`,key:`5xggr7`}],[`path`,{d:`m16.852 20.772-.383.924`,key:`dpfhf9`}],[`path`,{d:`m19.148 15.228.383-.923`,key:`1reyyz`}],[`path`,{d:`m19.53 21.696-.382-.924`,key:`1goivc`}],[`path`,{d:`m20.773 16.852.922-.383`,key:`59dfo2`}],[`path`,{d:`m20.773 19.148.922.383`,key:`1lk755`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}]],aliases:[`columns-settings`,`table-config`]};Nr.node;var Pr=W(Nr),Fr={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};Fr.node;var Ir=W(Fr),Lr={name:`credit-card`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`2`,key:`ynyp8z`}],[`line`,{x1:`2`,x2:`22`,y1:`10`,y2:`10`,key:`1b3vmo`}],[`path`,{d:`M6 14h2`,key:`mk7k0u`}]]};Lr.node;var Rr=W(Lr),zr={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};zr.node;var Br=W(zr),Vr={name:`ellipsis`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]],aliases:[`more-horizontal`]};Vr.node;var Hr=W(Vr),Ur={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};Ur.node;var Wr=W(Ur),Gr={name:`eye-off`,size:24,node:[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]};Gr.node;var Kr=W(Gr),qr={name:`eye`,size:24,node:[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};qr.node;var Jr=W(qr),Yr={name:`file-up`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]};Yr.node;var Xr=W(Yr),Zr={name:`funnel-plus`,size:24,node:[[`path`,{d:`M13.354 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l1.218-1.348`,key:`8mvsmf`}],[`path`,{d:`M16 6h6`,key:`1dogtp`}],[`path`,{d:`M19 3v6`,key:`1ytpjt`}]]};Zr.node;var Qr=W(Zr),$r={name:`funnel-x`,size:24,node:[[`path`,{d:`M12.531 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l.427-.473`,key:`ol2ft2`}],[`path`,{d:`m16.5 3.5 5 5`,key:`15e6fa`}],[`path`,{d:`m21.5 3.5-5 5`,key:`m0lwru`}]],aliases:[`filter-x`]};$r.node;var ei=W($r),ti={name:`funnel`,size:24,node:[[`path`,{d:`M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z`,key:`sc7q7i`}]],aliases:[`filter`]};ti.node;var ni=W(ti),ri={name:`gauge`,size:24,node:[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]};ri.node;var ii=W(ri),ai={name:`git-graph`,size:24,node:[[`circle`,{cx:`5`,cy:`6`,r:`3`,key:`1qnov2`}],[`path`,{d:`M5 9v6`,key:`158jrl`}],[`circle`,{cx:`5`,cy:`18`,r:`3`,key:`104gr9`}],[`path`,{d:`M12 3v18`,key:`108xh3`}],[`circle`,{cx:`19`,cy:`6`,r:`3`,key:`108a5v`}],[`path`,{d:`M16 15.7A9 9 0 0 0 19 9`,key:`1e3vqb`}]]};ai.node;var oi=W(ai),si={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};si.node;var ci=W(si),li={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]};li.node;var ui=W(li),di={name:`handshake`,size:24,node:[[`path`,{d:`m11 17 2 2a1 1 0 1 0 3-3`,key:`efffak`}],[`path`,{d:`m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4`,key:`9pr0kb`}],[`path`,{d:`m21 3 1 11h-2`,key:`1tisrp`}],[`path`,{d:`M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3`,key:`1uvwmv`}],[`path`,{d:`M3 4h8`,key:`1ep09j`}]]};di.node;var fi=W(di),pi={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};pi.node;var mi=W(pi),hi={name:`info`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]};hi.node;var gi=W(hi),_i={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};_i.node;var vi=W(_i),yi={name:`key`,size:24,node:[[`path`,{d:`m2 21 9.6-9.6`,key:`9l79m3`}],[`path`,{d:`m7.5 15.5 2.3 2.3a1 1 0 0 1 0 1.4l-2.1 2.1a1 1 0 0 1-1.4 0L4 19`,key:`fw8biw`}],[`circle`,{cx:`15.5`,cy:`7.5`,r:`5.5`,key:`4wxmhb`}]]};yi.node;var bi=W(yi),xi={name:`layout-dashboard`,size:24,node:[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]};xi.node;var Si=W(xi),Ci={name:`life-buoy`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m4.93 4.93 4.24 4.24`,key:`1ymg45`}],[`path`,{d:`m14.83 9.17 4.24-4.24`,key:`1cb5xl`}],[`path`,{d:`m14.83 14.83 4.24 4.24`,key:`q42g0n`}],[`path`,{d:`m9.17 14.83-4.24 4.24`,key:`bqpfvv`}],[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}]]};Ci.node;var wi=W(Ci),Ti={name:`list-todo`,size:24,node:[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]};Ti.node;var Ei=W(Ti),Di={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};Di.node;var Oi=W(Di),ki={name:`lock-keyhole`,size:24,node:[[`circle`,{cx:`12`,cy:`16`,r:`1`,key:`1au0dj`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`,key:`6s8ecr`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`,key:`1pqi11`}]]};ki.node;var Ai=W(ki),ji={name:`lock`,size:24,node:[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]};ji.node;var Mi=W(ji),Ni={name:`log-in`,size:24,node:[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]};Ni.node;var Pi=W(Ni),Fi={name:`log-out`,size:24,node:[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]};Fi.node;var Ii=W(Fi),Li={name:`mail-check`,size:24,node:[[`path`,{d:`M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8`,key:`12jkf8`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}],[`path`,{d:`m16 19 2 2 4-4`,key:`1b14m6`}]]};Li.node;var Ri=W(Li),zi={name:`mail-warning`,size:24,node:[[`path`,{d:`M22 10.5V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h12.5`,key:`e61zoh`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}],[`path`,{d:`M20 14v4`,key:`1hm744`}],[`path`,{d:`M20 22v.01`,key:`12bgn6`}]]};zi.node;var Bi=W(zi),Vi={name:`mail`,size:24,node:[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]};Vi.node;var Hi=W(Vi),Ui={name:`map-pin`,size:24,node:[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]};Ui.node;var Wi=W(Ui),Gi={name:`menu`,size:24,node:[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]};Gi.node;var Ki=W(Gi),qi={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};qi.node;var Ji=W(qi),Yi={name:`moon`,size:24,node:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]};Yi.node;var Xi=W(Yi),Zi={name:`notepad-text`,size:24,node:[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`16`,height:`18`,x:`4`,y:`4`,rx:`2`,key:`1u9h20`}],[`path`,{d:`M8 10h6`,key:`3oa6kw`}],[`path`,{d:`M8 14h8`,key:`1fgep2`}],[`path`,{d:`M8 18h5`,key:`17enja`}]]};Zi.node;var Qi=W(Zi),$i={name:`octagon-alert`,size:24,node:[[`path`,{d:`M12 16h.01`,key:`1drbdi`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z`,key:`1fd625`}]],aliases:[`alert-octagon`]};$i.node;var ea=W($i),ta={name:`package`,size:24,node:[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]};ta.node;var na=W(ta),ra={name:`pencil`,size:24,node:[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]};ra.node;var ia=W(ra),aa={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};aa.node;var oa=W(aa),sa={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};sa.node;var ca=W(sa),la={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};la.node;var ua=W(la),da={name:`rocket`,size:24,node:[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]};da.node;var fa=W(da),pa={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};pa.node;var ma=W(pa),ha={name:`rotate-cw`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]};ha.node;var ga=W(ha),_a={name:`save`,size:24,node:[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]};_a.node;var va=W(_a),ya={name:`scale`,size:24,node:[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`m19 8 3 8a5 5 0 0 1-6 0zV7`,key:`zcdpyk`}],[`path`,{d:`M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1`,key:`1yorad`}],[`path`,{d:`m5 8 3 8a5 5 0 0 1-6 0zV7`,key:`eua70x`}],[`path`,{d:`M7 21h10`,key:`1b0cd5`}]]};ya.node;var ba=W(ya),xa={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};xa.node;var Sa=W(xa),Ca={name:`server`,size:24,node:[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]};Ca.node;var wa=W(Ca),Ta={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};Ta.node;var Ea=W(Ta),Da={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};Da.node;var Oa=W(Da),ka={name:`shield-x`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m14.5 9.5-5 5`,key:`17q4r4`}],[`path`,{d:`m9.5 9.5 5 5`,key:`18nt4w`}]],aliases:[`shield-close`]};ka.node;var Aa=W(ka),ja={name:`shield`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]};ja.node,W(ja);var Ma={name:`sliders-horizontal`,size:24,node:[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]};Ma.node;var Na=W(Ma),Pa={name:`square-pen`,size:24,node:[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]],aliases:[`pen-box`,`edit`,`pen-square`]};Pa.node;var Fa=W(Pa),Ia={name:`square`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]};Ia.node;var La=W(Ia),Ra={name:`sun`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]};Ra.node;var za=W(Ra),Ba={name:`table-2`,size:24,node:[[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]};Ba.node;var Va=W(Ba),Ha={name:`table`,size:24,node:[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}]]};Ha.node;var Ua=W(Ha),Wa={name:`tag`,size:24,node:[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`,key:`vktsd0`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`kqv944`}]]};Wa.node;var Ga=W(Wa),Ka={name:`terminal`,size:24,node:[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]};Ka.node;var qa=W(Ka),Ja={name:`ticket`,size:24,node:[[`path`,{d:`M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z`,key:`qn84l0`}],[`path`,{d:`M13 5v2`,key:`dyzc3o`}],[`path`,{d:`M13 17v2`,key:`1ont0d`}],[`path`,{d:`M13 11v2`,key:`1wjjxi`}]]};Ja.node;var Ya=W(Ja),Xa={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};Xa.node;var Za=W(Xa),Qa={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};Qa.node;var $a=W(Qa),eo={name:`user-minus`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}],[`line`,{x1:`22`,x2:`16`,y1:`11`,y2:`11`,key:`1shjgl`}]]};eo.node;var to=W(eo),no={name:`user-round`,size:24,node:[[`circle`,{cx:`12`,cy:`8`,r:`5`,key:`1hypcn`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`,key:`rfgkzh`}]],aliases:[`user-2`]};no.node;var ro=W(no),io={name:`user`,size:24,node:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]};io.node;var ao=W(io),oo={name:`users`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};oo.node;var so=W(oo),co={name:`zap`,size:24,node:[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]};co.node;var lo=W(co),uo=`An unexpected error occurred.`;function fo(e){return typeof e==`string`?e.length>0:typeof e==`number`||(0,G.isValidElement)(e)?!0:Array.isArray(e)?e.length>0&&e.every(fo):!1}function po(e){if(e instanceof Error)return e.message.length>0?e.message:uo;if(typeof e==`object`&&e&&`message`in e){let t=e.message;return fo(t)?t:uo}return fo(e)?e:uo}function mo({className:e,error:t,title:n,showReturnToHome:r,children:i}){let{user:a,isLoading:o}=Cn();Pn(a);let s=po(t);return(0,K.jsxs)(On,{className:N(`text-red p-5 border border-red rounded-md m-12 mt-36`,e),children:[(0,K.jsxs)(kn,{children:[(0,K.jsx)(An,{className:`text-2xl`,children:(0,K.jsx)(`h2`,{children:n??`Component Error`})}),(0,K.jsx)(jn,{children:s})]}),(0,K.jsxs)(Mn,{children:[i,r!==!1&&(a&&!o?(0,K.jsx)(V,{to:`/`,children:(0,K.jsxs)(P,{children:[` `,(0,K.jsx)(Bn,{}),` Return to Home`]})}):(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsxs)(P,{children:[` `,(0,K.jsx)(Bn,{}),` Go to Sign In Page`]})}))]})]})}function ho(){let{user:e,isLoading:t}=Cn();return Pn(e),(0,K.jsx)(`div`,{className:`flex items-center justify-center h-screen px-3`,children:(0,K.jsxs)(On,{className:`text-red p-5 border border-red rounded-md w-full max-w-md`,children:[(0,K.jsx)(kn,{children:(0,K.jsx)(An,{className:`text-2xl`,children:(0,K.jsx)(`h2`,{children:`Sorry, Page Not Found`})})}),(0,K.jsx)(Mn,{children:e&&!t?(0,K.jsx)(V,{to:`/`,children:(0,K.jsxs)(P,{children:[` `,(0,K.jsx)(Bn,{}),` Return to Home`]})}):(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsxs)(P,{children:[` `,(0,K.jsx)(Bn,{}),` Go Sign In Page`]})})})]})})}function go(){return`ontouchstart`in window||navigator.maxTouchPoints>0}function _o(e){let t=`Error`,n=`We had some trouble!`,r=!0,i=e,a=e;if(typeof e==`string`)n=e;else if(i?.response?.data){let e=i.response.data;if(typeof e==`string`)n=e;else if(typeof e.title==`string`&&e.title){typeof e.code==`string`&&e.code&&(t=e.code);let i=_n(e.detail);n=i?`${e.title}: ${i}`:e.title,r=!1}else n=_n(e.error)??_n(e.message)??n}else n=_n(a?.message)??n;let o=n;if(r&&n.includes(`:`)&&!n.startsWith(`{`)&&!n.startsWith(`[`)){let e=n.split(`:`);t=e.shift(),n=e.join(`:`)}return{title:t,description:n,message:o}}function vo(e){console.error(e);let{title:t,description:n}=_o(e),r=e,i=r?.code===`ECONNABORTED`||r?.code===`ETIMEDOUT`,a=r?.response?.status===403;U.error(t,{id:i?`request-timeout`:a?`request-forbidden`:void 0,description:n,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}var yo=new be({queryCache:new le({onError:vo}),mutationCache:new ye({onError:(e,t,n,r)=>{r.meta?.skipGlobalErrorToast||vo(e)}})});function bo({...e}){return(0,K.jsx)(Rt,{"data-slot":`dropdown-menu`,...e})}function xo({...e}){return(0,K.jsx)(ht,{"data-slot":`dropdown-menu-trigger`,...e})}function So({className:e,sideOffset:t=4,...n}){return(0,K.jsx)(pt,{children:(0,K.jsx)(Zt,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:N(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md`,e),...n})})}function Co({className:e,inset:t,variant:n=`default`,...r}){return(0,K.jsx)(bt,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:N(`focus:bg-accent focus:text-grey`,`data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10`,`dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive`,`data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground`,`relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm`,`outline-hidden select-none`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function wo({className:e,children:t,checked:n,...r}){return(0,K.jsxs)(Ze,{"data-slot":`dropdown-menu-checkbox-item`,className:N(`focus:bg-accent focus:text-accent-foreground relative flex cursor-pointer items-center gap-2 rounded-sm`,`py-1.5 pr-2 pl-8`,`text-sm outline-hidden`,`select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),checked:n,...r,children:[(0,K.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,K.jsx)(tt,{children:(0,K.jsx)(mn,{className:`size-4`})})}),t]})}function To({className:e,inset:t,...n}){return(0,K.jsx)($e,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:N(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function Eo({className:e,...t}){return(0,K.jsx)(Je,{"data-slot":`dropdown-menu-separator`,className:N(`bg-border -mx-1 my-1 h-px`,e),...t})}function Do({className:e,...t}){return(0,K.jsx)(`span`,{"data-slot":`dropdown-menu-shortcut`,className:N(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}function Oo({...e}){return(0,K.jsx)(It,{"data-slot":`dropdown-menu-sub`,...e})}function ko({className:e,inset:t,children:n,...r}){return(0,K.jsxs)(dt,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:N(`focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground`,`flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none`,`data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0`,`[&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground`,e),...r,children:[n,(0,K.jsx)(fr,{className:`ml-auto size-4`})]})}function Ao({className:e,...t}){return(0,K.jsx)(lt,{"data-slot":`dropdown-menu-sub-content`,className:N(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg`,e),...t})}var jo=`flex items-center gap-3 p-2 rounded-lg text-sm transition-colors`,Mo=`block p-2 rounded-lg text-sm transition-colors`,No={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-grey-700`},Po={className:`font-medium text-primary bg-primary/10 dark:text-white dark:bg-white/10`};function Fo({items:e,ariaLabel:t}){let{pathname:n}=Oe(),r=e=>e.exact?n===e.to:n.startsWith(e.to),i=e.find(r)??e[0],a=i.icon;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{className:`hidden md:flex flex-col gap-1`,"aria-label":t,children:e.map(e=>{let t=e.icon;return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(V,{to:e.to,className:jo,activeOptions:{exact:!!e.exact},activeProps:Po,inactiveProps:No,children:[(0,K.jsx)(t,{className:`size-4 shrink-0`}),e.label]}),e.children&&r(e)&&(0,K.jsx)(`div`,{className:`mt-1 ml-4 flex flex-col gap-1 border-l border-border pl-3`,children:e.children.map(e=>(0,K.jsx)(V,{to:e.to,className:Mo,activeOptions:{exact:!!e.exact},activeProps:Po,inactiveProps:No,children:e.label},e.to))})]},e.to)})}),(0,K.jsx)(`div`,{className:`md:hidden`,children:(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsxs)(P,{variant:`outline`,className:`w-full justify-between`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(a,{className:`size-4`}),i.label]}),(0,K.jsx)(pn,{className:`size-4`})]})}),(0,K.jsx)(So,{align:`start`,className:`w-(--radix-dropdown-menu-trigger-width)`,children:e.map(e=>{let t=e.icon;return[(0,K.jsx)(Co,{asChild:!0,children:(0,K.jsxs)(V,{to:e.to,className:`flex items-center gap-2`,children:[(0,K.jsx)(t,{className:`size-4`}),e.label]})},e.to),...e.children&&r(e)?e.children.map(e=>(0,K.jsx)(Co,{asChild:!0,children:(0,K.jsx)(V,{to:e.to,className:`flex items-center gap-2 pl-8`,children:e.label})},e.to)):[]]})})]})})]})}var Io=[{to:`/admin/notifications`,label:`Notifications`,icon:Jn,permission:`systemStatus:write`},{to:`/admin/regions`,label:`Regions`,icon:ci,permission:`region:read`},{to:`/admin/api-token`,label:`API Token`,icon:vi,permission:`apiToken:create`,ssoAccountOnly:!0}];function Lo(e){let t=e!==null&&`fabricRole`in e&&e.fabricRole===`super_user`;return Io.filter(n=>Tn(e,n.permission)&&!(n.ssoAccountOnly&&t))}function Ro(e){return Lo(e).length>0}function zo(){let{isLoading:e,user:t}=wn(),{pathname:n}=Oe();if(e)return null;let r=Lo(t);if(!r.length)return(0,K.jsx)(L,{to:`/`,replace:!0});let i=Io.find(e=>n.startsWith(e.to));return i&&!r.includes(i)?(0,K.jsx)(L,{to:r[0].to,replace:!0}):(0,K.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,K.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,K.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,K.jsx)(Fo,{items:r,ariaLabel:`Admin sections`})}),(0,K.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:(0,K.jsx)(He,{})})]})})}function Bo({className:e,text:t,centered:n,...r}){return(0,K.jsxs)(`div`,{className:`text-foreground h-full w-full ${e||``} ${n?`flex flex-col items-center justify-center`:``}`,...r,children:[(0,K.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`100px`,height:`100px`,alt:`HDB Dog Logo Loading`,className:`inline-block`}),(0,K.jsx)(`p`,{className:`pt-4`,children:t||`Loading...`})]})}function Vo(){return(0,K.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 126.644 96`,width:24,height:24,children:(0,K.jsx)(`path`,{fill:`currentColor`,d:`M81.15,0c-1.2376,2.1973-2.3489,4.4704-3.3591,6.794-9.5975-1.4396-19.3718-1.4396-28.9945,0-.985-2.3236-2.1216-4.5967-3.3591-6.794-9.0166,1.5407-17.8059,4.2431-26.1405,8.0568C2.779,32.5304-1.6914,56.3725.5312,79.8863c9.6732,7.1476,20.5083,12.603,32.0505,16.0884,2.6014-3.4854,4.8998-7.1981,6.8698-11.0623-3.738-1.3891-7.3497-3.1318-10.8098-5.1523.9092-.6567,1.7932-1.3386,2.6519-1.9953,20.281,9.547,43.7696,9.547,64.0758,0,.8587.7072,1.7427,1.3891,2.6519,1.9953-3.4601,2.0457-7.0718,3.7632-10.835,5.1776,1.97,3.8642,4.2683,7.5769,6.8698,11.0623,11.5419-3.4854,22.3769-8.9156,32.0509-16.0631,2.626-27.2771-4.496-50.9172-18.817-71.8548C98.9811,4.2684,90.1918,1.5659,81.1752.0505l-.0252-.0505ZM42.2802,65.4144c-6.2383,0-11.4159-5.6575-11.4159-12.6535s4.9755-12.6788,11.3907-12.6788,11.5169,5.708,11.4159,12.6788c-.101,6.9708-5.026,12.6535-11.3907,12.6535ZM84.3576,65.4144c-6.2637,0-11.3907-5.6575-11.3907-12.6535s4.9755-12.6788,11.3907-12.6788,11.4917,5.708,11.3906,12.6788c-.101,6.9708-5.026,12.6535-11.3906,12.6535Z`})})}function Ho(){let e=`studio`,t=`Harper Studio`;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`img`,{src:`/harper-${e}_black.png`,alt:t,className:`w-64 hidden md:inline-block dark:hidden`}),(0,K.jsx)(`img`,{src:`/harper-${e}_white.png`,alt:t,className:`w-64 hidden md:dark:inline-block`}),(0,K.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`50px`,height:`44px`,alt:`Harper`,className:`inline-block md:hidden`})]})}var Uo=j(`inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-auto`,{variants:{variant:{default:`border-primary bg-primary/40 text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-secondary bg-secondary/40 text-secondary-foreground [a&]:hover:bg-secondary/90`,warning:`border-yellow bg-yellow/40 text-foreground [a&]:hover:bg-yellow/90`,success:`border-green bg-green/40 text-foreground [a&]:hover:bg-green/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}});function Wo({className:e,variant:t,asChild:n=!1,...r}){return(0,K.jsx)(n?st:`span`,{"data-slot":`badge`,className:N(Uo({variant:t}),e),...r})}function Go({className:e,children:t,...n}){return(0,K.jsxs)(tn,{"data-slot":`scroll-area`,className:N(`relative`,e),...n,children:[(0,K.jsx)(vt,{"data-slot":`scroll-area-viewport`,className:`focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1`,children:t}),(0,K.jsx)(Ko,{}),(0,K.jsx)(Yt,{})]})}function Ko({className:e,orientation:t=`vertical`,...n}){return(0,K.jsx)(Dt,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:N(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,K.jsx)($t,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}var qo=[`notification-acks`];function Jo(){let e=yn(vn.AckedNotificationIds,[]);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function Yo(e){yo.setQueryData(qo,e);try{bn(vn.AckedNotificationIds,e)}catch(e){console.warn(`[notifications] could not persist acknowledgements`,e)}}function Xo(){return z({queryKey:qo,queryFn:Jo,staleTime:1/0,gcTime:1/0,initialData:Jo})}function Zo(e){Yo(Array.from(new Set([...Jo(),e])))}function Qo(e){Yo(Jo().filter(t=>t!==e))}function $o(){let{data:e}=H(Xo());return(0,G.useMemo)(()=>new Set(e??[]),[e])}var es={critical:{severity:`critical`,label:`Critical`,Icon:ea,badgeVariant:`destructive`,bannerClass:`bg-destructive/10 border-destructive/40 text-foreground`,iconClass:`text-destructive`},warning:{severity:`warning`,label:`Warning`,Icon:$a,badgeVariant:`warning`,bannerClass:`bg-yellow/10 border-yellow/40 text-foreground`,iconClass:`text-yellow`},info:{severity:`info`,label:`Info`,Icon:gi,badgeVariant:`secondary`,bannerClass:`bg-secondary/20 border-secondary/50 text-foreground`,iconClass:`text-secondary-foreground`}},ts=new Set([`critical`,`error`,`outage`,`incident`,`down`,`danger`]),ns=new Set([`warning`,`warn`,`maintenance`,`degraded`,`notice`]),rs=new Set([`info`,`information`,`informational`,`success`,`ok`]);function is(e){let t=(e??``).trim().toLowerCase();return ns.has(t)?`warning`:rs.has(t)?`info`:(ts.has(t),`critical`)}function as(e){return es[is(e)]}var os={critical:0,warning:1,info:2};function ss(e){if(e==null)return{kind:`absent`};if(typeof e==`number`)return Number.isFinite(e)?{kind:`valid`,ms:e}:{kind:`invalid`};if(typeof e!=`string`)return{kind:`invalid`};let t=e.trim();if(!t)return{kind:`absent`};if(/^\d+$/.test(t))return{kind:`valid`,ms:Number(t)};let n=Date.parse(t);return Number.isNaN(n)?{kind:`invalid`}:{kind:`valid`,ms:n}}function cs(e){let t=ss(e);return t.kind===`valid`?t.ms:null}function ls(e){return new Date(e).toLocaleString()}function us(e,t){let n=ss(e.startAt),r=ss(e.endAt);return n.kind===`invalid`||r.kind===`invalid`?{state:`expired`,label:`Schedule unavailable`}:n.kind===`valid`&&t<n.ms?{state:`upcoming`,label:`Starts ${ls(n.ms)}`}:r.kind===`valid`&&t>r.ms?{state:`expired`,label:`Ended ${ls(r.ms)}`}:r.kind===`valid`?{state:`active`,label:`Active until ${ls(r.ms)}`}:{state:`active`,label:`Active`}}var ds=new Set([`http`,`https`,`mailto`]);function fs(e){if(!e)return null;let t=e.trim();if(!t)return null;if(t.startsWith(`//`))return{kind:`external`,href:t};let n=t.match(/^([a-z][a-z0-9+.-]*):/i)?.[1]?.toLowerCase();return n?ds.has(n)?{kind:`external`,href:t}:null:{kind:`internal`,href:t.startsWith(`/`)?t:`/${t}`}}function ps({url:e,className:t,children:n,onNavigate:r}){let i=fs(e);return i?i.kind===`external`?(0,K.jsxs)(`a`,{href:i.href,target:`_blank`,rel:`noreferrer noopener`,className:t,children:[n??`Learn more`,(0,K.jsx)(Wr,{className:`inline size-3 ml-1 align-[-1px]`})]}):(0,K.jsx)(V,{to:i.href,className:t,onClick:r,children:n??`View details`}):null}var ms=[`system-status`];async function hs(){let{data:e}=await M.get(`/SystemStatus/`);return Array.isArray(e)?e:[]}function gs(){return z({queryKey:ms,queryFn:hs,refetchInterval:6e4,staleTime:3e4})}var _s=3e4,vs=new Set,ys=Date.now(),bs=null;function xs(e){return vs.add(e),bs||=(ys=Date.now(),setInterval(()=>{ys=Date.now(),vs.forEach(e=>e())},_s)),()=>{vs.delete(e),vs.size===0&&bs&&(clearInterval(bs),bs=null)}}function Ss(){return(0,G.useSyncExternalStore)(xs,()=>ys,()=>ys)}function Cs(){return H(gs())}function ws(){let[e,t]=(0,G.useState)(()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);return(0,G.useEffect)(()=>{let e=window.matchMedia(`(prefers-color-scheme: dark)`),n=e=>t(e.matches?`dark`:`light`);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}var Ts=(0,G.createContext)([`system`,()=>{}]);function Es({children:e}){let[t,n]=xn(vn.Theme,`system`),r=ws();return(0,G.useEffect)(()=>{let e=t===`dark`||t===`system`&&r===`dark`;document.documentElement.classList.toggle(`dark`,e)},[t,r]),(0,K.jsx)(Ts.Provider,{value:[t,n],children:e})}function Ds(){return(0,G.useContext)(Ts)}var Os=[{value:`light`,icon:(0,K.jsx)(za,{className:`size-4`}),label:`Light`},{value:`system`,icon:(0,K.jsx)(Ji,{className:`size-4`}),label:`System`},{value:`dark`,icon:(0,K.jsx)(Xi,{className:`size-4`}),label:`Dark`}];function ks(){let[e,t]=Ds();return(0,K.jsx)(`div`,{className:`flex items-center bg-muted dark:bg-black rounded-xl p-0.5 gap-0.5`,children:Os.map(({value:n,icon:r,label:i})=>(0,K.jsx)(`button`,{type:`button`,title:i,onClick:()=>t(n),className:`p-1.5 rounded-lg transition-colors ${e===n?`bg-background text-foreground shadow-xs`:`text-muted-foreground hover:text-foreground`}`,children:r},n))})}function As({className:e,...t}){return(0,K.jsx)(`div`,{className:N(`absolute top-full left-0 isolate z-50 flex justify-center`),children:(0,K.jsx)(wt,{"data-slot":`navigation-menu-viewport`,className:N(`origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]`,e),...t})})}function js({className:e,children:t,viewport:n=!0,...r}){return(0,K.jsxs)(Mt,{"data-slot":`navigation-menu`,"data-viewport":n,className:N(`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,e),...r,children:[t,n&&(0,K.jsx)(As,{})]})}function Ms({className:e,...t}){return(0,K.jsx)(Ut,{"data-slot":`navigation-menu-item`,className:N(`relative`,e),...t})}function Ns({className:e,...t}){return(0,K.jsx)(Bt,{"data-slot":`navigation-menu-link`,className:N(`hover:text-foreground dark:hover:text-white ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 flex flex-col gap-1 rounded-sm p-2 text-sm transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4`,e),...t})}function Ps({className:e,...t}){return(0,K.jsx)(Nt,{"data-slot":`navigation-menu-list`,className:N(`group flex flex-1 list-none items-center justify-center gap-1`,e),...t})}function Fs({delayDuration:e=0,...t}){return(0,K.jsx)(qt,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function Is({...e}){return(0,K.jsx)(Fs,{children:(0,K.jsx)(kt,{"data-slot":`tooltip`,...e})})}function Ls({...e}){return(0,K.jsx)(jt,{"data-slot":`tooltip-trigger`,...e})}function Rs({className:e,sideOffset:t=0,arrowClassName:n,children:r,...i}){return(0,K.jsx)(zt,{children:(0,K.jsxs)(Ot,{"data-slot":`tooltip-content`,sideOffset:t,className:N(`bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance`,e),...i,children:[r,(0,K.jsx)(Gt,{className:N(`bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`,n)})]})})}function zs(){let e=`v5.3.0-beta.4`,t=e.startsWith(`v`)?`https://github.com/HarperFast/studio/releases/tag/${e}`:`https://github.com/HarperFast/studio/releases`;return(0,K.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,children:(0,K.jsxs)(`span`,{className:N(Uo({variant:`default`}),`text-xs inline-block ml-2 align-text-top`),children:[e,` BETA`]})})}function Bs(e={}){let{instanceId:t,clusterId:n}=B({strict:!1});return o({id:m,...e})}function Vs(e={}){let{instanceId:t,clusterId:n}=B({strict:!1});return{instanceClient:o({id:m,...e}),entityType:`instance`}}function q(e={}){let{instanceId:t,clusterId:n}=B({strict:!1});return(0,G.useMemo)(()=>Hs({instanceId:t,clusterId:n,...e}),[e.instanceId??t,e.clusterId??n,e.operationsUrl,e.port,e.secure,e.disableFabricConnect,e.forceFabricConnect])}function Hs({instanceId:e,clusterId:t,...n}){let r=m;if(!r)throw Error(`id could not be automatically calculated in useInstanceClientIdParams`);return{instanceClient:o({id:r,...n}),entityId:r,entityType:`instance`}}function Us(){localStorage.clear()}function Ws(){sessionStorage.clear()}async function Gs(){u.setUserForEntity(m,null),yo.getQueryCache().clear(),Us(),Ws(),await yo.invalidateQueries({refetchType:`none`})}async function Ks(e){await u.signOutFromPotentiallyAuthenticatedInstances(),await d({...e,entityId:m})}function qs(){let e=Bs();return R({mutationFn:()=>Ks({instanceClient:e}),onSuccess:Gs})}function Js(e){return!!e}var Ys={className:`text-foreground dark:text-white font-semibold`};function Xs(){let{mutate:e}=qs(),t=se(),{user:n}=Cn(),r=Ro(n),i=fe(),a=(0,G.useCallback)(()=>{e(void 0,{onSuccess:async()=>{U.success(`Success`,{description:`You have been signed out successfully.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),t({to:`/sign-in`}),i.invalidate()}})},[e,i,t]),o=(0,G.useMemo)(()=>[!1,!1,{to:`https://docs.harperdb.io/docs`,target:`_blank`,icon:(0,K.jsx)(Xn,{}),text:`Docs`,textBreakpoint:`md`},{to:`https://github.com/HarperFast/studio/issues`,target:`_blank`,icon:(0,K.jsx)(nr,{}),text:`Report an Issue`,textBreakpoint:`lg`},{to:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,icon:(0,K.jsx)(Vo,{}),text:`Discord`,textBreakpoint:`lg`},{onClick:a,icon:(0,K.jsx)(Ii,{}),text:`Sign Out`,textBreakpoint:`md`}].filter(Js),[a,r]);return n?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(tc,{menuItems:o}),(0,K.jsx)($s,{menuItems:o})]}):(0,K.jsx)(Qs,{})}function Zs(e){return e.items!==void 0}function Qs(){return(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`inline-block`,children:[(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsx)(Ho,{})}),(0,K.jsx)(zs,{})]}),(0,K.jsx)(js,{children:(0,K.jsxs)(Ps,{className:`text-muted-foreground dark:text-grey-400`,children:[(0,K.jsx)(Ms,{children:(0,K.jsx)(Ns,{asChild:!0,children:(0,K.jsxs)(V,{to:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noreferrer noopener`,className:`flex-row items-center`,children:[(0,K.jsx)(Xn,{}),` `,(0,K.jsx)(`span`,{className:`hidden md:inline-block`,children:`Docs`})]})})}),(0,K.jsx)(Ms,{children:(0,K.jsx)(ks,{})}),(0,K.jsx)(Ms,{children:(0,K.jsx)(Ns,{asChild:!0,children:(0,K.jsxs)(V,{to:`/sign-in`,className:`flex-row items-center`,activeProps:Ys,children:[(0,K.jsx)(Pi,{}),` Sign In`]})})})]})})]})}function $s({menuItems:e}){let{user:t}=Cn();return Pn(t),(0,K.jsx)(`div`,{className:`hidden md:[@media(hover:hover)]:block xl:block`,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`inline-block`,children:[(0,K.jsx)(V,{to:`/`,children:(0,K.jsx)(Ho,{})}),(0,K.jsx)(zs,{})]}),(0,K.jsx)(js,{children:(0,K.jsxs)(Ps,{className:`text-muted-foreground dark:text-grey-400`,children:[e.map(e=>Zs(e)?!!e.items.length&&(0,K.jsx)(`div`,{className:`bg-muted dark:bg-black rounded-2xl flex`,children:e.items.map(e=>(0,K.jsx)(ec,{menuItem:e},e.text))},e.text):(0,K.jsx)(ec,{menuItem:e},e.text)),!1,(0,K.jsx)(Ms,{children:(0,K.jsx)(ks,{})})]})})]})})}function ec({menuItem:e}){return(0,K.jsx)(Ms,{className:`text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,children:(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(Ns,{asChild:!0,children:(0,K.jsxs)(V,{to:e.to,onClick:e.onClick,"aria-label":e.text,className:`flex-row items-center`,target:e.target,activeProps:e.to?Ys:void 0,children:[e.icon,(0,K.jsx)(`span`,{className:`hidden ${e.textBreakpoint}:inline-block`,children:e.text}),(0,K.jsx)(`span`,{className:`${e.textBreakpoint}:hidden`,children:`\xA0`})]})})}),(0,K.jsx)(Rs,{side:`bottom`,className:`${e.textBreakpoint}:hidden`,children:e.text})]})})}function tc({menuItems:e}){let{user:t}=Cn();Pn(t);let[n,r]=(0,G.useState)(!1),i=(0,G.useCallback)(()=>r(e=>!e),[]),a=(0,G.useCallback)(()=>r(!1),[]);return(0,K.jsxs)(`div`,{className:`md:[@media(hover:hover)]:hidden xl:hidden`,id:`mobile-menu`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(V,{to:`/`,children:(0,K.jsx)(Ho,{})}),(0,K.jsx)(zs,{}),(0,K.jsxs)(`div`,{className:`flex items-center`,children:[!1,(0,K.jsxs)(`button`,{type:`button`,className:`shadow-xs text-muted-foreground dark:text-grey-400 hover:text-foreground dark:hover:text-white hover:bg-muted dark:hover:bg-black-dark`,onClick:i,children:[(0,K.jsx)(`span`,{className:`sr-only`,children:n?`Close menu`:`Open menu`}),n?(0,K.jsx)(gn,{}):(0,K.jsx)(Ki,{})]})]})]}),(0,K.jsx)(`div`,{className:`${n?`fixed`:`hidden`} top-40 bottom-0 left-0 right-0 bg-foreground/20 dark:bg-black-dark dark:opacity-70`,onClick:a}),(0,K.jsxs)(`div`,{className:`${n?`block`:`hidden`} md:hidden z-50 space-y-1 pb-3 bg-card border-b border-border dark:bg-black-dark dark:border-none absolute left-0 top-full w-full rounded-b-md`,children:[(0,K.jsx)(`div`,{className:`flex justify-end px-3 pt-2`,children:(0,K.jsx)(ks,{})}),e.map(e=>Zs(e)?!!e.items.length&&(0,K.jsx)(`div`,{className:`bg-muted dark:bg-black pl-10 pr-2 py-2`,children:e.items.map(e=>(0,K.jsx)(nc,{menuItem:e,onClick:a},e.text))},e.text):(0,K.jsx)(nc,{menuItem:e,onClick:a},e.text))]})]})}function nc({menuItem:e,onClick:t}){let n=(0,G.useCallback)(()=>{e.onClick?.(),t()},[e,t]);return(0,K.jsxs)(V,{to:e.to,onClick:n,target:e.target,className:`flex flex-row px-3 py-2 text-base font-medium rounded-md text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,activeProps:e.to?Ys:void 0,children:[e.icon,(0,K.jsx)(`span`,{className:`ml-4`,children:e.text})]})}function rc(){let{isLoading:e}=Cn(),{createCluster:t}=me({strict:!1}),[,n]=xn(vn.SavedClusterState,null);return(0,G.useEffect)(()=>{t&&n(t)},[t,n]),e?(0,K.jsx)(Bo,{className:`fixed z-50 translate-1/2`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,K.jsx)(Xs,{})}),(0,K.jsx)(`main`,{children:(0,K.jsx)(He,{})})]})}function ic(){let e=location.hash;return e?e.startsWith(`#/`)?e.slice(1):e:`/`}var ac=[`/`,`/forgot-password`,`/reset-password`,`/sign-in`,`/sign-up`,`/verify-email`];function oc(){let e=ic();return!ac.includes(e)&&{redirect:e}}var sc=`me|email|token|access_token|id_token|refresh_token|code|secret|password|api[-_]?key`,cc=String.raw`[^&#\s",<>[\]{}|\\]+`,lc=String.raw`[\w.%+!~*'()-]+(?:@|%40)[\w-]+(?:\.[\w-]+)*\.\w{2,}`;new RegExp(String.raw`([?&](?:${sc})=)${cc}`,`gi`),new RegExp(String.raw`([?&](?:${sc})=)${cc}|${lc}`,`gi`);var uc=String.raw`[\w-]+-extension`;new RegExp(String.raw`^${uc}://`),new RegExp(String.raw`^\s*at\s.* @ ((?:blob:)?(?:https?|${uc})://\S*)\s*$`);var dc=!1;function fc(){(0,G.useEffect)(()=>{dc||=!0},[])}function pc(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(ke,{}),(0,K.jsx)(He,{})]})}var mc=_e()({component:pc}),hc=I({getParentRoute:()=>mc,id:`_dashboardLayout`,component:rc,beforeLoad:({context:e})=>{let t=e.authentication[m];if(t&&!t.isLoading&&!t.user)throw ce({to:`/sign-in`,search:oc()})}}),gc=I({getParentRoute:()=>hc,path:`admin`,component:zo});I({getParentRoute:()=>gc,path:`/`,beforeLoad:()=>{throw ce({to:`/admin/notifications`})}}),I({getParentRoute:()=>gc,path:`notifications`,head:()=>({meta:[{title:`Notifications — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./notifications-DUGWrWoO.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])),`NotificationsAdminIndex`)}),I({getParentRoute:()=>gc,path:`regions`,head:()=>({meta:[{title:`Regions — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./regions-CB-_2m7M.js`),__vite__mapDeps([15,1,3,2,4,5,6,7,8,9,10,11,12,13,16])),`RegionsIndex`)}),I({getParentRoute:()=>gc,path:`api-token`,head:()=>({meta:[{title:`API Token — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./apiToken-BEvbFPMc.js`),__vite__mapDeps([17,1,2,3,4,5,6,7])),`ApiTokenIndex`)});function _c(){let[e,t]=(0,G.useState)(()=>typeof document<`u`&&document.documentElement.classList.contains(`dark`));return(0,G.useEffect)(()=>{let e=document.documentElement;t(e.classList.contains(`dark`));let n=new MutationObserver(()=>{t(e.classList.contains(`dark`))});return n.observe(e,{attributes:!0,attributeFilter:[`class`]}),()=>n.disconnect()},[]),e?`dark`:`light`}var vc={dark:[`M 246 426 C 211 389 184 377 154 386 C 72 399 44 492 0 576`,`M 658 383 C 693 318 748 286 795 286 C 905 281 957 477 952 583`,`M 750 438 C 915 444 1083 562 1183 766`,`M 0 576 C 119 529 273 575 372 766`,`M 1196 766 C 1291 526 1514 442 1690 432 C 1844 430 1973 530 2054 651`],light:[`M 258 355 C 212 300 171 289 136 313 C 74 352 37 434 0 542`,`M 633 350 C 684 251 744 193 790 200 C 882 201 967 380 951 548`,`M 756 405 C 891 368 1055 510 1169 766`,`M 0 542 C 112 440 299 588 356 766`,`M 1285 766 C 1391 564 1556 518 1710 505 C 1840 504 1971 571 2054 668`]},yc={dark:[[246,426,0,576],[658,383,952,583],[750,438,1183,766],[0,576,372,766],[1196,766,2054,651]],light:[[258,355,0,542],[633,350,951,548],[756,405,1169,766],[0,542,356,766],[1285,766,2054,668]]},bc=[{path:0,duration:12,phase:3},{path:1,duration:16,phase:6},{path:1,duration:16,phase:14},{path:2,duration:14,phase:4},{path:3,duration:18,phase:11},{path:4,duration:22,phase:5},{path:4,duration:22,phase:16}];function xc({theme:e}){let t=(0,G.useId)();return(0,K.jsxs)(`svg`,{className:`auth-energy-particles`,viewBox:`0 0 2054 766`,"aria-hidden":`true`,focusable:`false`,children:[(0,K.jsxs)(`defs`,{children:[(0,K.jsxs)(`radialGradient`,{id:`${t}-fade`,children:[(0,K.jsx)(`stop`,{offset:`0`,stopColor:`black`}),(0,K.jsx)(`stop`,{offset:`1`,stopColor:`white`})]}),yc[e].map(([e,n,r,i],a)=>(0,K.jsxs)(`mask`,{id:`${t}-${a}`,maskUnits:`userSpaceOnUse`,x:`0`,y:`0`,width:`2054`,height:`766`,children:[(0,K.jsx)(`rect`,{width:`2054`,height:`766`,fill:`white`}),(0,K.jsx)(`circle`,{cx:e,cy:n,r:`60`,fill:`url(#${t}-fade)`}),(0,K.jsx)(`circle`,{cx:r,cy:i,r:`60`,fill:`url(#${t}-fade)`})]},a))]}),vc[e].map((e,n)=>(0,K.jsx)(`path`,{className:`auth-energy-line`,d:e,mask:`url(#${t}-${n})`},e)),bc.map(({path:t,duration:n,phase:r},i)=>(0,K.jsxs)(`g`,{className:`auth-energy-particle`,opacity:`0`,children:[(0,K.jsx)(`circle`,{r:`12`,fill:`currentColor`,opacity:`0.06`}),(0,K.jsx)(`circle`,{r:`6`,fill:`currentColor`,opacity:`0.16`}),(0,K.jsx)(`circle`,{r:`2.2`,fill:`currentColor`}),(0,K.jsx)(`animateMotion`,{path:vc[e][t],dur:`${n}s`,begin:`-${r}s`,repeatCount:`indefinite`}),(0,K.jsx)(`animate`,{attributeName:`opacity`,values:`0;0.85;0.85;0`,keyTimes:`0;0.12;0.82;1`,dur:`${n}s`,begin:`-${r}s`,repeatCount:`indefinite`})]},`${e}-${i}`))]})}var Sc=[{title:`App`,description:`Build faster`,Icon:Qn},{title:`Database`,description:`Store smarter`,Icon:Br},{title:`Cache`,description:`Move quicker`,Icon:lo},{title:`Messaging`,description:`Stay connected`,Icon:Hi}];function Cc(){let e=_c();return(0,K.jsxs)(`div`,{className:`fabric-sign-in-page`,children:[(0,K.jsxs)(`header`,{className:`sign-in-header`,children:[(0,K.jsxs)(`div`,{className:`sign-in-brand`,children:[(0,K.jsx)(V,{to:`/`,"aria-label":`Harper Fabric home`,children:(0,K.jsx)(Ho,{})}),(0,K.jsx)(zs,{})]}),(0,K.jsxs)(`nav`,{"aria-label":`Authentication navigation`,children:[(0,K.jsxs)(`a`,{className:`sign-in-docs`,href:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noreferrer noopener`,children:[(0,K.jsx)(Xn,{"aria-hidden":`true`}),` `,(0,K.jsx)(`span`,{children:`Docs`})]}),(0,K.jsx)(ks,{})]})]}),(0,K.jsxs)(`main`,{className:`sign-in-content`,children:[(0,K.jsxs)(`section`,{className:`sign-in-story`,"aria-labelledby":`sign-in-story-title`,children:[(0,K.jsxs)(`div`,{className:`sign-in-story-copy`,children:[(0,K.jsxs)(`h2`,{id:`sign-in-story-title`,children:[`One runtime.`,(0,K.jsx)(`br`,{}),(0,K.jsx)(`span`,{children:`Endless possibilities.`})]}),(0,K.jsxs)(`p`,{children:[`Build, deploy, and scale distributed applications`,(0,K.jsx)(`br`,{className:`sign-in-desktop-break`}),` `,`with built-in data, cache, and messaging.`]}),(0,K.jsx)(`ul`,{className:`sign-in-features`,children:Sc.map(({title:e,description:t,Icon:n})=>(0,K.jsxs)(`li`,{children:[(0,K.jsx)(`span`,{className:`sign-in-feature-icon`,children:(0,K.jsx)(n,{"aria-hidden":`true`})}),(0,K.jsx)(`strong`,{children:e}),(0,K.jsx)(`span`,{children:t})]},e))})]}),(0,K.jsx)(`div`,{className:`sign-in-artwork`,children:(0,K.jsxs)(`div`,{className:`auth-hero-panorama`,children:[(0,K.jsx)(`img`,{className:`auth-hero-globe`,src:`/auth/fabric-globe-${e}.png`,alt:``,"aria-hidden":`true`}),(0,K.jsx)(xc,{theme:e}),(0,K.jsx)(`img`,{className:`auth-hero-platform`,src:`/auth/fabric-platform-${e}.png`,width:`2054`,height:`766`,alt:`App, database, cache, and messaging together on a globally distributed platform.`,fetchPriority:`high`})]})}),(0,K.jsxs)(`div`,{className:`sign-in-story-footer`,children:[(0,K.jsx)(`span`,{children:`Free to deploy`}),(0,K.jsx)(`span`,{"aria-hidden":`true`}),(0,K.jsx)(`span`,{children:`Live in minutes`})]})]}),(0,K.jsx)(`section`,{className:`sign-in-card`,"aria-label":`Account access`,children:(0,K.jsx)(He,{})})]})]})}function wc(){(0,G.useEffect)(()=>{},[])}var Tc=[`gmail.com`,`yahoo.com`,`hotmail.com`,`outlook.com`,`icloud.com`,`aol.com`,`protonmail.com`,`mail.com`,`zoho.com`,`yandex.com`,`gmx.com`,`live.com`,`msn.com`,`me.com`,`inbox.com`];function Ec(e){if(!e||!e.includes(`@`))return null;let t=e.split(`@`).pop()||``;if(!t)return null;for(let e of Tc)if(t===e||t.endsWith(`.`+e))return null;return t}var Dc=`utm_`;function Oc(e){let t=new URLSearchParams(e),n=Array.from(t.keys()).filter(e=>e.toLowerCase().startsWith(Dc));if(n.length===0)return e;for(let e of n)t.delete(e);let r=t.toString();return r?`?${r}`:``}function kc(){if(typeof location>`u`||typeof history>`u`)return;let{search:e,pathname:t,hash:n,origin:r}=location,i=Oc(e);i!==e&&history.replaceState(history.state,``,`${r}${t}${i}${n}`)}function Ac({icon:e,title:t,subtitle:n,loading:r=!1}){return(0,K.jsxs)(`div`,{className:`auth-heading`,children:[(0,K.jsx)(`span`,{className:`auth-status-icon`,children:(0,K.jsx)(e,{"aria-hidden":`true`,className:r?`auth-loading-icon`:void 0})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h1`,{children:t}),n&&(0,K.jsx)(`p`,{className:`auth-heading-subtitle`,children:n})]})]})}var jc=null;function Mc(){let e=se(),t=fe(),n=ue(),{redirect:r}=me({strict:!1});return(0,G.useEffect)(()=>{jc||=(async function(){let i=await l().catch(()=>null);if(!i)U.error(`We were not able to verify your sign-in. Please try signing in again.`,{duration:1e4}),await e({to:`/sign-in`});else{u.setUserForEntity(m,i),kc();let a=Pn(i);Ec(i.email),await n.invalidateQueries({queryKey:f,refetchType:`none`}),await t.invalidate(),await e({to:r?.startsWith(`/`)?r:a})}jc=null})()},[]),(0,K.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`auth-form flex flex-col gap-4`,children:[(0,K.jsx)(Ac,{icon:Oi,title:`Checking...`,subtitle:`We’re confirming your sign-in.`,loading:!0}),(0,K.jsx)(`div`,{className:`auth-links`,children:(0,K.jsx)(V,{className:`text-sm`,to:`/sign-in`,children:`Try signing in again`})})]})}var Nc=new Map;function Pc(e){if(!e)return``;if(Nc.has(e))return Nc.get(e);let t=e.replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim();if(!t)return Nc.set(e,``),``;let n=t.match(/([A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+|[0-9]+)/g);if(!n)return Nc.set(e,``),``;let r=[];for(let e=0;e<n.length;e++){let t=n[e],i=e+1<n.length?n[e+1]:void 0;/^[A-Z]{2,}$/.test(t)&&i&&/[A-Z]*s$/.test(i)||/^[A-Z]$/.test(t)&&i!==void 0&&/^[A-Z]s$/.test(i)?(r.push(t+i),e++):r.push(t)}let i=r.map(Fc).join(` `);return Nc.set(e,i),i}function Fc(e){return/^[A-Z]{2,3}s?$/.test(e)||/^[0-9]+$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function Ic({restartRequired:e}){let t=Oe(),{organization:n,instance:r,cluster:i}=ve({strict:!1}),a=(0,G.useMemo)(()=>{let e=t.pathname.split(`/`).filter(e=>e&&e.length>0),a=[(0,K.jsxs)(V,{to:`/`,children:[(0,K.jsx)(mi,{"aria-hidden":`true`,className:`size-5 shrink-0`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Home`})]},`home`)];for(let t=0;t<e.length;t++){let o=e[t];if(o===`instance`)continue;let s=`/${e.slice(0,t+1).join(`/`)}`,c=Pc(o);o===`databases`&&e.length===t+3?(c=e[t+2],t+=2):c.startsWith(`Org `)?c=n?.name||`Org`:c.startsWith(`Clu `)?(c=i?.name||`Cluster`,e[t+1]===`instance`&&(s+=`/instances`)):c.startsWith(`Ins `)?c=r?.name?.split(`.`)?.shift()||`Instance`:c===`Apis`&&(c=`APIs`),a.push((0,K.jsx)(`svg`,{fill:`currentColor`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`size-5 shrink-0 text-grey`,children:(0,K.jsx)(`path`,{d:`M5.555 17.776l8-16 .894.448-8 16-.894-.448z`})},a.length+`-dash`),(0,K.jsx)(V,{to:s,className:`text-xs md:text-sm font-medium hover:text-grey truncate max-w-48`,children:c},s))}return a},[t.pathname,i?.name,r?.name,n?.name]);return(0,K.jsxs)(`div`,{role:`list`,className:`flex items-center space-x-2 xl:space-x-4 sm:max-w-9/10 max-w-[calc(100%-56px)]`,children:[...a,e&&(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsxs)(`div`,{className:`text-xs italic text-muted-foreground`,children:[`* Restart `,(0,K.jsx)(`span`,{className:`hidden lg:inline-block`,children:`Requested`})]})}),(0,K.jsxs)(Rs,{side:`bottom`,children:[`This `,`Instance`,` is requesting a restart, when convenient, to apply your latest changes.`,(0,K.jsx)(`br`,{}),`You can do this from the Apps or Config pages.`]})]})]})}var Lc=Vt,Rc=(0,G.createContext)({}),zc=(0,G.createContext)({});function Bc(){let e=(0,G.useContext)(Rc),t=(0,G.useContext)(zc),{getFieldState:n}=Tt(),r=Ht({name:e.name}),i=n(e.name,r);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}}function J({...e}){let{error:t,formItemId:n,formDescriptionId:r,formMessageId:i}=Bc();return(0,K.jsx)(st,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${r} ${i}`:`${r}`,"aria-invalid":!!t,...e})}function Y({...e}){return(0,K.jsx)(Rc,{value:{name:e.name},children:(0,K.jsx)(Kt,{...e})})}function X({className:e,...t}){let n=(0,G.useId)();return(0,K.jsx)(zc,{value:{id:n},children:(0,K.jsx)(`div`,{"data-slot":`form-item`,className:N(`grid gap-2`,e),...t})})}function Vc({className:e,...t}){return(0,K.jsx)(At,{"data-slot":`label`,className:N(`text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function Z({className:e,...t}){let{error:n,formItemId:r}=Bc();return(0,K.jsx)(Vc,{"data-slot":`form-label`,"data-error":!!n,className:N(`data-[error=true]:text-destructive`,e),htmlFor:r,...t})}function Q({className:e,...t}){let{error:n,formMessageId:r}=Bc(),i=n?String(n?.message):t.children;return i?(0,K.jsx)(`p`,{"data-slot":`form-message`,id:r,className:N(`text-destructive text-sm`,e),...t,children:i}):null}function $({className:e,type:t,...n}){return(0,K.jsx)(`input`,{type:t,"data-slot":`input`,className:N(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
|
|
3
3
|
selection:text-primary-foreground
|
|
4
4
|
dark:aria-invalid:outline-destructive dark:aria-invalid:ring-destructive/50 ring-ring/10
|
|
5
5
|
dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 aria-invalid:outline-destructive/60
|
|
@@ -9,7 +9,7 @@ import{i as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{_ as n,a as r,b as i
|
|
|
9
9
|
focus-visible:ring-1 focus-visible:outline-none focus-visible:ring-purple disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50
|
|
10
10
|
aria-invalid:focus-visible:ring-[1px] aria-invalid:focus-visible:outline-none md:text-sm dark:aria-invalid:focus-visible:ring-1`,e),...n})}var Hc=[`RUNNING`],Uc=[`TERMINATING`,`TERMINATED`,`REMOVED`];function Wc(){return`https://fabric.harper.fast/#/?createCluster=`+encodeURIComponent(JSON.stringify({deploymentDescription:`Self-Hosted`,performanceDescription:`Self Supported and Managed`,instances:[{secure:String(location.protocol===`https:`),fqdn:location.hostname,port:parseInt(location.port,10)}]}))}async function Gc({username:e,password:t,instanceClient:n,entityId:i}){let a={username:e,password:t};u.checkForBasicAuth(i)&&(n.defaults.auth=a,n.defaults.withCredentials=!1);let{data:{message:o}}=await n.post(`/`,{operation:`login`,username:e,password:t});if(!u.checkForBasicAuth(i))try{let e=await r({instanceClient:n});return u.setLastConnectMode(i,`direct`),{message:o,user:e}}catch(e){console.error(`Failed to get user after login, trying basic auth`,e)}try{n.defaults.auth=a,n.defaults.withCredentials=!1;let e=await r({instanceClient:n,auth:a});return u.flagForBasicAuth(i,a),u.setLastConnectMode(i,`direct`),{message:o,user:e}}catch(e){throw n.defaults.auth=void 0,n.defaults.withCredentials=!0,e}}function Kc(){return R({mutationFn:Gc})}function qc({cluster:e,instance:t,instanceParams:n}){let r=se(),i=fe(),{redirect:a}=me({strict:!1}),{mutate:o,isPending:s}=Kc();return{isPending:s,submitForm:(0,G.useCallback)(async s=>{o({...s,...n},{onSuccess:async({message:n,user:o})=>{if(U.success(n),e?.instances?.length&&!t)for(let t of e.instances)u.setUserForEntity(t,o);let s=m;if(!s)throw Error(`Sign in failed due to missing cluster or instance.`);u.setUserForEntity(s,o),i.invalidate(),await r({to:a?.startsWith(`/`)?a:`/`})}})},[e,t,n,r,a,i,o])}}function Jc(e){if($c(e)||el(e))return`warning`;if(Xc(e))return`success`;switch(e){case`STOPPED`:return`destructive`;case`TERMINATING`:case`TERMINATED`:case`FAILED`:case`REMOVED`:case`ERROR`:return`destructive`;default:return`default`}}function Yc(e){switch(e){case`STOPPED`:case`STOPPING`:case`STARTING`:case`RESTARTING`:return!0;default:return!1}}function Xc(e){switch(e){case`RUNNING`:case`UPDATED`:return!0;default:return!1}}function Zc(e){switch(e){case`FAILED`:return!0;default:return!1}}function Qc(e){switch(e){case`TERMINATED`:return!0;default:return!1}}function $c(e){switch(e){case`CLONE_PENDING`:case`PENDING_UPGRADE`:return!0;default:return!1}}function el(e){switch(e){case`PROVISIONING`:case`CLONING`:case`CLONE_READY`:case`UPDATING_HDB_NODES`:case`DRAINING`:case`UPDATING`:return!0;default:return!1}}function tl(e){let t=(e?.instances??[]).filter(e=>!(e.status&&Uc.includes(e.status)));return t.length>0&&t.every(e=>Xc(e.status))}function nl(e){return e?.response?.status??e?.status}function rl(e){return nl(e)===403}function il(e){let t=nl(e);return t===400||t===403}function al(e){return t=>rl(t.state.error)?!1:e??!1}function ol(e=3){return(t,n)=>!il(n)&&t<e}async function sl(e){let{data:t}=await M.get(`/Cluster/${e}`);return t}async function cl(e,t){let{queryKey:n}=ll(t);await e.cancelQueries({queryKey:n,exact:!0}),e.setQueryData(n,e=>e&&{...e,resetPassword:!1})}function ll(e,t){return z({queryKey:[e],queryFn:()=>sl(e),retry:!1,staleTime:1900,enabled:!!e,refetchInterval:al(t?t===!0?1e4:t:void 0)})}var ul=k({error:`Please enter a valid email address.`}).toLowerCase().trim(),dl=A().nonempty({error:`Please enter your password.`}),fl=A().nonempty({error:`Please enter a username.`}),pl=S({username:fl,password:dl}),ml=S({email:ul,password:dl});function hl({entityId:e,instanceClient:t}){return z({queryKey:[`health`,e],queryFn:async()=>{try{return await t.get(`/health`),!0}catch{return!1}},retry:2,refetchInterval:5e3})}var gl=[`localhost`,`127.0.0.1`],_l=function(e){return e.MixedLoopback=`MixedLoopback`,e.InsecureCookieOutsideChromeAndFirefox=`InsecureCookieOutsideChromeAndFirefox`,e}({});function vl(e,t,n){if(!n||!t||!e)return null;let r=new URL(n).hostname,i=gl.includes(t),a=gl.includes(r);if(i&&a&&r!==t)return`MixedLoopback`;if(!i&&a){let t=e.indexOf(`Chrome`)>=0,n=e.indexOf(`Firefox`)>=0;if(!t&&!n)return`InsecureCookieOutsideChromeAndFirefox`}return null}function yl(){let{clusterId:e,instanceId:t}=B({strict:!1}),{data:n}=H(ll(e,!0)),r=(0,G.useMemo)(()=>t&&n&&n?.instances?.find(e=>e.id===t)||void 0,[n,t]),i=(0,G.useMemo)(()=>n?.status&&Hc.includes(n.status),[n?.status]),a=`instance`,o=(0,G.useMemo)(()=>n?r?(u.flagForFabricConnect(r.id,!1),p(r)):(u.flagForFabricConnect(n.id,!1),c(n)):null,[n,r]),s=r?.id??n?.id;(0,G.useEffect)(()=>{r?u.setUserForEntity(r,null):n&&u.setUserForEntity(n,null)},[s]);let l=q({operationsUrl:o}),d=(0,G.useMemo)(()=>o?.includes(`localhost`)||o?.includes(`127.0.0.1`),[o]),f=(0,G.useMemo)(()=>vl(navigator.userAgent,location.hostname,o),[o]),{data:m}=H(hl(l)),h=Pt({resolver:Ke(pl),defaultValues:{username:``,password:``}}),{control:g,handleSubmit:_}=h,{submitForm:v,isPending:b}=qc({cluster:n,instance:r,instanceParams:l});if(!t&&n&&!n?.fqdn)return(0,K.jsx)(L,{to:`../instances`,replace:!0});if(n?.resetPassword){let e=i&&tl(n);return(0,K.jsx)(L,{to:`/${n.organizationId}/${n.id}/${e?`finish-setup`:`starting-up`}`,replace:!0})}return(0,K.jsxs)(K.Fragment,{children:[!1,(0,K.jsx)(`div`,{className:y(`min-h-screen`,`items-center justify-center flex`),children:(0,K.jsxs)(`div`,{className:`text-foreground w-xs py-8`,children:[(0,K.jsxs)(`h1`,{className:`text-2xl font-light`,children:[`Sign in to Harper `,`Local`]}),(0,K.jsx)(Lc,{...h,children:(0,K.jsxs)(`form`,{id:`auth-${a}-signin-form`,name:`auth-${a}-signin-form`,onSubmit:_(v),className:`my-4`,children:[(0,K.jsx)(Y,{control:g,name:`username`,render:({field:e})=>(0,K.jsxs)(X,{className:`my-4`,children:[(0,K.jsx)(Z,{children:`Username`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{autoComplete:`username`,autoFocus:!0,type:`text`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:g,name:`password`,render:({field:e})=>(0,K.jsxs)(X,{className:`my-4`,children:[(0,K.jsx)(Z,{children:`Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(P,{disabled:b,type:`submit`,variant:`submit`,className:`w-full my-2`,children:`Sign In`}),m===!1&&(0,K.jsxs)(`div`,{className:`p-4 mt-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300`,role:`alert`,children:[(0,K.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` This `,a,` is not responding to GET`,` `,(0,K.jsxs)(`a`,{href:`${o}health`,className:`underline`,target:`_blank`,children:[o,`health`]}),` `,`checks.`,(0,K.jsxs)(`ol`,{className:`list-decimal ml-8 mt-2`,children:[(0,K.jsx)(`li`,{children:`Is the server running?`}),(0,K.jsxs)(`li`,{children:[`Have you`,` `,(0,K.jsx)(`a`,{href:`https://docs.harperdb.io/docs/developers/security/configuration#cors`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`enabled CORS`}),` `,`for the operations API?`]}),d&&(0,K.jsxs)(`li`,{children:[`Have you allowed`,` `,(0,K.jsx)(`a`,{href:`https://www.google.com/search?q=How+do+I+enable+local+network+access+in+my+browser%3F`,className:`underline`,target:`_blank`,rel:`noreferrer`,children:`local network access`}),` `,`in your browser?`]})]})]}),f===_l.MixedLoopback&&(0,K.jsxs)(`div`,{className:`p-4 mt-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300`,role:`alert`,children:[(0,K.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` `,`Your login might not work because you're mixing 127.0.0.1 and localhost. Pick one or the other.`]}),f===_l.InsecureCookieOutsideChromeAndFirefox&&(0,K.jsxs)(`div`,{className:`p-4 mt-4 text-sm text-yellow-800 rounded-lg bg-yellow-50 dark:bg-gray-800 dark:text-yellow-300`,role:`alert`,children:[(0,K.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` `,`Your login might not work because your browser doesn't consider localhost to be secure, so it doesn't pass the cookies along. Firefox or Chromium based browsers should pass the cookies properly.`]}),(0,K.jsxs)(`div`,{className:`p-4 mt-4 text-sm rounded-lg bg-purple-950`,role:`alert`,children:[(0,K.jsx)(`span`,{className:`font-medium`,children:`Did you know?`}),` `,`You can add this instance to your Harper account to manage it remotely.`,(0,K.jsx)(`div`,{className:`text-center pt-2`,children:(0,K.jsx)(V,{to:Wc(),target:`_blank`,children:(0,K.jsx)(P,{type:`button`,variant:`positive`,children:`Connect to Harper Fabric`})})})]})]})})]})})]})}function bl({type:e=`text`,passwordLabel:t=`password`,...n}){let[r,i]=(0,G.useState)(!1),a=e===`email`?Hi:e===`password`?Ai:ro;return(0,K.jsxs)(`div`,{className:`auth-input`,children:[(0,K.jsx)(J,{children:(0,K.jsx)($,{...n,type:e===`password`&&r?`text`:e})}),(0,K.jsx)(a,{"aria-hidden":`true`,className:`auth-input-icon`}),e===`password`&&(0,K.jsx)(`button`,{type:`button`,className:`auth-password-toggle`,"aria-label":`${r?`Hide`:`Show`} ${t}`,disabled:n.disabled,onClick:()=>i(e=>!e),children:r?(0,K.jsx)(Kr,{"aria-hidden":`true`}):(0,K.jsx)(Jr,{"aria-hidden":`true`})})]})}function xl({overEmail:e}){return(0,K.jsx)(`a`,{href:e?`mailto:support@harperdb.io`:`https://discord.com/channels/1415002037439041710/1415002038286286994`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`Contact us`})}var Sl=`The server is temporarily unavailable. It isn't a problem with the details you entered — please try again in a moment.`,Cl=`Something went wrong on our end. It isn't a problem with the details you entered, and trying again may not help.`,wl=`Too many attempts. Please wait a short while before trying again.`,Tl=`We didn't get an answer from the server, so we can't tell whether that went through.`,El=new Set([503]),Dl=new Set([502,504]),Ol=new Set([_.ERR_NETWORK,_.ETIMEDOUT,_.ECONNABORTED]);function kl(e,t){let n=`${Tl} ${t}`,r=e,i=r?.response?.status;if(typeof i==`number`)return i===429?wl:i<500?void 0:Dl.has(i)?n:El.has(i)?Sl:Cl;let a=r?.code;return typeof a==`string`&&Ol.has(a)?n:void 0}function Al(e,t){return kl(e,t)??_o(e).message}var jl=240,Ml=/[\uD800-\uDBFF]$/;function Nl(e){return`${e.slice(0,jl).replace(Ml,``).trimEnd()}…`}function Pl({message:e,suggestSupport:t}){if(!e)return null;let n=e.length>jl?Nl(e):e;return(0,K.jsxs)(`p`,{role:`alert`,"data-slot":`form-message`,className:`text-destructive text-sm break-words`,children:[n,(t||e===`Something went wrong on our end. It isn't a problem with the details you entered, and trying again may not help.`)&&(0,K.jsxs)(K.Fragment,{children:[` `,(0,K.jsx)(xl,{overEmail:!0}),` if this keeps happening.`]})]})}function Fl(){return!1}var Il;function Ll(){return Il??=Vl().catch(e=>{throw Il=void 0,e}),Il}function Rl(){Fl()&&Ll().catch(()=>{})}async function zl(e){}var Bl=8e3;function Vl(){return new Promise((e,t)=>{if(window.grecaptcha?.enterprise){e(window.grecaptcha.enterprise);return}let n=document.createElement(`script`);n.src=`https://www.google.com/recaptcha/enterprise.js?render=undefined`,n.async=!0,n.defer=!0;let r=e=>{clearTimeout(i),n.remove(),t(Error(e))},i=setTimeout(()=>r(`reCAPTCHA script load timed out`),Bl);n.addEventListener(`load`,()=>{clearTimeout(i),window.grecaptcha?.enterprise?e(window.grecaptcha.enterprise):r(`reCAPTCHA script loaded without exposing its API`)}),n.addEventListener(`error`,()=>r(`reCAPTCHA script failed to load`)),document.head.appendChild(n)})}var Hl=`verification failed`,Ul=[`error`,`message`,`title`,`detail`];function Wl(e){let t=e?.response;if(t?.status!==403)return!1;let n=t.data;return typeof n==`string`?Gl(n):Ul.some(e=>Gl(n?.[e]))}function Gl(e){return typeof e==`string`&&e.toLowerCase().includes(Hl)}var Kl=`Verification failed. Please try again.`,ql=`We could not run the verification check. Disable any ad blocker for this page, then reload and try again.`,Jl=2;function Yl(e){(0,G.useEffect)(()=>{Rl()},[]);let t=(0,G.useRef)(!1),[n,r]=(0,G.useState)(!1),i=(0,G.useCallback)(async()=>{r(!0);try{let n=await zl(e);return t.current=Fl()&&!n,n}finally{r(!1)}},[e]),a=(0,G.useRef)(0),[o,s]=(0,G.useState)(!1);return{getToken:i,describeCaptchaError:(0,G.useCallback)(e=>{if(!Wl(e)){a.current=0,s(!1);return}return a.current+=1,s(a.current>=Jl),t.current?ql:Kl},[]),minting:n,supportSuggested:o}}async function Xl({email:e,captchaToken:t}){let{data:n}=await M.post(`/ForgotPassword/`,{email:e,...t?{captchaToken:t}:{}});if(n)return n;throw Error(`Something went wrong`)}function Zl(){return R({mutationFn:e=>Xl(e),meta:{skipGlobalErrorToast:!0}})}var Ql=`Check your inbox before requesting another link.`,$l=S({email:ul});function eu(){let e=se(),{me:t}=me({strict:!1}),n=Pt({resolver:Ke($l),defaultValues:{email:t||``}}),r=n.watch(`email`),{setFocus:i,control:a,handleSubmit:o}=n,[s,c]=(0,G.useState)(),l=(0,G.useCallback)(()=>c(void 0),[]);(0,G.useEffect)(()=>{i(`email`)},[i]);let{mutate:u,isPending:d}=Zl(),f=Yl(`forgot_password`),p=async t=>{c(void 0);let n=await f.getToken();u({...t,captchaToken:n},{onSuccess:t=>{U.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),e({to:`/sign-in`,search:{me:r}})},onError:e=>{let t=f.describeCaptchaError(e);if(t){c(t);return}let n=kl(e,Ql);if(n){console.error(e),c(n);return}vo(e)}})};return(0,K.jsxs)(`div`,{className:`auth-form`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light`,children:`Enter your account email`}),(0,K.jsx)(`p`,{className:`text-sm pt-1`,children:`If a matching account exists, we'll send you a password reset link.`}),(0,K.jsx)(Lc,{...n,children:(0,K.jsxs)(`form`,{id:`auth-forgot-password-form`,name:`auth-forgot-password-form`,onSubmit:o(p,l),className:`sign-in-form`,children:[(0,K.jsx)(Y,{control:a,name:`email`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`Email`}),(0,K.jsx)(bl,{disabled:d,type:`email`,autoComplete:`email`,placeholder:`you@company.com`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Pl,{message:s,suggestSupport:f.supportSuggested}),(0,K.jsx)(P,{type:`submit`,variant:`submit`,disabled:d||f.minting,className:`sign-in-submit`,children:`Send Password Reset Email`})]})}),(0,K.jsxs)(`div`,{className:`auth-links`,children:[(0,K.jsx)(V,{className:`text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:r},children:`Sign in to your account`}),(0,K.jsx)(V,{className:`text-sm hover:text-blue-300`,to:`/sign-up`,search:{me:r},children:`Sign up for free`})]})]})}var tu=async({token:e,password:t})=>{let{data:n}=await M.put(`/ResetPassword/`,{token:e,newPassword:t});return n};function nu(){return R({mutationFn:e=>tu(e)})}var ru=S({password:dl.min(8,{error:`Password must be at least 8 characters long.`}).max(50,{error:`Password cannot be longer than 50 characters.`}),confirmPassword:A()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function iu(){let{token:e}=me({strict:!1}),t=se();(0,G.useEffect)(()=>{e||t({to:`/sign-in`})},[e,t]);let n=Pt({resolver:Ke(ru),defaultValues:{password:``,confirmPassword:``}}),{setFocus:r,control:i,handleSubmit:a}=n;(0,G.useEffect)(()=>{r(`password`)},[r]);let{mutate:o,isPending:s}=nu(),c=(0,G.useCallback)(async n=>{o({token:e,password:n.password},{onSuccess:()=>{U.success(`Success`,{description:`Your password has been reset successfully.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),t({to:`/sign-in`})}})},[t,o,e]);return(0,K.jsxs)(`div`,{className:`auth-form`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light`,children:`Reset Password`}),(0,K.jsx)(Lc,{...n,children:(0,K.jsxs)(`form`,{id:`auth-reset-password-form`,name:`auth-reset-password-form`,className:`sign-in-form`,onSubmit:a(c),children:[(0,K.jsx)(Y,{control:i,name:`password`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`New Password`}),(0,K.jsx)(bl,{disabled:s,type:`password`,autoComplete:`new-password`,...e,placeholder:`Your new password`,passwordLabel:`new password`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:i,name:`confirmPassword`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`Confirm Password`}),(0,K.jsx)(bl,{disabled:s,type:`password`,autoComplete:`new-password`,...e,placeholder:`Confirm your password`,passwordLabel:`password confirmation`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(P,{variant:`submit`,type:`submit`,disabled:s,className:`sign-in-submit`,children:`Submit New Password`})]})})]})}function au(...e){let t=e.flat(1);return t.map((e,n)=>typeof e==`string`?ou(e,n!==0,n!==t.length-1):e).join(`/`)}function ou(e,t=!0,n=!0){let r=t&&e[0]===`/`,i=n&&e[e.length-1]===`/`;return r&&i?e.slice(1,-1):r?e.slice(1):i?e.slice(0,-1):e}var su=`/#/check-oauth`;function cu(e,t){let n=au(`/`,`oauth`,e,`login`);return t?`${n}?redirect=${encodeURIComponent(t)}`:n}function lu(){return(0,K.jsx)(Wo,{className:`pointer-events-none absolute -top-2 right-3 z-10 rounded-full border-primary bg-primary px-1.5 py-0 text-[10px] font-medium text-white shadow-sm`,children:`Last used`})}function uu({text:e,disabled:t,onClick:n,lastUsed:r=!1,compact:i=!1}){let a=(0,K.jsxs)(`a`,{"aria-label":e,href:t?void 0:cu(`github`,su),role:t?`link`:void 0,tabIndex:t?0:void 0,onClick:n,"aria-disabled":t||void 0,className:y(`github-signin-btn`,t&&`opacity-50 cursor-default`),children:[(0,K.jsx)(`img`,{src:`/github/GitHub_Invertocat_White.svg`,alt:``,className:`github-icon`}),i?`GitHub`:e]});return r?(0,K.jsxs)(`div`,{className:`relative flex flex-col`,children:[a,(0,K.jsx)(lu,{})]}):a}function du({text:e,disabled:t,onClick:n,lastUsed:r=!1,compact:i=!1}){let a=(0,K.jsxs)(`a`,{"aria-label":e,href:t?void 0:cu(`google`,su),role:t?`link`:void 0,tabIndex:t?0:void 0,onClick:n,"aria-disabled":t||void 0,className:y(`gsi-material-button`,t&&`opacity-50 cursor-default`),children:[(0,K.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-state`}),(0,K.jsxs)(`div`,{className:`gsi-material-button-content-wrapper`,children:[(0,K.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-icon`,children:(0,K.jsxs)(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 48 48`,xmlnsXlink:`http://www.w3.org/1999/xlink`,className:`block`,children:[(0,K.jsx)(`path`,{fill:`#EA4335`,d:`M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z`}),(0,K.jsx)(`path`,{fill:`#4285F4`,d:`M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z`}),(0,K.jsx)(`path`,{fill:`#FBBC05`,d:`M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z`}),(0,K.jsx)(`path`,{fill:`#34A853`,d:`M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z`}),(0,K.jsx)(`path`,{fill:`none`,d:`M0 0h48v48H0z`})]})}),(0,K.jsx)(`span`,{className:`gsi-material-button-contents`,children:i?`Google`:e}),(0,K.jsx)(`span`,{className:`hidden`,children:e})]})]});return r?(0,K.jsxs)(`div`,{className:`relative flex flex-col`,children:[a,(0,K.jsx)(lu,{})]}):a}function fu(e){if(!v(e)||e.response?.status!==403)return!1;let t=e.response.data,n=typeof t==`string`?t:_n(t?.error)??_n(t?.message)??_n(t?.title)??``;return/verif/i.test(n)}var pu=async({email:e})=>{let{data:t}=await M.post(`/ResendVerificationEmail/`,{email:e});return t};function mu(){return R({mutationFn:e=>pu(e)})}function hu(){let e=se(),t=ue(),n=fe(),{redirect:r}=me({strict:!1}),[i,a]=(0,G.useState)(),{mutate:o,isPending:s}=gu(),{mutate:c}=mu();return{clearSubmitError:(0,G.useCallback)(()=>a(void 0),[]),isPending:s,submitError:i,submitForm:(0,G.useCallback)(i=>{a(void 0),o(i,{onSuccess:async i=>{u.setUserForEntity(m,i),kc();let a=Pn(i);Ec(i.email),await t.invalidateQueries({queryKey:f,refetchType:`none`}),n.invalidate(),await e({to:r?.startsWith(`/`)?r:a})},onError:t=>{if(fu(t)){c({email:i.email},{onSuccess:()=>U.info(`Verify your email to finish signing in`,{description:`We sent a new verification link to ${i.email}.`})}),e({to:`/verifying?email=`+encodeURIComponent(i.email)});return}a(Al(t,`Try signing in again.`))}})},[e,t,r,c,n,o])}}function gu(){return R({mutationFn:e=>_u(e),meta:{skipGlobalErrorToast:!0},onError:e=>{fu(e)||console.error(e)}})}async function _u({email:e,password:t}){let{data:n}=await M.post(`/Login/`,{email:e,password:t});if(n)return n;throw Error(`Something went wrong`)}function vu(){let[e,t]=xn(vn.RememberSignInMethod,!0),[n,r]=xn(vn.LastUsedSignInMethod,null),i=(0,G.useCallback)(t=>{e&&(bn(vn.LastUsedSignInMethod,t),r(t))},[e,r]),a=(0,G.useCallback)(()=>{r(null),t(!1)},[r,t]),o=(0,G.useCallback)(()=>{t(!0)},[t]);return{lastUsed:e?n:null,remember:e,recordMethod:i,disable:a,enable:o}}var yu=`mx-auto mt-3 block text-xs text-muted-foreground underline hover:text-foreground dark:text-inherit dark:hover:text-blue-300`;function bu(){let{me:e}=me({strict:!1}),t=Pt({resolver:Ke(ml),defaultValues:{email:e||``,password:``}}),{handleSubmit:n,control:r}=t,i=t.watch(`email`),{submitForm:a,isPending:o,submitError:s,clearSubmitError:c}=hu(),{lastUsed:l,remember:u,recordMethod:d,disable:f,enable:p}=vu();return(0,K.jsxs)(`div`,{className:`auth-form fabric-sign-in`,children:[(0,K.jsx)(`h1`,{children:`Welcome back`}),(0,K.jsx)(`p`,{className:`sign-in-subtitle`,children:`Sign in to Harper Fabric`}),(0,K.jsx)(Lc,{...t,children:(0,K.jsxs)(`form`,{id:`auth-signin-form`,name:`auth-signin-form`,onSubmit:n(a,c),className:`sign-in-form`,children:[(0,K.jsx)(Y,{control:r,name:`email`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`Email`}),(0,K.jsx)(bl,{type:`email`,placeholder:`you@company.com`,autoFocus:!0,autoComplete:`email`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r,name:`password`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`Password`}),(0,K.jsx)(bl,{type:`password`,placeholder:`Your password`,autoComplete:`current-password`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Pl,{message:s}),(0,K.jsxs)(P,{type:`submit`,variant:`submit`,className:`sign-in-submit`,disabled:o,children:[`Sign In `,(0,K.jsx)(Hn,{"aria-hidden":`true`})]}),(0,K.jsx)(`div`,{className:`sign-in-recovery`,children:(0,K.jsx)(V,{to:`/forgot-password`,search:{me:i},children:`Forgot password?`})})]})}),(0,K.jsx)(`div`,{className:`sign-in-divider`,children:(0,K.jsx)(`span`,{children:`or continue with`})}),(0,K.jsxs)(`div`,{className:`sign-in-providers`,children:[(0,K.jsx)(du,{text:`Sign in with Google`,compact:!0,lastUsed:l===`google`,onClick:()=>d(`google`)}),(0,K.jsx)(uu,{text:`Sign in with GitHub`,compact:!0,lastUsed:l===`github`,onClick:()=>d(`github`)})]}),(0,K.jsxs)(`p`,{className:`sign-in-signup`,children:[`Don’t have an account? `,(0,K.jsx)(V,{to:`/sign-up`,search:{me:i},children:`Sign up for free`})]}),u?l&&(0,K.jsx)(`button`,{type:`button`,onClick:f,className:yu,children:`On a shared device? Forget my sign-in method.`}):(0,K.jsx)(`button`,{type:`button`,onClick:p,className:yu,children:`Remember my last sign-in method on this device.`})]})}var xu=/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžæÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,'-]+$/u;async function Su({captchaToken:e,...t}){let{data:n}=await M.post(`/User/`,{...t,...e?{captchaToken:e}:{}});if(n)return n;throw Error(`Something went wrong`)}function Cu(){return R({mutationFn:e=>Su(e),meta:{skipGlobalErrorToast:!0},onError:e=>console.error(e)})}var wu=`Check your email for a verification link before signing up again.`,Tu=S({email:ul.max(80,{error:`Email cannot be longer than 80 characters.`}),firstname:A().trim().min(2,{error:`Please enter your first name.`}).regex(xu,{error:`First name can only contain letters, spaces, and hyphens.`}).max(40,{error:`First name cannot be longer than 40 characters.`}),lastname:A().trim().min(2,{error:`Please enter your last name.`}).regex(xu,{error:`Last name can only contain letters, spaces, and hyphens.`}).max(80,{error:`Last name cannot be longer than 80 characters.`}),password:dl.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:A(),acceptTerms:D().refine(e=>e===!0,{message:`You must accept the Privacy Policy and Terms of Service.`})}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function Eu(){let e=se(),{email:t,me:n}=me({strict:!1}),[r,i]=(0,G.useState)(!1),a=Pt({resolver:Ke(Tu),defaultValues:{firstname:``,lastname:``,email:n||t||``,password:``,confirmPassword:``,acceptTerms:!1}}),o=a.watch(`email`),s=a.watch(`acceptTerms`),{setFocus:c,setError:l,clearErrors:u,control:d,handleSubmit:f,formState:p}=a,m=p.errors.root?.message;(0,G.useEffect)(()=>{c(`firstname`)},[c]);let{mutate:h,isPending:g}=Cu(),_=Yl(`signup`),v=(0,G.useCallback)(async t=>{let{confirmPassword:n,acceptTerms:r,...i}=t;u(`root`);let a=await _.getToken();h({...i,captchaToken:a},{onSuccess:()=>{Ec(i.email),kc(),e({to:`/verifying?email=`+encodeURIComponent(i.email)})},onError:e=>{l(`root`,{type:`server`,message:_.describeCaptchaError(e)??Al(e,wu)})}})},[u,e,l,h,_]),y=(0,G.useCallback)(e=>{if(!s)return i(!0),setTimeout(()=>i(!1),1e3),e.preventDefault(),!1},[s]),b=(0,K.jsx)(Y,{control:d,name:`acceptTerms`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex flex-row items-start space-x-3 space-y-0 p-1 transition-colors duration-300 ${r?`bg-red-500/20 animate-pulse rounded`:``}`,children:[(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`size-4 rounded border-gray-300 bg-white text-purple-600 focus:ring-purple-500`,checked:e.value,onChange:e.onChange})}),(0,K.jsxs)(`div`,{className:`space-y-1 leading-none`,children:[(0,K.jsxs)(Z,{className:`text-xs font-normal`,children:[`I accept the`,` `,(0,K.jsx)(`a`,{href:`https://www.harper.fast/resources/privacy-policy`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,"aria-label":`Privacy Policy (opens in new tab)`,children:`Privacy Policy`}),` `,`and`,` `,(0,K.jsx)(`a`,{href:`https://www.harper.fast/resources/paas-terms-of-service`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,"aria-label":`Terms of Service (opens in new tab)`,children:`Terms of Service`})]}),(0,K.jsx)(Q,{})]})]})});return(0,K.jsxs)(`div`,{className:`auth-form`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light text-center`,children:`Sign up for Harper Fabric`}),(0,K.jsxs)(Lc,{...a,children:[(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 my-6`,children:[b,(0,K.jsx)(du,{text:`Sign up with Google`,disabled:!s,onClick:y}),(0,K.jsx)(uu,{text:`Sign up with GitHub`,disabled:!s,onClick:y})]}),(0,K.jsx)(`hr`,{className:`border-gray-600`}),(0,K.jsxs)(`form`,{id:`auth-signup-form`,name:`auth-signup-form`,onSubmit:f(v),className:`sign-in-form`,children:[(0,K.jsx)(Y,{control:d,name:`firstname`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`First Name`}),(0,K.jsx)(bl,{type:`text`,autoCapitalize:`words`,...e,placeholder:`Your first name`,autoComplete:`given-name`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:d,name:`lastname`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`Last Name`}),(0,K.jsx)(bl,{type:`text`,autoCapitalize:`words`,...e,placeholder:`Your last name`,autoComplete:`family-name`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:d,name:`email`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`Email`}),(0,K.jsx)(bl,{type:`email`,placeholder:`you@company.com`,readOnly:!!t,disabled:!!t,autoComplete:`email`,autoCapitalize:`none`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:d,name:`password`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`Password`}),(0,K.jsx)(bl,{type:`password`,autoComplete:`new-password`,...e,placeholder:`Your password`,passwordLabel:`password`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:d,name:`confirmPassword`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`Confirm Password`}),(0,K.jsx)(bl,{type:`password`,autoComplete:`new-password`,...e,placeholder:`Confirm your password`,passwordLabel:`password confirmation`}),(0,K.jsx)(Q,{})]})}),b,(0,K.jsx)(Pl,{message:m,suggestSupport:_.supportSuggested}),(0,K.jsx)(P,{type:`submit`,variant:`submit`,disabled:g||_.minting,className:`sign-in-submit`,children:`Sign Up For Free`})]})]}),(0,K.jsx)(`div`,{className:`auth-links`,children:(0,K.jsx)(V,{className:`m-auto text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:o},children:`Already have an account? Sign in instead.`})})]})}var Du=async e=>{let{data:t}=await M.put(`/VerifyEmail/`,{token:e.toString()});return t};function Ou(){return R({mutationFn:e=>Du(e)})}var ku=S({email:ul});function Au(){let e=se(),{mutate:t,isPending:n}=mu(),r=Pt({resolver:Ke(ku),defaultValues:{email:``}}),i=r.watch(`email`),{setFocus:a,control:o,handleSubmit:s}=r;(0,G.useEffect)(()=>{a(`email`)},[a]);let c=(0,G.useCallback)(async n=>{t(n,{onSuccess:t=>{U.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),e({to:`/sign-in`,search:{me:i}})}})},[i,e,t]);return(0,K.jsx)(Lc,{...r,children:(0,K.jsxs)(`form`,{id:`auth-verify-email-form`,name:`auth-verify-email-form`,onSubmit:s(c),className:`sign-in-form`,children:[(0,K.jsx)(Y,{control:o,name:`email`,render:({field:e})=>(0,K.jsxs)(X,{className:`auth-field`,children:[(0,K.jsx)(Z,{children:`Email`}),(0,K.jsx)(bl,{disabled:n,type:`email`,autoComplete:`email`,placeholder:`you@company.com`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(P,{type:`submit`,variant:`submit`,disabled:n,className:`sign-in-submit`,children:`Send Verification Email`})]})})}function ju(){let{token:e}=me({strict:!1}),t=se(),{mutate:n,isPending:r}=Ou(),i=(0,G.useCallback)(e=>{n(e,{onSuccess:()=>{U.success(`Success`,{description:`Email verified successfully`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),t({to:`/sign-in`})}})},[n,t]);return(0,G.useEffect)(()=>{e&&i(e)},[i,e]),(0,K.jsxs)(`div`,{className:`auth-form`,children:[(0,K.jsx)(Ac,{icon:Ri,title:`Verify Email`,subtitle:r?void 0:`Enter your email to receive a verification link.`}),r?(0,K.jsxs)(`p`,{role:`status`,className:`auth-pending-message`,children:[(0,K.jsx)(Oi,{"aria-hidden":`true`,className:`auth-loading-icon`}),`Verifying email...`]}):(0,K.jsx)(Au,{})]})}function Mu(){let{email:e}=me({strict:!1}),{mutate:t,isPending:n}=mu(),r=(0,G.useCallback)(n=>(n.preventDefault(),e&&t({email:e},{onSuccess:e=>{U.success(`Code Sent`,{description:`${e}`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}}),!1),[e,t]);return(0,K.jsxs)(`div`,{className:`auth-form flex flex-col gap-4`,children:[(0,K.jsx)(Ac,{icon:Ri,title:`Check your email!`,subtitle:`Open the verification link in your inbox.`}),(0,K.jsxs)(`p`,{children:[`From:`,` `,(0,K.jsxs)(`strong`,{children:[`harper@`,(0,K.jsx)(`wbr`,{}),`notifications.`,(0,K.jsx)(`wbr`,{}),`harperfabric.com`]})]}),(0,K.jsxs)(`p`,{children:[`To: `,(0,K.jsx)(`strong`,{children:e||`your email`})]}),(0,K.jsx)(`p`,{children:`Can you click it? Then we can carry on to more fun things!`}),(0,K.jsxs)(`div`,{className:`auth-links`,children:[(0,K.jsx)(V,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-in`,search:{me:e},children:`I did it, let me sign in!`}),(0,K.jsx)(V,{className:`text-sm`,to:void 0,onClick:r,disabled:n,children:`Send me another code, please.`})]})]})}var Nu=I({getParentRoute:()=>mc,id:`_authLayout`,component:Cc}),Pu=I({getParentRoute:()=>Nu,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:bu,beforeLoad:({context:e,location:t})=>{let n=e.authentication[m]?.user;if(n){let e=t?.search,r=Pn(n);throw ce({to:e?.redirect?.startsWith(`/`)?e.redirect:r})}}}),Fu=I({getParentRoute:()=>mc,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:yl,beforeLoad:({context:e,location:t})=>{if(e.authentication.OverallAppSignIn?.user){let e=t?.search;throw ce({to:e?.redirect?.startsWith(`/`)?e.redirect:`/`})}}}),Iu=I({getParentRoute:()=>Nu,path:`sign-up`,head:()=>({meta:[{title:`Sign Up — Harper Fabric`}]}),component:Eu}),Lu=I({getParentRoute:()=>Nu,path:`forgot-password`,head:()=>({meta:[{title:`Forgot Password — Harper Fabric`}]}),component:eu}),Ru=I({getParentRoute:()=>Nu,path:`verify-email`,head:()=>({meta:[{title:`Verify Email — Harper Fabric`}]}),component:ju}),zu=I({getParentRoute:()=>Nu,path:`verifying`,head:()=>({meta:[{title:`Check Your Email — Harper Fabric`}]}),component:Mu}),Bu=I({getParentRoute:()=>Nu,path:`check-oauth`,head:()=>({meta:[{title:`Signing In — Harper Fabric`}]}),component:Mc}),Vu=I({getParentRoute:()=>Nu,path:`reset-password`,head:()=>({meta:[{title:`Reset Password — Harper Fabric`}]}),component:iu});Nu.addChildren([Pu,Iu,Bu,Lu,Ru,zu,Vu]);var Hu=[Fu];function Uu({children:e}){return(0,K.jsx)(`nav`,{className:`fixed top-20 w-full h-12 z-39 py-2 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,K.jsxs)(`div`,{className:`flex items-center h-full space-x-2`,children:[(0,K.jsx)(Ic,{}),e]})})}function Wu({typeOfThingBeingDeleted:e,nameOfThingBeingDeleted:t,isModalOpen:n,hideDataLossWarning:r,setIsModalOpen:i,deletionConfirmed:a,deletionPending:o,trigger:s,presentParticiple:c=`Deleting`,transitiveVerb:l=`Delete`}){return(0,K.jsxs)(fn,{open:n,onOpenChange:i,children:[s&&(0,K.jsx)(dn,{asChild:!0,children:s}),(0,K.jsxs)(cn,{className:`sm:max-w-[750px]`,children:[(0,K.jsxs)(rn,{children:[(0,K.jsxs)(ln,{children:[`Are you sure you want to `,l.toLowerCase(),` this `,e,`?`]}),(0,K.jsx)(un,{children:`This action cannot be undone.`})]}),!r&&(0,K.jsxs)(`div`,{className:`p-3 my-5 text-white rounded-md bg-amber-600`,children:[(0,K.jsxs)(`p`,{className:`flex space-x-1 font-semibold align-baseline`,children:[(0,K.jsx)($a,{className:`inline-block size-5`}),` `,(0,K.jsx)(`span`,{children:`Warning`})]}),(0,K.jsxs)(`p`,{className:`pt-2 text-base`,children:[`By `,c.toLowerCase(),` `,e,` `,(0,K.jsx)(`span`,{className:`font-semibold`,children:t}),` `,`you will lose the data stored in it permanently.`]})]}),(0,K.jsx)(on,{children:(0,K.jsxs)(`div`,{className:`flex justify-center space-x-5`,children:[(0,K.jsxs)(P,{type:`button`,onClick:()=>i(!1),children:[(0,K.jsx)(Bn,{}),` Cancel`]}),(0,K.jsxs)(P,{variant:`destructive`,onClick:a,disabled:o,children:[(0,K.jsx)(Za,{}),` `,l]})]})})]})]})}function Gu({...e}){return(0,K.jsx)(it,{"data-slot":`context-menu`,...e})}function Ku({...e}){return(0,K.jsx)(Ct,{"data-slot":`context-menu-trigger`,...e})}function qu({className:e,...t}){return(0,K.jsx)(St,{children:(0,K.jsx)(gt,{"data-slot":`context-menu-content`,className:N(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border p-1 shadow-md`,e),...t})})}function Ju({className:e,inset:t,variant:n=`default`,...r}){return(0,K.jsx)(nn,{"data-slot":`context-menu-item`,"data-inset":t,"data-variant":n,className:N(`focus:bg-accent focus:text-grey dark:focus:bg-white/15 dark:focus:text-white`,`data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10`,`dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive`,`data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground`,`relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm`,`outline-hidden select-none`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8`,`[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r})}function Yu({className:e,inset:t,...n}){return(0,K.jsx)(Ye,{"data-slot":`context-menu-label`,"data-inset":t,className:N(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function Xu({className:e,...t}){return(0,K.jsx)(xt,{"data-slot":`context-menu-separator`,className:N(`bg-border -mx-1 my-1 h-px`,e),...t})}function Zu({className:e,...t}){return(0,K.jsx)(`span`,{"data-slot":`context-menu-shortcut`,className:N(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}var Qu={dropdown:{Item:Co,Label:To,Separator:Eo},context:{Item:Ju,Label:Yu,Separator:Xu}};function $u(e,t){let{Item:n,Label:r,Separator:i}=Qu[t];return e.map(e=>{if(e.type===`separator`)return(0,K.jsx)(i,{},e.key);if(e.type===`label`)return(0,K.jsx)(r,{className:e.className,children:e.label},e.key);let t=(0,K.jsxs)(n,{className:e.className,onClick:e.onClick,disabled:e.disabled,variant:e.variant,children:[e.icon,e.label]});return e.to?(0,K.jsx)(V,{to:e.to,disabled:e.disabled,children:t},e.key):(0,K.jsx)(G.Fragment,{children:t},e.key)})}function ed({items:e,children:t}){return e.length?(0,K.jsxs)(Gu,{children:[(0,K.jsx)(Ku,{asChild:!0,children:t}),(0,K.jsx)(qu,{children:$u(e,`context`)})]}):(0,K.jsx)(K.Fragment,{children:t})}function td(e,t){let n=rd(e),r=rd(t);return!n||!r?!1:od(r,n)>=0}function nd(e,t){let n=rd(e),r=rd(t);return!n&&!r?0:n?r?od(n,r):1:-1}function rd(e){if(typeof e!=`string`)return null;let[t]=e.split(`+`,1).concat(``),n=t.indexOf(`-`),r=n===-1?t:t.slice(0,n),i=n===-1?``:t.slice(n+1),a=r.split(`.`);if(a.length===0)return null;let o=id(a[0]),s=id(a[1]??`0`),c=id(a[2]??`0`);return o==null||s==null||c==null?null:{major:o,minor:s,patch:c,pre:i?i.split(`.`).map(e=>ad(e)?Number(e):e):[]}}function id(e){return e==null||e===``||!/^\d+$/.test(e)?null:Number(e)}function ad(e){return/^\d+$/.test(e)}function od(e,t){if(e.major!==t.major)return e.major<t.major?-1:1;if(e.minor!==t.minor)return e.minor<t.minor?-1:1;if(e.patch!==t.patch)return e.patch<t.patch?-1:1;let n=e.pre.length>0,r=t.pre.length>0;if(!n&&!r)return 0;if(!n&&r)return 1;if(n&&!r)return-1;let i=Math.min(e.pre.length,t.pre.length);for(let n=0;n<i;n++){let r=e.pre[n],i=t.pre[n],a=typeof r==`number`,o=typeof i==`number`;if(a&&o){if(r!==i)return r<i?-1:1;continue}if(a&&!o)return-1;if(!a&&o)return 1;if(r!==i)return String(r)<String(i)?-1:1}return e.pre.length===t.pre.length?0:e.pre.length<t.pre.length?-1:1}var sd=new Set([`add_component`,`cleanup_orphan_blobs`,`clear_status`,`delete_audit_logs_before`,`delete_files_before`,`delete_transaction_logs_before`,`deploy_component`,`drop_component`,`drop_custom_function`,`drop_custom_function_project`,`get_backup`,`get_status`,`install_node_modules`,`package_component`,`read_transaction_log`,`restart_service`,`search_jobs_by_start_date`,`set_component_file`,`set_configuration`,`set_custom_function`,`set_status`,`delete_records_before`,`registration_info`]);function cd(e){return sd.has(e)}function ld(e){let t=Od.get(e);return!!t?.aliasOf||!!t?.nonDelegable||!!t?.outOfGate||cd(e)}var ud=`5.1.0-alpha.1`,dd=`5.2.0-alpha.1`,fd=`5.3.0-alpha.1`,pd=`Data`,md=`Schema`,hd=`Users & Roles`,gd=`Components & Deployments`,_d=`Clustering & Replication`,vd=`Jobs`,yd=`Logs & Analytics`,bd=`System`,xd=`Managed Backups`,Sd=`Secrets & Environment`,Cd=`Agent`,wd=[pd,md,hd,gd,_d,vd,yd,bd,xd,Sd,Cd],Td=[{name:`search`,su:!1,category:pd},{name:`search_by_conditions`,su:!1,category:pd},{name:`search_by_hash`,su:!1,category:pd},{name:`search_by_id`,su:!1,category:pd,aliasOf:`search_by_hash`},{name:`search_by_value`,su:!1,category:pd},{name:`sql`,su:!1,category:pd,outOfGate:!0,caveat:`SQL is authorized against table permissions, not this list — listing or omitting it does not restrict SQL statements.`},{name:`insert`,su:!1,category:pd},{name:`update`,su:!1,category:pd},{name:`upsert`,su:!1,category:pd},{name:`put`,su:!1,category:pd,addedIn:fd},{name:`delete`,su:!1,category:pd},{name:`delete_records_before`,su:!0,category:pd},{name:`csv_data_load`,su:!1,category:pd},{name:`csv_file_load`,su:!1,category:pd},{name:`csv_url_load`,su:!1,category:pd},{name:`import_from_s3`,su:!1,category:pd},{name:`export_local`,su:!0,category:pd},{name:`export_to_s3`,su:!0,category:pd},{name:`describe_all`,su:!1,category:md},{name:`describe_database`,su:!1,category:md,aliasOf:`describe_schema`},{name:`describe_schema`,su:!1,category:md},{name:`describe_table`,su:!1,category:md},{name:`create_database`,su:!0,category:md},{name:`create_schema`,su:!0,category:md,aliasOf:`create_database`},{name:`drop_database`,su:!0,category:md},{name:`drop_schema`,su:!0,category:md,aliasOf:`drop_database`},{name:`create_table`,su:!0,category:md},{name:`drop_table`,su:!0,category:md},{name:`create_attribute`,su:!1,category:md},{name:`drop_attribute`,su:!0,category:md},{name:`cleanup_orphan_blobs`,su:!0,category:md},{name:`user_info`,su:!1,category:hd},{name:`list_users`,su:!0,category:hd},{name:`add_user`,su:!0,category:hd},{name:`alter_user`,su:!0,category:hd},{name:`drop_user`,su:!0,category:hd},{name:`list_roles`,su:!0,category:hd},{name:`add_role`,su:!0,category:hd},{name:`alter_role`,su:!0,category:hd},{name:`drop_role`,su:!0,category:hd},{name:`refresh_operation_token`,su:!1,category:hd},{name:`get_components`,su:!0,category:gd},{name:`get_component_file`,su:!0,category:gd},{name:`set_component_file`,su:!0,category:gd},{name:`add_component`,su:!0,category:gd},{name:`drop_component`,su:!0,category:gd},{name:`deploy_component`,su:!0,category:gd},{name:`package_component`,su:!0,category:gd},{name:`install_node_modules`,su:!0,category:gd},{name:`audit_node_modules`,su:!0,category:gd},{name:`custom_functions_status`,su:!0,category:gd},{name:`get_custom_functions`,su:!0,category:gd},{name:`get_custom_function`,su:!0,category:gd},{name:`set_custom_function`,su:!0,category:gd},{name:`drop_custom_function`,su:!0,category:gd},{name:`add_custom_function_project`,su:!0,category:gd,aliasOf:`add_component`},{name:`deploy_custom_function_project`,su:!0,category:gd,aliasOf:`deploy_component`},{name:`package_custom_function_project`,su:!0,category:gd,aliasOf:`package_component`},{name:`drop_custom_function_project`,su:!0,category:gd,aliasOf:`drop_component`},{name:`list_deployments`,su:!0,category:gd,addedIn:ud},{name:`get_deployment`,su:!0,category:gd,addedIn:ud},{name:`get_deployment_payload`,su:!0,category:gd,addedIn:ud,nonDelegable:!0},{name:`delete_deployment_payload`,su:!0,category:gd,addedIn:ud},{name:`add_node`,su:!0,category:_d},{name:`update_node`,su:!0,category:_d},{name:`set_node_replication`,su:!0,category:_d},{name:`purge_stream`,su:!0,category:_d},{name:`catchup`,su:!0,category:_d},{name:`get_job`,su:!1,category:vd},{name:`search_jobs_by_start_date`,su:!0,category:vd},{name:`update_job`,su:!0,category:vd},{name:`delete_job`,su:!0,category:vd},{name:`read_log`,su:!0,category:yd},{name:`read_audit_log`,su:!0,category:yd},{name:`read_transaction_log`,su:!0,category:yd},{name:`delete_files_before`,su:!0,category:yd},{name:`delete_audit_logs_before`,su:!0,category:yd},{name:`delete_transaction_logs_before`,su:!0,category:yd},{name:`get_analytics`,su:!1,category:yd},{name:`list_metrics`,su:!1,category:yd},{name:`describe_metric`,su:!1,category:yd},{name:`get_configuration`,su:!0,category:bd},{name:`set_configuration`,su:!0,category:bd},{name:`restart`,su:!0,category:bd},{name:`restart_service`,su:!0,category:bd},{name:`system_information`,su:!0,category:bd},{name:`get_status`,su:!0,category:bd},{name:`set_status`,su:!0,category:bd},{name:`clear_status`,su:!0,category:bd},{name:`registration_info`,su:!1,category:bd},{name:`get_backup`,su:!0,category:bd},{name:`create_backup`,su:!0,category:xd,addedIn:dd,nonDelegable:!0},{name:`verify_backup`,su:!0,category:xd,addedIn:dd,nonDelegable:!0},{name:`restore_backup`,su:!0,category:xd,addedIn:dd,nonDelegable:!0},{name:`list_backups`,su:!0,category:xd,addedIn:dd,nonDelegable:!0},{name:`delete_backup`,su:!0,category:xd,addedIn:dd,nonDelegable:!0},{name:`purge_backups`,su:!0,category:xd,addedIn:dd,nonDelegable:!0},{name:`set_secret`,su:!0,category:Sd,addedIn:dd,nonDelegable:!0},{name:`grant_secret`,su:!0,category:Sd,addedIn:dd,nonDelegable:!0},{name:`revoke_secret`,su:!0,category:Sd,addedIn:dd,nonDelegable:!0},{name:`list_secrets`,su:!0,category:Sd,addedIn:dd,nonDelegable:!0},{name:`delete_secret`,su:!0,category:Sd,addedIn:dd,nonDelegable:!0},{name:`get_secrets_public_key`,su:!0,category:Sd,addedIn:dd,nonDelegable:!0},{name:`set_env_value`,su:!0,category:Sd,addedIn:dd},{name:`delete_env_value`,su:!0,category:Sd,addedIn:dd},{name:`get_env_keys`,su:!0,category:Sd,addedIn:dd},{name:`agent_prompt`,su:!0,category:Cd,addedIn:ud},{name:`get_agent_session`,su:!0,category:Cd,addedIn:ud},{name:`list_agent_sessions`,su:!0,category:Cd,addedIn:ud},{name:`cancel_agent_run`,su:!0,category:Cd,addedIn:ud},{name:`approve_agent_action`,su:!0,category:Cd,addedIn:ud},{name:`set_agent_config`,su:!0,category:Cd,addedIn:ud}],Ed=[`search`,`search_by_conditions`,`search_by_hash`,`search_by_id`,`search_by_value`,`sql`,`describe_all`,`describe_schema`,`describe_database`,`describe_table`,`user_info`,`get_job`,`get_analytics`,`list_metrics`,`describe_metric`],Dd=[{name:`read_only`,description:`Read-only data access: searches, SQL, schema describes, and user/analytics reads.`,members:Ed},{name:`admin_read`,description:`Read-only access to configuration, logs, and component views (normally super_user-only).`,members:[`get_configuration`,`read_log`,`read_audit_log`,`get_custom_functions`,`get_custom_function`,`get_components`,`get_component_file`]},{name:`standard_user`,description:`Everything in read_only plus data writes and bulk loads. No DDL, user management, or admin reads.`,members:[...Ed,`insert`,`update`,`upsert`,`put`,`delete`,`csv_data_load`,`csv_file_load`,`csv_url_load`,`import_from_s3`]},{name:`agent`,description:`Drive the built-in agent: prompts, sessions, and run approvals. Excludes agent configuration.`,members:[`agent_prompt`,`get_agent_session`,`list_agent_sessions`,`cancel_agent_run`,`approve_agent_action`],addedIn:dd}],Od=new Map(Td.map(e=>[e.name,e])),kd=new Map(Dd.map(e=>[e.name,e]));function Ad(e){return Od.get(e)}function jd(e){return Od.get(e)?.aliasOf??e}function Md(e){return kd.has(e)}function Nd(e){return!!e&&td(`5.0.0-alpha.8`,e)}function Pd(e){return Td.filter(t=>!t.nonDelegable&&!t.aliasOf&&(!t.addedIn||td(t.addedIn,e)))}function Fd(e){return Dd.filter(t=>!t.addedIn||td(t.addedIn,e))}function Id(e){let t=new Set;for(let n of e){let e=kd.get(n);if(e){for(let n of e.members){let e=Od.get(n)?.aliasOf??n;ld(e)||t.add(e)}continue}ld(n)||t.add(n)}return[...t].sort()}function Ld(e,t=40){return e.length>t?`${e.slice(0,t).join(`, `)}, +${e.length-t} more`:e.join(`, `)}var Rd=[`super_user`,`structure_user`,`cluster_user`,`operations`],zd=new Set(Rd);function Bd(e,t,n){if((t===`operations`?n:zd.has(t))||!Object.hasOwn(e,t))return;let r=e[t];return typeof r==`object`&&r&&!Array.isArray(r)?r:void 0}function Vd(e){return e?.super_user===!0||e?.cluster_user===!0}function Hd(e){let t=e?.structure_user;return t===!0?!0:Array.isArray(t)&&t.length>0?t:!1}var Ud=[`create_table`,`create_attribute`,`drop_table`,`drop_attribute`];function Wd(e){let t=e?.operations;return Array.isArray(t)&&t.every(e=>typeof e==`string`)?t:void 0}function Gd(e,t){let n=e?.operations;return e===void 0||n===void 0?`absent`:t?Wd(e)===void 0?n&&typeof n!=`string`&&!Array.isArray(n)?`breaks-auth`:`malformed`:`allowlist`:Bd(e,`operations`,!1)===void 0?`inert`:`database`}function Kd(e){let t=Rd.filter(t=>t in e),n=Object.keys(e).filter(e=>!zd.has(e));return Object.fromEntries([...t,...n].map(t=>[t,e[t]]))}function qd(e,t){let n={...e};return t===void 0?delete n.operations:n.operations=t,Kd(n)}var Jd={read:[`search`,`search_by_conditions`,`search_by_hash`,`search_by_value`,`sql`],insert:[`insert`],update:[`update`],delete:[`delete`]},Yd=[`insert`],Xd=[`csv_data_load`,`get_job`],Zd=[`csv_url_load`,`get_job`],Qd={"json-records":Yd,"csv-data":Xd,"csv-url":Zd},$d={sample:[Yd,Xd],file:[Yd,Xd],url:[Zd]},ef=Object.keys($d),tf=new WeakMap,nf=new Map(Dd.map(e=>[e.name,e.members]));function rf(e){let t=new Set;for(let n of e){let e=nf.get(n);if(e)for(let n of e)t.add(n);else t.add(n)}return t}function af(e,t){let n=Wd(e);if(!n)return!0;let r=tf.get(n);return r||(r=rf(n),tf.set(n,r)),t.some(e=>r.has(jd(e)))}function of(e,t){return e?.super_user===!0||af(e,t)}function sf(e,t){return of(e,Jd[t]??[])}function cf(e,t){return t.every(t=>af(e,[t]))}function lf(e,t){return e?.super_user===!0||cf(e,Qd[t])}function uf(e,t){return e?.super_user===!0||$d[t].some(t=>cf(e,t))}function df(e){return ef.some(t=>uf(e,t))}function ff(e,t,n,r){return sf(e,r)&&hf(e,t,n,r)}function pf(e,t,n){if(!e)return!1;if(e.super_user===!0)return!0;if(!af(e,[`put`]))return!1;let r=Bd(e,t,!1)?.tables?.[n];return r?.insert!==!0||r.update!==!0?!1:!(`attribute_permissions`in r&&r.attribute_permissions?.length||`attribute_restrictions`in r&&r.attribute_restrictions?.length)}function mf(e,t,n){return df(e)&&hf(e,t,n,`insert`)}function hf(e,t,n,r){return e?e.super_user===!0||e.structure_user===!0||Bd(e,t,!1)?.tables?.[n]?.[r]===!0:!1}function gf(e){let{user:t}=wn(),{organizationId:n}=B({strict:!1}),r=_f(t,e??n);return{update:Tn(t,`org:update`)||r.update,remove:Tn(t,`org:delete`)||r.remove}}function _f(e,t){let n=e?.roles?.[t];return!n||`oauthProviders`in n||!n.permission&&!n.organization?{update:!1,remove:!1}:n.permission?.super_user?{update:!0,remove:!0}:{update:n.organization.update,remove:n.organization.delete}}function vf(e){let{user:t}=wn(),{organizationId:n}=B({strict:!1}),r=yf(t,e??n);return{create:Tn(t,`role:create`)||r.create,remove:Tn(t,`role:delete`)||r.remove,update:Tn(t,`role:update`)||r.update,view:Tn(t,`role:read`)||r.view}}function yf(e,t){let n=e?.roles?.[t];if(!n||`oauthProviders`in n||!n.permission&&!n.organization?.roles)return{create:!1,remove:!1,update:!1,view:!1};if(n.permission?.super_user)return{create:!0,remove:!0,update:!0,view:!0};let r=n.organization.roles;return{create:r.create,remove:r.delete,update:r.update,view:r.view}}function bf(e,t){let{user:n}=wn(),{organizationId:r,clusterId:i}=B({strict:!1});return xf(n,e??r,t??i)}function xf(e,t,n){let r=Sf(e,t,n);return{create:Tn(e,`cluster:create`)||r.create,remove:Tn(e,`cluster:delete`)||r.remove,update:Tn(e,`cluster:update`)||r.update,view:Tn(e,`cluster:read`)||r.view}}function Sf(e,t,n){let r=e?.roles?.[t];if(!r||`oauthProviders`in r||!r.permission&&!r.organization?.clusters)return{create:!1,remove:!1,update:!1,view:!1};if(r.permission?.super_user)return{create:!0,remove:!0,update:!0,view:!0};let i=r.organization.clusters.resources?.find(e=>e.id===n),a=r.organization.clusters;return{create:a.create,remove:i?i.delete:a.delete,update:i?i.update:a.update,view:i?i.view:a.view}}function Cf(e,t){let{user:n}=wn(),{organizationId:r,clusterId:i}=B({strict:!1});return wf(n,e??r,t??i)}function wf(e,t,n){let r=Tf(e,t,n);return{create:Tn(e,`cluster:update`)||r.create,remove:Tn(e,`cluster:delete`)||r.remove,update:Tn(e,`instance:update`)||r.update,view:Tn(e,`instance:read`)||r.view}}function Tf(e,t,n){let r=e?.roles?.[t];if(!r||`oauthProviders`in r||!r.permission&&!r.organization?.clusters)return{create:!1,remove:!1,update:!1,view:!1};if(r.permission?.super_user)return{create:!0,remove:!0,update:!0,view:!0};let i=r.organization.clusters.resources?.find(e=>e.id===n)?.instances,a=r.organization.clusters;return{create:i?i.create:a.create,remove:i?i.delete:a.delete,update:i?i.update:a.update,view:i?i.view:a.view}}function Ef(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Dn(e??n??t),i=r?.role?.permission;return i?i.super_user===!0:!1}function Df(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Dn(e??n??t),i=r?.role?.permission;return i?i.super_user===!0||i.structure_user===!0:!1}function Of(e,t,n,r){let{clusterId:i,instanceId:a}=B({strict:!1}),{user:o}=Dn(e??a??i);return ff(o?.role?.permission,t,n,r)}function kf(e,t,n){let{clusterId:r,instanceId:i}=B({strict:!1}),{user:a}=Dn(e??i??r);return pf(a?.role?.permission,t,n)}function Af(e,t,n){let{clusterId:r,instanceId:i}=B({strict:!1}),{user:a}=Dn(e??i??r);return mf(a?.role?.permission,t,n)}function jf(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Dn(e??n??t);return df(r?.role?.permission)}function Mf(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Dn(e??n??t),i=r?.role?.permission;return(0,G.useMemo)(()=>({methods:Object.fromEntries(ef.map(e=>[e,uf(i,e)])),allowsSource:e=>lf(i,e),allowsDestination:(e,t)=>mf(i,e,t)}),[i])}function Nf(e){return!!e?.plans?.[0]?.planId?.startsWith(`self-hosted`)}function Pf({cluster:e,hasCardLink:t=!1}){let{view:n,update:r}=bf(e.organizationId,e.id),i=`/${e.organizationId}/${e.id}`;if(n)return Nf(e)?(0,K.jsx)(Ff,{cluster:e,hasCardLink:t}):e.fqdn?e.resetPassword?r?(0,K.jsx)(V,{to:`${i}/finish-setup`,className:`text-sm text-nowrap`,"aria-label":`Set Password on ${e.name}`,title:`Set Password on ${e.name}`,children:(0,K.jsxs)(P,{variant:`positive`,className:`py-2 hover:border-b-2 animate-glow-pulse`,children:[`Finish Setup `,(0,K.jsx)(Hn,{className:`inline-block`})]})}):(0,K.jsx)(`span`,{className:`py-2 text-nowrap`,children:`Pending Owner Setup`}):(0,K.jsx)(Ff,{cluster:e,hasCardLink:t}):t?(0,K.jsxs)(`span`,{className:`text-sm text-nowrap py-2 ml-auto`,children:[`Instances `,(0,K.jsx)(Hn,{className:`inline-block`})]}):(0,K.jsx)(V,{to:`${i}/instances`,className:`text-sm text-nowrap`,"aria-label":`View ${e.name}`,title:`View ${e.name}`,children:(0,K.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Instances `,(0,K.jsx)(Hn,{className:`inline-block`})]})})}function Ff({cluster:e,hasCardLink:t}){return t?(0,K.jsxs)(`span`,{className:`text-sm text-nowrap py-2 ml-auto`,children:[`Open `,(0,K.jsx)(Hn,{className:`inline-block`})]}):(0,K.jsx)(V,{to:`/${e.organizationId}/${e.id}`,className:`text-sm text-nowrap`,"aria-label":`Open ${e.name}`,title:`Open ${e.name}`,children:(0,K.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Open `,(0,K.jsx)(Hn,{className:`inline-block`})]})})}function If({clusterName:e,isPending:t,stopOpen:n,setStopOpen:r,onConfirmStop:i,restartOpen:a,setRestartOpen:o,onConfirmRestart:s}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(fn,{open:n,onOpenChange:r,children:(0,K.jsxs)(cn,{className:`sm:max-w-[560px]`,children:[(0,K.jsxs)(rn,{children:[(0,K.jsxs)(ln,{children:[`Stop cluster `,e,`?`]}),(0,K.jsx)(un,{children:`This stops every instance in the cluster. It will be offline and stop serving traffic until you start it again.`})]}),(0,K.jsx)(on,{children:(0,K.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,K.jsx)(P,{type:`button`,variant:`defaultOutline`,onClick:()=>r(!1),children:`Cancel`}),(0,K.jsx)(P,{type:`button`,variant:`destructive`,onClick:i,disabled:t,children:`Stop cluster`})]})})]})}),(0,K.jsx)(fn,{open:a,onOpenChange:o,children:(0,K.jsxs)(cn,{className:`sm:max-w-[560px]`,children:[(0,K.jsxs)(rn,{children:[(0,K.jsxs)(ln,{children:[`Restart cluster `,e]}),(0,K.jsx)(un,{children:`Choose how to restart the cluster's instances.`})]}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 py-2`,children:[(0,K.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>s(`rolling`),className:`rounded-lg border border-border p-4 text-left transition-colors hover:border-primary hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:opacity-60`,children:[(0,K.jsxs)(`div`,{className:`font-medium`,children:[`Rolling `,(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`(recommended)`})]}),(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`One instance at a time, waiting for each to rejoin before moving on. No downtime.`})]}),(0,K.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>s(`parallel`),className:`rounded-lg border border-border p-4 text-left transition-colors hover:border-primary hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary disabled:opacity-60`,children:[(0,K.jsx)(`div`,{className:`font-medium`,children:`Parallel`}),(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`All instances at once. Faster, but the whole cluster is briefly offline.`})]})]}),(0,K.jsx)(on,{children:(0,K.jsx)(P,{type:`button`,variant:`defaultOutline`,onClick:()=>o(!1),children:`Cancel`})})]})})]})}function Lf(e,t){let n=[];if(e)for(let r of e)n.push(r[t]);return n}function Rf({cluster:e,forceProgressBarVisible:t}){let[n,r]=(0,G.useState)(t||!1),{data:i}=H(ll(n&&e.id,2e3));(0,G.useEffect)(function(){($c(e.status)||el(e.status))&&r(!0)},[n,e.status,i?.instances]);let a=(0,G.useMemo)(()=>{let e=Lf(i?.plans??[],`planId`),t=i?.instances??[],n=0,r={},a=0,o={},s=0,c={},l=0,u={};for(let i of t){let t=i.status;t&&!Qc(t)&&($c(t)?(n+=1,r[t]=`${n} ${Pc(t)}`):el(t)?(a+=1,o[t]=`${a} ${Pc(t)}`):Zc(t)?(l+=1,u[t]=`${l} ${Pc(t)}`):!i.planId||!e.includes(i.planId)?(a+=1,o.DRAINING_TRAFFIC=`${a} ${Pc(`Draining Traffic`)}`):Xc(t)&&(s+=1,c[t]=`${s} ${Pc(t)}`))}let d=n+a+s;return{pendingWidth:`${d===0?100:n===0?0:n/d*100}%`,updatingWidth:`${a===0?0:a/d*100}%`,failedWidth:`${l===0?0:l/d*100}%`,runningWidth:`${s===0?0:s/d*100}%`,text:[...Object.values(c).sort(),...Object.values(u).sort(),...Object.values(o).sort(),...Object.values(r).sort()].join(` · `)}},[i]);return n?(0,K.jsxs)(`div`,{className:`w-full text-center`,children:[(0,K.jsxs)(`div`,{className:`w-full h-2.5 rounded-full overflow-clip flex shadow`,children:[(0,K.jsx)(`div`,{style:{width:a.runningWidth},className:`grow bg-green/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,K.jsx)(`div`,{style:{width:a.failedWidth},className:`grow bg-red/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,K.jsx)(`div`,{style:{width:a.updatingWidth},className:`grow animate-pulse bg-yellow/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,K.jsx)(`div`,{style:{width:a.pendingWidth},className:`grow bg-gray-600 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`})]}),a.text&&(0,K.jsx)(`div`,{className:`text-xs text-muted-foreground font-light mt-2`,children:a.text})]}):null}function zf({open:e,setOpen:t,action:n,targetName:r,scope:i,isPending:a,onConfirm:o}){let s=n===`start`?`Start`:`Restart`;return(0,K.jsx)(fn,{open:e,onOpenChange:t,children:(0,K.jsxs)(cn,{className:`sm:max-w-[560px]`,children:[(0,K.jsxs)(rn,{children:[(0,K.jsxs)(ln,{className:`flex items-center gap-2`,children:[(0,K.jsx)(wi,{className:`size-5 text-yellow`}),s,` `,r,` in safe mode?`]}),(0,K.jsxs)(un,{children:[`Safe mode boots Harper`,` `,(0,K.jsx)(`strong`,{className:`text-foreground`,children:`without loading your applications or components`}),`. Use it to recover `,i===`cluster`?`a cluster`:`an instance`,` `,`that a bad app, component, or config is keeping from starting. Then fix or remove what's broken and`,` `,n===`start`?`start`:`restart`,` normally to bring everything back.`]})]}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i===`cluster`?`All instances are ${n===`start`?`started`:`restarted`} at once (parallel)${n===`restart`?`, so expect a brief interruption while they come back.`:`.`}`:`The instance ${n===`start`?`starts`:`restarts`} in safe mode${n===`restart`?`, so expect a brief interruption while it comes back.`:`.`}`}),(0,K.jsx)(on,{children:(0,K.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,K.jsx)(P,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,K.jsxs)(P,{type:`button`,variant:`warning`,onClick:o,disabled:a,children:[(0,K.jsx)(wi,{}),` `,s,` in safe mode`]})]})})]})})}async function Bf(e){let{data:t}=await M.delete(`/Cluster/${e}`,{timeout:0});return t}function Vf(){return R({mutationFn:e=>Bf(e)})}async function Hf({clusterId:e,action:t,safeMode:n,strategy:r}){let i={};n!==void 0&&(i.safeMode=n),r!==void 0&&(i.strategy=r);let{data:a}=await M.post(`/Cluster/${e}/container/${t}`,i);return a}function Uf(){return R({mutationFn:Hf})}var Wf={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function Gf(e){let{mutateAsync:t,isPending:n}=Uf(),r=ue();return{run:(0,G.useCallback)(async(n,i)=>{let a=i?.label??Wf[n],o=U.loading(a,{description:`${a} cluster ${e.name}. Status will update automatically.`,duration:3e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});try{await t({clusterId:e.id,action:n,safeMode:i?.safeMode,strategy:i?.strategy}),r.invalidateQueries({queryKey:[e.organizationId]}),r.invalidateQueries({queryKey:[e.id]}),U.dismiss(o),U.success(`Request accepted`,{description:`${e.name} is ${a.toLowerCase()}. The status will update automatically.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}catch{U.dismiss(o)}},[e.id,e.name,e.organizationId,t,r]),isPending:n}}async function Kf(e){if(!navigator.clipboard)return U.error(`Clipboard access is not available in this environment.`),!1;try{return await navigator.clipboard.writeText(e),!0}catch{return U.error(`Failed to copy to clipboard.`),!1}}function qf(e){Kf(e).then(e=>{e&&U.info(`Copied to clipboard!`,{icon:(0,K.jsx)(wr,{}),duration:1e3})})}function Jf(...e){return(0,G.useMemo)(()=>e.map(e=>()=>qf(e)),e)}function Yf(){return qf}function Xf({cluster:e}){let t=fe(),n=ue(),r=(0,G.useMemo)(()=>c(e),[e]),i=Bs({operationsUrl:r}),a=Dn(e.id),[,o]=xn(vn.SavedClusterState,null),{view:s,update:l,remove:f,create:p}=bf(e.organizationId,e.id),{mutate:m,isPending:h}=Vf(),[g,_]=(0,G.useState)(!1),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(!1),[S,C]=(0,G.useState)(!1),[w,T]=(0,G.useState)(null),{run:E,isPending:D}=Gf(e),O=e.status===`RUNNING`,k=e.status===`STOPPED`,A=e.status===`PARTIAL`,j=e.status===`STOPPING`||e.status===`STARTING`||e.status===`RESTARTING`,ee=j||k||A,M=(0,G.useMemo)(()=>!!(e.status&&Hc.includes(e.status)),[e.status]),N=Nf(e),P=l&&!N,te=u.checkForFabricConnect(e.id),F=!te&&!!a.user,ne=(0,G.useMemo)(()=>!!(e.status&&Uc.includes(e.status)),[e.status]),re=(0,G.useMemo)(()=>!!(e.status&&Zc(e.status)),[e.status]),ie=l&&!N&&!ne&&!el(e.status)&&!$c(e.status),ae=(0,G.useCallback)(async()=>{_(!0);let t=await sl(e.id).catch(e=>(console.error(`Failed to lookup cluster details, proceeding without checking instances.`,e),null));if(await d({entityId:e.id,instanceClient:i}),t?.instances?.length)for(let e of t.instances)u.setUserForEntity(e,null);u.setUserForEntity(e,null)},[e,i]),oe=(0,G.useCallback)(()=>{o(e),t.navigate({to:`/${e.organizationId}/new-cluster`})},[e,t,o]),I=(0,G.useCallback)(()=>y(!0),[]),se=(0,G.useCallback)(()=>{let r=e.organizationId;m(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[r],refetchType:`active`}),await t.invalidate(),U.success(`Success`,{description:N?`Cluster successfully removed.`:`Cluster successfully terminated.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),y(!1)},onError:()=>{U.error(`Error`,{description:N?`Failed to remove cluster: ${e.name}`:`Failed to terminate cluster: ${e.name}.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),y(!1)}})},[t,e.organizationId,e.id,e.name,m,N,n]),L=!s||ne?void 0:e.status===`STOPPED`?`/${e.organizationId}/${e.id}/instances`:e.status===`PARTIAL`?`/${e.organizationId}/${e.id}`:M?N?`/${e.organizationId}/${e.id}`:e.fqdn?e.resetPassword?void 0:`/${e.organizationId}/${e.id}`:`/${e.organizationId}/${e.id}/instances`:void 0,ce=e.domains?.[0]?.domain||e.fqdn,[le,R]=Jf(`${ce}`,`https://${ce}`),de=[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-separator`},M&&l&&!a.isLoading&&(!F||te)&&{key:`sign-in`,to:`${e.id}/sign-in`,disabled:g,icon:(0,K.jsx)(bi,{className:`text-green`}),label:`Direct Sign In`},M&&s&&!!r&&!a.isLoading&&F&&{key:`direct-sign-out`,onClick:ae,disabled:g,label:`Direct Sign Out`},M&&l&&{key:`edit`,to:`${e.id}/edit`,disabled:g,icon:(0,K.jsx)(ba,{className:`text-purple-600`}),label:N?`Edit`:`Edit Scaling`},ie&&{key:`edit-version`,to:`${e.id}/edit/version`,disabled:g,icon:(0,K.jsx)(oi,{className:`text-fuchsia-300`}),label:`Edit Version`},M&&l&&!1,M&&s&&{key:`instances`,to:`${e.id}/instances`,disabled:g,icon:(0,K.jsx)(wa,{className:`text-orange-300`}),label:`Instances`},M&&s&&!!a.user&&{key:`deployments`,to:`${e.id}/config/deployments`,disabled:g,icon:(0,K.jsx)(fa,{className:`text-sky-400`}),label:`Deployments`},P&&(O||k||A)&&{type:`separator`,key:`container-separator`},P&&(O||k||A)&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},P&&(k||A)&&{key:`container-start`,disabled:D,onClick:()=>void E(`start`,{safeMode:!1,strategy:`parallel`}),icon:(0,K.jsx)(oa,{}),label:`Start`},P&&k&&{key:`container-start-safe`,disabled:D,onClick:()=>T(`start`),icon:(0,K.jsx)(wi,{}),label:`Start in safe mode`},P&&(O||A)&&{key:`container-restart`,disabled:D,onClick:()=>C(!0),icon:(0,K.jsx)(ga,{}),label:`Restart`},P&&O&&{key:`container-restart-safe`,disabled:D,onClick:()=>T(`restart`),icon:(0,K.jsx)(wi,{}),label:`Restart in safe mode`},P&&(O||A)&&{key:`container-stop`,variant:`destructive`,disabled:D,onClick:()=>x(!0),icon:(0,K.jsx)(La,{}),label:`Stop`},M&&s&&!!e.fqdn&&{type:`separator`,key:`copy-separator`},M&&s&&!!e.fqdn&&{key:`copy-host-name`,onClick:le,disabled:g,icon:(0,K.jsx)(Er,{}),label:`Copy Host Name`},M&&s&&!!e.fqdn&&{key:`copy-api-url`,onClick:R,disabled:g,icon:(0,K.jsx)(Er,{}),label:`Copy API URL`},re&&p&&{key:`try-again`,onClick:oe,className:`focus:bg-green/70 focus:text-white`,label:`Try Again`},!ne&&f&&M&&{type:`separator`,key:`remove-separator`},!ne&&f&&{key:`remove`,onClick:I,className:`focus:bg-red/70 focus:text-white`,icon:(0,K.jsx)(Za,{className:`text-red-300`}),label:N?`Remove`:`Terminate`}].filter(Js);return(0,K.jsx)(ed,{items:ne?[]:de,children:(0,K.jsxs)(On,{className:`relative h-full justify-between transition-[transform,box-shadow] duration-200 ${L?`hover:scale-[1.02] hover:shadow-lg hover:ring-2 hover:ring-primary/60 dark:hover:ring-violet-400/70`:`hover:shadow-lg`}`,children:[L&&(0,K.jsx)(V,{to:L,"aria-label":`${N||e.fqdn?`Open`:`View`} ${e.name}`,className:`absolute inset-0 rounded-[inherit] focus-visible:ring-2 focus-visible:ring-purple-200 focus-visible:outline-none`}),(0,K.jsxs)(kn,{children:[(0,K.jsxs)(jn,{className:`flex items-center justify-between`,children:[ce?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`truncate max-w-48`,children:ce}),(0,K.jsx)(`button`,{type:`button`,"aria-label":`Copy host name`,onClick:e=>{e.stopPropagation(),le()},className:`relative z-10 -m-1.5 p-1.5 rounded-md text-muted-foreground cursor-pointer hover:bg-accent/60 hover:text-foreground`,children:(0,K.jsx)(Ir,{size:16})}),(0,K.jsx)(`span`,{className:`grow`})]}):(0,K.jsx)(`span`,{children:`Self-Hosted`}),!ne&&(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{"aria-label":`Cluster options`,onClick:e=>e.stopPropagation(),className:`relative z-10 -m-2 p-2 rounded-md hover:bg-accent/60`,children:(0,K.jsx)(Hr,{})}),(0,K.jsx)(So,{children:$u(de,`dropdown`)})]})]}),(0,K.jsx)(An,{children:(0,K.jsx)(`h2`,{children:e.name})})]}),(0,K.jsxs)(Mn,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(Rf,{cluster:e}),M&&s&&(0,K.jsx)(Pf,{cluster:e,hasCardLink:!!L}),ee&&e.status&&(0,K.jsxs)(Wo,{variant:k?`destructive`:`warning`,children:[j&&(0,K.jsx)(Oi,{className:`animate-spin`}),Pc(e.status)]}),re&&e.status&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Wo,{variant:Jc(e.status),children:Pc(e.status)}),(0,K.jsx)(`span`,{className:`text-xs`,children:`Click "..." to choose how to proceed.`})]})]}),(0,K.jsx)(Wu,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:N?`Remove`:`Terminate`,presentParticiple:N?`Removing`:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:v,hideDataLossWarning:N,setIsModalOpen:e=>y(e),deletionConfirmed:se,deletionPending:h}),(0,K.jsx)(If,{clusterName:e.name,isPending:D,stopOpen:b,setStopOpen:x,onConfirmStop:()=>{x(!1),E(`stop`,{strategy:`parallel`})},restartOpen:S,setRestartOpen:C,onConfirmRestart:e=>{C(!1),E(`restart`,{safeMode:!1,strategy:e})}}),(0,K.jsx)(zf,{open:w!==null,setOpen:e=>{e||T(null)},action:w??`restart`,targetName:e.name,scope:`cluster`,isPending:D,onConfirm:()=>{let e=w;T(null),e&&E(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}})]})})}function Zf({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] relative ${t??``}`,children:e})]})}function Qf({children:e}){let{organizationId:t,clusterId:n}=B({strict:!1}),{view:r,update:i}=bf(t,n),{data:a}=H(ll(n,!1)),o=a?Nf(a):!1,s=`/${t}/${n}`,c=[{to:s,label:`Overview`,icon:Si,exact:!0},r&&!o&&{to:`${s}/usage`,label:`Usage`,icon:or},i&&{to:`${s}/edit`,label:o?`Configuration`:`Scaling`,icon:ii,exact:!0},i&&!o&&{to:`${s}/edit/version`,label:`Version`,icon:Ga,exact:!0},i&&!o&&{to:`${s}/domains`,label:`Domains`,icon:ci},r&&{to:`${s}/instances`,label:`Instances`,icon:wa}].filter(Boolean);return(0,K.jsx)(`div`,{className:`relative mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,K.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,K.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,K.jsx)(Fo,{items:c,ariaLabel:`Cluster sections`})}),(0,K.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:e})]})})}async function $f(e){let{data:t}=await M.get(`/Plan/`,{params:{organizationId:e}});return t}function ep(e){return z({queryKey:[e,`instancePlan`],queryFn:()=>$f(e),retry:!1})}var tp=[`stable`,`next`,`beta`,`alpha`];function np(e){let t=tp.indexOf(e);return t===-1?tp.length:t}function rp(e){let t=new Map;for(let n of e){let e=t.get(n.version);(!e||np(n.name)<np(e.name))&&t.set(n.version,n)}return[...t.values()]}async function ip(e){let{data:t}=await M.get(`/HarperVersions/`,{params:{organizationId:e}}),n=t;return{...n,value:rp(n.value)}}function ap(e){return z({queryKey:[e,`HarperVersions`],queryFn:()=>ip(e),staleTime:6e4,retry:!1})}async function op({organizationId:e,availableHosts:t}={}){let{data:n}=await M.get(`/Region/`,{params:{availableHosts:t,organizationId:e}});return n}function sp({organizationId:e,availableHosts:t}={}){return z({queryKey:[e,`regionLocations`,t],queryFn:()=>op({organizationId:e,availableHosts:t}),retry:!1})}function cp(e){return(t,n)=>t[e]===n[e]?0:t[e]>n[e]?1:-1}function lp(e){let t=e.split(`.`).map(Number);return(t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0}function up(e){return typeof e==`string`&&/^(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|1?\d?\d)){3}$/.test(e)}function dp(e,t){return e.instanceFqdn===t.instanceFqdn?e.operationsApiPort-t.operationsApiPort:up(e.instanceFqdn)&&up(t.instanceFqdn)?lp(e.instanceFqdn)-lp(t.instanceFqdn):e.instanceFqdn>t.instanceFqdn?1:-1}function fp(e,t){let n={};for(let r of e){let e=r[t];if(e!==void 0){if(Array.isArray(e))for(let t of e)n[t]||(n[t]=[]),n[t].push(r);else n[e]||(n[e]=[]),n[e].push(r)}}return n}function pp(e,t){let n={};for(let r of e){let e=r[t];if(e!==void 0){if(Array.isArray(e))for(let t of e)n[t]=r;else n[e]=r}}return n}function mp(e,t,n){let r=fp(e,t),i={};for(let e in r)i[e]=pp(r[e],n);return i}function hp({width:e,className:t,animated:n,placeholder:r}){return(0,K.jsxs)(`div`,{className:y(`w-full bg-gray-200 rounded-full relative`,r?`h-6`:`h-2.5`),children:[r&&(0,K.jsx)(`div`,{className:`absolute top-0 h-full w-full font-bold text-xs flex flex-col items-center justify-center text-black/60 text-shadow-2xs`,children:r}),(0,K.jsx)(`div`,{className:y(`rounded-full`,r?`h-6`:`h-2.5`,!t?.includes(`bg-`)&&`bg-purple/40`,n&&`transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`,t),style:{width:e}})]})}function gp({duration:e,message:t,lateMessage:n}){let r=(0,G.useRef)(0),i=(0,G.useRef)(0),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(`5%`),l=(0,G.useCallback)(function t(n){i.current||=n;let a=n-i.current,s=Math.min(a/e,1);c(Math.max(5,s*100)+`%`),s<1?r.current=requestAnimationFrame(t):o(!0)},[e]);return(0,G.useEffect)(()=>(r.current=requestAnimationFrame(l),()=>cancelAnimationFrame(r.current)),[l]),(0,K.jsxs)(K.Fragment,{children:[a?n:t,(0,K.jsx)(hp,{width:s,animated:!1})]})}async function _p(e){let{data:t}=await M.post(`/Cluster/`,e,{timeout:0});return t}function vp(){return R({mutationFn:e=>_p(e)})}async function yp(e){let{id:t,...n}=e,{data:r}=await M.put(`/Cluster/${t}`,n,{timeout:0});return r}function bp(){return R({mutationFn:e=>yp(e)})}function xp(e){return!!e&&e!==`undefined`&&e!==`null`}async function Sp(e){if(!xp(e))throw Error(`getOrganization called without a valid organization id (got: ${e})`);let{data:t}=await M.get(`/Organization/${e}`);return t}function Cp(e){return z({queryKey:[e],queryFn:()=>Sp(e),retry:!1,enabled:xp(e),refetchInterval:al(1e4)})}var wp=`ENTERPRISE`;function Tp(e,t){if(t<=0)return``;if(e.length<=t)return e;let n=e.split(`-`);if(n.length===1)return n[0].slice(0,t);let r=[n[0],...n.slice(1).map(e=>e.charAt(0))],i=r.join(`-`);if(i.length<=t)return i;let a=r.slice(1).join(``).length,o=r.length-1,s=t-a-o;if(s>0)return r[0]=r[0].slice(0,s),r.join(`-`);{let e=[],i=0;t>0&&(e.push(n[0].charAt(0)),i=1);for(let n=1;n<r.length&&i+2<=t;n++)e.push(r[n]),i+=2;return e.join(`-`)}}function Ep(e,t,n=`-`){let r=t.split(n)[0];return e.findIndex(e=>e.startsWith(r))!==-1}function Dp(e){return e.replace(/[^a-zA-Z0-9]/g,`-`).replace(/([a-z])([A-Z])/g,`$1-$2`).toLowerCase().replace(/-+/g,`-`).replace(/^-+|-+$/g,``)}function Op(e){return e!==void 0&&e>0}function kp(e,t,n){return t===void 0?Promise.resolve():e.invalidateQueries({predicate:e=>e.queryKey[0]===t||e.queryKey[1]===t,...n})}async function Ap(e){await M.put(`/Payment/`,e)}function jp(){return R({mutationFn:e=>Ap(e)})}function Mp(e){let{mutate:t}=jp();return(0,G.useCallback)((n,r)=>{t({paymentMethodId:typeof n==`string`?n:n.id,organizationId:e},{onSuccess:()=>{U.success(`Success! Your payment method has been saved.`),r(!0)},onError:()=>{U.error(`Failed to process payment method details. Please try another payment method.`),r(!1)}})},[t,e])}var Np=(0,G.createContext)(null);function Pp(){return(0,G.useContext)(Np)}var Fp=t(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),Ip=t(((e,t)=>{var n=Fp();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),Lp=e(t(((e,t)=>{t.exports=Ip()()}))(),1);function Rp(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function zp(e){if(Array.isArray(e))return e}function Bp(e,t,n){return(t=Yp(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Vp(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function Hp(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
11
11
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Up(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Wp(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Up(Object(n),!0).forEach(function(t){Bp(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Up(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Gp(e,t){if(e==null)return{};var n,r,i=Kp(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Kp(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function qp(e,t){return zp(e)||Vp(e,t)||Zp(e,t)||Hp()}function Jp(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Yp(e){var t=Jp(e,`string`);return typeof t==`symbol`?t:t+``}function Xp(e){"@babel/helpers - typeof";return Xp=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Xp(e)}function Zp(e,t){if(e){if(typeof e==`string`)return Rp(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Rp(e,t):void 0}}var Qp=function(e,t,n){var r=!!n,i=G.useRef(n);G.useEffect(function(){i.current=n},[n]),G.useEffect(function(){if(!r||!e)return function(){};var n=function(){if(i.current)return i.current.apply(i,arguments)};return e.on(t,n),function(){e.off(t,n)}},[r,t,e,i])},$p=function(e){var t=G.useRef(e);return G.useEffect(function(){t.current=e},[e]),t.current},em=function(e){return e!==null&&Xp(e)===`object`},tm=`[object Object]`,nm=function e(t,n){if(!em(t)||!em(n))return t===n;var r=Array.isArray(t);if(r!==Array.isArray(n))return!1;var i=Object.prototype.toString.call(t)===tm;if(i!==(Object.prototype.toString.call(n)===tm))return!1;if(!i&&!r)return t===n;var a=Object.keys(t),o=Object.keys(n);if(a.length!==o.length)return!1;for(var s={},c=0;c<a.length;c+=1)s[a[c]]=!0;for(var l=0;l<o.length;l+=1)s[o[l]]=!0;var u=Object.keys(s);if(u.length!==a.length)return!1;var d=t,f=n;return u.every(function(t){return e(d[t],f[t])})},rm=function(e,t,n){return em(e)?Object.keys(e).reduce(function(r,i){var a=!em(t)||!nm(e[i],t[i]);return n.includes(i)?(a&&console.warn(`Unsupported prop change: options.${i} is not a mutable property.`),r):a?Wp(Wp({},r||{}),{},Bp({},i,e[i])):r},null):null},im=G.createContext(null);im.displayName=`ElementsContext`;var am=function(e,t){if(!e)throw Error(`Could not find Elements context; You need to wrap the part of your app that ${t} in an <Elements> provider.`);return e};Lp.default.any,Lp.default.object;var om=function(e){return am(G.useContext(im),e)},sm=function(){return om(`calls useElements()`).elements};Lp.default.func.isRequired;var cm=G.createContext(null);cm.displayName=`CheckoutContext`;var lm=function(e){var t=G.useContext(cm),n=G.useContext(im);if(t){if(n)throw Error(`You cannot wrap the part of your app that ${e} in both a checkout provider and <Elements> provider.`);return t}return am(n,e)},um=[`mode`],dm=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},fm=function(e,t,n){var r=`${dm(e)}Element`,i=t?function(e){lm(`mounts <${r}>`);var t=e.id,n=e.className;return G.createElement(`div`,{id:t,className:n})}:function(t){var n=t.id,i=t.className,a=t.options,o=a===void 0?{}:a,s=t.onBlur,c=t.onFocus,l=t.onReady,u=t.onChange,d=t.onEscape,f=t.onClick,p=t.onLoadError,m=t.onLoaderStart,h=t.onNetworksChange,g=t.onConfirm,_=t.onCancel,v=t.onShippingAddressChange,y=t.onShippingRateChange,b=t.onSavedPaymentMethodRemove,x=t.onSavedPaymentMethodUpdate,S=t.onAvailablePaymentMethodsChange,C=lm(`mounts <${r}>`),w=`elements`in C?C.elements:null,T=`checkoutState`in C?C.checkoutState:null,E=T?.type===`success`||T?.type===`loading`?T.sdk:null,D=qp(G.useState(null),2),O=D[0],k=D[1],A=G.useRef(null),j=G.useRef(null);Qp(O,`blur`,s),Qp(O,`focus`,c),Qp(O,`escape`,d),Qp(O,`click`,f),Qp(O,`loaderror`,p),Qp(O,`loaderstart`,m),Qp(O,`networkschange`,h),Qp(O,`confirm`,g),Qp(O,`cancel`,_),Qp(O,`shippingaddresschange`,v),Qp(O,`shippingratechange`,y),Qp(O,`savedpaymentmethodremove`,b),Qp(O,`savedpaymentmethodupdate`,x),Qp(O,`availablepaymentmethodschange`,S),Qp(O,`change`,u);var ee;l&&(ee=e===`expressCheckout`?l:function(){l(O)}),Qp(O,`ready`,ee),G.useLayoutEffect(function(){if(A.current===null&&j.current!==null&&(w||E)){var t=null;if(E){var n=E,i=E;switch(e){case`paymentForm`:t=i.createForm(o);break;case`payment`:t=n.createPaymentElement(o);break;case`address`:if(`mode`in o){var a=o.mode,s=Gp(o,um);if(a===`shipping`)t=n.createShippingAddressElement(s);else if(a===`billing`)t=n.createBillingAddressElement(s);else throw Error(`Invalid options.mode. mode must be 'billing' or 'shipping'.`)}else throw Error(`You must supply options.mode. mode must be 'billing' or 'shipping'.`);break;case`expressCheckout`:t=n.createExpressCheckoutElement(o);break;case`currencySelector`:t=E.createCurrencySelectorElement();break;case`taxId`:t=n.createTaxIdElement(o);break;case`contactDetails`:t=n.createContactDetailsElement();break;case`linkSignup`:if(`createLinkSignupElement`in E)t=E.createLinkSignupElement(o);else throw Error(`<LinkSignupElement> requires <CheckoutElementsProvider> and is not supported inside <CheckoutFormProvider>.`);break;case`terms`:t=n.createTermsElement(o);break;default:throw Error(`<${r}> is not supported inside a checkout provider. Use an <Elements> provider instead.`)}}else w&&(t=w.create(e,o));A.current=t,k(t),t&&t.mount(j.current)}},[w,E,o]);var M=$p(o);return G.useEffect(function(){if(A.current){var e=rm(o,M,[`paymentRequest`]);e&&`update`in A.current&&A.current.update(e)}},[o,M]),G.useLayoutEffect(function(){return function(){if(A.current&&typeof A.current.destroy==`function`)try{A.current.destroy(),A.current=null}catch{}}},[]),G.createElement(`div`,{id:n,className:i,ref:j})};return i.propTypes={id:Lp.default.string,className:Lp.default.string,onChange:Lp.default.func,onBlur:Lp.default.func,onFocus:Lp.default.func,onReady:Lp.default.func,onEscape:Lp.default.func,onClick:Lp.default.func,onLoadError:Lp.default.func,onLoaderStart:Lp.default.func,onNetworksChange:Lp.default.func,onConfirm:Lp.default.func,onCancel:Lp.default.func,onShippingAddressChange:Lp.default.func,onShippingRateChange:Lp.default.func,onSavedPaymentMethodRemove:Lp.default.func,onSavedPaymentMethodUpdate:Lp.default.func,onAvailablePaymentMethodsChange:Lp.default.func,options:Lp.default.object},i.displayName=r,i.__elementType=e,i},pm=typeof window>`u`,mm=G.createContext(null);mm.displayName=`EmbeddedCheckoutProviderContext`;var hm=function(){return lm(`calls useStripe()`).stripe};fm(`auBankAccount`,pm),fm(`card`,pm),fm(`cardNumber`,pm),fm(`cardExpiry`,pm),fm(`cardCvc`,pm),fm(`currencySelector`,pm),fm(`iban`,pm);var gm=fm(`payment`,pm);fm(`expressCheckout`,pm),fm(`paymentRequestButton`,pm),fm(`linkAuthentication`,pm),fm(`linkSignup`,pm),fm(`contactDetails`,pm);var _m=fm(`address`,pm);fm(`shippingAddress`,pm),fm(`paymentMethodMessaging`,pm),fm(`taxId`,pm),fm(`issuingCardNumberDisplay`,pm),fm(`issuingCardCvcDisplay`,pm),fm(`issuingCardExpiryDisplay`,pm),fm(`issuingCardPinDisplay`,pm),fm(`issuingCardCopyButton`,pm),fm(`terms`,pm);function vm({hasExistingBilling:e,onPaymentAdded:t,onSaveStateForBillingRedirect:n}){let{organizationId:r}=B({strict:!1}),i=hm(),a=Pp(),o=sm(),[s,c]=(0,G.useState)(!1),l=Mp(r),u=(0,G.useCallback)(()=>{t(!1)},[t]),d=(0,G.useCallback)(async e=>{if(e.preventDefault(),!i||!o)return;c(!0),await o.submit(),n?.(!0);let s=await i.confirmSetup({clientSecret:a.clientSecret,elements:o,redirect:`if_required`,confirmParams:{return_url:`${window.location.origin}/#/${r}/billing/confirm`}});s.error?(console.error(s.error.message),U.error(s.error.message),c(!1),n?.(!1)):s.setupIntent.payment_method&&(l(s.setupIntent.payment_method,t),n?.(!1))},[o,t,n,r,l,i,a.clientSecret]);return(0,K.jsxs)(`form`,{id:`billing-add-payment-method-form`,name:`billing-add-payment-method-form`,onSubmit:d,className:`max-w-xl`,children:[(0,K.jsx)(gm,{}),(0,K.jsx)(_m,{options:{mode:`billing`}}),(0,K.jsxs)(`div`,{className:`mt-4 flex gap-8 items-center`,children:[(0,K.jsxs)(P,{disabled:!i||!o||s,variant:`submit`,children:[(0,K.jsx)(va,{}),` Add Payment Method`]}),e&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`text-xs text-gray-600`,children:`Your existing payment method will be overwritten.`}),(0,K.jsx)(P,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Cancel`})]})]})]})}var ym=`dahlia`,bm=`https://js.stripe.com`,xm=`${bm}/${ym}/stripe.js`,Sm=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,Cm=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/,wm=`loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used`,Tm=function(e){return Sm.test(e)||Cm.test(e)},Em=function(){for(var e=document.querySelectorAll(`script[src^="${bm}"]`),t=0;t<e.length;t++){var n=e[t];if(Tm(n.src))return n}return null},Dm=function(e){var t=e&&!e.advancedFraudSignals?`?advancedFraudSignals=false`:``,n=document.createElement(`script`);n.src=`${xm}${t}`;var r=document.head||document.body;if(!r)throw Error(`Expected document.body not to be null. Stripe.js requires a <body> element.`);return r.appendChild(n),n},Om=null,km=null,Am=null,jm=function(e){return function(t){e(Error(`Failed to load Stripe.js`,{cause:t}))}},Mm=function(e,t){return function(){window.Stripe?e(window.Stripe):t(Error(`Stripe.js not available`))}},Nm=function(e){return Om===null?(Om=new Promise(function(t,n){if(typeof window>`u`||typeof document>`u`){t(null);return}if(window.Stripe&&e&&console.warn(wm),window.Stripe){t(window.Stripe);return}try{var r=Em();if(r&&e)console.warn(wm);else if(!r)r=Dm(e);else if(r&&Am!==null&&km!==null){var i;r.removeEventListener(`load`,Am),r.removeEventListener(`error`,km),(i=r.parentNode)==null||i.removeChild(r),r=Dm(e)}Am=Mm(t,n),km=jm(n),r.addEventListener(`load`,Am),r.addEventListener(`error`,km)}catch(e){n(e);return}}),Om.catch(function(e){return Om=null,Promise.reject(e)})):Om},Pm,Fm=function(){return Pm||(Pm=Nm(null).catch(function(e){return Pm=null,Promise.reject(e)}),Pm)};Promise.resolve().then(function(){return Fm()}).catch(function(e){console.warn(e)});async function Im(e){let{data:t}=await M.post(`/StripeAccount/`,e);return t}function Lm(){return R({mutationFn:e=>Im(e)})}async function Rm(e){let{data:t}=await M.post(`/Payment/`,{organizationId:e.organizationId});return t}function zm(){return R({mutationFn:e=>Rm(e)})}function Bm(e){let{enabled:t,existingStripeId:n,organizationId:r}=e,{mutate:i}=Lm(),{mutate:a}=zm(),[o,s]=(0,G.useState)(void 0),c=(0,G.useCallback)(e=>{s(e.clientSecret)},[]);return(0,G.useEffect)(()=>{},[i,t,n,a,c,r]),o}function Vm({children:e}){let{organizationId:t}=B({strict:!1}),{data:n}=H(Cp(t)),r=Bm({organizationId:t,enabled:!!n,existingStripeId:n?.stripeId}),i=ws();return(0,G.useMemo)(()=>({clientSecret:r||``,appearance:{theme:i===`dark`?`night`:`stripe`}}),[r,i]),console.error(`No VITE_PUBLIC_STRIPE_KEY is configured for this environment.`),(0,K.jsx)(`div`,{className:`mt-20 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:`Setting up your billing is currently disabled. Please check back again later.`})}function Hm({onPaymentAdded:e,onSaveStateForBillingRedirect:t}){let{organizationId:n}=B({strict:!1}),{data:r}=H(Cp(n)),i=r?.billing,a=i?.paymentMethod;return(0,K.jsxs)(Vm,{children:[(0,K.jsx)(`div`,{className:`mt-2 mb-6`,children:!a&&`You currently have no payment method on file. Please fill out the secure form below.`}),(0,K.jsx)(vm,{hasExistingBilling:!!i,onSaveStateForBillingRedirect:t,onPaymentAdded:e})]})}var Um=function(e){return e.PASS=`pass`,e.FAIL=`fail`,e.PENDING=`pending`,e.ERROR=`error`,e}({});function Wm(e){switch(e){case Um.PASS:return`success`;case Um.FAIL:case Um.ERROR:return`destructive`;case Um.PENDING:default:return`default`}}function Gm(e){switch(e){case Um.PASS:return`READY`;case Um.FAIL:case Um.ERROR:case Um.PENDING:default:return e.toUpperCase()}}function Km(e,t){return`${String(e).padStart(2,`0`)}/${String(t%100).padStart(2,`0`)}`}function qm(e){let{onSaveStateForBillingRedirect:t,onReplacingPaymentMethod:n}=e??{},{organizationId:r}=B({strict:!1}),{update:i}=gf(r),{data:a,refetch:o}=H(Cp(r)),s=a?.billing?.paymentMethod,[c,l]=(0,G.useState)(!1),u=(0,G.useCallback)(()=>{l(!c),n?.(!c)},[n,c]),d=(0,G.useCallback)(e=>{l(!1),n?.(!1),e&&o()},[n,o]);return a?.type===`ENTERPRISE`?(0,K.jsxs)(`span`,{children:[`You are part of an enterprise organization! We don’t currently show your payment methods on this page. Want to explore your solution with Harper more? `,(0,K.jsx)(xl,{}),`, we would love to talk!`]}):s&&!c?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`mt-2`,children:[s.brand?.toUpperCase()??`Card`,` ending in `,s.last4??`••••`,s.expMonth&&s.expYear?(0,K.jsxs)(K.Fragment,{children:[`(exp `,Km(s.expMonth,s.expYear),`)`]}):null,s.status?(0,K.jsxs)(K.Fragment,{children:[`—`,` `,(0,K.jsx)(Wo,{variant:Wm(s.status),children:Gm(s.status)})]}):null]}),i&&(0,K.jsx)(`div`,{className:`mt-2 mb-6`,children:(0,K.jsx)(P,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Replace Payment Method`})})]}):i?(0,K.jsx)(Hm,{onSaveStateForBillingRedirect:t,onPaymentAdded:d}):(0,K.jsx)(`div`,{children:`This org doesn't have a payment method, and you don't have access to add one. Please contact your administrator.`})}function Jm({clusterId:e,isPending:t,onGoBackToDetails:n,onSaveStateForBillingRedirect:r,onSubmit:i,organizationId:a,selectedPlan:o}){let{data:s}=H(Cp(a)),c=s?.billing,l=s?.type===wp,u=l||c?.paymentMethod?.status===Um.PASS,[d,f]=(0,G.useState)(!1),p=Op(o?.planLimits?.expirationMonths)&&o.planLimits.expirationMonths<1e3&&o.planLimits.expirationMonths,m=(0,K.jsx)(K.Fragment,{children:(0,K.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end mt-3 max-w-xl`,children:[(0,K.jsxs)(P,{type:`button`,variant:`defaultOutline`,disabled:t,onClick:n,children:[(0,K.jsx)(Bn,{}),` Back to Details`]}),(0,K.jsxs)(P,{disabled:t||!u||d,type:`submit`,variant:`submit`,onClick:i,children:[e?`Edit Cluster`:`Create New Cluster`,` `,(0,K.jsx)(Hn,{})]})]})});if(l)return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`ul`,{className:`list-disc ml-6 max-w-lg`,children:[(0,K.jsx)(`li`,{children:`Reminder: you will be billed at your contracted rate for any additional infrastructure.`}),(0,K.jsxs)(`li`,{children:[`Your account representative can work with you to sort out more precise details, and to help accomplish your objectives with this cluster. `,(0,K.jsx)(xl,{overEmail:!0}),`, we are here to help.`]})]}),m]});let g=p&&`, or ${h(p,`month`,`months`)} elapse`;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`ul`,{className:`list-disc ml-6 mb-6`,children:[(0,K.jsx)(`li`,{children:`You will be billed for this cluster today, and will receive a license for the block of usage you've requested.`}),e&&(0,K.jsx)(`li`,{children:`If you scale up, you'll be charged for the additional blocks you've purchased now, and your next auto renewal will be for all purchased blocks.`}),e&&(0,K.jsx)(`li`,{children:`If you remove a region, that region's usage block will not be used anymore (because it is specific to that region).`}),(0,K.jsxs)(`li`,{children:[`When that block is used up`,g,`, you will be automatically renewed.`]}),(0,K.jsx)(`li`,{children:`While refunds are not available, we’d be happy to assist you with troubleshooting.`}),(0,K.jsxs)(`li`,{children:[`We would love to work with you to sort out more precise details, and to help accomplish your objectives with this cluster. `,(0,K.jsx)(xl,{overEmail:!0}),`, we are here to help.`]})]}),(0,K.jsx)(`p`,{className:`text-muted-foreground text-sm mb-6`,children:`Payment method:`}),(0,K.jsx)(qm,{onSaveStateForBillingRedirect:r,onReplacingPaymentMethod:f}),m]})}var Ym=/(^$|^(?:localhost|(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}|(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,})$)/i,Xm=65535,Zm=A().max(20,`Must be at most 20 characters long.`).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,`Can only contain lowercase letters, numbers and dashes. Must not start or end with a dash.`),Qm=S({clusterName:A().nonempty(`Please enter a cluster name.`).max(255,`Cluster name cannot be longer than 255 characters long.`),abbreviatedName:ee([x(``),w(),Zm]).optional(),fqdn:A().regex(Ym,`Please enter a valid host name without the port or any path.`).optional(),version:A().optional(),deploymentDescription:A().nonempty(`Please select a deployment tier.`),performanceDescription:A().nonempty(`Please select a performance tier.`),regionPlans:T(S({regionName:A().nonempty(`Please select a region.`),latencyDescription:A().nonempty(`Please select a latency tier.`)})).max(50,{error:`A maximum of 50 regions can be selected for each cluster. `}),instances:T(S({secure:O([`true`,`false`]),fqdn:A().nonempty(`Please enter the host name of your instance.`).regex(Ym,`Please enter a valid host name without the port or any path.`),port:C().min(0,`Positive thinking only, please.`).max(Xm,`That port number is too high.`).optional()})).max(100,{error:`A maximum of 100 instances can be added to each cluster.`}),skipToBilling:D().optional(),skipGtmWait:D().optional(),sourceClusterId:A().optional()});function $m({calculatedNames:e,disabled:t,form:n}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Y,{control:n.control,name:`abbreviatedName`,render:({field:n})=>(0,K.jsxs)(X,{className:`col-span-3`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Host Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...n,type:`text`,maxLength:Zm.maxLength,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:e.suggestedAbbreviatedName,disabled:t})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(X,{className:`col-span-3 `,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Full Host Name`}),(0,K.jsx)(J,{children:(0,K.jsx)(`span`,{children:e.fullHostName})}),(0,K.jsx)(Q,{})]})]})}function eh({className:e}={}){let t=(0,G.useMemo)(()=>y(`animate-pulse h-2.5 bg-gray-200 rounded-full dark:bg-gray-700`,!e?.includes(`mb-`)&&`mb-4 `,!e?.includes(`w-`)&&`w-48 `,e),[e]);return(0,K.jsx)(`div`,{className:t})}function th({...e}){return(0,K.jsx)(Xt,{"data-slot":`select`,...e})}function nh({...e}){return(0,K.jsx)(et,{"data-slot":`select-group`,...e})}function rh({...e}){return(0,K.jsx)(at,{"data-slot":`select-value`,...e})}function ih({className:e,children:t,...n}){return(0,K.jsxs)(nt,{"data-slot":`select-trigger`,className:N(`border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex h-9 w-fit items-center justify-between gap-2 rounded-md border bg-white text-foreground dark:bg-grey-700 dark:text-white px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:truncate *:data-[slot=select-value]:block *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...n,children:[t,(0,K.jsx)(Qe,{asChild:!0,children:(0,K.jsx)(pn,{className:`size-4 text-foreground dark:text-white`})})]})}function ah({className:e,children:t,position:n=`popper`,...r}){return(0,K.jsx)(ct,{children:(0,K.jsxs)(yt,{"data-slot":`select-content`,className:N(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,...r,children:[(0,K.jsx)(ch,{}),(0,K.jsx)(ot,{className:N(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,K.jsx)(lh,{})]})})}function oh({className:e,...t}){return(0,K.jsx)(Ft,{"data-slot":`select-label`,className:N(`px-2 py-1.5 text-sm font-medium`,e),...t})}function sh({className:e,children:t,...n}){return(0,K.jsxs)(ft,{"data-slot":`select-item`,className:N(`focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,K.jsx)(qe,{children:t}),(0,K.jsx)(`span`,{className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,K.jsx)(Lt,{children:(0,K.jsx)(mn,{className:`size-4`})})})]})}function ch({className:e,...t}){return(0,K.jsx)(mt,{"data-slot":`select-scroll-up-button`,className:N(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,K.jsx)(hn,{className:`size-4`})})}function lh({className:e,...t}){return(0,K.jsx)(ut,{"data-slot":`select-scroll-down-button`,className:N(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,K.jsx)(pn,{className:`size-4`})})}var uh={Colocated:`Shared infrastructure for optimized value`,Dedicated:`Dedicated infrastructure for consistent performance`,"Self-Hosted":`Your own infrastructure`};function dh({availableDeploymentTypes:e,disabled:t,form:n}){return(0,K.jsx)(Y,{control:n.control,name:`deploymentDescription`,render:({field:r})=>(0,K.jsxs)(X,{className:`col-span-3`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Harper Deployment`}),(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(eh,{}),children:(0,K.jsx)(J,{children:(0,K.jsxs)(th,{...r,disabled:t,onValueChange:e=>{r.onChange(e),n.trigger()},children:[(0,K.jsx)(ih,{className:`w-full h-auto`,children:(0,K.jsx)(rh,{placeholder:`Choose Tier`})}),(0,K.jsx)(ah,{children:(0,K.jsx)(nh,{children:e.map(e=>(0,K.jsxs)(sh,{value:e,children:[(0,K.jsx)(`dt`,{className:`text-left font-bold text-sm/6`,children:e}),uh[e]&&(0,K.jsx)(`dd`,{className:`font-light`,children:uh[e]})]},e))})})]})})}),(0,K.jsx)(Q,{})]})})}function fh({disabled:e,form:t}){return(0,K.jsx)(Y,{control:t.control,name:`fqdn`,render:({field:t})=>(0,K.jsxs)(X,{className:`md:col-span-6 col-span-3`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Optional Cluster Load Balancer Host Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...t,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:`example.your-company.com`,disabled:e})}),(0,K.jsx)(Q,{})]})})}function ph({className:e,disabled:t,form:n}){return(0,K.jsx)(Y,{control:n.control,name:`clusterName`,render:({field:n})=>(0,K.jsxs)(X,{className:e,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Cluster Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{autoFocus:!0,type:`text`,maxLength:Qm.shape.clusterName.maxLength,autoCapitalize:`words`,disabled:t,...n})}),(0,K.jsx)(Q,{})]})})}function mh({availablePerformanceDescriptions:e,form:t,selectedDeployment:n}){return(0,K.jsx)(Y,{control:t.control,name:`performanceDescription`,render:({field:r})=>(0,K.jsxs)(X,{className:`col-span-3`,children:[(0,K.jsxs)(Z,{className:`pb-1`,children:[n.startsWith(`Self`)?`Support`:`Performance`,` & Usage`]}),(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(eh,{}),children:(0,K.jsx)(J,{children:(0,K.jsxs)(th,{...r,onValueChange:e=>{r.onChange(e),t.trigger()},disabled:!e?.length,children:[(0,K.jsx)(ih,{className:`w-full h-auto`,children:(0,K.jsx)(rh,{placeholder:`Choose Tier`})}),(0,K.jsx)(ah,{children:(0,K.jsx)(nh,{children:e.map(e=>(0,K.jsxs)(sh,{value:e.performanceTier,children:[(0,K.jsxs)(`dt`,{className:`text-left font-bold text-sm/6 flex items-center gap-2`,children:[e.name,e.isPremium&&(0,K.jsx)(Wo,{children:`Premium`})]}),e.description&&(0,K.jsx)(`dd`,{className:`text-left font-light`,children:e.description})]},e.name))})})]})})}),(0,K.jsx)(Q,{})]})})}function hh({className:e,...t}){let{formDescriptionId:n}=Bc();return(0,K.jsx)(`p`,{"data-slot":`form-description`,id:n,className:N(`text-muted-foreground text-sm`,e),...t})}function gh({className:e,form:t}){return(0,K.jsx)(Y,{control:t.control,name:`skipGtmWait`,render:({field:t})=>(0,K.jsxs)(X,{className:e,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-4 h-4 cursor-pointer`,checked:t.value||!1,onChange:t.onChange,onBlur:t.onBlur,name:t.name,ref:t.ref})}),(0,K.jsx)(Z,{className:`cursor-pointer`,children:`Immediate upgrade and restart`})]}),(0,K.jsx)(hh,{children:`Apply changes immediately without waiting for each instance to be taken out of the load balancer (faster, but potentially less safe).`})]})})}function _h({className:e,disabled:t,form:n,harperVersions:r}){return r?.value?.length?(0,K.jsx)(Y,{control:n.control,name:`version`,render:({field:i})=>(0,K.jsxs)(X,{className:e,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Harper Version`}),(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(eh,{}),children:(0,K.jsx)(J,{children:(0,K.jsxs)(th,{...i,disabled:t,onValueChange:e=>{i.onChange(e),n.trigger()},children:[(0,K.jsx)(ih,{className:`w-full h-auto`,children:(0,K.jsx)(rh,{placeholder:`Choose Version`})}),(0,K.jsx)(ah,{children:(0,K.jsx)(nh,{children:r?.value.map(e=>(0,K.jsxs)(sh,{value:e.version,children:[e.version,` `,(0,K.jsx)(`span`,{className:`font-light opacity-50`,children:e.name})]},e.version))})})]})})}),(0,K.jsx)(Q,{})]})}):null}var vh=new RegExp(/^\d+/);function yh(e,t){let n=parseInt(e.match(vh)?.[0]||`0`,10),r=parseInt(t.match(vh)?.[0]||`0`,10);return n===r?0:n>r?1:-1}var bh=[`B`,`KB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],xh=[`secs`,`mins`,`hrs`],Sh={bytes:1e3,secs:60};function Ch(e,t,n){let r,i;switch(t){case`bytes`:r=bh,i=Sh.bytes;break;case`secs`:r=xh,i=Sh.secs;break;default:return e}let a=r.indexOf(n);return a===-1?e:e/i**a}function wh(e,t){let n,r;switch(e){case`bytes`:n=bh,r=Sh.bytes;break;case`secs`:n=xh,r=Sh.secs;break;default:return e}let i=0;for(;t>=r&&i<n.length-1;)t/=r,i++;return n[i]}function Th(e,t=1){let n=e*t,r=wh(`bytes`,n),i=Ch(n,`bytes`,r);return`${new Intl.NumberFormat().format(Math.round(i))} ${r}`}function Eh(e){return new Intl.NumberFormat().format(e)}var Dh=[`K`,`M`,`B`,`T`,`Qa`,`Qi`,`Sx`,`Sp`,`Oc`,`No`,`Dc`];function Oh(e){let t=1e3,n=e;if(Math.abs(n)<t)return String(Math.round(n));let r=-1;do n/=t,++r;while(Math.round(Math.abs(n)*10)/10>=t&&r<Dh.length-1);return`${Eh(Math.round(n))} ${Dh[r]}`}function kh(e,t){let n=Object.values(t).flatMap(e=>Object.values(e)).map(e=>e.purchasedBlockMultiplier??1),r=Math.max(...n,1),i=Math.min(...n,r),a=t=>{let n=e.map(t).filter(e=>typeof e==`number`&&e>0);return n.length?{min:Math.min(...n),max:Math.max(...n)}:{min:0,max:0}},o=a(e=>e.planLimits?.readsPerMinuteCount),s=a(e=>e.planLimits?.totalReadCount);return{readRate:{min:o.min*i,max:o.max*r},totalReads:{min:s.min*i,max:s.max*r},writeRate:a(e=>e.planLimits?.writesPerMinuteCount),totalWrites:a(e=>e.planLimits?.totalWriteCount)}}function Ah(e,{min:t,max:n}){if(e<=0)return 0;let r=Math.max(Math.min(t,e),1),i=Math.max(n,e);if(i<=r)return 1;let a=(Math.log(e)-Math.log(r))/(Math.log(i)-Math.log(r));return Math.min(Math.max(a,0),1)}function jh({selectedPlan:e,selectedRegion:t,usageScale:n,isEnterprise:r,cloudProvider:i}){let[a,o]=(0,G.useState)(!1),s=(0,G.useCallback)(()=>{o(!a)},[a,o]),c=e?.planLimits,l=e?.resourcesPerInstance,u=i&&e?.cloudInstanceTypes?.[i],d=Op(c?.expirationMonths)&&c.expirationMonths<1e3&&c.expirationMonths,f=t?.purchasedBlockMultiplier??1,p=(0,G.useMemo)(()=>c?[Op(c.totalReadCount)&&{label:`Total Reads`,value:Oh(c.totalReadCount*f)},Op(c.totalReadsBytes)&&{label:`Total Read Transfer`,value:`${Th(c.totalReadsBytes*f)}`},Op(c.readsPerMinuteCount)&&{label:`Read Rate`,value:`${Oh(c.readsPerMinuteCount*60*f)}/hr`},Op(c.readsPerMinuteBytes)&&{label:`Read Bandwidth`,value:`${Th(c.readsPerMinuteBytes*60*f)}/hr`},Op(c.totalWriteCount)&&{label:`Total Writes`,value:Oh(c.totalWriteCount)},Op(c.totalWritesBytes)&&{label:`Total Write Transfer`,value:`${Th(c.totalWritesBytes)}`},Op(c.writesPerMinuteCount)&&{label:`Write Rate`,value:`${Oh(c.writesPerMinuteCount*60)}/hr`},Op(c.writesPerMinuteBytes)&&{label:`Write Bandwidth`,value:`${Th(c.writesPerMinuteBytes*60)}/hr`},Op(c.totalRealTimeMessageDeliveries)&&{label:`Total Real-Time Messages`,value:`${Oh(c.totalRealTimeMessageDeliveries*f)} messages`},Op(c.totalRealTimeMessageDeliveryBytes)&&{label:`Total Real-Time Message Transfer`,value:`${Th(c.totalRealTimeMessageDeliveryBytes*f)}`},Op(c.realTimeMessageDeliveriesPerMinute)&&{label:`Real-Time Message Rate`,value:`${Oh(c.realTimeMessageDeliveriesPerMinute*60*f)}/hr`},Op(c.realTimeMessageDeliveryBytesPerMinute)&&{label:`Real-Time Message Bandwidth`,value:`${Th(c.realTimeMessageDeliveryBytesPerMinute*60*f)}/hr`},Op(c.tlsHandshakes)&&{label:`TLS Handshakes`,value:`${Oh(c.tlsHandshakes*60*f)}`},Op(c.applicationComputeHours)&&{label:`Application Compute Hours`,value:`${Oh(c.applicationComputeHours*f)}`},!!l&&Op(l.storageGb)&&{label:`Storage`,value:`${Th(l.storageGb*1e9)}`},!!l&&Op(l.cpuCores)&&{label:`Maximum CPU Cores`,value:`${Oh(l.cpuCores)}`},!!l&&Op(l.memoryMb)&&{label:`Memory`,value:`${l.memoryMb/1024} GB`},!!u&&{label:`Cloud Instance Type`,value:u},!!d&&{label:`Expiration`,value:h(d,`month`,`months`)},!!t?.id&&{label:`Region ID`,value:t.id},!!e?.id&&{label:`Plan ID`,value:e.id}].filter(Js):[],[d,t,e,f]);if(!c)return``;if(!Op(c.totalReadCount))return`This plan has no usage limits.`;let m=r?`for the contracted rate`:`for the price listed above`,g=d?` in ${h(d,`month`,`months`)} or`:``,_=Op(c.readsPerMinuteCount)?c.readsPerMinuteCount*f:0,v=Op(c.writesPerMinuteCount)?c.writesPerMinuteCount:0,y=c.totalReadCount*f,b=Op(c.totalWriteCount)?c.totalWriteCount:0,x=[_>0&&{icon:ii,label:`Read Rate`,value:`${Oh(_)}/min`,fill:Ah(_,n.readRate)},y>0&&{icon:Kn,label:`Total Reads`,value:Oh(y),fill:Ah(y,n.totalReads)},v>0&&{icon:ii,label:`Write Rate`,value:`${Oh(v)}/min`,fill:Ah(v,n.writeRate)},b>0&&{icon:Rn,label:`Total Writes`,value:Oh(b),fill:Ah(b,n.totalWrites)},!!d&&{icon:ir,label:`License Term`,value:h(d,`month`,`months`)}].filter(Js);return(0,K.jsxs)(X,{className:`basis-full`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-2`,children:[(0,K.jsx)(Z,{onClick:s,className:`cursor-pointer`,children:`Usage block included with this plan`}),(0,K.jsxs)(P,{type:`button`,variant:`link`,className:`text-foreground`,onClick:s,children:[`Learn More `,a?(0,K.jsx)(sn,{}):(0,K.jsx)(Hn,{})]})]}),(0,K.jsx)(`div`,{className:`grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-5`,children:x.map(e=>(0,K.jsx)(Mh,{icon:e.icon,label:e.label,value:e.value,fill:e.fill},e.label))}),(0,K.jsx)(J,{children:(0,K.jsxs)(`dl`,{className:N(`divide-y divide-border rounded-md overflow-hidden transition-[max-height] duration-200 ease-in`,a?`max-h-fit border border-border`:`max-h-0`),children:[(0,K.jsxs)(`div`,{className:`text-sm px-4 py-5 leading-relaxed text-muted-foreground`,children:[`This plan licenses Harper for the usage limits below, `,m,`. The usage license expires`,g,` `,`when any usage limit is reached. New usage blocks are automatically purchased/billed as blocks are consumed.`]}),p.map((e,t)=>(0,K.jsxs)(`div`,{className:N(`px-4 py-1 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-3`,t%2==0&&`bg-muted dark:bg-grey-700`),children:[(0,K.jsx)(`dt`,{className:`text-sm/6 font-medium text-foreground`,children:e.label}),(0,K.jsx)(`dd`,{className:`mt-1 text-sm/6 text-muted-foreground sm:col-span-2 sm:mt-0`,children:e.value})]},e.label))]})}),(0,K.jsx)(Q,{})]})}function Mh({icon:e,label:t,value:n,fill:r}){return(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-md border border-border bg-background/50 p-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,K.jsx)(e,{className:`size-4 shrink-0`}),(0,K.jsx)(`span`,{className:`text-xs font-medium`,children:t})]}),(0,K.jsx)(`span`,{className:`text-lg font-bold text-foreground tabular-nums`,children:n}),r!==void 0&&(0,K.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-sky-500/15`,children:(0,K.jsx)(`div`,{className:`h-full rounded-full bg-sky-500 transition-[width] duration-300`,style:{width:`${Math.max(Math.min(r,1)*100,4)}%`}})})]})}function Nh({control:e,fieldArray:t,form:n,index:r,regionNameToLatencyToRegion:i,premiumOnlyRegions:a,usageScale:o,selectedPlan:s,isEnterprise:c,cloudProvider:l}){let u=(0,G.useMemo)(()=>Object.keys(i).sort(),[i]),d=n.watch(`deploymentDescription`)?.startsWith(`Dedicated`),f=n.watch(`regionPlans.${r}.regionName`),p=n.watch(`regionPlans.${r}.latencyDescription`),m=(0,G.useMemo)(()=>Object.keys(i[f]||{}).sort(yh).reverse(),[i,f]),h=s?.allowedRegionIds,g=(0,G.useCallback)(e=>!h?.length||Object.values(i[e]||{}).some(e=>h.includes(e.id)),[h,i]),_=(0,G.useCallback)(e=>{if(!h?.length)return!0;let t=i[f]?.[e]?.id;return!t||h.includes(t)},[h,i,f]);(0,G.useEffect)(function(){if(f&&m?.length&&!m?.includes(p)){let e=p?.split(` `)[0].toLowerCase(),t=m.find(t=>!e||t.split(` `)[0].toLowerCase()===e)||m[0];n.setValue(`regionPlans.${r}.latencyDescription`,t),n.trigger()}},[m,n,r,p,f]);let v=(0,G.useCallback)(()=>{t?.remove(r),n.trigger()},[t,n,r]);return(0,K.jsxs)(`div`,{className:`md:col-span-6 col-span-3 py-2 pl-4 border-l-4 border-border gap-6 flex flex-wrap items-start`,children:[(0,K.jsx)(Y,{control:e,name:`regionPlans.${r}.regionName`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex-1`,children:[(0,K.jsxs)(Z,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(Wi,{className:`size-4 shrink-0`}),`Region `,t.fields.length>1?r+1:``]}),(0,K.jsx)(J,{children:(0,K.jsxs)(th,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,children:[(0,K.jsx)(ih,{className:`w-full`,children:(0,K.jsx)(rh,{placeholder:`Choose Region`})}),(0,K.jsx)(ah,{children:(0,K.jsx)(nh,{children:u.map(e=>(0,K.jsx)(sh,{value:e,disabled:!g(e),children:(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e,a.regionNames.has(e)&&(0,K.jsx)(Wo,{children:`Premium`})]})},e))})})]})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:e,name:`regionPlans.${r}.latencyDescription`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex-1`,children:[(0,K.jsxs)(Z,{children:[`Estimated `,d?`P95`:`P90`,` Latency, Distribution`]}),(0,K.jsx)(J,{children:(0,K.jsxs)(th,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,disabled:!m?.length,children:[(0,K.jsx)(ih,{className:`w-full`,children:(0,K.jsx)(rh,{placeholder:`Choose Latency Tier`})}),(0,K.jsx)(ah,{children:(0,K.jsx)(nh,{children:m.map(e=>(0,K.jsx)(sh,{value:e,disabled:!_(e),children:(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e,(()=>{let t=i[f]?.[e]?.id;return t&&a.regionIds.has(t)&&(0,K.jsx)(Wo,{children:`Premium`})})()]})},e))})})]})}),(0,K.jsx)(Q,{})]})}),t?.fields?.length&&t?.fields?.length>1&&(0,K.jsx)(`div`,{className:`flex-none mt-6`,children:(0,K.jsxs)(P,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:v,children:[(0,K.jsx)(Za,{}),` `,(0,K.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})}),(0,K.jsx)(jh,{selectedPlan:s,selectedRegion:i[f]?.[p],usageScale:o,isEnterprise:c,cloudProvider:l})]})}function Ph({form:e,regionLocations:t,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,usageScale:i,selectedPlan:a,totalPrice:o,isEnterprise:s,cloudProvider:c}){let l=e.watch(`regionPlans`),u=Wt({control:e.control,name:`regionPlans`}),d=(0,G.useMemo)(()=>{let e=l.map(e=>n?.[e.regionName]?.[e.latencyDescription]?.region);return o?t?.find(t=>!e.includes(t.region)):null},[t,n,l,o]),f=(0,G.useCallback)(()=>{d&&(u.append({regionName:d.region,latencyDescription:d.latencyDescription}),e.trigger())},[e,d,u]);return t?.length?(0,K.jsxs)(K.Fragment,{children:[u.fields.map((t,o)=>(0,K.jsx)(Nh,{control:e.control,fieldArray:u,form:e,index:o,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,usageScale:i,selectedPlan:a,isEnterprise:s,cloudProvider:c},t.id)),d&&(0,K.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,K.jsxs)(P,{type:`button`,variant:`positiveOutline`,onClick:f,children:[(0,K.jsx)(ca,{}),`Add Additional Region Usage`]})})]}):(0,K.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,K.jsx)(mo,{className:`mt-0 m-0`,title:`No Regions Available`,showReturnToHome:!1,error:{message:(0,K.jsxs)(K.Fragment,{children:[`The deployment type you selected currently has no available regions. Please try a different deployment type, try again later, or `,(0,K.jsx)(xl,{}),`.`]})}})})}function Fh({control:e,fieldArray:t,form:n,index:r}){let a=(0,G.useCallback)(()=>{t?.remove(r)},[t,r]);return(0,K.jsxs)(`div`,{className:`md:col-span-6 col-span-3 p-4 rounded-md bg-accent gap-6 flex flex-wrap items-start`,children:[(0,K.jsx)(Y,{control:e,name:`instances.${r}.secure`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsxs)(Z,{children:[`Instance `,t.fields.length>1?r+1:``]}),(0,K.jsx)(J,{children:(0,K.jsxs)(th,{...e,onValueChange:t=>{e.onChange(t),n.trigger()},children:[(0,K.jsx)(ih,{className:`w-full`,children:(0,K.jsx)(rh,{placeholder:`https://`})}),(0,K.jsx)(ah,{children:(0,K.jsxs)(nh,{children:[(0,K.jsx)(sh,{value:`true`,children:`https://`}),(0,K.jsx)(sh,{value:`false`,children:`http://`})]})})]})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:e,name:`instances.${r}.fqdn`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex-3`,children:[(0,K.jsx)(Z,{children:`Host Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,onChange:t=>{e.onChange(t);let i=t.target.value,a=i===`localhost`||i===`127.0.0.1`,o=n.getFieldState(`instances.${r}.secure`);a&&!o.isDirty&&n.setValue(`instances.${r}.secure`,`false`)}})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:e,name:`instances.${r}.port`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Operations API Port`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`number`,min:0,max:Xm,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:String(i),onChange:t=>{e.onChange(t.target.value?parseInt(t.target.value,10):void 0),n.trigger()}})}),(0,K.jsx)(Q,{})]})}),t?.fields?.length&&t?.fields?.length>1&&(0,K.jsx)(`div`,{className:`flex-none mt-6`,children:(0,K.jsxs)(P,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:a,children:[(0,K.jsx)(Za,{}),` `,(0,K.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})})]})}function Ih({form:e}){let t=Wt({control:e.control,name:`instances`}),n=(0,G.useCallback)(()=>{t.append({secure:`true`,fqdn:``,port:i})},[t]);return(0,K.jsxs)(K.Fragment,{children:[t.fields.map((n,r)=>(0,K.jsx)(Fh,{control:e.control,fieldArray:t,form:e,index:r},n.id)),(0,K.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,K.jsxs)(P,{type:`button`,variant:`positiveOutline`,onClick:n,children:[(0,K.jsx)(ca,{}),`Add Instance`]})})]})}function Lh(e,t){return!e.allowedRegionIds?.length||e.allowedRegionIds.includes(t)}function Rh(e,t){let n=new Set,r=new Set;if(!e.length)return{regionNames:n,regionIds:r};let i=Math.min(...e.map(e=>e.planLevel??0)),a=e.filter(e=>(e.planLevel??0)===i),o=e.filter(e=>(e.planLevel??0)>i);if(!o.length)return{regionNames:n,regionIds:r};for(let[e,i]of Object.entries(t)){let t=!1,s=!0;for(let e of Object.values(i)){let n=a.some(t=>Lh(t,e.id)),i=o.some(t=>Lh(t,e.id));(n||i)&&(t=!0,n?s=!1:r.add(e.id))}t&&s&&n.add(e)}return{regionNames:n,regionIds:r}}function zh({calculatedNames:e,clusterId:t,deploymentToPerformanceToPlan:n,form:r,harperVersions:i,isEnterprise:a,cloudProvider:o,isPending:s,mode:c,partialUpgrade:l,regionLocations:u,regionNameToLatencyToRegion:d,selectedDeployment:f,selectedPerformance:p,selectedPlan:m,totalPrice:h}){let{isDirty:g,isValid:_}=Ht(),v=(0,G.useMemo)(()=>{let e=n[f]||{},t=Object.values(e).map(e=>e.planLevel??0),r=t.length?Math.min(...t):0;return Object.keys(e).map(t=>{let n=(e[t].planLevel??0)>r,i=t.slice(0,-1).split(`(`);if(i.length>1)return{performanceTier:t,name:i[0],description:i[1],isPremium:n};let a=t.split(` for `);return a.length>1?{performanceTier:t,name:a[0],description:`For `+a[1],isPremium:n}:{performanceTier:t,name:t,description:``,isPremium:n}})},[n,f]),y=(0,G.useMemo)(()=>Object.keys(n).sort(),[n]),b=(0,G.useMemo)(()=>Rh(Object.values(n[f]||{}),d),[n,d,f]),x=(0,G.useMemo)(()=>kh(Object.values(n).flatMap(e=>Object.values(e)),d),[n,d]);(0,G.useEffect)(function(){v?.length&&!v.find(e=>e.performanceTier===p)&&(r.setValue(`performanceDescription`,v[0].performanceTier),r.trigger())},[f,p,v,r]);let S=f===`Self-Hosted`,C=(0,K.jsx)(on,{className:`mt-3 mb-12`,children:(0,K.jsxs)(P,{type:`submit`,variant:`submit`,disabled:s||t&&!g&&!(c===`version`&&l)||!_,children:[c!==`version`&&h>0?`Confirm Payment Details`:t?`Edit Cluster`:`Create New Cluster`,(0,K.jsx)(Hn,{})]})});return c===`version`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-3 items-start gap-6 text-foreground md:grid-cols-6`,children:[(0,K.jsx)(ph,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!0,form:r}),(0,K.jsx)(_h,{className:`col-span-3`,form:r,harperVersions:i}),(0,K.jsx)(gh,{className:`col-span-3 md:col-span-6`,form:r}),l&&(0,K.jsxs)(`p`,{className:`col-span-3 md:col-span-6 max-w-prose text-xs font-light text-amber-600 dark:text-amber-400`,children:[l.behindCount,` of `,l.total,` instances`,` `,l.behindCount===1?`is`:`are`,` still on an older version. Re-run the upgrade to bring`,` `,l.behindCount===1?`it`:`them`,` up to `,l.latest,`.`]})]}),C]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-3 items-start gap-6 text-foreground md:grid-cols-6`,children:[(0,K.jsx)(ph,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!!t,form:r}),(0,K.jsx)(_h,{className:`col-span-3`,disabled:!!t,form:r,harperVersions:i}),S?(0,K.jsx)(fh,{form:r,disabled:!!t}):(0,K.jsx)($m,{form:r,calculatedNames:e,disabled:!!t}),(0,K.jsx)(dh,{form:r,availableDeploymentTypes:y}),(0,K.jsx)(mh,{availablePerformanceDescriptions:v,form:r,selectedDeployment:f}),S?(0,K.jsx)(Ih,{form:r}):(0,K.jsx)(Ph,{form:r,regionLocations:u,regionNameToLatencyToRegion:d,premiumOnlyRegions:b,usageScale:x,selectedPlan:m,totalPrice:h,isEnterprise:a,cloudProvider:o}),t&&!S&&(0,K.jsx)(gh,{className:`col-span-3 md:col-span-6`,form:r})]}),C]})}function Bh(e){let{fqdn:t}=e,{secure:n,port:r}=e;return r||=i,r===443&&n===`false`&&(n=`true`),r===80&&n===`true`&&(n=`false`),`${n===`true`?`https`:`http`}://${t}${r===443||r===80?``:`:`+r}`.toLowerCase()}function Vh(e,t,n){let r=e.find(e=>(n?!!e.priceUsd:!e.priceUsd)&&e.deploymentType===`colocated`)||e.find(e=>e.deploymentType===`colocated`)||e[0],i=r?.allowedRegionIds;if(r){let e=i?t.filter(e=>i.includes(e.id)):t,n=e.find(e=>e.region===`US`)||e[0];if(n)return{deploymentDescription:r.deploymentDescription,performanceDescription:r.performanceDescription,regionPlans:[{regionName:n.region,latencyDescription:n.latencyDescription}]}}return null}function Hh(e,t,n){if(t&&n){let r=e.getValues();if(!r.deploymentDescription||!r.performanceDescription||!r.regionPlans.length){let i=Vh(t,n);i&&(!r.deploymentDescription&&!r.performanceDescription&&(e.setValue(`deploymentDescription`,i.deploymentDescription),e.setValue(`performanceDescription`,i.performanceDescription)),r.regionPlans.length||e.setValue(`regionPlans`,i.regionPlans))}}}function Uh({price:e}){let t=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).formatToParts(e||0);return(0,K.jsx)(`span`,{className:`text-4xl`,children:t.map((e,t)=>(0,K.jsx)(Wh,{type:e.type,value:e.value},t))})}function Wh({type:e,value:t}){switch(e){case`currency`:case`decimal`:case`fraction`:return(0,K.jsx)(`sup`,{className:`font-light text-xl`,children:t});default:return t}}function Gh({alreadyUsingFree:e,clusterId:t,defaultValues:n,deploymentToPerformanceToPlan:r,harperVersions:a,mode:o,organization:s,organizationId:c,partialUpgrade:l,planTypes:u,regionLocationsColocated:d,regionLocationsDedicated:f,setSavedClusterState:p,startOffOnBilling:m}){let g=se(),_=fe(),v=s?.type===wp,b=s?.channel===`Akamai`?`linode`:void 0,x=ue(),{mutate:S,isPending:C}=vp(),{mutate:w,isPending:T}=bp(),[E,D]=(0,G.useState)(m),O=(0,G.useMemo)(()=>mp(d?.sort(cp(`latencyDescription`))||[],`region`,`latencyDescription`),[d]),k=(0,G.useMemo)(()=>mp(f?.sort(cp(`latencyDescription`))||[],`region`,`latencyDescription`),[f]),A=(0,G.useCallback)((t,n)=>{let i=new Set,a=r?.[t.deploymentDescription]?.[t.performanceDescription];if(t.deploymentDescription===`Self-Hosted`)for(let e=0;e<t.instances.length;e++){let r=Bh(t.instances[e]);i.has(r)?n.addIssue({code:`custom`,path:[`instances.${e}.fqdn`],message:`Every instance url must be unique!`}):i.add(r)}else{a?.priceUsd===0&&e&&n.addIssue({code:`custom`,path:[`performanceDescription`],message:`Only one free cluster is allowed per organization.`});let r=a?.deploymentDescription===`Dedicated`?k:O;for(let e=0;e<t.regionPlans.length;e++){let o=t.regionPlans[e],s=r[o.regionName]?.[o.latencyDescription];i.has(o.regionName)?n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`You can only select a region once!`}):i.add(o.regionName),a?.allowedRegionIds?.length&&s?.id&&(a.allowedRegionIds.includes(s.id)?e>=1&&n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`You can only select one region with this performance tier!`}):Ep(a.allowedRegionIds,s.id)?n.addIssue({code:`custom`,path:[`regionPlans.${e}.latencyDescription`],message:`This latency is not available with the selected performance tier!`}):n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`This region is not available with the selected performance tier!`}))}}},[e,O,k,r]),j=Pt({mode:`onChange`,resolver:Ke(Qm.superRefine(A)),defaultValues:n}),[ee,M]=(0,G.useState)(!0);(0,G.useEffect)(()=>{ee&&n&&(p(null),M(!1))},[n,ee,p]);let N=j.watch(`clusterName`),P=j.watch(`abbreviatedName`),te=j.watch(`deploymentDescription`),F=j.watch(`performanceDescription`),ne=j.watch(`regionPlans`),re=j.watch(`instances`),ie=te===`Dedicated`?k:O,ae=te===`Dedicated`?f:d;(0,G.useEffect)(function(){let e=j.getValues();te&&(te===`Self-Hosted`?(e.abbreviatedName&&j.setValue(`abbreviatedName`,``),e.regionPlans.length&&j.setValue(`regionPlans`,[]),e.instances.length||j.setValue(`instances`,[{secure:`true`,fqdn:``,port:i}])):(e.fqdn&&j.setValue(`fqdn`,``),e.instances.length&&j.setValue(`instances`,[]),e.regionPlans.length||Hh(j,u,ae)))},[j,u,ae,te]);let oe=(0,G.useMemo)(()=>{let e=Tp(Dp(N),Zm.maxLength);return{suggestedAbbreviatedName:e,fullHostName:`${P||e}.${s.subdomain||`your-org`}.harperfabric.com`}},[N,P,s]),I=(0,G.useMemo)(()=>r?.[te]?.[F],[r,te,F]);(0,G.useEffect)(function(){let e=I?.allowedRegionIds;if(e?.length&&ne?.length===1){let t=ne[0],n=ie?.[t.regionName]?.[t.latencyDescription];if(!e.includes(n?.id)){let t=ae?.filter(t=>e.includes(t.id)),n=t?.find(e=>e.region===`US`)||t?.[0];n&&(j.setValue(`regionPlans.0.regionName`,n.region),j.setValue(`regionPlans.0.latencyDescription`,n.latencyDescription),j.trigger())}}},[I,ne,j,ie,ae]),(0,G.useEffect)(function(){if(te!==`Self-Hosted`&&Object.keys(ie).length&&ne.length)for(let e=0;e<ne.length;e++){let t=ne[e];ie[t.regionName]||j.setValue(`regionPlans.${e}.regionName`,``)}},[j,ie,te,ne]);let L=I?.priceUsd?te===`Self-Hosted`?re.length*I.priceUsd:ne.reduce((e,t)=>{let n=ie?.[t.regionName]?.[t.latencyDescription];return e+(n?I.priceUsd*n.instanceCount/2:0)},0):0,ce=I?.planLimits?.expirationMonths,le=Op(ce)&&ce<1e3?ce:void 0,R=le?L/le:L,de=(0,G.useCallback)(({creating:e,deploymentDescription:t})=>U.message(e?`Creating Cluster`:`Updating Cluster`,{description:(0,K.jsx)(gp,{message:`This may take a little bit, hold tight!`,lateMessage:`Still working on it... why don't you grab a coffee, and I'll let you know when it's done?`,duration:t===`Dedicated`?6e4:5e3}),duration:0}),[]),z=(0,G.useCallback)(async({clusterId:e,sourceClusterId:t,creating:n,toastId:r,isSelfManaged:i,skipGtmWait:a})=>{if(t){let e=(await Sp(c)).clusters?.find(e=>e.id===t);Zc(e?.status)&&await Bf(t)}x.invalidateQueries({queryKey:[c],refetchType:`active`}),n||kp(x,e,{refetchType:`active`}),_.invalidate(),g(i?{to:`/${c}/${e}/instances`}:n?{to:`/${c}/${e}/starting-up`}:{to:`/${c}/${e}/scaling`,search:a?{immediate:!0}:void 0}),j.reset(),U.success(n?`Cluster Created`:`Cluster Updated`,{id:r,description:i?void 0:n?`It is being provisioned now.`:`The updates are being provisioned now.`,duration:5e3})},[x,_,g,c,j]),pe=(0,G.useCallback)(async()=>{let e=j.getValues(),n=[],i=r[e.deploymentDescription][e.performanceDescription],a=e.deploymentDescription===`Self-Hosted`;if(a)for(let t of e.instances)n.push({autoRenew:!0,instanceFqdn:t.fqdn,operationsApiPort:t.port||9925,operationsApiSecure:t.secure===`true`,planId:i.id});else for(let t of e.regionPlans){let e=ie[t.regionName][t.latencyDescription];n.push({autoRenew:!0,planId:i.id,regionId:e.id})}p(null);let s=de({creating:!t,deploymentDescription:e.deploymentDescription}),l=()=>U.dismiss(s);t?w(o===`version`?{id:t,version:e.version,skipGtmWait:e.skipGtmWait}:{id:t,regionPlans:n,skipGtmWait:e.skipGtmWait},{onSuccess:t=>z({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:a,creating:!1,toastId:s,skipGtmWait:e.skipGtmWait}),onError:l}):S({abbreviatedName:a?void 0:e.abbreviatedName||oe.suggestedAbbreviatedName,autoRenew:!0,fqdn:a&&e.fqdn||void 0,name:e.clusterName,version:e.version,organizationId:c,regionPlans:n},{onSuccess:t=>z({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:a,creating:!0,toastId:s}),onError:l})},[oe.suggestedAbbreviatedName,t,r,j,z,de,c,ie,p,w,S]),me=(0,G.useCallback)(()=>{if(o!==`version`&&L>0){D(!0);return}return pe()},[o,pe,L]),he=(0,G.useCallback)(e=>{p(e?{clusterId:t,...j.getValues(),skipToBilling:!0}:null)},[t,j,p]),ge=(0,G.useCallback)(()=>{D(!1)},[]),_e=!v&&`mr-37.5`;return(0,K.jsxs)(K.Fragment,{children:[!v&&o!==`version`&&(0,K.jsxs)(`div`,{className:`absolute top-3 right-4 md:right-12 flex flex-col items-end text-right`,children:[(0,K.jsx)(`dt`,{className:`font-light`,children:le?`Monthly Price`:`Total Price`}),(0,K.jsx)(`dd`,{className:`font-bold`,children:L>0?(0,K.jsxs)(`span`,{className:`inline-flex items-baseline`,children:[(0,K.jsx)(Uh,{price:R}),!!le&&(0,K.jsxs)(`span`,{className:`font-light text-base text-muted-foreground`,children:[`/mo`,le>1&&(0,K.jsx)(`sup`,{children:`*`})]})]}):(0,K.jsx)(`span`,{className:`text-4xl text-green`,children:`Free`})})]}),(0,K.jsx)(Lc,{...j,children:E?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`h1`,{className:y(`text-lg leading-none text-foreground font-semibold mb-4`,_e),children:`Cluster Billing`}),(0,K.jsx)(`p`,{className:y(`text-muted-foreground text-sm mb-2`,_e),children:`Please confirm the following billing details:`}),(0,K.jsx)(Jm,{clusterId:t,isPending:C||T,onGoBackToDetails:ge,onSaveStateForBillingRedirect:he,onSubmit:pe,organizationId:c,selectedPlan:I})]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`h1`,{className:y(`text-lg leading-none text-foreground font-semibold mb-4`,_e),children:`Cluster Configuration`}),(0,K.jsxs)(`div`,{className:y(`mb-6 flex flex-col items-start gap-2`,_e),children:[(0,K.jsx)(`p`,{className:`sr-only`,children:`Configure your Harper cluster and define deployment plans.`}),!v&&o!==`version`&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Wo,{variant:`warning`,children:`Beta pricing subject to change.`}),!!le&&le>1&&L>0&&(0,K.jsxs)(`p`,{className:`max-w-prose text-xs font-light text-muted-foreground`,children:[`* Billed as`,` `,new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(L),` `,`every`,` `,h(le,`month`,`months`),`, or sooner if you reach a usage limit — then a new license is issued.`]})]})]}),(0,K.jsx)(`form`,{id:`cluster-upsert-form`,name:`cluster-upsert-form`,onSubmit:j.handleSubmit(me),children:(0,K.jsx)(zh,{calculatedNames:oe,clusterId:t,deploymentToPerformanceToPlan:r,form:j,isPending:C||T,harperVersions:a,mode:o,partialUpgrade:l,regionLocations:ae,regionNameToLatencyToRegion:ie,selectedDeployment:te,selectedPerformance:F,selectedPlan:I,totalPrice:L,isEnterprise:v,cloudProvider:b})})]})})]})}function Kh(e){return e?.clusterName!==void 0}function qh(e){let t=e.filter(e=>!!e&&!(e.status!=null&&Uc.includes(e.status))).map(e=>e.version).filter(e=>!!e);if(t.length<2)return null;let n=t.reduce((e,t)=>nd(t,e)>0?t:e),r=t.filter(e=>e!==n).length;return r>0?{latest:n,behindCount:r,total:t.length}:null}function Jh({isEdit:e,className:t,children:n}){return e?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Qf,{children:(0,K.jsx)(`div`,{className:t,children:n})})]}):(0,K.jsx)(Zf,{className:t,children:n})}function Yh(){let{organizationId:e,clusterId:t,mode:n}=B({strict:!1}),{create:r,update:i}=bf(e),{organization:a,cluster:o}=ve({strict:!1}),[s,c]=xn(vn.SavedClusterState,null),{data:l}=H(ep(e)),{data:u}=H(sp({availableHosts:!0,organizationId:e})),{data:d}=H(sp({organizationId:e})),{data:f}=H(ap(e)),p=(0,G.useMemo)(()=>{if(o){let e=o.instances?.map(e=>e.version).filter(Js);if(f&&e){let t=[...e].sort(nd).pop(),n=new Set(e);return{...f,value:[!!t&&{name:`current`,version:t},...(f?.value||[]).filter(e=>!n.has(e.version)&&(!t||td(t,e.version)))].filter(Js)}}}return f},[f,o]),m=(0,G.useMemo)(()=>qh(o?.instances??[]),[o]),h=(0,G.useMemo)(()=>{for(let e of a?.clusters??[])if(e.id!==o?.id&&l&&!Qc(e.status)&&!Zc(e.status)&&e.plans)for(let t of e.plans){let e=l.find(e=>e.id===t.planId);if(e?.priceUsd===0&&!e.id.startsWith(`self-hosted`))return!0}return!1},[o?.id,a?.clusters,l]),g=(0,G.useMemo)(()=>mp(l?.sort(cp(`priceUsd`))||[],`deploymentDescription`,`performanceDescription`),[l]),_=(0,G.useMemo)(()=>{if(!l||!p||!u||!d||t&&!o)return null;let e=o;if(s){if(Kh(s))return{...s,clusterName:s.clusterName||``,abbreviatedName:s.abbreviatedName||``,version:s.version,deploymentDescription:s.deploymentDescription||``,performanceDescription:s.performanceDescription||``,fqdn:s.fqdn||``,regionPlans:s.regionPlans||[],instances:s.instances||[]};e=s}let n=l?.find(e=>e.id===o?.plans?.[0].planId),r=[],i=[],a=n?.deploymentDescription===`Dedicated`?d:u,c=Vh(l,a,h),f=!1;if(e){if(e.plans){for(let t of e.plans)if(t.regionId){let e=a.find(e=>e.id===t.regionId);e&&r.push({regionName:e.region,latencyDescription:e.latencyDescription})}}if(!r.length&&e.instances){let t=e.instances.filter(e=>e.status&&!Uc.includes(e.status)).sort(dp);for(let e of t)f=!0,i.push({fqdn:e.instanceFqdn,port:e.operationsApiPort,secure:e.operationsApiSecure?`true`:`false`})}}else c&&r.push(...c.regionPlans);!f&&!r.length&&r.push({regionName:``,latencyDescription:``});let m=p.value?.find(e=>e.name===`current`)?.version??p.value?.find(e=>e.name===`stable`)?.version;return{sourceClusterId:e?.id,autoRenew:e?.plans?.[0]?.autoRenew??!0,clusterName:e?.name??``,abbreviatedName:e?.abbreviatedName??``,version:m,deploymentDescription:n?.deploymentDescription??c?.deploymentDescription??``,performanceDescription:n?.performanceDescription??c?.performanceDescription??``,fqdn:f?e?.fqdn??``:``,instances:i,regionPlans:r}},[h,o,t,l,p,u,d,s]);return!_||!a||!l||!u||!d?(0,K.jsx)(Jh,{isEdit:!!t,children:(0,K.jsx)(Bo,{centered:!0,text:`Loading...`})}):(o?.id?!i:!r)?(0,K.jsx)(Jh,{isEdit:!!t,children:(0,K.jsx)(mo,{title:`Not Allowed`,error:{message:(0,K.jsxs)(K.Fragment,{children:[`You do not have permission to `,o?.id?`update`:`create`,` clusters in this org.`]})}})}):l.length===0?(0,K.jsx)(Jh,{isEdit:!!t,children:(0,K.jsx)(mo,{title:`Cluster ${t?`Modification`:`Creation`} Not Currently Allowed`,error:{message:(0,K.jsxs)(K.Fragment,{children:[`There are no available deployment types right now! Please try again later, or `,(0,K.jsx)(xl,{}),`.`]})}})}):(0,K.jsx)(Jh,{isEdit:!!t,className:`max-w-4xl mx-auto`,children:(0,K.jsx)(Gh,{alreadyUsingFree:h,clusterId:t,defaultValues:_,deploymentToPerformanceToPlan:g,harperVersions:p,mode:n,organization:a,organizationId:e,partialUpgrade:m,planTypes:l,regionLocationsColocated:u,regionLocationsDedicated:d,setSavedClusterState:c,startOffOnBilling:Kh(s)&&s.skipToBilling===!0})})}function Xh({children:e}){let{organizationId:t}=B({strict:!1}),{view:n}=vf(t),{update:r}=gf(t),i=`/${t}`,a=[{to:i,label:`Clusters`,icon:wa,exact:!0},n&&{to:`${i}/users`,label:`Users`,icon:so},n&&{to:`${i}/roles`,label:`Roles`,icon:Oa},r&&{to:`${i}/billing`,label:`Billing`,icon:Rr,children:[{to:`${i}/billing`,label:`Payment Method`,exact:!0},{to:`${i}/billing/invoices`,label:`Invoices`}]},r&&{to:`${i}/settings`,label:`Settings`,icon:Ea}].filter(Boolean);return(0,K.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,K.jsxs)(`div`,{className:`md:grid gap-6 md:grid-cols-12`,children:[(0,K.jsx)(`aside`,{className:`md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,K.jsx)(Fo,{items:a,ariaLabel:`Organization sections`})}),(0,K.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:e})]})})}var Zh={FAILED:0,UPDATING:1,PROVISIONING:2,RUNNING:3,TERMINATED:4},Qh=Zh.RUNNING;function $h(e,t){return e.status===t.status?e.name.localeCompare(t.name):(e.status?Zh[e.status]??Qh:Qh)-(t.status?Zh[t.status]??Qh:Qh)}function eg(e,t){let n=t.toLowerCase();return t=>{for(let r of e){let e=t[r];if(e!=null){if(typeof e==`string`){if(e.toLowerCase().includes(n))return!0}else if(typeof e==`boolean`){if(e&&(n===`yes`||n===`true`||n===`1`)||!e&&(n===`no`||n===`false`||n===`0`))return!0}else throw Error(`curryFilterByFuzzySearch has not implemented support for `+typeof e+` fields yet!`)}}return!1}}function tg(){let{organizationId:e}=B({strict:!1}),{create:t}=bf(e),{data:n,isSuccess:r}=ge(Cp(e)),[i]=xn(vn.SavedClusterState,null),[a,o]=(0,G.useState)(``),s=(0,G.useCallback)(()=>o(``),[]),c=(0,G.useCallback)(e=>{o(e.currentTarget.value?.toLowerCase()||``)},[]),l=(0,G.useMemo)(()=>n?.clusters?.slice().filter(e=>!Qc(e.status)).sort($h)||[],[n?.clusters]),u=(0,G.useMemo)(()=>l.filter(eg([`id`,`name`],a))||[],[a,l]);return n&&l.length===0&&t?(0,K.jsx)(Yh,{}):i?(0,K.jsx)(L,{to:`/${e}/new-cluster`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{children:r&&t&&(0,K.jsx)(`div`,{className:`flex w-full justify-end`,children:(0,K.jsx)(V,{to:`new-cluster`,children:(0,K.jsxs)(P,{variant:`positive`,accessKey:`n`,children:[(0,K.jsx)(ca,{}),` `,(0,K.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,K.jsx)(`u`,{children:`N`}),`ew `,(0,K.jsx)(`span`,{className:`hidden md:inline-block`,children:`Cluster`})]})]})})})}),(0,K.jsxs)(Xh,{children:[(0,K.jsxs)(`div`,{className:`relative mb-6 w-full`,children:[(0,K.jsx)(Sa,{className:`pointer-events-none absolute left-0 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,K.jsx)($,{placeholder:`Filter by name`,className:`w-full rounded-none border-0 border-b border-border bg-transparent dark:bg-transparent pl-6 shadow-none focus-visible:border-primary focus-visible:ring-0`,value:a,onChange:c})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-9 mb-4`,children:[u.map(e=>(0,K.jsx)(`div`,{className:`col-span-1 md:col-span-3 xl:col-span-3 2xl:col-span-2`,children:(0,K.jsx)(Xf,{cluster:e})},e.id)),!u.length&&(0,K.jsxs)(`div`,{className:`col-span-1 md:col-span-9 text-center`,children:[(0,K.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,K.jsx)(P,{type:`button`,variant:`outline`,onClick:s,children:`Clear Filters`})]})]})]})]})}function ng(){return`/#`+ic()}function rg(){let{organizationId:e}=B({strict:!1}),t=se(),n=new URLSearchParams(window.location.search).get(`setup_intent_client_secret`),{setup_intent_client_secret:r}=me({strict:!1}),[i]=xn(vn.SavedClusterState,null),a=n||r,o=hm(),s=Mp(e),c=(0,G.useCallback)(()=>{let e=i?i.clusterId?`../../${i.clusterId}/edit`:`../../new-cluster`:`../`;window.history.replaceState(null,``,ng()),t({search:void 0,to:e})},[t,i]);return(0,G.useEffect)(()=>{o&&a&&s&&e&&c&&(async function(){try{let{setupIntent:e}=await o.retrieveSetupIntent(a);switch(e?.status){case`succeeded`:e.payment_method===null?(U.error(`Failed to process payment method details. Please try another payment method.`),c()):s(e.payment_method,c);break;case`processing`:U.warning(`Processing payment method. Please check back later.`),c();break;case`requires_payment_method`:U.error(`Failed to process payment method details. Please try another payment method.`),c();break;default:U.error(`Failed to process payment method details. Please try another payment method.`),c()}}catch(e){console.error(e),U.error(`Failed to process payment method details. Please try another payment method.`),c()}})()},[a,c,e,s,o]),(0,K.jsx)(Bo,{centered:!0})}function ig(){return(0,K.jsx)(Vm,{children:(0,K.jsx)(rg,{})})}function ag(){let{organizationId:e}=B({strict:!1}),{update:t}=gf(e);return t?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Xh,{children:(0,K.jsx)(He,{})})]}):(0,K.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:`You don't have access to manage payments for this organization. Please contact your administrator.`})}var og=500,sg=16,cg=16;function lg({className:e,containerClassName:t,containerRef:n,...r}){return(0,K.jsx)(`div`,{ref:n,"data-slot":`table-container`,className:N(`relative w-full overflow-x-auto`,t),children:(0,K.jsx)(`table`,{"data-slot":`table`,className:N(`w-full caption-bottom text-sm`,e),...r})})}function ug({className:e,...t}){return(0,K.jsx)(`thead`,{"data-slot":`table-header`,className:N(`[&_tr]:border-b`,e),...t})}function dg({className:e,...t}){return(0,K.jsx)(`tbody`,{"data-slot":`table-body`,className:N(`[&_tr:last-child]:border-0`,e),...t})}function fg({className:e,...t}){return(0,K.jsx)(`tr`,{"data-slot":`table-row`,className:N(`border-b border-grey-700 transition-colors`,e),...t})}function pg({className:e,...t}){return(0,K.jsx)(`th`,{"data-slot":`table-head`,className:N(`h-10 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function mg({header:e,onColumnClick:t,className:n,...r}){let i=(0,G.useCallback)(()=>{e.column.toggleSorting(e.column.getIsSorted()===`asc`);let n=e.column.getIsSorted()===!1||e.column.getIsSorted()!==`asc`;t?.(e.column.columnDef.accessorKey,n)},[e,t]),a=e.column.columnDef.enableSorting,o=e.getContext().table.options.enableColumnResizing===!0&&e.column.getCanResize(),s=e.isPlaceholder?null:Me(e.column.columnDef.header,e.getContext()),c=e.getContext().table,l=e.getSize(),u=e.column.columnDef.minSize??c.options.defaultColumn?.minSize??20,d=(0,G.useCallback)(t=>{let n=t.currentTarget.closest(`table`);if(!n){e.column.resetSize();return}let r=`[data-col-id="${CSS.escape(e.column.id)}"]`,i=document.createRange(),a=e=>(i.selectNodeContents(e),i.getBoundingClientRect().width),o=0;n.querySelectorAll(`tbody ${r}`).forEach(e=>{o=Math.max(o,a(e))});let s=n.querySelector(`thead ${r} > div`),l=s?.querySelector(`.truncate`);if(s&&l){let e=Array.from(s.children).reduce((e,t)=>e+t.getBoundingClientRect().width,0)-l.getBoundingClientRect().width;o=Math.max(o,a(l)+e+cg)}let d=Math.min(Math.max(Math.ceil(o)+sg,u),og);c.setColumnSizing(t=>({...t,[e.column.id]:d}))},[e,c,u]),f=e.column.getIsResizing()?Math.max(c.store.state.columnResizing.deltaOffset??0,u-l):0;return(0,K.jsxs)(pg,{...r,"data-col-id":e.column.id,style:{width:`${l}px`,maxWidth:`${l}px`},className:N(`relative`,o&&`select-none`,a?`px-0`:`px-2`,n),children:[(0,K.jsx)(`div`,{className:N(`flex items-center min-w-0 overflow-hidden`,o&&`pr-4`),children:a?(0,K.jsxs)(P,{type:`button`,variant:`ghost`,className:N(`rounded-none min-w-0`,!e.column.getIsSorted()||e.column.getIsSorted()===`asc`?`cursor-n-resize`:`cursor-s-resize`),onClick:i,children:[(0,K.jsx)(`span`,{className:`truncate`,children:s}),e.column.getIsSorted()===`asc`?(0,K.jsx)(an,{className:`shrink-0`}):e.column.getIsSorted()===`desc`?(0,K.jsx)(sn,{className:`shrink-0`}):(0,K.jsx)(Wn,{className:`shrink-0 text-gray-600`})]}):(0,K.jsx)(`span`,{className:`truncate`,children:s})}),o&&(0,K.jsx)(`div`,{"aria-hidden":!0,className:`absolute top-0 right-0 z-10 flex h-full w-4 cursor-col-resize items-center justify-center text-muted-foreground hover:text-foreground`,onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),onDoubleClick:d,style:{transform:e.column.getIsResizing()?`translateX(${f}px)`:``},children:(0,K.jsx)(ui,{className:`size-3.5`})})]})}function hg({className:e,...t}){return(0,K.jsx)(`td`,{"data-slot":`table-cell`,className:N(`align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}var gg=Ee({columnSizingFeature:Te,columnResizingFeature:je,columnVisibilityFeature:Re,columnFilteringFeature:Be,rowSelectionFeature:Pe,rowSortingFeature:Ce,sortedRowModel:Ae(),sortFns:Fe});function _g(){return De()}function vg({columns:e,data:t,isFetching:n,onRowClick:r,onColumnClick:i,sortingState:a,children:o}){let s=Le({features:gg,data:t,columns:e,initialState:{sorting:a??[]}});return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-end space-x-2 pb-4`,children:[(0,K.jsx)(`div`,{className:`grow lg:hidden`}),o,(0,K.jsx)(`div`,{className:`grow hidden lg:visible`})]}),(0,K.jsxs)(lg,{containerClassName:`rounded-md bg-card dark:bg-black-dark`,children:[(0,K.jsx)(ug,{children:s.getHeaderGroups().map(e=>(0,K.jsx)(fg,{className:`border-none`,children:e.headers.map(e=>(0,K.jsx)(mg,{header:e,onColumnClick:i},e.id))},e.id))}),(0,K.jsx)(dg,{className:`bg-background dark:bg-black border border-border dark:border-grey-700`,children:s.getRowModel().rows?.length?s.getRowModel().rows.map(e=>(0,K.jsx)(fg,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>r?.(e),className:N(`hover:bg-muted/10 data-[state=selected]:bg-muted`,r&&`cursor-pointer`),children:e.getVisibleCells().map(e=>(0,K.jsx)(hg,{className:`py-2 px-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,style:{width:`${e.column.getSize()}px`},children:Me(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,K.jsx)(fg,{children:(0,K.jsx)(hg,{colSpan:e.length,className:`h-24 text-center`,children:n?(0,K.jsx)(`div`,{children:(0,K.jsx)(Bo,{className:`p-12`})}):(0,K.jsx)(`span`,{children:`No results.`})})})})]})]})}function yg(e){switch(e){case`paid`:return`success`;case`void`:case`uncollectible`:return`destructive`;default:return`default`}}function bg(e){return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(e)}function xg(e,t){if(e<45)return`a few seconds ago`;if(e<120)return`a minute ago`;let n=Math.floor(e/60);if(n<60)return`${n} minutes ago`;if(n<120)return`an hour ago`;let r=Math.floor(e/3600);return r>48?new Date(t).toLocaleString():`${r} hours ago`}var Sg=[{header:`Invoice Id`,accessorKey:`id`,enableSorting:!1},{header:`Status`,accessorKey:`status`,enableSorting:!1,cell:({cell:e})=>(0,K.jsx)(Wo,{variant:yg(e.getValue()),children:e.getValue()})},{header:`Date`,accessorKey:`periodStart`,enableSorting:!1,cell:({cell:e})=>{let t=e.row.original.periodStart*1e3,n=e.row.original.periodEnd*1e3,r=(Date.now()-t)/1e3,i=(Date.now()-n)/1e3;return Math.abs(r-i)<1e3?xg(r,t):[t?xg(r,t):`-`,n?xg(i,n):`-`].join(` to `)}},{header:`Amount Due`,accessorKey:`amountDue`,enableSorting:!1,cell:({cell:e})=>bg(e.getValue()?e.getValue()/100:0)},{header:`Amount Paid`,accessorKey:`amountPaid`,enableSorting:!1,cell:({cell:e})=>bg(e.getValue()?e.getValue()/100:0)},{header:`Lines`,accessorKey:`lines`,enableSorting:!1,cell:({cell:e})=>{let t=e.getValue(),n=[];for(let e of t)n.push(`${e.quantity}x ${e.description} @ ${bg(e.amount/100)}`);return n.join(`
|
|
12
|
-
`)}}];function Cg(e){return(0,G.useCallback)(async()=>{U.loading(`Refreshing...`,{id:`refreshing`});let t=Date.now();await e(),Date.now()-t<500&&await n(500),U.success(`Refreshed!`,{id:`refreshing`})},[e])}async function wg(e){let{data:t}=await M.get(`/Invoice/${e}`);return t}function Tg(e,t){return z({queryKey:[e,`invoices`],queryFn:()=>wg(e),retry:!1,enabled:!!e,refetchInterval:t?1e4:void 0})}function Eg(){let{organizationId:e}=B({strict:!1}),{data:t}=H(Cp(e)),{data:n,refetch:r,isLoading:i,isFetching:a,isRefetching:o}=H(Tg(t?.type!==`ENTERPRISE`&&t?.id,!1)),s=Cg(r);return t?.type===`ENTERPRISE`?(0,K.jsxs)(`span`,{children:[`You are part of an enterprise organization! We don’t currently show your invoices on this page. Want to explore your solution with Harper more? `,(0,K.jsx)(xl,{}),`, we would love to talk!`]}):i?(0,K.jsx)(Bo,{centered:!0}):!n||!n.length?(0,K.jsxs)(`span`,{children:[`Your invoices will be shown here once one is available! Want to explore your solution with Harper more?`,` `,(0,K.jsx)(xl,{overEmail:!0}),`, we would love to talk!`]}):(0,K.jsx)(vg,{data:n,columns:Sg,children:(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:s,accessKey:`r`,disabled:a||o,children:[(0,K.jsx)(ua,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]})})}function Dg(e){let t=I({getParentRoute:()=>e,path:`billing`,head:()=>({meta:[{title:`Billing — Harper Fabric`}]}),component:ag}),n=I({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Payment Methods — Harper Fabric`}]}),component:qm}),r=I({getParentRoute:()=>t,path:`invoices`,head:()=>({meta:[{title:`Invoices — Harper Fabric`}]}),component:Eg}),i=I({getParentRoute:()=>t,path:`confirm`,head:()=>({meta:[{title:`Confirm Payment — Harper Fabric`}]}),component:ig});return t.addChildren([n,r,i])}async function Og(e){let{data:t}=await M.get(`/OrganizationRole/${e}`);return t}function kg(e){return z({queryKey:[e,`roles`],queryFn:()=>Og(e),retry:!1,refetchInterval:al(1e4)})}var Ag=_g(),jg=[{header:`Role Name`,accessorKey:`roleName`,enableSorting:!1},Ag.display({header:`ID`,id:`id`,enableSorting:!1,cell:e=>(0,K.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,title:e.row.original.id,children:e.row.original.id})}),Ag.display({header:`Users Assigned`,enableSorting:!1,id:`userIds`,cell:e=>!e.row.original.userIds||e.row.original.userIds.length===0?`No users assigned`:e.row.original.userIds.length})];async function Mg(e){let{data:t}=await M.post(`/Role/`,e);return t}function Ng(){return R({mutationFn:Mg})}var Pg=S({name:A().nonempty({error:`Please enter a role name.`}).regex(/^[a-zA-Z_]*$/,{error:`Role must contain only letters and underscores.`}).max(30,{error:`Role name cannot be longer than 30 characters.`}),update:D(),delete:D()});S({roles:S({create:D(),delete:D(),update:D(),view:D()}),clusters:S({create:D(),delete:D(),update:D(),view:D(),resources:T(S({id:A(),delete:D(),update:D(),view:D(),instances:S({create:D(),delete:D(),update:D(),view:D()})}))})});function Fg(){let[e]=Ds(),t=ws();return e===`dark`||e===`system`&&t===`dark`?`vs-dark`:`light`}var Ig=(0,G.lazy)(async()=>(await F(()=>import(`./setup-BYQxFy-C.js`),__vite__mapDeps([18,4,1,19,20,21,22,23,24])),{default:(await F(()=>import(`./dist-Cz2Y6-6G.js`),__vite__mapDeps([19,1,4]))).default}));function Lg(e){return(0,K.jsx)(G.Suspense,{fallback:e.loading??null,children:(0,K.jsx)(Ig,{...e})})}var Rg={roles:{create:!0,view:!0,update:!0,delete:!0},clusters:{create:!0,view:!0,update:!0,delete:!0,resources:[]}};function zg({isModalOpen:e,setIsModalOpen:t}){let n=Fg(),r=ue(),{organizationId:i}=B({strict:!1}),[a,o]=(0,G.useState)(!0),[s,c]=(0,G.useState)(JSON.stringify(Rg,null,2)),{mutate:l,isPending:u}=Ng(),d=Pt({resolver:Ke(Pg),defaultValues:{name:``,update:!1,delete:!1}}),f=(0,G.useCallback)(e=>{o(e.length===0)},[o]),p=(0,G.useCallback)(async e=>{let n=Ue(s);if(!n)return;let o={...e,...n,organizationId:i};e&&a&&l(o,{onSuccess:()=>{U.success(`Organization role added successfully!`),t(!1),r.invalidateQueries({queryKey:[i,`roles`],refetchType:`active`}),d.reset()},onError:e=>{U.error(`Failed to add organization role: ${e.message}`)}})},[a,s,l,d,r,t,i]);return(0,K.jsx)(fn,{onOpenChange:t,open:e,children:(0,K.jsxs)(cn,{resizable:!0,children:[(0,K.jsx)(ln,{children:`Add New Organization Role`}),(0,K.jsx)(un,{children:`Set the new organization role permissions.`}),(0,K.jsx)(Lc,{...d,children:(0,K.jsxs)(`form`,{id:`org-add-role-form`,name:`org-add-role-form`,className:`flex flex-1 min-h-0 flex-col gap-4 my-4`,onSubmit:d.handleSubmit(p),children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,K.jsx)(Y,{control:d.control,name:`name`,render:({field:e})=>(0,K.jsxs)(X,{className:`col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Role Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,className:``,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:d.control,name:`update`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Can Update Organization`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:d.control,name:`delete`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Can Delete Organization`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Q,{})]})})]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)(Lg,{className:`w-full h-full`,theme:n,defaultLanguage:`json`,onValidate:f,onChange:e=>{e&&c(e)},options:{automaticLayout:!0},defaultValue:JSON.stringify(Rg,null,2)})}),(0,K.jsx)(on,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(P,{variant:`destructiveOutline`,type:`button`,onClick:()=>t(!1),disabled:u,children:`Cancel`}),(0,K.jsx)(P,{variant:`submit`,disabled:u||!a||!d.formState.isValid,children:`Save Changes`})]})})]})})]})})}async function Bg({roleId:e}){let{data:t}=await M.delete(`/Role/${e}`,{id:e,deleted:!0});return t}function Vg(){return R({mutationFn:({roleId:e})=>Bg({roleId:e})})}async function Hg({roleId:e,updatedRoleInfo:t}){let{data:n}=await M.put(`/Role/${e}`,t);return n}function Ug(){return R({mutationFn:({roleId:e,updatedRoleInfo:t})=>Hg({roleId:e,updatedRoleInfo:t})})}function Wg({organizationId:e,roleId:t}){return z({queryKey:[e,`roles`,t],queryFn:()=>Gg(t),refetchInterval:al(1e4),retry:ol()})}async function Gg(e){let{data:t}=await M.get(`/Role/${e}`);return t}function Kg({onRoleDeleteClick:e,setIsConfirmingRoleDeletion:t,isRoleDeletionPending:n}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(ln,{children:`Confirm Role Deletion`}),(0,K.jsx)(un,{children:`Are you sure you want to delete this role? This action cannot be undone.`}),(0,K.jsxs)(on,{children:[(0,K.jsx)(P,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,K.jsx)(P,{variant:`destructiveOutline`,onClick:e,disabled:n,children:n?`Deleting...`:`Delete Role`})]})]})}function qg({data:e,isModalOpen:t,closeModal:n}){let r=(0,G.useCallback)(()=>n(!1),[n]);return(0,K.jsx)(fn,{onOpenChange:r,open:t,children:(0,K.jsx)(cn,{resizable:!0,children:(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(Jg,{roleName:e.roleName}),children:(0,K.jsx)(Yg,{data:e,closeModal:n})})})})}function Jg({roleName:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(ln,{children:[`Organization Role "`,e,`"`]}),(0,K.jsx)(Bo,{centered:!0,text:`Loading role…`,className:`flex-1 min-h-0`})]})}function Yg({data:e,closeModal:t}){let n=ue(),{data:r}=ge(Wg({roleId:e.id,organizationId:e.organizationId})),i=wn().user?.roles?.[e.organizationId]?.id===e.id,{update:a,remove:o}=vf(e.organizationId),{mutate:s,isPending:c}=Ug(),{mutate:l,isPending:u}=Vg(),d=Fg(),[f,p]=(0,G.useState)(!1),m=Pt({resolver:Ke(Pg),defaultValues:{name:e.roleName,update:r.organization.update||!1,delete:r.organization.delete||!1}}),h=(0,G.useCallback)(()=>{l({roleId:e.id},{onSuccess:()=>{U.success(`Role deleted successfully!`),t(!0),m.reset()},onError:e=>{U.error(`Error`,{description:`Failed to delete role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}})},[e.id,l,m,t]),[g,_]=(0,G.useState)(!0),v=(0,G.useMemo)(()=>JSON.stringify({roles:{...r.organization.roles},clusters:{...r.organization.clusters}},null,2),[r]),[y,b]=(0,G.useState)(v),x=y!==v,S=(0,G.useCallback)(e=>{_(e.length===0)},[_]),C=(0,G.useCallback)(async r=>{if(!a)return;let i=Ue(y);if(!i)return;let o={...r,...i,organizationId:e.organizationId};y&&g&&s({roleId:e.id,updatedRoleInfo:o},{onSuccess:async()=>{U.success(`Role updated successfully!`),await n.invalidateQueries({queryKey:[e.organizationId,`roles`,e.id]}),t(!1),m.reset()},onError:e=>{U.error(`Error`,{description:`Failed to update role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}})},[t,e.id,e.organizationId,m,g,n,r,a,y,s]);return f?(0,K.jsx)(Kg,{onRoleDeleteClick:h,setIsConfirmingRoleDeletion:p,isRoleDeletionPending:u}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(ln,{children:[i||!a?`View`:`Edit`,` Organization Role "`,e.roleName,`"`]}),(0,K.jsx)(Lc,{...m,children:(0,K.jsxs)(`form`,{id:`org-edit-role-form`,name:`org-edit-role-form`,className:`flex flex-1 min-h-0 flex-col gap-4 my-4`,onSubmit:m.handleSubmit(C),children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,K.jsx)(Y,{control:m.control,name:`name`,render:({field:e})=>(0,K.jsxs)(X,{className:`col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Role Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,className:``,...e,disabled:!0,readOnly:!0})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`update`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Can Update Organization`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,disabled:i||!a,readOnly:i||!a,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`delete`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Can Delete Organization`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,disabled:i||!a,readOnly:i||!a,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Q,{})]})})]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)(Lg,{className:`w-full h-full`,theme:d,defaultLanguage:`json`,onValidate:S,onChange:e=>{e&&b(e)},options:{readOnly:i||!a,automaticLayout:!0},defaultValue:y})}),!i&&(o||a)&&(0,K.jsx)(on,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[o&&(0,K.jsx)(P,{type:`button`,variant:`destructiveOutline`,onClick:()=>p(!0),disabled:c,children:`Delete Role`}),a&&(0,K.jsx)(P,{variant:`submit`,disabled:!g||c||!m.formState.isValid||!m.formState.isDirty&&!x,children:`Save Changes`})]})})]})})]})}function Xg(){let e=se(),t=ue(),{organizationId:n,orgRoleId:r}=B({strict:!1}),{create:i}=vf(n),{data:a,refetch:o,isFetching:s,isRefetching:c}=ge(kg(n)),l=(0,G.useMemo)(()=>a&&a?.find(e=>e.id===r),[a,r]),u=!!r&&!!l,[d,f]=(0,G.useState)(!1),p=(0,G.useCallback)(async(i,a)=>{let o=[r?`..`:``,i].filter(Boolean);await e({to:o.join(`/`)}),a&&await t.invalidateQueries({queryKey:[n,`roles`],refetchType:`active`})},[r,e,t]),m=(0,G.useCallback)(()=>{f(!0)},[f]),h=(0,G.useCallback)(e=>p(e.original.id,!1),[p]),g=(0,G.useCallback)(e=>p(void 0,e),[p]),_=Cg(o);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Xh,{children:(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(Bo,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(vg,{data:a,columns:jg,onRowClick:h,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:_,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(ua,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),i&&(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:d,children:[(0,K.jsx)(ca,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),i&&(0,K.jsx)(zg,{isModalOpen:d,setIsModalOpen:f}),u&&(0,K.jsx)(qg,{data:l,isModalOpen:u,closeModal:g},l.id)]})})]})}function Zg({className:e,...t}){return(0,K.jsx)(_t,{"data-slot":`switch`,className:N(`peer data-[state=checked]:bg-green data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-grey-500 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,e),...t,children:(0,K.jsx)(Xe,{"data-slot":`switch-thumb`,className:N(`bg-white dark:data-[state=unchecked]:bg-white dark:data-[state=checked]:bg-white pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0`)})})}async function Qg(e,t){let{data:n}=await M.patch(`/Organization/${e}/settings/oauth`,t);return n}var $g=S({domain:A().min(1,`Domain is required`),clientId:A().min(1,`Client ID is required`),clientSecret:A().min(1,`Client secret is required`),scope:A().optional()}),e_=S({domain:A().min(1,`Domain is required`),clientId:A().optional(),clientSecret:A().optional(),scope:A().optional()});function t_(){let{organizationId:e}=B({strict:!1}),{user:t}=wn(),{update:n}=gf(e),{data:r}=ge(Cp(e)),i=ue(),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(null),l=r.settings?.oauthConfigs??[],{mutate:u,isPending:d}=R({mutationFn:t=>Qg(e,t),onSuccess:()=>void i.invalidateQueries({queryKey:[e]}),onError:()=>U.error(`Failed to update OAuth settings.`)}),f=Pt({resolver:Ke($g),defaultValues:{domain:``,clientId:``,clientSecret:``,scope:`openid email profile`}}),p=e=>{u({provider:`okta`,...e},{onSuccess:()=>{U.success(`OAuth provider added.`),f.reset(),o(!1)}})},m=Pt({resolver:Ke(e_)}),h=e=>{c(e.id??null),m.reset({domain:e.domain,clientId:``,clientSecret:``,scope:e.scope??``})},g=(e,t)=>{let n={id:e.id,provider:e.provider,domain:t.domain,scope:t.scope};t.clientId&&(n.clientId=t.clientId),t.clientSecret&&(n.clientSecret=t.clientSecret),u(n,{onSuccess:()=>{U.success(`OAuth provider updated.`),c(null)}})},_=(e,t)=>{u({id:e.id,provider:e.provider,[t]:!e[t]})},v=e=>`//oauth/${e}/callback`,y=async e=>{await Kf(e)&&U.success(`Sign-in URL copied.`)},b=async e=>{await Kf(e)&&U.success(`Redirect URI copied.`)};return n?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Xh,{children:(0,K.jsxs)(`div`,{className:`max-w-2xl`,children:[(0,K.jsx)(`h2`,{className:`text-2xl text-foreground font-light mb-6`,children:`Authentication`}),(0,K.jsxs)(`section`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,K.jsx)(`h3`,{className:`text-lg text-foreground font-medium`,children:`OAuth Providers`}),!a&&(0,K.jsxs)(P,{variant:`positiveOutline`,size:`sm`,onClick:()=>o(!0),children:[(0,K.jsx)(ca,{}),`Add Provider`]})]}),l.length===0&&!a&&(0,K.jsx)(`p`,{className:`text-muted-foreground text-sm mb-4`,children:`No OAuth providers configured.`}),l.map(e=>{let n=t?.oauthConfigId===e.id;return s===e.id?(0,K.jsxs)(`div`,{className:`border rounded-lg p-4 mb-3 text-foreground`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,K.jsx)(`h4`,{className:`font-medium`,children:`Edit Provider`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>c(null),className:`text-muted-foreground hover:text-foreground`,children:(0,K.jsx)(gn,{className:`size-4`})})]}),(0,K.jsx)(Lc,{...m,children:(0,K.jsxs)(`form`,{onSubmit:m.handleSubmit(t=>g(e,t)),className:`space-y-4`,children:[(0,K.jsx)(Y,{control:m.control,name:`domain`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Domain`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`company.okta.com`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`clientId`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Client ID`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`Leave blank to keep existing`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`clientSecret`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Client Secret`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,placeholder:`Leave blank to keep existing`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`scope`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Scope`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`openid email profile`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,K.jsx)(P,{type:`submit`,variant:`positive`,disabled:d,children:d?`Saving...`:`Save`}),(0,K.jsx)(P,{type:`button`,variant:`outline`,onClick:()=>c(null),children:`Cancel`})]})]})})]},e.id):(0,K.jsx)(`div`,{className:`border rounded-lg p-4 mb-3 text-foreground`,children:(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between sm:gap-4`,children:[(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,K.jsx)(`span`,{className:`font-medium`,children:e.domain}),(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground uppercase bg-muted px-2 py-0.5 rounded`,children:e.provider}),e.enabled===!1&&(0,K.jsx)(`span`,{className:`text-xs text-destructive bg-destructive/10 px-2 py-0.5 rounded`,children:`Disabled`})]}),(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground mb-2`,children:[`Client ID: `,(0,K.jsx)(`span`,{className:`text-foreground font-mono`,children:`****`})]}),e.id&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`mt-3 rounded-md bg-muted px-3 py-2`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1`,children:`Okta redirect URI`}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-1.5`,children:[`Add to `,(0,K.jsx)(`span`,{className:`font-medium text-foreground`,children:`Login redirect URIs`}),` `,`in your Okta app settings.`]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`text-sm text-foreground font-mono truncate`,children:v(e.id)}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>void b(v(e.id)),className:`hover:text-foreground shrink-0 text-muted-foreground`,title:`Copy redirect URI`,children:(0,K.jsx)(Ir,{className:`size-3.5`})})]})]}),(0,K.jsxs)(`div`,{className:`mt-2 rounded-md bg-muted px-3 py-2`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`User login link`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`a`,{href:cu(e.id),target:`_blank`,rel:`noreferrer`,className:`text-sm text-foreground truncate hover:underline`,children:cu(e.id)}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0 text-muted-foreground`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>void y(cu(e.id)),className:`hover:text-foreground`,title:`Copy login link`,children:(0,K.jsx)(Ir,{className:`size-3.5`})}),(0,K.jsx)(`a`,{href:cu(e.id),target:`_blank`,rel:`noreferrer`,className:`hover:text-foreground`,title:`Open login link`,children:(0,K.jsx)(Wr,{className:`size-3.5`})})]})]})]})]})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-3 sm:shrink-0`,children:[(0,K.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-foreground cursor-pointer`,children:[(0,K.jsx)(Zg,{checked:e.enabled!==!1,onCheckedChange:()=>_(e,`enabled`),disabled:d}),`Enabled`]}),(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-sm text-foreground ${n?`cursor-pointer`:`cursor-not-allowed opacity-50`}`,children:[(0,K.jsx)(Zg,{checked:!!e.required,onCheckedChange:()=>_(e,`required`),disabled:d||!n}),`Required`]})}),!n&&(0,K.jsxs)(Rs,{children:[`Sign in via `,e.provider,` first to enable Required`]})]}),(0,K.jsx)(P,{variant:`outline`,size:`sm`,onClick:()=>h(e),disabled:d,children:(0,K.jsx)(ia,{className:`size-4`})})]})]})},e.id)}),a&&(0,K.jsxs)(`div`,{className:`border rounded-lg p-4 text-foreground`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,K.jsx)(`h4`,{className:`font-medium`,children:`Add Okta Provider`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>{o(!1),f.reset()},className:`text-muted-foreground hover:text-foreground`,children:(0,K.jsx)(gn,{className:`size-4`})})]}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-4`,children:[`After saving, copy the `,(0,K.jsx)(`span`,{className:`font-medium text-foreground`,children:`Okta redirect URI`}),` `,`from the provider card and add it to your Okta app's`,` `,(0,K.jsx)(`span`,{className:`font-medium text-foreground`,children:`Login redirect URIs`}),`.`]}),(0,K.jsx)(Lc,{...f,children:(0,K.jsxs)(`form`,{onSubmit:f.handleSubmit(p),className:`space-y-4`,children:[(0,K.jsx)(Y,{control:f.control,name:`domain`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Domain`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`company.okta.com`,autoFocus:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:f.control,name:`clientId`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Client ID`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`Okta Client ID`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:f.control,name:`clientSecret`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Client Secret`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,placeholder:`Okta Client Secret`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:f.control,name:`scope`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Scope`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`openid email profile`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,K.jsx)(P,{type:`submit`,variant:`positive`,disabled:d,children:d?`Adding...`:`Add Provider`}),(0,K.jsx)(P,{type:`button`,variant:`outline`,onClick:()=>{o(!1),f.reset()},children:`Cancel`})]})]})})]})]})]})})]}):(0,K.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))] text-foreground`,children:`You don't have permission to manage settings for this organization.`})}S({email:ul.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:A().nonempty({error:`Please select a role.`})});async function n_(e){let{data:t}=await M.post(`/UserInvite/`,e);return t}function r_(){return R({mutationFn:e=>n_(e)})}function i_({user:e}){let{update:t}=vf(),{mutate:n,isPending:r}=r_(),i=e.roles?.[0]?.id,a=(0,G.useCallback)(t=>{if(t.stopPropagation(),!e.email||!i){U.error(`Cannot resend invite: this user has no email or role.`);return}n({email:e.email,roleId:i},{onSuccess:()=>U.success(`Invitation resent to ${e.email}.`)})},[n,i,e.email]);return t?(0,K.jsxs)(P,{variant:`ghost`,size:`sm`,className:`h-auto px-2 py-0 align-middle text-sm`,onClick:a,disabled:r||!i,children:[(0,K.jsx)(Hi,{}),` Resend invite`]}):null}var a_=_g(),o_=[{header:`User Id`,accessorKey:`id`,enableSorting:!1},{header:`Email`,accessorKey:`email`,enableSorting:!1},{header:`First Name`,accessorKey:`firstname`,enableSorting:!1},{header:`Last Name`,accessorKey:`lastname`,enableSorting:!1},a_.display({header:`Roles`,enableSorting:!1,id:`roles`,cell:e=>e.row.original.roles?.map(e=>e.roleName)?.sort()?.join(`, `)}),{header:`Status`,accessorKey:`status`,enableSorting:!1},{header:`Verified`,accessorKey:`isVerified`,enableSorting:!1},a_.display({header:``,enableSorting:!1,id:`actions`,cell:e=>e.row.original.status===`PENDING`?(0,K.jsx)(i_,{user:e.row.original}):null})];function s_({name:e,id:t}){return(0,K.jsxs)(`span`,{className:`flex items-baseline gap-2 truncate`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:e}),(0,K.jsx)(`span`,{className:`text-muted-foreground font-mono text-xs`,children:t})]})}var c_=S({email:ul.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:A().nonempty({error:`Please select a role.`})});async function l_(e){let{data:t}=await M.post(`/OrganizationRole/`,e);return t}function u_(){return R({mutationFn:e=>l_(e)})}function d_({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let{organizationId:r}=B({strict:!1}),{data:i,isLoading:a}=H({...kg(r),throwOnError:!0}),[o,s]=(0,G.useState)(!1),c=Pt({resolver:Ke(c_),defaultValues:{email:``,roleId:``}}),{mutate:l,isPending:u}=u_(),{mutate:d,isPending:f}=r_(),p=(0,G.useCallback)(async e=>{e&&(o?d:l)(e,{onSuccess:()=>{let r=e.roleId;c.reset(),c.setValue(`roleId`,r),t(),U.success(`User invited successfully!`),n(!1),s(!1)},onError:e=>{e?.status===404&&s(!0)}})},[l,c,d,t,n,o]);return(0,K.jsx)(fn,{onOpenChange:()=>{n(!1),s(!1),c.reset()},open:e,children:(0,K.jsx)(cn,{"aria-describedby":void 0,children:(0,K.jsx)(Lc,{...c,children:(0,K.jsxs)(`form`,{id:`org-add-user-form`,name:`org-add-user-form`,onSubmit:c.handleSubmit(p),className:`grid gap-4 my-4`,children:[(0,K.jsx)(rn,{children:(0,K.jsx)(ln,{children:o?`Invite User`:`Add User`})}),(0,K.jsx)(Y,{control:c.control,name:`email`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Email`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`email`,enterKeyHint:`next`,autoComplete:`email`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:c.control,name:`roleId`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Roles`}),a?(0,K.jsx)(eh,{}):(0,K.jsx)(J,{children:(0,K.jsxs)(th,{...e,onValueChange:t=>e.onChange(t),children:[(0,K.jsx)(ih,{className:`w-full`,children:(0,K.jsx)(rh,{placeholder:`Choose Role`})}),(0,K.jsx)(ah,{children:(0,K.jsxs)(nh,{children:[(0,K.jsx)(oh,{children:`Role`}),i?.map(e=>(0,K.jsx)(sh,{value:e.id,children:(0,K.jsx)(s_,{name:e.roleName,id:e.id})},e.id))]})})]})}),(0,K.jsx)(Q,{})]})}),o&&(0,K.jsxs)(un,{className:`p-3 my-5 text-white rounded-md bg-amber-600 flex`,children:[(0,K.jsx)(Bi,{className:`inline-block size-12 pr-2`}),(0,K.jsx)(`span`,{children:`This person doesn’t have a Fabric account. Do you want to invite them?`})]}),(0,K.jsx)(on,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(P,{type:`submit`,variant:`submit`,disabled:u||f,children:[(0,K.jsx)(va,{}),` `,o?`Invite User`:`Add User`]})})})]})})})})}async function f_({roleId:e,userId:t}){let{data:n}=await M.delete(`/OrganizationRole/role/${e}/user/${t}`);return n}function p_(){return R({mutationFn:({roleId:e,userId:t})=>f_({roleId:e,userId:t})})}function m_(e){let[t,n]=(0,G.useState)(e||!1);return[t,(0,G.useCallback)(e=>{n(typeof e==`boolean`?e:e.target.checked)},[])]}function h_({data:e,readOnly:t,canRemove:n,orgRole:r,selectedRoles:i,setChangesMade:a}){let{mutate:o,isPending:s}=u_(),{mutate:c,isPending:l}=p_(),u=!!i[r.id],[d,f]=(0,G.useState)(u),[p,m]=m_(u);return(0,G.useEffect)(()=>{p!==d&&(p?o({email:e.email,roleId:r.id},{onSuccess:()=>{f(p),a(!0),U.success(`Role added successfully`)}}):c({userId:e.id,roleId:r.id},{onSuccess:()=>{f(p),a(!0),U.success(`Role removed successfully`)}}))},[o,e.email,e.id,p,r.id,c,a,d]),(0,K.jsxs)(Vc,{className:`flex`,children:[(0,K.jsx)($,{type:`checkbox`,className:`w-6`,disabled:t||s||l||!n&&p,checked:p,onChange:m}),(0,K.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:r.roleName})]},r.id)}function g_({isSelf:e,isPending:t,onConfirm:n}){let[r,i]=(0,G.useState)(!1),a=e?{idle:`Leave organization`,confirm:`Confirm leave`,busy:`Leaving…`,warning:`You’ll lose access to this organization and everything in it. You won’t be able to return unless another member invites you back.`}:{idle:`Remove from organization`,confirm:`Confirm removal`,busy:`Removing…`,warning:`This revokes their access to this organization and everything in it. Their Harper account isn’t deleted, and they can be added back later.`},o=e?Ii:to;return r?(0,K.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,K.jsxs)(`p`,{role:`alert`,className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3`,children:[(0,K.jsx)($a,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,K.jsx)(`span`,{children:a.warning})]}),(0,K.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,K.jsx)(P,{type:`button`,variant:`ghostOutline`,disabled:t,onClick:()=>i(!1),children:`Cancel`}),(0,K.jsxs)(P,{type:`button`,variant:`destructive`,disabled:t,onClick:n,children:[(0,K.jsx)(o,{}),` `,t?a.busy:a.confirm]})]})]}):(0,K.jsx)(`div`,{className:`flex justify-start`,children:(0,K.jsxs)(P,{type:`button`,variant:`destructiveOutline`,disabled:t,onClick:()=>i(!0),children:[(0,K.jsx)(o,{}),` `,a.idle]})})}function __(e){return e?.trim().toLowerCase()===`admin`}function v_({canDelete:e,isSelf:t,orgUserCount:n,adminCount:r,isAdmin:i,roleCount:a}){let o=e?t&&n<=1?`sole-member`:t&&i&&r<=1?`last-admin`:null:null,s=e&&o===null;return{canRemoveRoles:s,showRemovalAction:s&&a>0,blockedReason:o}}function y_({closeModal:e,data:t,isModalOpen:n,onUserUpdated:r,orgUserCount:i,orgAdminCount:a}){let{organizationId:o}=B({strict:!1}),s=wn(),{update:c,remove:l}=vf(o),u=s.user?.email===t.email,[d,f]=(0,G.useState)(!1),{canRemoveRoles:p,showRemovalAction:m,blockedReason:h}=v_({canDelete:l,isSelf:u,orgUserCount:i,adminCount:a,isAdmin:(t.roles??[]).some(e=>__(e.roleName)),roleCount:t.roles?.length??0}),{mutateAsync:g}=p_(),[_,v]=(0,G.useState)(!1),y=(0,G.useCallback)(async()=>{let e=t.roles??[];v(!0),(await Promise.allSettled(e.map(e=>g({userId:t.id,roleId:e.id})))).some(e=>e.status===`rejected`&&e.reason?.response?.status!==404)?U.error(u?`Something went wrong leaving the organization. Please try again.`:`Couldn’t remove ${t.email} from the organization. Please try again.`):U.success(u?`You’ve left the organization.`:`${t.email} was removed from the organization.`),v(!1),r()},[t.roles,t.id,t.email,u,g,r]);return(0,K.jsx)(fn,{onOpenChange:d?r:e,open:n,children:(0,K.jsxs)(cn,{resizable:!0,children:[(0,K.jsx)(rn,{children:(0,K.jsxs)(ln,{children:[c?`Edit `:`View `,` `,t.email,` `,u?`(yourself)`:``]})}),c&&(0,K.jsxs)(un,{children:[`Use the checkboxes to change which roles `,u?`you have`:`this user has`,`.`,m&&(u?` To leave the organization entirely, use the button below.`:` To remove this user from the organization entirely, use the button below.`)]}),(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(Bo,{centered:!0,text:`Loading roles…`,className:`flex-1 min-h-0`}),children:(0,K.jsx)(b_,{data:t,organizationId:o,update:c,canRemove:p,setChangesMade:f})}),t.status===`PENDING`&&(0,K.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,K.jsx)(i_,{user:t})}),m&&(0,K.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,K.jsx)(g_,{isSelf:u,isPending:_,onConfirm:y})}),h&&(0,K.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3`,children:[(0,K.jsx)($a,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,K.jsx)(`span`,{children:h===`sole-member`?`You’re the only member of this organization, so you can’t remove your roles or leave — it would be left with no one to manage it. If you no longer need this organization, terminate its clusters, then delete the organization from the ⋯ menu on the Organizations page.`:`You’re the only admin of this organization, so you can’t remove your roles or leave — it would be left with no one who can manage its members, roles, or clusters. Give another member the admin role first, then you can step back.`})]})]})})}function b_({data:e,organizationId:t,update:n,canRemove:r,setChangesMade:i}){let{data:a}=ge(kg(t)),o=(0,G.useMemo)(()=>e.roles?pp(e.roles,`id`):{},[e]);return(0,K.jsx)(`div`,{className:`flex flex-1 min-h-0 flex-col gap-2 overflow-y-auto`,children:a.map(t=>(0,K.jsx)(h_,{readOnly:!n,canRemove:r,data:e,orgRole:t,selectedRoles:o,setChangesMade:i},t.id))})}function x_(e,t){return e.email>t.email?1:-1}function S_(e){return(e.users??[]).filter(e=>e!=null)}function C_(e){let t={};for(let n of e)for(let e of S_(n))t[e.id]||(t[e.id]={...e,roles:[]}),t[e.id].roles.push(n);return Object.values(t).sort(x_)}function w_(e){let t=new Set;for(let n of e)if(__(n.roleName))for(let e of S_(n))t.add(e.id);return t.size}function T_(){let e=se(),{organizationId:t,orgUserId:n}=B({strict:!1}),{update:r}=vf(t),{data:i,refetch:a,isFetching:o,isRefetching:s}=ge(kg(t)),c=(0,G.useMemo)(()=>C_(i),[i]),l=(0,G.useMemo)(()=>w_(i),[i]),u=(0,G.useMemo)(()=>c?.find(e=>e.id===n),[c,n]),d=(0,G.useCallback)(t=>{let r=[n?`..`:``,t].filter(Boolean);e({to:r.join(`/`)})},[n,e]),f=!!n&&!!u,[p,m]=(0,G.useState)(!1),[h]=(0,G.useState)({attribute:`email`,descending:!1}),g=(0,G.useMemo)(()=>[{desc:h.descending,id:h.attribute}],[h]),_=(0,G.useCallback)(()=>{m(!0)},[m]),v=(0,G.useCallback)(()=>{a(),m(!1)},[a,m]),y=(0,G.useCallback)(e=>{d(e.original.id)},[d]),b=(0,G.useCallback)(()=>{d(void 0)},[d]),x=(0,G.useCallback)(()=>{a(),d(void 0)},[d,a]),S=Cg(a);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Xh,{children:(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(Bo,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(vg,{data:c,isFetching:o||s,columns:o_,onRowClick:y,sortingState:g,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,K.jsx)(ua,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:_,accessKey:`a`,disabled:p,children:[(0,K.jsx)(ca,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),r&&(0,K.jsx)(d_,{isModalOpen:p,onChangesSaved:v,setIsModalOpen:m}),f&&(0,K.jsx)(y_,{closeModal:b,data:u,isModalOpen:f,onUserUpdated:x,orgUserCount:c.length,orgAdminCount:l})]})})]})}function E_({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`skeleton`,className:N(`bg-primary/10 animate-pulse rounded-md`,e),...t})}function D_({organizationId:e,organizationName:t,providers:n}){return(0,K.jsxs)(On,{className:`relative h-full justify-between opacity-90`,children:[(0,K.jsxs)(kn,{children:[(0,K.jsx)(jn,{className:`truncate`,children:e}),(0,K.jsx)(An,{children:(0,K.jsx)(`h2`,{children:t})})]}),(0,K.jsxs)(Mn,{className:`flex flex-col gap-2`,children:[(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground flex items-center gap-1.5 mb-1`,children:[(0,K.jsx)(vi,{className:`size-3 shrink-0`}),`Sign in with an OAuth provider to access this organization.`]}),n.map(e=>(0,K.jsx)(`a`,{href:cu(e.oauthConfigId),children:(0,K.jsxs)(P,{variant:`outline`,className:`w-full`,children:[`Sign in with `,e.name]})},e.oauthConfigId))]})]})}var O_=S({couponId:A().nonempty({message:`Please enter a coupon ID.`}).trim()});async function k_({organizationId:e,couponId:t}){let{data:n}=await M.post(`/Coupon`,{organizationId:e,couponId:t},{validateStatus:e=>e>=200&&e<400||e===400||e===409});return n}function A_(){return R({mutationFn:k_})}function j_({organizationId:e,organizationName:t,isOpen:n,onClose:r}){let{mutate:i,isPending:a}=A_(),o=Pt({resolver:Ke(O_),defaultValues:{couponId:``}}),{handleSubmit:s,control:c,reset:l}=o;(0,G.useEffect)(()=>{n&&l({couponId:``})},[n,l]);let u=(0,G.useCallback)(n=>{i({organizationId:e,couponId:n.couponId},{onSuccess:i=>{i?U.error(`Error`,{description:i||`Failed to add coupon.`}):(U.success(`Success`,{description:`Coupon "${n.couponId}" added to ${t||e}.`}),r())}})},[i,e,t,r]);return(0,K.jsx)(fn,{open:n,onOpenChange:e=>!e&&r(),children:(0,K.jsxs)(cn,{children:[(0,K.jsxs)(rn,{children:[(0,K.jsx)(ln,{children:`Add Coupon`}),(0,K.jsxs)(un,{children:[`Add a coupon code to`,` `,t||e,`. This coupon will be applied to the next billing cycle.`,(0,K.jsx)(`br`,{}),`Coupons can be created in our`,` `,(0,K.jsx)(`a`,{href:`https://dashboard.stripe.com/`,target:`_blank`,rel:`noreferrer`,className:`text-purple hover:underline`,children:`Stripe Dashboard`}),`.`]})]}),(0,K.jsx)(Lc,{...o,children:(0,K.jsxs)(`form`,{onSubmit:s(u),children:[(0,K.jsx)(`div`,{className:`grid gap-4 py-4`,children:(0,K.jsx)(Y,{control:c,name:`couponId`,render:({field:e})=>(0,K.jsxs)(X,{className:`grid items-center gap-4`,children:[(0,K.jsx)(Z,{children:`Coupon ID`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,placeholder:`e.g. 100OFF`,disabled:a})}),(0,K.jsx)(Q,{})]})})}),(0,K.jsxs)(on,{children:[(0,K.jsx)(P,{type:`button`,variant:`ghost`,onClick:r,disabled:a,children:`Cancel`}),(0,K.jsx)(P,{type:`submit`,disabled:a,children:a?`Adding...`:`Add Coupon`})]})]})})]})})}function M_({organizationRole:e,onDeleteOrgModal:t}){let{organizationId:n,organizationName:r,roleName:i}=e,{remove:a,update:o}=gf(n),s=o,{view:c}=vf(n),l=En(`billing:write`),[u,d]=(0,G.useState)(!1),f=(0,G.useCallback)(()=>{t(e)},[t,e]),p=[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`sep-top`},{key:`clusters`,to:`${n}`,icon:(0,K.jsx)(wa,{className:`size-4 mr-2 text-blue-500`}),label:`Clusters`},c&&{key:`roles`,to:`${n}/roles`,icon:(0,K.jsx)(Oa,{className:`size-4 mr-2 text-purple`}),label:`Roles`},c&&{key:`users`,to:`${n}/users`,icon:(0,K.jsx)(so,{className:`size-4 mr-2 text-orange-500`}),label:`Users`},s&&{key:`billing`,to:`${n}/billing`,icon:(0,K.jsx)(Rr,{className:`size-4 mr-2 text-green-500`}),label:`Billing`},o&&{key:`settings`,to:`${n}/settings`,icon:(0,K.jsx)(vi,{className:`size-4 mr-2 text-yellow-500`}),label:`Settings`},l&&{key:`add-coupon`,onClick:()=>d(!0),icon:(0,K.jsx)(Ya,{className:`size-4 mr-2 text-pink-500`}),label:`Add Coupon`},a&&{type:`separator`,key:`sep-bottom`},a&&{key:`delete`,onClick:f,className:`focus:bg-red/70 focus:text-white`,icon:(0,K.jsx)(Za,{className:`size-4 mr-2 text-red-500`}),label:`Delete`}].filter(Js),m=a||l;return(0,K.jsx)(ed,{items:m?p:[],children:(0,K.jsxs)(On,{className:`relative h-full justify-between transition-[transform,box-shadow] duration-200 hover:scale-[1.02] hover:shadow-lg hover:ring-2 hover:ring-primary/60 dark:hover:ring-violet-400/70`,children:[(0,K.jsx)(V,{to:n,"aria-label":`View ${r??n}`,className:`absolute inset-0 rounded-[inherit] focus-visible:ring-2 focus-visible:ring-purple-200 focus-visible:outline-none`}),(0,K.jsxs)(kn,{children:[(0,K.jsxs)(jn,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:n}),m&&(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{"aria-label":`Options`,onClick:e=>e.stopPropagation(),className:`relative z-10 -m-2 p-2 rounded-md hover:bg-accent/60 hover:text-foreground`,children:(0,K.jsx)(Hr,{})}),(0,K.jsx)(So,{children:$u(p,`dropdown`)})]})]}),(0,K.jsx)(An,{children:(0,K.jsx)(`h2`,{children:r})})]}),(0,K.jsxs)(Mn,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(Wo,{className:`min-w-0 shrink`,title:Pc(i),children:(0,K.jsx)(`span`,{className:`truncate`,children:Pc(i)})}),(0,K.jsxs)(`span`,{className:`text-sm shrink-0 py-2 whitespace-nowrap ml-auto`,children:[`View `,(0,K.jsx)(Hn,{className:`inline-block`})]})]}),(0,K.jsx)(j_,{organizationId:n,organizationName:r,isOpen:u,onClose:()=>d(!1)})]})})}async function N_(e){let{data:t}=await M.delete(`/Organization/${e}`);return t}function P_(){return R({mutationFn:e=>N_(e)})}async function F_(e){let{data:t}=await M.post(`/Organization/`,{...e});return t}function I_(){return R({mutationFn:e=>F_(e)})}var L_=A().max(62,{error:`Must be at most 62 characters long.`}).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{error:`Please only use lowercase letters, digits and dashes (-) in the subdomain. Must not start or end with a dash.`}),R_=S({name:A().max(255,{error:`Name cannot be longer than 255 characters.`}),subdomain:ee([x(``),w(),L_]).optional()});function z_(){let{user:e}=wn(),t=se(),n=Pt({resolver:Ke(R_),defaultValues:{name:``,subdomain:``}}),{setFocus:r,watch:i}=n;(0,G.useEffect)(()=>{r(`name`)},[r]);let a=`${e?.firstname} ${e?.lastname} Org`,o=i(`name`)||a,s=i(`subdomain`),c=(0,G.useMemo)(()=>{let e=Tp(Dp(o),L_.maxLength);return{suggestedSubdomain:e,fullHostName:`future-cluster-names.${s||e}.harperfabric.com`}},[o,s]),{mutate:l,isPending:d}=I_(),p=ue(),h=(0,G.useCallback)(async e=>{l({name:e.name||a,subdomain:e.subdomain||c.suggestedSubdomain},{onSuccess:e=>{p.invalidateQueries({queryKey:f,refetchType:`active`}),u.reloadUser(m),t({to:`/${e.id}`})}})},[c.suggestedSubdomain,p,l,a,t]);return(0,K.jsx)(K.Fragment,{children:(0,K.jsx)(Lc,{...n,children:(0,K.jsxs)(`form`,{id:`org-add-form`,name:`org-add-form`,onSubmit:n.handleSubmit(h),className:`grid gap-6 text-foreground max-w-xl`,children:[(0,K.jsx)(Y,{control:n.control,name:`name`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,maxLength:R_.shape.name.maxLength,autoCapitalize:`words`,placeholder:a,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:n.control,name:`subdomain`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Subdomain`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,maxLength:L_.maxLength,autoCapitalize:`none`,placeholder:c.suggestedSubdomain,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Full Host Name`}),(0,K.jsx)(J,{children:(0,K.jsx)(`span`,{children:c.fullHostName})}),(0,K.jsx)(Q,{})]}),(0,K.jsx)(on,{children:(0,K.jsxs)(P,{type:`submit`,variant:`submit`,disabled:d,children:[`Create New Organization `,(0,K.jsx)(Hn,{})]})})]})})})}function B_(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,K.jsx)(z_,{})})]})}var V_={org:`organization`,clu:`cluster`,ins:`instance`},H_=/^(org|clu|ins)-[a-z0-9]+$/;function U_(e){if(typeof e!=`string`)return null;let t=e.trim(),n=H_.exec(t);return n?{kind:V_[n[1]],id:t}:null}function W_(e,t){let n=e*12,r=G_(t);return`/Admin/Organization/?${[...r?[`search=${encodeURIComponent(r)}`]:[],`status=ne=DELETED`,...r?[]:[`sort(name)`],`limit(${n},${n+12+1})`].join(`&`)}`}function G_(e){return typeof e==`string`?e.trim():``}async function K_(e,t){let{data:n}=await M.get(W_(e,t));return{organizations:n.slice(0,12),hasNextPage:n.length>12}}var q_={organizations:[],hasNextPage:!1};function J_(e){return e instanceof _&&(e.response?.status===404||e.status===404)}async function Y_(e){try{let{data:t}=await M.get(`/Admin/Organization/${e}`);return t?{organizations:[t],hasNextPage:!1}:q_}catch(e){if(J_(e))return q_;throw e}}async function X_(e){try{let{data:t}=await M.get(`/Cluster/${e}`),n=t?.organizationId;return n?await Y_(n):q_}catch(e){if(J_(e))return q_;throw e}}function Z_(e,t){let n=G_(t),r=U_(n);return z({queryKey:[`admin-all-organizations`,n,e],queryFn:()=>r?.kind===`organization`?Y_(r.id):r?.kind===`cluster`?X_(r.id):K_(e,n),placeholderData:de,retry:!1})}function Q_(e,t=300,n){let[r,i]=(0,G.useState)(e),a=n?n(e):e;return(0,G.useEffect)(()=>{let n=setTimeout(()=>i(e),t);return()=>clearTimeout(n)},[a,t]),r}function $_(e,t){if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i of n)if(!r.includes(i)||e[i]!==t[i])return!1;return!0}function ev(e,t){let[n,r]=(0,G.useState)(t),[i,a]=(0,G.useState)(e);return(0,G.useEffect)(()=>{$_(n,t)||(r(t),a(e))},[n,t,e]),$_(n,t)?[i,a]:[e,a]}var tv={};function nv(e,t,n){let r=(0,G.useCallback)((e,n)=>t(e,n),[n]);(0,G.useEffect)(()=>(tv[e]||(tv[e]=[]),tv[e].push(r),function(){let t=tv[e].indexOf(r);t>=0&&tv[e].splice(t,1)}),[e,t,r])}function rv(e,t,n){let r=tv[e];if(r)for(let e of r)e(t,n)}function iv(e,t,n){return r=>rv(e,t,n??r)}function av(e,t,n){return(0,G.useCallback)(r=>rv(e,t,n??r),[e,t,n])}function ov(e,t){let n=ev(We(e,t),[e]),[r,i]=n;return(0,G.useEffect)(()=>{Ge(e,r),rv(`Session:${e}`,r)},[e,r]),nv(`Session:${e}`,function(e){r!==e&&i(e)},[r,e,t]),(0,G.useEffect)(function(){let n=n=>{n.key===e&&i(We(e,t))};return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}},[e,i,t]),n}function sv(){let e=ue(),{data:t}=ge(s()),{mutate:n,isPending:r}=P_(),[i,a]=(0,G.useState)(!1),[o,c]=(0,G.useState)(null),[l,u]=(0,G.useState)(``),d=(0,G.useCallback)(()=>u(``),[]),f=En(`org:read`),[p,m]=ov(`ShowAllOrganizations`,!1),[h,g]=(0,G.useState)(0),_=f&&p,v=(0,G.useCallback)(e=>{m(e),g(0)},[m]),y=Q_(l,300),b=(0,G.useMemo)(()=>{if(!f)return null;let e=U_(y);return e?.kind===`organization`||e?.kind===`cluster`?e:null},[f,y]),x=_||!!b,{data:S,isPending:C}=H({...Z_(h,y),enabled:x}),{organizationRoles:w,oauthLockedOrgs:T}=(0,G.useMemo)(()=>{let e=t?.roles||{},n=[],r=[];for(let[t,i]of Object.entries(e))`oauthProviders`in i&&!f?r.push({organizationId:t,organizationName:i.organizationName,providers:i.oauthProviders}):n.push({organizationId:t,organizationName:i.organizationName,roleName:i.role??`fabric staff`});return{organizationRoles:n.filter(eg([`organizationId`,`organizationName`],l)).sort((e,t)=>(e.organizationName||``)>(t.organizationName||``)?1:-1),oauthLockedOrgs:r}},[l,t?.roles,f]),E=(0,G.useMemo)(()=>{let e=t?.roles||{};return(S?.organizations||[]).map(t=>({organizationId:t.id,organizationName:t.name,roleName:e[t.id]?.role||`fabric staff`}))},[S?.organizations,t?.roles]),D=x?E:w,O=(0,G.useCallback)(e=>{u(e.currentTarget.value||``),g(0)},[]),k=(0,G.useCallback)(t=>{t?.organizationId&&n(t.organizationId,{onSuccess:()=>{U.success(`Success`,{description:`Organization successfully deleted.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),e.invalidateQueries({queryKey:[]}),a(!1)},onError:()=>a(!1)})},[n,e,a]),A=(0,G.useCallback)(e=>{c(e),a(!0)},[]),{createCluster:j}=me({strict:!1});return!_&&w.length===1&&!l.length&&j?(0,K.jsx)(L,{to:`/${w[0].organizationId}/new-cluster`,replace:!0}):!_&&!w.length&&!T.length&&!l.length?(0,K.jsx)(B_,{}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{children:(0,K.jsxs)(`div`,{className:`flex w-full items-center justify-end gap-2`,children:[f&&(0,K.jsxs)(`label`,{className:`flex shrink-0 cursor-pointer items-center gap-2 text-xs`,children:[(0,K.jsx)(Zg,{checked:p,onCheckedChange:v,"aria-label":`Show all organizations`}),(0,K.jsx)(`span`,{className:`hidden sm:inline-block`,children:`All Orgs`})]}),(0,K.jsx)($,{placeholder:`Filter by name`,className:`inline-block w-full text-xs`,value:l,onChange:O}),(0,K.jsx)(V,{to:`/new-org`,children:(0,K.jsxs)(P,{variant:`positive`,accessKey:`n`,children:[(0,K.jsx)(ca,{}),(0,K.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,K.jsx)(`u`,{children:`N`}),`ew `,(0,K.jsx)(`span`,{className:`hidden md:inline-block`,children:`Organization`})]})]})})]})}),(0,K.jsxs)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12`,children:[!x&&T.map(e=>(0,K.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,K.jsx)(D_,{organizationId:e.organizationId,organizationName:e.organizationName,providers:e.providers})},e.organizationId)),x&&C?Array.from({length:12},(e,t)=>(0,K.jsx)(E_,{className:`col-span-1 h-40 md:col-span-4 lg:col-span-3 2xl:col-span-2`},t)):D.map(e=>(0,K.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,K.jsx)(M_,{organizationRole:e,onDeleteOrgModal:A})},e.organizationId)),!D.length&&!(x&&C)&&(x||!T.length)&&(0,K.jsxs)(`div`,{className:`col-span-1 md:col-span-12 text-center`,children:[(0,K.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,K.jsx)(P,{variant:`outline`,onClick:d,children:`Clear Filters`})]})]}),x&&(h>0||S?.hasNextPage)&&(0,K.jsxs)(`div`,{className:`flex items-center justify-center gap-4 py-6`,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:h===0,onClick:()=>g(e=>e-1),children:[(0,K.jsx)(Bn,{}),`Previous`]}),(0,K.jsxs)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:[`Page `,h+1]}),(0,K.jsxs)(P,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:!S?.hasNextPage,onClick:()=>g(e=>e+1),children:[`Next`,(0,K.jsx)(Hn,{})]})]})]}),o&&(0,K.jsx)(Wu,{typeOfThingBeingDeleted:`organization`,nameOfThingBeingDeleted:o.organizationName,isModalOpen:i,setIsModalOpen:()=>a(!1),deletionConfirmed:()=>k(o),deletionPending:r})]})}var cv=I({getParentRoute:()=>hc,id:`_orgsLayout`});I({getParentRoute:()=>cv,path:`/`,head:()=>({meta:[{title:`Organizations — Harper Fabric`}]}),component:sv}),I({getParentRoute:()=>cv,path:`/new-org`,head:()=>({meta:[{title:`New Organization — Harper Fabric`}]}),component:B_});var lv=I({getParentRoute:()=>cv,path:`$organizationId`,beforeLoad:async e=>{let{organizationId:t}=e.params;if(!xp(t))throw ce({to:`/`});return{organization:await e.context.queryClient.ensureQueryData(Cp(t))}}});I({getParentRoute:()=>lv,path:`/roles`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:Xg}),I({getParentRoute:()=>lv,path:`/roles/$orgRoleId`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:Xg}),I({getParentRoute:()=>lv,path:`/users`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:T_}),I({getParentRoute:()=>lv,path:`/users/$orgUserId`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:T_}),I({getParentRoute:()=>lv,path:`/settings`,component:t_}),Dg(lv);var uv=I({getParentRoute:()=>lv,id:`_clusterLayout`});I({getParentRoute:()=>uv,path:`/`,head:()=>({meta:[{title:`Clusters — Harper Fabric`}]}),component:tg}),I({getParentRoute:()=>lv,path:`/new-cluster`,head:()=>({meta:[{title:`New Cluster — Harper Fabric`}]}),component:Yh}),I({getParentRoute:()=>fv,path:`/edit`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:Yh}),I({getParentRoute:()=>fv,path:`/edit/$mode`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:Yh});function dv(){return(0,K.jsx)(He,{})}var fv=I({getParentRoute:()=>uv,path:`$clusterId`,component:dv,beforeLoad:async({context:e,params:t})=>({cluster:await e.queryClient.ensureQueryData(ll(t.clusterId))})}),pv=e=>new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}).format(e),mv=e=>`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(e)} hr`,hv=e=>Th(e),gv={reads:`Reads`,readBytes:`Read data`,writes:`Writes`,writeBytes:`Write data`,realTimeMessages:`Real-time messages`,realTimeBytes:`Real-time data`,cpuTimeHours:`Compute`,storageBytes:`Storage`},_v={reads:pv,readBytes:hv,writes:pv,writeBytes:hv,realTimeMessages:pv,realTimeBytes:hv,cpuTimeHours:mv,storageBytes:hv},vv=[`reads`,`readBytes`,`writes`,`writeBytes`,`realTimeMessages`,`realTimeBytes`,`cpuTimeHours`,`storageBytes`];function yv(e,t,n){return{label:n??gv[e],used:t.used,limit:t.limit,unlimited:t.unlimited,limitKnown:t.limitKnown,format:_v[e]}}function bv({label:e,used:t,limit:n,unlimited:r,limitKnown:i,format:a}){let o=r||n!=null&&n<0,s=i&&!o&&n!=null&&n>0,c=s?Math.min(100,Math.round(t/n*100)):0,l=c>=90;return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-sm`,children:[(0,K.jsx)(`span`,{className:`text-foreground`,children:e}),(0,K.jsxs)(`span`,{className:`text-muted-foreground tabular-nums`,children:[(0,K.jsx)(`span`,{className:`text-foreground`,children:a(t)}),s?(0,K.jsxs)(K.Fragment,{children:[`/ `,a(n)]}):` used`]})]}),(0,K.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[(0,K.jsx)(`div`,{className:`h-2 flex-1 overflow-hidden rounded-full bg-muted`,children:s?(0,K.jsx)(`div`,{className:`h-full rounded-full ${l?`bg-yellow`:`bg-primary dark:bg-violet-400`}`,style:{width:`${c}%`}}):o?(0,K.jsx)(`div`,{className:`h-full w-full bg-[repeating-linear-gradient(-45deg,transparent,transparent_5px,var(--color-border)_5px,var(--color-border)_9px)] dark:bg-[repeating-linear-gradient(-45deg,transparent,transparent_5px,rgba(255,255,255,0.32)_5px,rgba(255,255,255,0.32)_9px)]`}):null}),(0,K.jsx)(`span`,{className:`w-16 shrink-0 text-right text-xs tabular-nums ${l?`text-yellow`:`text-muted-foreground`}`,children:s?`${c}%`:o?`Unlimited`:`—`})]})]})}function xv(e){return z({queryKey:[`clusterUsage`,e],queryFn:async()=>{let{data:t}=await M.get(`/Cluster/${e}/usage`);return t},enabled:!!e,staleTime:6e4})}function Sv(e){return H(xv(e))}function Cv(e){let{regions:t}=e,n=t.every(e=>e.planName===t[0]?.planName)?t[0]?.planName:null,r=t.length>1?`next renewal`:`renews`;return[n?`${n} plan`:null,e.renewsAt?`${r} ${wv(e.renewsAt)}`:null].filter(Boolean).join(` · `)}function wv(e){return new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(new Date(e))}function Tv({clusterId:e,base:t}){let{data:n}=Sv(e);return!n||n.selfManaged||n.regions.length===0?null:(0,K.jsxs)(`section`,{className:`mt-6 rounded-2xl border border-border bg-card p-5`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,K.jsx)(`h2`,{className:`text-sm font-medium text-foreground`,children:`Plan usage`}),(0,K.jsxs)(V,{to:`${t}/usage`,className:`inline-flex items-center gap-1 text-xs text-primary hover:underline dark:text-violet-300`,children:[`View all usage `,(0,K.jsx)(Hn,{className:`size-3`})]})]}),(0,K.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:Cv(n)}),(0,K.jsx)(`div`,{className:`mt-4`,children:n.regions.length===1?(0,K.jsx)(Ev,{data:n}):(0,K.jsx)(Dv,{data:n})})]})}function Ev({data:e}){let t=e.regions[0].metrics,n=[yv(`reads`,t.reads),yv(`writes`,t.writes),yv(`storageBytes`,t.storageBytes),yv(`cpuTimeHours`,t.cpuTimeHours)];return(0,K.jsx)(`div`,{className:`grid grid-cols-1 gap-x-8 gap-y-4 sm:grid-cols-2`,children:n.map(e=>(0,K.jsx)(bv,{...e},e.label))})}function Dv({data:e}){let t=e.mostConstrained;return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`p`,{className:`mb-1.5 text-xs text-muted-foreground`,children:[`Most constrained of `,e.regions.length,` regions`]}),t?(0,K.jsx)(bv,{...yv(t.metric,{used:t.used,limit:t.limit,unlimited:!1,limitKnown:!0},`${t.region??`Region`} · ${gv[t.metric]}`)}):(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No metered limits on the current plan — see the breakdown for details.`})]})}function Ov({cluster:e}){let t=fe(),n=ue(),{update:r,remove:i}=bf(e.organizationId,e.id),{run:a,isPending:o}=Gf(e),{mutate:s,isPending:c}=Vf(),[l,u]=(0,G.useState)(!1),[d,f]=(0,G.useState)(!1),[p,m]=(0,G.useState)(!1),[h,g]=(0,G.useState)(null),_=e.status===`RUNNING`,v=e.status===`STOPPED`,y=e.status===`PARTIAL`,b=!r||o,x=(0,G.useCallback)(()=>{s(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),m(!1),U.success(`Success`,{description:`Cluster successfully terminated.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),t.navigate({to:`/${e.organizationId}`})},onError:()=>{m(!1)}})},[e.id,e.organizationId,s,n,t]),S=(0,G.useCallback)(()=>{let e=h;g(null),e&&a(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})},[h,a]);return Nf(e)||!r&&!i?null:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsxs)(P,{variant:`outline`,size:`sm`,disabled:o,className:`gap-1.5 hover:translate-y-0 data-[state=open]:[&>svg]:rotate-180`,children:[`Cluster actions`,(0,K.jsx)(pn,{className:`size-4 transition-transform`})]})}),(0,K.jsxs)(So,{align:`end`,className:`w-56`,children:[(0,K.jsx)(To,{className:`text-gray-600 text-xs`,children:`Container`}),(0,K.jsxs)(Co,{disabled:b||!(v||y),onClick:()=>void a(`start`,{safeMode:!1,strategy:`parallel`}),children:[(0,K.jsx)(oa,{}),` Start`]}),(0,K.jsxs)(Co,{disabled:b||!v,onClick:()=>g(`start`),children:[(0,K.jsx)(wi,{}),` Start in safe mode`]}),(0,K.jsxs)(Co,{disabled:b||!(_||y),onClick:()=>f(!0),children:[(0,K.jsx)(ga,{}),` Restart`]}),(0,K.jsxs)(Co,{disabled:b||!_,onClick:()=>g(`restart`),children:[(0,K.jsx)(wi,{}),` Restart in safe mode`]}),(0,K.jsxs)(Co,{variant:`destructive`,disabled:b||!(_||y),onClick:()=>u(!0),children:[(0,K.jsx)(La,{}),` Stop`]}),(0,K.jsx)(Eo,{}),(0,K.jsxs)(Co,{variant:`destructive`,disabled:!i,onClick:()=>m(!0),children:[(0,K.jsx)(Za,{}),` Terminate`]})]})]}),(0,K.jsx)(If,{clusterName:e.name,isPending:o,stopOpen:l,setStopOpen:u,onConfirmStop:()=>{u(!1),a(`stop`,{strategy:`parallel`})},restartOpen:d,setRestartOpen:f,onConfirmRestart:e=>{f(!1),a(`restart`,{safeMode:!1,strategy:e})}}),(0,K.jsx)(zf,{open:h!==null,setOpen:e=>{e||g(null)},action:h??`restart`,targetName:e.name,scope:`cluster`,isPending:o,onConfirm:S}),(0,K.jsx)(Wu,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:`Terminate`,presentParticiple:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:p,setIsModalOpen:m,deletionConfirmed:x,deletionPending:c})]})}function kv(){let{clusterId:e}=B({strict:!1}),t=fe(),n=se(),{data:r}=H(ll(e,!0)),{user:i,isLoading:a}=Dn(e),{view:s,update:l}=bf(r?.organizationId,r?.id),[f,p]=(0,G.useState)(!1),m=r?.domains?.[0]?.domain||r?.fqdn||``,[h,g]=Jf(m,m?`https://${m}`:``),_=r?`/${r.organizationId}/${r.id}`:``,v=(0,G.useCallback)(async()=>{if(r){p(!0);try{await u.establishFabricConnectAuth({id:r.id,operationsUrl:c(r)}),await t.invalidate()}catch{U.error(`Could not connect to this cluster through Fabric Connect.`)}finally{p(!1)}}},[r,t]),y=(0,G.useCallback)(()=>{r&&(u.setUserForEntity(r,null),u.flagForFabricConnect(r.id,!1)),n({to:`${_}/sign-in`})},[_,r,n]),b=(0,G.useCallback)(async()=>{if(r){try{await d({instanceClient:o({id:r.id}),entityId:r.id})}catch{}u.setUserForEntity(r,null),u.flagForFabricConnect(r.id,!1),u.flagForBasicAuth(r.id,null),await t.invalidate()}},[r,t]);if(!r)return(0,K.jsx)(jv,{children:(0,K.jsx)(Mv,{})});if(!s)return(0,K.jsx)(L,{to:`/${r.organizationId}`,replace:!0});if(Nf(r))return(0,K.jsx)(Av,{cluster:r});if(!r.fqdn)return(0,K.jsx)(L,{to:`${_}/instances`,replace:!0});if(r.resetPassword){if(!l)return(0,K.jsx)(jv,{children:(0,K.jsxs)(`div`,{className:`text-center py-12`,children:[(0,K.jsx)(wa,{className:`size-12 text-muted-foreground mx-auto mb-4`}),(0,K.jsx)(`h1`,{className:`text-xl font-medium mb-2 text-foreground`,children:`Pending Owner Setup`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground max-w-md mx-auto`,children:`This cluster needs an administrator to finish setup before it can be used.`})]})});let e=r.status&&Hc.includes(r.status)&&tl(r);return(0,K.jsx)(L,{to:`${_}/${e?`finish-setup`:`starting-up`}`,replace:!0})}let x=u.checkForFabricConnect(r.id),S=!!i,C=u.getLastConnectMode(r.id),w=(r.instances??[]).filter(e=>e.status&&!Uc.includes(e.status)).length,T=r.instances??[],E=!!r.status&&Hc.includes(r.status)&&T.length>0&&T.every(e=>e.safeMode);return(0,K.jsxs)(jv,{children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-4 mb-6`,children:[(0,K.jsx)(`div`,{className:`flex items-center justify-center size-12 rounded-xl bg-violet-50 text-primary dark:bg-grey-700 dark:text-violet-300 shrink-0`,children:(0,K.jsx)(wa,{className:`size-6`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:r.name}),(0,K.jsx)(Nv,{status:r.status}),E&&(0,K.jsx)(Pv,{})]}),(0,K.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-sm text-muted-foreground`,children:[(0,K.jsxs)(`span`,{children:[w,` `,w===1?`instance`:`instances`]}),(0,K.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,K.jsxs)(`a`,{href:`https://${m}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 hover:text-foreground hover:underline`,children:[m,(0,K.jsx)(Wr,{className:`size-3`})]}),(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{"aria-label":`Copy cluster URLs`,className:`rounded-md p-1 -m-1 hover:bg-accent/60 hover:text-foreground`,children:(0,K.jsx)(Ir,{className:`size-3.5`})}),(0,K.jsxs)(So,{align:`start`,children:[(0,K.jsx)(Co,{onClick:h,children:`Copy host name`}),(0,K.jsx)(Co,{onClick:g,children:`Copy API URL`})]})]})]})]}),(0,K.jsx)(Ov,{cluster:r})]}),a?(0,K.jsx)(Mv,{}):S?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,K.jsx)(vr,{className:`size-4 text-green shrink-0`}),(0,K.jsx)(`span`,{className:`font-medium text-green`,children:x?`Connected via Fabric Connect`:`Signed in directly`}),(0,K.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,x?`through your Harper account`:`session cookie`]})]}),(0,K.jsxs)(V,{to:`${_}/apps`,className:`group flex items-center gap-4 rounded-2xl border-2 border-primary/30 bg-primary/5 p-6 transition-all hover:border-primary hover:bg-primary/10 dark:border-violet-400/30 dark:bg-violet-400/5 dark:hover:border-violet-400 dark:hover:bg-violet-400/10`,children:[(0,K.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 dark:bg-violet-400/15 dark:text-violet-300`,children:(0,K.jsx)(fa,{className:`size-6`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsx)(`div`,{className:`text-lg font-medium text-foreground`,children:`Enter cluster`}),(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Open the studio — apps, databases, APIs, logs, and config.`})]}),(0,K.jsx)(Hn,{className:`size-5 text-muted-foreground transition-transform group-hover:translate-x-1`})]}),(0,K.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-4 text-sm`,children:[x&&(0,K.jsx)(`button`,{type:`button`,onClick:y,className:`text-muted-foreground hover:text-foreground transition-colors`,children:`Switch to direct sign-in`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>void b(),className:`text-muted-foreground hover:text-destructive transition-colors`,children:x?`Disconnect`:`Direct sign out`})]})]}):(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{className:`text-sm font-medium text-foreground mb-3`,children:`Connect to this cluster`}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3.5`,children:[l&&!Nf(r)&&(0,K.jsx)(Fv,{icon:lo,title:`Fabric Connect`,description:`Connect through your Harper account. No cluster credentials needed.`,pill:C===`fabric`?`last`:C?void 0:`recommended`,children:(0,K.jsx)(P,{className:`w-full`,disabled:f,onClick:()=>void v(),children:f?(0,K.jsx)(Oi,{className:`animate-spin`}):`Fabric Connect`})}),(0,K.jsx)(Fv,{icon:vi,title:`Direct sign-in`,description:`Sign in with this cluster's Harper username and password.`,pill:C===`direct`?`last`:void 0,children:(0,K.jsx)(P,{className:`w-full`,variant:`outline`,onClick:y,children:`Direct sign-in`})})]})]}),(0,K.jsx)(Tv,{clusterId:r.id,base:_})]})}function Av({cluster:e}){let t=fe(),n=se(),r=`/${e.organizationId}/${e.id}`,i=(0,G.useMemo)(()=>(e.instances??[]).filter(e=>e.status&&!Uc.includes(e.status)).sort(dp),[e.instances]),a=i.at(0),{user:s,isLoading:c}=Dn(a?.id),l=!!a&&!!s,f=(0,G.useCallback)(()=>{a&&n({to:`${r}/instance/${a.id}/sign-in`})},[r,a,n]),m=(0,G.useCallback)(async()=>{if(a){try{await d({instanceClient:o({id:a.id,operationsUrl:p(a)}),entityId:a.id})}catch{}u.setUserForEntity(a,null),u.flagForBasicAuth(a.id,null),await t.invalidate()}},[a,t]);return(0,K.jsxs)(jv,{children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-4 mb-6`,children:[(0,K.jsx)(`div`,{className:`flex items-center justify-center size-12 rounded-xl bg-violet-50 text-primary dark:bg-grey-700 dark:text-violet-300 shrink-0`,children:(0,K.jsx)(wa,{className:`size-6`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:e.name}),(0,K.jsx)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full text-muted-foreground bg-muted`,children:`Self-Hosted`})]}),(0,K.jsx)(`div`,{className:`mt-1 text-sm text-muted-foreground`,children:(0,K.jsxs)(V,{to:`${r}/instances`,className:`hover:text-foreground hover:underline`,children:[i.length,` `,i.length===1?`instance`:`instances`]})})]})]}),a?c?(0,K.jsx)(Mv,{}):l?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,K.jsx)(vr,{className:`size-4 text-green shrink-0`}),(0,K.jsx)(`span`,{className:`font-medium text-green`,children:`Signed in directly`}),(0,K.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,a.name||a.instanceFqdn]})]}),(0,K.jsxs)(V,{to:`${r}/instance/${a.id}/`,className:`group flex items-center gap-4 rounded-2xl border-2 border-primary/30 bg-primary/5 p-6 transition-all hover:border-primary hover:bg-primary/10 dark:border-violet-400/30 dark:bg-violet-400/5 dark:hover:border-violet-400 dark:hover:bg-violet-400/10`,children:[(0,K.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 dark:bg-violet-400/15 dark:text-violet-300`,children:(0,K.jsx)(fa,{className:`size-6`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsx)(`div`,{className:`text-lg font-medium text-foreground`,children:`Enter cluster`}),(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Open the studio — apps, databases, APIs, logs, and config.`})]}),(0,K.jsx)(Hn,{className:`size-5 text-muted-foreground transition-transform group-hover:translate-x-1`})]}),(0,K.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-4 text-sm`,children:(0,K.jsx)(`button`,{type:`button`,onClick:()=>void m(),className:`text-muted-foreground hover:text-destructive transition-colors`,children:`Direct sign out`})})]}):(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{className:`text-sm font-medium text-foreground mb-3`,children:`Connect to this cluster`}),(0,K.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3.5`,children:(0,K.jsx)(Fv,{icon:vi,title:`Direct sign-in`,description:`Sign in with this instance's Harper username and password.`,children:(0,K.jsx)(P,{className:`w-full`,variant:`outline`,onClick:f,children:`Direct sign-in`})})})]}):(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`This cluster has no instances yet. Register one from the`,` `,(0,K.jsx)(V,{to:`${r}/instances`,className:`underline hover:text-foreground`,children:`Instances`}),` page.`]})]})}function jv({children:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Qf,{children:(0,K.jsx)(`div`,{className:`max-w-3xl`,children:e})})]})}function Mv(){return(0,K.jsx)(`div`,{className:`flex justify-center py-10 text-muted-foreground`,children:(0,K.jsx)(Oi,{className:`size-6 animate-spin`})})}function Nv({status:e}){let t=e&&Hc.includes(e)?`text-green bg-green/10`:e===`STOPPED`?`text-destructive bg-destructive/10`:e===`PARTIAL`?`text-yellow bg-yellow/10`:`text-muted-foreground bg-muted`;return(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full ${t}`,children:[(0,K.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`}),e?e.charAt(0)+e.slice(1).toLowerCase():`Unknown`]})}function Pv(){return(0,K.jsxs)(`span`,{title:`All instances running in safe mode — user apps/components are not loaded`,className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full text-yellow bg-yellow/10`,children:[(0,K.jsx)(wi,{className:`size-3`}),`Safe mode`]})}function Fv({icon:e,title:t,description:n,pill:r,children:i}){return(0,K.jsxs)(`div`,{className:`relative rounded-xl p-4.5 bg-card border ${r===`last`?`border-2 border-green`:r===`recommended`?`border-2 border-primary dark:border-violet-400`:`border-border`}`,children:[r&&(0,K.jsx)(`span`,{className:`absolute -top-2.5 left-4 rounded-full bg-card`,children:(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full ${r===`last`?`text-green bg-green/15`:`text-primary bg-violet-50 dark:text-violet-300 dark:bg-grey-700`}`,children:[r===`last`&&(0,K.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`}),r===`last`?`Last used`:`Recommended`]})}),(0,K.jsx)(e,{className:`size-6 text-primary dark:text-violet-300 mb-2`}),(0,K.jsx)(`div`,{className:`text-[15px] font-medium text-foreground mb-1`,children:t}),(0,K.jsx)(`p`,{className:`text-[13px] text-muted-foreground leading-normal mb-4`,children:n}),i]})}function Iv({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Qf,{children:(0,K.jsx)(`div`,{className:t,children:e})})]})}function Lv(e){let t=nl(e);return t===void 0||t===408||t>=500}var Rv=`Not attempted.`;function zv(e){return[...new Set(e.split(/[,\s]+/).map(e=>e.trim().toLowerCase()).filter(Boolean))]}function Bv(e){let t=nl(e);return Lv(e)||t===401||t===429}async function Vv(e,t){let n=[],r=[];for(let i=0;i<e.length;i+=1){let a=e[i];try{await t(a),n.push(a)}catch(t){if(r.push({domain:a,message:_o(t).message,error:t,attempted:!0}),Bv(t)){for(let t of e.slice(i+1))r.push({domain:t,message:Rv,error:void 0,attempted:!1});break}}}return Hv(r),{added:n,failures:r}}function Hv(e){let t=new Set;for(let{error:n,attempted:r}of e){if(!r||nl(n)===409)continue;let e=nl(n);t.has(e)||(t.add(e),console.error(n))}}var Uv=4e3;async function Wv(e,t=Uv){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{clearTimeout(n)}}function Gv(e){let t=new Map;for(let n of e??[]){let e=String(n?.domain??``).toLowerCase();t.set(e,(t.get(e)??0)+1)}return t}function Kv(e,t){return e.filter(({domain:e,error:n,attempted:r})=>!r||!Lv(n)||!t.has(e))}function qv(e,t){if(!e)return new Set;let n=new Set;for(let[r,i]of t)i>(e.get(r)??0)&&n.add(r);return n}function Jv(e){return e.map(({domain:e,message:t})=>`${e} — ${t}`).join(`; `)}var Yv=new Set([`com`,`co`,`org`,`net`,`edu`,`gov`,`mil`,`me`,`biz`,`info`,`ac`,`or`,`ne`,`go`,`lg`,`asn`,`id`,`nom`,`sch`,`ltd`,`plc`]);function Xv(e){let t=e.split(`.`);if(t.length<=2)return`@`;let n=t[t.length-1],r=t[t.length-2],i=n.length===2&&Yv.has(r)?3:2;return t.length<=i?`@`:t.slice(0,-i).join(`.`)}function Zv({cluster:{fqdn:e},domain:{domain:t,id:n}}){let r=Xv(t),[i,a,o]=Jf(r,e||``,n);return(0,K.jsxs)(`div`,{className:`grid gap-4 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap`,children:`This domain has been verified! Now to associate it with this cluster, add the following to your DNS registrar:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordName`,value:r,onClick:i}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:i,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordTarget`,value:e,onClick:a}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:a,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`domainId`,value:n,onClick:o}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:o,children:(0,K.jsx)(Ir,{className:`w-3 h-3`})})]})}),(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap italic text-sm`,children:`Select this domain using the checkbox to the left, then click "Bind" in the top right to finish associating it with this cluster.`})]})}function Qv({certificate:e,domain:t,cluster:n}){let r=Xv(t.domain),[i,a,o]=Jf(r,n.fqdn||``,t.id),s=(0,G.useMemo)(()=>e.issueDate&&!e.inProgress?{width:`100%`,color:`bg-green/80`,pulse:!1,text:`Certificate Issued`}:e.inProgress?{width:`100%`,color:`bg-yellow/80`,pulse:!0,text:`Generating Certificate...`}:{width:`100%`,color:`bg-gray-600`,pulse:!1,text:`Pending Certificate Generation...`},[e]);return(0,K.jsxs)(`div`,{className:`w-full max-w-2xl border border-border/50 rounded-md p-4 bg-gray-900/20`,children:[(0,K.jsxs)(`div`,{className:`mb-4`,children:[(0,K.jsx)(`div`,{className:`w-full h-1.5 rounded-full overflow-clip flex shadow-sm bg-gray-800`,children:(0,K.jsx)(`div`,{style:{width:s.width},className:`grow transition-[width] duration-1000 ease-in-out motion-reduce:transition-none ${s.color} ${s.pulse?`animate-pulse`:``}`})}),(0,K.jsx)(`div`,{className:`text-[10px] text-muted-foreground font-light mt-1 italic`,children:s.text})]}),(0,K.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] text-sm`,children:[(0,K.jsx)(`div`,{className:`col-span-1 text-xs text-muted-foreground`,children:`CNAME:`}),(0,K.jsxs)(`div`,{className:`col-span-1 flex gap-2 items-center flex-wrap`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-xs`,children:[(0,K.jsx)(`span`,{className:`truncate max-w-[150px]`,title:r,children:r}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:i,title:`Copy Name`,children:(0,K.jsx)(Ir,{className:`w-3 h-3`})})]}),(0,K.jsx)($v,{}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-xs`,children:[(0,K.jsx)(`span`,{className:`truncate max-w-[200px]`,title:n.fqdn||``,children:n.fqdn}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:a,title:`Copy Target`,children:(0,K.jsx)(Ir,{className:`w-3 h-3`})})]})]}),(0,K.jsx)(`div`,{className:`col-span-1 text-[10px] text-muted-foreground`,children:`Domain ID:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-[10px] text-muted-foreground italic`,children:[(0,K.jsx)(`span`,{className:`truncate max-w-[200px]`,children:t.id}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`sm`,className:`h-3 w-3 p-0`,onClick:o,title:`Copy ID`,children:(0,K.jsx)(Ir,{className:`w-2.5 h-2.5`})})]})})]})]})}function $v(){return(0,K.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`w-3 h-3 text-muted-foreground`,children:[(0,K.jsx)(`path`,{d:`M5 12h14`}),(0,K.jsx)(`path`,{d:`m12 5 7 7-7 7`})]})}function ey(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,searchAttribute:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l,getAttributes:u}=e;return z({enabled:t,queryKey:[n,r,i,`search_by_value`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l,u??null],retry:!1,staleTime:6e4,gcTime:5e3,queryFn:()=>ty(e)})}async function ty({instanceClient:e,databaseName:t,tableName:n,searchAttribute:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,getAttributes:c,headers:l}){let u=i.attribute.length&&!(i.attribute===r&&!i.descending),d=await e.post(`/`,{operation:`search_by_value`,get_attributes:c??[`*`],database:t,table:n,search_attribute:r,search_value:`*`,sort:u?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:l,validateStatus:e=>e>=200&&e<400||e===404});return d.status===404?{data:[]}:d}function ny(e){return z({queryKey:[e,`ChallengeCertificate`],queryFn:async()=>{if(!e)return[];let{data:t}=await ty({searchAttribute:`domain`,entityId:e,databaseName:`data`,tableName:`ChallengeCertificate`,sort:{attribute:`domain`,descending:!0},instanceClient:o({id:e,forceFabricConnect:!0}),onlyIfCached:!1,pageIndex:0,pageSize:100});return t},enabled:!!e,refetchInterval:al(5e3),retry:ol()})}function ry(e){return H(ny(e))}function iy({domain:{challengeToken:e,challengeTxtRecord:t,domain:n,id:r},cluster:{fqdn:i}}){let a=Xv(n),[o,s,c,l,u]=Jf(t,e,a,i||``,r);return(0,K.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap`,children:`Prove that you own this domain by adding the following to your DNS registrar:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`TXT`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`challengeName`,value:t,onClick:o}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:o,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Content:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`challengeToken`,value:e,onClick:s}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:s,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap mt-4`,children:`While you're at it, you should also add the CNAME record to point to this cluster:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordName`,value:a,onClick:c}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:c,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordTarget`,value:i,onClick:l}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:l,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`domainId`,value:r,onClick:u}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:u,children:(0,K.jsx)(Ir,{className:`w-3 h-3`})})]})}),(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap mt-2`,children:`Then after your DNS TTL elapses, click the "Validate" button above.`})]})}async function ay({clusterId:e,domainIds:t,generateDomainCerts:n}){let{data:r}=await M.put(`/Cluster/${e}`,{domainIds:t,generateDomainCerts:n},{timeout:0});return r}function oy(){return R({mutationFn:e=>ay(e)})}S({domainId:A()});async function sy(e){let{data:t}=await M.delete(`/Domain/${e.domainId}`);return t}function cy(){return R({mutationFn:e=>sy(e)})}function ly(e){return[...new Set(e)]}var uy=_g();function dy(e,t,n){let{data:r}=ry(e.id),i=(0,G.useMemo)(()=>!!r?.some(e=>!e.issueDate||e.inProgress),[r]),{mutate:a,isPending:o}=oy(),{mutate:s,isPending:c}=cy(),l=o||c,u=(0,G.useCallback)((t,n)=>{if(!Xc(e.status)){U.error(`Cluster is currently `+e.status,{description:`To bind a domain, it must be running.`});return}a({clusterId:e.id,domainIds:ly((e.domainIds?.slice()||[]).concat([t])),generateDomainCerts:n},{onSuccess:()=>{yo.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),U.success(`Domain bound!`+(n?` Certificates are being generated in the background now.`:``))}})},[a,e]),d=(0,G.useCallback)(t=>{s({domainId:t},{onSuccess:()=>{yo.invalidateQueries({queryKey:[e.organizationId,`domains`],refetchType:`active`}),U.success(`Domain removed!`)}})},[s]),f=(0,G.useCallback)(t=>{a({clusterId:e.id,domainIds:(e.domainIds?.slice()||[]).filter(e=>e!==t),generateDomainCerts:!1},{onSuccess:()=>{yo.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),U.success(`Domain unbound!`)}})},[s]);return(0,G.useMemo)(()=>[uy.display({id:`select`,header:`Bind`,size:50,cell:r=>{let a=r.row.original;return a.status!==`ACTIVE`||a.clusterId||Nf(e)?null:(0,K.jsx)(`label`,{className:`p-10 -m-10`,children:(0,K.jsx)(`input`,{type:`checkbox`,checked:t.includes(a.id),onChange:()=>n(a.id),disabled:l||i})})}}),uy.display({header:`Domains`,id:`domain`,enableSorting:!1,size:150,cell:e=>{let t=e.row.original;return(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{children:t.domain}),(0,K.jsx)(P,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l||!!t.clusterId,onClick:()=>d(t.id),children:`Remove Domain`})]})}),(0,K.jsx)(Rs,{side:`bottom`,align:`center`,children:t.clusterId?`To delete this domain, please unbind it from all clusters first.`:`Remember to clean up your DNS records!`})]})}}),uy.display({header:`Next Steps`,enableSorting:!1,size:500,id:`nextSteps`,cell:t=>{let n=t.row.original,i=r?.find(e=>e.domain===n.domain);return n.status===`ACTIVE`&&n.clusterId?e.id===n.clusterId?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{children:`Bound to this cluster`}),i&&(!i.issueDate||i.inProgress)&&(0,K.jsx)(`div`,{className:`py-2`,children:(0,K.jsx)(Qv,{certificate:i,domain:n,cluster:e})}),(0,K.jsx)(P,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l,onClick:()=>f(n.id),children:`Unbind Domain`})]}):`Bound to cluster ${n.clusterId}`:n.status===`PENDING_VALIDATION`?(0,K.jsx)(iy,{domain:n,cluster:e}):Nf(e)?`Cannot be associated with this self-managed cluster.`:n.status===`ACTIVE`&&!n.clusterId?(0,K.jsx)(Zv,{cluster:e,domain:n}):n.status}})],[e,u,l,r,i,t,n])}var fy=`Enter a domain name.`,py=S({domain:A().trim().min(1,fy),organizationId:A()});async function my(e){let{data:t}=await M.post(`/Domain/`,e);return t}function hy(){return R({mutationFn:e=>my(e),meta:{skipGlobalErrorToast:!0},networkMode:`always`})}async function gy(e){let{data:t}=await M.post(`/Domain/${e}/validate`);return t}async function _y(e){let{data:t}=await M.get(`/Domain/?organizationId=${e}`);return t}function vy(e){return z({queryKey:[e,`domains`],queryFn:()=>_y(e)})}function yy(){let{organizationId:e,clusterId:t}=B({strict:!1}),{data:n}=ge(ll(t,!0)),{update:r}=vf(e),{data:i,refetch:a,isFetching:o,isPending:s,isRefetching:c}=H(vy(e)),l=(0,G.useMemo)(()=>i?.filter(e=>e.status===`PENDING_VALIDATION`)||[],[i]),[u]=(0,G.useState)({attribute:`domain`,descending:!1}),d=(0,G.useMemo)(()=>[{desc:u.descending,id:u.attribute}],[u]),f=Cg(a),[p,m]=(0,G.useState)([]),g=(0,G.useCallback)(e=>{m(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),{mutate:_,isPending:v}=oy(),y=(0,G.useCallback)(()=>{if(!Xc(n.status)){U.error(`Cluster is currently `+n.status,{description:`To bind a domain, it must be running.`});return}_({clusterId:n.id,domainIds:ly((n.domainIds?.slice()||[]).concat(p)),generateDomainCerts:!0},{onSuccess:()=>{yo.invalidateQueries({queryKey:[n.organizationId],refetchType:`active`}),U.success(`Domain(s) bound! Certificates are being generated in the background now.`),m([])}})},[n,p,_]),{mutateAsync:b}=hy(),x=Pt({resolver:Ke(py),defaultValues:{domain:``,organizationId:e}}),S=s||x.formState.isSubmitting,C=(0,G.useCallback)(async e=>{if(e.domain.length>5144){x.setError(`domain`,{type:`server`,message:`That is too much text to be domain names. Paste at most 20.`});return}let t=zv(e.domain);if(t.length===0){x.setError(`domain`,{type:`server`,message:fy});return}if(t.length>20){x.setError(`domain`,{type:`server`,message:`That is ${t.length} domains. Add at most 20 at a time.`});return}let n=i&&Gv(i),{added:r,failures:o}=await Vv(t,t=>b({...e,domain:t})),s=xe.isOnline()&&(r.length>0||o.some(({error:e,attempted:t})=>t&&Lv(e)))?await Wv(a()):void 0,c=Kv(o,s?qv(n,Gv(s.data)):new Set),l=r.length+o.length-c.length;if(l>0&&U.success(`${h(l,`Domain`,`Domains`)} added! Please add the txt record above to your domain registrar.`),c.length===0){x.reset();return}x.setValue(`domain`,c.map(({domain:e})=>e).join(`, `)),x.setError(`domain`,{type:`server`,message:Jv(c)})},[b,x,i,a]),w=(0,G.useCallback)(async()=>{let e=`Validating ${h(l.length,`domain`,`domains`)}...`,t=`validatingDomains`,n=0,r=0;for(let i of l)try{U.loading(e,{description:`${n++} of ${l.length} checked`,id:t}),await gy(i.id)}catch{r+=1}r>0?U.error(`Validation failed!`,{description:`Please make sure the TXT record has been put in place. You may need to wait a bit for the DNS change to propagate.`,id:t}):(await a(),U.success(`Validation succeeded!`,{description:`Please take a look at the next steps for newly verified domains.`,id:t}))},[l]),T=dy(n,p,g),E=x.watch(`domain`),D=(0,G.useMemo)(()=>typeof E==`string`&&E.trim().split(`.`).length===2,[E]),O=(0,G.useCallback)(()=>{typeof E==`string`&&x.setValue(`domain`,`${E.trim()}, www.${E.trim()}`)},[E,x]);return(0,K.jsx)(vg,{data:i||[],isFetching:o||c,columns:T,sortingState:d,children:(0,K.jsxs)(`div`,{className:`w-full flex flex-col md:flex-row items-center md:justify-between md:space-x-2 space-y-2 md:space-y-0`,children:[r&&(0,K.jsx)(Lc,{...x,children:(0,K.jsxs)(`form`,{id:`cluster-add-domain-form`,name:`cluster-add-domain-form`,onSubmit:x.handleSubmit(C),className:`flex gap-1 flex-col md:flex-row`,children:[(0,K.jsx)(Y,{control:x.control,name:`domain`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex-1`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`New Domain Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,enterKeyHint:`done`,autoComplete:`off`,disabled:S,...e})}),D&&(0,K.jsxs)(`div`,{className:`mt-1 flex gap-4`,children:[`Adding an apex domain?`,(0,K.jsx)(P,{variant:`positiveOutline`,type:`button`,disabled:S,onClick:O,children:`Add www as well`})]}),(0,K.jsx)(Q,{children:(0,K.jsx)(`span`,{className:`text-muted-foreground italic`,children:`Type in a domain like example.com or your.example.com, and you'll be guided through validating and binding your cluster to it.`})})]})}),(0,K.jsxs)(`div`,{className:`flex-0 self-start flex gap-1 md:pt-6.5`,children:[(0,K.jsxs)(P,{type:`submit`,variant:`submit`,disabled:S,children:[(0,K.jsx)(ca,{}),` Add`]}),l.length>0&&(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:w,accessKey:`r`,type:`button`,disabled:o||c,children:[(0,K.jsx)(Ei,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`V`}),`alidate`]})]}),(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:f,accessKey:`r`,type:`button`,disabled:o||c,children:[(0,K.jsx)(ua,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]})]})]})}),p.length>0&&(0,K.jsx)(`div`,{className:`flex-0 self-start md:pt-6.5`,children:(0,K.jsxs)(P,{variant:`submit`,onClick:y,disabled:v,children:[(0,K.jsx)(va,{}),` Bind `,h(p.length,`Domain`,`Domains`)]})})]})})}function by(){return(0,K.jsx)(Iv,{className:`flex flex-col justify-start max-w-4xl`,children:(0,K.jsx)(yy,{})})}var xy=S({username:fl,role:A().nonempty({error:`Please select a role.`}),password:dl.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:A()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});async function Sy(e){await M.patch(`/ResetPasswordUpdater/${e}`)}async function Cy(e){let{instanceClient:t,...n}=e,{data:r}=await t.post(`/`,{operation:`add_user`,...n});return r}function wy(){return R({mutationFn:Cy})}async function Ty({username:e,password:t,role:n,active:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`alter_user`,username:e,password:t,role:n,active:r});return a}function Ey(){return R({mutationFn:Ty})}async function Dy({username:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_user`,username:e});return n}function Oy(){return R({mutationFn:Dy})}async function ky({clusterId:e,initialUsername:t,desiredUsername:n,newPassword:r,tempPassword:i,instanceClient:a}){if(!i)throw Error(`You may not have permission to set the password on this cluster.`);let o=a;try{let a=await Gc({username:t,password:i,instanceClient:o,entityId:e});return a.instanceClient&&(o=a.instanceClient),n===`HDB_ADMIN`?await Ty({username:n,password:r,instanceClient:o}):(await Cy({username:n,password:r,role:`super_user`,active:!0,instanceClient:o}),await Gc({username:n,password:r,instanceClient:o,entityId:e}),await Dy({username:g,instanceClient:o})),await Sy(e),a}catch(t){throw await d({entityId:e,instanceClient:o}),t}}function Ay(){return R({mutationFn:ky})}function jy(){let{user:e}=wn(),{clusterId:t}=B({strict:!1}),{data:n}=H(ll(t,!0)),r=se(),i=ue(),a=(0,G.useMemo)(()=>c(n),[n]),o=Bs({operationsUrl:a}),{redirect:s}=me({strict:!1}),l=fe(),d=Pt({resolver:Ke(xy),defaultValues:{confirmPassword:``,password:``,role:`super_user`,username:e?.email??``}}),{setFocus:f,control:p,handleSubmit:m}=d;(0,G.useEffect)(()=>{f(`password`)},[f]);let h=n?.instances?.find(e=>e.tempPassword)?.tempPassword,_=tl(n),{mutate:v,isPending:y}=Ay(),b=(0,G.useCallback)(async e=>{if(!a){U.error(`Cluster is not yet fully loaded, please wait a moment before trying to sign in.`);return}if(!_){U.error(`Some instances are still starting up. You can create your admin user once they are all running.`);return}v({instanceClient:o,clusterId:t,newPassword:e.password,tempPassword:h,initialUsername:g,desiredUsername:e.username},{onSuccess:async({message:e,user:a})=>{U.success(e),u.setUserForEntity(n,a),await cl(i,t),l.invalidate(),await r({to:s?.startsWith(`/`)?s:`../`})}})},[n,t,o,_,r,a,i,s,l,v,h]);return n&&!n.resetPassword?(0,K.jsx)(L,{to:`../sign-in`,replace:!0}):n&&!_?(0,K.jsx)(L,{to:`../starting-up`,replace:!0}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{"aria-label":`Breadcrumb`,className:`fixed top-20 w-full h-12 z-39 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none flex items-center`,children:(0,K.jsx)(Ic,{})}),(0,K.jsx)(`div`,{className:`items-center justify-center flex mt-32 py-4 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,K.jsxs)(`div`,{className:`text-foreground w-xs`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light`,children:`Create Admin User`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:`You are ready to create your first user in your new cluster. These credentials belong to you alone, and you can create more users and roles once you create this first one.`}),(0,K.jsx)(Lc,{...d,children:(0,K.jsxs)(`form`,{id:`cluster-create-admin-form`,name:`cluster-create-admin-form`,onSubmit:m(b),className:`my-4`,children:[(0,K.jsx)(Y,{control:p,name:`username`,render:({field:e})=>(0,K.jsxs)(X,{className:`my-4`,children:[(0,K.jsx)(Z,{children:`Username`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{autoComplete:`username`,type:`text`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:p,name:`password`,render:({field:e})=>(0,K.jsxs)(X,{className:`my-4`,children:[(0,K.jsx)(Z,{children:`Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:p,name:`confirmPassword`,render:({field:e})=>(0,K.jsxs)(X,{className:`my-4`,children:[(0,K.jsx)(Z,{children:`Confirm Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(P,{disabled:y,type:`submit`,variant:`submit`,className:`w-full my-2`,children:`Create Admin User`})]})}),(0,K.jsxs)(`p`,{className:`text-muted-foreground flex gap-2 align-middle`,children:[(0,K.jsx)(In,{size:36,className:`flex-none`}),(0,K.jsx)(`span`,{children:`These credentials will be used to sign into your cluster directly, providing you a secure connection from your browser to your cluster.`})]})]})})]})}function My({columns:e,data:t,renderRowWrapper:n}){let r=Le({features:gg,data:t,columns:e});return(0,K.jsx)(`div`,{className:`bg-card dark:bg-black-dark rounded-md`,children:(0,K.jsxs)(lg,{children:[(0,K.jsx)(ug,{children:r.getHeaderGroups().map(e=>(0,K.jsx)(fg,{className:`border-none`,children:e.headers.map(e=>(0,K.jsx)(pg,{className:`p-4`,style:{width:`${e.getSize()}%`},children:e.isPlaceholder?null:Me(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,K.jsx)(dg,{className:`bg-background dark:bg-black`,children:r.getRowModel().rows?.length?r.getRowModel().rows.map(e=>{let t=(0,K.jsx)(fg,{"data-state":e.getIsSelected()&&`selected`,className:`hover:bg-muted/10 data-[state=selected]:bg-muted`,children:e.getVisibleCells().map(e=>(0,K.jsx)(hg,{className:`p-4`,style:{width:`${e.column.getSize()}%`},children:Me(e.column.columnDef.cell,e.getContext())},e.id))});return(0,K.jsx)(G.Fragment,{children:n?n(e.original,t):t},e.id)}):(0,K.jsx)(fg,{children:(0,K.jsx)(hg,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function Ny(){return(0,K.jsx)(`div`,{className:`flex-col items-center justify-center px-16 space-y-3 text-center pt-30`,children:(0,K.jsx)(`p`,{children:`No instances found.`})})}async function Py({instance:e,instanceClient:t}){try{await d({instanceClient:t,entityId:e.id})}catch{}u.signOutLocally(e.id),e.clusterId&&u.signOutLocally(e.clusterId)}async function Fy({instanceId:e,action:t,safeMode:n}){let r=n===void 0?{}:{safeMode:n},{data:i}=await M.post(`/HDBInstance/${e}/container/${t}`,r);return i}function Iy(){return R({mutationFn:Fy})}var Ly={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function Ry(e){let{clusterId:t}=B({strict:!1}),{mutateAsync:n,isPending:r}=Iy(),i=ue();return{run:(0,G.useCallback)(async(r,a)=>{let o=a?.label??Ly[r],s=e.name??e.id,c=U.loading(o,{description:`${o} ${s}. Status will update shortly.`,duration:3e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});try{await n({instanceId:e.id,action:r,safeMode:a?.safeMode}),t&&i.invalidateQueries({queryKey:[t]}),i.invalidateQueries({queryKey:[e.id]}),U.dismiss(c),U.success(`Request accepted`,{description:`${s} is ${o.toLowerCase()}. The status will update automatically.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}catch{U.dismiss(c)}},[t,e.id,e.name,n,i]),isPending:r}}function zy({entityId:e,instanceClient:t},n){return z({queryKey:[`get_status`,e],staleTime:9e3,refetchInterval:al(1e4),retry:ol(),retryDelay:1e4,throwOnError:!1,enabled:n,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_status`});return e}})}function By(e,t){return e?.systemStatus?.find(e=>e.id===t)?.status}async function Vy({instanceClient:e,id:t,status:n}){let{data:r}=await e.post(`/`,{operation:`set_status`,id:t,status:n});return r}function Hy(){return R({mutationFn:Vy,onSuccess:(e,t)=>yo.invalidateQueries({queryKey:[`get_status`,t.entityId]})})}function Uy({clusterId:e,instanceId:t,organizationId:n},r){return`/`+[n,e,t&&`instance`,t,r].filter(Js).join(`/`)}var Wy=[`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`];function Gy(e,t,n){let{user:r}=Dn(e.id),{organizationId:i,clusterId:a}=B({strict:!1}),o=Uy({organizationId:i,clusterId:a,instanceId:e.id}),s=Uy({organizationId:i,clusterId:a,instanceId:e.id},`sign-in`),c=(0,G.useMemo)(()=>p(e),[e]),l=Bs({operationsUrl:c}),{update:d}=Cf(),f=u.checkForFabricConnect(e.id),m=q({operationsUrl:c,instanceId:e.id,forceFabricConnect:!0}),{data:h}=H(zy(m,n&&d&&!Yc(e.status))),g=By(h,`availability`)||`Unknown`,_=g===`Available`,v=g===`Unavailable`,{mutate:y,isPending:b}=Hy(),{run:x,isPending:S}=Ry(e),[C,w]=(0,G.useState)(null),T=e.instanceFqdn,E=Bh({secure:e.operationsApiSecure?`true`:`false`,port:e.operationsApiPort,fqdn:e.instanceFqdn}),[D,O]=Jf(T??``,E),k=(0,G.useCallback)(async()=>{await Py({instance:e,instanceClient:l})},[e,l]),A=!!e.status&&Wy.includes(e.status),j=!!r&&!f,ee=A,M=!!T,N=d&&A&&(_||v),P=e.status===`RUNNING`,te=e.status===`STOPPED`,F=d&&!t&&(P||te),ne=[ee&&j&&{key:`direct-connect`,to:o,icon:(0,K.jsx)(wa,{className:`text-green`}),label:`Direct Connect`},ee&&j&&{key:`direct-sign-out`,onClick:k,variant:`destructive`,icon:(0,K.jsx)(Ii,{}),label:`Direct Sign Out`},ee&&!j&&d&&!t&&{key:`fabric-connect`,to:o,icon:(0,K.jsx)(wa,{className:`text-green`}),label:`Fabric Connect`},ee&&!j&&{key:`direct-sign-in`,to:s,icon:(0,K.jsx)(Pi,{}),label:`Direct Sign In`},ee&&M&&{type:`separator`,key:`copy-sep`},M&&{key:`copy-fqdn`,onClick:D,icon:(0,K.jsx)(Er,{}),label:`Copy Instance FQDN`},M&&{key:`copy-api`,onClick:O,icon:(0,K.jsx)(Er,{}),label:`Copy API URL`},(ee||M)&&N&&{type:`separator`,key:`rotation-sep`},N&&_&&{key:`out-of-rotation`,variant:`destructive`,disabled:b,onClick:()=>y({...m,id:`availability`,status:`Unavailable`}),icon:(0,K.jsx)(Aa,{}),label:`Bring out of rotation`},N&&v&&{key:`into-rotation`,disabled:b,onClick:()=>y({...m,id:`availability`,status:`Available`}),icon:(0,K.jsx)(Oa,{}),label:`Bring back into rotation`},(ee||M||N)&&F&&{type:`separator`,key:`container-sep`},F&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},F&&te&&{key:`container-start`,disabled:S,onClick:()=>void x(`start`,{safeMode:!1}),icon:(0,K.jsx)(oa,{}),label:`Start`},F&&te&&{key:`container-start-safe`,disabled:S,onClick:()=>w(`start`),icon:(0,K.jsx)(wi,{}),label:`Start in safe mode`},F&&P&&{key:`container-restart`,disabled:S,onClick:()=>void x(`restart`,{safeMode:!1}),icon:(0,K.jsx)(ga,{}),label:`Restart`},F&&P&&{key:`container-restart-safe`,disabled:S,onClick:()=>w(`restart`),icon:(0,K.jsx)(wi,{}),label:`Restart in safe mode`},F&&P&&{key:`container-stop`,variant:`destructive`,disabled:S,onClick:()=>void x(`stop`),icon:(0,K.jsx)(La,{}),label:`Stop`}].filter(Js),re=(0,K.jsx)(zf,{open:C!==null,setOpen:e=>{e||w(null)},action:C??`restart`,targetName:e.name??e.id,scope:`instance`,isPending:S,onConfirm:()=>{let e=C;w(null),e&&x(e,{safeMode:!0,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}});return ne.length?{items:[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-sep`},...ne],dialog:re}:{items:[],dialog:re}}function Ky({instance:e,isSelfManaged:t}){let[n,r]=(0,G.useState)(!1),{items:i,dialog:a}=Gy(e,t,n);return i.length?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(bo,{open:n,onOpenChange:r,children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Instance options`,children:(0,K.jsx)(Hr,{})})}),(0,K.jsx)(So,{align:`end`,className:`min-w-48`,children:$u(i,`dropdown`)})]}),a]}):null}function qy({isSelfManaged:e,instance:t}){let{user:n,isLoading:r}=Dn(t.id),{organizationId:i,clusterId:a}=B({strict:!1}),o=Uy({organizationId:i,clusterId:a,instanceId:t.id}),s=Uy({organizationId:i,clusterId:a,instanceId:t.id},`sign-in`),c=Bs({operationsUrl:(0,G.useMemo)(()=>p(t),[t])}),{update:l}=Cf(),d=u.checkForFabricConnect(t.id),f=(0,G.useCallback)(async()=>{await Py({instance:t,instanceClient:c})},[t,c]);return Yc(t.status)?(0,K.jsx)(`span`,{className:`text-muted-foreground text-sm`,children:`—`}):r||!t.status||![`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`].includes(t.status)?(0,K.jsx)(Oi,{className:`animate-spin`,color:`gray`}):!n||d?(0,K.jsxs)(`span`,{className:`flex gap-4`,children:[l&&!e&&(0,K.jsx)(V,{to:o,className:`text-sm`,"aria-label":`Connect to ${t.name} instance`,title:`Connect to ${t.name} instance`,children:(0,K.jsx)(P,{variant:`positiveOutline`,children:`Fabric Connect`})}),(0,K.jsx)(V,{to:s,className:`text-sm`,"aria-label":`Sign in to ${t.name} instance`,title:`Sign in to ${t.name} instance`,children:(0,K.jsx)(P,{variant:l?`defaultOutline`:`positiveOutline`,children:`Direct Sign In`})})]}):(0,K.jsxs)(`span`,{className:`flex gap-4`,children:[(0,K.jsx)(V,{to:o,className:`text-sm`,"aria-label":`Go to ${t.name} instance`,title:`Go to ${t.name} instance`,children:(0,K.jsx)(P,{variant:`positiveOutline`,children:`Direct Connect`})}),(0,K.jsx)(P,{variant:`destructiveOutline`,className:`text-sm`,"aria-label":`Sign out from ${t.name} instance`,title:`Sign out from ${t.name} instance`,onClick:f,children:`Direct Sign Out`})]})}function Jy({instance:e,isSelfManaged:t,children:n}){let[r,i]=(0,G.useState)(!1),{items:a,dialog:o}=Gy(e,t,r);return a.length?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Gu,{onOpenChange:i,children:[(0,K.jsx)(Ku,{asChild:!0,children:n}),(0,K.jsx)(qu,{className:`min-w-48`,children:$u(a,`context`)})]}),o]}):(0,K.jsx)(K.Fragment,{children:n})}function Yy({instance:e,index:t}){let{update:n}=Cf(),r=q({operationsUrl:(0,G.useMemo)(()=>p(e),[e]),instanceId:e.id,forceFabricConnect:!0}),{mutate:i,isPending:a}=Hy(),[o,s]=(0,G.useState)(!1);(0,G.useEffect)(()=>{let e=setTimeout(()=>s(!0),t*500);return()=>clearTimeout(e)},[t]);let c=Yc(e.status),{data:l,isLoading:u,isFetching:d}=H(zy(r,o&&n&&!c)),f=By(l,`availability`)||`Unknown`,m=f===`Available`,h=f===`Unavailable`;return n?c?(0,K.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(`span`,{className:`inline-block size-4 rounded-full bg-muted-foreground/40`,"aria-label":`Not running`})}),(0,K.jsx)(Rs,{children:`Not running`})]})}):(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(`div`,{className:`flex items-center`,children:u||!o||d&&!l?(0,K.jsx)(Oi,{className:`animate-spin size-5 text-muted-foreground`}):(0,K.jsx)(Wo,{variant:m?`success`:h?`destructive`:`default`,className:`size-4 rounded-full p-0`,children:(0,K.jsx)(`span`,{className:`sr-only`,children:m?`Online`:`Offline`})})})}),(0,K.jsxs)(Rs,{children:[d&&l?`Refreshing... `:``,f]})]}),n&&(0,K.jsxs)(`div`,{className:`flex gap-1`,children:[m&&(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(P,{type:`button`,variant:`destructiveGhost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Unavailable`}),disabled:a,children:a?(0,K.jsx)(Oi,{className:`animate-spin size-4`}):(0,K.jsx)(Aa,{className:`size-4`})})}),(0,K.jsx)(Rs,{children:`Bring out of rotation`})]}),h&&(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Available`}),disabled:a,children:a?(0,K.jsx)(Oi,{className:`animate-spin size-4`}):(0,K.jsx)(Oa,{className:`size-4`})})}),(0,K.jsx)(Rs,{children:`Bring back into rotation`})]})]})]}):null}function Xy(){let{clusterId:e}=B({strict:!1}),{data:t,isLoading:n}=H(ll(e,!0)),r=Nf(t),i=(0,G.useMemo)(()=>[{id:`instanceActions`,size:1,minSize:1,cell:e=>(0,K.jsx)(`div`,{className:`flex justify-end gap-2 items-center`,children:(0,K.jsx)(qy,{isSelfManaged:r,instance:e.row.original})})},r&&{accessorKey:`instanceFqdn`,size:90,header:`URL`,cell:e=>Bh({secure:e.row.original.operationsApiSecure?`true`:`false`,port:e.row.original.operationsApiPort,fqdn:e.row.original.instanceFqdn})},!r&&{accessorKey:`name`,size:90,header:`Name`},!r&&{accessorKey:`status`,header:`Status`,size:1,minSize:1,cell:e=>{let t=e.getValue();return(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Yy,{instance:e.row.original,index:e.row.index}),t?(0,K.jsx)(Wo,{variant:Jc(t),children:Pc(t)}):null,e.row.original.safeMode&&!Yc(e.row.original.status)?(0,K.jsxs)(Wo,{variant:`warning`,title:`Running in safe mode — user apps/components are not loaded`,children:[(0,K.jsx)(wi,{}),`Safe mode`]}):null]})}},!r&&{accessorKey:`version`,size:1,minSize:1,header:`Version`},!r&&{accessorKey:`storageGb`,size:1,minSize:1,header:`Storage`,cell:e=>`${e.getValue()} GB`},!r&&{accessorKey:`usedStorageGb`,size:1,minSize:1,header:`Used Storage`,cell:e=>{let t=e.getValue();return t===void 0?`-`:`${t} GB`}},!r&&{accessorKey:`cpuCores`,size:1,minSize:1,header:`Cores/Threads`,cell:e=>(0,K.jsxs)(K.Fragment,{children:[e.row.original.cpuCores,` / `,e.row.original.threads]})},!r&&{accessorKey:`memoryMb`,size:1,minSize:1,header:`Memory`,cell:e=>`${e.getValue()/1024} GB`},{id:`instanceMenu`,size:1,minSize:1,cell:e=>(0,K.jsx)(`div`,{className:`flex justify-end`,children:(0,K.jsx)(Ky,{isSelfManaged:r,instance:e.row.original})})}].filter(Js),[r]),a=(0,G.useMemo)(()=>t?.instances?t.instances.filter(e=>e.status&&!Uc.includes(e.status)).sort(dp):[],[t]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Qf,{children:(0,K.jsx)(On,{className:`p-0 min-h-96`,children:(0,K.jsx)(Mn,{className:`p-0 min-h-96`,children:n?(0,K.jsx)(eh,{}):a.length?(0,K.jsx)(My,{data:a,columns:i,renderRowWrapper:(e,t)=>(0,K.jsx)(Jy,{instance:e,isSelfManaged:r,children:t})}):(0,K.jsx)(Ny,{})})})})]})}function Zy(){let{clusterId:e}=B({strict:!1}),{immediate:t}=me({strict:!1}),n=t===!0||t===`true`,{data:r,isLoading:i}=H(ll(e,2e3)),a=r?.status,o=(0,G.useMemo)(()=>a&&Hc.includes(a),[a]);return i||!r?(0,K.jsx)(Iv,{className:`flex justify-center`,children:(0,K.jsx)(eh,{})}):o?(0,K.jsx)(Iv,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,K.jsx)(`h1`,{className:`text-xl text-center`,children:`All done!`}),(0,K.jsx)(Rf,{cluster:r,forceProgressBarVisible:!0}),(0,K.jsx)(`p`,{children:`Your cluster finished updating, and is ready for interaction.`}),(0,K.jsx)(`div`,{className:`text-center`,children:(0,K.jsx)(Pf,{cluster:r})})]})}):(0,K.jsx)(Iv,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,K.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,K.jsx)(Rf,{cluster:r,forceProgressBarVisible:!0}),(0,K.jsxs)(`p`,{children:[n?`Your cluster is applying the latest changes immediately, without waiting to take instances out of rotation.`:`Your cluster is updating with the latest changes. This includes waiting several minutes to let traffic drain safely.`,` `,(0,K.jsxs)(`span`,{className:`text-muted-foreground`,children:[`We will let you know when we are ready for you to connect! In the meantime, join us on`,` `,(0,K.jsx)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,children:`Discord`}),`! Get real-time help from our engineers, see feature drops early, and connect with others building on Fabric.`]})]})]})})}function Qy({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(`div`,{className:y(`mt-32 px-4 py-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] flex justify-center`,t),children:e})]})}function $y(){let e=fe(),{clusterId:t}=B({strict:!1}),{data:n,isLoading:r}=H(ll(t,2e3)),i=n?.status,a=(0,G.useMemo)(()=>i&&Hc.includes(i)&&tl(n),[i,n]),o=Zc(i),[,s]=xn(vn.SavedClusterState,null),c=(0,G.useCallback)(()=>{s(n),e.navigate({to:`/${n.organizationId}/new-cluster`})},[n,e,s]);return r||!n?(0,K.jsx)(Qy,{className:`flex justify-center`,children:(0,K.jsx)(eh,{})}):o?(0,K.jsx)(Qy,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4 items-center`,children:[(0,K.jsx)(Or,{className:`w-24 h-24`}),(0,K.jsxs)(`span`,{children:[`Your cluster failed to successfully start. This is usually caused by temporary communication problems. Would you like to try again? We also get notified about these failures. `,(0,K.jsx)(xl,{}),` if you want more help.`]}),(0,K.jsx)(P,{type:`button`,variant:`positiveOutline`,onClick:c,children:`Try Again`})]})}):a?(0,K.jsx)(Qy,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,K.jsx)(`h1`,{className:`text-xl text-center`,children:`It's ready!`}),(0,K.jsx)(Rf,{cluster:n,forceProgressBarVisible:!0}),(0,K.jsxs)(`p`,{children:[`Let's set up your secure, browser-to-cluster connection now.`,` `,(0,K.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Did you know during this step, you connect straight to your cluster, providing a private secure connection? That's `,(0,K.jsx)(`em`,{children:`Direct Connect`}),`! Once you create your user, you will have the option to`,` `,(0,K.jsx)(`em`,{children:`Fabric Connect`}),` from your Fabric account without having to sign in again.`]})]}),(0,K.jsx)(`div`,{className:`text-center`,children:(0,K.jsx)(Pf,{cluster:n})})]})}):(0,K.jsx)(Qy,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,K.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,K.jsx)(Rf,{cluster:n,forceProgressBarVisible:!0}),(0,K.jsxs)(`p`,{children:[`Your cluster is spinning up with the latest changes, including your own DNS records and private connections. Please wait while we get everything going.`,` `,(0,K.jsxs)(`span`,{className:`text-muted-foreground`,children:[`We will let you know when we are ready for you to connect! In the meantime, join us on`,` `,(0,K.jsx)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,children:`Discord`}),`! Get real-time help from our engineers, see feature drops early, and connect with others building on Fabric.`]})]})]})})}function eb(){let{clusterId:e}=B({strict:!1}),{data:t,isLoading:n}=Sv(e);if(n)return(0,K.jsxs)(Iv,{className:`max-w-4xl pb-20`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:`Usage`}),(0,K.jsx)(`div`,{className:`flex justify-center py-16 text-muted-foreground`,children:(0,K.jsx)(Oi,{className:`size-6 animate-spin`})})]});let r=t&&!t.selfManaged?ob(t.regions):null;return(0,K.jsxs)(Iv,{className:`max-w-4xl pb-20`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:`Usage`}),t?t.selfManaged?(0,K.jsx)(lb,{children:`Usage isn't tracked for self-hosted clusters — they run under their own license.`}):t.regions.length===0?(0,K.jsx)(lb,{children:`No usage has been recorded for the current cycle yet.`}):(0,K.jsxs)(`div`,{className:`mt-5 space-y-3`,children:[t.regions.map(e=>(0,K.jsx)(tb,{region:e,showPlanInfo:r==null},e.region??e.regionIds.join())),r&&(0,K.jsx)(nb,{header:(0,K.jsx)(rb,{title:`Plan limits & resources`}),aside:r.planId??void 0,children:(0,K.jsx)(ib,{rateLimits:r.rateLimits,resourcesPerInstance:r.resourcesPerInstance})})]}):(0,K.jsx)(ub,{})]})}function tb({region:e,showPlanInfo:t}){let n=vv.map(t=>yv(t,e.metrics[t])),r=[e.planName?`${e.planName} plan`:null,e.status===`exhausted`?`consumed — awaiting renewal`:e.status===`lapsed`?`not renewed`:e.expiresAt?`renews ${ab(e.expiresAt)}`:null].filter(Boolean).join(` · `);return(0,K.jsxs)(nb,{defaultOpen:e.status!==`lapsed`,aside:e.regionIds.length>0?e.regionIds.join(`, `):void 0,header:(0,K.jsxs)(rb,{title:e.region??`Region`,meta:r,children:[e.status===`exhausted`&&(0,K.jsx)(`span`,{className:`rounded-full bg-yellow/10 px-2 py-0.5 text-[11px] text-yellow`,children:`Cycle exhausted`}),e.status===`lapsed`&&(0,K.jsx)(`span`,{className:`rounded-full bg-muted px-2 py-0.5 text-[11px] text-muted-foreground`,children:`No active license`})]}),children:[(0,K.jsx)(`div`,{className:`grid grid-cols-1 gap-x-10 gap-y-4 sm:grid-cols-2`,children:n.map(e=>(0,K.jsx)(bv,{...e},e.label))}),t&&(0,K.jsx)(ib,{rateLimits:e.rateLimits,resourcesPerInstance:e.resourcesPerInstance})]})}function nb({header:e,aside:t,defaultOpen:n=!0,children:r}){let[i,a]=(0,G.useState)(n);return(0,K.jsxs)(`section`,{className:`overflow-hidden rounded-xl border border-border`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),"aria-expanded":i,className:`flex w-full items-center gap-3 px-4 py-3 text-left transition-colors hover:bg-accent/40`,children:[(0,K.jsx)(fr,{className:`size-4 shrink-0 text-muted-foreground transition-transform ${i?`rotate-90`:``}`}),(0,K.jsx)(`div`,{className:`min-w-0 flex-1`,children:e}),t&&(0,K.jsx)(`span`,{className:`shrink-0 self-start pt-0.5 font-mono text-[11px] text-muted-foreground/70`,children:t})]}),i&&(0,K.jsx)(`div`,{className:`border-t border-border px-4 py-4`,children:r})]})}function rb({title:e,meta:t,children:n}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:e}),n]}),t&&(0,K.jsx)(`div`,{className:`mt-0.5 text-xs text-muted-foreground`,children:t})]})}function ib({rateLimits:e,resourcesPerInstance:t}){let n=e,r=n?cb([[`Reads / minute`,n.readsPerMinute,Eh],[`Read bandwidth / minute`,n.readsPerMinuteBytes,Th],[`Writes / minute`,n.writesPerMinute,Eh],[`Write bandwidth / minute`,n.writesPerMinuteBytes,Th],[`Real-time deliveries / minute`,n.realTimeDeliveriesPerMinute,Eh],[`Real-time bandwidth / minute`,n.realTimeDeliveryBytesPerMinute,Th],[`TLS handshakes (cycle)`,n.tlsHandshakes,Eh]]):[],i=t,a=i?sb([[`Storage`,i.storageGb,e=>`${Eh(e)} GB`],[`Memory`,i.memoryMb,e=>Th(e*1e3*1e3)],[`vCPU`,i.cpuCores,e=>`${e} ${e===1?`core`:`cores`}`],[`Threads`,i.threads,e=>String(e)]]):[];return(0,K.jsxs)(K.Fragment,{children:[r.length>0&&(0,K.jsx)(db,{title:`Rate limits`,subtitle:`Throughput ceilings — not part of the cycle allotment, and not metered.`,children:(0,K.jsx)(fb,{rows:r})}),a.length>0&&(0,K.jsx)(db,{title:`Per-instance resources`,subtitle:`Provisioned capacity on each instance.`,children:(0,K.jsx)(fb,{rows:a})})]})}function ab(e){return new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(new Date(e))}function ob(e){if(e.length===0)return null;let t=e[0];if(t.rateLimits==null&&t.resourcesPerInstance==null)return null;let n=e=>JSON.stringify([e.rateLimits,e.resourcesPerInstance]),r=n(t),i=e.every(e=>e.planId===t.planId);return e.every(e=>n(e)===r)?{rateLimits:t.rateLimits,resourcesPerInstance:t.resourcesPerInstance,planId:i?t.planId:null}:null}function sb(e){return e.filter(e=>typeof e[1]==`number`&&e[1]>0).map(([e,t,n])=>[e,n(t)])}function cb(e){return e.filter(e=>e[1]!=null).map(([e,t,n])=>[e,t.unlimited?`Unlimited`:t.limitKnown&&t.limit!=null?n(t.limit):`—`])}function lb({children:e}){return(0,K.jsx)(`p`,{className:`mt-3 text-sm text-muted-foreground`,children:e})}function ub(){return(0,K.jsx)(`div`,{role:`alert`,className:`mt-5 rounded-xl border border-destructive/40 bg-destructive/10 p-4 text-sm text-destructive`,children:`Couldn't load usage data — refresh to try again.`})}function db({title:e,subtitle:t,children:n}){return(0,K.jsxs)(`div`,{className:`mt-6 first:mt-0`,children:[(0,K.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:e}),(0,K.jsx)(`p`,{className:`mt-0.5 mb-3 text-xs text-muted-foreground`,children:t}),n]})}function fb({rows:e}){return(0,K.jsx)(`dl`,{className:`grid grid-cols-1 gap-x-10 gap-y-2 sm:grid-cols-2`,children:e.map(([e,t])=>(0,K.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 border-b border-border/60 py-1.5 text-sm`,children:[(0,K.jsx)(`dt`,{className:`text-muted-foreground`,children:e}),(0,K.jsx)(`dd`,{className:`text-foreground tabular-nums`,children:t})]},e))})}I({getParentRoute:()=>fv,path:`instances`,head:()=>({meta:[{title:`Instances — Harper Fabric`}]}),component:Xy}),I({getParentRoute:()=>fv,path:`starting-up`,head:()=>({meta:[{title:`Starting Up — Harper Fabric`}]}),component:$y}),I({getParentRoute:()=>fv,path:`scaling`,head:()=>({meta:[{title:`Scaling — Harper Fabric`}]}),component:Zy}),I({getParentRoute:()=>fv,path:`domains`,head:()=>({meta:[{title:`Domains — Harper Fabric`}]}),component:by}),I({getParentRoute:()=>fv,path:`usage`,head:()=>({meta:[{title:`Usage — Harper Fabric`}]}),component:eb});function pb({location:e,params:t}){let n=u.checkForFabricConnect(t.clusterId);if(u.getConnectionById(t.clusterId).user&&!n){let t=e?.search?.redirect;throw ce({to:t?.startsWith(`/`)?t:`../`})}}function mb({location:e,params:t}){let n=u.checkForFabricConnect(t.instanceId);if(u.getConnectionById(t.instanceId).user&&!n){let t=e?.search?.redirect;throw ce({to:t?.startsWith(`/`)?t:`../`})}}I({getParentRoute:()=>fv,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:yl,beforeLoad:pb}),I({getParentRoute:()=>fv,path:`instance/$instanceId/sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:yl,beforeLoad:mb}),I({getParentRoute:()=>fv,path:`finish-setup`,head:()=>({meta:[{title:`Create Admin User — Harper Fabric`}]}),component:jy}),I({getParentRoute:()=>fv,path:`/`,head:()=>({meta:[{title:`Cluster — Harper Fabric`}]}),component:kv});function hb(e){return I({getParentRoute:()=>e,path:`apis`,head:()=>({meta:[{title:`APIs — Harper Fabric`}]})}).lazy(()=>F(()=>import(`./index.lazy-NwhvF1q1.js`).then(e=>e.route),__vite__mapDeps([25,1,26,3,2,4,5,6,7,27,12,9,16,11,13,28,29])))}function gb(e,t){return[I({getParentRoute:()=>e,path:t===`cluster`?`apps`:`/`,head:()=>({meta:[{title:`Applications — Harper Fabric`}]}),component:we(()=>F(()=>import(`./applications-D7F4Jopl.js`),__vite__mapDeps([30,1,26,3,2,4,5,6,7,27,12,9,8,10,11,13,16,31,32,20,21,14,28,29,33,22,23,24,34])),`ApplicationsEditor`)})]}async function _b({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_certificates`});return t}function vb(e){return z({queryKey:[e.entityId,`list_certificates`],queryFn:()=>_b(e)})}var yb=[{header:`Certificate Name`,accessorKey:`name`,enableSorting:!0},{header:`Issuer`,accessorKey:`details.issuer`,enableSorting:!0},_g().display({header:`Expires At`,enableSorting:!1,id:`details.valid_to`,cell:e=>e.row.original.details.valid_to?new Date(e.row.original.details.valid_to).toLocaleString():`N/A`})];function bb({className:e,...t}){return(0,K.jsx)(`textarea`,{"data-slot":`input`,className:N(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
|
|
12
|
+
`)}}];function Cg(e){return(0,G.useCallback)(async()=>{U.loading(`Refreshing...`,{id:`refreshing`});let t=Date.now();await e(),Date.now()-t<500&&await n(500),U.success(`Refreshed!`,{id:`refreshing`})},[e])}async function wg(e){let{data:t}=await M.get(`/Invoice/${e}`);return t}function Tg(e,t){return z({queryKey:[e,`invoices`],queryFn:()=>wg(e),retry:!1,enabled:!!e,refetchInterval:t?1e4:void 0})}function Eg(){let{organizationId:e}=B({strict:!1}),{data:t}=H(Cp(e)),{data:n,refetch:r,isLoading:i,isFetching:a,isRefetching:o}=H(Tg(t?.type!==`ENTERPRISE`&&t?.id,!1)),s=Cg(r);return t?.type===`ENTERPRISE`?(0,K.jsxs)(`span`,{children:[`You are part of an enterprise organization! We don’t currently show your invoices on this page. Want to explore your solution with Harper more? `,(0,K.jsx)(xl,{}),`, we would love to talk!`]}):i?(0,K.jsx)(Bo,{centered:!0}):!n||!n.length?(0,K.jsxs)(`span`,{children:[`Your invoices will be shown here once one is available! Want to explore your solution with Harper more?`,` `,(0,K.jsx)(xl,{overEmail:!0}),`, we would love to talk!`]}):(0,K.jsx)(vg,{data:n,columns:Sg,children:(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:s,accessKey:`r`,disabled:a||o,children:[(0,K.jsx)(ua,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]})})}function Dg(e){let t=I({getParentRoute:()=>e,path:`billing`,head:()=>({meta:[{title:`Billing — Harper Fabric`}]}),component:ag}),n=I({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Payment Methods — Harper Fabric`}]}),component:qm}),r=I({getParentRoute:()=>t,path:`invoices`,head:()=>({meta:[{title:`Invoices — Harper Fabric`}]}),component:Eg}),i=I({getParentRoute:()=>t,path:`confirm`,head:()=>({meta:[{title:`Confirm Payment — Harper Fabric`}]}),component:ig});return t.addChildren([n,r,i])}async function Og(e){let{data:t}=await M.get(`/OrganizationRole/${e}`);return t}function kg(e){return z({queryKey:[e,`roles`],queryFn:()=>Og(e),retry:!1,refetchInterval:al(1e4)})}var Ag=_g(),jg=[{header:`Role Name`,accessorKey:`roleName`,enableSorting:!1},Ag.display({header:`ID`,id:`id`,enableSorting:!1,cell:e=>(0,K.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,title:e.row.original.id,children:e.row.original.id})}),Ag.display({header:`Users Assigned`,enableSorting:!1,id:`userIds`,cell:e=>!e.row.original.userIds||e.row.original.userIds.length===0?`No users assigned`:e.row.original.userIds.length})];async function Mg(e){let{data:t}=await M.post(`/Role/`,e);return t}function Ng(){return R({mutationFn:Mg})}var Pg=S({name:A().nonempty({error:`Please enter a role name.`}).regex(/^[a-zA-Z_]*$/,{error:`Role must contain only letters and underscores.`}).max(30,{error:`Role name cannot be longer than 30 characters.`}),update:D(),delete:D()});S({roles:S({create:D(),delete:D(),update:D(),view:D()}),clusters:S({create:D(),delete:D(),update:D(),view:D(),resources:T(S({id:A(),delete:D(),update:D(),view:D(),instances:S({create:D(),delete:D(),update:D(),view:D()})}))})});function Fg(){let[e]=Ds(),t=ws();return e===`dark`||e===`system`&&t===`dark`?`vs-dark`:`light`}var Ig=(0,G.lazy)(async()=>(await F(()=>import(`./setup-CS50uJ4x.js`),__vite__mapDeps([18,4,1,19,20,21,22,23,24])),{default:(await F(()=>import(`./dist-Cz2Y6-6G.js`),__vite__mapDeps([19,1,4]))).default}));function Lg(e){return(0,K.jsx)(G.Suspense,{fallback:e.loading??null,children:(0,K.jsx)(Ig,{...e})})}var Rg={roles:{create:!0,view:!0,update:!0,delete:!0},clusters:{create:!0,view:!0,update:!0,delete:!0,resources:[]}};function zg({isModalOpen:e,setIsModalOpen:t}){let n=Fg(),r=ue(),{organizationId:i}=B({strict:!1}),[a,o]=(0,G.useState)(!0),[s,c]=(0,G.useState)(JSON.stringify(Rg,null,2)),{mutate:l,isPending:u}=Ng(),d=Pt({resolver:Ke(Pg),defaultValues:{name:``,update:!1,delete:!1}}),f=(0,G.useCallback)(e=>{o(e.length===0)},[o]),p=(0,G.useCallback)(async e=>{let n=Ue(s);if(!n)return;let o={...e,...n,organizationId:i};e&&a&&l(o,{onSuccess:()=>{U.success(`Organization role added successfully!`),t(!1),r.invalidateQueries({queryKey:[i,`roles`],refetchType:`active`}),d.reset()},onError:e=>{U.error(`Failed to add organization role: ${e.message}`)}})},[a,s,l,d,r,t,i]);return(0,K.jsx)(fn,{onOpenChange:t,open:e,children:(0,K.jsxs)(cn,{resizable:!0,children:[(0,K.jsx)(ln,{children:`Add New Organization Role`}),(0,K.jsx)(un,{children:`Set the new organization role permissions.`}),(0,K.jsx)(Lc,{...d,children:(0,K.jsxs)(`form`,{id:`org-add-role-form`,name:`org-add-role-form`,className:`flex flex-1 min-h-0 flex-col gap-4 my-4`,onSubmit:d.handleSubmit(p),children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,K.jsx)(Y,{control:d.control,name:`name`,render:({field:e})=>(0,K.jsxs)(X,{className:`col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Role Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,className:``,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:d.control,name:`update`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Can Update Organization`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:d.control,name:`delete`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Can Delete Organization`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Q,{})]})})]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)(Lg,{className:`w-full h-full`,theme:n,defaultLanguage:`json`,onValidate:f,onChange:e=>{e&&c(e)},options:{automaticLayout:!0},defaultValue:JSON.stringify(Rg,null,2)})}),(0,K.jsx)(on,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(P,{variant:`destructiveOutline`,type:`button`,onClick:()=>t(!1),disabled:u,children:`Cancel`}),(0,K.jsx)(P,{variant:`submit`,disabled:u||!a||!d.formState.isValid,children:`Save Changes`})]})})]})})]})})}async function Bg({roleId:e}){let{data:t}=await M.delete(`/Role/${e}`,{id:e,deleted:!0});return t}function Vg(){return R({mutationFn:({roleId:e})=>Bg({roleId:e})})}async function Hg({roleId:e,updatedRoleInfo:t}){let{data:n}=await M.put(`/Role/${e}`,t);return n}function Ug(){return R({mutationFn:({roleId:e,updatedRoleInfo:t})=>Hg({roleId:e,updatedRoleInfo:t})})}function Wg({organizationId:e,roleId:t}){return z({queryKey:[e,`roles`,t],queryFn:()=>Gg(t),refetchInterval:al(1e4),retry:ol()})}async function Gg(e){let{data:t}=await M.get(`/Role/${e}`);return t}function Kg({onRoleDeleteClick:e,setIsConfirmingRoleDeletion:t,isRoleDeletionPending:n}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(ln,{children:`Confirm Role Deletion`}),(0,K.jsx)(un,{children:`Are you sure you want to delete this role? This action cannot be undone.`}),(0,K.jsxs)(on,{children:[(0,K.jsx)(P,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,K.jsx)(P,{variant:`destructiveOutline`,onClick:e,disabled:n,children:n?`Deleting...`:`Delete Role`})]})]})}function qg({data:e,isModalOpen:t,closeModal:n}){let r=(0,G.useCallback)(()=>n(!1),[n]);return(0,K.jsx)(fn,{onOpenChange:r,open:t,children:(0,K.jsx)(cn,{resizable:!0,children:(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(Jg,{roleName:e.roleName}),children:(0,K.jsx)(Yg,{data:e,closeModal:n})})})})}function Jg({roleName:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(ln,{children:[`Organization Role "`,e,`"`]}),(0,K.jsx)(Bo,{centered:!0,text:`Loading role…`,className:`flex-1 min-h-0`})]})}function Yg({data:e,closeModal:t}){let n=ue(),{data:r}=ge(Wg({roleId:e.id,organizationId:e.organizationId})),i=wn().user?.roles?.[e.organizationId]?.id===e.id,{update:a,remove:o}=vf(e.organizationId),{mutate:s,isPending:c}=Ug(),{mutate:l,isPending:u}=Vg(),d=Fg(),[f,p]=(0,G.useState)(!1),m=Pt({resolver:Ke(Pg),defaultValues:{name:e.roleName,update:r.organization.update||!1,delete:r.organization.delete||!1}}),h=(0,G.useCallback)(()=>{l({roleId:e.id},{onSuccess:()=>{U.success(`Role deleted successfully!`),t(!0),m.reset()},onError:e=>{U.error(`Error`,{description:`Failed to delete role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}})},[e.id,l,m,t]),[g,_]=(0,G.useState)(!0),v=(0,G.useMemo)(()=>JSON.stringify({roles:{...r.organization.roles},clusters:{...r.organization.clusters}},null,2),[r]),[y,b]=(0,G.useState)(v),x=y!==v,S=(0,G.useCallback)(e=>{_(e.length===0)},[_]),C=(0,G.useCallback)(async r=>{if(!a)return;let i=Ue(y);if(!i)return;let o={...r,...i,organizationId:e.organizationId};y&&g&&s({roleId:e.id,updatedRoleInfo:o},{onSuccess:async()=>{U.success(`Role updated successfully!`),await n.invalidateQueries({queryKey:[e.organizationId,`roles`,e.id]}),t(!1),m.reset()},onError:e=>{U.error(`Error`,{description:`Failed to update role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}})},[t,e.id,e.organizationId,m,g,n,r,a,y,s]);return f?(0,K.jsx)(Kg,{onRoleDeleteClick:h,setIsConfirmingRoleDeletion:p,isRoleDeletionPending:u}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(ln,{children:[i||!a?`View`:`Edit`,` Organization Role "`,e.roleName,`"`]}),(0,K.jsx)(Lc,{...m,children:(0,K.jsxs)(`form`,{id:`org-edit-role-form`,name:`org-edit-role-form`,className:`flex flex-1 min-h-0 flex-col gap-4 my-4`,onSubmit:m.handleSubmit(C),children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,K.jsx)(Y,{control:m.control,name:`name`,render:({field:e})=>(0,K.jsxs)(X,{className:`col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Role Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,className:``,...e,disabled:!0,readOnly:!0})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`update`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Can Update Organization`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,disabled:i||!a,readOnly:i||!a,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`delete`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Can Delete Organization`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6 ml-2`,disabled:i||!a,readOnly:i||!a,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Q,{})]})})]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)(Lg,{className:`w-full h-full`,theme:d,defaultLanguage:`json`,onValidate:S,onChange:e=>{e&&b(e)},options:{readOnly:i||!a,automaticLayout:!0},defaultValue:y})}),!i&&(o||a)&&(0,K.jsx)(on,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[o&&(0,K.jsx)(P,{type:`button`,variant:`destructiveOutline`,onClick:()=>p(!0),disabled:c,children:`Delete Role`}),a&&(0,K.jsx)(P,{variant:`submit`,disabled:!g||c||!m.formState.isValid||!m.formState.isDirty&&!x,children:`Save Changes`})]})})]})})]})}function Xg(){let e=se(),t=ue(),{organizationId:n,orgRoleId:r}=B({strict:!1}),{create:i}=vf(n),{data:a,refetch:o,isFetching:s,isRefetching:c}=ge(kg(n)),l=(0,G.useMemo)(()=>a&&a?.find(e=>e.id===r),[a,r]),u=!!r&&!!l,[d,f]=(0,G.useState)(!1),p=(0,G.useCallback)(async(i,a)=>{let o=[r?`..`:``,i].filter(Boolean);await e({to:o.join(`/`)}),a&&await t.invalidateQueries({queryKey:[n,`roles`],refetchType:`active`})},[r,e,t]),m=(0,G.useCallback)(()=>{f(!0)},[f]),h=(0,G.useCallback)(e=>p(e.original.id,!1),[p]),g=(0,G.useCallback)(e=>p(void 0,e),[p]),_=Cg(o);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Xh,{children:(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(Bo,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(vg,{data:a,columns:jg,onRowClick:h,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:_,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(ua,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),i&&(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:d,children:[(0,K.jsx)(ca,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),i&&(0,K.jsx)(zg,{isModalOpen:d,setIsModalOpen:f}),u&&(0,K.jsx)(qg,{data:l,isModalOpen:u,closeModal:g},l.id)]})})]})}function Zg({className:e,...t}){return(0,K.jsx)(_t,{"data-slot":`switch`,className:N(`peer data-[state=checked]:bg-green data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-grey-500 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,e),...t,children:(0,K.jsx)(Xe,{"data-slot":`switch-thumb`,className:N(`bg-white dark:data-[state=unchecked]:bg-white dark:data-[state=checked]:bg-white pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0`)})})}async function Qg(e,t){let{data:n}=await M.patch(`/Organization/${e}/settings/oauth`,t);return n}var $g=S({domain:A().min(1,`Domain is required`),clientId:A().min(1,`Client ID is required`),clientSecret:A().min(1,`Client secret is required`),scope:A().optional()}),e_=S({domain:A().min(1,`Domain is required`),clientId:A().optional(),clientSecret:A().optional(),scope:A().optional()});function t_(){let{organizationId:e}=B({strict:!1}),{user:t}=wn(),{update:n}=gf(e),{data:r}=ge(Cp(e)),i=ue(),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(null),l=r.settings?.oauthConfigs??[],{mutate:u,isPending:d}=R({mutationFn:t=>Qg(e,t),onSuccess:()=>void i.invalidateQueries({queryKey:[e]}),onError:()=>U.error(`Failed to update OAuth settings.`)}),f=Pt({resolver:Ke($g),defaultValues:{domain:``,clientId:``,clientSecret:``,scope:`openid email profile`}}),p=e=>{u({provider:`okta`,...e},{onSuccess:()=>{U.success(`OAuth provider added.`),f.reset(),o(!1)}})},m=Pt({resolver:Ke(e_)}),h=e=>{c(e.id??null),m.reset({domain:e.domain,clientId:``,clientSecret:``,scope:e.scope??``})},g=(e,t)=>{let n={id:e.id,provider:e.provider,domain:t.domain,scope:t.scope};t.clientId&&(n.clientId=t.clientId),t.clientSecret&&(n.clientSecret=t.clientSecret),u(n,{onSuccess:()=>{U.success(`OAuth provider updated.`),c(null)}})},_=(e,t)=>{u({id:e.id,provider:e.provider,[t]:!e[t]})},v=e=>`//oauth/${e}/callback`,y=async e=>{await Kf(e)&&U.success(`Sign-in URL copied.`)},b=async e=>{await Kf(e)&&U.success(`Redirect URI copied.`)};return n?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Xh,{children:(0,K.jsxs)(`div`,{className:`max-w-2xl`,children:[(0,K.jsx)(`h2`,{className:`text-2xl text-foreground font-light mb-6`,children:`Authentication`}),(0,K.jsxs)(`section`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,K.jsx)(`h3`,{className:`text-lg text-foreground font-medium`,children:`OAuth Providers`}),!a&&(0,K.jsxs)(P,{variant:`positiveOutline`,size:`sm`,onClick:()=>o(!0),children:[(0,K.jsx)(ca,{}),`Add Provider`]})]}),l.length===0&&!a&&(0,K.jsx)(`p`,{className:`text-muted-foreground text-sm mb-4`,children:`No OAuth providers configured.`}),l.map(e=>{let n=t?.oauthConfigId===e.id;return s===e.id?(0,K.jsxs)(`div`,{className:`border rounded-lg p-4 mb-3 text-foreground`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,K.jsx)(`h4`,{className:`font-medium`,children:`Edit Provider`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>c(null),className:`text-muted-foreground hover:text-foreground`,children:(0,K.jsx)(gn,{className:`size-4`})})]}),(0,K.jsx)(Lc,{...m,children:(0,K.jsxs)(`form`,{onSubmit:m.handleSubmit(t=>g(e,t)),className:`space-y-4`,children:[(0,K.jsx)(Y,{control:m.control,name:`domain`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Domain`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`company.okta.com`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`clientId`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Client ID`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`Leave blank to keep existing`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`clientSecret`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Client Secret`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,placeholder:`Leave blank to keep existing`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:m.control,name:`scope`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Scope`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`openid email profile`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,K.jsx)(P,{type:`submit`,variant:`positive`,disabled:d,children:d?`Saving...`:`Save`}),(0,K.jsx)(P,{type:`button`,variant:`outline`,onClick:()=>c(null),children:`Cancel`})]})]})})]},e.id):(0,K.jsx)(`div`,{className:`border rounded-lg p-4 mb-3 text-foreground`,children:(0,K.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between sm:gap-4`,children:[(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,K.jsx)(`span`,{className:`font-medium`,children:e.domain}),(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground uppercase bg-muted px-2 py-0.5 rounded`,children:e.provider}),e.enabled===!1&&(0,K.jsx)(`span`,{className:`text-xs text-destructive bg-destructive/10 px-2 py-0.5 rounded`,children:`Disabled`})]}),(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground mb-2`,children:[`Client ID: `,(0,K.jsx)(`span`,{className:`text-foreground font-mono`,children:`****`})]}),e.id&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`mt-3 rounded-md bg-muted px-3 py-2`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1`,children:`Okta redirect URI`}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-1.5`,children:[`Add to `,(0,K.jsx)(`span`,{className:`font-medium text-foreground`,children:`Login redirect URIs`}),` `,`in your Okta app settings.`]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`span`,{className:`text-sm text-foreground font-mono truncate`,children:v(e.id)}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>void b(v(e.id)),className:`hover:text-foreground shrink-0 text-muted-foreground`,title:`Copy redirect URI`,children:(0,K.jsx)(Ir,{className:`size-3.5`})})]})]}),(0,K.jsxs)(`div`,{className:`mt-2 rounded-md bg-muted px-3 py-2`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`User login link`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(`a`,{href:cu(e.id),target:`_blank`,rel:`noreferrer`,className:`text-sm text-foreground truncate hover:underline`,children:cu(e.id)}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0 text-muted-foreground`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>void y(cu(e.id)),className:`hover:text-foreground`,title:`Copy login link`,children:(0,K.jsx)(Ir,{className:`size-3.5`})}),(0,K.jsx)(`a`,{href:cu(e.id),target:`_blank`,rel:`noreferrer`,className:`hover:text-foreground`,title:`Open login link`,children:(0,K.jsx)(Wr,{className:`size-3.5`})})]})]})]})]})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-3 sm:shrink-0`,children:[(0,K.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-foreground cursor-pointer`,children:[(0,K.jsx)(Zg,{checked:e.enabled!==!1,onCheckedChange:()=>_(e,`enabled`),disabled:d}),`Enabled`]}),(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-2 text-sm text-foreground ${n?`cursor-pointer`:`cursor-not-allowed opacity-50`}`,children:[(0,K.jsx)(Zg,{checked:!!e.required,onCheckedChange:()=>_(e,`required`),disabled:d||!n}),`Required`]})}),!n&&(0,K.jsxs)(Rs,{children:[`Sign in via `,e.provider,` first to enable Required`]})]}),(0,K.jsx)(P,{variant:`outline`,size:`sm`,onClick:()=>h(e),disabled:d,children:(0,K.jsx)(ia,{className:`size-4`})})]})]})},e.id)}),a&&(0,K.jsxs)(`div`,{className:`border rounded-lg p-4 text-foreground`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,K.jsx)(`h4`,{className:`font-medium`,children:`Add Okta Provider`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>{o(!1),f.reset()},className:`text-muted-foreground hover:text-foreground`,children:(0,K.jsx)(gn,{className:`size-4`})})]}),(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-4`,children:[`After saving, copy the `,(0,K.jsx)(`span`,{className:`font-medium text-foreground`,children:`Okta redirect URI`}),` `,`from the provider card and add it to your Okta app's`,` `,(0,K.jsx)(`span`,{className:`font-medium text-foreground`,children:`Login redirect URIs`}),`.`]}),(0,K.jsx)(Lc,{...f,children:(0,K.jsxs)(`form`,{onSubmit:f.handleSubmit(p),className:`space-y-4`,children:[(0,K.jsx)(Y,{control:f.control,name:`domain`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Domain`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`company.okta.com`,autoFocus:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:f.control,name:`clientId`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Client ID`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`Okta Client ID`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:f.control,name:`clientSecret`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Client Secret`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,placeholder:`Okta Client Secret`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:f.control,name:`scope`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Scope`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{placeholder:`openid email profile`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[(0,K.jsx)(P,{type:`submit`,variant:`positive`,disabled:d,children:d?`Adding...`:`Add Provider`}),(0,K.jsx)(P,{type:`button`,variant:`outline`,onClick:()=>{o(!1),f.reset()},children:`Cancel`})]})]})})]})]})]})})]}):(0,K.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))] text-foreground`,children:`You don't have permission to manage settings for this organization.`})}S({email:ul.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:A().nonempty({error:`Please select a role.`})});async function n_(e){let{data:t}=await M.post(`/UserInvite/`,e);return t}function r_(){return R({mutationFn:e=>n_(e)})}function i_({user:e}){let{update:t}=vf(),{mutate:n,isPending:r}=r_(),i=e.roles?.[0]?.id,a=(0,G.useCallback)(t=>{if(t.stopPropagation(),!e.email||!i){U.error(`Cannot resend invite: this user has no email or role.`);return}n({email:e.email,roleId:i},{onSuccess:()=>U.success(`Invitation resent to ${e.email}.`)})},[n,i,e.email]);return t?(0,K.jsxs)(P,{variant:`ghost`,size:`sm`,className:`h-auto px-2 py-0 align-middle text-sm`,onClick:a,disabled:r||!i,children:[(0,K.jsx)(Hi,{}),` Resend invite`]}):null}var a_=_g(),o_=[{header:`User Id`,accessorKey:`id`,enableSorting:!1},{header:`Email`,accessorKey:`email`,enableSorting:!1},{header:`First Name`,accessorKey:`firstname`,enableSorting:!1},{header:`Last Name`,accessorKey:`lastname`,enableSorting:!1},a_.display({header:`Roles`,enableSorting:!1,id:`roles`,cell:e=>e.row.original.roles?.map(e=>e.roleName)?.sort()?.join(`, `)}),{header:`Status`,accessorKey:`status`,enableSorting:!1},{header:`Verified`,accessorKey:`isVerified`,enableSorting:!1},a_.display({header:``,enableSorting:!1,id:`actions`,cell:e=>e.row.original.status===`PENDING`?(0,K.jsx)(i_,{user:e.row.original}):null})];function s_({name:e,id:t}){return(0,K.jsxs)(`span`,{className:`flex items-baseline gap-2 truncate`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:e}),(0,K.jsx)(`span`,{className:`text-muted-foreground font-mono text-xs`,children:t})]})}var c_=S({email:ul.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:A().nonempty({error:`Please select a role.`})});async function l_(e){let{data:t}=await M.post(`/OrganizationRole/`,e);return t}function u_(){return R({mutationFn:e=>l_(e)})}function d_({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let{organizationId:r}=B({strict:!1}),{data:i,isLoading:a}=H({...kg(r),throwOnError:!0}),[o,s]=(0,G.useState)(!1),c=Pt({resolver:Ke(c_),defaultValues:{email:``,roleId:``}}),{mutate:l,isPending:u}=u_(),{mutate:d,isPending:f}=r_(),p=(0,G.useCallback)(async e=>{e&&(o?d:l)(e,{onSuccess:()=>{let r=e.roleId;c.reset(),c.setValue(`roleId`,r),t(),U.success(`User invited successfully!`),n(!1),s(!1)},onError:e=>{e?.status===404&&s(!0)}})},[l,c,d,t,n,o]);return(0,K.jsx)(fn,{onOpenChange:()=>{n(!1),s(!1),c.reset()},open:e,children:(0,K.jsx)(cn,{"aria-describedby":void 0,children:(0,K.jsx)(Lc,{...c,children:(0,K.jsxs)(`form`,{id:`org-add-user-form`,name:`org-add-user-form`,onSubmit:c.handleSubmit(p),className:`grid gap-4 my-4`,children:[(0,K.jsx)(rn,{children:(0,K.jsx)(ln,{children:o?`Invite User`:`Add User`})}),(0,K.jsx)(Y,{control:c.control,name:`email`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Email`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`email`,enterKeyHint:`next`,autoComplete:`email`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:c.control,name:`roleId`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Roles`}),a?(0,K.jsx)(eh,{}):(0,K.jsx)(J,{children:(0,K.jsxs)(th,{...e,onValueChange:t=>e.onChange(t),children:[(0,K.jsx)(ih,{className:`w-full`,children:(0,K.jsx)(rh,{placeholder:`Choose Role`})}),(0,K.jsx)(ah,{children:(0,K.jsxs)(nh,{children:[(0,K.jsx)(oh,{children:`Role`}),i?.map(e=>(0,K.jsx)(sh,{value:e.id,children:(0,K.jsx)(s_,{name:e.roleName,id:e.id})},e.id))]})})]})}),(0,K.jsx)(Q,{})]})}),o&&(0,K.jsxs)(un,{className:`p-3 my-5 text-white rounded-md bg-amber-600 flex`,children:[(0,K.jsx)(Bi,{className:`inline-block size-12 pr-2`}),(0,K.jsx)(`span`,{children:`This person doesn’t have a Fabric account. Do you want to invite them?`})]}),(0,K.jsx)(on,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(P,{type:`submit`,variant:`submit`,disabled:u||f,children:[(0,K.jsx)(va,{}),` `,o?`Invite User`:`Add User`]})})})]})})})})}async function f_({roleId:e,userId:t}){let{data:n}=await M.delete(`/OrganizationRole/role/${e}/user/${t}`);return n}function p_(){return R({mutationFn:({roleId:e,userId:t})=>f_({roleId:e,userId:t})})}function m_(e){let[t,n]=(0,G.useState)(e||!1);return[t,(0,G.useCallback)(e=>{n(typeof e==`boolean`?e:e.target.checked)},[])]}function h_({data:e,readOnly:t,canRemove:n,orgRole:r,selectedRoles:i,setChangesMade:a}){let{mutate:o,isPending:s}=u_(),{mutate:c,isPending:l}=p_(),u=!!i[r.id],[d,f]=(0,G.useState)(u),[p,m]=m_(u);return(0,G.useEffect)(()=>{p!==d&&(p?o({email:e.email,roleId:r.id},{onSuccess:()=>{f(p),a(!0),U.success(`Role added successfully`)}}):c({userId:e.id,roleId:r.id},{onSuccess:()=>{f(p),a(!0),U.success(`Role removed successfully`)}}))},[o,e.email,e.id,p,r.id,c,a,d]),(0,K.jsxs)(Vc,{className:`flex`,children:[(0,K.jsx)($,{type:`checkbox`,className:`w-6`,disabled:t||s||l||!n&&p,checked:p,onChange:m}),(0,K.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:r.roleName})]},r.id)}function g_({isSelf:e,isPending:t,onConfirm:n}){let[r,i]=(0,G.useState)(!1),a=e?{idle:`Leave organization`,confirm:`Confirm leave`,busy:`Leaving…`,warning:`You’ll lose access to this organization and everything in it. You won’t be able to return unless another member invites you back.`}:{idle:`Remove from organization`,confirm:`Confirm removal`,busy:`Removing…`,warning:`This revokes their access to this organization and everything in it. Their Harper account isn’t deleted, and they can be added back later.`},o=e?Ii:to;return r?(0,K.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,K.jsxs)(`p`,{role:`alert`,className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3`,children:[(0,K.jsx)($a,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,K.jsx)(`span`,{children:a.warning})]}),(0,K.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,K.jsx)(P,{type:`button`,variant:`ghostOutline`,disabled:t,onClick:()=>i(!1),children:`Cancel`}),(0,K.jsxs)(P,{type:`button`,variant:`destructive`,disabled:t,onClick:n,children:[(0,K.jsx)(o,{}),` `,t?a.busy:a.confirm]})]})]}):(0,K.jsx)(`div`,{className:`flex justify-start`,children:(0,K.jsxs)(P,{type:`button`,variant:`destructiveOutline`,disabled:t,onClick:()=>i(!0),children:[(0,K.jsx)(o,{}),` `,a.idle]})})}function __(e){return e?.trim().toLowerCase()===`admin`}function v_({canDelete:e,isSelf:t,orgUserCount:n,adminCount:r,isAdmin:i,roleCount:a}){let o=e?t&&n<=1?`sole-member`:t&&i&&r<=1?`last-admin`:null:null,s=e&&o===null;return{canRemoveRoles:s,showRemovalAction:s&&a>0,blockedReason:o}}function y_({closeModal:e,data:t,isModalOpen:n,onUserUpdated:r,orgUserCount:i,orgAdminCount:a}){let{organizationId:o}=B({strict:!1}),s=wn(),{update:c,remove:l}=vf(o),u=s.user?.email===t.email,[d,f]=(0,G.useState)(!1),{canRemoveRoles:p,showRemovalAction:m,blockedReason:h}=v_({canDelete:l,isSelf:u,orgUserCount:i,adminCount:a,isAdmin:(t.roles??[]).some(e=>__(e.roleName)),roleCount:t.roles?.length??0}),{mutateAsync:g}=p_(),[_,v]=(0,G.useState)(!1),y=(0,G.useCallback)(async()=>{let e=t.roles??[];v(!0),(await Promise.allSettled(e.map(e=>g({userId:t.id,roleId:e.id})))).some(e=>e.status===`rejected`&&e.reason?.response?.status!==404)?U.error(u?`Something went wrong leaving the organization. Please try again.`:`Couldn’t remove ${t.email} from the organization. Please try again.`):U.success(u?`You’ve left the organization.`:`${t.email} was removed from the organization.`),v(!1),r()},[t.roles,t.id,t.email,u,g,r]);return(0,K.jsx)(fn,{onOpenChange:d?r:e,open:n,children:(0,K.jsxs)(cn,{resizable:!0,children:[(0,K.jsx)(rn,{children:(0,K.jsxs)(ln,{children:[c?`Edit `:`View `,` `,t.email,` `,u?`(yourself)`:``]})}),c&&(0,K.jsxs)(un,{children:[`Use the checkboxes to change which roles `,u?`you have`:`this user has`,`.`,m&&(u?` To leave the organization entirely, use the button below.`:` To remove this user from the organization entirely, use the button below.`)]}),(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(Bo,{centered:!0,text:`Loading roles…`,className:`flex-1 min-h-0`}),children:(0,K.jsx)(b_,{data:t,organizationId:o,update:c,canRemove:p,setChangesMade:f})}),t.status===`PENDING`&&(0,K.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,K.jsx)(i_,{user:t})}),m&&(0,K.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,K.jsx)(g_,{isSelf:u,isPending:_,onConfirm:y})}),h&&(0,K.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3`,children:[(0,K.jsx)($a,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,K.jsx)(`span`,{children:h===`sole-member`?`You’re the only member of this organization, so you can’t remove your roles or leave — it would be left with no one to manage it. If you no longer need this organization, terminate its clusters, then delete the organization from the ⋯ menu on the Organizations page.`:`You’re the only admin of this organization, so you can’t remove your roles or leave — it would be left with no one who can manage its members, roles, or clusters. Give another member the admin role first, then you can step back.`})]})]})})}function b_({data:e,organizationId:t,update:n,canRemove:r,setChangesMade:i}){let{data:a}=ge(kg(t)),o=(0,G.useMemo)(()=>e.roles?pp(e.roles,`id`):{},[e]);return(0,K.jsx)(`div`,{className:`flex flex-1 min-h-0 flex-col gap-2 overflow-y-auto`,children:a.map(t=>(0,K.jsx)(h_,{readOnly:!n,canRemove:r,data:e,orgRole:t,selectedRoles:o,setChangesMade:i},t.id))})}function x_(e,t){return e.email>t.email?1:-1}function S_(e){return(e.users??[]).filter(e=>e!=null)}function C_(e){let t={};for(let n of e)for(let e of S_(n))t[e.id]||(t[e.id]={...e,roles:[]}),t[e.id].roles.push(n);return Object.values(t).sort(x_)}function w_(e){let t=new Set;for(let n of e)if(__(n.roleName))for(let e of S_(n))t.add(e.id);return t.size}function T_(){let e=se(),{organizationId:t,orgUserId:n}=B({strict:!1}),{update:r}=vf(t),{data:i,refetch:a,isFetching:o,isRefetching:s}=ge(kg(t)),c=(0,G.useMemo)(()=>C_(i),[i]),l=(0,G.useMemo)(()=>w_(i),[i]),u=(0,G.useMemo)(()=>c?.find(e=>e.id===n),[c,n]),d=(0,G.useCallback)(t=>{let r=[n?`..`:``,t].filter(Boolean);e({to:r.join(`/`)})},[n,e]),f=!!n&&!!u,[p,m]=(0,G.useState)(!1),[h]=(0,G.useState)({attribute:`email`,descending:!1}),g=(0,G.useMemo)(()=>[{desc:h.descending,id:h.attribute}],[h]),_=(0,G.useCallback)(()=>{m(!0)},[m]),v=(0,G.useCallback)(()=>{a(),m(!1)},[a,m]),y=(0,G.useCallback)(e=>{d(e.original.id)},[d]),b=(0,G.useCallback)(()=>{d(void 0)},[d]),x=(0,G.useCallback)(()=>{a(),d(void 0)},[d,a]),S=Cg(a);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Xh,{children:(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(Bo,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(vg,{data:c,isFetching:o||s,columns:o_,onRowClick:y,sortingState:g,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,K.jsx)(ua,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:_,accessKey:`a`,disabled:p,children:[(0,K.jsx)(ca,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),r&&(0,K.jsx)(d_,{isModalOpen:p,onChangesSaved:v,setIsModalOpen:m}),f&&(0,K.jsx)(y_,{closeModal:b,data:u,isModalOpen:f,onUserUpdated:x,orgUserCount:c.length,orgAdminCount:l})]})})]})}function E_({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`skeleton`,className:N(`bg-primary/10 animate-pulse rounded-md`,e),...t})}function D_({organizationId:e,organizationName:t,providers:n}){return(0,K.jsxs)(On,{className:`relative h-full justify-between opacity-90`,children:[(0,K.jsxs)(kn,{children:[(0,K.jsx)(jn,{className:`truncate`,children:e}),(0,K.jsx)(An,{children:(0,K.jsx)(`h2`,{children:t})})]}),(0,K.jsxs)(Mn,{className:`flex flex-col gap-2`,children:[(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground flex items-center gap-1.5 mb-1`,children:[(0,K.jsx)(vi,{className:`size-3 shrink-0`}),`Sign in with an OAuth provider to access this organization.`]}),n.map(e=>(0,K.jsx)(`a`,{href:cu(e.oauthConfigId),children:(0,K.jsxs)(P,{variant:`outline`,className:`w-full`,children:[`Sign in with `,e.name]})},e.oauthConfigId))]})]})}var O_=S({couponId:A().nonempty({message:`Please enter a coupon ID.`}).trim()});async function k_({organizationId:e,couponId:t}){let{data:n}=await M.post(`/Coupon`,{organizationId:e,couponId:t},{validateStatus:e=>e>=200&&e<400||e===400||e===409});return n}function A_(){return R({mutationFn:k_})}function j_({organizationId:e,organizationName:t,isOpen:n,onClose:r}){let{mutate:i,isPending:a}=A_(),o=Pt({resolver:Ke(O_),defaultValues:{couponId:``}}),{handleSubmit:s,control:c,reset:l}=o;(0,G.useEffect)(()=>{n&&l({couponId:``})},[n,l]);let u=(0,G.useCallback)(n=>{i({organizationId:e,couponId:n.couponId},{onSuccess:i=>{i?U.error(`Error`,{description:i||`Failed to add coupon.`}):(U.success(`Success`,{description:`Coupon "${n.couponId}" added to ${t||e}.`}),r())}})},[i,e,t,r]);return(0,K.jsx)(fn,{open:n,onOpenChange:e=>!e&&r(),children:(0,K.jsxs)(cn,{children:[(0,K.jsxs)(rn,{children:[(0,K.jsx)(ln,{children:`Add Coupon`}),(0,K.jsxs)(un,{children:[`Add a coupon code to`,` `,t||e,`. This coupon will be applied to the next billing cycle.`,(0,K.jsx)(`br`,{}),`Coupons can be created in our`,` `,(0,K.jsx)(`a`,{href:`https://dashboard.stripe.com/`,target:`_blank`,rel:`noreferrer`,className:`text-purple hover:underline`,children:`Stripe Dashboard`}),`.`]})]}),(0,K.jsx)(Lc,{...o,children:(0,K.jsxs)(`form`,{onSubmit:s(u),children:[(0,K.jsx)(`div`,{className:`grid gap-4 py-4`,children:(0,K.jsx)(Y,{control:c,name:`couponId`,render:({field:e})=>(0,K.jsxs)(X,{className:`grid items-center gap-4`,children:[(0,K.jsx)(Z,{children:`Coupon ID`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,placeholder:`e.g. 100OFF`,disabled:a})}),(0,K.jsx)(Q,{})]})})}),(0,K.jsxs)(on,{children:[(0,K.jsx)(P,{type:`button`,variant:`ghost`,onClick:r,disabled:a,children:`Cancel`}),(0,K.jsx)(P,{type:`submit`,disabled:a,children:a?`Adding...`:`Add Coupon`})]})]})})]})})}function M_({organizationRole:e,onDeleteOrgModal:t}){let{organizationId:n,organizationName:r,roleName:i}=e,{remove:a,update:o}=gf(n),s=o,{view:c}=vf(n),l=En(`billing:write`),[u,d]=(0,G.useState)(!1),f=(0,G.useCallback)(()=>{t(e)},[t,e]),p=[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`sep-top`},{key:`clusters`,to:`${n}`,icon:(0,K.jsx)(wa,{className:`size-4 mr-2 text-blue-500`}),label:`Clusters`},c&&{key:`roles`,to:`${n}/roles`,icon:(0,K.jsx)(Oa,{className:`size-4 mr-2 text-purple`}),label:`Roles`},c&&{key:`users`,to:`${n}/users`,icon:(0,K.jsx)(so,{className:`size-4 mr-2 text-orange-500`}),label:`Users`},s&&{key:`billing`,to:`${n}/billing`,icon:(0,K.jsx)(Rr,{className:`size-4 mr-2 text-green-500`}),label:`Billing`},o&&{key:`settings`,to:`${n}/settings`,icon:(0,K.jsx)(vi,{className:`size-4 mr-2 text-yellow-500`}),label:`Settings`},l&&{key:`add-coupon`,onClick:()=>d(!0),icon:(0,K.jsx)(Ya,{className:`size-4 mr-2 text-pink-500`}),label:`Add Coupon`},a&&{type:`separator`,key:`sep-bottom`},a&&{key:`delete`,onClick:f,className:`focus:bg-red/70 focus:text-white`,icon:(0,K.jsx)(Za,{className:`size-4 mr-2 text-red-500`}),label:`Delete`}].filter(Js),m=a||l;return(0,K.jsx)(ed,{items:m?p:[],children:(0,K.jsxs)(On,{className:`relative h-full justify-between transition-[transform,box-shadow] duration-200 hover:scale-[1.02] hover:shadow-lg hover:ring-2 hover:ring-primary/60 dark:hover:ring-violet-400/70`,children:[(0,K.jsx)(V,{to:n,"aria-label":`View ${r??n}`,className:`absolute inset-0 rounded-[inherit] focus-visible:ring-2 focus-visible:ring-purple-200 focus-visible:outline-none`}),(0,K.jsxs)(kn,{children:[(0,K.jsxs)(jn,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:n}),m&&(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{"aria-label":`Options`,onClick:e=>e.stopPropagation(),className:`relative z-10 -m-2 p-2 rounded-md hover:bg-accent/60 hover:text-foreground`,children:(0,K.jsx)(Hr,{})}),(0,K.jsx)(So,{children:$u(p,`dropdown`)})]})]}),(0,K.jsx)(An,{children:(0,K.jsx)(`h2`,{children:r})})]}),(0,K.jsxs)(Mn,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(Wo,{className:`min-w-0 shrink`,title:Pc(i),children:(0,K.jsx)(`span`,{className:`truncate`,children:Pc(i)})}),(0,K.jsxs)(`span`,{className:`text-sm shrink-0 py-2 whitespace-nowrap ml-auto`,children:[`View `,(0,K.jsx)(Hn,{className:`inline-block`})]})]}),(0,K.jsx)(j_,{organizationId:n,organizationName:r,isOpen:u,onClose:()=>d(!1)})]})})}async function N_(e){let{data:t}=await M.delete(`/Organization/${e}`);return t}function P_(){return R({mutationFn:e=>N_(e)})}async function F_(e){let{data:t}=await M.post(`/Organization/`,{...e});return t}function I_(){return R({mutationFn:e=>F_(e)})}var L_=A().max(62,{error:`Must be at most 62 characters long.`}).regex(/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/,{error:`Please only use lowercase letters, digits and dashes (-) in the subdomain. Must not start or end with a dash.`}),R_=S({name:A().max(255,{error:`Name cannot be longer than 255 characters.`}),subdomain:ee([x(``),w(),L_]).optional()});function z_(){let{user:e}=wn(),t=se(),n=Pt({resolver:Ke(R_),defaultValues:{name:``,subdomain:``}}),{setFocus:r,watch:i}=n;(0,G.useEffect)(()=>{r(`name`)},[r]);let a=`${e?.firstname} ${e?.lastname} Org`,o=i(`name`)||a,s=i(`subdomain`),c=(0,G.useMemo)(()=>{let e=Tp(Dp(o),L_.maxLength);return{suggestedSubdomain:e,fullHostName:`future-cluster-names.${s||e}.harperfabric.com`}},[o,s]),{mutate:l,isPending:d}=I_(),p=ue(),h=(0,G.useCallback)(async e=>{l({name:e.name||a,subdomain:e.subdomain||c.suggestedSubdomain},{onSuccess:e=>{p.invalidateQueries({queryKey:f,refetchType:`active`}),u.reloadUser(m),t({to:`/${e.id}`})}})},[c.suggestedSubdomain,p,l,a,t]);return(0,K.jsx)(K.Fragment,{children:(0,K.jsx)(Lc,{...n,children:(0,K.jsxs)(`form`,{id:`org-add-form`,name:`org-add-form`,onSubmit:n.handleSubmit(h),className:`grid gap-6 text-foreground max-w-xl`,children:[(0,K.jsx)(Y,{control:n.control,name:`name`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,maxLength:R_.shape.name.maxLength,autoCapitalize:`words`,placeholder:a,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:n.control,name:`subdomain`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Subdomain`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,maxLength:L_.maxLength,autoCapitalize:`none`,placeholder:c.suggestedSubdomain,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Full Host Name`}),(0,K.jsx)(J,{children:(0,K.jsx)(`span`,{children:c.fullHostName})}),(0,K.jsx)(Q,{})]}),(0,K.jsx)(on,{children:(0,K.jsxs)(P,{type:`submit`,variant:`submit`,disabled:d,children:[`Create New Organization `,(0,K.jsx)(Hn,{})]})})]})})})}function B_(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,K.jsx)(z_,{})})]})}var V_={org:`organization`,clu:`cluster`,ins:`instance`},H_=/^(org|clu|ins)-[a-z0-9]+$/;function U_(e){if(typeof e!=`string`)return null;let t=e.trim(),n=H_.exec(t);return n?{kind:V_[n[1]],id:t}:null}function W_(e,t){let n=e*12,r=G_(t);return`/Admin/Organization/?${[...r?[`search=${encodeURIComponent(r)}`]:[],`status=ne=DELETED`,...r?[]:[`sort(name)`],`limit(${n},${n+12+1})`].join(`&`)}`}function G_(e){return typeof e==`string`?e.trim():``}async function K_(e,t){let{data:n}=await M.get(W_(e,t));return{organizations:n.slice(0,12),hasNextPage:n.length>12}}var q_={organizations:[],hasNextPage:!1};function J_(e){return e instanceof _&&(e.response?.status===404||e.status===404)}async function Y_(e){try{let{data:t}=await M.get(`/Admin/Organization/${e}`);return t?{organizations:[t],hasNextPage:!1}:q_}catch(e){if(J_(e))return q_;throw e}}async function X_(e){try{let{data:t}=await M.get(`/Cluster/${e}`),n=t?.organizationId;return n?await Y_(n):q_}catch(e){if(J_(e))return q_;throw e}}function Z_(e,t){let n=G_(t),r=U_(n);return z({queryKey:[`admin-all-organizations`,n,e],queryFn:()=>r?.kind===`organization`?Y_(r.id):r?.kind===`cluster`?X_(r.id):K_(e,n),placeholderData:de,retry:!1})}function Q_(e,t=300,n){let[r,i]=(0,G.useState)(e),a=n?n(e):e;return(0,G.useEffect)(()=>{let n=setTimeout(()=>i(e),t);return()=>clearTimeout(n)},[a,t]),r}function $_(e,t){if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i of n)if(!r.includes(i)||e[i]!==t[i])return!1;return!0}function ev(e,t){let[n,r]=(0,G.useState)(t),[i,a]=(0,G.useState)(e);return(0,G.useEffect)(()=>{$_(n,t)||(r(t),a(e))},[n,t,e]),$_(n,t)?[i,a]:[e,a]}var tv={};function nv(e,t,n){let r=(0,G.useCallback)((e,n)=>t(e,n),[n]);(0,G.useEffect)(()=>(tv[e]||(tv[e]=[]),tv[e].push(r),function(){let t=tv[e].indexOf(r);t>=0&&tv[e].splice(t,1)}),[e,t,r])}function rv(e,t,n){let r=tv[e];if(r)for(let e of r)e(t,n)}function iv(e,t,n){return r=>rv(e,t,n??r)}function av(e,t,n){return(0,G.useCallback)(r=>rv(e,t,n??r),[e,t,n])}function ov(e,t){let n=ev(We(e,t),[e]),[r,i]=n;return(0,G.useEffect)(()=>{Ge(e,r),rv(`Session:${e}`,r)},[e,r]),nv(`Session:${e}`,function(e){r!==e&&i(e)},[r,e,t]),(0,G.useEffect)(function(){let n=n=>{n.key===e&&i(We(e,t))};return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}},[e,i,t]),n}function sv(){let e=ue(),{data:t}=ge(s()),{mutate:n,isPending:r}=P_(),[i,a]=(0,G.useState)(!1),[o,c]=(0,G.useState)(null),[l,u]=(0,G.useState)(``),d=(0,G.useCallback)(()=>u(``),[]),f=En(`org:read`),[p,m]=ov(`ShowAllOrganizations`,!1),[h,g]=(0,G.useState)(0),_=f&&p,v=(0,G.useCallback)(e=>{m(e),g(0)},[m]),y=Q_(l,300),b=(0,G.useMemo)(()=>{if(!f)return null;let e=U_(y);return e?.kind===`organization`||e?.kind===`cluster`?e:null},[f,y]),x=_||!!b,{data:S,isPending:C}=H({...Z_(h,y),enabled:x}),{organizationRoles:w,oauthLockedOrgs:T}=(0,G.useMemo)(()=>{let e=t?.roles||{},n=[],r=[];for(let[t,i]of Object.entries(e))`oauthProviders`in i&&!f?r.push({organizationId:t,organizationName:i.organizationName,providers:i.oauthProviders}):n.push({organizationId:t,organizationName:i.organizationName,roleName:i.role??`fabric staff`});return{organizationRoles:n.filter(eg([`organizationId`,`organizationName`],l)).sort((e,t)=>(e.organizationName||``)>(t.organizationName||``)?1:-1),oauthLockedOrgs:r}},[l,t?.roles,f]),E=(0,G.useMemo)(()=>{let e=t?.roles||{};return(S?.organizations||[]).map(t=>({organizationId:t.id,organizationName:t.name,roleName:e[t.id]?.role||`fabric staff`}))},[S?.organizations,t?.roles]),D=x?E:w,O=(0,G.useCallback)(e=>{u(e.currentTarget.value||``),g(0)},[]),k=(0,G.useCallback)(t=>{t?.organizationId&&n(t.organizationId,{onSuccess:()=>{U.success(`Success`,{description:`Organization successfully deleted.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),e.invalidateQueries({queryKey:[]}),a(!1)},onError:()=>a(!1)})},[n,e,a]),A=(0,G.useCallback)(e=>{c(e),a(!0)},[]),{createCluster:j}=me({strict:!1});return!_&&w.length===1&&!l.length&&j?(0,K.jsx)(L,{to:`/${w[0].organizationId}/new-cluster`,replace:!0}):!_&&!w.length&&!T.length&&!l.length?(0,K.jsx)(B_,{}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{children:(0,K.jsxs)(`div`,{className:`flex w-full items-center justify-end gap-2`,children:[f&&(0,K.jsxs)(`label`,{className:`flex shrink-0 cursor-pointer items-center gap-2 text-xs`,children:[(0,K.jsx)(Zg,{checked:p,onCheckedChange:v,"aria-label":`Show all organizations`}),(0,K.jsx)(`span`,{className:`hidden sm:inline-block`,children:`All Orgs`})]}),(0,K.jsx)($,{placeholder:`Filter by name`,className:`inline-block w-full text-xs`,value:l,onChange:O}),(0,K.jsx)(V,{to:`/new-org`,children:(0,K.jsxs)(P,{variant:`positive`,accessKey:`n`,children:[(0,K.jsx)(ca,{}),(0,K.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,K.jsx)(`u`,{children:`N`}),`ew `,(0,K.jsx)(`span`,{className:`hidden md:inline-block`,children:`Organization`})]})]})})]})}),(0,K.jsxs)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12`,children:[!x&&T.map(e=>(0,K.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,K.jsx)(D_,{organizationId:e.organizationId,organizationName:e.organizationName,providers:e.providers})},e.organizationId)),x&&C?Array.from({length:12},(e,t)=>(0,K.jsx)(E_,{className:`col-span-1 h-40 md:col-span-4 lg:col-span-3 2xl:col-span-2`},t)):D.map(e=>(0,K.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,K.jsx)(M_,{organizationRole:e,onDeleteOrgModal:A})},e.organizationId)),!D.length&&!(x&&C)&&(x||!T.length)&&(0,K.jsxs)(`div`,{className:`col-span-1 md:col-span-12 text-center`,children:[(0,K.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,K.jsx)(P,{variant:`outline`,onClick:d,children:`Clear Filters`})]})]}),x&&(h>0||S?.hasNextPage)&&(0,K.jsxs)(`div`,{className:`flex items-center justify-center gap-4 py-6`,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:h===0,onClick:()=>g(e=>e-1),children:[(0,K.jsx)(Bn,{}),`Previous`]}),(0,K.jsxs)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:[`Page `,h+1]}),(0,K.jsxs)(P,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:!S?.hasNextPage,onClick:()=>g(e=>e+1),children:[`Next`,(0,K.jsx)(Hn,{})]})]})]}),o&&(0,K.jsx)(Wu,{typeOfThingBeingDeleted:`organization`,nameOfThingBeingDeleted:o.organizationName,isModalOpen:i,setIsModalOpen:()=>a(!1),deletionConfirmed:()=>k(o),deletionPending:r})]})}var cv=I({getParentRoute:()=>hc,id:`_orgsLayout`});I({getParentRoute:()=>cv,path:`/`,head:()=>({meta:[{title:`Organizations — Harper Fabric`}]}),component:sv}),I({getParentRoute:()=>cv,path:`/new-org`,head:()=>({meta:[{title:`New Organization — Harper Fabric`}]}),component:B_});var lv=I({getParentRoute:()=>cv,path:`$organizationId`,beforeLoad:async e=>{let{organizationId:t}=e.params;if(!xp(t))throw ce({to:`/`});return{organization:await e.context.queryClient.ensureQueryData(Cp(t))}}});I({getParentRoute:()=>lv,path:`/roles`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:Xg}),I({getParentRoute:()=>lv,path:`/roles/$orgRoleId`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:Xg}),I({getParentRoute:()=>lv,path:`/users`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:T_}),I({getParentRoute:()=>lv,path:`/users/$orgUserId`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:T_}),I({getParentRoute:()=>lv,path:`/settings`,component:t_}),Dg(lv);var uv=I({getParentRoute:()=>lv,id:`_clusterLayout`});I({getParentRoute:()=>uv,path:`/`,head:()=>({meta:[{title:`Clusters — Harper Fabric`}]}),component:tg}),I({getParentRoute:()=>lv,path:`/new-cluster`,head:()=>({meta:[{title:`New Cluster — Harper Fabric`}]}),component:Yh}),I({getParentRoute:()=>fv,path:`/edit`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:Yh}),I({getParentRoute:()=>fv,path:`/edit/$mode`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:Yh});function dv(){return(0,K.jsx)(He,{})}var fv=I({getParentRoute:()=>uv,path:`$clusterId`,component:dv,beforeLoad:async({context:e,params:t})=>({cluster:await e.queryClient.ensureQueryData(ll(t.clusterId))})}),pv=e=>new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}).format(e),mv=e=>`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(e)} hr`,hv=e=>Th(e),gv={reads:`Reads`,readBytes:`Read data`,writes:`Writes`,writeBytes:`Write data`,realTimeMessages:`Real-time messages`,realTimeBytes:`Real-time data`,cpuTimeHours:`Compute`,storageBytes:`Storage`},_v={reads:pv,readBytes:hv,writes:pv,writeBytes:hv,realTimeMessages:pv,realTimeBytes:hv,cpuTimeHours:mv,storageBytes:hv},vv=[`reads`,`readBytes`,`writes`,`writeBytes`,`realTimeMessages`,`realTimeBytes`,`cpuTimeHours`,`storageBytes`];function yv(e,t,n){return{label:n??gv[e],used:t.used,limit:t.limit,unlimited:t.unlimited,limitKnown:t.limitKnown,format:_v[e]}}function bv({label:e,used:t,limit:n,unlimited:r,limitKnown:i,format:a}){let o=r||n!=null&&n<0,s=i&&!o&&n!=null&&n>0,c=s?Math.min(100,Math.round(t/n*100)):0,l=c>=90;return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-sm`,children:[(0,K.jsx)(`span`,{className:`text-foreground`,children:e}),(0,K.jsxs)(`span`,{className:`text-muted-foreground tabular-nums`,children:[(0,K.jsx)(`span`,{className:`text-foreground`,children:a(t)}),s?(0,K.jsxs)(K.Fragment,{children:[`/ `,a(n)]}):` used`]})]}),(0,K.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[(0,K.jsx)(`div`,{className:`h-2 flex-1 overflow-hidden rounded-full bg-muted`,children:s?(0,K.jsx)(`div`,{className:`h-full rounded-full ${l?`bg-yellow`:`bg-primary dark:bg-violet-400`}`,style:{width:`${c}%`}}):o?(0,K.jsx)(`div`,{className:`h-full w-full bg-[repeating-linear-gradient(-45deg,transparent,transparent_5px,var(--color-border)_5px,var(--color-border)_9px)] dark:bg-[repeating-linear-gradient(-45deg,transparent,transparent_5px,rgba(255,255,255,0.32)_5px,rgba(255,255,255,0.32)_9px)]`}):null}),(0,K.jsx)(`span`,{className:`w-16 shrink-0 text-right text-xs tabular-nums ${l?`text-yellow`:`text-muted-foreground`}`,children:s?`${c}%`:o?`Unlimited`:`—`})]})]})}function xv(e){return z({queryKey:[`clusterUsage`,e],queryFn:async()=>{let{data:t}=await M.get(`/Cluster/${e}/usage`);return t},enabled:!!e,staleTime:6e4})}function Sv(e){return H(xv(e))}function Cv(e){let{regions:t}=e,n=t.every(e=>e.planName===t[0]?.planName)?t[0]?.planName:null,r=t.length>1?`next renewal`:`renews`;return[n?`${n} plan`:null,e.renewsAt?`${r} ${wv(e.renewsAt)}`:null].filter(Boolean).join(` · `)}function wv(e){return new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(new Date(e))}function Tv({clusterId:e,base:t}){let{data:n}=Sv(e);return!n||n.selfManaged||n.regions.length===0?null:(0,K.jsxs)(`section`,{className:`mt-6 rounded-2xl border border-border bg-card p-5`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,K.jsx)(`h2`,{className:`text-sm font-medium text-foreground`,children:`Plan usage`}),(0,K.jsxs)(V,{to:`${t}/usage`,className:`inline-flex items-center gap-1 text-xs text-primary hover:underline dark:text-violet-300`,children:[`View all usage `,(0,K.jsx)(Hn,{className:`size-3`})]})]}),(0,K.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:Cv(n)}),(0,K.jsx)(`div`,{className:`mt-4`,children:n.regions.length===1?(0,K.jsx)(Ev,{data:n}):(0,K.jsx)(Dv,{data:n})})]})}function Ev({data:e}){let t=e.regions[0].metrics,n=[yv(`reads`,t.reads),yv(`writes`,t.writes),yv(`storageBytes`,t.storageBytes),yv(`cpuTimeHours`,t.cpuTimeHours)];return(0,K.jsx)(`div`,{className:`grid grid-cols-1 gap-x-8 gap-y-4 sm:grid-cols-2`,children:n.map(e=>(0,K.jsx)(bv,{...e},e.label))})}function Dv({data:e}){let t=e.mostConstrained;return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`p`,{className:`mb-1.5 text-xs text-muted-foreground`,children:[`Most constrained of `,e.regions.length,` regions`]}),t?(0,K.jsx)(bv,{...yv(t.metric,{used:t.used,limit:t.limit,unlimited:!1,limitKnown:!0},`${t.region??`Region`} · ${gv[t.metric]}`)}):(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No metered limits on the current plan — see the breakdown for details.`})]})}function Ov({cluster:e}){let t=fe(),n=ue(),{update:r,remove:i}=bf(e.organizationId,e.id),{run:a,isPending:o}=Gf(e),{mutate:s,isPending:c}=Vf(),[l,u]=(0,G.useState)(!1),[d,f]=(0,G.useState)(!1),[p,m]=(0,G.useState)(!1),[h,g]=(0,G.useState)(null),_=e.status===`RUNNING`,v=e.status===`STOPPED`,y=e.status===`PARTIAL`,b=!r||o,x=(0,G.useCallback)(()=>{s(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),m(!1),U.success(`Success`,{description:`Cluster successfully terminated.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),t.navigate({to:`/${e.organizationId}`})},onError:()=>{m(!1)}})},[e.id,e.organizationId,s,n,t]),S=(0,G.useCallback)(()=>{let e=h;g(null),e&&a(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})},[h,a]);return Nf(e)||!r&&!i?null:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsxs)(P,{variant:`outline`,size:`sm`,disabled:o,className:`gap-1.5 hover:translate-y-0 data-[state=open]:[&>svg]:rotate-180`,children:[`Cluster actions`,(0,K.jsx)(pn,{className:`size-4 transition-transform`})]})}),(0,K.jsxs)(So,{align:`end`,className:`w-56`,children:[(0,K.jsx)(To,{className:`text-gray-600 text-xs`,children:`Container`}),(0,K.jsxs)(Co,{disabled:b||!(v||y),onClick:()=>void a(`start`,{safeMode:!1,strategy:`parallel`}),children:[(0,K.jsx)(oa,{}),` Start`]}),(0,K.jsxs)(Co,{disabled:b||!v,onClick:()=>g(`start`),children:[(0,K.jsx)(wi,{}),` Start in safe mode`]}),(0,K.jsxs)(Co,{disabled:b||!(_||y),onClick:()=>f(!0),children:[(0,K.jsx)(ga,{}),` Restart`]}),(0,K.jsxs)(Co,{disabled:b||!_,onClick:()=>g(`restart`),children:[(0,K.jsx)(wi,{}),` Restart in safe mode`]}),(0,K.jsxs)(Co,{variant:`destructive`,disabled:b||!(_||y),onClick:()=>u(!0),children:[(0,K.jsx)(La,{}),` Stop`]}),(0,K.jsx)(Eo,{}),(0,K.jsxs)(Co,{variant:`destructive`,disabled:!i,onClick:()=>m(!0),children:[(0,K.jsx)(Za,{}),` Terminate`]})]})]}),(0,K.jsx)(If,{clusterName:e.name,isPending:o,stopOpen:l,setStopOpen:u,onConfirmStop:()=>{u(!1),a(`stop`,{strategy:`parallel`})},restartOpen:d,setRestartOpen:f,onConfirmRestart:e=>{f(!1),a(`restart`,{safeMode:!1,strategy:e})}}),(0,K.jsx)(zf,{open:h!==null,setOpen:e=>{e||g(null)},action:h??`restart`,targetName:e.name,scope:`cluster`,isPending:o,onConfirm:S}),(0,K.jsx)(Wu,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:`Terminate`,presentParticiple:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:p,setIsModalOpen:m,deletionConfirmed:x,deletionPending:c})]})}function kv(){let{clusterId:e}=B({strict:!1}),t=fe(),n=se(),{data:r}=H(ll(e,!0)),{user:i,isLoading:a}=Dn(e),{view:s,update:l}=bf(r?.organizationId,r?.id),[f,p]=(0,G.useState)(!1),m=r?.domains?.[0]?.domain||r?.fqdn||``,[h,g]=Jf(m,m?`https://${m}`:``),_=r?`/${r.organizationId}/${r.id}`:``,v=(0,G.useCallback)(async()=>{if(r){p(!0);try{await u.establishFabricConnectAuth({id:r.id,operationsUrl:c(r)}),await t.invalidate()}catch{U.error(`Could not connect to this cluster through Fabric Connect.`)}finally{p(!1)}}},[r,t]),y=(0,G.useCallback)(()=>{r&&(u.setUserForEntity(r,null),u.flagForFabricConnect(r.id,!1)),n({to:`${_}/sign-in`})},[_,r,n]),b=(0,G.useCallback)(async()=>{if(r){try{await d({instanceClient:o({id:r.id}),entityId:r.id})}catch{}u.setUserForEntity(r,null),u.flagForFabricConnect(r.id,!1),u.flagForBasicAuth(r.id,null),await t.invalidate()}},[r,t]);if(!r)return(0,K.jsx)(jv,{children:(0,K.jsx)(Mv,{})});if(!s)return(0,K.jsx)(L,{to:`/${r.organizationId}`,replace:!0});if(Nf(r))return(0,K.jsx)(Av,{cluster:r});if(!r.fqdn)return(0,K.jsx)(L,{to:`${_}/instances`,replace:!0});if(r.resetPassword){if(!l)return(0,K.jsx)(jv,{children:(0,K.jsxs)(`div`,{className:`text-center py-12`,children:[(0,K.jsx)(wa,{className:`size-12 text-muted-foreground mx-auto mb-4`}),(0,K.jsx)(`h1`,{className:`text-xl font-medium mb-2 text-foreground`,children:`Pending Owner Setup`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground max-w-md mx-auto`,children:`This cluster needs an administrator to finish setup before it can be used.`})]})});let e=r.status&&Hc.includes(r.status)&&tl(r);return(0,K.jsx)(L,{to:`${_}/${e?`finish-setup`:`starting-up`}`,replace:!0})}let x=u.checkForFabricConnect(r.id),S=!!i,C=u.getLastConnectMode(r.id),w=(r.instances??[]).filter(e=>e.status&&!Uc.includes(e.status)).length,T=r.instances??[],E=!!r.status&&Hc.includes(r.status)&&T.length>0&&T.every(e=>e.safeMode);return(0,K.jsxs)(jv,{children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-4 mb-6`,children:[(0,K.jsx)(`div`,{className:`flex items-center justify-center size-12 rounded-xl bg-violet-50 text-primary dark:bg-grey-700 dark:text-violet-300 shrink-0`,children:(0,K.jsx)(wa,{className:`size-6`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:r.name}),(0,K.jsx)(Nv,{status:r.status}),E&&(0,K.jsx)(Pv,{})]}),(0,K.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-sm text-muted-foreground`,children:[(0,K.jsxs)(`span`,{children:[w,` `,w===1?`instance`:`instances`]}),(0,K.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,K.jsxs)(`a`,{href:`https://${m}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 hover:text-foreground hover:underline`,children:[m,(0,K.jsx)(Wr,{className:`size-3`})]}),(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{"aria-label":`Copy cluster URLs`,className:`rounded-md p-1 -m-1 hover:bg-accent/60 hover:text-foreground`,children:(0,K.jsx)(Ir,{className:`size-3.5`})}),(0,K.jsxs)(So,{align:`start`,children:[(0,K.jsx)(Co,{onClick:h,children:`Copy host name`}),(0,K.jsx)(Co,{onClick:g,children:`Copy API URL`})]})]})]})]}),(0,K.jsx)(Ov,{cluster:r})]}),a?(0,K.jsx)(Mv,{}):S?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,K.jsx)(vr,{className:`size-4 text-green shrink-0`}),(0,K.jsx)(`span`,{className:`font-medium text-green`,children:x?`Connected via Fabric Connect`:`Signed in directly`}),(0,K.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,x?`through your Harper account`:`session cookie`]})]}),(0,K.jsxs)(V,{to:`${_}/apps`,className:`group flex items-center gap-4 rounded-2xl border-2 border-primary/30 bg-primary/5 p-6 transition-all hover:border-primary hover:bg-primary/10 dark:border-violet-400/30 dark:bg-violet-400/5 dark:hover:border-violet-400 dark:hover:bg-violet-400/10`,children:[(0,K.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 dark:bg-violet-400/15 dark:text-violet-300`,children:(0,K.jsx)(fa,{className:`size-6`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsx)(`div`,{className:`text-lg font-medium text-foreground`,children:`Enter cluster`}),(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Open the studio — apps, databases, APIs, logs, and config.`})]}),(0,K.jsx)(Hn,{className:`size-5 text-muted-foreground transition-transform group-hover:translate-x-1`})]}),(0,K.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-4 text-sm`,children:[x&&(0,K.jsx)(`button`,{type:`button`,onClick:y,className:`text-muted-foreground hover:text-foreground transition-colors`,children:`Switch to direct sign-in`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>void b(),className:`text-muted-foreground hover:text-destructive transition-colors`,children:x?`Disconnect`:`Direct sign out`})]})]}):(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{className:`text-sm font-medium text-foreground mb-3`,children:`Connect to this cluster`}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3.5`,children:[l&&!Nf(r)&&(0,K.jsx)(Fv,{icon:lo,title:`Fabric Connect`,description:`Connect through your Harper account. No cluster credentials needed.`,pill:C===`fabric`?`last`:C?void 0:`recommended`,children:(0,K.jsx)(P,{className:`w-full`,disabled:f,onClick:()=>void v(),children:f?(0,K.jsx)(Oi,{className:`animate-spin`}):`Fabric Connect`})}),(0,K.jsx)(Fv,{icon:vi,title:`Direct sign-in`,description:`Sign in with this cluster's Harper username and password.`,pill:C===`direct`?`last`:void 0,children:(0,K.jsx)(P,{className:`w-full`,variant:`outline`,onClick:y,children:`Direct sign-in`})})]})]}),(0,K.jsx)(Tv,{clusterId:r.id,base:_})]})}function Av({cluster:e}){let t=fe(),n=se(),r=`/${e.organizationId}/${e.id}`,i=(0,G.useMemo)(()=>(e.instances??[]).filter(e=>e.status&&!Uc.includes(e.status)).sort(dp),[e.instances]),a=i.at(0),{user:s,isLoading:c}=Dn(a?.id),l=!!a&&!!s,f=(0,G.useCallback)(()=>{a&&n({to:`${r}/instance/${a.id}/sign-in`})},[r,a,n]),m=(0,G.useCallback)(async()=>{if(a){try{await d({instanceClient:o({id:a.id,operationsUrl:p(a)}),entityId:a.id})}catch{}u.setUserForEntity(a,null),u.flagForBasicAuth(a.id,null),await t.invalidate()}},[a,t]);return(0,K.jsxs)(jv,{children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-4 mb-6`,children:[(0,K.jsx)(`div`,{className:`flex items-center justify-center size-12 rounded-xl bg-violet-50 text-primary dark:bg-grey-700 dark:text-violet-300 shrink-0`,children:(0,K.jsx)(wa,{className:`size-6`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:e.name}),(0,K.jsx)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full text-muted-foreground bg-muted`,children:`Self-Hosted`})]}),(0,K.jsx)(`div`,{className:`mt-1 text-sm text-muted-foreground`,children:(0,K.jsxs)(V,{to:`${r}/instances`,className:`hover:text-foreground hover:underline`,children:[i.length,` `,i.length===1?`instance`:`instances`]})})]})]}),a?c?(0,K.jsx)(Mv,{}):l?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,K.jsx)(vr,{className:`size-4 text-green shrink-0`}),(0,K.jsx)(`span`,{className:`font-medium text-green`,children:`Signed in directly`}),(0,K.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,a.name||a.instanceFqdn]})]}),(0,K.jsxs)(V,{to:`${r}/instance/${a.id}/`,className:`group flex items-center gap-4 rounded-2xl border-2 border-primary/30 bg-primary/5 p-6 transition-all hover:border-primary hover:bg-primary/10 dark:border-violet-400/30 dark:bg-violet-400/5 dark:hover:border-violet-400 dark:hover:bg-violet-400/10`,children:[(0,K.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-xl bg-primary/10 text-primary shrink-0 dark:bg-violet-400/15 dark:text-violet-300`,children:(0,K.jsx)(fa,{className:`size-6`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsx)(`div`,{className:`text-lg font-medium text-foreground`,children:`Enter cluster`}),(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Open the studio — apps, databases, APIs, logs, and config.`})]}),(0,K.jsx)(Hn,{className:`size-5 text-muted-foreground transition-transform group-hover:translate-x-1`})]}),(0,K.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-4 text-sm`,children:(0,K.jsx)(`button`,{type:`button`,onClick:()=>void m(),className:`text-muted-foreground hover:text-destructive transition-colors`,children:`Direct sign out`})})]}):(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`h2`,{className:`text-sm font-medium text-foreground mb-3`,children:`Connect to this cluster`}),(0,K.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3.5`,children:(0,K.jsx)(Fv,{icon:vi,title:`Direct sign-in`,description:`Sign in with this instance's Harper username and password.`,children:(0,K.jsx)(P,{className:`w-full`,variant:`outline`,onClick:f,children:`Direct sign-in`})})})]}):(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`This cluster has no instances yet. Register one from the`,` `,(0,K.jsx)(V,{to:`${r}/instances`,className:`underline hover:text-foreground`,children:`Instances`}),` page.`]})]})}function jv({children:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Qf,{children:(0,K.jsx)(`div`,{className:`max-w-3xl`,children:e})})]})}function Mv(){return(0,K.jsx)(`div`,{className:`flex justify-center py-10 text-muted-foreground`,children:(0,K.jsx)(Oi,{className:`size-6 animate-spin`})})}function Nv({status:e}){let t=e&&Hc.includes(e)?`text-green bg-green/10`:e===`STOPPED`?`text-destructive bg-destructive/10`:e===`PARTIAL`?`text-yellow bg-yellow/10`:`text-muted-foreground bg-muted`;return(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full ${t}`,children:[(0,K.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`}),e?e.charAt(0)+e.slice(1).toLowerCase():`Unknown`]})}function Pv(){return(0,K.jsxs)(`span`,{title:`All instances running in safe mode — user apps/components are not loaded`,className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full text-yellow bg-yellow/10`,children:[(0,K.jsx)(wi,{className:`size-3`}),`Safe mode`]})}function Fv({icon:e,title:t,description:n,pill:r,children:i}){return(0,K.jsxs)(`div`,{className:`relative rounded-xl p-4.5 bg-card border ${r===`last`?`border-2 border-green`:r===`recommended`?`border-2 border-primary dark:border-violet-400`:`border-border`}`,children:[r&&(0,K.jsx)(`span`,{className:`absolute -top-2.5 left-4 rounded-full bg-card`,children:(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs px-2.5 py-0.5 rounded-full ${r===`last`?`text-green bg-green/15`:`text-primary bg-violet-50 dark:text-violet-300 dark:bg-grey-700`}`,children:[r===`last`&&(0,K.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`}),r===`last`?`Last used`:`Recommended`]})}),(0,K.jsx)(e,{className:`size-6 text-primary dark:text-violet-300 mb-2`}),(0,K.jsx)(`div`,{className:`text-[15px] font-medium text-foreground mb-1`,children:t}),(0,K.jsx)(`p`,{className:`text-[13px] text-muted-foreground leading-normal mb-4`,children:n}),i]})}function Iv({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Qf,{children:(0,K.jsx)(`div`,{className:t,children:e})})]})}function Lv(e){let t=nl(e);return t===void 0||t===408||t>=500}var Rv=`Not attempted.`;function zv(e){return[...new Set(e.split(/[,\s]+/).map(e=>e.trim().toLowerCase()).filter(Boolean))]}function Bv(e){let t=nl(e);return Lv(e)||t===401||t===429}async function Vv(e,t){let n=[],r=[];for(let i=0;i<e.length;i+=1){let a=e[i];try{await t(a),n.push(a)}catch(t){if(r.push({domain:a,message:_o(t).message,error:t,attempted:!0}),Bv(t)){for(let t of e.slice(i+1))r.push({domain:t,message:Rv,error:void 0,attempted:!1});break}}}return Hv(r),{added:n,failures:r}}function Hv(e){let t=new Set;for(let{error:n,attempted:r}of e){if(!r||nl(n)===409)continue;let e=nl(n);t.has(e)||(t.add(e),console.error(n))}}var Uv=4e3;async function Wv(e,t=Uv){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{clearTimeout(n)}}function Gv(e){let t=new Map;for(let n of e??[]){let e=String(n?.domain??``).toLowerCase();t.set(e,(t.get(e)??0)+1)}return t}function Kv(e,t){return e.filter(({domain:e,error:n,attempted:r})=>!r||!Lv(n)||!t.has(e))}function qv(e,t){if(!e)return new Set;let n=new Set;for(let[r,i]of t)i>(e.get(r)??0)&&n.add(r);return n}function Jv(e){return e.map(({domain:e,message:t})=>`${e} — ${t}`).join(`; `)}var Yv=new Set([`com`,`co`,`org`,`net`,`edu`,`gov`,`mil`,`me`,`biz`,`info`,`ac`,`or`,`ne`,`go`,`lg`,`asn`,`id`,`nom`,`sch`,`ltd`,`plc`]);function Xv(e){let t=e.split(`.`);if(t.length<=2)return`@`;let n=t[t.length-1],r=t[t.length-2],i=n.length===2&&Yv.has(r)?3:2;return t.length<=i?`@`:t.slice(0,-i).join(`.`)}function Zv({cluster:{fqdn:e},domain:{domain:t,id:n}}){let r=Xv(t),[i,a,o]=Jf(r,e||``,n);return(0,K.jsxs)(`div`,{className:`grid gap-4 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap`,children:`This domain has been verified! Now to associate it with this cluster, add the following to your DNS registrar:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordName`,value:r,onClick:i}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:i,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordTarget`,value:e,onClick:a}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:a,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`domainId`,value:n,onClick:o}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:o,children:(0,K.jsx)(Ir,{className:`w-3 h-3`})})]})}),(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap italic text-sm`,children:`Select this domain using the checkbox to the left, then click "Bind" in the top right to finish associating it with this cluster.`})]})}function Qv({certificate:e,domain:t,cluster:n}){let r=Xv(t.domain),[i,a,o]=Jf(r,n.fqdn||``,t.id),s=(0,G.useMemo)(()=>e.issueDate&&!e.inProgress?{width:`100%`,color:`bg-green/80`,pulse:!1,text:`Certificate Issued`}:e.inProgress?{width:`100%`,color:`bg-yellow/80`,pulse:!0,text:`Generating Certificate...`}:{width:`100%`,color:`bg-gray-600`,pulse:!1,text:`Pending Certificate Generation...`},[e]);return(0,K.jsxs)(`div`,{className:`w-full max-w-2xl border border-border/50 rounded-md p-4 bg-gray-900/20`,children:[(0,K.jsxs)(`div`,{className:`mb-4`,children:[(0,K.jsx)(`div`,{className:`w-full h-1.5 rounded-full overflow-clip flex shadow-sm bg-gray-800`,children:(0,K.jsx)(`div`,{style:{width:s.width},className:`grow transition-[width] duration-1000 ease-in-out motion-reduce:transition-none ${s.color} ${s.pulse?`animate-pulse`:``}`})}),(0,K.jsx)(`div`,{className:`text-[10px] text-muted-foreground font-light mt-1 italic`,children:s.text})]}),(0,K.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] text-sm`,children:[(0,K.jsx)(`div`,{className:`col-span-1 text-xs text-muted-foreground`,children:`CNAME:`}),(0,K.jsxs)(`div`,{className:`col-span-1 flex gap-2 items-center flex-wrap`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-xs`,children:[(0,K.jsx)(`span`,{className:`truncate max-w-[150px]`,title:r,children:r}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:i,title:`Copy Name`,children:(0,K.jsx)(Ir,{className:`w-3 h-3`})})]}),(0,K.jsx)($v,{}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-xs`,children:[(0,K.jsx)(`span`,{className:`truncate max-w-[200px]`,title:n.fqdn||``,children:n.fqdn}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:a,title:`Copy Target`,children:(0,K.jsx)(Ir,{className:`w-3 h-3`})})]})]}),(0,K.jsx)(`div`,{className:`col-span-1 text-[10px] text-muted-foreground`,children:`Domain ID:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted px-2 py-0.5 rounded text-[10px] text-muted-foreground italic`,children:[(0,K.jsx)(`span`,{className:`truncate max-w-[200px]`,children:t.id}),(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`sm`,className:`h-3 w-3 p-0`,onClick:o,title:`Copy ID`,children:(0,K.jsx)(Ir,{className:`w-2.5 h-2.5`})})]})})]})]})}function $v(){return(0,K.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`w-3 h-3 text-muted-foreground`,children:[(0,K.jsx)(`path`,{d:`M5 12h14`}),(0,K.jsx)(`path`,{d:`m12 5 7 7-7 7`})]})}function ey(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,searchAttribute:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l,getAttributes:u}=e;return z({enabled:t,queryKey:[n,r,i,`search_by_value`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l,u??null],retry:!1,staleTime:6e4,gcTime:5e3,queryFn:()=>ty(e)})}async function ty({instanceClient:e,databaseName:t,tableName:n,searchAttribute:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,getAttributes:c,headers:l}){let u=i.attribute.length&&!(i.attribute===r&&!i.descending),d=await e.post(`/`,{operation:`search_by_value`,get_attributes:c??[`*`],database:t,table:n,search_attribute:r,search_value:`*`,sort:u?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:l,validateStatus:e=>e>=200&&e<400||e===404});return d.status===404?{data:[]}:d}function ny(e){return z({queryKey:[e,`ChallengeCertificate`],queryFn:async()=>{if(!e)return[];let{data:t}=await ty({searchAttribute:`domain`,entityId:e,databaseName:`data`,tableName:`ChallengeCertificate`,sort:{attribute:`domain`,descending:!0},instanceClient:o({id:e,forceFabricConnect:!0}),onlyIfCached:!1,pageIndex:0,pageSize:100});return t},enabled:!!e,refetchInterval:al(5e3),retry:ol()})}function ry(e){return H(ny(e))}function iy({domain:{challengeToken:e,challengeTxtRecord:t,domain:n,id:r},cluster:{fqdn:i}}){let a=Xv(n),[o,s,c,l,u]=Jf(t,e,a,i||``,r);return(0,K.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap`,children:`Prove that you own this domain by adding the following to your DNS registrar:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`TXT`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`challengeName`,value:t,onClick:o}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:o,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Content:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`challengeToken`,value:e,onClick:s}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:s,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap mt-4`,children:`While you're at it, you should also add the CNAME record to point to this cluster:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordName`,value:a,onClick:c}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:c,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,K.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`recordTarget`,value:i,onClick:l}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:l,children:(0,K.jsx)(Ir,{className:`w-3.5 h-3.5`})})]})}),(0,K.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,K.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-1 bg-muted rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,K.jsx)(`input`,{className:`bg-transparent border-none outline-none w-full cursor-text truncate`,type:`text`,readOnly:!0,name:`domainId`,value:r,onClick:u}),(0,K.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:u,children:(0,K.jsx)(Ir,{className:`w-3 h-3`})})]})}),(0,K.jsx)(`div`,{className:`text-muted-foreground md:col-span-2 text-wrap mt-2`,children:`Then after your DNS TTL elapses, click the "Validate" button above.`})]})}async function ay({clusterId:e,domainIds:t,generateDomainCerts:n}){let{data:r}=await M.put(`/Cluster/${e}`,{domainIds:t,generateDomainCerts:n},{timeout:0});return r}function oy(){return R({mutationFn:e=>ay(e)})}S({domainId:A()});async function sy(e){let{data:t}=await M.delete(`/Domain/${e.domainId}`);return t}function cy(){return R({mutationFn:e=>sy(e)})}function ly(e){return[...new Set(e)]}var uy=_g();function dy(e,t,n){let{data:r}=ry(e.id),i=(0,G.useMemo)(()=>!!r?.some(e=>!e.issueDate||e.inProgress),[r]),{mutate:a,isPending:o}=oy(),{mutate:s,isPending:c}=cy(),l=o||c,u=(0,G.useCallback)((t,n)=>{if(!Xc(e.status)){U.error(`Cluster is currently `+e.status,{description:`To bind a domain, it must be running.`});return}a({clusterId:e.id,domainIds:ly((e.domainIds?.slice()||[]).concat([t])),generateDomainCerts:n},{onSuccess:()=>{yo.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),U.success(`Domain bound!`+(n?` Certificates are being generated in the background now.`:``))}})},[a,e]),d=(0,G.useCallback)(t=>{s({domainId:t},{onSuccess:()=>{yo.invalidateQueries({queryKey:[e.organizationId,`domains`],refetchType:`active`}),U.success(`Domain removed!`)}})},[s]),f=(0,G.useCallback)(t=>{a({clusterId:e.id,domainIds:(e.domainIds?.slice()||[]).filter(e=>e!==t),generateDomainCerts:!1},{onSuccess:()=>{yo.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),U.success(`Domain unbound!`)}})},[s]);return(0,G.useMemo)(()=>[uy.display({id:`select`,header:`Bind`,size:50,cell:r=>{let a=r.row.original;return a.status!==`ACTIVE`||a.clusterId||Nf(e)?null:(0,K.jsx)(`label`,{className:`p-10 -m-10`,children:(0,K.jsx)(`input`,{type:`checkbox`,checked:t.includes(a.id),onChange:()=>n(a.id),disabled:l||i})})}}),uy.display({header:`Domains`,id:`domain`,enableSorting:!1,size:150,cell:e=>{let t=e.row.original;return(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{children:t.domain}),(0,K.jsx)(P,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l||!!t.clusterId,onClick:()=>d(t.id),children:`Remove Domain`})]})}),(0,K.jsx)(Rs,{side:`bottom`,align:`center`,children:t.clusterId?`To delete this domain, please unbind it from all clusters first.`:`Remember to clean up your DNS records!`})]})}}),uy.display({header:`Next Steps`,enableSorting:!1,size:500,id:`nextSteps`,cell:t=>{let n=t.row.original,i=r?.find(e=>e.domain===n.domain);return n.status===`ACTIVE`&&n.clusterId?e.id===n.clusterId?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{children:`Bound to this cluster`}),i&&(!i.issueDate||i.inProgress)&&(0,K.jsx)(`div`,{className:`py-2`,children:(0,K.jsx)(Qv,{certificate:i,domain:n,cluster:e})}),(0,K.jsx)(P,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l,onClick:()=>f(n.id),children:`Unbind Domain`})]}):`Bound to cluster ${n.clusterId}`:n.status===`PENDING_VALIDATION`?(0,K.jsx)(iy,{domain:n,cluster:e}):Nf(e)?`Cannot be associated with this self-managed cluster.`:n.status===`ACTIVE`&&!n.clusterId?(0,K.jsx)(Zv,{cluster:e,domain:n}):n.status}})],[e,u,l,r,i,t,n])}var fy=`Enter a domain name.`,py=S({domain:A().trim().min(1,fy),organizationId:A()});async function my(e){let{data:t}=await M.post(`/Domain/`,e);return t}function hy(){return R({mutationFn:e=>my(e),meta:{skipGlobalErrorToast:!0},networkMode:`always`})}async function gy(e){let{data:t}=await M.post(`/Domain/${e}/validate`);return t}async function _y(e){let{data:t}=await M.get(`/Domain/?organizationId=${e}`);return t}function vy(e){return z({queryKey:[e,`domains`],queryFn:()=>_y(e)})}function yy(){let{organizationId:e,clusterId:t}=B({strict:!1}),{data:n}=ge(ll(t,!0)),{update:r}=vf(e),{data:i,refetch:a,isFetching:o,isPending:s,isRefetching:c}=H(vy(e)),l=(0,G.useMemo)(()=>i?.filter(e=>e.status===`PENDING_VALIDATION`)||[],[i]),[u]=(0,G.useState)({attribute:`domain`,descending:!1}),d=(0,G.useMemo)(()=>[{desc:u.descending,id:u.attribute}],[u]),f=Cg(a),[p,m]=(0,G.useState)([]),g=(0,G.useCallback)(e=>{m(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),{mutate:_,isPending:v}=oy(),y=(0,G.useCallback)(()=>{if(!Xc(n.status)){U.error(`Cluster is currently `+n.status,{description:`To bind a domain, it must be running.`});return}_({clusterId:n.id,domainIds:ly((n.domainIds?.slice()||[]).concat(p)),generateDomainCerts:!0},{onSuccess:()=>{yo.invalidateQueries({queryKey:[n.organizationId],refetchType:`active`}),U.success(`Domain(s) bound! Certificates are being generated in the background now.`),m([])}})},[n,p,_]),{mutateAsync:b}=hy(),x=Pt({resolver:Ke(py),defaultValues:{domain:``,organizationId:e}}),S=s||x.formState.isSubmitting,C=(0,G.useCallback)(async e=>{if(e.domain.length>5144){x.setError(`domain`,{type:`server`,message:`That is too much text to be domain names. Paste at most 20.`});return}let t=zv(e.domain);if(t.length===0){x.setError(`domain`,{type:`server`,message:fy});return}if(t.length>20){x.setError(`domain`,{type:`server`,message:`That is ${t.length} domains. Add at most 20 at a time.`});return}let n=i&&Gv(i),{added:r,failures:o}=await Vv(t,t=>b({...e,domain:t})),s=xe.isOnline()&&(r.length>0||o.some(({error:e,attempted:t})=>t&&Lv(e)))?await Wv(a()):void 0,c=Kv(o,s?qv(n,Gv(s.data)):new Set),l=r.length+o.length-c.length;if(l>0&&U.success(`${h(l,`Domain`,`Domains`)} added! Please add the txt record above to your domain registrar.`),c.length===0){x.reset();return}x.setValue(`domain`,c.map(({domain:e})=>e).join(`, `)),x.setError(`domain`,{type:`server`,message:Jv(c)})},[b,x,i,a]),w=(0,G.useCallback)(async()=>{let e=`Validating ${h(l.length,`domain`,`domains`)}...`,t=`validatingDomains`,n=0,r=0;for(let i of l)try{U.loading(e,{description:`${n++} of ${l.length} checked`,id:t}),await gy(i.id)}catch{r+=1}r>0?U.error(`Validation failed!`,{description:`Please make sure the TXT record has been put in place. You may need to wait a bit for the DNS change to propagate.`,id:t}):(await a(),U.success(`Validation succeeded!`,{description:`Please take a look at the next steps for newly verified domains.`,id:t}))},[l]),T=dy(n,p,g),E=x.watch(`domain`),D=(0,G.useMemo)(()=>typeof E==`string`&&E.trim().split(`.`).length===2,[E]),O=(0,G.useCallback)(()=>{typeof E==`string`&&x.setValue(`domain`,`${E.trim()}, www.${E.trim()}`)},[E,x]);return(0,K.jsx)(vg,{data:i||[],isFetching:o||c,columns:T,sortingState:d,children:(0,K.jsxs)(`div`,{className:`w-full flex flex-col md:flex-row items-center md:justify-between md:space-x-2 space-y-2 md:space-y-0`,children:[r&&(0,K.jsx)(Lc,{...x,children:(0,K.jsxs)(`form`,{id:`cluster-add-domain-form`,name:`cluster-add-domain-form`,onSubmit:x.handleSubmit(C),className:`flex gap-1 flex-col md:flex-row`,children:[(0,K.jsx)(Y,{control:x.control,name:`domain`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex-1`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`New Domain Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,enterKeyHint:`done`,autoComplete:`off`,disabled:S,...e})}),D&&(0,K.jsxs)(`div`,{className:`mt-1 flex gap-4`,children:[`Adding an apex domain?`,(0,K.jsx)(P,{variant:`positiveOutline`,type:`button`,disabled:S,onClick:O,children:`Add www as well`})]}),(0,K.jsx)(Q,{children:(0,K.jsx)(`span`,{className:`text-muted-foreground italic`,children:`Type in a domain like example.com or your.example.com, and you'll be guided through validating and binding your cluster to it.`})})]})}),(0,K.jsxs)(`div`,{className:`flex-0 self-start flex gap-1 md:pt-6.5`,children:[(0,K.jsxs)(P,{type:`submit`,variant:`submit`,disabled:S,children:[(0,K.jsx)(ca,{}),` Add`]}),l.length>0&&(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:w,accessKey:`r`,type:`button`,disabled:o||c,children:[(0,K.jsx)(Ei,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`V`}),`alidate`]})]}),(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:f,accessKey:`r`,type:`button`,disabled:o||c,children:[(0,K.jsx)(ua,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]})]})]})}),p.length>0&&(0,K.jsx)(`div`,{className:`flex-0 self-start md:pt-6.5`,children:(0,K.jsxs)(P,{variant:`submit`,onClick:y,disabled:v,children:[(0,K.jsx)(va,{}),` Bind `,h(p.length,`Domain`,`Domains`)]})})]})})}function by(){return(0,K.jsx)(Iv,{className:`flex flex-col justify-start max-w-4xl`,children:(0,K.jsx)(yy,{})})}var xy=S({username:fl,role:A().nonempty({error:`Please select a role.`}),password:dl.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:A()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});async function Sy(e){await M.patch(`/ResetPasswordUpdater/${e}`)}async function Cy(e){let{instanceClient:t,...n}=e,{data:r}=await t.post(`/`,{operation:`add_user`,...n});return r}function wy(){return R({mutationFn:Cy})}async function Ty({username:e,password:t,role:n,active:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`alter_user`,username:e,password:t,role:n,active:r});return a}function Ey(){return R({mutationFn:Ty})}async function Dy({username:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_user`,username:e});return n}function Oy(){return R({mutationFn:Dy})}async function ky({clusterId:e,initialUsername:t,desiredUsername:n,newPassword:r,tempPassword:i,instanceClient:a}){if(!i)throw Error(`You may not have permission to set the password on this cluster.`);let o=a;try{let a=await Gc({username:t,password:i,instanceClient:o,entityId:e});return a.instanceClient&&(o=a.instanceClient),n===`HDB_ADMIN`?await Ty({username:n,password:r,instanceClient:o}):(await Cy({username:n,password:r,role:`super_user`,active:!0,instanceClient:o}),await Gc({username:n,password:r,instanceClient:o,entityId:e}),await Dy({username:g,instanceClient:o})),await Sy(e),a}catch(t){throw await d({entityId:e,instanceClient:o}),t}}function Ay(){return R({mutationFn:ky})}function jy(){let{user:e}=wn(),{clusterId:t}=B({strict:!1}),{data:n}=H(ll(t,!0)),r=se(),i=ue(),a=(0,G.useMemo)(()=>c(n),[n]),o=Bs({operationsUrl:a}),{redirect:s}=me({strict:!1}),l=fe(),d=Pt({resolver:Ke(xy),defaultValues:{confirmPassword:``,password:``,role:`super_user`,username:e?.email??``}}),{setFocus:f,control:p,handleSubmit:m}=d;(0,G.useEffect)(()=>{f(`password`)},[f]);let h=n?.instances?.find(e=>e.tempPassword)?.tempPassword,_=tl(n),{mutate:v,isPending:y}=Ay(),b=(0,G.useCallback)(async e=>{if(!a){U.error(`Cluster is not yet fully loaded, please wait a moment before trying to sign in.`);return}if(!_){U.error(`Some instances are still starting up. You can create your admin user once they are all running.`);return}v({instanceClient:o,clusterId:t,newPassword:e.password,tempPassword:h,initialUsername:g,desiredUsername:e.username},{onSuccess:async({message:e,user:a})=>{U.success(e),u.setUserForEntity(n,a),await cl(i,t),l.invalidate(),await r({to:s?.startsWith(`/`)?s:`../`})}})},[n,t,o,_,r,a,i,s,l,v,h]);return n&&!n.resetPassword?(0,K.jsx)(L,{to:`../sign-in`,replace:!0}):n&&!_?(0,K.jsx)(L,{to:`../starting-up`,replace:!0}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{"aria-label":`Breadcrumb`,className:`fixed top-20 w-full h-12 z-39 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none flex items-center`,children:(0,K.jsx)(Ic,{})}),(0,K.jsx)(`div`,{className:`items-center justify-center flex mt-32 py-4 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,K.jsxs)(`div`,{className:`text-foreground w-xs`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light`,children:`Create Admin User`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:`You are ready to create your first user in your new cluster. These credentials belong to you alone, and you can create more users and roles once you create this first one.`}),(0,K.jsx)(Lc,{...d,children:(0,K.jsxs)(`form`,{id:`cluster-create-admin-form`,name:`cluster-create-admin-form`,onSubmit:m(b),className:`my-4`,children:[(0,K.jsx)(Y,{control:p,name:`username`,render:({field:e})=>(0,K.jsxs)(X,{className:`my-4`,children:[(0,K.jsx)(Z,{children:`Username`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{autoComplete:`username`,type:`text`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:p,name:`password`,render:({field:e})=>(0,K.jsxs)(X,{className:`my-4`,children:[(0,K.jsx)(Z,{children:`Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:p,name:`confirmPassword`,render:({field:e})=>(0,K.jsxs)(X,{className:`my-4`,children:[(0,K.jsx)(Z,{children:`Confirm Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(P,{disabled:y,type:`submit`,variant:`submit`,className:`w-full my-2`,children:`Create Admin User`})]})}),(0,K.jsxs)(`p`,{className:`text-muted-foreground flex gap-2 align-middle`,children:[(0,K.jsx)(In,{size:36,className:`flex-none`}),(0,K.jsx)(`span`,{children:`These credentials will be used to sign into your cluster directly, providing you a secure connection from your browser to your cluster.`})]})]})})]})}function My({columns:e,data:t,renderRowWrapper:n}){let r=Le({features:gg,data:t,columns:e});return(0,K.jsx)(`div`,{className:`bg-card dark:bg-black-dark rounded-md`,children:(0,K.jsxs)(lg,{children:[(0,K.jsx)(ug,{children:r.getHeaderGroups().map(e=>(0,K.jsx)(fg,{className:`border-none`,children:e.headers.map(e=>(0,K.jsx)(pg,{className:`p-4`,style:{width:`${e.getSize()}%`},children:e.isPlaceholder?null:Me(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,K.jsx)(dg,{className:`bg-background dark:bg-black`,children:r.getRowModel().rows?.length?r.getRowModel().rows.map(e=>{let t=(0,K.jsx)(fg,{"data-state":e.getIsSelected()&&`selected`,className:`hover:bg-muted/10 data-[state=selected]:bg-muted`,children:e.getVisibleCells().map(e=>(0,K.jsx)(hg,{className:`p-4`,style:{width:`${e.column.getSize()}%`},children:Me(e.column.columnDef.cell,e.getContext())},e.id))});return(0,K.jsx)(G.Fragment,{children:n?n(e.original,t):t},e.id)}):(0,K.jsx)(fg,{children:(0,K.jsx)(hg,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function Ny(){return(0,K.jsx)(`div`,{className:`flex-col items-center justify-center px-16 space-y-3 text-center pt-30`,children:(0,K.jsx)(`p`,{children:`No instances found.`})})}async function Py({instance:e,instanceClient:t}){try{await d({instanceClient:t,entityId:e.id})}catch{}u.signOutLocally(e.id),e.clusterId&&u.signOutLocally(e.clusterId)}async function Fy({instanceId:e,action:t,safeMode:n}){let r=n===void 0?{}:{safeMode:n},{data:i}=await M.post(`/HDBInstance/${e}/container/${t}`,r);return i}function Iy(){return R({mutationFn:Fy})}var Ly={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function Ry(e){let{clusterId:t}=B({strict:!1}),{mutateAsync:n,isPending:r}=Iy(),i=ue();return{run:(0,G.useCallback)(async(r,a)=>{let o=a?.label??Ly[r],s=e.name??e.id,c=U.loading(o,{description:`${o} ${s}. Status will update shortly.`,duration:3e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});try{await n({instanceId:e.id,action:r,safeMode:a?.safeMode}),t&&i.invalidateQueries({queryKey:[t]}),i.invalidateQueries({queryKey:[e.id]}),U.dismiss(c),U.success(`Request accepted`,{description:`${s} is ${o.toLowerCase()}. The status will update automatically.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}catch{U.dismiss(c)}},[t,e.id,e.name,n,i]),isPending:r}}function zy({entityId:e,instanceClient:t},n){return z({queryKey:[`get_status`,e],staleTime:9e3,refetchInterval:al(1e4),retry:ol(),retryDelay:1e4,throwOnError:!1,enabled:n,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_status`});return e}})}function By(e,t){return e?.systemStatus?.find(e=>e.id===t)?.status}async function Vy({instanceClient:e,id:t,status:n}){let{data:r}=await e.post(`/`,{operation:`set_status`,id:t,status:n});return r}function Hy(){return R({mutationFn:Vy,onSuccess:(e,t)=>yo.invalidateQueries({queryKey:[`get_status`,t.entityId]})})}function Uy({clusterId:e,instanceId:t,organizationId:n},r){return`/`+[n,e,t&&`instance`,t,r].filter(Js).join(`/`)}var Wy=[`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`];function Gy(e,t,n){let{user:r}=Dn(e.id),{organizationId:i,clusterId:a}=B({strict:!1}),o=Uy({organizationId:i,clusterId:a,instanceId:e.id}),s=Uy({organizationId:i,clusterId:a,instanceId:e.id},`sign-in`),c=(0,G.useMemo)(()=>p(e),[e]),l=Bs({operationsUrl:c}),{update:d}=Cf(),f=u.checkForFabricConnect(e.id),m=q({operationsUrl:c,instanceId:e.id,forceFabricConnect:!0}),{data:h}=H(zy(m,n&&d&&!Yc(e.status))),g=By(h,`availability`)||`Unknown`,_=g===`Available`,v=g===`Unavailable`,{mutate:y,isPending:b}=Hy(),{run:x,isPending:S}=Ry(e),[C,w]=(0,G.useState)(null),T=e.instanceFqdn,E=Bh({secure:e.operationsApiSecure?`true`:`false`,port:e.operationsApiPort,fqdn:e.instanceFqdn}),[D,O]=Jf(T??``,E),k=(0,G.useCallback)(async()=>{await Py({instance:e,instanceClient:l})},[e,l]),A=!!e.status&&Wy.includes(e.status),j=!!r&&!f,ee=A,M=!!T,N=d&&A&&(_||v),P=e.status===`RUNNING`,te=e.status===`STOPPED`,F=d&&!t&&(P||te),ne=[ee&&j&&{key:`direct-connect`,to:o,icon:(0,K.jsx)(wa,{className:`text-green`}),label:`Direct Connect`},ee&&j&&{key:`direct-sign-out`,onClick:k,variant:`destructive`,icon:(0,K.jsx)(Ii,{}),label:`Direct Sign Out`},ee&&!j&&d&&!t&&{key:`fabric-connect`,to:o,icon:(0,K.jsx)(wa,{className:`text-green`}),label:`Fabric Connect`},ee&&!j&&{key:`direct-sign-in`,to:s,icon:(0,K.jsx)(Pi,{}),label:`Direct Sign In`},ee&&M&&{type:`separator`,key:`copy-sep`},M&&{key:`copy-fqdn`,onClick:D,icon:(0,K.jsx)(Er,{}),label:`Copy Instance FQDN`},M&&{key:`copy-api`,onClick:O,icon:(0,K.jsx)(Er,{}),label:`Copy API URL`},(ee||M)&&N&&{type:`separator`,key:`rotation-sep`},N&&_&&{key:`out-of-rotation`,variant:`destructive`,disabled:b,onClick:()=>y({...m,id:`availability`,status:`Unavailable`}),icon:(0,K.jsx)(Aa,{}),label:`Bring out of rotation`},N&&v&&{key:`into-rotation`,disabled:b,onClick:()=>y({...m,id:`availability`,status:`Available`}),icon:(0,K.jsx)(Oa,{}),label:`Bring back into rotation`},(ee||M||N)&&F&&{type:`separator`,key:`container-sep`},F&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},F&&te&&{key:`container-start`,disabled:S,onClick:()=>void x(`start`,{safeMode:!1}),icon:(0,K.jsx)(oa,{}),label:`Start`},F&&te&&{key:`container-start-safe`,disabled:S,onClick:()=>w(`start`),icon:(0,K.jsx)(wi,{}),label:`Start in safe mode`},F&&P&&{key:`container-restart`,disabled:S,onClick:()=>void x(`restart`,{safeMode:!1}),icon:(0,K.jsx)(ga,{}),label:`Restart`},F&&P&&{key:`container-restart-safe`,disabled:S,onClick:()=>w(`restart`),icon:(0,K.jsx)(wi,{}),label:`Restart in safe mode`},F&&P&&{key:`container-stop`,variant:`destructive`,disabled:S,onClick:()=>void x(`stop`),icon:(0,K.jsx)(La,{}),label:`Stop`}].filter(Js),re=(0,K.jsx)(zf,{open:C!==null,setOpen:e=>{e||w(null)},action:C??`restart`,targetName:e.name??e.id,scope:`instance`,isPending:S,onConfirm:()=>{let e=C;w(null),e&&x(e,{safeMode:!0,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}});return ne.length?{items:[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-sep`},...ne],dialog:re}:{items:[],dialog:re}}function Ky({instance:e,isSelfManaged:t}){let[n,r]=(0,G.useState)(!1),{items:i,dialog:a}=Gy(e,t,n);return i.length?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(bo,{open:n,onOpenChange:r,children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Instance options`,children:(0,K.jsx)(Hr,{})})}),(0,K.jsx)(So,{align:`end`,className:`min-w-48`,children:$u(i,`dropdown`)})]}),a]}):null}function qy({isSelfManaged:e,instance:t}){let{user:n,isLoading:r}=Dn(t.id),{organizationId:i,clusterId:a}=B({strict:!1}),o=Uy({organizationId:i,clusterId:a,instanceId:t.id}),s=Uy({organizationId:i,clusterId:a,instanceId:t.id},`sign-in`),c=Bs({operationsUrl:(0,G.useMemo)(()=>p(t),[t])}),{update:l}=Cf(),d=u.checkForFabricConnect(t.id),f=(0,G.useCallback)(async()=>{await Py({instance:t,instanceClient:c})},[t,c]);return Yc(t.status)?(0,K.jsx)(`span`,{className:`text-muted-foreground text-sm`,children:`—`}):r||!t.status||![`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`].includes(t.status)?(0,K.jsx)(Oi,{className:`animate-spin`,color:`gray`}):!n||d?(0,K.jsxs)(`span`,{className:`flex gap-4`,children:[l&&!e&&(0,K.jsx)(V,{to:o,className:`text-sm`,"aria-label":`Connect to ${t.name} instance`,title:`Connect to ${t.name} instance`,children:(0,K.jsx)(P,{variant:`positiveOutline`,children:`Fabric Connect`})}),(0,K.jsx)(V,{to:s,className:`text-sm`,"aria-label":`Sign in to ${t.name} instance`,title:`Sign in to ${t.name} instance`,children:(0,K.jsx)(P,{variant:l?`defaultOutline`:`positiveOutline`,children:`Direct Sign In`})})]}):(0,K.jsxs)(`span`,{className:`flex gap-4`,children:[(0,K.jsx)(V,{to:o,className:`text-sm`,"aria-label":`Go to ${t.name} instance`,title:`Go to ${t.name} instance`,children:(0,K.jsx)(P,{variant:`positiveOutline`,children:`Direct Connect`})}),(0,K.jsx)(P,{variant:`destructiveOutline`,className:`text-sm`,"aria-label":`Sign out from ${t.name} instance`,title:`Sign out from ${t.name} instance`,onClick:f,children:`Direct Sign Out`})]})}function Jy({instance:e,isSelfManaged:t,children:n}){let[r,i]=(0,G.useState)(!1),{items:a,dialog:o}=Gy(e,t,r);return a.length?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Gu,{onOpenChange:i,children:[(0,K.jsx)(Ku,{asChild:!0,children:n}),(0,K.jsx)(qu,{className:`min-w-48`,children:$u(a,`context`)})]}),o]}):(0,K.jsx)(K.Fragment,{children:n})}function Yy({instance:e,index:t}){let{update:n}=Cf(),r=q({operationsUrl:(0,G.useMemo)(()=>p(e),[e]),instanceId:e.id,forceFabricConnect:!0}),{mutate:i,isPending:a}=Hy(),[o,s]=(0,G.useState)(!1);(0,G.useEffect)(()=>{let e=setTimeout(()=>s(!0),t*500);return()=>clearTimeout(e)},[t]);let c=Yc(e.status),{data:l,isLoading:u,isFetching:d}=H(zy(r,o&&n&&!c)),f=By(l,`availability`)||`Unknown`,m=f===`Available`,h=f===`Unavailable`;return n?c?(0,K.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(`span`,{className:`inline-block size-4 rounded-full bg-muted-foreground/40`,"aria-label":`Not running`})}),(0,K.jsx)(Rs,{children:`Not running`})]})}):(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(`div`,{className:`flex items-center`,children:u||!o||d&&!l?(0,K.jsx)(Oi,{className:`animate-spin size-5 text-muted-foreground`}):(0,K.jsx)(Wo,{variant:m?`success`:h?`destructive`:`default`,className:`size-4 rounded-full p-0`,children:(0,K.jsx)(`span`,{className:`sr-only`,children:m?`Online`:`Offline`})})})}),(0,K.jsxs)(Rs,{children:[d&&l?`Refreshing... `:``,f]})]}),n&&(0,K.jsxs)(`div`,{className:`flex gap-1`,children:[m&&(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(P,{type:`button`,variant:`destructiveGhost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Unavailable`}),disabled:a,children:a?(0,K.jsx)(Oi,{className:`animate-spin size-4`}):(0,K.jsx)(Aa,{className:`size-4`})})}),(0,K.jsx)(Rs,{children:`Bring out of rotation`})]}),h&&(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsx)(P,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Available`}),disabled:a,children:a?(0,K.jsx)(Oi,{className:`animate-spin size-4`}):(0,K.jsx)(Oa,{className:`size-4`})})}),(0,K.jsx)(Rs,{children:`Bring back into rotation`})]})]})]}):null}function Xy(){let{clusterId:e}=B({strict:!1}),{data:t,isLoading:n}=H(ll(e,!0)),r=Nf(t),i=(0,G.useMemo)(()=>[{id:`instanceActions`,size:1,minSize:1,cell:e=>(0,K.jsx)(`div`,{className:`flex justify-end gap-2 items-center`,children:(0,K.jsx)(qy,{isSelfManaged:r,instance:e.row.original})})},r&&{accessorKey:`instanceFqdn`,size:90,header:`URL`,cell:e=>Bh({secure:e.row.original.operationsApiSecure?`true`:`false`,port:e.row.original.operationsApiPort,fqdn:e.row.original.instanceFqdn})},!r&&{accessorKey:`name`,size:90,header:`Name`},!r&&{accessorKey:`status`,header:`Status`,size:1,minSize:1,cell:e=>{let t=e.getValue();return(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Yy,{instance:e.row.original,index:e.row.index}),t?(0,K.jsx)(Wo,{variant:Jc(t),children:Pc(t)}):null,e.row.original.safeMode&&!Yc(e.row.original.status)?(0,K.jsxs)(Wo,{variant:`warning`,title:`Running in safe mode — user apps/components are not loaded`,children:[(0,K.jsx)(wi,{}),`Safe mode`]}):null]})}},!r&&{accessorKey:`version`,size:1,minSize:1,header:`Version`},!r&&{accessorKey:`storageGb`,size:1,minSize:1,header:`Storage`,cell:e=>`${e.getValue()} GB`},!r&&{accessorKey:`usedStorageGb`,size:1,minSize:1,header:`Used Storage`,cell:e=>{let t=e.getValue();return t===void 0?`-`:`${t} GB`}},!r&&{accessorKey:`cpuCores`,size:1,minSize:1,header:`Cores/Threads`,cell:e=>(0,K.jsxs)(K.Fragment,{children:[e.row.original.cpuCores,` / `,e.row.original.threads]})},!r&&{accessorKey:`memoryMb`,size:1,minSize:1,header:`Memory`,cell:e=>`${e.getValue()/1024} GB`},{id:`instanceMenu`,size:1,minSize:1,cell:e=>(0,K.jsx)(`div`,{className:`flex justify-end`,children:(0,K.jsx)(Ky,{isSelfManaged:r,instance:e.row.original})})}].filter(Js),[r]),a=(0,G.useMemo)(()=>t?.instances?t.instances.filter(e=>e.status&&!Uc.includes(e.status)).sort(dp):[],[t]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(Qf,{children:(0,K.jsx)(On,{className:`p-0 min-h-96`,children:(0,K.jsx)(Mn,{className:`p-0 min-h-96`,children:n?(0,K.jsx)(eh,{}):a.length?(0,K.jsx)(My,{data:a,columns:i,renderRowWrapper:(e,t)=>(0,K.jsx)(Jy,{instance:e,isSelfManaged:r,children:t})}):(0,K.jsx)(Ny,{})})})})]})}function Zy(){let{clusterId:e}=B({strict:!1}),{immediate:t}=me({strict:!1}),n=t===!0||t===`true`,{data:r,isLoading:i}=H(ll(e,2e3)),a=r?.status,o=(0,G.useMemo)(()=>a&&Hc.includes(a),[a]);return i||!r?(0,K.jsx)(Iv,{className:`flex justify-center`,children:(0,K.jsx)(eh,{})}):o?(0,K.jsx)(Iv,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,K.jsx)(`h1`,{className:`text-xl text-center`,children:`All done!`}),(0,K.jsx)(Rf,{cluster:r,forceProgressBarVisible:!0}),(0,K.jsx)(`p`,{children:`Your cluster finished updating, and is ready for interaction.`}),(0,K.jsx)(`div`,{className:`text-center`,children:(0,K.jsx)(Pf,{cluster:r})})]})}):(0,K.jsx)(Iv,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,K.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,K.jsx)(Rf,{cluster:r,forceProgressBarVisible:!0}),(0,K.jsxs)(`p`,{children:[n?`Your cluster is applying the latest changes immediately, without waiting to take instances out of rotation.`:`Your cluster is updating with the latest changes. This includes waiting several minutes to let traffic drain safely.`,` `,(0,K.jsxs)(`span`,{className:`text-muted-foreground`,children:[`We will let you know when we are ready for you to connect! In the meantime, join us on`,` `,(0,K.jsx)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,children:`Discord`}),`! Get real-time help from our engineers, see feature drops early, and connect with others building on Fabric.`]})]})]})})}function Qy({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uu,{}),(0,K.jsx)(`div`,{className:y(`mt-32 px-4 py-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] flex justify-center`,t),children:e})]})}function $y(){let e=fe(),{clusterId:t}=B({strict:!1}),{data:n,isLoading:r}=H(ll(t,2e3)),i=n?.status,a=(0,G.useMemo)(()=>i&&Hc.includes(i)&&tl(n),[i,n]),o=Zc(i),[,s]=xn(vn.SavedClusterState,null),c=(0,G.useCallback)(()=>{s(n),e.navigate({to:`/${n.organizationId}/new-cluster`})},[n,e,s]);return r||!n?(0,K.jsx)(Qy,{className:`flex justify-center`,children:(0,K.jsx)(eh,{})}):o?(0,K.jsx)(Qy,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4 items-center`,children:[(0,K.jsx)(Or,{className:`w-24 h-24`}),(0,K.jsxs)(`span`,{children:[`Your cluster failed to successfully start. This is usually caused by temporary communication problems. Would you like to try again? We also get notified about these failures. `,(0,K.jsx)(xl,{}),` if you want more help.`]}),(0,K.jsx)(P,{type:`button`,variant:`positiveOutline`,onClick:c,children:`Try Again`})]})}):a?(0,K.jsx)(Qy,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,K.jsx)(`h1`,{className:`text-xl text-center`,children:`It's ready!`}),(0,K.jsx)(Rf,{cluster:n,forceProgressBarVisible:!0}),(0,K.jsxs)(`p`,{children:[`Let's set up your secure, browser-to-cluster connection now.`,` `,(0,K.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Did you know during this step, you connect straight to your cluster, providing a private secure connection? That's `,(0,K.jsx)(`em`,{children:`Direct Connect`}),`! Once you create your user, you will have the option to`,` `,(0,K.jsx)(`em`,{children:`Fabric Connect`}),` from your Fabric account without having to sign in again.`]})]}),(0,K.jsx)(`div`,{className:`text-center`,children:(0,K.jsx)(Pf,{cluster:n})})]})}):(0,K.jsx)(Qy,{className:`flex justify-center`,children:(0,K.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,K.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,K.jsx)(Rf,{cluster:n,forceProgressBarVisible:!0}),(0,K.jsxs)(`p`,{children:[`Your cluster is spinning up with the latest changes, including your own DNS records and private connections. Please wait while we get everything going.`,` `,(0,K.jsxs)(`span`,{className:`text-muted-foreground`,children:[`We will let you know when we are ready for you to connect! In the meantime, join us on`,` `,(0,K.jsx)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-blue-300`,children:`Discord`}),`! Get real-time help from our engineers, see feature drops early, and connect with others building on Fabric.`]})]})]})})}function eb(){let{clusterId:e}=B({strict:!1}),{data:t,isLoading:n}=Sv(e);if(n)return(0,K.jsxs)(Iv,{className:`max-w-4xl pb-20`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:`Usage`}),(0,K.jsx)(`div`,{className:`flex justify-center py-16 text-muted-foreground`,children:(0,K.jsx)(Oi,{className:`size-6 animate-spin`})})]});let r=t&&!t.selfManaged?ob(t.regions):null;return(0,K.jsxs)(Iv,{className:`max-w-4xl pb-20`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-light text-foreground`,children:`Usage`}),t?t.selfManaged?(0,K.jsx)(lb,{children:`Usage isn't tracked for self-hosted clusters — they run under their own license.`}):t.regions.length===0?(0,K.jsx)(lb,{children:`No usage has been recorded for the current cycle yet.`}):(0,K.jsxs)(`div`,{className:`mt-5 space-y-3`,children:[t.regions.map(e=>(0,K.jsx)(tb,{region:e,showPlanInfo:r==null},e.region??e.regionIds.join())),r&&(0,K.jsx)(nb,{header:(0,K.jsx)(rb,{title:`Plan limits & resources`}),aside:r.planId??void 0,children:(0,K.jsx)(ib,{rateLimits:r.rateLimits,resourcesPerInstance:r.resourcesPerInstance})})]}):(0,K.jsx)(ub,{})]})}function tb({region:e,showPlanInfo:t}){let n=vv.map(t=>yv(t,e.metrics[t])),r=[e.planName?`${e.planName} plan`:null,e.status===`exhausted`?`consumed — awaiting renewal`:e.status===`lapsed`?`not renewed`:e.expiresAt?`renews ${ab(e.expiresAt)}`:null].filter(Boolean).join(` · `);return(0,K.jsxs)(nb,{defaultOpen:e.status!==`lapsed`,aside:e.regionIds.length>0?e.regionIds.join(`, `):void 0,header:(0,K.jsxs)(rb,{title:e.region??`Region`,meta:r,children:[e.status===`exhausted`&&(0,K.jsx)(`span`,{className:`rounded-full bg-yellow/10 px-2 py-0.5 text-[11px] text-yellow`,children:`Cycle exhausted`}),e.status===`lapsed`&&(0,K.jsx)(`span`,{className:`rounded-full bg-muted px-2 py-0.5 text-[11px] text-muted-foreground`,children:`No active license`})]}),children:[(0,K.jsx)(`div`,{className:`grid grid-cols-1 gap-x-10 gap-y-4 sm:grid-cols-2`,children:n.map(e=>(0,K.jsx)(bv,{...e},e.label))}),t&&(0,K.jsx)(ib,{rateLimits:e.rateLimits,resourcesPerInstance:e.resourcesPerInstance})]})}function nb({header:e,aside:t,defaultOpen:n=!0,children:r}){let[i,a]=(0,G.useState)(n);return(0,K.jsxs)(`section`,{className:`overflow-hidden rounded-xl border border-border`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),"aria-expanded":i,className:`flex w-full items-center gap-3 px-4 py-3 text-left transition-colors hover:bg-accent/40`,children:[(0,K.jsx)(fr,{className:`size-4 shrink-0 text-muted-foreground transition-transform ${i?`rotate-90`:``}`}),(0,K.jsx)(`div`,{className:`min-w-0 flex-1`,children:e}),t&&(0,K.jsx)(`span`,{className:`shrink-0 self-start pt-0.5 font-mono text-[11px] text-muted-foreground/70`,children:t})]}),i&&(0,K.jsx)(`div`,{className:`border-t border-border px-4 py-4`,children:r})]})}function rb({title:e,meta:t,children:n}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:e}),n]}),t&&(0,K.jsx)(`div`,{className:`mt-0.5 text-xs text-muted-foreground`,children:t})]})}function ib({rateLimits:e,resourcesPerInstance:t}){let n=e,r=n?cb([[`Reads / minute`,n.readsPerMinute,Eh],[`Read bandwidth / minute`,n.readsPerMinuteBytes,Th],[`Writes / minute`,n.writesPerMinute,Eh],[`Write bandwidth / minute`,n.writesPerMinuteBytes,Th],[`Real-time deliveries / minute`,n.realTimeDeliveriesPerMinute,Eh],[`Real-time bandwidth / minute`,n.realTimeDeliveryBytesPerMinute,Th],[`TLS handshakes (cycle)`,n.tlsHandshakes,Eh]]):[],i=t,a=i?sb([[`Storage`,i.storageGb,e=>`${Eh(e)} GB`],[`Memory`,i.memoryMb,e=>Th(e*1e3*1e3)],[`vCPU`,i.cpuCores,e=>`${e} ${e===1?`core`:`cores`}`],[`Threads`,i.threads,e=>String(e)]]):[];return(0,K.jsxs)(K.Fragment,{children:[r.length>0&&(0,K.jsx)(db,{title:`Rate limits`,subtitle:`Throughput ceilings — not part of the cycle allotment, and not metered.`,children:(0,K.jsx)(fb,{rows:r})}),a.length>0&&(0,K.jsx)(db,{title:`Per-instance resources`,subtitle:`Provisioned capacity on each instance.`,children:(0,K.jsx)(fb,{rows:a})})]})}function ab(e){return new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(new Date(e))}function ob(e){if(e.length===0)return null;let t=e[0];if(t.rateLimits==null&&t.resourcesPerInstance==null)return null;let n=e=>JSON.stringify([e.rateLimits,e.resourcesPerInstance]),r=n(t),i=e.every(e=>e.planId===t.planId);return e.every(e=>n(e)===r)?{rateLimits:t.rateLimits,resourcesPerInstance:t.resourcesPerInstance,planId:i?t.planId:null}:null}function sb(e){return e.filter(e=>typeof e[1]==`number`&&e[1]>0).map(([e,t,n])=>[e,n(t)])}function cb(e){return e.filter(e=>e[1]!=null).map(([e,t,n])=>[e,t.unlimited?`Unlimited`:t.limitKnown&&t.limit!=null?n(t.limit):`—`])}function lb({children:e}){return(0,K.jsx)(`p`,{className:`mt-3 text-sm text-muted-foreground`,children:e})}function ub(){return(0,K.jsx)(`div`,{role:`alert`,className:`mt-5 rounded-xl border border-destructive/40 bg-destructive/10 p-4 text-sm text-destructive`,children:`Couldn't load usage data — refresh to try again.`})}function db({title:e,subtitle:t,children:n}){return(0,K.jsxs)(`div`,{className:`mt-6 first:mt-0`,children:[(0,K.jsx)(`h3`,{className:`text-sm font-medium text-foreground`,children:e}),(0,K.jsx)(`p`,{className:`mt-0.5 mb-3 text-xs text-muted-foreground`,children:t}),n]})}function fb({rows:e}){return(0,K.jsx)(`dl`,{className:`grid grid-cols-1 gap-x-10 gap-y-2 sm:grid-cols-2`,children:e.map(([e,t])=>(0,K.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 border-b border-border/60 py-1.5 text-sm`,children:[(0,K.jsx)(`dt`,{className:`text-muted-foreground`,children:e}),(0,K.jsx)(`dd`,{className:`text-foreground tabular-nums`,children:t})]},e))})}I({getParentRoute:()=>fv,path:`instances`,head:()=>({meta:[{title:`Instances — Harper Fabric`}]}),component:Xy}),I({getParentRoute:()=>fv,path:`starting-up`,head:()=>({meta:[{title:`Starting Up — Harper Fabric`}]}),component:$y}),I({getParentRoute:()=>fv,path:`scaling`,head:()=>({meta:[{title:`Scaling — Harper Fabric`}]}),component:Zy}),I({getParentRoute:()=>fv,path:`domains`,head:()=>({meta:[{title:`Domains — Harper Fabric`}]}),component:by}),I({getParentRoute:()=>fv,path:`usage`,head:()=>({meta:[{title:`Usage — Harper Fabric`}]}),component:eb});function pb({location:e,params:t}){let n=u.checkForFabricConnect(t.clusterId);if(u.getConnectionById(t.clusterId).user&&!n){let t=e?.search?.redirect;throw ce({to:t?.startsWith(`/`)?t:`../`})}}function mb({location:e,params:t}){let n=u.checkForFabricConnect(t.instanceId);if(u.getConnectionById(t.instanceId).user&&!n){let t=e?.search?.redirect;throw ce({to:t?.startsWith(`/`)?t:`../`})}}I({getParentRoute:()=>fv,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:yl,beforeLoad:pb}),I({getParentRoute:()=>fv,path:`instance/$instanceId/sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:yl,beforeLoad:mb}),I({getParentRoute:()=>fv,path:`finish-setup`,head:()=>({meta:[{title:`Create Admin User — Harper Fabric`}]}),component:jy}),I({getParentRoute:()=>fv,path:`/`,head:()=>({meta:[{title:`Cluster — Harper Fabric`}]}),component:kv});function hb(e){return I({getParentRoute:()=>e,path:`apis`,head:()=>({meta:[{title:`APIs — Harper Fabric`}]})}).lazy(()=>F(()=>import(`./index.lazy-vgSic7et.js`).then(e=>e.route),__vite__mapDeps([25,1,26,3,2,4,5,6,7,27,12,9,16,11,13,28,29])))}function gb(e,t){return[I({getParentRoute:()=>e,path:t===`cluster`?`apps`:`/`,head:()=>({meta:[{title:`Applications — Harper Fabric`}]}),component:we(()=>F(()=>import(`./applications-CSUVTH4E.js`),__vite__mapDeps([30,1,26,3,2,4,5,6,7,27,12,9,8,10,11,13,16,31,32,20,21,14,28,29,33,22,23,24,34])),`ApplicationsEditor`)})]}async function _b({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_certificates`});return t}function vb(e){return z({queryKey:[e.entityId,`list_certificates`],queryFn:()=>_b(e)})}var yb=[{header:`Certificate Name`,accessorKey:`name`,enableSorting:!0},{header:`Issuer`,accessorKey:`details.issuer`,enableSorting:!0},_g().display({header:`Expires At`,enableSorting:!1,id:`details.valid_to`,cell:e=>e.row.original.details.valid_to?new Date(e.row.original.details.valid_to).toLocaleString():`N/A`})];function bb({className:e,...t}){return(0,K.jsx)(`textarea`,{"data-slot":`input`,className:N(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
|
|
13
13
|
selection:text-primary-foreground
|
|
14
14
|
dark:aria-invalid:outline-destructive dark:aria-invalid:ring-destructive/50 ring-ring/10
|
|
15
15
|
dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 aria-invalid:outline-destructive/60
|
|
@@ -667,7 +667,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
667
667
|
}
|
|
668
668
|
]
|
|
669
669
|
}
|
|
670
|
-
`),Qx=`inmemory://harper/config-root.json`,$x=`harper://schemas/config-root.json`;async function eS(){let{json:e}=await F(async()=>{let{json:e}=await import(`./languageServices-B85WN-Ej.js`).then(e=>e.t);return{json:e}},__vite__mapDeps([33,1,20,4,21])),t=e.jsonDefaults,{schemas:n=[],...r}=t.diagnosticsOptions;n.some(e=>e.uri===$x)||t.setDiagnosticsOptions({...r,validate:!0,enableSchemaRequest:!1,schemas:[...n,{uri:$x,fileMatch:[Qx],schema:Zx}]})}var tS=({children:e})=>(0,K.jsx)(K.Fragment,{children:e});function nS(){let{clusterId:e,instanceId:t}=B({strict:!1}),{data:n,isLoading:r}=H(Lx({clusterId:e,instanceId:t})),i=q(),{version:a}=ae({strict:!1}),{data:o}=H(Gx(i,!1));n?.cluster;let s=n?.instance,{data:c,isLoading:l}=H(sx(i)),{data:u,isLoading:d}=H(Wx(i)),f=Ef(),{data:p,isLoading:m}=H(Ux({...i,enabled:f})),h=(0,G.useMemo)(()=>{if(!p)return null;let e=0,t=n=>{n.mtime&&(e=Math.max(e,new Date(n.mtime).getTime())),`entries`in n&&n.entries&&n.entries.forEach(t)};return t(p),e||null},[p]),g=(0,G.useMemo)(()=>u?Jx(u):null,[u]),_=Fg(),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(``),[S,C]=(0,G.useState)(null),[w,T]=(0,G.useState)([]),{onConfigUpdate:E,isPending:D}=Vx();(0,G.useEffect)(()=>{g&&!v&&(x(JSON.stringify(g,null,4)),C(null),T([]))},[g,v]);let O=(0,G.useCallback)(e=>{if(x(e||``),e)try{let t=JSON.parse(e);C(null);let n=[],r=(e,t,i=``)=>{for(let a in e){let o=i?`${i}.${a}`:a,s=e[a],c=t?.[a];qx(o,s,c)?n.push(o):typeof s==`object`&&s&&!Array.isArray(s)&&r(s,c,o)}for(let r in t){let a=i?`${i}.${r}`:r;r in e||qx(a,void 0,t[r])&&n.push(a)}};g&&r(t,g),T(n)}catch(e){C(e.message),T([])}},[u]),k=(0,G.useCallback)(()=>{eS().catch(e=>{console.error(`Failed to register the Harper config JSON Schema:`,e)})},[]),A=(0,G.useCallback)(()=>{if(!(S||w.length>0))try{let e=JSON.parse(b),t=Xx(Yx(g,e));E(t),y(!1)}catch(e){C(e.message)}},[b,S,E,g,w.length]);return(0,G.useMemo)(()=>[],[o,s]),(0,K.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,K.jsx)(tS,{children:(0,K.jsxs)(`dl`,{className:`grid grid-cols-1 sm:grid-cols-3`,children:[(0,K.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,K.jsx)(Rx,{loadingRegistration:l,registrationInfo:c})}),(0,K.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,K.jsx)(zx,{loading:m,timestamp:h})}),(0,K.jsx)(`div`,{className:`px-4 pb-4 text-right sm:col-span-1 sm:px-0`,children:(0,K.jsx)(jx,{targetNoun:`Instance`,instanceClient:i.instanceClient,operation:`restart`})})]})}),(0,K.jsxs)(`div`,{className:`flex-none flex items-center justify-between mb-2`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`h3`,{className:`font-bold text-sm/6`,children:[`Instance Config `,v?`(editing)`:`(read only)`]}),!t&&!1]}),(0,K.jsx)(`div`,{className:`flex items-center gap-2 pr-4`,children:v?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(P,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>y(!1),children:[(0,K.jsx)(gn,{className:`w-4 h-4 mr-1`}),` Cancel`]}),(0,K.jsxs)(P,{size:`sm`,disabled:!!S||w.length>0||D,onClick:A,children:[(0,K.jsx)(va,{className:`w-4 h-4 mr-1`}),` `,D?`Saving...`:`Save & Restart`]})]}):(0,K.jsxs)(P,{size:`sm`,onClick:()=>y(!0),children:[(0,K.jsx)(Fa,{className:`w-4 h-4 mr-1`}),` Edit`]})})]}),S&&(0,K.jsxs)(Nx,{variant:`destructive`,className:`mb-4`,children:[(0,K.jsx)(mr,{className:`h-4 w-4`}),(0,K.jsx)(Px,{children:`Invalid JSON`}),(0,K.jsx)(Fx,{children:S})]}),w.length>0&&(0,K.jsxs)(Nx,{variant:`destructive`,className:`mb-4`,children:[(0,K.jsx)(mr,{className:`h-4 w-4`}),(0,K.jsx)(Px,{children:`Restricted Configuration`}),(0,K.jsxs)(Fx,{children:[`The following fields cannot be modified via Studio:`,(0,K.jsx)(`ul`,{className:`list-disc ml-4 mt-2`,children:w.map(e=>(0,K.jsx)(`li`,{children:(0,K.jsx)(`code`,{children:e})},e))})]})]}),(0,K.jsx)(`div`,{className:`grow`,children:d?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(eh,{className:`w-full`}),(0,K.jsx)(eh,{className:`w-full`}),(0,K.jsx)(eh,{className:`w-1/2`})]}):(0,K.jsx)(Lg,{className:`w-full min-h-full h-96`,path:Qx,language:`json`,theme:_,onMount:k,options:{readOnly:!v,scrollBeyondLastLine:!1},value:v?b:JSON.stringify(g,null,4),onChange:O})})]})}function rS(){let e=q(),{data:t}=H(sx(e));return t===void 0?void 0:Nd(t.version)}var iS=(0,G.createContext)(void 0);function aS({children:e}){return(0,K.jsx)(iS,{value:rS(),children:e})}var oS=_g(),sS=[{header:`Role`,accessorKey:`role`,enableSorting:!1},oS.display({header:`ID`,id:`id`,enableSorting:!1,cell:e=>(0,K.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,title:e.row.original.id,children:e.row.original.id})}),oS.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>xg((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),oS.display({header:`Updated`,id:`__updatedtime__`,enableSorting:!1,cell:e=>xg((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}),oS.display({header:`Super User`,id:`super_user`,enableSorting:!1,cell:e=>e.row.original.permission.super_user?`Yes`:`No`}),oS.display({header:`Structure User`,id:`structure_user`,enableSorting:!1,cell:e=>e.row.original.permission.structure_user?`Yes`:`No`}),oS.display({header:`Operations`,id:`operations`,enableSorting:!1,cell:e=>(0,K.jsx)(cS,{permission:e.row.original.permission})})];function cS({permission:e}){let t=(0,G.useContext)(iS);if(t===void 0)return null;let n=Gd(e,t);if(n===`absent`||n===`database`||n===`inert`)return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{"aria-hidden":!0,children:`—`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`No operation restriction`})]});if(n===`breaks-auth`)return(0,K.jsx)(`span`,{className:`text-destructive`,title:`Harper cannot expand this value; assigning the role breaks authentication instance-wide`,children:`breaks auth`});if(n===`malformed`)return(0,K.jsx)(`span`,{className:`text-destructive`,title:`Not a list of operation names`,children:`invalid`});if(Vd(e))return(0,K.jsx)(`span`,{className:`text-destructive`,title:`Harper rejects an allowlist on a super_user or cluster_user role`,children:`conflicts with role`});let r=Id(Wd(e)??[]),i=Ld(r);return(0,K.jsxs)(`span`,{title:i,children:[r.length,` allowed`,(0,K.jsxs)(`span`,{className:`sr-only`,children:[`: `,i]})]})}async function lS(e){let{role:t,super_user:n,structure_user:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`add_role`,role:t,permission:{super_user:n,structure_user:r}});return a}function uS(){return R({mutationFn:lS})}var dS=S({role:A().nonempty({error:`Please enter a role.`}).regex(/^[a-zA-Z_]*$/,{error:`Role must contain only letters and underscores.`}).max(30,{error:`Role cannot be longer than 30 characters.`}),super_user:D(),structure_user:D()});function fS({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=Pt({resolver:Ke(dS),defaultValues:{role:``,super_user:!1,structure_user:!1}}),i=q(),{mutate:a,isPending:o}=uS(),s=(0,G.useCallback)(async e=>{e&&a({role:e.role,super_user:e.super_user,structure_user:e.structure_user,...i},{onSuccess:e=>{r.reset(),t(e.id),U.success(`Role added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,K.jsx)(fn,{onOpenChange:n,open:e,children:(0,K.jsx)(cn,{"aria-describedby":void 0,children:(0,K.jsx)(Lc,{...r,children:(0,K.jsxs)(`form`,{id:`instance-add-role-form`,name:`instance-add-role-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,K.jsxs)(rn,{className:`md:col-span-2`,children:[(0,K.jsx)(ln,{children:`Add New Role`}),(0,K.jsx)(un,{children:`After adding the role, you will be able to edit the per-table permissions.`})]}),(0,K.jsx)(Y,{control:r.control,name:`role`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`super_user`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex`,children:[(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Z,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Super User`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`structure_user`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex`,children:[(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Z,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Structure User`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(on,{className:`md:col-span-2`,children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(P,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,K.jsxs)(P,{type:`submit`,variant:`submit`,disabled:o,children:[(0,K.jsx)(va,{}),` Add Role`]})]})})]})})})})}function pS({entityId:e,instanceClient:t}){return z({queryKey:[e,`list_roles`],queryFn:()=>mS({instanceClient:t}),refetchInterval:al(1e4),retry:ol()})}async function mS({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_roles`});return t}function hS({instanceDatabaseMap:e,currentRolePermissions:t,version:n,showAttributes:r}){let i={...t};if(t.super_user||t.structure_user||t.cluster_user)return t;let[a,o,s]=n.split(`.`).map(e=>parseInt(e,10)),c=n!==`2.0.000`&&a<=2&&o<=1&&s<=2,l=(e,t)=>(Object.defineProperty(i,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),t),u=Nd(n);for(let n in e){if(zd.has(n)&&(n!==`operations`||u))continue;let i=l(n,{tables:{}}),a=t&&Bd(t,n,u);for(let t in e[n]){let o=e[n][t].attributes.map(e=>e.attribute).sort(),s=a&&a.tables?.[t];c?i.tables[t]=gS(s,o,r):i.tables[t]=_S(s,o,r)}}return i}function gS(e,t,n){let r=e&&pp(e.attribute_restrictions,`attribute_name`);return{read:!e||e.read,insert:!e||e.insert,update:!e||e.update,delete:!e||e.delete,attribute_restrictions:t.filter(()=>n).map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:!e||e.read,insert:n?n.insert:!e||e.insert,update:n?n.update:!e||e.update,delete:n?n.delete:!e||e.delete}})}}function _S(e,t,n){let r=e&&pp(e.attribute_permissions||[],`attribute_name`);return{read:e?e.read:!1,insert:e?e.insert:!1,update:e?e.update:!1,delete:e?e.delete:!1,attribute_permissions:n?t.map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:e?.attribute_permissions?.length?!1:e?.read||!1,insert:n?n.insert:e?.attribute_permissions?.length?!1:e?.insert||!1,update:n?n.update:e?.attribute_permissions?.length?!1:e?.update||!1}}):null}}function vS({value:e,onChange:t,version:n,allowlistRejected:r,structureUserDdl:i,disabled:a}){let o=e!==void 0,s=Fd(n),c=Dd.filter(t=>!s.includes(t)&&e?.includes(t.name)),l=Pd(n),u=new Set(e??[]),d=(e??[]).filter(e=>!Md(e)),f=e?Id(e):[],p=f.some(e=>Ad(e)?.su),m=(0,G.useRef)([]),g=e=>{let n=new Set(e),r=Dd.map(e=>e.name).filter(e=>n.has(e)),i=[...n].filter(e=>!Md(e)).sort();t([...r,...i])},_=t=>{let n=new Set(e??[]);n.has(t)?n.delete(t):n.add(t),g(n)};return(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-md border p-3`,children:[(0,K.jsxs)(Vc,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Zg,{checked:o,onCheckedChange:n=>{n?t(m.current):(m.current=e??[],t(void 0))},disabled:a,"aria-label":`Restrict operations`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Restrict operations`})]}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o?`Only the operations below are allowed — anything unlisted is denied. Listing an operation that normally requires super_user deliberately grants it to this role. SQL statements are authorized against table permissions instead, so this list does not restrict them.`:`No operation-level restriction. Add one to limit this role to an explicit list of API operations (for example a deploy-only CI role).`}),r&&(0,K.jsx)(`p`,{className:`text-xs text-destructive`,children:`Harper does not accept an operations allowlist on a super_user or cluster_user role — the save is rejected unless the list is dropped. Clear that flag to scope this role by operation; otherwise the allowlist is removed when you save.`}),i&&o&&(0,K.jsxs)(`p`,{className:`text-xs text-warning`,children:[`This role is a structure user, so it reaches`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:Ud.join(`, `)}),i===!0?` (and create/drop database) on any database regardless of the list below.`:(0,K.jsxs)(K.Fragment,{children:[` `,`on `,(0,K.jsx)(`span`,{className:`font-mono`,children:i.join(`, `)}),` `,`regardless of the list below — and listing them here cannot reach another database.`]}),` Every other operation is still gated by the list.`]}),o&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[s.map(e=>(0,K.jsx)(yS,{group:e,checked:u.has(e.name),onToggle:_,disabled:a},e.name)),c.map(e=>(0,K.jsx)(yS,{group:e,note:`Saved on this role, but not offered for this instance's Harper version.`,checked:!0,onToggle:_,disabled:a},e.name))]}),(0,K.jsx)(xS,{grantable:l,selectedSet:u,onToggle:_,disabled:a}),d.length>0&&(0,K.jsx)(`div`,{className:`flex max-h-24 flex-wrap gap-1 overflow-y-auto`,children:d.map(e=>(0,K.jsx)(SS,{name:e,onRemove:()=>_(e),disabled:a},e))}),f.length===0?(0,K.jsxs)(`p`,{className:`text-xs text-destructive`,children:[e?.length?`Every entry here is inert`:`Nothing selected`,` `,`— this role cannot run any Operations API call`,i?`, except the DDL noted above`:``,` `,`(SQL is gated by table permissions, not this list).`]}):(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground`,title:Ld(f),children:[`Effectively allows `,h(f.length,`operation`,`operations`),p?`, including some that normally require super_user`:``,`.`,(0,K.jsxs)(`span`,{className:`sr-only`,children:[`: `,Ld(f)]})]})]})]})}function yS({group:e,note:t,checked:n,onToggle:r,disabled:i}){return(0,K.jsxs)(Vc,{className:`flex items-start gap-2 font-normal`,children:[(0,K.jsx)($,{type:`checkbox`,className:`mt-0.5 size-4`,checked:n,onChange:()=>r(e.name),disabled:i}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{className:`font-mono text-xs`,children:e.name}),(0,K.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:t??e.description})]})]})}var bS=/^[A-Za-z][A-Za-z0-9_.:-]*$/;function xS({grantable:e,selectedSet:t,onToggle:n,disabled:r}){let[i,a]=(0,G.useState)(!1),[o,s]=(0,G.useState)(``),c=(0,G.useRef)(null),l=(0,G.useRef)(null);(0,G.useEffect)(()=>{if(!i)return;let e=0,t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>c.current?.focus())});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[i]);let u=o.trim(),d=u.toLowerCase(),f=d?e.filter(e=>e.name.includes(d)):e,p=fp(f,`category`),m=Ad(u),h=!m&&(Md(d)||Td.some(e=>e.name===d)),g=bS.test(u)&&!Md(u)&&!h&&!m?.nonDelegable&&!m?.aliasOf&&!e.some(e=>e.name===u)&&!t.has(u)?u:void 0;return(0,K.jsxs)(bo,{open:i,onOpenChange:e=>{a(e),e||s(``)},children:[(0,K.jsx)(xo,{asChild:!0,disabled:r,children:(0,K.jsxs)(P,{type:`button`,variant:`outline`,className:`w-full justify-between font-normal`,children:[(0,K.jsx)(`span`,{className:`truncate text-muted-foreground`,children:`Add operations…`}),(0,K.jsx)(pn,{className:`size-4 shrink-0 opacity-60`})]})}),(0,K.jsxs)(So,{ref:l,className:`w-(--radix-dropdown-menu-trigger-width) max-h-72 overflow-y-auto`,align:`start`,children:[(0,K.jsx)(`input`,{ref:c,value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=l.current?.querySelectorAll(`[role="menuitemcheckbox"]:not([data-disabled])`);t?.length&&(e.key===`ArrowDown`?t[0]:t[t.length-1]).focus();return}e.key.length===1&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.stopPropagation()},placeholder:`Filter operations…`,"aria-label":`Filter operations`,className:`mb-1 w-full rounded-md border bg-transparent px-2 py-1 text-sm outline-none`}),wd.filter(e=>p[e]).map(e=>(0,K.jsxs)(`div`,{children:[(0,K.jsx)(To,{className:`text-xs text-muted-foreground`,children:e}),p[e].map(e=>(0,K.jsxs)(wo,{checked:t.has(e.name),onCheckedChange:()=>n(e.name),onSelect:e=>e.preventDefault(),children:[(0,K.jsx)(`span`,{className:`flex-1 truncate font-mono text-xs`,children:e.name}),cd(e.name)?(0,K.jsx)(Wo,{variant:`outline`,title:`Harper authorizes this operation under its internal handler name, so listing it has no effect on current 5.x releases (HarperFast/harper#2175). Kept available so the role is ready once that lands.`,children:`not yet enforced`}):e.su&&(0,K.jsx)(Wo,{variant:`warning`,title:`Normally requires super_user; listing it grants it to this role`,children:`super_user`})]},e.name))]},e)),g&&(0,K.jsxs)(wo,{checked:!1,onCheckedChange:()=>n(g),onSelect:e=>e.preventDefault(),children:[(0,K.jsx)(ca,{className:`size-3`}),(0,K.jsxs)(`span`,{className:`flex-1 truncate text-xs`,children:[`Grant "`,(0,K.jsx)(`span`,{className:`font-mono`,children:g}),`" `,m?`(listed for newer Harper versions — this instance may reject it)`:`(component-registered operation)`]})]}),f.length===0&&!g&&(0,K.jsx)(`div`,{className:`px-2 py-1.5 text-sm text-muted-foreground`,children:`No matching operations`})]})]})}function SS({name:e,onRemove:t,disabled:n}){let r=Ad(e),i=ld(e)?`destructive`:r?.su?`warning`:r?`secondary`:`outline`,a=r?.aliasOf?`Legacy alias: Harper authorizes this operation under '${r.aliasOf}', so this entry grants nothing. Grant '${r.aliasOf}' instead.`:cd(e)?`Harper authorizes this operation under its internal handler name, so this grant has no effect on current 5.x releases (HarperFast/harper#2175).`:r?.nonDelegable?`Always requires an actual super_user role; listing it cannot delegate the operation to a non-super_user role.`:r?.outOfGate||r?.caveat?r.caveat:r?.su?`Normally requires super_user; listing it grants it to this role.`:r?void 0:`Not in the built-in catalog — kept as-is (for example a component-registered operation).`;return(0,K.jsxs)(Wo,{variant:i,title:a,className:`gap-1 font-mono text-xs`,children:[e,!n&&(0,K.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e}`,onClick:t,className:`ml-0.5 rounded-sm hover:text-destructive`,children:(0,K.jsx)(gn,{className:`size-3`})})]})}function CS({kind:e,assigning:t,databaseCollision:n}){return e===`malformed`?(0,K.jsxs)(`p`,{className:`text-xs text-destructive`,children:[`This role's `,(0,K.jsx)(`span`,{className:`font-mono`,children:`operations`}),` `,`value is not a list of operation names. Harper still gates on it: a string is read one character at a time, so every operation is denied; an array with non-string members enforces whatever it does expand to; and a falsy value makes each of this role's requests fail outright. The role cannot be saved again until it is fixed.`,` `,t?`Correct it in the role editor.`:`Correct it in the JSON below.`]}):(0,K.jsxs)(`p`,{className:`text-xs text-destructive`,children:[`This role's `,(0,K.jsx)(`span`,{className:`font-mono`,children:`operations`}),` `,`value is not a list of operation names — most often table permissions on a database of that name, kept from an older Harper. This version cannot expand it, and `,t?`assigning this role to a user breaks authentication for every user on the instance. Pick a different role, and repair this one in the role editor first.`:(0,K.jsxs)(K.Fragment,{children:[`authentication breaks for every user on the instance as soon as a user holds this role. Remove the`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`operations`}),` `,`key in the JSON below — that alone restores authentication.`,n&&(0,K.jsxs)(K.Fragment,{children:[` `,`Separately, and only if this instance needs allowlists at all: a database named`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`operations`}),` `,`stops every role from using one. Retiring it means migrating its data and table grants to a differently-named database and verifying them there first — dropping it destroys whatever it holds, so treat that as a planned migration rather than part of this repair.`]})]})]})}function wS(e){if(e.super_user!==!0&&e.structure_user!==!0&&e.cluster_user!==!0)return e;let t=Vd(e),n={...e};for(let e in n)(!zd.has(e)||e===`operations`&&(t||!Array.isArray(n.operations))||n[e]===!1)&&delete n[e];return n}async function TS({id:e,permission:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`alter_role`,id:e,permission:t});return r}function ES(){return R({mutationFn:TS})}async function DS({id:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_role`,id:e});return n}function OS(){return R({mutationFn:DS})}async function kS({instanceClient:e,skipRecordCount:t}){let{data:n}=await e.post(`/`,{operation:`describe_all`,skip_record_count:t||void 0,exact_count:!t&&void 0});return n}function AS(e){return z({queryKey:[e.entityId,`describe_all`,!!e.skipRecordCount],queryFn:()=>kS(e),staleTime:6e4,gcTime:5e3,retry:!1})}function jS(e){try{return JSON.parse(e)}catch{return null}}function MS({data:e,instanceId:t,clusterId:n,isModalOpen:r,closeModal:i,onSelectRole:a,onChangesSaved:o}){let s=Fg(),{role:c,permission:l}=e,[u,d]=(0,G.useState)(JSON.stringify(l,null,2)),f=q(),[p,m]=(0,G.useState)(!0),{data:h}=H(AS({...f,skipRecordCount:!0})),{data:g}=H(sx(f)),_=Dn(t??n).user?.role?.id===e.id,[v,y]=m_(u?.includes(`attribute_name`)),{mutate:b,isPending:x}=ES(),{mutate:S,isPending:C}=OS(),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(e=>{m(e.length===0)},[m]),D=(0,G.useMemo)(()=>JSON.stringify(h&&g&&Kd(hS({instanceDatabaseMap:h,currentRolePermissions:u&&Ue(u)||l,version:g.version,showAttributes:v})),null,2),[l,h,g,v]);(0,G.useEffect)(()=>{d(D)},[D]);let O=Nd(g?.version),k=(0,G.useRef)(null),{operationsRaw:A,operationsJson:j,operationsKind:ee,allowlistRejected:M,structureUserDdl:N}=(0,G.useMemo)(()=>{let e=O&&u?jS(u):null,t=p&&typeof e==`object`&&e&&!Array.isArray(e)?e:k.current;if(t===null)return{operationsRaw:void 0,operationsJson:void 0,operationsKind:`absent`,allowlistRejected:!1,structureUserDdl:!1};k.current=t;let n=Wd(t);return{operationsRaw:t.operations,operationsJson:n&&JSON.stringify(n),operationsKind:Gd(t,O),allowlistRejected:Vd(t),structureUserDdl:Hd(t)}},[O,p,u]),te=(0,G.useMemo)(()=>j===void 0?void 0:JSON.parse(j),[j]),F=(0,G.useCallback)(e=>{d(t=>{let n=t?Ue(t):null;return!n||typeof n!=`object`||Array.isArray(n)?t:JSON.stringify(qd(n,e),null,2)})},[]),ne=(0,G.useCallback)(t=>{let n=Ue(t);if(n&&typeof n==`object`&&!Array.isArray(n)){let t=wS(n);b({id:e.id,permission:t,...f},{onSuccess:()=>{U.success(`Role updated successfully!`),a(void 0),o()}})}},[b,e.id,f,o,a]),re=(0,G.useCallback)(()=>{S({id:e.id,...f},{onSuccess:()=>{U.success(`Role deleted successfully!`),a(void 0),o()}})},[e.id,S,f,o,a]),ie=ee===`breaks-auth`||ee===`malformed`,ae=typeof A==`object`&&!!A&&!Array.isArray(A),oe=(0,G.useCallback)(()=>{u&&p&&ne(u)},[u,ne,p]),I=(0,G.useCallback)(()=>{T(!0)},[]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(fn,{onOpenChange:i,open:r,children:(0,K.jsxs)(cn,{resizable:!0,children:[(0,K.jsxs)(ln,{children:[_?`View`:`Edit`,` Role "`,c,`"`]}),(0,K.jsx)(un,{children:_?`You can view your own role, but you cannot edit it. Please assign yourself a different role to edit this role.`:`Edit the role's permissions in JSON format or remove the role entirely.`}),O&&g&&(ie?(0,K.jsx)(CS,{kind:ee,databaseCollision:ae}):(0,K.jsx)(vS,{allowlistRejected:M,structureUserDdl:N,value:te,onChange:F,version:g.version,disabled:_||!p})),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:D?(0,K.jsx)(Lg,{className:`w-full h-full`,theme:s,defaultLanguage:`json`,value:u,options:{readOnly:_,automaticLayout:!0},onValidate:E,onChange:d,defaultValue:D}):(0,K.jsx)(eh,{})}),(0,K.jsx)(on,{children:!_&&(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(P,{type:`button`,variant:`destructiveOutline`,onClick:I,disabled:x,children:`Delete Role`}),(0,K.jsx)(`div`,{className:`grow`}),(0,K.jsxs)(Vc,{className:`flex`,children:[(0,K.jsx)($,{type:`checkbox`,className:`w-6`,checked:v,onChange:y}),(0,K.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Pick Attributes`})]}),(0,K.jsx)(P,{variant:`submit`,onClick:oe,disabled:x||!p||ie,children:`Save Changes`})]})})]})}),(0,K.jsx)(Wu,{isModalOpen:w,setIsModalOpen:T,deletionConfirmed:re,deletionPending:C,typeOfThingBeingDeleted:`role`,nameOfThingBeingDeleted:c,hideDataLossWarning:!0})]})}function NS(){let e=se(),{clusterId:t,instanceId:n,roleId:r}=B({strict:!1}),i=q(),{data:a,refetch:o,isFetching:s,isRefetching:c}=ge(pS(i)),l=(0,G.useMemo)(()=>a?.find(e=>e.id===r),[a,r]),u=(0,G.useCallback)(t=>{let n=[r?`..`:``,t].filter(Boolean);e({to:n.join(`/`)})},[r,e]),d=!!r&&!!l,[f,p]=(0,G.useState)(!1),m=(0,G.useCallback)(()=>{p(!0)},[p]),h=(0,G.useCallback)(e=>{o(),p(!1),u(e)},[u,o]),g=(0,G.useCallback)(e=>{u(e.original.id)},[u]),_=(0,G.useCallback)(()=>{u(void 0)},[u]),v=Cg(o);return(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(Bo,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsx)(aS,{children:(0,K.jsxs)(vg,{columns:sS,data:a,isFetching:s,onRowClick:g,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:v,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(ua,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:f,children:[(0,K.jsx)(ca,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]})}),(0,K.jsx)(fS,{isModalOpen:f,onChangesSaved:h,setIsModalOpen:p}),d&&(0,K.jsx)(MS,{instanceId:n,clusterId:t,isModalOpen:d,closeModal:_,data:l,onSelectRole:u,onChangesSaved:()=>o()})]})}function PS(e){return!!e?.entries}function FS(e){if(!e?.entries)return[];let t=new Set;for(let n of e.entries)PS(n)&&t.add(n.name);return[...t].sort((e,t)=>e.localeCompare(t))}function IS({components:e,granted:t,onAdd:n,disabled:r,actionLabel:i=`Add`,commitOnBlur:a=!1}){let[o,s]=(0,G.useState)(``),[c,l]=(0,G.useState)(!1),[u,d]=(0,G.useState)(0),[f,p]=(0,G.useState)(!1),m=(0,G.useId)(),h=(0,G.useId)(),g=(0,G.useRef)(!1),_=(0,G.useRef)(!1),v=r||f,y=(0,G.useMemo)(()=>{if(e.length===0)return[];let n=o.trim(),r=n.toLowerCase(),i=new Set(t),a=e.filter(e=>!i.has(e)),s=(n?a.filter(e=>e.toLowerCase().includes(r)):a).map(e=>({value:e,custom:!1})),c=a.some(e=>e.toLowerCase()===r);return n&&!c&&s.push({value:n,custom:!0}),s},[e,t,o]),b=y.length===0?0:Math.min(u,y.length-1),x=(0,G.useCallback)(async e=>{if(_.current)return;let r=e.trim();if(!r||t.includes(r)){s(``);return}_.current=!0,p(!0);try{await n(r),s(``),l(!1)}catch{}finally{_.current=!1,p(!1)}},[t,n]),S=(0,G.useCallback)(()=>{x(y[b]?.value??o)},[x,y,b,o]),C=(0,G.useCallback)(e=>{if(e.key===`ArrowDown`){e.preventDefault(),l(!0),d(Math.min(b+1,Math.max(0,y.length-1)));return}if(e.key===`ArrowUp`){e.preventDefault(),d(Math.max(0,b-1));return}if(e.key===`Escape`){c&&(e.preventDefault(),e.stopPropagation(),l(!1));return}e.key===`Enter`&&(e.preventDefault(),S())},[c,y,b,S]),w=(0,G.useCallback)(()=>{g.current||(l(!1),a&&o.trim()&&S())},[a,o,S]),T=c&&y.length>0;return(0,K.jsxs)(`div`,{className:`relative grid gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)($,{type:`text`,role:`combobox`,"aria-expanded":T,"aria-controls":T?m:void 0,"aria-autocomplete":`list`,"aria-activedescendant":T&&y[b]?`${h}-${b}`:void 0,autoComplete:`off`,autoCapitalize:`off`,placeholder:e.length>0?`Search applications…`:`application name`,value:o,onChange:e=>{s(e.target.value),d(0),l(!0)},onFocus:()=>l(!0),onKeyDown:C,onBlur:w,disabled:v}),(0,K.jsxs)(P,{type:`button`,variant:`positiveOutline`,onMouseDown:e=>e.preventDefault(),onClick:S,disabled:v||!o.trim(),children:[(0,K.jsx)(ca,{}),` `,i]})]}),T&&(0,K.jsx)(`ul`,{id:m,role:`listbox`,className:`bg-popover text-popover-foreground absolute top-11 z-10 max-h-56 w-full overflow-auto rounded-md border p-1 shadow-md`,children:y.map((e,t)=>{let n=t===b;return(0,K.jsx)(`li`,{id:`${h}-${t}`,role:`option`,"aria-selected":n,onMouseEnter:()=>d(t),onMouseDown:t=>{t.preventDefault(),g.current=!0,x(e.value).finally(()=>{g.current=!1})},className:N(`flex cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-sm`,n&&`bg-accent text-accent-foreground`),children:e.custom?(0,K.jsxs)(`span`,{className:`truncate`,children:[`Use “`,(0,K.jsx)(`span`,{className:`font-mono`,children:e.value}),`” — not a deployed application`]}):(0,K.jsx)(`span`,{className:`truncate font-mono`,children:e.value})},e.custom?`__custom__${e.value}`:e.value)})})]})}var LS=`enc:v1:`;function RS(e){let t=e.replace(/-----BEGIN [^-]+-----/,``).replace(/-----END [^-]+-----/,``).replace(/\s+/g,``),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function zS(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function BS(e){return zS(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function VS(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function HS(){if(typeof crypto>`u`||!crypto.subtle)throw Error(`Secret encryption requires a secure context (HTTPS or localhost).`);return crypto.subtle}async function US(e,t,n){let r=HS(),i=RS(t),a=await r.importKey(`spki`,VS(i),{name:`RSA-OAEP`,hash:`SHA-256`},!1,[`encrypt`]),o=crypto.getRandomValues(new Uint8Array(32)),s=crypto.getRandomValues(new Uint8Array(12)),c=await r.importKey(`raw`,VS(o),{name:`AES-GCM`},!1,[`encrypt`]),l=new Uint8Array(await r.encrypt({name:`AES-GCM`,iv:VS(s),tagLength:128},c,VS(new TextEncoder().encode(e)))),u=l.slice(0,l.length-16),d=l.slice(l.length-16),f={kid:n,k:zS(new Uint8Array(await r.encrypt({name:`RSA-OAEP`},a,VS(o)))),iv:zS(s),ct:zS(u),tag:zS(d)};return LS+BS(new TextEncoder().encode(JSON.stringify(f)))}function WS(e){let t=e?.response?.data;return t?.error??t?.message??String(e)}var GS=`does not match`;function KS(e){return e.includes(GS)}async function qS({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_secrets_public_key`});return{publicKey:t.public_key,fingerprint:t.fingerprint}}var JS=M;async function YS(e){let{data:t}=await JS.post(`/ClusterSecrets`,{operation:`get_secrets_public_key`,clusterId:e});return{publicKey:t.publicKey,fingerprint:t.fingerprint}}function XS(e){return z({queryKey:[e.entityId,`get_secrets_public_key`,e.managedClusterId??`node`],queryFn:()=>e.managedClusterId?YS(e.managedClusterId):qS(e),staleTime:3e5,retry:!1})}async function ZS({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_secrets`});return t}function QS(e){return z({queryKey:[e.entityId,`list_secrets`],queryFn:()=>ZS(e)})}async function $S(e,t,n){let{publicKey:r,fingerprint:i}=await e.ensureQueryData(XS(t)),a=await US(t.value,r,i);try{let{data:e}=await t.instanceClient.post(`/`,{operation:`set_secret`,name:t.name,envelope:a,...t.processEnv===void 0?{}:{processEnv:t.processEnv},...t.grants===void 0?{}:{grants:t.grants}});return e}catch(r){let i=WS(r);if(!n&&KS(i))return e.removeQueries({queryKey:XS(t).queryKey}),$S(e,t,!0);throw Error(i)}}function eC(){let e=ue();return R({mutationFn:t=>$S(e,t,!1)})}async function tC({instanceClient:e,name:t}){try{let{data:n}=await e.post(`/`,{operation:`delete_secret`,name:t});return n}catch(e){throw Error(WS(e))}}function nC(){return R({mutationFn:tC})}async function rC(e,{instanceClient:t,name:n,component:r}){try{let{data:i}=await t.post(`/`,{operation:e,name:n,component:r});return i}catch(e){throw Error(WS(e))}}function iC(){return R({mutationFn:e=>rC(`grant_secret`,e)})}function aC(){return R({mutationFn:e=>rC(`revoke_secret`,e)})}function oC({name:e,initialGrants:t,components:n,onChanged:r}){let i=q(),{mutateAsync:a,isPending:o}=iC(),{mutateAsync:s,isPending:c}=aC(),l=o||c,[u,d]=(0,G.useState)(t),f=(0,G.useCallback)(async t=>{try{let n=await a({...i,name:e,component:t});d(n.grants),r?.()}catch(e){throw U.error(String(e)),e}},[a,i,e,r]),p=(0,G.useCallback)(async t=>{try{let n=await s({...i,name:e,component:t});d(n.grants),r?.()}catch(e){U.error(String(e))}},[s,i,e,r]);return(0,K.jsxs)(`div`,{className:`grid gap-2`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Granted applications`}),(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Only granted applications can read this secret through the `,(0,K.jsx)(`code`,{className:`font-mono`,children:`secrets`}),` `,`accessor. Changes apply immediately.`]}),u.length>0&&(0,K.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:u.map(e=>(0,K.jsxs)(Wo,{variant:`secondary`,children:[e,(0,K.jsxs)(`button`,{type:`button`,onClick:()=>void p(e),disabled:l,title:`Revoke ${e}`,className:`cursor-pointer disabled:cursor-default`,children:[(0,K.jsx)(gn,{}),(0,K.jsxs)(`span`,{className:`sr-only`,children:[`Revoke `,e]})]})]},e))}),(0,K.jsx)(IS,{components:n,granted:u,onAdd:f,disabled:l,actionLabel:`Grant`})]})}var sC=`********`,cC=/^[\w.-]+$/,lC=/^(\s*(?:export\s+)?)([\w.-]+)\s*=(.*)$/;function uC(e){return e.split(`/`).pop()??``}function dC(e){if(!e)return!1;let t=uC(e).toLowerCase();return t===`.env`||t.startsWith(`.env.`)}var fC=[`.example`,`.sample`,`.template`];function pC(e){if(!dC(e))return!1;let t=uC(e).toLowerCase();return fC.some(e=>t.endsWith(e))}function mC(e){return dC(e)&&!pC(e)}function hC(e){let t={};if(!e)return t;let n=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm,r=e.replace(/\r\n?/g,`
|
|
670
|
+
`),Qx=`inmemory://harper/config-root.json`,$x=`harper://schemas/config-root.json`;async function eS(){let{json:e}=await F(async()=>{let{json:e}=await import(`./languageServices-t5FBpX-i.js`).then(e=>e.t);return{json:e}},__vite__mapDeps([33,1,20,4,21])),t=e.jsonDefaults,{schemas:n=[],...r}=t.diagnosticsOptions;n.some(e=>e.uri===$x)||t.setDiagnosticsOptions({...r,validate:!0,enableSchemaRequest:!1,schemas:[...n,{uri:$x,fileMatch:[Qx],schema:Zx}]})}var tS=({children:e})=>(0,K.jsx)(K.Fragment,{children:e});function nS(){let{clusterId:e,instanceId:t}=B({strict:!1}),{data:n,isLoading:r}=H(Lx({clusterId:e,instanceId:t})),i=q(),{version:a}=ae({strict:!1}),{data:o}=H(Gx(i,!1));n?.cluster;let s=n?.instance,{data:c,isLoading:l}=H(sx(i)),{data:u,isLoading:d}=H(Wx(i)),f=Ef(),{data:p,isLoading:m}=H(Ux({...i,enabled:f})),h=(0,G.useMemo)(()=>{if(!p)return null;let e=0,t=n=>{n.mtime&&(e=Math.max(e,new Date(n.mtime).getTime())),`entries`in n&&n.entries&&n.entries.forEach(t)};return t(p),e||null},[p]),g=(0,G.useMemo)(()=>u?Jx(u):null,[u]),_=Fg(),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(``),[S,C]=(0,G.useState)(null),[w,T]=(0,G.useState)([]),{onConfigUpdate:E,isPending:D}=Vx();(0,G.useEffect)(()=>{g&&!v&&(x(JSON.stringify(g,null,4)),C(null),T([]))},[g,v]);let O=(0,G.useCallback)(e=>{if(x(e||``),e)try{let t=JSON.parse(e);C(null);let n=[],r=(e,t,i=``)=>{for(let a in e){let o=i?`${i}.${a}`:a,s=e[a],c=t?.[a];qx(o,s,c)?n.push(o):typeof s==`object`&&s&&!Array.isArray(s)&&r(s,c,o)}for(let r in t){let a=i?`${i}.${r}`:r;r in e||qx(a,void 0,t[r])&&n.push(a)}};g&&r(t,g),T(n)}catch(e){C(e.message),T([])}},[u]),k=(0,G.useCallback)(()=>{eS().catch(e=>{console.error(`Failed to register the Harper config JSON Schema:`,e)})},[]),A=(0,G.useCallback)(()=>{if(!(S||w.length>0))try{let e=JSON.parse(b),t=Xx(Yx(g,e));E(t),y(!1)}catch(e){C(e.message)}},[b,S,E,g,w.length]);return(0,G.useMemo)(()=>[],[o,s]),(0,K.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,K.jsx)(tS,{children:(0,K.jsxs)(`dl`,{className:`grid grid-cols-1 sm:grid-cols-3`,children:[(0,K.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,K.jsx)(Rx,{loadingRegistration:l,registrationInfo:c})}),(0,K.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,K.jsx)(zx,{loading:m,timestamp:h})}),(0,K.jsx)(`div`,{className:`px-4 pb-4 text-right sm:col-span-1 sm:px-0`,children:(0,K.jsx)(jx,{targetNoun:`Instance`,instanceClient:i.instanceClient,operation:`restart`})})]})}),(0,K.jsxs)(`div`,{className:`flex-none flex items-center justify-between mb-2`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`h3`,{className:`font-bold text-sm/6`,children:[`Instance Config `,v?`(editing)`:`(read only)`]}),!t&&!1]}),(0,K.jsx)(`div`,{className:`flex items-center gap-2 pr-4`,children:v?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(P,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>y(!1),children:[(0,K.jsx)(gn,{className:`w-4 h-4 mr-1`}),` Cancel`]}),(0,K.jsxs)(P,{size:`sm`,disabled:!!S||w.length>0||D,onClick:A,children:[(0,K.jsx)(va,{className:`w-4 h-4 mr-1`}),` `,D?`Saving...`:`Save & Restart`]})]}):(0,K.jsxs)(P,{size:`sm`,onClick:()=>y(!0),children:[(0,K.jsx)(Fa,{className:`w-4 h-4 mr-1`}),` Edit`]})})]}),S&&(0,K.jsxs)(Nx,{variant:`destructive`,className:`mb-4`,children:[(0,K.jsx)(mr,{className:`h-4 w-4`}),(0,K.jsx)(Px,{children:`Invalid JSON`}),(0,K.jsx)(Fx,{children:S})]}),w.length>0&&(0,K.jsxs)(Nx,{variant:`destructive`,className:`mb-4`,children:[(0,K.jsx)(mr,{className:`h-4 w-4`}),(0,K.jsx)(Px,{children:`Restricted Configuration`}),(0,K.jsxs)(Fx,{children:[`The following fields cannot be modified via Studio:`,(0,K.jsx)(`ul`,{className:`list-disc ml-4 mt-2`,children:w.map(e=>(0,K.jsx)(`li`,{children:(0,K.jsx)(`code`,{children:e})},e))})]})]}),(0,K.jsx)(`div`,{className:`grow`,children:d?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(eh,{className:`w-full`}),(0,K.jsx)(eh,{className:`w-full`}),(0,K.jsx)(eh,{className:`w-1/2`})]}):(0,K.jsx)(Lg,{className:`w-full min-h-full h-96`,path:Qx,language:`json`,theme:_,onMount:k,options:{readOnly:!v,scrollBeyondLastLine:!1},value:v?b:JSON.stringify(g,null,4),onChange:O})})]})}function rS(){let e=q(),{data:t}=H(sx(e));return t===void 0?void 0:Nd(t.version)}var iS=(0,G.createContext)(void 0);function aS({children:e}){return(0,K.jsx)(iS,{value:rS(),children:e})}var oS=_g(),sS=[{header:`Role`,accessorKey:`role`,enableSorting:!1},oS.display({header:`ID`,id:`id`,enableSorting:!1,cell:e=>(0,K.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,title:e.row.original.id,children:e.row.original.id})}),oS.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>xg((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),oS.display({header:`Updated`,id:`__updatedtime__`,enableSorting:!1,cell:e=>xg((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}),oS.display({header:`Super User`,id:`super_user`,enableSorting:!1,cell:e=>e.row.original.permission.super_user?`Yes`:`No`}),oS.display({header:`Structure User`,id:`structure_user`,enableSorting:!1,cell:e=>e.row.original.permission.structure_user?`Yes`:`No`}),oS.display({header:`Operations`,id:`operations`,enableSorting:!1,cell:e=>(0,K.jsx)(cS,{permission:e.row.original.permission})})];function cS({permission:e}){let t=(0,G.useContext)(iS);if(t===void 0)return null;let n=Gd(e,t);if(n===`absent`||n===`database`||n===`inert`)return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{"aria-hidden":!0,children:`—`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`No operation restriction`})]});if(n===`breaks-auth`)return(0,K.jsx)(`span`,{className:`text-destructive`,title:`Harper cannot expand this value; assigning the role breaks authentication instance-wide`,children:`breaks auth`});if(n===`malformed`)return(0,K.jsx)(`span`,{className:`text-destructive`,title:`Not a list of operation names`,children:`invalid`});if(Vd(e))return(0,K.jsx)(`span`,{className:`text-destructive`,title:`Harper rejects an allowlist on a super_user or cluster_user role`,children:`conflicts with role`});let r=Id(Wd(e)??[]),i=Ld(r);return(0,K.jsxs)(`span`,{title:i,children:[r.length,` allowed`,(0,K.jsxs)(`span`,{className:`sr-only`,children:[`: `,i]})]})}async function lS(e){let{role:t,super_user:n,structure_user:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`add_role`,role:t,permission:{super_user:n,structure_user:r}});return a}function uS(){return R({mutationFn:lS})}var dS=S({role:A().nonempty({error:`Please enter a role.`}).regex(/^[a-zA-Z_]*$/,{error:`Role must contain only letters and underscores.`}).max(30,{error:`Role cannot be longer than 30 characters.`}),super_user:D(),structure_user:D()});function fS({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=Pt({resolver:Ke(dS),defaultValues:{role:``,super_user:!1,structure_user:!1}}),i=q(),{mutate:a,isPending:o}=uS(),s=(0,G.useCallback)(async e=>{e&&a({role:e.role,super_user:e.super_user,structure_user:e.structure_user,...i},{onSuccess:e=>{r.reset(),t(e.id),U.success(`Role added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,K.jsx)(fn,{onOpenChange:n,open:e,children:(0,K.jsx)(cn,{"aria-describedby":void 0,children:(0,K.jsx)(Lc,{...r,children:(0,K.jsxs)(`form`,{id:`instance-add-role-form`,name:`instance-add-role-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,K.jsxs)(rn,{className:`md:col-span-2`,children:[(0,K.jsx)(ln,{children:`Add New Role`}),(0,K.jsx)(un,{children:`After adding the role, you will be able to edit the per-table permissions.`})]}),(0,K.jsx)(Y,{control:r.control,name:`role`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`super_user`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex`,children:[(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Z,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Super User`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`structure_user`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex`,children:[(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,K.jsx)(Z,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Structure User`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(on,{className:`md:col-span-2`,children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(P,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,K.jsxs)(P,{type:`submit`,variant:`submit`,disabled:o,children:[(0,K.jsx)(va,{}),` Add Role`]})]})})]})})})})}function pS({entityId:e,instanceClient:t}){return z({queryKey:[e,`list_roles`],queryFn:()=>mS({instanceClient:t}),refetchInterval:al(1e4),retry:ol()})}async function mS({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_roles`});return t}function hS({instanceDatabaseMap:e,currentRolePermissions:t,version:n,showAttributes:r}){let i={...t};if(t.super_user||t.structure_user||t.cluster_user)return t;let[a,o,s]=n.split(`.`).map(e=>parseInt(e,10)),c=n!==`2.0.000`&&a<=2&&o<=1&&s<=2,l=(e,t)=>(Object.defineProperty(i,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),t),u=Nd(n);for(let n in e){if(zd.has(n)&&(n!==`operations`||u))continue;let i=l(n,{tables:{}}),a=t&&Bd(t,n,u);for(let t in e[n]){let o=e[n][t].attributes.map(e=>e.attribute).sort(),s=a&&a.tables?.[t];c?i.tables[t]=gS(s,o,r):i.tables[t]=_S(s,o,r)}}return i}function gS(e,t,n){let r=e&&pp(e.attribute_restrictions,`attribute_name`);return{read:!e||e.read,insert:!e||e.insert,update:!e||e.update,delete:!e||e.delete,attribute_restrictions:t.filter(()=>n).map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:!e||e.read,insert:n?n.insert:!e||e.insert,update:n?n.update:!e||e.update,delete:n?n.delete:!e||e.delete}})}}function _S(e,t,n){let r=e&&pp(e.attribute_permissions||[],`attribute_name`);return{read:e?e.read:!1,insert:e?e.insert:!1,update:e?e.update:!1,delete:e?e.delete:!1,attribute_permissions:n?t.map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:e?.attribute_permissions?.length?!1:e?.read||!1,insert:n?n.insert:e?.attribute_permissions?.length?!1:e?.insert||!1,update:n?n.update:e?.attribute_permissions?.length?!1:e?.update||!1}}):null}}function vS({value:e,onChange:t,version:n,allowlistRejected:r,structureUserDdl:i,disabled:a}){let o=e!==void 0,s=Fd(n),c=Dd.filter(t=>!s.includes(t)&&e?.includes(t.name)),l=Pd(n),u=new Set(e??[]),d=(e??[]).filter(e=>!Md(e)),f=e?Id(e):[],p=f.some(e=>Ad(e)?.su),m=(0,G.useRef)([]),g=e=>{let n=new Set(e),r=Dd.map(e=>e.name).filter(e=>n.has(e)),i=[...n].filter(e=>!Md(e)).sort();t([...r,...i])},_=t=>{let n=new Set(e??[]);n.has(t)?n.delete(t):n.add(t),g(n)};return(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-md border p-3`,children:[(0,K.jsxs)(Vc,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Zg,{checked:o,onCheckedChange:n=>{n?t(m.current):(m.current=e??[],t(void 0))},disabled:a,"aria-label":`Restrict operations`}),(0,K.jsx)(`span`,{className:`font-medium`,children:`Restrict operations`})]}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o?`Only the operations below are allowed — anything unlisted is denied. Listing an operation that normally requires super_user deliberately grants it to this role. SQL statements are authorized against table permissions instead, so this list does not restrict them.`:`No operation-level restriction. Add one to limit this role to an explicit list of API operations (for example a deploy-only CI role).`}),r&&(0,K.jsx)(`p`,{className:`text-xs text-destructive`,children:`Harper does not accept an operations allowlist on a super_user or cluster_user role — the save is rejected unless the list is dropped. Clear that flag to scope this role by operation; otherwise the allowlist is removed when you save.`}),i&&o&&(0,K.jsxs)(`p`,{className:`text-xs text-warning`,children:[`This role is a structure user, so it reaches`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:Ud.join(`, `)}),i===!0?` (and create/drop database) on any database regardless of the list below.`:(0,K.jsxs)(K.Fragment,{children:[` `,`on `,(0,K.jsx)(`span`,{className:`font-mono`,children:i.join(`, `)}),` `,`regardless of the list below — and listing them here cannot reach another database.`]}),` Every other operation is still gated by the list.`]}),o&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[s.map(e=>(0,K.jsx)(yS,{group:e,checked:u.has(e.name),onToggle:_,disabled:a},e.name)),c.map(e=>(0,K.jsx)(yS,{group:e,note:`Saved on this role, but not offered for this instance's Harper version.`,checked:!0,onToggle:_,disabled:a},e.name))]}),(0,K.jsx)(xS,{grantable:l,selectedSet:u,onToggle:_,disabled:a}),d.length>0&&(0,K.jsx)(`div`,{className:`flex max-h-24 flex-wrap gap-1 overflow-y-auto`,children:d.map(e=>(0,K.jsx)(SS,{name:e,onRemove:()=>_(e),disabled:a},e))}),f.length===0?(0,K.jsxs)(`p`,{className:`text-xs text-destructive`,children:[e?.length?`Every entry here is inert`:`Nothing selected`,` `,`— this role cannot run any Operations API call`,i?`, except the DDL noted above`:``,` `,`(SQL is gated by table permissions, not this list).`]}):(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground`,title:Ld(f),children:[`Effectively allows `,h(f.length,`operation`,`operations`),p?`, including some that normally require super_user`:``,`.`,(0,K.jsxs)(`span`,{className:`sr-only`,children:[`: `,Ld(f)]})]})]})]})}function yS({group:e,note:t,checked:n,onToggle:r,disabled:i}){return(0,K.jsxs)(Vc,{className:`flex items-start gap-2 font-normal`,children:[(0,K.jsx)($,{type:`checkbox`,className:`mt-0.5 size-4`,checked:n,onChange:()=>r(e.name),disabled:i}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`span`,{className:`font-mono text-xs`,children:e.name}),(0,K.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:t??e.description})]})]})}var bS=/^[A-Za-z][A-Za-z0-9_.:-]*$/;function xS({grantable:e,selectedSet:t,onToggle:n,disabled:r}){let[i,a]=(0,G.useState)(!1),[o,s]=(0,G.useState)(``),c=(0,G.useRef)(null),l=(0,G.useRef)(null);(0,G.useEffect)(()=>{if(!i)return;let e=0,t=requestAnimationFrame(()=>{e=requestAnimationFrame(()=>c.current?.focus())});return()=>{cancelAnimationFrame(t),cancelAnimationFrame(e)}},[i]);let u=o.trim(),d=u.toLowerCase(),f=d?e.filter(e=>e.name.includes(d)):e,p=fp(f,`category`),m=Ad(u),h=!m&&(Md(d)||Td.some(e=>e.name===d)),g=bS.test(u)&&!Md(u)&&!h&&!m?.nonDelegable&&!m?.aliasOf&&!e.some(e=>e.name===u)&&!t.has(u)?u:void 0;return(0,K.jsxs)(bo,{open:i,onOpenChange:e=>{a(e),e||s(``)},children:[(0,K.jsx)(xo,{asChild:!0,disabled:r,children:(0,K.jsxs)(P,{type:`button`,variant:`outline`,className:`w-full justify-between font-normal`,children:[(0,K.jsx)(`span`,{className:`truncate text-muted-foreground`,children:`Add operations…`}),(0,K.jsx)(pn,{className:`size-4 shrink-0 opacity-60`})]})}),(0,K.jsxs)(So,{ref:l,className:`w-(--radix-dropdown-menu-trigger-width) max-h-72 overflow-y-auto`,align:`start`,children:[(0,K.jsx)(`input`,{ref:c,value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=l.current?.querySelectorAll(`[role="menuitemcheckbox"]:not([data-disabled])`);t?.length&&(e.key===`ArrowDown`?t[0]:t[t.length-1]).focus();return}e.key.length===1&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&e.stopPropagation()},placeholder:`Filter operations…`,"aria-label":`Filter operations`,className:`mb-1 w-full rounded-md border bg-transparent px-2 py-1 text-sm outline-none`}),wd.filter(e=>p[e]).map(e=>(0,K.jsxs)(`div`,{children:[(0,K.jsx)(To,{className:`text-xs text-muted-foreground`,children:e}),p[e].map(e=>(0,K.jsxs)(wo,{checked:t.has(e.name),onCheckedChange:()=>n(e.name),onSelect:e=>e.preventDefault(),children:[(0,K.jsx)(`span`,{className:`flex-1 truncate font-mono text-xs`,children:e.name}),cd(e.name)?(0,K.jsx)(Wo,{variant:`outline`,title:`Harper authorizes this operation under its internal handler name, so listing it has no effect on current 5.x releases (HarperFast/harper#2175). Kept available so the role is ready once that lands.`,children:`not yet enforced`}):e.su&&(0,K.jsx)(Wo,{variant:`warning`,title:`Normally requires super_user; listing it grants it to this role`,children:`super_user`})]},e.name))]},e)),g&&(0,K.jsxs)(wo,{checked:!1,onCheckedChange:()=>n(g),onSelect:e=>e.preventDefault(),children:[(0,K.jsx)(ca,{className:`size-3`}),(0,K.jsxs)(`span`,{className:`flex-1 truncate text-xs`,children:[`Grant "`,(0,K.jsx)(`span`,{className:`font-mono`,children:g}),`" `,m?`(listed for newer Harper versions — this instance may reject it)`:`(component-registered operation)`]})]}),f.length===0&&!g&&(0,K.jsx)(`div`,{className:`px-2 py-1.5 text-sm text-muted-foreground`,children:`No matching operations`})]})]})}function SS({name:e,onRemove:t,disabled:n}){let r=Ad(e),i=ld(e)?`destructive`:r?.su?`warning`:r?`secondary`:`outline`,a=r?.aliasOf?`Legacy alias: Harper authorizes this operation under '${r.aliasOf}', so this entry grants nothing. Grant '${r.aliasOf}' instead.`:cd(e)?`Harper authorizes this operation under its internal handler name, so this grant has no effect on current 5.x releases (HarperFast/harper#2175).`:r?.nonDelegable?`Always requires an actual super_user role; listing it cannot delegate the operation to a non-super_user role.`:r?.outOfGate||r?.caveat?r.caveat:r?.su?`Normally requires super_user; listing it grants it to this role.`:r?void 0:`Not in the built-in catalog — kept as-is (for example a component-registered operation).`;return(0,K.jsxs)(Wo,{variant:i,title:a,className:`gap-1 font-mono text-xs`,children:[e,!n&&(0,K.jsx)(`button`,{type:`button`,"aria-label":`Remove ${e}`,onClick:t,className:`ml-0.5 rounded-sm hover:text-destructive`,children:(0,K.jsx)(gn,{className:`size-3`})})]})}function CS({kind:e,assigning:t,databaseCollision:n}){return e===`malformed`?(0,K.jsxs)(`p`,{className:`text-xs text-destructive`,children:[`This role's `,(0,K.jsx)(`span`,{className:`font-mono`,children:`operations`}),` `,`value is not a list of operation names. Harper still gates on it: a string is read one character at a time, so every operation is denied; an array with non-string members enforces whatever it does expand to; and a falsy value makes each of this role's requests fail outright. The role cannot be saved again until it is fixed.`,` `,t?`Correct it in the role editor.`:`Correct it in the JSON below.`]}):(0,K.jsxs)(`p`,{className:`text-xs text-destructive`,children:[`This role's `,(0,K.jsx)(`span`,{className:`font-mono`,children:`operations`}),` `,`value is not a list of operation names — most often table permissions on a database of that name, kept from an older Harper. This version cannot expand it, and `,t?`assigning this role to a user breaks authentication for every user on the instance. Pick a different role, and repair this one in the role editor first.`:(0,K.jsxs)(K.Fragment,{children:[`authentication breaks for every user on the instance as soon as a user holds this role. Remove the`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`operations`}),` `,`key in the JSON below — that alone restores authentication.`,n&&(0,K.jsxs)(K.Fragment,{children:[` `,`Separately, and only if this instance needs allowlists at all: a database named`,` `,(0,K.jsx)(`span`,{className:`font-mono`,children:`operations`}),` `,`stops every role from using one. Retiring it means migrating its data and table grants to a differently-named database and verifying them there first — dropping it destroys whatever it holds, so treat that as a planned migration rather than part of this repair.`]})]})]})}function wS(e){if(e.super_user!==!0&&e.structure_user!==!0&&e.cluster_user!==!0)return e;let t=Vd(e),n={...e};for(let e in n)(!zd.has(e)||e===`operations`&&(t||!Array.isArray(n.operations))||n[e]===!1)&&delete n[e];return n}async function TS({id:e,permission:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`alter_role`,id:e,permission:t});return r}function ES(){return R({mutationFn:TS})}async function DS({id:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_role`,id:e});return n}function OS(){return R({mutationFn:DS})}async function kS({instanceClient:e,skipRecordCount:t}){let{data:n}=await e.post(`/`,{operation:`describe_all`,skip_record_count:t||void 0,exact_count:!t&&void 0});return n}function AS(e){return z({queryKey:[e.entityId,`describe_all`,!!e.skipRecordCount],queryFn:()=>kS(e),staleTime:6e4,gcTime:5e3,retry:!1})}function jS(e){try{return JSON.parse(e)}catch{return null}}function MS({data:e,instanceId:t,clusterId:n,isModalOpen:r,closeModal:i,onSelectRole:a,onChangesSaved:o}){let s=Fg(),{role:c,permission:l}=e,[u,d]=(0,G.useState)(JSON.stringify(l,null,2)),f=q(),[p,m]=(0,G.useState)(!0),{data:h}=H(AS({...f,skipRecordCount:!0})),{data:g}=H(sx(f)),_=Dn(t??n).user?.role?.id===e.id,[v,y]=m_(u?.includes(`attribute_name`)),{mutate:b,isPending:x}=ES(),{mutate:S,isPending:C}=OS(),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(e=>{m(e.length===0)},[m]),D=(0,G.useMemo)(()=>JSON.stringify(h&&g&&Kd(hS({instanceDatabaseMap:h,currentRolePermissions:u&&Ue(u)||l,version:g.version,showAttributes:v})),null,2),[l,h,g,v]);(0,G.useEffect)(()=>{d(D)},[D]);let O=Nd(g?.version),k=(0,G.useRef)(null),{operationsRaw:A,operationsJson:j,operationsKind:ee,allowlistRejected:M,structureUserDdl:N}=(0,G.useMemo)(()=>{let e=O&&u?jS(u):null,t=p&&typeof e==`object`&&e&&!Array.isArray(e)?e:k.current;if(t===null)return{operationsRaw:void 0,operationsJson:void 0,operationsKind:`absent`,allowlistRejected:!1,structureUserDdl:!1};k.current=t;let n=Wd(t);return{operationsRaw:t.operations,operationsJson:n&&JSON.stringify(n),operationsKind:Gd(t,O),allowlistRejected:Vd(t),structureUserDdl:Hd(t)}},[O,p,u]),te=(0,G.useMemo)(()=>j===void 0?void 0:JSON.parse(j),[j]),F=(0,G.useCallback)(e=>{d(t=>{let n=t?Ue(t):null;return!n||typeof n!=`object`||Array.isArray(n)?t:JSON.stringify(qd(n,e),null,2)})},[]),ne=(0,G.useCallback)(t=>{let n=Ue(t);if(n&&typeof n==`object`&&!Array.isArray(n)){let t=wS(n);b({id:e.id,permission:t,...f},{onSuccess:()=>{U.success(`Role updated successfully!`),a(void 0),o()}})}},[b,e.id,f,o,a]),re=(0,G.useCallback)(()=>{S({id:e.id,...f},{onSuccess:()=>{U.success(`Role deleted successfully!`),a(void 0),o()}})},[e.id,S,f,o,a]),ie=ee===`breaks-auth`||ee===`malformed`,ae=typeof A==`object`&&!!A&&!Array.isArray(A),oe=(0,G.useCallback)(()=>{u&&p&&ne(u)},[u,ne,p]),I=(0,G.useCallback)(()=>{T(!0)},[]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(fn,{onOpenChange:i,open:r,children:(0,K.jsxs)(cn,{resizable:!0,children:[(0,K.jsxs)(ln,{children:[_?`View`:`Edit`,` Role "`,c,`"`]}),(0,K.jsx)(un,{children:_?`You can view your own role, but you cannot edit it. Please assign yourself a different role to edit this role.`:`Edit the role's permissions in JSON format or remove the role entirely.`}),O&&g&&(ie?(0,K.jsx)(CS,{kind:ee,databaseCollision:ae}):(0,K.jsx)(vS,{allowlistRejected:M,structureUserDdl:N,value:te,onChange:F,version:g.version,disabled:_||!p})),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:D?(0,K.jsx)(Lg,{className:`w-full h-full`,theme:s,defaultLanguage:`json`,value:u,options:{readOnly:_,automaticLayout:!0},onValidate:E,onChange:d,defaultValue:D}):(0,K.jsx)(eh,{})}),(0,K.jsx)(on,{children:!_&&(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(P,{type:`button`,variant:`destructiveOutline`,onClick:I,disabled:x,children:`Delete Role`}),(0,K.jsx)(`div`,{className:`grow`}),(0,K.jsxs)(Vc,{className:`flex`,children:[(0,K.jsx)($,{type:`checkbox`,className:`w-6`,checked:v,onChange:y}),(0,K.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Pick Attributes`})]}),(0,K.jsx)(P,{variant:`submit`,onClick:oe,disabled:x||!p||ie,children:`Save Changes`})]})})]})}),(0,K.jsx)(Wu,{isModalOpen:w,setIsModalOpen:T,deletionConfirmed:re,deletionPending:C,typeOfThingBeingDeleted:`role`,nameOfThingBeingDeleted:c,hideDataLossWarning:!0})]})}function NS(){let e=se(),{clusterId:t,instanceId:n,roleId:r}=B({strict:!1}),i=q(),{data:a,refetch:o,isFetching:s,isRefetching:c}=ge(pS(i)),l=(0,G.useMemo)(()=>a?.find(e=>e.id===r),[a,r]),u=(0,G.useCallback)(t=>{let n=[r?`..`:``,t].filter(Boolean);e({to:n.join(`/`)})},[r,e]),d=!!r&&!!l,[f,p]=(0,G.useState)(!1),m=(0,G.useCallback)(()=>{p(!0)},[p]),h=(0,G.useCallback)(e=>{o(),p(!1),u(e)},[u,o]),g=(0,G.useCallback)(e=>{u(e.original.id)},[u]),_=(0,G.useCallback)(()=>{u(void 0)},[u]),v=Cg(o);return(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(Bo,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsx)(aS,{children:(0,K.jsxs)(vg,{columns:sS,data:a,isFetching:s,onRowClick:g,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:v,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(ua,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:f,children:[(0,K.jsx)(ca,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]})}),(0,K.jsx)(fS,{isModalOpen:f,onChangesSaved:h,setIsModalOpen:p}),d&&(0,K.jsx)(MS,{instanceId:n,clusterId:t,isModalOpen:d,closeModal:_,data:l,onSelectRole:u,onChangesSaved:()=>o()})]})}function PS(e){return!!e?.entries}function FS(e){if(!e?.entries)return[];let t=new Set;for(let n of e.entries)PS(n)&&t.add(n.name);return[...t].sort((e,t)=>e.localeCompare(t))}function IS({components:e,granted:t,onAdd:n,disabled:r,actionLabel:i=`Add`,commitOnBlur:a=!1}){let[o,s]=(0,G.useState)(``),[c,l]=(0,G.useState)(!1),[u,d]=(0,G.useState)(0),[f,p]=(0,G.useState)(!1),m=(0,G.useId)(),h=(0,G.useId)(),g=(0,G.useRef)(!1),_=(0,G.useRef)(!1),v=r||f,y=(0,G.useMemo)(()=>{if(e.length===0)return[];let n=o.trim(),r=n.toLowerCase(),i=new Set(t),a=e.filter(e=>!i.has(e)),s=(n?a.filter(e=>e.toLowerCase().includes(r)):a).map(e=>({value:e,custom:!1})),c=a.some(e=>e.toLowerCase()===r);return n&&!c&&s.push({value:n,custom:!0}),s},[e,t,o]),b=y.length===0?0:Math.min(u,y.length-1),x=(0,G.useCallback)(async e=>{if(_.current)return;let r=e.trim();if(!r||t.includes(r)){s(``);return}_.current=!0,p(!0);try{await n(r),s(``),l(!1)}catch{}finally{_.current=!1,p(!1)}},[t,n]),S=(0,G.useCallback)(()=>{x(y[b]?.value??o)},[x,y,b,o]),C=(0,G.useCallback)(e=>{if(e.key===`ArrowDown`){e.preventDefault(),l(!0),d(Math.min(b+1,Math.max(0,y.length-1)));return}if(e.key===`ArrowUp`){e.preventDefault(),d(Math.max(0,b-1));return}if(e.key===`Escape`){c&&(e.preventDefault(),e.stopPropagation(),l(!1));return}e.key===`Enter`&&(e.preventDefault(),S())},[c,y,b,S]),w=(0,G.useCallback)(()=>{g.current||(l(!1),a&&o.trim()&&S())},[a,o,S]),T=c&&y.length>0;return(0,K.jsxs)(`div`,{className:`relative grid gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)($,{type:`text`,role:`combobox`,"aria-expanded":T,"aria-controls":T?m:void 0,"aria-autocomplete":`list`,"aria-activedescendant":T&&y[b]?`${h}-${b}`:void 0,autoComplete:`off`,autoCapitalize:`off`,placeholder:e.length>0?`Search applications…`:`application name`,value:o,onChange:e=>{s(e.target.value),d(0),l(!0)},onFocus:()=>l(!0),onKeyDown:C,onBlur:w,disabled:v}),(0,K.jsxs)(P,{type:`button`,variant:`positiveOutline`,onMouseDown:e=>e.preventDefault(),onClick:S,disabled:v||!o.trim(),children:[(0,K.jsx)(ca,{}),` `,i]})]}),T&&(0,K.jsx)(`ul`,{id:m,role:`listbox`,className:`bg-popover text-popover-foreground absolute top-11 z-10 max-h-56 w-full overflow-auto rounded-md border p-1 shadow-md`,children:y.map((e,t)=>{let n=t===b;return(0,K.jsx)(`li`,{id:`${h}-${t}`,role:`option`,"aria-selected":n,onMouseEnter:()=>d(t),onMouseDown:t=>{t.preventDefault(),g.current=!0,x(e.value).finally(()=>{g.current=!1})},className:N(`flex cursor-pointer items-center gap-2 rounded px-2 py-1.5 text-sm`,n&&`bg-accent text-accent-foreground`),children:e.custom?(0,K.jsxs)(`span`,{className:`truncate`,children:[`Use “`,(0,K.jsx)(`span`,{className:`font-mono`,children:e.value}),`” — not a deployed application`]}):(0,K.jsx)(`span`,{className:`truncate font-mono`,children:e.value})},e.custom?`__custom__${e.value}`:e.value)})})]})}var LS=`enc:v1:`;function RS(e){let t=e.replace(/-----BEGIN [^-]+-----/,``).replace(/-----END [^-]+-----/,``).replace(/\s+/g,``),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r}function zS(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function BS(e){return zS(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function VS(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function HS(){if(typeof crypto>`u`||!crypto.subtle)throw Error(`Secret encryption requires a secure context (HTTPS or localhost).`);return crypto.subtle}async function US(e,t,n){let r=HS(),i=RS(t),a=await r.importKey(`spki`,VS(i),{name:`RSA-OAEP`,hash:`SHA-256`},!1,[`encrypt`]),o=crypto.getRandomValues(new Uint8Array(32)),s=crypto.getRandomValues(new Uint8Array(12)),c=await r.importKey(`raw`,VS(o),{name:`AES-GCM`},!1,[`encrypt`]),l=new Uint8Array(await r.encrypt({name:`AES-GCM`,iv:VS(s),tagLength:128},c,VS(new TextEncoder().encode(e)))),u=l.slice(0,l.length-16),d=l.slice(l.length-16),f={kid:n,k:zS(new Uint8Array(await r.encrypt({name:`RSA-OAEP`},a,VS(o)))),iv:zS(s),ct:zS(u),tag:zS(d)};return LS+BS(new TextEncoder().encode(JSON.stringify(f)))}function WS(e){let t=e?.response?.data;return t?.error??t?.message??String(e)}var GS=`does not match`;function KS(e){return e.includes(GS)}async function qS({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_secrets_public_key`});return{publicKey:t.public_key,fingerprint:t.fingerprint}}var JS=M;async function YS(e){let{data:t}=await JS.post(`/ClusterSecrets`,{operation:`get_secrets_public_key`,clusterId:e});return{publicKey:t.publicKey,fingerprint:t.fingerprint}}function XS(e){return z({queryKey:[e.entityId,`get_secrets_public_key`,e.managedClusterId??`node`],queryFn:()=>e.managedClusterId?YS(e.managedClusterId):qS(e),staleTime:3e5,retry:!1})}async function ZS({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_secrets`});return t}function QS(e){return z({queryKey:[e.entityId,`list_secrets`],queryFn:()=>ZS(e)})}async function $S(e,t,n){let{publicKey:r,fingerprint:i}=await e.ensureQueryData(XS(t)),a=await US(t.value,r,i);try{let{data:e}=await t.instanceClient.post(`/`,{operation:`set_secret`,name:t.name,envelope:a,...t.processEnv===void 0?{}:{processEnv:t.processEnv},...t.grants===void 0?{}:{grants:t.grants}});return e}catch(r){let i=WS(r);if(!n&&KS(i))return e.removeQueries({queryKey:XS(t).queryKey}),$S(e,t,!0);throw Error(i)}}function eC(){let e=ue();return R({mutationFn:t=>$S(e,t,!1)})}async function tC({instanceClient:e,name:t}){try{let{data:n}=await e.post(`/`,{operation:`delete_secret`,name:t});return n}catch(e){throw Error(WS(e))}}function nC(){return R({mutationFn:tC})}async function rC(e,{instanceClient:t,name:n,component:r}){try{let{data:i}=await t.post(`/`,{operation:e,name:n,component:r});return i}catch(e){throw Error(WS(e))}}function iC(){return R({mutationFn:e=>rC(`grant_secret`,e)})}function aC(){return R({mutationFn:e=>rC(`revoke_secret`,e)})}function oC({name:e,initialGrants:t,components:n,onChanged:r}){let i=q(),{mutateAsync:a,isPending:o}=iC(),{mutateAsync:s,isPending:c}=aC(),l=o||c,[u,d]=(0,G.useState)(t),f=(0,G.useCallback)(async t=>{try{let n=await a({...i,name:e,component:t});d(n.grants),r?.()}catch(e){throw U.error(String(e)),e}},[a,i,e,r]),p=(0,G.useCallback)(async t=>{try{let n=await s({...i,name:e,component:t});d(n.grants),r?.()}catch(e){U.error(String(e))}},[s,i,e,r]);return(0,K.jsxs)(`div`,{className:`grid gap-2`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Granted applications`}),(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Only granted applications can read this secret through the `,(0,K.jsx)(`code`,{className:`font-mono`,children:`secrets`}),` `,`accessor. Changes apply immediately.`]}),u.length>0&&(0,K.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:u.map(e=>(0,K.jsxs)(Wo,{variant:`secondary`,children:[e,(0,K.jsxs)(`button`,{type:`button`,onClick:()=>void p(e),disabled:l,title:`Revoke ${e}`,className:`cursor-pointer disabled:cursor-default`,children:[(0,K.jsx)(gn,{}),(0,K.jsxs)(`span`,{className:`sr-only`,children:[`Revoke `,e]})]})]},e))}),(0,K.jsx)(IS,{components:n,granted:u,onAdd:f,disabled:l,actionLabel:`Grant`})]})}var sC=`********`,cC=/^[\w.-]+$/,lC=/^(\s*(?:export\s+)?)([\w.-]+)\s*=(.*)$/;function uC(e){return e.split(`/`).pop()??``}function dC(e){if(!e)return!1;let t=uC(e).toLowerCase();return t===`.env`||t.startsWith(`.env.`)}var fC=[`.example`,`.sample`,`.template`];function pC(e){if(!dC(e))return!1;let t=uC(e).toLowerCase();return fC.some(e=>t.endsWith(e))}function mC(e){return dC(e)&&!pC(e)}function hC(e){let t={};if(!e)return t;let n=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm,r=e.replace(/\r\n?/g,`
|
|
671
671
|
`),i;for(;(i=n.exec(r))!==null;){let e=i[1],n=(i[2]??``).trim(),r=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/gm,`$2`),r===`"`&&(n=n.replace(/\\n/g,`
|
|
672
672
|
`).replace(/\\r/g,`\r`)),t[e]=n}return t}function gC(e){return!e||e.length===0?``:e.map(e=>`${e}=${sC}`).join(`
|
|
673
673
|
`)+`
|
|
@@ -821,4 +821,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
821
821
|
disabled:pointer-events-none disabled:opacity-40
|
|
822
822
|
[&_svg]:size-4 [&_svg]:shrink-0`,e&&`bg-muted font-semibold text-foreground`,t),...n})}function qA({pageCount:e,disabled:t,onGo:n}){let[r,i]=(0,G.useState)(``);return(0,K.jsxs)(`form`,{onSubmit:t=>{t.preventDefault();let a=Number(r);Number.isFinite(a)&&a>=1&&n(Math.min(a,e)),i(``)},className:`hidden items-center gap-2 @min-[840px]:flex`,children:[(0,K.jsx)(`label`,{htmlFor:`pagination-go-to`,className:`text-sm whitespace-nowrap text-muted-foreground`,children:`Go to`}),(0,K.jsx)(`input`,{id:`pagination-go-to`,type:`number`,min:1,max:e,inputMode:`numeric`,placeholder:`Page`,disabled:t,value:r,onChange:e=>i(e.target.value),className:`h-9 w-20 rounded-md border border-input bg-white px-3 text-sm text-foreground
|
|
823
823
|
placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-purple focus-visible:outline-none
|
|
824
|
-
disabled:pointer-events-none disabled:opacity-50 dark:bg-grey-700 dark:text-white`})]})}function JA({pageSize:e,onChange:t}){return(0,K.jsxs)(`div`,{className:`hidden items-center gap-2 @min-[960px]:flex`,children:[(0,K.jsx)(`span`,{className:`text-sm whitespace-nowrap text-muted-foreground`,children:`Rows`}),(0,K.jsxs)(th,{value:String(e),onValueChange:e=>t(Number(e)),children:[(0,K.jsx)(ih,{"aria-label":`Rows per page`,className:`h-9 w-20`,children:(0,K.jsx)(rh,{})}),(0,K.jsx)(ah,{side:`top`,children:UA.map(e=>(0,K.jsx)(sh,{value:String(e),children:Eh(e)},e))})]})]})}function YA(e,t,n=1){if(t<=n*2+5)return XA(1,t);let r=Math.max(e-n,1),i=Math.min(e+n,t),a=r>2,o=i<t-1,s=3+2*n;return!a&&o?[...XA(1,s),`ellipsis`,t]:a&&!o?[1,`ellipsis`,...XA(t-s+1,t)]:[1,`ellipsis`,...XA(r,i),`ellipsis`,t]}function XA(e,t){return Array.from({length:t-e+1},(t,n)=>e+n)}var ZA=32,QA=`shadow-[inset_-1px_0_0_var(--color-border)]`;function $A(e,t){return!t||typeof e!=`object`||!e||!Object.hasOwn(e,t)?void 0:e[t]??void 0}function ej({applyFilters:e,columnFiltersForm:t,columns:n,columnVisibility:r,columnSizing:i,setColumnSizing:a,data:o,emptyState:s,isFetching:c,onColumnClick:l,onRowClick:u,pageIndex:d,pageSize:f,primaryKey:p,rowSelection:m,resultSetKey:h,tableIdentity:g,setPageIndex:_,setPageSize:v,filtersToggled:y,totalPages:b,totalRecords:x,isEstimatedCount:S,estimatedRange:C,isExactCountFetching:w,isExactCountError:T,onRequestExactCount:E}){let D=Le({features:gg,data:o||[],columns:n,manualSorting:!0,enableColumnResizing:!0,columnResizeMode:`onEnd`,onColumnSizingChange:a,defaultColumn:{minSize:80},state:{columnVisibility:r,columnSizing:i}}),O=!!m&&!!p,k=(0,G.useMemo)(()=>O?(o??[]).map(e=>$A(e,p)).filter(e=>e!==void 0):[],[O,o,p]),A=m?k.filter(e=>m.selectedKeys.has(e)).length:0,j=k.length>0&&A===k.length,ee=A>0&&!j,[M,P]=(0,G.useState)(void 0),te=(0,G.useCallback)((e,t)=>{if(!m)return;let n=t?k.indexOf(M):-1,r=k.indexOf(e);if(n===-1||r===-1){m.toggleRow(e),P(e);return}let[i,a]=n<=r?[n,r]:[r,n];m.setRangeSelected(k.slice(i,a+1),!m.selectedKeys.has(e))},[m,k,M]),F=(0,G.useRef)(null),ne=(0,G.useRef)(!1),re=(0,G.useRef)(!1),ie=(0,G.useCallback)((e,t)=>{!m||e===void 0||t.button!==0||t.shiftKey||t.ctrlKey||t.metaKey||(ne.current=!0,F.current={originKey:e,selected:!m.selectedKeys.has(e),snapshot:new Set(m.selectedKeys),applied:[],lastKey:e})},[m]),ae=(0,G.useCallback)((e,t)=>{let n=F.current;if(!n)return;if(!(t&1)){F.current=null;return}if(!m||e===void 0||e===n.lastKey)return;let r=k.indexOf(n.originKey),i=k.indexOf(e);if(r===-1||i===-1)return;n.lastKey=e;let[a,o]=r<=i?[r,i]:[i,r],s=k.slice(a,o+1),c=new Set(s),l=n.applied.filter(e=>!c.has(e)),u=l.filter(e=>n.snapshot.has(e)),d=l.filter(e=>!n.snapshot.has(e));u.length&&m.setRangeSelected(u,!0),d.length&&m.setRangeSelected(d,!1),m.setRangeSelected(s,n.selected),n.applied=s,P(n.originKey),re.current=!0},[m,k]);(0,G.useEffect)(()=>{let e=()=>{F.current=null},t=()=>{ne.current=!1,re.current=!1};return window.addEventListener(`mouseup`,e),window.addEventListener(`mousedown`,t,!0),()=>{window.removeEventListener(`mouseup`,e),window.removeEventListener(`mousedown`,t,!0)}},[]),(0,G.useLayoutEffect)(()=>{P(void 0),F.current=null},[h]);let oe=(0,G.useRef)(null),[I,se]=(0,G.useState)(0);(0,G.useLayoutEffect)(()=>{let e=oe.current;e&&(e.scrollTop=0)},[h]),(0,G.useLayoutEffect)(()=>{let e=oe.current;e&&(e.scrollTop=0,e.scrollLeft=0)},[g]);let L=D.state.columnResizing,ce=L.isResizingColumn;(0,G.useLayoutEffect)(()=>{ce&&se(oe.current?.scrollLeft??0)},[ce]);let le=null;if(ce){let e=D.options.defaultColumn?.minSize??20,t=D.getColumn(ce)?.getSize()??0,n=O?ZA:0;for(let e of D.getVisibleLeafColumns())if(n+=e.getSize(),e.id===ce)break;le=n+Math.max(L.deltaOffset??0,e-t)-I}let R=D.getRowModel().rows.length>0,ue=o===void 0,de=!R&&!ue&&!!s;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`relative flex flex-col grow min-h-0`,children:[(0,K.jsxs)(lg,{containerRef:oe,containerClassName:N(`rounded-t-md bg-card dark:bg-black-dark min-h-0 overflow-y-auto`,de?`shrink-0`:`rounded-b-md grow`),className:`table-fixed`,children:[(0,K.jsx)(ug,{children:D.getHeaderGroups().map(e=>(0,K.jsxs)(fg,{className:`border-none`,children:[O&&(0,K.jsx)(pg,{style:{width:`${ZA}px`},className:N(`sticky top-0 left-0 z-20 p-0 bg-card dark:bg-black-dark border-b border-border`,QA),children:(0,K.jsx)(tj,{checked:j,indeterminate:ee,disabled:k.length===0,onToggle:()=>{m.toggleAll(k,!j),P(j?void 0:k[0])}})}),e.headers.map(e=>(0,K.jsx)(mg,{header:e,onColumnClick:l,className:`sticky top-0 z-10 bg-card dark:bg-black-dark border-b border-border font-mono text-[0.8rem] [&_button]:text-[0.8rem]`},e.id)),(0,K.jsx)(pg,{"aria-hidden":!0,className:`w-full p-0 sticky top-0 z-10 bg-card dark:bg-black-dark border-b border-border`})]},e.id))}),y&&(0,K.jsx)(MA,{applyFilters:e,columnFiltersForm:t,headerGroups:D.getHeaderGroups(),selectColumnWidth:O?ZA:void 0}),!de&&(0,K.jsx)(dg,{className:`bg-background dark:bg-black border-y border-border dark:border-grey-700`,children:R?D.getRowModel().rows.map(e=>(0,K.jsx)(rj,{row:e,onRowClick:u,primaryKey:p,rowSelection:O?m:void 0,onSelectRow:te,onBeginDrag:ie,onDragOver:ae,pressedInGutterRef:ne,dragMovedRef:re},e.id)):(0,K.jsx)(fg,{children:(0,K.jsx)(hg,{colSpan:n.length+1+ +!!O,className:`h-24 text-center`,children:c||ue?(0,K.jsx)(HA,{className:`opacity-50 inline-block`}):(0,K.jsx)(`span`,{children:`No results.`})})})})]}),de&&(0,K.jsx)(`div`,{className:`grow min-h-0 rounded-b-md bg-background dark:bg-black border border-t-0 border-border dark:border-grey-700`,children:s}),le!==null&&(0,K.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute top-0 bottom-0 z-20 w-0.5 bg-primary`,style:{left:`${le}px`}})]}),(0,K.jsx)(WA,{pageIndex:d,pageSize:f,totalPages:b,totalRecords:x,isEstimatedCount:S,estimatedRange:C,isExactCountFetching:w,isExactCountError:T,onRequestExactCount:E,setPageIndex:_,setPageSize:v})]})}function tj({checked:e,indeterminate:t,disabled:n,onToggle:r}){let i=(0,G.useRef)(null);return(0,G.useLayoutEffect)(()=>{i.current&&(i.current.indeterminate=t)},[t]),(0,K.jsx)(nj,{children:(0,K.jsx)(`input`,{ref:i,type:`checkbox`,"aria-label":e?`Deselect all records on this page`:`Select all records on this page`,checked:e,disabled:n,onChange:r})})}function nj({children:e}){return(0,K.jsx)(`label`,{className:`flex h-full w-full items-center justify-center py-2`,children:e})}function rj({row:e,primaryKey:t,onRowClick:n,rowSelection:r,onSelectRow:i,onBeginDrag:a,onDragOver:o,pressedInGutterRef:s,dragMovedRef:c}){let l=e.getVisibleCells(),u=(0,G.useMemo)(()=>{let n=e.original;return n&&n.message===`This entry has expired`?l[0]?.column?.id===t?[(0,K.jsx)(aj,{cell:l[0]},l[0].id),(0,K.jsx)(oj,{colSpan:l.length-1},`expired`)]:[(0,K.jsx)(oj,{colSpan:l.length},`expired`)]:l.map(e=>(0,K.jsx)(aj,{cell:e},e.id))},[e,t,l]),d=r?$A(e.original,t):void 0,f=d!==void 0&&!!r?.selectedKeys.has(d);return(0,K.jsxs)(fg,{"data-state":f?`selected`:void 0,onMouseOver:e=>o?.(d,e.buttons),onMouseDown:e=>{r&&e.shiftKey&&e.preventDefault()},onClick:t=>{if(!s?.current){if(r&&d!==void 0&&(t.ctrlKey||t.metaKey||t.shiftKey)){t.preventDefault(),i?.(d,t.shiftKey);return}n?.(e)}},className:N(`hover:bg-muted/10 data-[state=selected]:bg-muted`,n&&`cursor-pointer`),children:[r&&(0,K.jsx)(hg,{className:N(`sticky left-0 z-10 p-0`,QA,f?`bg-muted`:`bg-background dark:bg-black`),onClick:CE,onMouseDown:e=>{e.preventDefault(),e.currentTarget.querySelector(`input`)?.focus(),a?.(d,e)},children:(0,K.jsx)(nj,{children:(0,K.jsx)(`input`,{type:`checkbox`,"aria-label":f?`Deselect record`:`Select record`,checked:f,disabled:d===void 0,onClick:e=>{c?.current&&e.detail!==0||d===void 0||i?.(d,e.shiftKey)},onChange:ij})})}),u,(0,K.jsx)(hg,{"aria-hidden":!0,className:`p-0`})]})}function ij(){}function aj({cell:e}){let t=e.column.getSize();return(0,K.jsx)(hg,{"data-col-id":e.column.id,style:{width:`${t}px`,maxWidth:`${t}px`},className:`px-2 py-2 font-mono text-[0.8rem] overflow-hidden text-ellipsis whitespace-nowrap`,children:Me(e.column.columnDef.cell,e.getContext())})}function oj({colSpan:e}){return(0,K.jsx)(hg,{colSpan:e,className:`px-2 py-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,children:(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`This entry has expired`})})}var sj=new Set;function cj({instanceDatabaseMap:e,databaseName:t,tableName:n}){let r=B({strict:!1}),i=q(),{clusterId:a,instanceId:o}=r,{toggled:s,toggle:c}=dA(!0),l=En(`instance:update`),u=Of(o??a,t,n,`insert`),d=Af(o??a,t,n),f=Mf(),p=Of(o??a,t,n,`update`),m=Of(o??a,t,n,`delete`),g=Df(),{data:_}=H(XE({...i,databaseName:t,tableName:n})),v=e?.[t],y=v?.[n],b=_??y,x=d&&f.methods.file,S=d&&f.methods.url,C=d&&f.allowsSource(`csv-data`),w=(0,G.useMemo)(()=>oE(y?.attributes,v),[y,v]),T=d&&f.allowsSource(`json-records`)&&w.length>0,E=(0,G.useMemo)(()=>pp(b?.attributes??[],`attribute`),[b]),{data:D}=H(rA(i)),{data:O}=H(sx(i)),k=kf(o??a,t,n),A=wA(O?.version,k),j=A===void 0,ee=D?.[t]?.[n],M=(0,G.useMemo)(()=>Mw(b,v,ee),[b,v,ee]),N=(0,G.useMemo)(()=>Lw(b,v),[b,v]),te=(0,G.useMemo)(()=>Pw(b?.attributes,v),[b,v]),[F,ne]=ev(null,r),[re,ie]=(0,G.useState)(!1),[ae,oe]=ev(null,r),[I,se]=ev(null,r),[L,ce]=(0,G.useState)(null),le=L!==null,R=(0,G.useMemo)(()=>g&&!!v&&Object.keys(v).length>1,[g,v]),{toggled:de,toggleOn:z,toggleOff:fe}=dA(!1),pe=Pt({resolver:Ke(jA)}),{reset:he}=pe,ge=pe.watch(),[_e,ve]=ev(null,[r.clusterId,r.instanceId,t,n]),ye=(0,G.useCallback)(e=>{let t=[];for(let n in e){let r=e[n];if(r?.length)try{t.push(...BE(n,r,E[n],M[n]))}catch(e){U.error(String(e))}}return t},[E,M]),be=(0,G.useCallback)(()=>{let e=ye(ge);ve(e.length?e:null),he({...ge})},[ye,he,ge]),xe=(0,G.useCallback)(()=>{he({},{keepValues:!1,keepDirtyValues:!1,keepDefaultValues:!1}),he(),ve(null),fe()},[fe,he]);(0,G.useEffect)(function(){return xe()},[r,xe]);let{filters:Se}=me({strict:!1}),Ce=JSON.stringify([t,n,Se??null]),we=(0,G.useRef)(null);(0,G.useEffect)(function(){if(!b||we.current===Ce)return;let e=we.current===null;if(we.current=Ce,Se){he({...Se});let e=ye(Se);ve(e.length?e:null),z()}else e||xe()},[Se,Ce,b,he,ye,ve,z,xe]);let{dataTableColumns:Te,primaryKey:Ee}=OE(b,M),[De,Oe]=ev({attribute:Ee,descending:!1},r),[ke,Ae]=ev(0,[t,n,_e]),[je,Me]=(0,G.useState)(20),[Ne,Pe]=ev(null,[t,n,_e,je,s]),Fe=_?.record_count??y?.record_count,Ie=_?.estimated_record_range??y?.estimated_record_range,[Le,Re]=ev(!1,[t,n]),{data:ze,isFetching:Be,isError:Ve,refetch:He}=H(SA({...i,enabled:Le,databaseName:t,tableName:n})),Ue=(0,G.useCallback)(()=>{Le?He():Re(!0)},[Le,He,Re]),We=ze??Fe,Ge=We?Math.ceil(We/je):0,qe=ze===void 0&&Ie!==void 0,Je=de&&!!_e,Ye=JSON.stringify([t,n]),Xe=JSON.stringify([i.entityId,t,n,ke,je,De,Je?_e:null,s]),[Ze,Qe]=ev(sj,[Xe]),$e=(0,G.useCallback)(e=>{Qe(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n})},[Qe]),et=(0,G.useCallback)((e,t)=>{Qe(t?new Set(e):sj)},[Qe]),tt=(0,G.useCallback)((e,t)=>{Qe(n=>{let r=new Set(n);for(let n of e)t?r.add(n):r.delete(n);return r})},[Qe]),nt=(0,G.useMemo)(()=>m?{selectedKeys:Ze,toggleRow:$e,toggleAll:et,setRangeSelected:tt}:void 0,[m,Ze,$e,et,tt]),rt=ey({...i,enabled:!Je&&!!Ee,databaseName:t,tableName:n,searchAttribute:Ee,sort:De,pageSize:je,pageIndex:ke,onlyIfCached:s,getAttributes:N}),{data:it,isFetching:at,isError:ot}=H(rt),st=RE({...i,enabled:Je&&!!Ee,databaseName:t,tableName:n,conditions:_e,sort:De,pageSize:je,pageIndex:ke,onlyIfCached:s,getAttributes:N}),{data:ct,isFetching:lt,isError:ut}=H(st),dt=Je?ct:it,ft=at||lt,pt=Je?ut:ot,mt=dt?.data,ht=(0,G.useMemo)(()=>(mt??[]).map(e=>$A(e,Ee)).filter(e=>e!==void 0&&Ze.has(e)),[mt,Ee,Ze]),{data:gt,isFetching:_t,isError:vt}=H(bA({...i,enabled:re,databaseName:t,tableName:n,ids:F})),yt=re&&!le&&!!ae&&(!Ee||ae[Ee]==null),bt=gt?.data,xt=!yt&&!le&&!!F?.length&&!_t&&(vt||Array.isArray(bt)&&bt.length===0),{mutate:St,isPending:Ct}=AA(),{mutate:wt,isPending:Tt}=vA(),{mutate:Et,isPending:Dt}=DA(),{mutate:Ot,isPending:kt}=pA(),At=ue(),jt=(0,G.useCallback)(()=>(Pe(null),Qe(sj),At.invalidateQueries({queryKey:[i.entityId,t,n]})),[At,i.entityId,t,n,Pe,Qe]),Mt=(0,G.useCallback)(()=>At.invalidateQueries({queryKey:yA(i.entityId,t,n)}),[At,i.entityId,t,n]),Nt=(0,G.useCallback)(async()=>{confirm(`Are you sure you want to cleanup orphan blobs for database "${t}"?`)&&Ot({...i,databaseName:t},{onSuccess:e=>{U.success(e.message||`Orphan blobs cleanup started successfully`),jt()},onError:e=>{U.error(e instanceof Error?e.message:`Failed to cleanup orphan blobs`)}})},[Ot,t,i,jt]),{exportCsv:Ft,isExporting:It}=KE(),Lt=(0,G.useCallback)(()=>{Ft({databaseName:t,tableName:n,primaryKey:Ee,sort:De,conditions:Je?_e:null})},[Ft,t,n,Ee,De,Je,_e]),Rt=(0,G.useCallback)(e=>{if(e?.wroteNothing){U.error(`The record wasn't updated`,{description:e.message});return}if(jt(),Mt(),ie(!1),e){U.error(`The record wasn't fully updated`,{description:e.message});return}U.success(`Record updated successfully`)},[jt,Mt]),zt=(0,G.useCallback)(e=>{St({...i,databaseName:t,tableName:n,records:e},{onSuccess:t=>Rt(OA(t,e.length))})},[St,i,t,n,Rt]),Bt=(0,G.useCallback)(e=>{Et({...i,databaseName:t,tableName:n,records:e},{onSuccess:t=>Rt(EA(t,e.length))})},[Et,i,t,n,Rt]),Vt=(0,G.useCallback)(e=>{wt({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:t=>{let n=gA(t,e.length);if(n?.wroteNothing){U.error(`The record wasn't deleted`,{description:n.message});return}if(jt(),Mt(),ie(!1),n){U.error(`The record wasn't fully deleted`,{description:n.message});return}U.success(`Record deleted successfully`)}})},[wt,i,t,n,jt,Mt]),Ht=(0,G.useCallback)(()=>{let e=ht;e.length&&confirm(`Permanently delete ${h(e.length,`record`,`records`)} from "${n}"?`)&&wt({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:t=>{jt(),Mt();let n=gA(t,e.length);if(n){U.error(`The records weren't all deleted`,{description:n.message});return}U.success(`${h(e.length,`record`,`records`)} deleted successfully`)}})},[wt,i,t,n,jt,Mt,ht]),Ut=(0,G.useCallback)((e,t)=>{let n=Ee?t[Ee]:void 0;oe(t),ne(n==null?null:[n]),se(e)},[Ee,oe,ne,se]),Wt=(0,G.useCallback)(e=>{if(I===null||!mt)return;let t=I+e,n=mt[t];if(n){Ut(t,n);return}let r=ke+e;r<0||(Ae(r),ce({end:e===1?`first`:`last`,fromPage:ke}))},[I,mt,Ut,ke,Ae]);(0,G.useEffect)(function(){if(!L)return;if(!re){ce(null);return}let e=L.end===`first`?0:(mt?.length??0)-1,t=e>=0?mt?.[e]:void 0;if(t){ce(null),Ut(e,t);return}if(mt||pt){if(ce(null),Ae(L.fromPage),pt){U.error(`Couldn't load the next page of records`);return}if(L.end===`first`){Pe(L.fromPage),U.info(`This is the last record`);return}U.info(`This is the first record`)}},[L,mt,pt,re,Ut,Ae,Pe]);let Gt=e=>{Ut(e.index,e.original),ie(!0)},Kt=(e,t)=>{Oe({attribute:e,descending:!t})},qt=Cg(jt),Jt=(0,G.useCallback)(()=>{HT(`ShowAddTableRecords`,{databaseName:t,tableName:n})},[t,n]),Yt=(0,G.useCallback)(()=>{HT(`ShowImportData`,{databaseName:t,tableName:n})},[t,n]),Xt=(0,G.useCallback)(()=>{HT(`ShowImportData`,{databaseName:t,tableName:n,method:x?`file`:`url`})},[t,n,x]),Zt=(0,G.useCallback)(()=>{HT(`ShowImportData`,{databaseName:t,tableName:n,method:`sample`})},[t,n]),[Qt,$t]=ov(`ColumnDisplayed/${t}/${n}`,{}),en=(0,G.useMemo)(()=>({...Object.fromEntries(Iw(M).map(e=>[e,!1])),...Qt}),[M,Qt]),tn=I===null?void 0:{position:le?void 0:ke*je+I+1,total:Je?void 0:We,isTotalEstimated:qe,hasPrevious:!le&&(I>0||ke>0),hasNext:!le&&!!mt&&(I+1<mt.length||mt.length===je&&Ne!==ke),onPrevious:()=>Wt(-1),onNext:()=>Wt(1)},[nn,W]=ov(`ColumnSizing/${t}/${n}`,{});return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`shrink-0 flex flex-col md:flex-row md:flex-wrap items-center justify-between gap-3 pt-15 pb-4 px-4`,children:[(0,K.jsxs)(`div`,{className:`flex space-x-2`,children:[u&&(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:Jt,accessKey:`n`,children:[(0,K.jsx)(ca,{}),(0,K.jsxs)(`span`,{children:[`Add `,(0,K.jsx)(`u`,{children:`N`}),`ew Record(s)`]})]}),m&&ht.length>0&&(0,K.jsxs)(P,{variant:`destructiveOutline`,onClick:Ht,disabled:Tt,children:[(0,K.jsx)(Za,{className:`text-destructive`}),(0,K.jsxs)(`span`,{children:[`Delete Selected (`,ht.length,`)`]})]})]}),(0,K.jsxs)(`div`,{className:`flex space-x-2`,children:[de&&_e&&(0,K.jsxs)(P,{type:`button`,variant:`ghost`,onClick:xe,accessKey:`f`,children:[(0,K.jsx)(ei,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Clear `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),de&&pe.formState.isDirty&&(0,K.jsxs)(P,{variant:`default`,onClick:be,children:[(0,K.jsx)(Qr,{className:`inline-block `}),`Apply Filters`]}),de&&!_e&&(0,K.jsxs)(P,{variant:`ghost`,onClick:fe,accessKey:`f`,children:[(0,K.jsx)(ei,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Hide `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),!de&&(0,K.jsxs)(P,{variant:`ghost`,onClick:z,accessKey:`f`,children:[(0,K.jsx)(ni,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Show `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),(0,K.jsx)(P,{variant:`defaultOutline`,onClick:qt,disabled:ft,children:(0,K.jsx)(ua,{"aria-label":`Refresh table`,role:`img`})}),(0,K.jsx)(BA,{columns:Te,columnVisibility:en,setColumnVisibility:$t}),(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsx)(P,{variant:`ghost`,size:`icon`,children:(0,K.jsx)(Hr,{"aria-label":`Table options`})})}),(0,K.jsxs)(So,{side:`bottom`,align:`end`,children:[d&&(0,K.jsxs)(Co,{onClick:Yt,children:[(0,K.jsx)(Mr,{}),`Import Data`]}),(0,K.jsxs)(Co,{onClick:Lt,disabled:It,children:[(0,K.jsx)(Ar,{}),`Export CSV`]}),(0,K.jsx)(Eo,{}),(0,K.jsxs)(Co,{className:`focus:bg-primary/70 focus:text-white`,onClick:c,children:[s?(0,K.jsx)(gr,{className:`text-green`}):(0,K.jsx)(Sr,{}),`Only If Cached`,(0,K.jsx)(V,{to:`https://docs.harperdb.io/docs/developers/applications/caching#cache-control-header`,target:`_blank`,rel:`noopener noreferrer`,onClick:CE,children:(0,K.jsx)(Wr,{})})]}),g&&l&&!!o&&(0,K.jsxs)(Co,{className:`focus:bg-yellow/70 focus:text-white`,onClick:Nt,disabled:kt,children:[(0,K.jsx)(er,{className:`text-yellow `}),`Cleanup Orphan Blobs`]}),g&&(0,K.jsx)(Eo,{}),R&&(0,K.jsxs)(Co,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>HT(`ShowDeleteTable`,{databaseName:t,tableName:n}),children:[(0,K.jsx)(Za,{className:`inline-block `}),`Drop Table`]}),g&&(0,K.jsxs)(Co,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>HT(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,K.jsx)(Za,{}),`Drop Database`]})]})]})]})]}),(0,K.jsx)(ej,{primaryKey:Ee,data:mt,emptyState:(0,K.jsx)(PA,{tableName:n,isFiltered:Je,isPastFirstPage:ke>0,recordCount:We,canImportFile:x,canImportUrl:S,canSeedSample:C,canSeedRandom:T,canAddRecords:u,onImport:Xt,onSeed:Zt,onAddRecords:Jt,onClearFilters:xe}),isFetching:ft,filtersToggled:de,columns:Te,columnVisibility:en,columnSizing:nn,setColumnSizing:W,onRowClick:Gt,onColumnClick:Kt,rowSelection:nt,totalPages:Ge,totalRecords:We,isEstimatedCount:qe,estimatedRange:Ie,isExactCountFetching:Be,isExactCountError:Ve,onRequestExactCount:Ue,pageIndex:ke,pageSize:je,resultSetKey:Xe,tableIdentity:Ye,columnFiltersForm:pe,applyFilters:be,setPageIndex:Ae,setPageSize:Me}),(0,K.jsx)(lA,{canEditRecords:p,canDeleteRecords:m,canReplaceRecords:j,replaceBlockedReason:A,setIsModalOpen:ie,isModalOpen:re,primaryKey:Ee,missingPrimaryKey:yt,recordUnavailable:xt,syntheticAttributes:te,recordNavigation:tn,data:le?void 0:yt||xt?ae?[ae]:void 0:gt?.data,onSaveChanges:zt,onReplaceRecord:Bt,onDeleteRecord:Vt,isUpdateTableRecordsPending:Ct||Dt,isDeleteTableRecordsPending:Tt})]})}function lj(e,t){if(!e)return null;if(!(t.databaseName&&e[t.databaseName])){let n=Object.keys(e).sort()[0];return n&&n!==t.databaseName?{databaseName:n,tableName:void 0}:null}return t.tableName&&!e[t.databaseName][t.tableName]?{databaseName:t.databaseName,tableName:void 0}:null}var uj=10;function dj(e){return Math.max(200,Math.floor(e/2))}function fj(e,t){return Math.round(Math.min(Math.max(e,200),dj(t)))}function pj(){let[e,t]=xn(vn.DatabasesSidebarWidth,320),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(()=>fj(e,window.innerWidth)),o=(0,G.useRef)(i);o.current=i;let s=(0,G.useRef)(null);(0,G.useEffect)(()=>{n||a(fj(e,window.innerWidth))},[e,n]),(0,G.useEffect)(()=>{let t=()=>{n||a(fj(e,window.innerWidth))};return window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e,n]);let c=(0,G.useCallback)(e=>{e.preventDefault(),s.current={startX:e.clientX,startWidth:o.current},r(!0)},[]);return(0,G.useEffect)(()=>{if(!n)return;let e=e=>{let t=s.current;t&&a(fj(t.startWidth+(e.clientX-t.startX),window.innerWidth))},i=()=>{r(!1),t(o.current)},c=document.body.style.userSelect;return document.body.style.userSelect=`none`,window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,i),()=>{document.body.style.userSelect=c,window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,i)}},[n,t]),{width:i,isResizing:n,startResizing:c,handleKeyDown:(0,G.useCallback)(e=>{e.key===`ArrowLeft`?(e.preventDefault(),t(e=>fj(e-uj,window.innerWidth))):e.key===`ArrowRight`&&(e.preventDefault(),t(e=>fj(e+uj,window.innerWidth)))},[t])}}function mj(){let e=B({strict:!1}),t=q(),{data:n}=H(AS({...t,skipRecordCount:!0})),{width:r,isResizing:i,startResizing:a,handleKeyDown:o}=pj(),s={"--db-sidebar-width":`${r}px`},c=lj(n,e);return c?(0,K.jsx)(L,{to:Ew({...e,...c}),replace:!0}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`main`,{className:`flex flex-col gap-4 md:gap-0 md:flex-row md:items-start`,children:[(0,K.jsxs)(`section`,{style:s,className:`relative text-foreground w-full md:w-[var(--db-sidebar-width)] md:shrink-0 md:border-r-2 border-border flex flex-col min-h-0 md:sticky md:top-32 md:h-[calc(100vh-(--spacing(32)))] md:max-h-[calc(100vh-(--spacing(32)))] overflow-y-clip`,children:[(0,K.jsx)(tk,{instanceDatabaseMap:n}),(0,K.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,"aria-valuenow":r,"aria-valuemin":200,"aria-valuemax":dj(window.innerWidth),onMouseDown:a,onKeyDown:o,className:`group hidden md:block absolute top-0 bottom-0 left-full w-2 z-40 cursor-col-resize outline-none`,children:(0,K.jsx)(`div`,{className:N(`absolute inset-y-0 left-0 w-1 -translate-x-1/2 transition-colors`,`group-hover:bg-violet-400/60 dark:group-hover:bg-violet-500/60 group-focus-visible:bg-violet-500/80`,i&&`bg-violet-400/60 dark:bg-violet-500/60`)})})]}),(0,K.jsx)(`section`,{className:`text-foreground w-full md:flex-1 md:min-w-0 flex flex-col min-h-0 h-[calc(100vh-(--spacing(32)))]`,children:e.databaseName&&e.tableName?(0,K.jsx)(cj,{instanceDatabaseMap:n,databaseName:e.databaseName,tableName:e.tableName}):e.databaseName?(0,K.jsx)(`div`,{className:`min-h-0 grow overflow-y-auto`,children:(0,K.jsx)(tD,{instanceDatabaseMap:n,databaseName:e.databaseName})}):null})]}),n&&(0,K.jsx)(SE,{instanceDatabaseMap:n})]})}function hj(e){return I({getParentRoute:()=>e,path:`/databases/{-$databaseName}/{-$tableName}`,head:()=>({meta:[{title:`Databases — Harper Fabric`}]}),component:mj})}var gj={className:`text-primary font-semibold bg-primary/10 rounded-md dark:text-white dark:bg-white/10`};function _j(){let e=Ef(),t=B({strict:!1}),{version:n}=ae({strict:!1}),r=td(`4.6.0`,n)&&e,i=td(`4.7.0-beta.7`,n),a=q(),{data:o}=H(zy(a,r)),s=o?.restartRequired??!1,c=(0,G.useMemo)(()=>[e&&{to:t.clusterId&&!t.instanceId?Uy(t,`apps`):Uy(t),activeOptions:{exact:!0},name:`Applications`,shortName:`Apps`,icon:(0,K.jsx)(na,{className:`inline-block`})},{to:Uy(t,`databases`),icon:(0,K.jsx)(Br,{className:`inline-block`}),name:`Databases`},e&&i&&{to:Uy(t,`apis`),name:`APIs`,icon:(0,K.jsx)(wa,{className:`inline-block`})},e&&r&&{to:Uy(t,`status`),icon:(0,K.jsx)(ii,{className:`inline-block`}),name:`Status`},e&&{to:Uy(t,`logs`),icon:(0,K.jsx)(Qi,{className:`inline-block`}),name:`Logs`},e&&{to:Uy(t,`config`),icon:(0,K.jsx)(Ea,{className:`inline-block`}),name:`Config`}].filter(Js),[e,t,i,r]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(vj,{links:c,restartRequired:s}),(0,K.jsx)(yj,{links:c,restartRequired:s})]})}function vj({links:e,restartRequired:t}){return(0,K.jsxs)(`div`,{className:`hidden md:[@media(hover:hover)]:flex xl:flex items-center justify-between h-full text-sm text-foreground`,children:[(0,K.jsx)(Ic,{restartRequired:t}),(0,K.jsx)(`div`,{className:`flex space-x-2`,children:e.map(({shortName:e,...t})=>{let n=(0,K.jsxs)(V,{"aria-label":t.name,className:`p-2 text-center text-muted-foreground hover:text-foreground`,activeProps:gj,...t,children:[t.icon,(0,K.jsx)(`span`,{className:`hidden xl:inline-block ml-1`,children:t.name}),e&&(0,K.jsx)(`span`,{className:`visible xl:hidden ml-1`,children:e})]},t.to);return e?n:(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:n}),(0,K.jsx)(Rs,{side:`bottom`,className:`xl:hidden`,children:t.name})]},t.to)})})]})}function yj({links:e,restartRequired:t}){return(0,K.jsx)(K.Fragment,{children:(0,K.jsxs)(`div`,{className:`flex md:[@media(hover:hover)]:hidden xl:hidden items-center justify-between h-full px-2 text-foreground`,children:[(0,K.jsx)(Ic,{restartRequired:t}),(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsx)(P,{variant:`ghost`,className:`p-0`,children:(0,K.jsx)(Ki,{className:`h-8 w-8`})})}),(0,K.jsxs)(So,{children:[(0,K.jsx)(To,{children:`Instance Menu`}),(0,K.jsx)(Eo,{}),e.map(e=>(0,K.jsx)(Co,{asChild:!0,children:(0,K.jsxs)(V,{to:e.to,activeProps:gj,className:`flex items-center gap-2`,children:[e.icon,e.name]})},e.to))]})]})]})})}(0,G.lazy)(()=>F(()=>import(`./FloatingChat-IpCFgYWL.js`).then(e=>({default:e.FloatingChat})),__vite__mapDeps([35,1,4,5,9,11,12,13])));function bj(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{className:`fixed top-20 w-full z-39 h-12 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,K.jsx)(_j,{})}),(0,K.jsx)(`div`,{className:`mt-32 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,K.jsx)(He,{})}),!1]})}function xj(e){switch(e){case`local`:return I({getParentRoute:()=>hc,id:`_instanceLayout`,component:bj,loader:ww});case`cluster`:return I({getParentRoute:()=>fv,id:`_instanceLayout`,component:bj,beforeLoad:Sj,loader:ww});case`instance`:return I({getParentRoute:()=>fv,path:`instance/$instanceId`,component:bj,beforeLoad:Sj,loader:ww})}}async function Sj({context:e,params:t}){let n=t.instanceId||t.clusterId,r=!1;if(u.checkForFabricConnect(n)&&!u.hasResolvedFabricConnect(n)&&(r=!0,await Cj(n,e.cluster,t.instanceId)))return;let i=u.getConnectionById(n);if(i.isLoading||i.user)return;let a=e.authentication[m];if(!a||a.isLoading)return;let{update:o}=t.instanceId?wf(a.user,t.organizationId,t.clusterId):xf(a.user,t.organizationId,t.clusterId);if(!r&&o&&await Cj(n,e.cluster,t.instanceId))return;let s=`/${t.organizationId}/${t.clusterId}/`+(t.instanceId?`instance/${t.instanceId}`:``)+`/sign-in`;throw ce({to:s,search:oc()})}async function Cj(e,t,n){try{return await u.establishFabricConnectAuth({id:e,operationsUrl:wj(t,n)}),!0}catch(e){return console.debug(`Fabric Connect not established`,e),!1}}function wj(e,t){if(t){let n=e?.instances?.find(e=>e.id===t);return n?p(n):void 0}return c(e)??void 0}function Tj(e){switch(e){case`warn`:return`warning`;case`notify`:return`success`;case`info`:case`debug`:case`trace`:case void 0:case`stdout`:return`secondary`;case`stderr`:case`error`:return`destructive`;default:return e}}var Ej=[`secondary`,`default`,`warning`,`outline`,`success`,`destructive`],Dj=0,Oj=new Map,kj=e=>{if(Oj.has(e))return Oj.get(e);Dj++;let t=Ej[Dj%Ej.length];return Oj.set(e,t),t};function Aj(e){switch(e){case`error`:case`stderr`:return`border-l-destructive`;case`warn`:return`border-l-yellow-500`;case`notify`:return`border-l-green-500`;default:return`border-l-transparent`}}function jj({columns:e,data:t,onRowClick:n,containerRef:r}){let i=Le({features:gg,data:t,columns:e});return(0,K.jsxs)(lg,{className:`text-xs`,containerRef:r,containerClassName:`rounded-md bg-card dark:bg-black-dark logsTable max-h-[calc(100vh-(--spacing(48)))] overflow-y-auto md:max-h-[calc(100vh-(--spacing(40)))]`,children:[(0,K.jsx)(ug,{children:i.getHeaderGroups().map(e=>(0,K.jsx)(fg,{className:`border-b border-border`,children:e.headers.map(e=>(0,K.jsx)(pg,{className:`p-4 max-w-96 sticky top-0 z-10 border-b border-border bg-card dark:bg-black-dark`,children:e.isPlaceholder?null:Me(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,K.jsx)(dg,{className:`bg-background dark:bg-black`,children:i.getRowModel().rows?.length?i.getRowModel().rows.map(e=>(0,K.jsx)(fg,{"data-state":e.getIsSelected()&&`selected`,className:N(`hover:bg-muted/20 data-[state=selected]:bg-muted max-w-full border-l-2`,Aj(e.original.level),n&&`cursor-pointer`),onClick:()=>n?.(e),children:e.getVisibleCells().map(e=>(0,K.jsx)(hg,{className:`p-2`,children:Me(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,K.jsx)(fg,{children:(0,K.jsx)(hg,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})}var Mj=524288,Nj=class{totalChars=0;spent=!1;get isSpent(){return this.spent}admit(e){return this.spent?{admitted:!1,justExhausted:!1,oversize:!1}:e>524288?{admitted:!1,justExhausted:!1,oversize:!0}:this.totalChars+e>8388608?(this.spent=!0,{admitted:!1,justExhausted:!0,oversize:!1}):(this.totalChars+=e,{admitted:!0,justExhausted:!1,oversize:!1})}};function Pj(e){try{JSON.parse(e)}catch{return!1}return!0}function Fj(e){return!e||e.length>524288?`plaintext`:Pj(e)?`json`:`plaintext`}function Ij({label:e,children:t}){return(0,K.jsxs)(`div`,{className:`flex items-start gap-3 py-1.5 border-b border-border/50 last:border-0`,children:[(0,K.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground w-20 shrink-0 pt-0.5`,children:e}),(0,K.jsx)(`span`,{className:`text-xs`,children:t})]})}function Lj({setIsModalOpen:e,isModalOpen:t,data:n}){let r=n?kj(n.node):`default`,i=Fg();return(0,K.jsx)(fn,{onOpenChange:e,open:t,children:(0,K.jsxs)(cn,{"aria-describedby":void 0,resizable:!0,children:[(0,K.jsx)(rn,{children:(0,K.jsx)(ln,{children:`Log Entry`})}),n?(0,K.jsxs)(`div`,{className:`flex flex-1 min-h-0 flex-col gap-2 text-popover-foreground`,children:[(0,K.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-muted/20 px-3 py-1`,children:[(0,K.jsx)(Ij,{label:`Level`,children:(0,K.jsx)(Wo,{variant:Tj(n.level),children:Pc(n.level)})}),(0,K.jsx)(Ij,{label:`Timestamp`,children:(0,K.jsx)(`span`,{className:`tabular-nums`,children:new Date(n.timestamp).toLocaleString()})}),(0,K.jsx)(Ij,{label:`Thread`,children:(0,K.jsx)(`span`,{className:`tabular-nums font-mono`,children:n.thread})}),n.node&&(0,K.jsx)(Ij,{label:`Node`,children:(0,K.jsx)(Wo,{variant:r,children:n.node})}),n.tags&&n.tags.length>0&&(0,K.jsx)(Ij,{label:`Tags`,children:(0,K.jsx)(`span`,{className:`font-mono`,children:n.tags})})]}),(0,K.jsxs)(`div`,{className:`flex flex-1 min-h-0 flex-col`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`Message`}),(0,K.jsx)(`div`,{className:`rounded-md overflow-hidden border border-border/50 flex-1 min-h-0`,children:(0,K.jsx)(Lg,{className:`w-full h-full`,language:Fj(n.message),theme:i,value:n.message,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,padding:{top:12,bottom:12},automaticLayout:!0}})})]})]}):(0,K.jsx)(Bo,{})]})})}var Rj=S({limit:A().or(w()).or(E()).optional(),level:O([`notify`,`error`,`warn`,`info`,`debug`,`trace`,`undefined`]).or(w()).or(E()).optional(),from:A().or(w()).or(E()).optional(),until:A().or(w()).or(E()).optional(),log_name:O([`hdb.log`,`system.log`]).or(w()).or(E()).optional(),filter:A().or(w()).or(E()).optional()}),zj=`dark:bg-grey-600 dark:border-grey-500`;function Bj({form:e,resetFilters:t,submitFilters:n,showLogName:r,showFilter:i,isOpen:a,onOpenChange:o}){return(0,K.jsxs)(On,{className:N(a?`block`:`hidden`,`mt-3 md:mt-0 md:block`),children:[(0,K.jsx)(kn,{className:`hidden md:block`,children:(0,K.jsx)(`button`,{type:`button`,onClick:()=>o(!a),"aria-expanded":a,"aria-controls":`logs-filters-content`,className:`flex w-full items-center justify-between md:pointer-events-none`,children:(0,K.jsxs)(An,{className:`flex items-center gap-2 text-base`,children:[(0,K.jsx)(Na,{className:`size-4 text-muted-foreground`}),`Filters`]})})}),(0,K.jsx)(Mn,{id:`logs-filters-content`,children:(0,K.jsx)(Lc,{...e,children:(0,K.jsxs)(`form`,{id:`instance-edit-log-filters-form`,name:`instance-edit-log-filters-form`,onSubmit:e.handleSubmit(n),className:`flex-col space-y-4`,children:[i&&(0,K.jsx)(Y,{control:e.control,name:`filter`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(J,{children:(0,K.jsxs)(`div`,{className:`relative`,children:[(0,K.jsx)(Sa,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,K.jsx)($,{type:`search`,placeholder:`Search logs…`,className:N(`pl-9`,zj),value:e.value??``,onChange:e.onChange})]})}),(0,K.jsx)(Q,{})]})}),r&&(0,K.jsx)(Y,{control:e.control,name:`log_name`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Log file`}),(0,K.jsxs)(th,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(ih,{className:N(`w-full bg-white`,zj),children:(0,K.jsx)(rh,{placeholder:`Select log file`})}),(0,K.jsx)(ah,{children:(0,K.jsxs)(nh,{children:[(0,K.jsx)(sh,{value:`hdb.log`,children:`Application (hdb.log)`}),(0,K.jsx)(sh,{value:`system.log`,children:`System (system.log)`})]})})]}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,K.jsx)(Y,{control:e.control,name:`limit`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Limit`}),(0,K.jsxs)(th,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(ih,{className:N(`w-full bg-white`,zj),children:(0,K.jsx)(rh,{placeholder:`Limit`})}),(0,K.jsx)(ah,{children:(0,K.jsxs)(nh,{children:[(0,K.jsx)(sh,{value:`1000`,children:`1000`}),(0,K.jsx)(sh,{value:`500`,children:`500`}),(0,K.jsx)(sh,{value:`250`,children:`250`}),(0,K.jsx)(sh,{value:`100`,children:`100`}),(0,K.jsx)(sh,{value:`10`,children:`10`})]})})]}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:e.control,name:`level`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Level`}),(0,K.jsxs)(th,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(ih,{className:N(`w-full bg-white`,zj),children:(0,K.jsx)(rh,{placeholder:`Level`})}),(0,K.jsx)(ah,{children:(0,K.jsxs)(nh,{children:[(0,K.jsx)(sh,{value:`undefined`,children:`All`}),(0,K.jsx)(sh,{value:`notify`,children:`Notify`}),(0,K.jsx)(sh,{value:`error`,children:`Error`}),(0,K.jsx)(sh,{value:`warn`,children:`Warn`}),(0,K.jsx)(sh,{value:`info`,children:`Info`}),(0,K.jsx)(sh,{value:`debug`,children:`Debug`}),(0,K.jsx)(sh,{value:`trace`,children:`Trace`})]})})]}),(0,K.jsx)(Q,{})]})})]}),(0,K.jsx)(Y,{control:e.control,name:`from`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Start date`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`datetime-local`,className:zj,value:e.value??void 0,onChange:e.onChange})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:e.control,name:`until`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`End date`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`datetime-local`,className:zj,value:e.value??void 0,onChange:e.onChange})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,K.jsx)(P,{type:`submit`,variant:`positiveOutline`,className:`grow`,children:`Apply Filters`}),(0,K.jsx)(P,{type:`reset`,variant:`destructiveOutline`,onClick:t,children:`Clear`})]})]})})})]})}var Vj=1e4;function Hj(e){if(!e)return;let t=parseInt(e,10);if(!(!Number.isFinite(t)||t<=0))return Math.min(t,Vj)}function Uj(e,t){return{operation:`read_log`,start:0,replicated:t,limit:Hj(e.limit),level:e.level===`undefined`?void 0:e.level,from:e.from?new Date(e.from).toISOString():void 0,until:e.until?new Date(e.until).toISOString():void 0,log_name:e.log_name??void 0,filter:e.filter?e.filter:void 0,order:`desc`}}async function Wj({instanceClient:e,logFilters:t,replicated:n}){let{data:r}=await e.post(`/`,Uj(t,n));return r}function Gj(e){let t=e.logFilters;return z({queryKey:[`read_log`,e.entityId,t.limit,t.level,t.from,t.until,t.log_name,t.filter,e.replicated],queryFn:()=>Wj(e),retry:!1,refetchInterval:e.isAutoRefreshEnabled?5e3:!1})}async function Kj({connection:e,logFilters:t,replicated:n,signal:r,onEntry:i}){let{url:a,headers:o,credentials:s}=Jb(e),c;try{c=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(Uj(t,n)),signal:r})}catch(e){throw r?.aborted?e:new Gb(`Failed to open the read_log SSE stream.`,{cause:e})}let l=c.headers.get(`content-type`)??``;if(!c.ok||!l.includes(`text/event-stream`)||!c.body)throw await c.body?.cancel().catch(()=>{}),new Gb(`read_log did not return an event stream (status ${c.status}, content-type "${l}").`);for await(let e of Hb(c.body,r)){if(e.event===`error`){let t=Wb(e);if(!t||typeof t!=`object`)throw new qb(typeof t==`string`&&t?t:`The log stream failed.`);let n=t;throw new qb(n.message??`The log stream failed.`,{code:n.code})}if(e.event===`done`||e.event===`end`)return;for(let t of qj(Wb(e)))i(t)}}function qj(e){return Array.isArray(e)?e.filter(Jj):Jj(e)?[e]:[]}function Jj(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.timestamp==`string`&&(typeof t.level==`string`||typeof t.message==`string`)}function Yj(e){return[e.timestamp,e.node??``,e.thread??``,e.level,e.message].join(`|`)}function Xj(e,t,n){let r=new Set,i=[];for(let n of[...t,...e]){let e=Yj(n);r.has(e)||(r.add(e),i.push(n))}return i.sort((e,t)=>e.timestamp<t.timestamp?1:e.timestamp>t.timestamp?-1:0),n>0&&i.length>n?i.slice(0,n):i}var Zj={entries:[],fellBack:!1};function Qj(e,t){switch(t.kind){case`reset`:return Zj;case`retry`:return e.fellBack?{...e,fellBack:!1}:e;case`append`:{if(t.entries.length===0)return e;let n=e.entries.concat(t.entries);return n.length<=t.cap?{...e,entries:n}:(n.sort((e,t)=>e.timestamp<t.timestamp?1:e.timestamp>t.timestamp?-1:0),{...e,entries:n.slice(0,t.cap)})}case`fellBack`:return{...e,fellBack:!0}}}function $j(){let e=q();return u.isDirectConnection(e.entityId)}var eM=1e3,tM=2e3,nM=250;function rM(e){return Hj(e)??eM}function iM(e,t){return JSON.stringify([e.limit,e.level,e.from,e.until,e.log_name,e.filter,t])}function aM({params:e,logFilters:t,replicated:n,live:r}){let i=$j(),[a,o]=(0,G.useReducer)(Qj,Zj),s=r&&i&&!a.fellBack,c=iM(t,n),l=rM(t.limit),u=Math.max(tM,l),d=H(Gj({...e,logFilters:t,replicated:n,isAutoRefreshEnabled:r&&!s}));(0,G.useEffect)(()=>{o({kind:`reset`})},[e.entityId,c]),(0,G.useEffect)(()=>{r&&o({kind:`retry`})},[r]);let f=(0,G.useRef)({logFilters:t,replicated:n});f.current={logFilters:t,replicated:n},(0,G.useEffect)(()=>{if(!s)return;let t=new AbortController,n=[],r=()=>{if(n.length>0&&!t.signal.aborted){let e=n;n=[],o({kind:`append`,entries:e,cap:u})}},i=setInterval(r,nM);return Kj({connection:{id:e.entityId},logFilters:f.current.logFilters,replicated:f.current.replicated,signal:t.signal,onEntry:e=>n.push(e)}).catch(()=>{}).finally(()=>{clearInterval(i),!t.signal.aborted&&(r(),o({kind:`fellBack`}))}),()=>{clearInterval(i),t.abort()}},[s,e.entityId,c]);let p=(0,G.useMemo)(()=>{let e=d.data??[];return a.entries.length===0?e:Xj(e,a.entries,l)},[d.data,a.entries,l]),m=s?`streaming`:r?`polling`:`idle`;return{logs:p,isLoading:d.isLoading,isFetching:d.isFetching,refetch:()=>d.refetch(),transport:m}}var oM={log_name:`hdb.log`,limit:`100`,level:`undefined`,from:``,until:``,filter:``},sM={error:(0,K.jsx)(mr,{className:`size-3`}),stderr:(0,K.jsx)(mr,{className:`size-3`}),warn:(0,K.jsx)($a,{className:`size-3`}),notify:(0,K.jsx)(Jn,{className:`size-3`}),info:(0,K.jsx)(gi,{className:`size-3`}),debug:(0,K.jsx)(nr,{className:`size-3`}),trace:(0,K.jsx)(In,{className:`size-3`}),stdout:(0,K.jsx)(qa,{className:`size-3`})},cM=[{accessorKey:`level`,header:`Level`,cell:({row:e})=>{let{level:t}=e.original;return(0,K.jsxs)(Wo,{variant:Tj(t),children:[sM[t],Pc(t)]})}},{accessorKey:`timestamp`,header:`Timestamp`,cell:({row:e})=>{let{timestamp:t}=e.original,n=new Date(t),r=n.getFullYear()===new Date().getFullYear()?n.toLocaleDateString(void 0,{month:`numeric`,day:`2-digit`}):n.toLocaleDateString();return(0,K.jsxs)(`span`,{className:`tabular-nums whitespace-nowrap text-muted-foreground`,children:[r,` `,n.toLocaleTimeString()]})}},{accessorKey:`message`,header:`Message`,cell:({row:e})=>{let{message:t}=e.original;return(0,K.jsx)(`span`,{className:`block max-w-xl truncate font-mono text-xs`,children:t})}},{accessorKey:`thread`,header:`Thread`,cell:({row:e})=>(0,K.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:e.original.thread})},{accessorKey:`node`,header:`Node`,cell:({row:e})=>{let{node:t}=e.original,n=kj(t);return(0,K.jsx)(K.Fragment,{children:t?(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsxs)(Wo,{variant:n,children:[t.split(`.`)[0],`...`]})}),(0,K.jsx)(Rs,{className:`bg-popover text-popover-foreground border border-border`,arrowClassName:`bg-popover fill-popover`,children:t})]}):null})}},{accessorKey:`tags`,header:`Tags`,cell:({row:e})=>{let{tags:t}=e.original;return t&&t.length>0?(0,K.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:t}):null}}],lM=(e,t)=>!e&&!t||!e||!t||new Date(e)<=new Date(t);function uM(){return(0,K.jsxs)(`div`,{className:`rounded-md bg-card dark:bg-black-dark overflow-hidden`,children:[(0,K.jsx)(`div`,{className:`flex gap-4 p-4 border-b border-border`,children:[`w-14`,`w-32`,`w-14`,`w-24`,`w-16`,`flex-1`].map((e,t)=>(0,K.jsx)(E_,{className:`h-4 ${e}`},t))}),Array.from({length:12}).map((e,t)=>(0,K.jsxs)(`div`,{className:`flex gap-4 p-3 border-b border-border/40 border-l-2 border-l-transparent`,children:[(0,K.jsx)(E_,{className:`h-5 w-14`}),(0,K.jsx)(E_,{className:`h-5 w-32`}),(0,K.jsx)(E_,{className:`h-5 w-10`}),(0,K.jsx)(E_,{className:`h-5 w-20`}),(0,K.jsx)(E_,{className:`h-5 w-12`}),(0,K.jsx)(E_,{className:`h-5 flex-1 max-w-xs`})]},t))]})}function dM(){let[e,t]=(0,G.useState)(oM),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(),[o,s]=(0,G.useState)(!1),[c,l]=xn(vn.LogsOrderReversed,!1),[u,d]=(0,G.useState)(!1),f=q(),{data:p}=H(sx(f)),m=p?.version,h=!!m&&td(`4.7.16`,m),{logs:g,isLoading:_,isFetching:v,refetch:y,transport:b}=aM({params:f,logFilters:e,replicated:f.entityType===`cluster`,live:o}),x=(0,G.useMemo)(()=>c?[...g??[]].reverse():g??[],[g,c]),S=(0,G.useRef)(null);(0,G.useEffect)(()=>{let e=S.current;!_&&e&&e.scrollTo({top:c?e.scrollHeight:0})},[c,_]),(0,G.useEffect)(()=>{let e=S.current;o&&!_&&e&&e.scrollTo({top:c?e.scrollHeight:0})},[x,o,c,_]);let C=Pt({resolver:Ke(Rj),defaultValues:oM,mode:`onChange`}),w=e=>{a(e.original),r(!0)},T=async e=>{if(!lM(e.from,e.until)){C.setError(`from`,{type:`onChange`,message:`Start date must be before end date`}),C.setError(`until`,{type:`onChange`,message:`End date must be after start date`});return}t(e)},E=async()=>{C.reset(),t(oM)},D=Cg(y);return(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 pt-2 text-foreground md:grid-cols-12 md:gap-4`,children:[(0,K.jsxs)(`section`,{className:`col-span-1 md:col-span-4 lg:col-span-3 px-2 pb-0 md:self-start md:sticky md:top-34 md:max-h-[calc(100vh-(--spacing(34)))] md:overflow-y-auto md:pb-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 md:hidden`,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:()=>d(e=>!e),"aria-label":`Toggle filters`,"aria-expanded":u,className:`flex-1`,children:[(0,K.jsx)(Na,{}),`Filters`]}),(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,"aria-label":`Refresh logs`,className:`flex-1`,children:[(0,K.jsx)(ua,{className:v?`animate-spin`:``}),`Refresh`]}),(0,K.jsxs)(P,{variant:c?`default`:`defaultOutline`,onClick:()=>l(e=>!e),"aria-label":`Reverse log order`,"aria-pressed":c,className:`flex-1`,children:[(0,K.jsx)(Wn,{}),`Reverse`]})]}),(0,K.jsx)(Bj,{form:C,resetFilters:E,submitFilters:T,showLogName:!1,showFilter:h,isOpen:u,onOpenChange:d}),(0,K.jsxs)(`div`,{className:`mt-3 space-y-3 hidden md:block`,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,className:`w-full`,children:[(0,K.jsx)(ua,{}),`Refresh`]}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-foreground`,children:[(0,K.jsx)(Zg,{id:`logs-live-switch`,"aria-label":`Toggle live logs`,checked:o,onCheckedChange:s}),(0,K.jsxs)(`label`,{htmlFor:`logs-live-switch`,className:`flex items-center gap-2 cursor-pointer`,children:[(0,K.jsx)(ua,{className:`size-4 ${o?`animate-spin [animation-duration:3s]`:``}`}),o?b===`streaming`?`Live (streaming)`:`Live (polling every 5s)`:`Live`]})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-foreground`,children:[(0,K.jsx)(Zg,{id:`logs-reverse-order-switch`,"aria-label":`Reverse log order`,checked:c,onCheckedChange:l}),(0,K.jsxs)(`label`,{htmlFor:`logs-reverse-order-switch`,className:`flex items-center gap-2 cursor-pointer`,children:[(0,K.jsx)(Wn,{className:`size-4`}),c?`Oldest first`:`Newest first`]})]})]})]})]}),(0,K.jsx)(`section`,{className:`col-span-1 md:col-span-8 lg:col-span-9`,children:_?(0,K.jsx)(uM,{}):(0,K.jsx)(jj,{columns:cM,data:x,onRowClick:w,containerRef:S})}),(0,K.jsx)(Lj,{isModalOpen:n,setIsModalOpen:r,data:i})]})}function fM(e){return I({getParentRoute:()=>e,path:`logs`,head:()=>({meta:[{title:`Logs — Harper Fabric`}]}),component:dM})}var pM=6e4,mM=60*pM,hM=24*mM,gM=[{id:`1h`,label:`Last 1 hour`,durationMs:mM,bucketMs:1*pM,expandedBucketMs:1*pM},{id:`6h`,label:`Last 6 hours`,durationMs:6*mM,bucketMs:2*pM,expandedBucketMs:1*pM},{id:`24h`,label:`Last 24 hours`,durationMs:hM,bucketMs:10*pM,expandedBucketMs:5*pM},{id:`7d`,label:`Last 7 days`,durationMs:7*hM,bucketMs:mM,expandedBucketMs:15*pM},{id:`30d`,label:`Last 30 days`,durationMs:30*hM,bucketMs:4*mM,expandedBucketMs:mM}];function _M(e){let t=gM.find(t=>t.id===e);if(!t)throw Error(`Unknown preset: ${e}`);return t}function vM(e){let t=(e,t)=>`${e} ${t}${e===1?``:`s`}`;return e>=mM&&e%mM===0?t(e/mM,`hour`):e>=pM&&e%pM===0?t(e/pM,`minute`):e>=1e3&&e%1e3==0?t(e/1e3,`second`):`${e} ms`}function yM(e,t){let n=e=>t?.expanded?e.expandedBucketMs:e.bucketMs,r=n(gM[0]);if(!Number.isFinite(e)||e<=0)return r;for(let t of gM)if(e<=t.durationMs*1.01)return n(t);let i=gM[gM.length-1];return Math.max(r,Math.ceil(e/(i.durationMs/n(i))))}var bM=[{label:`Off`,value:0},{label:`30s`,value:3e4},{label:`60s`,value:6e4},{label:`5m`,value:3e5}],xM=6e4,SM=[`health`,`traffic`,`requests`,`database`,`replication`,`storage`,`overview`],CM={tab:`health`,range:`1h`,refresh:xM};function wM(e){let t=e.refresh===``?NaN:Number(e.refresh);return{tab:SM.find(t=>t===e.tab)??CM.tab,range:gM.find(t=>t.id===e.range)?.id??CM.range,refresh:bM.find(e=>e.value===t)?.value??CM.refresh}}function TM(e){return I({getParentRoute:()=>e,path:`status`,validateSearch:wM,search:{middlewares:[pe(CM)]},head:()=>({meta:[{title:`Status — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./status-Cn5XjmsL.js`),__vite__mapDeps([36,1,3,2,4,5,6,7,9,8,10,11,12,13,16,31,37,38,39,40,41,42,43,44,29,45])),`StatusIndex`)})}function EM(e){let t=xj(e),n=[fM(t),...gb(t,e),hb(t),TM(t),Tw(t),hj(t)];return t.addChildren(n)}I({getParentRoute:()=>hc,path:`notifications`,head:()=>({meta:[{title:`Notifications — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./notifications-D9ejzt52.js`),__vite__mapDeps([46,1,2,3,4,5,6])),`NotificationsCenter`)}),I({getParentRoute:()=>hc,path:`profile`,head:()=>({meta:[{title:`Profile — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./profile-D8B6No3F.js`),__vite__mapDeps([47,1,26,3,2,4,5,6,7,27,12])),`ProfileIndex`)});var DM=mc.addChildren([...Hu,hc.addChildren([EM(`local`)])]);function OM({routeTree:e=DM,authentication:t}){let[n]=(0,G.useState)(()=>Ve({routeTree:e,history:he(),defaultNotFoundComponent:ho,defaultErrorComponent:mo,defaultPreload:!go()&&`intent`,trailingSlash:`never`,defaultPreloadStaleTime:0,scrollRestoration:!0,context:{queryClient:yo,authentication:t||{}}}));return n}function kM(){let e=Sn(),t=OM({authentication:e}),n=(0,G.useRef)(e);return(0,G.useEffect)(()=>{n.current!==e&&(n.current=e,t.invalidate())},[t,e]),(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Se,{router:t,context:{authentication:e}}),(0,K.jsx)(Ne,{router:t,position:`bottom-right`})]})}var AM=({...e})=>(0,K.jsx)(rt,{className:`toaster group`,toastOptions:{classNames:{toast:`group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg`,description:`group-[.toast]:text-muted-foreground`,actionButton:`group-[.toast]:bg-primary group-[.toast]:text-primary-foreground font-medium`,cancelButton:`group-[.toast]:bg-muted group-[.toast]:text-muted-foreground font-medium`}},...e}),jM=!1;function MM(){(0,G.useEffect)(()=>{jM||=!0},[])}function NM(){return wc(),fc(),MM(),(0,K.jsxs)(Es,{children:[(0,K.jsxs)(Ie,{client:yo,children:[(0,K.jsx)(kM,{}),(0,K.jsx)(ze,{buttonPosition:`bottom-right`})]}),(0,K.jsx)(AM,{richColors:!0})]})}function PM(){u.signOutAllLocally(),yo.getMutationCache().clear(),yo.getQueryCache().clear(),Us(),Ws()}function FM(e,t=()=>!1,n=()=>!0){return r=>(r?.response?.status===401&&!t(r.config?.url??``)&&n(r.config)&&e(),Promise.reject(r))}var IM=[`/Login/`,`/ForgotPassword/`,`/ResetPassword/`,`/VerifyEmail/`,`/ResendVerificationEmail/`],LM=`authUserAtSend`;function RM(){let e=u.getConnectionById(m).user;return e&&`id`in e?e.id:null}var zM=!1;function BM(){zM||(zM=!0,M.interceptors.request.use(e=>(e[LM]=RM(),e)),M.interceptors.response.use(e=>e,FM(PM,e=>IM.some(t=>e.startsWith(t)),e=>e?.[LM]===RM())))}function VM(){if(typeof Node!=`function`||!Node.prototype)return;let e=`__harperTranslationGuarded__`,t=Node.prototype;if(t[e])return;Object.defineProperty(t,e,{value:!0,configurable:!0,writable:!0,enumerable:!1});let n=Node.prototype.removeChild;Node.prototype.removeChild=function(e){return e instanceof Node&&e.parentNode!==this?e:n.call(this,e)};let r=Node.prototype.insertBefore;Node.prototype.insertBefore=function(e,t){return t instanceof Node&&t.parentNode!==this?r.call(this,e,null):r.call(this,e,t)}}var HM=`Studio:StaleDeployReloadedAt`,UM=6e4,WM=`__harperStaleDeployReloadState__`;function GM(){if(typeof window<`u`)return window[WM]}function KM(){let e=GM();if(e){try{let e=Number(sessionStorage.getItem(HM)??0);if(Date.now()-e<UM)return;sessionStorage.setItem(HM,String(Date.now()))}catch{return}e.reload()}}function qM(e=()=>window.location.reload()){if(typeof window>`u`)return;let t=window,n=t[WM];if(n){n.reload=e;return}t[WM]={reload:e},window.addEventListener(`vite:preloadError`,()=>KM())}var JM=ie();VM(),qM(),BM(),a(),u.installExplorerCrossTabCleanup(),(0,JM.createRoot)(document.getElementById(`root`),{onUncaughtError:(e,t)=>{ne(e,t),console.error(`Uncaught error:`,e,t)},onCaughtError:(e,t)=>{ne(e,t),console.error(`Caught error:`,e,t)},onRecoverableError:(e,t)=>{ne(e,t),console.warn(`Recoverable error:`,e,t)}}).render((0,K.jsx)(G.StrictMode,{children:(0,K.jsx)(NM,{})}));export{VC as $,So as $n,ah as $t,wk as A,Gs as An,Br as Ar,zy as At,ZE as B,ps as Bn,kn as Br,Zg as Bt,Dk as C,X as Cn,oa as Cr,nx as Ct,yk as D,_c as Dn,Oi as Dr,Vb as Dt,xk as E,Lc as En,Mi as Er,Gb as Et,lk as F,Rs as Fn,Hn as Fr,iv as Ft,HT as G,cs as Gn,dg as Gt,zE as H,as as Hn,wn as Hr,Fg as Ht,LO as I,Ls as In,Bn as Ir,rv as It,fT as J,$o as Jn,ug as Jt,WT as K,Zo as Kn,hg as Kt,eO as L,Cs as Ln,On as Lr,av as Lt,dk as M,q as Mn,vr as Mr,ly as Mt,ok as N,Vs as Nn,mr as Nr,ty as Nt,Tk as O,ic as On,vi as Or,bb as Ot,uk as P,Is as Pn,fr as Pr,ov as Pt,iw as Q,wo as Qn,th as Qt,rD as R,Ss as Rn,Mn as Rr,nv as Rt,vk as S,Vc as Sn,ca as Sr,ox as St,kk as T,J as Tn,na as Tr,Kb as Tt,CE as U,us as Un,Dn as Ur,xg as Ut,YE as V,os as Vn,An as Vr,Lg as Vt,UT as W,fs as Wn,En as Wr,lg as Wt,Zw as X,Bo as Xn,ng as Xt,hT as Y,Wo as Yn,fg as Yt,Rw as Z,bo as Zn,Th as Zt,Xk as _,au as _n,Sa as _r,Px as _t,vM as a,hp as an,ko as ar,hC as at,Ek as b,Q as bn,fa as br,lx as bt,Wj as c,Df as cn,yo as cr,xC as ct,kA as d,Gu as dn,$a as dr,Wx as dt,sh as en,Co as er,IC as et,_A as f,qu as fn,Za as fr,Hx as ft,$k as g,Ku as gn,Oa as gr,Fx as gt,eA as h,Zu as hn,Va as hr,Nx as ht,gM as i,Dp as in,Ao as ir,mC as it,Ck as j,Bs as jn,Ir as jr,My as jt,bk as k,Js as kn,gi as kr,Uy as kt,Nj as l,Ef as ln,mo as lr,PS as lt,Qk as m,Xu as mn,Ua as mr,Vx as mt,wM as n,rh as nn,Do as nr,TC as nt,_M as o,Yf as on,xo as or,SC as ot,dA as p,Ju as pn,qa as pr,Ux as pt,VT as q,Qo as qn,pg as qt,bM as r,kp as rn,Oo as rr,dC as rt,yM as s,Jf as sn,vo as sr,gC as st,KM as t,ih as tn,Eo as tr,wC as tt,Mj as u,td as un,ao as ur,kS as ut,Jk as v,ll as vn,va as vr,Ax as vt,Ok as w,Y as wn,ia as wr,Qb as wt,_k as x,Z as xn,ua as xr,sx as xt,qk as y,$ as yn,ma as yr,Dx as yt,nD as z,ms as zn,jn as zr,E_ as zt};
|
|
824
|
+
disabled:pointer-events-none disabled:opacity-50 dark:bg-grey-700 dark:text-white`})]})}function JA({pageSize:e,onChange:t}){return(0,K.jsxs)(`div`,{className:`hidden items-center gap-2 @min-[960px]:flex`,children:[(0,K.jsx)(`span`,{className:`text-sm whitespace-nowrap text-muted-foreground`,children:`Rows`}),(0,K.jsxs)(th,{value:String(e),onValueChange:e=>t(Number(e)),children:[(0,K.jsx)(ih,{"aria-label":`Rows per page`,className:`h-9 w-20`,children:(0,K.jsx)(rh,{})}),(0,K.jsx)(ah,{side:`top`,children:UA.map(e=>(0,K.jsx)(sh,{value:String(e),children:Eh(e)},e))})]})]})}function YA(e,t,n=1){if(t<=n*2+5)return XA(1,t);let r=Math.max(e-n,1),i=Math.min(e+n,t),a=r>2,o=i<t-1,s=3+2*n;return!a&&o?[...XA(1,s),`ellipsis`,t]:a&&!o?[1,`ellipsis`,...XA(t-s+1,t)]:[1,`ellipsis`,...XA(r,i),`ellipsis`,t]}function XA(e,t){return Array.from({length:t-e+1},(t,n)=>e+n)}var ZA=32,QA=`shadow-[inset_-1px_0_0_var(--color-border)]`;function $A(e,t){return!t||typeof e!=`object`||!e||!Object.hasOwn(e,t)?void 0:e[t]??void 0}function ej({applyFilters:e,columnFiltersForm:t,columns:n,columnVisibility:r,columnSizing:i,setColumnSizing:a,data:o,emptyState:s,isFetching:c,onColumnClick:l,onRowClick:u,pageIndex:d,pageSize:f,primaryKey:p,rowSelection:m,resultSetKey:h,tableIdentity:g,setPageIndex:_,setPageSize:v,filtersToggled:y,totalPages:b,totalRecords:x,isEstimatedCount:S,estimatedRange:C,isExactCountFetching:w,isExactCountError:T,onRequestExactCount:E}){let D=Le({features:gg,data:o||[],columns:n,manualSorting:!0,enableColumnResizing:!0,columnResizeMode:`onEnd`,onColumnSizingChange:a,defaultColumn:{minSize:80},state:{columnVisibility:r,columnSizing:i}}),O=!!m&&!!p,k=(0,G.useMemo)(()=>O?(o??[]).map(e=>$A(e,p)).filter(e=>e!==void 0):[],[O,o,p]),A=m?k.filter(e=>m.selectedKeys.has(e)).length:0,j=k.length>0&&A===k.length,ee=A>0&&!j,[M,P]=(0,G.useState)(void 0),te=(0,G.useCallback)((e,t)=>{if(!m)return;let n=t?k.indexOf(M):-1,r=k.indexOf(e);if(n===-1||r===-1){m.toggleRow(e),P(e);return}let[i,a]=n<=r?[n,r]:[r,n];m.setRangeSelected(k.slice(i,a+1),!m.selectedKeys.has(e))},[m,k,M]),F=(0,G.useRef)(null),ne=(0,G.useRef)(!1),re=(0,G.useRef)(!1),ie=(0,G.useCallback)((e,t)=>{!m||e===void 0||t.button!==0||t.shiftKey||t.ctrlKey||t.metaKey||(ne.current=!0,F.current={originKey:e,selected:!m.selectedKeys.has(e),snapshot:new Set(m.selectedKeys),applied:[],lastKey:e})},[m]),ae=(0,G.useCallback)((e,t)=>{let n=F.current;if(!n)return;if(!(t&1)){F.current=null;return}if(!m||e===void 0||e===n.lastKey)return;let r=k.indexOf(n.originKey),i=k.indexOf(e);if(r===-1||i===-1)return;n.lastKey=e;let[a,o]=r<=i?[r,i]:[i,r],s=k.slice(a,o+1),c=new Set(s),l=n.applied.filter(e=>!c.has(e)),u=l.filter(e=>n.snapshot.has(e)),d=l.filter(e=>!n.snapshot.has(e));u.length&&m.setRangeSelected(u,!0),d.length&&m.setRangeSelected(d,!1),m.setRangeSelected(s,n.selected),n.applied=s,P(n.originKey),re.current=!0},[m,k]);(0,G.useEffect)(()=>{let e=()=>{F.current=null},t=()=>{ne.current=!1,re.current=!1};return window.addEventListener(`mouseup`,e),window.addEventListener(`mousedown`,t,!0),()=>{window.removeEventListener(`mouseup`,e),window.removeEventListener(`mousedown`,t,!0)}},[]),(0,G.useLayoutEffect)(()=>{P(void 0),F.current=null},[h]);let oe=(0,G.useRef)(null),[I,se]=(0,G.useState)(0);(0,G.useLayoutEffect)(()=>{let e=oe.current;e&&(e.scrollTop=0)},[h]),(0,G.useLayoutEffect)(()=>{let e=oe.current;e&&(e.scrollTop=0,e.scrollLeft=0)},[g]);let L=D.state.columnResizing,ce=L.isResizingColumn;(0,G.useLayoutEffect)(()=>{ce&&se(oe.current?.scrollLeft??0)},[ce]);let le=null;if(ce){let e=D.options.defaultColumn?.minSize??20,t=D.getColumn(ce)?.getSize()??0,n=O?ZA:0;for(let e of D.getVisibleLeafColumns())if(n+=e.getSize(),e.id===ce)break;le=n+Math.max(L.deltaOffset??0,e-t)-I}let R=D.getRowModel().rows.length>0,ue=o===void 0,de=!R&&!ue&&!!s;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`relative flex flex-col grow min-h-0`,children:[(0,K.jsxs)(lg,{containerRef:oe,containerClassName:N(`rounded-t-md bg-card dark:bg-black-dark min-h-0 overflow-y-auto`,de?`shrink-0`:`rounded-b-md grow`),className:`table-fixed`,children:[(0,K.jsx)(ug,{children:D.getHeaderGroups().map(e=>(0,K.jsxs)(fg,{className:`border-none`,children:[O&&(0,K.jsx)(pg,{style:{width:`${ZA}px`},className:N(`sticky top-0 left-0 z-20 p-0 bg-card dark:bg-black-dark border-b border-border`,QA),children:(0,K.jsx)(tj,{checked:j,indeterminate:ee,disabled:k.length===0,onToggle:()=>{m.toggleAll(k,!j),P(j?void 0:k[0])}})}),e.headers.map(e=>(0,K.jsx)(mg,{header:e,onColumnClick:l,className:`sticky top-0 z-10 bg-card dark:bg-black-dark border-b border-border font-mono text-[0.8rem] [&_button]:text-[0.8rem]`},e.id)),(0,K.jsx)(pg,{"aria-hidden":!0,className:`w-full p-0 sticky top-0 z-10 bg-card dark:bg-black-dark border-b border-border`})]},e.id))}),y&&(0,K.jsx)(MA,{applyFilters:e,columnFiltersForm:t,headerGroups:D.getHeaderGroups(),selectColumnWidth:O?ZA:void 0}),!de&&(0,K.jsx)(dg,{className:`bg-background dark:bg-black border-y border-border dark:border-grey-700`,children:R?D.getRowModel().rows.map(e=>(0,K.jsx)(rj,{row:e,onRowClick:u,primaryKey:p,rowSelection:O?m:void 0,onSelectRow:te,onBeginDrag:ie,onDragOver:ae,pressedInGutterRef:ne,dragMovedRef:re},e.id)):(0,K.jsx)(fg,{children:(0,K.jsx)(hg,{colSpan:n.length+1+ +!!O,className:`h-24 text-center`,children:c||ue?(0,K.jsx)(HA,{className:`opacity-50 inline-block`}):(0,K.jsx)(`span`,{children:`No results.`})})})})]}),de&&(0,K.jsx)(`div`,{className:`grow min-h-0 rounded-b-md bg-background dark:bg-black border border-t-0 border-border dark:border-grey-700`,children:s}),le!==null&&(0,K.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute top-0 bottom-0 z-20 w-0.5 bg-primary`,style:{left:`${le}px`}})]}),(0,K.jsx)(WA,{pageIndex:d,pageSize:f,totalPages:b,totalRecords:x,isEstimatedCount:S,estimatedRange:C,isExactCountFetching:w,isExactCountError:T,onRequestExactCount:E,setPageIndex:_,setPageSize:v})]})}function tj({checked:e,indeterminate:t,disabled:n,onToggle:r}){let i=(0,G.useRef)(null);return(0,G.useLayoutEffect)(()=>{i.current&&(i.current.indeterminate=t)},[t]),(0,K.jsx)(nj,{children:(0,K.jsx)(`input`,{ref:i,type:`checkbox`,"aria-label":e?`Deselect all records on this page`:`Select all records on this page`,checked:e,disabled:n,onChange:r})})}function nj({children:e}){return(0,K.jsx)(`label`,{className:`flex h-full w-full items-center justify-center py-2`,children:e})}function rj({row:e,primaryKey:t,onRowClick:n,rowSelection:r,onSelectRow:i,onBeginDrag:a,onDragOver:o,pressedInGutterRef:s,dragMovedRef:c}){let l=e.getVisibleCells(),u=(0,G.useMemo)(()=>{let n=e.original;return n&&n.message===`This entry has expired`?l[0]?.column?.id===t?[(0,K.jsx)(aj,{cell:l[0]},l[0].id),(0,K.jsx)(oj,{colSpan:l.length-1},`expired`)]:[(0,K.jsx)(oj,{colSpan:l.length},`expired`)]:l.map(e=>(0,K.jsx)(aj,{cell:e},e.id))},[e,t,l]),d=r?$A(e.original,t):void 0,f=d!==void 0&&!!r?.selectedKeys.has(d);return(0,K.jsxs)(fg,{"data-state":f?`selected`:void 0,onMouseOver:e=>o?.(d,e.buttons),onMouseDown:e=>{r&&e.shiftKey&&e.preventDefault()},onClick:t=>{if(!s?.current){if(r&&d!==void 0&&(t.ctrlKey||t.metaKey||t.shiftKey)){t.preventDefault(),i?.(d,t.shiftKey);return}n?.(e)}},className:N(`hover:bg-muted/10 data-[state=selected]:bg-muted`,n&&`cursor-pointer`),children:[r&&(0,K.jsx)(hg,{className:N(`sticky left-0 z-10 p-0`,QA,f?`bg-muted`:`bg-background dark:bg-black`),onClick:CE,onMouseDown:e=>{e.preventDefault(),e.currentTarget.querySelector(`input`)?.focus(),a?.(d,e)},children:(0,K.jsx)(nj,{children:(0,K.jsx)(`input`,{type:`checkbox`,"aria-label":f?`Deselect record`:`Select record`,checked:f,disabled:d===void 0,onClick:e=>{c?.current&&e.detail!==0||d===void 0||i?.(d,e.shiftKey)},onChange:ij})})}),u,(0,K.jsx)(hg,{"aria-hidden":!0,className:`p-0`})]})}function ij(){}function aj({cell:e}){let t=e.column.getSize();return(0,K.jsx)(hg,{"data-col-id":e.column.id,style:{width:`${t}px`,maxWidth:`${t}px`},className:`px-2 py-2 font-mono text-[0.8rem] overflow-hidden text-ellipsis whitespace-nowrap`,children:Me(e.column.columnDef.cell,e.getContext())})}function oj({colSpan:e}){return(0,K.jsx)(hg,{colSpan:e,className:`px-2 py-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,children:(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`This entry has expired`})})}var sj=new Set;function cj({instanceDatabaseMap:e,databaseName:t,tableName:n}){let r=B({strict:!1}),i=q(),{clusterId:a,instanceId:o}=r,{toggled:s,toggle:c}=dA(!0),l=En(`instance:update`),u=Of(o??a,t,n,`insert`),d=Af(o??a,t,n),f=Mf(),p=Of(o??a,t,n,`update`),m=Of(o??a,t,n,`delete`),g=Df(),{data:_}=H(XE({...i,databaseName:t,tableName:n})),v=e?.[t],y=v?.[n],b=_??y,x=d&&f.methods.file,S=d&&f.methods.url,C=d&&f.allowsSource(`csv-data`),w=(0,G.useMemo)(()=>oE(y?.attributes,v),[y,v]),T=d&&f.allowsSource(`json-records`)&&w.length>0,E=(0,G.useMemo)(()=>pp(b?.attributes??[],`attribute`),[b]),{data:D}=H(rA(i)),{data:O}=H(sx(i)),k=kf(o??a,t,n),A=wA(O?.version,k),j=A===void 0,ee=D?.[t]?.[n],M=(0,G.useMemo)(()=>Mw(b,v,ee),[b,v,ee]),N=(0,G.useMemo)(()=>Lw(b,v),[b,v]),te=(0,G.useMemo)(()=>Pw(b?.attributes,v),[b,v]),[F,ne]=ev(null,r),[re,ie]=(0,G.useState)(!1),[ae,oe]=ev(null,r),[I,se]=ev(null,r),[L,ce]=(0,G.useState)(null),le=L!==null,R=(0,G.useMemo)(()=>g&&!!v&&Object.keys(v).length>1,[g,v]),{toggled:de,toggleOn:z,toggleOff:fe}=dA(!1),pe=Pt({resolver:Ke(jA)}),{reset:he}=pe,ge=pe.watch(),[_e,ve]=ev(null,[r.clusterId,r.instanceId,t,n]),ye=(0,G.useCallback)(e=>{let t=[];for(let n in e){let r=e[n];if(r?.length)try{t.push(...BE(n,r,E[n],M[n]))}catch(e){U.error(String(e))}}return t},[E,M]),be=(0,G.useCallback)(()=>{let e=ye(ge);ve(e.length?e:null),he({...ge})},[ye,he,ge]),xe=(0,G.useCallback)(()=>{he({},{keepValues:!1,keepDirtyValues:!1,keepDefaultValues:!1}),he(),ve(null),fe()},[fe,he]);(0,G.useEffect)(function(){return xe()},[r,xe]);let{filters:Se}=me({strict:!1}),Ce=JSON.stringify([t,n,Se??null]),we=(0,G.useRef)(null);(0,G.useEffect)(function(){if(!b||we.current===Ce)return;let e=we.current===null;if(we.current=Ce,Se){he({...Se});let e=ye(Se);ve(e.length?e:null),z()}else e||xe()},[Se,Ce,b,he,ye,ve,z,xe]);let{dataTableColumns:Te,primaryKey:Ee}=OE(b,M),[De,Oe]=ev({attribute:Ee,descending:!1},r),[ke,Ae]=ev(0,[t,n,_e]),[je,Me]=(0,G.useState)(20),[Ne,Pe]=ev(null,[t,n,_e,je,s]),Fe=_?.record_count??y?.record_count,Ie=_?.estimated_record_range??y?.estimated_record_range,[Le,Re]=ev(!1,[t,n]),{data:ze,isFetching:Be,isError:Ve,refetch:He}=H(SA({...i,enabled:Le,databaseName:t,tableName:n})),Ue=(0,G.useCallback)(()=>{Le?He():Re(!0)},[Le,He,Re]),We=ze??Fe,Ge=We?Math.ceil(We/je):0,qe=ze===void 0&&Ie!==void 0,Je=de&&!!_e,Ye=JSON.stringify([t,n]),Xe=JSON.stringify([i.entityId,t,n,ke,je,De,Je?_e:null,s]),[Ze,Qe]=ev(sj,[Xe]),$e=(0,G.useCallback)(e=>{Qe(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n})},[Qe]),et=(0,G.useCallback)((e,t)=>{Qe(t?new Set(e):sj)},[Qe]),tt=(0,G.useCallback)((e,t)=>{Qe(n=>{let r=new Set(n);for(let n of e)t?r.add(n):r.delete(n);return r})},[Qe]),nt=(0,G.useMemo)(()=>m?{selectedKeys:Ze,toggleRow:$e,toggleAll:et,setRangeSelected:tt}:void 0,[m,Ze,$e,et,tt]),rt=ey({...i,enabled:!Je&&!!Ee,databaseName:t,tableName:n,searchAttribute:Ee,sort:De,pageSize:je,pageIndex:ke,onlyIfCached:s,getAttributes:N}),{data:it,isFetching:at,isError:ot}=H(rt),st=RE({...i,enabled:Je&&!!Ee,databaseName:t,tableName:n,conditions:_e,sort:De,pageSize:je,pageIndex:ke,onlyIfCached:s,getAttributes:N}),{data:ct,isFetching:lt,isError:ut}=H(st),dt=Je?ct:it,ft=at||lt,pt=Je?ut:ot,mt=dt?.data,ht=(0,G.useMemo)(()=>(mt??[]).map(e=>$A(e,Ee)).filter(e=>e!==void 0&&Ze.has(e)),[mt,Ee,Ze]),{data:gt,isFetching:_t,isError:vt}=H(bA({...i,enabled:re,databaseName:t,tableName:n,ids:F})),yt=re&&!le&&!!ae&&(!Ee||ae[Ee]==null),bt=gt?.data,xt=!yt&&!le&&!!F?.length&&!_t&&(vt||Array.isArray(bt)&&bt.length===0),{mutate:St,isPending:Ct}=AA(),{mutate:wt,isPending:Tt}=vA(),{mutate:Et,isPending:Dt}=DA(),{mutate:Ot,isPending:kt}=pA(),At=ue(),jt=(0,G.useCallback)(()=>(Pe(null),Qe(sj),At.invalidateQueries({queryKey:[i.entityId,t,n]})),[At,i.entityId,t,n,Pe,Qe]),Mt=(0,G.useCallback)(()=>At.invalidateQueries({queryKey:yA(i.entityId,t,n)}),[At,i.entityId,t,n]),Nt=(0,G.useCallback)(async()=>{confirm(`Are you sure you want to cleanup orphan blobs for database "${t}"?`)&&Ot({...i,databaseName:t},{onSuccess:e=>{U.success(e.message||`Orphan blobs cleanup started successfully`),jt()},onError:e=>{U.error(e instanceof Error?e.message:`Failed to cleanup orphan blobs`)}})},[Ot,t,i,jt]),{exportCsv:Ft,isExporting:It}=KE(),Lt=(0,G.useCallback)(()=>{Ft({databaseName:t,tableName:n,primaryKey:Ee,sort:De,conditions:Je?_e:null})},[Ft,t,n,Ee,De,Je,_e]),Rt=(0,G.useCallback)(e=>{if(e?.wroteNothing){U.error(`The record wasn't updated`,{description:e.message});return}if(jt(),Mt(),ie(!1),e){U.error(`The record wasn't fully updated`,{description:e.message});return}U.success(`Record updated successfully`)},[jt,Mt]),zt=(0,G.useCallback)(e=>{St({...i,databaseName:t,tableName:n,records:e},{onSuccess:t=>Rt(OA(t,e.length))})},[St,i,t,n,Rt]),Bt=(0,G.useCallback)(e=>{Et({...i,databaseName:t,tableName:n,records:e},{onSuccess:t=>Rt(EA(t,e.length))})},[Et,i,t,n,Rt]),Vt=(0,G.useCallback)(e=>{wt({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:t=>{let n=gA(t,e.length);if(n?.wroteNothing){U.error(`The record wasn't deleted`,{description:n.message});return}if(jt(),Mt(),ie(!1),n){U.error(`The record wasn't fully deleted`,{description:n.message});return}U.success(`Record deleted successfully`)}})},[wt,i,t,n,jt,Mt]),Ht=(0,G.useCallback)(()=>{let e=ht;e.length&&confirm(`Permanently delete ${h(e.length,`record`,`records`)} from "${n}"?`)&&wt({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:t=>{jt(),Mt();let n=gA(t,e.length);if(n){U.error(`The records weren't all deleted`,{description:n.message});return}U.success(`${h(e.length,`record`,`records`)} deleted successfully`)}})},[wt,i,t,n,jt,Mt,ht]),Ut=(0,G.useCallback)((e,t)=>{let n=Ee?t[Ee]:void 0;oe(t),ne(n==null?null:[n]),se(e)},[Ee,oe,ne,se]),Wt=(0,G.useCallback)(e=>{if(I===null||!mt)return;let t=I+e,n=mt[t];if(n){Ut(t,n);return}let r=ke+e;r<0||(Ae(r),ce({end:e===1?`first`:`last`,fromPage:ke}))},[I,mt,Ut,ke,Ae]);(0,G.useEffect)(function(){if(!L)return;if(!re){ce(null);return}let e=L.end===`first`?0:(mt?.length??0)-1,t=e>=0?mt?.[e]:void 0;if(t){ce(null),Ut(e,t);return}if(mt||pt){if(ce(null),Ae(L.fromPage),pt){U.error(`Couldn't load the next page of records`);return}if(L.end===`first`){Pe(L.fromPage),U.info(`This is the last record`);return}U.info(`This is the first record`)}},[L,mt,pt,re,Ut,Ae,Pe]);let Gt=e=>{Ut(e.index,e.original),ie(!0)},Kt=(e,t)=>{Oe({attribute:e,descending:!t})},qt=Cg(jt),Jt=(0,G.useCallback)(()=>{HT(`ShowAddTableRecords`,{databaseName:t,tableName:n})},[t,n]),Yt=(0,G.useCallback)(()=>{HT(`ShowImportData`,{databaseName:t,tableName:n})},[t,n]),Xt=(0,G.useCallback)(()=>{HT(`ShowImportData`,{databaseName:t,tableName:n,method:x?`file`:`url`})},[t,n,x]),Zt=(0,G.useCallback)(()=>{HT(`ShowImportData`,{databaseName:t,tableName:n,method:`sample`})},[t,n]),[Qt,$t]=ov(`ColumnDisplayed/${t}/${n}`,{}),en=(0,G.useMemo)(()=>({...Object.fromEntries(Iw(M).map(e=>[e,!1])),...Qt}),[M,Qt]),tn=I===null?void 0:{position:le?void 0:ke*je+I+1,total:Je?void 0:We,isTotalEstimated:qe,hasPrevious:!le&&(I>0||ke>0),hasNext:!le&&!!mt&&(I+1<mt.length||mt.length===je&&Ne!==ke),onPrevious:()=>Wt(-1),onNext:()=>Wt(1)},[nn,W]=ov(`ColumnSizing/${t}/${n}`,{});return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`shrink-0 flex flex-col md:flex-row md:flex-wrap items-center justify-between gap-3 pt-15 pb-4 px-4`,children:[(0,K.jsxs)(`div`,{className:`flex space-x-2`,children:[u&&(0,K.jsxs)(P,{variant:`positiveOutline`,onClick:Jt,accessKey:`n`,children:[(0,K.jsx)(ca,{}),(0,K.jsxs)(`span`,{children:[`Add `,(0,K.jsx)(`u`,{children:`N`}),`ew Record(s)`]})]}),m&&ht.length>0&&(0,K.jsxs)(P,{variant:`destructiveOutline`,onClick:Ht,disabled:Tt,children:[(0,K.jsx)(Za,{className:`text-destructive`}),(0,K.jsxs)(`span`,{children:[`Delete Selected (`,ht.length,`)`]})]})]}),(0,K.jsxs)(`div`,{className:`flex space-x-2`,children:[de&&_e&&(0,K.jsxs)(P,{type:`button`,variant:`ghost`,onClick:xe,accessKey:`f`,children:[(0,K.jsx)(ei,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Clear `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),de&&pe.formState.isDirty&&(0,K.jsxs)(P,{variant:`default`,onClick:be,children:[(0,K.jsx)(Qr,{className:`inline-block `}),`Apply Filters`]}),de&&!_e&&(0,K.jsxs)(P,{variant:`ghost`,onClick:fe,accessKey:`f`,children:[(0,K.jsx)(ei,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Hide `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),!de&&(0,K.jsxs)(P,{variant:`ghost`,onClick:z,accessKey:`f`,children:[(0,K.jsx)(ni,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Show `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),(0,K.jsx)(P,{variant:`defaultOutline`,onClick:qt,disabled:ft,children:(0,K.jsx)(ua,{"aria-label":`Refresh table`,role:`img`})}),(0,K.jsx)(BA,{columns:Te,columnVisibility:en,setColumnVisibility:$t}),(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsx)(P,{variant:`ghost`,size:`icon`,children:(0,K.jsx)(Hr,{"aria-label":`Table options`})})}),(0,K.jsxs)(So,{side:`bottom`,align:`end`,children:[d&&(0,K.jsxs)(Co,{onClick:Yt,children:[(0,K.jsx)(Mr,{}),`Import Data`]}),(0,K.jsxs)(Co,{onClick:Lt,disabled:It,children:[(0,K.jsx)(Ar,{}),`Export CSV`]}),(0,K.jsx)(Eo,{}),(0,K.jsxs)(Co,{className:`focus:bg-primary/70 focus:text-white`,onClick:c,children:[s?(0,K.jsx)(gr,{className:`text-green`}):(0,K.jsx)(Sr,{}),`Only If Cached`,(0,K.jsx)(V,{to:`https://docs.harperdb.io/docs/developers/applications/caching#cache-control-header`,target:`_blank`,rel:`noopener noreferrer`,onClick:CE,children:(0,K.jsx)(Wr,{})})]}),g&&l&&!!o&&(0,K.jsxs)(Co,{className:`focus:bg-yellow/70 focus:text-white`,onClick:Nt,disabled:kt,children:[(0,K.jsx)(er,{className:`text-yellow `}),`Cleanup Orphan Blobs`]}),g&&(0,K.jsx)(Eo,{}),R&&(0,K.jsxs)(Co,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>HT(`ShowDeleteTable`,{databaseName:t,tableName:n}),children:[(0,K.jsx)(Za,{className:`inline-block `}),`Drop Table`]}),g&&(0,K.jsxs)(Co,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>HT(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,K.jsx)(Za,{}),`Drop Database`]})]})]})]})]}),(0,K.jsx)(ej,{primaryKey:Ee,data:mt,emptyState:(0,K.jsx)(PA,{tableName:n,isFiltered:Je,isPastFirstPage:ke>0,recordCount:We,canImportFile:x,canImportUrl:S,canSeedSample:C,canSeedRandom:T,canAddRecords:u,onImport:Xt,onSeed:Zt,onAddRecords:Jt,onClearFilters:xe}),isFetching:ft,filtersToggled:de,columns:Te,columnVisibility:en,columnSizing:nn,setColumnSizing:W,onRowClick:Gt,onColumnClick:Kt,rowSelection:nt,totalPages:Ge,totalRecords:We,isEstimatedCount:qe,estimatedRange:Ie,isExactCountFetching:Be,isExactCountError:Ve,onRequestExactCount:Ue,pageIndex:ke,pageSize:je,resultSetKey:Xe,tableIdentity:Ye,columnFiltersForm:pe,applyFilters:be,setPageIndex:Ae,setPageSize:Me}),(0,K.jsx)(lA,{canEditRecords:p,canDeleteRecords:m,canReplaceRecords:j,replaceBlockedReason:A,setIsModalOpen:ie,isModalOpen:re,primaryKey:Ee,missingPrimaryKey:yt,recordUnavailable:xt,syntheticAttributes:te,recordNavigation:tn,data:le?void 0:yt||xt?ae?[ae]:void 0:gt?.data,onSaveChanges:zt,onReplaceRecord:Bt,onDeleteRecord:Vt,isUpdateTableRecordsPending:Ct||Dt,isDeleteTableRecordsPending:Tt})]})}function lj(e,t){if(!e)return null;if(!(t.databaseName&&e[t.databaseName])){let n=Object.keys(e).sort()[0];return n&&n!==t.databaseName?{databaseName:n,tableName:void 0}:null}return t.tableName&&!e[t.databaseName][t.tableName]?{databaseName:t.databaseName,tableName:void 0}:null}var uj=10;function dj(e){return Math.max(200,Math.floor(e/2))}function fj(e,t){return Math.round(Math.min(Math.max(e,200),dj(t)))}function pj(){let[e,t]=xn(vn.DatabasesSidebarWidth,320),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(()=>fj(e,window.innerWidth)),o=(0,G.useRef)(i);o.current=i;let s=(0,G.useRef)(null);(0,G.useEffect)(()=>{n||a(fj(e,window.innerWidth))},[e,n]),(0,G.useEffect)(()=>{let t=()=>{n||a(fj(e,window.innerWidth))};return window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t)},[e,n]);let c=(0,G.useCallback)(e=>{e.preventDefault(),s.current={startX:e.clientX,startWidth:o.current},r(!0)},[]);return(0,G.useEffect)(()=>{if(!n)return;let e=e=>{let t=s.current;t&&a(fj(t.startWidth+(e.clientX-t.startX),window.innerWidth))},i=()=>{r(!1),t(o.current)},c=document.body.style.userSelect;return document.body.style.userSelect=`none`,window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,i),()=>{document.body.style.userSelect=c,window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,i)}},[n,t]),{width:i,isResizing:n,startResizing:c,handleKeyDown:(0,G.useCallback)(e=>{e.key===`ArrowLeft`?(e.preventDefault(),t(e=>fj(e-uj,window.innerWidth))):e.key===`ArrowRight`&&(e.preventDefault(),t(e=>fj(e+uj,window.innerWidth)))},[t])}}function mj(){let e=B({strict:!1}),t=q(),{data:n}=H(AS({...t,skipRecordCount:!0})),{width:r,isResizing:i,startResizing:a,handleKeyDown:o}=pj(),s={"--db-sidebar-width":`${r}px`},c=lj(n,e);return c?(0,K.jsx)(L,{to:Ew({...e,...c}),replace:!0}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`main`,{className:`flex flex-col gap-4 md:gap-0 md:flex-row md:items-start`,children:[(0,K.jsxs)(`section`,{style:s,className:`relative text-foreground w-full md:w-[var(--db-sidebar-width)] md:shrink-0 md:border-r-2 border-border flex flex-col min-h-0 md:sticky md:top-32 md:h-[calc(100vh-(--spacing(32)))] md:max-h-[calc(100vh-(--spacing(32)))] overflow-y-clip`,children:[(0,K.jsx)(tk,{instanceDatabaseMap:n}),(0,K.jsx)(`div`,{role:`separator`,tabIndex:0,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,"aria-valuenow":r,"aria-valuemin":200,"aria-valuemax":dj(window.innerWidth),onMouseDown:a,onKeyDown:o,className:`group hidden md:block absolute top-0 bottom-0 left-full w-2 z-40 cursor-col-resize outline-none`,children:(0,K.jsx)(`div`,{className:N(`absolute inset-y-0 left-0 w-1 -translate-x-1/2 transition-colors`,`group-hover:bg-violet-400/60 dark:group-hover:bg-violet-500/60 group-focus-visible:bg-violet-500/80`,i&&`bg-violet-400/60 dark:bg-violet-500/60`)})})]}),(0,K.jsx)(`section`,{className:`text-foreground w-full md:flex-1 md:min-w-0 flex flex-col min-h-0 h-[calc(100vh-(--spacing(32)))]`,children:e.databaseName&&e.tableName?(0,K.jsx)(cj,{instanceDatabaseMap:n,databaseName:e.databaseName,tableName:e.tableName}):e.databaseName?(0,K.jsx)(`div`,{className:`min-h-0 grow overflow-y-auto`,children:(0,K.jsx)(tD,{instanceDatabaseMap:n,databaseName:e.databaseName})}):null})]}),n&&(0,K.jsx)(SE,{instanceDatabaseMap:n})]})}function hj(e){return I({getParentRoute:()=>e,path:`/databases/{-$databaseName}/{-$tableName}`,head:()=>({meta:[{title:`Databases — Harper Fabric`}]}),component:mj})}var gj={className:`text-primary font-semibold bg-primary/10 rounded-md dark:text-white dark:bg-white/10`};function _j(){let e=Ef(),t=B({strict:!1}),{version:n}=ae({strict:!1}),r=td(`4.6.0`,n)&&e,i=td(`4.7.0-beta.7`,n),a=q(),{data:o}=H(zy(a,r)),s=o?.restartRequired??!1,c=(0,G.useMemo)(()=>[e&&{to:t.clusterId&&!t.instanceId?Uy(t,`apps`):Uy(t),activeOptions:{exact:!0},name:`Applications`,shortName:`Apps`,icon:(0,K.jsx)(na,{className:`inline-block`})},{to:Uy(t,`databases`),icon:(0,K.jsx)(Br,{className:`inline-block`}),name:`Databases`},e&&i&&{to:Uy(t,`apis`),name:`APIs`,icon:(0,K.jsx)(wa,{className:`inline-block`})},e&&r&&{to:Uy(t,`status`),icon:(0,K.jsx)(ii,{className:`inline-block`}),name:`Status`},e&&{to:Uy(t,`logs`),icon:(0,K.jsx)(Qi,{className:`inline-block`}),name:`Logs`},e&&{to:Uy(t,`config`),icon:(0,K.jsx)(Ea,{className:`inline-block`}),name:`Config`}].filter(Js),[e,t,i,r]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(vj,{links:c,restartRequired:s}),(0,K.jsx)(yj,{links:c,restartRequired:s})]})}function vj({links:e,restartRequired:t}){return(0,K.jsxs)(`div`,{className:`hidden md:[@media(hover:hover)]:flex xl:flex items-center justify-between h-full text-sm text-foreground`,children:[(0,K.jsx)(Ic,{restartRequired:t}),(0,K.jsx)(`div`,{className:`flex space-x-2`,children:e.map(({shortName:e,...t})=>{let n=(0,K.jsxs)(V,{"aria-label":t.name,className:`p-2 text-center text-muted-foreground hover:text-foreground`,activeProps:gj,...t,children:[t.icon,(0,K.jsx)(`span`,{className:`hidden xl:inline-block ml-1`,children:t.name}),e&&(0,K.jsx)(`span`,{className:`visible xl:hidden ml-1`,children:e})]},t.to);return e?n:(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:n}),(0,K.jsx)(Rs,{side:`bottom`,className:`xl:hidden`,children:t.name})]},t.to)})})]})}function yj({links:e,restartRequired:t}){return(0,K.jsx)(K.Fragment,{children:(0,K.jsxs)(`div`,{className:`flex md:[@media(hover:hover)]:hidden xl:hidden items-center justify-between h-full px-2 text-foreground`,children:[(0,K.jsx)(Ic,{restartRequired:t}),(0,K.jsxs)(bo,{children:[(0,K.jsx)(xo,{asChild:!0,children:(0,K.jsx)(P,{variant:`ghost`,className:`p-0`,children:(0,K.jsx)(Ki,{className:`h-8 w-8`})})}),(0,K.jsxs)(So,{children:[(0,K.jsx)(To,{children:`Instance Menu`}),(0,K.jsx)(Eo,{}),e.map(e=>(0,K.jsx)(Co,{asChild:!0,children:(0,K.jsxs)(V,{to:e.to,activeProps:gj,className:`flex items-center gap-2`,children:[e.icon,e.name]})},e.to))]})]})]})})}(0,G.lazy)(()=>F(()=>import(`./FloatingChat-D4560T0p.js`).then(e=>({default:e.FloatingChat})),__vite__mapDeps([35,1,4,5,9,11,12,13])));function bj(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{className:`fixed top-20 w-full z-39 h-12 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,K.jsx)(_j,{})}),(0,K.jsx)(`div`,{className:`mt-32 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,K.jsx)(He,{})}),!1]})}function xj(e){switch(e){case`local`:return I({getParentRoute:()=>hc,id:`_instanceLayout`,component:bj,loader:ww});case`cluster`:return I({getParentRoute:()=>fv,id:`_instanceLayout`,component:bj,beforeLoad:Sj,loader:ww});case`instance`:return I({getParentRoute:()=>fv,path:`instance/$instanceId`,component:bj,beforeLoad:Sj,loader:ww})}}async function Sj({context:e,params:t}){let n=t.instanceId||t.clusterId,r=!1;if(u.checkForFabricConnect(n)&&!u.hasResolvedFabricConnect(n)&&(r=!0,await Cj(n,e.cluster,t.instanceId)))return;let i=u.getConnectionById(n);if(i.isLoading||i.user)return;let a=e.authentication[m];if(!a||a.isLoading)return;let{update:o}=t.instanceId?wf(a.user,t.organizationId,t.clusterId):xf(a.user,t.organizationId,t.clusterId);if(!r&&o&&await Cj(n,e.cluster,t.instanceId))return;let s=`/${t.organizationId}/${t.clusterId}/`+(t.instanceId?`instance/${t.instanceId}`:``)+`/sign-in`;throw ce({to:s,search:oc()})}async function Cj(e,t,n){try{return await u.establishFabricConnectAuth({id:e,operationsUrl:wj(t,n)}),!0}catch(e){return console.debug(`Fabric Connect not established`,e),!1}}function wj(e,t){if(t){let n=e?.instances?.find(e=>e.id===t);return n?p(n):void 0}return c(e)??void 0}function Tj(e){switch(e){case`warn`:return`warning`;case`notify`:return`success`;case`info`:case`debug`:case`trace`:case void 0:case`stdout`:return`secondary`;case`stderr`:case`error`:return`destructive`;default:return e}}var Ej=[`secondary`,`default`,`warning`,`outline`,`success`,`destructive`],Dj=0,Oj=new Map,kj=e=>{if(Oj.has(e))return Oj.get(e);Dj++;let t=Ej[Dj%Ej.length];return Oj.set(e,t),t};function Aj(e){switch(e){case`error`:case`stderr`:return`border-l-destructive`;case`warn`:return`border-l-yellow-500`;case`notify`:return`border-l-green-500`;default:return`border-l-transparent`}}function jj({columns:e,data:t,onRowClick:n,containerRef:r}){let i=Le({features:gg,data:t,columns:e});return(0,K.jsxs)(lg,{className:`text-xs`,containerRef:r,containerClassName:`rounded-md bg-card dark:bg-black-dark logsTable max-h-[calc(100vh-(--spacing(48)))] overflow-y-auto md:max-h-[calc(100vh-(--spacing(40)))]`,children:[(0,K.jsx)(ug,{children:i.getHeaderGroups().map(e=>(0,K.jsx)(fg,{className:`border-b border-border`,children:e.headers.map(e=>(0,K.jsx)(pg,{className:`p-4 max-w-96 sticky top-0 z-10 border-b border-border bg-card dark:bg-black-dark`,children:e.isPlaceholder?null:Me(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,K.jsx)(dg,{className:`bg-background dark:bg-black`,children:i.getRowModel().rows?.length?i.getRowModel().rows.map(e=>(0,K.jsx)(fg,{"data-state":e.getIsSelected()&&`selected`,className:N(`hover:bg-muted/20 data-[state=selected]:bg-muted max-w-full border-l-2`,Aj(e.original.level),n&&`cursor-pointer`),onClick:()=>n?.(e),children:e.getVisibleCells().map(e=>(0,K.jsx)(hg,{className:`p-2`,children:Me(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,K.jsx)(fg,{children:(0,K.jsx)(hg,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})}var Mj=524288,Nj=class{totalChars=0;spent=!1;get isSpent(){return this.spent}admit(e){return this.spent?{admitted:!1,justExhausted:!1,oversize:!1}:e>524288?{admitted:!1,justExhausted:!1,oversize:!0}:this.totalChars+e>8388608?(this.spent=!0,{admitted:!1,justExhausted:!0,oversize:!1}):(this.totalChars+=e,{admitted:!0,justExhausted:!1,oversize:!1})}};function Pj(e){try{JSON.parse(e)}catch{return!1}return!0}function Fj(e){return!e||e.length>524288?`plaintext`:Pj(e)?`json`:`plaintext`}function Ij({label:e,children:t}){return(0,K.jsxs)(`div`,{className:`flex items-start gap-3 py-1.5 border-b border-border/50 last:border-0`,children:[(0,K.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground w-20 shrink-0 pt-0.5`,children:e}),(0,K.jsx)(`span`,{className:`text-xs`,children:t})]})}function Lj({setIsModalOpen:e,isModalOpen:t,data:n}){let r=n?kj(n.node):`default`,i=Fg();return(0,K.jsx)(fn,{onOpenChange:e,open:t,children:(0,K.jsxs)(cn,{"aria-describedby":void 0,resizable:!0,children:[(0,K.jsx)(rn,{children:(0,K.jsx)(ln,{children:`Log Entry`})}),n?(0,K.jsxs)(`div`,{className:`flex flex-1 min-h-0 flex-col gap-2 text-popover-foreground`,children:[(0,K.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-muted/20 px-3 py-1`,children:[(0,K.jsx)(Ij,{label:`Level`,children:(0,K.jsx)(Wo,{variant:Tj(n.level),children:Pc(n.level)})}),(0,K.jsx)(Ij,{label:`Timestamp`,children:(0,K.jsx)(`span`,{className:`tabular-nums`,children:new Date(n.timestamp).toLocaleString()})}),(0,K.jsx)(Ij,{label:`Thread`,children:(0,K.jsx)(`span`,{className:`tabular-nums font-mono`,children:n.thread})}),n.node&&(0,K.jsx)(Ij,{label:`Node`,children:(0,K.jsx)(Wo,{variant:r,children:n.node})}),n.tags&&n.tags.length>0&&(0,K.jsx)(Ij,{label:`Tags`,children:(0,K.jsx)(`span`,{className:`font-mono`,children:n.tags})})]}),(0,K.jsxs)(`div`,{className:`flex flex-1 min-h-0 flex-col`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`Message`}),(0,K.jsx)(`div`,{className:`rounded-md overflow-hidden border border-border/50 flex-1 min-h-0`,children:(0,K.jsx)(Lg,{className:`w-full h-full`,language:Fj(n.message),theme:i,value:n.message,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,padding:{top:12,bottom:12},automaticLayout:!0}})})]})]}):(0,K.jsx)(Bo,{})]})})}var Rj=S({limit:A().or(w()).or(E()).optional(),level:O([`notify`,`error`,`warn`,`info`,`debug`,`trace`,`undefined`]).or(w()).or(E()).optional(),from:A().or(w()).or(E()).optional(),until:A().or(w()).or(E()).optional(),log_name:O([`hdb.log`,`system.log`]).or(w()).or(E()).optional(),filter:A().or(w()).or(E()).optional()}),zj=`dark:bg-grey-600 dark:border-grey-500`;function Bj({form:e,resetFilters:t,submitFilters:n,showLogName:r,showFilter:i,isOpen:a,onOpenChange:o}){return(0,K.jsxs)(On,{className:N(a?`block`:`hidden`,`mt-3 md:mt-0 md:block`),children:[(0,K.jsx)(kn,{className:`hidden md:block`,children:(0,K.jsx)(`button`,{type:`button`,onClick:()=>o(!a),"aria-expanded":a,"aria-controls":`logs-filters-content`,className:`flex w-full items-center justify-between md:pointer-events-none`,children:(0,K.jsxs)(An,{className:`flex items-center gap-2 text-base`,children:[(0,K.jsx)(Na,{className:`size-4 text-muted-foreground`}),`Filters`]})})}),(0,K.jsx)(Mn,{id:`logs-filters-content`,children:(0,K.jsx)(Lc,{...e,children:(0,K.jsxs)(`form`,{id:`instance-edit-log-filters-form`,name:`instance-edit-log-filters-form`,onSubmit:e.handleSubmit(n),className:`flex-col space-y-4`,children:[i&&(0,K.jsx)(Y,{control:e.control,name:`filter`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(J,{children:(0,K.jsxs)(`div`,{className:`relative`,children:[(0,K.jsx)(Sa,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,K.jsx)($,{type:`search`,placeholder:`Search logs…`,className:N(`pl-9`,zj),value:e.value??``,onChange:e.onChange})]})}),(0,K.jsx)(Q,{})]})}),r&&(0,K.jsx)(Y,{control:e.control,name:`log_name`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Log file`}),(0,K.jsxs)(th,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(ih,{className:N(`w-full bg-white`,zj),children:(0,K.jsx)(rh,{placeholder:`Select log file`})}),(0,K.jsx)(ah,{children:(0,K.jsxs)(nh,{children:[(0,K.jsx)(sh,{value:`hdb.log`,children:`Application (hdb.log)`}),(0,K.jsx)(sh,{value:`system.log`,children:`System (system.log)`})]})})]}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,K.jsx)(Y,{control:e.control,name:`limit`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Limit`}),(0,K.jsxs)(th,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(ih,{className:N(`w-full bg-white`,zj),children:(0,K.jsx)(rh,{placeholder:`Limit`})}),(0,K.jsx)(ah,{children:(0,K.jsxs)(nh,{children:[(0,K.jsx)(sh,{value:`1000`,children:`1000`}),(0,K.jsx)(sh,{value:`500`,children:`500`}),(0,K.jsx)(sh,{value:`250`,children:`250`}),(0,K.jsx)(sh,{value:`100`,children:`100`}),(0,K.jsx)(sh,{value:`10`,children:`10`})]})})]}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:e.control,name:`level`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Level`}),(0,K.jsxs)(th,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(ih,{className:N(`w-full bg-white`,zj),children:(0,K.jsx)(rh,{placeholder:`Level`})}),(0,K.jsx)(ah,{children:(0,K.jsxs)(nh,{children:[(0,K.jsx)(sh,{value:`undefined`,children:`All`}),(0,K.jsx)(sh,{value:`notify`,children:`Notify`}),(0,K.jsx)(sh,{value:`error`,children:`Error`}),(0,K.jsx)(sh,{value:`warn`,children:`Warn`}),(0,K.jsx)(sh,{value:`info`,children:`Info`}),(0,K.jsx)(sh,{value:`debug`,children:`Debug`}),(0,K.jsx)(sh,{value:`trace`,children:`Trace`})]})})]}),(0,K.jsx)(Q,{})]})})]}),(0,K.jsx)(Y,{control:e.control,name:`from`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Start date`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`datetime-local`,className:zj,value:e.value??void 0,onChange:e.onChange})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:e.control,name:`until`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`End date`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`datetime-local`,className:zj,value:e.value??void 0,onChange:e.onChange})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,K.jsx)(P,{type:`submit`,variant:`positiveOutline`,className:`grow`,children:`Apply Filters`}),(0,K.jsx)(P,{type:`reset`,variant:`destructiveOutline`,onClick:t,children:`Clear`})]})]})})})]})}var Vj=1e4;function Hj(e){if(!e)return;let t=parseInt(e,10);if(!(!Number.isFinite(t)||t<=0))return Math.min(t,Vj)}function Uj(e,t){return{operation:`read_log`,start:0,replicated:t,limit:Hj(e.limit),level:e.level===`undefined`?void 0:e.level,from:e.from?new Date(e.from).toISOString():void 0,until:e.until?new Date(e.until).toISOString():void 0,log_name:e.log_name??void 0,filter:e.filter?e.filter:void 0,order:`desc`}}async function Wj({instanceClient:e,logFilters:t,replicated:n}){let{data:r}=await e.post(`/`,Uj(t,n));return r}function Gj(e){let t=e.logFilters;return z({queryKey:[`read_log`,e.entityId,t.limit,t.level,t.from,t.until,t.log_name,t.filter,e.replicated],queryFn:()=>Wj(e),retry:!1,refetchInterval:e.isAutoRefreshEnabled?5e3:!1})}async function Kj({connection:e,logFilters:t,replicated:n,signal:r,onEntry:i}){let{url:a,headers:o,credentials:s}=Jb(e),c;try{c=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(Uj(t,n)),signal:r})}catch(e){throw r?.aborted?e:new Gb(`Failed to open the read_log SSE stream.`,{cause:e})}let l=c.headers.get(`content-type`)??``;if(!c.ok||!l.includes(`text/event-stream`)||!c.body)throw await c.body?.cancel().catch(()=>{}),new Gb(`read_log did not return an event stream (status ${c.status}, content-type "${l}").`);for await(let e of Hb(c.body,r)){if(e.event===`error`){let t=Wb(e);if(!t||typeof t!=`object`)throw new qb(typeof t==`string`&&t?t:`The log stream failed.`);let n=t;throw new qb(n.message??`The log stream failed.`,{code:n.code})}if(e.event===`done`||e.event===`end`)return;for(let t of qj(Wb(e)))i(t)}}function qj(e){return Array.isArray(e)?e.filter(Jj):Jj(e)?[e]:[]}function Jj(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.timestamp==`string`&&(typeof t.level==`string`||typeof t.message==`string`)}function Yj(e){return[e.timestamp,e.node??``,e.thread??``,e.level,e.message].join(`|`)}function Xj(e,t,n){let r=new Set,i=[];for(let n of[...t,...e]){let e=Yj(n);r.has(e)||(r.add(e),i.push(n))}return i.sort((e,t)=>e.timestamp<t.timestamp?1:e.timestamp>t.timestamp?-1:0),n>0&&i.length>n?i.slice(0,n):i}var Zj={entries:[],fellBack:!1};function Qj(e,t){switch(t.kind){case`reset`:return Zj;case`retry`:return e.fellBack?{...e,fellBack:!1}:e;case`append`:{if(t.entries.length===0)return e;let n=e.entries.concat(t.entries);return n.length<=t.cap?{...e,entries:n}:(n.sort((e,t)=>e.timestamp<t.timestamp?1:e.timestamp>t.timestamp?-1:0),{...e,entries:n.slice(0,t.cap)})}case`fellBack`:return{...e,fellBack:!0}}}function $j(){let e=q();return u.isDirectConnection(e.entityId)}var eM=1e3,tM=2e3,nM=250;function rM(e){return Hj(e)??eM}function iM(e,t){return JSON.stringify([e.limit,e.level,e.from,e.until,e.log_name,e.filter,t])}function aM({params:e,logFilters:t,replicated:n,live:r}){let i=$j(),[a,o]=(0,G.useReducer)(Qj,Zj),s=r&&i&&!a.fellBack,c=iM(t,n),l=rM(t.limit),u=Math.max(tM,l),d=H(Gj({...e,logFilters:t,replicated:n,isAutoRefreshEnabled:r&&!s}));(0,G.useEffect)(()=>{o({kind:`reset`})},[e.entityId,c]),(0,G.useEffect)(()=>{r&&o({kind:`retry`})},[r]);let f=(0,G.useRef)({logFilters:t,replicated:n});f.current={logFilters:t,replicated:n},(0,G.useEffect)(()=>{if(!s)return;let t=new AbortController,n=[],r=()=>{if(n.length>0&&!t.signal.aborted){let e=n;n=[],o({kind:`append`,entries:e,cap:u})}},i=setInterval(r,nM);return Kj({connection:{id:e.entityId},logFilters:f.current.logFilters,replicated:f.current.replicated,signal:t.signal,onEntry:e=>n.push(e)}).catch(()=>{}).finally(()=>{clearInterval(i),!t.signal.aborted&&(r(),o({kind:`fellBack`}))}),()=>{clearInterval(i),t.abort()}},[s,e.entityId,c]);let p=(0,G.useMemo)(()=>{let e=d.data??[];return a.entries.length===0?e:Xj(e,a.entries,l)},[d.data,a.entries,l]),m=s?`streaming`:r?`polling`:`idle`;return{logs:p,isLoading:d.isLoading,isFetching:d.isFetching,refetch:()=>d.refetch(),transport:m}}var oM={log_name:`hdb.log`,limit:`100`,level:`undefined`,from:``,until:``,filter:``},sM={error:(0,K.jsx)(mr,{className:`size-3`}),stderr:(0,K.jsx)(mr,{className:`size-3`}),warn:(0,K.jsx)($a,{className:`size-3`}),notify:(0,K.jsx)(Jn,{className:`size-3`}),info:(0,K.jsx)(gi,{className:`size-3`}),debug:(0,K.jsx)(nr,{className:`size-3`}),trace:(0,K.jsx)(In,{className:`size-3`}),stdout:(0,K.jsx)(qa,{className:`size-3`})},cM=[{accessorKey:`level`,header:`Level`,cell:({row:e})=>{let{level:t}=e.original;return(0,K.jsxs)(Wo,{variant:Tj(t),children:[sM[t],Pc(t)]})}},{accessorKey:`timestamp`,header:`Timestamp`,cell:({row:e})=>{let{timestamp:t}=e.original,n=new Date(t),r=n.getFullYear()===new Date().getFullYear()?n.toLocaleDateString(void 0,{month:`numeric`,day:`2-digit`}):n.toLocaleDateString();return(0,K.jsxs)(`span`,{className:`tabular-nums whitespace-nowrap text-muted-foreground`,children:[r,` `,n.toLocaleTimeString()]})}},{accessorKey:`message`,header:`Message`,cell:({row:e})=>{let{message:t}=e.original;return(0,K.jsx)(`span`,{className:`block max-w-xl truncate font-mono text-xs`,children:t})}},{accessorKey:`thread`,header:`Thread`,cell:({row:e})=>(0,K.jsx)(`span`,{className:`text-muted-foreground tabular-nums`,children:e.original.thread})},{accessorKey:`node`,header:`Node`,cell:({row:e})=>{let{node:t}=e.original,n=kj(t);return(0,K.jsx)(K.Fragment,{children:t?(0,K.jsxs)(Is,{children:[(0,K.jsx)(Ls,{asChild:!0,children:(0,K.jsxs)(Wo,{variant:n,children:[t.split(`.`)[0],`...`]})}),(0,K.jsx)(Rs,{className:`bg-popover text-popover-foreground border border-border`,arrowClassName:`bg-popover fill-popover`,children:t})]}):null})}},{accessorKey:`tags`,header:`Tags`,cell:({row:e})=>{let{tags:t}=e.original;return t&&t.length>0?(0,K.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:t}):null}}],lM=(e,t)=>!e&&!t||!e||!t||new Date(e)<=new Date(t);function uM(){return(0,K.jsxs)(`div`,{className:`rounded-md bg-card dark:bg-black-dark overflow-hidden`,children:[(0,K.jsx)(`div`,{className:`flex gap-4 p-4 border-b border-border`,children:[`w-14`,`w-32`,`w-14`,`w-24`,`w-16`,`flex-1`].map((e,t)=>(0,K.jsx)(E_,{className:`h-4 ${e}`},t))}),Array.from({length:12}).map((e,t)=>(0,K.jsxs)(`div`,{className:`flex gap-4 p-3 border-b border-border/40 border-l-2 border-l-transparent`,children:[(0,K.jsx)(E_,{className:`h-5 w-14`}),(0,K.jsx)(E_,{className:`h-5 w-32`}),(0,K.jsx)(E_,{className:`h-5 w-10`}),(0,K.jsx)(E_,{className:`h-5 w-20`}),(0,K.jsx)(E_,{className:`h-5 w-12`}),(0,K.jsx)(E_,{className:`h-5 flex-1 max-w-xs`})]},t))]})}function dM(){let[e,t]=(0,G.useState)(oM),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(),[o,s]=(0,G.useState)(!1),[c,l]=xn(vn.LogsOrderReversed,!1),[u,d]=(0,G.useState)(!1),f=q(),{data:p}=H(sx(f)),m=p?.version,h=!!m&&td(`4.7.16`,m),{logs:g,isLoading:_,isFetching:v,refetch:y,transport:b}=aM({params:f,logFilters:e,replicated:f.entityType===`cluster`,live:o}),x=(0,G.useMemo)(()=>c?[...g??[]].reverse():g??[],[g,c]),S=(0,G.useRef)(null);(0,G.useEffect)(()=>{let e=S.current;!_&&e&&e.scrollTo({top:c?e.scrollHeight:0})},[c,_]),(0,G.useEffect)(()=>{let e=S.current;o&&!_&&e&&e.scrollTo({top:c?e.scrollHeight:0})},[x,o,c,_]);let C=Pt({resolver:Ke(Rj),defaultValues:oM,mode:`onChange`}),w=e=>{a(e.original),r(!0)},T=async e=>{if(!lM(e.from,e.until)){C.setError(`from`,{type:`onChange`,message:`Start date must be before end date`}),C.setError(`until`,{type:`onChange`,message:`End date must be after start date`});return}t(e)},E=async()=>{C.reset(),t(oM)},D=Cg(y);return(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 pt-2 text-foreground md:grid-cols-12 md:gap-4`,children:[(0,K.jsxs)(`section`,{className:`col-span-1 md:col-span-4 lg:col-span-3 px-2 pb-0 md:self-start md:sticky md:top-34 md:max-h-[calc(100vh-(--spacing(34)))] md:overflow-y-auto md:pb-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 md:hidden`,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:()=>d(e=>!e),"aria-label":`Toggle filters`,"aria-expanded":u,className:`flex-1`,children:[(0,K.jsx)(Na,{}),`Filters`]}),(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,"aria-label":`Refresh logs`,className:`flex-1`,children:[(0,K.jsx)(ua,{className:v?`animate-spin`:``}),`Refresh`]}),(0,K.jsxs)(P,{variant:c?`default`:`defaultOutline`,onClick:()=>l(e=>!e),"aria-label":`Reverse log order`,"aria-pressed":c,className:`flex-1`,children:[(0,K.jsx)(Wn,{}),`Reverse`]})]}),(0,K.jsx)(Bj,{form:C,resetFilters:E,submitFilters:T,showLogName:!1,showFilter:h,isOpen:u,onOpenChange:d}),(0,K.jsxs)(`div`,{className:`mt-3 space-y-3 hidden md:block`,children:[(0,K.jsxs)(P,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,className:`w-full`,children:[(0,K.jsx)(ua,{}),`Refresh`]}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-foreground`,children:[(0,K.jsx)(Zg,{id:`logs-live-switch`,"aria-label":`Toggle live logs`,checked:o,onCheckedChange:s}),(0,K.jsxs)(`label`,{htmlFor:`logs-live-switch`,className:`flex items-center gap-2 cursor-pointer`,children:[(0,K.jsx)(ua,{className:`size-4 ${o?`animate-spin [animation-duration:3s]`:``}`}),o?b===`streaming`?`Live (streaming)`:`Live (polling every 5s)`:`Live`]})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-foreground`,children:[(0,K.jsx)(Zg,{id:`logs-reverse-order-switch`,"aria-label":`Reverse log order`,checked:c,onCheckedChange:l}),(0,K.jsxs)(`label`,{htmlFor:`logs-reverse-order-switch`,className:`flex items-center gap-2 cursor-pointer`,children:[(0,K.jsx)(Wn,{className:`size-4`}),c?`Oldest first`:`Newest first`]})]})]})]})]}),(0,K.jsx)(`section`,{className:`col-span-1 md:col-span-8 lg:col-span-9`,children:_?(0,K.jsx)(uM,{}):(0,K.jsx)(jj,{columns:cM,data:x,onRowClick:w,containerRef:S})}),(0,K.jsx)(Lj,{isModalOpen:n,setIsModalOpen:r,data:i})]})}function fM(e){return I({getParentRoute:()=>e,path:`logs`,head:()=>({meta:[{title:`Logs — Harper Fabric`}]}),component:dM})}var pM=6e4,mM=60*pM,hM=24*mM,gM=[{id:`1h`,label:`Last 1 hour`,durationMs:mM,bucketMs:1*pM,expandedBucketMs:1*pM},{id:`6h`,label:`Last 6 hours`,durationMs:6*mM,bucketMs:2*pM,expandedBucketMs:1*pM},{id:`24h`,label:`Last 24 hours`,durationMs:hM,bucketMs:10*pM,expandedBucketMs:5*pM},{id:`7d`,label:`Last 7 days`,durationMs:7*hM,bucketMs:mM,expandedBucketMs:15*pM},{id:`30d`,label:`Last 30 days`,durationMs:30*hM,bucketMs:4*mM,expandedBucketMs:mM}];function _M(e){let t=gM.find(t=>t.id===e);if(!t)throw Error(`Unknown preset: ${e}`);return t}function vM(e){let t=(e,t)=>`${e} ${t}${e===1?``:`s`}`;return e>=mM&&e%mM===0?t(e/mM,`hour`):e>=pM&&e%pM===0?t(e/pM,`minute`):e>=1e3&&e%1e3==0?t(e/1e3,`second`):`${e} ms`}function yM(e,t){let n=e=>t?.expanded?e.expandedBucketMs:e.bucketMs,r=n(gM[0]);if(!Number.isFinite(e)||e<=0)return r;for(let t of gM)if(e<=t.durationMs*1.01)return n(t);let i=gM[gM.length-1];return Math.max(r,Math.ceil(e/(i.durationMs/n(i))))}var bM=[{label:`Off`,value:0},{label:`30s`,value:3e4},{label:`60s`,value:6e4},{label:`5m`,value:3e5}],xM=6e4,SM=[`health`,`traffic`,`requests`,`database`,`replication`,`storage`,`overview`],CM={tab:`health`,range:`1h`,refresh:xM};function wM(e){let t=e.refresh===``?NaN:Number(e.refresh);return{tab:SM.find(t=>t===e.tab)??CM.tab,range:gM.find(t=>t.id===e.range)?.id??CM.range,refresh:bM.find(e=>e.value===t)?.value??CM.refresh}}function TM(e){return I({getParentRoute:()=>e,path:`status`,validateSearch:wM,search:{middlewares:[pe(CM)]},head:()=>({meta:[{title:`Status — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./status-CI0wOdOE.js`),__vite__mapDeps([36,1,3,2,4,5,6,7,9,8,10,11,12,13,16,31,37,38,39,40,41,42,43,44,29,45])),`StatusIndex`)})}function EM(e){let t=xj(e),n=[fM(t),...gb(t,e),hb(t),TM(t),Tw(t),hj(t)];return t.addChildren(n)}I({getParentRoute:()=>hc,path:`notifications`,head:()=>({meta:[{title:`Notifications — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./notifications-BeWcX04m.js`),__vite__mapDeps([46,1,2,3,4,5,6])),`NotificationsCenter`)}),I({getParentRoute:()=>hc,path:`profile`,head:()=>({meta:[{title:`Profile — Harper Fabric`}]}),component:we(async()=>F(()=>import(`./profile-BvUEDBzW.js`),__vite__mapDeps([47,1,26,3,2,4,5,6,7,27,12])),`ProfileIndex`)});var DM=mc.addChildren([...Hu,hc.addChildren([EM(`local`)])]);function OM({routeTree:e=DM,authentication:t}){let[n]=(0,G.useState)(()=>Ve({routeTree:e,history:he(),defaultNotFoundComponent:ho,defaultErrorComponent:mo,defaultPreload:!go()&&`intent`,trailingSlash:`never`,defaultPreloadStaleTime:0,scrollRestoration:!0,context:{queryClient:yo,authentication:t||{}}}));return n}function kM(){let e=Sn(),t=OM({authentication:e}),n=(0,G.useRef)(e);return(0,G.useEffect)(()=>{n.current!==e&&(n.current=e,t.invalidate())},[t,e]),(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Se,{router:t,context:{authentication:e}}),(0,K.jsx)(Ne,{router:t,position:`bottom-right`})]})}var AM=({...e})=>(0,K.jsx)(rt,{className:`toaster group`,toastOptions:{classNames:{toast:`group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg`,description:`group-[.toast]:text-muted-foreground`,actionButton:`group-[.toast]:bg-primary group-[.toast]:text-primary-foreground font-medium`,cancelButton:`group-[.toast]:bg-muted group-[.toast]:text-muted-foreground font-medium`}},...e}),jM=!1;function MM(){(0,G.useEffect)(()=>{jM||=!0},[])}function NM(){return wc(),fc(),MM(),(0,K.jsxs)(Es,{children:[(0,K.jsxs)(Ie,{client:yo,children:[(0,K.jsx)(kM,{}),(0,K.jsx)(ze,{buttonPosition:`bottom-right`})]}),(0,K.jsx)(AM,{richColors:!0})]})}function PM(){u.signOutAllLocally(),yo.getMutationCache().clear(),yo.getQueryCache().clear(),Us(),Ws()}function FM(e,t=()=>!1,n=()=>!0){return r=>(r?.response?.status===401&&!t(r.config?.url??``)&&n(r.config)&&e(),Promise.reject(r))}var IM=[`/Login/`,`/ForgotPassword/`,`/ResetPassword/`,`/VerifyEmail/`,`/ResendVerificationEmail/`],LM=`authUserAtSend`;function RM(){let e=u.getConnectionById(m).user;return e&&`id`in e?e.id:null}var zM=!1;function BM(){zM||(zM=!0,M.interceptors.request.use(e=>(e[LM]=RM(),e)),M.interceptors.response.use(e=>e,FM(PM,e=>IM.some(t=>e.startsWith(t)),e=>e?.[LM]===RM())))}function VM(){if(typeof Node!=`function`||!Node.prototype)return;let e=`__harperTranslationGuarded__`,t=Node.prototype;if(t[e])return;Object.defineProperty(t,e,{value:!0,configurable:!0,writable:!0,enumerable:!1});let n=Node.prototype.removeChild;Node.prototype.removeChild=function(e){return e instanceof Node&&e.parentNode!==this?e:n.call(this,e)};let r=Node.prototype.insertBefore;Node.prototype.insertBefore=function(e,t){return t instanceof Node&&t.parentNode!==this?r.call(this,e,null):r.call(this,e,t)}}var HM=`Studio:StaleDeployReloadedAt`,UM=6e4,WM=`__harperStaleDeployReloadState__`;function GM(){if(typeof window<`u`)return window[WM]}function KM(){let e=GM();if(e){try{let e=Number(sessionStorage.getItem(HM)??0);if(Date.now()-e<UM)return;sessionStorage.setItem(HM,String(Date.now()))}catch{return}e.reload()}}function qM(e=()=>window.location.reload()){if(typeof window>`u`)return;let t=window,n=t[WM];if(n){n.reload=e;return}t[WM]={reload:e},window.addEventListener(`vite:preloadError`,()=>KM())}var JM=ie();VM(),qM(),BM(),a(),u.installExplorerCrossTabCleanup(),(0,JM.createRoot)(document.getElementById(`root`),{onUncaughtError:(e,t)=>{ne(e,t),console.error(`Uncaught error:`,e,t)},onCaughtError:(e,t)=>{ne(e,t),console.error(`Caught error:`,e,t)},onRecoverableError:(e,t)=>{ne(e,t),console.warn(`Recoverable error:`,e,t)}}).render((0,K.jsx)(G.StrictMode,{children:(0,K.jsx)(NM,{})}));export{VC as $,So as $n,ah as $t,wk as A,Gs as An,Br as Ar,zy as At,ZE as B,ps as Bn,kn as Br,Zg as Bt,Dk as C,X as Cn,oa as Cr,nx as Ct,yk as D,_c as Dn,Oi as Dr,Vb as Dt,xk as E,Lc as En,Mi as Er,Gb as Et,lk as F,Rs as Fn,Hn as Fr,iv as Ft,HT as G,cs as Gn,dg as Gt,zE as H,as as Hn,wn as Hr,Fg as Ht,LO as I,Ls as In,Bn as Ir,rv as It,fT as J,$o as Jn,ug as Jt,WT as K,Zo as Kn,hg as Kt,eO as L,Cs as Ln,On as Lr,av as Lt,dk as M,q as Mn,vr as Mr,ly as Mt,ok as N,Vs as Nn,mr as Nr,ty as Nt,Tk as O,ic as On,vi as Or,bb as Ot,uk as P,Is as Pn,fr as Pr,ov as Pt,iw as Q,wo as Qn,th as Qt,rD as R,Ss as Rn,Mn as Rr,nv as Rt,vk as S,Vc as Sn,ca as Sr,ox as St,kk as T,J as Tn,na as Tr,Kb as Tt,CE as U,us as Un,Dn as Ur,xg as Ut,YE as V,os as Vn,An as Vr,Lg as Vt,UT as W,fs as Wn,En as Wr,lg as Wt,Zw as X,Bo as Xn,ng as Xt,hT as Y,Wo as Yn,fg as Yt,Rw as Z,bo as Zn,Th as Zt,Xk as _,au as _n,Sa as _r,Px as _t,vM as a,hp as an,ko as ar,hC as at,Ek as b,Q as bn,fa as br,lx as bt,Wj as c,Df as cn,yo as cr,xC as ct,kA as d,Gu as dn,$a as dr,Wx as dt,sh as en,Co as er,IC as et,_A as f,qu as fn,Za as fr,Hx as ft,$k as g,Ku as gn,Oa as gr,Fx as gt,eA as h,Zu as hn,Va as hr,Nx as ht,gM as i,Dp as in,Ao as ir,mC as it,Ck as j,Bs as jn,Ir as jr,My as jt,bk as k,Js as kn,gi as kr,Uy as kt,Nj as l,Ef as ln,mo as lr,PS as lt,Qk as m,Xu as mn,Ua as mr,Vx as mt,wM as n,rh as nn,Do as nr,TC as nt,_M as o,Yf as on,xo as or,SC as ot,dA as p,Ju as pn,qa as pr,Ux as pt,VT as q,Qo as qn,pg as qt,bM as r,kp as rn,Oo as rr,dC as rt,yM as s,Jf as sn,vo as sr,gC as st,KM as t,ih as tn,Eo as tr,wC as tt,Mj as u,td as un,ao as ur,kS as ut,Jk as v,ll as vn,va as vr,Ax as vt,Ok as w,Y as wn,ia as wr,Qb as wt,_k as x,Z as xn,ua as xr,sx as xt,qk as y,$ as yn,ma as yr,Dx as yt,nD as z,ms as zn,jn as zr,E_ as zt};
|