@harperfast/harper 5.3.0 → 5.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/bin/copyDb.ts +5 -1
  2. package/bin/deployRenderer.ts +3 -0
  3. package/components/Application.ts +66 -22
  4. package/components/DESIGN.md +89 -36
  5. package/components/componentLoader.ts +2 -0
  6. package/components/deploymentRecorder.ts +18 -1
  7. package/components/installFingerprint.ts +123 -0
  8. package/components/mcp/DESIGN.md +4 -4
  9. package/components/operations.js +29 -0
  10. package/config/DESIGN.md +5 -5
  11. package/dataLayer/DESIGN.md +37 -22
  12. package/dataLayer/backupRepository.ts +248 -0
  13. package/dataLayer/restoreMarker.ts +30 -75
  14. package/dataLayer/rocksdbBackup.ts +253 -110
  15. package/dist/bin/copyDb.js +3 -0
  16. package/dist/bin/copyDb.js.map +1 -1
  17. package/dist/bin/deployRenderer.js +3 -0
  18. package/dist/bin/deployRenderer.js.map +1 -1
  19. package/dist/components/Application.d.ts +5 -0
  20. package/dist/components/Application.js +51 -19
  21. package/dist/components/Application.js.map +1 -1
  22. package/dist/components/componentLoader.js +2 -0
  23. package/dist/components/componentLoader.js.map +1 -1
  24. package/dist/components/deploymentRecorder.js +18 -1
  25. package/dist/components/deploymentRecorder.js.map +1 -1
  26. package/dist/components/installFingerprint.d.ts +39 -0
  27. package/dist/components/installFingerprint.js +113 -0
  28. package/dist/components/installFingerprint.js.map +1 -0
  29. package/dist/components/operations.d.ts +2 -0
  30. package/dist/components/operations.js +31 -0
  31. package/dist/components/operations.js.map +1 -1
  32. package/dist/dataLayer/backupRepository.d.ts +33 -0
  33. package/dist/dataLayer/backupRepository.js +232 -0
  34. package/dist/dataLayer/backupRepository.js.map +1 -0
  35. package/dist/dataLayer/restoreMarker.d.ts +4 -1
  36. package/dist/dataLayer/restoreMarker.js +29 -68
  37. package/dist/dataLayer/restoreMarker.js.map +1 -1
  38. package/dist/dataLayer/rocksdbBackup.js +221 -112
  39. package/dist/dataLayer/rocksdbBackup.js.map +1 -1
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/json/systemSchema.json +14 -0
  43. package/dist/resources/DatabaseTransaction.d.ts +140 -11
  44. package/dist/resources/DatabaseTransaction.js +1055 -464
  45. package/dist/resources/DatabaseTransaction.js.map +1 -1
  46. package/dist/resources/IterableEventQueue.d.ts +2 -1
  47. package/dist/resources/IterableEventQueue.js +16 -8
  48. package/dist/resources/IterableEventQueue.js.map +1 -1
  49. package/dist/resources/LMDBTransaction.d.ts +13 -2
  50. package/dist/resources/LMDBTransaction.js +219 -93
  51. package/dist/resources/LMDBTransaction.js.map +1 -1
  52. package/dist/resources/RecordEncoder.js +2 -3
  53. package/dist/resources/RecordEncoder.js.map +1 -1
  54. package/dist/resources/Resource.js +5 -6
  55. package/dist/resources/Resource.js.map +1 -1
  56. package/dist/resources/ResourceInterface.d.ts +3 -1
  57. package/dist/resources/ResourceInterface.js.map +1 -1
  58. package/dist/resources/RocksIndexStore.d.ts +2 -1
  59. package/dist/resources/RocksIndexStore.js +3 -0
  60. package/dist/resources/RocksIndexStore.js.map +1 -1
  61. package/dist/resources/Table.js +116 -12
  62. package/dist/resources/Table.js.map +1 -1
  63. package/dist/resources/analytics/write.js +6 -2
  64. package/dist/resources/analytics/write.js.map +1 -1
  65. package/dist/resources/auditStore.d.ts +71 -17
  66. package/dist/resources/auditStore.js +248 -64
  67. package/dist/resources/auditStore.js.map +1 -1
  68. package/dist/resources/branchDatabase.js +2 -0
  69. package/dist/resources/branchDatabase.js.map +1 -1
  70. package/dist/resources/databases.js +8 -2
  71. package/dist/resources/databases.js.map +1 -1
  72. package/dist/resources/indexes/fullTextNativeBinding.d.ts +6 -2
  73. package/dist/resources/indexes/fullTextNativeBinding.js +12 -2
  74. package/dist/resources/indexes/fullTextNativeBinding.js.map +1 -1
  75. package/dist/resources/indexes/fullTextQueryIndex.d.ts +4 -0
  76. package/dist/resources/indexes/fullTextQueryIndex.js +207 -10
  77. package/dist/resources/indexes/fullTextQueryIndex.js.map +1 -1
  78. package/dist/resources/models/Models.d.ts +11 -0
  79. package/dist/resources/models/Models.js +95 -4
  80. package/dist/resources/models/Models.js.map +1 -1
  81. package/dist/resources/models/backendRegistry.d.ts +8 -0
  82. package/dist/resources/models/backendRegistry.js +15 -1
  83. package/dist/resources/models/backendRegistry.js.map +1 -1
  84. package/dist/resources/models/bootstrap.d.ts +2 -0
  85. package/dist/resources/models/bootstrap.js +6 -0
  86. package/dist/resources/models/bootstrap.js.map +1 -1
  87. package/dist/resources/models/calibration.d.ts +88 -0
  88. package/dist/resources/models/calibration.js +244 -0
  89. package/dist/resources/models/calibration.js.map +1 -0
  90. package/dist/resources/models/calibrationStore.d.ts +163 -0
  91. package/dist/resources/models/calibrationStore.js +986 -0
  92. package/dist/resources/models/calibrationStore.js.map +1 -0
  93. package/dist/resources/models/decisionStore.d.ts +24 -0
  94. package/dist/resources/models/decisionStore.js +45 -0
  95. package/dist/resources/models/decisionStore.js.map +1 -1
  96. package/dist/resources/models/generativeDecision.js +44 -15
  97. package/dist/resources/models/generativeDecision.js.map +1 -1
  98. package/dist/resources/models/types.d.ts +7 -0
  99. package/dist/resources/recordLock.d.ts +8 -5
  100. package/dist/resources/recordLock.js +6 -4
  101. package/dist/resources/recordLock.js.map +1 -1
  102. package/dist/resources/replayLogs.js +8 -1
  103. package/dist/resources/replayLogs.js.map +1 -1
  104. package/dist/resources/scheduler/engine.d.ts +4 -0
  105. package/dist/resources/scheduler/engine.js +30 -2
  106. package/dist/resources/scheduler/engine.js.map +1 -1
  107. package/dist/resources/search.d.ts +16 -4
  108. package/dist/resources/search.js +117 -13
  109. package/dist/resources/search.js.map +1 -1
  110. package/dist/resources/transaction.js +85 -5
  111. package/dist/resources/transaction.js.map +1 -1
  112. package/dist/resources/transactionBroadcast.d.ts +8 -0
  113. package/dist/resources/transactionBroadcast.js +65 -0
  114. package/dist/resources/transactionBroadcast.js.map +1 -1
  115. package/dist/security/keys.d.ts +1 -1
  116. package/dist/security/keys.js +170 -120
  117. package/dist/security/keys.js.map +1 -1
  118. package/dist/server/http.js +10 -0
  119. package/dist/server/http.js.map +1 -1
  120. package/dist/server/serverHelpers/Request.js +11 -2
  121. package/dist/server/serverHelpers/Request.js.map +1 -1
  122. package/dist/server/serverHelpers/contentTypes.js +8 -3
  123. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  124. package/dist/server/serverHelpers/uwsServer.js +38 -7
  125. package/dist/server/serverHelpers/uwsServer.js.map +1 -1
  126. package/dist/server/threads/manageThreads.d.ts +3 -3
  127. package/dist/server/threads/manageThreads.js +15 -13
  128. package/dist/server/threads/manageThreads.js.map +1 -1
  129. package/dist/server/threads/threadServer.d.ts +3 -0
  130. package/dist/server/threads/threadServer.js +24 -6
  131. package/dist/server/threads/threadServer.js.map +1 -1
  132. package/dist/upgrade/directives/5-3-0.js +9 -3
  133. package/dist/upgrade/directives/5-3-0.js.map +1 -1
  134. package/dist/utility/durableFile.d.ts +36 -0
  135. package/dist/utility/durableFile.js +106 -0
  136. package/dist/utility/durableFile.js.map +1 -0
  137. package/dist/utility/errors/hdbError.d.ts +4 -0
  138. package/dist/utility/errors/hdbError.js +10 -1
  139. package/dist/utility/errors/hdbError.js.map +1 -1
  140. package/dist/utility/globalSchema.d.ts +9 -0
  141. package/dist/utility/hdbTerms.d.ts +1 -0
  142. package/dist/utility/hdbTerms.js +1 -0
  143. package/dist/utility/hdbTerms.js.map +1 -1
  144. package/dist/validation/configValidator.js +29 -0
  145. package/dist/validation/configValidator.js.map +1 -1
  146. package/index.ts +7 -0
  147. package/json/systemSchema.json +14 -0
  148. package/npm-shrinkwrap.json +22 -22
  149. package/package.json +2 -2
  150. package/resources/DESIGN.md +57 -272
  151. package/resources/DatabaseTransaction.ts +708 -87
  152. package/resources/FULL_TEXT.md +6 -2
  153. package/resources/IterableEventQueue.ts +14 -7
  154. package/resources/LMDBTransaction.ts +212 -84
  155. package/resources/RecordEncoder.ts +2 -3
  156. package/resources/Resource.ts +5 -6
  157. package/resources/ResourceInterface.ts +3 -1
  158. package/resources/RocksIndexStore.ts +5 -0
  159. package/resources/Table.ts +118 -15
  160. package/resources/analytics/write.ts +6 -2
  161. package/resources/audit-retention.md +203 -0
  162. package/resources/auditStore.ts +306 -84
  163. package/resources/branchDatabase.ts +2 -0
  164. package/resources/databases.ts +6 -2
  165. package/resources/indexes/DESIGN.md +120 -177
  166. package/resources/indexes/fullTextNativeBinding.ts +22 -3
  167. package/resources/indexes/fullTextQueryIndex.ts +274 -11
  168. package/resources/models/DESIGN.md +11 -3
  169. package/resources/models/Models.ts +127 -4
  170. package/resources/models/backendRegistry.ts +17 -0
  171. package/resources/models/bootstrap.ts +9 -1
  172. package/resources/models/calibration.ts +298 -0
  173. package/resources/models/calibrationStore.ts +1167 -0
  174. package/resources/models/decisionStore.ts +57 -0
  175. package/resources/models/generativeDecision.ts +54 -16
  176. package/resources/models/types.ts +6 -0
  177. package/resources/record-locks.md +155 -141
  178. package/resources/recordLock.ts +12 -6
  179. package/resources/replayLogs.ts +9 -2
  180. package/resources/scheduler/DESIGN.md +4 -3
  181. package/resources/scheduler/engine.ts +35 -2
  182. package/resources/search.ts +154 -16
  183. package/resources/transaction.ts +50 -5
  184. package/resources/transactionBroadcast.ts +69 -0
  185. package/security/DESIGN.md +9 -30
  186. package/security/keys.ts +175 -127
  187. package/server/DESIGN.md +70 -36
  188. package/server/http.ts +10 -0
  189. package/server/serverHelpers/Request.ts +10 -2
  190. package/server/serverHelpers/contentTypes.ts +5 -3
  191. package/server/serverHelpers/uwsServer.ts +34 -7
  192. package/server/threads/manageThreads.js +16 -14
  193. package/server/threads/threadServer.js +24 -6
  194. package/studio/web/assets/{Chat-CNEKMllJ.js → Chat-4LMxI0yB.js} +1 -1
  195. package/studio/web/assets/{FloatingChat-CEnWhHeR.js → FloatingChat-kWHApEtF.js} +3 -3
  196. package/studio/web/assets/{SearchDialog-CwhJdEdY.js → SearchDialog-B7ymna97.js} +1 -1
  197. package/studio/web/assets/{apiToken-DC5vsaaO.js → apiToken-CE3AAt9f.js} +1 -1
  198. package/studio/web/assets/{applications-DQZxDy0x.js → applications-DdN7CqsB.js} +1 -1
  199. package/studio/web/assets/{cssMode-Dz2DxF4e.js → cssMode-BpySZUSt.js} +1 -1
  200. package/studio/web/assets/{editor-B3mjd3tz.js → editor-myLCVv9C.js} +1 -1
  201. package/studio/web/assets/{html-BsRGM7tp.js → html-DGNYO55O.js} +1 -1
  202. package/studio/web/assets/{htmlMode-tUKJaA3o.js → htmlMode-BUgpQr41.js} +1 -1
  203. package/studio/web/assets/{index-BuqFjN5K.js → index-FN4KC9va.js} +39 -39
  204. package/studio/web/assets/index-QLZw6xrU.css +1 -0
  205. package/studio/web/assets/{index.lazy-CcpfQFY_.js → index.lazy-DZFuaumG.js} +1 -1
  206. package/studio/web/assets/{javascript-BZ_uRGHl.js → javascript-DiBzh4pj.js} +1 -1
  207. package/studio/web/assets/{jsonMode-DgB-aFMj.js → jsonMode-Bm312nmu.js} +1 -1
  208. package/studio/web/assets/{languageServices-BleuBw17.js → languageServices-Dz2K9rZN.js} +1 -1
  209. package/studio/web/assets/{lspLanguageFeatures-ByVYLSsQ.js → lspLanguageFeatures-CNu1L5xn.js} +1 -1
  210. package/studio/web/assets/{notifications-TuzN0IMi.js → notifications--nwFLGmM.js} +1 -1
  211. package/studio/web/assets/{notifications-D1Nf-Edn.js → notifications-BelKw5bR.js} +1 -1
  212. package/studio/web/assets/{profile-D7C7Lupz.js → profile-AU5FjOBx.js} +1 -1
  213. package/studio/web/assets/{regions-nGQCm-v8.js → regions-C0sTSEHH.js} +1 -1
  214. package/studio/web/assets/{register-C3x9Ze6P.js → register-DyNR2rGk.js} +2 -2
  215. package/studio/web/assets/{setComponentFile-DpjrRqeG.js → setComponentFile-BkWx8AN3.js} +1 -1
  216. package/studio/web/assets/{setup-CGiKLZ9e.js → setup-D6LZS78d.js} +2 -2
  217. package/studio/web/assets/{status-CGJwrNPH.js → status-BCWnn70o.js} +1 -1
  218. package/studio/web/assets/{toggleHighContrast-C-Ne6P7T.js → toggleHighContrast-pyeGJ6W1.js} +1 -1
  219. package/studio/web/assets/{tsMode-CSreYTys.js → tsMode-CGV3iaWC.js} +1 -1
  220. package/studio/web/assets/{typescript-MnxBk89W.js → typescript-Ci7Khvwo.js} +1 -1
  221. package/studio/web/assets/{useEntityRestURL-TNrh77-s.js → useEntityRestURL-DNiz3aZ0.js} +1 -1
  222. package/studio/web/assets/{workers-BfZlUNVI.js → workers-byzxjbqy.js} +1 -1
  223. package/studio/web/assets/{xml-BHd6qGH7.js → xml-DGnHQ3CX.js} +1 -1
  224. package/studio/web/assets/{yaml-C53R8OQq.js → yaml-BUoTnPWb.js} +1 -1
  225. package/studio/web/index.html +2 -2
  226. package/upgrade/directives/5-3-0.ts +10 -3
  227. package/utility/durableFile.ts +96 -0
  228. package/utility/errors/hdbError.ts +9 -0
  229. package/utility/hdbTerms.ts +1 -0
  230. package/validation/configValidator.ts +31 -0
  231. package/studio/web/assets/index-72cEH474.css +0 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SearchDialog-CwhJdEdY.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/vendor-datadog-ozKf-pts.js","assets/vendor-react-BOliS0BL.js","assets/vendor-tanstack-Bntfka-M.js","assets/notifications-D1Nf-Edn.js","assets/cn-6T8VranJ.js","assets/vendor-core-6LhfJlRC.js","assets/button-DWwfgGWI.js","assets/vendor-ui-9EYYDgoN.js","assets/alertDialog-BbWD9Xxa.js","assets/regions-nGQCm-v8.js","assets/chevron-up-CFxbMGv2.js","assets/createLucideIcon-fO5dL7D5.js","assets/apiToken-DC5vsaaO.js","assets/setup-CGiKLZ9e.js","assets/dist-BrRuMUzt.js","assets/register-C3x9Ze6P.js","assets/register-DjpsE8to.css","assets/editor-B3mjd3tz.js","assets/toggleHighContrast-C-Ne6P7T.js","assets/toggleHighContrast-n7clI0si.css","assets/index.lazy-CcpfQFY_.js","assets/authStore-CJCaADw9.js","assets/restartGate-nHAFLDh-.js","assets/setSessionStorage-B0bf71m4.js","assets/safeParse-DeaoCCWH.js","assets/localStorageKeys-etzFY_xV.js","assets/useEntityRestURL-TNrh77-s.js","assets/tabs-BCTQzoQK.js","assets/applications-DQZxDy0x.js","assets/download-Cn6tPG4L.js","assets/setComponentFile-DpjrRqeG.js","assets/languageServices-BleuBw17.js","assets/applications-DNZhsH95.css","assets/FloatingChat-CEnWhHeR.js","assets/status-CGJwrNPH.js","assets/arrow-up-D2g_57vT.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-C0FHjtdQ.js","assets/notifications-TuzN0IMi.js","assets/profile-D7C7Lupz.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,x as g,y as _}from"./authStore-CJCaADw9.js";import{A as v,E as y,O as b,T as x,_ as S,b as C,d as w,g as T,i as E,o as D,p as O,r as k,s as A,t as ee,u as te,v as j,y as M}from"./vendor-core-6LhfJlRC.js";import{n as N,t as P}from"./cn-6T8VranJ.js";import{a as ne,c as re,d as ie,i as ae,l as oe,n as se,o as ce,r as le,s as ue,u as de}from"./restartGate-nHAFLDh-.js";import{a as fe,i as pe,t as me}from"./vendor-datadog-ozKf-pts.js";import{r as he,t as ge}from"./vendor-react-BOliS0BL.js";import{A as _e,B as F,C as I,D as L,E as ve,F as ye,G as be,H as xe,I as Se,J as Ce,L as R,M as we,O as Te,P as Ee,R as z,S as De,T as Oe,U as ke,V as Ae,W as je,Y as Me,_ as Ne,a as Pe,b as Fe,c as Ie,d as Le,f as Re,g as ze,h as Be,i as Ve,k as B,l as He,m as Ue,n as We,o as Ge,p as Ke,q as qe,r as Je,s as Ye,t as Xe,u as Ze,v as Qe,w as V,y as $e,z as et}from"./vendor-tanstack-Bntfka-M.js";import{t as tt}from"./safeParse-DeaoCCWH.js";import{n as nt,t as rt}from"./setSessionStorage-B0bf71m4.js";import{t as H}from"./button-DWwfgGWI.js";import{$ as it,A as at,At as ot,B as st,C as ct,Ct as lt,D as ut,Dt as dt,E as ft,Et as pt,F as mt,Ft as ht,G as gt,H as _t,I as vt,It as yt,J as bt,K as xt,L as St,Lt as Ct,M as wt,Mt as Tt,N as Et,Nt as Dt,O as Ot,Ot as kt,P as At,Pt as jt,Q as Mt,R as Nt,Rt as U,S as Pt,St as Ft,T as It,Tt as Lt,U as Rt,V as zt,W as Bt,X as Vt,Y as Ht,Z as Ut,_t as Wt,at as Gt,b as Kt,bt as qt,ct as Jt,dt as Yt,et as Xt,ft as Zt,gt as Qt,ht as $t,it as en,j as tn,jt as nn,k as rn,kt as an,lt as on,mt as sn,nt as cn,ot as ln,pt as un,q as dn,rt as fn,st as pn,tt as mn,ut as hn,v as gn,vt as _n,w as vn,wt as yn,x as bn,xt as xn,y as Sn,yt as Cn,z as wn,zt as Tn}from"./vendor-ui-9EYYDgoN.js";import{t as W}from"./createLucideIcon-fO5dL7D5.js";import{n as En,t as Dn}from"./arrow-up-D2g_57vT.js";import{n as On,r as kn,t as An}from"./chevron-up-CFxbMGv2.js";import{t as jn}from"./errorText-NpBmvk9I.js";import{n as Mn,r as Nn,t as Pn}from"./localStorageKeys-etzFY_xV.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(fe(),1);function Fn(){let[e,t]=(0,G.useState)(()=>({...u.getAllConnections()}));return(0,G.useEffect)(()=>u.listenToAllEntities((e,n)=>{t(t=>({...t,[n]:e}))}),[]),e}function In(){let e=u.calculateIdFromEntity(m),[t,n]=(0,G.useState)(u.getConnectionById(m));return(0,G.useEffect)(()=>u.listenToEntity(e,n),[e]),t}function Ln(){return In()}function Rn(e,t){return!e||!(`fabricRole`in e)?!1:e.staffPermissions?e.staffPermissions.includes(t):e.fabricRole===`fabric_admin`||e.fabricRole===`super_user`}function zn(e){let{user:t}=Ln();return Rn(t,e)}function Bn(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=he();function Vn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card`,className:P(`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 Hn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-header`,className:P(`flex flex-col gap-1.5 px-6`,e),...t})}function Un({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-title`,className:P(`leading-none text-lg`,e),...t})}function Wn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-description`,className:P(`text-muted-foreground text-xs`,e),...t})}function Gn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-content`,className:P(`px-6`,e),...t})}function Kn(e){return e!==null&&!!e.username}function qn(e){if(!e||Kn(e))return[];let t=Rn(e,`org:read`);return Object.entries(e.roles??{}).map(([e,n])=>({id:e,name:n.organizationName||e,roleName:n.role??`fabric staff`,locked:`oauthProviders`in n&&!t,providers:n.oauthProviders??[]})).sort((e,t)=>e.name.localeCompare(t.name)||e.id.localeCompare(t.id))}function Jn(e){let t=qn(e);return t.length===1&&!t[0].locked?`/${t[0].id}`:`/`}var Yn={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`}]]};Yn.node;var Xn=W(Yn),Zn={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`}]]};Zn.node;var Qn=W(Zn),$n={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};$n.node;var er=W($n),tr={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};tr.node;var nr=W(tr),rr={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`}]]};rr.node;var ir=W(rr),ar={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`}]]};ar.node;var or=W(ar),sr={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`}]]};sr.node;var cr=W(sr),lr={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`}]]};lr.node;var ur=W(lr),dr={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`}]]};dr.node;var fr=W(dr),pr={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`}]]};pr.node;var mr=W(pr),hr={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`}]]};hr.node;var gr=W(hr),_r={name:`building-complex`,size:24,node:[[`path`,{d:`M10 12h4`,key:`a56b0p`}],[`path`,{d:`M10 8h4`,key:`1sr2af`}],[`path`,{d:`M14 21v-3a2 2 0 0 0-4 0v3`,key:`1rgiei`}],[`path`,{d:`M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2`,key:`secmi2`}],[`path`,{d:`M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16`,key:`16ra0t`}]],aliases:[`building-2`]};_r.node;var vr=W(_r),yr={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`}]]};yr.node;var br=W(yr),xr={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`]};xr.node;var Sr=W(xr),Cr={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`]};Cr.node;var wr=W(Cr),Tr={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]};Tr.node;var Er=W(Tr),Dr={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};Dr.node;var Or=W(Dr),kr={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`]};kr.node;var Ar=W(kr),jr={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`]};jr.node;var Mr=W(jr),Nr={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`]};Nr.node;var Pr=W(Nr),Fr={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`}]]};Fr.node;var Ir=W(Fr),Lr={name:`circle`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]};Lr.node;var Rr=W(Lr),zr={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`}]]};zr.node;var Br=W(zr),Vr={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`}]]};Vr.node;var Hr=W(Vr),Ur={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`}]]};Ur.node;var Wr=W(Ur),Gr={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`]};Gr.node;var Kr=W(Gr),qr={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`]};qr.node;var Jr=W(qr),Yr={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`]};Yr.node;var Xr=W(Yr),Zr={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`}]]};Zr.node;var Qr=W(Zr),$r={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`}]]};$r.node;var ei=W($r),ti={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`}]]};ti.node;var ni=W(ti),ri={name:`earth`,size:24,node:[[`path`,{d:`M21.54 15H17a2 2 0 0 0-2 2v4.54`,key:`1djwo0`}],[`path`,{d:`M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17`,key:`1tzkfa`}],[`path`,{d:`M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05`,key:`14pb5j`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],aliases:[`globe-2`]};ri.node;var ii=W(ri),ai={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`]};ai.node;var oi=W(ai),si={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`}]]};si.node;var ci=W(si),li={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`}]]};li.node;var ui=W(li),di={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`}]]};di.node;var fi=W(di),pi={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`}]]};pi.node;var mi=W(pi),hi={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`}]]};hi.node;var gi=W(hi),_i={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`]};_i.node;var vi=W(_i),yi={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`]};yi.node;var bi=W(yi),xi={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`}]]};xi.node;var Si=W(xi),Ci={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`}]]};Ci.node;var wi=W(Ci),Ti={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`}]]};Ti.node;var Ei=W(Ti),Di={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`}]]};Di.node;var Oi=W(Di),ki={name:`grip-horizontal`,size:24,node:[[`circle`,{cx:`12`,cy:`9`,r:`1`,key:`124mty`}],[`circle`,{cx:`19`,cy:`9`,r:`1`,key:`1ruzo2`}],[`circle`,{cx:`5`,cy:`9`,r:`1`,key:`1a8b28`}],[`circle`,{cx:`12`,cy:`15`,r:`1`,key:`1e56xg`}],[`circle`,{cx:`19`,cy:`15`,r:`1`,key:`1a92ep`}],[`circle`,{cx:`5`,cy:`15`,r:`1`,key:`5r1jwy`}]]};ki.node;var Ai=W(ki),ji={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`}]]};ji.node;var Mi=W(ji),Ni={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`]};Ni.node;var Pi=W(Ni),Fi={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`}]]};Fi.node;var Ii=W(Fi),Li={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`}]]};Li.node;var Ri=W(Li),zi={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`}]]};zi.node;var Bi=W(zi),Vi={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};Vi.node;var Hi=W(Vi),Ui={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`}]]};Ui.node;var Wi=W(Ui),Gi={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`}]]};Gi.node;var Ki=W(Gi),qi={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`}]]};qi.node;var Ji=W(qi),Yi={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};Yi.node;var Xi=W(Yi),Zi={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`}]]};Zi.node;var Qi=W(Zi),$i={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`}]]};$i.node;var ea=W($i),ta={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`}]]};ta.node;var na=W(ta),ra={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`}]]};ra.node;var ia=W(ra),aa={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`}]]};aa.node;var oa=W(aa),sa={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`}]]};sa.node;var ca=W(sa),la={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`}]]};la.node;var ua=W(la),da={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`}]]};da.node;var fa=W(da),pa={name:`maximize`,size:24,node:[[`path`,{d:`M8 3H5a2 2 0 0 0-2 2v3`,key:`1dcmit`}],[`path`,{d:`M21 8V5a2 2 0 0 0-2-2h-3`,key:`1e4gt3`}],[`path`,{d:`M3 16v3a2 2 0 0 0 2 2h3`,key:`wsl5sc`}],[`path`,{d:`M16 21h3a2 2 0 0 0 2-2v-3`,key:`18trek`}]]};pa.node;var ma=W(pa),ha={name:`menu`,size:24,node:[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]};ha.node;var ga=W(ha),_a={name:`minimize`,size:24,node:[[`path`,{d:`M8 3v3a2 2 0 0 1-2 2H3`,key:`hohbtr`}],[`path`,{d:`M21 8h-3a2 2 0 0 1-2-2V3`,key:`5jw1f3`}],[`path`,{d:`M3 16h3a2 2 0 0 1 2 2v3`,key:`198tvr`}],[`path`,{d:`M16 21v-3a2 2 0 0 1 2-2h3`,key:`ph8mxp`}]]};_a.node;var va=W(_a),ya={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`}]]};ya.node;var ba=W(ya),xa={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`}]]};xa.node;var Sa=W(xa),Ca={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`}]]};Ca.node;var wa=W(Ca),Ta={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`]};Ta.node;var Ea=W(Ta),Da={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`}]]};Da.node;var Oa=W(Da),ka={name:`palette`,size:24,node:[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]};ka.node;var Aa=W(ka),ja={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`}]]};ja.node;var Ma=W(ja),Na={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`}]]};Na.node;var Pa=W(Na),Fa={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};Fa.node;var Ia=W(Fa),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 Ra=W(La),za={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`}]]};za.node;var Ba=W(za),Va={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`}]]};Va.node;var Ha=W(Va),Ua={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`}]]};Ua.node;var Wa=W(Ua),Ga={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`}]]};Ga.node;var Ka=W(Ga),qa={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`}]]};qa.node;var Ja=W(qa),Ya={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};Ya.node;var Xa=W(Ya),Za={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`}]]};Za.node;var Qa=W(Za),$a={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`}]]};$a.node;var eo=W($a),to={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`}]]};to.node;var no=W(to),ro={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`]};ro.node;var io=W(ro),ao={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`}]]};ao.node,W(ao);var oo={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`}]]};oo.node;var so=W(oo),co={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`]};co.node;var lo=W(co),uo={name:`square`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]};uo.node;var fo=W(uo),po={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`}]]};po.node;var mo=W(po),ho={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`}]]};ho.node;var go=W(ho),_o={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`}]]};_o.node;var vo=W(_o),yo={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`}]]};yo.node;var bo=W(yo),xo={name:`terminal`,size:24,node:[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]};xo.node;var So=W(xo),Co={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`}]]};Co.node;var wo=W(Co),To={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`]};To.node;var Eo=W(To),Do={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`]};Do.node;var Oo=W(Do),ko={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`}]]};ko.node;var Ao=W(ko),jo={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`]};jo.node;var Mo=W(jo),No={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`}]]};No.node;var Po=W(No),Fo={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};Fo.node;var Io=W(Fo),Lo={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`}]]};Lo.node;var Ro=W(Lo),zo=`An unexpected error occurred.`;function Bo(e){return typeof e==`string`?e.length>0:typeof e==`number`||(0,G.isValidElement)(e)?!0:Array.isArray(e)?e.length>0&&e.every(Bo):!1}function Vo(e){if(e instanceof Error)return e.message.length>0?e.message:zo;if(typeof e==`object`&&e&&`message`in e){let t=e.message;return Bo(t)?t:zo}return Bo(e)?e:zo}function Ho({className:e,error:t,title:n,showReturnToHome:r,children:i}){let{user:a,isLoading:o}=In();Jn(a);let s=Vo(t);return(0,K.jsxs)(Vn,{className:P(`text-red p-5 border border-red rounded-md m-12 mt-36`,e),children:[(0,K.jsxs)(Hn,{children:[(0,K.jsx)(Un,{className:`text-2xl`,children:(0,K.jsx)(`h2`,{children:n??`Component Error`})}),(0,K.jsx)(Wn,{children:s})]}),(0,K.jsxs)(Gn,{children:[i,r!==!1&&(a&&!o?(0,K.jsx)(V,{to:`/`,children:(0,K.jsxs)(H,{children:[` `,(0,K.jsx)(er,{}),` Return to Home`]})}):(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsxs)(H,{children:[` `,(0,K.jsx)(er,{}),` Go to Sign In Page`]})}))]})]})}function Uo(){let{user:e,isLoading:t}=In();return Jn(e),(0,K.jsx)(`div`,{className:`flex items-center justify-center h-screen px-3`,children:(0,K.jsxs)(Vn,{className:`text-red p-5 border border-red rounded-md w-full max-w-md`,children:[(0,K.jsx)(Hn,{children:(0,K.jsx)(Un,{className:`text-2xl`,children:(0,K.jsx)(`h2`,{children:`Sorry, Page Not Found`})})}),(0,K.jsx)(Gn,{children:e&&!t?(0,K.jsx)(V,{to:`/`,children:(0,K.jsxs)(H,{children:[` `,(0,K.jsx)(er,{}),` Return to Home`]})}):(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsxs)(H,{children:[` `,(0,K.jsx)(er,{}),` Go Sign In Page`]})})})]})})}function Wo(){return`ontouchstart`in window||navigator.maxTouchPoints>0}function Go(e,t,n,r){return t===void 0?Promise.resolve():e.invalidateQueries({predicate:e=>e.queryKey[0]===t||e.queryKey[1]===t,...n},r)}function Ko(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=jn(e.detail);n=i?`${e.title}: ${i}`:e.title,r=!1}else n=jn(e.error)??jn(e.message)??n}else n=jn(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 qo(e){console.error(e);let{title:t,description:n}=Ko(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 Jo=new xe({queryCache:new ke({onError:(e,t)=>{if(se(e,t.queryKey)){console.debug(`Suppressed a failure from a restarting entity`,e);return}if(t.meta?.inlineSearchError&&t.getObserversCount()===0){console.error(e);return}qo(e)}}),mutationCache:new je({onError:(e,t,n,r)=>{r.meta?.skipGlobalErrorToast||qo(e)}})});oe(e=>void Go(Jo,e,void 0,{cancelRefetch:!1}));function Yo({...e}){return(0,K.jsx)(nn,{"data-slot":`dropdown-menu`,...e})}function Xo({...e}){return(0,K.jsx)(yt,{"data-slot":`dropdown-menu-trigger`,...e})}function Zo({className:e,sideOffset:t=4,...n}){return(0,K.jsx)(kt,{children:(0,K.jsx)(yn,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:P(`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 Qo({className:e,inset:t,variant:n=`default`,...r}){return(0,K.jsx)(Lt,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:P(`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 $o({className:e,children:t,checked:n,...r}){return(0,K.jsxs)(lt,{"data-slot":`dropdown-menu-checkbox-item`,className:P(`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)(pt,{children:(0,K.jsx)(kn,{className:`size-4`})})}),t]})}function es({...e}){return(0,K.jsx)(an,{"data-slot":`dropdown-menu-radio-group`,...e})}function ts({className:e,children:t,...n}){return(0,K.jsxs)(ot,{"data-slot":`dropdown-menu-radio-item`,className:P(`focus:bg-accent focus:text-accent-foreground relative flex cursor-default 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),...n,children:[(0,K.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,K.jsx)(pt,{children:(0,K.jsx)(Rr,{className:`size-2 fill-current`})})}),t]})}function ns({className:e,inset:t,...n}){return(0,K.jsx)(dt,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:P(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function rs({className:e,...t}){return(0,K.jsx)(Tt,{"data-slot":`dropdown-menu-separator`,className:P(`bg-border -mx-1 my-1 h-px`,e),...t})}function is({className:e,...t}){return(0,K.jsx)(`span`,{"data-slot":`dropdown-menu-shortcut`,className:P(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}function as({...e}){return(0,K.jsx)(Dt,{"data-slot":`dropdown-menu-sub`,...e})}function os({className:e,inset:t,children:n,...r}){return(0,K.jsxs)(ht,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:P(`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)(Or,{className:`ml-auto size-4`})]})}function ss({className:e,...t}){return(0,K.jsx)(jt,{"data-slot":`dropdown-menu-sub-content`,className:P(`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 cs=`flex items-center gap-3 p-2 rounded-lg text-sm transition-colors`,ls=`block p-2 rounded-lg text-sm transition-colors`,us={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-grey-700`},ds={className:`font-medium text-primary bg-primary/10 dark:text-white dark:bg-white/10`};function fs({items:e,ariaLabel:t}){let{pathname:n}=ze(),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:`studio-section-rail 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:cs,activeOptions:{exact:!!e.exact},activeProps:ds,inactiveProps:us,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:ls,activeOptions:{exact:!!e.exact},activeProps:ds,inactiveProps:us,children:e.label},e.to))})]},e.to)})}),(0,K.jsx)(`div`,{className:`md:hidden`,children:(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsxs)(H,{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)(On,{className:`size-4`})]})}),(0,K.jsx)(Zo,{align:`start`,className:`w-(--radix-dropdown-menu-trigger-width)`,children:e.map(e=>{let t=e.icon;return[(0,K.jsx)(Qo,{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)(Qo,{asChild:!0,children:(0,K.jsx)(V,{to:e.to,className:`flex items-center gap-2 pl-8`,children:e.label})},e.to)):[]]})})]})})]})}var ps=[{to:`/admin/notifications`,label:`Notifications`,icon:cr,permission:`systemStatus:write`},{to:`/admin/regions`,label:`Regions`,icon:Ei,permission:`region:read`},{to:`/admin/api-token`,label:`API Token`,icon:Ri,permission:`apiToken:create`,ssoAccountOnly:!0}];function ms(e){let t=e!==null&&`fabricRole`in e&&e.fabricRole===`super_user`;return ps.filter(n=>Rn(e,n.permission)&&!(n.ssoAccountOnly&&t))}function hs(){let{isLoading:e,user:t}=Ln(),{pathname:n}=ze();if(e)return null;let r=ms(t);if(!r.length)return(0,K.jsx)(ve,{to:`/`,replace:!0});let i=ps.find(e=>n.startsWith(e.to));return i&&!r.includes(i)?(0,K.jsx)(ve,{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)(fs,{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)($e,{})})]})})}function gs({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 _s(e){return e?.response?.status??e?.status}function vs(e){return _s(e)===403}function ys(e){let t=_s(e);return t===400||t===403}function bs(e){return t=>vs(t.state.error)?!1:e??!1}function xs(e=3){return(t,n)=>!ys(n)&&t<e}function Ss(e){return!!e&&e!==`undefined`&&e!==`null`}async function Cs(e){if(!Ss(e))throw Error(`getOrganization called without a valid organization id (got: ${e})`);let{data:t}=await N.get(`/Organization/${e}`);return t}function ws(e){return z({queryKey:[e],queryFn:()=>Cs(e),retry:!1,enabled:Ss(e),refetchInterval:bs(1e4)})}function Ts(){let{user:e}=Ln(),{organizationId:t}=B({strict:!1});(0,G.useMemo)(()=>qn(e),[e]);let{data:n}=F({...ws(t),enabled:!1});return null}function Es(e,t){let n=(0,G.useState)(Nn(e,t)),[r]=n;return(0,G.useEffect)(()=>Mn(e,r),[e,r]),n}function Ds(){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 Os=(0,G.createContext)([`system`,()=>{}]);function ks({children:e}){let[t,n]=Es(Pn.Theme,`system`),r=Ds();return(0,G.useEffect)(()=>{let e=t===`dark`||t===`system`&&r===`dark`;document.documentElement.classList.toggle(`dark`,e)},[t,r]),(0,K.jsx)(Os.Provider,{value:[t,n],children:e})}function As(){return(0,G.useContext)(Os)}function js({user:e,onSignOut:t,signingOut:n}){let[r,i]=As(),{organizationId:a}=B({strict:!1}),o=Kn(e)?e.username:[e.firstname,e.lastname].filter(Boolean).join(` `)||e.email,s=o.trim().split(/\s+/).slice(0,2).map(e=>e[0]).join(``).toUpperCase();return(0,G.useMemo)(()=>qn(e).some(e=>!e.locked&&e.id!==a),[e,a]),(0,K.jsxs)(Yo,{children:[(0,K.jsxs)(Xo,{"aria-label":`Account menu`,className:`ml-2 inline-flex items-center gap-2 rounded-full border border-primary/25 bg-card/50 p-1 pr-2 text-foreground hover:bg-primary/15 focus-visible:outline-2 focus-visible:outline-ring`,children:[(0,K.jsx)(`span`,{className:`flex size-8 items-center justify-center rounded-full bg-primary/15 text-xs font-semibold text-primary dark:text-violet-200`,children:s||(0,K.jsx)(Mo,{className:`size-4`})}),(0,K.jsx)(On,{className:`size-3.5`,"aria-hidden":`true`})]}),(0,K.jsxs)(Zo,{align:`end`,className:`w-64`,children:[(0,K.jsx)(ns,{className:`truncate`,title:o,children:o}),!Kn(e)&&o!==e.email&&(0,K.jsx)(`p`,{className:`truncate px-2 pb-2 text-xs text-muted-foreground`,title:e.email,children:e.email}),(0,K.jsx)(rs,{}),!1,(0,K.jsxs)(as,{children:[(0,K.jsxs)(os,{children:[(0,K.jsx)(Aa,{className:`size-4`}),`Appearance`]}),(0,K.jsx)(ss,{children:(0,K.jsxs)(es,{value:r,onValueChange:e=>{(e===`light`||e===`dark`||e===`system`)&&i(e)},children:[(0,K.jsx)(ts,{value:`light`,children:`Light`}),(0,K.jsx)(ts,{value:`system`,children:`System`}),(0,K.jsx)(ts,{value:`dark`,children:`Dark`})]})})]}),(0,K.jsx)(rs,{}),(0,K.jsxs)(Qo,{disabled:n,onSelect:t,children:[(0,K.jsx)(ia,{className:`size-4`}),n?`Signing out…`:`Sign Out`]})]})]})}function Ms(){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 Ns(){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 Ps=x(`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 Fs({className:e,variant:t,asChild:n=!1,...r}){return(0,K.jsx)(n?Tn:`span`,{"data-slot":`badge`,className:P(Ps({variant:t}),e),...r})}function Is({className:e,children:t,...n}){return(0,K.jsxs)(Cn,{"data-slot":`scroll-area`,className:P(`relative`,e),...n,children:[(0,K.jsx)(Ft,{"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)(Ls,{}),(0,K.jsx)(_n,{})]})}function Ls({className:e,orientation:t=`vertical`,...n}){return(0,K.jsx)(qt,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:P(`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)(xn,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}var Rs=[`notification-acks`];function zs(){let e=Nn(Pn.AckedNotificationIds,[]);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function Bs(e){Jo.setQueryData(Rs,e);try{Mn(Pn.AckedNotificationIds,e)}catch(e){console.warn(`[notifications] could not persist acknowledgements`,e)}}function Vs(){return z({queryKey:Rs,queryFn:zs,staleTime:1/0,gcTime:1/0,initialData:zs})}function Hs(e){Bs(Array.from(new Set([...zs(),e])))}function Us(e){Bs(zs().filter(t=>t!==e))}function Ws(){let{data:e}=F(Vs());return(0,G.useMemo)(()=>new Set(e??[]),[e])}var Gs={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:Oo,badgeVariant:`warning`,bannerClass:`bg-yellow/10 border-yellow/40 text-foreground`,iconClass:`text-yellow`},info:{severity:`info`,label:`Info`,Icon:Ii,badgeVariant:`secondary`,bannerClass:`bg-secondary/20 border-secondary/50 text-foreground`,iconClass:`text-secondary-foreground`}},Ks=new Set([`critical`,`error`,`outage`,`incident`,`down`,`danger`]),qs=new Set([`warning`,`warn`,`maintenance`,`degraded`,`notice`]),Js=new Set([`info`,`information`,`informational`,`success`,`ok`]);function Ys(e){let t=(e??``).trim().toLowerCase();return qs.has(t)?`warning`:Js.has(t)?`info`:(Ks.has(t),`critical`)}function Xs(e){return Gs[Ys(e)]}var Zs={critical:0,warning:1,info:2};function Qs(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 $s(e){let t=Qs(e);return t.kind===`valid`?t.ms:null}function ec(e){return new Date(e).toLocaleString()}function tc(e,t){let n=Qs(e.startAt),r=Qs(e.endAt);return n.kind===`invalid`||r.kind===`invalid`?{state:`expired`,label:`Schedule unavailable`}:n.kind===`valid`&&t<n.ms?{state:`upcoming`,label:`Starts ${ec(n.ms)}`}:r.kind===`valid`&&t>r.ms?{state:`expired`,label:`Ended ${ec(r.ms)}`}:r.kind===`valid`?{state:`active`,label:`Active until ${ec(r.ms)}`}:{state:`active`,label:`Active`}}var nc=new Set([`http`,`https`,`mailto`]);function rc(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?nc.has(n)?{kind:`external`,href:t}:null:{kind:`internal`,href:t.startsWith(`/`)?t:`/${t}`}}function ic({url:e,className:t,children:n,onNavigate:r}){let i=rc(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)(ci,{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 ac=[`system-status`];async function oc(){let{data:e}=await N.get(`/SystemStatus/`);return Array.isArray(e)?e:[]}function sc(){return z({queryKey:ac,queryFn:oc,refetchInterval:6e4,staleTime:3e4})}var cc=3e4,lc=new Set,uc=Date.now(),dc=null;function fc(e){return lc.add(e),dc||=(uc=Date.now(),setInterval(()=>{uc=Date.now(),lc.forEach(e=>e())},cc)),()=>{lc.delete(e),lc.size===0&&dc&&(clearInterval(dc),dc=null)}}function pc(){return(0,G.useSyncExternalStore)(fc,()=>uc,()=>uc)}function mc(){return F(sc())}var hc=[{value:`light`,icon:(0,K.jsx)(mo,{className:`size-4`}),label:`Light`},{value:`system`,icon:(0,K.jsx)(ba,{className:`size-4`}),label:`System`},{value:`dark`,icon:(0,K.jsx)(Sa,{className:`size-4`}),label:`Dark`}];function gc(){let[e,t]=As();return(0,K.jsx)(`div`,{className:`flex items-center bg-muted dark:bg-black rounded-xl p-0.5 gap-0.5`,children:hc.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 _c({className:e,...t}){return(0,K.jsx)(`div`,{className:P(`absolute top-full left-0 isolate z-50 flex justify-center`),children:(0,K.jsx)(Wt,{"data-slot":`navigation-menu-viewport`,className:P(`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 vc({className:e,children:t,viewport:n=!0,...r}){return(0,K.jsxs)(Qt,{"data-slot":`navigation-menu`,"data-viewport":n,className:P(`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,e),...r,children:[t,n&&(0,K.jsx)(_c,{})]})}function yc({className:e,...t}){return(0,K.jsx)(un,{"data-slot":`navigation-menu-item`,className:P(`relative`,e),...t})}function bc({className:e,...t}){return(0,K.jsx)(sn,{"data-slot":`navigation-menu-link`,className:P(`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 xc({className:e,...t}){return(0,K.jsx)($t,{"data-slot":`navigation-menu-list`,className:P(`group flex flex-1 list-none items-center justify-center gap-1`,e),...t})}function Sc({delayDuration:e=0,...t}){return(0,K.jsx)(hn,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function Cc({...e}){return(0,K.jsx)(Sc,{children:(0,K.jsx)(Yt,{"data-slot":`tooltip`,...e})})}function wc({...e}){return(0,K.jsx)(Zt,{"data-slot":`tooltip-trigger`,...e})}function Tc({className:e,sideOffset:t=0,arrowClassName:n,children:r,...i}){return(0,K.jsx)(on,{children:(0,K.jsxs)(Jt,{"data-slot":`tooltip-content`,sideOffset:t,className:P(`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)(pn,{className:P(`bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`,n)})]})})}function Ec(){let e=`v5.3.0`,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:P(Ps({variant:`default`}),`text-xs inline-block ml-2 align-text-top`),children:[e,` BETA`]})})}function Dc(e={}){let{instanceId:t,clusterId:r}=B({strict:!1});return n({id:m,...e})}function Oc(e={}){let{instanceId:t,clusterId:r}=B({strict:!1});return{instanceClient:n({id:m,...e}),entityType:`instance`}}function q(e={}){let{instanceId:t,clusterId:n}=B({strict:!1});return(0,G.useMemo)(()=>kc({instanceId:t,clusterId:n,...e}),[e.instanceId??t,e.clusterId??n,e.operationsUrl,e.port,e.secure,e.disableFabricConnect,e.forceFabricConnect])}function kc({instanceId:e,clusterId:t,...r}){let i=m;if(!i)throw Error(`id could not be automatically calculated in useInstanceClientIdParams`);return{instanceClient:n({id:i,...r}),entityId:i,entityType:`instance`}}function Ac(){localStorage.clear()}function jc(){sessionStorage.clear()}async function Mc(){u.setUserForEntity(m,null),Jo.getQueryCache().clear(),Ac(),jc(),await Jo.invalidateQueries({refetchType:`none`})}async function Nc(e){await u.signOutFromPotentiallyAuthenticatedInstances(),await d({...e,entityId:m})}function Pc(){let e=Dc();return R({mutationFn:()=>Nc({instanceClient:e}),onSuccess:Mc})}(0,G.lazy)(()=>pe(()=>import(`./SearchDialog-CwhJdEdY.js`).then(e=>({default:e.SearchDialog})),__vite__mapDeps([0,1,2,3,4])));var Fc=(0,G.createContext)(null);function Ic(){let e=(0,G.useContext)(Fc);return e?(0,K.jsxs)(`button`,{type:`button`,onClick:e,"aria-label":`Search organizations and clusters`,className:`inline-flex cursor-pointer items-center gap-2 rounded-lg border border-primary/20 bg-card/30 p-2 text-sm text-muted-foreground hover:bg-primary/15 hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,children:[(0,K.jsx)(Xa,{className:`size-4`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`hidden lg:inline`,children:`Search`}),(0,K.jsx)(`kbd`,{className:`hidden xl:inline rounded border border-border px-1 text-xs`,children:`⌘ / Ctrl K`})]}):null}var Lc={className:`text-foreground dark:text-white font-semibold`};function Rc(){let{mutate:e,isPending:t}=Pc(),n=L(),{user:r}=In(),i=we(),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()}}),n({to:`/sign-in`}),i.invalidate()}})},[e,i,n]),o=(0,G.useMemo)(()=>[{to:`https://docs.harperdb.io/docs`,target:`_blank`,icon:(0,K.jsx)(ur,{}),text:`Docs`,textBreakpoint:`md`},{to:`https://github.com/HarperFast/studio/issues`,target:`_blank`,icon:(0,K.jsx)(gr,{}),text:`Report an Issue`,textBreakpoint:`lg`},{to:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,icon:(0,K.jsx)(Ms,{}),text:`Discord`,textBreakpoint:`lg`}],[]);return r?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uc,{menuItems:o,user:r,accountMenu:(0,K.jsx)(js,{user:r,onSignOut:a,signingOut:t})}),(0,K.jsx)(Vc,{menuItems:o,user:r,accountMenu:(0,K.jsx)(js,{user:r,onSignOut:a,signingOut:t})})]}):(0,K.jsx)(Bc,{})}function zc(e){return e.items!==void 0}function Bc(){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)(Ns,{})}),(0,K.jsx)(Ec,{})]}),(0,K.jsx)(vc,{children:(0,K.jsxs)(xc,{className:`text-muted-foreground dark:text-grey-400`,children:[(0,K.jsx)(yc,{children:(0,K.jsx)(bc,{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)(ur,{}),` `,(0,K.jsx)(`span`,{className:`hidden md:inline-block`,children:`Docs`})]})})}),(0,K.jsx)(yc,{children:(0,K.jsx)(gc,{})}),(0,K.jsx)(yc,{children:(0,K.jsx)(bc,{asChild:!0,children:(0,K.jsxs)(V,{to:`/sign-in`,className:`flex-row items-center`,activeProps:Lc,children:[(0,K.jsx)(na,{}),` Sign In`]})})})]})})]})}function Vc({menuItems:e,accountMenu:t,user:n}){return(0,G.useMemo)(()=>Jn(n),[n]),(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)(Ns,{})}),(0,K.jsx)(Ec,{})]}),(0,K.jsx)(vc,{children:(0,K.jsxs)(xc,{className:`text-muted-foreground dark:text-grey-400`,children:[!1,e.map(e=>zc(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)(Hc,{menuItem:e},e.text))},e.text):(0,K.jsx)(Hc,{menuItem:e},e.text)),!1,(0,K.jsx)(yc,{children:t})]})})]})})}function Hc({menuItem:e}){return(0,K.jsx)(yc,{className:`text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,children:(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(bc,{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?Lc: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)(Tc,{side:`bottom`,className:`${e.textBreakpoint}:hidden`,children:e.text})]})})}function Uc({menuItems:e,accountMenu:t,user:n}){(0,G.useMemo)(()=>Jn(n),[n]);let[r,i]=(0,G.useState)(!1),a=(0,G.useCallback)(()=>i(e=>!e),[]),o=(0,G.useCallback)(()=>i(!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)(Ns,{})}),(0,K.jsx)(Ec,{}),(0,K.jsxs)(`div`,{className:`flex items-center`,children:[(0,K.jsx)(Ic,{}),!1,t,(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:a,children:[(0,K.jsx)(`span`,{className:`sr-only`,children:r?`Close menu`:`Open menu`}),r?(0,K.jsx)(Io,{}):(0,K.jsx)(ga,{})]})]})]}),(0,K.jsx)(`div`,{className:`${r?`fixed`:`hidden`} top-40 bottom-0 left-0 right-0 bg-foreground/20 dark:bg-black-dark dark:opacity-70`,onClick:o}),(0,K.jsx)(`div`,{className:`${r?`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:e.map(e=>zc(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)(Wc,{menuItem:e,onClick:o},e.text))},e.text):(0,K.jsx)(Wc,{menuItem:e,onClick:o},e.text))})]})}function Wc({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?Lc:void 0,children:[e.icon,(0,K.jsx)(`span`,{className:`ml-4`,children:e.text})]})}function Gc(){let{isLoading:e,user:t}=In(),{createCluster:n}=Te({strict:!1}),[,r]=Es(Pn.SavedClusterState,null);return(0,G.useEffect)(()=>{n&&r(n)},[n,r]),e?(0,K.jsx)(gs,{className:`fixed z-50 translate-1/2`}):(0,K.jsxs)(`div`,{className:`studio-shell`,children:[(0,K.jsx)(`header`,{className:`studio-shell-header fixed top-0 z-40 w-full h-20 p-4 md:px-12`,children:(0,K.jsx)(Rc,{})}),(0,K.jsx)(`main`,{children:(0,K.jsx)($e,{})})]})}function Kc(){let e=location.hash;return e?e.startsWith(`#/`)?e.slice(1):e:`/`}var qc=[`/`,`/forgot-password`,`/reset-password`,`/sign-in`,`/sign-up`,`/verify-email`];function Jc(){let e=Kc();return!qc.includes(e)&&{redirect:e}}var Yc=`me|email|token|access_token|id_token|refresh_token|code|secret|password|api[-_]?key`,Xc=String.raw`[^&#\s",<>[\]{}|\\]+`,Zc=String.raw`[\w.%+!~*'()-]+(?:@|%40)[\w-]+(?:\.[\w-]+)*\.\w{2,}`;new RegExp(String.raw`([?&](?:${Yc})=)${Xc}`,`gi`),new RegExp(String.raw`([?&](?:${Yc})=)${Xc}|${Zc}`,`gi`);var Qc=String.raw`[\w-]+-extension`;new RegExp(String.raw`^${Qc}://`),new RegExp(String.raw`^\s*at\s.* @ ((?:blob:)?(?:https?|${Qc})://\S*)\s*$`);function $c(e){return!!e}var el=!1;function tl(){(0,G.useEffect)(()=>{el||=!0},[])}function nl(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Be,{}),(0,K.jsx)($e,{})]})}var rl=De()({component:nl}),il=I({getParentRoute:()=>rl,id:`_dashboardLayout`,component:Gc,beforeLoad:({context:e})=>{let t=e.authentication[m];if(t&&!t.isLoading&&!t.user)throw Se({to:`/sign-in`,search:Jc()})}}),al=I({getParentRoute:()=>il,path:`admin`,component:hs});I({getParentRoute:()=>al,path:`/`,beforeLoad:()=>{throw Se({to:`/admin/notifications`})}}),I({getParentRoute:()=>al,path:`notifications`,head:()=>({meta:[{title:`Notifications — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./notifications-D1Nf-Edn.js`),__vite__mapDeps([5,1,6,7,2,3,4,8,9,10])),`NotificationsAdminIndex`)}),I({getParentRoute:()=>al,path:`regions`,head:()=>({meta:[{title:`Regions — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./regions-nGQCm-v8.js`),__vite__mapDeps([11,1,7,6,2,3,4,8,9,12,13])),`RegionsIndex`)}),I({getParentRoute:()=>al,path:`api-token`,head:()=>({meta:[{title:`API Token — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./apiToken-DC5vsaaO.js`),__vite__mapDeps([14,1,6,7,2,3,4,8,9])),`ApiTokenIndex`)});function ol(){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 sl={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`]},cl={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]]},ll=[{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 ul({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`})]}),cl[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))]}),sl[e].map((e,n)=>(0,K.jsx)(`path`,{className:`auth-energy-line`,d:e,mask:`url(#${t}-${n})`},e)),ll.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:sl[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 dl=[{title:`App`,description:`Build faster`,Icon:fr},{title:`Database`,description:`Store smarter`,Icon:ni},{title:`Cache`,description:`Move quicker`,Icon:Ro},{title:`Messaging`,description:`Stay connected`,Icon:ua}];function fl(){let e=ol();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)(Ns,{})}),(0,K.jsx)(Ec,{})]}),(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)(ur,{"aria-hidden":`true`}),` `,(0,K.jsx)(`span`,{children:`Docs`})]}),(0,K.jsx)(gc,{})]})]}),(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:dl.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)(ul,{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)($e,{})})]})]})}function pl(){(0,G.useEffect)(()=>{},[])}var ml=[`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 hl(e){if(!e||!e.includes(`@`))return null;let t=e.split(`@`).pop()||``;if(!t)return null;for(let e of ml)if(t===e||t.endsWith(`.`+e))return null;return t}var gl=`utm_`;function _l(e){let t=new URLSearchParams(e),n=Array.from(t.keys()).filter(e=>e.toLowerCase().startsWith(gl));if(n.length===0)return e;for(let e of n)t.delete(e);let r=t.toString();return r?`?${r}`:``}function vl(){if(typeof location>`u`||typeof history>`u`)return;let{search:e,pathname:t,hash:n,origin:r}=location,i=_l(e);i!==e&&history.replaceState(history.state,``,`${r}${t}${i}${n}`)}function yl({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 bl=null;function xl(){let e=L(),t=we(),n=Me(),{redirect:r}=Te({strict:!1});return(0,G.useEffect)(()=>{bl||=(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),vl();let a=Jn(i);hl(i.email),await n.invalidateQueries({queryKey:f,refetchType:`none`}),await t.invalidate(),await e({to:r?.startsWith(`/`)?r:a})}bl=null})()},[]),(0,K.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`auth-form flex flex-col gap-4`,children:[(0,K.jsx)(yl,{icon:Xi,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 Sl=new Map;function Cl(e){if(!e)return``;if(Sl.has(e))return Sl.get(e);let t=e.replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim();if(!t)return Sl.set(e,``),``;let n=t.match(/([A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+|[0-9]+)/g);if(!n)return Sl.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(wl).join(` `);return Sl.set(e,i),i}function wl(e){return/^[A-Z]{2,3}s?$/.test(e)||/^[0-9]+$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function Tl({restartRequired:e}){let t=ze(),{organization:n,instance:r,cluster:i}=Oe({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)(Pi,{"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=Cl(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)(Cc,{children:[(0,K.jsx)(wc,{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)(Tc,{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 El=cn,Dl=(0,G.createContext)({}),Ol=(0,G.createContext)({});function kl(){let e=(0,G.useContext)(Dl),t=(0,G.useContext)(Ol),{errors:n}=ln({name:e.name}),r=fn(n,e.name);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:i}=t;return{id:i,name:e.name,formItemId:`${i}-form-item`,formDescriptionId:`${i}-form-item-description`,formMessageId:`${i}-form-item-message`,error:r}}function J({...e}){let{error:t,formItemId:n,formDescriptionId:r,formMessageId:i}=kl();return(0,K.jsx)(Tn,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${r} ${i}`:`${r}`,"aria-invalid":!!t,...e})}function Y({...e}){return(0,K.jsx)(Dl,{value:{name:e.name},children:(0,K.jsx)(mn,{...e})})}function X({className:e,...t}){let n=(0,G.useId)();return(0,K.jsx)(Ol,{value:{id:n},children:(0,K.jsx)(`div`,{"data-slot":`form-item`,className:P(`grid gap-2`,e),...t})})}function Al({className:e,...t}){return(0,K.jsx)(Xt,{"data-slot":`label`,className:P(`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}=kl();return(0,K.jsx)(Al,{"data-slot":`form-label`,"data-error":!!n,className:P(`data-[error=true]:text-destructive`,e),htmlFor:r,...t})}function Q({className:e,...t}){let{error:n,formMessageId:r}=kl(),i=n?String(n?.message):t.children;return i?(0,K.jsx)(`p`,{"data-slot":`form-message`,id:r,className:P(`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:P(`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/SearchDialog-B7ymna97.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/vendor-datadog-ozKf-pts.js","assets/vendor-react-BOliS0BL.js","assets/vendor-tanstack-Bntfka-M.js","assets/notifications-BelKw5bR.js","assets/cn-6T8VranJ.js","assets/vendor-core-6LhfJlRC.js","assets/button-DWwfgGWI.js","assets/vendor-ui-9EYYDgoN.js","assets/alertDialog-BbWD9Xxa.js","assets/regions-C0sTSEHH.js","assets/chevron-up-CFxbMGv2.js","assets/createLucideIcon-fO5dL7D5.js","assets/apiToken-CE3AAt9f.js","assets/setup-D6LZS78d.js","assets/dist-BrRuMUzt.js","assets/register-DyNR2rGk.js","assets/register-DjpsE8to.css","assets/editor-myLCVv9C.js","assets/toggleHighContrast-pyeGJ6W1.js","assets/toggleHighContrast-n7clI0si.css","assets/index.lazy-DZFuaumG.js","assets/authStore-CJCaADw9.js","assets/restartGate-nHAFLDh-.js","assets/setSessionStorage-B0bf71m4.js","assets/safeParse-DeaoCCWH.js","assets/localStorageKeys-etzFY_xV.js","assets/useEntityRestURL-DNiz3aZ0.js","assets/tabs-BCTQzoQK.js","assets/applications-DdN7CqsB.js","assets/download-Cn6tPG4L.js","assets/setComponentFile-BkWx8AN3.js","assets/languageServices-Dz2K9rZN.js","assets/applications-DNZhsH95.css","assets/FloatingChat-kWHApEtF.js","assets/status-BCWnn70o.js","assets/arrow-up-D2g_57vT.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-C0FHjtdQ.js","assets/notifications--nwFLGmM.js","assets/profile-AU5FjOBx.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,x as g,y as _}from"./authStore-CJCaADw9.js";import{A as v,E as y,O as b,T as x,_ as S,b as C,d as w,g as T,i as E,o as D,p as O,r as k,s as A,t as ee,u as te,v as j,y as M}from"./vendor-core-6LhfJlRC.js";import{n as N,t as P}from"./cn-6T8VranJ.js";import{a as ne,c as re,d as ie,i as ae,l as oe,n as se,o as ce,r as le,s as ue,u as de}from"./restartGate-nHAFLDh-.js";import{a as fe,i as pe,t as me}from"./vendor-datadog-ozKf-pts.js";import{r as he,t as ge}from"./vendor-react-BOliS0BL.js";import{A as _e,B as F,C as I,D as L,E as ve,F as ye,G as be,H as xe,I as Se,J as Ce,L as R,M as we,O as Te,P as Ee,R as z,S as De,T as Oe,U as ke,V as Ae,W as je,Y as Me,_ as Ne,a as Pe,b as Fe,c as Ie,d as Le,f as Re,g as ze,h as Be,i as Ve,k as B,l as He,m as Ue,n as We,o as Ge,p as Ke,q as qe,r as Je,s as Ye,t as Xe,u as Ze,v as Qe,w as V,y as $e,z as et}from"./vendor-tanstack-Bntfka-M.js";import{t as tt}from"./safeParse-DeaoCCWH.js";import{n as nt,t as rt}from"./setSessionStorage-B0bf71m4.js";import{t as H}from"./button-DWwfgGWI.js";import{$ as it,A as at,At as ot,B as st,C as ct,Ct as lt,D as ut,Dt as dt,E as ft,Et as pt,F as mt,Ft as ht,G as gt,H as _t,I as vt,It as yt,J as bt,K as xt,L as St,Lt as Ct,M as wt,Mt as Tt,N as Et,Nt as Dt,O as Ot,Ot as kt,P as At,Pt as jt,Q as Mt,R as Nt,Rt as U,S as Pt,St as Ft,T as It,Tt as Lt,U as Rt,V as zt,W as Bt,X as Vt,Y as Ht,Z as Ut,_t as Wt,at as Gt,b as Kt,bt as qt,ct as Jt,dt as Yt,et as Xt,ft as Zt,gt as Qt,ht as $t,it as en,j as tn,jt as nn,k as rn,kt as an,lt as on,mt as sn,nt as cn,ot as ln,pt as un,q as dn,rt as fn,st as pn,tt as mn,ut as hn,v as gn,vt as _n,w as vn,wt as yn,x as bn,xt as xn,y as Sn,yt as Cn,z as wn,zt as Tn}from"./vendor-ui-9EYYDgoN.js";import{t as W}from"./createLucideIcon-fO5dL7D5.js";import{n as En,t as Dn}from"./arrow-up-D2g_57vT.js";import{n as On,r as kn,t as An}from"./chevron-up-CFxbMGv2.js";import{t as jn}from"./errorText-NpBmvk9I.js";import{n as Mn,r as Nn,t as Pn}from"./localStorageKeys-etzFY_xV.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(fe(),1);function Fn(){let[e,t]=(0,G.useState)(()=>({...u.getAllConnections()}));return(0,G.useEffect)(()=>u.listenToAllEntities((e,n)=>{t(t=>({...t,[n]:e}))}),[]),e}function In(){let e=u.calculateIdFromEntity(m),[t,n]=(0,G.useState)(u.getConnectionById(m));return(0,G.useEffect)(()=>u.listenToEntity(e,n),[e]),t}function Ln(){return In()}function Rn(e,t){return!e||!(`fabricRole`in e)?!1:e.staffPermissions?e.staffPermissions.includes(t):e.fabricRole===`fabric_admin`||e.fabricRole===`super_user`}function zn(e){let{user:t}=Ln();return Rn(t,e)}function Bn(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=he();function Vn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card`,className:P(`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 Hn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-header`,className:P(`flex flex-col gap-1.5 px-6`,e),...t})}function Un({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-title`,className:P(`leading-none text-lg`,e),...t})}function Wn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-description`,className:P(`text-muted-foreground text-xs`,e),...t})}function Gn({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`card-content`,className:P(`px-6`,e),...t})}function Kn(e){return e!==null&&!!e.username}function qn(e){if(!e||Kn(e))return[];let t=Rn(e,`org:read`);return Object.entries(e.roles??{}).map(([e,n])=>({id:e,name:n.organizationName||e,roleName:n.role??`fabric staff`,locked:`oauthProviders`in n&&!t,providers:n.oauthProviders??[]})).sort((e,t)=>e.name.localeCompare(t.name)||e.id.localeCompare(t.id))}function Jn(e){let t=qn(e);return t.length===1&&!t[0].locked?`/${t[0].id}`:`/`}var Yn={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`}]]};Yn.node;var Xn=W(Yn),Zn={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`}]]};Zn.node;var Qn=W(Zn),$n={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};$n.node;var er=W($n),tr={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};tr.node;var nr=W(tr),rr={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`}]]};rr.node;var ir=W(rr),ar={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`}]]};ar.node;var or=W(ar),sr={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`}]]};sr.node;var cr=W(sr),lr={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`}]]};lr.node;var ur=W(lr),dr={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`}]]};dr.node;var fr=W(dr),pr={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`}]]};pr.node;var mr=W(pr),hr={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`}]]};hr.node;var gr=W(hr),_r={name:`building-complex`,size:24,node:[[`path`,{d:`M10 12h4`,key:`a56b0p`}],[`path`,{d:`M10 8h4`,key:`1sr2af`}],[`path`,{d:`M14 21v-3a2 2 0 0 0-4 0v3`,key:`1rgiei`}],[`path`,{d:`M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2`,key:`secmi2`}],[`path`,{d:`M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16`,key:`16ra0t`}]],aliases:[`building-2`]};_r.node;var vr=W(_r),yr={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`}]]};yr.node;var br=W(yr),xr={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`]};xr.node;var Sr=W(xr),Cr={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`]};Cr.node;var wr=W(Cr),Tr={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]};Tr.node;var Er=W(Tr),Dr={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};Dr.node;var Or=W(Dr),kr={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`]};kr.node;var Ar=W(kr),jr={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`]};jr.node;var Mr=W(jr),Nr={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`]};Nr.node;var Pr=W(Nr),Fr={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`}]]};Fr.node;var Ir=W(Fr),Lr={name:`circle`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]};Lr.node;var Rr=W(Lr),zr={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`}]]};zr.node;var Br=W(zr),Vr={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`}]]};Vr.node;var Hr=W(Vr),Ur={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`}]]};Ur.node;var Wr=W(Ur),Gr={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`]};Gr.node;var Kr=W(Gr),qr={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`]};qr.node;var Jr=W(qr),Yr={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`]};Yr.node;var Xr=W(Yr),Zr={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`}]]};Zr.node;var Qr=W(Zr),$r={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`}]]};$r.node;var ei=W($r),ti={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`}]]};ti.node;var ni=W(ti),ri={name:`earth`,size:24,node:[[`path`,{d:`M21.54 15H17a2 2 0 0 0-2 2v4.54`,key:`1djwo0`}],[`path`,{d:`M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17`,key:`1tzkfa`}],[`path`,{d:`M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05`,key:`14pb5j`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],aliases:[`globe-2`]};ri.node;var ii=W(ri),ai={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`]};ai.node;var oi=W(ai),si={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`}]]};si.node;var ci=W(si),li={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`}]]};li.node;var ui=W(li),di={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`}]]};di.node;var fi=W(di),pi={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`}]]};pi.node;var mi=W(pi),hi={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`}]]};hi.node;var gi=W(hi),_i={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`]};_i.node;var vi=W(_i),yi={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`]};yi.node;var bi=W(yi),xi={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`}]]};xi.node;var Si=W(xi),Ci={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`}]]};Ci.node;var wi=W(Ci),Ti={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`}]]};Ti.node;var Ei=W(Ti),Di={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`}]]};Di.node;var Oi=W(Di),ki={name:`grip-horizontal`,size:24,node:[[`circle`,{cx:`12`,cy:`9`,r:`1`,key:`124mty`}],[`circle`,{cx:`19`,cy:`9`,r:`1`,key:`1ruzo2`}],[`circle`,{cx:`5`,cy:`9`,r:`1`,key:`1a8b28`}],[`circle`,{cx:`12`,cy:`15`,r:`1`,key:`1e56xg`}],[`circle`,{cx:`19`,cy:`15`,r:`1`,key:`1a92ep`}],[`circle`,{cx:`5`,cy:`15`,r:`1`,key:`5r1jwy`}]]};ki.node;var Ai=W(ki),ji={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`}]]};ji.node;var Mi=W(ji),Ni={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`]};Ni.node;var Pi=W(Ni),Fi={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`}]]};Fi.node;var Ii=W(Fi),Li={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`}]]};Li.node;var Ri=W(Li),zi={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`}]]};zi.node;var Bi=W(zi),Vi={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};Vi.node;var Hi=W(Vi),Ui={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`}]]};Ui.node;var Wi=W(Ui),Gi={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`}]]};Gi.node;var Ki=W(Gi),qi={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`}]]};qi.node;var Ji=W(qi),Yi={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};Yi.node;var Xi=W(Yi),Zi={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`}]]};Zi.node;var Qi=W(Zi),$i={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`}]]};$i.node;var ea=W($i),ta={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`}]]};ta.node;var na=W(ta),ra={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`}]]};ra.node;var ia=W(ra),aa={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`}]]};aa.node;var oa=W(aa),sa={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`}]]};sa.node;var ca=W(sa),la={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`}]]};la.node;var ua=W(la),da={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`}]]};da.node;var fa=W(da),pa={name:`maximize`,size:24,node:[[`path`,{d:`M8 3H5a2 2 0 0 0-2 2v3`,key:`1dcmit`}],[`path`,{d:`M21 8V5a2 2 0 0 0-2-2h-3`,key:`1e4gt3`}],[`path`,{d:`M3 16v3a2 2 0 0 0 2 2h3`,key:`wsl5sc`}],[`path`,{d:`M16 21h3a2 2 0 0 0 2-2v-3`,key:`18trek`}]]};pa.node;var ma=W(pa),ha={name:`menu`,size:24,node:[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]};ha.node;var ga=W(ha),_a={name:`minimize`,size:24,node:[[`path`,{d:`M8 3v3a2 2 0 0 1-2 2H3`,key:`hohbtr`}],[`path`,{d:`M21 8h-3a2 2 0 0 1-2-2V3`,key:`5jw1f3`}],[`path`,{d:`M3 16h3a2 2 0 0 1 2 2v3`,key:`198tvr`}],[`path`,{d:`M16 21v-3a2 2 0 0 1 2-2h3`,key:`ph8mxp`}]]};_a.node;var va=W(_a),ya={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`}]]};ya.node;var ba=W(ya),xa={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`}]]};xa.node;var Sa=W(xa),Ca={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`}]]};Ca.node;var wa=W(Ca),Ta={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`]};Ta.node;var Ea=W(Ta),Da={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`}]]};Da.node;var Oa=W(Da),ka={name:`palette`,size:24,node:[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]};ka.node;var Aa=W(ka),ja={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`}]]};ja.node;var Ma=W(ja),Na={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`}]]};Na.node;var Pa=W(Na),Fa={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};Fa.node;var Ia=W(Fa),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 Ra=W(La),za={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`}]]};za.node;var Ba=W(za),Va={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`}]]};Va.node;var Ha=W(Va),Ua={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`}]]};Ua.node;var Wa=W(Ua),Ga={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`}]]};Ga.node;var Ka=W(Ga),qa={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`}]]};qa.node;var Ja=W(qa),Ya={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};Ya.node;var Xa=W(Ya),Za={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`}]]};Za.node;var Qa=W(Za),$a={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`}]]};$a.node;var eo=W($a),to={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`}]]};to.node;var no=W(to),ro={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`]};ro.node;var io=W(ro),ao={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`}]]};ao.node,W(ao);var oo={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`}]]};oo.node;var so=W(oo),co={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`]};co.node;var lo=W(co),uo={name:`square`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]};uo.node;var fo=W(uo),po={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`}]]};po.node;var mo=W(po),ho={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`}]]};ho.node;var go=W(ho),_o={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`}]]};_o.node;var vo=W(_o),yo={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`}]]};yo.node;var bo=W(yo),xo={name:`terminal`,size:24,node:[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]};xo.node;var So=W(xo),Co={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`}]]};Co.node;var wo=W(Co),To={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`]};To.node;var Eo=W(To),Do={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`]};Do.node;var Oo=W(Do),ko={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`}]]};ko.node;var Ao=W(ko),jo={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`]};jo.node;var Mo=W(jo),No={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`}]]};No.node;var Po=W(No),Fo={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};Fo.node;var Io=W(Fo),Lo={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`}]]};Lo.node;var Ro=W(Lo),zo=`An unexpected error occurred.`;function Bo(e){return typeof e==`string`?e.length>0:typeof e==`number`||(0,G.isValidElement)(e)?!0:Array.isArray(e)?e.length>0&&e.every(Bo):!1}function Vo(e){if(e instanceof Error)return e.message.length>0?e.message:zo;if(typeof e==`object`&&e&&`message`in e){let t=e.message;return Bo(t)?t:zo}return Bo(e)?e:zo}function Ho({className:e,error:t,title:n,showReturnToHome:r,children:i}){let{user:a,isLoading:o}=In();Jn(a);let s=Vo(t);return(0,K.jsxs)(Vn,{className:P(`text-red p-5 border border-red rounded-md m-12 mt-36`,e),children:[(0,K.jsxs)(Hn,{children:[(0,K.jsx)(Un,{className:`text-2xl`,children:(0,K.jsx)(`h2`,{children:n??`Component Error`})}),(0,K.jsx)(Wn,{children:s})]}),(0,K.jsxs)(Gn,{children:[i,r!==!1&&(a&&!o?(0,K.jsx)(V,{to:`/`,children:(0,K.jsxs)(H,{children:[` `,(0,K.jsx)(er,{}),` Return to Home`]})}):(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsxs)(H,{children:[` `,(0,K.jsx)(er,{}),` Go to Sign In Page`]})}))]})]})}function Uo(){let{user:e,isLoading:t}=In();return Jn(e),(0,K.jsx)(`div`,{className:`flex items-center justify-center h-screen px-3`,children:(0,K.jsxs)(Vn,{className:`text-red p-5 border border-red rounded-md w-full max-w-md`,children:[(0,K.jsx)(Hn,{children:(0,K.jsx)(Un,{className:`text-2xl`,children:(0,K.jsx)(`h2`,{children:`Sorry, Page Not Found`})})}),(0,K.jsx)(Gn,{children:e&&!t?(0,K.jsx)(V,{to:`/`,children:(0,K.jsxs)(H,{children:[` `,(0,K.jsx)(er,{}),` Return to Home`]})}):(0,K.jsx)(V,{to:`/sign-in`,children:(0,K.jsxs)(H,{children:[` `,(0,K.jsx)(er,{}),` Go Sign In Page`]})})})]})})}function Wo(){return`ontouchstart`in window||navigator.maxTouchPoints>0}function Go(e,t,n,r){return t===void 0?Promise.resolve():e.invalidateQueries({predicate:e=>e.queryKey[0]===t||e.queryKey[1]===t,...n},r)}function Ko(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=jn(e.detail);n=i?`${e.title}: ${i}`:e.title,r=!1}else n=jn(e.error)??jn(e.message)??n}else n=jn(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 qo(e){console.error(e);let{title:t,description:n}=Ko(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 Jo=new xe({queryCache:new ke({onError:(e,t)=>{if(se(e,t.queryKey)){console.debug(`Suppressed a failure from a restarting entity`,e);return}if(t.meta?.inlineSearchError&&t.getObserversCount()===0){console.error(e);return}qo(e)}}),mutationCache:new je({onError:(e,t,n,r)=>{r.meta?.skipGlobalErrorToast||qo(e)}})});oe(e=>void Go(Jo,e,void 0,{cancelRefetch:!1}));function Yo({...e}){return(0,K.jsx)(nn,{"data-slot":`dropdown-menu`,...e})}function Xo({...e}){return(0,K.jsx)(yt,{"data-slot":`dropdown-menu-trigger`,...e})}function Zo({className:e,sideOffset:t=4,...n}){return(0,K.jsx)(kt,{children:(0,K.jsx)(yn,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:P(`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 Qo({className:e,inset:t,variant:n=`default`,...r}){return(0,K.jsx)(Lt,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:P(`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 $o({className:e,children:t,checked:n,...r}){return(0,K.jsxs)(lt,{"data-slot":`dropdown-menu-checkbox-item`,className:P(`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)(pt,{children:(0,K.jsx)(kn,{className:`size-4`})})}),t]})}function es({...e}){return(0,K.jsx)(an,{"data-slot":`dropdown-menu-radio-group`,...e})}function ts({className:e,children:t,...n}){return(0,K.jsxs)(ot,{"data-slot":`dropdown-menu-radio-item`,className:P(`focus:bg-accent focus:text-accent-foreground relative flex cursor-default 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),...n,children:[(0,K.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,K.jsx)(pt,{children:(0,K.jsx)(Rr,{className:`size-2 fill-current`})})}),t]})}function ns({className:e,inset:t,...n}){return(0,K.jsx)(dt,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:P(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function rs({className:e,...t}){return(0,K.jsx)(Tt,{"data-slot":`dropdown-menu-separator`,className:P(`bg-border -mx-1 my-1 h-px`,e),...t})}function is({className:e,...t}){return(0,K.jsx)(`span`,{"data-slot":`dropdown-menu-shortcut`,className:P(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}function as({...e}){return(0,K.jsx)(Dt,{"data-slot":`dropdown-menu-sub`,...e})}function os({className:e,inset:t,children:n,...r}){return(0,K.jsxs)(ht,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":t,className:P(`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)(Or,{className:`ml-auto size-4`})]})}function ss({className:e,...t}){return(0,K.jsx)(jt,{"data-slot":`dropdown-menu-sub-content`,className:P(`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 cs=`flex items-center gap-3 p-2 rounded-lg text-sm transition-colors`,ls=`block p-2 rounded-lg text-sm transition-colors`,us={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-grey-700`},ds={className:`font-medium text-primary bg-primary/10 dark:text-white dark:bg-white/10`};function fs({items:e,ariaLabel:t}){let{pathname:n}=ze(),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:`studio-section-rail 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:cs,activeOptions:{exact:!!e.exact},activeProps:ds,inactiveProps:us,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:ls,activeOptions:{exact:!!e.exact},activeProps:ds,inactiveProps:us,children:e.label},e.to))})]},e.to)})}),(0,K.jsx)(`div`,{className:`md:hidden`,children:(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsxs)(H,{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)(On,{className:`size-4`})]})}),(0,K.jsx)(Zo,{align:`start`,className:`w-(--radix-dropdown-menu-trigger-width)`,children:e.map(e=>{let t=e.icon;return[(0,K.jsx)(Qo,{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)(Qo,{asChild:!0,children:(0,K.jsx)(V,{to:e.to,className:`flex items-center gap-2 pl-8`,children:e.label})},e.to)):[]]})})]})})]})}var ps=[{to:`/admin/notifications`,label:`Notifications`,icon:cr,permission:`systemStatus:write`},{to:`/admin/regions`,label:`Regions`,icon:Ei,permission:`region:read`},{to:`/admin/api-token`,label:`API Token`,icon:Ri,permission:`apiToken:create`,ssoAccountOnly:!0}];function ms(e){let t=e!==null&&`fabricRole`in e&&e.fabricRole===`super_user`;return ps.filter(n=>Rn(e,n.permission)&&!(n.ssoAccountOnly&&t))}function hs(){let{isLoading:e,user:t}=Ln(),{pathname:n}=ze();if(e)return null;let r=ms(t);if(!r.length)return(0,K.jsx)(ve,{to:`/`,replace:!0});let i=ps.find(e=>n.startsWith(e.to));return i&&!r.includes(i)?(0,K.jsx)(ve,{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)(fs,{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)($e,{})})]})})}function gs({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 _s(e){return e?.response?.status??e?.status}function vs(e){return _s(e)===403}function ys(e){let t=_s(e);return t===400||t===403}function bs(e){return t=>vs(t.state.error)?!1:e??!1}function xs(e=3){return(t,n)=>!ys(n)&&t<e}function Ss(e){return!!e&&e!==`undefined`&&e!==`null`}async function Cs(e){if(!Ss(e))throw Error(`getOrganization called without a valid organization id (got: ${e})`);let{data:t}=await N.get(`/Organization/${e}`);return t}function ws(e){return z({queryKey:[e],queryFn:()=>Cs(e),retry:!1,enabled:Ss(e),refetchInterval:bs(1e4)})}function Ts(){let{user:e}=Ln(),{organizationId:t}=B({strict:!1});(0,G.useMemo)(()=>qn(e),[e]);let{data:n}=F({...ws(t),enabled:!1});return null}function Es(e,t){let n=(0,G.useState)(Nn(e,t)),[r]=n;return(0,G.useEffect)(()=>Mn(e,r),[e,r]),n}function Ds(){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 Os=(0,G.createContext)([`system`,()=>{}]);function ks({children:e}){let[t,n]=Es(Pn.Theme,`system`),r=Ds();return(0,G.useEffect)(()=>{let e=t===`dark`||t===`system`&&r===`dark`;document.documentElement.classList.toggle(`dark`,e)},[t,r]),(0,K.jsx)(Os.Provider,{value:[t,n],children:e})}function As(){return(0,G.useContext)(Os)}function js({user:e,onSignOut:t,signingOut:n}){let[r,i]=As(),{organizationId:a}=B({strict:!1}),o=Kn(e)?e.username:[e.firstname,e.lastname].filter(Boolean).join(` `)||e.email,s=o.trim().split(/\s+/).slice(0,2).map(e=>e[0]).join(``).toUpperCase();return(0,G.useMemo)(()=>qn(e).some(e=>!e.locked&&e.id!==a),[e,a]),(0,K.jsxs)(Yo,{children:[(0,K.jsxs)(Xo,{"aria-label":`Account menu`,className:`ml-2 inline-flex items-center gap-2 rounded-full border border-primary/25 bg-card/50 p-1 pr-2 text-foreground hover:bg-primary/15 focus-visible:outline-2 focus-visible:outline-ring`,children:[(0,K.jsx)(`span`,{className:`flex size-8 items-center justify-center rounded-full bg-primary/15 text-xs font-semibold text-primary dark:text-violet-200`,children:s||(0,K.jsx)(Mo,{className:`size-4`})}),(0,K.jsx)(On,{className:`size-3.5`,"aria-hidden":`true`})]}),(0,K.jsxs)(Zo,{align:`end`,className:`w-64`,children:[(0,K.jsx)(ns,{className:`truncate`,title:o,children:o}),!Kn(e)&&o!==e.email&&(0,K.jsx)(`p`,{className:`truncate px-2 pb-2 text-xs text-muted-foreground`,title:e.email,children:e.email}),(0,K.jsx)(rs,{}),!1,(0,K.jsxs)(as,{children:[(0,K.jsxs)(os,{children:[(0,K.jsx)(Aa,{className:`size-4`}),`Appearance`]}),(0,K.jsx)(ss,{children:(0,K.jsxs)(es,{value:r,onValueChange:e=>{(e===`light`||e===`dark`||e===`system`)&&i(e)},children:[(0,K.jsx)(ts,{value:`light`,children:`Light`}),(0,K.jsx)(ts,{value:`system`,children:`System`}),(0,K.jsx)(ts,{value:`dark`,children:`Dark`})]})})]}),(0,K.jsx)(rs,{}),(0,K.jsxs)(Qo,{disabled:n,onSelect:t,children:[(0,K.jsx)(ia,{className:`size-4`}),n?`Signing out…`:`Sign Out`]})]})]})}function Ms(){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 Ns(){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 Ps=x(`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 Fs({className:e,variant:t,asChild:n=!1,...r}){return(0,K.jsx)(n?Tn:`span`,{"data-slot":`badge`,className:P(Ps({variant:t}),e),...r})}function Is({className:e,children:t,...n}){return(0,K.jsxs)(Cn,{"data-slot":`scroll-area`,className:P(`relative`,e),...n,children:[(0,K.jsx)(Ft,{"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)(Ls,{}),(0,K.jsx)(_n,{})]})}function Ls({className:e,orientation:t=`vertical`,...n}){return(0,K.jsx)(qt,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:P(`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)(xn,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}var Rs=[`notification-acks`];function zs(){let e=Nn(Pn.AckedNotificationIds,[]);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function Bs(e){Jo.setQueryData(Rs,e);try{Mn(Pn.AckedNotificationIds,e)}catch(e){console.warn(`[notifications] could not persist acknowledgements`,e)}}function Vs(){return z({queryKey:Rs,queryFn:zs,staleTime:1/0,gcTime:1/0,initialData:zs})}function Hs(e){Bs(Array.from(new Set([...zs(),e])))}function Us(e){Bs(zs().filter(t=>t!==e))}function Ws(){let{data:e}=F(Vs());return(0,G.useMemo)(()=>new Set(e??[]),[e])}var Gs={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:Oo,badgeVariant:`warning`,bannerClass:`bg-yellow/10 border-yellow/40 text-foreground`,iconClass:`text-yellow`},info:{severity:`info`,label:`Info`,Icon:Ii,badgeVariant:`secondary`,bannerClass:`bg-secondary/20 border-secondary/50 text-foreground`,iconClass:`text-secondary-foreground`}},Ks=new Set([`critical`,`error`,`outage`,`incident`,`down`,`danger`]),qs=new Set([`warning`,`warn`,`maintenance`,`degraded`,`notice`]),Js=new Set([`info`,`information`,`informational`,`success`,`ok`]);function Ys(e){let t=(e??``).trim().toLowerCase();return qs.has(t)?`warning`:Js.has(t)?`info`:(Ks.has(t),`critical`)}function Xs(e){return Gs[Ys(e)]}var Zs={critical:0,warning:1,info:2};function Qs(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 $s(e){let t=Qs(e);return t.kind===`valid`?t.ms:null}function ec(e){return new Date(e).toLocaleString()}function tc(e,t){let n=Qs(e.startAt),r=Qs(e.endAt);return n.kind===`invalid`||r.kind===`invalid`?{state:`expired`,label:`Schedule unavailable`}:n.kind===`valid`&&t<n.ms?{state:`upcoming`,label:`Starts ${ec(n.ms)}`}:r.kind===`valid`&&t>r.ms?{state:`expired`,label:`Ended ${ec(r.ms)}`}:r.kind===`valid`?{state:`active`,label:`Active until ${ec(r.ms)}`}:{state:`active`,label:`Active`}}var nc=new Set([`http`,`https`,`mailto`]);function rc(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?nc.has(n)?{kind:`external`,href:t}:null:{kind:`internal`,href:t.startsWith(`/`)?t:`/${t}`}}function ic({url:e,className:t,children:n,onNavigate:r}){let i=rc(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)(ci,{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 ac=[`system-status`];async function oc(){let{data:e}=await N.get(`/SystemStatus/`);return Array.isArray(e)?e:[]}function sc(){return z({queryKey:ac,queryFn:oc,refetchInterval:6e4,staleTime:3e4})}var cc=3e4,lc=new Set,uc=Date.now(),dc=null;function fc(e){return lc.add(e),dc||=(uc=Date.now(),setInterval(()=>{uc=Date.now(),lc.forEach(e=>e())},cc)),()=>{lc.delete(e),lc.size===0&&dc&&(clearInterval(dc),dc=null)}}function pc(){return(0,G.useSyncExternalStore)(fc,()=>uc,()=>uc)}function mc(){return F(sc())}var hc=[{value:`light`,icon:(0,K.jsx)(mo,{className:`size-4`}),label:`Light`},{value:`system`,icon:(0,K.jsx)(ba,{className:`size-4`}),label:`System`},{value:`dark`,icon:(0,K.jsx)(Sa,{className:`size-4`}),label:`Dark`}];function gc(){let[e,t]=As();return(0,K.jsx)(`div`,{className:`flex items-center bg-muted dark:bg-black rounded-xl p-0.5 gap-0.5`,children:hc.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 _c({className:e,...t}){return(0,K.jsx)(`div`,{className:P(`absolute top-full left-0 isolate z-50 flex justify-center`),children:(0,K.jsx)(Wt,{"data-slot":`navigation-menu-viewport`,className:P(`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 vc({className:e,children:t,viewport:n=!0,...r}){return(0,K.jsxs)(Qt,{"data-slot":`navigation-menu`,"data-viewport":n,className:P(`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,e),...r,children:[t,n&&(0,K.jsx)(_c,{})]})}function yc({className:e,...t}){return(0,K.jsx)(un,{"data-slot":`navigation-menu-item`,className:P(`relative`,e),...t})}function bc({className:e,...t}){return(0,K.jsx)(sn,{"data-slot":`navigation-menu-link`,className:P(`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 xc({className:e,...t}){return(0,K.jsx)($t,{"data-slot":`navigation-menu-list`,className:P(`group flex flex-1 list-none items-center justify-center gap-1`,e),...t})}function Sc({delayDuration:e=0,...t}){return(0,K.jsx)(hn,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function Cc({...e}){return(0,K.jsx)(Sc,{children:(0,K.jsx)(Yt,{"data-slot":`tooltip`,...e})})}function wc({...e}){return(0,K.jsx)(Zt,{"data-slot":`tooltip-trigger`,...e})}function Tc({className:e,sideOffset:t=0,arrowClassName:n,children:r,...i}){return(0,K.jsx)(on,{children:(0,K.jsxs)(Jt,{"data-slot":`tooltip-content`,sideOffset:t,className:P(`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)(pn,{className:P(`bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`,n)})]})})}function Ec(){let e=`v5.3.1`,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:P(Ps({variant:`default`}),`text-xs inline-block ml-2 align-text-top`),children:[e,` BETA`]})})}function Dc(e={}){let{instanceId:t,clusterId:r}=B({strict:!1});return n({id:m,...e})}function Oc(e={}){let{instanceId:t,clusterId:r}=B({strict:!1});return{instanceClient:n({id:m,...e}),entityType:`instance`}}function q(e={}){let{instanceId:t,clusterId:n}=B({strict:!1});return(0,G.useMemo)(()=>kc({instanceId:t,clusterId:n,...e}),[e.instanceId??t,e.clusterId??n,e.operationsUrl,e.port,e.secure,e.disableFabricConnect,e.forceFabricConnect])}function kc({instanceId:e,clusterId:t,...r}){let i=m;if(!i)throw Error(`id could not be automatically calculated in useInstanceClientIdParams`);return{instanceClient:n({id:i,...r}),entityId:i,entityType:`instance`}}function Ac(){localStorage.clear()}function jc(){sessionStorage.clear()}async function Mc(){u.setUserForEntity(m,null),Jo.getQueryCache().clear(),Ac(),jc(),await Jo.invalidateQueries({refetchType:`none`})}async function Nc(e){await u.signOutFromPotentiallyAuthenticatedInstances(),await d({...e,entityId:m})}function Pc(){let e=Dc();return R({mutationFn:()=>Nc({instanceClient:e}),onSuccess:Mc})}(0,G.lazy)(()=>pe(()=>import(`./SearchDialog-B7ymna97.js`).then(e=>({default:e.SearchDialog})),__vite__mapDeps([0,1,2,3,4])));var Fc=(0,G.createContext)(null);function Ic(){let e=(0,G.useContext)(Fc);return e?(0,K.jsxs)(`button`,{type:`button`,onClick:e,"aria-label":`Search organizations and clusters`,className:`inline-flex cursor-pointer items-center gap-2 rounded-lg border border-primary/20 bg-card/30 p-2 text-sm text-muted-foreground hover:bg-primary/15 hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,children:[(0,K.jsx)(Xa,{className:`size-4`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`hidden lg:inline`,children:`Search`}),(0,K.jsx)(`kbd`,{className:`hidden xl:inline rounded border border-border px-1 text-xs`,children:`⌘ / Ctrl K`})]}):null}var Lc={className:`text-foreground dark:text-white font-semibold`};function Rc(){let{mutate:e,isPending:t}=Pc(),n=L(),{user:r}=In(),i=we(),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()}}),n({to:`/sign-in`}),i.invalidate()}})},[e,i,n]),o=(0,G.useMemo)(()=>[{to:`https://docs.harperdb.io/docs`,target:`_blank`,icon:(0,K.jsx)(ur,{}),text:`Docs`,textBreakpoint:`md`},{to:`https://github.com/HarperFast/studio/issues`,target:`_blank`,icon:(0,K.jsx)(gr,{}),text:`Report an Issue`,textBreakpoint:`lg`},{to:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,icon:(0,K.jsx)(Ms,{}),text:`Discord`,textBreakpoint:`lg`}],[]);return r?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Uc,{menuItems:o,user:r,accountMenu:(0,K.jsx)(js,{user:r,onSignOut:a,signingOut:t})}),(0,K.jsx)(Vc,{menuItems:o,user:r,accountMenu:(0,K.jsx)(js,{user:r,onSignOut:a,signingOut:t})})]}):(0,K.jsx)(Bc,{})}function zc(e){return e.items!==void 0}function Bc(){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)(Ns,{})}),(0,K.jsx)(Ec,{})]}),(0,K.jsx)(vc,{children:(0,K.jsxs)(xc,{className:`text-muted-foreground dark:text-grey-400`,children:[(0,K.jsx)(yc,{children:(0,K.jsx)(bc,{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)(ur,{}),` `,(0,K.jsx)(`span`,{className:`hidden md:inline-block`,children:`Docs`})]})})}),(0,K.jsx)(yc,{children:(0,K.jsx)(gc,{})}),(0,K.jsx)(yc,{children:(0,K.jsx)(bc,{asChild:!0,children:(0,K.jsxs)(V,{to:`/sign-in`,className:`flex-row items-center`,activeProps:Lc,children:[(0,K.jsx)(na,{}),` Sign In`]})})})]})})]})}function Vc({menuItems:e,accountMenu:t,user:n}){return(0,G.useMemo)(()=>Jn(n),[n]),(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)(Ns,{})}),(0,K.jsx)(Ec,{})]}),(0,K.jsx)(vc,{children:(0,K.jsxs)(xc,{className:`text-muted-foreground dark:text-grey-400`,children:[!1,e.map(e=>zc(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)(Hc,{menuItem:e},e.text))},e.text):(0,K.jsx)(Hc,{menuItem:e},e.text)),!1,(0,K.jsx)(yc,{children:t})]})})]})})}function Hc({menuItem:e}){return(0,K.jsx)(yc,{className:`text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,children:(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(bc,{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?Lc: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)(Tc,{side:`bottom`,className:`${e.textBreakpoint}:hidden`,children:e.text})]})})}function Uc({menuItems:e,accountMenu:t,user:n}){(0,G.useMemo)(()=>Jn(n),[n]);let[r,i]=(0,G.useState)(!1),a=(0,G.useCallback)(()=>i(e=>!e),[]),o=(0,G.useCallback)(()=>i(!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)(Ns,{})}),(0,K.jsx)(Ec,{}),(0,K.jsxs)(`div`,{className:`flex items-center`,children:[(0,K.jsx)(Ic,{}),!1,t,(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:a,children:[(0,K.jsx)(`span`,{className:`sr-only`,children:r?`Close menu`:`Open menu`}),r?(0,K.jsx)(Io,{}):(0,K.jsx)(ga,{})]})]})]}),(0,K.jsx)(`div`,{className:`${r?`fixed`:`hidden`} top-40 bottom-0 left-0 right-0 bg-foreground/20 dark:bg-black-dark dark:opacity-70`,onClick:o}),(0,K.jsx)(`div`,{className:`${r?`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:e.map(e=>zc(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)(Wc,{menuItem:e,onClick:o},e.text))},e.text):(0,K.jsx)(Wc,{menuItem:e,onClick:o},e.text))})]})}function Wc({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?Lc:void 0,children:[e.icon,(0,K.jsx)(`span`,{className:`ml-4`,children:e.text})]})}function Gc(){let{isLoading:e,user:t}=In(),{createCluster:n}=Te({strict:!1}),[,r]=Es(Pn.SavedClusterState,null);return(0,G.useEffect)(()=>{n&&r(n)},[n,r]),e?(0,K.jsx)(gs,{className:`fixed z-50 translate-1/2`}):(0,K.jsxs)(`div`,{className:`studio-shell`,children:[(0,K.jsx)(`header`,{className:`studio-shell-header fixed top-0 z-40 w-full h-20 p-4 md:px-12`,children:(0,K.jsx)(Rc,{})}),(0,K.jsx)(`main`,{children:(0,K.jsx)($e,{})})]})}function Kc(){let e=location.hash;return e?e.startsWith(`#/`)?e.slice(1):e:`/`}var qc=[`/`,`/forgot-password`,`/reset-password`,`/sign-in`,`/sign-up`,`/verify-email`];function Jc(){let e=Kc();return!qc.includes(e)&&{redirect:e}}var Yc=`me|email|token|access_token|id_token|refresh_token|code|secret|password|api[-_]?key`,Xc=String.raw`[^&#\s",<>[\]{}|\\]+`,Zc=String.raw`[\w.%+!~*'()-]+(?:@|%40)[\w-]+(?:\.[\w-]+)*\.\w{2,}`;new RegExp(String.raw`([?&](?:${Yc})=)${Xc}`,`gi`),new RegExp(String.raw`([?&](?:${Yc})=)${Xc}|${Zc}`,`gi`);var Qc=String.raw`[\w-]+-extension`;new RegExp(String.raw`^${Qc}://`),new RegExp(String.raw`^\s*at\s.* @ ((?:blob:)?(?:https?|${Qc})://\S*)\s*$`);function $c(e){return!!e}var el=!1;function tl(){(0,G.useEffect)(()=>{el||=!0},[])}function nl(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Be,{}),(0,K.jsx)($e,{})]})}var rl=De()({component:nl}),il=I({getParentRoute:()=>rl,id:`_dashboardLayout`,component:Gc,beforeLoad:({context:e})=>{let t=e.authentication[m];if(t&&!t.isLoading&&!t.user)throw Se({to:`/sign-in`,search:Jc()})}}),al=I({getParentRoute:()=>il,path:`admin`,component:hs});I({getParentRoute:()=>al,path:`/`,beforeLoad:()=>{throw Se({to:`/admin/notifications`})}}),I({getParentRoute:()=>al,path:`notifications`,head:()=>({meta:[{title:`Notifications — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./notifications-BelKw5bR.js`),__vite__mapDeps([5,1,6,7,2,3,4,8,9,10])),`NotificationsAdminIndex`)}),I({getParentRoute:()=>al,path:`regions`,head:()=>({meta:[{title:`Regions — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./regions-C0sTSEHH.js`),__vite__mapDeps([11,1,7,6,2,3,4,8,9,12,13])),`RegionsIndex`)}),I({getParentRoute:()=>al,path:`api-token`,head:()=>({meta:[{title:`API Token — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./apiToken-CE3AAt9f.js`),__vite__mapDeps([14,1,6,7,2,3,4,8,9])),`ApiTokenIndex`)});function ol(){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 sl={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`]},cl={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]]},ll=[{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 ul({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`})]}),cl[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))]}),sl[e].map((e,n)=>(0,K.jsx)(`path`,{className:`auth-energy-line`,d:e,mask:`url(#${t}-${n})`},e)),ll.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:sl[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 dl=[{title:`App`,description:`Build faster`,Icon:fr},{title:`Database`,description:`Store smarter`,Icon:ni},{title:`Cache`,description:`Move quicker`,Icon:Ro},{title:`Messaging`,description:`Stay connected`,Icon:ua}];function fl(){let e=ol();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)(Ns,{})}),(0,K.jsx)(Ec,{})]}),(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)(ur,{"aria-hidden":`true`}),` `,(0,K.jsx)(`span`,{children:`Docs`})]}),(0,K.jsx)(gc,{})]})]}),(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:dl.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)(ul,{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)($e,{})})]})]})}function pl(){(0,G.useEffect)(()=>{},[])}var ml=[`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 hl(e){if(!e||!e.includes(`@`))return null;let t=e.split(`@`).pop()||``;if(!t)return null;for(let e of ml)if(t===e||t.endsWith(`.`+e))return null;return t}var gl=`utm_`;function _l(e){let t=new URLSearchParams(e),n=Array.from(t.keys()).filter(e=>e.toLowerCase().startsWith(gl));if(n.length===0)return e;for(let e of n)t.delete(e);let r=t.toString();return r?`?${r}`:``}function vl(){if(typeof location>`u`||typeof history>`u`)return;let{search:e,pathname:t,hash:n,origin:r}=location,i=_l(e);i!==e&&history.replaceState(history.state,``,`${r}${t}${i}${n}`)}function yl({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 bl=null;function xl(){let e=L(),t=we(),n=Me(),{redirect:r}=Te({strict:!1});return(0,G.useEffect)(()=>{bl||=(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),vl();let a=Jn(i);hl(i.email),await n.invalidateQueries({queryKey:f,refetchType:`none`}),await t.invalidate(),await e({to:r?.startsWith(`/`)?r:a})}bl=null})()},[]),(0,K.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`auth-form flex flex-col gap-4`,children:[(0,K.jsx)(yl,{icon:Xi,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 Sl=new Map;function Cl(e){if(!e)return``;if(Sl.has(e))return Sl.get(e);let t=e.replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim();if(!t)return Sl.set(e,``),``;let n=t.match(/([A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+|[0-9]+)/g);if(!n)return Sl.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(wl).join(` `);return Sl.set(e,i),i}function wl(e){return/^[A-Z]{2,3}s?$/.test(e)||/^[0-9]+$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function Tl({restartRequired:e}){let t=ze(),{organization:n,instance:r,cluster:i}=Oe({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)(Pi,{"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=Cl(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)(Cc,{children:[(0,K.jsx)(wc,{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)(Tc,{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 El=cn,Dl=(0,G.createContext)({}),Ol=(0,G.createContext)({});function kl(){let e=(0,G.useContext)(Dl),t=(0,G.useContext)(Ol),{errors:n}=ln({name:e.name}),r=fn(n,e.name);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:i}=t;return{id:i,name:e.name,formItemId:`${i}-form-item`,formDescriptionId:`${i}-form-item-description`,formMessageId:`${i}-form-item-message`,error:r}}function J({...e}){let{error:t,formItemId:n,formDescriptionId:r,formMessageId:i}=kl();return(0,K.jsx)(Tn,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${r} ${i}`:`${r}`,"aria-invalid":!!t,...e})}function Y({...e}){return(0,K.jsx)(Dl,{value:{name:e.name},children:(0,K.jsx)(mn,{...e})})}function X({className:e,...t}){let n=(0,G.useId)();return(0,K.jsx)(Ol,{value:{id:n},children:(0,K.jsx)(`div`,{"data-slot":`form-item`,className:P(`grid gap-2`,e),...t})})}function Al({className:e,...t}){return(0,K.jsx)(Xt,{"data-slot":`label`,className:P(`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}=kl();return(0,K.jsx)(Al,{"data-slot":`form-label`,"data-error":!!n,className:P(`data-[error=true]:text-destructive`,e),htmlFor:r,...t})}function Q({className:e,...t}){let{error:n,formMessageId:r}=kl(),i=n?String(n?.message):t.children;return i?(0,K.jsx)(`p`,{"data-slot":`form-message`,id:r,className:P(`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:P(`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
@@ -7,9 +7,9 @@ import{i as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{_ as n,a as r,b as i
7
7
  flex h-9 w-full min-w-0 rounded-md border bg-white text-foreground dark:bg-grey-700 dark:text-white px-3 py-1 text-base
8
8
  file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium
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
- 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 jl=[`RUNNING`],Ml=[`TERMINATING`,`TERMINATED`,`REMOVED`];function Nl(){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 Pl({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 Fl(){return R({mutationFn:Pl})}function Il({cluster:e,instance:t,instanceParams:n}){let r=L(),i=we(),{redirect:a}=Te({strict:!1}),{mutate:o,isPending:s}=Fl();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 Ll(e){if(Hl(e)||Ul(e))return`warning`;if(zl(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 Rl(e){switch(e){case`STOPPED`:case`STOPPING`:case`STARTING`:case`RESTARTING`:return!0;default:return!1}}function zl(e){switch(e){case`RUNNING`:case`UPDATED`:return!0;default:return!1}}function Bl(e){switch(e){case`FAILED`:return!0;default:return!1}}function Vl(e){switch(e){case`TERMINATED`:return!0;default:return!1}}function Hl(e){switch(e){case`CLONE_PENDING`:case`PENDING_UPGRADE`:return!0;default:return!1}}function Ul(e){switch(e){case`PROVISIONING`:case`CLONING`:case`CLONE_READY`:case`UPDATING_HDB_NODES`:case`DRAINING`:case`UPDATING`:return!0;default:return!1}}function Wl(e){let t=(e?.instances??[]).filter(e=>!(e.status&&Ml.includes(e.status)));return t.length>0&&t.every(e=>zl(e.status))}async function Gl(e){let t=re(),{data:n}=await N.get(`/Cluster/${e}`);return ie(n,t),n}async function Kl(e,t){let{queryKey:n}=ql(t);await e.cancelQueries({queryKey:n,exact:!0}),e.setQueryData(n,e=>e&&{...e,resetPassword:!1})}function ql(e,t){return z({queryKey:[e],queryFn:()=>Gl(e),retry:!1,staleTime:1900,enabled:!!e,refetchInterval:bs(t?t===!0?1e4:t:void 0)})}var Jl=te({error:`Please enter a valid email address.`}).toLowerCase().trim(),Yl=M().nonempty({error:`Please enter your password.`}),Xl=M().nonempty({error:`Please enter a username.`}),Zl=S({username:Xl,password:Yl}),Ql=S({email:Jl,password:Yl});function $l({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 eu=[`localhost`,`127.0.0.1`],tu=function(e){return e.MixedLoopback=`MixedLoopback`,e.InsecureCookieOutsideChromeAndFirefox=`InsecureCookieOutsideChromeAndFirefox`,e}({});function nu(e,t,n){if(!n||!t||!e)return null;let r=new URL(n).hostname,i=eu.includes(t),a=eu.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 ru(){let{clusterId:e,instanceId:t}=B({strict:!1}),{data:n}=F(ql(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&&jl.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)(()=>nu(navigator.userAgent,location.hostname,o),[o]),{data:m}=F($l(l)),h=Gt({resolver:it(Zl),defaultValues:{username:``,password:``}}),{control:g,handleSubmit:_}=h,{submitForm:v,isPending:b}=Il({cluster:n,instance:r,instanceParams:l});if(!t&&n&&!n?.fqdn)return(0,K.jsx)(ve,{to:`../instances`,replace:!0});if(n?.resetPassword){let e=i&&Wl(n);return(0,K.jsx)(ve,{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)(El,{...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)(H,{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===tu.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===tu.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:Nl(),target:`_blank`,children:(0,K.jsx)(H,{type:`button`,variant:`positive`,children:`Connect to Harper Fabric`})})})]})]})})]})})]})}function iu({type:e=`text`,passwordLabel:t=`password`,...n}){let[r,i]=(0,G.useState)(!1),a=e===`email`?ua:e===`password`?Qi:Mo;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)(ui,{"aria-hidden":`true`}):(0,K.jsx)(fi,{"aria-hidden":`true`})})]})}function au({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 ou=`The server is temporarily unavailable. It isn't a problem with the details you entered — please try again in a moment.`,su=`Something went wrong on our end. It isn't a problem with the details you entered, and trying again may not help.`,cu=`Too many attempts. Please wait a short while before trying again.`,lu=`We didn't get an answer from the server, so we can't tell whether that went through.`,uu=new Set([503]),du=new Set([502,504]),fu=new Set([b.ERR_NETWORK,b.ETIMEDOUT,b.ECONNABORTED]);function pu(e,t){let n=`${lu} ${t}`,r=e,i=r?.response?.status;if(typeof i==`number`)return i===429?cu:i<500?void 0:du.has(i)?n:uu.has(i)?ou:su;let a=r?.code;return typeof a==`string`&&fu.has(a)?n:void 0}function mu(e,t){return pu(e,t)??Ko(e).message}var hu=240,gu=/[\uD800-\uDBFF]$/;function _u(e){return`${e.slice(0,hu).replace(gu,``).trimEnd()}…`}function vu({message:e,suggestSupport:t}){if(!e)return null;let n=e.length>hu?_u(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)(au,{overEmail:!0}),` if this keeps happening.`]})]})}function yu(){return!1}var bu;function xu(){return bu??=Tu().catch(e=>{throw bu=void 0,e}),bu}function Su(){yu()&&xu().catch(()=>{})}async function Cu(e){}var wu=8e3;function Tu(){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`),wu);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 Eu=`verification failed`,Du=[`error`,`message`,`title`,`detail`];function Ou(e){let t=e?.response;if(t?.status!==403)return!1;let n=t.data;return typeof n==`string`?ku(n):Du.some(e=>ku(n?.[e]))}function ku(e){return typeof e==`string`&&e.toLowerCase().includes(Eu)}var Au=`Verification failed. Please try again.`,ju=`We could not run the verification check. Disable any ad blocker for this page, then reload and try again.`,Mu=2;function Nu(e){(0,G.useEffect)(()=>{Su()},[]);let t=(0,G.useRef)(!1),[n,r]=(0,G.useState)(!1),i=(0,G.useCallback)(async()=>{r(!0);try{let n=await Cu(e);return t.current=yu()&&!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(!Ou(e)){a.current=0,s(!1);return}return a.current+=1,s(a.current>=Mu),t.current?ju:Au},[]),minting:n,supportSuggested:o}}async function Pu({email:e,captchaToken:t}){let{data:n}=await N.post(`/ForgotPassword/`,{email:e,...t?{captchaToken:t}:{}});if(n)return n;throw Error(`Something went wrong`)}function Fu(){return R({mutationFn:e=>Pu(e),meta:{skipGlobalErrorToast:!0}})}var Iu=`Check your inbox before requesting another link.`,Lu=S({email:Jl});function Ru(){let e=L(),{me:t}=Te({strict:!1}),n=Gt({resolver:it(Lu),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}=Fu(),f=Nu(`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=pu(e,Iu);if(n){console.error(e),c(n);return}qo(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)(El,{...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)(iu,{disabled:d,type:`email`,autoComplete:`email`,placeholder:`you@company.com`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(vu,{message:s,suggestSupport:f.supportSuggested}),(0,K.jsx)(H,{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 zu=async({token:e,password:t})=>{let{data:n}=await N.put(`/ResetPassword/`,{token:e,newPassword:t});return n};function Bu(){return R({mutationFn:e=>zu(e)})}var Vu=S({password:Yl.min(8,{error:`Password must be at least 8 characters long.`}).max(50,{error:`Password cannot be longer than 50 characters.`}),confirmPassword:M()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function Hu(){let{token:e}=Te({strict:!1}),t=L();(0,G.useEffect)(()=>{e||t({to:`/sign-in`})},[e,t]);let n=Gt({resolver:it(Vu),defaultValues:{password:``,confirmPassword:``}}),{setFocus:r,control:i,handleSubmit:a}=n;(0,G.useEffect)(()=>{r(`password`)},[r]);let{mutate:o,isPending:s}=Bu(),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)(El,{...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)(iu,{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)(iu,{disabled:s,type:`password`,autoComplete:`new-password`,...e,placeholder:`Confirm your password`,passwordLabel:`password confirmation`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(H,{variant:`submit`,type:`submit`,disabled:s,className:`sign-in-submit`,children:`Submit New Password`})]})})]})}function Uu(...e){let t=e.flat(1);return t.map((e,n)=>typeof e==`string`?Wu(e,n!==0,n!==t.length-1):e).join(`/`)}function Wu(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 Gu=`/#/check-oauth`;function Ku(e,t){let n=Uu(`/`,`oauth`,e,`login`);return t?`${n}?redirect=${encodeURIComponent(t)}`:n}function qu(){return(0,K.jsx)(Fs,{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 Ju({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:Ku(`github`,Gu),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)(qu,{})]}):a}function Yu({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:Ku(`google`,Gu),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)(qu,{})]}):a}function Xu(e){if(!v(e)||e.response?.status!==403)return!1;let t=e.response.data,n=typeof t==`string`?t:jn(t?.error)??jn(t?.message)??jn(t?.title)??``;return/verif/i.test(n)}var Zu=async({email:e})=>{let{data:t}=await N.post(`/ResendVerificationEmail/`,{email:e});return t};function Qu(){return R({mutationFn:e=>Zu(e)})}function $u(){let e=L(),t=Me(),n=we(),{redirect:r}=Te({strict:!1}),[i,a]=(0,G.useState)(),{mutate:o,isPending:s}=ed(),{mutate:c}=Qu();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),vl();let a=Jn(i);hl(i.email),await t.invalidateQueries({queryKey:f,refetchType:`none`}),n.invalidate(),await e({to:r?.startsWith(`/`)?r:a})},onError:t=>{if(Xu(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(mu(t,`Try signing in again.`))}})},[e,t,r,c,n,o])}}function ed(){return R({mutationFn:e=>td(e),meta:{skipGlobalErrorToast:!0},onError:e=>{Xu(e)||console.error(e)}})}async function td({email:e,password:t}){let{data:n}=await N.post(`/Login/`,{email:e,password:t});if(n)return n;throw Error(`Something went wrong`)}function nd(){let[e,t]=Es(Pn.RememberSignInMethod,!0),[n,r]=Es(Pn.LastUsedSignInMethod,null),i=(0,G.useCallback)(t=>{e&&(Mn(Pn.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 rd=`mx-auto mt-3 block text-xs text-muted-foreground underline hover:text-foreground dark:text-inherit dark:hover:text-blue-300`;function id(){let{me:e}=Te({strict:!1}),t=Gt({resolver:it(Ql),defaultValues:{email:e||``,password:``}}),{handleSubmit:n,control:r}=t,i=t.watch(`email`),{submitForm:a,isPending:o,submitError:s,clearSubmitError:c}=$u(),{lastUsed:l,remember:u,recordMethod:d,disable:f,enable:p}=nd();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)(El,{...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)(iu,{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)(iu,{type:`password`,placeholder:`Your password`,autoComplete:`current-password`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(vu,{message:s}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,className:`sign-in-submit`,disabled:o,children:[`Sign In `,(0,K.jsx)(nr,{"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)(Yu,{text:`Sign in with Google`,compact:!0,lastUsed:l===`google`,onClick:()=>d(`google`)}),(0,K.jsx)(Ju,{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:rd,children:`On a shared device? Forget my sign-in method.`}):(0,K.jsx)(`button`,{type:`button`,onClick:p,className:rd,children:`Remember my last sign-in method on this device.`})]})}var ad=/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžæÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,'-]+$/u;async function od({captchaToken:e,...t}){let{data:n}=await N.post(`/User/`,{...t,...e?{captchaToken:e}:{}});if(n)return n;throw Error(`Something went wrong`)}function sd(){return R({mutationFn:e=>od(e),meta:{skipGlobalErrorToast:!0},onError:e=>console.error(e)})}var cd=`Check your email for a verification link before signing up again.`,ld=S({email:Jl.max(80,{error:`Email cannot be longer than 80 characters.`}),firstname:M().trim().min(2,{error:`Please enter your first name.`}).regex(ad,{error:`First name can only contain letters, spaces, and hyphens.`}).max(40,{error:`First name cannot be longer than 40 characters.`}),lastname:M().trim().min(2,{error:`Please enter your last name.`}).regex(ad,{error:`Last name can only contain letters, spaces, and hyphens.`}).max(80,{error:`Last name cannot be longer than 80 characters.`}),password:Yl.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:M(),acceptTerms:A().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 ud(){let e=L(),{email:t,me:n}=Te({strict:!1}),[r,i]=(0,G.useState)(!1),a=Gt({resolver:it(ld),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}=sd(),_=Nu(`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:()=>{hl(i.email),vl(),e({to:`/verifying?email=`+encodeURIComponent(i.email)})},onError:e=>{l(`root`,{type:`server`,message:_.describeCaptchaError(e)??mu(e,cd)})}})},[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)(El,{...a,children:[(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 my-6`,children:[b,(0,K.jsx)(Yu,{text:`Sign up with Google`,disabled:!s,onClick:y}),(0,K.jsx)(Ju,{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)(iu,{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)(iu,{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)(iu,{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)(iu,{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)(iu,{type:`password`,autoComplete:`new-password`,...e,placeholder:`Confirm your password`,passwordLabel:`password confirmation`}),(0,K.jsx)(Q,{})]})}),b,(0,K.jsx)(vu,{message:m,suggestSupport:_.supportSuggested}),(0,K.jsx)(H,{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 dd=async e=>{let{data:t}=await N.put(`/VerifyEmail/`,{token:e.toString()});return t};function fd(){return R({mutationFn:e=>dd(e)})}var pd=S({email:Jl});function md(){let e=L(),{mutate:t,isPending:n}=Qu(),r=Gt({resolver:it(pd),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)(El,{...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)(iu,{disabled:n,type:`email`,autoComplete:`email`,placeholder:`you@company.com`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(H,{type:`submit`,variant:`submit`,disabled:n,className:`sign-in-submit`,children:`Send Verification Email`})]})})}function hd(){let{token:e}=Te({strict:!1}),t=L(),{mutate:n,isPending:r}=fd(),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)(yl,{icon:oa,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)(Xi,{"aria-hidden":`true`,className:`auth-loading-icon`}),`Verifying email...`]}):(0,K.jsx)(md,{})]})}function gd(){let{email:e}=Te({strict:!1}),{mutate:t,isPending:n}=Qu(),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)(yl,{icon:oa,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 _d=I({getParentRoute:()=>rl,id:`_authLayout`,component:fl}),vd=I({getParentRoute:()=>_d,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:id,beforeLoad:({context:e,location:t})=>{let n=e.authentication[m]?.user;if(n){let e=t?.search,r=Jn(n);throw Se({to:e?.redirect?.startsWith(`/`)?e.redirect:r})}}}),yd=I({getParentRoute:()=>rl,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:ru,beforeLoad:({context:e,location:t})=>{if(e.authentication.OverallAppSignIn?.user){let e=t?.search;throw Se({to:e?.redirect?.startsWith(`/`)?e.redirect:`/`})}}}),bd=I({getParentRoute:()=>_d,path:`sign-up`,head:()=>({meta:[{title:`Sign Up — Harper Fabric`}]}),component:ud}),xd=I({getParentRoute:()=>_d,path:`forgot-password`,head:()=>({meta:[{title:`Forgot Password — Harper Fabric`}]}),component:Ru}),Sd=I({getParentRoute:()=>_d,path:`verify-email`,head:()=>({meta:[{title:`Verify Email — Harper Fabric`}]}),component:hd}),Cd=I({getParentRoute:()=>_d,path:`verifying`,head:()=>({meta:[{title:`Check Your Email — Harper Fabric`}]}),component:gd}),wd=I({getParentRoute:()=>_d,path:`check-oauth`,head:()=>({meta:[{title:`Signing In — Harper Fabric`}]}),component:xl}),Td=I({getParentRoute:()=>_d,path:`reset-password`,head:()=>({meta:[{title:`Reset Password — Harper Fabric`}]}),component:Hu});_d.addChildren([vd,bd,wd,xd,Sd,Cd,Td]);var Ed=[yd];function Dd({children:e}){return(0,K.jsx)(`nav`,{className:`studio-subnav 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)(Tl,{}),e]})})}var Od=360,kd=280,Ad=16,jd={width:820,height:680};function Md({width:e,height:t},n,r){return{width:Math.round(Math.max(Od,Math.min(e,n-32))),height:Math.round(Math.max(kd,Math.min(t,r-32)))}}function Nd({width:e,height:t},n,r){return{x:Math.round((n-e)/2),y:Math.round((r-t)/2)}}function Pd({x:e,y:t},{width:n,height:r},i,a){let o=Math.max(Ad,i-n-Ad),s=Math.max(Ad,a-r-Ad);return{x:Math.min(Math.max(e,Ad),o),y:Math.min(Math.max(t,Ad),s)}}function Fd(){let[e,t]=Es(Pn.ResizableModalSize,jd),[n,r]=(0,G.useState)(()=>Md(e,window.innerWidth,window.innerHeight)),[i,a]=(0,G.useState)(()=>Nd(n,window.innerWidth,window.innerHeight)),[o,s]=(0,G.useState)(!1),[c,l]=(0,G.useState)(!1),[u,d]=(0,G.useState)(!1),f=(0,G.useRef)(n);f.current=n;let p=(0,G.useRef)(i);p.current=i;let m=(0,G.useRef)(u);m.current=u;let h=(0,G.useRef)(null),g=(0,G.useRef)(e);g.current=e;let _=(0,G.useRef)(null),v=(0,G.useRef)(!1),y=(0,G.useRef)(null),b=(0,G.useCallback)(e=>{if(!e||e===y.current)return;y.current=e,d(!1),h.current=null;let t=window.innerWidth,n=window.innerHeight,i=Md(g.current,t,n);r(i),a(Nd(i,t,n))},[]);return(0,G.useEffect)(()=>{let e=()=>{let e=window.innerWidth,t=window.innerHeight;if(m.current){let n=Md({width:e,height:t},e,t);r(n),a(Nd(n,e,t));return}let n=Md(g.current,e,t);r(n),a(Pd(p.current,n,e,t))};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,G.useEffect)(()=>(v.current=!1,()=>{v.current=!0,_.current?.()}),[]),{size:n,position:i,isDragging:o,isResizing:c,isMaximized:u,contentRef:b,startDrag:(0,G.useCallback)(e=>{e.preventDefault(),_.current?.();let t=y.current,n=e.clientX,r=e.clientY,i={...p.current};s(!0),d(!1);let o=0,c=0,l=0,u=()=>{o=0,t&&(t.style.transform=`translate3d(${c}px, ${l}px, 0)`)},m=e=>{c=e.clientX-n,l=e.clientY-r,o||=requestAnimationFrame(u)},h=()=>{o&&cancelAnimationFrame(o),window.removeEventListener(`mousemove`,m),window.removeEventListener(`mouseup`,g),v.current||s(!1),_.current===h&&(_.current=null)},g=()=>{h();let e=Pd({x:i.x+c,y:i.y+l},f.current,window.innerWidth,window.innerHeight);t&&(t.style.left=`${e.x}px`,t.style.top=`${e.y}px`,t.style.transform=``),a(e)};window.addEventListener(`mousemove`,m),window.addEventListener(`mouseup`,g),_.current=h},[]),startResize:(0,G.useCallback)(e=>n=>{n.preventDefault(),n.stopPropagation(),_.current?.();let i=y.current,o=n.clientX,s=n.clientY,c={...f.current},u={...p.current};l(!0),d(!1);let m=0,h=c,g=u,b=()=>{m=0,i&&(i.style.width=`${h.width}px`,i.style.height=`${h.height}px`,i.style.left=`${g.x}px`,i.style.top=`${g.y}px`)},x=t=>{let n=window.innerWidth,r=window.innerHeight,i=t.clientX-o,a=t.clientY-s,l=t.altKey,d=l?2:1,f=c.width,p=c.height;e.includes(`e`)&&(f=c.width+i*d),e.includes(`w`)&&(f=c.width-i*d),e.includes(`s`)&&(p=c.height+a*d),e.includes(`n`)&&(p=c.height-a*d),h=Md({width:f,height:p},n,r);let{x:_,y:v}=u;l?(_=Math.round(u.x+(c.width-h.width)/2),v=Math.round(u.y+(c.height-h.height)/2)):(e.includes(`w`)&&(_=u.x+c.width-h.width),e.includes(`n`)&&(v=u.y+c.height-h.height)),g={x:_,y:v},m||=requestAnimationFrame(b)},S=()=>{m&&cancelAnimationFrame(m),window.removeEventListener(`mousemove`,x),window.removeEventListener(`mouseup`,C),v.current||l(!1),_.current===S&&(_.current=null)},C=()=>{S();let e=window.innerWidth,n=window.innerHeight,i=Md(h,e,n);r(i),a(Pd(g,i,e,n)),t(i)};window.addEventListener(`mousemove`,x),window.addEventListener(`mouseup`,C),_.current=S},[t]),toggleMaximize:(0,G.useCallback)(()=>{let e=window.innerWidth,t=window.innerHeight;if(m.current){let n=h.current;if(n){let i=Md(n.size,e,t);r(i),a(Pd(n.position,i,e,t))}d(!1)}else{h.current={size:f.current,position:p.current};let n=Md({width:e,height:t},e,t);r(n),a(Nd(n,e,t)),d(!0)}},[])}}function Id({...e}){return(0,K.jsx)(gt,{"data-slot":`dialog`,...e})}function Ld({...e}){return(0,K.jsx)(Mt,{"data-slot":`dialog-trigger`,...e})}function Rd({...e}){return(0,K.jsx)(Vt,{"data-slot":`dialog-portal`,...e})}function zd({className:e,...t}){return(0,K.jsx)(Ht,{"data-slot":`dialog-overlay`,className:P(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-white/80 backdrop-blur-xs dark:bg-black-dark/90 dark:backdrop-blur-none`,e),...t})}function Bd({className:e}){return(0,K.jsxs)(xt,{className:P(`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-0 right-0 flex items-start justify-end rounded-bl-md p-4 opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),children:[(0,K.jsx)(Io,{className:`text-popover-foreground`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Close`})]})}var Vd=[{dir:`n`,className:`-top-2 inset-x-5 h-4 cursor-ns-resize z-30`},{dir:`s`,className:`-bottom-2 inset-x-5 h-4 cursor-ns-resize z-30`},{dir:`e`,className:`-right-2 inset-y-5 w-4 cursor-ew-resize z-30`},{dir:`w`,className:`-left-2 inset-y-5 w-4 cursor-ew-resize z-30`},{dir:`nw`,className:`-top-2 -left-2 size-6 cursor-nwse-resize z-40`},{dir:`ne`,className:`-top-2 -right-2 size-6 cursor-nesw-resize z-40`},{dir:`sw`,className:`-bottom-2 -left-2 size-6 cursor-nesw-resize z-40`},{dir:`se`,className:`-bottom-2 -right-2 size-6 cursor-nwse-resize z-40`}];function Hd({className:e,children:t,...n}){let{size:r,position:i,isDragging:a,isResizing:o,isMaximized:s,contentRef:c,startDrag:l,startResize:u,toggleMaximize:d}=Fd(),f=`ring-offset-background focus:ring-ring text-popover-foreground flex size-8 items-center justify-center rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none`;return(0,K.jsxs)(Rd,{"data-slot":`dialog-portal`,children:[(0,K.jsx)(zd,{className:P(`transition-opacity duration-200`,a&&`opacity-0`)}),(0,K.jsxs)(dn,{ref:c,"data-slot":`dialog-content`,style:{left:i.x,top:i.y,width:r.width,height:r.height},className:P(`bg-popover 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 fixed z-50 rounded-md border shadow-2xl transition-none`,a&&`will-change-transform`,e),...n,children:[(0,K.jsxs)(`div`,{className:P(`flex h-full w-full flex-col gap-4 overflow-hidden rounded-md p-6`,(a||o)&&`select-none`),children:[(0,K.jsx)(`div`,{onMouseDown:l,className:`absolute inset-x-0 top-0 z-10 flex h-12 cursor-move items-start justify-center`,"aria-hidden":!0,children:(0,K.jsx)(Ai,{className:`mt-1 size-4 text-muted-foreground/40`})}),t,(0,K.jsxs)(`div`,{className:`absolute top-6 right-4 z-20 flex h-[1.125rem] items-center gap-1`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:d,"aria-label":s?`Restore modal size`:`Maximize modal`,className:f,children:s?(0,K.jsx)(va,{className:`size-4`}):(0,K.jsx)(ma,{className:`size-4`})}),(0,K.jsxs)(xt,{"aria-label":`Close`,className:f,children:[(0,K.jsx)(Io,{className:`size-4`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}),Vd.map(({dir:e,className:t})=>(0,K.jsx)(`div`,{"data-resize-handle":e,onMouseDown:u(e),className:P(`absolute`,t),"aria-hidden":!0},e))]})]})}function Ud({className:e,children:t,resizable:n,...r}){return n?(0,K.jsx)(Hd,{className:e,...r,children:t}):(0,K.jsxs)(Rd,{"data-slot":`dialog-portal`,children:[(0,K.jsx)(zd,{}),(0,K.jsxs)(dn,{"data-slot":`dialog-content`,className:P(`bg-popover 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] lg:max-w-2xl max-h-screen overflow-y-auto translate-x-[-50%] translate-y-[-50%] gap-4 rounded-md border p-6 shadow-2xl duration-200`,e),...r,children:[t,(0,K.jsx)(Bd,{})]})]})}function Wd({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`dialog-header`,className:P(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function Gd({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`dialog-footer`,className:P(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...t})}function Kd({className:e,...t}){return(0,K.jsx)(Ut,{"data-slot":`dialog-title`,className:P(`text-lg leading-none text-popover-foreground font-semibold`,e),...t})}function qd({className:e,...t}){return(0,K.jsx)(bt,{"data-slot":`dialog-description`,className:P(`text-muted-foreground text-sm`,e),...t})}function Jd({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)(Id,{open:n,onOpenChange:i,children:[s&&(0,K.jsx)(Ld,{asChild:!0,children:s}),(0,K.jsxs)(Ud,{className:`sm:max-w-[750px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{children:[`Are you sure you want to `,l.toLowerCase(),` this `,e,`?`]}),(0,K.jsx)(qd,{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)(Oo,{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)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-center space-x-5`,children:[(0,K.jsxs)(H,{type:`button`,onClick:()=>i(!1),children:[(0,K.jsx)(er,{}),` Cancel`]}),(0,K.jsxs)(H,{variant:`destructive`,onClick:a,disabled:o,children:[(0,K.jsx)(Eo,{}),` `,l]})]})})]})]})}function Yd({...e}){return(0,K.jsx)(_t,{"data-slot":`context-menu`,...e})}function Xd({...e}){return(0,K.jsx)(Bt,{"data-slot":`context-menu-trigger`,...e})}function Zd({className:e,...t}){return(0,K.jsx)(zt,{children:(0,K.jsx)(Nt,{"data-slot":`context-menu-content`,className:P(`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 Qd({className:e,inset:t,variant:n=`default`,...r}){return(0,K.jsx)(wn,{"data-slot":`context-menu-item`,"data-inset":t,"data-variant":n,className:P(`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 $d({className:e,inset:t,...n}){return(0,K.jsx)(st,{"data-slot":`context-menu-label`,"data-inset":t,className:P(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function ef({className:e,...t}){return(0,K.jsx)(Rt,{"data-slot":`context-menu-separator`,className:P(`bg-border -mx-1 my-1 h-px`,e),...t})}function tf({className:e,...t}){return(0,K.jsx)(`span`,{"data-slot":`context-menu-shortcut`,className:P(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}var nf={dropdown:{Item:Qo,Label:ns,Separator:rs},context:{Item:Qd,Label:$d,Separator:ef}};function rf(e,t){let{Item:n,Label:r,Separator:i}=nf[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 af({items:e,children:t}){return e.length?(0,K.jsxs)(Yd,{children:[(0,K.jsx)(Xd,{asChild:!0,children:t}),(0,K.jsx)(Zd,{children:rf(e,`context`)})]}):(0,K.jsx)(K.Fragment,{children:t})}function of(e,t){let n=cf(e),r=cf(t);return!n||!r?!1:df(r,n)>=0}function sf(e,t){let n=cf(e),r=cf(t);return!n&&!r?0:n?r?df(n,r):1:-1}function cf(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=lf(a[0]),s=lf(a[1]??`0`),c=lf(a[2]??`0`);return o==null||s==null||c==null?null:{major:o,minor:s,patch:c,pre:i?i.split(`.`).map(e=>uf(e)?Number(e):e):[]}}function lf(e){return e==null||e===``||!/^\d+$/.test(e)?null:Number(e)}function uf(e){return/^\d+$/.test(e)}function df(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 ff=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 pf(e){return ff.has(e)}function mf(e){let t=Nf.get(e);return!!t?.aliasOf||!!t?.nonDelegable||!!t?.outOfGate||pf(e)}var hf=`5.1.0-alpha.1`,gf=`5.2.0-alpha.1`,_f=`5.3.0-alpha.1`,vf=`Data`,yf=`Schema`,bf=`Users & Roles`,xf=`Components & Deployments`,Sf=`Clustering & Replication`,Cf=`Jobs`,wf=`Logs & Analytics`,Tf=`System`,Ef=`Managed Backups`,Df=`Secrets & Environment`,Of=`Agent`,kf=[vf,yf,bf,xf,Sf,Cf,wf,Tf,Ef,Df,Of],Af=[{name:`search`,su:!1,category:vf},{name:`search_by_conditions`,su:!1,category:vf},{name:`search_by_hash`,su:!1,category:vf},{name:`search_by_id`,su:!1,category:vf,aliasOf:`search_by_hash`},{name:`search_by_value`,su:!1,category:vf},{name:`sql`,su:!1,category:vf,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:vf},{name:`update`,su:!1,category:vf},{name:`upsert`,su:!1,category:vf},{name:`put`,su:!1,category:vf,addedIn:_f},{name:`delete`,su:!1,category:vf},{name:`delete_records_before`,su:!0,category:vf},{name:`csv_data_load`,su:!1,category:vf},{name:`csv_file_load`,su:!1,category:vf},{name:`csv_url_load`,su:!1,category:vf},{name:`import_from_s3`,su:!1,category:vf},{name:`export_local`,su:!0,category:vf},{name:`export_to_s3`,su:!0,category:vf},{name:`describe_all`,su:!1,category:yf},{name:`describe_database`,su:!1,category:yf,aliasOf:`describe_schema`},{name:`describe_schema`,su:!1,category:yf},{name:`describe_table`,su:!1,category:yf},{name:`create_database`,su:!0,category:yf},{name:`create_schema`,su:!0,category:yf,aliasOf:`create_database`},{name:`drop_database`,su:!0,category:yf},{name:`drop_schema`,su:!0,category:yf,aliasOf:`drop_database`},{name:`create_table`,su:!0,category:yf},{name:`drop_table`,su:!0,category:yf},{name:`create_attribute`,su:!1,category:yf},{name:`drop_attribute`,su:!0,category:yf},{name:`cleanup_orphan_blobs`,su:!0,category:yf},{name:`user_info`,su:!1,category:bf},{name:`list_users`,su:!0,category:bf},{name:`add_user`,su:!0,category:bf},{name:`alter_user`,su:!0,category:bf},{name:`drop_user`,su:!0,category:bf},{name:`list_roles`,su:!0,category:bf},{name:`add_role`,su:!0,category:bf},{name:`alter_role`,su:!0,category:bf},{name:`drop_role`,su:!0,category:bf},{name:`refresh_operation_token`,su:!1,category:bf},{name:`get_components`,su:!0,category:xf},{name:`get_component_file`,su:!0,category:xf},{name:`set_component_file`,su:!0,category:xf},{name:`add_component`,su:!0,category:xf},{name:`drop_component`,su:!0,category:xf},{name:`deploy_component`,su:!0,category:xf},{name:`package_component`,su:!0,category:xf},{name:`install_node_modules`,su:!0,category:xf},{name:`audit_node_modules`,su:!0,category:xf},{name:`custom_functions_status`,su:!0,category:xf},{name:`get_custom_functions`,su:!0,category:xf},{name:`get_custom_function`,su:!0,category:xf},{name:`set_custom_function`,su:!0,category:xf},{name:`drop_custom_function`,su:!0,category:xf},{name:`add_custom_function_project`,su:!0,category:xf,aliasOf:`add_component`},{name:`deploy_custom_function_project`,su:!0,category:xf,aliasOf:`deploy_component`},{name:`package_custom_function_project`,su:!0,category:xf,aliasOf:`package_component`},{name:`drop_custom_function_project`,su:!0,category:xf,aliasOf:`drop_component`},{name:`list_deployments`,su:!0,category:xf,addedIn:hf},{name:`get_deployment`,su:!0,category:xf,addedIn:hf},{name:`get_deployment_payload`,su:!0,category:xf,addedIn:hf,nonDelegable:!0},{name:`delete_deployment_payload`,su:!0,category:xf,addedIn:hf},{name:`add_node`,su:!0,category:Sf},{name:`update_node`,su:!0,category:Sf},{name:`set_node_replication`,su:!0,category:Sf},{name:`purge_stream`,su:!0,category:Sf},{name:`catchup`,su:!0,category:Sf},{name:`get_job`,su:!1,category:Cf},{name:`search_jobs_by_start_date`,su:!0,category:Cf},{name:`update_job`,su:!0,category:Cf},{name:`delete_job`,su:!0,category:Cf},{name:`read_log`,su:!0,category:wf},{name:`read_audit_log`,su:!0,category:wf},{name:`read_transaction_log`,su:!0,category:wf},{name:`delete_files_before`,su:!0,category:wf},{name:`delete_audit_logs_before`,su:!0,category:wf},{name:`delete_transaction_logs_before`,su:!0,category:wf},{name:`get_analytics`,su:!1,category:wf},{name:`list_metrics`,su:!1,category:wf},{name:`describe_metric`,su:!1,category:wf},{name:`get_configuration`,su:!0,category:Tf},{name:`set_configuration`,su:!0,category:Tf},{name:`restart`,su:!0,category:Tf},{name:`restart_service`,su:!0,category:Tf},{name:`system_information`,su:!0,category:Tf},{name:`get_status`,su:!0,category:Tf},{name:`set_status`,su:!0,category:Tf},{name:`clear_status`,su:!0,category:Tf},{name:`registration_info`,su:!1,category:Tf},{name:`get_backup`,su:!0,category:Tf},{name:`create_backup`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`verify_backup`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`restore_backup`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`list_backups`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`delete_backup`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`purge_backups`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`set_secret`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`grant_secret`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`revoke_secret`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`list_secrets`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`delete_secret`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`get_secrets_public_key`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`set_env_value`,su:!0,category:Df,addedIn:gf},{name:`delete_env_value`,su:!0,category:Df,addedIn:gf},{name:`get_env_keys`,su:!0,category:Df,addedIn:gf},{name:`agent_prompt`,su:!0,category:Of,addedIn:hf},{name:`get_agent_session`,su:!0,category:Of,addedIn:hf},{name:`list_agent_sessions`,su:!0,category:Of,addedIn:hf},{name:`cancel_agent_run`,su:!0,category:Of,addedIn:hf},{name:`approve_agent_action`,su:!0,category:Of,addedIn:hf},{name:`set_agent_config`,su:!0,category:Of,addedIn:hf}],jf=[`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`],Mf=[{name:`read_only`,description:`Read-only data access: searches, SQL, schema describes, and user/analytics reads.`,members:jf},{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:[...jf,`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:gf}],Nf=new Map(Af.map(e=>[e.name,e])),Pf=new Map(Mf.map(e=>[e.name,e]));function Ff(e){return Nf.get(e)}function If(e){return Nf.get(e)?.aliasOf??e}function Lf(e){return Pf.has(e)}function Rf(e){return!!e&&of(`5.0.0-alpha.8`,e)}function zf(e){return Af.filter(t=>!t.nonDelegable&&!t.aliasOf&&(!t.addedIn||of(t.addedIn,e)))}function Bf(e){return Mf.filter(t=>!t.addedIn||of(t.addedIn,e))}function Vf(e){let t=new Set;for(let n of e){let e=Pf.get(n);if(e){for(let n of e.members){let e=Nf.get(n)?.aliasOf??n;mf(e)||t.add(e)}continue}mf(n)||t.add(n)}return[...t].sort()}function Hf(e,t=40){return e.length>t?`${e.slice(0,t).join(`, `)}, +${e.length-t} more`:e.join(`, `)}var Uf=[`super_user`,`structure_user`,`cluster_user`,`operations`],Wf=new Set(Uf);function Gf(e,t,n){if((t===`operations`?n:Wf.has(t))||!Object.hasOwn(e,t))return;let r=e[t];return typeof r==`object`&&r&&!Array.isArray(r)?r:void 0}function Kf(e){return e?.super_user===!0||e?.cluster_user===!0}function qf(e){let t=e?.structure_user;return t===!0?!0:Array.isArray(t)&&t.length>0?t:!1}var Jf=[`create_table`,`create_attribute`,`drop_table`,`drop_attribute`];function Yf(e){let t=e?.operations;return Array.isArray(t)&&t.every(e=>typeof e==`string`)?t:void 0}function Xf(e,t){let n=e?.operations;return e===void 0||n===void 0?`absent`:t?Yf(e)===void 0?n&&typeof n!=`string`&&!Array.isArray(n)?`breaks-auth`:`malformed`:`allowlist`:Gf(e,`operations`,!1)===void 0?`inert`:`database`}function Zf(e){let t=Uf.filter(t=>t in e),n=Object.keys(e).filter(e=>!Wf.has(e));return Object.fromEntries([...t,...n].map(t=>[t,e[t]]))}function Qf(e,t){let n={...e};return t===void 0?delete n.operations:n.operations=t,Zf(n)}var $f={read:[`search`,`search_by_conditions`,`search_by_hash`,`search_by_value`,`sql`],insert:[`insert`],update:[`update`],delete:[`delete`]},ep=[`insert`],tp=[`csv_data_load`,`get_job`],np=[`csv_url_load`,`get_job`],rp={"json-records":ep,"csv-data":tp,"csv-url":np},ip={sample:[ep,tp],file:[ep,tp],url:[np]},ap=Object.keys(ip),op=new WeakMap,sp=new Map(Mf.map(e=>[e.name,e.members]));function cp(e){let t=new Set;for(let n of e){let e=sp.get(n);if(e)for(let n of e)t.add(n);else t.add(n)}return t}function lp(e,t){let n=Yf(e);if(!n)return!0;let r=op.get(n);return r||(r=cp(n),op.set(n,r)),t.some(e=>r.has(If(e)))}function up(e,t){return e?.super_user===!0||lp(e,t)}function dp(e,t){return up(e,$f[t]??[])}function fp(e,t){return t.every(t=>lp(e,[t]))}function pp(e,t){return e?.super_user===!0||fp(e,rp[t])}function mp(e,t){return e?.super_user===!0||ip[t].some(t=>fp(e,t))}function hp(e){return ap.some(t=>mp(e,t))}function gp(e,t,n,r){return dp(e,r)&&yp(e,t,n,r)}function _p(e,t,n){if(!e)return!1;if(e.super_user===!0)return!0;if(!lp(e,[`put`]))return!1;let r=Gf(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 vp(e,t,n){return hp(e)&&yp(e,t,n,`insert`)}function yp(e,t,n,r){return e?e.super_user===!0||e.structure_user===!0||Gf(e,t,!1)?.tables?.[n]?.[r]===!0:!1}function bp(e){let{user:t}=Ln(),{organizationId:n}=B({strict:!1}),r=xp(t,e??n);return{update:Rn(t,`org:update`)||r.update,remove:Rn(t,`org:delete`)||r.remove}}function xp(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 Sp(e){let{user:t}=Ln(),{organizationId:n}=B({strict:!1}),r=Cp(t,e??n);return{create:Rn(t,`role:create`)||r.create,remove:Rn(t,`role:delete`)||r.remove,update:Rn(t,`role:update`)||r.update,view:Rn(t,`role:read`)||r.view}}function Cp(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 wp(e,t){let{user:n}=Ln(),{organizationId:r,clusterId:i}=B({strict:!1});return Tp(n,e??r,t??i)}function Tp(e,t,n){let r=Ep(e,t,n);return{create:Rn(e,`cluster:create`)||r.create,remove:Rn(e,`cluster:delete`)||r.remove,update:Rn(e,`cluster:update`)||r.update,view:Rn(e,`cluster:read`)||r.view}}function Ep(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 Dp(e){let{user:t}=Ln(),{organizationId:n}=B({strict:!1});return Op(t,e??n)}function Op(e,t){return Rn(e,`instance:update`)||kp(e,t)}function kp(e,t){let n=e?.roles?.[t];return!n||`oauthProviders`in n?!1:n.role===`admin`}function Ap(e,t){let{user:n}=Ln(),{organizationId:r,clusterId:i}=B({strict:!1});return jp(n,e??r,t??i)}function jp(e,t,n){let r=Mp(e,t,n);return{create:Rn(e,`cluster:update`)||r.create,remove:Rn(e,`cluster:delete`)||r.remove,update:Rn(e,`instance:update`)||r.update,view:Rn(e,`instance:read`)||r.view}}function Mp(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 Np(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Bn(e??n??t),i=r?.role?.permission;return i?i.super_user===!0:!1}function Pp(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Bn(e??n??t),i=r?.role?.permission;return i?i.super_user===!0||i.structure_user===!0:!1}function Fp(e,t,n,r){let{clusterId:i,instanceId:a}=B({strict:!1}),{user:o}=Bn(e??a??i);return gp(o?.role?.permission,t,n,r)}function Ip(e,t,n){let{clusterId:r,instanceId:i}=B({strict:!1}),{user:a}=Bn(e??i??r);return _p(a?.role?.permission,t,n)}function Lp(e,t,n){let{clusterId:r,instanceId:i}=B({strict:!1}),{user:a}=Bn(e??i??r);return vp(a?.role?.permission,t,n)}function Rp(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Bn(e??n??t);return hp(r?.role?.permission)}function zp(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Bn(e??n??t),i=r?.role?.permission;return(0,G.useMemo)(()=>({methods:Object.fromEntries(ap.map(e=>[e,mp(i,e)])),allowsSource:e=>pp(i,e),allowsDestination:(e,t)=>vp(i,e,t)}),[i])}function Bp(e){return!!e?.plans?.[0]?.planId?.startsWith(`self-hosted`)}function Vp({cluster:e,hasCardLink:t=!1}){let{view:n,update:r}=wp(e.organizationId,e.id),i=`/${e.organizationId}/${e.id}`;if(n)return Bp(e)?(0,K.jsx)(Hp,{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)(H,{variant:`positive`,className:`py-2 hover:border-b-2 animate-glow-pulse`,children:[`Finish Setup `,(0,K.jsx)(nr,{className:`inline-block`})]})}):(0,K.jsx)(`span`,{className:`py-2 text-nowrap`,children:`Pending Owner Setup`}):(0,K.jsx)(Hp,{cluster:e,hasCardLink:t}):t?(0,K.jsxs)(`span`,{className:`pointer-events-none text-sm text-nowrap py-2 ml-auto`,children:[`Instances`,` `,(0,K.jsx)(nr,{className:`inline-block transition-transform duration-200 group-hover/cluster:translate-x-1 motion-reduce:transform-none motion-reduce:transition-none`})]}):(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)(nr,{className:`inline-block transition-transform duration-200 group-hover/cluster:translate-x-1 motion-reduce:transform-none motion-reduce:transition-none`})]})})}function Hp({cluster:e,hasCardLink:t}){return t?(0,K.jsxs)(`span`,{className:`pointer-events-none text-sm text-nowrap py-2 ml-auto`,children:[`Open`,` `,(0,K.jsx)(nr,{className:`inline-block transition-transform duration-200 group-hover/cluster:translate-x-1 motion-reduce:transform-none motion-reduce:transition-none`})]}):(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)(nr,{className:`inline-block transition-transform duration-200 group-hover/cluster:translate-x-1 motion-reduce:transform-none motion-reduce:transition-none`})]})})}function Up({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)(Id,{open:n,onOpenChange:r,children:(0,K.jsxs)(Ud,{className:`sm:max-w-[560px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{children:[`Stop cluster `,e,`?`]}),(0,K.jsx)(qd,{children:`This stops every instance in the cluster. It will be offline and stop serving traffic until you start it again.`})]}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>r(!1),children:`Cancel`}),(0,K.jsx)(H,{type:`button`,variant:`destructive`,onClick:i,disabled:t,children:`Stop cluster`})]})})]})}),(0,K.jsx)(Id,{open:a,onOpenChange:o,children:(0,K.jsxs)(Ud,{className:`sm:max-w-[560px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{children:[`Restart cluster `,e]}),(0,K.jsx)(qd,{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)(Gd,{children:(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>o(!1),children:`Cancel`})})]})})]})}function Wp(e,t){let n=[];if(e)for(let r of e)n.push(r[t]);return n}function Gp({cluster:e,forceProgressBarVisible:t}){let[n,r]=(0,G.useState)(t||!1),{data:i}=F(ql(n&&e.id,2e3));(0,G.useEffect)(function(){(Hl(e.status)||Ul(e.status))&&r(!0)},[n,e.status,i?.instances]);let a=(0,G.useMemo)(()=>{let e=Wp(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&&!Vl(t)&&(Hl(t)?(n+=1,r[t]=`${n} ${Cl(t)}`):Ul(t)?(a+=1,o[t]=`${a} ${Cl(t)}`):Bl(t)?(l+=1,u[t]=`${l} ${Cl(t)}`):!i.planId||!e.includes(i.planId)?(a+=1,o.DRAINING_TRAFFIC=`${a} ${Cl(`Draining Traffic`)}`):zl(t)&&(s+=1,c[t]=`${s} ${Cl(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 Kp({open:e,setOpen:t,action:n,targetName:r,scope:i,isPending:a,onConfirm:o}){let s=n===`start`?`Start`:`Restart`;return(0,K.jsx)(Id,{open:e,onOpenChange:t,children:(0,K.jsxs)(Ud,{className:`sm:max-w-[560px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Ki,{className:`size-5 text-yellow`}),s,` `,r,` in safe mode?`]}),(0,K.jsxs)(qd,{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)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,K.jsxs)(H,{type:`button`,variant:`warning`,onClick:o,disabled:a,children:[(0,K.jsx)(Ki,{}),` `,s,` in safe mode`]})]})})]})})}async function qp(e){let{data:t}=await N.delete(`/Cluster/${e}`,{timeout:0});return t}function Jp(){return R({mutationFn:e=>qp(e)})}async function Yp({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 N.post(`/Cluster/${e}/container/${t}`,i);return a}function Xp(){return R({mutationFn:Yp})}var Zp={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function Qp(e){let{mutateAsync:t,isPending:n}=Xp(),r=Me();return{run:(0,G.useCallback)(async(n,i)=>{let a=i?.label??Zp[n],o=U.loading(a,{description:`${a} cluster ${e.name}. Status will update automatically.`,duration:3e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});try{let s=await t({clusterId:e.id,action:n,safeMode:i?.safeMode,strategy:i?.strategy});n!==`stop`&&ce({clusterId:e.id,instanceIds:s?.instanceIds??[],label:Zp[n],allAtOnce:s?.strategy===`parallel`}),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 $p(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 em(e){$p(e).then(e=>{e&&U.info(`Copied to clipboard!`,{icon:(0,K.jsx)(Br,{}),duration:1e3})})}function tm(...e){return(0,G.useMemo)(()=>e.map(e=>()=>em(e)),e)}function nm(){return em}function rm({item:e}){let{cluster:t}=e,n=we(),r=Me(),i=(0,G.useMemo)(()=>c(t),[t]),a=Dc({operationsUrl:i}),o=Bn(t.id),[,s]=Es(Pn.SavedClusterState,null),{view:l,update:f,remove:p,create:m}=wp(t.organizationId,t.id),h=Dp(t.organizationId),{mutate:g,isPending:_}=Jp(),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(!1),[S,C]=(0,G.useState)(!1),[w,T]=(0,G.useState)(!1),[E,D]=(0,G.useState)(null),{run:O,isPending:k}=Qp(t),A=t.status===`RUNNING`,ee=t.status===`STOPPED`,te=t.status===`PARTIAL`,j=(0,G.useMemo)(()=>!!(t.status&&jl.includes(t.status)),[t.status]),M=Bp(t),N=h&&!M,P=u.checkForFabricConnect(t.id),ne=!P&&!!o.user,re=(0,G.useMemo)(()=>!!(t.status&&Ml.includes(t.status)),[t.status]),ie=(0,G.useMemo)(()=>!!(t.status&&Bl(t.status)),[t.status]),ae=f&&!M&&!re&&!Ul(t.status)&&!Hl(t.status),oe=(0,G.useCallback)(async()=>{y(!0);let e=await Gl(t.id).catch(e=>(console.error(`Failed to lookup cluster details, proceeding without checking instances.`,e),null));if(await d({entityId:t.id,instanceClient:a}),e?.instances?.length)for(let t of e.instances)u.setUserForEntity(t,null);u.setUserForEntity(t,null)},[t,a]),se=(0,G.useCallback)(()=>{s(t),n.navigate({to:`/${t.organizationId}/new-cluster`})},[t,n,s]),ce=(0,G.useCallback)(()=>x(!0),[]),le=(0,G.useCallback)(()=>{let e=t.organizationId;g(t.id,{onSuccess:async()=>{await r.invalidateQueries({queryKey:[e],refetchType:`active`}),await n.invalidate(),U.success(`Success`,{description:M?`Cluster successfully removed.`:`Cluster successfully terminated.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),x(!1)},onError:()=>{U.error(`Error`,{description:M?`Failed to remove cluster: ${t.name}`:`Failed to terminate cluster: ${t.name}.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),x(!1)}})},[n,t.organizationId,t.id,t.name,g,M,r]),ue=!l||re?void 0:t.status===`STOPPED`?`/${t.organizationId}/${t.id}/instances`:t.status===`PARTIAL`?`/${t.organizationId}/${t.id}`:j?M?`/${t.organizationId}/${t.id}`:t.fqdn?t.resetPassword?void 0:`/${t.organizationId}/${t.id}`:`/${t.organizationId}/${t.id}/instances`:void 0,de=t.domains?.[0]?.domain||t.fqdn,[fe,pe]=tm(`${de}`,`https://${de}`),me=[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-separator`},j&&f&&!o.isLoading&&(!ne||P)&&{key:`sign-in`,to:`${t.id}/sign-in`,disabled:v,icon:(0,K.jsx)(Bi,{className:`text-green`}),label:`Direct Sign In`},j&&l&&!!i&&!o.isLoading&&ne&&{key:`direct-sign-out`,onClick:oe,disabled:v,label:`Direct Sign Out`},j&&f&&{key:`edit`,to:`${t.id}/edit`,disabled:v,icon:(0,K.jsx)(Ja,{className:`text-purple-600`}),label:M?`Edit`:`Edit Scaling`},ae&&{key:`edit-version`,to:`${t.id}/edit/version`,disabled:v,icon:(0,K.jsx)(wi,{className:`text-fuchsia-300`}),label:`Edit Version`},j&&f&&!1,j&&l&&{key:`instances`,to:`${t.id}/instances`,disabled:v,icon:(0,K.jsx)(Qa,{className:`text-orange-300`}),label:`Instances`},j&&l&&!!o.user&&{key:`deployments`,to:`${t.id}/config/deployments`,disabled:v,icon:(0,K.jsx)(Ba,{className:`text-sky-400`}),label:`Deployments`},N&&(A||ee||te)&&{type:`separator`,key:`container-separator`},N&&(A||ee||te)&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},N&&(ee||te)&&{key:`container-start`,disabled:k,onClick:()=>void O(`start`,{safeMode:!1,strategy:`parallel`}),icon:(0,K.jsx)(Pa,{}),label:`Start`},N&&ee&&{key:`container-start-safe`,disabled:k,onClick:()=>D(`start`),icon:(0,K.jsx)(Ki,{}),label:`Start in safe mode`},N&&(A||te)&&{key:`container-restart`,disabled:k,onClick:()=>T(!0),icon:(0,K.jsx)(Wa,{}),label:`Restart`},N&&A&&{key:`container-restart-safe`,disabled:k,onClick:()=>D(`restart`),icon:(0,K.jsx)(Ki,{}),label:`Restart in safe mode`},N&&(A||te)&&{key:`container-stop`,variant:`destructive`,disabled:k,onClick:()=>C(!0),icon:(0,K.jsx)(fo,{}),label:`Stop`},j&&l&&!!t.fqdn&&{type:`separator`,key:`copy-separator`},j&&l&&!!t.fqdn&&{key:`copy-host-name`,onClick:fe,disabled:v,icon:(0,K.jsx)(Hr,{}),label:`Copy Host Name`},j&&l&&!!t.fqdn&&{key:`copy-api-url`,onClick:pe,disabled:v,icon:(0,K.jsx)(Hr,{}),label:`Copy API URL`},ie&&m&&{key:`try-again`,onClick:se,className:`focus:bg-green/70 focus:text-white`,label:`Try Again`},!re&&p&&j&&{type:`separator`,key:`remove-separator`},!re&&p&&{key:`remove`,onClick:ce,className:`focus:bg-red/70 focus:text-white`,icon:(0,K.jsx)(Eo,{className:`text-red-300`}),label:M?`Remove`:`Terminate`}].filter($c);return(0,K.jsx)(af,{items:re?[]:me,children:(0,K.jsxs)(Vn,{className:`group/cluster relative isolate min-w-0 h-full overflow-hidden border border-border bg-card/30 py-0 gap-0 shadow-sm transition-[background-color,border-color,box-shadow] duration-200 motion-reduce:transition-none ${ue?`cursor-pointer hover:border-primary hover:bg-card/70 hover:shadow-xl hover:shadow-primary/20 hover:ring-2 hover:ring-primary/70 dark:hover:border-violet-400 dark:hover:ring-violet-400/70`:``}`,children:[ue&&(0,K.jsx)(V,{to:ue,"aria-label":`${M||t.fqdn?`Open`:`View`} ${t.name}`,className:`absolute inset-0 z-1 cursor-pointer rounded-[inherit] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring focus-visible:outline-none`}),(0,K.jsxs)(Hn,{className:`gap-3 bg-linear-to-br from-transparent via-primary/5 to-primary/15 dark:from-primary/15 dark:to-transparent px-5 py-5`,children:[(0,K.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2 pt-1`,children:[(0,K.jsxs)(Fs,{variant:e.category===`failed`?`destructive`:e.category===`attention`?`warning`:e.category===`running`?`success`:`secondary`,className:`rounded-full`,children:[(0,K.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`,"aria-hidden":`true`}),e.label]}),(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.hosting})]}),!re&&(0,K.jsxs)(Yo,{children:[(0,K.jsxs)(Xo,{"aria-label":`Cluster options`,onClick:e=>e.stopPropagation(),className:`relative z-10 inline-flex shrink-0 items-center gap-1.5 rounded-md border border-primary/25 bg-background/60 px-2.5 py-1.5 text-xs font-medium text-foreground shadow-sm transition-colors hover:border-primary/60 hover:bg-primary/15 focus-visible:outline-2 focus-visible:outline-ring`,children:[`Options `,(0,K.jsx)(On,{className:`size-3.5`,"aria-hidden":`true`})]}),(0,K.jsx)(Zo,{align:`end`,children:rf(me,`dropdown`)})]})]}),(0,K.jsx)(Un,{children:(0,K.jsx)(`h2`,{className:`break-words text-xl font-semibold leading-snug`,children:t.name})}),(0,K.jsx)(Wn,{className:`flex min-w-0 items-center gap-3 justify-between`,children:de?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`min-w-0 truncate`,title:de,children:de}),(0,K.jsx)(`button`,{type:`button`,"aria-label":`Copy host name`,onClick:e=>{e.stopPropagation(),fe()},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)(Qr,{size:16})}),(0,K.jsx)(`span`,{className:`grow`})]}):(0,K.jsx)(`span`,{children:M?`Self-hosted endpoint`:`Hostname not assigned`})})]}),(0,K.jsx)(Gn,{className:`border-t border-border px-5 py-4`,children:(0,K.jsxs)(`dl`,{className:`grid grid-cols-3 gap-3 text-sm`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`Instances`}),(0,K.jsx)(`dd`,{className:`mt-1 font-medium tabular-nums`,children:e.instanceCount??(0,K.jsxs)(`span`,{title:`Not reported`,children:[(0,K.jsx)(`span`,{"aria-hidden":`true`,children:`—`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Not reported`})]})})]}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`Regions`}),(0,K.jsx)(`dd`,{className:`mt-1 break-words font-medium`,children:e.regions.join(`, `)||`Not reported`})]}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`Harper version`}),(0,K.jsx)(`dd`,{className:`mt-1 break-words font-medium`,children:e.version||(0,K.jsxs)(`span`,{title:`Not reported`,children:[(0,K.jsx)(`span`,{"aria-hidden":`true`,children:`—`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Not reported`})]})})]})]})}),(0,K.jsxs)(Gn,{className:`mt-auto flex flex-col gap-3 border-t border-border px-5 py-4`,children:[(0,K.jsx)(Gp,{cluster:t}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1 text-xs`,children:[e.notices.length?(0,K.jsx)(`ul`,{className:`space-y-1 ${e.category===`failed`?`text-destructive`:`text-amber-800 dark:text-yellow`}`,children:e.notices.map(e=>(0,K.jsx)(`li`,{children:e},e))}):(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:M?`Monitoring managed externally`:e.category===`running`?`Cluster is running`:e.label}),ie&&m&&(0,K.jsx)(`p`,{className:`mt-1 text-muted-foreground`,children:`Open cluster options to retry or manage this cluster.`})]}),j&&l&&(0,K.jsx)(Vp,{cluster:t,hasCardLink:!!ue})]})]}),(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:M?`Remove`:`Terminate`,presentParticiple:M?`Removing`:`Terminating`,nameOfThingBeingDeleted:t.name,isModalOpen:b,hideDataLossWarning:M,setIsModalOpen:e=>x(e),deletionConfirmed:le,deletionPending:_}),(0,K.jsx)(Up,{clusterName:t.name,isPending:k,stopOpen:S,setStopOpen:C,onConfirmStop:()=>{C(!1),O(`stop`,{strategy:`parallel`})},restartOpen:w,setRestartOpen:T,onConfirmRestart:e=>{T(!1),O(`restart`,{safeMode:!1,strategy:e})}}),(0,K.jsx)(Kp,{open:E!==null,setOpen:e=>{e||D(null)},action:E??`restart`,targetName:t.name,scope:`cluster`,isPending:k,onConfirm:()=>{let e=E;D(null),e&&O(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}})]})})}function im(e){return e.filter(e=>!!e&&!(e.status!=null&&Ml.includes(e.status))).map(e=>e.version).filter(e=>!!e)}function am(e,t=[]){let n=im(e);if(n.length<2)return null;let r=n.reduce((e,t)=>sf(t,e)>0?t:e),i=n.filter(e=>e!==r);if(i.length===0)return null;let a=new Set(t);return{latest:r,behindCount:i.length,total:n.length,ambiguous:i.some(e=>a.has(e))}}var om={search:``,category:`all`,region:``,sort:`attention`};function sm(e,t){let n=Bp(e),r=e.instances?.filter(e=>!Ml.includes(e.status??``)),i=[...(e.plans??[]).map(e=>e.region||t?.get(e.regionId??``)).filter(Boolean),...(r??[]).map(e=>e.region||t?.get(e.regionId??``))],a=[...new Set(i.filter(e=>!!e))].sort(),o=[...new Set((r??[]).map(e=>e.version).filter(Boolean))].sort(),s=e.status,c=s===`FAILED`||s===`ERROR`||!n&&r?.some(e=>e.status===`FAILED`||e.status===`ERROR`),l=s===`PENDING_UPGRADE`||!n&&r?.some(e=>e.status===`PENDING_UPGRADE`),u=!n&&r?am(r):null,d=Ul(s)||Hl(s)||[`STARTING`,`STOPPING`,`RESTARTING`].includes(s??``),f=[];c&&f.push(`Failure reported`),l&&f.push(`Upgrade pending`),u&&f.push(`${u.behindCount} ${u.behindCount===1?`instance`:`instances`} on an older version`),s===`PARTIAL`&&f.push(`Some instances are not running`),s===`UPDATED`&&f.push(`Waiting for running status`),s===`STOPPED`&&f.push(`Cluster stopped`),e.resetPassword&&f.push(`Setup required`),d&&!l&&f.push(Cl(s));let p=c?`failed`:f.length?`attention`:jl.includes(s??``)?`running`:`other`,m=Date.parse(e.createdAt??``);return{cluster:e,category:p,label:c&&s!==`FAILED`&&s!==`ERROR`?`Instance failure`:s?Cl(s):`Status unknown`,notices:f,regions:a,instanceCount:r?.length,version:o.length>1?`Mixed versions`:o[0],hosting:n?`Self-hosted`:e.plans?.length?`Harper Cloud`:`Hosting unknown`,createdAt:Number.isFinite(m)?m:-1/0,searchText:[e.name,e.id,e.fqdn,...(e.domains??[]).map(e=>e.domain),...a].filter(Boolean).join(` `).toLowerCase()}}function cm(e,t){let n=e.filter(e=>e.status!==`TERMINATED`&&e.status!==`REMOVED`).map(e=>sm(e,t)),r={running:0,attention:0,failed:0,other:0};for(let e of n)r[e.category]++;return{items:n,counts:r,regions:[...new Set(n.flatMap(e=>e.regions))].sort()}}var lm={failed:0,attention:1,other:2,running:3};function um(e,t){let n=t.search.trim().toLowerCase();return e.filter(e=>(t.category===`all`||e.category===t.category)&&(!t.region||e.regions.includes(t.region))&&(!n||e.searchText.includes(n))).sort((e,n)=>t.sort===`attention`&&e.category!==n.category?lm[e.category]-lm[n.category]:t.sort===`newest`&&e.createdAt!==n.createdAt?e.createdAt>n.createdAt?-1:1:e.cluster.name.localeCompare(n.cluster.name)||e.cluster.id.localeCompare(n.cluster.id))}async function dm({organizationId:e,availableHosts:t}={}){let{data:n}=await N.get(`/Region/`,{params:{availableHosts:t,organizationId:e}});return n}function fm({organizationId:e,availableHosts:t}={}){return z({queryKey:[e,`regionLocations`,t],queryFn:()=>dm({organizationId:e,availableHosts:t}),retry:!1})}function pm({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] relative ${t??``}`,children:e})]})}var mm=`studio:sidebar-help:minimized:v1`;function hm({items:e,ariaLabel:t}){let[n,r]=(0,G.useState)(()=>{try{return window.localStorage.getItem(mm)===`1`}catch{return!1}}),i=(0,G.useId)();return(0,K.jsxs)(`div`,{className:`section-rail`,children:[(0,K.jsxs)(`div`,{className:`section-rail-navigation`,children:[(0,K.jsx)(Ts,{}),(0,K.jsx)(fs,{items:e,ariaLabel:t})]}),(0,K.jsx)(`div`,{className:`section-rail-help-space`,children:(0,K.jsxs)(`section`,{"aria-label":`Need help?`,className:`section-rail-help rounded-xl border border-primary/25 bg-linear-to-br from-primary/15 via-card/50 to-card/30 p-4 shadow-sm`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Ba,{className:`size-5 text-primary dark:text-violet-300`,"aria-hidden":`true`}),(0,K.jsx)(`p`,{className:`text-sm font-semibold`,children:`Need help?`})]}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>{let e=!n;r(e);try{window.localStorage.setItem(mm,e?`1`:`0`)}catch{}},"aria-label":n?`Expand help card`:`Minimize help card`,"aria-expanded":!n,"aria-controls":i,className:`flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-primary/10 hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,children:n?(0,K.jsx)(An,{className:`size-4`}):(0,K.jsx)(On,{className:`size-4`})})]}),(0,K.jsxs)(`div`,{id:i,hidden:n,children:[(0,K.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed text-muted-foreground`,children:`Explore the docs or join our community on Discord.`}),(0,K.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-x-4 gap-y-3 text-xs font-medium`,children:[(0,K.jsxs)(`a`,{href:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 rounded-sm hover:underline focus-visible:outline-2 focus-visible:outline-ring`,children:[(0,K.jsx)(ur,{className:`size-3.5`}),`View docs`,(0,K.jsx)(`span`,{className:`sr-only`,children:`(opens in a new tab)`})]}),(0,K.jsxs)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 rounded-sm hover:underline focus-visible:outline-2 focus-visible:outline-ring`,children:[(0,K.jsx)(`span`,{className:`[&_svg]:size-3.5`,children:(0,K.jsx)(Ms,{})}),`Join Discord`,(0,K.jsx)(`span`,{className:`sr-only`,children:`(opens in a new tab)`})]})]})]})]})})]})}var gm=x(`relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90`,warning:`border-amber-500/50 text-amber-600 dark:text-amber-400 bg-amber-50/50 dark:bg-amber-950/20 [&>svg]:text-amber-600 dark:[&>svg]:text-amber-400`}},defaultVariants:{variant:`default`}});function _m({className:e,variant:t,...n}){return(0,K.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:P(gm({variant:t}),e),...n})}function vm({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`alert-title`,className:P(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function ym({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`alert-description`,className:P(`text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed`,e),...t})}function bm(e){let t=(0,G.useCallback)(()=>{let t=le(e);return t?JSON.stringify(t):``},[e]),n=(0,G.useSyncExternalStore)(de,t);return(0,G.useMemo)(()=>n?JSON.parse(n):void 0,[n])}function xm(){return(0,G.useSyncExternalStore)(de,ae)}var Sm=5e3;function Cm({entityId:e,clusterId:t,noun:n,className:r}){let i=bm(e);if(F({...ql(t,Sm),enabled:!!i&&!!t}),!i)return null;let a=ne(i,{proxied:!!e&&o(e)});return(0,K.jsx)(`div`,{className:r,children:(0,K.jsxs)(_m,{variant:`warning`,role:`status`,"aria-live":`polite`,children:[(0,K.jsx)(Xi,{className:`animate-spin`}),(0,K.jsxs)(vm,{children:[i.label,` `,n]}),(0,K.jsx)(ym,{children:a?`Studio is holding its requests to this ${n} until it's back online, then refreshes what's shown here.`:`Instances are restarting one at a time, so the cluster stays available. Brief connection errors are expected and hidden until it finishes.`})]})})}function wm({children:e}){let{organizationId:t,clusterId:n}=B({strict:!1}),{view:r,update:i}=wp(t,n),{data:a}=F(ql(n,!1)),o=a?Bp(a):!1,s=`/${t}/${n}`,c=[{to:s,label:`Overview`,icon:Wi,exact:!0},r&&!o&&{to:`${s}/usage`,label:`Usage`,icon:Sr},i&&{to:`${s}/edit`,label:o?`Configuration`:`Scaling`,icon:Si,exact:!0},i&&!o&&{to:`${s}/edit/version`,label:`Version`,icon:bo,exact:!0},i&&!o&&{to:`${s}/domains`,label:`Domains`,icon:Ei},r&&{to:`${s}/instances`,label:`Instances`,icon:Qa}].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:`section-rail-aside md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,K.jsx)(hm,{items:c,ariaLabel:`Cluster sections`})}),(0,K.jsxs)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:[(0,K.jsx)(Cm,{entityId:n,clusterId:n,noun:`cluster`,className:`mb-4`}),e]})]})})}async function Tm(e){let{data:t}=await N.get(`/Plan/`,{params:{organizationId:e}});return t}function Em(e){return z({queryKey:[e,`instancePlan`],queryFn:()=>Tm(e),retry:!1})}var Dm=[`stable`,`next`,`beta`,`alpha`];function Om(e){let t=Dm.indexOf(e);return t===-1?Dm.length:t}function km(e){let t=new Map;for(let n of e){let e=t.get(n.version),r=!e||Om(n.name)<Om(e.name)?n:e,i=n.scoped||e?.scoped;t.set(n.version,i&&!r.scoped?{...r,scoped:!0}:r)}return[...t.values()]}async function Am(e){let{data:t}=await N.get(`/HarperVersions/`,{params:{organizationId:e}}),n=t;return{...n,value:km(n.value)}}function jm(e){return z({queryKey:[e,`HarperVersions`],queryFn:()=>Am(e),staleTime:6e4,retry:!1})}function Mm(e){return(t,n)=>t[e]===n[e]?0:t[e]>n[e]?1:-1}function Nm(e){let t=e.split(`.`).map(Number);return(t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0}function Pm(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 Fm(e,t){return e.instanceFqdn===t.instanceFqdn?e.operationsApiPort-t.operationsApiPort:Pm(e.instanceFqdn)&&Pm(t.instanceFqdn)?Nm(e.instanceFqdn)-Nm(t.instanceFqdn):e.instanceFqdn>t.instanceFqdn?1:-1}function Im(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 Lm(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 Rm(e,t,n){let r=Im(e,t),i={};for(let e in r)i[e]=Lm(r[e],n);return i}function zm({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 Bm({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)(zm,{width:s,animated:!1})]})}async function Vm(e){let{data:t}=await N.post(`/Cluster/`,e,{timeout:0});return t}function Hm(){return R({mutationFn:e=>Vm(e)})}async function Um(e){let{id:t,...n}=e,{data:r}=await N.put(`/Cluster/${t}`,n,{timeout:0});return r}function Wm(){return R({mutationFn:e=>Um(e)})}var Gm=`ENTERPRISE`;function Km(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 qm(e,t,n=`-`){let r=t.split(n)[0];return e.findIndex(e=>e.startsWith(r))!==-1}function Jm(e){return e.replace(/[^a-zA-Z0-9]/g,`-`).replace(/([a-z])([A-Z])/g,`$1-$2`).toLowerCase().replace(/-+/g,`-`).replace(/^-+|-+$/g,``)}function Ym(e){return e!==void 0&&e>0}async function Xm(e){await N.put(`/Payment/`,e)}function Zm(){return R({mutationFn:e=>Xm(e)})}function Qm(e){let{mutate:t}=Zm();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 $m=(0,G.createContext)(null);function eh(){return(0,G.useContext)($m)}var th=t(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),nh=t(((e,t)=>{var n=th();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}})),rh=e(t(((e,t)=>{t.exports=nh()()}))(),1);function ih(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 ah(e){if(Array.isArray(e))return e}function oh(e,t,n){return(t=hh(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function sh(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 ch(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
11
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function lh(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 uh(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?lh(Object(n),!0).forEach(function(t){oh(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lh(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function dh(e,t){if(e==null)return{};var n,r,i=fh(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 fh(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 ph(e,t){return ah(e)||sh(e,t)||_h(e,t)||ch()}function mh(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 hh(e){var t=mh(e,`string`);return typeof t==`symbol`?t:t+``}function gh(e){"@babel/helpers - typeof";return gh=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},gh(e)}function _h(e,t){if(e){if(typeof e==`string`)return ih(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)?ih(e,t):void 0}}var vh=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])},yh=function(e){var t=G.useRef(e);return G.useEffect(function(){t.current=e},[e]),t.current},bh=function(e){return e!==null&&gh(e)===`object`},xh=`[object Object]`,Sh=function e(t,n){if(t===n)return!0;if(!bh(t)||!bh(n))return t===n;var r=Array.isArray(t);if(r!==Array.isArray(n))return!1;var i=Object.prototype.toString.call(t)===xh;if(i!==(Object.prototype.toString.call(n)===xh))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])})},Ch=function(e,t,n){return bh(e)?Object.keys(e).reduce(function(r,i){var a=!bh(t)||!Sh(e[i],t[i]);return n.includes(i)?(a&&console.warn(`Unsupported prop change: options.${i} is not a mutable property.`),r):a?uh(uh({},r||{}),{},oh({},i,e[i])):r},null):null},wh=G.createContext(null);wh.displayName=`ElementsContext`;var Th=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};rh.default.any,rh.default.object;var Eh=function(e){return Th(G.useContext(wh),e)},Dh=function(){return Eh(`calls useElements()`).elements};rh.default.func.isRequired;var Oh=G.createContext(null);Oh.displayName=`CheckoutContext`;var kh=G.createContext(null);kh.displayName=`CheckoutSdkContext`;var Ah=function(e){var t=G.useContext(kh),n=G.useContext(wh);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 Th(n,e)},jh=[`mode`],Mh=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},Nh=function(e,t,n){var r=`${Mh(e)}Element`,i=t?function(e){Ah(`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=Ah(`mounts <${r}>`),w=`elements`in C?C.elements:null,T=`checkoutSdk`in C?C.checkoutSdk:null,E=ph(G.useState(null),2),D=E[0],O=E[1],k=G.useRef(null),A=G.useRef(null);vh(D,`blur`,s),vh(D,`focus`,c),vh(D,`escape`,d),vh(D,`click`,f),vh(D,`loaderror`,p),vh(D,`loaderstart`,m),vh(D,`networkschange`,h),vh(D,`confirm`,g),vh(D,`cancel`,_),vh(D,`shippingaddresschange`,v),vh(D,`shippingratechange`,y),vh(D,`savedpaymentmethodremove`,b),vh(D,`savedpaymentmethodupdate`,x),vh(D,`availablepaymentmethodschange`,S),vh(D,`change`,u);var ee;l&&(ee=e===`expressCheckout`?l:function(){l(D)}),vh(D,`ready`,ee),G.useLayoutEffect(function(){if(k.current===null&&A.current!==null&&(w||T)){var t=null;if(T){var n=T,i=T;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=dh(o,jh);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=T.createCurrencySelectorElement();break;case`taxId`:t=n.createTaxIdElement(o);break;case`contactDetails`:t=n.createContactDetailsElement();break;case`linkSignup`:if(`createLinkSignupElement`in T)t=T.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));k.current=t,O(t),t&&t.mount(A.current)}},[w,T,o]);var te=yh(o);return G.useEffect(function(){if(k.current){var e=Ch(o,te,[`paymentRequest`]);e&&`update`in k.current&&k.current.update(e)}},[o,te]),G.useLayoutEffect(function(){return function(){if(k.current&&typeof k.current.destroy==`function`)try{k.current.destroy(),k.current=null}catch{}}},[]),G.createElement(`div`,{id:n,className:i,ref:A})};return i.propTypes={id:rh.default.string,className:rh.default.string,onChange:rh.default.func,onBlur:rh.default.func,onFocus:rh.default.func,onReady:rh.default.func,onEscape:rh.default.func,onClick:rh.default.func,onLoadError:rh.default.func,onLoaderStart:rh.default.func,onNetworksChange:rh.default.func,onConfirm:rh.default.func,onCancel:rh.default.func,onShippingAddressChange:rh.default.func,onShippingRateChange:rh.default.func,onSavedPaymentMethodRemove:rh.default.func,onSavedPaymentMethodUpdate:rh.default.func,onAvailablePaymentMethodsChange:rh.default.func,options:rh.default.object},i.displayName=r,i.__elementType=e,i},Ph=typeof window>`u`,Fh=G.createContext(null);Fh.displayName=`EmbeddedCheckoutProviderContext`;var Ih=function(){return Ah(`calls useStripe()`).stripe};Nh(`auBankAccount`,Ph),Nh(`card`,Ph),Nh(`cardNumber`,Ph),Nh(`cardExpiry`,Ph),Nh(`cardCvc`,Ph),Nh(`currencySelector`,Ph),Nh(`iban`,Ph);var Lh=Nh(`payment`,Ph);Nh(`expressCheckout`,Ph),Nh(`paymentRequestButton`,Ph),Nh(`linkAuthentication`,Ph),Nh(`linkSignup`,Ph),Nh(`contactDetails`,Ph);var Rh=Nh(`address`,Ph);Nh(`shippingAddress`,Ph),Nh(`paymentMethodMessaging`,Ph),Nh(`taxId`,Ph),Nh(`issuingCardNumberDisplay`,Ph),Nh(`issuingCardCvcDisplay`,Ph),Nh(`issuingCardExpiryDisplay`,Ph),Nh(`issuingCardPinDisplay`,Ph),Nh(`issuingCardCopyButton`,Ph),Nh(`terms`,Ph);function zh({hasExistingBilling:e,onPaymentAdded:t,onSaveStateForBillingRedirect:n}){let{organizationId:r}=B({strict:!1}),i=Ih(),a=eh(),o=Dh(),[s,c]=(0,G.useState)(!1),l=Qm(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)(Lh,{}),(0,K.jsx)(Rh,{options:{mode:`billing`}}),(0,K.jsxs)(`div`,{className:`mt-4 flex gap-8 items-center`,children:[(0,K.jsxs)(H,{disabled:!i||!o||s,variant:`submit`,children:[(0,K.jsx)(Ka,{}),` 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)(H,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Cancel`})]})]})]})}var Bh=`dahlia`,Vh=`https://js.stripe.com`,Hh=`${Vh}/${Bh}/stripe.js`,Uh=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,Wh=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/,Gh=`loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used`,Kh=function(e){return Uh.test(e)||Wh.test(e)},qh=function(){for(var e=document.querySelectorAll(`script[src^="${Vh}"]`),t=0;t<e.length;t++){var n=e[t];if(Kh(n.src))return n}return null},Jh=function(e){var t=e&&!e.advancedFraudSignals?`?advancedFraudSignals=false`:``,n=document.createElement(`script`);n.src=`${Hh}${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},Yh=null,Xh=null,Zh=null,Qh=function(e){return function(t){e(Error(`Failed to load Stripe.js`,{cause:t}))}},$h=function(e,t){return function(){window.Stripe?e(window.Stripe):t(Error(`Stripe.js not available`))}},eg=function(e){return Yh===null?(Yh=new Promise(function(t,n){if(typeof window>`u`||typeof document>`u`){t(null);return}if(window.Stripe&&e&&console.warn(Gh),window.Stripe){t(window.Stripe);return}try{var r=qh();if(r&&e)console.warn(Gh);else if(!r)r=Jh(e);else if(r&&Zh!==null&&Xh!==null){var i;r.removeEventListener(`load`,Zh),r.removeEventListener(`error`,Xh),(i=r.parentNode)==null||i.removeChild(r),r=Jh(e)}Zh=$h(t,n),Xh=Qh(n),r.addEventListener(`load`,Zh),r.addEventListener(`error`,Xh)}catch(e){n(e);return}}),Yh.catch(function(e){return Yh=null,Promise.reject(e)})):Yh},tg,ng=function(){return tg||(tg=eg(null).catch(function(e){return tg=null,Promise.reject(e)}),tg)};Promise.resolve().then(function(){return ng()}).catch(function(e){console.warn(e)});async function rg(e){let{data:t}=await N.post(`/StripeAccount/`,e);return t}function ig(){return R({mutationFn:e=>rg(e)})}async function ag(e){let{data:t}=await N.post(`/Payment/`,{organizationId:e.organizationId});return t}function og(){return R({mutationFn:e=>ag(e)})}function sg(e){let{enabled:t,existingStripeId:n,organizationId:r}=e,{mutate:i}=ig(),{mutate:a}=og(),[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 cg({children:e}){let{organizationId:t}=B({strict:!1}),{data:n}=F(ws(t)),r=sg({organizationId:t,enabled:!!n,existingStripeId:n?.stripeId}),i=Ds();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 lg({onPaymentAdded:e,onSaveStateForBillingRedirect:t}){let{organizationId:n}=B({strict:!1}),{data:r}=F(ws(n)),i=r?.billing,a=i?.paymentMethod;return(0,K.jsxs)(cg,{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)(zh,{hasExistingBilling:!!i,onSaveStateForBillingRedirect:t,onPaymentAdded:e})]})}var ug=function(e){return e.PASS=`pass`,e.FAIL=`fail`,e.PENDING=`pending`,e.ERROR=`error`,e}({});function dg(e){switch(e){case ug.PASS:return`success`;case ug.FAIL:case ug.ERROR:return`destructive`;case ug.PENDING:default:return`default`}}function fg(e){switch(e){case ug.PASS:return`READY`;case ug.FAIL:case ug.ERROR:case ug.PENDING:default:return e.toUpperCase()}}function pg(e,t){return`${String(e).padStart(2,`0`)}/${String(t%100).padStart(2,`0`)}`}function mg(e){let{onSaveStateForBillingRedirect:t,onReplacingPaymentMethod:n}=e??{},{organizationId:r}=B({strict:!1}),{update:i}=bp(r),{data:a,refetch:o}=F(ws(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)(au,{}),`, 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 `,pg(s.expMonth,s.expYear),`)`]}):null,s.status?(0,K.jsxs)(K.Fragment,{children:[`—`,` `,(0,K.jsx)(Fs,{variant:dg(s.status),children:fg(s.status)})]}):null]}),i&&(0,K.jsx)(`div`,{className:`mt-2 mb-6`,children:(0,K.jsx)(H,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Replace Payment Method`})})]}):i?(0,K.jsx)(lg,{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 hg({clusterId:e,isPending:t,onGoBackToDetails:n,onSaveStateForBillingRedirect:r,onSubmit:i,organizationId:a,selectedPlan:o}){let{data:s}=F(ws(a)),c=s?.billing,l=s?.type===Gm,u=l||c?.paymentMethod?.status===ug.PASS,[d,f]=(0,G.useState)(!1),p=Ym(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)(H,{type:`button`,variant:`defaultOutline`,disabled:t,onClick:n,children:[(0,K.jsx)(er,{}),` Back to Details`]}),(0,K.jsxs)(H,{disabled:t||!u||d,type:`submit`,variant:`submit`,onClick:i,children:[e?`Edit Cluster`:`Create New Cluster`,` `,(0,K.jsx)(nr,{})]})]})});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)(au,{overEmail:!0}),`, we are here to help.`]})]}),m]});let h=p&&`, or ${_(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`,h,`, 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)(au,{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)(mg,{onSaveStateForBillingRedirect:r,onReplacingPaymentMethod:f}),m]})}function gg({hostname:e,testId:t,labelledBy:n}){return(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3 rounded-full border border-border/60 bg-background/70 px-4 py-3 shadow-inner`,children:[(0,K.jsx)(Qi,{className:`size-4 shrink-0 text-muted-foreground`,"aria-hidden":`true`}),(0,K.jsx)(`p`,{className:`min-w-0 overflow-x-auto whitespace-nowrap font-mono text-xs leading-5`,"data-testid":t,role:`region`,"aria-labelledby":n,"aria-label":n?void 0:`Address preview`,tabIndex:0,children:e})]})}var _g=/(^$|^(?: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,vg=65535,yg=M().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.`),bg=S({clusterName:M().nonempty(`Please enter a cluster name.`).max(255,`Cluster name cannot be longer than 255 characters long.`),abbreviatedName:C([O(``),E(),yg]).optional(),fqdn:M().regex(_g,`Please enter a valid host name without the port or any path.`).optional(),version:M().optional(),deploymentDescription:M().nonempty(`Please select a deployment tier.`),performanceDescription:M().nonempty(`Please select a performance tier.`),regionPlans:D(S({regionName:M().nonempty(`Please select a region.`),latencyDescription:M().nonempty(`Please select a latency tier.`)})).max(50,{error:`A maximum of 50 regions can be selected for each cluster. `}),instances:D(S({secure:ee([`true`,`false`]),fqdn:M().nonempty(`Please enter the host name of your instance.`).regex(_g,`Please enter a valid host name without the port or any path.`),port:T().min(0,`Positive thinking only, please.`).max(vg,`That port number is too high.`).optional()})).max(100,{error:`A maximum of 100 instances can be added to each cluster.`}),skipToBilling:A().optional(),skipGtmWait:A().optional(),sourceClusterId:M().optional()});function xg({calculatedNames:e,disabled:t,form:n}){let r=(0,G.useId)();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:yg.maxLength,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:e.suggestedAbbreviatedName,disabled:t})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`col-span-3 min-w-0 space-y-2`,children:[(0,K.jsx)(`p`,{id:r,className:`text-sm font-medium`,children:`Full Host Name`}),(0,K.jsx)(gg,{hostname:e.fullHostName,testId:`cluster-hostname-preview`,labelledBy:r})]})]})}function Sg({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 Cg({...e}){return(0,K.jsx)(vn,{"data-slot":`select`,...e})}function wg({...e}){return(0,K.jsx)(ft,{"data-slot":`select-group`,...e})}function Tg({...e}){return(0,K.jsx)(vt,{"data-slot":`select-value`,...e})}function Eg({className:e,children:t,...n}){return(0,K.jsxs)(mt,{"data-slot":`select-trigger`,className:P(`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)(ut,{asChild:!0,children:(0,K.jsx)(On,{className:`size-4 text-foreground dark:text-white`})})]})}function Dg({className:e,children:t,position:n=`popper`,...r}){return(0,K.jsx)(wt,{children:(0,K.jsxs)(It,{"data-slot":`select-content`,className:P(`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)(Ag,{}),(0,K.jsx)(St,{className:P(`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)(jg,{})]})})}function Og({className:e,...t}){return(0,K.jsx)(tn,{"data-slot":`select-label`,className:P(`px-2 py-1.5 text-sm font-medium`,e),...t})}function kg({className:e,children:t,...n}){return(0,K.jsxs)(Ot,{"data-slot":`select-item`,className:P(`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)(at,{children:t}),(0,K.jsx)(`span`,{className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,K.jsx)(rn,{children:(0,K.jsx)(kn,{className:`size-4`})})})]})}function Ag({className:e,...t}){return(0,K.jsx)(At,{"data-slot":`select-scroll-up-button`,className:P(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,K.jsx)(An,{className:`size-4`})})}function jg({className:e,...t}){return(0,K.jsx)(Et,{"data-slot":`select-scroll-down-button`,className:P(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,K.jsx)(On,{className:`size-4`})})}var Mg={Colocated:`Shared infrastructure for optimized value`,Dedicated:`Dedicated infrastructure for consistent performance`,"Self-Hosted":`Your own infrastructure`};function Ng({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)(Sg,{}),children:(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...r,disabled:t,onValueChange:e=>{r.onChange(e),n.trigger()},children:[(0,K.jsx)(Eg,{className:`w-full h-auto`,children:(0,K.jsx)(Tg,{placeholder:`Choose Tier`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:e.map(e=>(0,K.jsxs)(kg,{value:e,children:[(0,K.jsx)(`dt`,{className:`text-left font-bold text-sm/6`,children:e}),Mg[e]&&(0,K.jsx)(`dd`,{className:`font-light`,children:Mg[e]})]},e))})})]})})}),(0,K.jsx)(Q,{})]})})}function Pg({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 Fg({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:bg.shape.clusterName.maxLength,autoCapitalize:`words`,disabled:t,...n})}),(0,K.jsx)(Q,{})]})})}function Ig({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)(Sg,{}),children:(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...r,onValueChange:e=>{r.onChange(e),t.trigger()},disabled:!e?.length,children:[(0,K.jsx)(Eg,{className:`w-full h-auto`,children:(0,K.jsx)(Tg,{placeholder:`Choose Tier`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:e.map(e=>(0,K.jsxs)(kg,{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)(Fs,{children:`Premium`})]}),e.description&&(0,K.jsx)(`dd`,{className:`text-left font-light`,children:e.description})]},e.name))})})]})})}),(0,K.jsx)(Q,{})]})})}function Lg({className:e,...t}){let{formDescriptionId:n}=kl();return(0,K.jsx)(`p`,{"data-slot":`form-description`,id:n,className:P(`text-muted-foreground text-sm`,e),...t})}function Rg({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)(Lg,{children:`Apply changes immediately without waiting for each instance to be taken out of the load balancer (faster, but potentially less safe).`})]})})}function zg({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)(Sg,{}),children:(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...i,disabled:t,onValueChange:e=>{i.onChange(e),n.trigger()},children:[(0,K.jsx)(Eg,{className:`w-full h-auto`,children:(0,K.jsx)(Tg,{placeholder:`Choose Version`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:r?.value.map(e=>(0,K.jsxs)(kg,{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 Bg=new RegExp(/^\d+/);function Vg(e,t){let n=parseInt(e.match(Bg)?.[0]||`0`,10),r=parseInt(t.match(Bg)?.[0]||`0`,10);return n===r?0:n>r?1:-1}var Hg=[`B`,`KB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],Ug=[`secs`,`mins`,`hrs`],Wg={bytes:1e3,secs:60};function Gg(e,t,n){let r,i;switch(t){case`bytes`:r=Hg,i=Wg.bytes;break;case`secs`:r=Ug,i=Wg.secs;break;default:return e}let a=r.indexOf(n);return a===-1?e:e/i**a}function Kg(e,t){let n,r;switch(e){case`bytes`:n=Hg,r=Wg.bytes;break;case`secs`:n=Ug,r=Wg.secs;break;default:return e}let i=0;for(;t>=r&&i<n.length-1;)t/=r,i++;return n[i]}function qg(e,t=1){let n=e*t,r=Kg(`bytes`,n),i=Gg(n,`bytes`,r);return`${new Intl.NumberFormat().format(Math.round(i))} ${r}`}function Jg(e){return new Intl.NumberFormat().format(e)}var Yg=[`K`,`M`,`B`,`T`,`Qa`,`Qi`,`Sx`,`Sp`,`Oc`,`No`,`Dc`];function Xg(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<Yg.length-1);return`${Jg(Math.round(n))} ${Yg[r]}`}function Zg(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 Qg(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 $g({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=Ym(c?.expirationMonths)&&c.expirationMonths<1e3&&c.expirationMonths,f=t?.purchasedBlockMultiplier??1,p=(0,G.useMemo)(()=>c?[Ym(c.totalReadCount)&&{label:`Total Reads`,value:Xg(c.totalReadCount*f)},Ym(c.totalReadsBytes)&&{label:`Total Read Transfer`,value:`${qg(c.totalReadsBytes*f)}`},Ym(c.readsPerMinuteCount)&&{label:`Read Rate`,value:`${Xg(c.readsPerMinuteCount*60*f)}/hr`},Ym(c.readsPerMinuteBytes)&&{label:`Read Bandwidth`,value:`${qg(c.readsPerMinuteBytes*60*f)}/hr`},Ym(c.totalWriteCount)&&{label:`Total Writes`,value:Xg(c.totalWriteCount)},Ym(c.totalWritesBytes)&&{label:`Total Write Transfer`,value:`${qg(c.totalWritesBytes)}`},Ym(c.writesPerMinuteCount)&&{label:`Write Rate`,value:`${Xg(c.writesPerMinuteCount*60)}/hr`},Ym(c.writesPerMinuteBytes)&&{label:`Write Bandwidth`,value:`${qg(c.writesPerMinuteBytes*60)}/hr`},Ym(c.totalRealTimeMessageDeliveries)&&{label:`Total Real-Time Messages`,value:`${Xg(c.totalRealTimeMessageDeliveries*f)} messages`},Ym(c.totalRealTimeMessageDeliveryBytes)&&{label:`Total Real-Time Message Transfer`,value:`${qg(c.totalRealTimeMessageDeliveryBytes*f)}`},Ym(c.realTimeMessageDeliveriesPerMinute)&&{label:`Real-Time Message Rate`,value:`${Xg(c.realTimeMessageDeliveriesPerMinute*60*f)}/hr`},Ym(c.realTimeMessageDeliveryBytesPerMinute)&&{label:`Real-Time Message Bandwidth`,value:`${qg(c.realTimeMessageDeliveryBytesPerMinute*60*f)}/hr`},Ym(c.tlsHandshakes)&&{label:`TLS Handshakes`,value:`${Xg(c.tlsHandshakes*60*f)}`},Ym(c.applicationComputeHours)&&{label:`Application Compute Hours`,value:`${Xg(c.applicationComputeHours*f)}`},!!l&&Ym(l.storageGb)&&{label:`Storage`,value:`${qg(l.storageGb*1e9)}`},!!l&&Ym(l.cpuCores)&&{label:`Maximum CPU Cores`,value:`${Xg(l.cpuCores)}`},!!l&&Ym(l.memoryMb)&&{label:`Memory`,value:`${l.memoryMb/1024} GB`},!!u&&{label:`Cloud Instance Type`,value:u},!!d&&{label:`Expiration`,value:_(d,`month`,`months`)},!!t?.id&&{label:`Region ID`,value:t.id},!!e?.id&&{label:`Plan ID`,value:e.id}].filter($c):[],[d,t,e,f]);if(!c)return``;if(!Ym(c.totalReadCount))return`This plan has no usage limits.`;let m=r?`for the contracted rate`:`for the price listed above`,h=d?` in ${_(d,`month`,`months`)} or`:``,g=Ym(c.readsPerMinuteCount)?c.readsPerMinuteCount*f:0,v=Ym(c.writesPerMinuteCount)?c.writesPerMinuteCount:0,y=c.totalReadCount*f,b=Ym(c.totalWriteCount)?c.totalWriteCount:0,x=[g>0&&{icon:Si,label:`Read Rate`,value:`${Xg(g)}/min`,fill:Qg(g,n.readRate)},y>0&&{icon:or,label:`Total Reads`,value:Xg(y),fill:Qg(y,n.totalReads)},v>0&&{icon:Si,label:`Write Rate`,value:`${Xg(v)}/min`,fill:Qg(v,n.writeRate)},b>0&&{icon:Qn,label:`Total Writes`,value:Xg(b),fill:Qg(b,n.totalWrites)},!!d&&{icon:br,label:`License Term`,value:_(d,`month`,`months`)}].filter($c);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)(H,{type:`button`,variant:`link`,className:`text-foreground`,onClick:s,children:[`Learn More `,a?(0,K.jsx)(En,{}):(0,K.jsx)(nr,{})]})]}),(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)(e_,{icon:e.icon,label:e.label,value:e.value,fill:e.fill},e.label))}),(0,K.jsx)(J,{children:(0,K.jsxs)(`dl`,{className:P(`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`,h,` `,`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:P(`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 e_({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 t_({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(Vg).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:`min-w-0 basis-full sm:flex-1`,children:[(0,K.jsxs)(Z,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(fa,{className:`size-4 shrink-0`}),`Region `,t.fields.length>1?r+1:``]}),(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Region`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:u.map(e=>(0,K.jsx)(kg,{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)(Fs,{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:`min-w-0 basis-full sm:flex-1`,children:[(0,K.jsxs)(Z,{children:[`Estimated `,d?`P95`:`P90`,` Latency, Distribution`]}),(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,disabled:!m?.length,children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Latency Tier`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:m.map(e=>(0,K.jsx)(kg,{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)(Fs,{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)(H,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:v,children:[(0,K.jsx)(Eo,{}),` `,(0,K.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})}),(0,K.jsx)($g,{selectedPlan:s,selectedRegion:i[f]?.[p],usageScale:o,isEnterprise:c,cloudProvider:l})]})}function n_({form:e,regionLocations:t,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,usageScale:i,selectedPlan:a,totalPrice:o,isEnterprise:s,cloudProvider:c}){let l=e.watch(`regionPlans`),u=en({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)(t_,{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)(H,{type:`button`,variant:`positiveOutline`,onClick:f,children:[(0,K.jsx)(Ia,{}),`Add Additional Region Usage`]})})]}):(0,K.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,K.jsx)(Ho,{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)(au,{}),`.`]})}})})}function r_({control:e,fieldArray:t,form:n,index:r}){let i=(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)(Cg,{...e,onValueChange:t=>{e.onChange(t),n.trigger()},children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`https://`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(kg,{value:`true`,children:`https://`}),(0,K.jsx)(kg,{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:vg,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:String(g),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)(H,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:i,children:[(0,K.jsx)(Eo,{}),` `,(0,K.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})})]})}function i_({form:e}){let t=en({control:e.control,name:`instances`}),n=(0,G.useCallback)(()=>{t.append({secure:`true`,fqdn:``,port:g})},[t]);return(0,K.jsxs)(K.Fragment,{children:[t.fields.map((n,r)=>(0,K.jsx)(r_,{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)(H,{type:`button`,variant:`positiveOutline`,onClick:n,children:[(0,K.jsx)(Ia,{}),`Add Instance`]})})]})}function a_(e,t){return!e.allowedRegionIds?.length||e.allowedRegionIds.includes(t)}function o_(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=>a_(t,e.id)),i=o.some(t=>a_(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 s_({priceSummary:e,calculatedNames:t,clusterId:n,deploymentToPerformanceToPlan:r,form:i,harperVersions:a,isEnterprise:o,cloudProvider:s,isPending:c,mode:l,partialUpgrade:u,regionLocations:d,regionNameToLatencyToRegion:f,selectedDeployment:p,selectedPerformance:m,selectedPlan:h,totalPrice:g}){let{isDirty:_,isValid:v}=ln(),y=(0,G.useMemo)(()=>{let e=r[p]||{},t=Object.values(e).map(e=>e.planLevel??0),n=t.length?Math.min(...t):0;return Object.keys(e).map(t=>{let r=(e[t].planLevel??0)>n,i=t.slice(0,-1).split(`(`);if(i.length>1)return{performanceTier:t,name:i[0],description:i[1],isPremium:r};let a=t.split(` for `);return a.length>1?{performanceTier:t,name:a[0],description:`For `+a[1],isPremium:r}:{performanceTier:t,name:t,description:``,isPremium:r}})},[r,p]),b=(0,G.useMemo)(()=>Object.keys(r).sort(),[r]),x=(0,G.useMemo)(()=>o_(Object.values(r[p]||{}),f),[r,f,p]),S=(0,G.useMemo)(()=>Zg(Object.values(r).flatMap(e=>Object.values(e)),f),[r,f]);(0,G.useEffect)(function(){y?.length&&!y.find(e=>e.performanceTier===m)&&(i.setValue(`performanceDescription`,y[0].performanceTier),i.trigger())},[p,m,y,i]);let C=p===`Self-Hosted`,w=l===`version`&&!!u&&!u.ambiguous,T=(0,K.jsx)(Gd,{className:`mt-6 mb-8 border-t border-border/60 pt-6`,children:(0,K.jsxs)(H,{className:`w-full sm:w-auto`,type:`submit`,variant:`submit`,disabled:c||n&&!_&&!w||!v,children:[l!==`version`&&g>0?`Confirm Payment Details`:n?`Edit Cluster`:`Create New Cluster`,(0,K.jsx)(nr,{})]})});return l===`version`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Vn,{className:`min-w-0 gap-0 overflow-hidden py-0`,children:[(0,K.jsxs)(Hn,{className:`border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/15 py-5 dark:from-primary/15 dark:to-primary/5`,children:[(0,K.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,K.jsx)(Qa,{className:`size-4 text-primary`,"aria-hidden":`true`}),`Cluster details`]}),(0,K.jsx)(Wn,{children:`Choose the Harper version for your cluster.`})]}),(0,K.jsxs)(Gn,{className:`grid min-w-0 grid-cols-3 items-start gap-6 py-6 text-foreground md:grid-cols-6`,children:[(0,K.jsx)(Fg,{className:a?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!0,form:i}),(0,K.jsx)(zg,{className:`col-span-3`,form:i,harperVersions:a}),(0,K.jsx)(Rg,{className:`col-span-3 md:col-span-6`,form:i}),u&&(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:[u.behindCount,` of `,u.total,` instances`,` `,u.behindCount===1?`is`:`are`,` `,u.ambiguous?`on a different version from ${u.latest}, and a version pinned to your organization is among them. Choose the version the whole cluster should run.`:`still on an older version. Re-run the upgrade to bring ${u.behindCount===1?`it`:`them`} up to ${u.latest}.`]})]})]}),T]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:e?`grid items-start gap-6 xl:grid-cols-[minmax(0,1fr)_18rem]`:``,children:[(0,K.jsxs)(`div`,{className:`min-w-0 space-y-6`,children:[(0,K.jsxs)(Vn,{className:`min-w-0 gap-0 overflow-hidden py-0`,children:[(0,K.jsxs)(Hn,{className:`border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/15 py-5 dark:from-primary/15 dark:to-primary/5`,children:[(0,K.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,K.jsx)(Qa,{className:`size-4 text-primary`,"aria-hidden":`true`}),`Cluster details`]}),(0,K.jsx)(Wn,{children:`Your cluster’s identity, version, and address.`})]}),(0,K.jsxs)(Gn,{className:`grid min-w-0 grid-cols-3 items-start gap-6 py-6 text-foreground md:grid-cols-6`,children:[(0,K.jsx)(Fg,{className:a?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!!n,form:i}),(0,K.jsx)(zg,{className:`col-span-3`,disabled:!!n,form:i,harperVersions:a}),C?(0,K.jsx)(Pg,{form:i,disabled:!!n}):(0,K.jsx)(xg,{form:i,calculatedNames:t,disabled:!!n})]})]}),(0,K.jsxs)(Vn,{className:`min-w-0 gap-0 overflow-hidden py-0`,children:[(0,K.jsxs)(Hn,{className:`border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/15 py-5 dark:from-primary/15 dark:to-primary/5`,children:[(0,K.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,K.jsx)(Hi,{className:`size-4 text-primary`,"aria-hidden":`true`}),`Deployment & capacity`]}),(0,K.jsx)(Wn,{children:`Choose your infrastructure and the capacity your workload needs.`})]}),(0,K.jsxs)(Gn,{className:`grid min-w-0 grid-cols-3 items-start gap-6 py-6 text-foreground md:grid-cols-6`,children:[(0,K.jsx)(Ng,{form:i,availableDeploymentTypes:b}),(0,K.jsx)(Ig,{availablePerformanceDescriptions:y,form:i,selectedDeployment:p}),C?(0,K.jsx)(i_,{form:i}):(0,K.jsx)(n_,{form:i,regionLocations:d,regionNameToLatencyToRegion:f,premiumOnlyRegions:x,usageScale:S,selectedPlan:h,totalPrice:g,isEnterprise:o,cloudProvider:s}),n&&!C&&(0,K.jsx)(Rg,{className:`col-span-3 md:col-span-6`,form:i})]})]})]}),e]}),T]})}function c_(e){let{fqdn:t}=e,{secure:n,port:r}=e;return r||=g,r===443&&n===`false`&&(n=`true`),r===80&&n===`true`&&(n=`false`),`${n===`true`?`https`:`http`}://${t}${r===443||r===80?``:`:`+r}`.toLowerCase()}function l_(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 u_(e,t,n){if(t&&n){let r=e.getValues();if(!r.deploymentDescription||!r.performanceDescription||!r.regionPlans.length){let i=l_(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 d_({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)(f_,{type:e.type,value:e.value},t))})}function f_({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 p_({alreadyUsingFree:e,clusterId:t,defaultValues:n,deploymentToPerformanceToPlan:r,harperVersions:i,mode:a,organization:o,organizationId:s,partialUpgrade:c,planTypes:l,regionLocationsColocated:u,regionLocationsDedicated:d,setSavedClusterState:f,startOffOnBilling:p}){let m=L(),h=we(),v=o?.type===Gm,y=o?.channel===`Akamai`?`linode`:void 0,b=Me(),{mutate:x,isPending:S}=Hm(),{mutate:C,isPending:w}=Wm(),[T,E]=(0,G.useState)(p),D=(0,G.useMemo)(()=>Rm(u?.sort(Mm(`latencyDescription`))||[],`region`,`latencyDescription`),[u]),O=(0,G.useMemo)(()=>Rm(d?.sort(Mm(`latencyDescription`))||[],`region`,`latencyDescription`),[d]),k=(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=c_(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`?O:D;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!`}):qm(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,D,O,r]),A=Gt({mode:`onChange`,resolver:it(bg.superRefine(k)),defaultValues:n}),[ee,te]=(0,G.useState)(!0);(0,G.useEffect)(()=>{ee&&n&&(f(null),te(!1))},[n,ee,f]);let j=A.watch(`clusterName`),M=A.watch(`abbreviatedName`),N=A.watch(`deploymentDescription`),P=A.watch(`performanceDescription`),ne=A.watch(`regionPlans`),re=A.watch(`instances`),ie=N===`Dedicated`?O:D,ae=N===`Dedicated`?d:u;(0,G.useEffect)(function(){let e=A.getValues();N&&(N===`Self-Hosted`?(e.abbreviatedName&&A.setValue(`abbreviatedName`,``),e.regionPlans.length&&A.setValue(`regionPlans`,[]),e.instances.length||A.setValue(`instances`,[{secure:`true`,fqdn:``,port:g}])):(e.fqdn&&A.setValue(`fqdn`,``),e.instances.length&&A.setValue(`instances`,[]),e.regionPlans.length||u_(A,l,ae)))},[A,l,ae,N]);let oe=(0,G.useMemo)(()=>{let e=Km(Jm(j),yg.maxLength);return{suggestedAbbreviatedName:e,fullHostName:`${M||e}.${o.subdomain||`your-org`}.harperfabric.com`}},[j,M,o]),se=(0,G.useMemo)(()=>r?.[N]?.[P],[r,N,P]);(0,G.useEffect)(function(){let e=se?.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&&(A.setValue(`regionPlans.0.regionName`,n.region),A.setValue(`regionPlans.0.latencyDescription`,n.latencyDescription),A.trigger())}}},[se,ne,A,ie,ae]),(0,G.useEffect)(function(){if(N!==`Self-Hosted`&&Object.keys(ie).length&&ne.length)for(let e=0;e<ne.length;e++){let t=ne[e];ie[t.regionName]||A.setValue(`regionPlans.${e}.regionName`,``)}},[A,ie,N,ne]);let ce=se?.priceUsd?N===`Self-Hosted`?re.length*se.priceUsd:ne.reduce((e,t)=>{let n=ie?.[t.regionName]?.[t.latencyDescription];return e+(n?se.priceUsd*n.instanceCount/2:0)},0):0,le=se?.planLimits?.expirationMonths,ue=Ym(le)&&le<1e3?le:void 0,de=ue?ce/ue:ce,fe=(0,G.useCallback)(({creating:e,deploymentDescription:t})=>U.message(e?`Creating Cluster`:`Updating Cluster`,{description:(0,K.jsx)(Bm,{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}),[]),pe=(0,G.useCallback)(async({clusterId:e,sourceClusterId:t,creating:n,toastId:r,isSelfManaged:i,skipGtmWait:a})=>{if(t){let e=(await Cs(s)).clusters?.find(e=>e.id===t);Bl(e?.status)&&await qp(t)}b.invalidateQueries({queryKey:[s],refetchType:`active`}),n||Go(b,e,{refetchType:`active`}),h.invalidate(),m(i?{to:`/${s}/${e}/instances`}:n?{to:`/${s}/${e}/starting-up`}:{to:`/${s}/${e}/scaling`,search:a?{immediate:!0}:void 0}),A.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})},[b,h,m,s,A]),me=(0,G.useCallback)(async()=>{let e=A.getValues(),n=[],i=r[e.deploymentDescription][e.performanceDescription],o=e.deploymentDescription===`Self-Hosted`;if(o)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})}f(null);let c=fe({creating:!t,deploymentDescription:e.deploymentDescription}),l=()=>U.dismiss(c);t?C(a===`version`?{id:t,version:e.version,skipGtmWait:e.skipGtmWait}:{id:t,regionPlans:n,skipGtmWait:e.skipGtmWait},{onSuccess:t=>pe({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:o,creating:!1,toastId:c,skipGtmWait:e.skipGtmWait}),onError:l}):x({abbreviatedName:o?void 0:e.abbreviatedName||oe.suggestedAbbreviatedName,autoRenew:!0,fqdn:o&&e.fqdn||void 0,name:e.clusterName,version:e.version,organizationId:s,regionPlans:n},{onSuccess:t=>pe({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:o,creating:!0,toastId:c}),onError:l})},[oe.suggestedAbbreviatedName,t,r,A,pe,fe,s,ie,f,C,x]),he=(0,G.useCallback)(()=>{if(a!==`version`&&ce>0){E(!0);return}return me()},[a,me,ce]),ge=(0,G.useCallback)(e=>{f(e?{clusterId:t,...A.getValues(),skipToBilling:!0}:null)},[t,A,f]),_e=(0,G.useCallback)(()=>{E(!1)},[]),F=!v&&a!==`version`?(0,K.jsxs)(`aside`,{"aria-label":`Price summary`,className:`min-w-0 rounded-2xl border border-primary/15 bg-primary/5 p-6 xl:order-2`,children:[(0,K.jsx)(`p`,{className:`mb-4 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:`Your plan`}),(0,K.jsxs)(`dl`,{children:[(0,K.jsx)(`dt`,{className:`text-sm text-muted-foreground`,children:ue?`Monthly Price`:`Total Price`}),(0,K.jsx)(`dd`,{className:`mt-2 font-bold`,children:ce>0?(0,K.jsxs)(`span`,{className:`inline-flex items-baseline`,children:[(0,K.jsx)(d_,{price:de}),!!ue&&(0,K.jsxs)(`span`,{className:`text-base font-normal text-muted-foreground`,children:[`/mo`,ue>1&&(0,K.jsx)(`sup`,{children:`*`})]})]}):(0,K.jsx)(`span`,{className:`text-4xl text-green`,children:`Free`})})]}),!!ue&&ue>1&&ce>0&&(0,K.jsxs)(`p`,{className:`mt-4 text-sm leading-relaxed text-muted-foreground`,children:[`* Billed as `,new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(ce),` `,`every`,` `,_(ue,`month`,`months`),`, or sooner if you reach a usage limit — then a new license is issued.`]}),(0,K.jsx)(`div`,{className:`mt-5 border-t border-primary/15 pt-5`,children:(0,K.jsx)(Fs,{variant:`warning`,children:`Beta pricing subject to change.`})})]}):null;return(0,K.jsxs)(`div`,{className:`space-y-7 py-5`,children:[(0,K.jsxs)(`header`,{className:`flex items-start gap-4`,children:[(0,K.jsx)(`div`,{className:`flex size-14 shrink-0 items-center justify-center rounded-2xl border border-primary/20 bg-primary/10 text-primary`,children:(0,K.jsx)(Qa,{className:`size-6`,"aria-hidden":`true`})}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`p`,{className:`mb-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:a===`version`?`Cluster upgrade`:t?`Manage your cluster`:`Your infrastructure`}),(0,K.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight sm:text-3xl`,children:T?`Cluster Billing`:`Cluster Configuration`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:T?`Review your billing details before applying these changes.`:a===`version`?`Keep your cluster up to date with the right Harper version.`:`Configure your Harper cluster and define deployment plans.`})]})]}),(0,K.jsx)(El,{...A,children:T?(0,K.jsx)(K.Fragment,{children:(0,K.jsxs)(`div`,{className:F?`grid items-start gap-6 xl:grid-cols-[minmax(0,1fr)_18rem]`:``,children:[F,(0,K.jsxs)(Vn,{className:`min-w-0 xl:order-1`,children:[(0,K.jsx)(Hn,{children:(0,K.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,K.jsx)(ei,{className:`size-4 text-primary`,"aria-hidden":`true`}),`Payment review`]})}),(0,K.jsx)(Gn,{children:(0,K.jsx)(hg,{clusterId:t,isPending:S||w,onGoBackToDetails:_e,onSaveStateForBillingRedirect:ge,onSubmit:me,organizationId:s,selectedPlan:se})})]})]})}):(0,K.jsx)(K.Fragment,{children:(0,K.jsx)(`form`,{id:`cluster-upsert-form`,name:`cluster-upsert-form`,onSubmit:A.handleSubmit(he),children:(0,K.jsx)(s_,{priceSummary:F,calculatedNames:oe,clusterId:t,deploymentToPerformanceToPlan:r,form:A,isPending:S||w,harperVersions:i,mode:a,partialUpgrade:c,regionLocations:ae,regionNameToLatencyToRegion:ie,selectedDeployment:N,selectedPerformance:P,selectedPlan:se,totalPrice:ce,isEnterprise:v,cloudProvider:y})})})})]})}function m_(e){return e?.clusterName!==void 0}function h_(e,t){let n=im(t),r=[...n].sort(sf).pop(),i=new Set(n),a=e.filter(e=>e.scoped?e.version!==r:!i.has(e.version)&&(!r||of(r,e.version)));return r?[{name:`current`,version:r},...a]:a}function g_({isEdit:e,className:t,children:n}){return e?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(wm,{children:(0,K.jsx)(`div`,{className:t,children:n})})]}):(0,K.jsx)(pm,{className:t,children:n})}function __(){let{organizationId:e,clusterId:t,mode:n}=B({strict:!1}),{create:r,update:i}=wp(e),{organization:a,cluster:o}=Oe({strict:!1}),[s,c]=Es(Pn.SavedClusterState,null),{data:l}=F(Em(e)),{data:u}=F(fm({availableHosts:!0,organizationId:e})),{data:d}=F(fm({organizationId:e})),{data:f}=F(jm(e)),p=(0,G.useMemo)(()=>o?.instances&&f?{...f,value:h_(f.value??[],o.instances)}:f,[f,o]),m=(0,G.useMemo)(()=>am(o?.instances??[],(f?.value??[]).filter(e=>e.scoped).map(e=>e.version)),[o,f]),h=(0,G.useMemo)(()=>{for(let e of a?.clusters??[])if(e.id!==o?.id&&l&&!Vl(e.status)&&!Bl(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)(()=>Rm(l?.sort(Mm(`priceUsd`))||[],`deploymentDescription`,`performanceDescription`),[l]),_=(0,G.useMemo)(()=>{if(!l||!p||!u||!d||t&&!o)return null;let e=o;if(s){if(m_(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 r=l?.find(e=>e.id===o?.plans?.[0].planId),i=[],a=[],c=r?.deploymentDescription===`Dedicated`?d:u,f=l_(l,c,h),g=!1;if(e){if(e.plans){for(let t of e.plans)if(t.regionId){let e=c.find(e=>e.id===t.regionId);e&&i.push({regionName:e.region,latencyDescription:e.latencyDescription})}}if(!i.length&&e.instances){let t=e.instances.filter(e=>e.status&&!Ml.includes(e.status)).sort(Fm);for(let e of t)g=!0,a.push({fqdn:e.instanceFqdn,port:e.operationsApiPort,secure:e.operationsApiSecure?`true`:`false`})}}else f&&i.push(...f.regionPlans);!g&&!i.length&&i.push({regionName:``,latencyDescription:``});let _=m?.ambiguous&&n===`version`?void 0: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:_,deploymentDescription:r?.deploymentDescription??f?.deploymentDescription??``,performanceDescription:r?.performanceDescription??f?.performanceDescription??``,fqdn:g?e?.fqdn??``:``,instances:a,regionPlans:i}},[h,o,t,n,m,l,p,u,d,s]);return!_||!a||!l||!u||!d?(0,K.jsx)(g_,{isEdit:!!t,children:(0,K.jsx)(gs,{centered:!0,text:`Loading...`})}):(o?.id?!i:!r)?(0,K.jsx)(g_,{isEdit:!!t,children:(0,K.jsx)(Ho,{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)(g_,{isEdit:!!t,children:(0,K.jsx)(Ho,{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)(au,{}),`.`]})}})}):(0,K.jsx)(g_,{isEdit:!!t,className:`w-full max-w-6xl mx-auto`,children:(0,K.jsx)(p_,{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:m_(s)&&s.skipToBilling===!0})})}function v_({children:e}){let{organizationId:t}=B({strict:!1}),{view:n}=Sp(t),{update:r}=bp(t),i=`/${t}`,a=[{to:i,label:`Clusters`,icon:Qa,exact:!0},n&&{to:`${i}/users`,label:`Users`,icon:Po},n&&{to:`${i}/roles`,label:`Roles`,icon:no},r&&{to:`${i}/billing`,label:`Billing`,icon:ei,children:[{to:`${i}/billing`,label:`Payment Method`,exact:!0},{to:`${i}/billing/invoices`,label:`Invoices`}]},r&&{to:`${i}/settings`,label:`Settings`,icon:eo}].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:`section-rail-aside md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,K.jsx)(hm,{items:a,ariaLabel:`Organization sections`})}),(0,K.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:e})]})})}var y_=[{category:`all`,label:`Total clusters`,Icon:Hi,color:`text-primary dark:text-violet-300 bg-primary/10`},{category:`running`,label:`Running`,Icon:Pr,color:`text-emerald-700 dark:text-green bg-green/10`},{category:`attention`,label:`Needs attention`,Icon:Oo,color:`text-amber-700 dark:text-yellow bg-yellow/10`},{category:`failed`,label:`Failures`,Icon:Ar,color:`text-destructive bg-destructive/10`}];function b_(){let{organizationId:e}=B({strict:!1}),{create:t}=wp(e),{data:n}=et(ws(e)),[r]=Es(Pn.SavedClusterState,null),[i,a]=(0,G.useState)(om),{data:o}=F({...fm({organizationId:e}),enabled:!1,staleTime:6e4}),s=(0,G.useMemo)(()=>new Map(o?.map(e=>[e.id,e.region])),[o]),c=(0,G.useMemo)(()=>cm(n?.clusters??[],s),[n?.clusters,s]),l=(0,G.useMemo)(()=>um(c.items,i),[c.items,i]),u=!!i.search||i.category!==`all`||!!i.region;return n&&c.items.length===0&&t?(0,K.jsx)(__,{}):r?(0,K.jsx)(ve,{to:`/${e}/new-cluster`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{children:(0,K.jsxs)(`div`,{className:`pb-16`,children:[(0,K.jsxs)(`header`,{className:`cluster-overview-hero relative mb-6 flex flex-wrap items-center justify-between gap-4 overflow-hidden rounded-2xl border border-primary/10 bg-linear-to-br from-primary/10 via-background to-background p-5 sm:p-6`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`mb-1 text-sm font-medium text-muted-foreground`,children:`Clusters`}),(0,K.jsx)(`h1`,{className:`text-2xl font-bold tracking-normal sm:text-3xl`,children:`Your infrastructure, at a glance`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:`Manage, monitor, and scale your clusters in one place.`})]}),t&&(0,K.jsx)(H,{variant:`positive`,asChild:!0,accessKey:`n`,className:`shrink-0`,children:(0,K.jsxs)(V,{to:`/${e}/new-cluster`,children:[(0,K.jsx)(Ia,{"aria-hidden":`true`}),` New Cluster`]})})]}),(0,K.jsx)(`div`,{className:`mb-3 hidden grid-cols-2 gap-3 sm:grid lg:grid-cols-4`,role:`group`,"aria-label":`Cluster summary`,children:y_.map(({category:e,label:t,Icon:n,color:r})=>(0,K.jsxs)(`button`,{type:`button`,"aria-label":`${t} ${e===`all`?c.items.length:c.counts[e]}`,"aria-pressed":i.category===e,onClick:()=>a({...i,category:e}),className:`flex items-center gap-3 rounded-xl border bg-card/30 p-4 text-left transition-colors hover:border-primary/60 focus-visible:outline-2 focus-visible:outline-ring ${i.category===e?`border-primary/60`:`border-border`}`,children:[(0,K.jsx)(`span`,{className:`rounded-full p-2.5 ${r}`,children:(0,K.jsx)(n,{className:`size-5`,"aria-hidden":`true`})}),(0,K.jsxs)(`span`,{className:`min-w-0`,children:[(0,K.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:t}),(0,K.jsx)(`span`,{className:`mt-1 block text-2xl font-semibold tabular-nums`,children:e===`all`?c.items.length:c.counts[e]})]})]},e))}),(0,K.jsx)(`p`,{className:`mb-6 text-xs text-muted-foreground`,children:`Reported lifecycle status. Running does not confirm monitoring health.`}),(0,K.jsxs)(`div`,{className:`cluster-list-controls mb-3 flex flex-wrap gap-3`,role:`search`,"aria-label":`Find clusters`,children:[(0,K.jsxs)(`div`,{className:`relative min-w-48 basis-full sm:basis-auto flex-1`,children:[(0,K.jsx)(Xa,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`,"aria-hidden":`true`}),(0,K.jsx)($,{"aria-label":`Search clusters`,placeholder:`Search name, hostname, or region…`,className:`h-10 pl-9`,value:i.search,onChange:e=>a({...i,search:e.target.value})})]}),(0,K.jsx)(`label`,{className:`sr-only`,htmlFor:`cluster-status`,children:`Cluster status`}),(0,K.jsxs)(`select`,{id:`cluster-status`,className:`h-10 rounded-md border border-input bg-card px-3 text-sm`,value:i.category,onChange:e=>a({...i,category:e.target.value}),children:[(0,K.jsx)(`option`,{value:`all`,children:`All statuses`}),(0,K.jsx)(`option`,{value:`running`,children:`Running`}),(0,K.jsx)(`option`,{value:`attention`,children:`Needs attention`}),(0,K.jsx)(`option`,{value:`failed`,children:`Failures`}),(0,K.jsx)(`option`,{value:`other`,children:`Other / unknown`})]}),(0,K.jsx)(`label`,{className:`sr-only`,htmlFor:`cluster-region`,children:`Cluster region`}),(0,K.jsxs)(`select`,{id:`cluster-region`,className:`h-10 max-w-full rounded-md border border-input bg-card px-3 text-sm`,value:i.region,onChange:e=>a({...i,region:e.target.value}),children:[(0,K.jsx)(`option`,{value:``,children:`All regions`}),i.region&&!c.regions.includes(i.region)&&(0,K.jsx)(`option`,{value:i.region,children:i.region}),c.regions.map(e=>(0,K.jsx)(`option`,{value:e,children:e},e))]}),(0,K.jsx)(`label`,{className:`sr-only`,htmlFor:`cluster-sort`,children:`Sort clusters`}),(0,K.jsxs)(`select`,{id:`cluster-sort`,className:`h-10 rounded-md border border-input bg-card px-3 text-sm`,value:i.sort,onChange:e=>a({...i,sort:e.target.value}),children:[(0,K.jsx)(`option`,{value:`attention`,children:`Sort: Attention first`}),(0,K.jsx)(`option`,{value:`name`,children:`Sort: Name`}),(0,K.jsx)(`option`,{value:`newest`,children:`Sort: Newest`})]})]}),(0,K.jsxs)(`div`,{className:`mb-4 flex min-h-8 items-center justify-between gap-3 text-xs text-muted-foreground`,children:[(0,K.jsxs)(`p`,{role:`status`,children:[`Showing `,l.length,` of `,c.items.length,` clusters`]}),u&&(0,K.jsx)(H,{size:`sm`,variant:`ghost`,onClick:()=>a({...om,sort:i.sort}),children:`Clear filters`})]}),(0,K.jsx)(`div`,{className:`grid grid-cols-1 gap-4 lg:grid-cols-2 2xl:grid-cols-3`,children:l.map(e=>(0,K.jsx)(rm,{item:e},e.cluster.id))}),!l.length&&(0,K.jsxs)(`div`,{className:`rounded-xl border border-dashed border-border px-6 py-12 text-center`,children:[(0,K.jsx)(Hi,{className:`mx-auto mb-3 size-8 text-muted-foreground`,"aria-hidden":`true`}),(0,K.jsx)(`h2`,{className:`text-lg font-medium`,children:c.items.length?`No matching clusters`:`No clusters yet`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:c.items.length?`Try a different search or clear your filters.`:`Ask an organization administrator to create a cluster.`}),u&&(0,K.jsx)(H,{className:`mt-4`,variant:`outline`,onClick:()=>a({...om,sort:i.sort}),children:`Reset filters`})]})]})})]})}function x_(){return`/#`+Kc()}function S_(){let{organizationId:e}=B({strict:!1}),t=L(),n=new URLSearchParams(window.location.search).get(`setup_intent_client_secret`),{setup_intent_client_secret:r}=Te({strict:!1}),[i]=Es(Pn.SavedClusterState,null),a=n||r,o=Ih(),s=Qm(e),c=(0,G.useCallback)(()=>{let e=i?i.clusterId?`../../${i.clusterId}/edit`:`../../new-cluster`:`../`;window.history.replaceState(null,``,x_()),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)(gs,{centered:!0})}function C_(){return(0,K.jsx)(cg,{children:(0,K.jsx)(S_,{})})}function w_(){let{organizationId:e}=B({strict:!1}),{update:t}=bp(e);return t?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{children:(0,K.jsx)($e,{})})]}):(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 T_=500,E_=16,D_=16;function O_({className:e,containerClassName:t,containerRef:n,...r}){return(0,K.jsx)(`div`,{ref:n,"data-slot":`table-container`,className:P(`relative w-full overflow-x-auto`,t),children:(0,K.jsx)(`table`,{"data-slot":`table`,className:P(`w-full caption-bottom text-sm`,e),...r})})}function k_({className:e,...t}){return(0,K.jsx)(`thead`,{"data-slot":`table-header`,className:P(`[&_tr]:border-b`,e),...t})}function A_({className:e,...t}){return(0,K.jsx)(`tbody`,{"data-slot":`table-body`,className:P(`[&_tr:last-child]:border-0`,e),...t})}function j_({className:e,...t}){return(0,K.jsx)(`tr`,{"data-slot":`table-row`,className:P(`border-b border-grey-700 transition-colors`,e),...t})}function M_({className:e,...t}){return(0,K.jsx)(`th`,{"data-slot":`table-head`,className:P(`h-10 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function N_({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:Ue(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+D_)}let d=Math.min(Math.max(Math.ceil(o)+E_,u),T_);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)(M_,{...r,"data-col-id":e.column.id,style:{width:`${l}px`,maxWidth:`${l}px`},className:P(`relative`,o&&`select-none`,a?`px-0`:`px-2`,n),children:[(0,K.jsx)(`div`,{className:P(`flex items-center min-w-0 overflow-hidden`,o&&`pr-4`),children:a?(0,K.jsxs)(H,{type:`button`,variant:`ghost`,className:P(`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)(Dn,{className:`shrink-0`}):e.column.getIsSorted()===`desc`?(0,K.jsx)(En,{className:`shrink-0`}):(0,K.jsx)(ir,{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)(Oi,{className:`size-3.5`})})]})}function P_({className:e,...t}){return(0,K.jsx)(`td`,{"data-slot":`table-cell`,className:P(`align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}var F_=Le({columnSizingFeature:Ie,columnResizingFeature:He,columnVisibilityFeature:Ye,columnFilteringFeature:Ze,rowSelectionFeature:Ge,rowSortingFeature:Pe,sortedRowModel:Ve(),sortFns:Ke});function I_(){return Re()}function L_({columns:e,data:t,isFetching:n,onRowClick:r,onColumnClick:i,sortingState:a,children:o}){let s=Je({features:F_,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)(O_,{containerClassName:`rounded-md bg-card dark:bg-black-dark`,children:[(0,K.jsx)(k_,{children:s.getHeaderGroups().map(e=>(0,K.jsx)(j_,{className:`border-none`,children:e.headers.map(e=>(0,K.jsx)(N_,{header:e,onColumnClick:i},e.id))},e.id))}),(0,K.jsx)(A_,{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)(j_,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>r?.(e),className:P(`hover:bg-muted/10 data-[state=selected]:bg-muted`,r&&`cursor-pointer`),children:e.getVisibleCells().map(e=>(0,K.jsx)(P_,{className:`py-2 px-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,style:{width:`${e.column.getSize()}px`},children:Ue(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,K.jsx)(j_,{children:(0,K.jsx)(P_,{colSpan:e.length,className:`h-24 text-center`,children:n?(0,K.jsx)(`div`,{children:(0,K.jsx)(gs,{className:`p-12`})}):(0,K.jsx)(`span`,{children:`No results.`})})})})]})]})}function R_(e){switch(e){case`paid`:return`success`;case`void`:case`uncollectible`:return`destructive`;default:return`default`}}function z_(e){return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(e)}function B_(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 V_=[{header:`Invoice Id`,accessorKey:`id`,enableSorting:!1},{header:`Status`,accessorKey:`status`,enableSorting:!1,cell:({cell:e})=>(0,K.jsx)(Fs,{variant:R_(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?B_(r,t):[t?B_(r,t):`-`,n?B_(i,n):`-`].join(` to `)}},{header:`Amount Due`,accessorKey:`amountDue`,enableSorting:!1,cell:({cell:e})=>z_(e.getValue()?e.getValue()/100:0)},{header:`Amount Paid`,accessorKey:`amountPaid`,enableSorting:!1,cell:({cell:e})=>z_(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} @ ${z_(e.amount/100)}`);return n.join(`
12
- `)}}];function H_(e){return(0,G.useCallback)(async()=>{U.loading(`Refreshing...`,{id:`refreshing`});let t=Date.now();await e(),Date.now()-t<500&&await h(500),U.success(`Refreshed!`,{id:`refreshing`})},[e])}async function U_(e){let{data:t}=await N.get(`/Invoice/${e}`);return t}function W_(e,t){return z({queryKey:[e,`invoices`],queryFn:()=>U_(e),retry:!1,enabled:!!e,refetchInterval:t?1e4:void 0})}function G_(){let{organizationId:e}=B({strict:!1}),{data:t}=F(ws(e)),{data:n,refetch:r,isLoading:i,isFetching:a,isRefetching:o}=F(W_(t?.type!==`ENTERPRISE`&&t?.id,!1)),s=H_(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)(au,{}),`, we would love to talk!`]}):i?(0,K.jsx)(gs,{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)(au,{overEmail:!0}),`, we would love to talk!`]}):(0,K.jsx)(L_,{data:n,columns:V_,children:(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:s,accessKey:`r`,disabled:a||o,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]})})}function K_(e){let t=I({getParentRoute:()=>e,path:`billing`,head:()=>({meta:[{title:`Billing — Harper Fabric`}]}),component:w_}),n=I({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Payment Methods — Harper Fabric`}]}),component:mg}),r=I({getParentRoute:()=>t,path:`invoices`,head:()=>({meta:[{title:`Invoices — Harper Fabric`}]}),component:G_}),i=I({getParentRoute:()=>t,path:`confirm`,head:()=>({meta:[{title:`Confirm Payment — Harper Fabric`}]}),component:C_});return t.addChildren([n,r,i])}async function q_(e){let{data:t}=await N.get(`/OrganizationRole/${e}`);return t}function J_(e){return z({queryKey:[e,`roles`],queryFn:()=>q_(e),retry:!1,refetchInterval:bs(1e4)})}var Y_=I_(),X_=[{header:`Role Name`,accessorKey:`roleName`,enableSorting:!1},Y_.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})}),Y_.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})],Z_=new Set([`checkbox`,`radio`,`file`,`submit`,`button`,`image`,`reset`]);function Q_(e){return t=>{let n=t.target;if(t.key!==`Enter`||t.nativeEvent.isComposing||!(n instanceof HTMLInputElement)||Z_.has(n.type)||!n.name)return;let r=n.name,i=e.getValues(r);i!==void 0&&e.setValue(r,i,{shouldTouch:!0,shouldValidate:!0})}}async function $_(e){let{data:t}=await N.post(`/Role/`,e);return t}function ev(){return R({mutationFn:$_})}var tv=S({name:M().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:A(),delete:A()}),nv=tv.extend({name:M()});S({roles:S({create:A(),delete:A(),update:A(),view:A()}),clusters:S({create:A(),delete:A(),update:A(),view:A(),resources:D(S({id:M(),delete:A(),update:A(),view:A(),instances:S({create:A(),delete:A(),update:A(),view:A()})}))})});function rv(){let[e]=As(),t=Ds();return e===`dark`||e===`system`&&t===`dark`?`vs-dark`:`light`}var iv=(0,G.lazy)(async()=>(await pe(()=>import(`./setup-CGiKLZ9e.js`),__vite__mapDeps([15,2,1,16,17,18,19,20,21])),{default:(await pe(()=>import(`./dist-BrRuMUzt.js`),__vite__mapDeps([16,1,2]))).default}));function av(e){return(0,K.jsx)(G.Suspense,{fallback:e.loading??null,children:(0,K.jsx)(iv,{...e})})}var ov={roles:{create:!0,view:!0,update:!0,delete:!0},clusters:{create:!0,view:!0,update:!0,delete:!0,resources:[]}};function sv({isModalOpen:e,setIsModalOpen:t}){let n=rv(),r=Me(),{organizationId:i}=B({strict:!1}),[a,o]=(0,G.useState)(!0),[s,c]=(0,G.useState)(JSON.stringify(ov,null,2)),{mutate:l,isPending:u}=ev(),d=Gt({resolver:it(tv),mode:`onTouched`,defaultValues:{name:``,update:!1,delete:!1}}),f=(0,G.useCallback)(e=>{o(e.length===0)},[o]),p=(0,G.useCallback)(async e=>{let n=tt(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)(Id,{onOpenChange:t,open:e,children:(0,K.jsxs)(Ud,{resizable:!0,children:[(0,K.jsx)(Kd,{children:`Add New Organization Role`}),(0,K.jsx)(qd,{children:`Set the new organization role permissions.`}),(0,K.jsx)(El,{...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),onKeyDown:Q_(d),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)(av,{className:`w-full h-full`,theme:n,defaultLanguage:`json`,onValidate:f,onChange:e=>{e&&c(e)},options:{automaticLayout:!0},defaultValue:JSON.stringify(ov,null,2)})}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:()=>t(!1),disabled:u,children:`Cancel`}),(0,K.jsx)(H,{variant:`submit`,disabled:u||!a||!d.formState.isValid,children:`Save Changes`})]})})]})})]})})}async function cv({roleId:e}){let{data:t}=await N.delete(`/Role/${e}`,{id:e,deleted:!0});return t}function lv(){return R({mutationFn:({roleId:e})=>cv({roleId:e})})}async function uv({roleId:e,updatedRoleInfo:t}){let{data:n}=await N.put(`/Role/${e}`,t);return n}function dv(){return R({mutationFn:({roleId:e,updatedRoleInfo:t})=>uv({roleId:e,updatedRoleInfo:t})})}function fv({organizationId:e,roleId:t}){return z({queryKey:[e,`roles`,t],queryFn:()=>pv(t),refetchInterval:bs(1e4),retry:xs()})}async function pv(e){let{data:t}=await N.get(`/Role/${e}`);return t}function mv({onRoleDeleteClick:e,setIsConfirmingRoleDeletion:t,isRoleDeletionPending:n}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Kd,{children:`Confirm Role Deletion`}),(0,K.jsx)(qd,{children:`Are you sure you want to delete this role? This action cannot be undone.`}),(0,K.jsxs)(Gd,{children:[(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,K.jsx)(H,{variant:`destructiveOutline`,onClick:e,disabled:n,children:n?`Deleting...`:`Delete Role`})]})]})}function hv({data:e,isModalOpen:t,closeModal:n}){let r=(0,G.useCallback)(()=>n(!1),[n]);return(0,K.jsx)(Id,{onOpenChange:r,open:t,children:(0,K.jsx)(Ud,{resizable:!0,children:(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(gv,{roleName:e.roleName}),children:(0,K.jsx)(_v,{data:e,closeModal:n})})})})}function gv({roleName:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Kd,{children:[`Organization Role "`,e,`"`]}),(0,K.jsx)(gs,{centered:!0,text:`Loading role…`,className:`flex-1 min-h-0`})]})}function _v({data:e,closeModal:t}){let n=Me(),{data:r}=et(fv({roleId:e.id,organizationId:e.organizationId})),i=Ln().user?.roles?.[e.organizationId]?.id===e.id,{update:a,remove:o}=Sp(e.organizationId),{mutate:s,isPending:c}=dv(),{mutate:l,isPending:u}=lv(),d=rv(),[f,p]=(0,G.useState)(!1),m=Gt({resolver:it(nv),defaultValues:{name:e.roleName,update:r.organization.update||!1,delete:r.organization.delete||!1}}),{isDirty:h,isValid:g}=m.formState,_=(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]),[v,y]=(0,G.useState)(!0),b=(0,G.useMemo)(()=>JSON.stringify({roles:{...r.organization.roles},clusters:{...r.organization.clusters}},null,2),[r]),[x,S]=(0,G.useState)(b),C=x!==b,w=(0,G.useCallback)(e=>{y(e.length===0)},[y]),T=(0,G.useCallback)(async r=>{if(!a)return;let i=tt(x);if(!i)return;let o={...r,...i,organizationId:e.organizationId};x&&v&&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,v,n,r,a,x,s]);return f?(0,K.jsx)(mv,{onRoleDeleteClick:_,setIsConfirmingRoleDeletion:p,isRoleDeletionPending:u}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Kd,{children:[i||!a?`View`:`Edit`,` Organization Role "`,e.roleName,`"`]}),(0,K.jsx)(El,{...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(T),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)(av,{className:`w-full h-full`,theme:d,defaultLanguage:`json`,onValidate:w,onChange:e=>{e&&S(e)},options:{readOnly:i||!a,automaticLayout:!0},defaultValue:x})}),!i&&(o||a)&&(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[o&&(0,K.jsx)(H,{type:`button`,variant:`destructiveOutline`,onClick:()=>p(!0),disabled:c,children:`Delete Role`}),a&&(0,K.jsx)(H,{variant:`submit`,disabled:!v||c||!g||!h&&!C,children:`Save Changes`})]})})]})})]})}function vv(){let e=L(),t=Me(),{organizationId:n,orgRoleId:r}=B({strict:!1}),{create:i}=Sp(n),{data:a,refetch:o,isFetching:s,isRefetching:c}=et(J_(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]),_=H_(o);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{children:(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(L_,{data:a,columns:X_,onRowClick:h,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:_,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),i&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:d,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),i&&(0,K.jsx)(sv,{isModalOpen:d,setIsModalOpen:f}),u&&(0,K.jsx)(hv,{data:l,isModalOpen:u,closeModal:g},l.id)]})})]})}function yv({className:e,...t}){return(0,K.jsx)(Pt,{"data-slot":`switch`,className:P(`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)(ct,{"data-slot":`switch-thumb`,className:P(`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 bv(e,t){let{data:n}=await N.patch(`/Organization/${e}/settings/oauth`,t);return n}var xv=S({domain:M().min(1,`Domain is required`),clientId:M().min(1,`Client ID is required`),clientSecret:M().min(1,`Client secret is required`),scope:M().optional()}),Sv=S({domain:M().min(1,`Domain is required`),clientId:M().optional(),clientSecret:M().optional(),scope:M().optional()});function Cv(){let{organizationId:e}=B({strict:!1}),{user:t}=Ln(),{update:n}=bp(e),{data:r}=et(ws(e)),i=Me(),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(null),l=r.settings?.oauthConfigs??[],{mutate:u,isPending:d}=R({mutationFn:t=>bv(e,t),onSuccess:()=>void i.invalidateQueries({queryKey:[e]}),onError:()=>U.error(`Failed to update OAuth settings.`)}),f=Gt({resolver:it(xv),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=Gt({resolver:it(Sv)}),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 $p(e)&&U.success(`Sign-in URL copied.`)},b=async e=>{await $p(e)&&U.success(`Redirect URI copied.`)};return n?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{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)(H,{variant:`positiveOutline`,size:`sm`,onClick:()=>o(!0),children:[(0,K.jsx)(Ia,{}),`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)(Io,{className:`size-4`})})]}),(0,K.jsx)(El,{...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)(H,{type:`submit`,variant:`positive`,disabled:d,children:d?`Saving...`:`Save`}),(0,K.jsx)(H,{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)(Qr,{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:Ku(e.id),target:`_blank`,rel:`noreferrer`,className:`text-sm text-foreground truncate hover:underline`,children:Ku(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(Ku(e.id)),className:`hover:text-foreground`,title:`Copy login link`,children:(0,K.jsx)(Qr,{className:`size-3.5`})}),(0,K.jsx)(`a`,{href:Ku(e.id),target:`_blank`,rel:`noreferrer`,className:`hover:text-foreground`,title:`Open login link`,children:(0,K.jsx)(ci,{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)(yv,{checked:e.enabled!==!1,onCheckedChange:()=>_(e,`enabled`),disabled:d}),`Enabled`]}),(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{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)(yv,{checked:!!e.required,onCheckedChange:()=>_(e,`required`),disabled:d||!n}),`Required`]})}),!n&&(0,K.jsxs)(Tc,{children:[`Sign in via `,e.provider,` first to enable Required`]})]}),(0,K.jsx)(H,{variant:`outline`,size:`sm`,onClick:()=>h(e),disabled:d,children:(0,K.jsx)(Ma,{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)(Io,{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)(El,{...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)(H,{type:`submit`,variant:`positive`,disabled:d,children:d?`Adding...`:`Add Provider`}),(0,K.jsx)(H,{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:Jl.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:M().nonempty({error:`Please select a role.`})});async function wv(e){let{data:t}=await N.post(`/UserInvite/`,e);return t}function Tv(){return R({mutationFn:e=>wv(e)})}function Ev({user:e}){let{update:t}=Sp(),{mutate:n,isPending:r}=Tv(),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)(H,{variant:`ghost`,size:`sm`,className:`h-auto px-2 py-0 align-middle text-sm`,onClick:a,disabled:r||!i,children:[(0,K.jsx)(ua,{}),` Resend invite`]}):null}var Dv=I_(),Ov=[{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},Dv.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},Dv.display({header:``,enableSorting:!1,id:`actions`,cell:e=>e.row.original.status===`PENDING`?(0,K.jsx)(Ev,{user:e.row.original}):null})];function kv({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 Av=S({email:Jl.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:M().nonempty({error:`Please select a role.`})});async function jv(e){let{data:t}=await N.post(`/OrganizationRole/`,e);return t}function Mv(){return R({mutationFn:e=>jv(e)})}function Nv({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let{organizationId:r}=B({strict:!1}),{data:i,isLoading:a}=F({...J_(r),throwOnError:!0}),[o,s]=(0,G.useState)(!1),c=Gt({resolver:it(Av),defaultValues:{email:``,roleId:``}}),{mutate:l,isPending:u}=Mv(),{mutate:d,isPending:f}=Tv(),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)(Id,{onOpenChange:()=>{n(!1),s(!1),c.reset()},open:e,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...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)(Wd,{children:(0,K.jsx)(Kd,{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)(Sg,{}):(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...e,onValueChange:t=>e.onChange(t),children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Role`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(Og,{children:`Role`}),i?.map(e=>(0,K.jsx)(kg,{value:e.id,children:(0,K.jsx)(kv,{name:e.roleName,id:e.id})},e.id))]})})]})}),(0,K.jsx)(Q,{})]})}),o&&(0,K.jsxs)(qd,{className:`p-3 my-5 text-white rounded-md bg-amber-600 flex`,children:[(0,K.jsx)(ca,{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)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:u||f,children:[(0,K.jsx)(Ka,{}),` `,o?`Invite User`:`Add User`]})})})]})})})})}async function Pv({roleId:e,userId:t}){let{data:n}=await N.delete(`/OrganizationRole/role/${e}/user/${t}`);return n}function Fv(){return R({mutationFn:({roleId:e,userId:t})=>Pv({roleId:e,userId:t})})}function Iv(e){let[t,n]=(0,G.useState)(e||!1);return[t,(0,G.useCallback)(e=>{n(typeof e==`boolean`?e:e.target.checked)},[])]}function Lv({data:e,readOnly:t,canRemove:n,orgRole:r,selectedRoles:i,setChangesMade:a}){let{mutate:o,isPending:s}=Mv(),{mutate:c,isPending:l}=Fv(),u=!!i[r.id],[d,f]=(0,G.useState)(u),[p,m]=Iv(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)(Al,{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 Rv({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?ia:Ao;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)(Oo,{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)(H,{type:`button`,variant:`ghostOutline`,disabled:t,onClick:()=>i(!1),children:`Cancel`}),(0,K.jsxs)(H,{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)(H,{type:`button`,variant:`destructiveOutline`,disabled:t,onClick:()=>i(!0),children:[(0,K.jsx)(o,{}),` `,a.idle]})})}function zv(e){return e?.trim().toLowerCase()===`admin`}function Bv({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 Vv({closeModal:e,data:t,isModalOpen:n,onUserUpdated:r,orgUserCount:i,orgAdminCount:a}){let{organizationId:o}=B({strict:!1}),s=Ln(),{update:c,remove:l}=Sp(o),u=s.user?.email===t.email,[d,f]=(0,G.useState)(!1),{canRemoveRoles:p,showRemovalAction:m,blockedReason:h}=Bv({canDelete:l,isSelf:u,orgUserCount:i,adminCount:a,isAdmin:(t.roles??[]).some(e=>zv(e.roleName)),roleCount:t.roles?.length??0}),{mutateAsync:g}=Fv(),[_,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)(Id,{onOpenChange:d?r:e,open:n,children:(0,K.jsxs)(Ud,{resizable:!0,children:[(0,K.jsx)(Wd,{children:(0,K.jsxs)(Kd,{children:[c?`Edit `:`View `,` `,t.email,` `,u?`(yourself)`:``]})}),c&&(0,K.jsxs)(qd,{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)(gs,{centered:!0,text:`Loading roles…`,className:`flex-1 min-h-0`}),children:(0,K.jsx)(Hv,{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)(Ev,{user:t})}),m&&(0,K.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,K.jsx)(Rv,{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)(Oo,{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 Hv({data:e,organizationId:t,update:n,canRemove:r,setChangesMade:i}){let{data:a}=et(J_(t)),o=(0,G.useMemo)(()=>e.roles?Lm(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)(Lv,{readOnly:!n,canRemove:r,data:e,orgRole:t,selectedRoles:o,setChangesMade:i},t.id))})}function Uv(e,t){return e.email>t.email?1:-1}function Wv(e){return(e.users??[]).filter(e=>e!=null)}function Gv(e){let t={};for(let n of e)for(let e of Wv(n))t[e.id]||(t[e.id]={...e,roles:[]}),t[e.id].roles.push(n);return Object.values(t).sort(Uv)}function Kv(e){let t=new Set;for(let n of e)if(zv(n.roleName))for(let e of Wv(n))t.add(e.id);return t.size}function qv(){let e=L(),{organizationId:t,orgUserId:n}=B({strict:!1}),{update:r}=Sp(t),{data:i,refetch:a,isFetching:o,isRefetching:s}=et(J_(t)),c=(0,G.useMemo)(()=>Gv(i),[i]),l=(0,G.useMemo)(()=>Kv(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=H_(a);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{children:(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(L_,{data:c,isFetching:o||s,columns:Ov,onRowClick:y,sortingState:g,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,K.jsx)(Ra,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:_,accessKey:`a`,disabled:p,children:[(0,K.jsx)(Ia,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),r&&(0,K.jsx)(Nv,{isModalOpen:p,onChangesSaved:v,setIsModalOpen:m}),f&&(0,K.jsx)(Vv,{closeModal:b,data:u,isModalOpen:f,onUserUpdated:x,orgUserCount:c.length,orgAdminCount:l})]})})]})}function Jv({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`skeleton`,className:P(`bg-primary/10 animate-pulse rounded-md`,e),...t})}function Yv({organizationId:e,organizationName:t,providers:n}){return(0,K.jsxs)(Vn,{className:`relative gap-0 py-0 h-full justify-between overflow-hidden border border-amber-500/30`,children:[(0,K.jsxs)(Hn,{className:`gap-4 py-5 border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/20 dark:from-primary/20 dark:to-primary/5`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`rounded-lg border border-primary/20 bg-background/50 p-2 text-primary dark:text-violet-300`,children:(0,K.jsx)(vr,{className:`size-5`,"aria-hidden":`true`})}),(0,K.jsx)(`span`,{className:`rounded-full border border-amber-500/30 bg-amber-500/10 px-2 py-1 text-xs`,children:`Sign-in required`})]}),(0,K.jsx)(Un,{children:(0,K.jsx)(`h2`,{className:`truncate text-xl`,title:t||e,children:t||e})}),t&&t!==e&&(0,K.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,title:e,children:e})]}),(0,K.jsxs)(Gn,{className:`py-4 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)(Ri,{className:`size-3 shrink-0`}),`Sign in with an OAuth provider to access this organization.`]}),n.map(e=>(0,K.jsx)(`a`,{href:Ku(e.oauthConfigId),children:(0,K.jsxs)(H,{variant:`outline`,className:`w-full`,children:[`Sign in with `,e.name]})},e.oauthConfigId))]})]})}var Xv=S({couponId:M().nonempty({message:`Please enter a coupon ID.`}).trim()});async function Zv({organizationId:e,couponId:t}){let{data:n}=await N.post(`/Coupon`,{organizationId:e,couponId:t},{validateStatus:e=>e>=200&&e<400||e===400||e===409});return n}function Qv(){return R({mutationFn:Zv})}function $v({organizationId:e,organizationName:t,isOpen:n,onClose:r}){let{mutate:i,isPending:a}=Qv(),o=Gt({resolver:it(Xv),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)(Id,{open:n,onOpenChange:e=>!e&&r(),children:(0,K.jsxs)(Ud,{children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Add Coupon`}),(0,K.jsxs)(qd,{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)(El,{...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)(Gd,{children:[(0,K.jsx)(H,{type:`button`,variant:`ghost`,onClick:r,disabled:a,children:`Cancel`}),(0,K.jsx)(H,{type:`submit`,disabled:a,children:a?`Adding...`:`Add Coupon`})]})]})})]})})}function ey({organizationRole:e,onDeleteOrgModal:t}){let{organizationId:n,organizationName:r,roleName:i}=e,a=r||n,[o]=tm(n),{remove:s,update:c}=bp(n),l=c,{view:u}=Sp(n),d=zn(`billing:write`),[f,p]=(0,G.useState)(!1),m=(0,G.useCallback)(()=>{t(e)},[t,e]),h=[{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)(Qa,{className:`size-4 mr-2 text-blue-500`}),label:`Clusters`},u&&{key:`roles`,to:`${n}/roles`,icon:(0,K.jsx)(no,{className:`size-4 mr-2 text-purple`}),label:`Roles`},u&&{key:`users`,to:`${n}/users`,icon:(0,K.jsx)(Po,{className:`size-4 mr-2 text-orange-500`}),label:`Users`},l&&{key:`billing`,to:`${n}/billing`,icon:(0,K.jsx)(ei,{className:`size-4 mr-2 text-green-500`}),label:`Billing`},c&&{key:`settings`,to:`${n}/settings`,icon:(0,K.jsx)(Ri,{className:`size-4 mr-2 text-yellow-500`}),label:`Settings`},d&&{key:`add-coupon`,onClick:()=>p(!0),icon:(0,K.jsx)(wo,{className:`size-4 mr-2 text-pink-500`}),label:`Add Coupon`},s&&{type:`separator`,key:`sep-bottom`},s&&{key:`delete`,onClick:m,className:`focus:bg-red/70 focus:text-white`,icon:(0,K.jsx)(Eo,{className:`size-4 mr-2 text-red-500`}),label:`Delete`}].filter($c),g=s||d;return(0,K.jsx)(af,{items:g?h:[],children:(0,K.jsxs)(Vn,{className:`group relative gap-0 py-0 h-full cursor-pointer justify-between overflow-hidden border border-primary/15 transition-[border-color,box-shadow] duration-200 hover:border-primary/60 hover:shadow-lg hover:ring-2 hover:ring-primary/40 dark:hover:ring-violet-400/60`,children:[(0,K.jsx)(V,{to:n,"aria-label":`Open ${a}`,className:`absolute inset-0 z-10 cursor-pointer rounded-[inherit] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring focus-visible:outline-none`}),(0,K.jsxs)(Hn,{className:`gap-4 py-5 border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/20 dark:from-primary/20 dark:to-primary/5`,children:[(0,K.jsxs)(Wn,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,K.jsx)(`span`,{className:`rounded-lg border border-primary/20 bg-background/50 p-2 text-primary dark:text-violet-300`,children:(0,K.jsx)(vr,{className:`size-5`,"aria-hidden":`true`})}),g&&(0,K.jsxs)(Yo,{children:[(0,K.jsxs)(Xo,{"aria-label":`Options`,onClick:e=>e.stopPropagation(),className:`relative z-20 inline-flex cursor-pointer shrink-0 items-center gap-1.5 rounded-md border border-primary/25 bg-background/60 px-2.5 py-1.5 text-xs font-medium text-foreground shadow-sm transition-colors hover:border-primary/60 hover:bg-primary/15 focus-visible:outline-2 focus-visible:outline-ring`,children:[`Options `,(0,K.jsx)(On,{className:`size-3.5`,"aria-hidden":`true`})]}),(0,K.jsx)(Zo,{align:`end`,children:rf(h,`dropdown`)})]})]}),(0,K.jsx)(Un,{children:(0,K.jsx)(`h2`,{className:`truncate text-xl`,title:a,children:a})}),(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-xs text-muted-foreground`,children:[n!==a&&(0,K.jsx)(`span`,{className:`truncate`,title:n,children:n}),(0,K.jsx)(`button`,{type:`button`,onClick:o,"aria-label":`Copy ID for ${a}`,className:`relative z-20 shrink-0 cursor-pointer rounded p-1 hover:bg-primary/15 focus-visible:outline-2 focus-visible:outline-ring`,children:(0,K.jsx)(Qr,{className:`size-3.5`,"aria-hidden":`true`})})]})]}),(0,K.jsxs)(Gn,{className:`py-4 flex items-center justify-between gap-2`,children:[(0,K.jsx)(Fs,{variant:`outline`,className:`min-w-0 shrink border-primary/25 bg-primary/10 text-foreground`,title:Cl(i),children:(0,K.jsx)(`span`,{className:`truncate`,children:Cl(i)})}),(0,K.jsxs)(`span`,{className:`text-sm shrink-0 py-2 whitespace-nowrap ml-auto`,children:[`Open `,(0,K.jsx)(nr,{className:`inline-block`})]})]}),(0,K.jsx)($v,{organizationId:n,organizationName:r,isOpen:f,onClose:()=>p(!1)})]})})}function ty(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 ny(e){let t=e.filter(e=>e.locked).length;return{total:e.length,accessible:e.length-t,locked:t}}function ry(e,t,n,r,i){return e.filter(ty([`id`,`name`],t)).filter(e=>n===`all`||(n===`locked`?e.locked:!e.locked)).filter(e=>!r||!e.locked&&e.roleName===r).sort((e,t)=>(e.name.localeCompare(t.name)||e.id.localeCompare(t.id))*(i?-1:1))}async function iy(e){let{data:t}=await N.delete(`/Organization/${e}`);return t}function ay(){return R({mutationFn:e=>iy(e)})}async function oy(e){let{data:t}=await N.post(`/Organization/`,{...e});return t}function sy(){return R({mutationFn:e=>oy(e)})}var cy=M().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.`}),ly=S({name:M().max(255,{error:`Name cannot be longer than 255 characters.`}),subdomain:C([O(``),E(),cy]).optional()});function uy(){let{user:e}=Ln(),t=L(),n=Gt({resolver:it(ly),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=Km(Jm(o),cy.maxLength);return{suggestedSubdomain:e,fullHostName:`future-cluster-names.${s||e}.harperfabric.com`}},[o,s]),{mutate:l,isPending:d}=sy(),p=Me(),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)(El,{...n,children:(0,K.jsxs)(`form`,{id:`org-add-form`,name:`org-add-form`,onSubmit:n.handleSubmit(h),className:`grid items-start gap-6 text-foreground lg:grid-cols-[1.2fr_1fr]`,children:[(0,K.jsxs)(Vn,{className:`min-w-0 gap-0 overflow-hidden py-0`,children:[(0,K.jsxs)(Hn,{className:`border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/20 py-5 dark:from-primary/20 dark:to-primary/5`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-primary dark:text-violet-300`,children:[(0,K.jsx)(vr,{className:`size-4`,"aria-hidden":`true`}),(0,K.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:`Organization details`})]}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Choose a name and an address for your organization.`})]}),(0,K.jsxs)(Gn,{className:`grid gap-6 py-6`,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`,className:`bg-background/60`,maxLength:ly.shape.name.maxLength,autoCapitalize:`words`,placeholder:a,...e})}),(0,K.jsx)(Lg,{children:`Use a name your team will recognize.`}),(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`,className:`bg-background/60`,maxLength:cy.maxLength,autoCapitalize:`none`,placeholder:c.suggestedSubdomain,...e})}),(0,K.jsx)(Lg,{children:`Lowercase letters, numbers, and dashes. Leave blank to use the suggested subdomain.`}),(0,K.jsx)(Q,{})]})})]}),(0,K.jsx)(`div`,{className:`border-t border-border/60 bg-muted/20 px-6 py-5`,children:(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:d,className:`w-full sm:w-auto`,children:[d?`Creating organization…`:`Create organization`,` `,(0,K.jsx)(nr,{"aria-hidden":`true`})]})})]}),(0,K.jsxs)(`aside`,{className:`min-w-0 rounded-2xl border border-primary/15 bg-primary/5 p-6`,"aria-labelledby":`org-address-heading`,children:[(0,K.jsxs)(`div`,{className:`mb-4 flex items-center gap-3`,children:[(0,K.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-primary/10 text-primary dark:text-violet-300`,children:(0,K.jsx)(ii,{className:`size-5`,"aria-hidden":`true`})}),(0,K.jsx)(`h2`,{id:`org-address-heading`,className:`text-base font-semibold`,children:`Your cluster addresses`})]}),(0,K.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-muted-foreground`,children:`Your subdomain is part of the address for Harper-hosted clusters you create in this organization.`}),(0,K.jsxs)(`div`,{className:`my-5`,children:[(0,K.jsx)(`p`,{className:`mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground`,children:`Address preview`}),(0,K.jsx)(gg,{hostname:c.fullHostName,testId:`org-hostname-preview`})]}),(0,K.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:`The cluster name here is a placeholder. After creating your organization, you’ll name your first cluster!`}),(0,K.jsxs)(`div`,{className:`mt-5 border-t border-primary/15 pt-5`,children:[(0,K.jsx)(`h3`,{className:`text-sm font-medium`,children:`Prefer your own domain?`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-muted-foreground`,children:`You can also bind a domain you own to a Harper-hosted cluster after creating it.`}),(0,K.jsxs)(`a`,{href:`https://docs.harperdb.io/fabric/custom-domains`,target:`_blank`,rel:`noopener noreferrer`,className:`mt-3 inline-flex items-center gap-1.5 rounded-sm text-sm font-medium text-primary underline underline-offset-4 hover:no-underline focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-ring dark:text-violet-300`,children:[`Learn about custom domains`,(0,K.jsx)(ci,{className:`size-3.5`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`(opens in a new tab)`})]})]})]})]})})})}function dy(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsxs)(`section`,{className:`mx-auto mt-32 w-full max-w-6xl px-4 py-8 md:px-12 md:py-10`,children:[(0,K.jsxs)(`header`,{className:`mb-8 flex items-center gap-4`,children:[(0,K.jsx)(`div`,{className:`flex size-14 shrink-0 items-center justify-center rounded-2xl border border-primary/20 bg-primary/10 text-primary dark:text-violet-300`,children:(0,K.jsx)(vr,{className:`size-6`,"aria-hidden":`true`})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`mb-1 text-xs font-medium uppercase tracking-widest text-muted-foreground`,children:`Your workspace`}),(0,K.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight`,children:`Create an organization`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:`A home for your team and clusters in Harper Fabric.`})]})]}),(0,K.jsx)(uy,{})]})]})}var fy={org:`organization`,clu:`cluster`,ins:`instance`},py=/^(org|clu|ins)-[a-z0-9]+$/;function my(e){if(typeof e!=`string`)return null;let t=e.trim(),n=py.exec(t);return n?{kind:fy[n[1]],id:t}:null}function hy(e,t){let n=e*12,r=gy(t);return`/Admin/Organization/?${[...r?[`search=${encodeURIComponent(r)}`]:[],`status=ne=DELETED`,...r?[]:[`sort(name)`],`limit(${n},${n+12+1})`].join(`&`)}`}function gy(e){return typeof e==`string`?e.trim():``}async function _y(e,t){let{data:n}=await N.get(hy(e,t));return{organizations:n.slice(0,12),hasNextPage:n.length>12}}var vy={organizations:[],hasNextPage:!1};function yy(e){return e instanceof b&&(e.response?.status===404||e.status===404)}async function by(e){try{let{data:t}=await N.get(`/Admin/Organization/${e}`);return t?{organizations:[t],hasNextPage:!1}:vy}catch(e){if(yy(e))return vy;throw e}}async function xy(e){try{let{data:t}=await N.get(`/Cluster/${e}`),n=t?.organizationId;return n?await by(n):vy}catch(e){if(yy(e))return vy;throw e}}function Sy(e,t){let n=gy(t),r=my(n);return z({queryKey:[`admin-all-organizations`,n,e],queryFn:()=>r?.kind===`organization`?by(r.id):r?.kind===`cluster`?xy(r.id):_y(e,n),placeholderData:qe,retry:!1})}function Cy(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 wy(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 Ty(e,t){let[n,r]=(0,G.useState)(t),[i,a]=(0,G.useState)(e);return(0,G.useEffect)(()=>{wy(n,t)||(r(t),a(e))},[n,t,e]),wy(n,t)?[i,a]:[e,a]}var Ey={};function Dy(e,t,n){let r=(0,G.useCallback)((e,n)=>t(e,n),[n]);(0,G.useEffect)(()=>(Ey[e]||(Ey[e]=[]),Ey[e].push(r),function(){let t=Ey[e].indexOf(r);t>=0&&Ey[e].splice(t,1)}),[e,t,r])}function Oy(e,t,n){let r=Ey[e];if(r)for(let e of r)e(t,n)}function ky(e,t,n){return r=>Oy(e,t,n??r)}function Ay(e,t,n){return(0,G.useCallback)(r=>Oy(e,t,n??r),[e,t,n])}function jy(e,t){let n=Ty(nt(e,t),[e]),[r,i]=n;return(0,G.useEffect)(()=>{rt(e,r),Oy(`Session:${e}`,r)},[e,r]),Dy(`Session:${e}`,function(e){r!==e&&i(e)},[r,e,t]),(0,G.useEffect)(function(){let n=n=>{n.key===e&&i(nt(e,t))};return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}},[e,i,t]),n}function My(){let e=Me(),{data:t}=et(s()),{mutate:n,isPending:r}=ay(),[i,a]=(0,G.useState)(!1),[o,c]=(0,G.useState)(null),[l,u]=(0,G.useState)(``),[d,f]=(0,G.useState)(`all`),[p,m]=(0,G.useState)(``),[h,g]=(0,G.useState)(!1),_=()=>{u(``),f(`all`),m(``),g(!1),S(0)},v=zn(`org:read`),[y,b]=jy(`ShowAllOrganizations`,!1),[x,S]=(0,G.useState)(0),C=v&&y,w=(0,G.useCallback)(e=>{b(e),S(0)},[b]),T=Cy(l,300),E=(0,G.useMemo)(()=>{if(!v)return null;let e=my(T);return e?.kind===`organization`||e?.kind===`cluster`?e:null},[v,T]),D=C||!!E,{data:O,isPending:k,isError:A,isFetching:ee,refetch:te}=F({...Sy(x,T),enabled:D}),j=(0,G.useMemo)(()=>qn(t),[t]),M=(0,G.useMemo)(()=>ny(j),[j]),N=(0,G.useMemo)(()=>[...new Set(j.filter(e=>!e.locked).map(e=>e.roleName))].sort(),[j]),P=N.includes(p)?p:``,ne=(0,G.useMemo)(()=>D?[]:ry(j,l,d,P,h),[j,l,d,P,h,D]),re=!!l||d!==`all`||!!P||h,ie=(0,G.useMemo)(()=>{let e=t?.roles||{};return(O?.organizations||[]).map(t=>({organizationId:t.id,organizationName:t.name||t.id,roleName:e[t.id]?.role||`fabric staff`}))},[O?.organizations,t?.roles]),ae=(0,G.useCallback)(e=>{u(e.currentTarget.value||``),S(0)},[]),oe=(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]),se=(0,G.useCallback)(e=>{c(e),a(!0)},[]),{createCluster:ce}=Te({strict:!1});return!D&&M.accessible===1&&!re&&ce?(0,K.jsx)(ve,{to:`/${j.find(e=>!e.locked).id}/new-cluster`,replace:!0}):!D&&!j.length&&!re?(0,K.jsx)(dy,{}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsxs)(`section`,{className:`mt-32 px-4 pt-6 pb-10 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:[(0,K.jsxs)(`header`,{className:`flex flex-wrap items-center justify-between gap-4 pb-6`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-widest text-primary dark:text-violet-300`,children:`Organizations`}),(0,K.jsx)(`h1`,{className:`mt-2 text-3xl font-semibold tracking-tight`,children:`Your teams, connected.`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:`Find your organization and get back to building.`})]}),(0,K.jsx)(H,{asChild:!0,variant:`positive`,accessKey:`n`,children:(0,K.jsxs)(V,{to:`/new-org`,children:[(0,K.jsx)(Ia,{}),`New Organization`]})})]}),!D&&(0,K.jsx)(`div`,{role:`group`,"aria-label":`Organization summary`,className:`mb-5 hidden grid-cols-3 gap-3 sm:grid`,children:[{value:`all`,label:`Total organizations`,count:M.total},{value:`accessible`,label:`Accessible`,count:M.accessible},{value:`locked`,label:`Sign-in required`,count:M.locked}].map(e=>(0,K.jsxs)(`button`,{type:`button`,"aria-pressed":d===e.value,onClick:()=>{f(e.value),m(``)},className:`flex cursor-pointer items-center justify-between rounded-xl border px-4 py-3 text-sm transition-colors hover:border-primary/60 focus-visible:outline-2 focus-visible:outline-ring ${d===e.value?`border-primary/40 bg-primary/10`:`border-border bg-card/60`}`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:e.label}),(0,K.jsx)(`span`,{className:`text-xl font-semibold`,children:e.count})]},e.value))}),(0,K.jsxs)(`div`,{role:`search`,"aria-label":`Find organizations`,className:`mb-4 flex flex-wrap items-center gap-3 rounded-xl border border-border bg-card/60 p-3`,children:[(0,K.jsx)($,{"aria-label":`Search organizations`,placeholder:`Search name or ID…`,className:`min-w-0 flex-1 basis-56 dark:bg-background/60`,value:l,onChange:ae}),!D&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`select`,{"aria-label":`Organization access`,value:d,onChange:e=>{f(e.target.value),m(``)},className:`max-w-full rounded-lg border border-border bg-background px-3 py-2 text-sm`,children:[(0,K.jsx)(`option`,{value:`all`,children:`All access`}),(0,K.jsx)(`option`,{value:`accessible`,children:`Accessible`}),(0,K.jsx)(`option`,{value:`locked`,children:`Sign-in required`})]}),d!==`locked`&&(N.length>1||!!P)&&(0,K.jsxs)(`select`,{"aria-label":`Organization role`,value:P,onChange:e=>m(e.target.value),className:`max-w-full rounded-lg border border-border bg-background px-3 py-2 text-sm`,children:[(0,K.jsx)(`option`,{value:``,children:`All roles`}),N.map(e=>(0,K.jsx)(`option`,{value:e,children:Cl(e)},e))]}),(0,K.jsxs)(`select`,{"aria-label":`Sort organizations`,value:h?`desc`:`asc`,onChange:e=>g(e.target.value===`desc`),className:`max-w-full rounded-lg border border-border bg-background px-3 py-2 text-sm`,children:[(0,K.jsx)(`option`,{value:`asc`,children:`Name: A–Z`}),(0,K.jsx)(`option`,{value:`desc`,children:`Name: Z–A`})]})]}),v&&(0,K.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm`,children:[(0,K.jsx)(yv,{checked:y,onCheckedChange:w,"aria-label":`Show all organizations`}),`All organizations`]})]}),(0,K.jsx)(`p`,{role:`status`,className:`mb-4 text-xs text-muted-foreground`,children:D?`Staff directory · Server search and pagination`:`Showing ${ne.length} of ${M.total} organizations`}),D&&A&&(0,K.jsxs)(`div`,{role:`alert`,className:`mb-4 rounded-xl border p-6`,children:[(0,K.jsx)(`p`,{children:O?`Organizations couldn’t be refreshed. Showing the last available results.`:`Organizations couldn’t be loaded.`}),(0,K.jsx)(H,{variant:`outline`,disabled:ee,onClick:()=>void te(),children:ee?`Retrying…`:`Retry`})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-5 md:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4`,children:[D?k?Array.from({length:12},(e,t)=>(0,K.jsx)(Jv,{className:`h-48`},t)):ie.map(e=>(0,K.jsx)(ey,{organizationRole:e,onDeleteOrgModal:se},e.organizationId)):ne.map(e=>e.locked?(0,K.jsx)(Yv,{organizationId:e.id,organizationName:e.name,providers:e.providers},e.id):(0,K.jsx)(ey,{organizationRole:{organizationId:e.id,organizationName:e.name,roleName:e.roleName},onDeleteOrgModal:se},e.id)),(D?!k&&!A&&!ie.length:!ne.length)&&(0,K.jsxs)(`div`,{className:`col-span-full rounded-xl border border-dashed p-10 text-center`,children:[(0,K.jsx)(`h2`,{className:`text-lg font-medium`,children:`No matching organizations`}),(0,K.jsx)(`p`,{className:`my-3 text-sm text-muted-foreground`,children:`Try another name or clear your filters.`}),(0,K.jsx)(H,{variant:`outline`,onClick:_,children:`Clear filters`})]})]}),D&&(x>0||O?.hasNextPage)&&(0,K.jsxs)(`div`,{className:`flex items-center justify-center gap-4 py-6`,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:x===0,onClick:()=>S(e=>e-1),children:[(0,K.jsx)(er,{}),`Previous`]}),(0,K.jsxs)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:[`Page `,x+1]}),(0,K.jsxs)(H,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:!O?.hasNextPage,onClick:()=>S(e=>e+1),children:[`Next`,(0,K.jsx)(nr,{})]})]})]}),o&&(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`organization`,nameOfThingBeingDeleted:o.organizationName,isModalOpen:i,setIsModalOpen:()=>a(!1),deletionConfirmed:()=>oe(o),deletionPending:r})]})}var Ny=I({getParentRoute:()=>il,id:`_orgsLayout`});I({getParentRoute:()=>Ny,path:`/`,head:()=>({meta:[{title:`Organizations — Harper Fabric`}]}),component:My}),I({getParentRoute:()=>Ny,path:`/new-org`,head:()=>({meta:[{title:`New Organization — Harper Fabric`}]}),component:dy});var Py=I({getParentRoute:()=>Ny,path:`$organizationId`,beforeLoad:async e=>{let{organizationId:t}=e.params;if(!Ss(t))throw Se({to:`/`});return{organization:await e.context.queryClient.ensureQueryData(ws(t))}}});I({getParentRoute:()=>Py,path:`/roles`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:vv}),I({getParentRoute:()=>Py,path:`/roles/$orgRoleId`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:vv}),I({getParentRoute:()=>Py,path:`/users`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:qv}),I({getParentRoute:()=>Py,path:`/users/$orgUserId`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:qv}),I({getParentRoute:()=>Py,path:`/settings`,component:Cv}),K_(Py);var Fy=I({getParentRoute:()=>Py,id:`_clusterLayout`});I({getParentRoute:()=>Fy,path:`/`,head:()=>({meta:[{title:`Clusters — Harper Fabric`}]}),component:b_}),I({getParentRoute:()=>Py,path:`/new-cluster`,head:()=>({meta:[{title:`New Cluster — Harper Fabric`}]}),component:__}),I({getParentRoute:()=>Ly,path:`/edit`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:__}),I({getParentRoute:()=>Ly,path:`/edit/$mode`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:__});function Iy(){return(0,K.jsx)($e,{})}var Ly=I({getParentRoute:()=>Fy,path:`$clusterId`,component:Iy,beforeLoad:async({context:e,params:t})=>({cluster:await e.queryClient.ensureQueryData(ql(t.clusterId))})}),Ry=e=>new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}).format(e),zy=e=>`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(e)} hr`,By=e=>qg(e),Vy={reads:`Reads`,readBytes:`Read data`,writes:`Writes`,writeBytes:`Write data`,realTimeMessages:`Real-time messages`,realTimeBytes:`Real-time data`,cpuTimeHours:`Compute`,storageBytes:`Storage`},Hy={reads:Ry,readBytes:By,writes:Ry,writeBytes:By,realTimeMessages:Ry,realTimeBytes:By,cpuTimeHours:zy,storageBytes:By},Uy=[`reads`,`readBytes`,`writes`,`writeBytes`,`realTimeMessages`,`realTimeBytes`,`cpuTimeHours`,`storageBytes`];function Wy(e,t,n){return{label:n??Vy[e],used:t.used,limit:t.limit,unlimited:t.unlimited,limitKnown:t.limitKnown,format:Hy[e]}}function Gy({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 Ky(e){return z({queryKey:[`clusterUsage`,e],queryFn:async()=>{let{data:t}=await N.get(`/Cluster/${e}/usage`);return t},enabled:!!e,staleTime:6e4})}function qy(e){return F(Ky(e))}function Jy(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} ${Yy(e.renewsAt)}`:null].filter(Boolean).join(` · `)}function Yy(e){return new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(new Date(e))}function Xy({clusterId:e,base:t}){let{data:n}=qy(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)(nr,{className:`size-3`})]})]}),(0,K.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:Jy(n)}),(0,K.jsx)(`div`,{className:`mt-4`,children:n.regions.length===1?(0,K.jsx)(Zy,{data:n}):(0,K.jsx)(Qy,{data:n})})]})}function Zy({data:e}){let t=e.regions[0].metrics,n=[Wy(`reads`,t.reads),Wy(`writes`,t.writes),Wy(`storageBytes`,t.storageBytes),Wy(`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)(Gy,{...e},e.label))})}function Qy({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)(Gy,{...Wy(t.metric,{used:t.used,limit:t.limit,unlimited:!1,limitKnown:!0},`${t.region??`Region`} · ${Vy[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 $y({cluster:e}){let t=we(),n=Me(),{update:r,remove:i}=wp(e.organizationId,e.id),a=Dp(e.organizationId),{run:o,isPending:s}=Qp(e),{mutate:c,isPending:l}=Jp(),[u,d]=(0,G.useState)(!1),[f,p]=(0,G.useState)(!1),[m,h]=(0,G.useState)(!1),[g,_]=(0,G.useState)(null),v=e.status===`RUNNING`,y=e.status===`STOPPED`,b=e.status===`PARTIAL`,x=!a||s,S=(0,G.useCallback)(()=>{c(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),h(!1),U.success(`Success`,{description:`Cluster successfully terminated.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),t.navigate({to:`/${e.organizationId}`})},onError:()=>{h(!1)}})},[e.id,e.organizationId,c,n,t]),C=(0,G.useCallback)(()=>{let e=g;_(null),e&&o(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})},[g,o]);return Bp(e)||!r&&!i&&!a?null:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsxs)(H,{variant:`outline`,size:`sm`,disabled:s,className:`gap-1.5 hover:translate-y-0 data-[state=open]:[&>svg]:rotate-180`,children:[`Cluster actions`,(0,K.jsx)(On,{className:`size-4 transition-transform`})]})}),(0,K.jsxs)(Zo,{align:`end`,className:`w-56`,children:[(0,K.jsxs)(ns,{className:`text-gray-600 text-xs`,children:[`Container`,!a&&(0,K.jsx)(`span`,{className:`block font-normal`,children:`Requires an organization admin`})]}),(0,K.jsxs)(eb,{reason:a?void 0:`Only an organization administrator can start, stop, or restart this cluster.`,children:[(0,K.jsxs)(Qo,{disabled:x||!(y||b),onClick:()=>void o(`start`,{safeMode:!1,strategy:`parallel`}),children:[(0,K.jsx)(Pa,{}),` Start`]}),(0,K.jsxs)(Qo,{disabled:x||!y,onClick:()=>_(`start`),children:[(0,K.jsx)(Ki,{}),` Start in safe mode`]}),(0,K.jsxs)(Qo,{disabled:x||!(v||b),onClick:()=>p(!0),children:[(0,K.jsx)(Wa,{}),` Restart`]}),(0,K.jsxs)(Qo,{disabled:x||!v,onClick:()=>_(`restart`),children:[(0,K.jsx)(Ki,{}),` Restart in safe mode`]}),(0,K.jsxs)(Qo,{variant:`destructive`,disabled:x||!(v||b),onClick:()=>d(!0),children:[(0,K.jsx)(fo,{}),` Stop`]})]}),(0,K.jsx)(rs,{}),(0,K.jsxs)(Qo,{variant:`destructive`,disabled:!i,onClick:()=>h(!0),children:[(0,K.jsx)(Eo,{}),` Terminate`]})]})]}),(0,K.jsx)(Up,{clusterName:e.name,isPending:s,stopOpen:u,setStopOpen:d,onConfirmStop:()=>{d(!1),o(`stop`,{strategy:`parallel`})},restartOpen:f,setRestartOpen:p,onConfirmRestart:e=>{p(!1),o(`restart`,{safeMode:!1,strategy:e})}}),(0,K.jsx)(Kp,{open:g!==null,setOpen:e=>{e||_(null)},action:g??`restart`,targetName:e.name,scope:`cluster`,isPending:s,onConfirm:C}),(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:`Terminate`,presentParticiple:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:m,setIsModalOpen:h,deletionConfirmed:S,deletionPending:l})]})}function eb({reason:e,children:t}){return e?(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(`div`,{role:`none`,children:t})}),(0,K.jsx)(Tc,{side:`left`,className:`max-w-60`,children:e})]}):(0,K.jsx)(K.Fragment,{children:t})}function tb(){let{clusterId:e}=B({strict:!1}),t=we(),r=L(),{data:i}=F(ql(e,!0)),{user:a,isLoading:o}=Bn(e),{view:s,update:l}=wp(i?.organizationId,i?.id),[f,p]=(0,G.useState)(!1),m=i?.domains?.[0]?.domain||i?.fqdn||``,[h,g]=tm(m,m?`https://${m}`:``),_=i?`/${i.organizationId}/${i.id}`:``,v=(0,G.useCallback)(async()=>{if(i){p(!0);try{await u.establishFabricConnectAuth({id:i.id,operationsUrl:c(i)}),await t.invalidate()}catch{U.error(`Could not connect to this cluster through Fabric Connect.`)}finally{p(!1)}}},[i,t]),y=(0,G.useCallback)(()=>{i&&(u.setUserForEntity(i,null),u.flagForFabricConnect(i.id,!1)),r({to:`${_}/sign-in`})},[_,i,r]),b=(0,G.useCallback)(async()=>{if(i){try{await d({instanceClient:n({id:i.id}),entityId:i.id})}catch{}u.setUserForEntity(i,null),u.flagForFabricConnect(i.id,!1),u.flagForBasicAuth(i.id,null),await t.invalidate()}},[i,t]);if(!i)return(0,K.jsx)(rb,{children:(0,K.jsx)(ib,{})});if(!s)return(0,K.jsx)(ve,{to:`/${i.organizationId}`,replace:!0});if(Bp(i))return(0,K.jsx)(nb,{cluster:i});if(!i.fqdn)return(0,K.jsx)(ve,{to:`${_}/instances`,replace:!0});if(i.resetPassword){if(!l)return(0,K.jsx)(rb,{children:(0,K.jsxs)(`div`,{className:`text-center py-12`,children:[(0,K.jsx)(Qa,{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=i.status&&jl.includes(i.status)&&Wl(i);return(0,K.jsx)(ve,{to:`${_}/${e?`finish-setup`:`starting-up`}`,replace:!0})}let x=u.checkForFabricConnect(i.id),S=!!a,C=u.getLastConnectMode(i.id),w=(i.instances??[]).filter(e=>e.status&&!Ml.includes(e.status)).length,T=i.instances??[],E=!!i.status&&jl.includes(i.status)&&T.length>0&&T.every(e=>e.safeMode);return(0,K.jsxs)(rb,{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)(Qa,{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:i.name}),(0,K.jsx)(ab,{status:i.status}),E&&(0,K.jsx)(ob,{})]}),(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)(ci,{className:`size-3`})]}),(0,K.jsxs)(Yo,{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)(Qr,{className:`size-3.5`})}),(0,K.jsxs)(Zo,{align:`start`,children:[(0,K.jsx)(Qo,{onClick:h,children:`Copy host name`}),(0,K.jsx)(Qo,{onClick:g,children:`Copy API URL`})]})]})]})]}),(0,K.jsx)($y,{cluster:i})]}),o?(0,K.jsx)(ib,{}):S?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,K.jsx)(Pr,{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)(Ba,{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)(nr,{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&&!Bp(i)&&(0,K.jsx)(sb,{icon:Ro,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)(H,{className:`w-full`,disabled:f,onClick:()=>void v(),children:f?(0,K.jsx)(Xi,{className:`animate-spin`}):`Fabric Connect`})}),(0,K.jsx)(sb,{icon:Ri,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)(H,{className:`w-full`,variant:`outline`,onClick:y,children:`Direct sign-in`})})]})]}),(0,K.jsx)(Xy,{clusterId:i.id,base:_})]})}function nb({cluster:e}){let t=we(),r=L(),i=`/${e.organizationId}/${e.id}`,a=(0,G.useMemo)(()=>(e.instances??[]).filter(e=>e.status&&!Ml.includes(e.status)).sort(Fm),[e.instances]),o=a.at(0),{user:s,isLoading:c}=Bn(o?.id),l=!!o&&!!s,f=(0,G.useCallback)(()=>{o&&r({to:`${i}/instance/${o.id}/sign-in`})},[i,o,r]),m=(0,G.useCallback)(async()=>{if(o){try{await d({instanceClient:n({id:o.id,operationsUrl:p(o)}),entityId:o.id})}catch{}u.setUserForEntity(o,null),u.flagForBasicAuth(o.id,null),await t.invalidate()}},[o,t]);return(0,K.jsxs)(rb,{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)(Qa,{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:`${i}/instances`,className:`hover:text-foreground hover:underline`,children:[a.length,` `,a.length===1?`instance`:`instances`]})})]})]}),o?c?(0,K.jsx)(ib,{}):l?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,K.jsx)(Pr,{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:[`· `,o.name||o.instanceFqdn]})]}),(0,K.jsxs)(V,{to:`${i}/instance/${o.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)(Ba,{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)(nr,{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)(sb,{icon:Ri,title:`Direct sign-in`,description:`Sign in with this instance's Harper username and password.`,children:(0,K.jsx)(H,{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:`${i}/instances`,className:`underline hover:text-foreground`,children:`Instances`}),` page.`]})]})}function rb({children:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(wm,{children:(0,K.jsx)(`div`,{className:`max-w-3xl`,children:e})})]})}function ib(){return(0,K.jsx)(`div`,{className:`flex justify-center py-10 text-muted-foreground`,children:(0,K.jsx)(Xi,{className:`size-6 animate-spin`})})}function ab({status:e}){let t=e&&jl.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 ob(){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)(Ki,{className:`size-3`}),`Safe mode`]})}function sb({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 cb({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(wm,{children:(0,K.jsx)(`div`,{className:t,children:e})})]})}function lb(e){let t=_s(e);return t===void 0||t===408||t>=500}var ub=`Not attempted.`;function db(e){return[...new Set(e.split(/[,\s]+/).map(e=>e.trim().toLowerCase()).filter(Boolean))]}function fb(e){let t=_s(e);return lb(e)||t===401||t===429}async function pb(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:Ko(t).message,error:t,attempted:!0}),fb(t)){for(let t of e.slice(i+1))r.push({domain:t,message:ub,error:void 0,attempted:!1});break}}}return mb(r),{added:n,failures:r}}function mb(e){let t=new Set;for(let{error:n,attempted:r}of e){if(!r||_s(n)===409)continue;let e=_s(n);t.has(e)||(t.add(e),console.error(n))}}var hb=4e3;async function gb(e,t=hb){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{clearTimeout(n)}}function _b(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 vb(e,t){return e.filter(({domain:e,error:n,attempted:r})=>!r||!lb(n)||!t.has(e))}function yb(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 bb(e){return e.map(({domain:e,message:t})=>`${e} — ${t}`).join(`; `)}var xb=new Set([`com`,`co`,`org`,`net`,`edu`,`gov`,`mil`,`me`,`biz`,`info`,`ac`,`or`,`ne`,`go`,`lg`,`asn`,`id`,`nom`,`sch`,`ltd`,`plc`]);function Sb(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&&xb.has(r)?3:2;return t.length<=i?`@`:t.slice(0,-i).join(`.`)}function Cb({cluster:{fqdn:e},domain:{domain:t,id:n}}){let r=Sb(t),[i,a,o]=tm(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)(H,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:i,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:a,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:o,children:(0,K.jsx)(Qr,{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 wb({certificate:e,domain:t,cluster:n}){let r=Sb(t.domain),[i,a,o]=tm(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)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:i,title:`Copy Name`,children:(0,K.jsx)(Qr,{className:`w-3 h-3`})})]}),(0,K.jsx)(Tb,{}),(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)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:a,title:`Copy Target`,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`h-3 w-3 p-0`,onClick:o,title:`Copy ID`,children:(0,K.jsx)(Qr,{className:`w-2.5 h-2.5`})})]})})]})]})}function Tb(){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 Eb(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:()=>Db(e)})}async function Db({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 Ob(e){return z({queryKey:[e,`ChallengeCertificate`],queryFn:async()=>{if(!e)return[];let{data:t}=await Db({searchAttribute:`domain`,entityId:e,databaseName:`data`,tableName:`ChallengeCertificate`,sort:{attribute:`domain`,descending:!0},instanceClient:n({id:e,forceFabricConnect:!0}),onlyIfCached:!1,pageIndex:0,pageSize:100});return t},enabled:!!e,refetchInterval:bs(5e3),retry:xs()})}function kb(e){return F(Ob(e))}function Ab({domain:{challengeToken:e,challengeTxtRecord:t,domain:n,id:r},cluster:{fqdn:i}}){let a=Sb(n),[o,s,c,l,u]=tm(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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:o,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:s,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:c,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:l,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:u,children:(0,K.jsx)(Qr,{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 jb({clusterId:e,domainIds:t,generateDomainCerts:n}){let{data:r}=await N.put(`/Cluster/${e}`,{domainIds:t,generateDomainCerts:n},{timeout:0});return r}function Mb(){return R({mutationFn:e=>jb(e)})}S({domainId:M()});async function Nb(e){let{data:t}=await N.delete(`/Domain/${e.domainId}`);return t}function Pb(){return R({mutationFn:e=>Nb(e)})}function Fb(e){return[...new Set(e)]}var Ib=I_();function Lb(e,t,n){let{data:r}=kb(e.id),i=(0,G.useMemo)(()=>!!r?.some(e=>!e.issueDate||e.inProgress),[r]),{mutate:a,isPending:o}=Mb(),{mutate:s,isPending:c}=Pb(),l=o||c,u=(0,G.useCallback)((t,n)=>{if(!zl(e.status)){U.error(`Cluster is currently `+e.status,{description:`To bind a domain, it must be running.`});return}a({clusterId:e.id,domainIds:Fb((e.domainIds?.slice()||[]).concat([t])),generateDomainCerts:n},{onSuccess:()=>{Jo.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:()=>{Jo.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:()=>{Jo.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),U.success(`Domain unbound!`)}})},[s]);return(0,G.useMemo)(()=>[Ib.display({id:`select`,header:`Bind`,size:50,cell:r=>{let a=r.row.original;return a.status!==`ACTIVE`||a.clusterId||Bp(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})})}}),Ib.display({header:`Domains`,id:`domain`,enableSorting:!1,size:150,cell:e=>{let t=e.row.original;return(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{children:t.domain}),(0,K.jsx)(H,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l||!!t.clusterId,onClick:()=>d(t.id),children:`Remove Domain`})]})}),(0,K.jsx)(Tc,{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!`})]})}}),Ib.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)(wb,{certificate:i,domain:n,cluster:e})}),(0,K.jsx)(H,{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)(Ab,{domain:n,cluster:e}):Bp(e)?`Cannot be associated with this self-managed cluster.`:n.status===`ACTIVE`&&!n.clusterId?(0,K.jsx)(Cb,{cluster:e,domain:n}):n.status}})],[e,u,l,r,i,t,n])}var Rb=`Enter a domain name.`,zb=S({domain:M().trim().min(1,Rb),organizationId:M()});async function Bb(e){let{data:t}=await N.post(`/Domain/`,e);return t}function Vb(){return R({mutationFn:e=>Bb(e),meta:{skipGlobalErrorToast:!0},networkMode:`always`})}async function Hb(e){let{data:t}=await N.post(`/Domain/${e}/validate`);return t}async function Ub(e){let{data:t}=await N.get(`/Domain/?organizationId=${e}`);return t}function Wb(e){return z({queryKey:[e,`domains`],queryFn:()=>Ub(e)})}function Gb(){let{organizationId:e,clusterId:t}=B({strict:!1}),{data:n}=et(ql(t,!0)),{update:r}=Sp(e),{data:i,refetch:a,isFetching:o,isPending:s,isRefetching:c}=F(Wb(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=H_(a),[p,m]=(0,G.useState)([]),h=(0,G.useCallback)(e=>{m(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),{mutate:g,isPending:v}=Mb(),y=(0,G.useCallback)(()=>{if(!zl(n.status)){U.error(`Cluster is currently `+n.status,{description:`To bind a domain, it must be running.`});return}g({clusterId:n.id,domainIds:Fb((n.domainIds?.slice()||[]).concat(p)),generateDomainCerts:!0},{onSuccess:()=>{Jo.invalidateQueries({queryKey:[n.organizationId],refetchType:`active`}),U.success(`Domain(s) bound! Certificates are being generated in the background now.`),m([])}})},[n,p,g]),{mutateAsync:b}=Vb(),x=Gt({resolver:it(zb),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=db(e.domain);if(t.length===0){x.setError(`domain`,{type:`server`,message:Rb});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&&_b(i),{added:r,failures:o}=await pb(t,t=>b({...e,domain:t})),s=be.isOnline()&&(r.length>0||o.some(({error:e,attempted:t})=>t&&lb(e)))?await gb(a()):void 0,c=vb(o,s?yb(n,_b(s.data)):new Set),l=r.length+o.length-c.length;if(l>0&&U.success(`${_(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:bb(c)})},[b,x,i,a]),w=(0,G.useCallback)(async()=>{let e=`Validating ${_(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 Hb(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=Lb(n,p,h),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)(L_,{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)(El,{...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)(H,{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)(H,{type:`submit`,variant:`submit`,disabled:S,children:[(0,K.jsx)(Ia,{}),` Add`]}),l.length>0&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:w,accessKey:`r`,type:`button`,disabled:o||c,children:[(0,K.jsx)(Ji,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`V`}),`alidate`]})]}),(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:f,accessKey:`r`,type:`button`,disabled:o||c,children:[(0,K.jsx)(Ra,{}),` `,(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)(H,{variant:`submit`,onClick:y,disabled:v,children:[(0,K.jsx)(Ka,{}),` Bind `,_(p.length,`Domain`,`Domains`)]})})]})})}function Kb(){return(0,K.jsx)(cb,{className:`flex flex-col justify-start max-w-4xl`,children:(0,K.jsx)(Gb,{})})}var qb=S({username:Xl,role:M().nonempty({error:`Please select a role.`}),password:Yl.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:M()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});async function Jb(e){await N.patch(`/ResetPasswordUpdater/${e}`)}async function Yb(e){let{instanceClient:t,...n}=e,{data:r}=await t.post(`/`,{operation:`add_user`,...n});return r}function Xb(){return R({mutationFn:Yb})}async function Zb({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 Qb(){return R({mutationFn:Zb})}async function $b({username:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_user`,username:e});return n}function ex(){return R({mutationFn:$b})}async function tx({clusterId:e,initialUsername:t,desiredUsername:n,newPassword:r,tempPassword:a,instanceClient:o}){if(!a)throw Error(`You may not have permission to set the password on this cluster.`);let s=o;try{let o=await Pl({username:t,password:a,instanceClient:s,entityId:e});return o.instanceClient&&(s=o.instanceClient),n===`HDB_ADMIN`?await Zb({username:n,password:r,instanceClient:s}):(await Yb({username:n,password:r,role:`super_user`,active:!0,instanceClient:s}),await Pl({username:n,password:r,instanceClient:s,entityId:e}),await $b({username:i,instanceClient:s})),await Jb(e),o}catch(t){throw await d({entityId:e,instanceClient:s}),t}}function nx(){return R({mutationFn:tx})}function rx(){let{user:e}=Ln(),{clusterId:t}=B({strict:!1}),{data:n}=F(ql(t,!0)),r=L(),a=Me(),o=(0,G.useMemo)(()=>c(n),[n]),s=Dc({operationsUrl:o}),{redirect:l}=Te({strict:!1}),d=we(),f=Gt({resolver:it(qb),defaultValues:{confirmPassword:``,password:``,role:`super_user`,username:e?.email??``}}),{setFocus:p,control:m,handleSubmit:h}=f;(0,G.useEffect)(()=>{p(`password`)},[p]);let g=n?.instances?.find(e=>e.tempPassword)?.tempPassword,_=Wl(n),{mutate:v,isPending:y}=nx(),b=(0,G.useCallback)(async e=>{if(!o){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:s,clusterId:t,newPassword:e.password,tempPassword:g,initialUsername:i,desiredUsername:e.username},{onSuccess:async({message:e,user:i})=>{U.success(e),u.setUserForEntity(n,i),await Kl(a,t),d.invalidate(),await r({to:l?.startsWith(`/`)?l:`../`})}})},[n,t,s,_,r,o,a,l,d,v,g]);return n&&!n.resetPassword?(0,K.jsx)(ve,{to:`../sign-in`,replace:!0}):n&&!_?(0,K.jsx)(ve,{to:`../starting-up`,replace:!0}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{"aria-label":`Breadcrumb`,className:`studio-subnav 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)(Tl,{})}),(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)(El,{...f,children:(0,K.jsxs)(`form`,{id:`cluster-create-admin-form`,name:`cluster-create-admin-form`,onSubmit:h(b),className:`my-4`,children:[(0,K.jsx)(Y,{control:m,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:m,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:m,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)(H,{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)(Xn,{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 ix({columns:e,data:t,renderRowWrapper:n}){let r=Je({features:F_,data:t,columns:e});return(0,K.jsx)(`div`,{className:`bg-card dark:bg-black-dark rounded-md`,children:(0,K.jsxs)(O_,{children:[(0,K.jsx)(k_,{children:r.getHeaderGroups().map(e=>(0,K.jsx)(j_,{className:`border-none`,children:e.headers.map(e=>(0,K.jsx)(M_,{className:`p-4`,style:{width:`${e.getSize()}%`},children:e.isPlaceholder?null:Ue(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,K.jsx)(A_,{className:`bg-background dark:bg-black`,children:r.getRowModel().rows?.length?r.getRowModel().rows.map(e=>{let t=(0,K.jsx)(j_,{"data-state":e.getIsSelected()&&`selected`,className:`hover:bg-muted/10 data-[state=selected]:bg-muted`,children:e.getVisibleCells().map(e=>(0,K.jsx)(P_,{className:`p-4`,style:{width:`${e.column.getSize()}%`},children:Ue(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)(j_,{children:(0,K.jsx)(P_,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function ax(){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 ox({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 sx({instanceId:e,action:t,safeMode:n}){let r=n===void 0?{}:{safeMode:n},{data:i}=await N.post(`/HDBInstance/${e}/container/${t}`,r);return i}function cx(){return R({mutationFn:sx})}var lx={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function ux(e){let{clusterId:t}=B({strict:!1}),{mutateAsync:n,isPending:r}=cx(),i=Me();return{run:(0,G.useCallback)(async(r,a)=>{let o=a?.label??lx[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}),r!==`stop`&&ce({instanceIds:[e.id],label:lx[r],allAtOnce:!0}),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 dx({entityId:e,instanceClient:t},n){return z({queryKey:[`get_status`,e],staleTime:9e3,refetchInterval:bs(1e4),retry:xs(),retryDelay:1e4,throwOnError:!1,enabled:n,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_status`});return e}})}function fx(e,t){return e?.systemStatus?.find(e=>e.id===t)?.status}async function px({instanceClient:e,id:t,status:n}){let{data:r}=await e.post(`/`,{operation:`set_status`,id:t,status:n});return r}function mx(){return R({mutationFn:px,onSuccess:(e,t)=>Jo.invalidateQueries({queryKey:[`get_status`,t.entityId]})})}function hx({clusterId:e,instanceId:t,organizationId:n},r){return`/`+[n,e,t&&`instance`,t,r].filter($c).join(`/`)}var gx=[`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`];function _x(e,t,n){let{user:r}=Bn(e.id),{organizationId:i,clusterId:a}=B({strict:!1}),o=hx({organizationId:i,clusterId:a,instanceId:e.id}),s=hx({organizationId:i,clusterId:a,instanceId:e.id},`sign-in`),c=(0,G.useMemo)(()=>p(e),[e]),l=Dc({operationsUrl:c}),{update:d}=Ap(),f=Dp(),m=u.checkForFabricConnect(e.id),h=q({operationsUrl:c,instanceId:e.id,forceFabricConnect:!0}),{data:g}=F(dx(h,n&&d&&!Rl(e.status))),_=fx(g,`availability`)||`Unknown`,v=_===`Available`,y=_===`Unavailable`,{mutate:b,isPending:x}=mx(),{run:S,isPending:C}=ux(e),[w,T]=(0,G.useState)(null),E=e.instanceFqdn,D=c_({secure:e.operationsApiSecure?`true`:`false`,port:e.operationsApiPort,fqdn:e.instanceFqdn}),[O,k]=tm(E??``,D),A=(0,G.useCallback)(async()=>{await ox({instance:e,instanceClient:l})},[e,l]),ee=!!e.status&&gx.includes(e.status),te=!!r&&!m,j=ee,M=!!E,N=d&&ee&&(v||y),P=e.status===`RUNNING`,ne=e.status===`STOPPED`,re=f&&!t&&(P||ne),ie=[j&&te&&{key:`direct-connect`,to:o,icon:(0,K.jsx)(Qa,{className:`text-green`}),label:`Direct Connect`},j&&te&&{key:`direct-sign-out`,onClick:A,variant:`destructive`,icon:(0,K.jsx)(ia,{}),label:`Direct Sign Out`},j&&!te&&d&&!t&&{key:`fabric-connect`,to:o,icon:(0,K.jsx)(Qa,{className:`text-green`}),label:`Fabric Connect`},j&&!te&&{key:`direct-sign-in`,to:s,icon:(0,K.jsx)(na,{}),label:`Direct Sign In`},j&&M&&{type:`separator`,key:`copy-sep`},M&&{key:`copy-fqdn`,onClick:O,icon:(0,K.jsx)(Hr,{}),label:`Copy Instance FQDN`},M&&{key:`copy-api`,onClick:k,icon:(0,K.jsx)(Hr,{}),label:`Copy API URL`},(j||M)&&N&&{type:`separator`,key:`rotation-sep`},N&&v&&{key:`out-of-rotation`,variant:`destructive`,disabled:x,onClick:()=>b({...h,id:`availability`,status:`Unavailable`}),icon:(0,K.jsx)(io,{}),label:`Bring out of rotation`},N&&y&&{key:`into-rotation`,disabled:x,onClick:()=>b({...h,id:`availability`,status:`Available`}),icon:(0,K.jsx)(no,{}),label:`Bring back into rotation`},(j||M||N)&&re&&{type:`separator`,key:`container-sep`},re&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},re&&ne&&{key:`container-start`,disabled:C,onClick:()=>void S(`start`,{safeMode:!1}),icon:(0,K.jsx)(Pa,{}),label:`Start`},re&&ne&&{key:`container-start-safe`,disabled:C,onClick:()=>T(`start`),icon:(0,K.jsx)(Ki,{}),label:`Start in safe mode`},re&&P&&{key:`container-restart`,disabled:C,onClick:()=>void S(`restart`,{safeMode:!1}),icon:(0,K.jsx)(Wa,{}),label:`Restart`},re&&P&&{key:`container-restart-safe`,disabled:C,onClick:()=>T(`restart`),icon:(0,K.jsx)(Ki,{}),label:`Restart in safe mode`},re&&P&&{key:`container-stop`,variant:`destructive`,disabled:C,onClick:()=>void S(`stop`),icon:(0,K.jsx)(fo,{}),label:`Stop`}].filter($c),ae=(0,K.jsx)(Kp,{open:w!==null,setOpen:e=>{e||T(null)},action:w??`restart`,targetName:e.name??e.id,scope:`instance`,isPending:C,onConfirm:()=>{let e=w;T(null),e&&S(e,{safeMode:!0,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}});return ie.length?{items:[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-sep`},...ie],dialog:ae}:{items:[],dialog:ae}}function vx({instance:e,isSelfManaged:t}){let[n,r]=(0,G.useState)(!1),{items:i,dialog:a}=_x(e,t,n);return i.length?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Yo,{open:n,onOpenChange:r,children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Instance options`,children:(0,K.jsx)(oi,{})})}),(0,K.jsx)(Zo,{align:`end`,className:`min-w-48`,children:rf(i,`dropdown`)})]}),a]}):null}function yx({isSelfManaged:e,instance:t}){let{user:n,isLoading:r}=Bn(t.id),{organizationId:i,clusterId:a}=B({strict:!1}),o=hx({organizationId:i,clusterId:a,instanceId:t.id}),s=hx({organizationId:i,clusterId:a,instanceId:t.id},`sign-in`),c=Dc({operationsUrl:(0,G.useMemo)(()=>p(t),[t])}),{update:l}=Ap(),d=u.checkForFabricConnect(t.id),f=(0,G.useCallback)(async()=>{await ox({instance:t,instanceClient:c})},[t,c]);return Rl(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)(Xi,{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)(H,{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)(H,{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)(H,{variant:`positiveOutline`,children:`Direct Connect`})}),(0,K.jsx)(H,{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 bx({instance:e,isSelfManaged:t,children:n}){let[r,i]=(0,G.useState)(!1),{items:a,dialog:o}=_x(e,t,r);return a.length?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Yd,{onOpenChange:i,children:[(0,K.jsx)(Xd,{asChild:!0,children:n}),(0,K.jsx)(Zd,{className:`min-w-48`,children:rf(a,`context`)})]}),o]}):(0,K.jsx)(K.Fragment,{children:n})}function xx({instance:e,index:t}){let{update:n}=Ap(),r=q({operationsUrl:(0,G.useMemo)(()=>p(e),[e]),instanceId:e.id,forceFabricConnect:!0}),{mutate:i,isPending:a}=mx(),[o,s]=(0,G.useState)(!1);(0,G.useEffect)(()=>{let e=setTimeout(()=>s(!0),t*500);return()=>clearTimeout(e)},[t]);let c=Rl(e.status),{data:l,isLoading:u,isFetching:d}=F(dx(r,o&&n&&!c)),f=fx(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)(Cc,{children:[(0,K.jsx)(wc,{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)(Tc,{children:`Not running`})]})}):(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(`div`,{className:`flex items-center`,children:u||!o||d&&!l?(0,K.jsx)(Xi,{className:`animate-spin size-5 text-muted-foreground`}):(0,K.jsx)(Fs,{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)(Tc,{children:[d&&l?`Refreshing... `:``,f]})]}),n&&(0,K.jsxs)(`div`,{className:`flex gap-1`,children:[m&&(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(H,{type:`button`,variant:`destructiveGhost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Unavailable`}),disabled:a,children:a?(0,K.jsx)(Xi,{className:`animate-spin size-4`}):(0,K.jsx)(io,{className:`size-4`})})}),(0,K.jsx)(Tc,{children:`Bring out of rotation`})]}),h&&(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Available`}),disabled:a,children:a?(0,K.jsx)(Xi,{className:`animate-spin size-4`}):(0,K.jsx)(no,{className:`size-4`})})}),(0,K.jsx)(Tc,{children:`Bring back into rotation`})]})]})]}):null}function Sx(){let{clusterId:e}=B({strict:!1}),{data:t,isLoading:n}=F(ql(e,!0)),r=Bp(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)(yx,{isSelfManaged:r,instance:e.row.original})})},r&&{accessorKey:`instanceFqdn`,size:90,header:`URL`,cell:e=>c_({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)(xx,{instance:e.row.original,index:e.row.index}),t?(0,K.jsx)(Fs,{variant:Ll(t),children:Cl(t)}):null,e.row.original.safeMode&&!Rl(e.row.original.status)?(0,K.jsxs)(Fs,{variant:`warning`,title:`Running in safe mode — user apps/components are not loaded`,children:[(0,K.jsx)(Ki,{}),`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)(vx,{isSelfManaged:r,instance:e.row.original})})}].filter($c),[r]),a=xm(),o=(0,G.useMemo)(()=>t?.instances?t.instances.filter(e=>e.status&&!Ml.includes(e.status)).map(e=>le(e.id)?.reach===`down`&&!Rl(e.status)?{...e,status:`RESTARTING`}:e).sort(Fm):[],[t,a]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(wm,{children:(0,K.jsx)(Vn,{className:`p-0 min-h-96`,children:(0,K.jsx)(Gn,{className:`p-0 min-h-96`,children:n?(0,K.jsx)(Sg,{}):o.length?(0,K.jsx)(ix,{data:o,columns:i,renderRowWrapper:(e,t)=>(0,K.jsx)(bx,{instance:e,isSelfManaged:r,children:t})}):(0,K.jsx)(ax,{})})})})]})}function Cx(){let{clusterId:e}=B({strict:!1}),{immediate:t}=Te({strict:!1}),n=t===!0||t===`true`,{data:r,isLoading:i}=F(ql(e,2e3)),a=r?.status,o=(0,G.useMemo)(()=>a&&jl.includes(a),[a]);return i||!r?(0,K.jsx)(cb,{className:`flex justify-center`,children:(0,K.jsx)(Sg,{})}):o?(0,K.jsx)(cb,{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)(Gp,{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)(Vp,{cluster:r})})]})}):(0,K.jsx)(cb,{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)(Gp,{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 wx({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(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 Tx(){let e=we(),{clusterId:t}=B({strict:!1}),{data:n,isLoading:r}=F(ql(t,2e3)),i=n?.status,a=(0,G.useMemo)(()=>i&&jl.includes(i)&&Wl(n),[i,n]),o=Bl(i),[,s]=Es(Pn.SavedClusterState,null),c=(0,G.useCallback)(()=>{s(n),e.navigate({to:`/${n.organizationId}/new-cluster`})},[n,e,s]);return r||!n?(0,K.jsx)(wx,{className:`flex justify-center`,children:(0,K.jsx)(Sg,{})}):o?(0,K.jsx)(wx,{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)(Wr,{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)(au,{}),` if you want more help.`]}),(0,K.jsx)(H,{type:`button`,variant:`positiveOutline`,onClick:c,children:`Try Again`})]})}):a?(0,K.jsx)(wx,{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)(Gp,{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)(Vp,{cluster:n})})]})}):(0,K.jsx)(wx,{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)(Gp,{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 Ex(){let{clusterId:e}=B({strict:!1}),{data:t,isLoading:n}=qy(e);if(n)return(0,K.jsxs)(cb,{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)(Xi,{className:`size-6 animate-spin`})})]});let r=t&&!t.selfManaged?Mx(t.regions):null;return(0,K.jsxs)(cb,{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)(Fx,{children:`Usage isn't tracked for self-hosted clusters — they run under their own license.`}):t.regions.length===0?(0,K.jsx)(Fx,{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)(Dx,{region:e,showPlanInfo:r==null},e.region??e.regionIds.join())),r&&(0,K.jsx)(Ox,{header:(0,K.jsx)(kx,{title:`Plan limits & resources`}),aside:r.planId??void 0,children:(0,K.jsx)(Ax,{rateLimits:r.rateLimits,resourcesPerInstance:r.resourcesPerInstance})})]}):(0,K.jsx)(Ix,{})]})}function Dx({region:e,showPlanInfo:t}){let n=Uy.map(t=>Wy(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 ${jx(e.expiresAt)}`:null].filter(Boolean).join(` · `);return(0,K.jsxs)(Ox,{defaultOpen:e.status!==`lapsed`,aside:e.regionIds.length>0?e.regionIds.join(`, `):void 0,header:(0,K.jsxs)(kx,{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)(Gy,{...e},e.label))}),t&&(0,K.jsx)(Ax,{rateLimits:e.rateLimits,resourcesPerInstance:e.resourcesPerInstance})]})}function Ox({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)(Or,{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 kx({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 Ax({rateLimits:e,resourcesPerInstance:t}){let n=e,r=n?Px([[`Reads / minute`,n.readsPerMinute,Jg],[`Read bandwidth / minute`,n.readsPerMinuteBytes,qg],[`Writes / minute`,n.writesPerMinute,Jg],[`Write bandwidth / minute`,n.writesPerMinuteBytes,qg],[`Real-time deliveries / minute`,n.realTimeDeliveriesPerMinute,Jg],[`Real-time bandwidth / minute`,n.realTimeDeliveryBytesPerMinute,qg],[`TLS handshakes (cycle)`,n.tlsHandshakes,Jg]]):[],i=t,a=i?Nx([[`Storage`,i.storageGb,e=>`${Jg(e)} GB`],[`Memory`,i.memoryMb,e=>qg(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)(Lx,{title:`Rate limits`,subtitle:`Throughput ceilings — not part of the cycle allotment, and not metered.`,children:(0,K.jsx)(Rx,{rows:r})}),a.length>0&&(0,K.jsx)(Lx,{title:`Per-instance resources`,subtitle:`Provisioned capacity on each instance.`,children:(0,K.jsx)(Rx,{rows:a})})]})}function jx(e){return new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(new Date(e))}function Mx(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 Nx(e){return e.filter(e=>typeof e[1]==`number`&&e[1]>0).map(([e,t,n])=>[e,n(t)])}function Px(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 Fx({children:e}){return(0,K.jsx)(`p`,{className:`mt-3 text-sm text-muted-foreground`,children:e})}function Ix(){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 Lx({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 Rx({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:()=>Ly,path:`instances`,head:()=>({meta:[{title:`Instances — Harper Fabric`}]}),component:Sx}),I({getParentRoute:()=>Ly,path:`starting-up`,head:()=>({meta:[{title:`Starting Up — Harper Fabric`}]}),component:Tx}),I({getParentRoute:()=>Ly,path:`scaling`,head:()=>({meta:[{title:`Scaling — Harper Fabric`}]}),component:Cx}),I({getParentRoute:()=>Ly,path:`domains`,head:()=>({meta:[{title:`Domains — Harper Fabric`}]}),component:Kb}),I({getParentRoute:()=>Ly,path:`usage`,head:()=>({meta:[{title:`Usage — Harper Fabric`}]}),component:Ex});function zx({location:e,params:t}){let n=u.checkForFabricConnect(t.clusterId);if(u.getConnectionById(t.clusterId).user&&!n){let t=e?.search?.redirect;throw Se({to:t?.startsWith(`/`)?t:`../`})}}function Bx({location:e,params:t}){let n=u.checkForFabricConnect(t.instanceId);if(u.getConnectionById(t.instanceId).user&&!n){let t=e?.search?.redirect;throw Se({to:t?.startsWith(`/`)?t:`../`})}}I({getParentRoute:()=>Ly,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:ru,beforeLoad:zx}),I({getParentRoute:()=>Ly,path:`instance/$instanceId/sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:ru,beforeLoad:Bx}),I({getParentRoute:()=>Ly,path:`finish-setup`,head:()=>({meta:[{title:`Create Admin User — Harper Fabric`}]}),component:rx}),I({getParentRoute:()=>Ly,path:`/`,head:()=>({meta:[{title:`Cluster — Harper Fabric`}]}),component:tb});function Vx(e){return I({getParentRoute:()=>e,path:`apis`,head:()=>({meta:[{title:`APIs — Harper Fabric`}]})}).lazy(()=>pe(()=>import(`./index.lazy-CcpfQFY_.js`).then(e=>e.route),__vite__mapDeps([22,1,23,7,6,24,4,2,3,25,26,8,9,13,12,27,28,29])))}function Hx(e,t){return[I({getParentRoute:()=>e,path:t===`cluster`?`apps`:`/`,head:()=>({meta:[{title:`Applications — Harper Fabric`}]}),component:Fe(()=>pe(()=>import(`./applications-DQZxDy0x.js`),__vite__mapDeps([30,1,23,7,6,24,4,2,3,25,26,8,9,13,12,31,32,27,17,18,10,28,29,33,19,20,21,34])),`ApplicationsEditor`)})]}async function Ux({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_certificates`});return t}function Wx(e){return z({queryKey:[e.entityId,`list_certificates`],queryFn:()=>Ux(e)})}var Gx=[{header:`Certificate Name`,accessorKey:`name`,enableSorting:!0},{header:`Issuer`,accessorKey:`details.issuer`,enableSorting:!0},I_().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 Kx({className:e,...t}){return(0,K.jsx)(`textarea`,{"data-slot":`input`,className:P(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
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 jl=[`RUNNING`],Ml=[`TERMINATING`,`TERMINATED`,`REMOVED`];function Nl(){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 Pl({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 Fl(){return R({mutationFn:Pl})}function Il({cluster:e,instance:t,instanceParams:n}){let r=L(),i=we(),{redirect:a}=Te({strict:!1}),{mutate:o,isPending:s}=Fl();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 Ll(e){if(Hl(e)||Ul(e))return`warning`;if(zl(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 Rl(e){switch(e){case`STOPPED`:case`STOPPING`:case`STARTING`:case`RESTARTING`:return!0;default:return!1}}function zl(e){switch(e){case`RUNNING`:case`UPDATED`:return!0;default:return!1}}function Bl(e){switch(e){case`FAILED`:return!0;default:return!1}}function Vl(e){switch(e){case`TERMINATED`:return!0;default:return!1}}function Hl(e){switch(e){case`CLONE_PENDING`:case`PENDING_UPGRADE`:return!0;default:return!1}}function Ul(e){switch(e){case`PROVISIONING`:case`CLONING`:case`CLONE_READY`:case`UPDATING_HDB_NODES`:case`DRAINING`:case`UPDATING`:return!0;default:return!1}}function Wl(e){let t=(e?.instances??[]).filter(e=>!(e.status&&Ml.includes(e.status)));return t.length>0&&t.every(e=>zl(e.status))}async function Gl(e){let t=re(),{data:n}=await N.get(`/Cluster/${e}`);return ie(n,t),n}async function Kl(e,t){let{queryKey:n}=ql(t);await e.cancelQueries({queryKey:n,exact:!0}),e.setQueryData(n,e=>e&&{...e,resetPassword:!1})}function ql(e,t){return z({queryKey:[e],queryFn:()=>Gl(e),retry:!1,staleTime:1900,enabled:!!e,refetchInterval:bs(t?t===!0?1e4:t:void 0)})}var Jl=te({error:`Please enter a valid email address.`}).toLowerCase().trim(),Yl=M().nonempty({error:`Please enter your password.`}),Xl=M().nonempty({error:`Please enter a username.`}),Zl=S({username:Xl,password:Yl}),Ql=S({email:Jl,password:Yl});function $l({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 eu=[`localhost`,`127.0.0.1`],tu=function(e){return e.MixedLoopback=`MixedLoopback`,e.InsecureCookieOutsideChromeAndFirefox=`InsecureCookieOutsideChromeAndFirefox`,e}({});function nu(e,t,n){if(!n||!t||!e)return null;let r=new URL(n).hostname,i=eu.includes(t),a=eu.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 ru(){let{clusterId:e,instanceId:t}=B({strict:!1}),{data:n}=F(ql(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&&jl.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)(()=>nu(navigator.userAgent,location.hostname,o),[o]),{data:m}=F($l(l)),h=Gt({resolver:it(Zl),defaultValues:{username:``,password:``}}),{control:g,handleSubmit:_}=h,{submitForm:v,isPending:b}=Il({cluster:n,instance:r,instanceParams:l});if(!t&&n&&!n?.fqdn)return(0,K.jsx)(ve,{to:`../instances`,replace:!0});if(n?.resetPassword){let e=i&&Wl(n);return(0,K.jsx)(ve,{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)(El,{...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)(H,{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===tu.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===tu.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:Nl(),target:`_blank`,children:(0,K.jsx)(H,{type:`button`,variant:`positive`,children:`Connect to Harper Fabric`})})})]})]})})]})})]})}function iu({type:e=`text`,passwordLabel:t=`password`,...n}){let[r,i]=(0,G.useState)(!1),a=e===`email`?ua:e===`password`?Qi:Mo;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)(ui,{"aria-hidden":`true`}):(0,K.jsx)(fi,{"aria-hidden":`true`})})]})}function au({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 ou=`The server is temporarily unavailable. It isn't a problem with the details you entered — please try again in a moment.`,su=`Something went wrong on our end. It isn't a problem with the details you entered, and trying again may not help.`,cu=`Too many attempts. Please wait a short while before trying again.`,lu=`We didn't get an answer from the server, so we can't tell whether that went through.`,uu=new Set([503]),du=new Set([502,504]),fu=new Set([b.ERR_NETWORK,b.ETIMEDOUT,b.ECONNABORTED]);function pu(e,t){let n=`${lu} ${t}`,r=e,i=r?.response?.status;if(typeof i==`number`)return i===429?cu:i<500?void 0:du.has(i)?n:uu.has(i)?ou:su;let a=r?.code;return typeof a==`string`&&fu.has(a)?n:void 0}function mu(e,t){return pu(e,t)??Ko(e).message}var hu=240,gu=/[\uD800-\uDBFF]$/;function _u(e){return`${e.slice(0,hu).replace(gu,``).trimEnd()}…`}function vu({message:e,suggestSupport:t}){if(!e)return null;let n=e.length>hu?_u(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)(au,{overEmail:!0}),` if this keeps happening.`]})]})}function yu(){return!1}var bu;function xu(){return bu??=Tu().catch(e=>{throw bu=void 0,e}),bu}function Su(){yu()&&xu().catch(()=>{})}async function Cu(e){}var wu=8e3;function Tu(){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`),wu);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 Eu=`verification failed`,Du=[`error`,`message`,`title`,`detail`];function Ou(e){let t=e?.response;if(t?.status!==403)return!1;let n=t.data;return typeof n==`string`?ku(n):Du.some(e=>ku(n?.[e]))}function ku(e){return typeof e==`string`&&e.toLowerCase().includes(Eu)}var Au=`Verification failed. Please try again.`,ju=`We could not run the verification check. Disable any ad blocker for this page, then reload and try again.`,Mu=2;function Nu(e){(0,G.useEffect)(()=>{Su()},[]);let t=(0,G.useRef)(!1),[n,r]=(0,G.useState)(!1),i=(0,G.useCallback)(async()=>{r(!0);try{let n=await Cu(e);return t.current=yu()&&!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(!Ou(e)){a.current=0,s(!1);return}return a.current+=1,s(a.current>=Mu),t.current?ju:Au},[]),minting:n,supportSuggested:o}}async function Pu({email:e,captchaToken:t}){let{data:n}=await N.post(`/ForgotPassword/`,{email:e,...t?{captchaToken:t}:{}});if(n)return n;throw Error(`Something went wrong`)}function Fu(){return R({mutationFn:e=>Pu(e),meta:{skipGlobalErrorToast:!0}})}var Iu=`Check your inbox before requesting another link.`,Lu=S({email:Jl});function Ru(){let e=L(),{me:t}=Te({strict:!1}),n=Gt({resolver:it(Lu),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}=Fu(),f=Nu(`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=pu(e,Iu);if(n){console.error(e),c(n);return}qo(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)(El,{...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)(iu,{disabled:d,type:`email`,autoComplete:`email`,placeholder:`you@company.com`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(vu,{message:s,suggestSupport:f.supportSuggested}),(0,K.jsx)(H,{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 zu=async({token:e,password:t})=>{let{data:n}=await N.put(`/ResetPassword/`,{token:e,newPassword:t});return n};function Bu(){return R({mutationFn:e=>zu(e)})}var Vu=S({password:Yl.min(8,{error:`Password must be at least 8 characters long.`}).max(50,{error:`Password cannot be longer than 50 characters.`}),confirmPassword:M()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function Hu(){let{token:e}=Te({strict:!1}),t=L();(0,G.useEffect)(()=>{e||t({to:`/sign-in`})},[e,t]);let n=Gt({resolver:it(Vu),defaultValues:{password:``,confirmPassword:``}}),{setFocus:r,control:i,handleSubmit:a}=n;(0,G.useEffect)(()=>{r(`password`)},[r]);let{mutate:o,isPending:s}=Bu(),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)(El,{...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)(iu,{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)(iu,{disabled:s,type:`password`,autoComplete:`new-password`,...e,placeholder:`Confirm your password`,passwordLabel:`password confirmation`}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(H,{variant:`submit`,type:`submit`,disabled:s,className:`sign-in-submit`,children:`Submit New Password`})]})})]})}function Uu(...e){let t=e.flat(1);return t.map((e,n)=>typeof e==`string`?Wu(e,n!==0,n!==t.length-1):e).join(`/`)}function Wu(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 Gu=`/#/check-oauth`;function Ku(e,t){let n=Uu(`/`,`oauth`,e,`login`);return t?`${n}?redirect=${encodeURIComponent(t)}`:n}function qu(){return(0,K.jsx)(Fs,{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 Ju({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:Ku(`github`,Gu),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)(qu,{})]}):a}function Yu({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:Ku(`google`,Gu),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)(qu,{})]}):a}function Xu(e){if(!v(e)||e.response?.status!==403)return!1;let t=e.response.data,n=typeof t==`string`?t:jn(t?.error)??jn(t?.message)??jn(t?.title)??``;return/verif/i.test(n)}var Zu=async({email:e})=>{let{data:t}=await N.post(`/ResendVerificationEmail/`,{email:e});return t};function Qu(){return R({mutationFn:e=>Zu(e)})}function $u(){let e=L(),t=Me(),n=we(),{redirect:r}=Te({strict:!1}),[i,a]=(0,G.useState)(),{mutate:o,isPending:s}=ed(),{mutate:c}=Qu();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),vl();let a=Jn(i);hl(i.email),await t.invalidateQueries({queryKey:f,refetchType:`none`}),n.invalidate(),await e({to:r?.startsWith(`/`)?r:a})},onError:t=>{if(Xu(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(mu(t,`Try signing in again.`))}})},[e,t,r,c,n,o])}}function ed(){return R({mutationFn:e=>td(e),meta:{skipGlobalErrorToast:!0},onError:e=>{Xu(e)||console.error(e)}})}async function td({email:e,password:t}){let{data:n}=await N.post(`/Login/`,{email:e,password:t});if(n)return n;throw Error(`Something went wrong`)}function nd(){let[e,t]=Es(Pn.RememberSignInMethod,!0),[n,r]=Es(Pn.LastUsedSignInMethod,null),i=(0,G.useCallback)(t=>{e&&(Mn(Pn.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 rd=`mx-auto mt-3 block text-xs text-muted-foreground underline hover:text-foreground dark:text-inherit dark:hover:text-blue-300`;function id(){let{me:e}=Te({strict:!1}),t=Gt({resolver:it(Ql),defaultValues:{email:e||``,password:``}}),{handleSubmit:n,control:r}=t,i=t.watch(`email`),{submitForm:a,isPending:o,submitError:s,clearSubmitError:c}=$u(),{lastUsed:l,remember:u,recordMethod:d,disable:f,enable:p}=nd();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)(El,{...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)(iu,{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)(iu,{type:`password`,placeholder:`Your password`,autoComplete:`current-password`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(vu,{message:s}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,className:`sign-in-submit`,disabled:o,children:[`Sign In `,(0,K.jsx)(nr,{"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)(Yu,{text:`Sign in with Google`,compact:!0,lastUsed:l===`google`,onClick:()=>d(`google`)}),(0,K.jsx)(Ju,{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:rd,children:`On a shared device? Forget my sign-in method.`}):(0,K.jsx)(`button`,{type:`button`,onClick:p,className:rd,children:`Remember my last sign-in method on this device.`})]})}var ad=/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžæÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,'-]+$/u;async function od({captchaToken:e,...t}){let{data:n}=await N.post(`/User/`,{...t,...e?{captchaToken:e}:{}});if(n)return n;throw Error(`Something went wrong`)}function sd(){return R({mutationFn:e=>od(e),meta:{skipGlobalErrorToast:!0},onError:e=>console.error(e)})}var cd=`Check your email for a verification link before signing up again.`,ld=S({email:Jl.max(80,{error:`Email cannot be longer than 80 characters.`}),firstname:M().trim().min(2,{error:`Please enter your first name.`}).regex(ad,{error:`First name can only contain letters, spaces, and hyphens.`}).max(40,{error:`First name cannot be longer than 40 characters.`}),lastname:M().trim().min(2,{error:`Please enter your last name.`}).regex(ad,{error:`Last name can only contain letters, spaces, and hyphens.`}).max(80,{error:`Last name cannot be longer than 80 characters.`}),password:Yl.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:M(),acceptTerms:A().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 ud(){let e=L(),{email:t,me:n}=Te({strict:!1}),[r,i]=(0,G.useState)(!1),a=Gt({resolver:it(ld),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}=sd(),_=Nu(`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:()=>{hl(i.email),vl(),e({to:`/verifying?email=`+encodeURIComponent(i.email)})},onError:e=>{l(`root`,{type:`server`,message:_.describeCaptchaError(e)??mu(e,cd)})}})},[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)(El,{...a,children:[(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 my-6`,children:[b,(0,K.jsx)(Yu,{text:`Sign up with Google`,disabled:!s,onClick:y}),(0,K.jsx)(Ju,{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)(iu,{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)(iu,{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)(iu,{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)(iu,{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)(iu,{type:`password`,autoComplete:`new-password`,...e,placeholder:`Confirm your password`,passwordLabel:`password confirmation`}),(0,K.jsx)(Q,{})]})}),b,(0,K.jsx)(vu,{message:m,suggestSupport:_.supportSuggested}),(0,K.jsx)(H,{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 dd=async e=>{let{data:t}=await N.put(`/VerifyEmail/`,{token:e.toString()});return t};function fd(){return R({mutationFn:e=>dd(e)})}var pd=S({email:Jl});function md(){let e=L(),{mutate:t,isPending:n}=Qu(),r=Gt({resolver:it(pd),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)(El,{...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)(iu,{disabled:n,type:`email`,autoComplete:`email`,placeholder:`you@company.com`,...e}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(H,{type:`submit`,variant:`submit`,disabled:n,className:`sign-in-submit`,children:`Send Verification Email`})]})})}function hd(){let{token:e}=Te({strict:!1}),t=L(),{mutate:n,isPending:r}=fd(),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)(yl,{icon:oa,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)(Xi,{"aria-hidden":`true`,className:`auth-loading-icon`}),`Verifying email...`]}):(0,K.jsx)(md,{})]})}function gd(){let{email:e}=Te({strict:!1}),{mutate:t,isPending:n}=Qu(),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)(yl,{icon:oa,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 _d=I({getParentRoute:()=>rl,id:`_authLayout`,component:fl}),vd=I({getParentRoute:()=>_d,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:id,beforeLoad:({context:e,location:t})=>{let n=e.authentication[m]?.user;if(n){let e=t?.search,r=Jn(n);throw Se({to:e?.redirect?.startsWith(`/`)?e.redirect:r})}}}),yd=I({getParentRoute:()=>rl,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:ru,beforeLoad:({context:e,location:t})=>{if(e.authentication.OverallAppSignIn?.user){let e=t?.search;throw Se({to:e?.redirect?.startsWith(`/`)?e.redirect:`/`})}}}),bd=I({getParentRoute:()=>_d,path:`sign-up`,head:()=>({meta:[{title:`Sign Up — Harper Fabric`}]}),component:ud}),xd=I({getParentRoute:()=>_d,path:`forgot-password`,head:()=>({meta:[{title:`Forgot Password — Harper Fabric`}]}),component:Ru}),Sd=I({getParentRoute:()=>_d,path:`verify-email`,head:()=>({meta:[{title:`Verify Email — Harper Fabric`}]}),component:hd}),Cd=I({getParentRoute:()=>_d,path:`verifying`,head:()=>({meta:[{title:`Check Your Email — Harper Fabric`}]}),component:gd}),wd=I({getParentRoute:()=>_d,path:`check-oauth`,head:()=>({meta:[{title:`Signing In — Harper Fabric`}]}),component:xl}),Td=I({getParentRoute:()=>_d,path:`reset-password`,head:()=>({meta:[{title:`Reset Password — Harper Fabric`}]}),component:Hu});_d.addChildren([vd,bd,wd,xd,Sd,Cd,Td]);var Ed=[yd];function Dd({children:e}){return(0,K.jsx)(`nav`,{className:`studio-subnav 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)(Tl,{}),e]})})}var Od=360,kd=280,Ad=16,jd={width:820,height:680};function Md({width:e,height:t},n,r){return{width:Math.round(Math.max(Od,Math.min(e,n-32))),height:Math.round(Math.max(kd,Math.min(t,r-32)))}}function Nd({width:e,height:t},n,r){return{x:Math.round((n-e)/2),y:Math.round((r-t)/2)}}function Pd({x:e,y:t},{width:n,height:r},i,a){let o=Math.max(Ad,i-n-Ad),s=Math.max(Ad,a-r-Ad);return{x:Math.min(Math.max(e,Ad),o),y:Math.min(Math.max(t,Ad),s)}}function Fd(){let[e,t]=Es(Pn.ResizableModalSize,jd),[n,r]=(0,G.useState)(()=>Md(e,window.innerWidth,window.innerHeight)),[i,a]=(0,G.useState)(()=>Nd(n,window.innerWidth,window.innerHeight)),[o,s]=(0,G.useState)(!1),[c,l]=(0,G.useState)(!1),[u,d]=(0,G.useState)(!1),f=(0,G.useRef)(n);f.current=n;let p=(0,G.useRef)(i);p.current=i;let m=(0,G.useRef)(u);m.current=u;let h=(0,G.useRef)(null),g=(0,G.useRef)(e);g.current=e;let _=(0,G.useRef)(null),v=(0,G.useRef)(!1),y=(0,G.useRef)(null),b=(0,G.useCallback)(e=>{if(!e||e===y.current)return;y.current=e,d(!1),h.current=null;let t=window.innerWidth,n=window.innerHeight,i=Md(g.current,t,n);r(i),a(Nd(i,t,n))},[]);return(0,G.useEffect)(()=>{let e=()=>{let e=window.innerWidth,t=window.innerHeight;if(m.current){let n=Md({width:e,height:t},e,t);r(n),a(Nd(n,e,t));return}let n=Md(g.current,e,t);r(n),a(Pd(p.current,n,e,t))};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,G.useEffect)(()=>(v.current=!1,()=>{v.current=!0,_.current?.()}),[]),{size:n,position:i,isDragging:o,isResizing:c,isMaximized:u,contentRef:b,startDrag:(0,G.useCallback)(e=>{e.preventDefault(),_.current?.();let t=y.current,n=e.clientX,r=e.clientY,i={...p.current};s(!0),d(!1);let o=0,c=0,l=0,u=()=>{o=0,t&&(t.style.transform=`translate3d(${c}px, ${l}px, 0)`)},m=e=>{c=e.clientX-n,l=e.clientY-r,o||=requestAnimationFrame(u)},h=()=>{o&&cancelAnimationFrame(o),window.removeEventListener(`mousemove`,m),window.removeEventListener(`mouseup`,g),v.current||s(!1),_.current===h&&(_.current=null)},g=()=>{h();let e=Pd({x:i.x+c,y:i.y+l},f.current,window.innerWidth,window.innerHeight);t&&(t.style.left=`${e.x}px`,t.style.top=`${e.y}px`,t.style.transform=``),a(e)};window.addEventListener(`mousemove`,m),window.addEventListener(`mouseup`,g),_.current=h},[]),startResize:(0,G.useCallback)(e=>n=>{n.preventDefault(),n.stopPropagation(),_.current?.();let i=y.current,o=n.clientX,s=n.clientY,c={...f.current},u={...p.current};l(!0),d(!1);let m=0,h=c,g=u,b=()=>{m=0,i&&(i.style.width=`${h.width}px`,i.style.height=`${h.height}px`,i.style.left=`${g.x}px`,i.style.top=`${g.y}px`)},x=t=>{let n=window.innerWidth,r=window.innerHeight,i=t.clientX-o,a=t.clientY-s,l=t.altKey,d=l?2:1,f=c.width,p=c.height;e.includes(`e`)&&(f=c.width+i*d),e.includes(`w`)&&(f=c.width-i*d),e.includes(`s`)&&(p=c.height+a*d),e.includes(`n`)&&(p=c.height-a*d),h=Md({width:f,height:p},n,r);let{x:_,y:v}=u;l?(_=Math.round(u.x+(c.width-h.width)/2),v=Math.round(u.y+(c.height-h.height)/2)):(e.includes(`w`)&&(_=u.x+c.width-h.width),e.includes(`n`)&&(v=u.y+c.height-h.height)),g={x:_,y:v},m||=requestAnimationFrame(b)},S=()=>{m&&cancelAnimationFrame(m),window.removeEventListener(`mousemove`,x),window.removeEventListener(`mouseup`,C),v.current||l(!1),_.current===S&&(_.current=null)},C=()=>{S();let e=window.innerWidth,n=window.innerHeight,i=Md(h,e,n);r(i),a(Pd(g,i,e,n)),t(i)};window.addEventListener(`mousemove`,x),window.addEventListener(`mouseup`,C),_.current=S},[t]),toggleMaximize:(0,G.useCallback)(()=>{let e=window.innerWidth,t=window.innerHeight;if(m.current){let n=h.current;if(n){let i=Md(n.size,e,t);r(i),a(Pd(n.position,i,e,t))}d(!1)}else{h.current={size:f.current,position:p.current};let n=Md({width:e,height:t},e,t);r(n),a(Nd(n,e,t)),d(!0)}},[])}}function Id({...e}){return(0,K.jsx)(gt,{"data-slot":`dialog`,...e})}function Ld({...e}){return(0,K.jsx)(Mt,{"data-slot":`dialog-trigger`,...e})}function Rd({...e}){return(0,K.jsx)(Vt,{"data-slot":`dialog-portal`,...e})}function zd({className:e,...t}){return(0,K.jsx)(Ht,{"data-slot":`dialog-overlay`,className:P(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-white/80 backdrop-blur-xs dark:bg-black-dark/90 dark:backdrop-blur-none`,e),...t})}function Bd({className:e}){return(0,K.jsxs)(xt,{className:P(`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-0 right-0 flex items-start justify-end rounded-bl-md p-4 opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),children:[(0,K.jsx)(Io,{className:`text-popover-foreground`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Close`})]})}var Vd=[{dir:`n`,className:`-top-2 inset-x-5 h-4 cursor-ns-resize z-30`},{dir:`s`,className:`-bottom-2 inset-x-5 h-4 cursor-ns-resize z-30`},{dir:`e`,className:`-right-2 inset-y-5 w-4 cursor-ew-resize z-30`},{dir:`w`,className:`-left-2 inset-y-5 w-4 cursor-ew-resize z-30`},{dir:`nw`,className:`-top-2 -left-2 size-6 cursor-nwse-resize z-40`},{dir:`ne`,className:`-top-2 -right-2 size-6 cursor-nesw-resize z-40`},{dir:`sw`,className:`-bottom-2 -left-2 size-6 cursor-nesw-resize z-40`},{dir:`se`,className:`-bottom-2 -right-2 size-6 cursor-nwse-resize z-40`}];function Hd({className:e,children:t,...n}){let{size:r,position:i,isDragging:a,isResizing:o,isMaximized:s,contentRef:c,startDrag:l,startResize:u,toggleMaximize:d}=Fd(),f=`ring-offset-background focus:ring-ring text-popover-foreground flex size-8 items-center justify-center rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none`;return(0,K.jsxs)(Rd,{"data-slot":`dialog-portal`,children:[(0,K.jsx)(zd,{className:P(`transition-opacity duration-200`,a&&`opacity-0`)}),(0,K.jsxs)(dn,{ref:c,"data-slot":`dialog-content`,style:{left:i.x,top:i.y,width:r.width,height:r.height},className:P(`bg-popover 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 fixed z-50 rounded-md border shadow-2xl transition-none`,a&&`will-change-transform`,e),...n,children:[(0,K.jsxs)(`div`,{className:P(`flex h-full w-full flex-col gap-4 overflow-hidden rounded-md p-6`,(a||o)&&`select-none`),children:[(0,K.jsx)(`div`,{onMouseDown:l,className:`absolute inset-x-0 top-0 z-10 flex h-12 cursor-move items-start justify-center`,"aria-hidden":!0,children:(0,K.jsx)(Ai,{className:`mt-1 size-4 text-muted-foreground/40`})}),t,(0,K.jsxs)(`div`,{className:`absolute top-6 right-4 z-20 flex h-[1.125rem] items-center gap-1`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:d,"aria-label":s?`Restore modal size`:`Maximize modal`,className:f,children:s?(0,K.jsx)(va,{className:`size-4`}):(0,K.jsx)(ma,{className:`size-4`})}),(0,K.jsxs)(xt,{"aria-label":`Close`,className:f,children:[(0,K.jsx)(Io,{className:`size-4`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}),Vd.map(({dir:e,className:t})=>(0,K.jsx)(`div`,{"data-resize-handle":e,onMouseDown:u(e),className:P(`absolute`,t),"aria-hidden":!0},e))]})]})}function Ud({className:e,children:t,resizable:n,...r}){return n?(0,K.jsx)(Hd,{className:e,...r,children:t}):(0,K.jsxs)(Rd,{"data-slot":`dialog-portal`,children:[(0,K.jsx)(zd,{}),(0,K.jsxs)(dn,{"data-slot":`dialog-content`,className:P(`bg-popover 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] lg:max-w-2xl max-h-screen overflow-y-auto translate-x-[-50%] translate-y-[-50%] gap-4 rounded-md border p-6 shadow-2xl duration-200`,e),...r,children:[t,(0,K.jsx)(Bd,{})]})]})}function Wd({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`dialog-header`,className:P(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function Gd({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`dialog-footer`,className:P(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...t})}function Kd({className:e,...t}){return(0,K.jsx)(Ut,{"data-slot":`dialog-title`,className:P(`text-lg leading-none text-popover-foreground font-semibold`,e),...t})}function qd({className:e,...t}){return(0,K.jsx)(bt,{"data-slot":`dialog-description`,className:P(`text-muted-foreground text-sm`,e),...t})}function Jd({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)(Id,{open:n,onOpenChange:i,children:[s&&(0,K.jsx)(Ld,{asChild:!0,children:s}),(0,K.jsxs)(Ud,{className:`sm:max-w-[750px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{children:[`Are you sure you want to `,l.toLowerCase(),` this `,e,`?`]}),(0,K.jsx)(qd,{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)(Oo,{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)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-center space-x-5`,children:[(0,K.jsxs)(H,{type:`button`,onClick:()=>i(!1),children:[(0,K.jsx)(er,{}),` Cancel`]}),(0,K.jsxs)(H,{variant:`destructive`,onClick:a,disabled:o,children:[(0,K.jsx)(Eo,{}),` `,l]})]})})]})]})}function Yd({...e}){return(0,K.jsx)(_t,{"data-slot":`context-menu`,...e})}function Xd({...e}){return(0,K.jsx)(Bt,{"data-slot":`context-menu-trigger`,...e})}function Zd({className:e,...t}){return(0,K.jsx)(zt,{children:(0,K.jsx)(Nt,{"data-slot":`context-menu-content`,className:P(`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 Qd({className:e,inset:t,variant:n=`default`,...r}){return(0,K.jsx)(wn,{"data-slot":`context-menu-item`,"data-inset":t,"data-variant":n,className:P(`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 $d({className:e,inset:t,...n}){return(0,K.jsx)(st,{"data-slot":`context-menu-label`,"data-inset":t,className:P(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function ef({className:e,...t}){return(0,K.jsx)(Rt,{"data-slot":`context-menu-separator`,className:P(`bg-border -mx-1 my-1 h-px`,e),...t})}function tf({className:e,...t}){return(0,K.jsx)(`span`,{"data-slot":`context-menu-shortcut`,className:P(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...t})}var nf={dropdown:{Item:Qo,Label:ns,Separator:rs},context:{Item:Qd,Label:$d,Separator:ef}};function rf(e,t){let{Item:n,Label:r,Separator:i}=nf[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 af({items:e,children:t}){return e.length?(0,K.jsxs)(Yd,{children:[(0,K.jsx)(Xd,{asChild:!0,children:t}),(0,K.jsx)(Zd,{children:rf(e,`context`)})]}):(0,K.jsx)(K.Fragment,{children:t})}function of(e,t){let n=cf(e),r=cf(t);return!n||!r?!1:df(r,n)>=0}function sf(e,t){let n=cf(e),r=cf(t);return!n&&!r?0:n?r?df(n,r):1:-1}function cf(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=lf(a[0]),s=lf(a[1]??`0`),c=lf(a[2]??`0`);return o==null||s==null||c==null?null:{major:o,minor:s,patch:c,pre:i?i.split(`.`).map(e=>uf(e)?Number(e):e):[]}}function lf(e){return e==null||e===``||!/^\d+$/.test(e)?null:Number(e)}function uf(e){return/^\d+$/.test(e)}function df(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 ff=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 pf(e){return ff.has(e)}function mf(e){let t=Nf.get(e);return!!t?.aliasOf||!!t?.nonDelegable||!!t?.outOfGate||pf(e)}var hf=`5.1.0-alpha.1`,gf=`5.2.0-alpha.1`,_f=`5.3.0-alpha.1`,vf=`Data`,yf=`Schema`,bf=`Users & Roles`,xf=`Components & Deployments`,Sf=`Clustering & Replication`,Cf=`Jobs`,wf=`Logs & Analytics`,Tf=`System`,Ef=`Managed Backups`,Df=`Secrets & Environment`,Of=`Agent`,kf=[vf,yf,bf,xf,Sf,Cf,wf,Tf,Ef,Df,Of],Af=[{name:`search`,su:!1,category:vf},{name:`search_by_conditions`,su:!1,category:vf},{name:`search_by_hash`,su:!1,category:vf},{name:`search_by_id`,su:!1,category:vf,aliasOf:`search_by_hash`},{name:`search_by_value`,su:!1,category:vf},{name:`sql`,su:!1,category:vf,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:vf},{name:`update`,su:!1,category:vf},{name:`upsert`,su:!1,category:vf},{name:`put`,su:!1,category:vf,addedIn:_f},{name:`delete`,su:!1,category:vf},{name:`delete_records_before`,su:!0,category:vf},{name:`csv_data_load`,su:!1,category:vf},{name:`csv_file_load`,su:!1,category:vf},{name:`csv_url_load`,su:!1,category:vf},{name:`import_from_s3`,su:!1,category:vf},{name:`export_local`,su:!0,category:vf},{name:`export_to_s3`,su:!0,category:vf},{name:`describe_all`,su:!1,category:yf},{name:`describe_database`,su:!1,category:yf,aliasOf:`describe_schema`},{name:`describe_schema`,su:!1,category:yf},{name:`describe_table`,su:!1,category:yf},{name:`create_database`,su:!0,category:yf},{name:`create_schema`,su:!0,category:yf,aliasOf:`create_database`},{name:`drop_database`,su:!0,category:yf},{name:`drop_schema`,su:!0,category:yf,aliasOf:`drop_database`},{name:`create_table`,su:!0,category:yf},{name:`drop_table`,su:!0,category:yf},{name:`create_attribute`,su:!1,category:yf},{name:`drop_attribute`,su:!0,category:yf},{name:`cleanup_orphan_blobs`,su:!0,category:yf},{name:`user_info`,su:!1,category:bf},{name:`list_users`,su:!0,category:bf},{name:`add_user`,su:!0,category:bf},{name:`alter_user`,su:!0,category:bf},{name:`drop_user`,su:!0,category:bf},{name:`list_roles`,su:!0,category:bf},{name:`add_role`,su:!0,category:bf},{name:`alter_role`,su:!0,category:bf},{name:`drop_role`,su:!0,category:bf},{name:`refresh_operation_token`,su:!1,category:bf},{name:`get_components`,su:!0,category:xf},{name:`get_component_file`,su:!0,category:xf},{name:`set_component_file`,su:!0,category:xf},{name:`add_component`,su:!0,category:xf},{name:`drop_component`,su:!0,category:xf},{name:`deploy_component`,su:!0,category:xf},{name:`package_component`,su:!0,category:xf},{name:`install_node_modules`,su:!0,category:xf},{name:`audit_node_modules`,su:!0,category:xf},{name:`custom_functions_status`,su:!0,category:xf},{name:`get_custom_functions`,su:!0,category:xf},{name:`get_custom_function`,su:!0,category:xf},{name:`set_custom_function`,su:!0,category:xf},{name:`drop_custom_function`,su:!0,category:xf},{name:`add_custom_function_project`,su:!0,category:xf,aliasOf:`add_component`},{name:`deploy_custom_function_project`,su:!0,category:xf,aliasOf:`deploy_component`},{name:`package_custom_function_project`,su:!0,category:xf,aliasOf:`package_component`},{name:`drop_custom_function_project`,su:!0,category:xf,aliasOf:`drop_component`},{name:`list_deployments`,su:!0,category:xf,addedIn:hf},{name:`get_deployment`,su:!0,category:xf,addedIn:hf},{name:`get_deployment_payload`,su:!0,category:xf,addedIn:hf,nonDelegable:!0},{name:`delete_deployment_payload`,su:!0,category:xf,addedIn:hf},{name:`add_node`,su:!0,category:Sf},{name:`update_node`,su:!0,category:Sf},{name:`set_node_replication`,su:!0,category:Sf},{name:`purge_stream`,su:!0,category:Sf},{name:`catchup`,su:!0,category:Sf},{name:`get_job`,su:!1,category:Cf},{name:`search_jobs_by_start_date`,su:!0,category:Cf},{name:`update_job`,su:!0,category:Cf},{name:`delete_job`,su:!0,category:Cf},{name:`read_log`,su:!0,category:wf},{name:`read_audit_log`,su:!0,category:wf},{name:`read_transaction_log`,su:!0,category:wf},{name:`delete_files_before`,su:!0,category:wf},{name:`delete_audit_logs_before`,su:!0,category:wf},{name:`delete_transaction_logs_before`,su:!0,category:wf},{name:`get_analytics`,su:!1,category:wf},{name:`list_metrics`,su:!1,category:wf},{name:`describe_metric`,su:!1,category:wf},{name:`get_configuration`,su:!0,category:Tf},{name:`set_configuration`,su:!0,category:Tf},{name:`restart`,su:!0,category:Tf},{name:`restart_service`,su:!0,category:Tf},{name:`system_information`,su:!0,category:Tf},{name:`get_status`,su:!0,category:Tf},{name:`set_status`,su:!0,category:Tf},{name:`clear_status`,su:!0,category:Tf},{name:`registration_info`,su:!1,category:Tf},{name:`get_backup`,su:!0,category:Tf},{name:`create_backup`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`verify_backup`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`restore_backup`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`list_backups`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`delete_backup`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`purge_backups`,su:!0,category:Ef,addedIn:gf,nonDelegable:!0},{name:`set_secret`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`grant_secret`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`revoke_secret`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`list_secrets`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`delete_secret`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`get_secrets_public_key`,su:!0,category:Df,addedIn:gf,nonDelegable:!0},{name:`set_env_value`,su:!0,category:Df,addedIn:gf},{name:`delete_env_value`,su:!0,category:Df,addedIn:gf},{name:`get_env_keys`,su:!0,category:Df,addedIn:gf},{name:`agent_prompt`,su:!0,category:Of,addedIn:hf},{name:`get_agent_session`,su:!0,category:Of,addedIn:hf},{name:`list_agent_sessions`,su:!0,category:Of,addedIn:hf},{name:`cancel_agent_run`,su:!0,category:Of,addedIn:hf},{name:`approve_agent_action`,su:!0,category:Of,addedIn:hf},{name:`set_agent_config`,su:!0,category:Of,addedIn:hf}],jf=[`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`],Mf=[{name:`read_only`,description:`Read-only data access: searches, SQL, schema describes, and user/analytics reads.`,members:jf},{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:[...jf,`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:gf}],Nf=new Map(Af.map(e=>[e.name,e])),Pf=new Map(Mf.map(e=>[e.name,e]));function Ff(e){return Nf.get(e)}function If(e){return Nf.get(e)?.aliasOf??e}function Lf(e){return Pf.has(e)}function Rf(e){return!!e&&of(`5.0.0-alpha.8`,e)}function zf(e){return Af.filter(t=>!t.nonDelegable&&!t.aliasOf&&(!t.addedIn||of(t.addedIn,e)))}function Bf(e){return Mf.filter(t=>!t.addedIn||of(t.addedIn,e))}function Vf(e){let t=new Set;for(let n of e){let e=Pf.get(n);if(e){for(let n of e.members){let e=Nf.get(n)?.aliasOf??n;mf(e)||t.add(e)}continue}mf(n)||t.add(n)}return[...t].sort()}function Hf(e,t=40){return e.length>t?`${e.slice(0,t).join(`, `)}, +${e.length-t} more`:e.join(`, `)}var Uf=[`super_user`,`structure_user`,`cluster_user`,`operations`],Wf=new Set(Uf);function Gf(e,t,n){if((t===`operations`?n:Wf.has(t))||!Object.hasOwn(e,t))return;let r=e[t];return typeof r==`object`&&r&&!Array.isArray(r)?r:void 0}function Kf(e){return e?.super_user===!0||e?.cluster_user===!0}function qf(e){let t=e?.structure_user;return t===!0?!0:Array.isArray(t)&&t.length>0?t:!1}var Jf=[`create_table`,`create_attribute`,`drop_table`,`drop_attribute`];function Yf(e){let t=e?.operations;return Array.isArray(t)&&t.every(e=>typeof e==`string`)?t:void 0}function Xf(e,t){let n=e?.operations;return e===void 0||n===void 0?`absent`:t?Yf(e)===void 0?n&&typeof n!=`string`&&!Array.isArray(n)?`breaks-auth`:`malformed`:`allowlist`:Gf(e,`operations`,!1)===void 0?`inert`:`database`}function Zf(e){let t=Uf.filter(t=>t in e),n=Object.keys(e).filter(e=>!Wf.has(e));return Object.fromEntries([...t,...n].map(t=>[t,e[t]]))}function Qf(e,t){let n={...e};return t===void 0?delete n.operations:n.operations=t,Zf(n)}var $f={read:[`search`,`search_by_conditions`,`search_by_hash`,`search_by_value`,`sql`],insert:[`insert`],update:[`update`],delete:[`delete`]},ep=[`insert`],tp=[`csv_data_load`,`get_job`],np=[`csv_url_load`,`get_job`],rp={"json-records":ep,"csv-data":tp,"csv-url":np},ip={sample:[ep,tp],file:[ep,tp],url:[np]},ap=Object.keys(ip),op=new WeakMap,sp=new Map(Mf.map(e=>[e.name,e.members]));function cp(e){let t=new Set;for(let n of e){let e=sp.get(n);if(e)for(let n of e)t.add(n);else t.add(n)}return t}function lp(e,t){let n=Yf(e);if(!n)return!0;let r=op.get(n);return r||(r=cp(n),op.set(n,r)),t.some(e=>r.has(If(e)))}function up(e,t){return e?.super_user===!0||lp(e,t)}function dp(e,t){return up(e,$f[t]??[])}function fp(e,t){return t.every(t=>lp(e,[t]))}function pp(e,t){return e?.super_user===!0||fp(e,rp[t])}function mp(e,t){return e?.super_user===!0||ip[t].some(t=>fp(e,t))}function hp(e){return ap.some(t=>mp(e,t))}function gp(e,t,n,r){return dp(e,r)&&yp(e,t,n,r)}function _p(e,t,n){if(!e)return!1;if(e.super_user===!0)return!0;if(!lp(e,[`put`]))return!1;let r=Gf(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 vp(e,t,n){return hp(e)&&yp(e,t,n,`insert`)}function yp(e,t,n,r){return e?e.super_user===!0||e.structure_user===!0||Gf(e,t,!1)?.tables?.[n]?.[r]===!0:!1}function bp(e){let{user:t}=Ln(),{organizationId:n}=B({strict:!1}),r=xp(t,e??n);return{update:Rn(t,`org:update`)||r.update,remove:Rn(t,`org:delete`)||r.remove}}function xp(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 Sp(e){let{user:t}=Ln(),{organizationId:n}=B({strict:!1}),r=Cp(t,e??n);return{create:Rn(t,`role:create`)||r.create,remove:Rn(t,`role:delete`)||r.remove,update:Rn(t,`role:update`)||r.update,view:Rn(t,`role:read`)||r.view}}function Cp(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 wp(e,t){let{user:n}=Ln(),{organizationId:r,clusterId:i}=B({strict:!1});return Tp(n,e??r,t??i)}function Tp(e,t,n){let r=Ep(e,t,n);return{create:Rn(e,`cluster:create`)||r.create,remove:Rn(e,`cluster:delete`)||r.remove,update:Rn(e,`cluster:update`)||r.update,view:Rn(e,`cluster:read`)||r.view}}function Ep(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 Dp(e){let{user:t}=Ln(),{organizationId:n}=B({strict:!1});return Op(t,e??n)}function Op(e,t){return Rn(e,`instance:update`)||kp(e,t)}function kp(e,t){let n=e?.roles?.[t];return!n||`oauthProviders`in n?!1:n.role===`admin`}function Ap(e,t){let{user:n}=Ln(),{organizationId:r,clusterId:i}=B({strict:!1});return jp(n,e??r,t??i)}function jp(e,t,n){let r=Mp(e,t,n);return{create:Rn(e,`cluster:update`)||r.create,remove:Rn(e,`cluster:delete`)||r.remove,update:Rn(e,`instance:update`)||r.update,view:Rn(e,`instance:read`)||r.view}}function Mp(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 Np(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Bn(e??n??t),i=r?.role?.permission;return i?i.super_user===!0:!1}function Pp(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Bn(e??n??t),i=r?.role?.permission;return i?i.super_user===!0||i.structure_user===!0:!1}function Fp(e,t,n,r){let{clusterId:i,instanceId:a}=B({strict:!1}),{user:o}=Bn(e??a??i);return gp(o?.role?.permission,t,n,r)}function Ip(e,t,n){let{clusterId:r,instanceId:i}=B({strict:!1}),{user:a}=Bn(e??i??r);return _p(a?.role?.permission,t,n)}function Lp(e,t,n){let{clusterId:r,instanceId:i}=B({strict:!1}),{user:a}=Bn(e??i??r);return vp(a?.role?.permission,t,n)}function Rp(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Bn(e??n??t);return hp(r?.role?.permission)}function zp(e){let{clusterId:t,instanceId:n}=B({strict:!1}),{user:r}=Bn(e??n??t),i=r?.role?.permission;return(0,G.useMemo)(()=>({methods:Object.fromEntries(ap.map(e=>[e,mp(i,e)])),allowsSource:e=>pp(i,e),allowsDestination:(e,t)=>vp(i,e,t)}),[i])}function Bp(e){return!!e?.plans?.[0]?.planId?.startsWith(`self-hosted`)}function Vp({cluster:e,hasCardLink:t=!1}){let{view:n,update:r}=wp(e.organizationId,e.id),i=`/${e.organizationId}/${e.id}`;if(n)return Bp(e)?(0,K.jsx)(Hp,{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)(H,{variant:`positive`,className:`py-2 hover:border-b-2 animate-glow-pulse`,children:[`Finish Setup `,(0,K.jsx)(nr,{className:`inline-block`})]})}):(0,K.jsx)(`span`,{className:`py-2 text-nowrap`,children:`Pending Owner Setup`}):(0,K.jsx)(Hp,{cluster:e,hasCardLink:t}):t?(0,K.jsxs)(`span`,{className:`pointer-events-none text-sm text-nowrap py-2 ml-auto`,children:[`Instances`,` `,(0,K.jsx)(nr,{className:`inline-block transition-transform duration-200 group-hover/cluster:translate-x-1 motion-reduce:transform-none motion-reduce:transition-none`})]}):(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)(nr,{className:`inline-block transition-transform duration-200 group-hover/cluster:translate-x-1 motion-reduce:transform-none motion-reduce:transition-none`})]})})}function Hp({cluster:e,hasCardLink:t}){return t?(0,K.jsxs)(`span`,{className:`pointer-events-none text-sm text-nowrap py-2 ml-auto`,children:[`Open`,` `,(0,K.jsx)(nr,{className:`inline-block transition-transform duration-200 group-hover/cluster:translate-x-1 motion-reduce:transform-none motion-reduce:transition-none`})]}):(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)(nr,{className:`inline-block transition-transform duration-200 group-hover/cluster:translate-x-1 motion-reduce:transform-none motion-reduce:transition-none`})]})})}function Up({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)(Id,{open:n,onOpenChange:r,children:(0,K.jsxs)(Ud,{className:`sm:max-w-[560px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{children:[`Stop cluster `,e,`?`]}),(0,K.jsx)(qd,{children:`This stops every instance in the cluster. It will be offline and stop serving traffic until you start it again.`})]}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>r(!1),children:`Cancel`}),(0,K.jsx)(H,{type:`button`,variant:`destructive`,onClick:i,disabled:t,children:`Stop cluster`})]})})]})}),(0,K.jsx)(Id,{open:a,onOpenChange:o,children:(0,K.jsxs)(Ud,{className:`sm:max-w-[560px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{children:[`Restart cluster `,e]}),(0,K.jsx)(qd,{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)(Gd,{children:(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>o(!1),children:`Cancel`})})]})})]})}function Wp(e,t){let n=[];if(e)for(let r of e)n.push(r[t]);return n}function Gp({cluster:e,forceProgressBarVisible:t}){let[n,r]=(0,G.useState)(t||!1),{data:i}=F(ql(n&&e.id,2e3));(0,G.useEffect)(function(){(Hl(e.status)||Ul(e.status))&&r(!0)},[n,e.status,i?.instances]);let a=(0,G.useMemo)(()=>{let e=Wp(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&&!Vl(t)&&(Hl(t)?(n+=1,r[t]=`${n} ${Cl(t)}`):Ul(t)?(a+=1,o[t]=`${a} ${Cl(t)}`):Bl(t)?(l+=1,u[t]=`${l} ${Cl(t)}`):!i.planId||!e.includes(i.planId)?(a+=1,o.DRAINING_TRAFFIC=`${a} ${Cl(`Draining Traffic`)}`):zl(t)&&(s+=1,c[t]=`${s} ${Cl(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 Kp({open:e,setOpen:t,action:n,targetName:r,scope:i,isPending:a,onConfirm:o}){let s=n===`start`?`Start`:`Restart`;return(0,K.jsx)(Id,{open:e,onOpenChange:t,children:(0,K.jsxs)(Ud,{className:`sm:max-w-[560px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Ki,{className:`size-5 text-yellow`}),s,` `,r,` in safe mode?`]}),(0,K.jsxs)(qd,{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)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,K.jsxs)(H,{type:`button`,variant:`warning`,onClick:o,disabled:a,children:[(0,K.jsx)(Ki,{}),` `,s,` in safe mode`]})]})})]})})}async function qp(e){let{data:t}=await N.delete(`/Cluster/${e}`,{timeout:0});return t}function Jp(){return R({mutationFn:e=>qp(e)})}async function Yp({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 N.post(`/Cluster/${e}/container/${t}`,i);return a}function Xp(){return R({mutationFn:Yp})}var Zp={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function Qp(e){let{mutateAsync:t,isPending:n}=Xp(),r=Me();return{run:(0,G.useCallback)(async(n,i)=>{let a=i?.label??Zp[n],o=U.loading(a,{description:`${a} cluster ${e.name}. Status will update automatically.`,duration:3e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});try{let s=await t({clusterId:e.id,action:n,safeMode:i?.safeMode,strategy:i?.strategy});n!==`stop`&&ce({clusterId:e.id,instanceIds:s?.instanceIds??[],label:Zp[n],allAtOnce:s?.strategy===`parallel`}),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 $p(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 em(e){$p(e).then(e=>{e&&U.info(`Copied to clipboard!`,{icon:(0,K.jsx)(Br,{}),duration:1e3})})}function tm(...e){return(0,G.useMemo)(()=>e.map(e=>()=>em(e)),e)}function nm(){return em}function rm({item:e}){let{cluster:t}=e,n=we(),r=Me(),i=(0,G.useMemo)(()=>c(t),[t]),a=Dc({operationsUrl:i}),o=Bn(t.id),[,s]=Es(Pn.SavedClusterState,null),{view:l,update:f,remove:p,create:m}=wp(t.organizationId,t.id),h=Dp(t.organizationId),{mutate:g,isPending:_}=Jp(),[v,y]=(0,G.useState)(!1),[b,x]=(0,G.useState)(!1),[S,C]=(0,G.useState)(!1),[w,T]=(0,G.useState)(!1),[E,D]=(0,G.useState)(null),{run:O,isPending:k}=Qp(t),A=t.status===`RUNNING`,ee=t.status===`STOPPED`,te=t.status===`PARTIAL`,j=(0,G.useMemo)(()=>!!(t.status&&jl.includes(t.status)),[t.status]),M=Bp(t),N=h&&!M,P=u.checkForFabricConnect(t.id),ne=!P&&!!o.user,re=(0,G.useMemo)(()=>!!(t.status&&Ml.includes(t.status)),[t.status]),ie=(0,G.useMemo)(()=>!!(t.status&&Bl(t.status)),[t.status]),ae=f&&!M&&!re&&!Ul(t.status)&&!Hl(t.status),oe=(0,G.useCallback)(async()=>{y(!0);let e=await Gl(t.id).catch(e=>(console.error(`Failed to lookup cluster details, proceeding without checking instances.`,e),null));if(await d({entityId:t.id,instanceClient:a}),e?.instances?.length)for(let t of e.instances)u.setUserForEntity(t,null);u.setUserForEntity(t,null)},[t,a]),se=(0,G.useCallback)(()=>{s(t),n.navigate({to:`/${t.organizationId}/new-cluster`})},[t,n,s]),ce=(0,G.useCallback)(()=>x(!0),[]),le=(0,G.useCallback)(()=>{let e=t.organizationId;g(t.id,{onSuccess:async()=>{await r.invalidateQueries({queryKey:[e],refetchType:`active`}),await n.invalidate(),U.success(`Success`,{description:M?`Cluster successfully removed.`:`Cluster successfully terminated.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),x(!1)},onError:()=>{U.error(`Error`,{description:M?`Failed to remove cluster: ${t.name}`:`Failed to terminate cluster: ${t.name}.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),x(!1)}})},[n,t.organizationId,t.id,t.name,g,M,r]),ue=!l||re?void 0:t.status===`STOPPED`?`/${t.organizationId}/${t.id}/instances`:t.status===`PARTIAL`?`/${t.organizationId}/${t.id}`:j?M?`/${t.organizationId}/${t.id}`:t.fqdn?t.resetPassword?void 0:`/${t.organizationId}/${t.id}`:`/${t.organizationId}/${t.id}/instances`:void 0,de=t.domains?.[0]?.domain||t.fqdn,[fe,pe]=tm(`${de}`,`https://${de}`),me=[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-separator`},j&&f&&!o.isLoading&&(!ne||P)&&{key:`sign-in`,to:`${t.id}/sign-in`,disabled:v,icon:(0,K.jsx)(Bi,{className:`text-green`}),label:`Direct Sign In`},j&&l&&!!i&&!o.isLoading&&ne&&{key:`direct-sign-out`,onClick:oe,disabled:v,label:`Direct Sign Out`},j&&f&&{key:`edit`,to:`${t.id}/edit`,disabled:v,icon:(0,K.jsx)(Ja,{className:`text-purple-600`}),label:M?`Edit`:`Edit Scaling`},ae&&{key:`edit-version`,to:`${t.id}/edit/version`,disabled:v,icon:(0,K.jsx)(wi,{className:`text-fuchsia-300`}),label:`Edit Version`},j&&f&&!1,j&&l&&{key:`instances`,to:`${t.id}/instances`,disabled:v,icon:(0,K.jsx)(Qa,{className:`text-orange-300`}),label:`Instances`},j&&l&&!!o.user&&{key:`deployments`,to:`${t.id}/config/deployments`,disabled:v,icon:(0,K.jsx)(Ba,{className:`text-sky-400`}),label:`Deployments`},N&&(A||ee||te)&&{type:`separator`,key:`container-separator`},N&&(A||ee||te)&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},N&&(ee||te)&&{key:`container-start`,disabled:k,onClick:()=>void O(`start`,{safeMode:!1,strategy:`parallel`}),icon:(0,K.jsx)(Pa,{}),label:`Start`},N&&ee&&{key:`container-start-safe`,disabled:k,onClick:()=>D(`start`),icon:(0,K.jsx)(Ki,{}),label:`Start in safe mode`},N&&(A||te)&&{key:`container-restart`,disabled:k,onClick:()=>T(!0),icon:(0,K.jsx)(Wa,{}),label:`Restart`},N&&A&&{key:`container-restart-safe`,disabled:k,onClick:()=>D(`restart`),icon:(0,K.jsx)(Ki,{}),label:`Restart in safe mode`},N&&(A||te)&&{key:`container-stop`,variant:`destructive`,disabled:k,onClick:()=>C(!0),icon:(0,K.jsx)(fo,{}),label:`Stop`},j&&l&&!!t.fqdn&&{type:`separator`,key:`copy-separator`},j&&l&&!!t.fqdn&&{key:`copy-host-name`,onClick:fe,disabled:v,icon:(0,K.jsx)(Hr,{}),label:`Copy Host Name`},j&&l&&!!t.fqdn&&{key:`copy-api-url`,onClick:pe,disabled:v,icon:(0,K.jsx)(Hr,{}),label:`Copy API URL`},ie&&m&&{key:`try-again`,onClick:se,className:`focus:bg-green/70 focus:text-white`,label:`Try Again`},!re&&p&&j&&{type:`separator`,key:`remove-separator`},!re&&p&&{key:`remove`,onClick:ce,className:`focus:bg-red/70 focus:text-white`,icon:(0,K.jsx)(Eo,{className:`text-red-300`}),label:M?`Remove`:`Terminate`}].filter($c);return(0,K.jsx)(af,{items:re?[]:me,children:(0,K.jsxs)(Vn,{className:`group/cluster relative isolate min-w-0 h-full overflow-hidden border border-border bg-card/30 py-0 gap-0 shadow-sm transition-[background-color,border-color,box-shadow] duration-200 motion-reduce:transition-none ${ue?`cursor-pointer hover:border-primary hover:bg-card/70 hover:shadow-xl hover:shadow-primary/20 hover:ring-2 hover:ring-primary/70 dark:hover:border-violet-400 dark:hover:ring-violet-400/70`:``}`,children:[ue&&(0,K.jsx)(V,{to:ue,"aria-label":`${M||t.fqdn?`Open`:`View`} ${t.name}`,className:`absolute inset-0 z-1 cursor-pointer rounded-[inherit] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring focus-visible:outline-none`}),(0,K.jsxs)(Hn,{className:`gap-3 bg-linear-to-br from-transparent via-primary/5 to-primary/15 dark:from-primary/15 dark:to-transparent px-5 py-5`,children:[(0,K.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2 pt-1`,children:[(0,K.jsxs)(Fs,{variant:e.category===`failed`?`destructive`:e.category===`attention`?`warning`:e.category===`running`?`success`:`secondary`,className:`rounded-full`,children:[(0,K.jsx)(`span`,{className:`size-1.5 rounded-full bg-current`,"aria-hidden":`true`}),e.label]}),(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.hosting})]}),!re&&(0,K.jsxs)(Yo,{children:[(0,K.jsxs)(Xo,{"aria-label":`Cluster options`,onClick:e=>e.stopPropagation(),className:`relative z-10 inline-flex shrink-0 items-center gap-1.5 rounded-md border border-primary/25 bg-background/60 px-2.5 py-1.5 text-xs font-medium text-foreground shadow-sm transition-colors hover:border-primary/60 hover:bg-primary/15 focus-visible:outline-2 focus-visible:outline-ring`,children:[`Options `,(0,K.jsx)(On,{className:`size-3.5`,"aria-hidden":`true`})]}),(0,K.jsx)(Zo,{align:`end`,children:rf(me,`dropdown`)})]})]}),(0,K.jsx)(Un,{children:(0,K.jsx)(`h2`,{className:`break-words text-xl font-semibold leading-snug`,children:t.name})}),(0,K.jsx)(Wn,{className:`flex min-w-0 items-center gap-3 justify-between`,children:de?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`min-w-0 truncate`,title:de,children:de}),(0,K.jsx)(`button`,{type:`button`,"aria-label":`Copy host name`,onClick:e=>{e.stopPropagation(),fe()},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)(Qr,{size:16})}),(0,K.jsx)(`span`,{className:`grow`})]}):(0,K.jsx)(`span`,{children:M?`Self-hosted endpoint`:`Hostname not assigned`})})]}),(0,K.jsxs)(Gn,{className:`mt-auto flex flex-col gap-3 border-t border-border px-5 py-4`,children:[(0,K.jsx)(Gp,{cluster:t}),(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1 text-xs`,children:[e.notices.length?(0,K.jsx)(`ul`,{className:`space-y-1 ${e.category===`failed`?`text-destructive`:`text-amber-800 dark:text-yellow`}`,children:e.notices.map(e=>(0,K.jsx)(`li`,{children:e},e))}):(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:M?`Monitoring managed externally`:e.category===`running`?`Cluster is running`:e.label}),ie&&m&&(0,K.jsx)(`p`,{className:`mt-1 text-muted-foreground`,children:`Open cluster options to retry or manage this cluster.`})]}),j&&l&&(0,K.jsx)(Vp,{cluster:t,hasCardLink:!!ue})]})]}),(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:M?`Remove`:`Terminate`,presentParticiple:M?`Removing`:`Terminating`,nameOfThingBeingDeleted:t.name,isModalOpen:b,hideDataLossWarning:M,setIsModalOpen:e=>x(e),deletionConfirmed:le,deletionPending:_}),(0,K.jsx)(Up,{clusterName:t.name,isPending:k,stopOpen:S,setStopOpen:C,onConfirmStop:()=>{C(!1),O(`stop`,{strategy:`parallel`})},restartOpen:w,setRestartOpen:T,onConfirmRestart:e=>{T(!1),O(`restart`,{safeMode:!1,strategy:e})}}),(0,K.jsx)(Kp,{open:E!==null,setOpen:e=>{e||D(null)},action:E??`restart`,targetName:t.name,scope:`cluster`,isPending:k,onConfirm:()=>{let e=E;D(null),e&&O(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}})]})})}function im(e){return e.filter(e=>!!e&&!(e.status!=null&&Ml.includes(e.status))).map(e=>e.version).filter(e=>!!e)}function am(e,t=[]){let n=im(e);if(n.length<2)return null;let r=n.reduce((e,t)=>sf(t,e)>0?t:e),i=n.filter(e=>e!==r);if(i.length===0)return null;let a=new Set(t);return{latest:r,behindCount:i.length,total:n.length,ambiguous:i.some(e=>a.has(e))}}var om={search:``,category:`all`,region:``,sort:`attention`};function sm(e,t){let n=Bp(e),r=e.instances?.filter(e=>!Ml.includes(e.status??``)),i=[...(e.plans??[]).map(e=>e.region||t?.get(e.regionId??``)).filter(Boolean),...(r??[]).map(e=>e.region||t?.get(e.regionId??``))],a=[...new Set(i.filter(e=>!!e))].sort(),o=[...new Set((r??[]).map(e=>e.version).filter(Boolean))].sort(),s=e.status,c=s===`FAILED`||s===`ERROR`||!n&&r?.some(e=>e.status===`FAILED`||e.status===`ERROR`),l=s===`PENDING_UPGRADE`||!n&&r?.some(e=>e.status===`PENDING_UPGRADE`),u=!n&&r?am(r):null,d=Ul(s)||Hl(s)||[`STARTING`,`STOPPING`,`RESTARTING`].includes(s??``),f=[];c&&f.push(`Failure reported`),l&&f.push(`Upgrade pending`),u&&f.push(`${u.behindCount} ${u.behindCount===1?`instance`:`instances`} on an older version`),s===`PARTIAL`&&f.push(`Some instances are not running`),s===`UPDATED`&&f.push(`Waiting for running status`),s===`STOPPED`&&f.push(`Cluster stopped`),e.resetPassword&&f.push(`Setup required`),d&&!l&&f.push(Cl(s));let p=c?`failed`:f.length?`attention`:jl.includes(s??``)?`running`:`other`,m=Date.parse(e.createdAt??``);return{cluster:e,category:p,label:c&&s!==`FAILED`&&s!==`ERROR`?`Instance failure`:s?Cl(s):`Status unknown`,notices:f,regions:a,instanceCount:r?.length,version:o.length>1?`Mixed versions`:o[0],hosting:n?`Self-hosted`:e.plans?.length?`Harper Cloud`:`Hosting unknown`,createdAt:Number.isFinite(m)?m:-1/0,searchText:[e.name,e.id,e.fqdn,...(e.domains??[]).map(e=>e.domain),...a].filter(Boolean).join(` `).toLowerCase()}}function cm(e,t){let n=e.filter(e=>e.status!==`TERMINATED`&&e.status!==`REMOVED`).map(e=>sm(e,t)),r={running:0,attention:0,failed:0,other:0};for(let e of n)r[e.category]++;return{items:n,counts:r,regions:[...new Set(n.flatMap(e=>e.regions))].sort()}}var lm={failed:0,attention:1,other:2,running:3};function um(e,t){let n=t.search.trim().toLowerCase();return e.filter(e=>(t.category===`all`||e.category===t.category)&&(!t.region||e.regions.includes(t.region))&&(!n||e.searchText.includes(n))).sort((e,n)=>t.sort===`attention`&&e.category!==n.category?lm[e.category]-lm[n.category]:t.sort===`newest`&&e.createdAt!==n.createdAt?e.createdAt>n.createdAt?-1:1:e.cluster.name.localeCompare(n.cluster.name)||e.cluster.id.localeCompare(n.cluster.id))}async function dm({organizationId:e,availableHosts:t}={}){let{data:n}=await N.get(`/Region/`,{params:{availableHosts:t,organizationId:e}});return n}function fm({organizationId:e,availableHosts:t}={}){return z({queryKey:[e,`regionLocations`,t],queryFn:()=>dm({organizationId:e,availableHosts:t}),retry:!1})}function pm({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] relative ${t??``}`,children:e})]})}var mm=`studio:sidebar-help:minimized:v1`;function hm({items:e,ariaLabel:t}){let[n,r]=(0,G.useState)(()=>{try{return window.localStorage.getItem(mm)===`1`}catch{return!1}}),i=(0,G.useId)();return(0,K.jsxs)(`div`,{className:`section-rail`,children:[(0,K.jsxs)(`div`,{className:`section-rail-navigation`,children:[(0,K.jsx)(Ts,{}),(0,K.jsx)(fs,{items:e,ariaLabel:t})]}),(0,K.jsx)(`div`,{className:`section-rail-help-space`,children:(0,K.jsxs)(`section`,{"aria-label":`Need help?`,className:`section-rail-help rounded-xl border border-primary/25 bg-linear-to-br from-primary/15 via-card/50 to-card/30 p-4 shadow-sm`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(Ba,{className:`size-5 text-primary dark:text-violet-300`,"aria-hidden":`true`}),(0,K.jsx)(`p`,{className:`text-sm font-semibold`,children:`Need help?`})]}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>{let e=!n;r(e);try{window.localStorage.setItem(mm,e?`1`:`0`)}catch{}},"aria-label":n?`Expand help card`:`Minimize help card`,"aria-expanded":!n,"aria-controls":i,className:`flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-primary/10 hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring`,children:n?(0,K.jsx)(An,{className:`size-4`}):(0,K.jsx)(On,{className:`size-4`})})]}),(0,K.jsxs)(`div`,{id:i,hidden:n,children:[(0,K.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed text-muted-foreground`,children:`Explore the docs or join our community on Discord.`}),(0,K.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-x-4 gap-y-3 text-xs font-medium`,children:[(0,K.jsxs)(`a`,{href:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 rounded-sm hover:underline focus-visible:outline-2 focus-visible:outline-ring`,children:[(0,K.jsx)(ur,{className:`size-3.5`}),`View docs`,(0,K.jsx)(`span`,{className:`sr-only`,children:`(opens in a new tab)`})]}),(0,K.jsxs)(`a`,{href:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 rounded-sm hover:underline focus-visible:outline-2 focus-visible:outline-ring`,children:[(0,K.jsx)(`span`,{className:`[&_svg]:size-3.5`,children:(0,K.jsx)(Ms,{})}),`Join Discord`,(0,K.jsx)(`span`,{className:`sr-only`,children:`(opens in a new tab)`})]})]})]})]})})]})}var gm=x(`relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90`,warning:`border-amber-500/50 text-amber-600 dark:text-amber-400 bg-amber-50/50 dark:bg-amber-950/20 [&>svg]:text-amber-600 dark:[&>svg]:text-amber-400`}},defaultVariants:{variant:`default`}});function _m({className:e,variant:t,...n}){return(0,K.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:P(gm({variant:t}),e),...n})}function vm({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`alert-title`,className:P(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function ym({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`alert-description`,className:P(`text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed`,e),...t})}function bm(e){let t=(0,G.useCallback)(()=>{let t=le(e);return t?JSON.stringify(t):``},[e]),n=(0,G.useSyncExternalStore)(de,t);return(0,G.useMemo)(()=>n?JSON.parse(n):void 0,[n])}function xm(){return(0,G.useSyncExternalStore)(de,ae)}var Sm=5e3;function Cm({entityId:e,clusterId:t,noun:n,className:r}){let i=bm(e);if(F({...ql(t,Sm),enabled:!!i&&!!t}),!i)return null;let a=ne(i,{proxied:!!e&&o(e)});return(0,K.jsx)(`div`,{className:r,children:(0,K.jsxs)(_m,{variant:`warning`,role:`status`,"aria-live":`polite`,children:[(0,K.jsx)(Xi,{className:`animate-spin`}),(0,K.jsxs)(vm,{children:[i.label,` `,n]}),(0,K.jsx)(ym,{children:a?`Studio is holding its requests to this ${n} until it's back online, then refreshes what's shown here.`:`Instances are restarting one at a time, so the cluster stays available. Brief connection errors are expected and hidden until it finishes.`})]})})}function wm({children:e}){let{organizationId:t,clusterId:n}=B({strict:!1}),{view:r,update:i}=wp(t,n),{data:a}=F(ql(n,!1)),o=a?Bp(a):!1,s=`/${t}/${n}`,c=[{to:s,label:`Overview`,icon:Wi,exact:!0},r&&!o&&{to:`${s}/usage`,label:`Usage`,icon:Sr},i&&{to:`${s}/edit`,label:o?`Configuration`:`Scaling`,icon:Si,exact:!0},i&&!o&&{to:`${s}/edit/version`,label:`Version`,icon:bo,exact:!0},i&&!o&&{to:`${s}/domains`,label:`Domains`,icon:Ei},r&&{to:`${s}/instances`,label:`Instances`,icon:Qa}].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:`section-rail-aside md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,K.jsx)(hm,{items:c,ariaLabel:`Cluster sections`})}),(0,K.jsxs)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:[(0,K.jsx)(Cm,{entityId:n,clusterId:n,noun:`cluster`,className:`mb-4`}),e]})]})})}async function Tm(e){let{data:t}=await N.get(`/Plan/`,{params:{organizationId:e}});return t}function Em(e){return z({queryKey:[e,`instancePlan`],queryFn:()=>Tm(e),retry:!1})}var Dm=[`stable`,`next`,`beta`,`alpha`];function Om(e){let t=Dm.indexOf(e);return t===-1?Dm.length:t}function km(e){let t=new Map;for(let n of e){let e=t.get(n.version),r=!e||Om(n.name)<Om(e.name)?n:e,i=n.scoped||e?.scoped;t.set(n.version,i&&!r.scoped?{...r,scoped:!0}:r)}return[...t.values()]}async function Am(e){let{data:t}=await N.get(`/HarperVersions/`,{params:{organizationId:e}}),n=t;return{...n,value:km(n.value)}}function jm(e){return z({queryKey:[e,`HarperVersions`],queryFn:()=>Am(e),staleTime:6e4,retry:!1})}function Mm(e){return(t,n)=>t[e]===n[e]?0:t[e]>n[e]?1:-1}function Nm(e){let t=e.split(`.`).map(Number);return(t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0}function Pm(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 Fm(e,t){return e.instanceFqdn===t.instanceFqdn?e.operationsApiPort-t.operationsApiPort:Pm(e.instanceFqdn)&&Pm(t.instanceFqdn)?Nm(e.instanceFqdn)-Nm(t.instanceFqdn):e.instanceFqdn>t.instanceFqdn?1:-1}function Im(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 Lm(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 Rm(e,t,n){let r=Im(e,t),i={};for(let e in r)i[e]=Lm(r[e],n);return i}function zm({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 Bm({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)(zm,{width:s,animated:!1})]})}async function Vm(e){let{data:t}=await N.post(`/Cluster/`,e,{timeout:0});return t}function Hm(){return R({mutationFn:e=>Vm(e)})}async function Um(e){let{id:t,...n}=e,{data:r}=await N.put(`/Cluster/${t}`,n,{timeout:0});return r}function Wm(){return R({mutationFn:e=>Um(e)})}var Gm=`ENTERPRISE`;function Km(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 qm(e,t,n=`-`){let r=t.split(n)[0];return e.findIndex(e=>e.startsWith(r))!==-1}function Jm(e){return e.replace(/[^a-zA-Z0-9]/g,`-`).replace(/([a-z])([A-Z])/g,`$1-$2`).toLowerCase().replace(/-+/g,`-`).replace(/^-+|-+$/g,``)}function Ym(e){return e!==void 0&&e>0}async function Xm(e){await N.put(`/Payment/`,e)}function Zm(){return R({mutationFn:e=>Xm(e)})}function Qm(e){let{mutate:t}=Zm();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 $m=(0,G.createContext)(null);function eh(){return(0,G.useContext)($m)}var th=t(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),nh=t(((e,t)=>{var n=th();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}})),rh=e(t(((e,t)=>{t.exports=nh()()}))(),1);function ih(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 ah(e){if(Array.isArray(e))return e}function oh(e,t,n){return(t=hh(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function sh(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 ch(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
11
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function lh(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 uh(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?lh(Object(n),!0).forEach(function(t){oh(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lh(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function dh(e,t){if(e==null)return{};var n,r,i=fh(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 fh(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 ph(e,t){return ah(e)||sh(e,t)||_h(e,t)||ch()}function mh(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 hh(e){var t=mh(e,`string`);return typeof t==`symbol`?t:t+``}function gh(e){"@babel/helpers - typeof";return gh=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},gh(e)}function _h(e,t){if(e){if(typeof e==`string`)return ih(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)?ih(e,t):void 0}}var vh=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])},yh=function(e){var t=G.useRef(e);return G.useEffect(function(){t.current=e},[e]),t.current},bh=function(e){return e!==null&&gh(e)===`object`},xh=`[object Object]`,Sh=function e(t,n){if(t===n)return!0;if(!bh(t)||!bh(n))return t===n;var r=Array.isArray(t);if(r!==Array.isArray(n))return!1;var i=Object.prototype.toString.call(t)===xh;if(i!==(Object.prototype.toString.call(n)===xh))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])})},Ch=function(e,t,n){return bh(e)?Object.keys(e).reduce(function(r,i){var a=!bh(t)||!Sh(e[i],t[i]);return n.includes(i)?(a&&console.warn(`Unsupported prop change: options.${i} is not a mutable property.`),r):a?uh(uh({},r||{}),{},oh({},i,e[i])):r},null):null},wh=G.createContext(null);wh.displayName=`ElementsContext`;var Th=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};rh.default.any,rh.default.object;var Eh=function(e){return Th(G.useContext(wh),e)},Dh=function(){return Eh(`calls useElements()`).elements};rh.default.func.isRequired;var Oh=G.createContext(null);Oh.displayName=`CheckoutContext`;var kh=G.createContext(null);kh.displayName=`CheckoutSdkContext`;var Ah=function(e){var t=G.useContext(kh),n=G.useContext(wh);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 Th(n,e)},jh=[`mode`],Mh=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},Nh=function(e,t,n){var r=`${Mh(e)}Element`,i=t?function(e){Ah(`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=Ah(`mounts <${r}>`),w=`elements`in C?C.elements:null,T=`checkoutSdk`in C?C.checkoutSdk:null,E=ph(G.useState(null),2),D=E[0],O=E[1],k=G.useRef(null),A=G.useRef(null);vh(D,`blur`,s),vh(D,`focus`,c),vh(D,`escape`,d),vh(D,`click`,f),vh(D,`loaderror`,p),vh(D,`loaderstart`,m),vh(D,`networkschange`,h),vh(D,`confirm`,g),vh(D,`cancel`,_),vh(D,`shippingaddresschange`,v),vh(D,`shippingratechange`,y),vh(D,`savedpaymentmethodremove`,b),vh(D,`savedpaymentmethodupdate`,x),vh(D,`availablepaymentmethodschange`,S),vh(D,`change`,u);var ee;l&&(ee=e===`expressCheckout`?l:function(){l(D)}),vh(D,`ready`,ee),G.useLayoutEffect(function(){if(k.current===null&&A.current!==null&&(w||T)){var t=null;if(T){var n=T,i=T;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=dh(o,jh);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=T.createCurrencySelectorElement();break;case`taxId`:t=n.createTaxIdElement(o);break;case`contactDetails`:t=n.createContactDetailsElement();break;case`linkSignup`:if(`createLinkSignupElement`in T)t=T.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));k.current=t,O(t),t&&t.mount(A.current)}},[w,T,o]);var te=yh(o);return G.useEffect(function(){if(k.current){var e=Ch(o,te,[`paymentRequest`]);e&&`update`in k.current&&k.current.update(e)}},[o,te]),G.useLayoutEffect(function(){return function(){if(k.current&&typeof k.current.destroy==`function`)try{k.current.destroy(),k.current=null}catch{}}},[]),G.createElement(`div`,{id:n,className:i,ref:A})};return i.propTypes={id:rh.default.string,className:rh.default.string,onChange:rh.default.func,onBlur:rh.default.func,onFocus:rh.default.func,onReady:rh.default.func,onEscape:rh.default.func,onClick:rh.default.func,onLoadError:rh.default.func,onLoaderStart:rh.default.func,onNetworksChange:rh.default.func,onConfirm:rh.default.func,onCancel:rh.default.func,onShippingAddressChange:rh.default.func,onShippingRateChange:rh.default.func,onSavedPaymentMethodRemove:rh.default.func,onSavedPaymentMethodUpdate:rh.default.func,onAvailablePaymentMethodsChange:rh.default.func,options:rh.default.object},i.displayName=r,i.__elementType=e,i},Ph=typeof window>`u`,Fh=G.createContext(null);Fh.displayName=`EmbeddedCheckoutProviderContext`;var Ih=function(){return Ah(`calls useStripe()`).stripe};Nh(`auBankAccount`,Ph),Nh(`card`,Ph),Nh(`cardNumber`,Ph),Nh(`cardExpiry`,Ph),Nh(`cardCvc`,Ph),Nh(`currencySelector`,Ph),Nh(`iban`,Ph);var Lh=Nh(`payment`,Ph);Nh(`expressCheckout`,Ph),Nh(`paymentRequestButton`,Ph),Nh(`linkAuthentication`,Ph),Nh(`linkSignup`,Ph),Nh(`contactDetails`,Ph);var Rh=Nh(`address`,Ph);Nh(`shippingAddress`,Ph),Nh(`paymentMethodMessaging`,Ph),Nh(`taxId`,Ph),Nh(`issuingCardNumberDisplay`,Ph),Nh(`issuingCardCvcDisplay`,Ph),Nh(`issuingCardExpiryDisplay`,Ph),Nh(`issuingCardPinDisplay`,Ph),Nh(`issuingCardCopyButton`,Ph),Nh(`terms`,Ph);function zh({hasExistingBilling:e,onPaymentAdded:t,onSaveStateForBillingRedirect:n}){let{organizationId:r}=B({strict:!1}),i=Ih(),a=eh(),o=Dh(),[s,c]=(0,G.useState)(!1),l=Qm(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)(Lh,{}),(0,K.jsx)(Rh,{options:{mode:`billing`}}),(0,K.jsxs)(`div`,{className:`mt-4 flex gap-8 items-center`,children:[(0,K.jsxs)(H,{disabled:!i||!o||s,variant:`submit`,children:[(0,K.jsx)(Ka,{}),` 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)(H,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Cancel`})]})]})]})}var Bh=`dahlia`,Vh=`https://js.stripe.com`,Hh=`${Vh}/${Bh}/stripe.js`,Uh=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/,Wh=/^https:\/\/js\.stripe\.com\/(v3|[a-z]+)\/stripe\.js(\?.*)?$/,Gh=`loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used`,Kh=function(e){return Uh.test(e)||Wh.test(e)},qh=function(){for(var e=document.querySelectorAll(`script[src^="${Vh}"]`),t=0;t<e.length;t++){var n=e[t];if(Kh(n.src))return n}return null},Jh=function(e){var t=e&&!e.advancedFraudSignals?`?advancedFraudSignals=false`:``,n=document.createElement(`script`);n.src=`${Hh}${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},Yh=null,Xh=null,Zh=null,Qh=function(e){return function(t){e(Error(`Failed to load Stripe.js`,{cause:t}))}},$h=function(e,t){return function(){window.Stripe?e(window.Stripe):t(Error(`Stripe.js not available`))}},eg=function(e){return Yh===null?(Yh=new Promise(function(t,n){if(typeof window>`u`||typeof document>`u`){t(null);return}if(window.Stripe&&e&&console.warn(Gh),window.Stripe){t(window.Stripe);return}try{var r=qh();if(r&&e)console.warn(Gh);else if(!r)r=Jh(e);else if(r&&Zh!==null&&Xh!==null){var i;r.removeEventListener(`load`,Zh),r.removeEventListener(`error`,Xh),(i=r.parentNode)==null||i.removeChild(r),r=Jh(e)}Zh=$h(t,n),Xh=Qh(n),r.addEventListener(`load`,Zh),r.addEventListener(`error`,Xh)}catch(e){n(e);return}}),Yh.catch(function(e){return Yh=null,Promise.reject(e)})):Yh},tg,ng=function(){return tg||(tg=eg(null).catch(function(e){return tg=null,Promise.reject(e)}),tg)};Promise.resolve().then(function(){return ng()}).catch(function(e){console.warn(e)});async function rg(e){let{data:t}=await N.post(`/StripeAccount/`,e);return t}function ig(){return R({mutationFn:e=>rg(e)})}async function ag(e){let{data:t}=await N.post(`/Payment/`,{organizationId:e.organizationId});return t}function og(){return R({mutationFn:e=>ag(e)})}function sg(e){let{enabled:t,existingStripeId:n,organizationId:r}=e,{mutate:i}=ig(),{mutate:a}=og(),[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 cg({children:e}){let{organizationId:t}=B({strict:!1}),{data:n}=F(ws(t)),r=sg({organizationId:t,enabled:!!n,existingStripeId:n?.stripeId}),i=Ds();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 lg({onPaymentAdded:e,onSaveStateForBillingRedirect:t}){let{organizationId:n}=B({strict:!1}),{data:r}=F(ws(n)),i=r?.billing,a=i?.paymentMethod;return(0,K.jsxs)(cg,{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)(zh,{hasExistingBilling:!!i,onSaveStateForBillingRedirect:t,onPaymentAdded:e})]})}var ug=function(e){return e.PASS=`pass`,e.FAIL=`fail`,e.PENDING=`pending`,e.ERROR=`error`,e}({});function dg(e){switch(e){case ug.PASS:return`success`;case ug.FAIL:case ug.ERROR:return`destructive`;case ug.PENDING:default:return`default`}}function fg(e){switch(e){case ug.PASS:return`READY`;case ug.FAIL:case ug.ERROR:case ug.PENDING:default:return e.toUpperCase()}}function pg(e,t){return`${String(e).padStart(2,`0`)}/${String(t%100).padStart(2,`0`)}`}function mg(e){let{onSaveStateForBillingRedirect:t,onReplacingPaymentMethod:n}=e??{},{organizationId:r}=B({strict:!1}),{update:i}=bp(r),{data:a,refetch:o}=F(ws(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)(au,{}),`, 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 `,pg(s.expMonth,s.expYear),`)`]}):null,s.status?(0,K.jsxs)(K.Fragment,{children:[`—`,` `,(0,K.jsx)(Fs,{variant:dg(s.status),children:fg(s.status)})]}):null]}),i&&(0,K.jsx)(`div`,{className:`mt-2 mb-6`,children:(0,K.jsx)(H,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Replace Payment Method`})})]}):i?(0,K.jsx)(lg,{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 hg({clusterId:e,isPending:t,onGoBackToDetails:n,onSaveStateForBillingRedirect:r,onSubmit:i,organizationId:a,selectedPlan:o}){let{data:s}=F(ws(a)),c=s?.billing,l=s?.type===Gm,u=l||c?.paymentMethod?.status===ug.PASS,[d,f]=(0,G.useState)(!1),p=Ym(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)(H,{type:`button`,variant:`defaultOutline`,disabled:t,onClick:n,children:[(0,K.jsx)(er,{}),` Back to Details`]}),(0,K.jsxs)(H,{disabled:t||!u||d,type:`submit`,variant:`submit`,onClick:i,children:[e?`Edit Cluster`:`Create New Cluster`,` `,(0,K.jsx)(nr,{})]})]})});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)(au,{overEmail:!0}),`, we are here to help.`]})]}),m]});let h=p&&`, or ${_(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`,h,`, 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)(au,{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)(mg,{onSaveStateForBillingRedirect:r,onReplacingPaymentMethod:f}),m]})}function gg({hostname:e,testId:t,labelledBy:n}){return(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3 rounded-full border border-border/60 bg-background/70 px-4 py-3 shadow-inner`,children:[(0,K.jsx)(Qi,{className:`size-4 shrink-0 text-muted-foreground`,"aria-hidden":`true`}),(0,K.jsx)(`p`,{className:`min-w-0 overflow-x-auto whitespace-nowrap font-mono text-xs leading-5`,"data-testid":t,role:`region`,"aria-labelledby":n,"aria-label":n?void 0:`Address preview`,tabIndex:0,children:e})]})}var _g=/(^$|^(?: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,vg=65535,yg=M().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.`),bg=S({clusterName:M().nonempty(`Please enter a cluster name.`).max(255,`Cluster name cannot be longer than 255 characters long.`),abbreviatedName:C([O(``),E(),yg]).optional(),fqdn:M().regex(_g,`Please enter a valid host name without the port or any path.`).optional(),version:M().optional(),deploymentDescription:M().nonempty(`Please select a deployment tier.`),performanceDescription:M().nonempty(`Please select a performance tier.`),regionPlans:D(S({regionName:M().nonempty(`Please select a region.`),latencyDescription:M().nonempty(`Please select a latency tier.`)})).max(50,{error:`A maximum of 50 regions can be selected for each cluster. `}),instances:D(S({secure:ee([`true`,`false`]),fqdn:M().nonempty(`Please enter the host name of your instance.`).regex(_g,`Please enter a valid host name without the port or any path.`),port:T().min(0,`Positive thinking only, please.`).max(vg,`That port number is too high.`).optional()})).max(100,{error:`A maximum of 100 instances can be added to each cluster.`}),skipToBilling:A().optional(),skipGtmWait:A().optional(),sourceClusterId:M().optional()});function xg({calculatedNames:e,disabled:t,form:n}){let r=(0,G.useId)();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:yg.maxLength,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:e.suggestedAbbreviatedName,disabled:t})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`col-span-3 min-w-0 space-y-2`,children:[(0,K.jsx)(`p`,{id:r,className:`text-sm font-medium`,children:`Full Host Name`}),(0,K.jsx)(gg,{hostname:e.fullHostName,testId:`cluster-hostname-preview`,labelledBy:r})]})]})}function Sg({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 Cg({...e}){return(0,K.jsx)(vn,{"data-slot":`select`,...e})}function wg({...e}){return(0,K.jsx)(ft,{"data-slot":`select-group`,...e})}function Tg({...e}){return(0,K.jsx)(vt,{"data-slot":`select-value`,...e})}function Eg({className:e,children:t,...n}){return(0,K.jsxs)(mt,{"data-slot":`select-trigger`,className:P(`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)(ut,{asChild:!0,children:(0,K.jsx)(On,{className:`size-4 text-foreground dark:text-white`})})]})}function Dg({className:e,children:t,position:n=`popper`,...r}){return(0,K.jsx)(wt,{children:(0,K.jsxs)(It,{"data-slot":`select-content`,className:P(`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)(Ag,{}),(0,K.jsx)(St,{className:P(`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)(jg,{})]})})}function Og({className:e,...t}){return(0,K.jsx)(tn,{"data-slot":`select-label`,className:P(`px-2 py-1.5 text-sm font-medium`,e),...t})}function kg({className:e,children:t,...n}){return(0,K.jsxs)(Ot,{"data-slot":`select-item`,className:P(`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)(at,{children:t}),(0,K.jsx)(`span`,{className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,K.jsx)(rn,{children:(0,K.jsx)(kn,{className:`size-4`})})})]})}function Ag({className:e,...t}){return(0,K.jsx)(At,{"data-slot":`select-scroll-up-button`,className:P(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,K.jsx)(An,{className:`size-4`})})}function jg({className:e,...t}){return(0,K.jsx)(Et,{"data-slot":`select-scroll-down-button`,className:P(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,K.jsx)(On,{className:`size-4`})})}var Mg={Colocated:`Shared infrastructure for optimized value`,Dedicated:`Dedicated infrastructure for consistent performance`,"Self-Hosted":`Your own infrastructure`};function Ng({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)(Sg,{}),children:(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...r,disabled:t,onValueChange:e=>{r.onChange(e),n.trigger()},children:[(0,K.jsx)(Eg,{className:`w-full h-auto`,children:(0,K.jsx)(Tg,{placeholder:`Choose Tier`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:e.map(e=>(0,K.jsxs)(kg,{value:e,children:[(0,K.jsx)(`dt`,{className:`text-left font-bold text-sm/6`,children:e}),Mg[e]&&(0,K.jsx)(`dd`,{className:`font-light`,children:Mg[e]})]},e))})})]})})}),(0,K.jsx)(Q,{})]})})}function Pg({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 Fg({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:bg.shape.clusterName.maxLength,autoCapitalize:`words`,disabled:t,...n})}),(0,K.jsx)(Q,{})]})})}function Ig({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)(Sg,{}),children:(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...r,onValueChange:e=>{r.onChange(e),t.trigger()},disabled:!e?.length,children:[(0,K.jsx)(Eg,{className:`w-full h-auto`,children:(0,K.jsx)(Tg,{placeholder:`Choose Tier`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:e.map(e=>(0,K.jsxs)(kg,{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)(Fs,{children:`Premium`})]}),e.description&&(0,K.jsx)(`dd`,{className:`text-left font-light`,children:e.description})]},e.name))})})]})})}),(0,K.jsx)(Q,{})]})})}function Lg({className:e,...t}){let{formDescriptionId:n}=kl();return(0,K.jsx)(`p`,{"data-slot":`form-description`,id:n,className:P(`text-muted-foreground text-sm`,e),...t})}function Rg({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)(Lg,{children:`Apply changes immediately without waiting for each instance to be taken out of the load balancer (faster, but potentially less safe).`})]})})}function zg({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)(Sg,{}),children:(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...i,disabled:t,onValueChange:e=>{i.onChange(e),n.trigger()},children:[(0,K.jsx)(Eg,{className:`w-full h-auto`,children:(0,K.jsx)(Tg,{placeholder:`Choose Version`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:r?.value.map(e=>(0,K.jsxs)(kg,{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 Bg=new RegExp(/^\d+/);function Vg(e,t){let n=parseInt(e.match(Bg)?.[0]||`0`,10),r=parseInt(t.match(Bg)?.[0]||`0`,10);return n===r?0:n>r?1:-1}var Hg=[`B`,`KB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],Ug=[`secs`,`mins`,`hrs`],Wg={bytes:1e3,secs:60};function Gg(e,t,n){let r,i;switch(t){case`bytes`:r=Hg,i=Wg.bytes;break;case`secs`:r=Ug,i=Wg.secs;break;default:return e}let a=r.indexOf(n);return a===-1?e:e/i**a}function Kg(e,t){let n,r;switch(e){case`bytes`:n=Hg,r=Wg.bytes;break;case`secs`:n=Ug,r=Wg.secs;break;default:return e}let i=0;for(;t>=r&&i<n.length-1;)t/=r,i++;return n[i]}function qg(e,t=1){let n=e*t,r=Kg(`bytes`,n),i=Gg(n,`bytes`,r);return`${new Intl.NumberFormat().format(Math.round(i))} ${r}`}function Jg(e){return new Intl.NumberFormat().format(e)}var Yg=[`K`,`M`,`B`,`T`,`Qa`,`Qi`,`Sx`,`Sp`,`Oc`,`No`,`Dc`];function Xg(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<Yg.length-1);return`${Jg(Math.round(n))} ${Yg[r]}`}function Zg(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 Qg(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 $g({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=Ym(c?.expirationMonths)&&c.expirationMonths<1e3&&c.expirationMonths,f=t?.purchasedBlockMultiplier??1,p=(0,G.useMemo)(()=>c?[Ym(c.totalReadCount)&&{label:`Total Reads`,value:Xg(c.totalReadCount*f)},Ym(c.totalReadsBytes)&&{label:`Total Read Transfer`,value:`${qg(c.totalReadsBytes*f)}`},Ym(c.readsPerMinuteCount)&&{label:`Read Rate`,value:`${Xg(c.readsPerMinuteCount*60*f)}/hr`},Ym(c.readsPerMinuteBytes)&&{label:`Read Bandwidth`,value:`${qg(c.readsPerMinuteBytes*60*f)}/hr`},Ym(c.totalWriteCount)&&{label:`Total Writes`,value:Xg(c.totalWriteCount)},Ym(c.totalWritesBytes)&&{label:`Total Write Transfer`,value:`${qg(c.totalWritesBytes)}`},Ym(c.writesPerMinuteCount)&&{label:`Write Rate`,value:`${Xg(c.writesPerMinuteCount*60)}/hr`},Ym(c.writesPerMinuteBytes)&&{label:`Write Bandwidth`,value:`${qg(c.writesPerMinuteBytes*60)}/hr`},Ym(c.totalRealTimeMessageDeliveries)&&{label:`Total Real-Time Messages`,value:`${Xg(c.totalRealTimeMessageDeliveries*f)} messages`},Ym(c.totalRealTimeMessageDeliveryBytes)&&{label:`Total Real-Time Message Transfer`,value:`${qg(c.totalRealTimeMessageDeliveryBytes*f)}`},Ym(c.realTimeMessageDeliveriesPerMinute)&&{label:`Real-Time Message Rate`,value:`${Xg(c.realTimeMessageDeliveriesPerMinute*60*f)}/hr`},Ym(c.realTimeMessageDeliveryBytesPerMinute)&&{label:`Real-Time Message Bandwidth`,value:`${qg(c.realTimeMessageDeliveryBytesPerMinute*60*f)}/hr`},Ym(c.tlsHandshakes)&&{label:`TLS Handshakes`,value:`${Xg(c.tlsHandshakes*60*f)}`},Ym(c.applicationComputeHours)&&{label:`Application Compute Hours`,value:`${Xg(c.applicationComputeHours*f)}`},!!l&&Ym(l.storageGb)&&{label:`Storage`,value:`${qg(l.storageGb*1e9)}`},!!l&&Ym(l.cpuCores)&&{label:`Maximum CPU Cores`,value:`${Xg(l.cpuCores)}`},!!l&&Ym(l.memoryMb)&&{label:`Memory`,value:`${l.memoryMb/1024} GB`},!!u&&{label:`Cloud Instance Type`,value:u},!!d&&{label:`Expiration`,value:_(d,`month`,`months`)},!!t?.id&&{label:`Region ID`,value:t.id},!!e?.id&&{label:`Plan ID`,value:e.id}].filter($c):[],[d,t,e,f]);if(!c)return``;if(!Ym(c.totalReadCount))return`This plan has no usage limits.`;let m=r?`for the contracted rate`:`for the price listed above`,h=d?` in ${_(d,`month`,`months`)} or`:``,g=Ym(c.readsPerMinuteCount)?c.readsPerMinuteCount*f:0,v=Ym(c.writesPerMinuteCount)?c.writesPerMinuteCount:0,y=c.totalReadCount*f,b=Ym(c.totalWriteCount)?c.totalWriteCount:0,x=[g>0&&{icon:Si,label:`Read Rate`,value:`${Xg(g)}/min`,fill:Qg(g,n.readRate)},y>0&&{icon:or,label:`Total Reads`,value:Xg(y),fill:Qg(y,n.totalReads)},v>0&&{icon:Si,label:`Write Rate`,value:`${Xg(v)}/min`,fill:Qg(v,n.writeRate)},b>0&&{icon:Qn,label:`Total Writes`,value:Xg(b),fill:Qg(b,n.totalWrites)},!!d&&{icon:br,label:`License Term`,value:_(d,`month`,`months`)}].filter($c);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)(H,{type:`button`,variant:`link`,className:`text-foreground`,onClick:s,children:[`Learn More `,a?(0,K.jsx)(En,{}):(0,K.jsx)(nr,{})]})]}),(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)(e_,{icon:e.icon,label:e.label,value:e.value,fill:e.fill},e.label))}),(0,K.jsx)(J,{children:(0,K.jsxs)(`dl`,{className:P(`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`,h,` `,`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:P(`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 e_({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 t_({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(Vg).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:`min-w-0 basis-full sm:flex-1`,children:[(0,K.jsxs)(Z,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(fa,{className:`size-4 shrink-0`}),`Region `,t.fields.length>1?r+1:``]}),(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Region`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:u.map(e=>(0,K.jsx)(kg,{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)(Fs,{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:`min-w-0 basis-full sm:flex-1`,children:[(0,K.jsxs)(Z,{children:[`Estimated `,d?`P95`:`P90`,` Latency, Distribution`]}),(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,disabled:!m?.length,children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Latency Tier`})}),(0,K.jsx)(Dg,{children:(0,K.jsx)(wg,{children:m.map(e=>(0,K.jsx)(kg,{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)(Fs,{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)(H,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:v,children:[(0,K.jsx)(Eo,{}),` `,(0,K.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})}),(0,K.jsx)($g,{selectedPlan:s,selectedRegion:i[f]?.[p],usageScale:o,isEnterprise:c,cloudProvider:l})]})}function n_({form:e,regionLocations:t,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,usageScale:i,selectedPlan:a,totalPrice:o,isEnterprise:s,cloudProvider:c}){let l=e.watch(`regionPlans`),u=en({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)(t_,{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)(H,{type:`button`,variant:`positiveOutline`,onClick:f,children:[(0,K.jsx)(Ia,{}),`Add Additional Region Usage`]})})]}):(0,K.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,K.jsx)(Ho,{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)(au,{}),`.`]})}})})}function r_({control:e,fieldArray:t,form:n,index:r}){let i=(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)(Cg,{...e,onValueChange:t=>{e.onChange(t),n.trigger()},children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`https://`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(kg,{value:`true`,children:`https://`}),(0,K.jsx)(kg,{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:vg,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:String(g),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)(H,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:i,children:[(0,K.jsx)(Eo,{}),` `,(0,K.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})})]})}function i_({form:e}){let t=en({control:e.control,name:`instances`}),n=(0,G.useCallback)(()=>{t.append({secure:`true`,fqdn:``,port:g})},[t]);return(0,K.jsxs)(K.Fragment,{children:[t.fields.map((n,r)=>(0,K.jsx)(r_,{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)(H,{type:`button`,variant:`positiveOutline`,onClick:n,children:[(0,K.jsx)(Ia,{}),`Add Instance`]})})]})}function a_(e,t){return!e.allowedRegionIds?.length||e.allowedRegionIds.includes(t)}function o_(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=>a_(t,e.id)),i=o.some(t=>a_(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 s_({priceSummary:e,calculatedNames:t,clusterId:n,deploymentToPerformanceToPlan:r,form:i,harperVersions:a,isEnterprise:o,cloudProvider:s,isPending:c,mode:l,partialUpgrade:u,regionLocations:d,regionNameToLatencyToRegion:f,selectedDeployment:p,selectedPerformance:m,selectedPlan:h,totalPrice:g}){let{isDirty:_,isValid:v}=ln(),y=(0,G.useMemo)(()=>{let e=r[p]||{},t=Object.values(e).map(e=>e.planLevel??0),n=t.length?Math.min(...t):0;return Object.keys(e).map(t=>{let r=(e[t].planLevel??0)>n,i=t.slice(0,-1).split(`(`);if(i.length>1)return{performanceTier:t,name:i[0],description:i[1],isPremium:r};let a=t.split(` for `);return a.length>1?{performanceTier:t,name:a[0],description:`For `+a[1],isPremium:r}:{performanceTier:t,name:t,description:``,isPremium:r}})},[r,p]),b=(0,G.useMemo)(()=>Object.keys(r).sort(),[r]),x=(0,G.useMemo)(()=>o_(Object.values(r[p]||{}),f),[r,f,p]),S=(0,G.useMemo)(()=>Zg(Object.values(r).flatMap(e=>Object.values(e)),f),[r,f]);(0,G.useEffect)(function(){y?.length&&!y.find(e=>e.performanceTier===m)&&(i.setValue(`performanceDescription`,y[0].performanceTier),i.trigger())},[p,m,y,i]);let C=p===`Self-Hosted`,w=l===`version`&&!!u&&!u.ambiguous,T=(0,K.jsx)(Gd,{className:`mt-6 mb-8 border-t border-border/60 pt-6`,children:(0,K.jsxs)(H,{className:`w-full sm:w-auto`,type:`submit`,variant:`submit`,disabled:c||n&&!_&&!w||!v,children:[l!==`version`&&g>0?`Confirm Payment Details`:n?`Edit Cluster`:`Create New Cluster`,(0,K.jsx)(nr,{})]})});return l===`version`?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Vn,{className:`min-w-0 gap-0 overflow-hidden py-0`,children:[(0,K.jsxs)(Hn,{className:`border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/15 py-5 dark:from-primary/15 dark:to-primary/5`,children:[(0,K.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,K.jsx)(Qa,{className:`size-4 text-primary`,"aria-hidden":`true`}),`Cluster details`]}),(0,K.jsx)(Wn,{children:`Choose the Harper version for your cluster.`})]}),(0,K.jsxs)(Gn,{className:`grid min-w-0 grid-cols-3 items-start gap-6 py-6 text-foreground md:grid-cols-6`,children:[(0,K.jsx)(Fg,{className:a?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!0,form:i}),(0,K.jsx)(zg,{className:`col-span-3`,form:i,harperVersions:a}),(0,K.jsx)(Rg,{className:`col-span-3 md:col-span-6`,form:i}),u&&(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:[u.behindCount,` of `,u.total,` instances`,` `,u.behindCount===1?`is`:`are`,` `,u.ambiguous?`on a different version from ${u.latest}, and a version pinned to your organization is among them. Choose the version the whole cluster should run.`:`still on an older version. Re-run the upgrade to bring ${u.behindCount===1?`it`:`them`} up to ${u.latest}.`]})]})]}),T]}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:e?`grid items-start gap-6 xl:grid-cols-[minmax(0,1fr)_18rem]`:``,children:[(0,K.jsxs)(`div`,{className:`min-w-0 space-y-6`,children:[(0,K.jsxs)(Vn,{className:`min-w-0 gap-0 overflow-hidden py-0`,children:[(0,K.jsxs)(Hn,{className:`border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/15 py-5 dark:from-primary/15 dark:to-primary/5`,children:[(0,K.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,K.jsx)(Qa,{className:`size-4 text-primary`,"aria-hidden":`true`}),`Cluster details`]}),(0,K.jsx)(Wn,{children:`Your cluster’s identity, version, and address.`})]}),(0,K.jsxs)(Gn,{className:`grid min-w-0 grid-cols-3 items-start gap-6 py-6 text-foreground md:grid-cols-6`,children:[(0,K.jsx)(Fg,{className:a?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!!n,form:i}),(0,K.jsx)(zg,{className:`col-span-3`,disabled:!!n,form:i,harperVersions:a}),C?(0,K.jsx)(Pg,{form:i,disabled:!!n}):(0,K.jsx)(xg,{form:i,calculatedNames:t,disabled:!!n})]})]}),(0,K.jsxs)(Vn,{className:`min-w-0 gap-0 overflow-hidden py-0`,children:[(0,K.jsxs)(Hn,{className:`border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/15 py-5 dark:from-primary/15 dark:to-primary/5`,children:[(0,K.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,K.jsx)(Hi,{className:`size-4 text-primary`,"aria-hidden":`true`}),`Deployment & capacity`]}),(0,K.jsx)(Wn,{children:`Choose your infrastructure and the capacity your workload needs.`})]}),(0,K.jsxs)(Gn,{className:`grid min-w-0 grid-cols-3 items-start gap-6 py-6 text-foreground md:grid-cols-6`,children:[(0,K.jsx)(Ng,{form:i,availableDeploymentTypes:b}),(0,K.jsx)(Ig,{availablePerformanceDescriptions:y,form:i,selectedDeployment:p}),C?(0,K.jsx)(i_,{form:i}):(0,K.jsx)(n_,{form:i,regionLocations:d,regionNameToLatencyToRegion:f,premiumOnlyRegions:x,usageScale:S,selectedPlan:h,totalPrice:g,isEnterprise:o,cloudProvider:s}),n&&!C&&(0,K.jsx)(Rg,{className:`col-span-3 md:col-span-6`,form:i})]})]})]}),e]}),T]})}function c_(e){let{fqdn:t}=e,{secure:n,port:r}=e;return r||=g,r===443&&n===`false`&&(n=`true`),r===80&&n===`true`&&(n=`false`),`${n===`true`?`https`:`http`}://${t}${r===443||r===80?``:`:`+r}`.toLowerCase()}function l_(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 u_(e,t,n){if(t&&n){let r=e.getValues();if(!r.deploymentDescription||!r.performanceDescription||!r.regionPlans.length){let i=l_(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 d_({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)(f_,{type:e.type,value:e.value},t))})}function f_({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 p_({alreadyUsingFree:e,clusterId:t,defaultValues:n,deploymentToPerformanceToPlan:r,harperVersions:i,mode:a,organization:o,organizationId:s,partialUpgrade:c,planTypes:l,regionLocationsColocated:u,regionLocationsDedicated:d,setSavedClusterState:f,startOffOnBilling:p}){let m=L(),h=we(),v=o?.type===Gm,y=o?.channel===`Akamai`?`linode`:void 0,b=Me(),{mutate:x,isPending:S}=Hm(),{mutate:C,isPending:w}=Wm(),[T,E]=(0,G.useState)(p),D=(0,G.useMemo)(()=>Rm(u?.sort(Mm(`latencyDescription`))||[],`region`,`latencyDescription`),[u]),O=(0,G.useMemo)(()=>Rm(d?.sort(Mm(`latencyDescription`))||[],`region`,`latencyDescription`),[d]),k=(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=c_(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`?O:D;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!`}):qm(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,D,O,r]),A=Gt({mode:`onChange`,resolver:it(bg.superRefine(k)),defaultValues:n}),[ee,te]=(0,G.useState)(!0);(0,G.useEffect)(()=>{ee&&n&&(f(null),te(!1))},[n,ee,f]);let j=A.watch(`clusterName`),M=A.watch(`abbreviatedName`),N=A.watch(`deploymentDescription`),P=A.watch(`performanceDescription`),ne=A.watch(`regionPlans`),re=A.watch(`instances`),ie=N===`Dedicated`?O:D,ae=N===`Dedicated`?d:u;(0,G.useEffect)(function(){let e=A.getValues();N&&(N===`Self-Hosted`?(e.abbreviatedName&&A.setValue(`abbreviatedName`,``),e.regionPlans.length&&A.setValue(`regionPlans`,[]),e.instances.length||A.setValue(`instances`,[{secure:`true`,fqdn:``,port:g}])):(e.fqdn&&A.setValue(`fqdn`,``),e.instances.length&&A.setValue(`instances`,[]),e.regionPlans.length||u_(A,l,ae)))},[A,l,ae,N]);let oe=(0,G.useMemo)(()=>{let e=Km(Jm(j),yg.maxLength);return{suggestedAbbreviatedName:e,fullHostName:`${M||e}.${o.subdomain||`your-org`}.harperfabric.com`}},[j,M,o]),se=(0,G.useMemo)(()=>r?.[N]?.[P],[r,N,P]);(0,G.useEffect)(function(){let e=se?.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&&(A.setValue(`regionPlans.0.regionName`,n.region),A.setValue(`regionPlans.0.latencyDescription`,n.latencyDescription),A.trigger())}}},[se,ne,A,ie,ae]),(0,G.useEffect)(function(){if(N!==`Self-Hosted`&&Object.keys(ie).length&&ne.length)for(let e=0;e<ne.length;e++){let t=ne[e];ie[t.regionName]||A.setValue(`regionPlans.${e}.regionName`,``)}},[A,ie,N,ne]);let ce=se?.priceUsd?N===`Self-Hosted`?re.length*se.priceUsd:ne.reduce((e,t)=>{let n=ie?.[t.regionName]?.[t.latencyDescription];return e+(n?se.priceUsd*n.instanceCount/2:0)},0):0,le=se?.planLimits?.expirationMonths,ue=Ym(le)&&le<1e3?le:void 0,de=ue?ce/ue:ce,fe=(0,G.useCallback)(({creating:e,deploymentDescription:t})=>U.message(e?`Creating Cluster`:`Updating Cluster`,{description:(0,K.jsx)(Bm,{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}),[]),pe=(0,G.useCallback)(async({clusterId:e,sourceClusterId:t,creating:n,toastId:r,isSelfManaged:i,skipGtmWait:a})=>{if(t){let e=(await Cs(s)).clusters?.find(e=>e.id===t);Bl(e?.status)&&await qp(t)}b.invalidateQueries({queryKey:[s],refetchType:`active`}),n||Go(b,e,{refetchType:`active`}),h.invalidate(),m(i?{to:`/${s}/${e}/instances`}:n?{to:`/${s}/${e}/starting-up`}:{to:`/${s}/${e}/scaling`,search:a?{immediate:!0}:void 0}),A.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})},[b,h,m,s,A]),me=(0,G.useCallback)(async()=>{let e=A.getValues(),n=[],i=r[e.deploymentDescription][e.performanceDescription],o=e.deploymentDescription===`Self-Hosted`;if(o)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})}f(null);let c=fe({creating:!t,deploymentDescription:e.deploymentDescription}),l=()=>U.dismiss(c);t?C(a===`version`?{id:t,version:e.version,skipGtmWait:e.skipGtmWait}:{id:t,regionPlans:n,skipGtmWait:e.skipGtmWait},{onSuccess:t=>pe({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:o,creating:!1,toastId:c,skipGtmWait:e.skipGtmWait}),onError:l}):x({abbreviatedName:o?void 0:e.abbreviatedName||oe.suggestedAbbreviatedName,autoRenew:!0,fqdn:o&&e.fqdn||void 0,name:e.clusterName,version:e.version,organizationId:s,regionPlans:n},{onSuccess:t=>pe({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:o,creating:!0,toastId:c}),onError:l})},[oe.suggestedAbbreviatedName,t,r,A,pe,fe,s,ie,f,C,x]),he=(0,G.useCallback)(()=>{if(a!==`version`&&ce>0){E(!0);return}return me()},[a,me,ce]),ge=(0,G.useCallback)(e=>{f(e?{clusterId:t,...A.getValues(),skipToBilling:!0}:null)},[t,A,f]),_e=(0,G.useCallback)(()=>{E(!1)},[]),F=!v&&a!==`version`?(0,K.jsxs)(`aside`,{"aria-label":`Price summary`,className:`min-w-0 rounded-2xl border border-primary/15 bg-primary/5 p-6 xl:order-2`,children:[(0,K.jsx)(`p`,{className:`mb-4 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:`Your plan`}),(0,K.jsxs)(`dl`,{children:[(0,K.jsx)(`dt`,{className:`text-sm text-muted-foreground`,children:ue?`Monthly Price`:`Total Price`}),(0,K.jsx)(`dd`,{className:`mt-2 font-bold`,children:ce>0?(0,K.jsxs)(`span`,{className:`inline-flex items-baseline`,children:[(0,K.jsx)(d_,{price:de}),!!ue&&(0,K.jsxs)(`span`,{className:`text-base font-normal text-muted-foreground`,children:[`/mo`,ue>1&&(0,K.jsx)(`sup`,{children:`*`})]})]}):(0,K.jsx)(`span`,{className:`text-4xl text-green`,children:`Free`})})]}),!!ue&&ue>1&&ce>0&&(0,K.jsxs)(`p`,{className:`mt-4 text-sm leading-relaxed text-muted-foreground`,children:[`* Billed as `,new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(ce),` `,`every`,` `,_(ue,`month`,`months`),`, or sooner if you reach a usage limit — then a new license is issued.`]}),(0,K.jsx)(`div`,{className:`mt-5 border-t border-primary/15 pt-5`,children:(0,K.jsx)(Fs,{variant:`warning`,children:`Beta pricing subject to change.`})})]}):null;return(0,K.jsxs)(`div`,{className:`space-y-7 py-5`,children:[(0,K.jsxs)(`header`,{className:`flex items-start gap-4`,children:[(0,K.jsx)(`div`,{className:`flex size-14 shrink-0 items-center justify-center rounded-2xl border border-primary/20 bg-primary/10 text-primary`,children:(0,K.jsx)(Qa,{className:`size-6`,"aria-hidden":`true`})}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`p`,{className:`mb-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:a===`version`?`Cluster upgrade`:t?`Manage your cluster`:`Your infrastructure`}),(0,K.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight sm:text-3xl`,children:T?`Cluster Billing`:`Cluster Configuration`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:T?`Review your billing details before applying these changes.`:a===`version`?`Keep your cluster up to date with the right Harper version.`:`Configure your Harper cluster and define deployment plans.`})]})]}),(0,K.jsx)(El,{...A,children:T?(0,K.jsx)(K.Fragment,{children:(0,K.jsxs)(`div`,{className:F?`grid items-start gap-6 xl:grid-cols-[minmax(0,1fr)_18rem]`:``,children:[F,(0,K.jsxs)(Vn,{className:`min-w-0 xl:order-1`,children:[(0,K.jsx)(Hn,{children:(0,K.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,K.jsx)(ei,{className:`size-4 text-primary`,"aria-hidden":`true`}),`Payment review`]})}),(0,K.jsx)(Gn,{children:(0,K.jsx)(hg,{clusterId:t,isPending:S||w,onGoBackToDetails:_e,onSaveStateForBillingRedirect:ge,onSubmit:me,organizationId:s,selectedPlan:se})})]})]})}):(0,K.jsx)(K.Fragment,{children:(0,K.jsx)(`form`,{id:`cluster-upsert-form`,name:`cluster-upsert-form`,onSubmit:A.handleSubmit(he),children:(0,K.jsx)(s_,{priceSummary:F,calculatedNames:oe,clusterId:t,deploymentToPerformanceToPlan:r,form:A,isPending:S||w,harperVersions:i,mode:a,partialUpgrade:c,regionLocations:ae,regionNameToLatencyToRegion:ie,selectedDeployment:N,selectedPerformance:P,selectedPlan:se,totalPrice:ce,isEnterprise:v,cloudProvider:y})})})})]})}function m_(e){return e?.clusterName!==void 0}function h_(e,t){let n=im(t),r=[...n].sort(sf).pop(),i=new Set(n),a=e.filter(e=>e.scoped?e.version!==r:!i.has(e.version)&&(!r||of(r,e.version)));return r?[{name:`current`,version:r},...a]:a}function g_({isEdit:e,className:t,children:n}){return e?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(wm,{children:(0,K.jsx)(`div`,{className:t,children:n})})]}):(0,K.jsx)(pm,{className:t,children:n})}function __(){let{organizationId:e,clusterId:t,mode:n}=B({strict:!1}),{create:r,update:i}=wp(e),{organization:a,cluster:o}=Oe({strict:!1}),[s,c]=Es(Pn.SavedClusterState,null),{data:l}=F(Em(e)),{data:u}=F(fm({availableHosts:!0,organizationId:e})),{data:d}=F(fm({organizationId:e})),{data:f}=F(jm(e)),p=(0,G.useMemo)(()=>o?.instances&&f?{...f,value:h_(f.value??[],o.instances)}:f,[f,o]),m=(0,G.useMemo)(()=>am(o?.instances??[],(f?.value??[]).filter(e=>e.scoped).map(e=>e.version)),[o,f]),h=(0,G.useMemo)(()=>{for(let e of a?.clusters??[])if(e.id!==o?.id&&l&&!Vl(e.status)&&!Bl(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)(()=>Rm(l?.sort(Mm(`priceUsd`))||[],`deploymentDescription`,`performanceDescription`),[l]),_=(0,G.useMemo)(()=>{if(!l||!p||!u||!d||t&&!o)return null;let e=o;if(s){if(m_(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 r=l?.find(e=>e.id===o?.plans?.[0].planId),i=[],a=[],c=r?.deploymentDescription===`Dedicated`?d:u,f=l_(l,c,h),g=!1;if(e){if(e.plans){for(let t of e.plans)if(t.regionId){let e=c.find(e=>e.id===t.regionId);e&&i.push({regionName:e.region,latencyDescription:e.latencyDescription})}}if(!i.length&&e.instances){let t=e.instances.filter(e=>e.status&&!Ml.includes(e.status)).sort(Fm);for(let e of t)g=!0,a.push({fqdn:e.instanceFqdn,port:e.operationsApiPort,secure:e.operationsApiSecure?`true`:`false`})}}else f&&i.push(...f.regionPlans);!g&&!i.length&&i.push({regionName:``,latencyDescription:``});let _=m?.ambiguous&&n===`version`?void 0: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:_,deploymentDescription:r?.deploymentDescription??f?.deploymentDescription??``,performanceDescription:r?.performanceDescription??f?.performanceDescription??``,fqdn:g?e?.fqdn??``:``,instances:a,regionPlans:i}},[h,o,t,n,m,l,p,u,d,s]);return!_||!a||!l||!u||!d?(0,K.jsx)(g_,{isEdit:!!t,children:(0,K.jsx)(gs,{centered:!0,text:`Loading...`})}):(o?.id?!i:!r)?(0,K.jsx)(g_,{isEdit:!!t,children:(0,K.jsx)(Ho,{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)(g_,{isEdit:!!t,children:(0,K.jsx)(Ho,{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)(au,{}),`.`]})}})}):(0,K.jsx)(g_,{isEdit:!!t,className:`w-full max-w-6xl mx-auto`,children:(0,K.jsx)(p_,{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:m_(s)&&s.skipToBilling===!0})})}function v_({children:e}){let{organizationId:t}=B({strict:!1}),{view:n}=Sp(t),{update:r}=bp(t),i=`/${t}`,a=[{to:i,label:`Clusters`,icon:Qa,exact:!0},n&&{to:`${i}/users`,label:`Users`,icon:Po},n&&{to:`${i}/roles`,label:`Roles`,icon:no},r&&{to:`${i}/billing`,label:`Billing`,icon:ei,children:[{to:`${i}/billing`,label:`Payment Method`,exact:!0},{to:`${i}/billing/invoices`,label:`Invoices`}]},r&&{to:`${i}/settings`,label:`Settings`,icon:eo}].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:`section-rail-aside md:col-span-3 lg:col-span-2 mb-4 md:mb-0`,children:(0,K.jsx)(hm,{items:a,ariaLabel:`Organization sections`})}),(0,K.jsx)(`section`,{className:`md:col-span-9 lg:col-span-10 min-w-0`,children:e})]})})}var y_=[{category:`all`,label:`Total clusters`,Icon:Hi,color:`text-primary dark:text-violet-300 bg-primary/10`},{category:`running`,label:`Running`,Icon:Pr,color:`text-emerald-700 dark:text-green bg-green/10`},{category:`attention`,label:`Needs attention`,Icon:Oo,color:`text-amber-700 dark:text-yellow bg-yellow/10`},{category:`failed`,label:`Failures`,Icon:Ar,color:`text-destructive bg-destructive/10`}];function b_(){let{organizationId:e}=B({strict:!1}),{create:t}=wp(e),{data:n}=et(ws(e)),[r]=Es(Pn.SavedClusterState,null),[i,a]=(0,G.useState)(om),{data:o}=F({...fm({organizationId:e}),enabled:!1,staleTime:6e4}),s=(0,G.useMemo)(()=>new Map(o?.map(e=>[e.id,e.region])),[o]),c=(0,G.useMemo)(()=>cm(n?.clusters??[],s),[n?.clusters,s]),l=(0,G.useMemo)(()=>um(c.items,i),[c.items,i]),u=!!i.search||i.category!==`all`||!!i.region;return n&&c.items.length===0&&t?(0,K.jsx)(__,{}):r?(0,K.jsx)(ve,{to:`/${e}/new-cluster`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{children:(0,K.jsxs)(`div`,{className:`pb-16`,children:[(0,K.jsxs)(`header`,{className:`flex flex-wrap items-center justify-between gap-4 pb-6`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-bold tracking-normal text-primary sm:text-3xl dark:text-violet-300`,children:`Clusters`}),t&&(0,K.jsx)(H,{variant:`positive`,asChild:!0,accessKey:`n`,className:`shrink-0`,children:(0,K.jsxs)(V,{to:`/${e}/new-cluster`,children:[(0,K.jsx)(Ia,{"aria-hidden":`true`}),` New Cluster`]})})]}),(0,K.jsx)(`div`,{className:`mb-3 hidden grid-cols-2 gap-3 sm:grid lg:grid-cols-4`,role:`group`,"aria-label":`Cluster summary`,children:y_.map(({category:e,label:t,Icon:n,color:r})=>(0,K.jsxs)(`button`,{type:`button`,"aria-label":`${t} ${e===`all`?c.items.length:c.counts[e]}`,"aria-pressed":i.category===e,onClick:()=>a({...i,category:e}),className:`flex items-center gap-3 rounded-xl border bg-card/30 p-4 text-left transition-colors hover:border-primary/60 focus-visible:outline-2 focus-visible:outline-ring ${i.category===e?`border-primary/60`:`border-border`}`,children:[(0,K.jsx)(`span`,{className:`rounded-full p-2.5 ${r}`,children:(0,K.jsx)(n,{className:`size-5`,"aria-hidden":`true`})}),(0,K.jsxs)(`span`,{className:`min-w-0`,children:[(0,K.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:t}),(0,K.jsx)(`span`,{className:`mt-1 block text-2xl font-semibold tabular-nums`,children:e===`all`?c.items.length:c.counts[e]})]})]},e))}),(0,K.jsx)(`p`,{className:`mb-6 text-xs text-muted-foreground`,children:`Reported lifecycle status. Running does not confirm monitoring health.`}),(0,K.jsxs)(`div`,{className:`cluster-list-controls mb-3 flex flex-wrap gap-3`,role:`search`,"aria-label":`Find clusters`,children:[(0,K.jsxs)(`div`,{className:`relative min-w-48 basis-full sm:basis-auto flex-1`,children:[(0,K.jsx)(Xa,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`,"aria-hidden":`true`}),(0,K.jsx)($,{"aria-label":`Search clusters`,placeholder:`Search name, hostname, or region…`,className:`h-10 pl-9`,value:i.search,onChange:e=>a({...i,search:e.target.value})})]}),(0,K.jsx)(`label`,{className:`sr-only`,htmlFor:`cluster-status`,children:`Cluster status`}),(0,K.jsxs)(`select`,{id:`cluster-status`,className:`h-10 rounded-md border border-input bg-card px-3 text-sm`,value:i.category,onChange:e=>a({...i,category:e.target.value}),children:[(0,K.jsx)(`option`,{value:`all`,children:`All statuses`}),(0,K.jsx)(`option`,{value:`running`,children:`Running`}),(0,K.jsx)(`option`,{value:`attention`,children:`Needs attention`}),(0,K.jsx)(`option`,{value:`failed`,children:`Failures`}),(0,K.jsx)(`option`,{value:`other`,children:`Other / unknown`})]}),(0,K.jsx)(`label`,{className:`sr-only`,htmlFor:`cluster-region`,children:`Cluster region`}),(0,K.jsxs)(`select`,{id:`cluster-region`,className:`h-10 max-w-full rounded-md border border-input bg-card px-3 text-sm`,value:i.region,onChange:e=>a({...i,region:e.target.value}),children:[(0,K.jsx)(`option`,{value:``,children:`All regions`}),i.region&&!c.regions.includes(i.region)&&(0,K.jsx)(`option`,{value:i.region,children:i.region}),c.regions.map(e=>(0,K.jsx)(`option`,{value:e,children:e},e))]}),(0,K.jsx)(`label`,{className:`sr-only`,htmlFor:`cluster-sort`,children:`Sort clusters`}),(0,K.jsxs)(`select`,{id:`cluster-sort`,className:`h-10 rounded-md border border-input bg-card px-3 text-sm`,value:i.sort,onChange:e=>a({...i,sort:e.target.value}),children:[(0,K.jsx)(`option`,{value:`attention`,children:`Sort: Attention first`}),(0,K.jsx)(`option`,{value:`name`,children:`Sort: Name`}),(0,K.jsx)(`option`,{value:`newest`,children:`Sort: Newest`})]})]}),(0,K.jsxs)(`div`,{className:`mb-4 flex min-h-8 items-center justify-between gap-3 text-xs text-muted-foreground`,children:[(0,K.jsxs)(`p`,{role:`status`,children:[`Showing `,l.length,` of `,c.items.length,` clusters`]}),u&&(0,K.jsx)(H,{size:`sm`,variant:`ghost`,onClick:()=>a({...om,sort:i.sort}),children:`Clear filters`})]}),(0,K.jsx)(`div`,{className:`grid grid-cols-1 gap-4 lg:grid-cols-2 2xl:grid-cols-3`,children:l.map(e=>(0,K.jsx)(rm,{item:e},e.cluster.id))}),!l.length&&(0,K.jsxs)(`div`,{className:`rounded-xl border border-dashed border-border px-6 py-12 text-center`,children:[(0,K.jsx)(Hi,{className:`mx-auto mb-3 size-8 text-muted-foreground`,"aria-hidden":`true`}),(0,K.jsx)(`h2`,{className:`text-lg font-medium`,children:c.items.length?`No matching clusters`:`No clusters yet`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:c.items.length?`Try a different search or clear your filters.`:`Ask an organization administrator to create a cluster.`}),u&&(0,K.jsx)(H,{className:`mt-4`,variant:`outline`,onClick:()=>a({...om,sort:i.sort}),children:`Reset filters`})]})]})})]})}function x_(){return`/#`+Kc()}function S_(){let{organizationId:e}=B({strict:!1}),t=L(),n=new URLSearchParams(window.location.search).get(`setup_intent_client_secret`),{setup_intent_client_secret:r}=Te({strict:!1}),[i]=Es(Pn.SavedClusterState,null),a=n||r,o=Ih(),s=Qm(e),c=(0,G.useCallback)(()=>{let e=i?i.clusterId?`../../${i.clusterId}/edit`:`../../new-cluster`:`../`;window.history.replaceState(null,``,x_()),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)(gs,{centered:!0})}function C_(){return(0,K.jsx)(cg,{children:(0,K.jsx)(S_,{})})}function w_(){let{organizationId:e}=B({strict:!1}),{update:t}=bp(e);return t?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{children:(0,K.jsx)($e,{})})]}):(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 T_=500,E_=16,D_=16;function O_({className:e,containerClassName:t,containerRef:n,...r}){return(0,K.jsx)(`div`,{ref:n,"data-slot":`table-container`,className:P(`relative w-full overflow-x-auto`,t),children:(0,K.jsx)(`table`,{"data-slot":`table`,className:P(`w-full caption-bottom text-sm`,e),...r})})}function k_({className:e,...t}){return(0,K.jsx)(`thead`,{"data-slot":`table-header`,className:P(`[&_tr]:border-b`,e),...t})}function A_({className:e,...t}){return(0,K.jsx)(`tbody`,{"data-slot":`table-body`,className:P(`[&_tr:last-child]:border-0`,e),...t})}function j_({className:e,...t}){return(0,K.jsx)(`tr`,{"data-slot":`table-row`,className:P(`border-b border-grey-700 transition-colors`,e),...t})}function M_({className:e,...t}){return(0,K.jsx)(`th`,{"data-slot":`table-head`,className:P(`h-10 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function N_({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:Ue(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+D_)}let d=Math.min(Math.max(Math.ceil(o)+E_,u),T_);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)(M_,{...r,"data-col-id":e.column.id,style:{width:`${l}px`,maxWidth:`${l}px`},className:P(`relative`,o&&`select-none`,a?`px-0`:`px-2`,n),children:[(0,K.jsx)(`div`,{className:P(`flex items-center min-w-0 overflow-hidden`,o&&`pr-4`),children:a?(0,K.jsxs)(H,{type:`button`,variant:`ghost`,className:P(`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)(Dn,{className:`shrink-0`}):e.column.getIsSorted()===`desc`?(0,K.jsx)(En,{className:`shrink-0`}):(0,K.jsx)(ir,{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)(Oi,{className:`size-3.5`})})]})}function P_({className:e,...t}){return(0,K.jsx)(`td`,{"data-slot":`table-cell`,className:P(`align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}var F_=Le({columnSizingFeature:Ie,columnResizingFeature:He,columnVisibilityFeature:Ye,columnFilteringFeature:Ze,rowSelectionFeature:Ge,rowSortingFeature:Pe,sortedRowModel:Ve(),sortFns:Ke});function I_(){return Re()}function L_({columns:e,data:t,isFetching:n,onRowClick:r,onColumnClick:i,sortingState:a,children:o}){let s=Je({features:F_,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)(O_,{containerClassName:`rounded-md bg-card dark:bg-black-dark`,children:[(0,K.jsx)(k_,{children:s.getHeaderGroups().map(e=>(0,K.jsx)(j_,{className:`border-none`,children:e.headers.map(e=>(0,K.jsx)(N_,{header:e,onColumnClick:i},e.id))},e.id))}),(0,K.jsx)(A_,{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)(j_,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>r?.(e),className:P(`hover:bg-muted/10 data-[state=selected]:bg-muted`,r&&`cursor-pointer`),children:e.getVisibleCells().map(e=>(0,K.jsx)(P_,{className:`py-2 px-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,style:{width:`${e.column.getSize()}px`},children:Ue(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,K.jsx)(j_,{children:(0,K.jsx)(P_,{colSpan:e.length,className:`h-24 text-center`,children:n?(0,K.jsx)(`div`,{children:(0,K.jsx)(gs,{className:`p-12`})}):(0,K.jsx)(`span`,{children:`No results.`})})})})]})]})}function R_(e){switch(e){case`paid`:return`success`;case`void`:case`uncollectible`:return`destructive`;default:return`default`}}function z_(e){return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(e)}function B_(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 V_=[{header:`Invoice Id`,accessorKey:`id`,enableSorting:!1},{header:`Status`,accessorKey:`status`,enableSorting:!1,cell:({cell:e})=>(0,K.jsx)(Fs,{variant:R_(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?B_(r,t):[t?B_(r,t):`-`,n?B_(i,n):`-`].join(` to `)}},{header:`Amount Due`,accessorKey:`amountDue`,enableSorting:!1,cell:({cell:e})=>z_(e.getValue()?e.getValue()/100:0)},{header:`Amount Paid`,accessorKey:`amountPaid`,enableSorting:!1,cell:({cell:e})=>z_(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} @ ${z_(e.amount/100)}`);return n.join(`
12
+ `)}}];function H_(e){return(0,G.useCallback)(async()=>{U.loading(`Refreshing...`,{id:`refreshing`});let t=Date.now();await e(),Date.now()-t<500&&await h(500),U.success(`Refreshed!`,{id:`refreshing`})},[e])}async function U_(e){let{data:t}=await N.get(`/Invoice/${e}`);return t}function W_(e,t){return z({queryKey:[e,`invoices`],queryFn:()=>U_(e),retry:!1,enabled:!!e,refetchInterval:t?1e4:void 0})}function G_(){let{organizationId:e}=B({strict:!1}),{data:t}=F(ws(e)),{data:n,refetch:r,isLoading:i,isFetching:a,isRefetching:o}=F(W_(t?.type!==`ENTERPRISE`&&t?.id,!1)),s=H_(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)(au,{}),`, we would love to talk!`]}):i?(0,K.jsx)(gs,{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)(au,{overEmail:!0}),`, we would love to talk!`]}):(0,K.jsx)(L_,{data:n,columns:V_,children:(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:s,accessKey:`r`,disabled:a||o,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]})})}function K_(e){let t=I({getParentRoute:()=>e,path:`billing`,head:()=>({meta:[{title:`Billing — Harper Fabric`}]}),component:w_}),n=I({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Payment Methods — Harper Fabric`}]}),component:mg}),r=I({getParentRoute:()=>t,path:`invoices`,head:()=>({meta:[{title:`Invoices — Harper Fabric`}]}),component:G_}),i=I({getParentRoute:()=>t,path:`confirm`,head:()=>({meta:[{title:`Confirm Payment — Harper Fabric`}]}),component:C_});return t.addChildren([n,r,i])}async function q_(e){let{data:t}=await N.get(`/OrganizationRole/${e}`);return t}function J_(e){return z({queryKey:[e,`roles`],queryFn:()=>q_(e),retry:!1,refetchInterval:bs(1e4)})}var Y_=I_(),X_=[{header:`Role Name`,accessorKey:`roleName`,enableSorting:!1},Y_.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})}),Y_.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})],Z_=new Set([`checkbox`,`radio`,`file`,`submit`,`button`,`image`,`reset`]);function Q_(e){return t=>{let n=t.target;if(t.key!==`Enter`||t.nativeEvent.isComposing||!(n instanceof HTMLInputElement)||Z_.has(n.type)||!n.name)return;let r=n.name,i=e.getValues(r);i!==void 0&&e.setValue(r,i,{shouldTouch:!0,shouldValidate:!0})}}async function $_(e){let{data:t}=await N.post(`/Role/`,e);return t}function ev(){return R({mutationFn:$_})}var tv=S({name:M().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:A(),delete:A()}),nv=tv.extend({name:M()});S({roles:S({create:A(),delete:A(),update:A(),view:A()}),clusters:S({create:A(),delete:A(),update:A(),view:A(),resources:D(S({id:M(),delete:A(),update:A(),view:A(),instances:S({create:A(),delete:A(),update:A(),view:A()})}))})});function rv(){let[e]=As(),t=Ds();return e===`dark`||e===`system`&&t===`dark`?`vs-dark`:`light`}var iv=(0,G.lazy)(async()=>(await pe(()=>import(`./setup-D6LZS78d.js`),__vite__mapDeps([15,2,1,16,17,18,19,20,21])),{default:(await pe(()=>import(`./dist-BrRuMUzt.js`),__vite__mapDeps([16,1,2]))).default}));function av(e){return(0,K.jsx)(G.Suspense,{fallback:e.loading??null,children:(0,K.jsx)(iv,{...e})})}var ov={roles:{create:!0,view:!0,update:!0,delete:!0},clusters:{create:!0,view:!0,update:!0,delete:!0,resources:[]}};function sv({isModalOpen:e,setIsModalOpen:t}){let n=rv(),r=Me(),{organizationId:i}=B({strict:!1}),[a,o]=(0,G.useState)(!0),[s,c]=(0,G.useState)(JSON.stringify(ov,null,2)),{mutate:l,isPending:u}=ev(),d=Gt({resolver:it(tv),mode:`onTouched`,defaultValues:{name:``,update:!1,delete:!1}}),f=(0,G.useCallback)(e=>{o(e.length===0)},[o]),p=(0,G.useCallback)(async e=>{let n=tt(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)(Id,{onOpenChange:t,open:e,children:(0,K.jsxs)(Ud,{resizable:!0,children:[(0,K.jsx)(Kd,{children:`Add New Organization Role`}),(0,K.jsx)(qd,{children:`Set the new organization role permissions.`}),(0,K.jsx)(El,{...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),onKeyDown:Q_(d),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)(av,{className:`w-full h-full`,theme:n,defaultLanguage:`json`,onValidate:f,onChange:e=>{e&&c(e)},options:{automaticLayout:!0},defaultValue:JSON.stringify(ov,null,2)})}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:()=>t(!1),disabled:u,children:`Cancel`}),(0,K.jsx)(H,{variant:`submit`,disabled:u||!a||!d.formState.isValid,children:`Save Changes`})]})})]})})]})})}async function cv({roleId:e}){let{data:t}=await N.delete(`/Role/${e}`,{id:e,deleted:!0});return t}function lv(){return R({mutationFn:({roleId:e})=>cv({roleId:e})})}async function uv({roleId:e,updatedRoleInfo:t}){let{data:n}=await N.put(`/Role/${e}`,t);return n}function dv(){return R({mutationFn:({roleId:e,updatedRoleInfo:t})=>uv({roleId:e,updatedRoleInfo:t})})}function fv({organizationId:e,roleId:t}){return z({queryKey:[e,`roles`,t],queryFn:()=>pv(t),refetchInterval:bs(1e4),retry:xs()})}async function pv(e){let{data:t}=await N.get(`/Role/${e}`);return t}function mv({onRoleDeleteClick:e,setIsConfirmingRoleDeletion:t,isRoleDeletionPending:n}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Kd,{children:`Confirm Role Deletion`}),(0,K.jsx)(qd,{children:`Are you sure you want to delete this role? This action cannot be undone.`}),(0,K.jsxs)(Gd,{children:[(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>t(!1),children:`Cancel`}),(0,K.jsx)(H,{variant:`destructiveOutline`,onClick:e,disabled:n,children:n?`Deleting...`:`Delete Role`})]})]})}function hv({data:e,isModalOpen:t,closeModal:n}){let r=(0,G.useCallback)(()=>n(!1),[n]);return(0,K.jsx)(Id,{onOpenChange:r,open:t,children:(0,K.jsx)(Ud,{resizable:!0,children:(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(gv,{roleName:e.roleName}),children:(0,K.jsx)(_v,{data:e,closeModal:n})})})})}function gv({roleName:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Kd,{children:[`Organization Role "`,e,`"`]}),(0,K.jsx)(gs,{centered:!0,text:`Loading role…`,className:`flex-1 min-h-0`})]})}function _v({data:e,closeModal:t}){let n=Me(),{data:r}=et(fv({roleId:e.id,organizationId:e.organizationId})),i=Ln().user?.roles?.[e.organizationId]?.id===e.id,{update:a,remove:o}=Sp(e.organizationId),{mutate:s,isPending:c}=dv(),{mutate:l,isPending:u}=lv(),d=rv(),[f,p]=(0,G.useState)(!1),m=Gt({resolver:it(nv),defaultValues:{name:e.roleName,update:r.organization.update||!1,delete:r.organization.delete||!1}}),{isDirty:h,isValid:g}=m.formState,_=(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]),[v,y]=(0,G.useState)(!0),b=(0,G.useMemo)(()=>JSON.stringify({roles:{...r.organization.roles},clusters:{...r.organization.clusters}},null,2),[r]),[x,S]=(0,G.useState)(b),C=x!==b,w=(0,G.useCallback)(e=>{y(e.length===0)},[y]),T=(0,G.useCallback)(async r=>{if(!a)return;let i=tt(x);if(!i)return;let o={...r,...i,organizationId:e.organizationId};x&&v&&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,v,n,r,a,x,s]);return f?(0,K.jsx)(mv,{onRoleDeleteClick:_,setIsConfirmingRoleDeletion:p,isRoleDeletionPending:u}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Kd,{children:[i||!a?`View`:`Edit`,` Organization Role "`,e.roleName,`"`]}),(0,K.jsx)(El,{...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(T),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)(av,{className:`w-full h-full`,theme:d,defaultLanguage:`json`,onValidate:w,onChange:e=>{e&&S(e)},options:{readOnly:i||!a,automaticLayout:!0},defaultValue:x})}),!i&&(o||a)&&(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[o&&(0,K.jsx)(H,{type:`button`,variant:`destructiveOutline`,onClick:()=>p(!0),disabled:c,children:`Delete Role`}),a&&(0,K.jsx)(H,{variant:`submit`,disabled:!v||c||!g||!h&&!C,children:`Save Changes`})]})})]})})]})}function vv(){let e=L(),t=Me(),{organizationId:n,orgRoleId:r}=B({strict:!1}),{create:i}=Sp(n),{data:a,refetch:o,isFetching:s,isRefetching:c}=et(J_(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]),_=H_(o);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{children:(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(L_,{data:a,columns:X_,onRowClick:h,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:_,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),i&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:d,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),i&&(0,K.jsx)(sv,{isModalOpen:d,setIsModalOpen:f}),u&&(0,K.jsx)(hv,{data:l,isModalOpen:u,closeModal:g},l.id)]})})]})}function yv({className:e,...t}){return(0,K.jsx)(Pt,{"data-slot":`switch`,className:P(`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)(ct,{"data-slot":`switch-thumb`,className:P(`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 bv(e,t){let{data:n}=await N.patch(`/Organization/${e}/settings/oauth`,t);return n}var xv=S({domain:M().min(1,`Domain is required`),clientId:M().min(1,`Client ID is required`),clientSecret:M().min(1,`Client secret is required`),scope:M().optional()}),Sv=S({domain:M().min(1,`Domain is required`),clientId:M().optional(),clientSecret:M().optional(),scope:M().optional()});function Cv(){let{organizationId:e}=B({strict:!1}),{user:t}=Ln(),{update:n}=bp(e),{data:r}=et(ws(e)),i=Me(),[a,o]=(0,G.useState)(!1),[s,c]=(0,G.useState)(null),l=r.settings?.oauthConfigs??[],{mutate:u,isPending:d}=R({mutationFn:t=>bv(e,t),onSuccess:()=>void i.invalidateQueries({queryKey:[e]}),onError:()=>U.error(`Failed to update OAuth settings.`)}),f=Gt({resolver:it(xv),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=Gt({resolver:it(Sv)}),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 $p(e)&&U.success(`Sign-in URL copied.`)},b=async e=>{await $p(e)&&U.success(`Redirect URI copied.`)};return n?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{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)(H,{variant:`positiveOutline`,size:`sm`,onClick:()=>o(!0),children:[(0,K.jsx)(Ia,{}),`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)(Io,{className:`size-4`})})]}),(0,K.jsx)(El,{...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)(H,{type:`submit`,variant:`positive`,disabled:d,children:d?`Saving...`:`Save`}),(0,K.jsx)(H,{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)(Qr,{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:Ku(e.id),target:`_blank`,rel:`noreferrer`,className:`text-sm text-foreground truncate hover:underline`,children:Ku(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(Ku(e.id)),className:`hover:text-foreground`,title:`Copy login link`,children:(0,K.jsx)(Qr,{className:`size-3.5`})}),(0,K.jsx)(`a`,{href:Ku(e.id),target:`_blank`,rel:`noreferrer`,className:`hover:text-foreground`,title:`Open login link`,children:(0,K.jsx)(ci,{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)(yv,{checked:e.enabled!==!1,onCheckedChange:()=>_(e,`enabled`),disabled:d}),`Enabled`]}),(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{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)(yv,{checked:!!e.required,onCheckedChange:()=>_(e,`required`),disabled:d||!n}),`Required`]})}),!n&&(0,K.jsxs)(Tc,{children:[`Sign in via `,e.provider,` first to enable Required`]})]}),(0,K.jsx)(H,{variant:`outline`,size:`sm`,onClick:()=>h(e),disabled:d,children:(0,K.jsx)(Ma,{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)(Io,{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)(El,{...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)(H,{type:`submit`,variant:`positive`,disabled:d,children:d?`Adding...`:`Add Provider`}),(0,K.jsx)(H,{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:Jl.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:M().nonempty({error:`Please select a role.`})});async function wv(e){let{data:t}=await N.post(`/UserInvite/`,e);return t}function Tv(){return R({mutationFn:e=>wv(e)})}function Ev({user:e}){let{update:t}=Sp(),{mutate:n,isPending:r}=Tv(),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)(H,{variant:`ghost`,size:`sm`,className:`h-auto px-2 py-0 align-middle text-sm`,onClick:a,disabled:r||!i,children:[(0,K.jsx)(ua,{}),` Resend invite`]}):null}var Dv=I_(),Ov=[{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},Dv.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},Dv.display({header:``,enableSorting:!1,id:`actions`,cell:e=>e.row.original.status===`PENDING`?(0,K.jsx)(Ev,{user:e.row.original}):null})];function kv({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 Av=S({email:Jl.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:M().nonempty({error:`Please select a role.`})});async function jv(e){let{data:t}=await N.post(`/OrganizationRole/`,e);return t}function Mv(){return R({mutationFn:e=>jv(e)})}function Nv({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let{organizationId:r}=B({strict:!1}),{data:i,isLoading:a}=F({...J_(r),throwOnError:!0}),[o,s]=(0,G.useState)(!1),c=Gt({resolver:it(Av),defaultValues:{email:``,roleId:``}}),{mutate:l,isPending:u}=Mv(),{mutate:d,isPending:f}=Tv(),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)(Id,{onOpenChange:()=>{n(!1),s(!1),c.reset()},open:e,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...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)(Wd,{children:(0,K.jsx)(Kd,{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)(Sg,{}):(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...e,onValueChange:t=>e.onChange(t),children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Role`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(Og,{children:`Role`}),i?.map(e=>(0,K.jsx)(kg,{value:e.id,children:(0,K.jsx)(kv,{name:e.roleName,id:e.id})},e.id))]})})]})}),(0,K.jsx)(Q,{})]})}),o&&(0,K.jsxs)(qd,{className:`p-3 my-5 text-white rounded-md bg-amber-600 flex`,children:[(0,K.jsx)(ca,{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)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:u||f,children:[(0,K.jsx)(Ka,{}),` `,o?`Invite User`:`Add User`]})})})]})})})})}async function Pv({roleId:e,userId:t}){let{data:n}=await N.delete(`/OrganizationRole/role/${e}/user/${t}`);return n}function Fv(){return R({mutationFn:({roleId:e,userId:t})=>Pv({roleId:e,userId:t})})}function Iv(e){let[t,n]=(0,G.useState)(e||!1);return[t,(0,G.useCallback)(e=>{n(typeof e==`boolean`?e:e.target.checked)},[])]}function Lv({data:e,readOnly:t,canRemove:n,orgRole:r,selectedRoles:i,setChangesMade:a}){let{mutate:o,isPending:s}=Mv(),{mutate:c,isPending:l}=Fv(),u=!!i[r.id],[d,f]=(0,G.useState)(u),[p,m]=Iv(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)(Al,{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 Rv({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?ia:Ao;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)(Oo,{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)(H,{type:`button`,variant:`ghostOutline`,disabled:t,onClick:()=>i(!1),children:`Cancel`}),(0,K.jsxs)(H,{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)(H,{type:`button`,variant:`destructiveOutline`,disabled:t,onClick:()=>i(!0),children:[(0,K.jsx)(o,{}),` `,a.idle]})})}function zv(e){return e?.trim().toLowerCase()===`admin`}function Bv({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 Vv({closeModal:e,data:t,isModalOpen:n,onUserUpdated:r,orgUserCount:i,orgAdminCount:a}){let{organizationId:o}=B({strict:!1}),s=Ln(),{update:c,remove:l}=Sp(o),u=s.user?.email===t.email,[d,f]=(0,G.useState)(!1),{canRemoveRoles:p,showRemovalAction:m,blockedReason:h}=Bv({canDelete:l,isSelf:u,orgUserCount:i,adminCount:a,isAdmin:(t.roles??[]).some(e=>zv(e.roleName)),roleCount:t.roles?.length??0}),{mutateAsync:g}=Fv(),[_,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)(Id,{onOpenChange:d?r:e,open:n,children:(0,K.jsxs)(Ud,{resizable:!0,children:[(0,K.jsx)(Wd,{children:(0,K.jsxs)(Kd,{children:[c?`Edit `:`View `,` `,t.email,` `,u?`(yourself)`:``]})}),c&&(0,K.jsxs)(qd,{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)(gs,{centered:!0,text:`Loading roles…`,className:`flex-1 min-h-0`}),children:(0,K.jsx)(Hv,{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)(Ev,{user:t})}),m&&(0,K.jsx)(`div`,{className:`border-t border-border pt-4`,children:(0,K.jsx)(Rv,{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)(Oo,{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 Hv({data:e,organizationId:t,update:n,canRemove:r,setChangesMade:i}){let{data:a}=et(J_(t)),o=(0,G.useMemo)(()=>e.roles?Lm(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)(Lv,{readOnly:!n,canRemove:r,data:e,orgRole:t,selectedRoles:o,setChangesMade:i},t.id))})}function Uv(e,t){return e.email>t.email?1:-1}function Wv(e){return(e.users??[]).filter(e=>e!=null)}function Gv(e){let t={};for(let n of e)for(let e of Wv(n))t[e.id]||(t[e.id]={...e,roles:[]}),t[e.id].roles.push(n);return Object.values(t).sort(Uv)}function Kv(e){let t=new Set;for(let n of e)if(zv(n.roleName))for(let e of Wv(n))t.add(e.id);return t.size}function qv(){let e=L(),{organizationId:t,orgUserId:n}=B({strict:!1}),{update:r}=Sp(t),{data:i,refetch:a,isFetching:o,isRefetching:s}=et(J_(t)),c=(0,G.useMemo)(()=>Gv(i),[i]),l=(0,G.useMemo)(()=>Kv(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=H_(a);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(v_,{children:(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(L_,{data:c,isFetching:o||s,columns:Ov,onRowClick:y,sortingState:g,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,K.jsx)(Ra,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:_,accessKey:`a`,disabled:p,children:[(0,K.jsx)(Ia,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),r&&(0,K.jsx)(Nv,{isModalOpen:p,onChangesSaved:v,setIsModalOpen:m}),f&&(0,K.jsx)(Vv,{closeModal:b,data:u,isModalOpen:f,onUserUpdated:x,orgUserCount:c.length,orgAdminCount:l})]})})]})}function Jv({className:e,...t}){return(0,K.jsx)(`div`,{"data-slot":`skeleton`,className:P(`bg-primary/10 animate-pulse rounded-md`,e),...t})}function Yv({organizationId:e,organizationName:t,providers:n}){return(0,K.jsxs)(Vn,{className:`relative gap-0 py-0 h-full justify-between overflow-hidden border border-amber-500/30`,children:[(0,K.jsxs)(Hn,{className:`gap-4 py-5 border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/20 dark:from-primary/20 dark:to-primary/5`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`rounded-lg border border-primary/20 bg-background/50 p-2 text-primary dark:text-violet-300`,children:(0,K.jsx)(vr,{className:`size-5`,"aria-hidden":`true`})}),(0,K.jsx)(`span`,{className:`rounded-full border border-amber-500/30 bg-amber-500/10 px-2 py-1 text-xs`,children:`Sign-in required`})]}),(0,K.jsx)(Un,{children:(0,K.jsx)(`h2`,{className:`truncate text-xl`,title:t||e,children:t||e})}),t&&t!==e&&(0,K.jsx)(`p`,{className:`truncate text-xs text-muted-foreground`,title:e,children:e})]}),(0,K.jsxs)(Gn,{className:`py-4 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)(Ri,{className:`size-3 shrink-0`}),`Sign in with an OAuth provider to access this organization.`]}),n.map(e=>(0,K.jsx)(`a`,{href:Ku(e.oauthConfigId),children:(0,K.jsxs)(H,{variant:`outline`,className:`w-full`,children:[`Sign in with `,e.name]})},e.oauthConfigId))]})]})}var Xv=S({couponId:M().nonempty({message:`Please enter a coupon ID.`}).trim()});async function Zv({organizationId:e,couponId:t}){let n=await N.post(`/Coupon`,{organizationId:e,couponId:t},{validateStatus:e=>e>=200&&e<400||e===400||e===409});if(n.status===400||n.status===409)return Ko({response:n}).message}function Qv(){return R({mutationFn:Zv})}function $v({organizationId:e,organizationName:t,isOpen:n,onClose:r}){let{mutate:i,isPending:a}=Qv(),o=Gt({resolver:it(Xv),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}):(U.success(`Success`,{description:`Coupon "${n.couponId}" added to ${t||e}.`}),r())}})},[i,e,t,r]);return(0,K.jsx)(Id,{open:n,onOpenChange:e=>!e&&r(),children:(0,K.jsxs)(Ud,{children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Add Coupon`}),(0,K.jsxs)(qd,{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)(El,{...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)(Gd,{children:[(0,K.jsx)(H,{type:`button`,variant:`ghost`,onClick:r,disabled:a,children:`Cancel`}),(0,K.jsx)(H,{type:`submit`,disabled:a,children:a?`Adding...`:`Add Coupon`})]})]})})]})})}function ey({organizationRole:e,onDeleteOrgModal:t}){let{organizationId:n,organizationName:r,roleName:i}=e,a=r||n,[o]=tm(n),{remove:s,update:c}=bp(n),l=c,{view:u}=Sp(n),d=zn(`billing:write`),[f,p]=(0,G.useState)(!1),m=(0,G.useCallback)(()=>{t(e)},[t,e]),h=[{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)(Qa,{className:`size-4 mr-2 text-blue-500`}),label:`Clusters`},u&&{key:`roles`,to:`${n}/roles`,icon:(0,K.jsx)(no,{className:`size-4 mr-2 text-purple`}),label:`Roles`},u&&{key:`users`,to:`${n}/users`,icon:(0,K.jsx)(Po,{className:`size-4 mr-2 text-orange-500`}),label:`Users`},l&&{key:`billing`,to:`${n}/billing`,icon:(0,K.jsx)(ei,{className:`size-4 mr-2 text-green-500`}),label:`Billing`},c&&{key:`settings`,to:`${n}/settings`,icon:(0,K.jsx)(Ri,{className:`size-4 mr-2 text-yellow-500`}),label:`Settings`},d&&{key:`add-coupon`,onClick:()=>p(!0),icon:(0,K.jsx)(wo,{className:`size-4 mr-2 text-pink-500`}),label:`Add Coupon`},s&&{type:`separator`,key:`sep-bottom`},s&&{key:`delete`,onClick:m,className:`focus:bg-red/70 focus:text-white`,icon:(0,K.jsx)(Eo,{className:`size-4 mr-2 text-red-500`}),label:`Delete`}].filter($c),g=s||d;return(0,K.jsx)(af,{items:g?h:[],children:(0,K.jsxs)(Vn,{className:`group relative gap-0 py-0 h-full cursor-pointer justify-between overflow-hidden border border-primary/15 transition-[border-color,box-shadow] duration-200 hover:border-primary/60 hover:shadow-lg hover:ring-2 hover:ring-primary/40 dark:hover:ring-violet-400/60`,children:[(0,K.jsx)(V,{to:n,"aria-label":`Open ${a}`,className:`absolute inset-0 z-10 cursor-pointer rounded-[inherit] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring focus-visible:outline-none`}),(0,K.jsxs)(Hn,{className:`gap-4 py-5 border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/20 dark:from-primary/20 dark:to-primary/5`,children:[(0,K.jsxs)(Wn,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,K.jsx)(`span`,{className:`rounded-lg border border-primary/20 bg-background/50 p-2 text-primary dark:text-violet-300`,children:(0,K.jsx)(vr,{className:`size-5`,"aria-hidden":`true`})}),g&&(0,K.jsxs)(Yo,{children:[(0,K.jsxs)(Xo,{"aria-label":`Options`,onClick:e=>e.stopPropagation(),className:`relative z-20 inline-flex cursor-pointer shrink-0 items-center gap-1.5 rounded-md border border-primary/25 bg-background/60 px-2.5 py-1.5 text-xs font-medium text-foreground shadow-sm transition-colors hover:border-primary/60 hover:bg-primary/15 focus-visible:outline-2 focus-visible:outline-ring`,children:[`Options `,(0,K.jsx)(On,{className:`size-3.5`,"aria-hidden":`true`})]}),(0,K.jsx)(Zo,{align:`end`,children:rf(h,`dropdown`)})]})]}),(0,K.jsx)(Un,{children:(0,K.jsx)(`h2`,{className:`truncate text-xl`,title:a,children:a})}),(0,K.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-xs text-muted-foreground`,children:[n!==a&&(0,K.jsx)(`span`,{className:`truncate`,title:n,children:n}),(0,K.jsx)(`button`,{type:`button`,onClick:o,"aria-label":`Copy ID for ${a}`,className:`relative z-20 shrink-0 cursor-pointer rounded p-1 hover:bg-primary/15 focus-visible:outline-2 focus-visible:outline-ring`,children:(0,K.jsx)(Qr,{className:`size-3.5`,"aria-hidden":`true`})})]})]}),(0,K.jsxs)(Gn,{className:`py-4 flex items-center justify-between gap-2`,children:[(0,K.jsx)(Fs,{variant:`outline`,className:`min-w-0 shrink border-primary/25 bg-primary/10 text-foreground`,title:Cl(i),children:(0,K.jsx)(`span`,{className:`truncate`,children:Cl(i)})}),(0,K.jsxs)(`span`,{className:`text-sm shrink-0 py-2 whitespace-nowrap ml-auto`,children:[`Open `,(0,K.jsx)(nr,{className:`inline-block`})]})]}),(0,K.jsx)($v,{organizationId:n,organizationName:r,isOpen:f,onClose:()=>p(!1)})]})})}function ty(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 ny(e){let t=e.filter(e=>e.locked).length;return{total:e.length,accessible:e.length-t,locked:t}}function ry(e,t,n,r,i){return e.filter(ty([`id`,`name`],t)).filter(e=>n===`all`||(n===`locked`?e.locked:!e.locked)).filter(e=>!r||!e.locked&&e.roleName===r).sort((e,t)=>(e.name.localeCompare(t.name)||e.id.localeCompare(t.id))*(i?-1:1))}async function iy(e){let{data:t}=await N.delete(`/Organization/${e}`);return t}function ay(){return R({mutationFn:e=>iy(e)})}async function oy(e){let{data:t}=await N.post(`/Organization/`,{...e});return t}function sy(){return R({mutationFn:e=>oy(e)})}var cy=M().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.`}),ly=S({name:M().max(255,{error:`Name cannot be longer than 255 characters.`}),subdomain:C([O(``),E(),cy]).optional()});function uy(){let{user:e}=Ln(),t=L(),n=Gt({resolver:it(ly),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=Km(Jm(o),cy.maxLength);return{suggestedSubdomain:e,fullHostName:`future-cluster-names.${s||e}.harperfabric.com`}},[o,s]),{mutate:l,isPending:d}=sy(),p=Me(),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)(El,{...n,children:(0,K.jsxs)(`form`,{id:`org-add-form`,name:`org-add-form`,onSubmit:n.handleSubmit(h),className:`grid items-start gap-6 text-foreground lg:grid-cols-[1.2fr_1fr]`,children:[(0,K.jsxs)(Vn,{className:`min-w-0 gap-0 overflow-hidden py-0`,children:[(0,K.jsxs)(Hn,{className:`border-b border-primary/10 bg-linear-to-br from-primary/5 to-primary/20 py-5 dark:from-primary/20 dark:to-primary/5`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 text-primary dark:text-violet-300`,children:[(0,K.jsx)(vr,{className:`size-4`,"aria-hidden":`true`}),(0,K.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:`Organization details`})]}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Choose a name and an address for your organization.`})]}),(0,K.jsxs)(Gn,{className:`grid gap-6 py-6`,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`,className:`bg-background/60`,maxLength:ly.shape.name.maxLength,autoCapitalize:`words`,placeholder:a,...e})}),(0,K.jsx)(Lg,{children:`Use a name your team will recognize.`}),(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`,className:`bg-background/60`,maxLength:cy.maxLength,autoCapitalize:`none`,placeholder:c.suggestedSubdomain,...e})}),(0,K.jsx)(Lg,{children:`Lowercase letters, numbers, and dashes. Leave blank to use the suggested subdomain.`}),(0,K.jsx)(Q,{})]})})]}),(0,K.jsx)(`div`,{className:`border-t border-border/60 bg-muted/20 px-6 py-5`,children:(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:d,className:`w-full sm:w-auto`,children:[d?`Creating organization…`:`Create organization`,` `,(0,K.jsx)(nr,{"aria-hidden":`true`})]})})]}),(0,K.jsxs)(`aside`,{className:`min-w-0 rounded-2xl border border-primary/15 bg-primary/5 p-6`,"aria-labelledby":`org-address-heading`,children:[(0,K.jsxs)(`div`,{className:`mb-4 flex items-center gap-3`,children:[(0,K.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-xl bg-primary/10 text-primary dark:text-violet-300`,children:(0,K.jsx)(ii,{className:`size-5`,"aria-hidden":`true`})}),(0,K.jsx)(`h2`,{id:`org-address-heading`,className:`text-base font-semibold`,children:`Your cluster addresses`})]}),(0,K.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-muted-foreground`,children:`Your subdomain is part of the address for Harper-hosted clusters you create in this organization.`}),(0,K.jsxs)(`div`,{className:`my-5`,children:[(0,K.jsx)(`p`,{className:`mb-2 text-xs font-medium uppercase tracking-wider text-muted-foreground`,children:`Address preview`}),(0,K.jsx)(gg,{hostname:c.fullHostName,testId:`org-hostname-preview`})]}),(0,K.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:`The cluster name here is a placeholder. After creating your organization, you’ll name your first cluster!`}),(0,K.jsxs)(`div`,{className:`mt-5 border-t border-primary/15 pt-5`,children:[(0,K.jsx)(`h3`,{className:`text-sm font-medium`,children:`Prefer your own domain?`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-muted-foreground`,children:`You can also bind a domain you own to a Harper-hosted cluster after creating it.`}),(0,K.jsxs)(`a`,{href:`https://docs.harperdb.io/fabric/custom-domains`,target:`_blank`,rel:`noopener noreferrer`,className:`mt-3 inline-flex items-center gap-1.5 rounded-sm text-sm font-medium text-primary underline underline-offset-4 hover:no-underline focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-ring dark:text-violet-300`,children:[`Learn about custom domains`,(0,K.jsx)(ci,{className:`size-3.5`,"aria-hidden":`true`}),(0,K.jsx)(`span`,{className:`sr-only`,children:`(opens in a new tab)`})]})]})]})]})})})}function dy(){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsxs)(`section`,{className:`mx-auto mt-32 w-full max-w-6xl px-4 py-8 md:px-12 md:py-10`,children:[(0,K.jsxs)(`header`,{className:`mb-8 flex items-center gap-4`,children:[(0,K.jsx)(`div`,{className:`flex size-14 shrink-0 items-center justify-center rounded-2xl border border-primary/20 bg-primary/10 text-primary dark:text-violet-300`,children:(0,K.jsx)(vr,{className:`size-6`,"aria-hidden":`true`})}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`mb-1 text-xs font-medium uppercase tracking-widest text-muted-foreground`,children:`Your workspace`}),(0,K.jsx)(`h1`,{className:`text-3xl font-semibold tracking-tight`,children:`Create an organization`}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:`A home for your team and clusters in Harper Fabric.`})]})]}),(0,K.jsx)(uy,{})]})]})}var fy={org:`organization`,clu:`cluster`,ins:`instance`},py=/^(org|clu|ins)-[a-z0-9]+$/;function my(e){if(typeof e!=`string`)return null;let t=e.trim(),n=py.exec(t);return n?{kind:fy[n[1]],id:t}:null}function hy(e,t){let n=e*12,r=gy(t);return`/Admin/Organization/?${[...r?[`search=${encodeURIComponent(r)}`]:[],`status=ne=DELETED`,...r?[]:[`sort(name)`],`limit(${n},${n+12+1})`].join(`&`)}`}function gy(e){return typeof e==`string`?e.trim():``}async function _y(e,t){let{data:n}=await N.get(hy(e,t));return{organizations:n.slice(0,12),hasNextPage:n.length>12}}var vy={organizations:[],hasNextPage:!1};function yy(e){return e instanceof b&&(e.response?.status===404||e.status===404)}async function by(e){try{let{data:t}=await N.get(`/Admin/Organization/${e}`);return t?{organizations:[t],hasNextPage:!1}:vy}catch(e){if(yy(e))return vy;throw e}}async function xy(e){try{let{data:t}=await N.get(`/Cluster/${e}`),n=t?.organizationId;return n?await by(n):vy}catch(e){if(yy(e))return vy;throw e}}function Sy(e,t){let n=gy(t),r=my(n);return z({queryKey:[`admin-all-organizations`,n,e],queryFn:()=>r?.kind===`organization`?by(r.id):r?.kind===`cluster`?xy(r.id):_y(e,n),placeholderData:qe,retry:!1})}function Cy(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 wy(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 Ty(e,t){let[n,r]=(0,G.useState)(t),[i,a]=(0,G.useState)(e);return(0,G.useEffect)(()=>{wy(n,t)||(r(t),a(e))},[n,t,e]),wy(n,t)?[i,a]:[e,a]}var Ey={};function Dy(e,t,n){let r=(0,G.useCallback)((e,n)=>t(e,n),[n]);(0,G.useEffect)(()=>(Ey[e]||(Ey[e]=[]),Ey[e].push(r),function(){let t=Ey[e].indexOf(r);t>=0&&Ey[e].splice(t,1)}),[e,t,r])}function Oy(e,t,n){let r=Ey[e];if(r)for(let e of r)e(t,n)}function ky(e,t,n){return r=>Oy(e,t,n??r)}function Ay(e,t,n){return(0,G.useCallback)(r=>Oy(e,t,n??r),[e,t,n])}function jy(e,t){let n=Ty(nt(e,t),[e]),[r,i]=n;return(0,G.useEffect)(()=>{rt(e,r),Oy(`Session:${e}`,r)},[e,r]),Dy(`Session:${e}`,function(e){r!==e&&i(e)},[r,e,t]),(0,G.useEffect)(function(){let n=n=>{n.key===e&&i(nt(e,t))};return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}},[e,i,t]),n}function My(){let e=Me(),{data:t}=et(s()),{mutate:n,isPending:r}=ay(),[i,a]=(0,G.useState)(!1),[o,c]=(0,G.useState)(null),[l,u]=(0,G.useState)(``),[d,f]=(0,G.useState)(`all`),[p,m]=(0,G.useState)(``),[h,g]=(0,G.useState)(!1),_=()=>{u(``),f(`all`),m(``),g(!1),S(0)},v=zn(`org:read`),[y,b]=jy(`ShowAllOrganizations`,!1),[x,S]=(0,G.useState)(0),C=v&&y,w=(0,G.useCallback)(e=>{b(e),S(0)},[b]),T=Cy(l,300),E=(0,G.useMemo)(()=>{if(!v)return null;let e=my(T);return e?.kind===`organization`||e?.kind===`cluster`?e:null},[v,T]),D=C||!!E,{data:O,isPending:k,isError:A,isFetching:ee,refetch:te}=F({...Sy(x,T),enabled:D}),j=(0,G.useMemo)(()=>qn(t),[t]),M=(0,G.useMemo)(()=>ny(j),[j]),N=(0,G.useMemo)(()=>[...new Set(j.filter(e=>!e.locked).map(e=>e.roleName))].sort(),[j]),P=N.includes(p)?p:``,ne=(0,G.useMemo)(()=>D?[]:ry(j,l,d,P,h),[j,l,d,P,h,D]),re=!!l||d!==`all`||!!P||h,ie=(0,G.useMemo)(()=>{let e=t?.roles||{};return(O?.organizations||[]).map(t=>({organizationId:t.id,organizationName:t.name||t.id,roleName:e[t.id]?.role||`fabric staff`}))},[O?.organizations,t?.roles]),ae=(0,G.useCallback)(e=>{u(e.currentTarget.value||``),S(0)},[]),oe=(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]),se=(0,G.useCallback)(e=>{c(e),a(!0)},[]),{createCluster:ce}=Te({strict:!1});return!D&&M.accessible===1&&!re&&ce?(0,K.jsx)(ve,{to:`/${j.find(e=>!e.locked).id}/new-cluster`,replace:!0}):!D&&!j.length&&!re?(0,K.jsx)(dy,{}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsxs)(`section`,{className:`mt-32 px-4 pt-6 pb-10 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:[(0,K.jsxs)(`header`,{className:`flex flex-wrap items-center justify-between gap-4 pb-6`,children:[(0,K.jsx)(`h1`,{className:`text-2xl font-bold tracking-normal text-primary sm:text-3xl dark:text-violet-300`,children:`Organizations`}),(0,K.jsx)(H,{asChild:!0,variant:`positive`,accessKey:`n`,children:(0,K.jsxs)(V,{to:`/new-org`,children:[(0,K.jsx)(Ia,{}),`New Organization`]})})]}),!D&&(0,K.jsx)(`div`,{role:`group`,"aria-label":`Organization summary`,className:`mb-5 hidden grid-cols-3 gap-3 sm:grid`,children:[{value:`all`,label:`Total organizations`,count:M.total},{value:`accessible`,label:`Accessible`,count:M.accessible},{value:`locked`,label:`Sign-in required`,count:M.locked}].map(e=>(0,K.jsxs)(`button`,{type:`button`,"aria-pressed":d===e.value,onClick:()=>{f(e.value),m(``)},className:`flex cursor-pointer items-center justify-between rounded-xl border px-4 py-3 text-sm transition-colors hover:border-primary/60 focus-visible:outline-2 focus-visible:outline-ring ${d===e.value?`border-primary/40 bg-primary/10`:`border-border bg-card/60`}`,children:[(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:e.label}),(0,K.jsx)(`span`,{className:`text-xl font-semibold`,children:e.count})]},e.value))}),(0,K.jsxs)(`div`,{role:`search`,"aria-label":`Find organizations`,className:`mb-4 flex flex-wrap items-center gap-3 rounded-xl border border-border bg-card/60 p-3`,children:[(0,K.jsx)($,{"aria-label":`Search organizations`,placeholder:`Search name or ID…`,className:`min-w-0 flex-1 basis-56 dark:bg-background/60`,value:l,onChange:ae}),!D&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`select`,{"aria-label":`Organization access`,value:d,onChange:e=>{f(e.target.value),m(``)},className:`max-w-full rounded-lg border border-border bg-background px-3 py-2 text-sm`,children:[(0,K.jsx)(`option`,{value:`all`,children:`All access`}),(0,K.jsx)(`option`,{value:`accessible`,children:`Accessible`}),(0,K.jsx)(`option`,{value:`locked`,children:`Sign-in required`})]}),d!==`locked`&&(N.length>1||!!P)&&(0,K.jsxs)(`select`,{"aria-label":`Organization role`,value:P,onChange:e=>m(e.target.value),className:`max-w-full rounded-lg border border-border bg-background px-3 py-2 text-sm`,children:[(0,K.jsx)(`option`,{value:``,children:`All roles`}),N.map(e=>(0,K.jsx)(`option`,{value:e,children:Cl(e)},e))]}),(0,K.jsxs)(`select`,{"aria-label":`Sort organizations`,value:h?`desc`:`asc`,onChange:e=>g(e.target.value===`desc`),className:`max-w-full rounded-lg border border-border bg-background px-3 py-2 text-sm`,children:[(0,K.jsx)(`option`,{value:`asc`,children:`Name: A–Z`}),(0,K.jsx)(`option`,{value:`desc`,children:`Name: Z–A`})]})]}),v&&(0,K.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm`,children:[(0,K.jsx)(yv,{checked:y,onCheckedChange:w,"aria-label":`Show all organizations`}),`All organizations`]})]}),(0,K.jsx)(`p`,{role:`status`,className:`mb-4 text-xs text-muted-foreground`,children:D?`Staff directory · Server search and pagination`:`Showing ${ne.length} of ${M.total} organizations`}),D&&A&&(0,K.jsxs)(`div`,{role:`alert`,className:`mb-4 rounded-xl border p-6`,children:[(0,K.jsx)(`p`,{children:O?`Organizations couldn’t be refreshed. Showing the last available results.`:`Organizations couldn’t be loaded.`}),(0,K.jsx)(H,{variant:`outline`,disabled:ee,onClick:()=>void te(),children:ee?`Retrying…`:`Retry`})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 gap-5 md:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4`,children:[D?k?Array.from({length:12},(e,t)=>(0,K.jsx)(Jv,{className:`h-48`},t)):ie.map(e=>(0,K.jsx)(ey,{organizationRole:e,onDeleteOrgModal:se},e.organizationId)):ne.map(e=>e.locked?(0,K.jsx)(Yv,{organizationId:e.id,organizationName:e.name,providers:e.providers},e.id):(0,K.jsx)(ey,{organizationRole:{organizationId:e.id,organizationName:e.name,roleName:e.roleName},onDeleteOrgModal:se},e.id)),(D?!k&&!A&&!ie.length:!ne.length)&&(0,K.jsxs)(`div`,{className:`col-span-full rounded-xl border border-dashed p-10 text-center`,children:[(0,K.jsx)(`h2`,{className:`text-lg font-medium`,children:`No matching organizations`}),(0,K.jsx)(`p`,{className:`my-3 text-sm text-muted-foreground`,children:`Try another name or clear your filters.`}),(0,K.jsx)(H,{variant:`outline`,onClick:_,children:`Clear filters`})]})]}),D&&(x>0||O?.hasNextPage)&&(0,K.jsxs)(`div`,{className:`flex items-center justify-center gap-4 py-6`,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:x===0,onClick:()=>S(e=>e-1),children:[(0,K.jsx)(er,{}),`Previous`]}),(0,K.jsxs)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:[`Page `,x+1]}),(0,K.jsxs)(H,{variant:`defaultOutline`,size:`sm`,className:`select-none`,disabled:!O?.hasNextPage,onClick:()=>S(e=>e+1),children:[`Next`,(0,K.jsx)(nr,{})]})]})]}),o&&(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`organization`,nameOfThingBeingDeleted:o.organizationName,isModalOpen:i,setIsModalOpen:()=>a(!1),deletionConfirmed:()=>oe(o),deletionPending:r})]})}var Ny=I({getParentRoute:()=>il,id:`_orgsLayout`});I({getParentRoute:()=>Ny,path:`/`,head:()=>({meta:[{title:`Organizations — Harper Fabric`}]}),component:My}),I({getParentRoute:()=>Ny,path:`/new-org`,head:()=>({meta:[{title:`New Organization — Harper Fabric`}]}),component:dy});var Py=I({getParentRoute:()=>Ny,path:`$organizationId`,beforeLoad:async e=>{let{organizationId:t}=e.params;if(!Ss(t))throw Se({to:`/`});return{organization:await e.context.queryClient.ensureQueryData(ws(t))}}});I({getParentRoute:()=>Py,path:`/roles`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:vv}),I({getParentRoute:()=>Py,path:`/roles/$orgRoleId`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:vv}),I({getParentRoute:()=>Py,path:`/users`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:qv}),I({getParentRoute:()=>Py,path:`/users/$orgUserId`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:qv}),I({getParentRoute:()=>Py,path:`/settings`,component:Cv}),K_(Py);var Fy=I({getParentRoute:()=>Py,id:`_clusterLayout`});I({getParentRoute:()=>Fy,path:`/`,head:()=>({meta:[{title:`Clusters — Harper Fabric`}]}),component:b_}),I({getParentRoute:()=>Py,path:`/new-cluster`,head:()=>({meta:[{title:`New Cluster — Harper Fabric`}]}),component:__}),I({getParentRoute:()=>Ly,path:`/edit`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:__}),I({getParentRoute:()=>Ly,path:`/edit/$mode`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:__});function Iy(){return(0,K.jsx)($e,{})}var Ly=I({getParentRoute:()=>Fy,path:`$clusterId`,component:Iy,beforeLoad:async({context:e,params:t})=>({cluster:await e.queryClient.ensureQueryData(ql(t.clusterId))})}),Ry=e=>new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}).format(e),zy=e=>`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(e)} hr`,By=e=>qg(e),Vy={reads:`Reads`,readBytes:`Read data`,writes:`Writes`,writeBytes:`Write data`,realTimeMessages:`Real-time messages`,realTimeBytes:`Real-time data`,cpuTimeHours:`Compute`,storageBytes:`Storage`},Hy={reads:Ry,readBytes:By,writes:Ry,writeBytes:By,realTimeMessages:Ry,realTimeBytes:By,cpuTimeHours:zy,storageBytes:By},Uy=[`reads`,`readBytes`,`writes`,`writeBytes`,`realTimeMessages`,`realTimeBytes`,`cpuTimeHours`,`storageBytes`];function Wy(e,t,n){return{label:n??Vy[e],used:t.used,limit:t.limit,unlimited:t.unlimited,limitKnown:t.limitKnown,format:Hy[e]}}function Gy({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 Ky(e){return z({queryKey:[`clusterUsage`,e],queryFn:async()=>{let{data:t}=await N.get(`/Cluster/${e}/usage`);return t},enabled:!!e,staleTime:6e4})}function qy(e){return F(Ky(e))}function Jy(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} ${Yy(e.renewsAt)}`:null].filter(Boolean).join(` · `)}function Yy(e){return new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(new Date(e))}function Xy({clusterId:e,base:t}){let{data:n}=qy(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)(nr,{className:`size-3`})]})]}),(0,K.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:Jy(n)}),(0,K.jsx)(`div`,{className:`mt-4`,children:n.regions.length===1?(0,K.jsx)(Zy,{data:n}):(0,K.jsx)(Qy,{data:n})})]})}function Zy({data:e}){let t=e.regions[0].metrics,n=[Wy(`reads`,t.reads),Wy(`writes`,t.writes),Wy(`storageBytes`,t.storageBytes),Wy(`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)(Gy,{...e},e.label))})}function Qy({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)(Gy,{...Wy(t.metric,{used:t.used,limit:t.limit,unlimited:!1,limitKnown:!0},`${t.region??`Region`} · ${Vy[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 $y({cluster:e}){let t=we(),n=Me(),{update:r,remove:i}=wp(e.organizationId,e.id),a=Dp(e.organizationId),{run:o,isPending:s}=Qp(e),{mutate:c,isPending:l}=Jp(),[u,d]=(0,G.useState)(!1),[f,p]=(0,G.useState)(!1),[m,h]=(0,G.useState)(!1),[g,_]=(0,G.useState)(null),v=e.status===`RUNNING`,y=e.status===`STOPPED`,b=e.status===`PARTIAL`,x=!a||s,S=(0,G.useCallback)(()=>{c(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),h(!1),U.success(`Success`,{description:`Cluster successfully terminated.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),t.navigate({to:`/${e.organizationId}`})},onError:()=>{h(!1)}})},[e.id,e.organizationId,c,n,t]),C=(0,G.useCallback)(()=>{let e=g;_(null),e&&o(e,{safeMode:!0,strategy:`parallel`,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})},[g,o]);return Bp(e)||!r&&!i&&!a?null:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsxs)(H,{variant:`outline`,size:`sm`,disabled:s,className:`gap-1.5 hover:translate-y-0 data-[state=open]:[&>svg]:rotate-180`,children:[`Cluster actions`,(0,K.jsx)(On,{className:`size-4 transition-transform`})]})}),(0,K.jsxs)(Zo,{align:`end`,className:`w-56`,children:[(0,K.jsxs)(ns,{className:`text-gray-600 text-xs`,children:[`Container`,!a&&(0,K.jsx)(`span`,{className:`block font-normal`,children:`Requires an organization admin`})]}),(0,K.jsxs)(eb,{reason:a?void 0:`Only an organization administrator can start, stop, or restart this cluster.`,children:[(0,K.jsxs)(Qo,{disabled:x||!(y||b),onClick:()=>void o(`start`,{safeMode:!1,strategy:`parallel`}),children:[(0,K.jsx)(Pa,{}),` Start`]}),(0,K.jsxs)(Qo,{disabled:x||!y,onClick:()=>_(`start`),children:[(0,K.jsx)(Ki,{}),` Start in safe mode`]}),(0,K.jsxs)(Qo,{disabled:x||!(v||b),onClick:()=>p(!0),children:[(0,K.jsx)(Wa,{}),` Restart`]}),(0,K.jsxs)(Qo,{disabled:x||!v,onClick:()=>_(`restart`),children:[(0,K.jsx)(Ki,{}),` Restart in safe mode`]}),(0,K.jsxs)(Qo,{variant:`destructive`,disabled:x||!(v||b),onClick:()=>d(!0),children:[(0,K.jsx)(fo,{}),` Stop`]})]}),(0,K.jsx)(rs,{}),(0,K.jsxs)(Qo,{variant:`destructive`,disabled:!i,onClick:()=>h(!0),children:[(0,K.jsx)(Eo,{}),` Terminate`]})]})]}),(0,K.jsx)(Up,{clusterName:e.name,isPending:s,stopOpen:u,setStopOpen:d,onConfirmStop:()=>{d(!1),o(`stop`,{strategy:`parallel`})},restartOpen:f,setRestartOpen:p,onConfirmRestart:e=>{p(!1),o(`restart`,{safeMode:!1,strategy:e})}}),(0,K.jsx)(Kp,{open:g!==null,setOpen:e=>{e||_(null)},action:g??`restart`,targetName:e.name,scope:`cluster`,isPending:s,onConfirm:C}),(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:`Terminate`,presentParticiple:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:m,setIsModalOpen:h,deletionConfirmed:S,deletionPending:l})]})}function eb({reason:e,children:t}){return e?(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(`div`,{role:`none`,children:t})}),(0,K.jsx)(Tc,{side:`left`,className:`max-w-60`,children:e})]}):(0,K.jsx)(K.Fragment,{children:t})}function tb(){let{clusterId:e}=B({strict:!1}),t=we(),r=L(),{data:i}=F(ql(e,!0)),{user:a,isLoading:o}=Bn(e),{view:s,update:l}=wp(i?.organizationId,i?.id),[f,p]=(0,G.useState)(!1),m=i?.domains?.[0]?.domain||i?.fqdn||``,[h,g]=tm(m,m?`https://${m}`:``),_=i?`/${i.organizationId}/${i.id}`:``,v=(0,G.useCallback)(async()=>{if(i){p(!0);try{await u.establishFabricConnectAuth({id:i.id,operationsUrl:c(i)}),await t.invalidate()}catch{U.error(`Could not connect to this cluster through Fabric Connect.`)}finally{p(!1)}}},[i,t]),y=(0,G.useCallback)(()=>{i&&(u.setUserForEntity(i,null),u.flagForFabricConnect(i.id,!1)),r({to:`${_}/sign-in`})},[_,i,r]),b=(0,G.useCallback)(async()=>{if(i){try{await d({instanceClient:n({id:i.id}),entityId:i.id})}catch{}u.setUserForEntity(i,null),u.flagForFabricConnect(i.id,!1),u.flagForBasicAuth(i.id,null),await t.invalidate()}},[i,t]);if(!i)return(0,K.jsx)(rb,{children:(0,K.jsx)(ib,{})});if(!s)return(0,K.jsx)(ve,{to:`/${i.organizationId}`,replace:!0});if(Bp(i))return(0,K.jsx)(nb,{cluster:i});if(!i.fqdn)return(0,K.jsx)(ve,{to:`${_}/instances`,replace:!0});if(i.resetPassword){if(!l)return(0,K.jsx)(rb,{children:(0,K.jsxs)(`div`,{className:`text-center py-12`,children:[(0,K.jsx)(Qa,{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=i.status&&jl.includes(i.status)&&Wl(i);return(0,K.jsx)(ve,{to:`${_}/${e?`finish-setup`:`starting-up`}`,replace:!0})}let x=u.checkForFabricConnect(i.id),S=!!a,C=u.getLastConnectMode(i.id),w=(i.instances??[]).filter(e=>e.status&&!Ml.includes(e.status)).length,T=i.instances??[],E=!!i.status&&jl.includes(i.status)&&T.length>0&&T.every(e=>e.safeMode);return(0,K.jsxs)(rb,{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)(Qa,{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:i.name}),(0,K.jsx)(ab,{status:i.status}),E&&(0,K.jsx)(ob,{})]}),(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)(ci,{className:`size-3`})]}),(0,K.jsxs)(Yo,{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)(Qr,{className:`size-3.5`})}),(0,K.jsxs)(Zo,{align:`start`,children:[(0,K.jsx)(Qo,{onClick:h,children:`Copy host name`}),(0,K.jsx)(Qo,{onClick:g,children:`Copy API URL`})]})]})]})]}),(0,K.jsx)($y,{cluster:i})]}),o?(0,K.jsx)(ib,{}):S?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,K.jsx)(Pr,{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)(Ba,{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)(nr,{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&&!Bp(i)&&(0,K.jsx)(sb,{icon:Ro,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)(H,{className:`w-full`,disabled:f,onClick:()=>void v(),children:f?(0,K.jsx)(Xi,{className:`animate-spin`}):`Fabric Connect`})}),(0,K.jsx)(sb,{icon:Ri,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)(H,{className:`w-full`,variant:`outline`,onClick:y,children:`Direct sign-in`})})]})]}),(0,K.jsx)(Xy,{clusterId:i.id,base:_})]})}function nb({cluster:e}){let t=we(),r=L(),i=`/${e.organizationId}/${e.id}`,a=(0,G.useMemo)(()=>(e.instances??[]).filter(e=>e.status&&!Ml.includes(e.status)).sort(Fm),[e.instances]),o=a.at(0),{user:s,isLoading:c}=Bn(o?.id),l=!!o&&!!s,f=(0,G.useCallback)(()=>{o&&r({to:`${i}/instance/${o.id}/sign-in`})},[i,o,r]),m=(0,G.useCallback)(async()=>{if(o){try{await d({instanceClient:n({id:o.id,operationsUrl:p(o)}),entityId:o.id})}catch{}u.setUserForEntity(o,null),u.flagForBasicAuth(o.id,null),await t.invalidate()}},[o,t]);return(0,K.jsxs)(rb,{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)(Qa,{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:`${i}/instances`,className:`hover:text-foreground hover:underline`,children:[a.length,` `,a.length===1?`instance`:`instances`]})})]})]}),o?c?(0,K.jsx)(ib,{}):l?(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 mb-4 text-sm`,children:[(0,K.jsx)(Pr,{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:[`· `,o.name||o.instanceFqdn]})]}),(0,K.jsxs)(V,{to:`${i}/instance/${o.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)(Ba,{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)(nr,{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)(sb,{icon:Ri,title:`Direct sign-in`,description:`Sign in with this instance's Harper username and password.`,children:(0,K.jsx)(H,{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:`${i}/instances`,className:`underline hover:text-foreground`,children:`Instances`}),` page.`]})]})}function rb({children:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(wm,{children:(0,K.jsx)(`div`,{className:`max-w-3xl`,children:e})})]})}function ib(){return(0,K.jsx)(`div`,{className:`flex justify-center py-10 text-muted-foreground`,children:(0,K.jsx)(Xi,{className:`size-6 animate-spin`})})}function ab({status:e}){let t=e&&jl.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 ob(){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)(Ki,{className:`size-3`}),`Safe mode`]})}function sb({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 cb({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(wm,{children:(0,K.jsx)(`div`,{className:t,children:e})})]})}function lb(e){let t=_s(e);return t===void 0||t===408||t>=500}var ub=`Not attempted.`;function db(e){return[...new Set(e.split(/[,\s]+/).map(e=>e.trim().toLowerCase()).filter(Boolean))]}function fb(e){let t=_s(e);return lb(e)||t===401||t===429}async function pb(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:Ko(t).message,error:t,attempted:!0}),fb(t)){for(let t of e.slice(i+1))r.push({domain:t,message:ub,error:void 0,attempted:!1});break}}}return mb(r),{added:n,failures:r}}function mb(e){let t=new Set;for(let{error:n,attempted:r}of e){if(!r||_s(n)===409)continue;let e=_s(n);t.has(e)||(t.add(e),console.error(n))}}var hb=4e3;async function gb(e,t=hb){let n;try{return await Promise.race([e,new Promise(e=>{n=setTimeout(()=>e(void 0),t)})])}finally{clearTimeout(n)}}function _b(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 vb(e,t){return e.filter(({domain:e,error:n,attempted:r})=>!r||!lb(n)||!t.has(e))}function yb(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 bb(e){return e.map(({domain:e,message:t})=>`${e} — ${t}`).join(`; `)}var xb=new Set([`com`,`co`,`org`,`net`,`edu`,`gov`,`mil`,`me`,`biz`,`info`,`ac`,`or`,`ne`,`go`,`lg`,`asn`,`id`,`nom`,`sch`,`ltd`,`plc`]);function Sb(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&&xb.has(r)?3:2;return t.length<=i?`@`:t.slice(0,-i).join(`.`)}function Cb({cluster:{fqdn:e},domain:{domain:t,id:n}}){let r=Sb(t),[i,a,o]=tm(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)(H,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:i,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:a,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:o,children:(0,K.jsx)(Qr,{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 wb({certificate:e,domain:t,cluster:n}){let r=Sb(t.domain),[i,a,o]=tm(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)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:i,title:`Copy Name`,children:(0,K.jsx)(Qr,{className:`w-3 h-3`})})]}),(0,K.jsx)(Tb,{}),(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)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:a,title:`Copy Target`,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`h-3 w-3 p-0`,onClick:o,title:`Copy ID`,children:(0,K.jsx)(Qr,{className:`w-2.5 h-2.5`})})]})})]})]})}function Tb(){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 Eb(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:()=>Db(e)})}async function Db({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 Ob(e){return z({queryKey:[e,`ChallengeCertificate`],queryFn:async()=>{if(!e)return[];let{data:t}=await Db({searchAttribute:`domain`,entityId:e,databaseName:`data`,tableName:`ChallengeCertificate`,sort:{attribute:`domain`,descending:!0},instanceClient:n({id:e,forceFabricConnect:!0}),onlyIfCached:!1,pageIndex:0,pageSize:100});return t},enabled:!!e,refetchInterval:bs(5e3),retry:xs()})}function kb(e){return F(Ob(e))}function Ab({domain:{challengeToken:e,challengeTxtRecord:t,domain:n,id:r},cluster:{fqdn:i}}){let a=Sb(n),[o,s,c,l,u]=tm(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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:o,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:s,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:c,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:l,children:(0,K.jsx)(Qr,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:u,children:(0,K.jsx)(Qr,{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 jb({clusterId:e,domainIds:t,generateDomainCerts:n}){let{data:r}=await N.put(`/Cluster/${e}`,{domainIds:t,generateDomainCerts:n},{timeout:0});return r}function Mb(){return R({mutationFn:e=>jb(e)})}S({domainId:M()});async function Nb(e){let{data:t}=await N.delete(`/Domain/${e.domainId}`);return t}function Pb(){return R({mutationFn:e=>Nb(e)})}function Fb(e){return[...new Set(e)]}var Ib=I_();function Lb(e,t,n){let{data:r}=kb(e.id),i=(0,G.useMemo)(()=>!!r?.some(e=>!e.issueDate||e.inProgress),[r]),{mutate:a,isPending:o}=Mb(),{mutate:s,isPending:c}=Pb(),l=o||c,u=(0,G.useCallback)((t,n)=>{if(!zl(e.status)){U.error(`Cluster is currently `+e.status,{description:`To bind a domain, it must be running.`});return}a({clusterId:e.id,domainIds:Fb((e.domainIds?.slice()||[]).concat([t])),generateDomainCerts:n},{onSuccess:()=>{Jo.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:()=>{Jo.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:()=>{Jo.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),U.success(`Domain unbound!`)}})},[s]);return(0,G.useMemo)(()=>[Ib.display({id:`select`,header:`Bind`,size:50,cell:r=>{let a=r.row.original;return a.status!==`ACTIVE`||a.clusterId||Bp(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})})}}),Ib.display({header:`Domains`,id:`domain`,enableSorting:!1,size:150,cell:e=>{let t=e.row.original;return(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{children:t.domain}),(0,K.jsx)(H,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l||!!t.clusterId,onClick:()=>d(t.id),children:`Remove Domain`})]})}),(0,K.jsx)(Tc,{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!`})]})}}),Ib.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)(wb,{certificate:i,domain:n,cluster:e})}),(0,K.jsx)(H,{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)(Ab,{domain:n,cluster:e}):Bp(e)?`Cannot be associated with this self-managed cluster.`:n.status===`ACTIVE`&&!n.clusterId?(0,K.jsx)(Cb,{cluster:e,domain:n}):n.status}})],[e,u,l,r,i,t,n])}var Rb=`Enter a domain name.`,zb=S({domain:M().trim().min(1,Rb),organizationId:M()});async function Bb(e){let{data:t}=await N.post(`/Domain/`,e);return t}function Vb(){return R({mutationFn:e=>Bb(e),meta:{skipGlobalErrorToast:!0},networkMode:`always`})}async function Hb(e){let{data:t}=await N.post(`/Domain/${e}/validate`);return t}async function Ub(e){let{data:t}=await N.get(`/Domain/?organizationId=${e}`);return t}function Wb(e){return z({queryKey:[e,`domains`],queryFn:()=>Ub(e)})}function Gb(){let{organizationId:e,clusterId:t}=B({strict:!1}),{data:n}=et(ql(t,!0)),{update:r}=Sp(e),{data:i,refetch:a,isFetching:o,isPending:s,isRefetching:c}=F(Wb(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=H_(a),[p,m]=(0,G.useState)([]),h=(0,G.useCallback)(e=>{m(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),{mutate:g,isPending:v}=Mb(),y=(0,G.useCallback)(()=>{if(!zl(n.status)){U.error(`Cluster is currently `+n.status,{description:`To bind a domain, it must be running.`});return}g({clusterId:n.id,domainIds:Fb((n.domainIds?.slice()||[]).concat(p)),generateDomainCerts:!0},{onSuccess:()=>{Jo.invalidateQueries({queryKey:[n.organizationId],refetchType:`active`}),U.success(`Domain(s) bound! Certificates are being generated in the background now.`),m([])}})},[n,p,g]),{mutateAsync:b}=Vb(),x=Gt({resolver:it(zb),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=db(e.domain);if(t.length===0){x.setError(`domain`,{type:`server`,message:Rb});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&&_b(i),{added:r,failures:o}=await pb(t,t=>b({...e,domain:t})),s=be.isOnline()&&(r.length>0||o.some(({error:e,attempted:t})=>t&&lb(e)))?await gb(a()):void 0,c=vb(o,s?yb(n,_b(s.data)):new Set),l=r.length+o.length-c.length;if(l>0&&U.success(`${_(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:bb(c)})},[b,x,i,a]),w=(0,G.useCallback)(async()=>{let e=`Validating ${_(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 Hb(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=Lb(n,p,h),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)(L_,{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)(El,{...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)(H,{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)(H,{type:`submit`,variant:`submit`,disabled:S,children:[(0,K.jsx)(Ia,{}),` Add`]}),l.length>0&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:w,accessKey:`r`,type:`button`,disabled:o||c,children:[(0,K.jsx)(Ji,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`V`}),`alidate`]})]}),(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:f,accessKey:`r`,type:`button`,disabled:o||c,children:[(0,K.jsx)(Ra,{}),` `,(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)(H,{variant:`submit`,onClick:y,disabled:v,children:[(0,K.jsx)(Ka,{}),` Bind `,_(p.length,`Domain`,`Domains`)]})})]})})}function Kb(){return(0,K.jsx)(cb,{className:`flex flex-col justify-start max-w-4xl`,children:(0,K.jsx)(Gb,{})})}var qb=S({username:Xl,role:M().nonempty({error:`Please select a role.`}),password:Yl.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:M()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});async function Jb(e){await N.patch(`/ResetPasswordUpdater/${e}`)}async function Yb(e){let{instanceClient:t,...n}=e,{data:r}=await t.post(`/`,{operation:`add_user`,...n});return r}function Xb(){return R({mutationFn:Yb})}async function Zb({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 Qb(){return R({mutationFn:Zb})}async function $b({username:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_user`,username:e});return n}function ex(){return R({mutationFn:$b})}async function tx({clusterId:e,initialUsername:t,desiredUsername:n,newPassword:r,tempPassword:a,instanceClient:o}){if(!a)throw Error(`You may not have permission to set the password on this cluster.`);let s=o;try{let o=await Pl({username:t,password:a,instanceClient:s,entityId:e});return o.instanceClient&&(s=o.instanceClient),n===`HDB_ADMIN`?await Zb({username:n,password:r,instanceClient:s}):(await Yb({username:n,password:r,role:`super_user`,active:!0,instanceClient:s}),await Pl({username:n,password:r,instanceClient:s,entityId:e}),await $b({username:i,instanceClient:s})),await Jb(e),o}catch(t){throw await d({entityId:e,instanceClient:s}),t}}function nx(){return R({mutationFn:tx})}function rx(){let{user:e}=Ln(),{clusterId:t}=B({strict:!1}),{data:n}=F(ql(t,!0)),r=L(),a=Me(),o=(0,G.useMemo)(()=>c(n),[n]),s=Dc({operationsUrl:o}),{redirect:l}=Te({strict:!1}),d=we(),f=Gt({resolver:it(qb),defaultValues:{confirmPassword:``,password:``,role:`super_user`,username:e?.email??``}}),{setFocus:p,control:m,handleSubmit:h}=f;(0,G.useEffect)(()=>{p(`password`)},[p]);let g=n?.instances?.find(e=>e.tempPassword)?.tempPassword,_=Wl(n),{mutate:v,isPending:y}=nx(),b=(0,G.useCallback)(async e=>{if(!o){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:s,clusterId:t,newPassword:e.password,tempPassword:g,initialUsername:i,desiredUsername:e.username},{onSuccess:async({message:e,user:i})=>{U.success(e),u.setUserForEntity(n,i),await Kl(a,t),d.invalidate(),await r({to:l?.startsWith(`/`)?l:`../`})}})},[n,t,s,_,r,o,a,l,d,v,g]);return n&&!n.resetPassword?(0,K.jsx)(ve,{to:`../sign-in`,replace:!0}):n&&!_?(0,K.jsx)(ve,{to:`../starting-up`,replace:!0}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{"aria-label":`Breadcrumb`,className:`studio-subnav 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)(Tl,{})}),(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)(El,{...f,children:(0,K.jsxs)(`form`,{id:`cluster-create-admin-form`,name:`cluster-create-admin-form`,onSubmit:h(b),className:`my-4`,children:[(0,K.jsx)(Y,{control:m,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:m,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:m,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)(H,{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)(Xn,{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 ix({columns:e,data:t,renderRowWrapper:n}){let r=Je({features:F_,data:t,columns:e});return(0,K.jsx)(`div`,{className:`bg-card dark:bg-black-dark rounded-md`,children:(0,K.jsxs)(O_,{children:[(0,K.jsx)(k_,{children:r.getHeaderGroups().map(e=>(0,K.jsx)(j_,{className:`border-none`,children:e.headers.map(e=>(0,K.jsx)(M_,{className:`p-4`,style:{width:`${e.getSize()}%`},children:e.isPlaceholder?null:Ue(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,K.jsx)(A_,{className:`bg-background dark:bg-black`,children:r.getRowModel().rows?.length?r.getRowModel().rows.map(e=>{let t=(0,K.jsx)(j_,{"data-state":e.getIsSelected()&&`selected`,className:`hover:bg-muted/10 data-[state=selected]:bg-muted`,children:e.getVisibleCells().map(e=>(0,K.jsx)(P_,{className:`p-4`,style:{width:`${e.column.getSize()}%`},children:Ue(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)(j_,{children:(0,K.jsx)(P_,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function ax(){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.`})})}var ox={start:!1,restart:!1,stop:!1},sx={start:!1,restart:!0,stop:!0},cx={start:!0,restart:!1,stop:!1},lx={start:!0,restart:!0,stop:!0};function ux(e){switch(e){case`RUNNING`:return sx;case`STOPPED`:return cx;case`ERROR`:case`FAILED`:return lx;default:return ox}}async function dx({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 fx({instanceId:e,action:t,safeMode:n}){let r=n===void 0?{}:{safeMode:n},{data:i}=await N.post(`/HDBInstance/${e}/container/${t}`,r);return i}function px(){return R({mutationFn:fx})}var mx={stop:`Stopping`,start:`Starting`,restart:`Restarting`};function hx(e){let{clusterId:t}=B({strict:!1}),{mutateAsync:n,isPending:r}=px(),i=Me();return{run:(0,G.useCallback)(async(r,a)=>{let o=a?.label??mx[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}),r!==`stop`&&ce({instanceIds:[e.id],label:mx[r],allAtOnce:!0}),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 gx({entityId:e,instanceClient:t},n){return z({queryKey:[`get_status`,e],staleTime:9e3,refetchInterval:bs(1e4),retry:xs(),retryDelay:1e4,throwOnError:!1,enabled:n,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_status`});return e}})}function _x(e,t){return e?.systemStatus?.find(e=>e.id===t)?.status}async function vx({instanceClient:e,id:t,status:n}){let{data:r}=await e.post(`/`,{operation:`set_status`,id:t,status:n});return r}function yx(){return R({mutationFn:vx,onSuccess:(e,t)=>Jo.invalidateQueries({queryKey:[`get_status`,t.entityId]})})}function bx({clusterId:e,instanceId:t,organizationId:n},r){return`/`+[n,e,t&&`instance`,t,r].filter($c).join(`/`)}var xx=[`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`];function Sx(e,t,n){let{user:r}=Bn(e.id),{organizationId:i,clusterId:a}=B({strict:!1}),o=bx({organizationId:i,clusterId:a,instanceId:e.id}),s=bx({organizationId:i,clusterId:a,instanceId:e.id},`sign-in`),c=(0,G.useMemo)(()=>p(e),[e]),l=Dc({operationsUrl:c}),{update:d}=Ap(),f=Dp(),m=u.checkForFabricConnect(e.id),h=q({operationsUrl:c,instanceId:e.id,forceFabricConnect:!0}),{data:g}=F(gx(h,n&&d&&!Rl(e.status))),_=_x(g,`availability`)||`Unknown`,v=_===`Available`,y=_===`Unavailable`,{mutate:b,isPending:x}=yx(),{run:S,isPending:C}=hx(e),[w,T]=(0,G.useState)(null),E=e.instanceFqdn,D=c_({secure:e.operationsApiSecure?`true`:`false`,port:e.operationsApiPort,fqdn:e.instanceFqdn}),[O,k]=tm(E??``,D),A=(0,G.useCallback)(async()=>{await dx({instance:e,instanceClient:l})},[e,l]),ee=!!e.status&&xx.includes(e.status),te=!!r&&!m,j=ee,M=!!E,N=d&&ee&&(v||y),P=ux(e.status),ne=f&&!t&&(P.start||P.restart||P.stop),re=[j&&te&&{key:`direct-connect`,to:o,icon:(0,K.jsx)(Qa,{className:`text-green`}),label:`Direct Connect`},j&&te&&{key:`direct-sign-out`,onClick:A,variant:`destructive`,icon:(0,K.jsx)(ia,{}),label:`Direct Sign Out`},j&&!te&&d&&!t&&{key:`fabric-connect`,to:o,icon:(0,K.jsx)(Qa,{className:`text-green`}),label:`Fabric Connect`},j&&!te&&{key:`direct-sign-in`,to:s,icon:(0,K.jsx)(na,{}),label:`Direct Sign In`},j&&M&&{type:`separator`,key:`copy-sep`},M&&{key:`copy-fqdn`,onClick:O,icon:(0,K.jsx)(Hr,{}),label:`Copy Instance FQDN`},M&&{key:`copy-api`,onClick:k,icon:(0,K.jsx)(Hr,{}),label:`Copy API URL`},(j||M)&&N&&{type:`separator`,key:`rotation-sep`},N&&v&&{key:`out-of-rotation`,variant:`destructive`,disabled:x,onClick:()=>b({...h,id:`availability`,status:`Unavailable`}),icon:(0,K.jsx)(io,{}),label:`Bring out of rotation`},N&&y&&{key:`into-rotation`,disabled:x,onClick:()=>b({...h,id:`availability`,status:`Available`}),icon:(0,K.jsx)(no,{}),label:`Bring back into rotation`},(j||M||N)&&ne&&{type:`separator`,key:`container-sep`},ne&&{type:`label`,key:`container-label`,className:`text-gray-600 text-xs`,label:`Container`},ne&&P.start&&{key:`container-start`,disabled:C,onClick:()=>void S(`start`,{safeMode:!1}),icon:(0,K.jsx)(Pa,{}),label:`Start`},ne&&P.start&&{key:`container-start-safe`,disabled:C,onClick:()=>T(`start`),icon:(0,K.jsx)(Ki,{}),label:`Start in safe mode`},ne&&P.restart&&{key:`container-restart`,disabled:C,onClick:()=>void S(`restart`,{safeMode:!1}),icon:(0,K.jsx)(Wa,{}),label:`Restart`},ne&&P.restart&&{key:`container-restart-safe`,disabled:C,onClick:()=>T(`restart`),icon:(0,K.jsx)(Ki,{}),label:`Restart in safe mode`},ne&&P.stop&&{key:`container-stop`,variant:`destructive`,disabled:C,onClick:()=>void S(`stop`),icon:(0,K.jsx)(fo,{}),label:`Stop`}].filter($c),ie=(0,K.jsx)(Kp,{open:w!==null,setOpen:e=>{e||T(null)},action:w??`restart`,targetName:e.name??e.id,scope:`instance`,isPending:C,onConfirm:()=>{let e=w;T(null),e&&S(e,{safeMode:!0,label:e===`start`?`Starting in safe mode`:`Restarting in safe mode`})}});return re.length?{items:[{type:`label`,key:`label`,className:`text-gray-600 text-xs`,label:`Options`},{type:`separator`,key:`label-sep`},...re],dialog:ie}:{items:[],dialog:ie}}function Cx({instance:e,isSelfManaged:t}){let[n,r]=(0,G.useState)(!1),{items:i,dialog:a}=Sx(e,t,n);return i.length?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Yo,{open:n,onOpenChange:r,children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Instance options`,children:(0,K.jsx)(oi,{})})}),(0,K.jsx)(Zo,{align:`end`,className:`min-w-48`,children:rf(i,`dropdown`)})]}),a]}):null}function wx({isSelfManaged:e,instance:t}){let{user:n,isLoading:r}=Bn(t.id),{organizationId:i,clusterId:a}=B({strict:!1}),o=bx({organizationId:i,clusterId:a,instanceId:t.id}),s=bx({organizationId:i,clusterId:a,instanceId:t.id},`sign-in`),c=Dc({operationsUrl:(0,G.useMemo)(()=>p(t),[t])}),{update:l}=Ap(),d=u.checkForFabricConnect(t.id),f=(0,G.useCallback)(async()=>{await dx({instance:t,instanceClient:c})},[t,c]);return Rl(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)(Xi,{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)(H,{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)(H,{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)(H,{variant:`positiveOutline`,children:`Direct Connect`})}),(0,K.jsx)(H,{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 Tx({instance:e,isSelfManaged:t,children:n}){let[r,i]=(0,G.useState)(!1),{items:a,dialog:o}=Sx(e,t,r);return a.length?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Yd,{onOpenChange:i,children:[(0,K.jsx)(Xd,{asChild:!0,children:n}),(0,K.jsx)(Zd,{className:`min-w-48`,children:rf(a,`context`)})]}),o]}):(0,K.jsx)(K.Fragment,{children:n})}function Ex({instance:e,index:t}){let{update:n}=Ap(),r=q({operationsUrl:(0,G.useMemo)(()=>p(e),[e]),instanceId:e.id,forceFabricConnect:!0}),{mutate:i,isPending:a}=yx(),[o,s]=(0,G.useState)(!1);(0,G.useEffect)(()=>{let e=setTimeout(()=>s(!0),t*500);return()=>clearTimeout(e)},[t]);let c=Rl(e.status),{data:l,isLoading:u,isFetching:d}=F(gx(r,o&&n&&!c)),f=_x(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)(Cc,{children:[(0,K.jsx)(wc,{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)(Tc,{children:`Not running`})]})}):(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(`div`,{className:`flex items-center`,children:u||!o||d&&!l?(0,K.jsx)(Xi,{className:`animate-spin size-5 text-muted-foreground`}):(0,K.jsx)(Fs,{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)(Tc,{children:[d&&l?`Refreshing... `:``,f]})]}),n&&(0,K.jsxs)(`div`,{className:`flex gap-1`,children:[m&&(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(H,{type:`button`,variant:`destructiveGhost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Unavailable`}),disabled:a,children:a?(0,K.jsx)(Xi,{className:`animate-spin size-4`}):(0,K.jsx)(io,{className:`size-4`})})}),(0,K.jsx)(Tc,{children:`Bring out of rotation`})]}),h&&(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>i({...r,id:`availability`,status:`Available`}),disabled:a,children:a?(0,K.jsx)(Xi,{className:`animate-spin size-4`}):(0,K.jsx)(no,{className:`size-4`})})}),(0,K.jsx)(Tc,{children:`Bring back into rotation`})]})]})]}):null}function Dx(){let{clusterId:e}=B({strict:!1}),{data:t,isLoading:n}=F(ql(e,!0)),r=Bp(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)(wx,{isSelfManaged:r,instance:e.row.original})})},r&&{accessorKey:`instanceFqdn`,size:90,header:`URL`,cell:e=>c_({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)(Ex,{instance:e.row.original,index:e.row.index}),t?(0,K.jsx)(Fs,{variant:Ll(t),children:Cl(t)}):null,e.row.original.safeMode&&!Rl(e.row.original.status)?(0,K.jsxs)(Fs,{variant:`warning`,title:`Running in safe mode — user apps/components are not loaded`,children:[(0,K.jsx)(Ki,{}),`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)(Cx,{isSelfManaged:r,instance:e.row.original})})}].filter($c),[r]),a=xm(),o=(0,G.useMemo)(()=>t?.instances?t.instances.filter(e=>e.status&&!Ml.includes(e.status)).map(e=>le(e.id)?.reach===`down`&&!Rl(e.status)?{...e,status:`RESTARTING`}:e).sort(Fm):[],[t,a]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(0,K.jsx)(wm,{children:(0,K.jsx)(Vn,{className:`p-0 min-h-96`,children:(0,K.jsx)(Gn,{className:`p-0 min-h-96`,children:n?(0,K.jsx)(Sg,{}):o.length?(0,K.jsx)(ix,{data:o,columns:i,renderRowWrapper:(e,t)=>(0,K.jsx)(Tx,{instance:e,isSelfManaged:r,children:t})}):(0,K.jsx)(ax,{})})})})]})}function Ox(){let{clusterId:e}=B({strict:!1}),{immediate:t}=Te({strict:!1}),n=t===!0||t===`true`,{data:r,isLoading:i}=F(ql(e,2e3)),a=r?.status,o=(0,G.useMemo)(()=>a&&jl.includes(a),[a]);return i||!r?(0,K.jsx)(cb,{className:`flex justify-center`,children:(0,K.jsx)(Sg,{})}):o?(0,K.jsx)(cb,{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)(Gp,{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)(Vp,{cluster:r})})]})}):(0,K.jsx)(cb,{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)(Gp,{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 kx({children:e,className:t}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Dd,{}),(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 Ax(){let e=we(),{clusterId:t}=B({strict:!1}),{data:n,isLoading:r}=F(ql(t,2e3)),i=n?.status,a=(0,G.useMemo)(()=>i&&jl.includes(i)&&Wl(n),[i,n]),o=Bl(i),[,s]=Es(Pn.SavedClusterState,null),c=(0,G.useCallback)(()=>{s(n),e.navigate({to:`/${n.organizationId}/new-cluster`})},[n,e,s]);return r||!n?(0,K.jsx)(kx,{className:`flex justify-center`,children:(0,K.jsx)(Sg,{})}):o?(0,K.jsx)(kx,{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)(Wr,{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)(au,{}),` if you want more help.`]}),(0,K.jsx)(H,{type:`button`,variant:`positiveOutline`,onClick:c,children:`Try Again`})]})}):a?(0,K.jsx)(kx,{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)(Gp,{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)(Vp,{cluster:n})})]})}):(0,K.jsx)(kx,{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)(Gp,{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 jx(){let{clusterId:e}=B({strict:!1}),{data:t,isLoading:n}=qy(e);if(n)return(0,K.jsxs)(cb,{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)(Xi,{className:`size-6 animate-spin`})})]});let r=t&&!t.selfManaged?Lx(t.regions):null;return(0,K.jsxs)(cb,{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)(Bx,{children:`Usage isn't tracked for self-hosted clusters — they run under their own license.`}):t.regions.length===0?(0,K.jsx)(Bx,{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)(Mx,{region:e,showPlanInfo:r==null},e.region??e.regionIds.join())),r&&(0,K.jsx)(Nx,{header:(0,K.jsx)(Px,{title:`Plan limits & resources`}),aside:r.planId??void 0,children:(0,K.jsx)(Fx,{rateLimits:r.rateLimits,resourcesPerInstance:r.resourcesPerInstance})})]}):(0,K.jsx)(Vx,{})]})}function Mx({region:e,showPlanInfo:t}){let n=Uy.map(t=>Wy(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 ${Ix(e.expiresAt)}`:null].filter(Boolean).join(` · `);return(0,K.jsxs)(Nx,{defaultOpen:e.status!==`lapsed`,aside:e.regionIds.length>0?e.regionIds.join(`, `):void 0,header:(0,K.jsxs)(Px,{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)(Gy,{...e},e.label))}),t&&(0,K.jsx)(Fx,{rateLimits:e.rateLimits,resourcesPerInstance:e.resourcesPerInstance})]})}function Nx({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)(Or,{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 Px({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 Fx({rateLimits:e,resourcesPerInstance:t}){let n=e,r=n?zx([[`Reads / minute`,n.readsPerMinute,Jg],[`Read bandwidth / minute`,n.readsPerMinuteBytes,qg],[`Writes / minute`,n.writesPerMinute,Jg],[`Write bandwidth / minute`,n.writesPerMinuteBytes,qg],[`Real-time deliveries / minute`,n.realTimeDeliveriesPerMinute,Jg],[`Real-time bandwidth / minute`,n.realTimeDeliveryBytesPerMinute,qg],[`TLS handshakes (cycle)`,n.tlsHandshakes,Jg]]):[],i=t,a=i?Rx([[`Storage`,i.storageGb,e=>`${Jg(e)} GB`],[`Memory`,i.memoryMb,e=>qg(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)(Hx,{title:`Rate limits`,subtitle:`Throughput ceilings — not part of the cycle allotment, and not metered.`,children:(0,K.jsx)(Ux,{rows:r})}),a.length>0&&(0,K.jsx)(Hx,{title:`Per-instance resources`,subtitle:`Provisioned capacity on each instance.`,children:(0,K.jsx)(Ux,{rows:a})})]})}function Ix(e){return new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(new Date(e))}function Lx(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 Rx(e){return e.filter(e=>typeof e[1]==`number`&&e[1]>0).map(([e,t,n])=>[e,n(t)])}function zx(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 Bx({children:e}){return(0,K.jsx)(`p`,{className:`mt-3 text-sm text-muted-foreground`,children:e})}function Vx(){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 Hx({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 Ux({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:()=>Ly,path:`instances`,head:()=>({meta:[{title:`Instances — Harper Fabric`}]}),component:Dx}),I({getParentRoute:()=>Ly,path:`starting-up`,head:()=>({meta:[{title:`Starting Up — Harper Fabric`}]}),component:Ax}),I({getParentRoute:()=>Ly,path:`scaling`,head:()=>({meta:[{title:`Scaling — Harper Fabric`}]}),component:Ox}),I({getParentRoute:()=>Ly,path:`domains`,head:()=>({meta:[{title:`Domains — Harper Fabric`}]}),component:Kb}),I({getParentRoute:()=>Ly,path:`usage`,head:()=>({meta:[{title:`Usage — Harper Fabric`}]}),component:jx});function Wx({location:e,params:t}){let n=u.checkForFabricConnect(t.clusterId);if(u.getConnectionById(t.clusterId).user&&!n){let t=e?.search?.redirect;throw Se({to:t?.startsWith(`/`)?t:`../`})}}function Gx({location:e,params:t}){let n=u.checkForFabricConnect(t.instanceId);if(u.getConnectionById(t.instanceId).user&&!n){let t=e?.search?.redirect;throw Se({to:t?.startsWith(`/`)?t:`../`})}}I({getParentRoute:()=>Ly,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:ru,beforeLoad:Wx}),I({getParentRoute:()=>Ly,path:`instance/$instanceId/sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:ru,beforeLoad:Gx}),I({getParentRoute:()=>Ly,path:`finish-setup`,head:()=>({meta:[{title:`Create Admin User — Harper Fabric`}]}),component:rx}),I({getParentRoute:()=>Ly,path:`/`,head:()=>({meta:[{title:`Cluster — Harper Fabric`}]}),component:tb});function Kx(e){return I({getParentRoute:()=>e,path:`apis`,head:()=>({meta:[{title:`APIs — Harper Fabric`}]})}).lazy(()=>pe(()=>import(`./index.lazy-DZFuaumG.js`).then(e=>e.route),__vite__mapDeps([22,1,23,7,6,24,4,2,3,25,26,8,9,13,12,27,28,29])))}function qx(e,t){return[I({getParentRoute:()=>e,path:t===`cluster`?`apps`:`/`,head:()=>({meta:[{title:`Applications — Harper Fabric`}]}),component:Fe(()=>pe(()=>import(`./applications-DdN7CqsB.js`),__vite__mapDeps([30,1,23,7,6,24,4,2,3,25,26,8,9,13,12,31,32,27,17,18,10,28,29,33,19,20,21,34])),`ApplicationsEditor`)})]}async function Jx({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_certificates`});return t}function Yx(e){return z({queryKey:[e.entityId,`list_certificates`],queryFn:()=>Jx(e)})}var Xx=[{header:`Certificate Name`,accessorKey:`name`,enableSorting:!0},{header:`Issuer`,accessorKey:`details.issuer`,enableSorting:!0},I_().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 Zx({className:e,...t}){return(0,K.jsx)(`textarea`,{"data-slot":`input`,className:P(`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
@@ -17,14 +17,14 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
17
17
  flex w-full min-w-0 rounded-md border bg-white text-foreground dark:bg-grey-700 dark:text-white px-3 py-2 text-base
18
18
  file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium
19
19
  focus-visible:ring-1 focus-visible:outline-none focus-visible:ring-purple disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50
20
- aria-invalid:focus-visible:ring-[1px] aria-invalid:focus-visible:outline-none md:text-sm dark:aria-invalid:focus-visible:ring-1`,e),...t})}async function qx({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`add_certificate`,...t});return n}var Jx=S({name:M().min(1,`Name is required`),certificate:M().min(1,`Certificate is required`),private_key:M().optional(),is_authority:A().default(!1),hosts:M().optional(),uses:M().optional()});function Yx(){return R({mutationFn:({instanceParams:e,certificateParams:t})=>qx(e,t)})}function Xx({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=Gt({resolver:it(Jx),mode:`onTouched`,defaultValues:{name:``,certificate:``,private_key:``,is_authority:!1,hosts:``,uses:``}}),i=q(),{mutate:a,isPending:o}=Yx(),s=(0,G.useCallback)(async e=>{let{hosts:o,uses:s,private_key:c,...l}=e,u=o?o.split(`,`).map(e=>e.trim()).filter(Boolean):void 0,d=s?s.split(`,`).map(e=>e.trim()).filter(Boolean):void 0;a({instanceParams:i,certificateParams:{...l,private_key:c||void 0,hosts:u&&u.length>0?u:void 0,uses:d&&d.length>0?d:void 0}},{onSuccess:()=>{r.reset(),t(),U.success(`Certificate added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,K.jsx)(Id,{onOpenChange:n,open:e,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...r,children:(0,K.jsxs)(`form`,{id:`instance-add-certificate-form`,name:`instance-add-certificate-form`,onSubmit:r.handleSubmit(s),onKeyDown:Q_(r),className:`grid gap-4 my-4`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Add New Certificate`}),(0,K.jsx)(qd,{children:`Enter the details of your Certificate below.`})]}),(0,K.jsx)(Y,{control:r.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`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`is_authority`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex flex-row items-center justify-between rounded-lg border border-gray-800 p-3 shadow-sm`,children:[(0,K.jsx)(`div`,{className:`space-y-0.5`,children:(0,K.jsx)(Z,{children:`Is Authority`})}),(0,K.jsx)(J,{children:(0,K.jsx)(yv,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,K.jsx)(Y,{control:r.control,name:`certificate`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Certificate`}),(0,K.jsx)(J,{children:(0,K.jsx)(Kx,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`hosts`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Hosts (optional)`}),(0,K.jsx)(Lg,{children:`Comma-separated list of hostnames this certificate is valid for.`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. example.com, *.example.com`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`uses`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Uses (optional)`}),(0,K.jsx)(Lg,{children:`Comma-separated list of intended uses, e.g. "https, operations, wss".`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. https, operations, wss`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`private_key`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Private Key (optional)`}),(0,K.jsx)(Lg,{children:`PEM formatted private key string.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Kx,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:o||!r.formState.isDirty||!r.formState.isValid,children:[(0,K.jsx)(Ka,{}),` Add Certificate`]})]})})]})})})})}async function Zx({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`remove_certificate`,name:t});return n}function Qx(){return R({mutationFn:({instanceParams:e,name:t})=>Zx(e,t)})}function $x({data:e,isModalOpen:t,closeModal:n,onSelectCertificate:r,onChangesSaved:i}){let{name:a}=e,o=q(),{mutate:s,isPending:c}=Qx(),[l,u]=(0,G.useState)(!1),d=(0,G.useCallback)(()=>{u(!0)},[]),f=(0,G.useCallback)(()=>{s({instanceParams:o,name:a},{onSuccess:()=>{U.success(`Certificate removed successfully!`),r(void 0),i()}})},[a,s,o,i,r]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Id,{onOpenChange:n,open:t,children:(0,K.jsx)(Ud,{className:`sm:max-w-[800px] max-h-[90vh] overflow-y-auto`,"aria-describedby":void 0,children:(0,K.jsxs)(`div`,{className:`grid gap-4 my-4`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{children:[`View Certificate: `,a]}),(0,K.jsx)(qd,{children:`Details of the selected certificate.`})]}),(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 text-sm bg-muted p-4 rounded-lg border border-border`,children:[(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Issuer`}),(0,K.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.issuer||`N/A`})]}),(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Subject`}),(0,K.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.subject||`N/A`})]}),e.details.subject_alt_name&&(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Subject Alternative Name`}),(0,K.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.subject_alt_name})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Valid From`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.details.valid_from?new Date(e.details.valid_from).toLocaleString():`N/A`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Valid To (Expires At)`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.details.valid_to?new Date(e.details.valid_to).toLocaleString():`N/A`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Serial Number`}),(0,K.jsx)(`p`,{className:`text-muted-foreground font-mono text-xs break-all`,children:e.details.serial_number||`N/A`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Private Key Name`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.private_key_name||`N/A`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Is Authority`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.is_authority?`Yes`:`No`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Is Self-Signed`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.is_self_signed?`Yes`:`No`})]}),e.hosts&&e.hosts.length>0&&(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Hosts`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.hosts.join(`, `)})]}),(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Uses`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.uses?.join(`, `)||`N/A`})]})]}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsx)(Al,{children:`Certificate Content`}),(0,K.jsx)(Kx,{autoComplete:`off`,autoCapitalize:`off`,rows:8,readOnly:!0,className:`font-mono text-xs`,value:e.certificate})]})]}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{type:`button`,variant:`destructiveOutline`,onClick:d,disabled:c,children:`Remove Certificate`}),(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>n(),children:`Close`})]})})]})})}),(0,K.jsx)(Jd,{isModalOpen:l,setIsModalOpen:u,deletionConfirmed:f,deletionPending:c,typeOfThingBeingDeleted:`certificate`,presentParticiple:`Removing`,transitiveVerb:`Remove`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function eS(){let e=L(),{certName:t}=B({strict:!1}),n=q(),{data:r,refetch:i,isFetching:a,isRefetching:o}=F(Wx(n)),s=(0,G.useMemo)(()=>r?.find(e=>e.name===t),[r,t]),c=(0,G.useCallback)(n=>{let r=n?.original?.name,i=[t?`..`:``,r].filter(Boolean);e({to:i.join(`/`)})},[t,e]),l=!!t&&!!s,[u,d]=(0,G.useState)(!1),f=(0,G.useCallback)(()=>{d(!0)},[d]),p=H_(i);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(L_,{columns:Gx,data:r||[],isFetching:a,onRowClick:c,children:[(0,K.jsx)(V,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,to:`https://docs.harperdb.io/docs/developers/operations-api/certificate-management`,target:`_blank`,children:`Certificate Management Docs`}),(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:p,accessKey:`r`,disabled:a||o,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:f,accessKey:`a`,disabled:u,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),u&&(0,K.jsx)(Xx,{isModalOpen:u,onChangesSaved:i,setIsModalOpen:d}),l&&(0,K.jsx)($x,{isModalOpen:l,closeModal:c,data:s,onSelectCertificate:c,onChangesSaved:i})]})}var tS=new Set([`success`,`failed`,`rolled_back`]);function nS(e){return!!e&&tS.has(e)}var rS=2e3,iS=1e4;async function aS({instanceClient:e,project:t,status:n,since:r,until:i,limit:a,offset:o}){let{data:s}=await e.post(`/`,{operation:`list_deployments`,project:t,status:n,since:r,until:i,limit:a,offset:o});return s}function oS(e){let{entityId:t,project:n,status:r,since:i,until:a,limit:o,offset:s,pollWhileOpen:c}=e;return z({queryKey:[t,`list_deployments`,{project:n,status:r,since:i,until:a,limit:o,offset:s}],queryFn:()=>aS(e),retry:!1,enabled:e.enabled!==!1,refetchInterval:c?e=>(e.state.data?.deployments??[]).some(e=>!nS(e.status))?rS:iS:!1})}var sS={pending:`warning`,extracting:`warning`,installing:`warning`,loading:`warning`,replicating:`warning`,restarting:`warning`,success:`success`,failed:`destructive`,rolled_back:`destructive`},cS={pending:`Pending`,extracting:`Extracting`,installing:`Installing`,loading:`Loading`,replicating:`Replicating`,restarting:`Restarting`,success:`Success`,failed:`Failed`,rolled_back:`Rolled back`};function lS({status:e}){return(0,K.jsx)(Fs,{variant:sS[e]??`secondary`,children:cS[e]??e})}var uS=I_();function dS(e){return e?B_((Date.now()-e)/1e3,e):`—`}var fS=[{header:`Project`,accessorKey:`project`,enableSorting:!1},uS.display({header:`Status`,id:`status`,enableSorting:!1,cell:e=>(0,K.jsx)(lS,{status:e.row.original.status})}),uS.display({header:`Started`,id:`started_at`,enableSorting:!1,cell:e=>dS(e.row.original.started_at)}),uS.display({header:`Completed`,id:`completed_at`,enableSorting:!1,cell:e=>dS(e.row.original.completed_at)}),{header:`User`,accessorKey:`user`,enableSorting:!1},{header:`Origin`,accessorKey:`origin_node`,enableSorting:!1}];function pS({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,K.jsx)(bn,{"data-slot":`separator-root`,decorative:n,orientation:t,className:P(`bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,e),...r})}async function*mS(e,t){let n=e.getReader(),r=new TextDecoder(`utf-8`),i=``,a=!1;try{for(;;){if(t?.aborted)return;let{value:e,done:s}=await n.read();if(s){a=!0;break}i+=r.decode(e,{stream:!0}),yield*o()}if(i+=r.decode(),i.trim()){let e=hS(i);e&&(yield e)}}finally{a||n.cancel().catch(()=>{}),n.releaseLock()}function*o(){for(;;){let e=i.indexOf(`
20
+ aria-invalid:focus-visible:ring-[1px] aria-invalid:focus-visible:outline-none md:text-sm dark:aria-invalid:focus-visible:ring-1`,e),...t})}async function Qx({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`add_certificate`,...t});return n}var $x=S({name:M().min(1,`Name is required`),certificate:M().min(1,`Certificate is required`),private_key:M().optional(),is_authority:A().default(!1),hosts:M().optional(),uses:M().optional()});function eS(){return R({mutationFn:({instanceParams:e,certificateParams:t})=>Qx(e,t)})}function tS({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=Gt({resolver:it($x),mode:`onTouched`,defaultValues:{name:``,certificate:``,private_key:``,is_authority:!1,hosts:``,uses:``}}),i=q(),{mutate:a,isPending:o}=eS(),s=(0,G.useCallback)(async e=>{let{hosts:o,uses:s,private_key:c,...l}=e,u=o?o.split(`,`).map(e=>e.trim()).filter(Boolean):void 0,d=s?s.split(`,`).map(e=>e.trim()).filter(Boolean):void 0;a({instanceParams:i,certificateParams:{...l,private_key:c||void 0,hosts:u&&u.length>0?u:void 0,uses:d&&d.length>0?d:void 0}},{onSuccess:()=>{r.reset(),t(),U.success(`Certificate added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,G.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,K.jsx)(Id,{onOpenChange:n,open:e,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...r,children:(0,K.jsxs)(`form`,{id:`instance-add-certificate-form`,name:`instance-add-certificate-form`,onSubmit:r.handleSubmit(s),onKeyDown:Q_(r),className:`grid gap-4 my-4`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Add New Certificate`}),(0,K.jsx)(qd,{children:`Enter the details of your Certificate below.`})]}),(0,K.jsx)(Y,{control:r.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`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`is_authority`,render:({field:e})=>(0,K.jsxs)(X,{className:`flex flex-row items-center justify-between rounded-lg border border-gray-800 p-3 shadow-sm`,children:[(0,K.jsx)(`div`,{className:`space-y-0.5`,children:(0,K.jsx)(Z,{children:`Is Authority`})}),(0,K.jsx)(J,{children:(0,K.jsx)(yv,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,K.jsx)(Y,{control:r.control,name:`certificate`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Certificate`}),(0,K.jsx)(J,{children:(0,K.jsx)(Zx,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`hosts`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Hosts (optional)`}),(0,K.jsx)(Lg,{children:`Comma-separated list of hostnames this certificate is valid for.`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. example.com, *.example.com`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`uses`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Uses (optional)`}),(0,K.jsx)(Lg,{children:`Comma-separated list of intended uses, e.g. "https, operations, wss".`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. https, operations, wss`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:r.control,name:`private_key`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Private Key (optional)`}),(0,K.jsx)(Lg,{children:`PEM formatted private key string.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Zx,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:o||!r.formState.isDirty||!r.formState.isValid,children:[(0,K.jsx)(Ka,{}),` Add Certificate`]})]})})]})})})})}async function nS({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`remove_certificate`,name:t});return n}function rS(){return R({mutationFn:({instanceParams:e,name:t})=>nS(e,t)})}function iS({data:e,isModalOpen:t,closeModal:n,onSelectCertificate:r,onChangesSaved:i}){let{name:a}=e,o=q(),{mutate:s,isPending:c}=rS(),[l,u]=(0,G.useState)(!1),d=(0,G.useCallback)(()=>{u(!0)},[]),f=(0,G.useCallback)(()=>{s({instanceParams:o,name:a},{onSuccess:()=>{U.success(`Certificate removed successfully!`),r(void 0),i()}})},[a,s,o,i,r]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Id,{onOpenChange:n,open:t,children:(0,K.jsx)(Ud,{className:`sm:max-w-[800px] max-h-[90vh] overflow-y-auto`,"aria-describedby":void 0,children:(0,K.jsxs)(`div`,{className:`grid gap-4 my-4`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsxs)(Kd,{children:[`View Certificate: `,a]}),(0,K.jsx)(qd,{children:`Details of the selected certificate.`})]}),(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 text-sm bg-muted p-4 rounded-lg border border-border`,children:[(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Issuer`}),(0,K.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.issuer||`N/A`})]}),(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Subject`}),(0,K.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.subject||`N/A`})]}),e.details.subject_alt_name&&(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Subject Alternative Name`}),(0,K.jsx)(`p`,{className:`text-muted-foreground break-all`,children:e.details.subject_alt_name})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Valid From`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.details.valid_from?new Date(e.details.valid_from).toLocaleString():`N/A`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Valid To (Expires At)`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.details.valid_to?new Date(e.details.valid_to).toLocaleString():`N/A`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Serial Number`}),(0,K.jsx)(`p`,{className:`text-muted-foreground font-mono text-xs break-all`,children:e.details.serial_number||`N/A`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Private Key Name`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.private_key_name||`N/A`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Is Authority`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.is_authority?`Yes`:`No`})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Is Self-Signed`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.is_self_signed?`Yes`:`No`})]}),e.hosts&&e.hosts.length>0&&(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Hosts`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.hosts.join(`, `)})]}),(0,K.jsxs)(`div`,{className:`col-span-2`,children:[(0,K.jsx)(`p`,{className:`font-semibold`,children:`Uses`}),(0,K.jsx)(`p`,{className:`text-muted-foreground`,children:e.uses?.join(`, `)||`N/A`})]})]}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsx)(Al,{children:`Certificate Content`}),(0,K.jsx)(Zx,{autoComplete:`off`,autoCapitalize:`off`,rows:8,readOnly:!0,className:`font-mono text-xs`,value:e.certificate})]})]}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{type:`button`,variant:`destructiveOutline`,onClick:d,disabled:c,children:`Remove Certificate`}),(0,K.jsx)(H,{type:`button`,variant:`defaultOutline`,onClick:()=>n(),children:`Close`})]})})]})})}),(0,K.jsx)(Jd,{isModalOpen:l,setIsModalOpen:u,deletionConfirmed:f,deletionPending:c,typeOfThingBeingDeleted:`certificate`,presentParticiple:`Removing`,transitiveVerb:`Remove`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function aS(){let e=L(),{certName:t}=B({strict:!1}),n=q(),{data:r,refetch:i,isFetching:a,isRefetching:o}=F(Yx(n)),s=(0,G.useMemo)(()=>r?.find(e=>e.name===t),[r,t]),c=(0,G.useCallback)(n=>{let r=n?.original?.name,i=[t?`..`:``,r].filter(Boolean);e({to:i.join(`/`)})},[t,e]),l=!!t&&!!s,[u,d]=(0,G.useState)(!1),f=(0,G.useCallback)(()=>{d(!0)},[d]),p=H_(i);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(L_,{columns:Xx,data:r||[],isFetching:a,onRowClick:c,children:[(0,K.jsx)(V,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,to:`https://docs.harperdb.io/docs/developers/operations-api/certificate-management`,target:`_blank`,children:`Certificate Management Docs`}),(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:p,accessKey:`r`,disabled:a||o,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:f,accessKey:`a`,disabled:u,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),u&&(0,K.jsx)(tS,{isModalOpen:u,onChangesSaved:i,setIsModalOpen:d}),l&&(0,K.jsx)(iS,{isModalOpen:l,closeModal:c,data:s,onSelectCertificate:c,onChangesSaved:i})]})}var oS=new Set([`success`,`failed`,`rolled_back`]);function sS(e){return!!e&&oS.has(e)}var cS=2e3,lS=1e4;async function uS({instanceClient:e,project:t,status:n,since:r,until:i,limit:a,offset:o}){let{data:s}=await e.post(`/`,{operation:`list_deployments`,project:t,status:n,since:r,until:i,limit:a,offset:o});return s}function dS(e){let{entityId:t,project:n,status:r,since:i,until:a,limit:o,offset:s,pollWhileOpen:c}=e;return z({queryKey:[t,`list_deployments`,{project:n,status:r,since:i,until:a,limit:o,offset:s}],queryFn:()=>uS(e),retry:!1,enabled:e.enabled!==!1,refetchInterval:c?e=>(e.state.data?.deployments??[]).some(e=>!sS(e.status))?cS:lS:!1})}var fS={pending:`warning`,extracting:`warning`,installing:`warning`,loading:`warning`,replicating:`warning`,restarting:`warning`,success:`success`,failed:`destructive`,rolled_back:`destructive`},pS={pending:`Pending`,extracting:`Extracting`,installing:`Installing`,loading:`Loading`,replicating:`Replicating`,restarting:`Restarting`,success:`Success`,failed:`Failed`,rolled_back:`Rolled back`};function mS({status:e}){return(0,K.jsx)(Fs,{variant:fS[e]??`secondary`,children:pS[e]??e})}var hS=I_();function gS(e){return e?B_((Date.now()-e)/1e3,e):`—`}var _S=[{header:`Project`,accessorKey:`project`,enableSorting:!1},hS.display({header:`Status`,id:`status`,enableSorting:!1,cell:e=>(0,K.jsx)(mS,{status:e.row.original.status})}),hS.display({header:`Started`,id:`started_at`,enableSorting:!1,cell:e=>gS(e.row.original.started_at)}),hS.display({header:`Completed`,id:`completed_at`,enableSorting:!1,cell:e=>gS(e.row.original.completed_at)}),{header:`User`,accessorKey:`user`,enableSorting:!1},{header:`Origin`,accessorKey:`origin_node`,enableSorting:!1}];function vS({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,K.jsx)(bn,{"data-slot":`separator-root`,decorative:n,orientation:t,className:P(`bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,e),...r})}async function*yS(e,t){let n=e.getReader(),r=new TextDecoder(`utf-8`),i=``,a=!1;try{for(;;){if(t?.aborted)return;let{value:e,done:s}=await n.read();if(s){a=!0;break}i+=r.decode(e,{stream:!0}),yield*o()}if(i+=r.decode(),i.trim()){let e=bS(i);e&&(yield e)}}finally{a||n.cancel().catch(()=>{}),n.releaseLock()}function*o(){for(;;){let e=i.indexOf(`
21
21
 
22
22
  `),t=i.indexOf(`\r
23
23
  \r
24
- `),n=-1,r=0;if(e!==-1&&(t===-1||e<t)?(n=e,r=2):t!==-1&&(n=t,r=4),n===-1)return;let a=i.slice(0,n);i=i.slice(n+r);let o=hS(a);o&&(yield o)}}}function hS(e){let t=e.split(/\r?\n/),n=`message`,r,i,a=[];for(let e of t){if(e===``||e.startsWith(`:`))continue;let t=e.indexOf(`:`),o=t===-1?e:e.slice(0,t),s=t===-1?``:e.slice(t+1);switch(s.startsWith(` `)&&(s=s.slice(1)),o){case`event`:n=s;break;case`data`:a.push(s);break;case`id`:r=s;break;case`retry`:{let e=Number(s);Number.isFinite(e)&&(i=e);break}}}return a.length===0&&n===`message`?null:{event:n,data:a.join(`
25
- `),id:r,retry:i}}function gS(e){try{return JSON.parse(e.data)}catch{return e.data}}var _S=class extends Error{constructor(e,t){super(e,t),this.name=`SSEUnsupportedError`}},vS=class extends Error{constructor(e,t){super(e,t),this.name=`SSEInconclusiveError`}},yS=class extends Error{code;phase;deploymentId;constructor(e,t){super(e),this.name=`SSEOperationError`,this.code=t?.code,this.phase=t?.phase,this.deploymentId=t?.deploymentId}};function bS({id:e=m,operationsUrl:t,port:n,secure:r,forceFabricConnect:i,disableFabricConnect:a}={}){let o=t||u.getOperationsUrl(e);if(o&&(n||r!==void 0)){let e=new URL(o);n&&(e.port=String(n)),r!==void 0&&(e.protocol=r?`https:`:`http:`),o=e.toString()}let s=u.checkForBasicAuth(e),c=i||a||s?void 0:u.getOperationToken(e),l=!c&&!a&&(i||u.checkForFabricConnect(e));if(l&&(e.startsWith(`clu-`)?o=N.defaults.baseURL+`/Cluster/${e}/operation`:e.startsWith(`ins-`)&&(o=N.defaults.baseURL+`/HDBInstance/${e}/operation`)),!o)throw Error(`No operations URL is known for "${e}"; cannot open an SSE stream.`);let d={"Content-Type":`application/json`,Accept:`text/event-stream`};return c?d.Authorization=`Bearer ${c}`:s&&!l&&(d.Authorization=`Basic ${btoa(`${s.username}:${s.password}`)}`),{url:o.replace(/\/+$/,``)+`/`,headers:d,credentials:l||!s&&!c?`include`:`same-origin`,mode:l?`proxy`:`direct`}}async function xS({connection:e,body:t,signal:n,idleTimeoutMs:r=12e4,onMessage:i}){let{url:a,headers:o,credentials:s}=bS(e),c=new AbortController,{signal:l,cleanup:u}=SS([n,c.signal]),d,f=()=>{d&&clearTimeout(d),d=setTimeout(()=>c.abort(),r)};try{let e;try{f(),e=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(t),signal:l})}catch(e){throw n?.aborted?e:new _S(`Failed to open the SSE stream.`,{cause:e})}let r=e.headers.get(`content-type`)??``;if(!e.ok||!r.includes(`text/event-stream`)||!e.body)throw await e.body?.cancel().catch(()=>{}),new _S(`Server did not return an event stream (status ${e.status}, content-type "${r}").`);let u=!1,d;try{for await(let t of mS(e.body,l)){if(f(),i?.(t),t.event===`done`){u=!0;let e=gS(t);d=e?.result??e;break}if(t.event===`error`){u=!0;let e=gS(t);if(!e||typeof e!=`object`)throw new yS(typeof e==`string`&&e?e:`The operation failed.`);let n=e;throw new yS(jn(n.message)??`The operation failed.`,{code:n.code,phase:n.phase,deploymentId:n.deployment_id})}}}catch(e){throw c.signal.aborted&&!n?.aborted?new vS(`The stream went idle before completing.`,{cause:e}):e}if(!u)throw new vS(`The stream ended without a terminal event.`);return d}finally{clearTimeout(d),u()}}function SS(e){let t=()=>{},n=e.filter(e=>!!e);if(n.length===1)return{signal:n[0],cleanup:t};if(typeof AbortSignal.any==`function`)return{signal:AbortSignal.any(n),cleanup:t};let r=new AbortController;function i(){for(let e of n)e.removeEventListener(`abort`,a)}function a(e){r.abort(e.target.reason),i()}for(let e of n){if(e.aborted){r.abort(e.reason),i();break}e.addEventListener(`abort`,a)}return{signal:r.signal,cleanup:i}}var CS=[`prepare`,`load`,`replicate`,`restart`,`success`];async function wS({connection:e,package:t,project:n,replicated:r,install_command:i,restart:a,signal:o,onEvent:s}){return await xS({connection:e,body:{operation:`deploy_component`,package:t,project:n,replicated:r,install_command:i||void 0,restart:a},signal:o,onMessage:e=>{if(s)switch(e.event){case`phase`:s({type:`phase`,data:gS(e)});break;case`install`:s({type:`install`,data:gS(e)});break;case`peer`:s({type:`peer`,data:gS(e)})}}})??{}}var TS={prepare:`Prepare`,load:`Load`,replicate:`Replicate`,restart:`Restart`,success:`Finish`},ES=/Failed to deploy private repository\b|SSH access failed/i;function DS({status:e,isCurrent:t}){return e===`done`?(0,K.jsx)(kn,{className:`size-4 text-success`}):e===`error`?(0,K.jsx)(Io,{className:`size-4 text-destructive`}):e===`start`||t?(0,K.jsx)(Xi,{className:`size-4 animate-spin text-primary`}):(0,K.jsx)(Ir,{className:`size-4 text-muted-foreground`})}function OS({state:e,onNavigateAway:t}){let n=(0,G.useRef)(null),r=B({strict:!1});(0,G.useEffect)(()=>{n.current?.scrollIntoView({block:`end`})},[e.installLog.length]);let i=e.lifecycle===`error`;return(0,K.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,K.jsx)(`ol`,{className:`flex flex-col gap-2`,children:CS.map(t=>{let n=e.phases[t],r=e.currentPhase===t&&n!==`done`;return(0,K.jsxs)(`li`,{className:`flex items-center gap-2 text-sm`,children:[(0,K.jsx)(DS,{status:n,isCurrent:r}),(0,K.jsx)(`span`,{className:P(n?`text-foreground`:`text-muted-foreground`),children:TS[t]??t})]},t)})}),e.installLog.length>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(pS,{className:`mb-2`}),(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Install output`}),(0,K.jsx)(Is,{className:`h-40 rounded-md border bg-muted/40`,children:(0,K.jsxs)(`pre`,{className:`whitespace-pre-wrap break-words p-2 font-mono text-xs leading-relaxed`,children:[e.installLog.map(e=>(0,K.jsx)(`div`,{className:P(e.stream===`stderr`&&`text-destructive`),children:e.line},e.id)),(0,K.jsx)(`div`,{ref:n})]})})]}),e.peers.length>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(pS,{className:`mb-2`}),(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Replication`}),(0,K.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:e.peers.map((e,t)=>{let n=e.status===`failed`,r=jn(e.error??e.reason);return(0,K.jsxs)(`li`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[n?(0,K.jsx)(Io,{className:`size-4 text-destructive`}):(0,K.jsx)(kn,{className:`size-4 text-success`}),(0,K.jsx)(`span`,{className:`truncate`,children:e.node??`node ${t+1}`})]}),n&&r&&(0,K.jsx)(`span`,{className:`truncate text-xs text-destructive`,children:r})]},t)})})]}),i&&e.error&&(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 text-sm text-destructive`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Rr,{className:`mt-0.5 size-4 shrink-0`}),(0,K.jsx)(`span`,{children:e.error})]}),ES.test(e.error)&&(0,K.jsx)(V,{to:hx(r,`config/ssh-keys`),onClick:t,className:`self-start pl-6 underline`,children:`Manage SSH keys`})]}),e.lifecycle===`inconclusive`&&(0,K.jsx)(Fs,{variant:`warning`,className:`self-start`,children:`Live updates ended early — verifying…`})]})}var kS={lifecycle:`idle`,phases:{},installLog:[],peers:[]},AS=1e3;function jS(e,t){switch(t.kind){case`reset`:return kS;case`start`:return{...kS,lifecycle:`streaming`};case`event`:{let{event:n}=t;if(n.type===`phase`){let{phase:t,status:r}=n.data;return{...e,lifecycle:`streaming`,phases:{...e.phases,[t]:r},currentPhase:r===`start`?t:e.currentPhase}}if(n.type===`install`){let t=(e.installLog[e.installLog.length-1]?.id??0)+1,r=e.installLog.concat({id:t,stream:n.data.stream,line:n.data.line});return{...e,installLog:r.length>AS?r.slice(-1e3):r}}return{...e,peers:e.peers.concat(n.data)}}case`settled`:return{...e,lifecycle:t.lifecycle,error:t.error}}}function MS(){let[e,t]=(0,G.useReducer)(jS,kS),n=(0,G.useCallback)(e=>t({kind:`event`,event:e}),[]),r=(0,G.useCallback)(()=>t({kind:`start`}),[]),i=(0,G.useCallback)(()=>t({kind:`reset`}),[]),a=(0,G.useCallback)((e,n)=>t({kind:`settled`,lifecycle:e,error:n}),[]);return(0,G.useMemo)(()=>({state:e,onEvent:n,markStarted:r,markSettled:a,reset:i}),[e,n,r,a,i])}function NS({entityId:e,instanceClient:t}){return z({queryKey:[`registration_info`,e],staleTime:6e4,gcTime:5e3,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`registration_info`});return e}})}function PS(){let e=q(),{data:t}=F(NS(e));return!!t?.version&&of(`5.1.0`,t.version)}function FS(){let e=q();return PS()&&u.isDirectConnection(e.entityId)}async function IS({instanceClient:e,deploymentId:t}){let{data:n}=await e.post(`/`,{operation:`get_deployment`,deployment_id:t});return n}function LS(e){return z({queryKey:[e.entityId,`get_deployment`,e.deploymentId],queryFn:()=>IS(e),retry:!1,refetchInterval:t=>e.pollWhileActive&&!nS(t.state.data?.status)?2e3:!1})}async function RS({connection:e,deploymentId:t,signal:n,onEvent:r}){return await xS({connection:e,body:{operation:`get_deployment`,deployment_id:t},signal:n,onMessage:e=>{if(r)switch(e.event){case`phase`:r({type:`phase`,data:gS(e)});break;case`install`:r({type:`install`,data:gS(e)});break;case`peer`:r({type:`peer`,data:gS(e)})}}})??{}}function zS({label:e,value:t}){return t==null||t===``?null:(0,K.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e}),(0,K.jsx)(`span`,{className:`break-words text-sm`,children:t})]})}function BS(e){return e?B_((Date.now()-e)/1e3,e):void 0}function VS({deploymentId:e}){let t=q(),n=FS(),r=Me(),i=MS(),{data:a,isLoading:o,error:s}=F(LS({...t,deploymentId:e,pollWhileActive:!0})),c=!!a&&!nS(a.status);if((0,G.useEffect)(()=>{if(!n||!c)return;let a=new AbortController;return i.reset(),i.markStarted(),RS({connection:{id:t.entityId},deploymentId:e,signal:a.signal,onEvent:i.onEvent}).then(()=>i.markSettled(`success`)).catch(()=>{a.signal.aborted||i.markSettled(`inconclusive`)}).finally(()=>{a.signal.aborted||r.invalidateQueries({queryKey:[t.entityId,`get_deployment`,e]})}),()=>a.abort()},[n,c,e,t.entityId]),o)return(0,K.jsx)(gs,{className:`flex h-full flex-col items-center justify-center`,text:`Loading deployment...`});if(s||!a)return(0,K.jsx)(`div`,{className:`p-4 text-sm text-destructive`,children:`Could not load this deployment.`});let l=c&&(i.state.installLog.length>0||Object.keys(i.state.phases).length>0);return(0,K.jsxs)(`div`,{className:`flex flex-col gap-4 p-1`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`h2`,{className:`text-lg font-semibold`,children:a.project}),(0,K.jsx)(lS,{status:a.status}),a.phase&&(0,K.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:a.phase})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 md:grid-cols-3`,children:[(0,K.jsx)(zS,{label:`Deployment ID`,value:(0,K.jsx)(`span`,{className:`font-mono text-xs`,children:a.deployment_id})}),(0,K.jsx)(zS,{label:`User`,value:a.user}),(0,K.jsx)(zS,{label:`Origin node`,value:a.origin_node}),(0,K.jsx)(zS,{label:`Started`,value:BS(a.started_at)}),(0,K.jsx)(zS,{label:`Completed`,value:BS(a.completed_at)}),(0,K.jsx)(zS,{label:`Restart mode`,value:a.restart_mode??void 0}),(0,K.jsx)(zS,{label:`Package`,value:a.package_identifier??void 0}),(0,K.jsx)(zS,{label:`Payload size`,value:a.payload_size==null?void 0:qg(a.payload_size)}),(0,K.jsx)(zS,{label:`Payload hash`,value:a.payload_hash?(0,K.jsx)(`span`,{className:`font-mono text-xs`,children:a.payload_hash}):void 0}),(0,K.jsx)(zS,{label:`Restorable`,value:a.restorable===void 0?void 0:a.restorable?`Yes`:`No`}),(0,K.jsx)(zS,{label:`Rollback of`,value:a.rollback_of?(0,K.jsx)(`span`,{className:`font-mono text-xs`,children:a.rollback_of}):void 0})]}),l&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(pS,{}),(0,K.jsx)(OS,{state:i.state})]}),a.error&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(pS,{}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-1 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm`,children:[(0,K.jsxs)(`span`,{className:`font-medium text-destructive`,children:[`Error`,typeof a.error.phase==`string`&&a.error.phase?` during ${a.error.phase}`:``,typeof a.error.code==`string`||typeof a.error.code==`number`?` (${a.error.code})`:``]}),(0,K.jsx)(`span`,{className:`break-words`,children:jn(a.error)??`Unknown error`})]})]}),!!a.peer_results?.length&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(pS,{}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Replication`}),(0,K.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:a.peer_results.map((e,t)=>{let n=jn(e.error);return(0,K.jsxs)(`li`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:e.node}),(0,K.jsxs)(`span`,{className:e.status===`failed`?`text-destructive`:`text-success`,children:[e.status??`ok`,n?`: ${n}`:``]})]},e.node??t)})})]})]}),!!a.event_log?.length&&(0,K.jsx)(HS,{deployment:a})]})}function HS({deployment:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(pS,{}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Activity`}),(0,K.jsx)(`ol`,{className:`flex flex-col gap-1 text-xs`,children:e.event_log.map((e,t)=>(0,K.jsxs)(`li`,{className:`flex gap-2`,children:[(0,K.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:new Date(e.t).toLocaleTimeString()}),(0,K.jsx)(`span`,{className:`font-medium`,children:e.event}),(0,K.jsx)(`span`,{className:`break-words text-muted-foreground`,children:typeof e.data==`string`?e.data:JSON.stringify(e.data)})]},t))})]})]})}function US({deploymentId:e,isModalOpen:t,closeModal:n}){return(0,K.jsx)(Id,{onOpenChange:n,open:t,children:(0,K.jsxs)(Ud,{resizable:!0,"aria-describedby":void 0,children:[(0,K.jsx)(Wd,{children:(0,K.jsx)(Kd,{children:`Deployment`})}),(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,K.jsx)(VS,{deploymentId:e})})]})})}function WS(){let e=L(),t=Np(),{deploymentId:n}=B({strict:!1}),r=q(),{data:i,isFetching:a,isRefetching:o,refetch:s,error:c}=F(oS({...r,limit:100,enabled:t,pollWhileOpen:!0})),l=(0,G.useMemo)(()=>i?.deployments??[],[i]),u=(0,G.useCallback)(t=>{let r=[n?`..`:``,t].filter(Boolean);e({to:r.join(`/`)||`.`})},[n,e]),d=(0,G.useCallback)(e=>u(e.original.deployment_id),[u]),f=(0,G.useCallback)(()=>u(void 0),[u]),p=H_(s);return t?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(L_,{data:l,isFetching:a||o,columns:fS,onRowClick:d,children:(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:p,accessKey:`r`,disabled:a||o,children:[(0,K.jsx)(Ra,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]})}),c&&(0,K.jsx)(`div`,{className:`mt-2 text-sm text-muted-foreground`,children:`Could not load deployments. This instance may not support deployment history.`}),!c&&!a&&l.length===0&&(0,K.jsx)(`div`,{className:`mt-2 text-sm text-muted-foreground`,children:`No deployments yet.`}),!!n&&(0,K.jsx)(US,{deploymentId:n,isModalOpen:!0,closeModal:f})]}):(0,K.jsx)(`div`,{className:`p-2 text-sm text-muted-foreground`,children:`Viewing deployments requires super-user permissions on this instance.`})}function GS(){return(0,K.jsx)(Gb,{})}var KS=`flex items-center p-2 rounded-lg group`,qS={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-gray-700`},JS={className:`text-black bg-white pointer-events-none cursor-default`};function YS(){let e=B({strict:!1}),{version:t}=_e({strict:!1}),n=of(`4.6.0`,t),r=of(`5.1.0`,t),i=of(`5.2.0-alpha.1`,t),{clusterId:a}=e,o=Np(),{data:s}=F(ql(a,!1));s===void 0||Bp(s);let c=o&&(0,K.jsxs)(K.Fragment,{children:[n&&(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:hx(e,`config/certificates`),className:KS,inactiveProps:qS,activeProps:JS,children:[(0,K.jsx)(no,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Certificates`})]})}),r&&(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:hx(e,`config/deployments`),className:KS,inactiveProps:qS,activeProps:JS,children:[(0,K.jsx)(Ba,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Deployments`})]})}),!1,(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:hx(e,`config/roles`),className:KS,inactiveProps:qS,activeProps:JS,children:[(0,K.jsx)(Mi,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Roles`})]})}),i&&(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:hx(e,`config/secrets`),className:KS,inactiveProps:qS,activeProps:JS,children:[(0,K.jsx)(ea,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Secrets`})]})}),n&&(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:hx(e,`config/ssh-keys`),className:KS,inactiveProps:qS,activeProps:JS,children:[(0,K.jsx)(Bi,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`SSH Keys`})]})}),(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:hx(e,`config/users`),className:KS,inactiveProps:qS,activeProps:JS,children:[(0,K.jsx)(Po,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Users`})]})})]});return(0,K.jsxs)(`div`,{className:`md:grid gap-4 md:grid-cols-12 min-h-[calc(100vh-(--spacing(36)))]`,children:[(0,K.jsxs)(`section`,{className:`col-span-1 text-foreground md:col-span-4 lg:col-span-3 md:border-r border-b md:border-b-0 md:pr-4 border-gray-700`,children:[(0,K.jsx)(XS,{params:e,children:c}),(0,K.jsx)(ZS,{params:e,children:c})]}),(0,K.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9 md:pt-4`,children:(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:(0,K.jsx)($e,{})})})]})}function XS({params:e,children:t}){return(0,K.jsxs)(`div`,{className:`hidden md:block pl-4 pt-4`,children:[(0,K.jsxs)(V,{to:hx(e,`config`),className:KS,activeOptions:{exact:!0},inactiveProps:qS,activeProps:JS,children:[(0,K.jsx)(wr,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Overview`})]}),t&&(0,K.jsx)(`ul`,{className:`border-t border-gray-700 pt-4 mt-4 space-y-2`,children:t})]})}function ZS({params:e,children:t}){return(0,K.jsxs)(`ul`,{className:`flex space-x-2 md:hidden py-2 px-4`,children:[(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:hx(e,`config`),className:KS,activeOptions:{exact:!0},inactiveProps:qS,activeProps:JS,children:[(0,K.jsx)(wr,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Overview`})]})}),t]})}async function QS(e,t=3,n=1e3){let r=0;if(t<=0)throw Error(`retries must be greater than 0`);let i;for(;r<t;)try{return await e()}catch(e){if(r++,i=e,r===t)break;await h(n)}throw i}async function $S({operation:e,replicated:t,instanceClient:n}){let{data:i}=await n.post(`/`,{operation:e,service:e===`restart_service`?`http`:void 0,replicated:t},{skipRestartGate:!0});return await h(1e4),await QS(()=>r({instanceClient:n,timeout:3e3,skipRestartGate:!0}),12,15e3),i}function eC(){return R({mutationFn:$S})}var tC=3e5;function nC({onRestartedSuccessfully:e}={}){let{clusterId:t}=B({strict:!1}),[i,a]=(0,G.useState)(!1);return{onRestartClick:(0,G.useCallback)(async()=>{if(!t)throw Error(`clusterId must be set in the route to invoke useRestartClusterClick`);a(!0);let i=!1,o={duration:6e4,action:{label:`Cancel`,onClick:()=>{i=!0}}},s=U.loading(`Restarting`,{...o,description:(0,K.jsx)(zm,{animated:!0,width:`0%`})}),c=await Gl(t),l=u.checkForFabricConnect(c.id),d=c?.instances??[],f=d.filter(e=>e.status===`RUNNING`).reverse(),m=f.map(e=>n({id:e.id,forceFabricConnect:l,operationsUrl:p(e)})),g=0,v=ue([t],{reach:f.length===1?`down`:`rolling`,ttlMs:(f.length+1)*tC});try{for(let e=0;e<m.length;e++){let t=m[e];if(!i){U.loading(`Restarting Instance ${e+1} of ${m.length}`,{...o,id:s,description:(0,K.jsx)(zm,{animated:!0,width:(e===0?0:e/m.length*100)+`%`})});let n;try{await r({instanceClient:t,skipRestartGate:!0}),n=ue([f[e].id],{reach:`down`,ttlMs:tC}),await $S({operation:`restart`,replicated:!1,instanceClient:t}),g+=1}catch{e+1!==m.length&&(U.loading(`Failed Restarting Instance ${e+1} of ${m.length}`,{...o,id:s,description:`We will carry on momentarily.`}),await h(3e3))}finally{n?.()}}}}finally{v()}if(a(!1),i)U.error(`Cancelled`,{id:s,description:`The restart was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});else if(d.length===g)e?.(),U.success(`Success`,{id:s,description:`Cluster fully restarted!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});else{let e=_(d.length,`instance`,`instances`),t=_(g,`"RUNNING" instance was`,`"RUNNING" instances were`);U.error(`Error`,{id:s,description:`Failed to fully restart cluster.
26
- `+([d.length===0&&`No instances were found within the cluster to restart.`,g===0&&`No instances were in a "RUNNING" state of ${e}.`,d.length!==g&&`Only ${t} restarted of ${e}.`].filter($c).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}},[t,e]),isRestartPending:i}}function rC({operation:e,instanceClient:t,onRestartedSuccessfully:n}){let{clusterId:r,instanceId:i}=B({strict:!1}),a=`Instance`,{mutateAsync:o,isPending:s}=eC(),c=Me();return{onRestartClick:(0,G.useCallback)(async()=>{let s=U.loading(`Restarting`,{description:`Restarting instance. This may take up to 60 seconds.`,duration:18e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),l=m,u=e===`restart`&&l?ue([l],{reach:`down`,ttlMs:3e5}):void 0;try{await o({operation:e,replicated:e===`restart_service`&&!1,instanceClient:t});for(let e of[r,i])(!u||e!==l)&&Go(c,e);U.dismiss(s),U.success(`Success`,{description:`${a} restarted!`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),n?.()}catch{U.dismiss(s),U.error(`Error`,{description:`Failed to restart instance.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}finally{u?.()}},[r,t,i,n,e,c,o,a]),isRestartPending:s}}function iC({className:e,disabled:t,hideText:n,instanceClient:r,operation:i,targetNoun:a,tooltip:o,variant:s}){let{onRestartClick:c,isRestartPending:l}=nC(),{onRestartClick:u,isRestartPending:d}=rC({operation:i,instanceClient:r});return(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsxs)(H,{type:`button`,variant:s||`positiveOutline`,className:y(`mx-0 md:mx-4`,e),onClick:a===`Cluster`&&i===`restart`?c:u,disabled:t||d||l,title:`Restart ${a}`,children:[(0,K.jsx)(Ha,{className:`pointer-events-none`}),n!==!0&&(0,K.jsxs)(`span`,{className:`hidden md:inline-block pointer-events-none`,children:[`Restart `,(0,K.jsx)(`span`,{className:`hidden 2xl:inline-block`,children:a})]})]})}),(0,K.jsx)(Tc,{side:`bottom`,children:o||(i===`restart_service`?`Restarts all service threads to apply changes. No downtime expected. Performance may be briefly slower during restart.`:`This fully restarts the Harper service and causes downtime.`)})]})}async function aC({clusterId:e,instanceId:t}){return null}function oC(e){return z({queryKey:[e.clusterId,e.instanceId],queryFn:()=>aC(e),retry:!1})}var sC=({loadingRegistration:e,registrationInfo:t})=>{let n=!!t?.version&&parseInt(t.version[0],10)>=5&&`https://github.com/HarperFast/harper/releases/tag/v${t.version}`;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Harper Version`}),(0,K.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,K.jsx)(Sg,{className:`w-10`}):n?(0,K.jsx)(`a`,{href:n,target:`_blank`,className:`underline hover:text-blue-300`,rel:`noopener noreferrer`,children:t.version}):t?.version||`Unknown`})]})},cC=({loading:e,timestamp:t})=>{let n=t?new Date(t).toLocaleString():`Never`;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Last Deployed`}),(0,K.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,K.jsx)(Sg,{className:`w-24`}):n})]})};async function lC({instanceClient:e,...t}){let{data:n}=await e.post(`/`,{operation:`set_configuration`,...t});return n}function uC({onRestartedSuccessfully:e}={}){let t=q(),i=Me(),[a,o]=(0,G.useState)(!1);return{onConfigUpdate:(0,G.useCallback)(async a=>{o(!0);let s=!1,c={duration:6e4,action:{label:`Cancel`,onClick:()=>{s=!0}}},l=U.loading(`Restarting`,{...c,description:(0,K.jsx)(zm,{animated:!0,width:`0%`})}),d=t.entityType===`cluster`?await Gl(t.entityId):null,f=t.entityType===`cluster`?d?.instances||[]:[{id:t.entityId,status:`RUNNING`}],m=!!d&&u.checkForFabricConnect(d.id),g=t.entityType===`cluster`?f.filter(e=>e.status===`RUNNING`).map(e=>n({id:e.id,forceFabricConnect:m,operationsUrl:p(e)})).reverse():[t.instanceClient],v=0;if(g.length)for(let e=0;e<g.length;e++){let t=g[e];if(!s){U.loading(`Updating Instance ${e+1} of ${g.length}`,{...c,id:l,description:(0,K.jsx)(zm,{animated:!0,width:(e===0?0:e/g.length*100)+`%`})});try{await r({instanceClient:t}),await lC({...a,instanceClient:t}),await $S({operation:`restart_service`,replicated:!1,instanceClient:t}),v+=1}catch{e+1!==g.length&&(U.loading(`Failed Restarting Instance ${e+1} of ${g.length}`,{...c,id:l,description:`We will carry on momentarily.`}),await h(3e3))}}}if(o(!1),i.invalidateQueries({queryKey:[`get_configuration`,t.entityId]}),s)U.error(`Cancelled`,{id:l,description:`The config update was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});else if(f.length===v)e?.(),U.success(`Success`,{id:l,description:`Your configuration has been updated successfully!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});else{let e=_(f.length,`instance`,`instances`),t=_(v,`"RUNNING" instance was`,`"RUNNING" instances were`);U.error(`Error`,{id:l,description:`Failed to fully update cluster.
27
- `+([f.length===0&&`No instances were found within the cluster to restart.`,v===0&&`No instances were in a "RUNNING" state of ${e}.`,f.length!==v&&`Only ${t} restarted of ${e}.`].filter($c).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}},[t,e,i]),isPending:a}}async function dC({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_components`});return t}function fC(e){return z({queryKey:[e.entityId,`get_components`],queryFn:()=>dC(e),retry:!1,enabled:e.enabled!==!1})}function pC({entityId:e,instanceClient:t}){return z({queryKey:[`get_configuration`,e],queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_configuration`});return e}})}function mC({entityId:e,instanceClient:t},n){return z({queryKey:[`get_usage_licenses`,e],enabled:n,queryFn:async()=>{try{let{data:e}=await t.post(`/`,{operation:`get_usage_licenses`});return e}catch(e){return console.error(e),null}}})}var hC={http:{port:`blocked`,securePort:`blocked`},threads:`blocked`,authentication:{enableSessions:`blocked`},logging:{auditLog:`blocked`,root:`blocked`,rotation:{path:`blocked`}},mqtt:{network:{port:`blocked`,securePort:`blocked`}},operationsApi:{network:{domainSocket:`blocked`,port:`blocked`,securePort:`blocked`}},rootPath:`blocked`,replication:`blocked_except_databases`,storage:`blocked`,tls:`blocked`,node:`blocked`,license:`blocked`,componentsRoot:`blocked`,analytics:`allowed`,applications:`allowed`,localStudio:`allowed`};function gC(e,t,n){if(JSON.stringify(t)===JSON.stringify(n))return!1;let r=e.split(`.`),i=hC;for(let e=0;e<r.length;e++){let t=r[e];if(i===`blocked`)return!0;if(i===`blocked_except_databases`)return t!==`databases`;if(typeof i==`object`&&i&&t in i)i=i[t];else return!1}return i===`blocked`}function _C(e,t=hC){if(typeof e!=`object`||!e)return e;let n=Array.isArray(e)?[]:{};for(let r in e){let i=e[r],a=t?.[r];if(a!==`blocked`){if(a===`blocked_except_databases`){i&&typeof i==`object`&&`databases`in i&&(n.replication={databases:i.databases});continue}if(typeof a==`object`&&a){let e=_C(i,a);e!==void 0&&(typeof e!=`object`||Object.keys(e).length>0)&&(n[r]=e)}else n[r]=i}}return n}function vC(e,t){if(typeof e!=`object`||!e||typeof t!=`object`||!t)return JSON.stringify(e)===JSON.stringify(t)?void 0:t;let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=e[i],a=t[i];if(typeof r==`object`&&r&&typeof a==`object`&&a&&!Array.isArray(r)&&!Array.isArray(a)){let e=vC(r,a);Object.keys(e).length>0&&(n[i]=e)}else JSON.stringify(r)!==JSON.stringify(a)&&(n[i]=a)}return n}function yC(e,t=``){let n={};for(let r in e){let i=e[r],a=t?`${t}_${r}`:r;typeof i==`object`&&i&&!Array.isArray(i)?Object.assign(n,yC(i,a)):n[a]=i}return n}var bC=JSON.parse(`{
24
+ `),n=-1,r=0;if(e!==-1&&(t===-1||e<t)?(n=e,r=2):t!==-1&&(n=t,r=4),n===-1)return;let a=i.slice(0,n);i=i.slice(n+r);let o=bS(a);o&&(yield o)}}}function bS(e){let t=e.split(/\r?\n/),n=`message`,r,i,a=[];for(let e of t){if(e===``||e.startsWith(`:`))continue;let t=e.indexOf(`:`),o=t===-1?e:e.slice(0,t),s=t===-1?``:e.slice(t+1);switch(s.startsWith(` `)&&(s=s.slice(1)),o){case`event`:n=s;break;case`data`:a.push(s);break;case`id`:r=s;break;case`retry`:{let e=Number(s);Number.isFinite(e)&&(i=e);break}}}return a.length===0&&n===`message`?null:{event:n,data:a.join(`
25
+ `),id:r,retry:i}}function xS(e){try{return JSON.parse(e.data)}catch{return e.data}}var SS=class extends Error{constructor(e,t){super(e,t),this.name=`SSEUnsupportedError`}},CS=class extends Error{constructor(e,t){super(e,t),this.name=`SSEInconclusiveError`}},wS=class extends Error{code;phase;deploymentId;constructor(e,t){super(e),this.name=`SSEOperationError`,this.code=t?.code,this.phase=t?.phase,this.deploymentId=t?.deploymentId}};function TS({id:e=m,operationsUrl:t,port:n,secure:r,forceFabricConnect:i,disableFabricConnect:a}={}){let o=t||u.getOperationsUrl(e);if(o&&(n||r!==void 0)){let e=new URL(o);n&&(e.port=String(n)),r!==void 0&&(e.protocol=r?`https:`:`http:`),o=e.toString()}let s=u.checkForBasicAuth(e),c=i||a||s?void 0:u.getOperationToken(e),l=!c&&!a&&(i||u.checkForFabricConnect(e));if(l&&(e.startsWith(`clu-`)?o=N.defaults.baseURL+`/Cluster/${e}/operation`:e.startsWith(`ins-`)&&(o=N.defaults.baseURL+`/HDBInstance/${e}/operation`)),!o)throw Error(`No operations URL is known for "${e}"; cannot open an SSE stream.`);let d={"Content-Type":`application/json`,Accept:`text/event-stream`};return c?d.Authorization=`Bearer ${c}`:s&&!l&&(d.Authorization=`Basic ${btoa(`${s.username}:${s.password}`)}`),{url:o.replace(/\/+$/,``)+`/`,headers:d,credentials:l||!s&&!c?`include`:`same-origin`,mode:l?`proxy`:`direct`}}async function ES({connection:e,body:t,signal:n,idleTimeoutMs:r=12e4,onMessage:i}){let{url:a,headers:o,credentials:s}=TS(e),c=new AbortController,{signal:l,cleanup:u}=DS([n,c.signal]),d,f=()=>{d&&clearTimeout(d),d=setTimeout(()=>c.abort(),r)};try{let e;try{f(),e=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(t),signal:l})}catch(e){throw n?.aborted?e:new SS(`Failed to open the SSE stream.`,{cause:e})}let r=e.headers.get(`content-type`)??``;if(!e.ok||!r.includes(`text/event-stream`)||!e.body)throw await e.body?.cancel().catch(()=>{}),new SS(`Server did not return an event stream (status ${e.status}, content-type "${r}").`);let u=!1,d;try{for await(let t of yS(e.body,l)){if(f(),i?.(t),t.event===`done`){u=!0;let e=xS(t);d=e?.result??e;break}if(t.event===`error`){u=!0;let e=xS(t);if(!e||typeof e!=`object`)throw new wS(typeof e==`string`&&e?e:`The operation failed.`);let n=e;throw new wS(jn(n.message)??`The operation failed.`,{code:n.code,phase:n.phase,deploymentId:n.deployment_id})}}}catch(e){throw c.signal.aborted&&!n?.aborted?new CS(`The stream went idle before completing.`,{cause:e}):e}if(!u)throw new CS(`The stream ended without a terminal event.`);return d}finally{clearTimeout(d),u()}}function DS(e){let t=()=>{},n=e.filter(e=>!!e);if(n.length===1)return{signal:n[0],cleanup:t};if(typeof AbortSignal.any==`function`)return{signal:AbortSignal.any(n),cleanup:t};let r=new AbortController;function i(){for(let e of n)e.removeEventListener(`abort`,a)}function a(e){r.abort(e.target.reason),i()}for(let e of n){if(e.aborted){r.abort(e.reason),i();break}e.addEventListener(`abort`,a)}return{signal:r.signal,cleanup:i}}var OS=[`prepare`,`load`,`replicate`,`restart`,`success`];async function kS({connection:e,package:t,project:n,replicated:r,install_command:i,restart:a,signal:o,onEvent:s}){return await ES({connection:e,body:{operation:`deploy_component`,package:t,project:n,replicated:r,install_command:i||void 0,restart:a},signal:o,onMessage:e=>{if(s)switch(e.event){case`phase`:s({type:`phase`,data:xS(e)});break;case`install`:s({type:`install`,data:xS(e)});break;case`peer`:s({type:`peer`,data:xS(e)})}}})??{}}var AS={prepare:`Prepare`,load:`Load`,replicate:`Replicate`,restart:`Restart`,success:`Finish`},jS=/Failed to deploy private repository\b|SSH access failed/i;function MS({status:e,isCurrent:t}){return e===`done`?(0,K.jsx)(kn,{className:`size-4 text-success`}):e===`error`?(0,K.jsx)(Io,{className:`size-4 text-destructive`}):e===`start`||t?(0,K.jsx)(Xi,{className:`size-4 animate-spin text-primary`}):(0,K.jsx)(Ir,{className:`size-4 text-muted-foreground`})}function NS({state:e,onNavigateAway:t}){let n=(0,G.useRef)(null),r=B({strict:!1});(0,G.useEffect)(()=>{n.current?.scrollIntoView({block:`end`})},[e.installLog.length]);let i=e.lifecycle===`error`;return(0,K.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,K.jsx)(`ol`,{className:`flex flex-col gap-2`,children:OS.map(t=>{let n=e.phases[t],r=e.currentPhase===t&&n!==`done`;return(0,K.jsxs)(`li`,{className:`flex items-center gap-2 text-sm`,children:[(0,K.jsx)(MS,{status:n,isCurrent:r}),(0,K.jsx)(`span`,{className:P(n?`text-foreground`:`text-muted-foreground`),children:AS[t]??t})]},t)})}),e.installLog.length>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(vS,{className:`mb-2`}),(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Install output`}),(0,K.jsx)(Is,{className:`h-40 rounded-md border bg-muted/40`,children:(0,K.jsxs)(`pre`,{className:`whitespace-pre-wrap break-words p-2 font-mono text-xs leading-relaxed`,children:[e.installLog.map(e=>(0,K.jsx)(`div`,{className:P(e.stream===`stderr`&&`text-destructive`),children:e.line},e.id)),(0,K.jsx)(`div`,{ref:n})]})})]}),e.peers.length>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(vS,{className:`mb-2`}),(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Replication`}),(0,K.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:e.peers.map((e,t)=>{let n=e.status===`failed`,r=jn(e.error??e.reason);return(0,K.jsxs)(`li`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2`,children:[n?(0,K.jsx)(Io,{className:`size-4 text-destructive`}):(0,K.jsx)(kn,{className:`size-4 text-success`}),(0,K.jsx)(`span`,{className:`truncate`,children:e.node??`node ${t+1}`})]}),n&&r&&(0,K.jsx)(`span`,{className:`truncate text-xs text-destructive`,children:r})]},t)})})]}),i&&e.error&&(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 text-sm text-destructive`,children:[(0,K.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,K.jsx)(Rr,{className:`mt-0.5 size-4 shrink-0`}),(0,K.jsx)(`span`,{children:e.error})]}),jS.test(e.error)&&(0,K.jsx)(V,{to:bx(r,`config/ssh-keys`),onClick:t,className:`self-start pl-6 underline`,children:`Manage SSH keys`})]}),e.lifecycle===`inconclusive`&&(0,K.jsx)(Fs,{variant:`warning`,className:`self-start`,children:`Live updates ended early — verifying…`})]})}var PS={lifecycle:`idle`,phases:{},installLog:[],peers:[]},FS=1e3;function IS(e,t){switch(t.kind){case`reset`:return PS;case`start`:return{...PS,lifecycle:`streaming`};case`event`:{let{event:n}=t;if(n.type===`phase`){let{phase:t,status:r}=n.data;return{...e,lifecycle:`streaming`,phases:{...e.phases,[t]:r},currentPhase:r===`start`?t:e.currentPhase}}if(n.type===`install`){let t=(e.installLog[e.installLog.length-1]?.id??0)+1,r=e.installLog.concat({id:t,stream:n.data.stream,line:n.data.line});return{...e,installLog:r.length>FS?r.slice(-1e3):r}}return{...e,peers:e.peers.concat(n.data)}}case`settled`:return{...e,lifecycle:t.lifecycle,error:t.error}}}function LS(){let[e,t]=(0,G.useReducer)(IS,PS),n=(0,G.useCallback)(e=>t({kind:`event`,event:e}),[]),r=(0,G.useCallback)(()=>t({kind:`start`}),[]),i=(0,G.useCallback)(()=>t({kind:`reset`}),[]),a=(0,G.useCallback)((e,n)=>t({kind:`settled`,lifecycle:e,error:n}),[]);return(0,G.useMemo)(()=>({state:e,onEvent:n,markStarted:r,markSettled:a,reset:i}),[e,n,r,a,i])}function RS({entityId:e,instanceClient:t}){return z({queryKey:[`registration_info`,e],staleTime:6e4,gcTime:5e3,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`registration_info`});return e}})}function zS(){let e=q(),{data:t}=F(RS(e));return!!t?.version&&of(`5.1.0`,t.version)}function BS(){let e=q();return zS()&&u.isDirectConnection(e.entityId)}async function VS({instanceClient:e,deploymentId:t}){let{data:n}=await e.post(`/`,{operation:`get_deployment`,deployment_id:t});return n}function HS(e){return z({queryKey:[e.entityId,`get_deployment`,e.deploymentId],queryFn:()=>VS(e),retry:!1,refetchInterval:t=>e.pollWhileActive&&!sS(t.state.data?.status)?2e3:!1})}async function US({connection:e,deploymentId:t,signal:n,onEvent:r}){return await ES({connection:e,body:{operation:`get_deployment`,deployment_id:t},signal:n,onMessage:e=>{if(r)switch(e.event){case`phase`:r({type:`phase`,data:xS(e)});break;case`install`:r({type:`install`,data:xS(e)});break;case`peer`:r({type:`peer`,data:xS(e)})}}})??{}}function WS({label:e,value:t}){return t==null||t===``?null:(0,K.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,K.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e}),(0,K.jsx)(`span`,{className:`break-words text-sm`,children:t})]})}function GS(e){return e?B_((Date.now()-e)/1e3,e):void 0}function KS({deploymentId:e}){let t=q(),n=BS(),r=Me(),i=LS(),{data:a,isLoading:o,error:s}=F(HS({...t,deploymentId:e,pollWhileActive:!0})),c=!!a&&!sS(a.status);if((0,G.useEffect)(()=>{if(!n||!c)return;let a=new AbortController;return i.reset(),i.markStarted(),US({connection:{id:t.entityId},deploymentId:e,signal:a.signal,onEvent:i.onEvent}).then(()=>i.markSettled(`success`)).catch(()=>{a.signal.aborted||i.markSettled(`inconclusive`)}).finally(()=>{a.signal.aborted||r.invalidateQueries({queryKey:[t.entityId,`get_deployment`,e]})}),()=>a.abort()},[n,c,e,t.entityId]),o)return(0,K.jsx)(gs,{className:`flex h-full flex-col items-center justify-center`,text:`Loading deployment...`});if(s||!a)return(0,K.jsx)(`div`,{className:`p-4 text-sm text-destructive`,children:`Could not load this deployment.`});let l=c&&(i.state.installLog.length>0||Object.keys(i.state.phases).length>0);return(0,K.jsxs)(`div`,{className:`flex flex-col gap-4 p-1`,children:[(0,K.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,K.jsx)(`h2`,{className:`text-lg font-semibold`,children:a.project}),(0,K.jsx)(mS,{status:a.status}),a.phase&&(0,K.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:a.phase})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 md:grid-cols-3`,children:[(0,K.jsx)(WS,{label:`Deployment ID`,value:(0,K.jsx)(`span`,{className:`font-mono text-xs`,children:a.deployment_id})}),(0,K.jsx)(WS,{label:`User`,value:a.user}),(0,K.jsx)(WS,{label:`Origin node`,value:a.origin_node}),(0,K.jsx)(WS,{label:`Started`,value:GS(a.started_at)}),(0,K.jsx)(WS,{label:`Completed`,value:GS(a.completed_at)}),(0,K.jsx)(WS,{label:`Restart mode`,value:a.restart_mode??void 0}),(0,K.jsx)(WS,{label:`Package`,value:a.package_identifier??void 0}),(0,K.jsx)(WS,{label:`Payload size`,value:a.payload_size==null?void 0:qg(a.payload_size)}),(0,K.jsx)(WS,{label:`Payload hash`,value:a.payload_hash?(0,K.jsx)(`span`,{className:`font-mono text-xs`,children:a.payload_hash}):void 0}),(0,K.jsx)(WS,{label:`Restorable`,value:a.restorable===void 0?void 0:a.restorable?`Yes`:`No`}),(0,K.jsx)(WS,{label:`Rollback of`,value:a.rollback_of?(0,K.jsx)(`span`,{className:`font-mono text-xs`,children:a.rollback_of}):void 0})]}),l&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(vS,{}),(0,K.jsx)(NS,{state:i.state})]}),a.error&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(vS,{}),(0,K.jsxs)(`div`,{className:`flex flex-col gap-1 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm`,children:[(0,K.jsxs)(`span`,{className:`font-medium text-destructive`,children:[`Error`,typeof a.error.phase==`string`&&a.error.phase?` during ${a.error.phase}`:``,typeof a.error.code==`string`||typeof a.error.code==`number`?` (${a.error.code})`:``]}),(0,K.jsx)(`span`,{className:`break-words`,children:jn(a.error)??`Unknown error`})]})]}),!!a.peer_results?.length&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(vS,{}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Replication`}),(0,K.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:a.peer_results.map((e,t)=>{let n=jn(e.error);return(0,K.jsxs)(`li`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsx)(`span`,{className:`truncate`,children:e.node}),(0,K.jsxs)(`span`,{className:e.status===`failed`?`text-destructive`:`text-success`,children:[e.status??`ok`,n?`: ${n}`:``]})]},e.node??t)})})]})]}),!!a.event_log?.length&&(0,K.jsx)(qS,{deployment:a})]})}function qS({deployment:e}){return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(vS,{}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:`mb-1 text-xs font-medium text-muted-foreground`,children:`Activity`}),(0,K.jsx)(`ol`,{className:`flex flex-col gap-1 text-xs`,children:e.event_log.map((e,t)=>(0,K.jsxs)(`li`,{className:`flex gap-2`,children:[(0,K.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:new Date(e.t).toLocaleTimeString()}),(0,K.jsx)(`span`,{className:`font-medium`,children:e.event}),(0,K.jsx)(`span`,{className:`break-words text-muted-foreground`,children:typeof e.data==`string`?e.data:JSON.stringify(e.data)})]},t))})]})]})}function JS({deploymentId:e,isModalOpen:t,closeModal:n}){return(0,K.jsx)(Id,{onOpenChange:n,open:t,children:(0,K.jsxs)(Ud,{resizable:!0,"aria-describedby":void 0,children:[(0,K.jsx)(Wd,{children:(0,K.jsx)(Kd,{children:`Deployment`})}),(0,K.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,K.jsx)(KS,{deploymentId:e})})]})})}function YS(){let e=L(),t=Np(),{deploymentId:n}=B({strict:!1}),r=q(),{data:i,isFetching:a,isRefetching:o,refetch:s,error:c}=F(dS({...r,limit:100,enabled:t,pollWhileOpen:!0})),l=(0,G.useMemo)(()=>i?.deployments??[],[i]),u=(0,G.useCallback)(t=>{let r=[n?`..`:``,t].filter(Boolean);e({to:r.join(`/`)||`.`})},[n,e]),d=(0,G.useCallback)(e=>u(e.original.deployment_id),[u]),f=(0,G.useCallback)(()=>u(void 0),[u]),p=H_(s);return t?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(L_,{data:l,isFetching:a||o,columns:_S,onRowClick:d,children:(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:p,accessKey:`r`,disabled:a||o,children:[(0,K.jsx)(Ra,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]})}),c&&(0,K.jsx)(`div`,{className:`mt-2 text-sm text-muted-foreground`,children:`Could not load deployments. This instance may not support deployment history.`}),!c&&!a&&l.length===0&&(0,K.jsx)(`div`,{className:`mt-2 text-sm text-muted-foreground`,children:`No deployments yet.`}),!!n&&(0,K.jsx)(JS,{deploymentId:n,isModalOpen:!0,closeModal:f})]}):(0,K.jsx)(`div`,{className:`p-2 text-sm text-muted-foreground`,children:`Viewing deployments requires super-user permissions on this instance.`})}function XS(){return(0,K.jsx)(Gb,{})}var ZS=`flex items-center p-2 rounded-lg group`,QS={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-gray-700`},$S={className:`text-black bg-white pointer-events-none cursor-default`};function eC(){let e=B({strict:!1}),{version:t}=_e({strict:!1}),n=of(`4.6.0`,t),r=of(`5.1.0`,t),i=of(`5.2.0-alpha.1`,t),{clusterId:a}=e,o=Np(),{data:s}=F(ql(a,!1));s===void 0||Bp(s);let c=o&&(0,K.jsxs)(K.Fragment,{children:[n&&(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:bx(e,`config/certificates`),className:ZS,inactiveProps:QS,activeProps:$S,children:[(0,K.jsx)(no,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Certificates`})]})}),r&&(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:bx(e,`config/deployments`),className:ZS,inactiveProps:QS,activeProps:$S,children:[(0,K.jsx)(Ba,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Deployments`})]})}),!1,(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:bx(e,`config/roles`),className:ZS,inactiveProps:QS,activeProps:$S,children:[(0,K.jsx)(Mi,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Roles`})]})}),i&&(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:bx(e,`config/secrets`),className:ZS,inactiveProps:QS,activeProps:$S,children:[(0,K.jsx)(ea,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Secrets`})]})}),n&&(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:bx(e,`config/ssh-keys`),className:ZS,inactiveProps:QS,activeProps:$S,children:[(0,K.jsx)(Bi,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`SSH Keys`})]})}),(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:bx(e,`config/users`),className:ZS,inactiveProps:QS,activeProps:$S,children:[(0,K.jsx)(Po,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Users`})]})})]});return(0,K.jsxs)(`div`,{className:`md:grid gap-4 md:grid-cols-12 min-h-[calc(100vh-(--spacing(36)))]`,children:[(0,K.jsxs)(`section`,{className:`col-span-1 text-foreground md:col-span-4 lg:col-span-3 md:border-r border-b md:border-b-0 md:pr-4 border-gray-700`,children:[(0,K.jsx)(tC,{params:e,children:c}),(0,K.jsx)(nC,{params:e,children:c})]}),(0,K.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9 md:pt-4`,children:(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:(0,K.jsx)($e,{})})})]})}function tC({params:e,children:t}){return(0,K.jsxs)(`div`,{className:`hidden md:block pl-4 pt-4`,children:[(0,K.jsxs)(V,{to:bx(e,`config`),className:ZS,activeOptions:{exact:!0},inactiveProps:QS,activeProps:$S,children:[(0,K.jsx)(wr,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Overview`})]}),t&&(0,K.jsx)(`ul`,{className:`border-t border-gray-700 pt-4 mt-4 space-y-2`,children:t})]})}function nC({params:e,children:t}){return(0,K.jsxs)(`ul`,{className:`flex space-x-2 md:hidden py-2 px-4`,children:[(0,K.jsx)(`li`,{children:(0,K.jsxs)(V,{to:bx(e,`config`),className:ZS,activeOptions:{exact:!0},inactiveProps:QS,activeProps:$S,children:[(0,K.jsx)(wr,{className:`hidden md:inline-block`}),` `,(0,K.jsx)(`span`,{className:`ms-3`,children:`Overview`})]})}),t]})}async function rC(e,t=3,n=1e3){let r=0;if(t<=0)throw Error(`retries must be greater than 0`);let i;for(;r<t;)try{return await e()}catch(e){if(r++,i=e,r===t)break;await h(n)}throw i}async function iC({operation:e,replicated:t,instanceClient:n}){let{data:i}=await n.post(`/`,{operation:e,service:e===`restart_service`?`http`:void 0,replicated:t},{skipRestartGate:!0});return await h(1e4),await rC(()=>r({instanceClient:n,timeout:3e3,skipRestartGate:!0}),12,15e3),i}function aC(){return R({mutationFn:iC})}var oC=3e5;function sC({onRestartedSuccessfully:e}={}){let{clusterId:t}=B({strict:!1}),[i,a]=(0,G.useState)(!1);return{onRestartClick:(0,G.useCallback)(async()=>{if(!t)throw Error(`clusterId must be set in the route to invoke useRestartClusterClick`);a(!0);let i=!1,o={duration:6e4,action:{label:`Cancel`,onClick:()=>{i=!0}}},s=U.loading(`Restarting`,{...o,description:(0,K.jsx)(zm,{animated:!0,width:`0%`})}),c=await Gl(t),l=u.checkForFabricConnect(c.id),d=c?.instances??[],f=d.filter(e=>e.status===`RUNNING`).reverse(),m=f.map(e=>n({id:e.id,forceFabricConnect:l,operationsUrl:p(e)})),g=0,v=ue([t],{reach:f.length===1?`down`:`rolling`,ttlMs:(f.length+1)*oC});try{for(let e=0;e<m.length;e++){let t=m[e];if(!i){U.loading(`Restarting Instance ${e+1} of ${m.length}`,{...o,id:s,description:(0,K.jsx)(zm,{animated:!0,width:(e===0?0:e/m.length*100)+`%`})});let n;try{await r({instanceClient:t,skipRestartGate:!0}),n=ue([f[e].id],{reach:`down`,ttlMs:oC}),await iC({operation:`restart`,replicated:!1,instanceClient:t}),g+=1}catch{e+1!==m.length&&(U.loading(`Failed Restarting Instance ${e+1} of ${m.length}`,{...o,id:s,description:`We will carry on momentarily.`}),await h(3e3))}finally{n?.()}}}}finally{v()}if(a(!1),i)U.error(`Cancelled`,{id:s,description:`The restart was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});else if(d.length===g)e?.(),U.success(`Success`,{id:s,description:`Cluster fully restarted!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});else{let e=_(d.length,`instance`,`instances`),t=_(g,`"RUNNING" instance was`,`"RUNNING" instances were`);U.error(`Error`,{id:s,description:`Failed to fully restart cluster.
26
+ `+([d.length===0&&`No instances were found within the cluster to restart.`,g===0&&`No instances were in a "RUNNING" state of ${e}.`,d.length!==g&&`Only ${t} restarted of ${e}.`].filter($c).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}},[t,e]),isRestartPending:i}}function cC({operation:e,instanceClient:t,onRestartedSuccessfully:n}){let{clusterId:r,instanceId:i}=B({strict:!1}),a=`Instance`,{mutateAsync:o,isPending:s}=aC(),c=Me();return{onRestartClick:(0,G.useCallback)(async()=>{let s=U.loading(`Restarting`,{description:`Restarting instance. This may take up to 60 seconds.`,duration:18e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),l=m,u=e===`restart`&&l?ue([l],{reach:`down`,ttlMs:3e5}):void 0;try{await o({operation:e,replicated:e===`restart_service`&&!1,instanceClient:t});for(let e of[r,i])(!u||e!==l)&&Go(c,e);U.dismiss(s),U.success(`Success`,{description:`${a} restarted!`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}}),n?.()}catch{U.dismiss(s),U.error(`Error`,{description:`Failed to restart instance.`,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}finally{u?.()}},[r,t,i,n,e,c,o,a]),isRestartPending:s}}function lC({className:e,disabled:t,hideText:n,instanceClient:r,operation:i,targetNoun:a,tooltip:o,variant:s}){let{onRestartClick:c,isRestartPending:l}=sC(),{onRestartClick:u,isRestartPending:d}=cC({operation:i,instanceClient:r});return(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsxs)(H,{type:`button`,variant:s||`positiveOutline`,className:y(`mx-0 md:mx-4`,e),onClick:a===`Cluster`&&i===`restart`?c:u,disabled:t||d||l,title:`Restart ${a}`,children:[(0,K.jsx)(Ha,{className:`pointer-events-none`}),n!==!0&&(0,K.jsxs)(`span`,{className:`hidden md:inline-block pointer-events-none`,children:[`Restart `,(0,K.jsx)(`span`,{className:`hidden 2xl:inline-block`,children:a})]})]})}),(0,K.jsx)(Tc,{side:`bottom`,children:o||(i===`restart_service`?`Restarts all service threads to apply changes. No downtime expected. Performance may be briefly slower during restart.`:`This fully restarts the Harper service and causes downtime.`)})]})}async function uC({clusterId:e,instanceId:t}){return null}function dC(e){return z({queryKey:[e.clusterId,e.instanceId],queryFn:()=>uC(e),retry:!1})}var fC=({loadingRegistration:e,registrationInfo:t})=>{let n=!!t?.version&&parseInt(t.version[0],10)>=5&&`https://github.com/HarperFast/harper/releases/tag/v${t.version}`;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Harper Version`}),(0,K.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,K.jsx)(Sg,{className:`w-10`}):n?(0,K.jsx)(`a`,{href:n,target:`_blank`,className:`underline hover:text-blue-300`,rel:`noopener noreferrer`,children:t.version}):t?.version||`Unknown`})]})},pC=({loading:e,timestamp:t})=>{let n=t?new Date(t).toLocaleString():`Never`;return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Last Deployed`}),(0,K.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,K.jsx)(Sg,{className:`w-24`}):n})]})};async function mC({instanceClient:e,...t}){let{data:n}=await e.post(`/`,{operation:`set_configuration`,...t});return n}function hC({onRestartedSuccessfully:e}={}){let t=q(),i=Me(),[a,o]=(0,G.useState)(!1);return{onConfigUpdate:(0,G.useCallback)(async a=>{o(!0);let s=!1,c={duration:6e4,action:{label:`Cancel`,onClick:()=>{s=!0}}},l=U.loading(`Restarting`,{...c,description:(0,K.jsx)(zm,{animated:!0,width:`0%`})}),d=t.entityType===`cluster`?await Gl(t.entityId):null,f=t.entityType===`cluster`?d?.instances||[]:[{id:t.entityId,status:`RUNNING`}],m=!!d&&u.checkForFabricConnect(d.id),g=t.entityType===`cluster`?f.filter(e=>e.status===`RUNNING`).map(e=>n({id:e.id,forceFabricConnect:m,operationsUrl:p(e)})).reverse():[t.instanceClient],v=0;if(g.length)for(let e=0;e<g.length;e++){let t=g[e];if(!s){U.loading(`Updating Instance ${e+1} of ${g.length}`,{...c,id:l,description:(0,K.jsx)(zm,{animated:!0,width:(e===0?0:e/g.length*100)+`%`})});try{await r({instanceClient:t}),await mC({...a,instanceClient:t}),await iC({operation:`restart_service`,replicated:!1,instanceClient:t}),v+=1}catch{e+1!==g.length&&(U.loading(`Failed Restarting Instance ${e+1} of ${g.length}`,{...c,id:l,description:`We will carry on momentarily.`}),await h(3e3))}}}if(o(!1),i.invalidateQueries({queryKey:[`get_configuration`,t.entityId]}),s)U.error(`Cancelled`,{id:l,description:`The config update was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});else if(f.length===v)e?.(),U.success(`Success`,{id:l,description:`Your configuration has been updated successfully!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}});else{let e=_(f.length,`instance`,`instances`),t=_(v,`"RUNNING" instance was`,`"RUNNING" instances were`);U.error(`Error`,{id:l,description:`Failed to fully update cluster.
27
+ `+([f.length===0&&`No instances were found within the cluster to restart.`,v===0&&`No instances were in a "RUNNING" state of ${e}.`,f.length!==v&&`Only ${t} restarted of ${e}.`].filter($c).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>U.dismiss()}})}},[t,e,i]),isPending:a}}async function gC({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_components`});return t}function _C(e){return z({queryKey:[e.entityId,`get_components`],queryFn:()=>gC(e),retry:!1,enabled:e.enabled!==!1})}function vC({entityId:e,instanceClient:t}){return z({queryKey:[`get_configuration`,e],queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_configuration`});return e}})}function yC({entityId:e,instanceClient:t},n){return z({queryKey:[`get_usage_licenses`,e],enabled:n,queryFn:async()=>{try{let{data:e}=await t.post(`/`,{operation:`get_usage_licenses`});return e}catch(e){return console.error(e),null}}})}var bC={http:{port:`blocked`,securePort:`blocked`},threads:`blocked`,authentication:{enableSessions:`blocked`},logging:{auditLog:`blocked`,root:`blocked`,rotation:{path:`blocked`}},mqtt:{network:{port:`blocked`,securePort:`blocked`}},operationsApi:{network:{domainSocket:`blocked`,port:`blocked`,securePort:`blocked`}},rootPath:`blocked`,replication:`blocked_except_databases`,storage:`blocked`,tls:`blocked`,node:`blocked`,license:`blocked`,componentsRoot:`blocked`,analytics:`allowed`,applications:`allowed`,localStudio:`allowed`};function xC(e,t,n){if(JSON.stringify(t)===JSON.stringify(n))return!1;let r=e.split(`.`),i=bC;for(let e=0;e<r.length;e++){let t=r[e];if(i===`blocked`)return!0;if(i===`blocked_except_databases`)return t!==`databases`;if(typeof i==`object`&&i&&t in i)i=i[t];else return!1}return i===`blocked`}function SC(e,t=bC){if(typeof e!=`object`||!e)return e;let n=Array.isArray(e)?[]:{};for(let r in e){let i=e[r],a=t?.[r];if(a!==`blocked`){if(a===`blocked_except_databases`){i&&typeof i==`object`&&`databases`in i&&(n.replication={databases:i.databases});continue}if(typeof a==`object`&&a){let e=SC(i,a);e!==void 0&&(typeof e!=`object`||Object.keys(e).length>0)&&(n[r]=e)}else n[r]=i}}return n}function CC(e,t){if(typeof e!=`object`||!e||typeof t!=`object`||!t)return JSON.stringify(e)===JSON.stringify(t)?void 0:t;let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=e[i],a=t[i];if(typeof r==`object`&&r&&typeof a==`object`&&a&&!Array.isArray(r)&&!Array.isArray(a)){let e=CC(r,a);Object.keys(e).length>0&&(n[i]=e)}else JSON.stringify(r)!==JSON.stringify(a)&&(n[i]=a)}return n}function wC(e,t=``){let n={};for(let r in e){let i=e[r],a=t?`${t}_${r}`:r;typeof i==`object`&&i&&!Array.isArray(i)?Object.assign(n,wC(i,a)):n[a]=i}return n}var TC=JSON.parse(`{
28
28
  "$schema": "https://json-schema.org/draft-06/schema",
29
29
  "$id": "https://harper.fast/schema/config-root.schema.json",
30
30
  "title": "HarperDB Root Configuration",
@@ -667,31 +667,31 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
667
667
  }
668
668
  ]
669
669
  }
670
- `),xC=`inmemory://harper/config-root.json`,SC=`harper://schemas/config-root.json`;async function CC(){let{json:e}=await pe(async()=>{let{json:e}=await import(`./languageServices-BleuBw17.js`).then(e=>e.t);return{json:e}},__vite__mapDeps([33,1,17,2,18])),t=e.jsonDefaults,{schemas:n=[],...r}=t.diagnosticsOptions;n.some(e=>e.uri===SC)||t.setDiagnosticsOptions({...r,validate:!0,enableSchemaRequest:!1,schemas:[...n,{uri:SC,fileMatch:[xC],schema:bC}]})}var wC=({children:e})=>(0,K.jsx)(K.Fragment,{children:e});function TC(){let{clusterId:e,instanceId:t}=B({strict:!1}),{data:n,isLoading:r}=F(oC({clusterId:e,instanceId:t})),i=q(),{version:a}=_e({strict:!1}),{data:o}=F(mC(i,!1));n?.cluster;let s=n?.instance,{data:c,isLoading:l}=F(NS(i)),{data:u,isLoading:d}=F(pC(i)),f=Np(),{data:p,isLoading:m}=F(fC({...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?_C(u):null,[u]),_=rv(),[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}=uC();(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];gC(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||gC(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)(()=>{CC().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=yC(vC(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)(wC,{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)(sC,{loadingRegistration:l,registrationInfo:c})}),(0,K.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,K.jsx)(cC,{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)(iC,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>y(!1),children:[(0,K.jsx)(Io,{className:`w-4 h-4 mr-1`}),` Cancel`]}),(0,K.jsxs)(H,{size:`sm`,disabled:!!S||w.length>0||D,onClick:A,children:[(0,K.jsx)(Ka,{className:`w-4 h-4 mr-1`}),` `,D?`Saving...`:`Save & Restart`]})]}):(0,K.jsxs)(H,{size:`sm`,onClick:()=>y(!0),children:[(0,K.jsx)(lo,{className:`w-4 h-4 mr-1`}),` Edit`]})})]}),S&&(0,K.jsxs)(_m,{variant:`destructive`,className:`mb-4`,children:[(0,K.jsx)(Ar,{className:`h-4 w-4`}),(0,K.jsx)(vm,{children:`Invalid JSON`}),(0,K.jsx)(ym,{children:S})]}),w.length>0&&(0,K.jsxs)(_m,{variant:`destructive`,className:`mb-4`,children:[(0,K.jsx)(Ar,{className:`h-4 w-4`}),(0,K.jsx)(vm,{children:`Restricted Configuration`}),(0,K.jsxs)(ym,{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)(Sg,{className:`w-full`}),(0,K.jsx)(Sg,{className:`w-full`}),(0,K.jsx)(Sg,{className:`w-1/2`})]}):(0,K.jsx)(av,{className:`w-full min-h-full h-96`,path:xC,language:`json`,theme:_,onMount:k,options:{readOnly:!v,scrollBeyondLastLine:!1},value:v?b:JSON.stringify(g,null,4),onChange:O})})]})}function EC(){let e=q(),{data:t}=F(NS(e));return t===void 0?void 0:Rf(t.version)}var DC=(0,G.createContext)(void 0);function OC({children:e}){return(0,K.jsx)(DC,{value:EC(),children:e})}var kC=I_(),AC=[{header:`Role`,accessorKey:`role`,enableSorting:!1},kC.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})}),kC.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>B_((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),kC.display({header:`Updated`,id:`__updatedtime__`,enableSorting:!1,cell:e=>B_((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}),kC.display({header:`Super User`,id:`super_user`,enableSorting:!1,cell:e=>e.row.original.permission.super_user?`Yes`:`No`}),kC.display({header:`Structure User`,id:`structure_user`,enableSorting:!1,cell:e=>e.row.original.permission.structure_user?`Yes`:`No`}),kC.display({header:`Operations`,id:`operations`,enableSorting:!1,cell:e=>(0,K.jsx)(jC,{permission:e.row.original.permission})})];function jC({permission:e}){let t=(0,G.useContext)(DC);if(t===void 0)return null;let n=Xf(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(Kf(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=Vf(Yf(e)??[]),i=Hf(r);return(0,K.jsxs)(`span`,{title:i,children:[r.length,` allowed`,(0,K.jsxs)(`span`,{className:`sr-only`,children:[`: `,i]})]})}async function MC(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 NC(){return R({mutationFn:MC})}var PC=S({role:M().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:A(),structure_user:A()});function FC({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=Gt({resolver:it(PC),defaultValues:{role:``,super_user:!1,structure_user:!1}}),i=q(),{mutate:a,isPending:o}=NC(),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)(Id,{onOpenChange:n,open:e,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...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)(Wd,{className:`md:col-span-2`,children:[(0,K.jsx)(Kd,{children:`Add New Role`}),(0,K.jsx)(qd,{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)(Gd,{className:`md:col-span-2`,children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:o,children:[(0,K.jsx)(Ka,{}),` Add Role`]})]})})]})})})})}function IC({entityId:e,instanceClient:t}){return z({queryKey:[e,`list_roles`],queryFn:()=>LC({instanceClient:t}),refetchInterval:bs(1e4),retry:xs()})}async function LC({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_roles`});return t}function RC({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=Rf(n);for(let n in e){if(Wf.has(n)&&(n!==`operations`||u))continue;let i=l(n,{tables:{}}),a=t&&Gf(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]=zC(s,o,r):i.tables[t]=BC(s,o,r)}}return i}function zC(e,t,n){let r=e&&Lm(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 BC(e,t,n){let r=e&&Lm(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 VC({value:e,onChange:t,version:n,allowlistRejected:r,structureUserDdl:i,disabled:a}){let o=e!==void 0,s=Bf(n),c=Mf.filter(t=>!s.includes(t)&&e?.includes(t.name)),l=zf(n),u=new Set(e??[]),d=(e??[]).filter(e=>!Lf(e)),f=e?Vf(e):[],p=f.some(e=>Ff(e)?.su),m=(0,G.useRef)([]),h=e=>{let n=new Set(e),r=Mf.map(e=>e.name).filter(e=>n.has(e)),i=[...n].filter(e=>!Lf(e)).sort();t([...r,...i])},g=t=>{let n=new Set(e??[]);n.has(t)?n.delete(t):n.add(t),h(n)};return(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-md border p-3`,children:[(0,K.jsxs)(Al,{className:`flex items-center gap-2`,children:[(0,K.jsx)(yv,{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:Jf.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)(HC,{group:e,checked:u.has(e.name),onToggle:g,disabled:a},e.name)),c.map(e=>(0,K.jsx)(HC,{group:e,note:`Saved on this role, but not offered for this instance's Harper version.`,checked:!0,onToggle:g,disabled:a},e.name))]}),(0,K.jsx)(WC,{grantable:l,selectedSet:u,onToggle:g,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)(GC,{name:e,onRemove:()=>g(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:Hf(f),children:[`Effectively allows `,_(f.length,`operation`,`operations`),p?`, including some that normally require super_user`:``,`.`,(0,K.jsxs)(`span`,{className:`sr-only`,children:[`: `,Hf(f)]})]})]})]})}function HC({group:e,note:t,checked:n,onToggle:r,disabled:i}){return(0,K.jsxs)(Al,{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 UC=/^[A-Za-z][A-Za-z0-9_.:-]*$/;function WC({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=Im(f,`category`),m=Ff(u),h=!m&&(Lf(d)||Af.some(e=>e.name===d)),g=UC.test(u)&&!Lf(u)&&!h&&!m?.nonDelegable&&!m?.aliasOf&&!e.some(e=>e.name===u)&&!t.has(u)?u:void 0;return(0,K.jsxs)(Yo,{open:i,onOpenChange:e=>{a(e),e||s(``)},children:[(0,K.jsx)(Xo,{asChild:!0,disabled:r,children:(0,K.jsxs)(H,{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)(On,{className:`size-4 shrink-0 opacity-60`})]})}),(0,K.jsxs)(Zo,{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`}),kf.filter(e=>p[e]).map(e=>(0,K.jsxs)(`div`,{children:[(0,K.jsx)(ns,{className:`text-xs text-muted-foreground`,children:e}),p[e].map(e=>(0,K.jsxs)($o,{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}),pf(e.name)?(0,K.jsx)(Fs,{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)(Fs,{variant:`warning`,title:`Normally requires super_user; listing it grants it to this role`,children:`super_user`})]},e.name))]},e)),g&&(0,K.jsxs)($o,{checked:!1,onCheckedChange:()=>n(g),onSelect:e=>e.preventDefault(),children:[(0,K.jsx)(Ia,{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 GC({name:e,onRemove:t,disabled:n}){let r=Ff(e),i=mf(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.`:pf(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)(Fs,{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)(Io,{className:`size-3`})})]})}function KC({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 qC(e){if(e.super_user!==!0&&e.structure_user!==!0&&e.cluster_user!==!0)return e;let t=Kf(e),n={...e};for(let e in n)(!Wf.has(e)||e===`operations`&&(t||!Array.isArray(n.operations))||n[e]===!1)&&delete n[e];return n}async function JC({id:e,permission:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`alter_role`,id:e,permission:t});return r}function YC(){return R({mutationFn:JC})}async function XC({id:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_role`,id:e});return n}function ZC(){return R({mutationFn:XC})}async function QC({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 $C(e){return z({queryKey:[e.entityId,`describe_all`,!!e.skipRecordCount],queryFn:()=>QC(e),staleTime:6e4,gcTime:5e3,retry:!1})}function ew(e){try{return JSON.parse(e)}catch{return null}}function tw({data:e,instanceId:t,clusterId:n,isModalOpen:r,closeModal:i,onSelectRole:a,onChangesSaved:o}){let s=rv(),{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}=F($C({...f,skipRecordCount:!0})),{data:g}=F(NS(f)),_=Bn(t??n).user?.role?.id===e.id,[v,y]=Iv(u?.includes(`attribute_name`)),{mutate:b,isPending:x}=YC(),{mutate:S,isPending:C}=ZC(),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(e=>{m(e.length===0)},[m]),D=(0,G.useMemo)(()=>JSON.stringify(h&&g&&Zf(RC({instanceDatabaseMap:h,currentRolePermissions:u&&tt(u)||l,version:g.version,showAttributes:v})),null,2),[l,h,g,v]);(0,G.useEffect)(()=>{d(D)},[D]);let O=Rf(g?.version),k=(0,G.useRef)(null),{operationsRaw:A,operationsJson:ee,operationsKind:te,allowlistRejected:j,structureUserDdl:M}=(0,G.useMemo)(()=>{let e=O&&u?ew(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=Yf(t);return{operationsRaw:t.operations,operationsJson:n&&JSON.stringify(n),operationsKind:Xf(t,O),allowlistRejected:Kf(t),structureUserDdl:qf(t)}},[O,p,u]),N=(0,G.useMemo)(()=>ee===void 0?void 0:JSON.parse(ee),[ee]),P=(0,G.useCallback)(e=>{d(t=>{let n=t?tt(t):null;return!n||typeof n!=`object`||Array.isArray(n)?t:JSON.stringify(Qf(n,e),null,2)})},[]),ne=(0,G.useCallback)(t=>{let n=tt(t);if(n&&typeof n==`object`&&!Array.isArray(n)){let t=qC(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=te===`breaks-auth`||te===`malformed`,ae=typeof A==`object`&&!!A&&!Array.isArray(A),oe=(0,G.useCallback)(()=>{u&&p&&ne(u)},[u,ne,p]),se=(0,G.useCallback)(()=>{T(!0)},[]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Id,{onOpenChange:i,open:r,children:(0,K.jsxs)(Ud,{resizable:!0,children:[(0,K.jsxs)(Kd,{children:[_?`View`:`Edit`,` Role "`,c,`"`]}),(0,K.jsx)(qd,{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)(KC,{kind:te,databaseCollision:ae}):(0,K.jsx)(VC,{allowlistRejected:j,structureUserDdl:M,value:N,onChange:P,version:g.version,disabled:_||!p})),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:D?(0,K.jsx)(av,{className:`w-full h-full`,theme:s,defaultLanguage:`json`,value:u,options:{readOnly:_,automaticLayout:!0},onValidate:E,onChange:d,defaultValue:D}):(0,K.jsx)(Sg,{})}),(0,K.jsx)(Gd,{children:!_&&(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{type:`button`,variant:`destructiveOutline`,onClick:se,disabled:x,children:`Delete Role`}),(0,K.jsx)(`div`,{className:`grow`}),(0,K.jsxs)(Al,{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)(H,{variant:`submit`,onClick:oe,disabled:x||!p||ie,children:`Save Changes`})]})})]})}),(0,K.jsx)(Jd,{isModalOpen:w,setIsModalOpen:T,deletionConfirmed:re,deletionPending:C,typeOfThingBeingDeleted:`role`,nameOfThingBeingDeleted:c,hideDataLossWarning:!0})]})}function nw(){let e=L(),{clusterId:t,instanceId:n,roleId:r}=B({strict:!1}),i=q(),{data:a,refetch:o,isFetching:s,isRefetching:c}=et(IC(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=H_(o);return(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsx)(OC,{children:(0,K.jsxs)(L_,{columns:AC,data:a,isFetching:s,onRowClick:g,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:v,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:f,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]})}),(0,K.jsx)(FC,{isModalOpen:f,onChangesSaved:h,setIsModalOpen:p}),d&&(0,K.jsx)(tw,{instanceId:n,clusterId:t,isModalOpen:d,closeModal:_,data:l,onSelectRole:u,onChangesSaved:()=>o()})]})}function rw(e){return!!e?.entries}function iw(e){if(!e?.entries)return[];let t=new Set;for(let n of e.entries)rw(n)&&t.add(n.name);return[...t].sort((e,t)=>e.localeCompare(t))}function aw({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)(H,{type:`button`,variant:`positiveOutline`,onMouseDown:e=>e.preventDefault(),onClick:S,disabled:v||!o.trim(),children:[(0,K.jsx)(Ia,{}),` `,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:P(`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 ow=`enc:v1:`;function sw(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 cw(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function lw(e){return cw(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function uw(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function dw(){if(typeof crypto>`u`||!crypto.subtle)throw Error(`Secret encryption requires a secure context (HTTPS or localhost).`);return crypto.subtle}async function fw(e,t,n){let r=dw(),i=sw(t),a=await r.importKey(`spki`,uw(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`,uw(o),{name:`AES-GCM`},!1,[`encrypt`]),l=new Uint8Array(await r.encrypt({name:`AES-GCM`,iv:uw(s),tagLength:128},c,uw(new TextEncoder().encode(e)))),u=l.slice(0,l.length-16),d=l.slice(l.length-16),f={kid:n,k:cw(new Uint8Array(await r.encrypt({name:`RSA-OAEP`},a,uw(o)))),iv:cw(s),ct:cw(u),tag:cw(d)};return ow+lw(new TextEncoder().encode(JSON.stringify(f)))}function pw(e){let t=e?.response?.data;return t?.error??t?.message??String(e)}var mw=`does not match`;function hw(e){return e.includes(mw)}async function gw({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_secrets_public_key`});return{publicKey:t.public_key,fingerprint:t.fingerprint}}var _w=N;async function vw(e){let{data:t}=await _w.post(`/ClusterSecrets`,{operation:`get_secrets_public_key`,clusterId:e});return{publicKey:t.publicKey,fingerprint:t.fingerprint}}function yw(e){return z({queryKey:[e.entityId,`get_secrets_public_key`,e.managedClusterId??`node`],queryFn:()=>e.managedClusterId?vw(e.managedClusterId):gw(e),staleTime:3e5,retry:!1})}async function bw({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_secrets`});return t}function xw(e){return z({queryKey:[e.entityId,`list_secrets`],queryFn:()=>bw(e)})}async function Sw(e,t,n){let{publicKey:r,fingerprint:i}=await e.ensureQueryData(yw(t)),a=await fw(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=pw(r);if(!n&&hw(i))return e.removeQueries({queryKey:yw(t).queryKey}),Sw(e,t,!0);throw Error(i)}}function Cw(){let e=Me();return R({mutationFn:t=>Sw(e,t,!1)})}async function ww({instanceClient:e,name:t}){try{let{data:n}=await e.post(`/`,{operation:`delete_secret`,name:t});return n}catch(e){throw Error(pw(e))}}function Tw(){return R({mutationFn:ww})}async function Ew(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(pw(e))}}function Dw(){return R({mutationFn:e=>Ew(`grant_secret`,e)})}function Ow(){return R({mutationFn:e=>Ew(`revoke_secret`,e)})}function kw({name:e,initialGrants:t,components:n,onChanged:r}){let i=q(),{mutateAsync:a,isPending:o}=Dw(),{mutateAsync:s,isPending:c}=Ow(),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)(Fs,{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)(Io,{}),(0,K.jsxs)(`span`,{className:`sr-only`,children:[`Revoke `,e]})]})]},e))}),(0,K.jsx)(aw,{components:n,granted:u,onAdd:f,disabled:l,actionLabel:`Grant`})]})}var Aw=`********`,jw=/^[\w.-]+$/,Mw=/^(\s*(?:export\s+)?)([\w.-]+)\s*=(.*)$/;function Nw(e){return e.split(`/`).pop()??``}function Pw(e){if(!e)return!1;let t=Nw(e).toLowerCase();return t===`.env`||t.startsWith(`.env.`)}var Fw=[`.example`,`.sample`,`.template`];function Iw(e){if(!Pw(e))return!1;let t=Nw(e).toLowerCase();return Fw.some(e=>t.endsWith(e))}function Lw(e){return Pw(e)&&!Iw(e)}function Rw(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
+ `),EC=`inmemory://harper/config-root.json`,DC=`harper://schemas/config-root.json`;async function OC(){let{json:e}=await pe(async()=>{let{json:e}=await import(`./languageServices-Dz2K9rZN.js`).then(e=>e.t);return{json:e}},__vite__mapDeps([33,1,17,2,18])),t=e.jsonDefaults,{schemas:n=[],...r}=t.diagnosticsOptions;n.some(e=>e.uri===DC)||t.setDiagnosticsOptions({...r,validate:!0,enableSchemaRequest:!1,schemas:[...n,{uri:DC,fileMatch:[EC],schema:TC}]})}var kC=({children:e})=>(0,K.jsx)(K.Fragment,{children:e});function AC(){let{clusterId:e,instanceId:t}=B({strict:!1}),{data:n,isLoading:r}=F(dC({clusterId:e,instanceId:t})),i=q(),{version:a}=_e({strict:!1}),{data:o}=F(yC(i,!1));n?.cluster;let s=n?.instance,{data:c,isLoading:l}=F(RS(i)),{data:u,isLoading:d}=F(vC(i)),f=Np(),{data:p,isLoading:m}=F(_C({...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?SC(u):null,[u]),_=rv(),[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}=hC();(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];xC(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||xC(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)(()=>{OC().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=wC(CC(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)(kC,{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)(fC,{loadingRegistration:l,registrationInfo:c})}),(0,K.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,K.jsx)(pC,{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)(lC,{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)(H,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>y(!1),children:[(0,K.jsx)(Io,{className:`w-4 h-4 mr-1`}),` Cancel`]}),(0,K.jsxs)(H,{size:`sm`,disabled:!!S||w.length>0||D,onClick:A,children:[(0,K.jsx)(Ka,{className:`w-4 h-4 mr-1`}),` `,D?`Saving...`:`Save & Restart`]})]}):(0,K.jsxs)(H,{size:`sm`,onClick:()=>y(!0),children:[(0,K.jsx)(lo,{className:`w-4 h-4 mr-1`}),` Edit`]})})]}),S&&(0,K.jsxs)(_m,{variant:`destructive`,className:`mb-4`,children:[(0,K.jsx)(Ar,{className:`h-4 w-4`}),(0,K.jsx)(vm,{children:`Invalid JSON`}),(0,K.jsx)(ym,{children:S})]}),w.length>0&&(0,K.jsxs)(_m,{variant:`destructive`,className:`mb-4`,children:[(0,K.jsx)(Ar,{className:`h-4 w-4`}),(0,K.jsx)(vm,{children:`Restricted Configuration`}),(0,K.jsxs)(ym,{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)(Sg,{className:`w-full`}),(0,K.jsx)(Sg,{className:`w-full`}),(0,K.jsx)(Sg,{className:`w-1/2`})]}):(0,K.jsx)(av,{className:`w-full min-h-full h-96`,path:EC,language:`json`,theme:_,onMount:k,options:{readOnly:!v,scrollBeyondLastLine:!1},value:v?b:JSON.stringify(g,null,4),onChange:O})})]})}function jC(){let e=q(),{data:t}=F(RS(e));return t===void 0?void 0:Rf(t.version)}var MC=(0,G.createContext)(void 0);function NC({children:e}){return(0,K.jsx)(MC,{value:jC(),children:e})}var PC=I_(),FC=[{header:`Role`,accessorKey:`role`,enableSorting:!1},PC.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})}),PC.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>B_((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),PC.display({header:`Updated`,id:`__updatedtime__`,enableSorting:!1,cell:e=>B_((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}),PC.display({header:`Super User`,id:`super_user`,enableSorting:!1,cell:e=>e.row.original.permission.super_user?`Yes`:`No`}),PC.display({header:`Structure User`,id:`structure_user`,enableSorting:!1,cell:e=>e.row.original.permission.structure_user?`Yes`:`No`}),PC.display({header:`Operations`,id:`operations`,enableSorting:!1,cell:e=>(0,K.jsx)(IC,{permission:e.row.original.permission})})];function IC({permission:e}){let t=(0,G.useContext)(MC);if(t===void 0)return null;let n=Xf(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(Kf(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=Vf(Yf(e)??[]),i=Hf(r);return(0,K.jsxs)(`span`,{title:i,children:[r.length,` allowed`,(0,K.jsxs)(`span`,{className:`sr-only`,children:[`: `,i]})]})}async function LC(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 RC(){return R({mutationFn:LC})}var zC=S({role:M().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:A(),structure_user:A()});function BC({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=Gt({resolver:it(zC),defaultValues:{role:``,super_user:!1,structure_user:!1}}),i=q(),{mutate:a,isPending:o}=RC(),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)(Id,{onOpenChange:n,open:e,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...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)(Wd,{className:`md:col-span-2`,children:[(0,K.jsx)(Kd,{children:`Add New Role`}),(0,K.jsx)(qd,{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)(Gd,{className:`md:col-span-2`,children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:c,disabled:o,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:o,children:[(0,K.jsx)(Ka,{}),` Add Role`]})]})})]})})})})}function VC({entityId:e,instanceClient:t}){return z({queryKey:[e,`list_roles`],queryFn:()=>HC({instanceClient:t}),refetchInterval:bs(1e4),retry:xs()})}async function HC({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_roles`});return t}function UC({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=Rf(n);for(let n in e){if(Wf.has(n)&&(n!==`operations`||u))continue;let i=l(n,{tables:{}}),a=t&&Gf(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]=WC(s,o,r):i.tables[t]=GC(s,o,r)}}return i}function WC(e,t,n){let r=e&&Lm(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 GC(e,t,n){let r=e&&Lm(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 KC({value:e,onChange:t,version:n,allowlistRejected:r,structureUserDdl:i,disabled:a}){let o=e!==void 0,s=Bf(n),c=Mf.filter(t=>!s.includes(t)&&e?.includes(t.name)),l=zf(n),u=new Set(e??[]),d=(e??[]).filter(e=>!Lf(e)),f=e?Vf(e):[],p=f.some(e=>Ff(e)?.su),m=(0,G.useRef)([]),h=e=>{let n=new Set(e),r=Mf.map(e=>e.name).filter(e=>n.has(e)),i=[...n].filter(e=>!Lf(e)).sort();t([...r,...i])},g=t=>{let n=new Set(e??[]);n.has(t)?n.delete(t):n.add(t),h(n)};return(0,K.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-md border p-3`,children:[(0,K.jsxs)(Al,{className:`flex items-center gap-2`,children:[(0,K.jsx)(yv,{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:Jf.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)(qC,{group:e,checked:u.has(e.name),onToggle:g,disabled:a},e.name)),c.map(e=>(0,K.jsx)(qC,{group:e,note:`Saved on this role, but not offered for this instance's Harper version.`,checked:!0,onToggle:g,disabled:a},e.name))]}),(0,K.jsx)(YC,{grantable:l,selectedSet:u,onToggle:g,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)(XC,{name:e,onRemove:()=>g(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:Hf(f),children:[`Effectively allows `,_(f.length,`operation`,`operations`),p?`, including some that normally require super_user`:``,`.`,(0,K.jsxs)(`span`,{className:`sr-only`,children:[`: `,Hf(f)]})]})]})]})}function qC({group:e,note:t,checked:n,onToggle:r,disabled:i}){return(0,K.jsxs)(Al,{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 JC=/^[A-Za-z][A-Za-z0-9_.:-]*$/;function YC({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=Im(f,`category`),m=Ff(u),h=!m&&(Lf(d)||Af.some(e=>e.name===d)),g=JC.test(u)&&!Lf(u)&&!h&&!m?.nonDelegable&&!m?.aliasOf&&!e.some(e=>e.name===u)&&!t.has(u)?u:void 0;return(0,K.jsxs)(Yo,{open:i,onOpenChange:e=>{a(e),e||s(``)},children:[(0,K.jsx)(Xo,{asChild:!0,disabled:r,children:(0,K.jsxs)(H,{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)(On,{className:`size-4 shrink-0 opacity-60`})]})}),(0,K.jsxs)(Zo,{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`}),kf.filter(e=>p[e]).map(e=>(0,K.jsxs)(`div`,{children:[(0,K.jsx)(ns,{className:`text-xs text-muted-foreground`,children:e}),p[e].map(e=>(0,K.jsxs)($o,{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}),pf(e.name)?(0,K.jsx)(Fs,{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)(Fs,{variant:`warning`,title:`Normally requires super_user; listing it grants it to this role`,children:`super_user`})]},e.name))]},e)),g&&(0,K.jsxs)($o,{checked:!1,onCheckedChange:()=>n(g),onSelect:e=>e.preventDefault(),children:[(0,K.jsx)(Ia,{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 XC({name:e,onRemove:t,disabled:n}){let r=Ff(e),i=mf(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.`:pf(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)(Fs,{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)(Io,{className:`size-3`})})]})}function ZC({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 QC(e){if(e.super_user!==!0&&e.structure_user!==!0&&e.cluster_user!==!0)return e;let t=Kf(e),n={...e};for(let e in n)(!Wf.has(e)||e===`operations`&&(t||!Array.isArray(n.operations))||n[e]===!1)&&delete n[e];return n}async function $C({id:e,permission:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`alter_role`,id:e,permission:t});return r}function ew(){return R({mutationFn:$C})}async function tw({id:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_role`,id:e});return n}function nw(){return R({mutationFn:tw})}async function rw({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 iw(e){return z({queryKey:[e.entityId,`describe_all`,!!e.skipRecordCount],queryFn:()=>rw(e),staleTime:6e4,gcTime:5e3,retry:!1})}function aw(e){try{return JSON.parse(e)}catch{return null}}function ow({data:e,instanceId:t,clusterId:n,isModalOpen:r,closeModal:i,onSelectRole:a,onChangesSaved:o}){let s=rv(),{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}=F(iw({...f,skipRecordCount:!0})),{data:g}=F(RS(f)),_=Bn(t??n).user?.role?.id===e.id,[v,y]=Iv(u?.includes(`attribute_name`)),{mutate:b,isPending:x}=ew(),{mutate:S,isPending:C}=nw(),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(e=>{m(e.length===0)},[m]),D=(0,G.useMemo)(()=>JSON.stringify(h&&g&&Zf(UC({instanceDatabaseMap:h,currentRolePermissions:u&&tt(u)||l,version:g.version,showAttributes:v})),null,2),[l,h,g,v]);(0,G.useEffect)(()=>{d(D)},[D]);let O=Rf(g?.version),k=(0,G.useRef)(null),{operationsRaw:A,operationsJson:ee,operationsKind:te,allowlistRejected:j,structureUserDdl:M}=(0,G.useMemo)(()=>{let e=O&&u?aw(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=Yf(t);return{operationsRaw:t.operations,operationsJson:n&&JSON.stringify(n),operationsKind:Xf(t,O),allowlistRejected:Kf(t),structureUserDdl:qf(t)}},[O,p,u]),N=(0,G.useMemo)(()=>ee===void 0?void 0:JSON.parse(ee),[ee]),P=(0,G.useCallback)(e=>{d(t=>{let n=t?tt(t):null;return!n||typeof n!=`object`||Array.isArray(n)?t:JSON.stringify(Qf(n,e),null,2)})},[]),ne=(0,G.useCallback)(t=>{let n=tt(t);if(n&&typeof n==`object`&&!Array.isArray(n)){let t=QC(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=te===`breaks-auth`||te===`malformed`,ae=typeof A==`object`&&!!A&&!Array.isArray(A),oe=(0,G.useCallback)(()=>{u&&p&&ne(u)},[u,ne,p]),se=(0,G.useCallback)(()=>{T(!0)},[]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Id,{onOpenChange:i,open:r,children:(0,K.jsxs)(Ud,{resizable:!0,children:[(0,K.jsxs)(Kd,{children:[_?`View`:`Edit`,` Role "`,c,`"`]}),(0,K.jsx)(qd,{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)(ZC,{kind:te,databaseCollision:ae}):(0,K.jsx)(KC,{allowlistRejected:j,structureUserDdl:M,value:N,onChange:P,version:g.version,disabled:_||!p})),(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:D?(0,K.jsx)(av,{className:`w-full h-full`,theme:s,defaultLanguage:`json`,value:u,options:{readOnly:_,automaticLayout:!0},onValidate:E,onChange:d,defaultValue:D}):(0,K.jsx)(Sg,{})}),(0,K.jsx)(Gd,{children:!_&&(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{type:`button`,variant:`destructiveOutline`,onClick:se,disabled:x,children:`Delete Role`}),(0,K.jsx)(`div`,{className:`grow`}),(0,K.jsxs)(Al,{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)(H,{variant:`submit`,onClick:oe,disabled:x||!p||ie,children:`Save Changes`})]})})]})}),(0,K.jsx)(Jd,{isModalOpen:w,setIsModalOpen:T,deletionConfirmed:re,deletionPending:C,typeOfThingBeingDeleted:`role`,nameOfThingBeingDeleted:c,hideDataLossWarning:!0})]})}function sw(){let e=L(),{clusterId:t,instanceId:n,roleId:r}=B({strict:!1}),i=q(),{data:a,refetch:o,isFetching:s,isRefetching:c}=et(VC(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=H_(o);return(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsx)(NC,{children:(0,K.jsxs)(L_,{columns:FC,data:a,isFetching:s,onRowClick:g,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:v,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:f,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]})}),(0,K.jsx)(BC,{isModalOpen:f,onChangesSaved:h,setIsModalOpen:p}),d&&(0,K.jsx)(ow,{instanceId:n,clusterId:t,isModalOpen:d,closeModal:_,data:l,onSelectRole:u,onChangesSaved:()=>o()})]})}function cw(e){return!!e?.entries}function lw(e){if(!e?.entries)return[];let t=new Set;for(let n of e.entries)cw(n)&&t.add(n.name);return[...t].sort((e,t)=>e.localeCompare(t))}function uw({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)(H,{type:`button`,variant:`positiveOutline`,onMouseDown:e=>e.preventDefault(),onClick:S,disabled:v||!o.trim(),children:[(0,K.jsx)(Ia,{}),` `,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:P(`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 dw=`enc:v1:`;function fw(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 pw(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function mw(e){return pw(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function hw(e){return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function gw(){if(typeof crypto>`u`||!crypto.subtle)throw Error(`Secret encryption requires a secure context (HTTPS or localhost).`);return crypto.subtle}async function _w(e,t,n){let r=gw(),i=fw(t),a=await r.importKey(`spki`,hw(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`,hw(o),{name:`AES-GCM`},!1,[`encrypt`]),l=new Uint8Array(await r.encrypt({name:`AES-GCM`,iv:hw(s),tagLength:128},c,hw(new TextEncoder().encode(e)))),u=l.slice(0,l.length-16),d=l.slice(l.length-16),f={kid:n,k:pw(new Uint8Array(await r.encrypt({name:`RSA-OAEP`},a,hw(o)))),iv:pw(s),ct:pw(u),tag:pw(d)};return dw+mw(new TextEncoder().encode(JSON.stringify(f)))}function vw(e){let t=e?.response?.data;return t?.error??t?.message??String(e)}var yw=`does not match`;function bw(e){return e.includes(yw)}async function xw({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_secrets_public_key`});return{publicKey:t.public_key,fingerprint:t.fingerprint}}var Sw=N;async function Cw(e){let{data:t}=await Sw.post(`/ClusterSecrets`,{operation:`get_secrets_public_key`,clusterId:e});return{publicKey:t.publicKey,fingerprint:t.fingerprint}}function ww(e){return z({queryKey:[e.entityId,`get_secrets_public_key`,e.managedClusterId??`node`],queryFn:()=>e.managedClusterId?Cw(e.managedClusterId):xw(e),staleTime:3e5,retry:!1})}async function Tw({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_secrets`});return t}function Ew(e){return z({queryKey:[e.entityId,`list_secrets`],queryFn:()=>Tw(e)})}async function Dw(e,t,n){let{publicKey:r,fingerprint:i}=await e.ensureQueryData(ww(t)),a=await _w(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=vw(r);if(!n&&bw(i))return e.removeQueries({queryKey:ww(t).queryKey}),Dw(e,t,!0);throw Error(i)}}function Ow(){let e=Me();return R({mutationFn:t=>Dw(e,t,!1)})}async function kw({instanceClient:e,name:t}){try{let{data:n}=await e.post(`/`,{operation:`delete_secret`,name:t});return n}catch(e){throw Error(vw(e))}}function Aw(){return R({mutationFn:kw})}async function jw(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(vw(e))}}function Mw(){return R({mutationFn:e=>jw(`grant_secret`,e)})}function Nw(){return R({mutationFn:e=>jw(`revoke_secret`,e)})}function Pw({name:e,initialGrants:t,components:n,onChanged:r}){let i=q(),{mutateAsync:a,isPending:o}=Mw(),{mutateAsync:s,isPending:c}=Nw(),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)(Fs,{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)(Io,{}),(0,K.jsxs)(`span`,{className:`sr-only`,children:[`Revoke `,e]})]})]},e))}),(0,K.jsx)(uw,{components:n,granted:u,onAdd:f,disabled:l,actionLabel:`Grant`})]})}var Fw=`********`,Iw=/^[\w.-]+$/,Lw=/^(\s*(?:export\s+)?)([\w.-]+)\s*=(.*)$/;function Rw(e){return e.split(`/`).pop()??``}function zw(e){if(!e)return!1;let t=Rw(e).toLowerCase();return t===`.env`||t.startsWith(`.env.`)}var Bw=[`.example`,`.sample`,`.template`];function Vw(e){if(!zw(e))return!1;let t=Rw(e).toLowerCase();return Bw.some(e=>t.endsWith(e))}function Hw(e){return zw(e)&&!Vw(e)}function Uw(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
- `).replace(/\\r/g,`\r`)),t[e]=n}return t}function zw(e){return!e||e.length===0?``:e.map(e=>`${e}=${Aw}`).join(`
672
+ `).replace(/\\r/g,`\r`)),t[e]=n}return t}function Ww(e){return!e||e.length===0?``:e.map(e=>`${e}=${Fw}`).join(`
673
673
  `)+`
674
- `}function Bw(e){if(e===``)return``;if(!/[\s#'"`]/.test(e))return e;if(!e.includes(`'`))return`'${e}'`;if(!e.includes(`"`)&&!e.includes(`\\`)&&!e.includes(`\r`))return`"${e.replace(/\n/g,`\\n`)}"`;throw Error(`Environment value contains an unsupported combination of quote characters`)}function Vw(e,t){let n=t!==`'`&&t!=="`";for(let r=0;r<e.length;r++){if(n&&e[r]===`\\`){r++;continue}if(e[r]===t)return!0}return!1}function Hw(e,t,n){let r=n.replace(/^\s+/,``),i=r[0];if(i!==`"`&&i!==`'`&&i!=="`"||Vw(r.slice(1),i))return t;for(let n=t+1;n<e.length;n++)if(Vw(e[n],i))return n;return e.length-1}function Uw(e){let t=e.includes(`\r
674
+ `}function Gw(e){if(e===``)return``;if(!/[\s#'"`]/.test(e))return e;if(!e.includes(`'`))return`'${e}'`;if(!e.includes(`"`)&&!e.includes(`\\`)&&!e.includes(`\r`))return`"${e.replace(/\n/g,`\\n`)}"`;throw Error(`Environment value contains an unsupported combination of quote characters`)}function Kw(e,t){let n=t!==`'`&&t!=="`";for(let r=0;r<e.length;r++){if(n&&e[r]===`\\`){r++;continue}if(e[r]===t)return!0}return!1}function qw(e,t,n){let r=n.replace(/^\s+/,``),i=r[0];if(i!==`"`&&i!==`'`&&i!=="`"||Kw(r.slice(1),i))return t;for(let n=t+1;n<e.length;n++)if(Kw(e[n],i))return n;return e.length-1}function Jw(e){let t=e.includes(`\r
675
675
  `)?`\r
676
676
  `:`
677
- `,n=/\r?\n$/.test(e),r=e.length?e.split(/\r?\n/):[];return n&&r.pop(),{eol:t,endedWithNewline:n,lines:r}}function Ww(e,t){let n=new Map(Object.entries(t)),r=new Set,{eol:i,endedWithNewline:a,lines:o}=Uw(e),s=[];for(let e=0;e<o.length;e++){let t=Mw.exec(o[e]);if(t){let[,i,a]=t,c=Hw(o,e,t[3]);if(n.has(a))r.has(a)||(s.push(`${i}${a}=${Bw(n.get(a))}`),r.add(a));else for(let t=e;t<=c;t++)s.push(o[t]);e=c;continue}s.push(o[e])}let c=!1;for(let[e,t]of n)r.has(e)||(s.push(`${e}=${Bw(t)}`),c=!0);let l=s.join(i);return l.length>0&&(a||c)&&(l+=i),l}function Gw(e,t){let n=new Set(Array.isArray(t)?t:[t]);if(n.size===0||!e)return e;let{eol:r,endedWithNewline:i,lines:a}=Uw(e),o=[];for(let e=0;e<a.length;e++){let t=Mw.exec(a[e]);if(t){let r=Hw(a,e,t[3]);if(!n.has(t[2]))for(let t=e;t<=r;t++)o.push(a[t]);e=r;continue}o.push(a[e])}let s=o.join(r);return s.length>0&&i&&(s+=r),s}function Kw({grants:e,onChange:t,components:n,disabled:r}){let i=(0,G.useCallback)(n=>{e.includes(n)||t([...e,n])},[e,t]),a=(0,G.useCallback)(n=>{t(e.filter(e=>e!==n))},[e,t]);return(0,K.jsxs)(`div`,{className:`grid gap-2`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Granted applications`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Only these applications will be able to read the secret. You can grant more later — leave it empty to add grants after creating the secret.`}),e.length>0&&(0,K.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.map(e=>(0,K.jsxs)(Fs,{variant:`secondary`,children:[e,(0,K.jsxs)(`button`,{type:`button`,onClick:()=>a(e),disabled:r,title:`Remove ${e}`,className:`cursor-pointer disabled:cursor-default`,children:[(0,K.jsx)(Io,{}),(0,K.jsxs)(`span`,{className:`sr-only`,children:[`Remove `,e]})]})]},e))}),(0,K.jsx)(aw,{components:n,granted:e,onAdd:i,disabled:r,actionLabel:`Add`,commitOnBlur:!0})]})}function qw({className:e,...t}){return(0,K.jsx)(gn,{"data-slot":`radio-group`,className:P(`grid gap-3`,e),...t})}function Jw({className:e,...t}){return(0,K.jsx)(Kt,{"data-slot":`radio-group-item`,className:P(`border-input text-primary 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 dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50`,e),...t,children:(0,K.jsx)(Sn,{"data-slot":`radio-group-indicator`,className:`relative flex items-center justify-center`,children:(0,K.jsx)(Rr,{className:`fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2`})})})}function Yw(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function Xw(e){return`'${e.replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}'`}function Zw(e,t){let n=e.trim()||`MY_SECRET`,r=Yw(n);return t===`processEnv`?[`// Exposed on process.env for every component (and child processes).`,`const value = ${r?`process.env.${n}`:`process.env[${Xw(n)}]`};`].join(`
678
- `):[`import { secrets } from 'harper';`,``,`// Use the current value right away — read at your module's top level.`,`let value = ${r?`secrets.${n}`:`secrets[${Xw(n)}]`};`,``,`// Then react to rotations without blocking startup. Subscribing in a background`,`// task lets module load finish, so the rest of your app keeps initializing.`,`(async () => {`,` try {`,` for await (const next of secrets.subscribe(${Xw(n)})) {`,` if (next === value) continue; // the first yield is the current value you already have`,` value = next; // rotated — rebuild anything bound to the secret (e.g. an API client) here`,` }`,` } catch (error) {`,` // Log and keep serving the last value; it stays valid until the next reload.`,` console.error('secret subscription ended for', ${Xw(n)}, error);`,` }`,`})();`].join(`
679
- `)}function Qw({name:e,tier:t}){let n=Zw(e,t),[r,i]=(0,G.useState)(!1),a=(0,G.useRef)(void 0);(0,G.useEffect)(()=>()=>clearTimeout(a.current),[]);let o=(0,G.useCallback)(()=>{$p(n).then(e=>{e&&(i(!0),clearTimeout(a.current),a.current=setTimeout(()=>i(!1),1200))})},[n]);return(0,K.jsxs)(`div`,{className:`relative`,children:[(0,K.jsx)(`pre`,{className:`overflow-x-auto rounded-md border border-border bg-muted/50 p-3 pr-10 text-xs leading-relaxed`,children:(0,K.jsx)(`code`,{className:`font-mono text-foreground`,children:n})}),(0,K.jsxs)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`absolute top-1.5 right-1.5 px-1`,onClick:o,title:`Copy example`,children:[r?(0,K.jsx)(kn,{className:`text-green-500`}):(0,K.jsx)(Qr,{}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Copy example`})]})]})}var $w=`https://docs.harperdb.io/reference/v5/security/secrets`;function eT({name:e,tier:t,onTierChange:n,disabled:r,grantsSlot:i}){return(0,K.jsxs)(`div`,{className:`grid gap-3`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`How should applications read this secret?`}),(0,K.jsxs)(qw,{value:t,onValueChange:e=>n(e),disabled:r,children:[(0,K.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,K.jsx)(Jw,{value:`scoped`,className:`mt-0.5`}),(0,K.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Scoped to specific apps`}),(0,K.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Exposed only to the applications you grant, through the `,(0,K.jsx)(`code`,{className:`font-mono`,children:`secrets`}),` `,`accessor. Never placed on `,(0,K.jsx)(`code`,{className:`font-mono`,children:`process.env`}),`.`]})]})]}),(0,K.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,K.jsx)(Jw,{value:`processEnv`,className:`mt-0.5`}),(0,K.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Environment variable`}),(0,K.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Materialized onto `,(0,K.jsx)(`code`,{className:`font-mono`,children:`process.env`}),` `,`for every component (and child processes). Global — it can't be scoped to specific apps.`]})]})]})]}),t===`scoped`&&i,(0,K.jsxs)(`div`,{className:`grid gap-1`,children:[(0,K.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:`How to read it in your component`}),(0,K.jsx)(Qw,{name:e,tier:t}),(0,K.jsx)(`a`,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,href:$w,target:`_blank`,rel:`noreferrer`,children:`Learn more about secrets in the Harper docs`})]})]})}var tT=M().trim().min(1,{error:`Enter a key.`}).regex(jw,{error:`Letters, numbers, underscore, dash and dot only.`}),nT=M().min(1,{error:`Enter a value.`});function rT({description:e,valueDescription:t,existingKeys:n,onSubmit:r,isModalOpen:i,setIsModalOpen:a,delivery:o=!1,defaultTier:s=`scoped`,grantableComponents:c=[]}){let l=(0,G.useMemo)(()=>S({key:tT.refine(e=>!n?.includes(e),{error:`This key already exists — edit it instead.`}),value:nT}),[n]),u=Gt({resolver:it(l),mode:`onTouched`,defaultValues:{key:``,value:``}}),{isDirty:d,isValid:f,isSubmitting:p}=u.formState,[m,h]=(0,G.useState)(s),[g,_]=(0,G.useState)([]),v=u.watch(`key`),y=(0,G.useCallback)(()=>{h(s),_([])},[s]),b=(0,G.useCallback)(async e=>{let t=o?{processEnv:m===`processEnv`,grants:m===`scoped`?g:void 0}:{};try{await r({...e,...t}),u.reset(),y(),U.success(`Secret "${e.key}" saved.`),a(!1)}catch(e){U.error(String(e))}},[r,u,a,o,m,g,y]),x=(0,G.useCallback)(()=>{u.reset(),y(),a(!1)},[u,a,y]);return(0,K.jsx)(Id,{onOpenChange:a,open:i,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...u,children:(0,K.jsxs)(`form`,{id:`add-secret-form`,name:`add-secret-form`,onSubmit:u.handleSubmit(b),onKeyDown:Q_(u),className:`grid gap-4 my-4`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Add Secret`}),(0,K.jsx)(qd,{children:e})]}),(0,K.jsx)(Y,{control:u.control,name:`key`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:u.control,name:`value`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Value`}),t&&(0,K.jsx)(Lg,{children:t}),(0,K.jsx)(J,{children:(0,K.jsx)(Kx,{autoComplete:`off`,autoCapitalize:`off`,rows:3,...e})}),(0,K.jsx)(Q,{})]})}),o&&(0,K.jsx)(eT,{name:v,tier:m,onTierChange:h,disabled:p,grantsSlot:(0,K.jsx)(Kw,{grants:g,onChange:_,components:c,disabled:p})}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:x,disabled:p,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:p||!d||!f,children:[(0,K.jsx)(Ka,{}),` Add Secret`]})]})})]})})})})}var iT=S({value:nT});function aT({name:e,description:t,valueDescription:n,currentValue:r,onSave:i,onDelete:a,closeModal:o,children:s,delivery:c=!1,currentTier:l=`scoped`}){let u=Gt({resolver:it(iT),mode:`onTouched`,defaultValues:{value:``}}),{isDirty:d,isValid:f,isSubmitting:p}=u.formState,[m,h]=(0,G.useState)(!1),g=p||m,[_,v]=(0,G.useState)(l),y=c&&_!==l,[b,x]=(0,G.useState)(!1),S=(0,G.useCallback)(()=>{u.setValue(`value`,r??``,{shouldDirty:!1}),x(!0)},[u,r]),C=(0,G.useCallback)(async t=>{try{await i(t.value,c?{processEnv:_===`processEnv`}:void 0),U.success(`Secret "${e}" updated.`),o()}catch(e){U.error(String(e))}},[i,e,o,c,_]),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(async()=>{if(!w){T(!0);return}h(!0);try{await a?.(),U.success(`Secret "${e}" deleted.`),o()}catch(e){U.error(String(e))}finally{h(!1)}},[w,a,e,o]);return(0,K.jsx)(Id,{onOpenChange:o,open:!0,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...u,children:(0,K.jsxs)(`form`,{onSubmit:u.handleSubmit(C),className:`grid gap-4 my-4`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:e}),(0,K.jsx)(qd,{children:t})]}),(0,K.jsx)(Y,{control:u.control,name:`value`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:r===void 0?`New value`:`Value`}),n&&(0,K.jsx)(Lg,{children:n}),(0,K.jsx)(J,{children:(0,K.jsx)(Kx,{autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,rows:3,placeholder:r!==void 0&&!b?Aw:void 0,...e})}),r!==void 0&&!b&&(0,K.jsxs)(H,{type:`button`,variant:`defaultOutline`,size:`sm`,onClick:S,children:[(0,K.jsx)(fi,{}),` Reveal current value`]}),(0,K.jsx)(Q,{})]})}),c?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(eT,{name:e,tier:_,onTierChange:v,disabled:g,grantsSlot:y?(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Save this as a scoped secret first, then you can grant applications.`}):s}),y&&!d&&(0,K.jsx)(`p`,{className:`text-sm text-amber-600 dark:text-amber-500`,children:`Re-enter the value above to save this change — a stored secret can’t be read back to re-encrypt automatically.`})]}):s,(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[a?(0,K.jsxs)(H,{variant:`destructiveOutline`,type:`button`,onClick:E,disabled:g,children:[(0,K.jsx)(Eo,{}),` `,w?`Confirm delete`:`Delete`]}):(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:o,disabled:g,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:g||!d||!f,children:[(0,K.jsx)(Ka,{}),` Save`]})]})})]})})})})}function oT({rows:e,isFetching:t,onRefresh:n,canManage:r=!0,selectedName:i,onSelectName:a,nameHeader:o=`Key`,addDescription:s,editDescription:c,valueDescription:l,onSet:u,onDelete:d,renderEditExtras:f,docsLink:p,children:m,delivery:h=!1,deliveryDefaultTier:g=`scoped`,grantableComponents:_}){let v=(0,G.useMemo)(()=>[{header:o,accessorKey:`name`,enableSorting:!1},{id:`value`,header:`Value`,enableSorting:!1,cell:({row:e})=>(0,K.jsx)(sT,{value:e.original.value,warning:e.original.warning})}],[o]),y=(0,G.useCallback)(e=>a(e?.original?.name),[a]),[b,x]=(0,G.useState)(!1),S=(0,G.useMemo)(()=>e.map(e=>e.name),[e]),C=(0,G.useMemo)(()=>e.find(e=>e.name===i),[e,i]),w=H_(n??(()=>Promise.resolve()));return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(L_,{columns:v,data:e,isFetching:t,onRowClick:r?y:void 0,children:[p,n&&(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:w,accessKey:`r`,disabled:t,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:()=>x(!0),accessKey:`a`,disabled:b,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]}),m]}),b&&(0,K.jsx)(rT,{isModalOpen:b,setIsModalOpen:x,description:s,valueDescription:l,existingKeys:S,delivery:h,defaultTier:g,grantableComponents:_,onSubmit:({key:e,value:t,...n})=>u(e,t,n)}),i&&C&&(0,K.jsx)(aT,{name:C.name,description:c,valueDescription:l,currentValue:C.value,delivery:h,currentTier:C.processEnv?`processEnv`:`scoped`,onSave:(e,t)=>u(C.name,e,t),onDelete:d&&(()=>d(C.name)),closeModal:()=>a(void 0),children:f?.(C.name)},C.name)]})}function sT({value:e,warning:t}){let[n,r]=(0,G.useState)(!1),i=t&&(0,K.jsx)(Oo,{className:`inline-block size-4 text-amber-500 shrink-0`,"aria-label":t,children:(0,K.jsx)(`title`,{children:t})});return e===void 0?(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1 max-w-full`,title:t,children:[Aw,i]}):(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1 max-w-full`,children:[(0,K.jsxs)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`px-1`,onClick:e=>{e.stopPropagation(),r(e=>!e)},title:n?`Hide value`:`Reveal value`,children:[n?(0,K.jsx)(ui,{}):(0,K.jsx)(fi,{}),(0,K.jsx)(`span`,{className:`sr-only`,children:n?`Hide value`:`Reveal value`})]}),(0,K.jsx)(`span`,{className:n?`font-mono`:void 0,children:n?e:Aw}),i]})}function cT(){let e=L(),{secretName:t,clusterId:n}=B({strict:!1}),r=q(),{data:i,refetch:a,isFetching:o}=F(xw(r)),s=Np(),{data:c}=F(fC({...r,enabled:s})),l=(0,G.useMemo)(()=>iw(c),[c]),u=F(ql(n,!1)),d=u.data,f=d===void 0||Bp(d)?void 0:n,p=(0,G.useMemo)(()=>({...r,managedClusterId:f}),[r,f]),m=!n||u.isSuccess,h=F({...yw(p),enabled:m}),g=!!n&&u.isError,_=i?.secrets,v=(0,G.useMemo)(()=>(_??[]).map(e=>({name:e.name,processEnv:e.processEnv,warning:lT(e,i)})),[_,i]),y=(0,G.useMemo)(()=>_?.find(e=>e.name===t)?.name,[_,t]),b=(0,G.useCallback)(n=>{let r=[t?`..`:``,n].filter(Boolean);e({to:r.join(`/`)})},[e,t]),{mutateAsync:x,reset:S}=Cw(),{mutateAsync:C}=Tw(),w=(0,G.useCallback)(async(e,t,n)=>{try{await x({...p,name:e,value:t,processEnv:n?.processEnv,grants:n?.grants})}finally{S()}await a()},[x,S,p,a]),T=(0,G.useCallback)(async e=>{await C({...r,name:e}),await a()},[C,r,a]);return(0,K.jsxs)(K.Fragment,{children:[g?(0,K.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3 mb-4`,children:[(0,K.jsx)(Oo,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,K.jsx)(`span`,{children:`Secrets are read-only right now: this cluster's info couldn't be loaded, so its secret custody is unknown. Refresh once cluster info is available.`})]}):h.isError&&(0,K.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3 mb-4`,children:[(0,K.jsx)(Oo,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,K.jsx)(`span`,{children:`Secrets are read-only right now: this cluster has no secrets key, so values can't be encrypted. Key custody is provided by the Harper secret-custody component — once it's active, refresh this page.`})]}),(0,K.jsx)(oT,{rows:v,isFetching:o,onRefresh:a,canManage:h.isSuccess,selectedName:y,onSelectName:b,nameHeader:`Secret`,delivery:!0,docsLink:(0,K.jsx)(`a`,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,href:`https://docs.harperdb.io/reference/v5/security/secrets`,target:`_blank`,rel:`noreferrer`,children:`Secrets Docs`}),grantableComponents:l,addDescription:`The value is encrypted in your browser against the cluster's secrets key — plaintext never reaches the API, the operation log, or disk. It can be replaced or deleted, but never read back.`,editDescription:`The current value can't be shown — it's stored encrypted. Enter a new value to replace it, adjust how applications read it, or delete the secret.`,valueDescription:`Encrypted client-side before it leaves this page.`,onSet:w,onDelete:T,renderEditExtras:e=>{let t=_?.find(t=>t.name===e);return t&&(0,K.jsx)(kw,{name:t.name,initialGrants:t.grants,components:l,onChanged:()=>void a()},t.name)}})]})}function lT(e,t){if(t?.custody_fingerprint){if(!e.kid_matches_custody)return`Encrypted under a different key than the cluster's current secrets key — it may fail to decrypt at load time. Set a new value to re-encrypt.`;if(e.unverified)return`Stored without key-identity verification.`}}async function uT({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_ssh_keys`});return t}function dT(e){return z({queryKey:[e.entityId,`list_ssh_keys`],queryFn:()=>uT(e)})}var fT=[{header:`SSH Key Name`,accessorKey:`name`,enableSorting:!1},{header:`Host`,accessorKey:`host`,enableSorting:!1,cell:({getValue:e})=>e()||`—`},{header:`Hostname`,accessorKey:`hostname`,enableSorting:!1,cell:({getValue:e})=>e()||`—`}];async function pT({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_ssh_known_hosts`});return t}function mT(e){return z({queryKey:[e.entityId,`get_ssh_known_hosts`],queryFn:()=>pT(e)})}var hT=S({known_hosts:M().trim().nonempty({error:`Please enter at least one known host.`})});async function gT(e){let{instanceClient:t,entityType:n,...r}=e,{data:i}=await t.post(`/`,{operation:`set_ssh_known_hosts`,replicated:n===`cluster`,...r});return i}function _T(){return R({mutationFn:gT})}function vT(){let e=q(),{data:t}=et(mT(e)),n=Gt({resolver:it(hT),mode:`onTouched`,defaultValues:{known_hosts:t?.known_hosts||``}}),{isDirty:r,isValid:i}=n.formState,{mutate:a,isPending:o}=_T(),s=(0,G.useCallback)(async t=>{a({known_hosts:t.known_hosts.trim()+`
680
- `,...e},{onSuccess:()=>{n.reset(t),U.success(`Known hosts saved!`)}})},[a,n,e]);return(0,K.jsx)(El,{...n,children:(0,K.jsx)(`form`,{id:`instance-edit-known-hosts-form`,name:`instance-edit-known-hosts-form`,onSubmit:n.handleSubmit(s),className:`grid my-4 md:grid-cols-2 overflow-x-auto rounded-md`,children:(0,K.jsx)(Y,{control:n.control,name:`known_hosts`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2 gap-0`,children:[(0,K.jsx)(Z,{className:`bg-muted dark:bg-black-dark py-3 px-2 m-0 text-left font-medium whitespace-nowrap`,children:`Known Hosts`}),(0,K.jsxs)(`div`,{className:`border border-grey-700 p-2 pb-3`,children:[(0,K.jsx)(Lg,{className:`pb-2`,children:`Manage your known hosts here. When you add a SSH Key with a hostname of "github.com", we'll automatically attempt to resolve GitHub's known hosts for you.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Kx,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:10,...e})}),(0,K.jsx)(Q,{}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,className:`mt-2`,disabled:o||!r||!i,children:[(0,K.jsx)(Ka,{}),` `,o?`Saving`:`Save`,` Known Hosts`,o?`...`:``]})]})]})})})})}var yT=`enc:v1:`,bT=/^-----BEGIN ([A-Z0-9 ]+)-----$/,xT=new Set([`OPENSSH PRIVATE KEY`,`RSA PRIVATE KEY`,`DSA PRIVATE KEY`,`EC PRIVATE KEY`,`PRIVATE KEY`,`ENCRYPTED PRIVATE KEY`]),ST=new Set([`PUBLIC KEY`,`RSA PUBLIC KEY`]),CT=`---- BEGIN SSH2 PUBLIC KEY ----`,wT=/(?:^|\s)((?:ssh-(?:rsa|dss|ed25519)|ecdsa-sha2-nistp(?:256|384|521)|sk-(?:ssh-ed25519|ecdsa-sha2-nistp256)@openssh\.com)(?:-cert-v01@openssh\.com)?)\s+AAAA/m,TT=/^Proc-Type:\s*4,\s*ENCRYPTED$/i,ET=/^[A-Za-z0-9+/]+={0,2}$/,DT=`openssh-key-v1\0`,OT=`\x07*†HÎ8`,kT=` — for example, a new deploy key from ssh-keygen -t ed25519 -N "".`,AT=`This key is protected by a passphrase, which Harper can't enter when it runs git. Use a key without one${kT}`,jT=`This is a DSA key, which current ssh no longer accepts. Use an Ed25519 key${kT}`,MT=`This key only works with its hardware security key attached, and the server Harper runs git on has none. Use a regular key${kT}`,NT=`This key is damaged and can't be read. Copy it again from the original file.`;function PT(e){return e.split(`
677
+ `,n=/\r?\n$/.test(e),r=e.length?e.split(/\r?\n/):[];return n&&r.pop(),{eol:t,endedWithNewline:n,lines:r}}function Yw(e,t){let n=new Map(Object.entries(t)),r=new Set,{eol:i,endedWithNewline:a,lines:o}=Jw(e),s=[];for(let e=0;e<o.length;e++){let t=Lw.exec(o[e]);if(t){let[,i,a]=t,c=qw(o,e,t[3]);if(n.has(a))r.has(a)||(s.push(`${i}${a}=${Gw(n.get(a))}`),r.add(a));else for(let t=e;t<=c;t++)s.push(o[t]);e=c;continue}s.push(o[e])}let c=!1;for(let[e,t]of n)r.has(e)||(s.push(`${e}=${Gw(t)}`),c=!0);let l=s.join(i);return l.length>0&&(a||c)&&(l+=i),l}function Xw(e,t){let n=new Set(Array.isArray(t)?t:[t]);if(n.size===0||!e)return e;let{eol:r,endedWithNewline:i,lines:a}=Jw(e),o=[];for(let e=0;e<a.length;e++){let t=Lw.exec(a[e]);if(t){let r=qw(a,e,t[3]);if(!n.has(t[2]))for(let t=e;t<=r;t++)o.push(a[t]);e=r;continue}o.push(a[e])}let s=o.join(r);return s.length>0&&i&&(s+=r),s}function Zw({grants:e,onChange:t,components:n,disabled:r}){let i=(0,G.useCallback)(n=>{e.includes(n)||t([...e,n])},[e,t]),a=(0,G.useCallback)(n=>{t(e.filter(e=>e!==n))},[e,t]);return(0,K.jsxs)(`div`,{className:`grid gap-2`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Granted applications`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Only these applications will be able to read the secret. You can grant more later — leave it empty to add grants after creating the secret.`}),e.length>0&&(0,K.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.map(e=>(0,K.jsxs)(Fs,{variant:`secondary`,children:[e,(0,K.jsxs)(`button`,{type:`button`,onClick:()=>a(e),disabled:r,title:`Remove ${e}`,className:`cursor-pointer disabled:cursor-default`,children:[(0,K.jsx)(Io,{}),(0,K.jsxs)(`span`,{className:`sr-only`,children:[`Remove `,e]})]})]},e))}),(0,K.jsx)(uw,{components:n,granted:e,onAdd:i,disabled:r,actionLabel:`Add`,commitOnBlur:!0})]})}function Qw({className:e,...t}){return(0,K.jsx)(gn,{"data-slot":`radio-group`,className:P(`grid gap-3`,e),...t})}function $w({className:e,...t}){return(0,K.jsx)(Kt,{"data-slot":`radio-group-item`,className:P(`border-input text-primary 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 dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50`,e),...t,children:(0,K.jsx)(Sn,{"data-slot":`radio-group-indicator`,className:`relative flex items-center justify-center`,children:(0,K.jsx)(Rr,{className:`fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2`})})})}function eT(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function tT(e){return`'${e.replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}'`}function nT(e,t){let n=e.trim()||`MY_SECRET`,r=eT(n);return t===`processEnv`?[`// Exposed on process.env for every component (and child processes).`,`const value = ${r?`process.env.${n}`:`process.env[${tT(n)}]`};`].join(`
678
+ `):[`import { secrets } from 'harper';`,``,`// Use the current value right away — read at your module's top level.`,`let value = ${r?`secrets.${n}`:`secrets[${tT(n)}]`};`,``,`// Then react to rotations without blocking startup. Subscribing in a background`,`// task lets module load finish, so the rest of your app keeps initializing.`,`(async () => {`,` try {`,` for await (const next of secrets.subscribe(${tT(n)})) {`,` if (next === value) continue; // the first yield is the current value you already have`,` value = next; // rotated — rebuild anything bound to the secret (e.g. an API client) here`,` }`,` } catch (error) {`,` // Log and keep serving the last value; it stays valid until the next reload.`,` console.error('secret subscription ended for', ${tT(n)}, error);`,` }`,`})();`].join(`
679
+ `)}function rT({name:e,tier:t}){let n=nT(e,t),[r,i]=(0,G.useState)(!1),a=(0,G.useRef)(void 0);(0,G.useEffect)(()=>()=>clearTimeout(a.current),[]);let o=(0,G.useCallback)(()=>{$p(n).then(e=>{e&&(i(!0),clearTimeout(a.current),a.current=setTimeout(()=>i(!1),1200))})},[n]);return(0,K.jsxs)(`div`,{className:`relative`,children:[(0,K.jsx)(`pre`,{className:`overflow-x-auto rounded-md border border-border bg-muted/50 p-3 pr-10 text-xs leading-relaxed`,children:(0,K.jsx)(`code`,{className:`font-mono text-foreground`,children:n})}),(0,K.jsxs)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`absolute top-1.5 right-1.5 px-1`,onClick:o,title:`Copy example`,children:[r?(0,K.jsx)(kn,{className:`text-green-500`}):(0,K.jsx)(Qr,{}),(0,K.jsx)(`span`,{className:`sr-only`,children:`Copy example`})]})]})}var iT=`https://docs.harperdb.io/reference/v5/security/secrets`;function aT({name:e,tier:t,onTierChange:n,disabled:r,grantsSlot:i}){return(0,K.jsxs)(`div`,{className:`grid gap-3`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`How should applications read this secret?`}),(0,K.jsxs)(Qw,{value:t,onValueChange:e=>n(e),disabled:r,children:[(0,K.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,K.jsx)($w,{value:`scoped`,className:`mt-0.5`}),(0,K.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Scoped to specific apps`}),(0,K.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Exposed only to the applications you grant, through the `,(0,K.jsx)(`code`,{className:`font-mono`,children:`secrets`}),` `,`accessor. Never placed on `,(0,K.jsx)(`code`,{className:`font-mono`,children:`process.env`}),`.`]})]})]}),(0,K.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer`,children:[(0,K.jsx)($w,{value:`processEnv`,className:`mt-0.5`}),(0,K.jsxs)(`div`,{className:`grid gap-0.5`,children:[(0,K.jsx)(`span`,{className:`text-sm font-medium`,children:`Environment variable`}),(0,K.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[`Materialized onto `,(0,K.jsx)(`code`,{className:`font-mono`,children:`process.env`}),` `,`for every component (and child processes). Global — it can't be scoped to specific apps.`]})]})]})]}),t===`scoped`&&i,(0,K.jsxs)(`div`,{className:`grid gap-1`,children:[(0,K.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:`How to read it in your component`}),(0,K.jsx)(rT,{name:e,tier:t}),(0,K.jsx)(`a`,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,href:iT,target:`_blank`,rel:`noreferrer`,children:`Learn more about secrets in the Harper docs`})]})]})}var oT=M().trim().min(1,{error:`Enter a key.`}).regex(Iw,{error:`Letters, numbers, underscore, dash and dot only.`}),sT=M().min(1,{error:`Enter a value.`});function cT({description:e,valueDescription:t,existingKeys:n,onSubmit:r,isModalOpen:i,setIsModalOpen:a,delivery:o=!1,defaultTier:s=`scoped`,grantableComponents:c=[]}){let l=(0,G.useMemo)(()=>S({key:oT.refine(e=>!n?.includes(e),{error:`This key already exists — edit it instead.`}),value:sT}),[n]),u=Gt({resolver:it(l),mode:`onTouched`,defaultValues:{key:``,value:``}}),{isDirty:d,isValid:f,isSubmitting:p}=u.formState,[m,h]=(0,G.useState)(s),[g,_]=(0,G.useState)([]),v=u.watch(`key`),y=(0,G.useCallback)(()=>{h(s),_([])},[s]),b=(0,G.useCallback)(async e=>{let t=o?{processEnv:m===`processEnv`,grants:m===`scoped`?g:void 0}:{};try{await r({...e,...t}),u.reset(),y(),U.success(`Secret "${e.key}" saved.`),a(!1)}catch(e){U.error(String(e))}},[r,u,a,o,m,g,y]),x=(0,G.useCallback)(()=>{u.reset(),y(),a(!1)},[u,a,y]);return(0,K.jsx)(Id,{onOpenChange:a,open:i,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...u,children:(0,K.jsxs)(`form`,{id:`add-secret-form`,name:`add-secret-form`,onSubmit:u.handleSubmit(b),onKeyDown:Q_(u),className:`grid gap-4 my-4`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Add Secret`}),(0,K.jsx)(qd,{children:e})]}),(0,K.jsx)(Y,{control:u.control,name:`key`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:u.control,name:`value`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Value`}),t&&(0,K.jsx)(Lg,{children:t}),(0,K.jsx)(J,{children:(0,K.jsx)(Zx,{autoComplete:`off`,autoCapitalize:`off`,rows:3,...e})}),(0,K.jsx)(Q,{})]})}),o&&(0,K.jsx)(aT,{name:v,tier:m,onTierChange:h,disabled:p,grantsSlot:(0,K.jsx)(Zw,{grants:g,onChange:_,components:c,disabled:p})}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:x,disabled:p,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:p||!d||!f,children:[(0,K.jsx)(Ka,{}),` Add Secret`]})]})})]})})})})}var lT=S({value:sT});function uT({name:e,description:t,valueDescription:n,currentValue:r,onSave:i,onDelete:a,closeModal:o,children:s,delivery:c=!1,currentTier:l=`scoped`}){let u=Gt({resolver:it(lT),mode:`onTouched`,defaultValues:{value:``}}),{isDirty:d,isValid:f,isSubmitting:p}=u.formState,[m,h]=(0,G.useState)(!1),g=p||m,[_,v]=(0,G.useState)(l),y=c&&_!==l,[b,x]=(0,G.useState)(!1),S=(0,G.useCallback)(()=>{u.setValue(`value`,r??``,{shouldDirty:!1}),x(!0)},[u,r]),C=(0,G.useCallback)(async t=>{try{await i(t.value,c?{processEnv:_===`processEnv`}:void 0),U.success(`Secret "${e}" updated.`),o()}catch(e){U.error(String(e))}},[i,e,o,c,_]),[w,T]=(0,G.useState)(!1),E=(0,G.useCallback)(async()=>{if(!w){T(!0);return}h(!0);try{await a?.(),U.success(`Secret "${e}" deleted.`),o()}catch(e){U.error(String(e))}finally{h(!1)}},[w,a,e,o]);return(0,K.jsx)(Id,{onOpenChange:o,open:!0,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...u,children:(0,K.jsxs)(`form`,{onSubmit:u.handleSubmit(C),className:`grid gap-4 my-4`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:e}),(0,K.jsx)(qd,{children:t})]}),(0,K.jsx)(Y,{control:u.control,name:`value`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:r===void 0?`New value`:`Value`}),n&&(0,K.jsx)(Lg,{children:n}),(0,K.jsx)(J,{children:(0,K.jsx)(Zx,{autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,rows:3,placeholder:r!==void 0&&!b?Fw:void 0,...e})}),r!==void 0&&!b&&(0,K.jsxs)(H,{type:`button`,variant:`defaultOutline`,size:`sm`,onClick:S,children:[(0,K.jsx)(fi,{}),` Reveal current value`]}),(0,K.jsx)(Q,{})]})}),c?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(aT,{name:e,tier:_,onTierChange:v,disabled:g,grantsSlot:y?(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Save this as a scoped secret first, then you can grant applications.`}):s}),y&&!d&&(0,K.jsx)(`p`,{className:`text-sm text-amber-600 dark:text-amber-500`,children:`Re-enter the value above to save this change — a stored secret can’t be read back to re-encrypt automatically.`})]}):s,(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[a?(0,K.jsxs)(H,{variant:`destructiveOutline`,type:`button`,onClick:E,disabled:g,children:[(0,K.jsx)(Eo,{}),` `,w?`Confirm delete`:`Delete`]}):(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:o,disabled:g,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:g||!d||!f,children:[(0,K.jsx)(Ka,{}),` Save`]})]})})]})})})})}function dT({rows:e,isFetching:t,onRefresh:n,canManage:r=!0,selectedName:i,onSelectName:a,nameHeader:o=`Key`,addDescription:s,editDescription:c,valueDescription:l,onSet:u,onDelete:d,renderEditExtras:f,docsLink:p,children:m,delivery:h=!1,deliveryDefaultTier:g=`scoped`,grantableComponents:_}){let v=(0,G.useMemo)(()=>[{header:o,accessorKey:`name`,enableSorting:!1},{id:`value`,header:`Value`,enableSorting:!1,cell:({row:e})=>(0,K.jsx)(fT,{value:e.original.value,warning:e.original.warning})}],[o]),y=(0,G.useCallback)(e=>a(e?.original?.name),[a]),[b,x]=(0,G.useState)(!1),S=(0,G.useMemo)(()=>e.map(e=>e.name),[e]),C=(0,G.useMemo)(()=>e.find(e=>e.name===i),[e,i]),w=H_(n??(()=>Promise.resolve()));return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(L_,{columns:v,data:e,isFetching:t,onRowClick:r?y:void 0,children:[p,n&&(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:w,accessKey:`r`,disabled:t,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:()=>x(!0),accessKey:`a`,disabled:b,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]}),m]}),b&&(0,K.jsx)(cT,{isModalOpen:b,setIsModalOpen:x,description:s,valueDescription:l,existingKeys:S,delivery:h,defaultTier:g,grantableComponents:_,onSubmit:({key:e,value:t,...n})=>u(e,t,n)}),i&&C&&(0,K.jsx)(uT,{name:C.name,description:c,valueDescription:l,currentValue:C.value,delivery:h,currentTier:C.processEnv?`processEnv`:`scoped`,onSave:(e,t)=>u(C.name,e,t),onDelete:d&&(()=>d(C.name)),closeModal:()=>a(void 0),children:f?.(C.name)},C.name)]})}function fT({value:e,warning:t}){let[n,r]=(0,G.useState)(!1),i=t&&(0,K.jsx)(Oo,{className:`inline-block size-4 text-amber-500 shrink-0`,"aria-label":t,children:(0,K.jsx)(`title`,{children:t})});return e===void 0?(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1 max-w-full`,title:t,children:[Fw,i]}):(0,K.jsxs)(`span`,{className:`inline-flex items-center gap-1 max-w-full`,children:[(0,K.jsxs)(H,{type:`button`,variant:`ghost`,size:`sm`,className:`px-1`,onClick:e=>{e.stopPropagation(),r(e=>!e)},title:n?`Hide value`:`Reveal value`,children:[n?(0,K.jsx)(ui,{}):(0,K.jsx)(fi,{}),(0,K.jsx)(`span`,{className:`sr-only`,children:n?`Hide value`:`Reveal value`})]}),(0,K.jsx)(`span`,{className:n?`font-mono`:void 0,children:n?e:Fw}),i]})}function pT(){let e=L(),{secretName:t,clusterId:n}=B({strict:!1}),r=q(),{data:i,refetch:a,isFetching:o}=F(Ew(r)),s=Np(),{data:c}=F(_C({...r,enabled:s})),l=(0,G.useMemo)(()=>lw(c),[c]),u=F(ql(n,!1)),d=u.data,f=d===void 0||Bp(d)?void 0:n,p=(0,G.useMemo)(()=>({...r,managedClusterId:f}),[r,f]),m=!n||u.isSuccess,h=F({...ww(p),enabled:m}),g=!!n&&u.isError,_=i?.secrets,v=(0,G.useMemo)(()=>(_??[]).map(e=>({name:e.name,processEnv:e.processEnv,warning:mT(e,i)})),[_,i]),y=(0,G.useMemo)(()=>_?.find(e=>e.name===t)?.name,[_,t]),b=(0,G.useCallback)(n=>{let r=[t?`..`:``,n].filter(Boolean);e({to:r.join(`/`)})},[e,t]),{mutateAsync:x,reset:S}=Ow(),{mutateAsync:C}=Aw(),w=(0,G.useCallback)(async(e,t,n)=>{try{await x({...p,name:e,value:t,processEnv:n?.processEnv,grants:n?.grants})}finally{S()}await a()},[x,S,p,a]),T=(0,G.useCallback)(async e=>{await C({...r,name:e}),await a()},[C,r,a]);return(0,K.jsxs)(K.Fragment,{children:[g?(0,K.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3 mb-4`,children:[(0,K.jsx)(Oo,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,K.jsx)(`span`,{children:`Secrets are read-only right now: this cluster's info couldn't be loaded, so its secret custody is unknown. Refresh once cluster info is available.`})]}):h.isError&&(0,K.jsxs)(`p`,{className:`flex items-start gap-2 text-sm text-muted-foreground border border-amber-500/50 rounded-md p-3 mb-4`,children:[(0,K.jsx)(Oo,{className:`size-4 text-amber-500 shrink-0 mt-0.5`}),(0,K.jsx)(`span`,{children:`Secrets are read-only right now: this cluster has no secrets key, so values can't be encrypted. Key custody is provided by the Harper secret-custody component — once it's active, refresh this page.`})]}),(0,K.jsx)(dT,{rows:v,isFetching:o,onRefresh:a,canManage:h.isSuccess,selectedName:y,onSelectName:b,nameHeader:`Secret`,delivery:!0,docsLink:(0,K.jsx)(`a`,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,href:`https://docs.harperdb.io/reference/v5/security/secrets`,target:`_blank`,rel:`noreferrer`,children:`Secrets Docs`}),grantableComponents:l,addDescription:`The value is encrypted in your browser against the cluster's secrets key — plaintext never reaches the API, the operation log, or disk. It can be replaced or deleted, but never read back.`,editDescription:`The current value can't be shown — it's stored encrypted. Enter a new value to replace it, adjust how applications read it, or delete the secret.`,valueDescription:`Encrypted client-side before it leaves this page.`,onSet:w,onDelete:T,renderEditExtras:e=>{let t=_?.find(t=>t.name===e);return t&&(0,K.jsx)(Pw,{name:t.name,initialGrants:t.grants,components:l,onChanged:()=>void a()},t.name)}})]})}function mT(e,t){if(t?.custody_fingerprint){if(!e.kid_matches_custody)return`Encrypted under a different key than the cluster's current secrets key — it may fail to decrypt at load time. Set a new value to re-encrypt.`;if(e.unverified)return`Stored without key-identity verification.`}}async function hT({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_ssh_keys`});return t}function gT(e){return z({queryKey:[e.entityId,`list_ssh_keys`],queryFn:()=>hT(e)})}var _T=[{header:`SSH Key Name`,accessorKey:`name`,enableSorting:!1},{header:`Host`,accessorKey:`host`,enableSorting:!1,cell:({getValue:e})=>e()||`—`},{header:`Hostname`,accessorKey:`hostname`,enableSorting:!1,cell:({getValue:e})=>e()||`—`}];async function vT({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_ssh_known_hosts`});return t}function yT(e){return z({queryKey:[e.entityId,`get_ssh_known_hosts`],queryFn:()=>vT(e)})}var bT=S({known_hosts:M().trim().nonempty({error:`Please enter at least one known host.`})});async function xT(e){let{instanceClient:t,entityType:n,...r}=e,{data:i}=await t.post(`/`,{operation:`set_ssh_known_hosts`,replicated:n===`cluster`,...r});return i}function ST(){return R({mutationFn:xT})}function CT(){let e=q(),{data:t}=et(yT(e)),n=Gt({resolver:it(bT),mode:`onTouched`,defaultValues:{known_hosts:t?.known_hosts||``}}),{isDirty:r,isValid:i}=n.formState,{mutate:a,isPending:o}=ST(),s=(0,G.useCallback)(async t=>{a({known_hosts:t.known_hosts.trim()+`
680
+ `,...e},{onSuccess:()=>{n.reset(t),U.success(`Known hosts saved!`)}})},[a,n,e]);return(0,K.jsx)(El,{...n,children:(0,K.jsx)(`form`,{id:`instance-edit-known-hosts-form`,name:`instance-edit-known-hosts-form`,onSubmit:n.handleSubmit(s),className:`grid my-4 md:grid-cols-2 overflow-x-auto rounded-md`,children:(0,K.jsx)(Y,{control:n.control,name:`known_hosts`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2 gap-0`,children:[(0,K.jsx)(Z,{className:`bg-muted dark:bg-black-dark py-3 px-2 m-0 text-left font-medium whitespace-nowrap`,children:`Known Hosts`}),(0,K.jsxs)(`div`,{className:`border border-grey-700 p-2 pb-3`,children:[(0,K.jsx)(Lg,{className:`pb-2`,children:`Manage your known hosts here. When you add a SSH Key with a hostname of "github.com", we'll automatically attempt to resolve GitHub's known hosts for you.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Zx,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:10,...e})}),(0,K.jsx)(Q,{}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,className:`mt-2`,disabled:o||!r||!i,children:[(0,K.jsx)(Ka,{}),` `,o?`Saving`:`Save`,` Known Hosts`,o?`...`:``]})]})]})})})})}var wT=`enc:v1:`,TT=/^-----BEGIN ([A-Z0-9 ]+)-----$/,ET=new Set([`OPENSSH PRIVATE KEY`,`RSA PRIVATE KEY`,`DSA PRIVATE KEY`,`EC PRIVATE KEY`,`PRIVATE KEY`,`ENCRYPTED PRIVATE KEY`]),DT=new Set([`PUBLIC KEY`,`RSA PUBLIC KEY`]),OT=`---- BEGIN SSH2 PUBLIC KEY ----`,kT=/(?:^|\s)((?:ssh-(?:rsa|dss|ed25519)|ecdsa-sha2-nistp(?:256|384|521)|sk-(?:ssh-ed25519|ecdsa-sha2-nistp256)@openssh\.com)(?:-cert-v01@openssh\.com)?)\s+AAAA/m,AT=/^Proc-Type:\s*4,\s*ENCRYPTED$/i,jT=/^[A-Za-z0-9+/]+={0,2}$/,MT=`openssh-key-v1\0`,NT=`\x07*†HÎ8`,PT=` — for example, a new deploy key from ssh-keygen -t ed25519 -N "".`,FT=`This key is protected by a passphrase, which Harper can't enter when it runs git. Use a key without one${PT}`,IT=`This is a DSA key, which current ssh no longer accepts. Use an Ed25519 key${PT}`,LT=`This key only works with its hardware security key attached, and the server Harper runs git on has none. Use a regular key${PT}`,RT=`This key is damaged and can't be read. Copy it again from the original file.`;function zT(e){return e.split(`
681
681
  `).map(e=>e.trim()).filter(Boolean).join(`
682
- `)}function FT(e){let t=PT(e);if(!t||t.startsWith(yT))return;let n=t.split(`
683
- `),r=n.map(e=>bT.exec(e)?.[1]),i=r.findIndex(e=>e!==void 0&&xT.has(e));if(i===-1)return IT(t,n,r);let a=r[i];if(i>0&&a===`OPENSSH PRIVATE KEY`)return`Paste only the private key — remove the text before "${n[i]}".`;let o=`-----END ${a}-----`,s=n.indexOf(o,i+1);return s===-1?`This key is incomplete: its "${o}" line is missing. Copy the whole file.`:LT(a,n.slice(i+1,s))}function IT(e,t,n){if(e.startsWith(`PuTTY-User-Key-File-`))return`This is a PuTTY key (.ppk), which ssh can't read. In PuTTYgen, choose Conversions → Export OpenSSH key, and paste that file instead.`;if(t.includes(CT)||n.some(e=>e!==void 0&&ST.has(e)))return`This is a public key. Paste the private key — the file without the .pub extension.`;let r=n.find(e=>e!==void 0);if(r)return`Expected an SSH private key, but found "-----BEGIN ${r}-----".`;let i=wT.exec(e)?.[1];return i?`This looks like a public key ("${i} …"). Paste the private key — the file without the .pub extension.`:`This doesn't look like a private key. Paste the whole key file, including its "-----BEGIN" and "-----END" lines.`}function LT(e,t){if(e===`DSA PRIVATE KEY`)return jT;if(e===`ENCRYPTED PRIVATE KEY`||t.some(e=>TT.test(e)))return AT;let n=t.join(``).replace(/[ \t]+/g,``),r=ET.test(n)?zT(n):void 0;if(r===void 0)return NT;if(e!==`OPENSSH PRIVATE KEY`)return BT(r)===r.length?e===`PRIVATE KEY`&&r.slice(0,32).includes(OT)?jT:void 0:NT;let i=VT(r);return i?i.keyType===`ssh-dss`?jT:i.keyType.startsWith(`sk-`)?MT:i.cipherName===`none`?RT(i.privateSection,i.trailingBytes)?void 0:NT:AT:NT}function RT(e,t){if(!e||t!==0||e.length%8!=0)return!1;let n=HT(e,0),r=n.uint32();return r!==void 0&&r===n.uint32()}function zT(e){try{return atob(e)}catch{return}}function BT(e){if(e.length<2||e.charCodeAt(0)!==48)return;let t=e.charCodeAt(1);if(t<128)return 2+t;let n=t&127;if(n===0||n>3||e.length<2+n)return;let r=0;for(let t=0;t<n;t++)r=r*256+e.charCodeAt(2+t);return 2+n+r}function VT(e){if(!e.startsWith(DT))return;let t=HT(e,15),n=t.string(),r=t.string(),i=t.string(),a=t.uint32(),o=t.string();if(n===void 0||r===void 0||i===void 0||a!==1||!o)return;let s=HT(o,0).string();if(s!==void 0)return{cipherName:n,keyType:s,privateSection:t.string(),trailingBytes:t.remaining()}}function HT(e,t){let n=t,r=()=>{if(e.length<n+4)return;let t=(e.charCodeAt(n)<<24|e.charCodeAt(n+1)<<16|e.charCodeAt(n+2)<<8|e.charCodeAt(n+3))>>>0;return n+=4,t};return{uint32:r,string:()=>{let t=r();if(!(t===void 0||e.length<n+t))return n+=t,e.slice(n-t,n)},remaining:()=>e.length-n}}var UT=M().overwrite(PT).min(1,{error:`Key is required.`}).superRefine((e,t)=>{let n=FT(e);n&&t.addIssue({code:`custom`,message:n})}),WT=new Set([`github.com`,`ssh.github.com`,`gitlab.com`,`altssh.gitlab.com`,`bitbucket.org`]),GT=`Use a unique alias like "my-repo.github.com" instead of a bare registry hostname.`,KT=/^(?!-)[A-Za-z0-9._-]+$/,qT=w(),JT=S({name:M().trim().min(1,{error:`Name is required.`}).regex(/^[a-zA-Z0-9-_]*$/,{error:`Can only contain letters, numbers, dashes and underscores.`}),key:UT,host:M().trim().min(1,{error:`Host is required.`}).regex(KT,{error:`Can only contain letters, numbers, dots, dashes and underscores, and not start with a dash, like "my-repo.github.com".`}),hostname:M().trim().min(1,{error:`Hostname is required.`}).refine(e=>KT.test(e)||qT.safeParse(e).success,{error:`Enter just the hostname, like "github.com" — no "git@", scheme, port or path.`}),known_hosts:M().trim().optional()}).refine(e=>!WT.has(e.host.trim().toLowerCase()),{path:[`host`],error:GT}).refine(e=>e.host.trim().toLowerCase()!==e.hostname.trim().toLowerCase(),{path:[`host`],error:`Host alias must differ from the hostname. ${GT}`});function YT(e){return(t,n)=>{e.some(e=>e.name===t.name)&&n.addIssue({code:`custom`,path:[`name`],message:`A key with this name already exists. Pick another name, or edit that key to replace it.`});let r=t.host.toLowerCase(),i=e.find(e=>e.host?.toLowerCase()===r);i&&n.addIssue({code:`custom`,path:[`host`],message:`The key "${i.name}" already uses the alias "${i.host}". Each key needs its own.`})}}async function XT(e){let{instanceClient:t,entityType:n,entityId:r,...i}=e,{data:a}=await t.post(`/`,{operation:`add_ssh_key`,replicated:n===`cluster`,...i});return a}function ZT(){return R({mutationFn:XT})}var QT=[];function $T({existingKeys:e,isModalOpen:t,onChangesSaved:n,setIsModalOpen:r}){let i=(0,G.useMemo)(()=>it(JT.superRefine(YT(e??QT))),[e]),a=Gt({resolver:i,mode:`onChange`,defaultValues:{name:``,key:``,host:``,hostname:``,known_hosts:``}}),o=q(),{mutate:s,isPending:c}=ZT(),l=(0,G.useCallback)(async e=>{if(e){let{name:t,key:i,host:c,hostname:l,known_hosts:u}=e;s({name:t,key:i.trim()+`
682
+ `)}function BT(e){let t=zT(e);if(!t||t.startsWith(wT))return;let n=t.split(`
683
+ `),r=n.map(e=>TT.exec(e)?.[1]),i=r.findIndex(e=>e!==void 0&&ET.has(e));if(i===-1)return VT(t,n,r);let a=r[i];if(i>0&&a===`OPENSSH PRIVATE KEY`)return`Paste only the private key — remove the text before "${n[i]}".`;let o=`-----END ${a}-----`,s=n.indexOf(o,i+1);return s===-1?`This key is incomplete: its "${o}" line is missing. Copy the whole file.`:HT(a,n.slice(i+1,s))}function VT(e,t,n){if(e.startsWith(`PuTTY-User-Key-File-`))return`This is a PuTTY key (.ppk), which ssh can't read. In PuTTYgen, choose Conversions → Export OpenSSH key, and paste that file instead.`;if(t.includes(OT)||n.some(e=>e!==void 0&&DT.has(e)))return`This is a public key. Paste the private key — the file without the .pub extension.`;let r=n.find(e=>e!==void 0);if(r)return`Expected an SSH private key, but found "-----BEGIN ${r}-----".`;let i=kT.exec(e)?.[1];return i?`This looks like a public key ("${i} …"). Paste the private key — the file without the .pub extension.`:`This doesn't look like a private key. Paste the whole key file, including its "-----BEGIN" and "-----END" lines.`}function HT(e,t){if(e===`DSA PRIVATE KEY`)return IT;if(e===`ENCRYPTED PRIVATE KEY`||t.some(e=>AT.test(e)))return FT;let n=t.join(``).replace(/[ \t]+/g,``),r=jT.test(n)?WT(n):void 0;if(r===void 0)return RT;if(e!==`OPENSSH PRIVATE KEY`)return GT(r)===r.length?e===`PRIVATE KEY`&&r.slice(0,32).includes(NT)?IT:void 0:RT;let i=KT(r);return i?i.keyType===`ssh-dss`?IT:i.keyType.startsWith(`sk-`)?LT:i.cipherName===`none`?UT(i.privateSection,i.trailingBytes)?void 0:RT:FT:RT}function UT(e,t){if(!e||t!==0||e.length%8!=0)return!1;let n=qT(e,0),r=n.uint32();return r!==void 0&&r===n.uint32()}function WT(e){try{return atob(e)}catch{return}}function GT(e){if(e.length<2||e.charCodeAt(0)!==48)return;let t=e.charCodeAt(1);if(t<128)return 2+t;let n=t&127;if(n===0||n>3||e.length<2+n)return;let r=0;for(let t=0;t<n;t++)r=r*256+e.charCodeAt(2+t);return 2+n+r}function KT(e){if(!e.startsWith(MT))return;let t=qT(e,15),n=t.string(),r=t.string(),i=t.string(),a=t.uint32(),o=t.string();if(n===void 0||r===void 0||i===void 0||a!==1||!o)return;let s=qT(o,0).string();if(s!==void 0)return{cipherName:n,keyType:s,privateSection:t.string(),trailingBytes:t.remaining()}}function qT(e,t){let n=t,r=()=>{if(e.length<n+4)return;let t=(e.charCodeAt(n)<<24|e.charCodeAt(n+1)<<16|e.charCodeAt(n+2)<<8|e.charCodeAt(n+3))>>>0;return n+=4,t};return{uint32:r,string:()=>{let t=r();if(!(t===void 0||e.length<n+t))return n+=t,e.slice(n-t,n)},remaining:()=>e.length-n}}var JT=M().overwrite(zT).min(1,{error:`Key is required.`}).superRefine((e,t)=>{let n=BT(e);n&&t.addIssue({code:`custom`,message:n})}),YT=new Set([`github.com`,`ssh.github.com`,`gitlab.com`,`altssh.gitlab.com`,`bitbucket.org`]),XT=`Use a unique alias like "my-repo.github.com" instead of a bare registry hostname.`,ZT=/^(?!-)[A-Za-z0-9._-]+$/,QT=w(),$T=S({name:M().trim().min(1,{error:`Name is required.`}).regex(/^[a-zA-Z0-9-_]*$/,{error:`Can only contain letters, numbers, dashes and underscores.`}),key:JT,host:M().trim().min(1,{error:`Host is required.`}).regex(ZT,{error:`Can only contain letters, numbers, dots, dashes and underscores, and not start with a dash, like "my-repo.github.com".`}),hostname:M().trim().min(1,{error:`Hostname is required.`}).refine(e=>ZT.test(e)||QT.safeParse(e).success,{error:`Enter just the hostname, like "github.com" — no "git@", scheme, port or path.`}),known_hosts:M().trim().optional()}).refine(e=>!YT.has(e.host.trim().toLowerCase()),{path:[`host`],error:XT}).refine(e=>e.host.trim().toLowerCase()!==e.hostname.trim().toLowerCase(),{path:[`host`],error:`Host alias must differ from the hostname. ${XT}`});function eE(e){return(t,n)=>{e.some(e=>e.name===t.name)&&n.addIssue({code:`custom`,path:[`name`],message:`A key with this name already exists. Pick another name, or edit that key to replace it.`});let r=t.host.toLowerCase(),i=e.find(e=>e.host?.toLowerCase()===r);i&&n.addIssue({code:`custom`,path:[`host`],message:`The key "${i.name}" already uses the alias "${i.host}". Each key needs its own.`})}}async function tE(e){let{instanceClient:t,entityType:n,entityId:r,...i}=e,{data:a}=await t.post(`/`,{operation:`add_ssh_key`,replicated:n===`cluster`,...i});return a}function nE(){return R({mutationFn:tE})}var rE=[];function iE({existingKeys:e,isModalOpen:t,onChangesSaved:n,setIsModalOpen:r}){let i=(0,G.useMemo)(()=>it($T.superRefine(eE(e??rE))),[e]),a=Gt({resolver:i,mode:`onChange`,defaultValues:{name:``,key:``,host:``,hostname:``,known_hosts:``}}),o=q(),{mutate:s,isPending:c}=nE(),l=(0,G.useCallback)(async e=>{if(e){let{name:t,key:i,host:c,hostname:l,known_hosts:u}=e;s({name:t,key:i.trim()+`
684
684
  `,host:c,hostname:l,known_hosts:u?u+`
685
- `:void 0,...o},{onSuccess:()=>{a.reset(),n(),U.success(`SSH Key added successfully!`),r(!1)}})}},[s,a,o,n,r]),u=(0,G.useCallback)(()=>{a.reset(),r(!1)},[a,r]);return(0,K.jsx)(Id,{onOpenChange:r,open:t,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...a,children:(0,K.jsxs)(`form`,{id:`instance-add-ssh-key-form`,name:`instance-add-ssh-key-form`,onSubmit:a.handleSubmit(l),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,K.jsxs)(Wd,{className:`md:col-span-2`,children:[(0,K.jsx)(Kd,{children:`Add New SSH Key`}),(0,K.jsx)(qd,{children:`Enter the details of your SSH Key below.`})]}),e===void 0&&(0,K.jsxs)(_m,{variant:`warning`,className:`md:col-span-2`,children:[(0,K.jsx)(Oo,{className:`h-4 w-4`}),(0,K.jsx)(ym,{children:`Studio couldn't load this instance's SSH keys, so it can't warn you about a name or host alias another key already uses. Refresh the list to check them.`})]}),(0,K.jsx)(Y,{control:a.control,name:`name`,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`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:a.control,name:`key`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,K.jsx)(Lg,{children:`Your private key: the file without the .pub extension, with no passphrase. Don't have one? Try out "ssh-keygen"! You'll want to add your public key (the .pub file) to your registry, i.e. GitHub.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Kx,{autoComplete:`off`,autoCapitalize:`off`,spellCheck:!1,rows:3,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:a.control,name:`host`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Host`}),(0,K.jsx)(Lg,{children:`A unique identifying name for the combination of this key and your hostname, i.e. "your-repo.github.com". You will use this instead of the direct hostname to pick your key when importing applications.`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:a.control,name:`hostname`,rules:{deps:[`host`]},render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Hostname`}),(0,K.jsx)(Lg,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:a.control,name:`known_hosts`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Known Hosts`}),(0,K.jsx)(Lg,{children:`Optionally, append known hosts, one per line. GitHub known hosts should resolve automatically.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Kx,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:3,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{className:`md:col-span-2`,children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:u,disabled:c,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:c||!a.formState.isDirty||!a.formState.isValid,children:[(0,K.jsx)(Ka,{}),` Add SSH Key`]})]})})]})})})})}async function eE(e){let{instanceClient:t,entityType:n,name:r}=e,{data:i}=await t.post(`/`,{operation:`delete_ssh_key`,replicated:n===`cluster`,name:r});return i}function tE(){return R({mutationFn:eE})}async function nE({name:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`get_ssh_key`,name:e});return n}function rE(e){return z({queryKey:[e.entityId,`get_ssh_key`,e.name],queryFn:()=>nE(e),refetchInterval:bs(1e4),retry:xs()})}var iE=S({name:M().trim(),key:UT});async function aE(e){let{instanceClient:t,entityType:n,name:r,key:i}=e,{data:a}=await t.post(`/`,{operation:`update_ssh_key`,replicated:n===`cluster`,name:r,key:i});return a}function oE(){return R({mutationFn:aE})}function sE({data:e,isModalOpen:t,closeModal:n,onSelectSSHKey:r,onChangesSaved:i}){let{name:a}=e,o=Gt({resolver:it(iE),mode:`onChange`,defaultValues:{name:a,key:``}}),s=q(),{data:c}=F(rE({...s,name:a})),{mutate:l,isPending:u}=oE(),{mutate:d,isPending:f}=tE(),[p,m]=(0,G.useState)(!1),h=(0,G.useCallback)(async({key:e})=>{e&&l({name:a,key:e.trim()+`
686
- `,...s},{onSuccess:()=>{U.success(`SSH Key updated successfully!`),r(void 0),i()}})},[l,a,s,r,i]),g=(0,G.useCallback)(()=>{m(!0)},[]),_=(0,G.useCallback)(()=>{d({name:a,...s},{onSuccess:()=>{U.success(`SSH Key deleted successfully!`),r(void 0),i()}})},[a,d,s,i,r]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Id,{onOpenChange:n,open:t,children:(0,K.jsx)(Ud,{className:`sm:max-w-[750px]`,"aria-describedby":void 0,children:(0,K.jsx)(El,{...o,children:(0,K.jsxs)(`form`,{id:`instance-edit-ssh-key-form`,name:`instance-edit-ssh-key-form`,onSubmit:o.handleSubmit(h),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,K.jsx)(Kd,{children:`Edit SSH Key`}),(0,K.jsx)(Y,{control:o.control,name:`name`,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`,autoComplete:`off`,autoCapitalize:`off`,readOnly:!0,disabled:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:o.control,name:`key`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,K.jsx)(Lg,{children:`Replace your existing private key: the file without the .pub extension, with no passphrase. Lost it? Try out "ssh-keygen"! You'll want to add your public key (the .pub file) to your registry, i.e. GitHub.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Kx,{autoComplete:`off`,autoCapitalize:`off`,spellCheck:!1,autoFocus:!0,rows:3,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Host`}),(0,K.jsx)(Lg,{children:`A unique identifying name for the combination of this key and your hostname, i.e. "your-repo.github.com". You will use this instead of the direct hostname to pick your key when importing applications.`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.host||``,disabled:!0,readOnly:!0})}),(0,K.jsx)(Q,{})]}),(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Hostname`}),(0,K.jsx)(Lg,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.hostname||``,disabled:!0,readOnly:!0})}),(0,K.jsx)(Q,{})]}),(0,K.jsxs)(Gd,{className:`md:col-span-2`,children:[(0,K.jsx)(H,{type:`button`,variant:`destructiveOutline`,onClick:g,disabled:u,children:`Delete SSH Key`}),(0,K.jsx)(H,{type:`submit`,variant:`submit`,disabled:u||!o.formState.isValid,children:`Update SSH Key`})]})]})})})}),(0,K.jsx)(Jd,{isModalOpen:p,setIsModalOpen:m,deletionConfirmed:_,deletionPending:f,typeOfThingBeingDeleted:`SSH key`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function cE(){let e=L(),{keyName:t}=B({strict:!1}),n=q(),{data:r,refetch:i,isFetching:a,isLoading:o,isRefetching:s}=F(dT(n)),c=(0,G.useMemo)(()=>r?.find(e=>e.name===t),[r,t]),l=(0,G.useCallback)(n=>{let r=n?.original?.name,i=[t?`..`:``,r].filter(Boolean);e({to:i.join(`/`)})},[t,e]),u=!!t&&!!c,[d,f]=(0,G.useState)(!1),p=(0,G.useCallback)(()=>{f(!0)},[f]),m=H_(i);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(L_,{columns:fT,data:r||[],isFetching:a,onRowClick:l,children:[(0,K.jsx)(V,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,to:`https://docs.harperdb.io/docs/developers/security/certificate-management`,target:`_blank`,children:`Certificate Management Docs`}),(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:m,accessKey:`r`,disabled:a||s,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:p,accessKey:`a`,disabled:d||o,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),d&&(0,K.jsx)($T,{existingKeys:r,isModalOpen:d,onChangesSaved:i,setIsModalOpen:f}),u&&(0,K.jsx)(sE,{isModalOpen:u,closeModal:l,data:c,onSelectSSHKey:l,onChangesSaved:i}),(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(gs,{text:`Loading...`}),children:(0,K.jsx)(vT,{})})]})}var lE=I_(),uE=[{header:`Username`,accessorKey:`username`,enableSorting:!1},lE.display({header:`Role`,enableSorting:!1,id:`role`,cell:e=>e.row.original.role.role}),{header:`Active`,accessorKey:`active`,enableSorting:!1},lE.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>B_((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),{header:`Updated`,accessorKey:`__updatedtime__`,enableSorting:!1,cell:e=>B_((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}];function dE(e){let t=e.operations;return typeof t==`object`&&!!t&&!Array.isArray(t)}function fE({role:e}){let t=EC(),n=e?.permission;if(n===void 0||t===void 0)return null;let r=Xf(n,t);if(r===`absent`||r===`database`||r===`inert`)return null;if(r===`breaks-auth`||r===`malformed`)return(0,K.jsx)(KC,{kind:r,assigning:!0,databaseCollision:dE(n)});if(Kf(n))return(0,K.jsx)(`p`,{className:`text-xs text-destructive`,children:`This role sets super_user or cluster_user, which Harper does not allow alongside an operations allowlist — the role cannot be saved until one of them is removed.`});let i=qf(n),a=i===!0?`, except that it is a structure user: table and attribute DDL — and create/drop database — apply on any database regardless of the list.`:i?`, except that it is a structure user: table and attribute DDL applies on ${i.join(`, `)} regardless of the list, and listing those operations cannot reach another database.`:``,o=Vf(Yf(n)??[]);if(o.length===0)return(0,K.jsxs)(`p`,{className:`text-xs text-destructive`,children:[(Yf(n)??[]).length?`Every entry in this role's operations allowlist is inert`:`This role's operations allowlist is empty`,` `,`— users with it cannot run any Operations API call (SQL is authorized by table permissions instead, so it is unaffected)`,i?``:`.`,a]});let s=Hf(o);return(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground`,title:s,children:[`This role is restricted to `,_(o.length,`operation`,`operations`),`: `,(0,K.jsx)(`span`,{className:`font-mono`,children:o.slice(0,5).join(`, `)}),o.length>5?`, …`:``,a,o.length>5&&(0,K.jsxs)(`span`,{className:`sr-only`,children:[`Full list: `,s]})]})}function pE(e){let t=EC();return e===void 0||t===void 0?!1:Xf(e.permission,t)===`breaks-auth`}function mE({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=q(),{data:i,isLoading:a}=F({...IC(r),throwOnError:!0}),o=Gt({resolver:it(qb),defaultValues:{username:``,role:``,password:``,confirmPassword:``}}),{mutate:s,isPending:c}=Xb(),l=o.watch(`role`),u=pE(i?.find(e=>e.id===l)),d=(0,G.useCallback)(async e=>{e&&s({active:!0,password:e.password,role:e.role,username:e.username,...r},{onSuccess:()=>{let r=e.role;o.reset(),o.setValue(`role`,r),t(),U.success(`User added successfully!`),n(!1)}})},[s,o,r,t,n]);return(0,K.jsx)(Id,{onOpenChange:n,open:e,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...o,children:(0,K.jsxs)(`form`,{id:`instance-add-user-form`,name:`instance-add-user-form`,onSubmit:o.handleSubmit(d),className:`grid gap-4 my-4`,children:[(0,K.jsx)(Wd,{children:(0,K.jsx)(Kd,{children:`Add New User`})}),(0,K.jsx)(Y,{control:o.control,name:`username`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Username`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:o.control,name:`password`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:o.control,name:`confirmPassword`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:o.control,name:`role`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Role`}),a?(0,K.jsx)(Sg,{}):(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...e,onValueChange:t=>e.onChange(t),children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Role`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(Og,{children:`Role`}),i?.map(e=>(0,K.jsx)(kg,{value:e.id,children:(0,K.jsx)(kv,{name:e.role,id:e.id})},e.id))]})})]})}),(0,K.jsx)(fE,{role:i?.find(t=>t.id===e.value)}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:c||u,children:[(0,K.jsx)(Ka,{}),` Add User`]})})})]})})})})}var hE=S({username:qb.shape.username,role:qb.shape.role,newPassword:qb.shape.password.or(O(``)).optional(),confirmPassword:qb.shape.confirmPassword}).refine(e=>!e.newPassword||e.newPassword.length>=8,{error:`Password must be at least 8 characters long.`,path:[`password`]}).refine(e=>!e.newPassword||e.newPassword===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function gE({data:e,onUserUpdated:t}){let n=q(),{data:r,isLoading:i}=F({...IC(n),throwOnError:!0}),{mutate:a,isPending:o}=Qb(),s=Gt({resolver:it(hE),defaultValues:{username:e.username,role:e.role?.id??``,newPassword:``,confirmPassword:``}}),c=s.watch(`role`),l=pE(r?.find(e=>e.id===c)),u=(0,G.useCallback)(r=>{let i={username:e.username,role:r.role,...n};r.newPassword&&(i.password=r.newPassword),a(i,{onSuccess:()=>{s.reset(),U.success(`User edited successfully!`),t()}})},[s,a,e.username,n,t]);return(0,K.jsx)(El,{...s,children:(0,K.jsxs)(`form`,{id:`instance-edit-user-form`,name:`instance-edit-user-form`,onSubmit:s.handleSubmit(u),className:`grid gap-4 my-4`,children:[(0,K.jsx)(Wd,{children:(0,K.jsx)(Kd,{children:`Edit User`})}),(0,K.jsx)(Y,{control:s.control,name:`username`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Username`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,disabled:!0,readOnly:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`newPassword`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Change Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`confirmPassword`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`role`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Role`}),i?(0,K.jsx)(Sg,{}):(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...e,onValueChange:t=>e.onChange(t),children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Role`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(Og,{children:`Role`}),r?.map(e=>(0,K.jsx)(kg,{value:e.id,children:(0,K.jsx)(kv,{name:e.role,id:e.id})},e.id))]})})]})}),(0,K.jsx)(fE,{role:r?.find(t=>t.id===e.value)}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{variant:`submit`,disabled:o||l,children:[(0,K.jsx)(Ka,{}),` Save Changes`]})})})]})})}var _E=S({username:Xl,confirmUsernameForDeletion:M().nonempty({error:`Please type the username again to confirm deletion.`})}).refine(e=>e.username.toLowerCase()===e.confirmUsernameForDeletion.toLowerCase(),{error:`Username does not match.`,path:[`confirmUsernameForDeletion`]});function vE({data:e,onUserDeleted:t}){let{mutate:n,isPending:r}=ex(),i=Gt({resolver:it(_E),mode:`onTouched`,defaultValues:{username:e.username,confirmUsernameForDeletion:``}}),a=Oc(),o=(0,G.useCallback)(()=>{n({username:e.username,...a},{onSuccess:()=>{i.reset(),U.success(`User deleted successfully!`),t()}})},[e.username,i,n,a,t]);return(0,K.jsx)(El,{...i,children:(0,K.jsxs)(`form`,{id:`instance-delete-user-form`,name:`instance-delete-user-form`,onSubmit:i.handleSubmit(o),onKeyDown:Q_(i),className:`grid gap-4 my-4`,children:[(0,K.jsx)(Y,{control:i.control,name:`confirmUsernameForDeletion`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Confirm Username`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{variant:`destructive`,disabled:r||!i.formState.isValid,children:[(0,K.jsx)(Eo,{}),` Delete User`]})})})]})})}function yE({closeModal:e,clusterId:t,instanceId:n,data:r,isModalOpen:i,onUserDeleted:a,onUserUpdated:o}){let s=u.checkForFabricConnect(n??t),c=Bn(n??t),l=!(!s&&c.user?.username===r.username);return(0,K.jsx)(Id,{onOpenChange:e,open:i,children:(0,K.jsxs)(Ud,{resizable:!0,children:[(0,K.jsx)(gE,{data:r,onUserUpdated:o}),l&&(0,K.jsx)(vE,{data:r,onUserDeleted:a})]})})}function bE({entityId:e,instanceClient:t}){return z({queryKey:[e,`list_users`],queryFn:()=>xE({instanceClient:t}),refetchInterval:bs(1e4),retry:xs()})}async function xE({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_users`});return t}function SE(){let e=L(),{instanceId:t,clusterId:n,username:r}=B({strict:!1}),i=q(),{data:a,refetch:o,isFetching:s,isRefetching:c}=et(bE(i)),l=(0,G.useMemo)(()=>a?.find(e=>e.username===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.useState)({attribute:`username`,descending:!1}),h=(0,G.useMemo)(()=>[{desc:m.descending,id:m.attribute}],[m]),g=(0,G.useCallback)(()=>{p(!0)},[p]),_=(0,G.useCallback)(()=>{o(),p(!1)},[o,p]),v=(0,G.useCallback)(e=>{u(e.original.username)},[u]),y=(0,G.useCallback)(()=>{u(void 0)},[u]),b=(0,G.useCallback)(()=>{o(),u(void 0)},[u,o]),x=(0,G.useCallback)(()=>{o(),u(void 0)},[u,o]),S=H_(o);return(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(L_,{data:a,isFetching:s||c,columns:uE,onRowClick:v,sortingState:h,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(Ra,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:g,accessKey:`a`,disabled:f,children:[(0,K.jsx)(Ia,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,K.jsx)(mE,{isModalOpen:f,onChangesSaved:_,setIsModalOpen:p}),d&&(0,K.jsx)(yE,{instanceId:t,clusterId:n,closeModal:y,data:l,isModalOpen:d,onUserDeleted:x,onUserUpdated:b})]})}function CE({context:e,params:t}){let n=kc(t);return e.queryClient.ensureQueryData(NS(n))}function wE(e){let t=I({getParentRoute:()=>e,path:`config`,head:()=>({meta:[{title:`Config — Harper Fabric`}]}),component:YS,loader:CE}),n=I({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Overview — Harper Fabric`}]}),component:TC,loader:CE}),r=I({getParentRoute:()=>t,path:`roles`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:nw}),i=I({getParentRoute:()=>t,path:`roles/$roleId`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:nw}),a=I({getParentRoute:()=>t,path:`users`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:SE}),o=I({getParentRoute:()=>t,path:`users/$username`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:SE}),s=I({getParentRoute:()=>t,path:`domains`,head:()=>({meta:[{title:`Instance Domains — Harper Fabric`}]}),component:GS}),c=I({getParentRoute:()=>t,path:`ssh-keys`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:cE}),l=I({getParentRoute:()=>t,path:`ssh-keys/$keyName`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:cE}),u=I({getParentRoute:()=>t,path:`deployments`,head:()=>({meta:[{title:`Deployments — Harper Fabric`}]}),component:WS}),d=I({getParentRoute:()=>t,path:`deployments/$deploymentId`,head:()=>({meta:[{title:`Deployments — Harper Fabric`}]}),component:WS}),f=I({getParentRoute:()=>t,path:`secrets`,head:()=>({meta:[{title:`Secrets — Harper Fabric`}]}),component:cT}),p=I({getParentRoute:()=>t,path:`secrets/$secretName`,head:()=>({meta:[{title:`Secrets — Harper Fabric`}]}),component:cT}),m=I({getParentRoute:()=>t,path:`certificates`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:eS}),h=I({getParentRoute:()=>t,path:`certificates/$certName`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:eS});return t.addChildren([n,r,i,a,o,s,u,d,c,l,f,p,m,h])}function TE({clusterId:e,databaseName:t,instanceId:n,organizationId:r,tableName:i}){let a=[`databases`,t,i].filter($c).join(`/`);return hx({organizationId:r,instanceId:n,clusterId:e},a)}function EE(e,t){return e.type===`array`?e.elements?t[e.elements]?e.elements:void 0:DE(t,e.attribute):e.type&&t[e.type]?e.type:void 0}function DE(e,t){let n=t.toLowerCase(),r=new Set([n,`${n}s`,n.replace(/s$/,``)]);return Object.keys(e).find(e=>r.has(e.toLowerCase()))}function OE(e,t,n){if(!t||e.is_primary_key||e.computed)return;let r=EE(e,t),i=r?t[r]:void 0;if(!r||!i)return;let a=i.primary_key??i.hash_attribute;if(!a)return;let o=e.type===`array`;return{relatedTableName:r,relatedPrimaryKey:a,relatedAttributes:kE(i,t),isToMany:o,resolvable:!o||!!e.elements,reverseForeignKey:o&&n?AE(n,i,t):void 0}}function kE(e,t){return(e.attributes??[]).filter(e=>!e.computed&&!EE(e,t))}function AE(e,t,n){let r=t.attributes??[];for(let t of r){let i=OE(t,n);if(i&&!i.isToMany&&i.relatedTableName===e.name){let e=PE(t.attribute,i,r,n);if(e)return e}}let i=e.name.toLowerCase(),a=new Set([i,i.replace(/s$/,``)].flatMap(e=>[`${e}id`,`${e}_id`]));return r.find(e=>!e.is_primary_key&&!e.computed&&a.has(e.attribute.toLowerCase()))?.attribute}function jE(e,t,n){let r={};for(let n of e?.attributes??[]){let i=OE(n,t,e);i&&(r[n.attribute]=i)}for(let e of n??[]){let n=t?.[e.relatedTableName],i=n?.primary_key??n?.hash_attribute;if(!n||!i||!t)continue;let a=r[e.attribute];r[e.attribute]={relatedTableName:e.relatedTableName,relatedPrimaryKey:i,relatedAttributes:kE(n,t),isToMany:e.isToMany,resolvable:a?.resolvable??!1,reverseForeignKey:(e.isToMany?e.to:void 0)??a?.reverseForeignKey,foreignKeyAttribute:e.from}}return r}function ME(e,t){return!!e.computed||OE(e,t)!==void 0}function NE(e,t){return(e??[]).filter(e=>ME(e,t)).map(e=>e.attribute)}function PE(e,t,n,r){let i=[e];t.isToMany&&e.endsWith(`s`)&&i.push(e.slice(0,-1));let a=t.isToMany?[`ids`,`_ids`]:[`id`,`_id`],o=new Set(i.flatMap(e=>a.map(t=>(e+t).toLowerCase())));return n.find(e=>!e.is_primary_key&&!e.computed&&!OE(e,r)&&o.has(e.attribute.toLowerCase()))?.attribute}function FE(e){let t=new Set;for(let n of Object.values(e))n.foreignKeyAttribute&&t.add(n.foreignKeyAttribute);return[...t]}function IE(e,t){let n=[];for(let r of e?.attributes??[]){let e=OE(r,t);e?.resolvable&&n.push({name:r.attribute,select:[e.relatedPrimaryKey]})}return n.length?[...n,`*`]:void 0}async function LE({databaseName:e,tableName:t,records:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`insert`,database:e,table:t,records:n});return i}function RE(){return R({mutationFn:LE})}function zE(e,t=!1){let n=e.length,r=0,i=``,a=0,o=16,s=0,c=0,l=0,u=0,d=0;function f(t,n){let i=0,a=0;for(;i<t;){let t=e.charCodeAt(r);if(t>=48&&t<=57)a=a*16+t-48;else if(t>=65&&t<=70)a=a*16+t-65+10;else if(t>=97&&t<=102)a=a*16+t-97+10;else break;r++,i++}return i<t&&(a=-1),a}function p(e){r=e,i=``,a=0,o=16,d=0}function m(){let t=r;if(e.charCodeAt(r)===48)r++;else for(r++;r<e.length&&HE(e.charCodeAt(r));)r++;if(r<e.length&&e.charCodeAt(r)===46){if(r++,r<e.length&&HE(e.charCodeAt(r)))for(r++;r<e.length&&HE(e.charCodeAt(r));)r++;else return d=3,e.substring(t,r)}let n=r;if(r<e.length&&(e.charCodeAt(r)===69||e.charCodeAt(r)===101)){if(r++,(r<e.length&&e.charCodeAt(r)===43||e.charCodeAt(r)===45)&&r++,r<e.length&&HE(e.charCodeAt(r))){for(r++;r<e.length&&HE(e.charCodeAt(r));)r++;n=r}else d=3}return e.substring(t,n)}function h(){let t=``,i=r;for(;;){if(r>=n){t+=e.substring(i,r),d=2;break}let a=e.charCodeAt(r);if(a===34){t+=e.substring(i,r),r++;break}if(a===92){if(t+=e.substring(i,r),r++,r>=n){d=2;break}switch(e.charCodeAt(r++)){case 34:t+=`"`;break;case 92:t+=`\\`;break;case 47:t+=`/`;break;case 98:t+=`\b`;break;case 102:t+=`\f`;break;case 110:t+=`
687
- `;break;case 114:t+=`\r`;break;case 116:t+=` `;break;case 117:let e=f(4);e>=0?t+=String.fromCharCode(e):d=4;break;default:d=5}i=r;continue}if(a>=0&&a<=31){if(VE(a)){t+=e.substring(i,r),d=2;break}d=6}r++}return t}function g(){if(i=``,d=0,a=r,c=s,u=l,r>=n)return a=n,o=17;let t=e.charCodeAt(r);if(BE(t)){do r++,i+=String.fromCharCode(t),t=e.charCodeAt(r);while(BE(t));return o=15}if(VE(t))return r++,i+=String.fromCharCode(t),t===13&&e.charCodeAt(r)===10&&(r++,i+=`
688
- `),s++,l=r,o=14;switch(t){case 123:return r++,o=1;case 125:return r++,o=2;case 91:return r++,o=3;case 93:return r++,o=4;case 58:return r++,o=6;case 44:return r++,o=5;case 34:return r++,i=h(),o=10;case 47:let c=r-1;if(e.charCodeAt(r+1)===47){for(r+=2;r<n&&!VE(e.charCodeAt(r));)r++;return i=e.substring(c,r),o=12}if(e.charCodeAt(r+1)===42){r+=2;let t=n-1,a=!1;for(;r<t;){let t=e.charCodeAt(r);if(t===42&&e.charCodeAt(r+1)===47){r+=2,a=!0;break}r++,VE(t)&&(t===13&&e.charCodeAt(r)===10&&r++,s++,l=r)}return a||(r++,d=1),i=e.substring(c,r),o=13}return i+=String.fromCharCode(t),r++,o=16;case 45:if(i+=String.fromCharCode(t),r++,r===n||!HE(e.charCodeAt(r)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=m(),o=11;default:for(;r<n&&_(t);)r++,t=e.charCodeAt(r);if(a!==r){switch(i=e.substring(a,r),i){case`true`:return o=8;case`false`:return o=9;case`null`:return o=7}return o=16}return i+=String.fromCharCode(t),r++,o=16}}function _(e){if(BE(e)||VE(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function v(){let e;do e=g();while(e>=12&&e<=15);return e}return{setPosition:p,getPosition:()=>r,scan:t?v:g,getToken:()=>o,getTokenValue:()=>i,getTokenOffset:()=>a,getTokenLength:()=>r-a,getTokenStartLine:()=>c,getTokenStartCharacter:()=>a-u,getTokenError:()=>d}}function BE(e){return e===32||e===9}function VE(e){return e===10||e===13}function HE(e){return e>=48&&e<=57}var UE;(function(e){e[e.lineFeed=10]=`lineFeed`,e[e.carriageReturn=13]=`carriageReturn`,e[e.space=32]=`space`,e[e._0=48]=`_0`,e[e._1=49]=`_1`,e[e._2=50]=`_2`,e[e._3=51]=`_3`,e[e._4=52]=`_4`,e[e._5=53]=`_5`,e[e._6=54]=`_6`,e[e._7=55]=`_7`,e[e._8=56]=`_8`,e[e._9=57]=`_9`,e[e.a=97]=`a`,e[e.b=98]=`b`,e[e.c=99]=`c`,e[e.d=100]=`d`,e[e.e=101]=`e`,e[e.f=102]=`f`,e[e.g=103]=`g`,e[e.h=104]=`h`,e[e.i=105]=`i`,e[e.j=106]=`j`,e[e.k=107]=`k`,e[e.l=108]=`l`,e[e.m=109]=`m`,e[e.n=110]=`n`,e[e.o=111]=`o`,e[e.p=112]=`p`,e[e.q=113]=`q`,e[e.r=114]=`r`,e[e.s=115]=`s`,e[e.t=116]=`t`,e[e.u=117]=`u`,e[e.v=118]=`v`,e[e.w=119]=`w`,e[e.x=120]=`x`,e[e.y=121]=`y`,e[e.z=122]=`z`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.asterisk=42]=`asterisk`,e[e.backslash=92]=`backslash`,e[e.closeBrace=125]=`closeBrace`,e[e.closeBracket=93]=`closeBracket`,e[e.colon=58]=`colon`,e[e.comma=44]=`comma`,e[e.dot=46]=`dot`,e[e.doubleQuote=34]=`doubleQuote`,e[e.minus=45]=`minus`,e[e.openBrace=123]=`openBrace`,e[e.openBracket=91]=`openBracket`,e[e.plus=43]=`plus`,e[e.slash=47]=`slash`,e[e.formFeed=12]=`formFeed`,e[e.tab=9]=`tab`})(UE||={}),Array(20).fill(0).map((e,t)=>` `.repeat(t));var WE=200;Array(WE).fill(0).map((e,t)=>`
689
- `+` `.repeat(t)),Array(WE).fill(0).map((e,t)=>`\r`+` `.repeat(t)),Array(WE).fill(0).map((e,t)=>`\r
690
- `+` `.repeat(t)),Array(WE).fill(0).map((e,t)=>`
691
- `+` `.repeat(t)),Array(WE).fill(0).map((e,t)=>`\r`+` `.repeat(t)),Array(WE).fill(0).map((e,t)=>`\r
692
- `+` `.repeat(t));var GE;(function(e){e.DEFAULT={allowTrailingComma:!1}})(GE||={});var KE=zE,qE;(function(e){e[e.None=0]=`None`,e[e.UnexpectedEndOfComment=1]=`UnexpectedEndOfComment`,e[e.UnexpectedEndOfString=2]=`UnexpectedEndOfString`,e[e.UnexpectedEndOfNumber=3]=`UnexpectedEndOfNumber`,e[e.InvalidUnicode=4]=`InvalidUnicode`,e[e.InvalidEscapeCharacter=5]=`InvalidEscapeCharacter`,e[e.InvalidCharacter=6]=`InvalidCharacter`})(qE||={});var JE;(function(e){e[e.OpenBraceToken=1]=`OpenBraceToken`,e[e.CloseBraceToken=2]=`CloseBraceToken`,e[e.OpenBracketToken=3]=`OpenBracketToken`,e[e.CloseBracketToken=4]=`CloseBracketToken`,e[e.CommaToken=5]=`CommaToken`,e[e.ColonToken=6]=`ColonToken`,e[e.NullKeyword=7]=`NullKeyword`,e[e.TrueKeyword=8]=`TrueKeyword`,e[e.FalseKeyword=9]=`FalseKeyword`,e[e.StringLiteral=10]=`StringLiteral`,e[e.NumericLiteral=11]=`NumericLiteral`,e[e.LineCommentTrivia=12]=`LineCommentTrivia`,e[e.BlockCommentTrivia=13]=`BlockCommentTrivia`,e[e.LineBreakTrivia=14]=`LineBreakTrivia`,e[e.Trivia=15]=`Trivia`,e[e.Unknown=16]=`Unknown`,e[e.EOF=17]=`EOF`})(JE||={});var YE;(function(e){e[e.InvalidSymbol=1]=`InvalidSymbol`,e[e.InvalidNumberFormat=2]=`InvalidNumberFormat`,e[e.PropertyNameExpected=3]=`PropertyNameExpected`,e[e.ValueExpected=4]=`ValueExpected`,e[e.ColonExpected=5]=`ColonExpected`,e[e.CommaExpected=6]=`CommaExpected`,e[e.CloseBraceExpected=7]=`CloseBraceExpected`,e[e.CloseBracketExpected=8]=`CloseBracketExpected`,e[e.EndOfFileExpected=9]=`EndOfFileExpected`,e[e.InvalidCommentToken=10]=`InvalidCommentToken`,e[e.UnexpectedEndOfComment=11]=`UnexpectedEndOfComment`,e[e.UnexpectedEndOfString=12]=`UnexpectedEndOfString`,e[e.UnexpectedEndOfNumber=13]=`UnexpectedEndOfNumber`,e[e.InvalidUnicode=14]=`InvalidUnicode`,e[e.InvalidEscapeCharacter=15]=`InvalidEscapeCharacter`,e[e.InvalidCharacter=16]=`InvalidCharacter`})(YE||={});function XE(e){return{getInitialState:()=>new lD(null,null,!1,null),tokenize:(t,n)=>uD(e,t,n)}}var ZE=`delimiter.bracket.json`,QE=`delimiter.array.json`,$E=`delimiter.colon.json`,eD=`delimiter.comma.json`,tD=`keyword.json`,nD=`keyword.json`,rD=`string.value.json`,iD=`number.json`,aD=`string.key.json`,oD=`comment.block.json`,sD=`comment.line.json`,cD=class e{constructor(e,t){this.parent=e,this.type=t}static pop(e){return e?e.parent:null}static push(t,n){return new e(t,n)}static equals(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;for(;e&&t;){if(e===t)return!0;if(e.type!==t.type)return!1;e=e.parent,t=t.parent}return!0}},lD=class e{constructor(e,t,n,r){this._state=e,this.scanError=t,this.lastWasColon=n,this.parents=r}clone(){return new e(this._state,this.scanError,this.lastWasColon,this.parents)}equals(t){return t===this?!0:!t||!(t instanceof e)?!1:this.scanError===t.scanError&&this.lastWasColon===t.lastWasColon&&cD.equals(this.parents,t.parents)}getStateData(){return this._state}setStateData(e){this._state=e}};function uD(e,t,n,r=0){let i=0,a=!1;switch(n.scanError){case 2:t=`"`+t,i=1;break;case 1:t=`/*`+t,i=2}let o=KE(t),s=n.lastWasColon,c=n.parents,l={tokens:[],endState:n.clone()};for(;;){let e=r+o.getPosition(),u=``,d=o.scan();if(d===17)break;if(e===r+o.getPosition())throw Error(`Scanner did not advance, next 3 characters are: `+t.substr(o.getPosition(),3));switch(a&&(e-=i),a=i>0,d){case 1:c=cD.push(c,0),u=ZE,s=!1;break;case 2:c=cD.pop(c),u=ZE,s=!1;break;case 3:c=cD.push(c,1),u=QE,s=!1;break;case 4:c=cD.pop(c),u=QE,s=!1;break;case 6:u=$E,s=!0;break;case 5:u=eD,s=!1;break;case 8:case 9:u=tD,s=!1;break;case 7:u=nD,s=!1;break;case 10:let e=(c?c.type:0)===1;u=s||e?rD:aD,s=!1;break;case 11:u=iD,s=!1}switch(d){case 12:u=sD;break;case 13:u=oD}l.endState=new lD(n.getStateData(),o.getTokenError(),s,c),l.tokens.push({startIndex:e,scopes:u})}return l}var dD=`json-worker-free`,fD={wordPattern:/(-?\d*\.\d\w*)|([^[{\]}:"\s,]+)/g,comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`]],autoClosingPairs:[{open:`{`,close:`}`,notIn:[`string`]},{open:`[`,close:`]`,notIn:[`string`]},{open:`"`,close:`"`,notIn:[`string`]}]},pD=!1;function mD(e){pD||(pD=!0,e.register({id:dD}),e.setLanguageConfiguration(dD,fD),e.setTokensProvider(dD,XE(!0)))}function hD(e){if(!e.trim())return{ok:!1,error:{message:`The editor is empty, so there is nothing to save.`}};let t;try{t=JSON.parse(e)}catch(t){let n=t instanceof Error?t.message:String(t);return{ok:!1,error:{message:CD(n),location:yD(n,e)}}}let n=xD(t);return n?{ok:!1,error:{message:n}}:{ok:!0,value:t}}function gD({message:e,location:t}){return t?`Line ${t.lineNumber}, column ${t.column}: ${e}`:e}var _D=/\bline (\d+) column (\d+)/i,vD=/\bposition (\d+)/i;function yD(e,t){let n=_D.exec(e);if(n)return{lineNumber:Number(n[1]),column:Number(n[2])};let r=vD.exec(e);return r?bD(t,Number(r[1])):void 0}function bD(e,t){let n=Math.max(0,Math.min(t,e.length)),r=1,i=0;for(let t=e.indexOf(`
685
+ `:void 0,...o},{onSuccess:()=>{a.reset(),n(),U.success(`SSH Key added successfully!`),r(!1)}})}},[s,a,o,n,r]),u=(0,G.useCallback)(()=>{a.reset(),r(!1)},[a,r]);return(0,K.jsx)(Id,{onOpenChange:r,open:t,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...a,children:(0,K.jsxs)(`form`,{id:`instance-add-ssh-key-form`,name:`instance-add-ssh-key-form`,onSubmit:a.handleSubmit(l),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,K.jsxs)(Wd,{className:`md:col-span-2`,children:[(0,K.jsx)(Kd,{children:`Add New SSH Key`}),(0,K.jsx)(qd,{children:`Enter the details of your SSH Key below.`})]}),e===void 0&&(0,K.jsxs)(_m,{variant:`warning`,className:`md:col-span-2`,children:[(0,K.jsx)(Oo,{className:`h-4 w-4`}),(0,K.jsx)(ym,{children:`Studio couldn't load this instance's SSH keys, so it can't warn you about a name or host alias another key already uses. Refresh the list to check them.`})]}),(0,K.jsx)(Y,{control:a.control,name:`name`,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`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:a.control,name:`key`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,K.jsx)(Lg,{children:`Your private key: the file without the .pub extension, with no passphrase. Don't have one? Try out "ssh-keygen"! You'll want to add your public key (the .pub file) to your registry, i.e. GitHub.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Zx,{autoComplete:`off`,autoCapitalize:`off`,spellCheck:!1,rows:3,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:a.control,name:`host`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Host`}),(0,K.jsx)(Lg,{children:`A unique identifying name for the combination of this key and your hostname, i.e. "your-repo.github.com". You will use this instead of the direct hostname to pick your key when importing applications.`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:a.control,name:`hostname`,rules:{deps:[`host`]},render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Hostname`}),(0,K.jsx)(Lg,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:a.control,name:`known_hosts`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Known Hosts`}),(0,K.jsx)(Lg,{children:`Optionally, append known hosts, one per line. GitHub known hosts should resolve automatically.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Zx,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:3,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{className:`md:col-span-2`,children:(0,K.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,K.jsx)(H,{variant:`destructiveOutline`,type:`button`,onClick:u,disabled:c,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:c||!a.formState.isDirty||!a.formState.isValid,children:[(0,K.jsx)(Ka,{}),` Add SSH Key`]})]})})]})})})})}async function aE(e){let{instanceClient:t,entityType:n,name:r}=e,{data:i}=await t.post(`/`,{operation:`delete_ssh_key`,replicated:n===`cluster`,name:r});return i}function oE(){return R({mutationFn:aE})}async function sE({name:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`get_ssh_key`,name:e});return n}function cE(e){return z({queryKey:[e.entityId,`get_ssh_key`,e.name],queryFn:()=>sE(e),refetchInterval:bs(1e4),retry:xs()})}var lE=S({name:M().trim(),key:JT});async function uE(e){let{instanceClient:t,entityType:n,name:r,key:i}=e,{data:a}=await t.post(`/`,{operation:`update_ssh_key`,replicated:n===`cluster`,name:r,key:i});return a}function dE(){return R({mutationFn:uE})}function fE({data:e,isModalOpen:t,closeModal:n,onSelectSSHKey:r,onChangesSaved:i}){let{name:a}=e,o=Gt({resolver:it(lE),mode:`onChange`,defaultValues:{name:a,key:``}}),s=q(),{data:c}=F(cE({...s,name:a})),{mutate:l,isPending:u}=dE(),{mutate:d,isPending:f}=oE(),[p,m]=(0,G.useState)(!1),h=(0,G.useCallback)(async({key:e})=>{e&&l({name:a,key:e.trim()+`
686
+ `,...s},{onSuccess:()=>{U.success(`SSH Key updated successfully!`),r(void 0),i()}})},[l,a,s,r,i]),g=(0,G.useCallback)(()=>{m(!0)},[]),_=(0,G.useCallback)(()=>{d({name:a,...s},{onSuccess:()=>{U.success(`SSH Key deleted successfully!`),r(void 0),i()}})},[a,d,s,i,r]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Id,{onOpenChange:n,open:t,children:(0,K.jsx)(Ud,{className:`sm:max-w-[750px]`,"aria-describedby":void 0,children:(0,K.jsx)(El,{...o,children:(0,K.jsxs)(`form`,{id:`instance-edit-ssh-key-form`,name:`instance-edit-ssh-key-form`,onSubmit:o.handleSubmit(h),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,K.jsx)(Kd,{children:`Edit SSH Key`}),(0,K.jsx)(Y,{control:o.control,name:`name`,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`,autoComplete:`off`,autoCapitalize:`off`,readOnly:!0,disabled:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:o.control,name:`key`,render:({field:e})=>(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Key`}),(0,K.jsx)(Lg,{children:`Replace your existing private key: the file without the .pub extension, with no passphrase. Lost it? Try out "ssh-keygen"! You'll want to add your public key (the .pub file) to your registry, i.e. GitHub.`}),(0,K.jsx)(J,{children:(0,K.jsx)(Zx,{autoComplete:`off`,autoCapitalize:`off`,spellCheck:!1,autoFocus:!0,rows:3,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Host`}),(0,K.jsx)(Lg,{children:`A unique identifying name for the combination of this key and your hostname, i.e. "your-repo.github.com". You will use this instead of the direct hostname to pick your key when importing applications.`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.host||``,disabled:!0,readOnly:!0})}),(0,K.jsx)(Q,{})]}),(0,K.jsxs)(X,{className:`md:col-span-2`,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Hostname`}),(0,K.jsx)(Lg,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.hostname||``,disabled:!0,readOnly:!0})}),(0,K.jsx)(Q,{})]}),(0,K.jsxs)(Gd,{className:`md:col-span-2`,children:[(0,K.jsx)(H,{type:`button`,variant:`destructiveOutline`,onClick:g,disabled:u,children:`Delete SSH Key`}),(0,K.jsx)(H,{type:`submit`,variant:`submit`,disabled:u||!o.formState.isValid,children:`Update SSH Key`})]})]})})})}),(0,K.jsx)(Jd,{isModalOpen:p,setIsModalOpen:m,deletionConfirmed:_,deletionPending:f,typeOfThingBeingDeleted:`SSH key`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function pE(){let e=L(),{keyName:t}=B({strict:!1}),n=q(),{data:r,refetch:i,isFetching:a,isLoading:o,isRefetching:s}=F(gT(n)),c=(0,G.useMemo)(()=>r?.find(e=>e.name===t),[r,t]),l=(0,G.useCallback)(n=>{let r=n?.original?.name,i=[t?`..`:``,r].filter(Boolean);e({to:i.join(`/`)})},[t,e]),u=!!t&&!!c,[d,f]=(0,G.useState)(!1),p=(0,G.useCallback)(()=>{f(!0)},[f]),m=H_(i);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(L_,{columns:_T,data:r||[],isFetching:a,onRowClick:l,children:[(0,K.jsx)(V,{className:`inline-block underline text-sm text-muted-foreground hover:text-foreground`,to:`https://docs.harperdb.io/docs/developers/security/certificate-management`,target:`_blank`,children:`Certificate Management Docs`}),(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:m,accessKey:`r`,disabled:a||s,children:[(0,K.jsx)(Ra,{}),(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:p,accessKey:`a`,disabled:d||o,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),d&&(0,K.jsx)(iE,{existingKeys:r,isModalOpen:d,onChangesSaved:i,setIsModalOpen:f}),u&&(0,K.jsx)(fE,{isModalOpen:u,closeModal:l,data:c,onSelectSSHKey:l,onChangesSaved:i}),(0,K.jsx)(G.Suspense,{fallback:(0,K.jsx)(gs,{text:`Loading...`}),children:(0,K.jsx)(CT,{})})]})}var mE=I_(),hE=[{header:`Username`,accessorKey:`username`,enableSorting:!1},mE.display({header:`Role`,enableSorting:!1,id:`role`,cell:e=>e.row.original.role.role}),{header:`Active`,accessorKey:`active`,enableSorting:!1},mE.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>B_((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),{header:`Updated`,accessorKey:`__updatedtime__`,enableSorting:!1,cell:e=>B_((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}];function gE(e){let t=e.operations;return typeof t==`object`&&!!t&&!Array.isArray(t)}function _E({role:e}){let t=jC(),n=e?.permission;if(n===void 0||t===void 0)return null;let r=Xf(n,t);if(r===`absent`||r===`database`||r===`inert`)return null;if(r===`breaks-auth`||r===`malformed`)return(0,K.jsx)(ZC,{kind:r,assigning:!0,databaseCollision:gE(n)});if(Kf(n))return(0,K.jsx)(`p`,{className:`text-xs text-destructive`,children:`This role sets super_user or cluster_user, which Harper does not allow alongside an operations allowlist — the role cannot be saved until one of them is removed.`});let i=qf(n),a=i===!0?`, except that it is a structure user: table and attribute DDL — and create/drop database — apply on any database regardless of the list.`:i?`, except that it is a structure user: table and attribute DDL applies on ${i.join(`, `)} regardless of the list, and listing those operations cannot reach another database.`:``,o=Vf(Yf(n)??[]);if(o.length===0)return(0,K.jsxs)(`p`,{className:`text-xs text-destructive`,children:[(Yf(n)??[]).length?`Every entry in this role's operations allowlist is inert`:`This role's operations allowlist is empty`,` `,`— users with it cannot run any Operations API call (SQL is authorized by table permissions instead, so it is unaffected)`,i?``:`.`,a]});let s=Hf(o);return(0,K.jsxs)(`p`,{className:`text-xs text-muted-foreground`,title:s,children:[`This role is restricted to `,_(o.length,`operation`,`operations`),`: `,(0,K.jsx)(`span`,{className:`font-mono`,children:o.slice(0,5).join(`, `)}),o.length>5?`, …`:``,a,o.length>5&&(0,K.jsxs)(`span`,{className:`sr-only`,children:[`Full list: `,s]})]})}function vE(e){let t=jC();return e===void 0||t===void 0?!1:Xf(e.permission,t)===`breaks-auth`}function yE({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=q(),{data:i,isLoading:a}=F({...VC(r),throwOnError:!0}),o=Gt({resolver:it(qb),defaultValues:{username:``,role:``,password:``,confirmPassword:``}}),{mutate:s,isPending:c}=Xb(),l=o.watch(`role`),u=vE(i?.find(e=>e.id===l)),d=(0,G.useCallback)(async e=>{e&&s({active:!0,password:e.password,role:e.role,username:e.username,...r},{onSuccess:()=>{let r=e.role;o.reset(),o.setValue(`role`,r),t(),U.success(`User added successfully!`),n(!1)}})},[s,o,r,t,n]);return(0,K.jsx)(Id,{onOpenChange:n,open:e,children:(0,K.jsx)(Ud,{"aria-describedby":void 0,children:(0,K.jsx)(El,{...o,children:(0,K.jsxs)(`form`,{id:`instance-add-user-form`,name:`instance-add-user-form`,onSubmit:o.handleSubmit(d),className:`grid gap-4 my-4`,children:[(0,K.jsx)(Wd,{children:(0,K.jsx)(Kd,{children:`Add New User`})}),(0,K.jsx)(Y,{control:o.control,name:`username`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Username`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:o.control,name:`password`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:o.control,name:`confirmPassword`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:o.control,name:`role`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Role`}),a?(0,K.jsx)(Sg,{}):(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...e,onValueChange:t=>e.onChange(t),children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Role`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(Og,{children:`Role`}),i?.map(e=>(0,K.jsx)(kg,{value:e.id,children:(0,K.jsx)(kv,{name:e.role,id:e.id})},e.id))]})})]})}),(0,K.jsx)(_E,{role:i?.find(t=>t.id===e.value)}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:c||u,children:[(0,K.jsx)(Ka,{}),` Add User`]})})})]})})})})}var bE=S({username:qb.shape.username,role:qb.shape.role,newPassword:qb.shape.password.or(O(``)).optional(),confirmPassword:qb.shape.confirmPassword}).refine(e=>!e.newPassword||e.newPassword.length>=8,{error:`Password must be at least 8 characters long.`,path:[`password`]}).refine(e=>!e.newPassword||e.newPassword===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function xE({data:e,onUserUpdated:t}){let n=q(),{data:r,isLoading:i}=F({...VC(n),throwOnError:!0}),{mutate:a,isPending:o}=Qb(),s=Gt({resolver:it(bE),defaultValues:{username:e.username,role:e.role?.id??``,newPassword:``,confirmPassword:``}}),c=s.watch(`role`),l=vE(r?.find(e=>e.id===c)),u=(0,G.useCallback)(r=>{let i={username:e.username,role:r.role,...n};r.newPassword&&(i.password=r.newPassword),a(i,{onSuccess:()=>{s.reset(),U.success(`User edited successfully!`),t()}})},[s,a,e.username,n,t]);return(0,K.jsx)(El,{...s,children:(0,K.jsxs)(`form`,{id:`instance-edit-user-form`,name:`instance-edit-user-form`,onSubmit:s.handleSubmit(u),className:`grid gap-4 my-4`,children:[(0,K.jsx)(Wd,{children:(0,K.jsx)(Kd,{children:`Edit User`})}),(0,K.jsx)(Y,{control:s.control,name:`username`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Username`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,disabled:!0,readOnly:!0,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`newPassword`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Change Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`confirmPassword`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Confirm Password`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`role`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Role`}),i?(0,K.jsx)(Sg,{}):(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{...e,onValueChange:t=>e.onChange(t),children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Choose Role`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(Og,{children:`Role`}),r?.map(e=>(0,K.jsx)(kg,{value:e.id,children:(0,K.jsx)(kv,{name:e.role,id:e.id})},e.id))]})})]})}),(0,K.jsx)(_E,{role:r?.find(t=>t.id===e.value)}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{variant:`submit`,disabled:o||l,children:[(0,K.jsx)(Ka,{}),` Save Changes`]})})})]})})}var SE=S({username:Xl,confirmUsernameForDeletion:M().nonempty({error:`Please type the username again to confirm deletion.`})}).refine(e=>e.username.toLowerCase()===e.confirmUsernameForDeletion.toLowerCase(),{error:`Username does not match.`,path:[`confirmUsernameForDeletion`]});function CE({data:e,onUserDeleted:t}){let{mutate:n,isPending:r}=ex(),i=Gt({resolver:it(SE),mode:`onTouched`,defaultValues:{username:e.username,confirmUsernameForDeletion:``}}),a=Oc(),o=(0,G.useCallback)(()=>{n({username:e.username,...a},{onSuccess:()=>{i.reset(),U.success(`User deleted successfully!`),t()}})},[e.username,i,n,a,t]);return(0,K.jsx)(El,{...i,children:(0,K.jsxs)(`form`,{id:`instance-delete-user-form`,name:`instance-delete-user-form`,onSubmit:i.handleSubmit(o),onKeyDown:Q_(i),className:`grid gap-4 my-4`,children:[(0,K.jsx)(Y,{control:i.control,name:`confirmUsernameForDeletion`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Confirm Username`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{variant:`destructive`,disabled:r||!i.formState.isValid,children:[(0,K.jsx)(Eo,{}),` Delete User`]})})})]})})}function wE({closeModal:e,clusterId:t,instanceId:n,data:r,isModalOpen:i,onUserDeleted:a,onUserUpdated:o}){let s=u.checkForFabricConnect(n??t),c=Bn(n??t),l=!(!s&&c.user?.username===r.username);return(0,K.jsx)(Id,{onOpenChange:e,open:i,children:(0,K.jsxs)(Ud,{resizable:!0,children:[(0,K.jsx)(xE,{data:r,onUserUpdated:o}),l&&(0,K.jsx)(CE,{data:r,onUserDeleted:a})]})})}function TE({entityId:e,instanceClient:t}){return z({queryKey:[e,`list_users`],queryFn:()=>EE({instanceClient:t}),refetchInterval:bs(1e4),retry:xs()})}async function EE({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_users`});return t}function DE(){let e=L(),{instanceId:t,clusterId:n,username:r}=B({strict:!1}),i=q(),{data:a,refetch:o,isFetching:s,isRefetching:c}=et(TE(i)),l=(0,G.useMemo)(()=>a?.find(e=>e.username===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.useState)({attribute:`username`,descending:!1}),h=(0,G.useMemo)(()=>[{desc:m.descending,id:m.attribute}],[m]),g=(0,G.useCallback)(()=>{p(!0)},[p]),_=(0,G.useCallback)(()=>{o(),p(!1)},[o,p]),v=(0,G.useCallback)(e=>{u(e.original.username)},[u]),y=(0,G.useCallback)(()=>{u(void 0)},[u]),b=(0,G.useCallback)(()=>{o(),u(void 0)},[u,o]),x=(0,G.useCallback)(()=>{o(),u(void 0)},[u,o]),S=H_(o);return(0,K.jsxs)(G.Suspense,{fallback:(0,K.jsx)(gs,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,K.jsxs)(L_,{data:a,isFetching:s||c,columns:hE,onRowClick:v,sortingState:h,children:[(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:s||c,children:[(0,K.jsx)(Ra,{}),` `,(0,K.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,K.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:g,accessKey:`a`,disabled:f,children:[(0,K.jsx)(Ia,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,K.jsx)(yE,{isModalOpen:f,onChangesSaved:_,setIsModalOpen:p}),d&&(0,K.jsx)(wE,{instanceId:t,clusterId:n,closeModal:y,data:l,isModalOpen:d,onUserDeleted:x,onUserUpdated:b})]})}function OE({context:e,params:t}){let n=kc(t);return e.queryClient.ensureQueryData(RS(n))}function kE(e){let t=I({getParentRoute:()=>e,path:`config`,head:()=>({meta:[{title:`Config — Harper Fabric`}]}),component:eC,loader:OE}),n=I({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Overview — Harper Fabric`}]}),component:AC,loader:OE}),r=I({getParentRoute:()=>t,path:`roles`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:sw}),i=I({getParentRoute:()=>t,path:`roles/$roleId`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:sw}),a=I({getParentRoute:()=>t,path:`users`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:DE}),o=I({getParentRoute:()=>t,path:`users/$username`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:DE}),s=I({getParentRoute:()=>t,path:`domains`,head:()=>({meta:[{title:`Instance Domains — Harper Fabric`}]}),component:XS}),c=I({getParentRoute:()=>t,path:`ssh-keys`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:pE}),l=I({getParentRoute:()=>t,path:`ssh-keys/$keyName`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:pE}),u=I({getParentRoute:()=>t,path:`deployments`,head:()=>({meta:[{title:`Deployments — Harper Fabric`}]}),component:YS}),d=I({getParentRoute:()=>t,path:`deployments/$deploymentId`,head:()=>({meta:[{title:`Deployments — Harper Fabric`}]}),component:YS}),f=I({getParentRoute:()=>t,path:`secrets`,head:()=>({meta:[{title:`Secrets — Harper Fabric`}]}),component:pT}),p=I({getParentRoute:()=>t,path:`secrets/$secretName`,head:()=>({meta:[{title:`Secrets — Harper Fabric`}]}),component:pT}),m=I({getParentRoute:()=>t,path:`certificates`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:aS}),h=I({getParentRoute:()=>t,path:`certificates/$certName`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:aS});return t.addChildren([n,r,i,a,o,s,u,d,c,l,f,p,m,h])}function AE({clusterId:e,databaseName:t,instanceId:n,organizationId:r,tableName:i}){let a=[`databases`,t,i].filter($c).join(`/`);return bx({organizationId:r,instanceId:n,clusterId:e},a)}function jE(e,t){return e.type===`array`?e.elements?t[e.elements]?e.elements:void 0:ME(t,e.attribute):e.type&&t[e.type]?e.type:void 0}function ME(e,t){let n=t.toLowerCase(),r=new Set([n,`${n}s`,n.replace(/s$/,``)]);return Object.keys(e).find(e=>r.has(e.toLowerCase()))}function NE(e,t,n){if(!t||e.is_primary_key||e.computed)return;let r=jE(e,t),i=r?t[r]:void 0;if(!r||!i)return;let a=i.primary_key??i.hash_attribute;if(!a)return;let o=e.type===`array`;return{relatedTableName:r,relatedPrimaryKey:a,relatedAttributes:PE(i,t),isToMany:o,resolvable:!o||!!e.elements,reverseForeignKey:o&&n?FE(n,i,t):void 0}}function PE(e,t){return(e.attributes??[]).filter(e=>!e.computed&&!jE(e,t))}function FE(e,t,n){let r=t.attributes??[];for(let t of r){let i=NE(t,n);if(i&&!i.isToMany&&i.relatedTableName===e.name){let e=zE(t.attribute,i,r,n);if(e)return e}}let i=e.name.toLowerCase(),a=new Set([i,i.replace(/s$/,``)].flatMap(e=>[`${e}id`,`${e}_id`]));return r.find(e=>!e.is_primary_key&&!e.computed&&a.has(e.attribute.toLowerCase()))?.attribute}function IE(e,t,n){let r={};for(let n of e?.attributes??[]){let i=NE(n,t,e);i&&(r[n.attribute]=i)}for(let e of n??[]){let n=t?.[e.relatedTableName],i=n?.primary_key??n?.hash_attribute;if(!n||!i||!t)continue;let a=r[e.attribute];r[e.attribute]={relatedTableName:e.relatedTableName,relatedPrimaryKey:i,relatedAttributes:PE(n,t),isToMany:e.isToMany,resolvable:a?.resolvable??!1,reverseForeignKey:(e.isToMany?e.to:void 0)??a?.reverseForeignKey,foreignKeyAttribute:e.from}}return r}function LE(e,t){return!!e.computed||NE(e,t)!==void 0}function RE(e,t){return(e??[]).filter(e=>LE(e,t)).map(e=>e.attribute)}function zE(e,t,n,r){let i=[e];t.isToMany&&e.endsWith(`s`)&&i.push(e.slice(0,-1));let a=t.isToMany?[`ids`,`_ids`]:[`id`,`_id`],o=new Set(i.flatMap(e=>a.map(t=>(e+t).toLowerCase())));return n.find(e=>!e.is_primary_key&&!e.computed&&!NE(e,r)&&o.has(e.attribute.toLowerCase()))?.attribute}function BE(e){let t=new Set;for(let n of Object.values(e))n.foreignKeyAttribute&&t.add(n.foreignKeyAttribute);return[...t]}function VE(e,t){let n=[];for(let r of e?.attributes??[]){let e=NE(r,t);e?.resolvable&&n.push({name:r.attribute,select:[e.relatedPrimaryKey]})}return n.length?[...n,`*`]:void 0}async function HE({databaseName:e,tableName:t,records:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`insert`,database:e,table:t,records:n});return i}function UE(){return R({mutationFn:HE})}function WE(e,t=!1){let n=e.length,r=0,i=``,a=0,o=16,s=0,c=0,l=0,u=0,d=0;function f(t,n){let i=0,a=0;for(;i<t;){let t=e.charCodeAt(r);if(t>=48&&t<=57)a=a*16+t-48;else if(t>=65&&t<=70)a=a*16+t-65+10;else if(t>=97&&t<=102)a=a*16+t-97+10;else break;r++,i++}return i<t&&(a=-1),a}function p(e){r=e,i=``,a=0,o=16,d=0}function m(){let t=r;if(e.charCodeAt(r)===48)r++;else for(r++;r<e.length&&qE(e.charCodeAt(r));)r++;if(r<e.length&&e.charCodeAt(r)===46){if(r++,r<e.length&&qE(e.charCodeAt(r)))for(r++;r<e.length&&qE(e.charCodeAt(r));)r++;else return d=3,e.substring(t,r)}let n=r;if(r<e.length&&(e.charCodeAt(r)===69||e.charCodeAt(r)===101)){if(r++,(r<e.length&&e.charCodeAt(r)===43||e.charCodeAt(r)===45)&&r++,r<e.length&&qE(e.charCodeAt(r))){for(r++;r<e.length&&qE(e.charCodeAt(r));)r++;n=r}else d=3}return e.substring(t,n)}function h(){let t=``,i=r;for(;;){if(r>=n){t+=e.substring(i,r),d=2;break}let a=e.charCodeAt(r);if(a===34){t+=e.substring(i,r),r++;break}if(a===92){if(t+=e.substring(i,r),r++,r>=n){d=2;break}switch(e.charCodeAt(r++)){case 34:t+=`"`;break;case 92:t+=`\\`;break;case 47:t+=`/`;break;case 98:t+=`\b`;break;case 102:t+=`\f`;break;case 110:t+=`
687
+ `;break;case 114:t+=`\r`;break;case 116:t+=` `;break;case 117:let e=f(4);e>=0?t+=String.fromCharCode(e):d=4;break;default:d=5}i=r;continue}if(a>=0&&a<=31){if(KE(a)){t+=e.substring(i,r),d=2;break}d=6}r++}return t}function g(){if(i=``,d=0,a=r,c=s,u=l,r>=n)return a=n,o=17;let t=e.charCodeAt(r);if(GE(t)){do r++,i+=String.fromCharCode(t),t=e.charCodeAt(r);while(GE(t));return o=15}if(KE(t))return r++,i+=String.fromCharCode(t),t===13&&e.charCodeAt(r)===10&&(r++,i+=`
688
+ `),s++,l=r,o=14;switch(t){case 123:return r++,o=1;case 125:return r++,o=2;case 91:return r++,o=3;case 93:return r++,o=4;case 58:return r++,o=6;case 44:return r++,o=5;case 34:return r++,i=h(),o=10;case 47:let c=r-1;if(e.charCodeAt(r+1)===47){for(r+=2;r<n&&!KE(e.charCodeAt(r));)r++;return i=e.substring(c,r),o=12}if(e.charCodeAt(r+1)===42){r+=2;let t=n-1,a=!1;for(;r<t;){let t=e.charCodeAt(r);if(t===42&&e.charCodeAt(r+1)===47){r+=2,a=!0;break}r++,KE(t)&&(t===13&&e.charCodeAt(r)===10&&r++,s++,l=r)}return a||(r++,d=1),i=e.substring(c,r),o=13}return i+=String.fromCharCode(t),r++,o=16;case 45:if(i+=String.fromCharCode(t),r++,r===n||!qE(e.charCodeAt(r)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=m(),o=11;default:for(;r<n&&_(t);)r++,t=e.charCodeAt(r);if(a!==r){switch(i=e.substring(a,r),i){case`true`:return o=8;case`false`:return o=9;case`null`:return o=7}return o=16}return i+=String.fromCharCode(t),r++,o=16}}function _(e){if(GE(e)||KE(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function v(){let e;do e=g();while(e>=12&&e<=15);return e}return{setPosition:p,getPosition:()=>r,scan:t?v:g,getToken:()=>o,getTokenValue:()=>i,getTokenOffset:()=>a,getTokenLength:()=>r-a,getTokenStartLine:()=>c,getTokenStartCharacter:()=>a-u,getTokenError:()=>d}}function GE(e){return e===32||e===9}function KE(e){return e===10||e===13}function qE(e){return e>=48&&e<=57}var JE;(function(e){e[e.lineFeed=10]=`lineFeed`,e[e.carriageReturn=13]=`carriageReturn`,e[e.space=32]=`space`,e[e._0=48]=`_0`,e[e._1=49]=`_1`,e[e._2=50]=`_2`,e[e._3=51]=`_3`,e[e._4=52]=`_4`,e[e._5=53]=`_5`,e[e._6=54]=`_6`,e[e._7=55]=`_7`,e[e._8=56]=`_8`,e[e._9=57]=`_9`,e[e.a=97]=`a`,e[e.b=98]=`b`,e[e.c=99]=`c`,e[e.d=100]=`d`,e[e.e=101]=`e`,e[e.f=102]=`f`,e[e.g=103]=`g`,e[e.h=104]=`h`,e[e.i=105]=`i`,e[e.j=106]=`j`,e[e.k=107]=`k`,e[e.l=108]=`l`,e[e.m=109]=`m`,e[e.n=110]=`n`,e[e.o=111]=`o`,e[e.p=112]=`p`,e[e.q=113]=`q`,e[e.r=114]=`r`,e[e.s=115]=`s`,e[e.t=116]=`t`,e[e.u=117]=`u`,e[e.v=118]=`v`,e[e.w=119]=`w`,e[e.x=120]=`x`,e[e.y=121]=`y`,e[e.z=122]=`z`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.asterisk=42]=`asterisk`,e[e.backslash=92]=`backslash`,e[e.closeBrace=125]=`closeBrace`,e[e.closeBracket=93]=`closeBracket`,e[e.colon=58]=`colon`,e[e.comma=44]=`comma`,e[e.dot=46]=`dot`,e[e.doubleQuote=34]=`doubleQuote`,e[e.minus=45]=`minus`,e[e.openBrace=123]=`openBrace`,e[e.openBracket=91]=`openBracket`,e[e.plus=43]=`plus`,e[e.slash=47]=`slash`,e[e.formFeed=12]=`formFeed`,e[e.tab=9]=`tab`})(JE||={}),Array(20).fill(0).map((e,t)=>` `.repeat(t));var YE=200;Array(YE).fill(0).map((e,t)=>`
689
+ `+` `.repeat(t)),Array(YE).fill(0).map((e,t)=>`\r`+` `.repeat(t)),Array(YE).fill(0).map((e,t)=>`\r
690
+ `+` `.repeat(t)),Array(YE).fill(0).map((e,t)=>`
691
+ `+` `.repeat(t)),Array(YE).fill(0).map((e,t)=>`\r`+` `.repeat(t)),Array(YE).fill(0).map((e,t)=>`\r
692
+ `+` `.repeat(t));var XE;(function(e){e.DEFAULT={allowTrailingComma:!1}})(XE||={});var ZE=WE,QE;(function(e){e[e.None=0]=`None`,e[e.UnexpectedEndOfComment=1]=`UnexpectedEndOfComment`,e[e.UnexpectedEndOfString=2]=`UnexpectedEndOfString`,e[e.UnexpectedEndOfNumber=3]=`UnexpectedEndOfNumber`,e[e.InvalidUnicode=4]=`InvalidUnicode`,e[e.InvalidEscapeCharacter=5]=`InvalidEscapeCharacter`,e[e.InvalidCharacter=6]=`InvalidCharacter`})(QE||={});var $E;(function(e){e[e.OpenBraceToken=1]=`OpenBraceToken`,e[e.CloseBraceToken=2]=`CloseBraceToken`,e[e.OpenBracketToken=3]=`OpenBracketToken`,e[e.CloseBracketToken=4]=`CloseBracketToken`,e[e.CommaToken=5]=`CommaToken`,e[e.ColonToken=6]=`ColonToken`,e[e.NullKeyword=7]=`NullKeyword`,e[e.TrueKeyword=8]=`TrueKeyword`,e[e.FalseKeyword=9]=`FalseKeyword`,e[e.StringLiteral=10]=`StringLiteral`,e[e.NumericLiteral=11]=`NumericLiteral`,e[e.LineCommentTrivia=12]=`LineCommentTrivia`,e[e.BlockCommentTrivia=13]=`BlockCommentTrivia`,e[e.LineBreakTrivia=14]=`LineBreakTrivia`,e[e.Trivia=15]=`Trivia`,e[e.Unknown=16]=`Unknown`,e[e.EOF=17]=`EOF`})($E||={});var eD;(function(e){e[e.InvalidSymbol=1]=`InvalidSymbol`,e[e.InvalidNumberFormat=2]=`InvalidNumberFormat`,e[e.PropertyNameExpected=3]=`PropertyNameExpected`,e[e.ValueExpected=4]=`ValueExpected`,e[e.ColonExpected=5]=`ColonExpected`,e[e.CommaExpected=6]=`CommaExpected`,e[e.CloseBraceExpected=7]=`CloseBraceExpected`,e[e.CloseBracketExpected=8]=`CloseBracketExpected`,e[e.EndOfFileExpected=9]=`EndOfFileExpected`,e[e.InvalidCommentToken=10]=`InvalidCommentToken`,e[e.UnexpectedEndOfComment=11]=`UnexpectedEndOfComment`,e[e.UnexpectedEndOfString=12]=`UnexpectedEndOfString`,e[e.UnexpectedEndOfNumber=13]=`UnexpectedEndOfNumber`,e[e.InvalidUnicode=14]=`InvalidUnicode`,e[e.InvalidEscapeCharacter=15]=`InvalidEscapeCharacter`,e[e.InvalidCharacter=16]=`InvalidCharacter`})(eD||={});function tD(e){return{getInitialState:()=>new mD(null,null,!1,null),tokenize:(t,n)=>hD(e,t,n)}}var nD=`delimiter.bracket.json`,rD=`delimiter.array.json`,iD=`delimiter.colon.json`,aD=`delimiter.comma.json`,oD=`keyword.json`,sD=`keyword.json`,cD=`string.value.json`,lD=`number.json`,uD=`string.key.json`,dD=`comment.block.json`,fD=`comment.line.json`,pD=class e{constructor(e,t){this.parent=e,this.type=t}static pop(e){return e?e.parent:null}static push(t,n){return new e(t,n)}static equals(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;for(;e&&t;){if(e===t)return!0;if(e.type!==t.type)return!1;e=e.parent,t=t.parent}return!0}},mD=class e{constructor(e,t,n,r){this._state=e,this.scanError=t,this.lastWasColon=n,this.parents=r}clone(){return new e(this._state,this.scanError,this.lastWasColon,this.parents)}equals(t){return t===this?!0:!t||!(t instanceof e)?!1:this.scanError===t.scanError&&this.lastWasColon===t.lastWasColon&&pD.equals(this.parents,t.parents)}getStateData(){return this._state}setStateData(e){this._state=e}};function hD(e,t,n,r=0){let i=0,a=!1;switch(n.scanError){case 2:t=`"`+t,i=1;break;case 1:t=`/*`+t,i=2}let o=ZE(t),s=n.lastWasColon,c=n.parents,l={tokens:[],endState:n.clone()};for(;;){let e=r+o.getPosition(),u=``,d=o.scan();if(d===17)break;if(e===r+o.getPosition())throw Error(`Scanner did not advance, next 3 characters are: `+t.substr(o.getPosition(),3));switch(a&&(e-=i),a=i>0,d){case 1:c=pD.push(c,0),u=nD,s=!1;break;case 2:c=pD.pop(c),u=nD,s=!1;break;case 3:c=pD.push(c,1),u=rD,s=!1;break;case 4:c=pD.pop(c),u=rD,s=!1;break;case 6:u=iD,s=!0;break;case 5:u=aD,s=!1;break;case 8:case 9:u=oD,s=!1;break;case 7:u=sD,s=!1;break;case 10:let e=(c?c.type:0)===1;u=s||e?cD:uD,s=!1;break;case 11:u=lD,s=!1}switch(d){case 12:u=fD;break;case 13:u=dD}l.endState=new mD(n.getStateData(),o.getTokenError(),s,c),l.tokens.push({startIndex:e,scopes:u})}return l}var gD=`json-worker-free`,_D={wordPattern:/(-?\d*\.\d\w*)|([^[{\]}:"\s,]+)/g,comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`]],autoClosingPairs:[{open:`{`,close:`}`,notIn:[`string`]},{open:`[`,close:`]`,notIn:[`string`]},{open:`"`,close:`"`,notIn:[`string`]}]},vD=!1;function yD(e){vD||(vD=!0,e.register({id:gD}),e.setLanguageConfiguration(gD,_D),e.setTokensProvider(gD,tD(!0)))}function bD(e){if(!e.trim())return{ok:!1,error:{message:`The editor is empty, so there is nothing to save.`}};let t;try{t=JSON.parse(e)}catch(t){let n=t instanceof Error?t.message:String(t);return{ok:!1,error:{message:OD(n),location:wD(n,e)}}}let n=ED(t);return n?{ok:!1,error:{message:n}}:{ok:!0,value:t}}function xD({message:e,location:t}){return t?`Line ${t.lineNumber}, column ${t.column}: ${e}`:e}var SD=/\bline (\d+) column (\d+)/i,CD=/\bposition (\d+)/i;function wD(e,t){let n=SD.exec(e);if(n)return{lineNumber:Number(n[1]),column:Number(n[2])};let r=CD.exec(e);return r?TD(t,Number(r[1])):void 0}function TD(e,t){let n=Math.max(0,Math.min(t,e.length)),r=1,i=0;for(let t=e.indexOf(`
693
693
  `);t!==-1&&t<n;t=e.indexOf(`
694
- `,t+1))r++,i=t+1;return{lineNumber:r,column:n-i+1}}function xD(e){if(Array.isArray(e)){let t=e.findIndex(e=>!SD(e));return t===-1?void 0:`Item ${t+1} of the array isn't a JSON object.`}return SD(e)?void 0:`A record has to be a JSON object, or an array of them.`}function SD(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function CD(e){return e.replace(/^JSON\.parse:\s*/,``).replace(/\s*in JSON at position \d+.*$/i,``).replace(/\s*at line \d+ column \d+ of the JSON data\.?$/i,``).trim()}var wD=`record-json`;function TD(){let e=(0,G.useRef)(null),t=(0,G.useRef)(null);return{onEditorMount:(0,G.useCallback)((n,r)=>{e.current=n,t.current=r},[]),showRecordJsonError:(0,G.useCallback)(n=>{e.current&&t.current&&ED(e.current,t.current,n)},[]),clearRecordJsonError:(0,G.useCallback)(()=>{e.current&&t.current&&DD(e.current,t.current)},[])}}function ED(e,t,n){let r=e.getModel();if(!r)return;let i=n.location&&OD(r,n.location);t.editor.setModelMarkers(r,wD,i?[{severity:t.MarkerSeverity.Error,message:n.message,startLineNumber:i.lineNumber,startColumn:i.column,endLineNumber:i.lineNumber,endColumn:Math.max(r.getLineMaxColumn(i.lineNumber),i.column+1)}]:[]),i&&(e.revealLineInCenter(i.lineNumber),e.setPosition(i),e.focus())}function DD(e,t){let n=e.getModel();n&&t.editor.setModelMarkers(n,wD,[])}function OD(e,{lineNumber:t,column:n}){let r=Math.min(Math.max(t,1),e.getLineCount());return{lineNumber:r,column:Math.min(Math.max(n,1),e.getLineMaxColumn(r))}}function kD({isModalOpen:e,instanceTable:t,databaseTables:n,setIsModalOpen:r,refreshTable:i}){let a=rv(),{mutate:o,isPending:s}=RE(),c=q(),[l,u]=(0,G.useState)(),[d,f]=(0,G.useState)(!1),[p,m]=(0,G.useState)([]),{onEditorMount:h,showRecordJsonError:g,clearRecordJsonError:v}=TD(),y=(0,G.useMemo)(()=>{let e={};for(let r of t.attributes)r.is_primary_key||r.attribute===`__createdtime__`||r.attribute===`__updatedtime__`||ME(r,n)||(e[r.attribute]=AD(r.type));return JSON.stringify(e,null,4)},[t,n]),b=(0,G.useCallback)(()=>{if(l===void 0)return;let e=hD(l);if(!e.ok){U.error(`This record isn't valid JSON`,{description:gD(e.error)}),g(e.error);return}let n=Array.isArray(e.value)?e.value:[e.value],a=U.loading(`Adding ${n.length} records...`);o({...c,databaseName:t.schema,tableName:t.name,records:n},{onSuccess:e=>{i(),e.skipped_hashes?.length||r(!1),m(e.skipped_hashes),(e.skipped_hashes?.length>0?U.warning:U.success)(e.skipped_hashes?.length>0?`Warning!`:`Success!`,{id:a,description:(0,K.jsxs)(K.Fragment,{children:[e.inserted_hashes.length>0&&(0,K.jsxs)(`p`,{children:[`Added `,_(e.inserted_hashes.length,`record`,`records`)]}),e.skipped_hashes.length>0&&(0,K.jsxs)(`p`,{children:[`Skipped `,_(e.skipped_hashes.length,`record`,`records`)]})]})})}})},[l,o,c,t.name,t.schema,i,r,g]),x=(0,G.useCallback)((e,t)=>{h(e,t),e?.focus()},[h]);return(0,K.jsx)(Id,{onOpenChange:r,open:e,children:(0,K.jsxs)(Ud,{"aria-describedby":void 0,resizable:!0,onEscapeKeyDown:e=>{d&&e.preventDefault()},children:[(0,K.jsx)(Wd,{children:(0,K.jsxs)(Kd,{children:[`Add New `,t.name]})}),(t?.primary_key??t?.hash_attribute)&&(0,K.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[`The primary key for this table is`,` `,(0,K.jsxs)(`strong`,{children:[`“`,t.primary_key??t.hash_attribute,`”`]}),`, and will auto-generate. You may manually add it if you want to specify its value.`]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0 w-full`,children:(0,K.jsx)(av,{className:`w-full h-full`,language:dD,theme:a,value:y,onChange:e=>{u(e),f(!0),v()},options:{minimap:{enabled:!1},automaticLayout:!0},onMount:x})}),(0,K.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[(0,K.jsx)(`strong`,{children:`Provide an [array]`}),` if you want to add more than one record at a time.`]}),p.length>0&&(0,K.jsxs)(_m,{className:`mt-2`,children:[(0,K.jsx)(So,{className:`w-4 h-4`}),(0,K.jsxs)(vm,{children:[`Skipped `,p.length===1?`Hash`:`Hashes`,` Detected`]}),(0,K.jsx)(ym,{className:`max-h-36 overflow-auto`,children:(0,K.jsx)(`ol`,{children:p.map(e=>(0,K.jsx)(`li`,{children:e},e))})})]}),(0,K.jsx)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{variant:`submit`,onClick:b,accessKey:`s`,disabled:l===void 0||s,children:[(0,K.jsx)(Ka,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`S`}),`ave Changes`]})]})})})]})})}function AD(e){switch(e){case`Date`:return new Date().toISOString();case`Id`:case`ID`:case`String`:return``;case`Boolean`:return!1;case`Int`:case`Long`:case`Float`:case`BigInt`:return 0;default:return null}}async function jD({databaseName:e,tableName:t,primaryKey:n,replicated:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`create_table`,database:e,table:t,primary_key:n,replicated:r});return a}function MD(){return R({mutationFn:jD})}var ND=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,PD=M().regex(ND,{error:`Database name cannot include backticks or forward slashes.`}).max(75,{error:`Database name cannot be longer than 75 characters.`}),FD=M().nonempty({error:`Table name is required.`}).regex(ND,{error:`Table name cannot include backticks or forward slashes.`}).max(250,{error:`Table name cannot be longer than 250 characters.`}),ID=S({databaseName:PD,tableName:FD,primaryKey:M().regex(ND,{error:`Primary key cannot include backticks or forward slashes.`}).max(250,{error:`Primary key cannot be longer than 250 characters.`})});function LD({isModalOpen:e,setIsModalOpen:t,databaseName:n,onCreated:r}){let i=Me(),a=q(),o=we(),s=Gt({resolver:it(ID),defaultValues:{databaseName:n||``,tableName:``,primaryKey:``}}),{mutate:c}=MD(),l=async e=>{let n=e.databaseName||`data`,l=e.tableName;c({databaseName:n,tableName:l,primaryKey:e.primaryKey||`id`,...a,replicated:a.entityType===`cluster`},{onSuccess:async()=>{await i.invalidateQueries({queryKey:[a.entityId,`describe_all`],refetchType:`all`}),U.success(`Table ${l} created successfully`),t(!1),s.reset(),r(n,l),await o.invalidate()}})};return(0,K.jsx)(Id,{open:e,onOpenChange:t,children:(0,K.jsxs)(Ud,{className:`sm:max-w-[425px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Create a New Table`}),(0,K.jsx)(qd,{children:`What would you like to create?`})]}),(0,K.jsx)(El,{...s,children:(0,K.jsxs)(`form`,{id:`instance-new-table-form`,name:`instance-new-table-form`,onSubmit:s.handleSubmit(l),className:`grid gap-6 text-popover-foreground`,children:[(0,K.jsx)(Y,{control:s.control,name:`tableName`,render:({field:e})=>(0,K.jsxs)(X,{className:``,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Table Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,maxLength:ID.shape.tableName.maxLength,autoFocus:!0,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`primaryKey`,render:({field:e})=>(0,K.jsxs)(X,{className:``,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Primary Key`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,placeholder:`id`,type:`text`,maxLength:ID.shape.primaryKey.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`databaseName`,render:({field:e})=>(0,K.jsxs)(X,{className:``,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Database Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,placeholder:`data`,maxLength:ID.shape.databaseName.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(H,{type:`submit`,variant:`submit`,children:[(0,K.jsx)(vo,{}),`Create New Table`]})})]})})]})})}async function RD({databaseName:e,replicated:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`drop_database`,database:e,replicated:t});return r}function zD(){return R({mutationFn:RD})}function BD(e,t){let[n,r]=(0,G.useState)({value:t});return Dy(e,(e,t)=>r({value:e,trigger:t}),[r]),n}function VD(e,t,n){Oy(e,t,n)}function HD(e,t,n){return r=>VD(e,t,n??r)}function UD(e,t,n){return(0,G.useCallback)(r=>{VD(e,t,n??r)},[e,t,n])}function WD({onDeleted:e}){let{value:t}=BD(`ShowDeleteDatabase`,!1),n=!!t,r=t?t.databaseName:``,i=(0,G.useCallback)(()=>{VD(`ShowDeleteDatabase`,!1)},[]),a=Pp(),o=Me(),s=q(),c=we(),{mutate:l,isPending:u}=zD(),d=(0,G.useCallback)(()=>{l({databaseName:r,...s,replicated:s.entityType===`cluster`},{onSuccess:async()=>{i(),await o.invalidateQueries({queryKey:[s.entityId,`describe_all`],refetchType:`all`}),await c.invalidate(),U.success(`Database ${r} dropped successfully`),e({databaseName:r})}})},[i,r,l,s,e,o,c]);return!a||!r?(0,K.jsx)(K.Fragment,{}):(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`database`,nameOfThingBeingDeleted:r,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:i,deletionConfirmed:d,deletionPending:u})}async function GD({databaseName:e,tableName:t,replicated:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`drop_table`,database:e,table:t,replicated:n});return i}function KD(){return R({mutationFn:GD})}function qD({onDeleted:e}){let{value:t}=BD(`ShowDeleteTable`,!1),n=!!t,r=t?t.databaseName:``,i=t?t.tableName:``,a=(0,G.useCallback)(()=>{VD(`ShowDeleteTable`,!1)},[]),o=Pp(),s=Me(),c=q(),l=we(),{mutate:u,isPending:d}=KD(),f=(0,G.useCallback)(()=>{u({databaseName:r,tableName:i,...c,replicated:c.entityType===`cluster`},{onSuccess:async()=>{a(),await s.invalidateQueries({queryKey:[c.entityId,`describe_all`],refetchType:`all`}),await l.invalidate(),U.success(`Table ${i} dropped successfully`),e({databaseName:r,tableName:i})}})},[a,r,u,c,e,s,l,i]);return!o||!r?(0,K.jsx)(K.Fragment,{}):(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`table`,nameOfThingBeingDeleted:`${r} > ${i}`,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:a,deletionConfirmed:f,deletionPending:d})}var JD=[`Ada`,`Alan`,`Grace`,`Linus`,`Margaret`,`Dennis`,`Barbara`,`Ken`,`Radia`,`Donald`,`Katherine`,`Edsger`,`Frances`,`John`,`Hedy`],YD=[`Lovelace`,`Turing`,`Hopper`,`Hamilton`,`Ritchie`,`Liskov`,`Thompson`,`Perlman`,`Knuth`,`Johnson`,`Dijkstra`,`Allen`,`Backus`,`Lamarr`,`Shannon`],XD=[`amber`,`birch`,`cedar`,`delta`,`ember`,`fjord`,`grove`,`harbor`,`indigo`,`juniper`,`krypton`,`lagoon`,`meadow`,`nimbus`,`onyx`,`prairie`,`quartz`,`ridge`,`summit`,`tundra`],ZD=[`Denver`,`Austin`,`Seattle`,`Boston`,`Chicago`,`Portland`,`Nashville`,`Phoenix`,`Atlanta`],QD=[`USA`,`Canada`,`Germany`,`Japan`,`Brazil`,`Australia`,`France`,`India`,`Spain`],$D=e=>e[Math.floor(Math.random()*e.length)],eO=(e,t)=>e+Math.floor(Math.random()*(t-e+1)),tO=e=>e[0].toUpperCase()+e.slice(1),nO=()=>new Date(Date.now()-eO(0,365)*24*60*60*1e3).toISOString();function rO(e){let t=e.toLowerCase();return/email/.test(t)?`${$D(JD).toLowerCase()}.${$D(YD).toLowerCase()}@example.com`:/phone/.test(t)?`555-${eO(100,999)}-${eO(1e3,9999)}`:/(^|_)(url|link|website)($|_)/.test(t)?`https://example.com/${$D(XD)}`:/name/.test(t)?/(first|given)/.test(t)?$D(JD):/(last|family|sur)/.test(t)?$D(YD):`${$D(JD)} ${$D(YD)}`:/age/.test(t)?eO(1,90):/year/.test(t)?eO(1970,2026):/(price|cost|amount|total|salary)/.test(t)?Number((Math.random()*500).toFixed(2)):/(count|qty|quantity|weight|height|size|pages|score|rating|number|num_)/.test(t)?eO(0,500):/(^is_|^has_|enabled|active|flag|adorable|verified)/.test(t)?Math.random()<.5:/(date|time|_at$|created|updated)/.test(t)?nO():/city/.test(t)?$D(ZD):/country/.test(t)?$D(QD):/(description|notes|comment|bio|summary)/.test(t)?`A ${$D(XD)} ${$D(XD)} with a hint of ${$D(XD)}.`:`${tO($D(XD))} ${tO($D(XD))}`}function iO(e){switch(e.type){case`ID`:return crypto.randomUUID();case`Int`:case`Long`:case`BigInt`:{let t=rO(e.attribute);return typeof t==`number`?Math.round(t):eO(0,1e3)}case`Float`:{let t=rO(e.attribute);return typeof t==`number`?t:Number((Math.random()*1e3).toFixed(2))}case`Boolean`:return Math.random()<.5;case`Date`:return nO();case`String`:{let t=rO(e.attribute);return typeof t==`string`?t:String(t)}default:return rO(e.attribute)}}function aO(e,t){return(e??[]).filter(e=>!e.is_primary_key&&e.attribute!==`__createdtime__`&&e.attribute!==`__updatedtime__`&&e.type!==`Bytes`&&e.type!==`Blob`&&!ME(e,t))}function oO(e,t){let n=aO(e);return Array.from({length:t},()=>{let e={};for(let t of n)e[t.attribute]=iO(t);return e})}function sO(e){let t;try{t=JSON.parse(e)}catch{throw Error(`The file is not valid JSON.`)}let n=Array.isArray(t)?t:[t];if(n.length===0)throw Error(`The JSON file contains no records.`);if(n.some(e=>typeof e!=`object`||!e||Array.isArray(e)))throw Error(`The JSON file must contain an object or an array of objects.`);return n}var cO=[{id:`dogs`,name:`Dogs`,description:`The classic Harper demo — dogs and their humans`,table:`dog`,csv:`id,dog_name,owner_name,breed,age,weight_lbs,adorable
694
+ `,t+1))r++,i=t+1;return{lineNumber:r,column:n-i+1}}function ED(e){if(Array.isArray(e)){let t=e.findIndex(e=>!DD(e));return t===-1?void 0:`Item ${t+1} of the array isn't a JSON object.`}return DD(e)?void 0:`A record has to be a JSON object, or an array of them.`}function DD(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function OD(e){return e.replace(/^JSON\.parse:\s*/,``).replace(/\s*in JSON at position \d+.*$/i,``).replace(/\s*at line \d+ column \d+ of the JSON data\.?$/i,``).trim()}var kD=`record-json`;function AD(){let e=(0,G.useRef)(null),t=(0,G.useRef)(null);return{onEditorMount:(0,G.useCallback)((n,r)=>{e.current=n,t.current=r},[]),showRecordJsonError:(0,G.useCallback)(n=>{e.current&&t.current&&jD(e.current,t.current,n)},[]),clearRecordJsonError:(0,G.useCallback)(()=>{e.current&&t.current&&MD(e.current,t.current)},[])}}function jD(e,t,n){let r=e.getModel();if(!r)return;let i=n.location&&ND(r,n.location);t.editor.setModelMarkers(r,kD,i?[{severity:t.MarkerSeverity.Error,message:n.message,startLineNumber:i.lineNumber,startColumn:i.column,endLineNumber:i.lineNumber,endColumn:Math.max(r.getLineMaxColumn(i.lineNumber),i.column+1)}]:[]),i&&(e.revealLineInCenter(i.lineNumber),e.setPosition(i),e.focus())}function MD(e,t){let n=e.getModel();n&&t.editor.setModelMarkers(n,kD,[])}function ND(e,{lineNumber:t,column:n}){let r=Math.min(Math.max(t,1),e.getLineCount());return{lineNumber:r,column:Math.min(Math.max(n,1),e.getLineMaxColumn(r))}}function PD({isModalOpen:e,instanceTable:t,databaseTables:n,setIsModalOpen:r,refreshTable:i}){let a=rv(),{mutate:o,isPending:s}=UE(),c=q(),[l,u]=(0,G.useState)(),[d,f]=(0,G.useState)(!1),[p,m]=(0,G.useState)([]),{onEditorMount:h,showRecordJsonError:g,clearRecordJsonError:v}=AD(),y=(0,G.useMemo)(()=>{let e={};for(let r of t.attributes)r.is_primary_key||r.attribute===`__createdtime__`||r.attribute===`__updatedtime__`||LE(r,n)||(e[r.attribute]=FD(r.type));return JSON.stringify(e,null,4)},[t,n]),b=(0,G.useCallback)(()=>{if(l===void 0)return;let e=bD(l);if(!e.ok){U.error(`This record isn't valid JSON`,{description:xD(e.error)}),g(e.error);return}let n=Array.isArray(e.value)?e.value:[e.value],a=U.loading(`Adding ${n.length} records...`);o({...c,databaseName:t.schema,tableName:t.name,records:n},{onSuccess:e=>{i(),e.skipped_hashes?.length||r(!1),m(e.skipped_hashes),(e.skipped_hashes?.length>0?U.warning:U.success)(e.skipped_hashes?.length>0?`Warning!`:`Success!`,{id:a,description:(0,K.jsxs)(K.Fragment,{children:[e.inserted_hashes.length>0&&(0,K.jsxs)(`p`,{children:[`Added `,_(e.inserted_hashes.length,`record`,`records`)]}),e.skipped_hashes.length>0&&(0,K.jsxs)(`p`,{children:[`Skipped `,_(e.skipped_hashes.length,`record`,`records`)]})]})})}})},[l,o,c,t.name,t.schema,i,r,g]),x=(0,G.useCallback)((e,t)=>{h(e,t),e?.focus()},[h]);return(0,K.jsx)(Id,{onOpenChange:r,open:e,children:(0,K.jsxs)(Ud,{"aria-describedby":void 0,resizable:!0,onEscapeKeyDown:e=>{d&&e.preventDefault()},children:[(0,K.jsx)(Wd,{children:(0,K.jsxs)(Kd,{children:[`Add New `,t.name]})}),(t?.primary_key??t?.hash_attribute)&&(0,K.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[`The primary key for this table is`,` `,(0,K.jsxs)(`strong`,{children:[`“`,t.primary_key??t.hash_attribute,`”`]}),`, and will auto-generate. You may manually add it if you want to specify its value.`]}),(0,K.jsx)(`div`,{className:`flex-1 min-h-0 w-full`,children:(0,K.jsx)(av,{className:`w-full h-full`,language:gD,theme:a,value:y,onChange:e=>{u(e),f(!0),v()},options:{minimap:{enabled:!1},automaticLayout:!0},onMount:x})}),(0,K.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[(0,K.jsx)(`strong`,{children:`Provide an [array]`}),` if you want to add more than one record at a time.`]}),p.length>0&&(0,K.jsxs)(_m,{className:`mt-2`,children:[(0,K.jsx)(So,{className:`w-4 h-4`}),(0,K.jsxs)(vm,{children:[`Skipped `,p.length===1?`Hash`:`Hashes`,` Detected`]}),(0,K.jsx)(ym,{className:`max-h-36 overflow-auto`,children:(0,K.jsx)(`ol`,{children:p.map(e=>(0,K.jsx)(`li`,{children:e},e))})})]}),(0,K.jsx)(Gd,{children:(0,K.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,K.jsxs)(H,{variant:`submit`,onClick:b,accessKey:`s`,disabled:l===void 0||s,children:[(0,K.jsx)(Ka,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`S`}),`ave Changes`]})]})})})]})})}function FD(e){switch(e){case`Date`:return new Date().toISOString();case`Id`:case`ID`:case`String`:return``;case`Boolean`:return!1;case`Int`:case`Long`:case`Float`:case`BigInt`:return 0;default:return null}}async function ID({databaseName:e,tableName:t,primaryKey:n,replicated:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`create_table`,database:e,table:t,primary_key:n,replicated:r});return a}function LD(){return R({mutationFn:ID})}var RD=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,zD=M().regex(RD,{error:`Database name cannot include backticks or forward slashes.`}).max(75,{error:`Database name cannot be longer than 75 characters.`}),BD=M().nonempty({error:`Table name is required.`}).regex(RD,{error:`Table name cannot include backticks or forward slashes.`}).max(250,{error:`Table name cannot be longer than 250 characters.`}),VD=S({databaseName:zD,tableName:BD,primaryKey:M().regex(RD,{error:`Primary key cannot include backticks or forward slashes.`}).max(250,{error:`Primary key cannot be longer than 250 characters.`})});function HD({isModalOpen:e,setIsModalOpen:t,databaseName:n,onCreated:r}){let i=Me(),a=q(),o=we(),s=Gt({resolver:it(VD),defaultValues:{databaseName:n||``,tableName:``,primaryKey:``}}),{mutate:c}=LD(),l=async e=>{let n=e.databaseName||`data`,l=e.tableName;c({databaseName:n,tableName:l,primaryKey:e.primaryKey||`id`,...a,replicated:a.entityType===`cluster`},{onSuccess:async()=>{await i.invalidateQueries({queryKey:[a.entityId,`describe_all`],refetchType:`all`}),U.success(`Table ${l} created successfully`),t(!1),s.reset(),r(n,l),await o.invalidate()}})};return(0,K.jsx)(Id,{open:e,onOpenChange:t,children:(0,K.jsxs)(Ud,{className:`sm:max-w-[425px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Create a New Table`}),(0,K.jsx)(qd,{children:`What would you like to create?`})]}),(0,K.jsx)(El,{...s,children:(0,K.jsxs)(`form`,{id:`instance-new-table-form`,name:`instance-new-table-form`,onSubmit:s.handleSubmit(l),className:`grid gap-6 text-popover-foreground`,children:[(0,K.jsx)(Y,{control:s.control,name:`tableName`,render:({field:e})=>(0,K.jsxs)(X,{className:``,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Table Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,maxLength:VD.shape.tableName.maxLength,autoFocus:!0,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`primaryKey`,render:({field:e})=>(0,K.jsxs)(X,{className:``,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Primary Key`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,placeholder:`id`,type:`text`,maxLength:VD.shape.primaryKey.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:s.control,name:`databaseName`,render:({field:e})=>(0,K.jsxs)(X,{className:``,children:[(0,K.jsx)(Z,{className:`pb-1`,children:`Database Name`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,placeholder:`data`,maxLength:VD.shape.databaseName.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(H,{type:`submit`,variant:`submit`,children:[(0,K.jsx)(vo,{}),`Create New Table`]})})]})})]})})}async function UD({databaseName:e,replicated:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`drop_database`,database:e,replicated:t});return r}function WD(){return R({mutationFn:UD})}function GD(e,t){let[n,r]=(0,G.useState)({value:t});return Dy(e,(e,t)=>r({value:e,trigger:t}),[r]),n}function KD(e,t,n){Oy(e,t,n)}function qD(e,t,n){return r=>KD(e,t,n??r)}function JD(e,t,n){return(0,G.useCallback)(r=>{KD(e,t,n??r)},[e,t,n])}function YD({onDeleted:e}){let{value:t}=GD(`ShowDeleteDatabase`,!1),n=!!t,r=t?t.databaseName:``,i=(0,G.useCallback)(()=>{KD(`ShowDeleteDatabase`,!1)},[]),a=Pp(),o=Me(),s=q(),c=we(),{mutate:l,isPending:u}=WD(),d=(0,G.useCallback)(()=>{l({databaseName:r,...s,replicated:s.entityType===`cluster`},{onSuccess:async()=>{i(),await o.invalidateQueries({queryKey:[s.entityId,`describe_all`],refetchType:`all`}),await c.invalidate(),U.success(`Database ${r} dropped successfully`),e({databaseName:r})}})},[i,r,l,s,e,o,c]);return!a||!r?(0,K.jsx)(K.Fragment,{}):(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`database`,nameOfThingBeingDeleted:r,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:i,deletionConfirmed:d,deletionPending:u})}async function XD({databaseName:e,tableName:t,replicated:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`drop_table`,database:e,table:t,replicated:n});return i}function ZD(){return R({mutationFn:XD})}function QD({onDeleted:e}){let{value:t}=GD(`ShowDeleteTable`,!1),n=!!t,r=t?t.databaseName:``,i=t?t.tableName:``,a=(0,G.useCallback)(()=>{KD(`ShowDeleteTable`,!1)},[]),o=Pp(),s=Me(),c=q(),l=we(),{mutate:u,isPending:d}=ZD(),f=(0,G.useCallback)(()=>{u({databaseName:r,tableName:i,...c,replicated:c.entityType===`cluster`},{onSuccess:async()=>{a(),await s.invalidateQueries({queryKey:[c.entityId,`describe_all`],refetchType:`all`}),await l.invalidate(),U.success(`Table ${i} dropped successfully`),e({databaseName:r,tableName:i})}})},[a,r,u,c,e,s,l,i]);return!o||!r?(0,K.jsx)(K.Fragment,{}):(0,K.jsx)(Jd,{typeOfThingBeingDeleted:`table`,nameOfThingBeingDeleted:`${r} > ${i}`,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:a,deletionConfirmed:f,deletionPending:d})}var $D=[`Ada`,`Alan`,`Grace`,`Linus`,`Margaret`,`Dennis`,`Barbara`,`Ken`,`Radia`,`Donald`,`Katherine`,`Edsger`,`Frances`,`John`,`Hedy`],eO=[`Lovelace`,`Turing`,`Hopper`,`Hamilton`,`Ritchie`,`Liskov`,`Thompson`,`Perlman`,`Knuth`,`Johnson`,`Dijkstra`,`Allen`,`Backus`,`Lamarr`,`Shannon`],tO=[`amber`,`birch`,`cedar`,`delta`,`ember`,`fjord`,`grove`,`harbor`,`indigo`,`juniper`,`krypton`,`lagoon`,`meadow`,`nimbus`,`onyx`,`prairie`,`quartz`,`ridge`,`summit`,`tundra`],nO=[`Denver`,`Austin`,`Seattle`,`Boston`,`Chicago`,`Portland`,`Nashville`,`Phoenix`,`Atlanta`],rO=[`USA`,`Canada`,`Germany`,`Japan`,`Brazil`,`Australia`,`France`,`India`,`Spain`],iO=e=>e[Math.floor(Math.random()*e.length)],aO=(e,t)=>e+Math.floor(Math.random()*(t-e+1)),oO=e=>e[0].toUpperCase()+e.slice(1),sO=()=>new Date(Date.now()-aO(0,365)*24*60*60*1e3).toISOString();function cO(e){let t=e.toLowerCase();return/email/.test(t)?`${iO($D).toLowerCase()}.${iO(eO).toLowerCase()}@example.com`:/phone/.test(t)?`555-${aO(100,999)}-${aO(1e3,9999)}`:/(^|_)(url|link|website)($|_)/.test(t)?`https://example.com/${iO(tO)}`:/name/.test(t)?/(first|given)/.test(t)?iO($D):/(last|family|sur)/.test(t)?iO(eO):`${iO($D)} ${iO(eO)}`:/age/.test(t)?aO(1,90):/year/.test(t)?aO(1970,2026):/(price|cost|amount|total|salary)/.test(t)?Number((Math.random()*500).toFixed(2)):/(count|qty|quantity|weight|height|size|pages|score|rating|number|num_)/.test(t)?aO(0,500):/(^is_|^has_|enabled|active|flag|adorable|verified)/.test(t)?Math.random()<.5:/(date|time|_at$|created|updated)/.test(t)?sO():/city/.test(t)?iO(nO):/country/.test(t)?iO(rO):/(description|notes|comment|bio|summary)/.test(t)?`A ${iO(tO)} ${iO(tO)} with a hint of ${iO(tO)}.`:`${oO(iO(tO))} ${oO(iO(tO))}`}function lO(e){switch(e.type){case`ID`:return crypto.randomUUID();case`Int`:case`Long`:case`BigInt`:{let t=cO(e.attribute);return typeof t==`number`?Math.round(t):aO(0,1e3)}case`Float`:{let t=cO(e.attribute);return typeof t==`number`?t:Number((Math.random()*1e3).toFixed(2))}case`Boolean`:return Math.random()<.5;case`Date`:return sO();case`String`:{let t=cO(e.attribute);return typeof t==`string`?t:String(t)}default:return cO(e.attribute)}}function uO(e,t){return(e??[]).filter(e=>!e.is_primary_key&&e.attribute!==`__createdtime__`&&e.attribute!==`__updatedtime__`&&e.type!==`Bytes`&&e.type!==`Blob`&&!LE(e,t))}function dO(e,t){let n=uO(e);return Array.from({length:t},()=>{let e={};for(let t of n)e[t.attribute]=lO(t);return e})}function fO(e){let t;try{t=JSON.parse(e)}catch{throw Error(`The file is not valid JSON.`)}let n=Array.isArray(t)?t:[t];if(n.length===0)throw Error(`The JSON file contains no records.`);if(n.some(e=>typeof e!=`object`||!e||Array.isArray(e)))throw Error(`The JSON file must contain an object or an array of objects.`);return n}var pO=[{id:`dogs`,name:`Dogs`,description:`The classic Harper demo — dogs and their humans`,table:`dog`,csv:`id,dog_name,owner_name,breed,age,weight_lbs,adorable
695
695
  1,Penny,Kyle,Dachshund,7,12,true
696
696
  2,Harper,Stephen,Great Dane,5,127,true
697
697
  3,Alby,Kaylan,Pit Bull Mix,8,58,true
@@ -789,7 +789,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
789
789
  38,Giant Pacific Octopus,Invertebrate,Carnivore,Ocean,4,false
790
790
  39,Christmas Island Red Crab,Invertebrate,Omnivore,Island forest,30,false
791
791
  40,Chambered Nautilus,Invertebrate,Carnivore,Deep ocean,20,true
792
- `}];async function lO(e){let{database:t,table:n,fileData:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`csv_data_load`,database:t,action:`insert`,table:n,data:r});return a}async function uO({jobId:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`get_job`,id:e});return n?.[0]}var dO=e=>new Promise(t=>setTimeout(t,e));async function fO({jobId:e,instanceClient:t,pollIntervalMs:n=1500,timeoutMs:r=6e5}){let i=Date.now()+r,a=0;for(;;){let r;try{r=await uO({jobId:e,instanceClient:t}),a=0}catch(e){if(a+=1,a>=5)throw e}let o=r?.status?.toUpperCase();if(o===`ERROR`)throw Error(r?.message||`The import job failed.`);if(o===`COMPLETE`&&r)return r;if(Date.now()>=i)throw Error(`Timed out waiting for the import job to finish. Check the table in a few minutes.`);await dO(n)}}function pO(e){let t=e?.response?.data;return typeof t==`string`?t:t?.error||t?.message||e?.message||String(e)}async function mO({database:e,table:t,tableExists:n,replicated:r,source:i,instanceClient:a}){if(!n)try{await a.post(`/`,{operation:`create_table`,database:e,table:t,primary_key:`id`,replicated:r})}catch(e){if(!/already exists/i.test(pO(e)))throw e}switch(i.kind){case`csv-data`:{let{job_id:n}=await lO({database:e,table:t,fileData:i.data,instanceClient:a});return{message:(await fO({jobId:n,instanceClient:a})).message||`CSV data imported successfully`}}case`csv-url`:{let{data:n}=await a.post(`/`,{operation:`csv_url_load`,csv_url:i.url,database:e,table:t,action:`insert`});return{message:(await fO({jobId:n.job_id,instanceClient:a})).message||`CSV data imported successfully`}}case`json-records`:{let n=await LE({databaseName:e,tableName:t,records:i.records,instanceClient:a}),r=n.inserted_hashes?.length??0,o=n.skipped_hashes?.length??0;return{message:o?`Inserted ${r} records (${o} skipped)`:`Inserted ${r} records`}}}}function hO(){return R({mutationFn:mO})}var gO=`__random__`,_O=10485760,vO=S({method:ee([`sample`,`file`,`url`]),database:PD,table:FD,datasetId:M(),rowCount:M(),fileData:M(),fileName:M(),url:M()}).superRefine((e,t)=>{if(e.method===`sample`&&!e.datasetId&&t.addIssue({code:`custom`,path:[`datasetId`],message:`Please choose a sample dataset.`}),e.method===`sample`&&e.datasetId===`__random__`){let n=Number(e.rowCount);(!Number.isInteger(n)||n<1||n>1e3)&&t.addIssue({code:`custom`,path:[`rowCount`],message:`Enter a row count between 1 and 1000.`})}if(e.method===`file`&&!e.fileData&&t.addIssue({code:`custom`,path:[`fileData`],message:`Please choose a CSV or JSON file.`}),e.method===`url`){let n=!1;try{n=/^https?:$/.test(new URL(e.url).protocol)}catch{}n||t.addIssue({code:`custom`,path:[`url`],message:`Please enter a valid http(s) URL to a CSV file.`})}}),yO=[{value:`sample`,title:`Sample Datasets`,description:`Choose from pre-loaded sample datasets to get started quickly`,Icon:Oa},{value:`file`,title:`Import from File`,description:`Upload a CSV or JSON file`,Icon:mi},{value:`url`,title:`Load from URL`,description:`Import a CSV file from a URL the instance can reach`,Icon:Ei}];function bO({isModalOpen:e,setIsModalOpen:t,instanceDatabaseMap:n,databaseName:r,tableName:i,initialMethod:a,onImported:o}){let s=q(),{mutate:c,isPending:l}=hO(),[u,d]=(0,G.useState)(null),f=zp(),p=(0,G.useMemo)(()=>yO.filter(({value:e})=>f.methods[e]),[f]),m=a??(i?`file`:`sample`),h=f.methods[m]?m:p[0]?.value??m,g=Gt({resolver:it(vO),defaultValues:{method:h,database:r||``,table:i||``,datasetId:``,rowCount:`25`,fileData:``,fileName:``,url:``}}),{reset:_}=g;(0,G.useEffect)(()=>{e&&(_({method:h,database:r||``,table:i||``,datasetId:``,rowCount:`25`,fileData:``,fileName:``,url:``}),d(null))},[e,r,i,h,_]);let v=g.watch(`method`),y=g.watch(`datasetId`),b=g.watch(`database`),x=g.watch(`table`),S=cO.find(e=>e.id===y),C=n?.[b||`data`]?.[x],w=!!C,T=!!n&&!!x&&!w,E=aO(C?.attributes,n?.[b||`data`]),D=E.length>0,O=y===gO,k=e=>{let t=e.target.files?.[0];if(!t)return;if(t.size>10485760){let n=(t.size/1048576).toFixed(1),r=_O/1048576;g.setError(`fileData`,{message:`That file is ${n} MB — uploads are limited to ${r} MB. For larger files, host the CSV and use Load from URL.`}),e.target.value=``;return}let n=new FileReader;n.onload=e=>{let n=e.target?.result;typeof n==`string`&&(d(t.name),g.setValue(`fileData`,n,{shouldValidate:!0}),g.setValue(`fileName`,t.name))},n.onerror=()=>{U.error(`Failed to read the selected file.`)},n.readAsText(t)},A=e=>{g.setValue(`datasetId`,e,{shouldValidate:!0});let t=cO.find(t=>t.id===e);t&&g.setValue(`table`,t.table,{shouldValidate:!0})},ee=()=>{t(!1)},te=e=>{let t=e.database||`data`,r=e.table,i;if(e.method===`sample`&&e.datasetId===`__random__`){let a=aO(n?.[t]?.[r]?.attributes,n?.[t]);if(a.length===0){g.setError(`datasetId`,{message:`Random data needs an existing table with columns — pick a table that has some.`});return}i={kind:`json-records`,records:oO(a,Number(e.rowCount))}}else if(e.method===`sample`){let t=cO.find(t=>t.id===e.datasetId);if(!t)return;i={kind:`csv-data`,data:t.csv}}else if(e.method===`file`){if(e.fileName.toLowerCase().endsWith(`.json`))try{i={kind:`json-records`,records:sO(e.fileData)}}catch(e){g.setError(`fileData`,{message:e.message});return}else i={kind:`csv-data`,data:e.fileData}}else i={kind:`csv-url`,url:e.url};if(w&&!f.allowsDestination(t,r)){g.setError(`table`,{message:`This role cannot insert into "${r}".`});return}if(!f.allowsSource(i.kind)){g.setError(`method`,{message:i.kind===`json-records`?`This role cannot insert records. Choose a CSV source instead.`:`This role cannot run CSV loads. Choose a JSON file or random sample data instead.`});return}c({database:t,table:r,tableExists:w,replicated:s.entityType===`cluster`,source:i,...s},{onSuccess:({message:e})=>{U.success(e),ee(),o(t,r)}})};return(0,K.jsx)(Id,{open:e,onOpenChange:e=>{!e&&!l&&ee()},children:(0,K.jsxs)(Ud,{className:`sm:max-w-[550px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Import Data`}),(0,K.jsx)(qd,{children:`Choose how you want to import data into your database.`})]}),(0,K.jsx)(El,{...g,children:(0,K.jsxs)(`form`,{id:`instance-import-data-form`,name:`instance-import-data-form`,onSubmit:g.handleSubmit(te),className:`grid gap-4`,children:[(0,K.jsx)(Y,{control:g.control,name:`method`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Select Import Method`}),(0,K.jsx)(J,{children:(0,K.jsx)(qw,{value:e.value,onValueChange:e.onChange,className:`gap-3`,children:p.map(({value:e,title:t,description:n,Icon:r})=>(0,K.jsxs)(Z,{htmlFor:`import-method-${e}`,className:`flex items-start gap-3 rounded-lg border border-border p-4 cursor-pointer font-normal hover:bg-accent/50 has-[[data-state=checked]]:border-primary`,children:[(0,K.jsx)(Jw,{value:e,id:`import-method-${e}`,className:`mt-1`}),(0,K.jsxs)(`div`,{className:`grid gap-1`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2 font-medium`,children:[(0,K.jsx)(r,{className:`size-4`}),t]}),(0,K.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:n})]})]},e))})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(pS,{}),v===`sample`&&(0,K.jsx)(Y,{control:g.control,name:`datasetId`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Choose a Sample Dataset`}),(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{name:e.name,value:e.value,onValueChange:A,children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Select a dataset...`})}),(0,K.jsxs)(Dg,{children:[f.allowsSource(`csv-data`)&&(0,K.jsx)(wg,{children:cO.map(e=>(0,K.jsx)(kg,{value:e.id,children:e.name},e.id))}),D&&f.allowsSource(`json-records`)&&(0,K.jsxs)(wg,{children:[(0,K.jsx)(Og,{children:`This table`}),(0,K.jsx)(kg,{value:`__random__`,children:`Random Data`})]})]})]})}),S&&(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:S.description}),O&&(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Generates rows for "`,x,`" based on its `,E.length,` `,`column`,E.length===1?``:`s`,` and their data types.`]}),(0,K.jsx)(Q,{})]})}),v===`sample`&&O&&(0,K.jsx)(Y,{control:g.control,name:`rowCount`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Number of Rows`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`number`,min:1,max:1e3,inputMode:`numeric`,autoComplete:`off`})}),(0,K.jsx)(Q,{})]})}),v===`file`&&(0,K.jsx)(Y,{control:g.control,name:`fileData`,render:({field:e})=>(0,K.jsxs)(X,{className:`relative`,children:[(0,K.jsx)(Z,{htmlFor:`import-data-file`,className:`flex flex-col items-center justify-center w-full h-40 border-2 border-border border-dashed rounded-lg cursor-pointer bg-muted dark:bg-grey-700 hover:bg-muted/80 dark:hover:bg-grey-700/80`,children:(0,K.jsx)(J,{children:(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex flex-col items-center justify-center pt-5 pb-6`,children:[(0,K.jsx)(Jr,{className:`text-muted-foreground`,size:40}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:u??(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`font-semibold`,children:`Click to upload`}),` `,`or drag and drop a CSV or JSON file`]})})]}),(0,K.jsx)($,{id:`import-data-file`,type:`file`,className:`opacity-0 w-full h-full absolute left-0 top-0 cursor-pointer`,accept:`.csv,.json,text/csv,application/json`,name:e.name,ref:e.ref,onBlur:e.onBlur,disabled:e.disabled,onChange:k})]})})}),(0,K.jsx)(Q,{})]})}),v===`url`&&(0,K.jsx)(Y,{control:g.control,name:`url`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`CSV URL`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,inputMode:`url`,placeholder:`https://example.com/data.csv`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`The URL is fetched by the Harper instance, so it must be reachable from there.`}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,K.jsx)(Y,{control:g.control,name:`database`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Database`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,placeholder:`data`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:g.control,name:`table`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Table`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})})]}),T&&(0,K.jsxs)(_m,{children:[(0,K.jsx)(Ii,{}),(0,K.jsx)(vm,{children:`New table`}),(0,K.jsxs)(ym,{children:[`The table "`,x,`" doesn't exist yet — it will be created with primary key "id" before the data is imported.`]})]}),(0,K.jsxs)(Gd,{children:[(0,K.jsx)(H,{type:`button`,variant:`ghost`,onClick:ee,disabled:l,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:l,children:[l?(0,K.jsx)(Xi,{className:`animate-spin`}):(0,K.jsx)(Jr,{}),l?`Importing...`:`Import Data`]})]})]})})]})})}function xO({instanceDatabaseMap:e}){let t=B({strict:!1}),n=L(),r=we(),i=Me(),a=q(),o=(0,G.useCallback)((e,r)=>{n({to:TE({...t,databaseName:e,tableName:r})})},[n,t]),{value:s}=BD(`ShowCreateTable`,!1),{value:c}=BD(`ShowAddTableRecords`,!1),{value:l}=BD(`ShowImportData`,!1),u=c?e?.[c.databaseName]?.[c.tableName]:void 0;(0,G.useEffect)(()=>{c&&!u&&(U.error(`Couldn't open "${c.tableName}" — it may have just been removed. Try refreshing.`),VD(`ShowAddTableRecords`,!1))},[c,u]);let d=(0,G.useCallback)(async(e,t)=>{await i.invalidateQueries({queryKey:[a.entityId,`describe_all`],refetchType:`all`}),o(e,t),await r.invalidate()},[i,a.entityId,o,r]),f=(0,G.useCallback)(({databaseName:e,tableName:n})=>{t.databaseName===e&&t.tableName===n&&o(e,void 0)},[t.databaseName,t.tableName,o]),p=(0,G.useCallback)(({databaseName:e})=>{t.databaseName===e&&o(void 0,void 0)},[t.databaseName,o]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(LD,{isModalOpen:!!s,setIsModalOpen:e=>VD(`ShowCreateTable`,e?s||{}:!1),databaseName:s?s.databaseName:void 0,onCreated:o},s?`create-${s.databaseName??``}`:`create-closed`),c&&u&&(0,K.jsx)(kD,{instanceTable:u,databaseTables:e?.[c.databaseName],isModalOpen:!0,setIsModalOpen:e=>{e||VD(`ShowAddTableRecords`,!1)},refreshTable:()=>void i.invalidateQueries({queryKey:[a.entityId,c.databaseName,c.tableName]})},`add-${c.databaseName}/${c.tableName}`),(0,K.jsx)(bO,{isModalOpen:!!l,setIsModalOpen:e=>VD(`ShowImportData`,e?l||{}:!1),instanceDatabaseMap:e,databaseName:l?l.databaseName:void 0,tableName:l?l.tableName:void 0,initialMethod:l?l.method:void 0,onImported:d},l?`import-${l.databaseName??``}/${l.tableName??``}/${l.method??``}`:`import-closed`),(0,K.jsx)(qD,{onDeleted:f}),(0,K.jsx)(WD,{onDeleted:p})]})}function SO(e){e.stopPropagation()}var CO=3,wO=`text-blue dark:text-blue-300 border-blue/40 dark:border-blue-300/40 [a&]:hover:bg-blue/10 [a&]:hover:underline`;function TO(e,t){return(Array.isArray(e)?e:e==null?[]:[e]).map(e=>typeof e==`object`&&e?e[t.relatedPrimaryKey]:e).filter(e=>e!=null)}function EO({value:e,record:t,primaryKey:n,info:r}){let i=B({strict:!1}),a=n?t?.[n]:void 0,o=TO(e,r);!o.length&&r.foreignKeyAttribute&&t&&(o=TO(t[r.foreignKeyAttribute],r));let s=TE({...i,tableName:r.relatedTableName}),c=r.reverseForeignKey&&a!=null?{filters:{[r.reverseForeignKey]:String(a)}}:void 0;if(!o.length)return c?(0,K.jsx)(Fs,{variant:`outline`,className:wO,asChild:!0,children:(0,K.jsxs)(V,{to:s,search:c,onClick:SO,title:`${r.relatedTableName} where ${r.reverseForeignKey} = ${String(a)}`,children:[r.relatedTableName,` →`]})}):(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let l=o.length-CO;return(0,K.jsxs)(`span`,{className:`inline-flex gap-1 items-center`,children:[o.slice(0,CO).map((e,t)=>(0,K.jsx)(Fs,{variant:`outline`,className:wO,asChild:!0,children:(0,K.jsx)(V,{to:s,search:{filters:{[r.relatedPrimaryKey]:String(e)}},onClick:SO,title:`${r.relatedTableName} where ${r.relatedPrimaryKey} = ${String(e)}`,children:String(e)})},t)),l>0&&(c?(0,K.jsxs)(V,{to:s,search:c,onClick:SO,className:`text-blue dark:text-blue-300 hover:underline text-xs whitespace-nowrap`,title:`${r.relatedTableName} where ${r.reverseForeignKey} = ${String(a)}`,children:[`+`,l,` more`]}):(0,K.jsxs)(`span`,{className:`text-muted-foreground text-xs whitespace-nowrap`,children:[`+`,l,` more`]}))]})}function DO(e,t={}){if(!e)return{dataTableColumns:[],primaryKey:``};let n=e.primary_key??e.hash_attribute??``,{attributes:r}=e,i=[],a=[],o=[],s=[],c=e=>t=>(0,G.createElement)(EO,{value:t.getValue(),record:t.row.original,primaryKey:n,info:e});for(let e=r.length-1;e>=0;e--){let{attribute:n,type:l,is_primary_key:u,indexed:d}=r[e],f=t[n],p={header:n,accessorKey:n,enableSorting:!!(u||d),enableColumnFilter:!!(u||d||f),size:kO(l),cell:f?c(f):OO,meta:f?{relationshipInfo:f}:void 0};u?i.push(p):n===`__createdtime__`||n===`__updatedtime__`?s.push(p):p.enableSorting?a.push(p):o.push(p)}let l=new Set(r.map(e=>e.attribute));for(let[e,n]of Object.entries(t))l.has(e)||o.push({header:e,accessorKey:e,enableSorting:!1,enableColumnFilter:!0,size:kO(`String`),cell:c(n),meta:{relationshipInfo:n}});return{dataTableColumns:[...i,...a,...o,...s],primaryKey:n}}function OO(e){let t=e.getValue();return t==null?null:typeof t==`object`?JSON.stringify(t):String(t)}function kO(e){switch(e){case`Id`:case`ID`:return 220;case`Boolean`:return 90;case`Int`:case`Long`:case`Float`:case`BigInt`:return 120;case`Date`:return 190;default:return 200}}var AO=[`1`,`bet`,`k`,`ok`,`si`,`tru`,`true`,`yes`,`yup`];function jO(e){let t=e.toLowerCase().trim();return AO.includes(t)}function MO(e){return!isNaN(e)&&!isNaN(parseFloat(e))}function NO(e){if(e.startsWith(`0.`)&&MO(e))return!0;let t=e.toUpperCase().includes(`E`);return!(e!==`0`&&e.startsWith(`0`))&&!t&&MO(e)}var PO={true:!0,TRUE:!0,false:!1,FALSE:!1,undefined:null,null:null,NULL:null,NaN:NaN},FO=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/;function IO(e){return e==null||e===``||typeof e!=`string`?e:PO[e]===void 0?NO(e)?Number(e):FO.test(e)?new Date(e):e:PO[e]}function LO(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,conditions:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l,getAttributes:u}=e;return z({enabled:t&&!!a,queryKey:[n,r,i,`search_by_conditions`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l,u??null],staleTime:6e4,gcTime:5e3,retry:!1,queryFn:()=>RO(e)})}function RO({instanceClient:e,databaseName:t,tableName:n,conditions:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,getAttributes:c,headers:l}){return e.post(`/`,{operation:`search_by_conditions`,get_attributes:c??[`*`],database:t,table:n,conditions:r,sort:i.attribute.length?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:l})}function zO(e,t,n,r){return t.split(/ & /).map(t=>BO(e,t,n,r))}function BO(e,t,n,r){if(t.startsWith(e)&&(t=t.substring(e.length)),r)return VO(e,t,r);let{comparator:i,value:a}=WO(t);switch(n?.type){case`ID`:case`String`:return{search_attribute:e,search_type:i,search_value:a};case`Int`:case`BigInt`:case`Long`:case`Float`:{let t=n.type.includes(`Int`)?parseInt(a,10):parseFloat(a);if(isNaN(t))throw Error(`${a} does not appear to be a valid number.`);return{search_attribute:e,search_type:i,search_value:t}}case`Date`:return{search_attribute:e,search_type:i,search_value:new Date(a).toISOString()};case`Boolean`:return{search_attribute:e,search_type:i,search_value:jO(a)};case`Blob`:case`Bytes`:return{search_attribute:e,search_type:i,search_value:a};default:return{search_attribute:e,search_type:i,search_value:IO(a)}}}function VO(e,t,n){let r=t.match(/^\s*\.([^.\s]+)\s*(.*)$/);if(!r)throw Error(`Filter ${e} on a property of ${n.relatedTableName}, e.g. ".${n.relatedPrimaryKey} value".`);let[,i,a]=r,o=BO(i,a,n.relatedAttributes.find(e=>e.attribute===i));return i===n.relatedPrimaryKey&&n.foreignKeyAttribute?{...o,search_attribute:n.foreignKeyAttribute}:{...o,search_attribute:[e,i]}}var HO={"=== ":`equals`,"== ":`eq`,"equals ":`equals`,"equal ":`equals`,"eq ":`eq`,"!== ":`not_equal`,"!= ":`ne`,"notequals ":`not_equal`,"notequal ":`not_equal`,"ne ":`ne`},UO={">":`greater_than`,g:`greater_than`,gt:`greater_than`,"=gt":`greater_than`,greater:`greater_than`,greaterthan:`greater_than`,">=":`greater_than_equal`,ge:`greater_than_equal`,"=ge":`greater_than_equal`,gte:`greater_than_equal`,greaterorequal:`greater_than_equal`,greaterthanequal:`greater_than_equal`,greaterthanorequal:`greater_than_equal`,"<":`less_than`,l:`less_than`,lt:`less_than`,"=lt":`less_than`,less:`less_than`,lessthan:`less_than`,"<=":`less_than_equal`,lte:`less_than_equal`,le:`less_than_equal`,"=le":`less_than_equal`,lessorequal:`less_than_equal`,lessthanequal:`less_than_equal`,lessthanorequal:`less_than_equal`};function WO(e){let t=e.toLowerCase(),n=t.match(/^ *([>=<]+[a-z]*[_ ]*|[a-z]+[>=<]+[_ ]*|[a-z]+[_ ]+)([\d._:tz-]+) *$/);if(n){let e=n[1].replace(/[_ ]+/g,``).replace(/^([a-z]+)=$/g,`$1`),t=n[2],r=UO[e];if(r)return{comparator:r,value:t}}for(let n in HO)if(t.startsWith(n))return{comparator:HO[n],value:e.slice(n.length)};return t.endsWith(`*`)?{comparator:`starts_with`,value:e.slice(0,-1)}:{comparator:`equals`,value:e}}function GO(){let e=q(),[t,n]=(0,G.useState)(!1);return{exportCsv:(0,G.useCallback)(async({databaseName:t,tableName:r,primaryKey:i,sort:a,conditions:o})=>{if(!i){U.error(`Cannot export "${r}": no primary key found.`);return}let s=U.loading(`Loading CSV...`);n(!0);try{let n={...e,databaseName:t,tableName:r,sort:a??{attribute:i,descending:!1},pageIndex:0,pageSize:1e6,onlyIfCached:!1,headers:{Accept:`text/csv`}},c=await(o?.length?RO({...n,conditions:o}):Db({...n,searchAttribute:i}));U.loading(`Preparing CSV...`,{id:s});let l=c.data,u=new Blob([l],{type:`text/csv`}),d=URL.createObjectURL(u),f=document.createElement(`a`);f.href=d,f.setAttribute(`download`,`${t}.${r}.${new Date().toISOString()}.csv`),f.click(),setTimeout(()=>URL.revokeObjectURL(d),1e3),U.success(`CSV Exported!`,{id:s})}catch(e){U.error(e instanceof Error?e.message:`Failed to export CSV`,{id:s})}finally{n(!1)}},[e]),isExporting:t}}function KO({databaseName:e,tableName:t,instanceDatabaseMap:n}){let{clusterId:r,instanceId:i}=B({strict:!1}),a=Pp(),o=Fp(i??r,e,t,`insert`),s=Lp(i??r,e,t),{exportCsv:c}=GO(),l=Object.keys(n?.[e]||{}).length<=1,u=n?.[e]?.[t],d=!u||!!(u.primary_key??u.hash_attribute);return(0,K.jsxs)(K.Fragment,{children:[o&&d&&(0,K.jsxs)(Qd,{onSelect:()=>VD(`ShowAddTableRecords`,{databaseName:e,tableName:t}),children:[(0,K.jsx)(Ia,{}),`Add New Record(s)`]}),s&&d&&(0,K.jsxs)(Qd,{onSelect:()=>VD(`ShowImportData`,{databaseName:e,tableName:t}),children:[(0,K.jsx)(Jr,{}),`Import Data`]}),(0,K.jsxs)(Qd,{onSelect:()=>{let{primaryKey:n}=DO(u);c({databaseName:e,tableName:t,primaryKey:n,conditions:null})},disabled:!d,children:[(0,K.jsx)(Kr,{}),`Export CSV`]}),a&&!l&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(ef,{}),(0,K.jsxs)(Qd,{variant:`destructive`,onSelect:()=>VD(`ShowDeleteTable`,{databaseName:e,tableName:t}),children:[(0,K.jsx)(Eo,{}),`Drop Table`]})]})]})}function qO({databaseName:e,instanceDatabaseMap:t,children:n}){let[r,i]=(0,G.useState)(void 0),[a,o]=(0,G.useState)(``),s=(0,G.useCallback)(e=>{let t=e.target.closest(`[data-table-name]`)?.getAttribute(`data-table-name`);if(!t){i(void 0),e.preventDefault();return}i(t),o(`${e.clientX},${e.clientY}`)},[]);return(0,K.jsxs)(Yd,{modal:!1,children:[(0,K.jsx)(Xd,{asChild:!0,children:(0,K.jsx)(`div`,{onContextMenu:s,children:n})}),r&&(0,K.jsx)(Zd,{className:`min-w-44`,onCloseAutoFocus:e=>e.preventDefault(),children:(0,K.jsx)(KO,{databaseName:e,tableName:r,instanceDatabaseMap:t})},a)]})}async function JO({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t,exact_count:!1});return r}function YO(e){return z({queryKey:[e.entityId,e.databaseName,e.tableName,`describe_table`],queryFn:()=>JO(e),staleTime:6e4,gcTime:5e3,enabled:!!e.databaseName&&!!e.tableName,retry:!1})}function XO(e,t,n){if(e==null||!Number.isFinite(e))return`—`;let r=ZO(e,t);return n?`${r}${n}`:r}function ZO(e,t){switch(t){case`percent`:return`${(e*100).toFixed(1)}%`;case`ms`:return`${e.toFixed(1)} ms`;case`count`:return`${e.toFixed(0)}`;case`count-si`:{let t=Math.abs(e);if(t<1e3)return`${e}`;let n=e<0?`-`:``,r=e=>{if(e>=10)return`${Math.round(e)}`;let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t};return t<1e6?`${n}${r(t/1e3)}k`:t<1e9?`${n}${r(t/1e6)}M`:`${n}${r(t/1e9)}B`}case`cores`:return`${e.toFixed(2)} cores`;case`bytes-si`:case`bytes-iec`:{let n=t===`bytes-iec`?1024:1e3,r=t===`bytes-iec`?[`B`,`KiB`,`MiB`,`GiB`,`TiB`]:[`B`,`KB`,`MB`,`GB`,`TB`],i=e,a=0;for(;Math.abs(i)>=n&&a<r.length-1;)i/=n,a++;let o=+(i!==0&&Math.abs(i)<10);return`${i.toFixed(o)} ${r[a]}`}default:return`${e}`}}var QO=e=>XO(e,`bytes-si`);function $O({label:e,value:t}){return(0,K.jsxs)(`div`,{className:`rounded-md border border-border dark:border-grey-700 p-4`,children:[(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e}),(0,K.jsx)(`div`,{className:`text-2xl font-medium`,children:t})]})}function ek({instanceDatabaseMap:e,databaseName:t}){let n=B({strict:!1}),r=L(),i=q(),a=Pp(),o=Rp(),s=e?.[t]??{},c=Object.keys(s).sort(),l=Ae({queries:c.map(e=>YO({...i,databaseName:t,tableName:e}))}),u={};c.forEach((e,t)=>{let n=l[t]?.data;n&&(u[e]={recordCount:n.record_count,estimated:!!n.estimated_record_range})});let d=l.every(e=>!e.isPending),f=c.some(e=>u[e]?.estimated),p=c.length?s[c[0]]:void 0,m=p?.db_size??0,h=p?.db_audit_size??0,g=d?c.reduce((e,t)=>e+(u[t]?.recordCount??0),0):void 0,_=(0,G.useCallback)(e=>{r({to:TE({...n,databaseName:t,tableName:e})})},[r,n,t]);return(0,K.jsxs)(`div`,{className:`pt-15 pb-4 px-4`,children:[(0,K.jsxs)(`div`,{className:`flex flex-col md:flex-row items-start md:items-center justify-between gap-3 pb-6`,children:[(0,K.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,K.jsx)(`h1`,{className:`text-3xl truncate`,children:t})}),a&&(0,K.jsxs)(`div`,{className:`flex space-x-2 shrink-0`,children:[(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:()=>VD(`ShowCreateTable`,{databaseName:t}),children:[(0,K.jsx)(Ia,{}),(0,K.jsx)(`span`,{children:`Create a Table`})]}),o&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:()=>VD(`ShowImportData`,{databaseName:t}),children:[(0,K.jsx)(Jr,{}),(0,K.jsx)(`span`,{children:`Import Data`})]}),(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{variant:`ghost`,size:`icon`,children:(0,K.jsx)(oi,{"aria-label":`Database options`})})}),(0,K.jsx)(Zo,{side:`bottom`,align:`end`,children:(0,K.jsxs)(Qo,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>VD(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,K.jsx)(Eo,{}),`Drop Database`]})})]})]})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3 pb-6`,children:[(0,K.jsx)($O,{label:`Tables`,value:c.length.toLocaleString()}),(0,K.jsx)($O,{label:`Records`,value:g===void 0?`…`:`${f?`~`:``}${g.toLocaleString()}`}),(0,K.jsx)($O,{label:`Size`,value:QO(m)}),(0,K.jsx)($O,{label:`Audit Size`,value:QO(h)})]}),c.length===0?(0,K.jsxs)(`div`,{className:`rounded-md border border-border dark:border-grey-700 p-8 text-center text-muted-foreground`,children:[(0,K.jsx)(`p`,{className:`pb-2`,children:`This database has no tables yet.`}),a&&(0,K.jsx)(`p`,{children:`Use “Create a Table” above, or right-click the database in the sidebar.`})]}):(0,K.jsx)(qO,{databaseName:t,instanceDatabaseMap:e,children:(0,K.jsx)(`div`,{className:`rounded-md border border-border dark:border-grey-700 overflow-x-auto`,children:(0,K.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,K.jsx)(`thead`,{children:(0,K.jsxs)(`tr`,{className:`text-left text-muted-foreground border-b border-border dark:border-grey-700`,children:[(0,K.jsx)(`th`,{className:`p-3 font-medium`,children:`Table`}),(0,K.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Records`}),(0,K.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Size`}),(0,K.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Columns`}),(0,K.jsx)(`th`,{className:`p-3 font-medium`,children:`Primary Key`}),(0,K.jsx)(`th`,{className:`p-3 font-medium`,children:`Last Updated`})]})}),(0,K.jsx)(`tbody`,{children:c.map(e=>{let t=s[e],n=u[e],r=t.primary_key??t.hash_attribute??`—`,i=n?.recordCount===void 0?`…`:`${n.estimated?`~`:``}${n.recordCount.toLocaleString()}`;return(0,K.jsxs)(`tr`,{"data-table-name":e,onClick:()=>_(e),className:`border-b border-border dark:border-grey-700 last:border-0 cursor-pointer hover:bg-accent dark:hover:bg-grey-700/80`,children:[(0,K.jsx)(`td`,{className:`p-3 font-medium`,children:e}),(0,K.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:i}),(0,K.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:QO(t.table_size??0)}),(0,K.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:t.attributes.length.toLocaleString()}),(0,K.jsx)(`td`,{className:`p-3`,children:r}),(0,K.jsx)(`td`,{className:`p-3 text-muted-foreground`,children:t.last_updated_record?new Date(t.last_updated_record).toLocaleString():`—`})]},e)})})]})})})]})}function tk({item:e,context:t}){return e.isFolder?(0,K.jsx)(`div`,{className:P(`rct-tree-item-arrow`,`rct-tree-item-arrow-isFolder`,t.isExpanded&&`rct-tree-item-arrow-expanded`),"aria-hidden":!0,tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:e=>{e.stopPropagation(),t.toggleExpandedState()},children:t.isExpanded?(0,K.jsx)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:(0,K.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})}):(0,K.jsx)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:(0,K.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})})}):(0,K.jsx)(`div`,{className:`rct-tree-item-arrow`,"aria-hidden":!0})}var nk;(function(e){e.DoubleClickItemToExpand=`double-click-item-to-expand`,e.ClickItemToExpand=`click-item-to-expand`,e.ClickArrowToExpand=`click-arrow-to-expand`})(nk||={});var rk=function(){return rk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},rk.apply(this,arguments)},ik=function(e,t){return{mode:e.mode,createInteractiveElementProps:function(n,r,i,a){return rk(rk({},t.createInteractiveElementProps(n,r,i,a)),e.createInteractiveElementProps(n,r,i,a))}}},ak=function(e){return e.ctrlKey||navigator.platform.toUpperCase().indexOf(`MAC`)>=0&&e.metaKey},ok=function(){function e(e){this.mode=nk.DoubleClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(e){var t=e.detail===0;n.focusItem(),e.shiftKey&&!t?n.selectUpTo(!ak(e)):ak(e)&&!t?r.isSelected?n.unselectItem():n.addToSelectedItems():n.selectItem()},onDoubleClick:function(){n.focusItem(),n.selectItem(),e.isFolder&&n.toggleExpandedState(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction()},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),sk=function(){function e(e){this.mode=nk.ClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(t){var a=t.detail===0;n.focusItem(),t.shiftKey&&!a?n.selectUpTo(!ak(t)):ak(t)&&!a?r.isSelected?n.unselectItem():n.addToSelectedItems():(e.isFolder&&n.toggleExpandedState(),n.selectItem(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction())},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),ck=function(){function e(e){this.mode=nk.ClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(t){var a=t.detail===0;n.focusItem(),t.shiftKey&&!a?n.selectUpTo(!ak(t)):ak(t)&&!a?r.isSelected?n.unselectItem():n.addToSelectedItems():(n.selectItem(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction())},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),lk=function(e,t){switch(e){case nk.DoubleClickItemToExpand:return new ok(t);case nk.ClickItemToExpand:return new sk(t);case nk.ClickArrowToExpand:return new ck(t);default:throw Error(`Unknown interaction mode ${e}`)}},uk=G.createContext(null),dk=function(){return G.useContext(uk)},fk=function(e){var t=e.children,n=Qk(),r=n.defaultInteractionMode,i=(0,G.useMemo)(function(){return r&&typeof r!=`string`?r.extends?ik(r,lk(r.extends,n)):r:lk(r??nk.ClickItemToExpand,n)},[]);return G.createElement(uk.Provider,{value:i},t)},pk=function(){var e=Qk();return(0,G.useCallback)(function(t,n){if(t.targetType===`between-items`){if(!e.canReorderItems)return!1}else if(t.targetType===`root`){if(!e.canDropOnFolder)return!1}else{var r=e.items[t.targetItem];if(!r||!e.canDropOnFolder&&r.isFolder||!e.canDropOnNonFolder&&!r.isFolder||n.some(function(e){return e.index===t.targetItem}))return!1}return!(e.canDropAt&&(!n||!e.canDropAt(n,t)))},[e])},mk=function(){var e=Qk();return(0,G.useCallback)(function(t,n){for(var r=e.linearItems[n],i=r[t].depth,a=t;r[a]&&r[a].depth!==i-1;--a);var o=r[a];return o||(o={item:e.trees[n].rootItem,depth:0},a=0),{parent:o,parentLinearIndex:a}},[e.linearItems,e.trees])},hk=function(){var e=Qk(),t=mk(),n=pk(),r=(0,G.useCallback)(function(e,n,i){var a=t(n,e),o=a.parent,s=a.parentLinearIndex;return i.some(function(e){return e.index===o.item})?!0:o.depth!==0&&r(e,s,i)},[t]);return(0,G.useCallback)(function(i,a){for(var o=e.linearItems[i],s=[],c=-1,l=0;l<o.length;l++){var u=o[l],d=u.item,f=u.depth;if(!(c!==-1&&f>c)){c=-1;var p=t(l,i).parent,m=e.items[p.item].children.indexOf(d);if(r(i,l,a)){c=f+1;continue}var h={targetType:`item`,parentItem:p.item,targetItem:d,linearIndex:l,depth:f,treeId:i},g={targetType:`between-items`,parentItem:p.item,linePosition:`top`,childIndex:m,depth:f,treeId:i,linearIndex:l},_={targetType:`between-items`,parentItem:p.item,linePosition:`bottom`,linearIndex:l+1,childIndex:m+1,depth:f,treeId:i},v=o[l-1]?.depth??-1,y=o[l+1]?.depth??-1,b=f===v,x=f===y-1;!b&&n(g,a)&&s.push(g),n(h,a)&&s.push(h),!x&&n(_,a)&&s.push(_)}}return s},[n,e.items,e.linearItems,t,r])},gk=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},_k=function(e,t,n){var r=(0,G.useRef)();(0,G.useEffect)(function(){r.current?r.current.some(function(e,t){return e!==n[t]})&&(r.current=gk([],n,!0),e()):(r.current=gk([],n,!0),e())},gk(gk([],t,!0),n,!0))},vk=function(){return vk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},vk.apply(this,arguments)},yk=function(e,t){return e.map(function(e){return[e,t(e)]}).reduce(function(e,t){var n,r=t[0],i=t[1];return vk(vk({},e),(n={},n[r]=i,n))},{})},bk=function(){return typeof document<`u`?document:void 0};function xk(e){e===void 0&&(e=!1);var t=(0,G.useRef)([]);return(0,G.useEffect)(function(){if(e)return function(){};var n=t.current;return function(){return n.forEach(function(e){return cancelAnimationFrame(e)})}},[e,t]),(0,G.useCallback)(function(e){var n=requestAnimationFrame(function(){t.current.splice(t.current.indexOf(n),1),e()});t.current.push(n)},[t])}var Sk=function(e){var t=(0,G.useRef)(e);return t.current=e,t},Ck=function(e){var t=Sk(e);return(0,G.useCallback)((function(){var e=[...arguments];return t.current.apply(t,e)}),[t])},wk=function(){var e=Qk();return Ck(function(t,n){return n.map(function(n){return[n,e.linearItems[t].findIndex(function(e){return e.item===n.index})]}).sort(function(e,t){e[0];var n=e[1];return t[0],n-t[1]}).map(function(e){return e[0]})})},Tk=function(e){var t=bk()?.querySelector(`[data-rct-tree="${e}"] [data-rct-item-container="true"]`);if(t){var n=getComputedStyle(t);return t.offsetHeight+Math.max(parseFloat(n.marginTop),parseFloat(n.marginBottom))}return 5},Ek=function(e,t){return e.clientX<=t.left||e.clientX>=t.right||e.clientY<=t.top||e.clientY>=t.bottom},Dk=function(){function e(e,t,n,r,i,a){this.env=e,this.e=t,this.treeId=n,this.linearIndex=r.linearIndex,this.offset=r.offset,this.indentation=r.indentation,this.targetItem=this.env.linearItems[this.treeId][this.linearIndex],this.getParentOfLinearItem=a,this.draggingItems=i}return e.prototype.getEmptyTreeDragPosition=function(){return{targetType:`root`,treeId:this.treeId,depth:0,linearIndex:0,targetItem:this.env.trees[this.treeId].rootItem}},e.prototype.maybeRedirectToParent=function(){if(!this.env.canReorderItems&&!this.env.canDropOnNonFolder&&!this.env.items[this.targetItem.item].isFolder){var e=this.getParentOfLinearItem(this.linearIndex,this.treeId),t=e.parentLinearIndex,n=e.parent;this.targetItem=n,this.linearIndex=t}},e.prototype.maybeReparentUpwards=function(){if(this.indentation!==void 0){var e=this.env.linearItems[this.treeId],t=e[this.linearIndex].depth,n=t-(e[this.linearIndex+1]?.depth??0);if(this.offset===`bottom`&&n>0){for(var r=Math.max(t-n,this.indentation),i={parentLinearIndex:this.linearIndex,parent:this.targetItem},a,o=t;o>=r;--o)a=i,i=this.getParentOfLinearItem(i.parentLinearIndex,this.treeId);if(this.indentation!==e[this.linearIndex].depth&&a){var s=this.env.items[i.parent.item].children.indexOf(a.parent.item)+1;if(!(this.draggingItems&&this.isDescendant(this.treeId,i.parentLinearIndex+1,this.draggingItems)))return{targetType:`between-items`,treeId:this.treeId,parentItem:i.parent.item,depth:r,linearIndex:this.linearIndex+1,childIndex:s,linePosition:`bottom`}}}}},e.prototype.maybeRedirectInsideOpenFolder=function(){var e=this.env.linearItems[this.treeId][this.linearIndex+1];!this.env.canDropBelowOpenFolders&&e&&this.targetItem.depth===e.depth-1&&this.offset===`bottom`&&(this.targetItem=e,this.linearIndex+=1,this.offset=`top`)},e.prototype.maybeMapToBottomOffset=function(){var e=this.env.linearItems[this.treeId][this.linearIndex-1];if(e&&e?.depth!==void 0){var t=e.depth-this.targetItem.depth;this.offset===`top`&&(t===0||t>0&&this.indentation!==void 0)&&(this.offset=`bottom`,--this.linearIndex,this.targetItem=this.env.linearItems[this.treeId][this.linearIndex])}},e.prototype.canDropAtCurrentTarget=function(){var e=this,t=this.env.items[this.targetItem.item];return!(!this.offset&&!this.env.canDropOnNonFolder&&!t.isFolder||!this.offset&&!this.env.canDropOnFolder&&t.isFolder||this.offset&&!this.env.canReorderItems||this.draggingItems?.some(function(t){return t.index===e.targetItem.item}))},e.prototype.getDraggingPosition=function(){if(this.env.linearItems[this.treeId].length===0)return this.getEmptyTreeDragPosition();if(!(!this.draggingItems||this.linearIndex<0||this.linearIndex>=this.env.linearItems[this.treeId].length)){this.maybeRedirectToParent(),this.maybeRedirectInsideOpenFolder(),this.maybeMapToBottomOffset();var e=this.maybeReparentUpwards();if(e)return e;if(this.areDraggingItemsDescendantOfTarget()||!this.canDropAtCurrentTarget())return`invalid`;var t=this.getParentOfLinearItem(this.linearIndex,this.treeId).parent,n=this.env.items[t.item].children.indexOf(this.targetItem.item)+(this.offset===`top`?0:1);return this.offset?{targetType:`between-items`,treeId:this.treeId,parentItem:t.item,depth:this.targetItem.depth,linearIndex:this.linearIndex+(this.offset===`top`?0:1),childIndex:n,linePosition:this.offset}:{targetType:`item`,treeId:this.treeId,parentItem:t.item,targetItem:this.targetItem.item,depth:this.targetItem.depth,linearIndex:this.linearIndex}}},e.prototype.isDescendant=function(e,t,n){var r=this.getParentOfLinearItem(t,e),i=r.parentLinearIndex,a=r.parent;return n.some(function(e){return e.index===a.item})?!0:a.depth!==0&&this.isDescendant(e,i,n)},e.prototype.areDraggingItemsDescendantOfTarget=function(){return this.draggingItems&&this.isDescendant(this.treeId,this.linearIndex,this.draggingItems)},e}(),Ok=function(){var e=(0,G.useRef)(`initial`),t=(0,G.useState)(void 0),n=t[0],r=t[1],i=(0,G.useRef)(0),a=Qk(),o=mk(),s=Ck(function(t,n,r){if(!r)return!1;var i=r.offset,a=`${n}__${r.linearIndex}__${i??``}__${r.indentation}`;return a!==e.current&&(e.current=a,!0)}),c=Ck(function(e,t,n){if(n.current){var r=n.current.getBoundingClientRect();if(!Ek(e,r)){var o=(e.clientY-r.top)/i.current,s=a.linearItems[t],c=Math.min(Math.max(0,Math.floor(o)),s.length-1);if(s.length===0)return{linearIndex:0,offset:`bottom`,indentation:0};var l=s[c],u=a.items[l.item],d=a.renderDepthOffset?Math.max(Math.floor((e.clientX-r.left)/a.renderDepthOffset),0):void 0,f,p=a.canReorderItems?u?.isFolder&&a.canDropOnFolder||a.canDropOnNonFolder?.2:.5:0;return o-.5>=s.length-1?f=`bottom`:o%1<p?f=`top`:o%1>1-p&&(f=`bottom`),{linearIndex:c,offset:f,indentation:d}}}}),l=Ck(function(e,t,r){var i=c(e,t,r);if(s(e,t,i))return!n||!a.canDragAndDrop||!i||e.clientX<0||e.clientY<0?`invalid`:new Dk(a,e,t,i,n,o).getDraggingPosition()});return{initiateDraggingPosition:Ck(function(t,n){r(n),e.current=`initial`,i.current=Tk(t)}),resetDraggingPosition:Ck(function(){r(void 0),e.current=`initial`,i.current=0}),draggingItems:n,getDraggingPosition:l,itemHeight:i}},kk=G.createContext(null),Ak=function(){return G.useContext(kk)},jk=function(e){var t=e.children,n=Qk(),r=(0,G.useState)(!1),i=r[0],a=r[1],o=(0,G.useState)({}),s=o[0],c=o[1],l=(0,G.useState)(0),u=l[0],d=l[1],f=(0,G.useState)(),p=f[0],m=f[1],h=hk(),g=xk(),_=wk(),v=Ok(),y=v.initiateDraggingPosition,b=v.resetDraggingPosition,x=v.draggingItems,S=v.getDraggingPosition,C=v.itemHeight,w=(0,G.useCallback)(function(e,t){if(n.activeTreeId&&n.viewState[n.activeTreeId]?.focusedItem&&n.linearItems&&t){var r=n.viewState[n.activeTreeId].focusedItem,i=h(n.activeTreeId,t),a=i.findIndex(function(e){return e.targetType===`item`?e.targetItem===r:e.targetType===`between-items`&&n.items[e.parentItem].children[e.childIndex]===r});d(a?Math.min(a+1,i.length-1):0)}else d(0)},[n.activeTreeId,n.items,n.linearItems,n.viewState,h]),T=Ck(function(){a(!1),c({}),d(0),m(void 0),b()});_k(function(){n.activeTreeId&&n.linearItems[n.activeTreeId]&&s[n.activeTreeId]&&w(s[n.activeTreeId],x)},[x,n.activeTreeId,n.linearItems,w,s],[n.activeTreeId]),_k(function(){i&&n.activeTreeId&&m(s[n.activeTreeId][u])},[u,n.activeTreeId,i,s],[u,n.activeTreeId]);var E=pk(),D=function(e){var t;(!x||E(e,x))&&(m(e),n.setActiveTree(e.treeId),x&&n.activeTreeId!==e.treeId&&((t=n.onSelectItems)==null||t.call(n,x.map(function(e){return e.index}),e.treeId)))},O=Ck(function(e,t,n){if(x){var r=S(e,t,n);if(r){if(r===`invalid`){m(void 0);return}D(r)}}}),k=Ck(function(e,t){t.current&&Ek(e,t.current.getBoundingClientRect())&&m(void 0)}),A=Ck(function(){x&&p&&n.onDrop&&(n.onDrop(x,p),g(function(){var e;(e=n.onFocusItem)==null||e.call(n,x[0],p.treeId),T()}))}),ee=(0,G.useCallback)(function(e,t){var r=yk(n.treeIds,function(t){return h(t,e)});y(t,e),c(r),n.activeTreeId&&w(r[n.activeTreeId],e)},[n.activeTreeId,n.treeIds,h,y,w]),te=(0,G.useCallback)(function(){if(n.canDragAndDrop&&n.activeTreeId){var e=n.viewState[n.activeTreeId]?.selectedItems??[n.viewState[n.activeTreeId]?.focusedItem];if(e.length===0||e[0]===void 0)return;var t=_(n.activeTreeId,e.map(function(e){return n.items[e]}));if(n.canDrag&&!n.canDrag(t))return;ee(t,n.activeTreeId),setTimeout(function(){a(!0)})}},[n,_,ee]),j=(0,G.useCallback)(function(){T()},[T]),M=(0,G.useCallback)(function(){A(),T()},[A,T]),N=(0,G.useCallback)(function(){d(function(e){return Math.max(0,e-1)})},[]),P=(0,G.useCallback)(function(){n.activeTreeId&&d(function(e){return Math.min(s[n.activeTreeId].length-1,e+1)})},[n.activeTreeId,s]),ne=(0,G.useMemo)(function(){return{onStartDraggingItems:ee,startProgrammaticDrag:te,abortProgrammaticDrag:j,completeProgrammaticDrag:M,programmaticDragUp:N,programmaticDragDown:P,draggingItems:x,draggingPosition:p,itemHeight:C.current,isProgrammaticallyDragging:i,onDragOverTreeHandler:O,onDragLeaveContainerHandler:k,viableDragPositions:s}},[j,M,x,p,i,C,O,k,ee,P,N,te,s]);return(0,G.useEffect)(function(){return window.addEventListener(`dragend`,T),window.addEventListener(`drop`,A),function(){window.removeEventListener(`dragend`,T),window.removeEventListener(`drop`,A)}},[A,T]),G.createElement(kk.Provider,{value:ne},t)},Mk=function(){return Mk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Mk.apply(this,arguments)},Nk=function(e,t){var n=Qk(),r=Ak();(0,G.useImperativeHandle)(e,function(){return Mk(Mk(Mk({},t),n),{treeEnvironmentContext:n,dragAndDropContext:r})})},Pk=function(e,t,n){return t===void 0&&(t=50),n===void 0&&(n=1e4),new Promise(function(r){e()&&r();var i,a=setInterval(function(){e()&&i()},t),o=setTimeout(function(){i()},n);i=function(){clearInterval(a),clearTimeout(o),r()}})},Fk=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Ik=function(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o={next:s(0),throw:s(1),return:s(2)};return typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(s){if(r)throw TypeError(`Generator is already executing.`);for(;o&&(o=0,s[0]&&(n=0)),n;)try{if(r=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,i=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){n.label=s[1];break}if(s[0]===6&&n.label<a[1]){n.label=a[1],a=s;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(s);break}a[2]&&n.ops.pop(),n.trys.pop();continue}s=t.call(e,n)}catch(e){s=[6,e],i=0}finally{r=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}},Lk=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},Rk=G.createContext(null),zk=function(){return G.useContext(Rk)},Bk=function(e,t,n){return Fk(void 0,void 0,void 0,function(){var r,i,a,o;return Ik(this,function(s){for(r=function(e){Pk(function(){return!!t.current?.[e]}).then(function(){var r=t.current?.[e];r?.isFolder&&(n(r),Bk(e,t,n))})},i=0,a=t.current?.[e]?.children??[];i<a.length;i++)o=a[i],r(o);return[2]})})},Vk=G.forwardRef(function(e,t){var n=Qk(),r=n.onCollapseItem,i=n.items,a=n.trees,o=n.viewState,s=n.onExpandItem,c=n.onFocusItem,l=n.setActiveTree,u=n.onRenameItem,d=n.onSelectItems,f=n.onPrimaryAction,p=n.linearItems,m=Ak(),h=m.abortProgrammaticDrag,g=m.completeProgrammaticDrag,_=m.programmaticDragDown,v=m.programmaticDragUp,y=m.startProgrammaticDrag,b=Sk(i),x=(0,G.useCallback)(function(e,t){r?.(i[e],t)},[i,r]),S=(0,G.useCallback)(function(e,t){s?.(i[e],t)},[i,s]),C=(0,G.useCallback)(function(e,t,n){n===void 0&&(n=!0),c?.(i[e],t,n)},[i,c]),w=(0,G.useCallback)(function(e,t){t===void 0&&(t=!0),l(e,t)},[l]),T=(0,G.useCallback)(function(e){var t=p[e],n=t.findIndex(function(t){return t.item===o[e]?.focusedItem}),r=i[t[n===void 0?0:Math.min(t.length-1,n+1)].item];c?.(r,e)},[i,p,c,o]),E=(0,G.useCallback)(function(e){var t=p[e],n=t.findIndex(function(t){return t.item===o[e]?.focusedItem}),r=i[t[n===void 0?0:Math.max(0,n-1)].item];c?.(r,e)},[i,p,c,o]),D=(0,G.useCallback)(function(e,t,n){u?.(i[e],t,n)},[i,u]),O=(0,G.useCallback)(function(e,t){d?.(e,t)},[d]),k=(0,G.useCallback)(function(e,t){(o[t]?.expandedItems)?.includes(e)?r?.(i[e],t):s?.(i[e],t)},[i,r,s,o]),A=(0,G.useCallback)(function(e,t){(o[t]?.selectedItems)?.includes(e)?d?.(o[t].selectedItems?.filter(function(t){return t!==e})??[],t):d?.(Lk(Lk([],o[t].selectedItems??[],!0),[e],!1),t)},[d,o]),ee=(0,G.useCallback)(function(e,t){f?.(i[e],t)},[i,f]),te=(0,G.useCallback)(function(e,t){return Fk(void 0,void 0,void 0,function(){var n,r;return Ik(this,function(i){switch(i.label){case 0:return n=t[0],r=t.slice(1),[4,Pk(function(){return!!b.current?.[n]}).then(function(){var t=b.current[n];return t?(s?.(t,e),r.length>0?te(e,r):Promise.resolve()):Promise.resolve()})];case 1:return i.sent(),[2]}})})},[b,s]),j=(0,G.useCallback)(function(e){return Fk(void 0,void 0,void 0,function(){return Ik(this,function(t){switch(t.label){case 0:return[4,Bk(a[e].rootItem,b,function(t){return s?.(t,e)})];case 1:return t.sent(),[2]}})})},[b,s,a]),M=(0,G.useCallback)(function(e){for(var t=0,n=o[e]?.expandedItems??[];t<n.length;t++){var a=n[t];r?.(i[a],e)}},[i,r,o]),N=(0,G.useMemo)(function(){return{collapseItem:x,expandItem:S,focusItem:C,focusTree:w,moveFocusDown:T,moveFocusUp:E,renameItem:D,selectItems:O,toggleItemExpandedState:k,toggleItemSelectStatus:A,invokePrimaryAction:ee,expandAll:j,expandSubsequently:te,collapseAll:M,abortProgrammaticDrag:h,completeProgrammaticDrag:g,moveProgrammaticDragPositionDown:_,moveProgrammaticDragPositionUp:v,startProgrammaticDrag:y}},[x,S,C,w,T,E,D,O,k,A,ee,j,te,M,h,g,_,v,y]);return Nk(t,N),G.createElement(Rk.Provider,{value:N},e.children)}),Hk=function(e){if(e){if(e.scrollIntoViewIfNeeded)e.scrollIntoViewIfNeeded();else{var t=e.getBoundingClientRect();t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||!!bk()?.documentElement?.clientHeight)&&t.right<=(window.innerWidth||!!bk()?.documentElement?.clientWidth)||e.scrollIntoView()}}},Uk=function(){return Uk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Uk.apply(this,arguments)},Wk=function(){return[...arguments].filter(function(e){return!!e}).join(` `)},Gk=function(e,t){return{renderItemTitle:function(e){var t=e.title,n=e.context,r=e.info;if(!r.isSearching||!n.isSearchMatching)return t;var i=t.toLowerCase().indexOf(r.search.toLowerCase());return G.createElement(G.Fragment,null,i>0&&G.createElement(`span`,null,t.slice(0,i)),G.createElement(`span`,{className:`rct-tree-item-search-highlight`},t.slice(i,i+r.search.length)),i+r.search.length<t.length&&G.createElement(`span`,null,t.slice(i+r.search.length,t.length)))},renderItemArrow:function(e){var t=e.item,n=e.context;return G.createElement(`div`,Uk({className:Wk(t.isFolder&&`rct-tree-item-arrow-isFolder`,n.isExpanded&&`rct-tree-item-arrow-expanded`,`rct-tree-item-arrow`)},n.arrowProps),t.isFolder&&(n.isExpanded?G.createElement(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,viewBox:`0 0 16 16`,enableBackground:`new 0 0 16 16`,xmlSpace:`preserve`},G.createElement(`g`,null,G.createElement(`g`,null,G.createElement(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})))):G.createElement(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,viewBox:`0 0 16 16`,enableBackground:`new 0 0 16 16`,xmlSpace:`preserve`},G.createElement(`g`,null,G.createElement(`g`,null,G.createElement(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`}))))))},renderItem:function(t){var n=t.item,r=t.depth,i=t.children,a=t.title,o=t.context,s=t.arrow,c=o.isRenaming?`div`:`button`,l=o.isRenaming?void 0:`button`;return G.createElement(`li`,Uk({},o.itemContainerWithChildrenProps,{className:Wk(`rct-tree-item-li`,n.isFolder&&`rct-tree-item-li-isFolder`,o.isSelected&&`rct-tree-item-li-selected`,o.isExpanded&&`rct-tree-item-li-expanded`,o.isFocused&&`rct-tree-item-li-focused`,o.isDraggingOver&&`rct-tree-item-li-dragging-over`,o.isSearchMatching&&`rct-tree-item-li-search-match`)}),G.createElement(`div`,Uk({},o.itemContainerWithoutChildrenProps,{style:{"--depthOffset":`${(r+1)*e}px`},className:Wk(`rct-tree-item-title-container`,n.isFolder&&`rct-tree-item-title-container-isFolder`,o.isSelected&&`rct-tree-item-title-container-selected`,o.isExpanded&&`rct-tree-item-title-container-expanded`,o.isFocused&&`rct-tree-item-title-container-focused`,o.isDraggingOver&&`rct-tree-item-title-container-dragging-over`,o.isSearchMatching&&`rct-tree-item-title-container-search-match`)}),s,G.createElement(c,Uk({type:l},o.interactiveElementProps,{className:Wk(`rct-tree-item-button`,n.isFolder&&`rct-tree-item-button-isFolder`,o.isSelected&&`rct-tree-item-button-selected`,o.isExpanded&&`rct-tree-item-button-expanded`,o.isFocused&&`rct-tree-item-button-focused`,o.isDraggingOver&&`rct-tree-item-button-dragging-over`,o.isSearchMatching&&`rct-tree-item-button-search-match`)}),a)),i)},renderRenameInput:function(e){var t=e.inputProps,n=e.inputRef,r=e.submitButtonProps,i=e.submitButtonRef,a=e.formProps;return G.createElement(`form`,Uk({},a,{className:`rct-tree-item-renaming-form`}),G.createElement(`input`,Uk({},t,{ref:n,className:`rct-tree-item-renaming-input`})),G.createElement(`input`,Uk({},r,{ref:i,type:`submit`,className:`rct-tree-item-renaming-submit-button`,value:`🗸`})))},renderTreeContainer:function(e){var n=e.children,r=e.containerProps,i=e.info;return G.createElement(`div`,{className:Wk(`rct-tree-root`,i.isFocused&&`rct-tree-root-focus`,i.isRenaming&&`rct-tree-root-renaming`,i.areItemsSelected&&`rct-tree-root-itemsselected`,t&&`rct-rtl`)},G.createElement(`div`,Uk({},r,{style:Uk({minHeight:`30px`},r.style)}),n))},renderItemsContainer:function(e){var t=e.children,n=e.containerProps;return G.createElement(`ul`,Uk({},n,{className:`rct-tree-items-container`}),t)},renderDragBetweenLine:function(t){var n=t.draggingPosition,r=t.lineProps;return G.createElement(`div`,Uk({},r,{style:{left:`${n.depth*e}px`},className:Wk(`rct-tree-drag-between-line`,n.targetType===`between-items`&&n.linePosition===`top`&&`rct-tree-drag-between-line-top`,n.targetType===`between-items`&&n.linePosition===`bottom`&&`rct-tree-drag-between-line-bottom`)}))},renderSearchInput:function(e){var t=e.inputProps;return G.createElement(`div`,{className:Wk(`rct-tree-search-input-container`)},G.createElement(`span`,{className:`rct-tree-input-icon`}),G.createElement(`input`,Uk({},t,{className:Wk(`rct-tree-search-input`)})))},renderLiveDescriptorContainer:function(e){var t=e.tree,n=e.children;return G.createElement(`div`,{id:`rct-livedescription-${t.treeId}`,style:{clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,height:`1px`,overflow:`hidden`,position:`absolute`,whiteSpace:`nowrap`,width:`1px`}},n)},renderDepthOffset:e}},Kk=function(e){var t=e.renderItem,n=e.renderItemTitle,r=e.renderItemArrow,i=e.renderRenameInput,a=e.renderItemsContainer,o=e.renderTreeContainer,s=e.renderDragBetweenLine,c=e.renderSearchInput,l=e.renderLiveDescriptorContainer,u=e.renderDepthOffset,d=(0,G.useMemo)(function(){return Gk(u??10)},[u]),f={renderItem:t,renderItemTitle:n,renderItemArrow:r,renderRenameInput:i,renderItemsContainer:a,renderTreeContainer:o,renderDragBetweenLine:s,renderSearchInput:c,renderLiveDescriptorContainer:l,renderDepthOffset:u},p=Object.entries(d).reduce(function(e,t){var n=t[0],r=t[1],i=n;return e[i]=f[i]?f[i]:r,e},{});return p.renderItem.displayName=`RenderItem`,p.renderItemTitle.displayName=`RenderItemTitle`,p.renderItemArrow.displayName=`RenderItemArrow`,p.renderRenameInput.displayName=`RenderRenameInput`,p.renderItemsContainer.displayName=`RenderItemsContainer`,p.renderTreeContainer.displayName=`RenderTreeContainer`,p.renderDragBetweenLine.displayName=`RenderDragBetweenLine`,p.renderSearchInput.displayName=`RenderSearchInput`,p},qk=function(e,t,n,r){r===void 0&&(r=0);for(var i=[],a=0,o=n[e]?.children??[];a<o.length;a++){var s=o[a],c=n[s];i.push({item:s,depth:r}),c&&c.isFolder&&c.children&&t.expandedItems?.includes(s)&&i.push.apply(i,qk(s,t,n,r+1))}return i},Jk=function(){return Jk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Jk.apply(this,arguments)},Yk=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},Xk=function(e){var t=e.onExpandItem,n=e.onCollapseItem,r=e.onDrop,i=Yk(e,[`onExpandItem`,`onCollapseItem`,`onDrop`]),a=(0,G.useState)({}),o=a[0],s=a[1],c=(0,G.useState)(),l=c[0],u=c[1],d=(0,G.useMemo)(function(){return Object.keys(o)},[o]),f=i.onFocusItem,p=i.autoFocus,m=i.onRegisterTree,h=i.onUnregisterTree,g=i.items,_=i.viewState,v=Sk(f),y=Sk(_),b=(0,G.useMemo)(function(){return yk(d,function(e){return qk(o[e].rootItem,_[e]??{},g)})},[o,g,d,_]),x=(0,G.useCallback)(function(e,t,n){var r,i;if(n===void 0&&(n=!0),(p??!0)&&n){var a=bk()?.querySelector(`[data-rct-tree="${t}"] [data-rct-item-id="${e.index}"]`)??bk()?.querySelector(`[data-rct-tree="${t}"] [data-rct-item-id]`);(bk()?.activeElement)?.attributes.getNamedItem(`data-rct-search-input`)?.value===`true`?Hk(a):(r=a?.focus)==null||r.call(a)}y.current[t]?.focusedItem!==e.index&&((i=v.current)==null||i.call(v,e,t))},[p,v,y]),S=(0,G.useCallback)(function(e){s(function(t){var n;return Jk(Jk({},t),(n={},n[e.treeId]=e,n))}),m?.(e)},[m]),C=(0,G.useCallback)(function(e){h?.(o[e]),s(function(t){var n=Jk({},t);return delete n[e],n})},[h,o]),w=(0,G.useCallback)(function(e,t){n?.(e,t),s(function(e){return e})},[n]),T=(0,G.useCallback)(function(e,n){t?.(e,n),s(function(e){return e})},[t]),E=(0,G.useCallback)(function(e,t){r?.(e,t),s(function(e){return e})},[r]),D=(0,G.useCallback)(function(e){var t,n=bk()?.querySelector(`[data-rct-tree="${e}"] [data-rct-item-focus="true"]`);(t=n?.focus)==null||t.call(n)},[]),O=(0,G.useCallback)(function(e,t){t===void 0&&(t=!0);var n=function(e){t&&(p??!0)&&e&&!(bk()?.querySelector(`[data-rct-tree="${e}"]`))?.contains(document.activeElement)&&D(e)};if(typeof e==`function`)u(function(t){var r=e(t);return r!==t&&n(r),r});else{var r=e;u(r),n(r)}},[p,D]),k=Kk(i);return Jk(Jk(Jk({},k),i),{onFocusItem:x,registerTree:S,unregisterTree:C,onExpandItem:T,onCollapseItem:w,onDrop:E,setActiveTree:O,treeIds:d,trees:o,activeTreeId:l,linearItems:b})},Zk=G.createContext(null),Qk=function(){return(0,G.useContext)(Zk)},$k=G.forwardRef(function(e,t){var n=Xk(e),r=e.viewState,i=e.onFocusItem;return(0,G.useEffect)(function(){for(var t=0,a=Object.keys(n.trees);t<a.length;t++){var o=a[t],s=e.items[n.trees[o].rootItem]?.children?.[0],c=s&&e.items[s];!r[o]?.focusedItem&&n.trees[o]&&c&&i?.(c,o,!1)}},[n.trees,i,e.items,r]),G.createElement(Zk.Provider,{value:n},G.createElement(fk,null,G.createElement(jk,null,G.createElement(Vk,{ref:t},e.children))))}),eA=function(e){var t=e.treeId,n=Ak(),r=n.draggingPosition,i=n.itemHeight,a=FA().renderers;return r&&r.targetType===`between-items`&&r.treeId===t?G.createElement(`div`,{style:{position:`absolute`,left:`0`,right:`0`,top:`${(r?.linearIndex??0)*i}px`}},a.renderDragBetweenLine({draggingPosition:r,lineProps:{onDragOver:function(e){return e.preventDefault()}}})):null},tA=function(e,t,n){var r=Ck(n);(0,G.useEffect)(function(){return e?(e.addEventListener(t,r),function(){return e.removeEventListener(t,r)}):function(){}},[e,r,t])},nA=function(e,t,n){var r=(0,G.useState)(!1),i=r[0],a=r[1],o=(0,G.useRef)(!1),s=xk();return tA(e,`focusin`,function(){i||(a(!0),t?.()),o.current&&=!1}),tA(e,`focusout`,function(){o.current=!0,s(function(){o.current&&!e?.contains(document.activeElement)&&(n?.(),o.current=!1,a(!1))})}),i},rA=function(e,t,n){tA(bk(),`keydown`,function(r){n&&n&&e.toLowerCase()===r.key.toLowerCase()&&t(r)})},iA={expandSiblings:[`control+*`],moveFocusToFirstItem:[`home`],moveFocusToLastItem:[`end`],primaryAction:[`enter`],renameItem:[`f2`],abortRenameItem:[`escape`],toggleSelectItem:[`control+ `],abortSearch:[`escape`,`enter`],startSearch:[],selectAll:[`control+a`],startProgrammaticDnd:[`control+shift+d`],completeProgrammaticDnd:[`enter`],abortProgrammaticDnd:[`escape`]},aA=function(){return aA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},aA.apply(this,arguments)},oA=function(){var e=Qk();return(0,G.useMemo)(function(){return e.keyboardBindings?aA(aA({},iA),e.keyboardBindings):iA},[e.keyboardBindings])},sA=[`input`,`textarea`],cA=function(e,t,n,r){r===void 0&&(r=!1);var i=(0,G.useRef)([]),a=oA(),o=xk(),s=(0,G.useMemo)(function(){return a[e].map(function(e){return e.split(`+`)})},[e,a]);tA(bk(),`keydown`,function(e){if(n!==!1&&(!sA.includes(e.target.tagName?.toLowerCase())&&!e.target.isContentEditable||r)&&!i.current.includes(e.key)){i.current.push(e.key);var t=i.current.map(function(e){return e.toLowerCase()});s.map(function(e){return t.map(function(t){return e.includes(t.toLowerCase())}).reduce(function(e,t){return e&&t},!0)}).reduce(function(e,t){return e||t},!1)&&(i.current.length>1||!/^[a-zA-Z\s]$/.test(e.key))&&e.preventDefault()}}),tA(bk(),`keyup`,function(e){if(n!==!1){var r=i.current.map(function(e){return e.toLowerCase()});s.map(function(e){return e.map(function(e){return r.includes(e.toLowerCase())}).reduce(function(e,t){return e&&t},!0)}).reduce(function(e,t){return e||t},!1)&&o(function(){return t(e)}),i.current=i.current.filter(function(t){return t!==e.key})}})},lA=function(){var e=FA().treeId;return Qk().viewState[e]??{}},uA=function(e){return Qk().linearItems[e]},dA=function(){var e=FA().treeId,t=Qk(),n=t.onFocusItem,r=t.items,i=uA(e),a=lA();return Ck(function(t){var o=t(i.findIndex(function(e){return e.item===a.focusedItem})??0,i),s=r[i[Math.max(0,Math.min(i.length-1,o))].item];return n?.(s,e),s})},fA=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},pA=function(e){var t=(0,G.useRef)({target:e,previous:void 0});return t.current.target!==e&&(t.current.previous=t.current.target,t.current.target=e),t.current.previous},mA=function(e){var t=lA(),n=FA().treeId,r=uA(n),i=Qk().onSelectItems,a=pA(t.focusedItem);return(0,G.useCallback)(function(o,s){s===void 0&&(s=!1);var c=o.index,l=function(e,t){var r=fA(fA([],s?[]:e,!0),t.filter(function(t){return s||!e.includes(t)}),!0);i?.(r,n)};if(t&&t.selectedItems&&t.selectedItems.length>0){var u=t.focusedItem===c?a:t.focusedItem,d=e===`last-focus`?r.findIndex(function(e){return u===e.item}):r.findIndex(function(e){return t.selectedItems?.includes(e.item)}),f=r.findIndex(function(e){return e.item===c});if(d<f){var p=r.slice(d,f+1).map(function(e){return e.item});l(t.selectedItems??[],p)}else{var p=r.slice(f,d+1).map(function(e){return e.item});l(t.selectedItems??[],p)}}else i?.([c],n)},[t,i,n,e,r,a])},hA=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},gA=function(){var e=Qk(),t=FA(),n=t.treeId,r=t.setRenamingItem,i=t.setSearch,a=t.renamingItem,o=uA(n),s=Ak(),c=lA(),l=dA(),u=mA(`first-selected`),d=e.activeTreeId===n,f=!!a,p=!e.disableArrowKeys&&d&&!f;rA(`arrowdown`,function(e){if(e.preventDefault(),s.isProgrammaticallyDragging)s.programmaticDragDown();else{var t=l(function(e){return e+1});e.shiftKey&&u(t)}},p),rA(`arrowup`,function(e){if(e.preventDefault(),s.isProgrammaticallyDragging)s.programmaticDragUp();else{var t=l(function(e){return e-1});e.shiftKey&&u(t)}},p),cA(`moveFocusToFirstItem`,function(e){e.preventDefault(),l(function(){return 0})},d&&!s.isProgrammaticallyDragging&&!f),cA(`moveFocusToLastItem`,function(e){e.preventDefault(),l(function(e,t){return t.length-1})},d&&!s.isProgrammaticallyDragging&&!f),rA(`arrowright`,function(t){t.preventDefault(),l(function(t,r){var i,a=e.items[r[t].item];if(a.isFolder){if(c.expandedItems?.includes(a.index))return t+1;(i=e.onExpandItem)==null||i.call(e,a,n)}return t})},p&&!s.isProgrammaticallyDragging),rA(`arrowleft`,function(t){t.preventDefault(),l(function(t,r){var i,a=e.items[r[t].item],o=r[t].depth;if(a.isFolder&&c.expandedItems?.includes(a.index))(i=e.onCollapseItem)==null||i.call(e,a,n);else if(o>0){for(var s=t;r[s].depth!==o-1;--s);return s}return t})},p&&!s.isProgrammaticallyDragging),cA(`primaryAction`,function(t){var r,i;t.preventDefault(),c.focusedItem!==void 0&&((r=e.onSelectItems)==null||r.call(e,[c.focusedItem],n),(i=e.onPrimaryAction)==null||i.call(e,e.items[c.focusedItem],n))},d&&!s.isProgrammaticallyDragging&&!f),cA(`toggleSelectItem`,function(t){var r,i;t.preventDefault(),t.stopPropagation(),c.focusedItem!==void 0&&(c.selectedItems&&c.selectedItems.includes(c.focusedItem)?(r=e.onSelectItems)==null||r.call(e,c.selectedItems.filter(function(e){return e!==c.focusedItem}),n):(i=e.onSelectItems)==null||i.call(e,hA(hA([],c.selectedItems??[],!0),[c.focusedItem],!1),n))},d&&!s.isProgrammaticallyDragging&&!f),cA(`selectAll`,function(t){var r;t.preventDefault(),(r=e.onSelectItems)==null||r.call(e,o.map(function(e){return e.item}),n)},d&&!s.isProgrammaticallyDragging&&!f),cA(`renameItem`,function(t){var i;if(c.focusedItem!==void 0){t.preventDefault();var a=e.items[c.focusedItem];a.canRename!==!1&&((i=e.onStartRenamingItem)==null||i.call(e,a,n),r(a.index))}},d&&(e.canRename??!0)&&!f),cA(`startSearch`,function(e){var t,n;e.preventDefault(),i(``),(n=(t=document.querySelector(`[data-rct-search-input="true"]`))?.focus)==null||n.call(t)},d&&!s.isProgrammaticallyDragging&&!f),cA(`startProgrammaticDnd`,function(e){e.preventDefault(),s.startProgrammaticDrag()},d&&!f),cA(`completeProgrammaticDnd`,function(e){e.preventDefault(),s.completeProgrammaticDrag()},d&&s.isProgrammaticallyDragging&&!f),cA(`abortProgrammaticDnd`,function(e){e.preventDefault(),s.abortProgrammaticDrag()},d&&s.isProgrammaticallyDragging&&!f)},_A=function(e,t,n){return n.toLowerCase().includes(e.toLowerCase())},vA=function(){var e=Qk(),t=e.doesSearchMatchItem,n=e.items,r=e.getItemTitle,i=e.onFocusItem,a=FA(),o=a.search,s=a.treeId,c=uA(s),l=xk();_k(function(){o&&o.length>0&&l(function(){var e=c.find(function(e){var i=e.item;return(t??_A)(o,n[i],r(n[i]))});e&&i?.(n[e.item],s)})},[t,r,c,n,i,o,s,l],[o])},yA=function(){return yA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},yA.apply(this,arguments)},bA=function(e){var t=e.containerRef,n=FA(),r=n.search,i=n.setSearch,a=n.treeId,o=n.renderers,s=n.renamingItem,c=Qk();lA();var l=c.activeTreeId===a,u=xk();vA();var d=function(){var e;if(i(null),c.autoFocus??!0){var t=bk()?.querySelector(`[data-rct-tree="${a}"] [data-rct-item-focus="true"]`);(e=t?.focus)==null||e.call(t)}};return cA(`abortSearch`,function(){u(function(){d()})},l&&r!==null,!0),tA(t,`keydown`,function(e){var t=e.key.charCodeAt(0);(c.canSearch??!0)&&(c.canSearchByStartingTyping??!0)&&l&&r===null&&!s&&!e.ctrlKey&&!e.shiftKey&&!e.altKey&&!e.metaKey&&(t>=48&&t<=57||t>=97&&t<=122)&&i(``)}),!(c.canSearch??!0)||r===null?null:o.renderSearchInput({inputProps:yA({value:r,onChange:function(e){return i(e.target.value)},onBlur:function(){d()},ref:function(e){var t;(t=e?.focus)==null||t.call(e)},"aria-label":`Search for items`},{"data-rct-search-input":`true`})})},xA={introduction:`
792
+ `}];async function mO(e){let{database:t,table:n,fileData:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`csv_data_load`,database:t,action:`insert`,table:n,data:r});return a}async function hO({jobId:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`get_job`,id:e});return n?.[0]}var gO=class extends Error{constructor(e){super(e),this.name=`ImportJobError`}},_O=e=>new Promise(t=>setTimeout(t,e));async function vO({jobId:e,instanceClient:t,pollIntervalMs:n=1500,timeoutMs:r=6e5}){let i=Date.now()+r,a=0;for(;;){let r;try{r=await hO({jobId:e,instanceClient:t}),a=0}catch(e){if(a+=1,a>=5)throw e}let o=r?.status?.toUpperCase();if(o===`ERROR`)throw new gO(r?.message||`The import job failed.`);if(o===`COMPLETE`&&r)return r;if(Date.now()>=i)throw Error(`Timed out waiting for the import job to finish. Check the table in a few minutes.`);await _O(n)}}function yO(e){let t=e?.response?.data;return typeof t==`string`?t:t?.error||t?.message||e?.message||String(e)}async function bO({database:e,table:t,tableExists:n,replicated:r,source:i,instanceClient:a}){if(!n)try{await a.post(`/`,{operation:`create_table`,database:e,table:t,primary_key:`id`,replicated:r})}catch(e){if(!/already exists/i.test(yO(e)))throw e}switch(i.kind){case`csv-data`:{let{job_id:n}=await mO({database:e,table:t,fileData:i.data,instanceClient:a});return{message:(await vO({jobId:n,instanceClient:a})).message||`CSV data imported successfully`}}case`csv-url`:{let{data:n}=await a.post(`/`,{operation:`csv_url_load`,csv_url:i.url,database:e,table:t,action:`insert`});return{message:(await vO({jobId:n.job_id,instanceClient:a})).message||`CSV data imported successfully`}}case`json-records`:{let n=await HE({databaseName:e,tableName:t,records:i.records,instanceClient:a}),r=n.inserted_hashes?.length??0,o=n.skipped_hashes?.length??0;return{message:o?`Inserted ${r} records (${o} skipped)`:`Inserted ${r} records`}}}}function xO(){return R({mutationFn:bO})}var SO=`__random__`,CO=10485760,wO=S({method:ee([`sample`,`file`,`url`]),database:zD,table:BD,datasetId:M(),rowCount:M(),fileData:M(),fileName:M(),url:M()}).superRefine((e,t)=>{if(e.method===`sample`&&!e.datasetId&&t.addIssue({code:`custom`,path:[`datasetId`],message:`Please choose a sample dataset.`}),e.method===`sample`&&e.datasetId===`__random__`){let n=Number(e.rowCount);(!Number.isInteger(n)||n<1||n>1e3)&&t.addIssue({code:`custom`,path:[`rowCount`],message:`Enter a row count between 1 and 1000.`})}if(e.method===`file`&&!e.fileData&&t.addIssue({code:`custom`,path:[`fileData`],message:`Please choose a CSV or JSON file.`}),e.method===`url`){let n=!1;try{n=/^https?:$/.test(new URL(e.url).protocol)}catch{}n||t.addIssue({code:`custom`,path:[`url`],message:`Please enter a valid http(s) URL to a CSV file.`})}}),TO=[{value:`sample`,title:`Sample Datasets`,description:`Choose from pre-loaded sample datasets to get started quickly`,Icon:Oa},{value:`file`,title:`Import from File`,description:`Upload a CSV or JSON file`,Icon:mi},{value:`url`,title:`Load from URL`,description:`Import a CSV file from a URL the instance can reach`,Icon:Ei}];function EO({isModalOpen:e,setIsModalOpen:t,instanceDatabaseMap:n,databaseName:r,tableName:i,initialMethod:a,onImported:o}){let s=q(),{mutate:c,isPending:l}=xO(),[u,d]=(0,G.useState)(null),f=zp(),p=(0,G.useMemo)(()=>TO.filter(({value:e})=>f.methods[e]),[f]),m=a??(i?`file`:`sample`),h=f.methods[m]?m:p[0]?.value??m,g=Gt({resolver:it(wO),defaultValues:{method:h,database:r||``,table:i||``,datasetId:``,rowCount:`25`,fileData:``,fileName:``,url:``}}),{reset:_}=g;(0,G.useEffect)(()=>{e&&(_({method:h,database:r||``,table:i||``,datasetId:``,rowCount:`25`,fileData:``,fileName:``,url:``}),d(null))},[e,r,i,h,_]);let v=g.watch(`method`),y=g.watch(`datasetId`),b=g.watch(`database`),x=g.watch(`table`),S=pO.find(e=>e.id===y),C=n?.[b||`data`]?.[x],w=!!C,T=!!n&&!!x&&!w,E=uO(C?.attributes,n?.[b||`data`]),D=E.length>0,O=y===SO,k=e=>{let t=e.target.files?.[0];if(!t)return;if(t.size>10485760){let n=(t.size/1048576).toFixed(1),r=CO/1048576;g.setError(`fileData`,{message:`That file is ${n} MB — uploads are limited to ${r} MB. For larger files, host the CSV and use Load from URL.`}),e.target.value=``;return}let n=new FileReader;n.onload=e=>{let n=e.target?.result;typeof n==`string`&&(d(t.name),g.setValue(`fileData`,n,{shouldValidate:!0}),g.setValue(`fileName`,t.name))},n.onerror=()=>{U.error(`Failed to read the selected file.`)},n.readAsText(t)},A=e=>{g.setValue(`datasetId`,e,{shouldValidate:!0});let t=pO.find(t=>t.id===e);t&&g.setValue(`table`,t.table,{shouldValidate:!0})},ee=()=>{t(!1)},te=e=>{let t=e.database||`data`,r=e.table,i;if(e.method===`sample`&&e.datasetId===`__random__`){let a=uO(n?.[t]?.[r]?.attributes,n?.[t]);if(a.length===0){g.setError(`datasetId`,{message:`Random data needs an existing table with columns — pick a table that has some.`});return}i={kind:`json-records`,records:dO(a,Number(e.rowCount))}}else if(e.method===`sample`){let t=pO.find(t=>t.id===e.datasetId);if(!t)return;i={kind:`csv-data`,data:t.csv}}else if(e.method===`file`){if(e.fileName.toLowerCase().endsWith(`.json`))try{i={kind:`json-records`,records:fO(e.fileData)}}catch(e){g.setError(`fileData`,{message:e.message});return}else i={kind:`csv-data`,data:e.fileData}}else i={kind:`csv-url`,url:e.url};if(w&&!f.allowsDestination(t,r)){g.setError(`table`,{message:`This role cannot insert into "${r}".`});return}if(!f.allowsSource(i.kind)){g.setError(`method`,{message:i.kind===`json-records`?`This role cannot insert records. Choose a CSV source instead.`:`This role cannot run CSV loads. Choose a JSON file or random sample data instead.`});return}c({database:t,table:r,tableExists:w,replicated:s.entityType===`cluster`,source:i,...s},{onSuccess:({message:e})=>{U.success(e),ee(),o(t,r)}})};return(0,K.jsx)(Id,{open:e,onOpenChange:e=>{!e&&!l&&ee()},children:(0,K.jsxs)(Ud,{className:`sm:max-w-[550px]`,children:[(0,K.jsxs)(Wd,{children:[(0,K.jsx)(Kd,{children:`Import Data`}),(0,K.jsx)(qd,{children:`Choose how you want to import data into your database.`})]}),(0,K.jsx)(El,{...g,children:(0,K.jsxs)(`form`,{id:`instance-import-data-form`,name:`instance-import-data-form`,onSubmit:g.handleSubmit(te),className:`grid gap-4`,children:[(0,K.jsx)(Y,{control:g.control,name:`method`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Select Import Method`}),(0,K.jsx)(J,{children:(0,K.jsx)(Qw,{value:e.value,onValueChange:e.onChange,className:`gap-3`,children:p.map(({value:e,title:t,description:n,Icon:r})=>(0,K.jsxs)(Z,{htmlFor:`import-method-${e}`,className:`flex items-start gap-3 rounded-lg border border-border p-4 cursor-pointer font-normal hover:bg-accent/50 has-[[data-state=checked]]:border-primary`,children:[(0,K.jsx)($w,{value:e,id:`import-method-${e}`,className:`mt-1`}),(0,K.jsxs)(`div`,{className:`grid gap-1`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2 font-medium`,children:[(0,K.jsx)(r,{className:`size-4`}),t]}),(0,K.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:n})]})]},e))})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(vS,{}),v===`sample`&&(0,K.jsx)(Y,{control:g.control,name:`datasetId`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Choose a Sample Dataset`}),(0,K.jsx)(J,{children:(0,K.jsxs)(Cg,{name:e.name,value:e.value,onValueChange:A,children:[(0,K.jsx)(Eg,{className:`w-full`,children:(0,K.jsx)(Tg,{placeholder:`Select a dataset...`})}),(0,K.jsxs)(Dg,{children:[f.allowsSource(`csv-data`)&&(0,K.jsx)(wg,{children:pO.map(e=>(0,K.jsx)(kg,{value:e.id,children:e.name},e.id))}),D&&f.allowsSource(`json-records`)&&(0,K.jsxs)(wg,{children:[(0,K.jsx)(Og,{children:`This table`}),(0,K.jsx)(kg,{value:`__random__`,children:`Random Data`})]})]})]})}),S&&(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:S.description}),O&&(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Generates rows for "`,x,`" based on its `,E.length,` `,`column`,E.length===1?``:`s`,` and their data types.`]}),(0,K.jsx)(Q,{})]})}),v===`sample`&&O&&(0,K.jsx)(Y,{control:g.control,name:`rowCount`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Number of Rows`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`number`,min:1,max:1e3,inputMode:`numeric`,autoComplete:`off`})}),(0,K.jsx)(Q,{})]})}),v===`file`&&(0,K.jsx)(Y,{control:g.control,name:`fileData`,render:({field:e})=>(0,K.jsxs)(X,{className:`relative`,children:[(0,K.jsx)(Z,{htmlFor:`import-data-file`,className:`flex flex-col items-center justify-center w-full h-40 border-2 border-border border-dashed rounded-lg cursor-pointer bg-muted dark:bg-grey-700 hover:bg-muted/80 dark:hover:bg-grey-700/80`,children:(0,K.jsx)(J,{children:(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:`flex flex-col items-center justify-center pt-5 pb-6`,children:[(0,K.jsx)(Jr,{className:`text-muted-foreground`,size:40}),(0,K.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:u??(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`font-semibold`,children:`Click to upload`}),` `,`or drag and drop a CSV or JSON file`]})})]}),(0,K.jsx)($,{id:`import-data-file`,type:`file`,className:`opacity-0 w-full h-full absolute left-0 top-0 cursor-pointer`,accept:`.csv,.json,text/csv,application/json`,name:e.name,ref:e.ref,onBlur:e.onBlur,disabled:e.disabled,onChange:k})]})})}),(0,K.jsx)(Q,{})]})}),v===`url`&&(0,K.jsx)(Y,{control:g.control,name:`url`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`CSV URL`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,inputMode:`url`,placeholder:`https://example.com/data.csv`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`The URL is fetched by the Harper instance, so it must be reachable from there.`}),(0,K.jsx)(Q,{})]})}),(0,K.jsxs)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-4`,children:[(0,K.jsx)(Y,{control:g.control,name:`database`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Database`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,placeholder:`data`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})}),(0,K.jsx)(Y,{control:g.control,name:`table`,render:({field:e})=>(0,K.jsxs)(X,{children:[(0,K.jsx)(Z,{children:`Table`}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,K.jsx)(Q,{})]})})]}),T&&(0,K.jsxs)(_m,{children:[(0,K.jsx)(Ii,{}),(0,K.jsx)(vm,{children:`New table`}),(0,K.jsxs)(ym,{children:[`The table "`,x,`" doesn't exist yet — it will be created with primary key "id" before the data is imported.`]})]}),(0,K.jsxs)(Gd,{children:[(0,K.jsx)(H,{type:`button`,variant:`ghost`,onClick:ee,disabled:l,children:`Cancel`}),(0,K.jsxs)(H,{type:`submit`,variant:`submit`,disabled:l,children:[l?(0,K.jsx)(Xi,{className:`animate-spin`}):(0,K.jsx)(Jr,{}),l?`Importing...`:`Import Data`]})]})]})})]})})}function DO({instanceDatabaseMap:e}){let t=B({strict:!1}),n=L(),r=we(),i=Me(),a=q(),o=(0,G.useCallback)((e,r)=>{n({to:AE({...t,databaseName:e,tableName:r})})},[n,t]),{value:s}=GD(`ShowCreateTable`,!1),{value:c}=GD(`ShowAddTableRecords`,!1),{value:l}=GD(`ShowImportData`,!1),u=c?e?.[c.databaseName]?.[c.tableName]:void 0;(0,G.useEffect)(()=>{c&&!u&&(U.error(`Couldn't open "${c.tableName}" — it may have just been removed. Try refreshing.`),KD(`ShowAddTableRecords`,!1))},[c,u]);let d=(0,G.useCallback)(async(e,t)=>{await i.invalidateQueries({queryKey:[a.entityId,`describe_all`],refetchType:`all`}),o(e,t),await r.invalidate()},[i,a.entityId,o,r]),f=(0,G.useCallback)(({databaseName:e,tableName:n})=>{t.databaseName===e&&t.tableName===n&&o(e,void 0)},[t.databaseName,t.tableName,o]),p=(0,G.useCallback)(({databaseName:e})=>{t.databaseName===e&&o(void 0,void 0)},[t.databaseName,o]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(HD,{isModalOpen:!!s,setIsModalOpen:e=>KD(`ShowCreateTable`,e?s||{}:!1),databaseName:s?s.databaseName:void 0,onCreated:o},s?`create-${s.databaseName??``}`:`create-closed`),c&&u&&(0,K.jsx)(PD,{instanceTable:u,databaseTables:e?.[c.databaseName],isModalOpen:!0,setIsModalOpen:e=>{e||KD(`ShowAddTableRecords`,!1)},refreshTable:()=>void i.invalidateQueries({queryKey:[a.entityId,c.databaseName,c.tableName]})},`add-${c.databaseName}/${c.tableName}`),(0,K.jsx)(EO,{isModalOpen:!!l,setIsModalOpen:e=>KD(`ShowImportData`,e?l||{}:!1),instanceDatabaseMap:e,databaseName:l?l.databaseName:void 0,tableName:l?l.tableName:void 0,initialMethod:l?l.method:void 0,onImported:d},l?`import-${l.databaseName??``}/${l.tableName??``}/${l.method??``}`:`import-closed`),(0,K.jsx)(QD,{onDeleted:f}),(0,K.jsx)(YD,{onDeleted:p})]})}function OO(e){e.stopPropagation()}var kO=3,AO=`text-blue dark:text-blue-300 border-blue/40 dark:border-blue-300/40 [a&]:hover:bg-blue/10 [a&]:hover:underline`;function jO(e,t){return(Array.isArray(e)?e:e==null?[]:[e]).map(e=>typeof e==`object`&&e?e[t.relatedPrimaryKey]:e).filter(e=>e!=null)}function MO({value:e,record:t,primaryKey:n,info:r}){let i=B({strict:!1}),a=n?t?.[n]:void 0,o=jO(e,r);!o.length&&r.foreignKeyAttribute&&t&&(o=jO(t[r.foreignKeyAttribute],r));let s=AE({...i,tableName:r.relatedTableName}),c=r.reverseForeignKey&&a!=null?{filters:{[r.reverseForeignKey]:String(a)}}:void 0;if(!o.length)return c?(0,K.jsx)(Fs,{variant:`outline`,className:AO,asChild:!0,children:(0,K.jsxs)(V,{to:s,search:c,onClick:OO,title:`${r.relatedTableName} where ${r.reverseForeignKey} = ${String(a)}`,children:[r.relatedTableName,` →`]})}):(0,K.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});let l=o.length-kO;return(0,K.jsxs)(`span`,{className:`inline-flex gap-1 items-center`,children:[o.slice(0,kO).map((e,t)=>(0,K.jsx)(Fs,{variant:`outline`,className:AO,asChild:!0,children:(0,K.jsx)(V,{to:s,search:{filters:{[r.relatedPrimaryKey]:String(e)}},onClick:OO,title:`${r.relatedTableName} where ${r.relatedPrimaryKey} = ${String(e)}`,children:String(e)})},t)),l>0&&(c?(0,K.jsxs)(V,{to:s,search:c,onClick:OO,className:`text-blue dark:text-blue-300 hover:underline text-xs whitespace-nowrap`,title:`${r.relatedTableName} where ${r.reverseForeignKey} = ${String(a)}`,children:[`+`,l,` more`]}):(0,K.jsxs)(`span`,{className:`text-muted-foreground text-xs whitespace-nowrap`,children:[`+`,l,` more`]}))]})}function NO(e,t={}){if(!e)return{dataTableColumns:[],primaryKey:``};let n=e.primary_key??e.hash_attribute??``,{attributes:r}=e,i=[],a=[],o=[],s=[],c=e=>t=>(0,G.createElement)(MO,{value:t.getValue(),record:t.row.original,primaryKey:n,info:e});for(let e=r.length-1;e>=0;e--){let{attribute:n,type:l,is_primary_key:u,indexed:d}=r[e],f=t[n],p={header:n,accessorKey:n,enableSorting:!!(u||d),enableColumnFilter:!!(u||d||f),size:FO(l),cell:f?c(f):PO,meta:f?{relationshipInfo:f}:void 0};u?i.push(p):n===`__createdtime__`||n===`__updatedtime__`?s.push(p):p.enableSorting?a.push(p):o.push(p)}let l=new Set(r.map(e=>e.attribute));for(let[e,n]of Object.entries(t))l.has(e)||o.push({header:e,accessorKey:e,enableSorting:!1,enableColumnFilter:!0,size:FO(`String`),cell:c(n),meta:{relationshipInfo:n}});return{dataTableColumns:[...i,...a,...o,...s],primaryKey:n}}function PO(e){let t=e.getValue();return t==null?null:typeof t==`object`?JSON.stringify(t):String(t)}function FO(e){switch(e){case`Id`:case`ID`:return 220;case`Boolean`:return 90;case`Int`:case`Long`:case`Float`:case`BigInt`:return 120;case`Date`:return 190;default:return 200}}var IO=[`1`,`bet`,`k`,`ok`,`si`,`tru`,`true`,`yes`,`yup`];function LO(e){let t=e.toLowerCase().trim();return IO.includes(t)}function RO(e){return!isNaN(e)&&!isNaN(parseFloat(e))}function zO(e){if(e.startsWith(`0.`)&&RO(e))return!0;let t=e.toUpperCase().includes(`E`);return!(e!==`0`&&e.startsWith(`0`))&&!t&&RO(e)}var BO={true:!0,TRUE:!0,false:!1,FALSE:!1,undefined:null,null:null,NULL:null,NaN:NaN},VO=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/;function HO(e){return e==null||e===``||typeof e!=`string`?e:BO[e]===void 0?zO(e)?Number(e):VO.test(e)?new Date(e):e:BO[e]}function UO(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,conditions:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l,getAttributes:u}=e;return z({enabled:t&&!!a,queryKey:[n,r,i,`search_by_conditions`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l,u??null],staleTime:6e4,gcTime:5e3,retry:!1,queryFn:()=>WO(e)})}function WO({instanceClient:e,databaseName:t,tableName:n,conditions:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,getAttributes:c,headers:l}){return e.post(`/`,{operation:`search_by_conditions`,get_attributes:c??[`*`],database:t,table:n,conditions:r,sort:i.attribute.length?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:l})}function GO(e,t,n,r){return t.split(/ & /).map(t=>KO(e,t,n,r))}function KO(e,t,n,r){if(t.startsWith(e)&&(t=t.substring(e.length)),r)return qO(e,t,r);let{comparator:i,value:a}=XO(t);switch(n?.type){case`ID`:case`String`:return{search_attribute:e,search_type:i,search_value:a};case`Int`:case`BigInt`:case`Long`:case`Float`:{let t=n.type.includes(`Int`)?parseInt(a,10):parseFloat(a);if(isNaN(t))throw Error(`${a} does not appear to be a valid number.`);return{search_attribute:e,search_type:i,search_value:t}}case`Date`:return{search_attribute:e,search_type:i,search_value:new Date(a).toISOString()};case`Boolean`:return{search_attribute:e,search_type:i,search_value:LO(a)};case`Blob`:case`Bytes`:return{search_attribute:e,search_type:i,search_value:a};default:return{search_attribute:e,search_type:i,search_value:HO(a)}}}function qO(e,t,n){let r=t.match(/^\s*\.([^.\s]+)\s*(.*)$/);if(!r)throw Error(`Filter ${e} on a property of ${n.relatedTableName}, e.g. ".${n.relatedPrimaryKey} value".`);let[,i,a]=r,o=KO(i,a,n.relatedAttributes.find(e=>e.attribute===i));return i===n.relatedPrimaryKey&&n.foreignKeyAttribute?{...o,search_attribute:n.foreignKeyAttribute}:{...o,search_attribute:[e,i]}}var JO={"=== ":`equals`,"== ":`eq`,"equals ":`equals`,"equal ":`equals`,"eq ":`eq`,"!== ":`not_equal`,"!= ":`ne`,"notequals ":`not_equal`,"notequal ":`not_equal`,"ne ":`ne`},YO={">":`greater_than`,g:`greater_than`,gt:`greater_than`,"=gt":`greater_than`,greater:`greater_than`,greaterthan:`greater_than`,">=":`greater_than_equal`,ge:`greater_than_equal`,"=ge":`greater_than_equal`,gte:`greater_than_equal`,greaterorequal:`greater_than_equal`,greaterthanequal:`greater_than_equal`,greaterthanorequal:`greater_than_equal`,"<":`less_than`,l:`less_than`,lt:`less_than`,"=lt":`less_than`,less:`less_than`,lessthan:`less_than`,"<=":`less_than_equal`,lte:`less_than_equal`,le:`less_than_equal`,"=le":`less_than_equal`,lessorequal:`less_than_equal`,lessthanequal:`less_than_equal`,lessthanorequal:`less_than_equal`};function XO(e){let t=e.toLowerCase(),n=t.match(/^ *([>=<]+[a-z]*[_ ]*|[a-z]+[>=<]+[_ ]*|[a-z]+[_ ]+)([\d._:tz-]+) *$/);if(n){let e=n[1].replace(/[_ ]+/g,``).replace(/^([a-z]+)=$/g,`$1`),t=n[2],r=YO[e];if(r)return{comparator:r,value:t}}for(let n in JO)if(t.startsWith(n))return{comparator:JO[n],value:e.slice(n.length)};return t.endsWith(`*`)?{comparator:`starts_with`,value:e.slice(0,-1)}:{comparator:`equals`,value:e}}function ZO(){let e=q(),[t,n]=(0,G.useState)(!1);return{exportCsv:(0,G.useCallback)(async({databaseName:t,tableName:r,primaryKey:i,sort:a,conditions:o})=>{if(!i){U.error(`Cannot export "${r}": no primary key found.`);return}let s=U.loading(`Loading CSV...`);n(!0);try{let n={...e,databaseName:t,tableName:r,sort:a??{attribute:i,descending:!1},pageIndex:0,pageSize:1e6,onlyIfCached:!1,headers:{Accept:`text/csv`}},c=await(o?.length?WO({...n,conditions:o}):Db({...n,searchAttribute:i}));U.loading(`Preparing CSV...`,{id:s});let l=c.data,u=new Blob([l],{type:`text/csv`}),d=URL.createObjectURL(u),f=document.createElement(`a`);f.href=d,f.setAttribute(`download`,`${t}.${r}.${new Date().toISOString()}.csv`),f.click(),setTimeout(()=>URL.revokeObjectURL(d),1e3),U.success(`CSV Exported!`,{id:s})}catch(e){U.error(e instanceof Error?e.message:`Failed to export CSV`,{id:s})}finally{n(!1)}},[e]),isExporting:t}}function QO({databaseName:e,tableName:t,instanceDatabaseMap:n}){let{clusterId:r,instanceId:i}=B({strict:!1}),a=Pp(),o=Fp(i??r,e,t,`insert`),s=Lp(i??r,e,t),{exportCsv:c}=ZO(),l=Object.keys(n?.[e]||{}).length<=1,u=n?.[e]?.[t],d=!u||!!(u.primary_key??u.hash_attribute);return(0,K.jsxs)(K.Fragment,{children:[o&&d&&(0,K.jsxs)(Qd,{onSelect:()=>KD(`ShowAddTableRecords`,{databaseName:e,tableName:t}),children:[(0,K.jsx)(Ia,{}),`Add New Record(s)`]}),s&&d&&(0,K.jsxs)(Qd,{onSelect:()=>KD(`ShowImportData`,{databaseName:e,tableName:t}),children:[(0,K.jsx)(Jr,{}),`Import Data`]}),(0,K.jsxs)(Qd,{onSelect:()=>{let{primaryKey:n}=NO(u);c({databaseName:e,tableName:t,primaryKey:n,conditions:null})},disabled:!d,children:[(0,K.jsx)(Kr,{}),`Export CSV`]}),a&&!l&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(ef,{}),(0,K.jsxs)(Qd,{variant:`destructive`,onSelect:()=>KD(`ShowDeleteTable`,{databaseName:e,tableName:t}),children:[(0,K.jsx)(Eo,{}),`Drop Table`]})]})]})}function $O({databaseName:e,instanceDatabaseMap:t,children:n}){let[r,i]=(0,G.useState)(void 0),[a,o]=(0,G.useState)(``),s=(0,G.useCallback)(e=>{let t=e.target.closest(`[data-table-name]`)?.getAttribute(`data-table-name`);if(!t){i(void 0),e.preventDefault();return}i(t),o(`${e.clientX},${e.clientY}`)},[]);return(0,K.jsxs)(Yd,{modal:!1,children:[(0,K.jsx)(Xd,{asChild:!0,children:(0,K.jsx)(`div`,{onContextMenu:s,children:n})}),r&&(0,K.jsx)(Zd,{className:`min-w-44`,onCloseAutoFocus:e=>e.preventDefault(),children:(0,K.jsx)(QO,{databaseName:e,tableName:r,instanceDatabaseMap:t})},a)]})}async function ek({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t,exact_count:!1});return r}function tk(e){return z({queryKey:[e.entityId,e.databaseName,e.tableName,`describe_table`],queryFn:()=>ek(e),staleTime:6e4,gcTime:5e3,enabled:!!e.databaseName&&!!e.tableName,retry:!1})}function nk(e,t,n){if(e==null||!Number.isFinite(e))return`—`;let r=rk(e,t);return n?`${r}${n}`:r}function rk(e,t){switch(t){case`percent`:return`${(e*100).toFixed(1)}%`;case`ms`:return`${e.toFixed(1)} ms`;case`count`:return`${e.toFixed(0)}`;case`count-si`:{let t=Math.abs(e);if(t<1e3)return`${e}`;let n=e<0?`-`:``,r=e=>{if(e>=10)return`${Math.round(e)}`;let t=e.toFixed(1);return t.endsWith(`.0`)?t.slice(0,-2):t};return t<1e6?`${n}${r(t/1e3)}k`:t<1e9?`${n}${r(t/1e6)}M`:`${n}${r(t/1e9)}B`}case`cores`:return`${e.toFixed(2)} cores`;case`bytes-si`:case`bytes-iec`:{let n=t===`bytes-iec`?1024:1e3,r=t===`bytes-iec`?[`B`,`KiB`,`MiB`,`GiB`,`TiB`]:[`B`,`KB`,`MB`,`GB`,`TB`],i=e,a=0;for(;Math.abs(i)>=n&&a<r.length-1;)i/=n,a++;let o=+(i!==0&&Math.abs(i)<10);return`${i.toFixed(o)} ${r[a]}`}default:return`${e}`}}var ik=e=>nk(e,`bytes-si`);function ak({label:e,value:t}){return(0,K.jsxs)(`div`,{className:`rounded-md border border-border dark:border-grey-700 p-4`,children:[(0,K.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:e}),(0,K.jsx)(`div`,{className:`text-2xl font-medium`,children:t})]})}function ok({instanceDatabaseMap:e,databaseName:t}){let n=B({strict:!1}),r=L(),i=q(),a=Pp(),o=Rp(),s=e?.[t]??{},c=Object.keys(s).sort(),l=Ae({queries:c.map(e=>tk({...i,databaseName:t,tableName:e}))}),u={};c.forEach((e,t)=>{let n=l[t]?.data;n&&(u[e]={recordCount:n.record_count,estimated:!!n.estimated_record_range})});let d=l.every(e=>!e.isPending),f=c.some(e=>u[e]?.estimated),p=c.length?s[c[0]]:void 0,m=p?.db_size??0,h=p?.db_audit_size??0,g=d?c.reduce((e,t)=>e+(u[t]?.recordCount??0),0):void 0,_=(0,G.useCallback)(e=>{r({to:AE({...n,databaseName:t,tableName:e})})},[r,n,t]);return(0,K.jsxs)(`div`,{className:`pt-15 pb-4 px-4`,children:[(0,K.jsxs)(`div`,{className:`flex flex-col md:flex-row items-start md:items-center justify-between gap-3 pb-6`,children:[(0,K.jsx)(`div`,{className:`flex items-center gap-2 min-w-0`,children:(0,K.jsx)(`h1`,{className:`text-3xl truncate`,children:t})}),a&&(0,K.jsxs)(`div`,{className:`flex space-x-2 shrink-0`,children:[(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:()=>KD(`ShowCreateTable`,{databaseName:t}),children:[(0,K.jsx)(Ia,{}),(0,K.jsx)(`span`,{children:`Create a Table`})]}),o&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:()=>KD(`ShowImportData`,{databaseName:t}),children:[(0,K.jsx)(Jr,{}),(0,K.jsx)(`span`,{children:`Import Data`})]}),(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{variant:`ghost`,size:`icon`,children:(0,K.jsx)(oi,{"aria-label":`Database options`})})}),(0,K.jsx)(Zo,{side:`bottom`,align:`end`,children:(0,K.jsxs)(Qo,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>KD(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,K.jsx)(Eo,{}),`Drop Database`]})})]})]})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-2 lg:grid-cols-4 gap-3 pb-6`,children:[(0,K.jsx)(ak,{label:`Tables`,value:c.length.toLocaleString()}),(0,K.jsx)(ak,{label:`Records`,value:g===void 0?`…`:`${f?`~`:``}${g.toLocaleString()}`}),(0,K.jsx)(ak,{label:`Size`,value:ik(m)}),(0,K.jsx)(ak,{label:`Audit Size`,value:ik(h)})]}),c.length===0?(0,K.jsxs)(`div`,{className:`rounded-md border border-border dark:border-grey-700 p-8 text-center text-muted-foreground`,children:[(0,K.jsx)(`p`,{className:`pb-2`,children:`This database has no tables yet.`}),a&&(0,K.jsx)(`p`,{children:`Use “Create a Table” above, or right-click the database in the sidebar.`})]}):(0,K.jsx)($O,{databaseName:t,instanceDatabaseMap:e,children:(0,K.jsx)(`div`,{className:`rounded-md border border-border dark:border-grey-700 overflow-x-auto`,children:(0,K.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,K.jsx)(`thead`,{children:(0,K.jsxs)(`tr`,{className:`text-left text-muted-foreground border-b border-border dark:border-grey-700`,children:[(0,K.jsx)(`th`,{className:`p-3 font-medium`,children:`Table`}),(0,K.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Records`}),(0,K.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Size`}),(0,K.jsx)(`th`,{className:`p-3 font-medium text-right`,children:`Columns`}),(0,K.jsx)(`th`,{className:`p-3 font-medium`,children:`Primary Key`}),(0,K.jsx)(`th`,{className:`p-3 font-medium`,children:`Last Updated`})]})}),(0,K.jsx)(`tbody`,{children:c.map(e=>{let t=s[e],n=u[e],r=t.primary_key??t.hash_attribute??`—`,i=n?.recordCount===void 0?`…`:`${n.estimated?`~`:``}${n.recordCount.toLocaleString()}`;return(0,K.jsxs)(`tr`,{"data-table-name":e,onClick:()=>_(e),className:`border-b border-border dark:border-grey-700 last:border-0 cursor-pointer hover:bg-accent dark:hover:bg-grey-700/80`,children:[(0,K.jsx)(`td`,{className:`p-3 font-medium`,children:e}),(0,K.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:i}),(0,K.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:ik(t.table_size??0)}),(0,K.jsx)(`td`,{className:`p-3 text-right tabular-nums`,children:t.attributes.length.toLocaleString()}),(0,K.jsx)(`td`,{className:`p-3`,children:r}),(0,K.jsx)(`td`,{className:`p-3 text-muted-foreground`,children:t.last_updated_record?new Date(t.last_updated_record).toLocaleString():`—`})]},e)})})]})})})]})}function sk({item:e,context:t}){return e.isFolder?(0,K.jsx)(`div`,{className:P(`rct-tree-item-arrow`,`rct-tree-item-arrow-isFolder`,t.isExpanded&&`rct-tree-item-arrow-expanded`),"aria-hidden":!0,tabIndex:-1,onMouseDown:e=>e.preventDefault(),onClick:e=>{e.stopPropagation(),t.toggleExpandedState()},children:t.isExpanded?(0,K.jsx)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:(0,K.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})}):(0,K.jsx)(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,children:(0,K.jsx)(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})})}):(0,K.jsx)(`div`,{className:`rct-tree-item-arrow`,"aria-hidden":!0})}var ck;(function(e){e.DoubleClickItemToExpand=`double-click-item-to-expand`,e.ClickItemToExpand=`click-item-to-expand`,e.ClickArrowToExpand=`click-arrow-to-expand`})(ck||={});var lk=function(){return lk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},lk.apply(this,arguments)},uk=function(e,t){return{mode:e.mode,createInteractiveElementProps:function(n,r,i,a){return lk(lk({},t.createInteractiveElementProps(n,r,i,a)),e.createInteractiveElementProps(n,r,i,a))}}},dk=function(e){return e.ctrlKey||navigator.platform.toUpperCase().indexOf(`MAC`)>=0&&e.metaKey},fk=function(){function e(e){this.mode=ck.DoubleClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(e){var t=e.detail===0;n.focusItem(),e.shiftKey&&!t?n.selectUpTo(!dk(e)):dk(e)&&!t?r.isSelected?n.unselectItem():n.addToSelectedItems():n.selectItem()},onDoubleClick:function(){n.focusItem(),n.selectItem(),e.isFolder&&n.toggleExpandedState(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction()},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),pk=function(){function e(e){this.mode=ck.ClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(t){var a=t.detail===0;n.focusItem(),t.shiftKey&&!a?n.selectUpTo(!dk(t)):dk(t)&&!a?r.isSelected?n.unselectItem():n.addToSelectedItems():(e.isFolder&&n.toggleExpandedState(),n.selectItem(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction())},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),mk=function(){function e(e){this.mode=ck.ClickItemToExpand,this.environment=e}return e.prototype.createInteractiveElementProps=function(e,t,n,r){var i=this;return{onClick:function(t){var a=t.detail===0;n.focusItem(),t.shiftKey&&!a?n.selectUpTo(!dk(t)):dk(t)&&!a?r.isSelected?n.unselectItem():n.addToSelectedItems():(n.selectItem(),(!e.isFolder||i.environment.canInvokePrimaryActionOnItemContainer)&&n.primaryAction())},onFocus:function(){n.focusItem()},onDragStart:function(e){e.dataTransfer.dropEffect=`move`,n.startDragging()},onDragOver:function(e){e.preventDefault()},draggable:r.canDrag&&!r.isRenaming,tabIndex:r.isRenaming?void 0:r.isFocused?0:-1}},e}(),hk=function(e,t){switch(e){case ck.DoubleClickItemToExpand:return new fk(t);case ck.ClickItemToExpand:return new pk(t);case ck.ClickArrowToExpand:return new mk(t);default:throw Error(`Unknown interaction mode ${e}`)}},gk=G.createContext(null),_k=function(){return G.useContext(gk)},vk=function(e){var t=e.children,n=iA(),r=n.defaultInteractionMode,i=(0,G.useMemo)(function(){return r&&typeof r!=`string`?r.extends?uk(r,hk(r.extends,n)):r:hk(r??ck.ClickItemToExpand,n)},[]);return G.createElement(gk.Provider,{value:i},t)},yk=function(){var e=iA();return(0,G.useCallback)(function(t,n){if(t.targetType===`between-items`){if(!e.canReorderItems)return!1}else if(t.targetType===`root`){if(!e.canDropOnFolder)return!1}else{var r=e.items[t.targetItem];if(!r||!e.canDropOnFolder&&r.isFolder||!e.canDropOnNonFolder&&!r.isFolder||n.some(function(e){return e.index===t.targetItem}))return!1}return!(e.canDropAt&&(!n||!e.canDropAt(n,t)))},[e])},bk=function(){var e=iA();return(0,G.useCallback)(function(t,n){for(var r=e.linearItems[n],i=r[t].depth,a=t;r[a]&&r[a].depth!==i-1;--a);var o=r[a];return o||(o={item:e.trees[n].rootItem,depth:0},a=0),{parent:o,parentLinearIndex:a}},[e.linearItems,e.trees])},xk=function(){var e=iA(),t=bk(),n=yk(),r=(0,G.useCallback)(function(e,n,i){var a=t(n,e),o=a.parent,s=a.parentLinearIndex;return i.some(function(e){return e.index===o.item})?!0:o.depth!==0&&r(e,s,i)},[t]);return(0,G.useCallback)(function(i,a){for(var o=e.linearItems[i],s=[],c=-1,l=0;l<o.length;l++){var u=o[l],d=u.item,f=u.depth;if(!(c!==-1&&f>c)){c=-1;var p=t(l,i).parent,m=e.items[p.item].children.indexOf(d);if(r(i,l,a)){c=f+1;continue}var h={targetType:`item`,parentItem:p.item,targetItem:d,linearIndex:l,depth:f,treeId:i},g={targetType:`between-items`,parentItem:p.item,linePosition:`top`,childIndex:m,depth:f,treeId:i,linearIndex:l},_={targetType:`between-items`,parentItem:p.item,linePosition:`bottom`,linearIndex:l+1,childIndex:m+1,depth:f,treeId:i},v=o[l-1]?.depth??-1,y=o[l+1]?.depth??-1,b=f===v,x=f===y-1;!b&&n(g,a)&&s.push(g),n(h,a)&&s.push(h),!x&&n(_,a)&&s.push(_)}}return s},[n,e.items,e.linearItems,t,r])},Sk=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},Ck=function(e,t,n){var r=(0,G.useRef)();(0,G.useEffect)(function(){r.current?r.current.some(function(e,t){return e!==n[t]})&&(r.current=Sk([],n,!0),e()):(r.current=Sk([],n,!0),e())},Sk(Sk([],t,!0),n,!0))},wk=function(){return wk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},wk.apply(this,arguments)},Tk=function(e,t){return e.map(function(e){return[e,t(e)]}).reduce(function(e,t){var n,r=t[0],i=t[1];return wk(wk({},e),(n={},n[r]=i,n))},{})},Ek=function(){return typeof document<`u`?document:void 0};function Dk(e){e===void 0&&(e=!1);var t=(0,G.useRef)([]);return(0,G.useEffect)(function(){if(e)return function(){};var n=t.current;return function(){return n.forEach(function(e){return cancelAnimationFrame(e)})}},[e,t]),(0,G.useCallback)(function(e){var n=requestAnimationFrame(function(){t.current.splice(t.current.indexOf(n),1),e()});t.current.push(n)},[t])}var Ok=function(e){var t=(0,G.useRef)(e);return t.current=e,t},kk=function(e){var t=Ok(e);return(0,G.useCallback)((function(){var e=[...arguments];return t.current.apply(t,e)}),[t])},Ak=function(){var e=iA();return kk(function(t,n){return n.map(function(n){return[n,e.linearItems[t].findIndex(function(e){return e.item===n.index})]}).sort(function(e,t){e[0];var n=e[1];return t[0],n-t[1]}).map(function(e){return e[0]})})},jk=function(e){var t=Ek()?.querySelector(`[data-rct-tree="${e}"] [data-rct-item-container="true"]`);if(t){var n=getComputedStyle(t);return t.offsetHeight+Math.max(parseFloat(n.marginTop),parseFloat(n.marginBottom))}return 5},Mk=function(e,t){return e.clientX<=t.left||e.clientX>=t.right||e.clientY<=t.top||e.clientY>=t.bottom},Nk=function(){function e(e,t,n,r,i,a){this.env=e,this.e=t,this.treeId=n,this.linearIndex=r.linearIndex,this.offset=r.offset,this.indentation=r.indentation,this.targetItem=this.env.linearItems[this.treeId][this.linearIndex],this.getParentOfLinearItem=a,this.draggingItems=i}return e.prototype.getEmptyTreeDragPosition=function(){return{targetType:`root`,treeId:this.treeId,depth:0,linearIndex:0,targetItem:this.env.trees[this.treeId].rootItem}},e.prototype.maybeRedirectToParent=function(){if(!this.env.canReorderItems&&!this.env.canDropOnNonFolder&&!this.env.items[this.targetItem.item].isFolder){var e=this.getParentOfLinearItem(this.linearIndex,this.treeId),t=e.parentLinearIndex,n=e.parent;this.targetItem=n,this.linearIndex=t}},e.prototype.maybeReparentUpwards=function(){if(this.indentation!==void 0){var e=this.env.linearItems[this.treeId],t=e[this.linearIndex].depth,n=t-(e[this.linearIndex+1]?.depth??0);if(this.offset===`bottom`&&n>0){for(var r=Math.max(t-n,this.indentation),i={parentLinearIndex:this.linearIndex,parent:this.targetItem},a,o=t;o>=r;--o)a=i,i=this.getParentOfLinearItem(i.parentLinearIndex,this.treeId);if(this.indentation!==e[this.linearIndex].depth&&a){var s=this.env.items[i.parent.item].children.indexOf(a.parent.item)+1;if(!(this.draggingItems&&this.isDescendant(this.treeId,i.parentLinearIndex+1,this.draggingItems)))return{targetType:`between-items`,treeId:this.treeId,parentItem:i.parent.item,depth:r,linearIndex:this.linearIndex+1,childIndex:s,linePosition:`bottom`}}}}},e.prototype.maybeRedirectInsideOpenFolder=function(){var e=this.env.linearItems[this.treeId][this.linearIndex+1];!this.env.canDropBelowOpenFolders&&e&&this.targetItem.depth===e.depth-1&&this.offset===`bottom`&&(this.targetItem=e,this.linearIndex+=1,this.offset=`top`)},e.prototype.maybeMapToBottomOffset=function(){var e=this.env.linearItems[this.treeId][this.linearIndex-1];if(e&&e?.depth!==void 0){var t=e.depth-this.targetItem.depth;this.offset===`top`&&(t===0||t>0&&this.indentation!==void 0)&&(this.offset=`bottom`,--this.linearIndex,this.targetItem=this.env.linearItems[this.treeId][this.linearIndex])}},e.prototype.canDropAtCurrentTarget=function(){var e=this,t=this.env.items[this.targetItem.item];return!(!this.offset&&!this.env.canDropOnNonFolder&&!t.isFolder||!this.offset&&!this.env.canDropOnFolder&&t.isFolder||this.offset&&!this.env.canReorderItems||this.draggingItems?.some(function(t){return t.index===e.targetItem.item}))},e.prototype.getDraggingPosition=function(){if(this.env.linearItems[this.treeId].length===0)return this.getEmptyTreeDragPosition();if(!(!this.draggingItems||this.linearIndex<0||this.linearIndex>=this.env.linearItems[this.treeId].length)){this.maybeRedirectToParent(),this.maybeRedirectInsideOpenFolder(),this.maybeMapToBottomOffset();var e=this.maybeReparentUpwards();if(e)return e;if(this.areDraggingItemsDescendantOfTarget()||!this.canDropAtCurrentTarget())return`invalid`;var t=this.getParentOfLinearItem(this.linearIndex,this.treeId).parent,n=this.env.items[t.item].children.indexOf(this.targetItem.item)+(this.offset===`top`?0:1);return this.offset?{targetType:`between-items`,treeId:this.treeId,parentItem:t.item,depth:this.targetItem.depth,linearIndex:this.linearIndex+(this.offset===`top`?0:1),childIndex:n,linePosition:this.offset}:{targetType:`item`,treeId:this.treeId,parentItem:t.item,targetItem:this.targetItem.item,depth:this.targetItem.depth,linearIndex:this.linearIndex}}},e.prototype.isDescendant=function(e,t,n){var r=this.getParentOfLinearItem(t,e),i=r.parentLinearIndex,a=r.parent;return n.some(function(e){return e.index===a.item})?!0:a.depth!==0&&this.isDescendant(e,i,n)},e.prototype.areDraggingItemsDescendantOfTarget=function(){return this.draggingItems&&this.isDescendant(this.treeId,this.linearIndex,this.draggingItems)},e}(),Pk=function(){var e=(0,G.useRef)(`initial`),t=(0,G.useState)(void 0),n=t[0],r=t[1],i=(0,G.useRef)(0),a=iA(),o=bk(),s=kk(function(t,n,r){if(!r)return!1;var i=r.offset,a=`${n}__${r.linearIndex}__${i??``}__${r.indentation}`;return a!==e.current&&(e.current=a,!0)}),c=kk(function(e,t,n){if(n.current){var r=n.current.getBoundingClientRect();if(!Mk(e,r)){var o=(e.clientY-r.top)/i.current,s=a.linearItems[t],c=Math.min(Math.max(0,Math.floor(o)),s.length-1);if(s.length===0)return{linearIndex:0,offset:`bottom`,indentation:0};var l=s[c],u=a.items[l.item],d=a.renderDepthOffset?Math.max(Math.floor((e.clientX-r.left)/a.renderDepthOffset),0):void 0,f,p=a.canReorderItems?u?.isFolder&&a.canDropOnFolder||a.canDropOnNonFolder?.2:.5:0;return o-.5>=s.length-1?f=`bottom`:o%1<p?f=`top`:o%1>1-p&&(f=`bottom`),{linearIndex:c,offset:f,indentation:d}}}}),l=kk(function(e,t,r){var i=c(e,t,r);if(s(e,t,i))return!n||!a.canDragAndDrop||!i||e.clientX<0||e.clientY<0?`invalid`:new Nk(a,e,t,i,n,o).getDraggingPosition()});return{initiateDraggingPosition:kk(function(t,n){r(n),e.current=`initial`,i.current=jk(t)}),resetDraggingPosition:kk(function(){r(void 0),e.current=`initial`,i.current=0}),draggingItems:n,getDraggingPosition:l,itemHeight:i}},Fk=G.createContext(null),Ik=function(){return G.useContext(Fk)},Lk=function(e){var t=e.children,n=iA(),r=(0,G.useState)(!1),i=r[0],a=r[1],o=(0,G.useState)({}),s=o[0],c=o[1],l=(0,G.useState)(0),u=l[0],d=l[1],f=(0,G.useState)(),p=f[0],m=f[1],h=xk(),g=Dk(),_=Ak(),v=Pk(),y=v.initiateDraggingPosition,b=v.resetDraggingPosition,x=v.draggingItems,S=v.getDraggingPosition,C=v.itemHeight,w=(0,G.useCallback)(function(e,t){if(n.activeTreeId&&n.viewState[n.activeTreeId]?.focusedItem&&n.linearItems&&t){var r=n.viewState[n.activeTreeId].focusedItem,i=h(n.activeTreeId,t),a=i.findIndex(function(e){return e.targetType===`item`?e.targetItem===r:e.targetType===`between-items`&&n.items[e.parentItem].children[e.childIndex]===r});d(a?Math.min(a+1,i.length-1):0)}else d(0)},[n.activeTreeId,n.items,n.linearItems,n.viewState,h]),T=kk(function(){a(!1),c({}),d(0),m(void 0),b()});Ck(function(){n.activeTreeId&&n.linearItems[n.activeTreeId]&&s[n.activeTreeId]&&w(s[n.activeTreeId],x)},[x,n.activeTreeId,n.linearItems,w,s],[n.activeTreeId]),Ck(function(){i&&n.activeTreeId&&m(s[n.activeTreeId][u])},[u,n.activeTreeId,i,s],[u,n.activeTreeId]);var E=yk(),D=function(e){var t;(!x||E(e,x))&&(m(e),n.setActiveTree(e.treeId),x&&n.activeTreeId!==e.treeId&&((t=n.onSelectItems)==null||t.call(n,x.map(function(e){return e.index}),e.treeId)))},O=kk(function(e,t,n){if(x){var r=S(e,t,n);if(r){if(r===`invalid`){m(void 0);return}D(r)}}}),k=kk(function(e,t){t.current&&Mk(e,t.current.getBoundingClientRect())&&m(void 0)}),A=kk(function(){x&&p&&n.onDrop&&(n.onDrop(x,p),g(function(){var e;(e=n.onFocusItem)==null||e.call(n,x[0],p.treeId),T()}))}),ee=(0,G.useCallback)(function(e,t){var r=Tk(n.treeIds,function(t){return h(t,e)});y(t,e),c(r),n.activeTreeId&&w(r[n.activeTreeId],e)},[n.activeTreeId,n.treeIds,h,y,w]),te=(0,G.useCallback)(function(){if(n.canDragAndDrop&&n.activeTreeId){var e=n.viewState[n.activeTreeId]?.selectedItems??[n.viewState[n.activeTreeId]?.focusedItem];if(e.length===0||e[0]===void 0)return;var t=_(n.activeTreeId,e.map(function(e){return n.items[e]}));if(n.canDrag&&!n.canDrag(t))return;ee(t,n.activeTreeId),setTimeout(function(){a(!0)})}},[n,_,ee]),j=(0,G.useCallback)(function(){T()},[T]),M=(0,G.useCallback)(function(){A(),T()},[A,T]),N=(0,G.useCallback)(function(){d(function(e){return Math.max(0,e-1)})},[]),P=(0,G.useCallback)(function(){n.activeTreeId&&d(function(e){return Math.min(s[n.activeTreeId].length-1,e+1)})},[n.activeTreeId,s]),ne=(0,G.useMemo)(function(){return{onStartDraggingItems:ee,startProgrammaticDrag:te,abortProgrammaticDrag:j,completeProgrammaticDrag:M,programmaticDragUp:N,programmaticDragDown:P,draggingItems:x,draggingPosition:p,itemHeight:C.current,isProgrammaticallyDragging:i,onDragOverTreeHandler:O,onDragLeaveContainerHandler:k,viableDragPositions:s}},[j,M,x,p,i,C,O,k,ee,P,N,te,s]);return(0,G.useEffect)(function(){return window.addEventListener(`dragend`,T),window.addEventListener(`drop`,A),function(){window.removeEventListener(`dragend`,T),window.removeEventListener(`drop`,A)}},[A,T]),G.createElement(Fk.Provider,{value:ne},t)},Rk=function(){return Rk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Rk.apply(this,arguments)},zk=function(e,t){var n=iA(),r=Ik();(0,G.useImperativeHandle)(e,function(){return Rk(Rk(Rk({},t),n),{treeEnvironmentContext:n,dragAndDropContext:r})})},Bk=function(e,t,n){return t===void 0&&(t=50),n===void 0&&(n=1e4),new Promise(function(r){e()&&r();var i,a=setInterval(function(){e()&&i()},t),o=setTimeout(function(){i()},n);i=function(){clearInterval(a),clearTimeout(o),r()}})},Vk=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Hk=function(e,t){var n={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,i,a,o={next:s(0),throw:s(1),return:s(2)};return typeof Symbol==`function`&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return c([e,t])}}function c(s){if(r)throw TypeError(`Generator is already executing.`);for(;o&&(o=0,s[0]&&(n=0)),n;)try{if(r=1,i&&(a=s[0]&2?i.return:s[0]?i.throw||((a=i.return)&&a.call(i),0):i.next)&&!(a=a.call(i,s[1])).done)return a;switch(i=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return n.label++,{value:s[1],done:!1};case 5:n.label++,i=s[1],s=[0];continue;case 7:s=n.ops.pop(),n.trys.pop();continue;default:if(a=n.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){n.label=s[1];break}if(s[0]===6&&n.label<a[1]){n.label=a[1],a=s;break}if(a&&n.label<a[2]){n.label=a[2],n.ops.push(s);break}a[2]&&n.ops.pop(),n.trys.pop();continue}s=t.call(e,n)}catch(e){s=[6,e],i=0}finally{r=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}},Uk=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},Wk=G.createContext(null),Gk=function(){return G.useContext(Wk)},Kk=function(e,t,n){return Vk(void 0,void 0,void 0,function(){var r,i,a,o;return Hk(this,function(s){for(r=function(e){Bk(function(){return!!t.current?.[e]}).then(function(){var r=t.current?.[e];r?.isFolder&&(n(r),Kk(e,t,n))})},i=0,a=t.current?.[e]?.children??[];i<a.length;i++)o=a[i],r(o);return[2]})})},qk=G.forwardRef(function(e,t){var n=iA(),r=n.onCollapseItem,i=n.items,a=n.trees,o=n.viewState,s=n.onExpandItem,c=n.onFocusItem,l=n.setActiveTree,u=n.onRenameItem,d=n.onSelectItems,f=n.onPrimaryAction,p=n.linearItems,m=Ik(),h=m.abortProgrammaticDrag,g=m.completeProgrammaticDrag,_=m.programmaticDragDown,v=m.programmaticDragUp,y=m.startProgrammaticDrag,b=Ok(i),x=(0,G.useCallback)(function(e,t){r?.(i[e],t)},[i,r]),S=(0,G.useCallback)(function(e,t){s?.(i[e],t)},[i,s]),C=(0,G.useCallback)(function(e,t,n){n===void 0&&(n=!0),c?.(i[e],t,n)},[i,c]),w=(0,G.useCallback)(function(e,t){t===void 0&&(t=!0),l(e,t)},[l]),T=(0,G.useCallback)(function(e){var t=p[e],n=t.findIndex(function(t){return t.item===o[e]?.focusedItem}),r=i[t[n===void 0?0:Math.min(t.length-1,n+1)].item];c?.(r,e)},[i,p,c,o]),E=(0,G.useCallback)(function(e){var t=p[e],n=t.findIndex(function(t){return t.item===o[e]?.focusedItem}),r=i[t[n===void 0?0:Math.max(0,n-1)].item];c?.(r,e)},[i,p,c,o]),D=(0,G.useCallback)(function(e,t,n){u?.(i[e],t,n)},[i,u]),O=(0,G.useCallback)(function(e,t){d?.(e,t)},[d]),k=(0,G.useCallback)(function(e,t){(o[t]?.expandedItems)?.includes(e)?r?.(i[e],t):s?.(i[e],t)},[i,r,s,o]),A=(0,G.useCallback)(function(e,t){(o[t]?.selectedItems)?.includes(e)?d?.(o[t].selectedItems?.filter(function(t){return t!==e})??[],t):d?.(Uk(Uk([],o[t].selectedItems??[],!0),[e],!1),t)},[d,o]),ee=(0,G.useCallback)(function(e,t){f?.(i[e],t)},[i,f]),te=(0,G.useCallback)(function(e,t){return Vk(void 0,void 0,void 0,function(){var n,r;return Hk(this,function(i){switch(i.label){case 0:return n=t[0],r=t.slice(1),[4,Bk(function(){return!!b.current?.[n]}).then(function(){var t=b.current[n];return t?(s?.(t,e),r.length>0?te(e,r):Promise.resolve()):Promise.resolve()})];case 1:return i.sent(),[2]}})})},[b,s]),j=(0,G.useCallback)(function(e){return Vk(void 0,void 0,void 0,function(){return Hk(this,function(t){switch(t.label){case 0:return[4,Kk(a[e].rootItem,b,function(t){return s?.(t,e)})];case 1:return t.sent(),[2]}})})},[b,s,a]),M=(0,G.useCallback)(function(e){for(var t=0,n=o[e]?.expandedItems??[];t<n.length;t++){var a=n[t];r?.(i[a],e)}},[i,r,o]),N=(0,G.useMemo)(function(){return{collapseItem:x,expandItem:S,focusItem:C,focusTree:w,moveFocusDown:T,moveFocusUp:E,renameItem:D,selectItems:O,toggleItemExpandedState:k,toggleItemSelectStatus:A,invokePrimaryAction:ee,expandAll:j,expandSubsequently:te,collapseAll:M,abortProgrammaticDrag:h,completeProgrammaticDrag:g,moveProgrammaticDragPositionDown:_,moveProgrammaticDragPositionUp:v,startProgrammaticDrag:y}},[x,S,C,w,T,E,D,O,k,A,ee,j,te,M,h,g,_,v,y]);return zk(t,N),G.createElement(Wk.Provider,{value:N},e.children)}),Jk=function(e){if(e){if(e.scrollIntoViewIfNeeded)e.scrollIntoViewIfNeeded();else{var t=e.getBoundingClientRect();t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||!!Ek()?.documentElement?.clientHeight)&&t.right<=(window.innerWidth||!!Ek()?.documentElement?.clientWidth)||e.scrollIntoView()}}},Yk=function(){return Yk=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Yk.apply(this,arguments)},Xk=function(){return[...arguments].filter(function(e){return!!e}).join(` `)},Zk=function(e,t){return{renderItemTitle:function(e){var t=e.title,n=e.context,r=e.info;if(!r.isSearching||!n.isSearchMatching)return t;var i=t.toLowerCase().indexOf(r.search.toLowerCase());return G.createElement(G.Fragment,null,i>0&&G.createElement(`span`,null,t.slice(0,i)),G.createElement(`span`,{className:`rct-tree-item-search-highlight`},t.slice(i,i+r.search.length)),i+r.search.length<t.length&&G.createElement(`span`,null,t.slice(i+r.search.length,t.length)))},renderItemArrow:function(e){var t=e.item,n=e.context;return G.createElement(`div`,Yk({className:Xk(t.isFolder&&`rct-tree-item-arrow-isFolder`,n.isExpanded&&`rct-tree-item-arrow-expanded`,`rct-tree-item-arrow`)},n.arrowProps),t.isFolder&&(n.isExpanded?G.createElement(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,viewBox:`0 0 16 16`,enableBackground:`new 0 0 16 16`,xmlSpace:`preserve`},G.createElement(`g`,null,G.createElement(`g`,null,G.createElement(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`})))):G.createElement(`svg`,{version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,xmlnsXlink:`http://www.w3.org/1999/xlink`,x:`0px`,y:`0px`,viewBox:`0 0 16 16`,enableBackground:`new 0 0 16 16`,xmlSpace:`preserve`},G.createElement(`g`,null,G.createElement(`g`,null,G.createElement(`path`,{fillRule:`evenodd`,clipRule:`evenodd`,d:`M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z`,className:`rct-tree-item-arrow-path`}))))))},renderItem:function(t){var n=t.item,r=t.depth,i=t.children,a=t.title,o=t.context,s=t.arrow,c=o.isRenaming?`div`:`button`,l=o.isRenaming?void 0:`button`;return G.createElement(`li`,Yk({},o.itemContainerWithChildrenProps,{className:Xk(`rct-tree-item-li`,n.isFolder&&`rct-tree-item-li-isFolder`,o.isSelected&&`rct-tree-item-li-selected`,o.isExpanded&&`rct-tree-item-li-expanded`,o.isFocused&&`rct-tree-item-li-focused`,o.isDraggingOver&&`rct-tree-item-li-dragging-over`,o.isSearchMatching&&`rct-tree-item-li-search-match`)}),G.createElement(`div`,Yk({},o.itemContainerWithoutChildrenProps,{style:{"--depthOffset":`${(r+1)*e}px`},className:Xk(`rct-tree-item-title-container`,n.isFolder&&`rct-tree-item-title-container-isFolder`,o.isSelected&&`rct-tree-item-title-container-selected`,o.isExpanded&&`rct-tree-item-title-container-expanded`,o.isFocused&&`rct-tree-item-title-container-focused`,o.isDraggingOver&&`rct-tree-item-title-container-dragging-over`,o.isSearchMatching&&`rct-tree-item-title-container-search-match`)}),s,G.createElement(c,Yk({type:l},o.interactiveElementProps,{className:Xk(`rct-tree-item-button`,n.isFolder&&`rct-tree-item-button-isFolder`,o.isSelected&&`rct-tree-item-button-selected`,o.isExpanded&&`rct-tree-item-button-expanded`,o.isFocused&&`rct-tree-item-button-focused`,o.isDraggingOver&&`rct-tree-item-button-dragging-over`,o.isSearchMatching&&`rct-tree-item-button-search-match`)}),a)),i)},renderRenameInput:function(e){var t=e.inputProps,n=e.inputRef,r=e.submitButtonProps,i=e.submitButtonRef,a=e.formProps;return G.createElement(`form`,Yk({},a,{className:`rct-tree-item-renaming-form`}),G.createElement(`input`,Yk({},t,{ref:n,className:`rct-tree-item-renaming-input`})),G.createElement(`input`,Yk({},r,{ref:i,type:`submit`,className:`rct-tree-item-renaming-submit-button`,value:`🗸`})))},renderTreeContainer:function(e){var n=e.children,r=e.containerProps,i=e.info;return G.createElement(`div`,{className:Xk(`rct-tree-root`,i.isFocused&&`rct-tree-root-focus`,i.isRenaming&&`rct-tree-root-renaming`,i.areItemsSelected&&`rct-tree-root-itemsselected`,t&&`rct-rtl`)},G.createElement(`div`,Yk({},r,{style:Yk({minHeight:`30px`},r.style)}),n))},renderItemsContainer:function(e){var t=e.children,n=e.containerProps;return G.createElement(`ul`,Yk({},n,{className:`rct-tree-items-container`}),t)},renderDragBetweenLine:function(t){var n=t.draggingPosition,r=t.lineProps;return G.createElement(`div`,Yk({},r,{style:{left:`${n.depth*e}px`},className:Xk(`rct-tree-drag-between-line`,n.targetType===`between-items`&&n.linePosition===`top`&&`rct-tree-drag-between-line-top`,n.targetType===`between-items`&&n.linePosition===`bottom`&&`rct-tree-drag-between-line-bottom`)}))},renderSearchInput:function(e){var t=e.inputProps;return G.createElement(`div`,{className:Xk(`rct-tree-search-input-container`)},G.createElement(`span`,{className:`rct-tree-input-icon`}),G.createElement(`input`,Yk({},t,{className:Xk(`rct-tree-search-input`)})))},renderLiveDescriptorContainer:function(e){var t=e.tree,n=e.children;return G.createElement(`div`,{id:`rct-livedescription-${t.treeId}`,style:{clip:`rect(0 0 0 0)`,clipPath:`inset(50%)`,height:`1px`,overflow:`hidden`,position:`absolute`,whiteSpace:`nowrap`,width:`1px`}},n)},renderDepthOffset:e}},Qk=function(e){var t=e.renderItem,n=e.renderItemTitle,r=e.renderItemArrow,i=e.renderRenameInput,a=e.renderItemsContainer,o=e.renderTreeContainer,s=e.renderDragBetweenLine,c=e.renderSearchInput,l=e.renderLiveDescriptorContainer,u=e.renderDepthOffset,d=(0,G.useMemo)(function(){return Zk(u??10)},[u]),f={renderItem:t,renderItemTitle:n,renderItemArrow:r,renderRenameInput:i,renderItemsContainer:a,renderTreeContainer:o,renderDragBetweenLine:s,renderSearchInput:c,renderLiveDescriptorContainer:l,renderDepthOffset:u},p=Object.entries(d).reduce(function(e,t){var n=t[0],r=t[1],i=n;return e[i]=f[i]?f[i]:r,e},{});return p.renderItem.displayName=`RenderItem`,p.renderItemTitle.displayName=`RenderItemTitle`,p.renderItemArrow.displayName=`RenderItemArrow`,p.renderRenameInput.displayName=`RenderRenameInput`,p.renderItemsContainer.displayName=`RenderItemsContainer`,p.renderTreeContainer.displayName=`RenderTreeContainer`,p.renderDragBetweenLine.displayName=`RenderDragBetweenLine`,p.renderSearchInput.displayName=`RenderSearchInput`,p},$k=function(e,t,n,r){r===void 0&&(r=0);for(var i=[],a=0,o=n[e]?.children??[];a<o.length;a++){var s=o[a],c=n[s];i.push({item:s,depth:r}),c&&c.isFolder&&c.children&&t.expandedItems?.includes(s)&&i.push.apply(i,$k(s,t,n,r+1))}return i},eA=function(){return eA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},eA.apply(this,arguments)},tA=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},nA=function(e){var t=e.onExpandItem,n=e.onCollapseItem,r=e.onDrop,i=tA(e,[`onExpandItem`,`onCollapseItem`,`onDrop`]),a=(0,G.useState)({}),o=a[0],s=a[1],c=(0,G.useState)(),l=c[0],u=c[1],d=(0,G.useMemo)(function(){return Object.keys(o)},[o]),f=i.onFocusItem,p=i.autoFocus,m=i.onRegisterTree,h=i.onUnregisterTree,g=i.items,_=i.viewState,v=Ok(f),y=Ok(_),b=(0,G.useMemo)(function(){return Tk(d,function(e){return $k(o[e].rootItem,_[e]??{},g)})},[o,g,d,_]),x=(0,G.useCallback)(function(e,t,n){var r,i;if(n===void 0&&(n=!0),(p??!0)&&n){var a=Ek()?.querySelector(`[data-rct-tree="${t}"] [data-rct-item-id="${e.index}"]`)??Ek()?.querySelector(`[data-rct-tree="${t}"] [data-rct-item-id]`);(Ek()?.activeElement)?.attributes.getNamedItem(`data-rct-search-input`)?.value===`true`?Jk(a):(r=a?.focus)==null||r.call(a)}y.current[t]?.focusedItem!==e.index&&((i=v.current)==null||i.call(v,e,t))},[p,v,y]),S=(0,G.useCallback)(function(e){s(function(t){var n;return eA(eA({},t),(n={},n[e.treeId]=e,n))}),m?.(e)},[m]),C=(0,G.useCallback)(function(e){h?.(o[e]),s(function(t){var n=eA({},t);return delete n[e],n})},[h,o]),w=(0,G.useCallback)(function(e,t){n?.(e,t),s(function(e){return e})},[n]),T=(0,G.useCallback)(function(e,n){t?.(e,n),s(function(e){return e})},[t]),E=(0,G.useCallback)(function(e,t){r?.(e,t),s(function(e){return e})},[r]),D=(0,G.useCallback)(function(e){var t,n=Ek()?.querySelector(`[data-rct-tree="${e}"] [data-rct-item-focus="true"]`);(t=n?.focus)==null||t.call(n)},[]),O=(0,G.useCallback)(function(e,t){t===void 0&&(t=!0);var n=function(e){t&&(p??!0)&&e&&!(Ek()?.querySelector(`[data-rct-tree="${e}"]`))?.contains(document.activeElement)&&D(e)};if(typeof e==`function`)u(function(t){var r=e(t);return r!==t&&n(r),r});else{var r=e;u(r),n(r)}},[p,D]),k=Qk(i);return eA(eA(eA({},k),i),{onFocusItem:x,registerTree:S,unregisterTree:C,onExpandItem:T,onCollapseItem:w,onDrop:E,setActiveTree:O,treeIds:d,trees:o,activeTreeId:l,linearItems:b})},rA=G.createContext(null),iA=function(){return(0,G.useContext)(rA)},aA=G.forwardRef(function(e,t){var n=nA(e),r=e.viewState,i=e.onFocusItem;return(0,G.useEffect)(function(){for(var t=0,a=Object.keys(n.trees);t<a.length;t++){var o=a[t],s=e.items[n.trees[o].rootItem]?.children?.[0],c=s&&e.items[s];!r[o]?.focusedItem&&n.trees[o]&&c&&i?.(c,o,!1)}},[n.trees,i,e.items,r]),G.createElement(rA.Provider,{value:n},G.createElement(vk,null,G.createElement(Lk,null,G.createElement(qk,{ref:t},e.children))))}),oA=function(e){var t=e.treeId,n=Ik(),r=n.draggingPosition,i=n.itemHeight,a=VA().renderers;return r&&r.targetType===`between-items`&&r.treeId===t?G.createElement(`div`,{style:{position:`absolute`,left:`0`,right:`0`,top:`${(r?.linearIndex??0)*i}px`}},a.renderDragBetweenLine({draggingPosition:r,lineProps:{onDragOver:function(e){return e.preventDefault()}}})):null},sA=function(e,t,n){var r=kk(n);(0,G.useEffect)(function(){return e?(e.addEventListener(t,r),function(){return e.removeEventListener(t,r)}):function(){}},[e,r,t])},cA=function(e,t,n){var r=(0,G.useState)(!1),i=r[0],a=r[1],o=(0,G.useRef)(!1),s=Dk();return sA(e,`focusin`,function(){i||(a(!0),t?.()),o.current&&=!1}),sA(e,`focusout`,function(){o.current=!0,s(function(){o.current&&!e?.contains(document.activeElement)&&(n?.(),o.current=!1,a(!1))})}),i},lA=function(e,t,n){sA(Ek(),`keydown`,function(r){n&&n&&e.toLowerCase()===r.key.toLowerCase()&&t(r)})},uA={expandSiblings:[`control+*`],moveFocusToFirstItem:[`home`],moveFocusToLastItem:[`end`],primaryAction:[`enter`],renameItem:[`f2`],abortRenameItem:[`escape`],toggleSelectItem:[`control+ `],abortSearch:[`escape`,`enter`],startSearch:[],selectAll:[`control+a`],startProgrammaticDnd:[`control+shift+d`],completeProgrammaticDnd:[`enter`],abortProgrammaticDnd:[`escape`]},dA=function(){return dA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},dA.apply(this,arguments)},fA=function(){var e=iA();return(0,G.useMemo)(function(){return e.keyboardBindings?dA(dA({},uA),e.keyboardBindings):uA},[e.keyboardBindings])},pA=[`input`,`textarea`],mA=function(e,t,n,r){r===void 0&&(r=!1);var i=(0,G.useRef)([]),a=fA(),o=Dk(),s=(0,G.useMemo)(function(){return a[e].map(function(e){return e.split(`+`)})},[e,a]);sA(Ek(),`keydown`,function(e){if(n!==!1&&(!pA.includes(e.target.tagName?.toLowerCase())&&!e.target.isContentEditable||r)&&!i.current.includes(e.key)){i.current.push(e.key);var t=i.current.map(function(e){return e.toLowerCase()});s.map(function(e){return t.map(function(t){return e.includes(t.toLowerCase())}).reduce(function(e,t){return e&&t},!0)}).reduce(function(e,t){return e||t},!1)&&(i.current.length>1||!/^[a-zA-Z\s]$/.test(e.key))&&e.preventDefault()}}),sA(Ek(),`keyup`,function(e){if(n!==!1){var r=i.current.map(function(e){return e.toLowerCase()});s.map(function(e){return e.map(function(e){return r.includes(e.toLowerCase())}).reduce(function(e,t){return e&&t},!0)}).reduce(function(e,t){return e||t},!1)&&o(function(){return t(e)}),i.current=i.current.filter(function(t){return t!==e.key})}})},hA=function(){var e=VA().treeId;return iA().viewState[e]??{}},gA=function(e){return iA().linearItems[e]},_A=function(){var e=VA().treeId,t=iA(),n=t.onFocusItem,r=t.items,i=gA(e),a=hA();return kk(function(t){var o=t(i.findIndex(function(e){return e.item===a.focusedItem})??0,i),s=r[i[Math.max(0,Math.min(i.length-1,o))].item];return n?.(s,e),s})},vA=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},yA=function(e){var t=(0,G.useRef)({target:e,previous:void 0});return t.current.target!==e&&(t.current.previous=t.current.target,t.current.target=e),t.current.previous},bA=function(e){var t=hA(),n=VA().treeId,r=gA(n),i=iA().onSelectItems,a=yA(t.focusedItem);return(0,G.useCallback)(function(o,s){s===void 0&&(s=!1);var c=o.index,l=function(e,t){var r=vA(vA([],s?[]:e,!0),t.filter(function(t){return s||!e.includes(t)}),!0);i?.(r,n)};if(t&&t.selectedItems&&t.selectedItems.length>0){var u=t.focusedItem===c?a:t.focusedItem,d=e===`last-focus`?r.findIndex(function(e){return u===e.item}):r.findIndex(function(e){return t.selectedItems?.includes(e.item)}),f=r.findIndex(function(e){return e.item===c});if(d<f){var p=r.slice(d,f+1).map(function(e){return e.item});l(t.selectedItems??[],p)}else{var p=r.slice(f,d+1).map(function(e){return e.item});l(t.selectedItems??[],p)}}else i?.([c],n)},[t,i,n,e,r,a])},xA=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},SA=function(){var e=iA(),t=VA(),n=t.treeId,r=t.setRenamingItem,i=t.setSearch,a=t.renamingItem,o=gA(n),s=Ik(),c=hA(),l=_A(),u=bA(`first-selected`),d=e.activeTreeId===n,f=!!a,p=!e.disableArrowKeys&&d&&!f;lA(`arrowdown`,function(e){if(e.preventDefault(),s.isProgrammaticallyDragging)s.programmaticDragDown();else{var t=l(function(e){return e+1});e.shiftKey&&u(t)}},p),lA(`arrowup`,function(e){if(e.preventDefault(),s.isProgrammaticallyDragging)s.programmaticDragUp();else{var t=l(function(e){return e-1});e.shiftKey&&u(t)}},p),mA(`moveFocusToFirstItem`,function(e){e.preventDefault(),l(function(){return 0})},d&&!s.isProgrammaticallyDragging&&!f),mA(`moveFocusToLastItem`,function(e){e.preventDefault(),l(function(e,t){return t.length-1})},d&&!s.isProgrammaticallyDragging&&!f),lA(`arrowright`,function(t){t.preventDefault(),l(function(t,r){var i,a=e.items[r[t].item];if(a.isFolder){if(c.expandedItems?.includes(a.index))return t+1;(i=e.onExpandItem)==null||i.call(e,a,n)}return t})},p&&!s.isProgrammaticallyDragging),lA(`arrowleft`,function(t){t.preventDefault(),l(function(t,r){var i,a=e.items[r[t].item],o=r[t].depth;if(a.isFolder&&c.expandedItems?.includes(a.index))(i=e.onCollapseItem)==null||i.call(e,a,n);else if(o>0){for(var s=t;r[s].depth!==o-1;--s);return s}return t})},p&&!s.isProgrammaticallyDragging),mA(`primaryAction`,function(t){var r,i;t.preventDefault(),c.focusedItem!==void 0&&((r=e.onSelectItems)==null||r.call(e,[c.focusedItem],n),(i=e.onPrimaryAction)==null||i.call(e,e.items[c.focusedItem],n))},d&&!s.isProgrammaticallyDragging&&!f),mA(`toggleSelectItem`,function(t){var r,i;t.preventDefault(),t.stopPropagation(),c.focusedItem!==void 0&&(c.selectedItems&&c.selectedItems.includes(c.focusedItem)?(r=e.onSelectItems)==null||r.call(e,c.selectedItems.filter(function(e){return e!==c.focusedItem}),n):(i=e.onSelectItems)==null||i.call(e,xA(xA([],c.selectedItems??[],!0),[c.focusedItem],!1),n))},d&&!s.isProgrammaticallyDragging&&!f),mA(`selectAll`,function(t){var r;t.preventDefault(),(r=e.onSelectItems)==null||r.call(e,o.map(function(e){return e.item}),n)},d&&!s.isProgrammaticallyDragging&&!f),mA(`renameItem`,function(t){var i;if(c.focusedItem!==void 0){t.preventDefault();var a=e.items[c.focusedItem];a.canRename!==!1&&((i=e.onStartRenamingItem)==null||i.call(e,a,n),r(a.index))}},d&&(e.canRename??!0)&&!f),mA(`startSearch`,function(e){var t,n;e.preventDefault(),i(``),(n=(t=document.querySelector(`[data-rct-search-input="true"]`))?.focus)==null||n.call(t)},d&&!s.isProgrammaticallyDragging&&!f),mA(`startProgrammaticDnd`,function(e){e.preventDefault(),s.startProgrammaticDrag()},d&&!f),mA(`completeProgrammaticDnd`,function(e){e.preventDefault(),s.completeProgrammaticDrag()},d&&s.isProgrammaticallyDragging&&!f),mA(`abortProgrammaticDnd`,function(e){e.preventDefault(),s.abortProgrammaticDrag()},d&&s.isProgrammaticallyDragging&&!f)},CA=function(e,t,n){return n.toLowerCase().includes(e.toLowerCase())},wA=function(){var e=iA(),t=e.doesSearchMatchItem,n=e.items,r=e.getItemTitle,i=e.onFocusItem,a=VA(),o=a.search,s=a.treeId,c=gA(s),l=Dk();Ck(function(){o&&o.length>0&&l(function(){var e=c.find(function(e){var i=e.item;return(t??CA)(o,n[i],r(n[i]))});e&&i?.(n[e.item],s)})},[t,r,c,n,i,o,s,l],[o])},TA=function(){return TA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},TA.apply(this,arguments)},EA=function(e){var t=e.containerRef,n=VA(),r=n.search,i=n.setSearch,a=n.treeId,o=n.renderers,s=n.renamingItem,c=iA();hA();var l=c.activeTreeId===a,u=Dk();wA();var d=function(){var e;if(i(null),c.autoFocus??!0){var t=Ek()?.querySelector(`[data-rct-tree="${a}"] [data-rct-item-focus="true"]`);(e=t?.focus)==null||e.call(t)}};return mA(`abortSearch`,function(){u(function(){d()})},l&&r!==null,!0),sA(t,`keydown`,function(e){var t=e.key.charCodeAt(0);(c.canSearch??!0)&&(c.canSearchByStartingTyping??!0)&&l&&r===null&&!s&&!e.ctrlKey&&!e.shiftKey&&!e.altKey&&!e.metaKey&&(t>=48&&t<=57||t>=97&&t<=122)&&i(``)}),!(c.canSearch??!0)||r===null?null:o.renderSearchInput({inputProps:TA({value:r,onChange:function(e){return i(e.target.value)},onBlur:function(){d()},ref:function(e){var t;(t=e?.focus)==null||t.call(e)},"aria-label":`Search for items`},{"data-rct-search-input":`true`})})},DA={introduction:`
793
793
  <p>Accessibility guide for tree {treeLabel}.</p>
794
794
  <p>
795
795
  Navigate the tree with the arrow keys. Common tree hotkeys apply. Further keybindings are available:
@@ -811,18 +811,18 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
811
811
  <p>Press {keybinding:completeProgrammaticDnd} to drop or {keybinding:abortProgrammaticDnd} to abort.</p>
812
812
  `,programmaticallyDraggingTarget:`
813
813
  <p>Drop target is {dropTarget}.</p>
814
- `},SA=function(e,t,n,r,i){var a=function(e){return t.getItemTitle(t.items[e])};return e.replace(/({[^\s}]+)}/g,function(e){var o=e.slice(1,-1);switch(o){case`treeLabel`:return r.treeLabel??``;case`renamingItem`:return r.renamingItem?a(r.renamingItem):`None`;case`dragItems`:return n.draggingItems?.map(function(e){return t.getItemTitle(e)}).join(`, `)??`None`;case`dropTarget`:if(!n.draggingPosition)return`None`;if(n.draggingPosition.targetType===`item`||n.draggingPosition.targetType===`root`)return`within ${a(n.draggingPosition.targetItem)}`;var s=t.items[n.draggingPosition.parentItem],c=t.getItemTitle(s);return n.draggingPosition.childIndex===0?`within ${c} at the start`:`within ${c} after ${a(s.children[n.draggingPosition.childIndex-1])}`;default:if(o.startsWith(`keybinding:`))return i[o.slice(11)][0];throw Error(`Unknown live descriptor variable {${o}}`)}})},CA=function(e){var t=e.children,n=e.live;return G.createElement(`div`,{"aria-live":n,dangerouslySetInnerHTML:{__html:t}})},wA=function(){var e=Qk(),t=FA(),n=Ak(),r=oA(),i=(0,G.useMemo)(function(){return e.liveDescriptors??xA},[e.liveDescriptors]),a=t.renderers.renderLiveDescriptorContainer;return t.treeInformation.isRenaming?G.createElement(a,{tree:t},G.createElement(CA,{live:`polite`},SA(i.renamingItem,e,n,t,r))):t.treeInformation.isSearching?G.createElement(a,{tree:t},G.createElement(CA,{live:`polite`},SA(i.searching,e,n,t,r))):t.treeInformation.isProgrammaticallyDragging?G.createElement(a,{tree:t},G.createElement(CA,{live:`polite`},SA(i.programmaticallyDragging,e,n,t,r)),G.createElement(CA,{live:`assertive`},SA(i.programmaticallyDraggingTarget,e,n,t,r))):G.createElement(a,{tree:t},G.createElement(CA,{live:`off`},SA(i.introduction,e,n,t,r)))},TA=function(){return Qk().showLiveDescription??!0?G.createElement(wA,null):null},EA=function(){return EA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},EA.apply(this,arguments)},DA=function(){var e=FA(),t=e.treeId,n=e.rootItem,r=e.renderers,i=e.treeInformation,a=Qk(),o=(0,G.useRef)(),s=Ak();gA(),nA(o.current,function(){a.setActiveTree(t)},function(){a.setActiveTree(function(e){return e===t?void 0:e})});var c=a.items[n].children,l=G.createElement(G.Fragment,null,G.createElement(TA,null),G.createElement(LA,{depth:0,parentId:n},c??[]),G.createElement(eA,{treeId:t}),G.createElement(bA,{containerRef:o.current})),u=EA({onDragOver:function(e){e.preventDefault(),s.onDragOverTreeHandler(e,t,o)},onDragLeave:function(e){s.onDragLeaveContainerHandler(e,o)},onMouseDown:function(){return s.abortProgrammaticDrag()},ref:o,style:{position:`relative`},role:`tree`,"aria-label":i.treeLabelledBy?void 0:i.treeLabel,"aria-labelledby":i.treeLabelledBy},{"data-rct-tree":t});return r.renderTreeContainer({children:l,info:i,containerProps:u})},OA=function(e,t,n){var r=Qk(),i=Ak(),a=r.viewState[e.treeId]?.selectedItems;return(0,G.useMemo)(function(){return{isFocused:r.activeTreeId===e.treeId,isRenaming:!!t,areItemsSelected:(a?.length??0)>0,isSearching:n!==null,search:n,isProgrammaticallyDragging:i.isProgrammaticallyDragging??!1,treeId:e.treeId,rootItem:e.rootItem,treeLabel:e.treeLabel,treeLabelledBy:e.treeLabelledBy}},[r.activeTreeId,e.treeId,e.rootItem,e.treeLabel,e.treeLabelledBy,t,a?.length,n,i.isProgrammaticallyDragging])},kA=function(){return kA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},kA.apply(this,arguments)},AA=function(e,t){var n=Qk(),r=FA(),i=Ak();(0,G.useImperativeHandle)(e,function(){return kA(kA(kA({},t),{treeEnvironmentContext:n,dragAndDropContext:i,treeContext:r}),r.treeInformation)})},jA=G.createContext(null),MA=G.forwardRef(function(e,t){Qk();var n=FA();Ak();var r=zk(),i=(0,G.useMemo)(function(){return{abortRenamingItem:function(){n.setRenamingItem(null)},abortSearch:function(){n.setSearch(null)},collapseItem:function(e){r.collapseItem(e,n.treeId)},completeRenamingItem:function(){},expandItem:function(e){r.expandItem(e,n.treeId)},focusItem:function(e,t){t===void 0&&(t=!0),r.focusItem(e,n.treeId,t)},focusTree:function(e){e===void 0&&(e=!0),r.focusTree(n.treeId,e)},invokePrimaryAction:function(e){r.invokePrimaryAction(e,n.treeId)},moveFocusDown:function(){r.moveFocusDown(n.treeId)},moveFocusUp:function(){r.moveFocusUp(n.treeId)},renameItem:function(e,t){r.renameItem(e,t,n.treeId)},selectItems:function(e){r.selectItems(e,n.treeId)},setSearch:function(e){n.setSearch(e)},startRenamingItem:function(e){n.setRenamingItem(e)},stopRenamingItem:function(){n.setRenamingItem(null)},toggleItemExpandedState:function(e){r.toggleItemExpandedState(e,n.treeId)},toggleItemSelectStatus:function(e){r.toggleItemSelectStatus(e,n.treeId)},expandAll:function(){r.expandAll(n.treeId)},collapseAll:function(){r.collapseAll(n.treeId)},expandSubsequently:function(e){return r.expandSubsequently(n.treeId,e)}}},[r,n]);return AA(t,i),G.createElement(jA.Provider,{value:i},e.children)}),NA=function(){return NA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},NA.apply(this,arguments)},PA=G.createContext(null),FA=function(){return(0,G.useContext)(PA)},IA=G.forwardRef(function(e,t){var n,r=Qk(),i=(0,G.useMemo)(function(){return NA(NA({},r),e)},[e,r]),a=(0,G.useState)(null),o=a[0],s=a[1],c=(0,G.useState)(null),l=c[0],u=c[1],d=r.items[e.rootItem],f=r.viewState[e.treeId];(0,G.useEffect)(function(){return r.registerTree({treeId:e.treeId,rootItem:e.rootItem}),function(){return r.unregisterTree(e.treeId)}},[e.treeId,e.rootItem]);var p=OA(e,l,o),m=(0,G.useMemo)(function(){return{treeId:e.treeId,rootItem:e.rootItem,treeLabel:e.treeLabel,treeLabelledBy:e.treeLabelledBy,getItemsLinearly:function(){return qk(e.rootItem,f??{},r.items)},treeInformation:p,search:o,setSearch:s,renamingItem:l,setRenamingItem:u,renderers:i}},[r.items,e.rootItem,e.treeId,e.treeLabel,e.treeLabelledBy,l,i,o,p,f]);return d===void 0?((n=r.onMissingItems)==null||n.call(r,[e.rootItem]),null):G.createElement(PA.Provider,{value:m},G.createElement(MA,{ref:t},G.createElement(DA,null)))}),LA=function(e){for(var t=FA(),n=t.renderers,r=t.treeInformation,i=[],a=0,o=e.children;a<o.length;a++){var s=o[a];i.push(G.createElement(HA,{key:s,itemIndex:s,depth:e.depth}))}if(i.length===0)return null;var c={role:e.depth===0?void 0:`group`};return n.renderItemsContainer({children:i,info:r,containerProps:c,depth:e.depth,parentId:e.parentId})},RA=function(){return RA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},RA.apply(this,arguments)},zA=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},BA=function(e){var t=FA(),n=t.treeId,r=t.search,i=t.renamingItem,a=t.setRenamingItem,o=Qk(),s=dk(),c=Ak(),l=mA(`last-focus`),u=e&&o.getItemTitle(e),d=wk(),f=(0,G.useMemo)(function(){return r===null||r.length===0||!e||!u?!1:(o.doesSearchMatchItem??_A)(r,e,u)},[r,e,u,o.doesSearchMatchItem]),p=e&&(o.viewState[n]?.selectedItems)?.includes(e.index),m=e&&(o.viewState[n]?.expandedItems)?.includes(e.index),h=e&&i===e.index;return(0,G.useMemo)(function(){if(e){var t=o.viewState[n],r=((t?.selectedItems)?.map(function(e){return o.items[e]})??(t?.focusedItem?[o.items[t?.focusedItem]]:[])).filter(function(e){return!!e}),i=!!r.find(function(t){return t.index===e.index}),u=r&&(o.canDrag?.call(o,r)??!0)&&r.map(function(e){return e.canMove??!0}).reduce(function(e,t){return e&&t},!0),g=(o.canDrag?.call(o,[e])??!0)&&(e.canMove??!0),_=o.canDragAndDrop&&(i&&u||!i&&g),v=o.canDragAndDrop&&!!(c.viableDragPositions?.[n])?.find(function(t){return t.targetType===`item`&&t.targetItem===e.index}),y={primaryAction:function(){var t;(t=o.onPrimaryAction)==null||t.call(o,o.items[e.index],n)},collapseItem:function(){var t;(t=o.onCollapseItem)==null||t.call(o,e,n)},expandItem:function(){var t;(t=o.onExpandItem)==null||t.call(o,e,n)},toggleExpandedState:function(){var t,r;m?(t=o.onCollapseItem)==null||t.call(o,e,n):(r=o.onExpandItem)==null||r.call(o,e,n)},selectItem:function(){var t;(t=o.onSelectItems)==null||t.call(o,[e.index],n)},addToSelectedItems:function(){var r;(r=o.onSelectItems)==null||r.call(o,zA(zA([],t?.selectedItems??[],!0),[e.index],!1),n)},unselectItem:function(){var r;(r=o.onSelectItems)==null||r.call(o,(t?.selectedItems)?.filter(function(t){return t!==e.index})??[],n)},selectUpTo:function(t){l(e,t)},startRenamingItem:function(){a(e.index)},stopRenamingItem:function(){a(null)},focusItem:function(t){var r;t===void 0&&(t=!0),(r=o.onFocusItem)==null||r.call(o,e,n,t)},startDragging:function(){var r,i=t?.selectedItems??[];if(i.includes(e.index)||(i=[e.index],(r=o.onSelectItems)==null||r.call(o,i,n)),_){var a=d(n,i.map(function(e){return o.items[e]}));c.onStartDraggingItems(a,n)}}},b={isSelected:p,isExpanded:m,isFocused:t?.focusedItem===e.index,isRenaming:h,isDraggingOver:c.draggingPosition&&c.draggingPosition.targetType===`item`&&c.draggingPosition.targetItem===e.index&&c.draggingPosition.treeId===n,isDraggingOverParent:!1,isSearchMatching:f,canDrag:_,canDropOn:v},x=RA(RA({},s.createInteractiveElementProps(e,n,y,b,t)),{"data-rct-item-interactive":!0,"data-rct-item-focus":b.isFocused?`true`:`false`,"data-rct-item-id":e.index}),S=RA({},{"data-rct-item-container":`true`}),C={role:`treeitem`,"aria-selected":b.isSelected,"aria-expanded":e.isFolder?b.isExpanded?`true`:`false`:void 0},w={onClick:function(){e.isFolder&&y.toggleExpandedState(),y.selectItem()},onFocus:function(){y.focusItem()},onDragOver:function(e){e.preventDefault()},"aria-hidden":!0,tabIndex:-1},T=t?Object.entries(t).reduce(function(t,n){var r=n[0],i=n[1];return t[r]=Array.isArray(i)?i.includes(e.index):i===e.index,t},{}):{};return RA(RA(RA({},y),b),{interactiveElementProps:x,itemContainerWithChildrenProps:C,itemContainerWithoutChildrenProps:S,arrowProps:w,viewStateFlags:T})}},[e,o,n,c,p,m,h,f,s,l,a,d])},VA=function(e){var t=FA(),n=t.renderers,r=t.treeInformation,i=t.setRenamingItem,a=t.treeId,o=Qk(),s=(0,G.useRef)(null),c=(0,G.useRef)(null),l=o.items[e.itemIndex],u=(0,G.useState)(o.getItemTitle(l)),d=u[0],f=u[1],p=xk(!0),m=function(){var e;(e=o.onAbortRenamingItem)==null||e.call(o,l,r.treeId),i(null),p(function(){o.setActiveTree(a)})},h=function(){var e;(e=o.onRenameItem)==null||e.call(o,l,d,r.treeId),i(null),p(function(){o.setActiveTree(a)})};_k(function(){var e,t,n;o.setActiveTree(a),(o.autoFocus??!0)&&((e=s.current)==null||e.select(),(n=(t=s.current)?.focus)==null||n.call(t))},[o,a],[]),cA(`abortRenameItem`,function(){m()},!0,!0);var g={value:d,onChange:function(e){f(e.target.value)},onBlur:function(e){(!e.relatedTarget||e.relatedTarget!==c.current)&&m()},"aria-label":`New item name`,tabIndex:0};return n.renderRenameInput({item:l,inputRef:s,submitButtonProps:{onClick:function(e){e.stopPropagation(),h()}},submitButtonRef:c,formProps:{onSubmit:function(e){e.preventDefault(),h()}},inputProps:g})},HA=function(e){var t,n=(0,G.useState)(!1),r=n[0],i=n[1],a=FA(),o=a.renderers,s=a.treeInformation,c=a.renamingItem,l=Qk(),u=lA(),d=l.items[e.itemIndex],f=(0,G.useMemo)(function(){return u.expandedItems?.includes(e.itemIndex)},[e.itemIndex,u.expandedItems]),p=BA(d);if(d===void 0||p===void 0)return r||(i(!0),(t=l.onMissingItems)==null||t.call(l,[e.itemIndex])),null;var m=l.shouldRenderChildren?.call(l,d,p)??(d.isFolder&&f),h=d.children&&m&&G.createElement(LA,{depth:e.depth+1,parentId:e.itemIndex},d.children),g=l.getItemTitle(d),_=c===e.itemIndex?G.createElement(VA,{itemIndex:e.itemIndex}):o.renderItemTitle({info:s,context:p,title:g,item:d}),v=o.renderItemArrow({info:s,context:p,item:l.items[e.itemIndex]});return o.renderItem({item:l.items[e.itemIndex],depth:e.depth,title:_,arrow:v,context:p,info:s,children:h})??null},UA=`__db_root__`,WA=`__create_table__`;function GA(e,t){return`${e}/${t}`}function KA(e,{canManage:t}){let n={},r=Object.keys(e||{}).sort();for(let t of r){let r=Object.keys(e?.[t]||{}).sort();n[t]={index:t,isFolder:!0,children:r.map(e=>GA(t,e)),data:{kind:`database`,databaseName:t},canMove:!1,canRename:!1};for(let e of r){let r=GA(t,e);n[r]={index:r,isFolder:!1,data:{kind:`table`,databaseName:t,tableName:e},canMove:!1,canRename:!1}}}return n[WA]={index:WA,isFolder:!1,data:{kind:`createTable`},canMove:!1,canRename:!1},n[UA]={index:UA,isFolder:!0,children:[...t?[WA]:[],...r],data:{kind:`root`},canMove:!1,canRename:!1},{items:n,rootId:UA}}function qA({items:e,instanceDatabaseMap:t,children:n}){let r=Pp(),[i,a]=(0,G.useState)(void 0),[o,s]=(0,G.useState)(``),c=(0,G.useCallback)(t=>{let n=t.target.closest(`[data-rct-item-id]`)?.getAttribute(`data-rct-item-id`),r=n?e[n]?.data:void 0;if(!r||r.kind===`root`||r.kind===`createTable`){a(void 0),t.preventDefault();return}a(r),s(`${t.clientX},${t.clientY}`)},[e]);return(0,K.jsxs)(Yd,{modal:!1,children:[(0,K.jsx)(Xd,{asChild:!0,children:(0,K.jsx)(`div`,{onContextMenu:c,className:`min-h-full`,children:n})}),i&&(0,K.jsxs)(Zd,{className:`min-w-44`,onCloseAutoFocus:e=>e.preventDefault(),children:[i.kind===`database`&&r&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Qd,{onSelect:()=>VD(`ShowCreateTable`,{databaseName:i.databaseName}),children:[(0,K.jsx)(Ia,{}),`Create a Table`]}),(0,K.jsx)(ef,{}),(0,K.jsxs)(Qd,{variant:`destructive`,onSelect:()=>VD(`ShowDeleteDatabase`,{databaseName:i.databaseName}),children:[(0,K.jsx)(Eo,{}),`Drop Database`]})]}),i.kind===`table`&&(0,K.jsx)(KO,{databaseName:i.databaseName,tableName:i.tableName,instanceDatabaseMap:t})]},o)]})}function JA(e){switch(e.data.kind){case`createTable`:return`Create a Table`;case`database`:return e.data.databaseName;case`table`:return e.data.tableName;default:return``}}var YA=`mr-1.5 h-4 w-4 shrink-0 pointer-events-none`;function XA({title:e,item:t}){let n=t.data.kind;return(0,K.jsxs)(K.Fragment,{children:[n===`createTable`?(0,K.jsx)(Ia,{className:P(YA,`text-green-500`)}):n===`database`?(0,K.jsx)(ni,{className:P(YA,`text-orange-400`)}):(0,K.jsx)(go,{className:YA}),(0,K.jsx)(`span`,{className:`text-nowrap pointer-events-none`,children:e})]})}function ZA({databaseName:e,tableName:t}){let{entityId:n}=q(),r=(0,G.useMemo)(()=>e&&t?[GA(e,t)]:e?[e]:[],[e,t]),[i,a]=(0,G.useState)(r[0]);(0,G.useEffect)(()=>{r[0]!==void 0&&a(r[0])},[r]);let[o,s]=jy(`DatabaseTreeExpanded/${n}`,e?[e]:[]);return(0,G.useEffect)(()=>{e&&s(t=>t.includes(e)?t:[...t,e])},[e,s]),{focusedItem:i,setFocusedItem:a,expandedItems:o,setExpandedItems:s,selectedItems:r}}var QA={"--rct-drop-target-height":`0px`};function $A({instanceDatabaseMap:e}){let t=B({strict:!1}),n=L(),r=Pp(),{items:i,rootId:a}=(0,G.useMemo)(()=>KA(e,{canManage:r}),[e,r]),{focusedItem:o,setFocusedItem:s,expandedItems:c,setExpandedItems:l,selectedItems:u}=ZA(t),d=(0,G.useCallback)((e,r)=>{n({to:TE({...t,databaseName:e,tableName:r})})},[n,t]),f=(0,G.useCallback)(e=>{switch(e.kind){case`createTable`:VD(`ShowCreateTable`,{databaseName:t.databaseName});break;case`database`:(t.databaseName!==e.databaseName||t.tableName)&&d(e.databaseName,void 0);break;case`table`:(t.databaseName!==e.databaseName||t.tableName!==e.tableName)&&d(e.databaseName,e.tableName)}},[t.databaseName,t.tableName,d]),p=(0,G.useCallback)(e=>{let t=e[e.length-1],n=t===void 0?void 0:i[t]?.data;n&&f(n)},[i,f]);return(0,K.jsx)(`div`,{className:`app-tree-scroll h-full overflow-auto pr-1.5`,style:QA,children:(0,K.jsx)(qA,{items:i,instanceDatabaseMap:e,children:(0,K.jsx)($k,{canDragAndDrop:!1,canReorderItems:!1,canSearch:!0,canRename:!1,defaultInteractionMode:nk.DoubleClickItemToExpand,getItemTitle:JA,items:i,renderItemArrow:tk,renderItemTitle:XA,viewState:{databasesTree:{focusedItem:o,expandedItems:c,selectedItems:u}},onFocusItem:e=>s(e.index),onExpandItem:e=>l(t=>t.includes(e.index)?t:[...t,e.index]),onCollapseItem:e=>l(t=>t.filter(t=>t!==e.index)),onSelectItems:p,children:(0,K.jsx)(IA,{treeId:`databasesTree`,rootItem:a,treeLabel:`Databases tree`})})})})}function ej({instanceDatabaseMap:e}){return(0,K.jsxs)(`div`,{className:`pl-3 flex flex-col h-full min-h-0`,children:[(0,K.jsx)(`h1`,{className:`pt-3 pb-3 text-3xl shrink-0`,children:`Databases`}),e?(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)($A,{instanceDatabaseMap:e})}):(0,K.jsx)(Sg,{className:`w-full flex-1 min-h-0 rounded-md`})]})}function tj(e){for(let t of e.split(`
815
- `)){let e=t.match(/^(\t+| +)\S/);if(!e)continue;let n=e[1];return n[0]===` `?` `:n}return` `}function nj(e){return/\r\n/.test(e)?`\r
814
+ `},OA=function(e,t,n,r,i){var a=function(e){return t.getItemTitle(t.items[e])};return e.replace(/({[^\s}]+)}/g,function(e){var o=e.slice(1,-1);switch(o){case`treeLabel`:return r.treeLabel??``;case`renamingItem`:return r.renamingItem?a(r.renamingItem):`None`;case`dragItems`:return n.draggingItems?.map(function(e){return t.getItemTitle(e)}).join(`, `)??`None`;case`dropTarget`:if(!n.draggingPosition)return`None`;if(n.draggingPosition.targetType===`item`||n.draggingPosition.targetType===`root`)return`within ${a(n.draggingPosition.targetItem)}`;var s=t.items[n.draggingPosition.parentItem],c=t.getItemTitle(s);return n.draggingPosition.childIndex===0?`within ${c} at the start`:`within ${c} after ${a(s.children[n.draggingPosition.childIndex-1])}`;default:if(o.startsWith(`keybinding:`))return i[o.slice(11)][0];throw Error(`Unknown live descriptor variable {${o}}`)}})},kA=function(e){var t=e.children,n=e.live;return G.createElement(`div`,{"aria-live":n,dangerouslySetInnerHTML:{__html:t}})},AA=function(){var e=iA(),t=VA(),n=Ik(),r=fA(),i=(0,G.useMemo)(function(){return e.liveDescriptors??DA},[e.liveDescriptors]),a=t.renderers.renderLiveDescriptorContainer;return t.treeInformation.isRenaming?G.createElement(a,{tree:t},G.createElement(kA,{live:`polite`},OA(i.renamingItem,e,n,t,r))):t.treeInformation.isSearching?G.createElement(a,{tree:t},G.createElement(kA,{live:`polite`},OA(i.searching,e,n,t,r))):t.treeInformation.isProgrammaticallyDragging?G.createElement(a,{tree:t},G.createElement(kA,{live:`polite`},OA(i.programmaticallyDragging,e,n,t,r)),G.createElement(kA,{live:`assertive`},OA(i.programmaticallyDraggingTarget,e,n,t,r))):G.createElement(a,{tree:t},G.createElement(kA,{live:`off`},OA(i.introduction,e,n,t,r)))},jA=function(){return iA().showLiveDescription??!0?G.createElement(AA,null):null},MA=function(){return MA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},MA.apply(this,arguments)},NA=function(){var e=VA(),t=e.treeId,n=e.rootItem,r=e.renderers,i=e.treeInformation,a=iA(),o=(0,G.useRef)(),s=Ik();SA(),cA(o.current,function(){a.setActiveTree(t)},function(){a.setActiveTree(function(e){return e===t?void 0:e})});var c=a.items[n].children,l=G.createElement(G.Fragment,null,G.createElement(jA,null),G.createElement(UA,{depth:0,parentId:n},c??[]),G.createElement(oA,{treeId:t}),G.createElement(EA,{containerRef:o.current})),u=MA({onDragOver:function(e){e.preventDefault(),s.onDragOverTreeHandler(e,t,o)},onDragLeave:function(e){s.onDragLeaveContainerHandler(e,o)},onMouseDown:function(){return s.abortProgrammaticDrag()},ref:o,style:{position:`relative`},role:`tree`,"aria-label":i.treeLabelledBy?void 0:i.treeLabel,"aria-labelledby":i.treeLabelledBy},{"data-rct-tree":t});return r.renderTreeContainer({children:l,info:i,containerProps:u})},PA=function(e,t,n){var r=iA(),i=Ik(),a=r.viewState[e.treeId]?.selectedItems;return(0,G.useMemo)(function(){return{isFocused:r.activeTreeId===e.treeId,isRenaming:!!t,areItemsSelected:(a?.length??0)>0,isSearching:n!==null,search:n,isProgrammaticallyDragging:i.isProgrammaticallyDragging??!1,treeId:e.treeId,rootItem:e.rootItem,treeLabel:e.treeLabel,treeLabelledBy:e.treeLabelledBy}},[r.activeTreeId,e.treeId,e.rootItem,e.treeLabel,e.treeLabelledBy,t,a?.length,n,i.isProgrammaticallyDragging])},FA=function(){return FA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},FA.apply(this,arguments)},IA=function(e,t){var n=iA(),r=VA(),i=Ik();(0,G.useImperativeHandle)(e,function(){return FA(FA(FA({},t),{treeEnvironmentContext:n,dragAndDropContext:i,treeContext:r}),r.treeInformation)})},LA=G.createContext(null),RA=G.forwardRef(function(e,t){iA();var n=VA();Ik();var r=Gk(),i=(0,G.useMemo)(function(){return{abortRenamingItem:function(){n.setRenamingItem(null)},abortSearch:function(){n.setSearch(null)},collapseItem:function(e){r.collapseItem(e,n.treeId)},completeRenamingItem:function(){},expandItem:function(e){r.expandItem(e,n.treeId)},focusItem:function(e,t){t===void 0&&(t=!0),r.focusItem(e,n.treeId,t)},focusTree:function(e){e===void 0&&(e=!0),r.focusTree(n.treeId,e)},invokePrimaryAction:function(e){r.invokePrimaryAction(e,n.treeId)},moveFocusDown:function(){r.moveFocusDown(n.treeId)},moveFocusUp:function(){r.moveFocusUp(n.treeId)},renameItem:function(e,t){r.renameItem(e,t,n.treeId)},selectItems:function(e){r.selectItems(e,n.treeId)},setSearch:function(e){n.setSearch(e)},startRenamingItem:function(e){n.setRenamingItem(e)},stopRenamingItem:function(){n.setRenamingItem(null)},toggleItemExpandedState:function(e){r.toggleItemExpandedState(e,n.treeId)},toggleItemSelectStatus:function(e){r.toggleItemSelectStatus(e,n.treeId)},expandAll:function(){r.expandAll(n.treeId)},collapseAll:function(){r.collapseAll(n.treeId)},expandSubsequently:function(e){return r.expandSubsequently(n.treeId,e)}}},[r,n]);return IA(t,i),G.createElement(LA.Provider,{value:i},e.children)}),zA=function(){return zA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},zA.apply(this,arguments)},BA=G.createContext(null),VA=function(){return(0,G.useContext)(BA)},HA=G.forwardRef(function(e,t){var n,r=iA(),i=(0,G.useMemo)(function(){return zA(zA({},r),e)},[e,r]),a=(0,G.useState)(null),o=a[0],s=a[1],c=(0,G.useState)(null),l=c[0],u=c[1],d=r.items[e.rootItem],f=r.viewState[e.treeId];(0,G.useEffect)(function(){return r.registerTree({treeId:e.treeId,rootItem:e.rootItem}),function(){return r.unregisterTree(e.treeId)}},[e.treeId,e.rootItem]);var p=PA(e,l,o),m=(0,G.useMemo)(function(){return{treeId:e.treeId,rootItem:e.rootItem,treeLabel:e.treeLabel,treeLabelledBy:e.treeLabelledBy,getItemsLinearly:function(){return $k(e.rootItem,f??{},r.items)},treeInformation:p,search:o,setSearch:s,renamingItem:l,setRenamingItem:u,renderers:i}},[r.items,e.rootItem,e.treeId,e.treeLabel,e.treeLabelledBy,l,i,o,p,f]);return d===void 0?((n=r.onMissingItems)==null||n.call(r,[e.rootItem]),null):G.createElement(BA.Provider,{value:m},G.createElement(RA,{ref:t},G.createElement(NA,null)))}),UA=function(e){for(var t=VA(),n=t.renderers,r=t.treeInformation,i=[],a=0,o=e.children;a<o.length;a++){var s=o[a];i.push(G.createElement(JA,{key:s,itemIndex:s,depth:e.depth}))}if(i.length===0)return null;var c={role:e.depth===0?void 0:`group`};return n.renderItemsContainer({children:i,info:r,containerProps:c,depth:e.depth,parentId:e.parentId})},WA=function(){return WA=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},WA.apply(this,arguments)},GA=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},KA=function(e){var t=VA(),n=t.treeId,r=t.search,i=t.renamingItem,a=t.setRenamingItem,o=iA(),s=_k(),c=Ik(),l=bA(`last-focus`),u=e&&o.getItemTitle(e),d=Ak(),f=(0,G.useMemo)(function(){return r===null||r.length===0||!e||!u?!1:(o.doesSearchMatchItem??CA)(r,e,u)},[r,e,u,o.doesSearchMatchItem]),p=e&&(o.viewState[n]?.selectedItems)?.includes(e.index),m=e&&(o.viewState[n]?.expandedItems)?.includes(e.index),h=e&&i===e.index;return(0,G.useMemo)(function(){if(e){var t=o.viewState[n],r=((t?.selectedItems)?.map(function(e){return o.items[e]})??(t?.focusedItem?[o.items[t?.focusedItem]]:[])).filter(function(e){return!!e}),i=!!r.find(function(t){return t.index===e.index}),u=r&&(o.canDrag?.call(o,r)??!0)&&r.map(function(e){return e.canMove??!0}).reduce(function(e,t){return e&&t},!0),g=(o.canDrag?.call(o,[e])??!0)&&(e.canMove??!0),_=o.canDragAndDrop&&(i&&u||!i&&g),v=o.canDragAndDrop&&!!(c.viableDragPositions?.[n])?.find(function(t){return t.targetType===`item`&&t.targetItem===e.index}),y={primaryAction:function(){var t;(t=o.onPrimaryAction)==null||t.call(o,o.items[e.index],n)},collapseItem:function(){var t;(t=o.onCollapseItem)==null||t.call(o,e,n)},expandItem:function(){var t;(t=o.onExpandItem)==null||t.call(o,e,n)},toggleExpandedState:function(){var t,r;m?(t=o.onCollapseItem)==null||t.call(o,e,n):(r=o.onExpandItem)==null||r.call(o,e,n)},selectItem:function(){var t;(t=o.onSelectItems)==null||t.call(o,[e.index],n)},addToSelectedItems:function(){var r;(r=o.onSelectItems)==null||r.call(o,GA(GA([],t?.selectedItems??[],!0),[e.index],!1),n)},unselectItem:function(){var r;(r=o.onSelectItems)==null||r.call(o,(t?.selectedItems)?.filter(function(t){return t!==e.index})??[],n)},selectUpTo:function(t){l(e,t)},startRenamingItem:function(){a(e.index)},stopRenamingItem:function(){a(null)},focusItem:function(t){var r;t===void 0&&(t=!0),(r=o.onFocusItem)==null||r.call(o,e,n,t)},startDragging:function(){var r,i=t?.selectedItems??[];if(i.includes(e.index)||(i=[e.index],(r=o.onSelectItems)==null||r.call(o,i,n)),_){var a=d(n,i.map(function(e){return o.items[e]}));c.onStartDraggingItems(a,n)}}},b={isSelected:p,isExpanded:m,isFocused:t?.focusedItem===e.index,isRenaming:h,isDraggingOver:c.draggingPosition&&c.draggingPosition.targetType===`item`&&c.draggingPosition.targetItem===e.index&&c.draggingPosition.treeId===n,isDraggingOverParent:!1,isSearchMatching:f,canDrag:_,canDropOn:v},x=WA(WA({},s.createInteractiveElementProps(e,n,y,b,t)),{"data-rct-item-interactive":!0,"data-rct-item-focus":b.isFocused?`true`:`false`,"data-rct-item-id":e.index}),S=WA({},{"data-rct-item-container":`true`}),C={role:`treeitem`,"aria-selected":b.isSelected,"aria-expanded":e.isFolder?b.isExpanded?`true`:`false`:void 0},w={onClick:function(){e.isFolder&&y.toggleExpandedState(),y.selectItem()},onFocus:function(){y.focusItem()},onDragOver:function(e){e.preventDefault()},"aria-hidden":!0,tabIndex:-1},T=t?Object.entries(t).reduce(function(t,n){var r=n[0],i=n[1];return t[r]=Array.isArray(i)?i.includes(e.index):i===e.index,t},{}):{};return WA(WA(WA({},y),b),{interactiveElementProps:x,itemContainerWithChildrenProps:C,itemContainerWithoutChildrenProps:S,arrowProps:w,viewStateFlags:T})}},[e,o,n,c,p,m,h,f,s,l,a,d])},qA=function(e){var t=VA(),n=t.renderers,r=t.treeInformation,i=t.setRenamingItem,a=t.treeId,o=iA(),s=(0,G.useRef)(null),c=(0,G.useRef)(null),l=o.items[e.itemIndex],u=(0,G.useState)(o.getItemTitle(l)),d=u[0],f=u[1],p=Dk(!0),m=function(){var e;(e=o.onAbortRenamingItem)==null||e.call(o,l,r.treeId),i(null),p(function(){o.setActiveTree(a)})},h=function(){var e;(e=o.onRenameItem)==null||e.call(o,l,d,r.treeId),i(null),p(function(){o.setActiveTree(a)})};Ck(function(){var e,t,n;o.setActiveTree(a),(o.autoFocus??!0)&&((e=s.current)==null||e.select(),(n=(t=s.current)?.focus)==null||n.call(t))},[o,a],[]),mA(`abortRenameItem`,function(){m()},!0,!0);var g={value:d,onChange:function(e){f(e.target.value)},onBlur:function(e){(!e.relatedTarget||e.relatedTarget!==c.current)&&m()},"aria-label":`New item name`,tabIndex:0};return n.renderRenameInput({item:l,inputRef:s,submitButtonProps:{onClick:function(e){e.stopPropagation(),h()}},submitButtonRef:c,formProps:{onSubmit:function(e){e.preventDefault(),h()}},inputProps:g})},JA=function(e){var t,n=(0,G.useState)(!1),r=n[0],i=n[1],a=VA(),o=a.renderers,s=a.treeInformation,c=a.renamingItem,l=iA(),u=hA(),d=l.items[e.itemIndex],f=(0,G.useMemo)(function(){return u.expandedItems?.includes(e.itemIndex)},[e.itemIndex,u.expandedItems]),p=KA(d);if(d===void 0||p===void 0)return r||(i(!0),(t=l.onMissingItems)==null||t.call(l,[e.itemIndex])),null;var m=l.shouldRenderChildren?.call(l,d,p)??(d.isFolder&&f),h=d.children&&m&&G.createElement(UA,{depth:e.depth+1,parentId:e.itemIndex},d.children),g=l.getItemTitle(d),_=c===e.itemIndex?G.createElement(qA,{itemIndex:e.itemIndex}):o.renderItemTitle({info:s,context:p,title:g,item:d}),v=o.renderItemArrow({info:s,context:p,item:l.items[e.itemIndex]});return o.renderItem({item:l.items[e.itemIndex],depth:e.depth,title:_,arrow:v,context:p,info:s,children:h})??null},YA=`__db_root__`,XA=`__create_table__`;function ZA(e,t){return`${e}/${t}`}function QA(e,{canManage:t}){let n={},r=Object.keys(e||{}).sort();for(let t of r){let r=Object.keys(e?.[t]||{}).sort();n[t]={index:t,isFolder:!0,children:r.map(e=>ZA(t,e)),data:{kind:`database`,databaseName:t},canMove:!1,canRename:!1};for(let e of r){let r=ZA(t,e);n[r]={index:r,isFolder:!1,data:{kind:`table`,databaseName:t,tableName:e},canMove:!1,canRename:!1}}}return n[XA]={index:XA,isFolder:!1,data:{kind:`createTable`},canMove:!1,canRename:!1},n[YA]={index:YA,isFolder:!0,children:[...t?[XA]:[],...r],data:{kind:`root`},canMove:!1,canRename:!1},{items:n,rootId:YA}}function $A({items:e,instanceDatabaseMap:t,children:n}){let r=Pp(),[i,a]=(0,G.useState)(void 0),[o,s]=(0,G.useState)(``),c=(0,G.useCallback)(t=>{let n=t.target.closest(`[data-rct-item-id]`)?.getAttribute(`data-rct-item-id`),r=n?e[n]?.data:void 0;if(!r||r.kind===`root`||r.kind===`createTable`){a(void 0),t.preventDefault();return}a(r),s(`${t.clientX},${t.clientY}`)},[e]);return(0,K.jsxs)(Yd,{modal:!1,children:[(0,K.jsx)(Xd,{asChild:!0,children:(0,K.jsx)(`div`,{onContextMenu:c,className:`min-h-full`,children:n})}),i&&(0,K.jsxs)(Zd,{className:`min-w-44`,onCloseAutoFocus:e=>e.preventDefault(),children:[i.kind===`database`&&r&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(Qd,{onSelect:()=>KD(`ShowCreateTable`,{databaseName:i.databaseName}),children:[(0,K.jsx)(Ia,{}),`Create a Table`]}),(0,K.jsx)(ef,{}),(0,K.jsxs)(Qd,{variant:`destructive`,onSelect:()=>KD(`ShowDeleteDatabase`,{databaseName:i.databaseName}),children:[(0,K.jsx)(Eo,{}),`Drop Database`]})]}),i.kind===`table`&&(0,K.jsx)(QO,{databaseName:i.databaseName,tableName:i.tableName,instanceDatabaseMap:t})]},o)]})}function ej(e){switch(e.data.kind){case`createTable`:return`Create a Table`;case`database`:return e.data.databaseName;case`table`:return e.data.tableName;default:return``}}var tj=`mr-1.5 h-4 w-4 shrink-0 pointer-events-none`;function nj({title:e,item:t}){let n=t.data.kind;return(0,K.jsxs)(K.Fragment,{children:[n===`createTable`?(0,K.jsx)(Ia,{className:P(tj,`text-green-500`)}):n===`database`?(0,K.jsx)(ni,{className:P(tj,`text-orange-400`)}):(0,K.jsx)(go,{className:tj}),(0,K.jsx)(`span`,{className:`text-nowrap pointer-events-none`,children:e})]})}function rj({databaseName:e,tableName:t}){let{entityId:n}=q(),r=(0,G.useMemo)(()=>e&&t?[ZA(e,t)]:e?[e]:[],[e,t]),[i,a]=(0,G.useState)(r[0]);(0,G.useEffect)(()=>{r[0]!==void 0&&a(r[0])},[r]);let[o,s]=jy(`DatabaseTreeExpanded/${n}`,e?[e]:[]);return(0,G.useEffect)(()=>{e&&s(t=>t.includes(e)?t:[...t,e])},[e,s]),{focusedItem:i,setFocusedItem:a,expandedItems:o,setExpandedItems:s,selectedItems:r}}var ij={"--rct-drop-target-height":`0px`};function aj({instanceDatabaseMap:e}){let t=B({strict:!1}),n=L(),r=Pp(),{items:i,rootId:a}=(0,G.useMemo)(()=>QA(e,{canManage:r}),[e,r]),{focusedItem:o,setFocusedItem:s,expandedItems:c,setExpandedItems:l,selectedItems:u}=rj(t),d=(0,G.useCallback)((e,r)=>{n({to:AE({...t,databaseName:e,tableName:r})})},[n,t]),f=(0,G.useCallback)(e=>{switch(e.kind){case`createTable`:KD(`ShowCreateTable`,{databaseName:t.databaseName});break;case`database`:(t.databaseName!==e.databaseName||t.tableName)&&d(e.databaseName,void 0);break;case`table`:(t.databaseName!==e.databaseName||t.tableName!==e.tableName)&&d(e.databaseName,e.tableName)}},[t.databaseName,t.tableName,d]),p=(0,G.useCallback)(e=>{let t=e[e.length-1],n=t===void 0?void 0:i[t]?.data;n&&f(n)},[i,f]);return(0,K.jsx)(`div`,{className:`app-tree-scroll h-full overflow-auto pr-1.5`,style:ij,children:(0,K.jsx)($A,{items:i,instanceDatabaseMap:e,children:(0,K.jsx)(aA,{canDragAndDrop:!1,canReorderItems:!1,canSearch:!0,canRename:!1,defaultInteractionMode:ck.DoubleClickItemToExpand,getItemTitle:ej,items:i,renderItemArrow:sk,renderItemTitle:nj,viewState:{databasesTree:{focusedItem:o,expandedItems:c,selectedItems:u}},onFocusItem:e=>s(e.index),onExpandItem:e=>l(t=>t.includes(e.index)?t:[...t,e.index]),onCollapseItem:e=>l(t=>t.filter(t=>t!==e.index)),onSelectItems:p,children:(0,K.jsx)(HA,{treeId:`databasesTree`,rootItem:a,treeLabel:`Databases tree`})})})})}function oj({instanceDatabaseMap:e}){return(0,K.jsxs)(`div`,{className:`pl-3 flex flex-col h-full min-h-0`,children:[(0,K.jsx)(`h1`,{className:`pt-3 pb-3 text-3xl shrink-0`,children:`Databases`}),e?(0,K.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,K.jsx)(aj,{instanceDatabaseMap:e})}):(0,K.jsx)(Sg,{className:`w-full flex-1 min-h-0 rounded-md`})]})}function sj(e){for(let t of e.split(`
815
+ `)){let e=t.match(/^(\t+| +)\S/);if(!e)continue;let n=e[1];return n[0]===` `?` `:n}return` `}function cj(e){return/\r\n/.test(e)?`\r
816
816
  `:`
817
- `}function rj(e){return e.kind===`named`?e.name:rj(e.of)}function ij(e){return e.kind===`list`}function aj(e){return e.kind===`named`?`${e.name}${e.nonNull?`!`:``}`:`[${aj(e.of)}]${e.nonNull?`!`:``}`}function oj(e,t){return e.find(e=>e.name===t)}function sj(e,t){return e?.args.find(e=>e.name===t)}function cj(e){if(e===void 0)return;let t=e.trim();if(t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`))try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function lj(e){if(e===void 0)return;let t=Number(e.trim());return Number.isFinite(t)?t:void 0}function uj(e){let t=e?.trim();return t===`true`||t!==`false`&&void 0}function dj(e){return JSON.stringify(e)}function fj(e){return String(Math.trunc(e))}function pj(e){return e?`true`:`false`}var mj=0;function hj(){return`f${mj++}`}function gj(e=``){return{key:hj(),leadingComments:[],name:e,type:{kind:`named`,name:`String`,nonNull:!1},directives:[]}}function _j(e){return{id:e,leading:``,typeName:``,directives:[{name:`table`,args:[],hadParens:!1},{name:`export`,args:[],hadParens:!1},{name:`sealed`,args:[],hadParens:!1}],fields:[{key:hj(),leadingComments:[],name:`id`,type:{kind:`named`,name:`ID`,nonNull:!1},directives:[{name:`primaryKey`,args:[],hadParens:!1}]}],trailingComments:[],raw:``,edited:!0}}function vj(e,t){return e.some(e=>e.name===t)}function yj(e,t,n){return n===vj(e,t)?e:n?[...e,{name:t,args:[],hadParens:!1}]:e.filter(e=>e.name!==t)}function bj(e,t,n){return e.find(e=>e.name===t)?.args.find(e=>e.name===n)?.value}function xj(e,t,n,r){return(vj(e,t)?e:[...e,{name:t,args:[],hadParens:!1}]).map(e=>{if(e.name!==t)return e;let i=e.args.filter(e=>e.name!==n),a=r===void 0?i:[...i,{name:n,value:r}];return{...e,args:a}})}function Sj(e,t,n,r){return xj(e,t,n,r?dj(r):void 0)}function Cj(e,t,n,r){return xj(e,t,n,r===void 0||Number.isNaN(r)?void 0:fj(r))}function wj(e,t,n,r,i){return xj(e,t,n,r===i?void 0:pj(r))}function Tj(e,t,n){let r={kind:`named`,name:e,nonNull:!t&&n};return t?{kind:`list`,of:r,nonNull:n}:r}function Ej(e){return rj(e.type)}function Dj(e){return e.type.kind===`list`}function Oj(e){return e.type.nonNull}function kj(e){return/[A-Za-z0-9_]/.test(e)}function Aj(e,t){if(e.startsWith(`"""`,t)){let n=t+3;for(;n<e.length;){if(e[n]===`\\`){n+=2;continue}if(e.startsWith(`"""`,n))return n+3;n++}return-1}let n=t+1;for(;n<e.length;){let t=e[n];if(t===`\\`){n+=2;continue}if(t===`"`)return n+1;if(t===`
818
- `)return-1;n++}return-1}function jj(e,t){let n=t;for(;n<e.length&&e[n]!==`
819
- `;)n++;return n}function Mj(e,t,n,r){let i=0,a=t;for(;a<e.length;){let t=e[a];if(t===`"`){if(a=Aj(e,a),a<0)return-1;continue}if(t===`#`){a=jj(e,a);continue}if(t===n)i++;else if(t===r&&(i--,i===0))return a+1;a++}return-1}function Nj(e,t){let n=t;for(;n<e.length&&/[\s,]/.test(e[n]);)n++;return n}function Pj(e,t,n){if(!e.startsWith(n,t)||t>0&&kj(e[t-1]))return!1;let r=e[t+n.length];return r===void 0||!kj(r)}function Fj(e,t){let n=Nj(e,t+4),r=n;for(;n<e.length&&kj(e[n]);)n++;if(n===r)return-1;for(;n<e.length;){let t=e[n];if(t===`"`){if(n=Aj(e,n),n<0)return-1;continue}if(t===`#`){n=jj(e,n);continue}if(t===`(`){if(n=Mj(e,n,`(`,`)`),n<0)return-1;continue}if(t===`{`)break;if(t===`}`)return-1;n++}return n>=e.length||e[n]!==`{`?-1:Mj(e,n,`{`,`}`)}function Ij(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===`"`){if(n=Aj(e,n),n<0)return{blocks:t,ok:!1};continue}if(r===`#`){n=jj(e,n);continue}if(Pj(e,n,`type`)){let r=Fj(e,n);if(r>0){t.push({start:n,end:r}),n=r;continue}}n++}return{blocks:t,ok:!0}}function Lj(e,t){let n=e[t];if(n===`"`){let n=Aj(e,t);return n<0?e.length:n}if(n===`[`){let n=Mj(e,t,`[`,`]`);return n<0?e.length:n}if(n===`{`){let n=Mj(e,t,`{`,`}`);return n<0?e.length:n}let r=t;for(;r<e.length&&!/[\s,)]/.test(e[r]);)r++;return r}function Rj(e){let t=[],n=0;for(;n<e.length&&(n=Nj(e,n),!(n>=e.length));){if(e[n]===`#`){n=jj(e,n);continue}let r=n;for(;n<e.length&&kj(e[n]);)n++;let i=e.slice(r,n);if(!i){n++;continue}if(n=Nj(e,n),e[n]!==`:`)continue;n=Nj(e,n+1);let a=n;n=Lj(e,n),t.push({name:i,value:e.slice(a,n).trim()})}return t}function zj(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(/\s/.test(r)){n++;continue}if(r===`#`){n=jj(e,n);continue}if(r!==`@`){n++;continue}n++;let i=n;for(;n<e.length&&kj(e[n]);)n++;let a=e.slice(i,n);if(!a)continue;let o=n;for(;o<e.length&&/\s/.test(e[o]);)o++;let s=[],c=!1;if(e[o]===`(`){let t=Mj(e,o,`(`,`)`);t>0&&(c=!0,s=Rj(e.slice(o+1,t-1)),n=t)}t.push({name:a,args:s,hadParens:c})}return t}function Bj(e,t){if(t=Nj(e,t),e[t]===`[`){let n=Bj(e,t+1);if(!n)return null;let r=Nj(e,n.end);if(e[r]!==`]`)return null;r++;let i=!1;return e[r]===`!`&&(i=!0,r++),{type:{kind:`list`,of:n.type,nonNull:i},end:r}}let n=t;for(;t<e.length&&kj(e[t]);)t++;if(t===n)return null;let r=e.slice(n,t),i=!1;return e[t]===`!`&&(i=!0,t++),{type:{kind:`named`,name:r,nonNull:i},end:t}}function Vj(e,t){let n=t;for(;n<e.length&&(e[n]===` `||e[n]===` `||e[n]===`,`);)n++;return n}function Hj(e){let t=[],n=[],r=0;for(;r<e.length;){let i=e[r];if(/[\s,]/.test(i)){r++;continue}if(i===`#`){let t=jj(e,r);n.push(e.slice(r,t).replace(/\r$/,``).trim()),r=t;continue}if(i===`"`){let t=Aj(e,r);if(t<0)return null;n.push(e.slice(r,t)),r=t;continue}let a=r;for(;r<e.length&&kj(e[r]);)r++;let o=e.slice(a,r);if(!o||(r=Nj(e,r),e[r]!==`:`))return null;let s=Bj(e,r+1);if(!s)return null;r=s.end;let c=r;for(r=Vj(e,r);e[r]===`@`;){for(r++;r<e.length&&kj(e[r]);)r++;let t=Vj(e,r);if(e[t]===`(`){let n=Mj(e,t,`(`,`)`);if(n<0)return null;t=n}r=t,r=Vj(e,r)}let l=zj(e.slice(c,r));r=Vj(e,r);let u;if(e[r]===`#`){let t=jj(e,r);u=e.slice(r,t).replace(/\r$/,``).trim(),r=t}t.push({key:hj(),leadingComments:n,name:o,type:s.type,directives:l,lineComment:u}),n=[]}return{fields:t,trailingComments:n}}function Uj(e){let t=e.indexOf(`
820
- `);if(t<0)return{body:e};let n=e.slice(0,t);return n.replace(/^[ \t,]+/,``).startsWith(`#`)?{headerComment:n.replace(/\r$/,``).trim(),body:e.slice(t+1)}:{body:e}}function Wj(e,t){let n=Nj(e,4),r=n;for(;n<e.length&&kj(e[n]);)n++;let i=e.slice(r,n);if(!i)return null;let a=e.indexOf(`{`,n);if(a<0)return null;let o=zj(e.slice(n,a));if(!oj(o,`table`))return null;let s=e.lastIndexOf(`}`);if(s<a)return null;let{headerComment:c,body:l}=Uj(e.slice(a+1,s)),u=Hj(l);return u?{id:t,leading:``,typeName:i,headerComment:c,directives:o,fields:u.fields,trailingComments:u.trailingComments,raw:e,edited:!1}:null}function Gj(e){let t=[0];for(let n=0;n<e.length;n++)e[n]===`
821
- `&&t.push(n+1);let n=t.length,r=r=>e.slice(t[r],r+1<n?t[r+1]-1:e.length).replace(/\r$/,``),i=Array.from({length:n},()=>!1),a=!1;for(let e=0;e<n;e++){let t=a,n=0;for(let t=r(e).indexOf(`"""`);t!==-1;t=r(e).indexOf(`"""`,t+3))n++,a=!a;i[e]=t||n>0}let o=t[n-1];for(let e=n-2;e>=0;e--){let n=r(e).trim();if(i[e]||n.startsWith(`#`)){o=t[e];continue}break}return[e.slice(0,o),e.slice(o)]}function Kj(e){let t=tj(e),n=nj(e),{blocks:r,ok:i}=Ij(e);if(!i)return{document:{segments:[{kind:`raw`,text:e}],indent:t,newline:n},ok:!1};let a=[],o=e=>{e&&a.push({kind:`raw`,text:e})},s=0,c=0;for(let t of r){let n=e.slice(s,t.start),r=e.slice(t.start,t.end),i=Wj(r,`t${c}`);if(i){let[e,t]=Gj(n);o(e),i.leading=t,a.push({kind:`table`,table:i}),c++}else o(n+r);s=t.end}return o(e.slice(s)),{document:{segments:a,indent:t,newline:n},ok:!0}}function qj(e){let t=(e||``)?.split(`.`);return t.length>1?t.slice(-1)[0]:``}var Jj={apng:{kind:`image`,mime:`image/apng`},avif:{kind:`image`,mime:`image/avif`},bmp:{kind:`image`,mime:`image/bmp`},gif:{kind:`image`,mime:`image/gif`},ico:{kind:`image`,mime:`image/x-icon`},jfif:{kind:`image`,mime:`image/jpeg`},jpeg:{kind:`image`,mime:`image/jpeg`},jpg:{kind:`image`,mime:`image/jpeg`},png:{kind:`image`,mime:`image/png`},webp:{kind:`image`,mime:`image/webp`},m4v:{kind:`video`,mime:`video/mp4`},mov:{kind:`video`,mime:`video/quicktime`},mp4:{kind:`video`,mime:`video/mp4`},ogv:{kind:`video`,mime:`video/ogg`},webm:{kind:`video`,mime:`video/webm`}};function Yj(e){return Jj[qj(e).toLowerCase()]}function Xj(e){return Yj(e)!==void 0}async function Zj({instanceClient:e,file:t,project:n,encoding:r}){let{data:i}=await e.post(`/`,{operation:`get_component_file`,project:n,file:t,encoding:r??(Xj(t)?`base64`:`utf8`)});return{project:n,file:t,...i}}function Qj(e){return z({queryKey:$j(e),queryFn:()=>Zj(e),enabled:!!e.file&&!!e.project,retry:!1})}function $j(e){return[e.entityId,`get_component_file`,e.project,e.file,e.encoding]}var eM=`data`,tM=25;function nM(e){return z({queryKey:[e.entityId,`schema-relationships`],staleTime:6e4,retry:!1,enabled:e.enabled!==!1,queryFn:async()=>{try{let t=rM(await dC(e)).slice(0,tM);return iM((await Promise.all(t.map(({project:t,file:n})=>Zj({...e,project:t,file:n}).then(e=>e.message).catch(()=>void 0)))).filter(e=>typeof e==`string`))}catch{return{}}}})}function rM(e){let t=[];for(let n of e?.entries??[]){if(!(`entries`in n))continue;let e=(r,i)=>{for(let a of r)`entries`in a?e(a.entries,`${i}${a.name}/`):a.name.endsWith(`.graphql`)&&t.push({project:n.name,file:`${i}${a.name}`})};e(n.entries,``)}return t}function iM(e){let t=[];for(let n of e){let{document:e,ok:r}=Kj(n);if(r)for(let n of e.segments){if(n.kind!==`table`)continue;let{table:e}=n,r=oj(e.directives,`table`),i=cj(sj(r,`table`)?.value)??e.typeName,a=cj(sj(r,`database`)?.value)??eM,o=[];for(let t of e.fields){let e=oj(t.directives,`relationship`);e&&o.push({attribute:t.name,relatedTypeName:rj(t.type),isToMany:ij(t.type),from:cj(sj(e,`from`)?.value),to:cj(sj(e,`to`)?.value)})}t.push({typeName:e.typeName,tableName:i,database:a,relationships:o})}}let n={};for(let e of t){if(!e.relationships.length)continue;let r=[];for(let{relatedTypeName:n,...i}of e.relationships){let a=t.find(t=>t.typeName===n&&t.database===e.database);a&&r.push({...i,relatedTableName:a.tableName})}r.length&&((n[e.database]??={})[e.tableName]=r)}return n}function aM(e,t,n){if(!n||!e?.length)return;let r=new Set;for(let t of e){let e=t[n];e!=null&&r.add(e)}let i=new Set;for(let e of t){let t=e[n];t!=null&&i.add(t)}let a=[...r].filter(e=>!i.has(e));if(a.length)return{kind:`lost`,keys:a};let o=[...i].filter(e=>!r.has(e));if(o.length)return{kind:`unknown`,keys:o};let s=e.filter(e=>e[n]==null).length,c=t.filter(e=>e[n]==null).length;if(c!==s)return{kind:`keyless`,added:Math.max(0,c-s),dropped:Math.max(0,s-c)}}function oM(e,t,n){if(!n||!e?.length)return[];let r=new Map(e.map(e=>[e[n],e])),i=[];for(let[e,a]of t.entries()){let t=a[n];if(t==null)continue;let o=r.get(t);if(!o)continue;let s=Object.keys(o).filter(e=>!Object.hasOwn(a,e));s.length&&i.push({index:e,removed:s})}return i}function sM(e){return[...new Set(e.flatMap(e=>e.removed))]}function cM({canEditRecords:e,canDeleteRecords:t,canReplaceRecords:n,replaceBlockedReason:r,setIsModalOpen:i,isModalOpen:a,primaryKey:o,missingPrimaryKey:s,recordUnavailable:c,syntheticAttributes:l,recordNavigation:u,data:d,onSaveChanges:f,onReplaceRecord:p,onDeleteRecord:m,isUpdateTableRecordsPending:h,isDeleteTableRecordsPending:g}){let _=rv(),v=(0,G.useRef)(null),y=!!s||!!c,b=!e||y,[x,S]=(0,G.useState)(!1),[C,w]=(0,G.useState)(),{onEditorMount:T,showRecordJsonError:E,clearRecordJsonError:D}=TD(),O=(0,G.useMemo)(()=>d?.map(({__createdtime__:e,__updatedtime__:t,...n})=>{for(let e of l??[])delete n[e];return n}),[d,l]),k=(0,G.useMemo)(()=>O&&JSON.stringify(O,null,4),[O]),A=k??``,ee=(0,G.useRef)(A),te=(0,G.useRef)(null);(0,G.useLayoutEffect)(()=>{ee.current!==A&&(ee.current=A,te.current=A)},[A]);let j=(0,G.useMemo)(()=>d&&JSON.stringify(d.map(e=>e[o]??null)),[d,o]),M=a?k:null,N=a?j:null,[P,ne]=(0,G.useState)(M),[re,ie]=(0,G.useState)(N),[ae,oe]=(0,G.useState)(!1),[se,ce]=(0,G.useState)(!1);M!==P&&(oe(a&&N!=null&&N===re&&x),ne(M),ie(N),w(void 0),S(!1));let le=a&&(d!==void 0||se);se!==le&&ce(le);let ue=h||g,de=e=>{(!x||confirm(`Discard your unsaved changes to this record?`))&&(w(void 0),S(!1),oe(!1),e())};return(0,K.jsx)(Id,{onOpenChange:i,open:a,children:(0,K.jsxs)(Ud,{"aria-describedby":void 0,resizable:!0,autoFocus:!b,onKeyDown:e=>{if(!u||ue||v.current?.contains(e.target))return;let t=e.key===`ArrowLeft`||e.key===`ArrowUp`?u.hasPrevious?u.onPrevious:void 0:(e.key===`ArrowRight`||e.key===`ArrowDown`)&&u.hasNext?u.onNext:void 0;t&&(e.preventDefault(),de(t))},onEscapeKeyDown:b?void 0:e=>{x&&e.preventDefault()},children:[(0,K.jsx)(Wd,{children:(0,K.jsxs)(Kd,{children:[b?`View`:`Edit`,` Record`]})}),y&&(0,K.jsxs)(_m,{variant:`warning`,children:[(0,K.jsx)(Oo,{}),(0,K.jsx)(vm,{children:s?`This record has no primary key value`:`This record couldn't be loaded`}),(0,K.jsxs)(ym,{children:[(0,K.jsx)(`p`,{children:s?o?(0,K.jsxs)(K.Fragment,{children:[`It has no value for the primary key`,` `,(0,K.jsx)(`code`,{children:o}),`, so it can't be looked up, edited, or deleted individually.`]}):`It has no primary key value, so it can't be looked up, edited, or deleted individually.`:o?(0,K.jsxs)(K.Fragment,{children:[`Nothing is stored under its primary key`,` `,(0,K.jsx)(`code`,{children:o}),`, so it can't be edited or deleted individually.`]}):`Nothing is stored under its primary key, so it can't be edited or deleted individually.`}),(0,K.jsx)(`p`,{children:`This usually means the table's primary key was changed after the record was created, so the value shown here isn't the key the record is actually stored under. To remove it, recreate the table or restore the original primary key attribute.`})]})]}),ae&&(0,K.jsxs)(_m,{variant:`warning`,children:[(0,K.jsx)(Oo,{}),(0,K.jsx)(vm,{children:`This record changed while you were editing it`}),(0,K.jsx)(ym,{children:`The editor was refreshed with the stored record, so the unsaved changes were discarded. Make them again and save.`})]}),d||se?(0,K.jsx)(`div`,{ref:v,className:`flex-1 min-h-0 w-full`,children:(0,K.jsx)(av,{className:`w-full h-full`,language:dD,theme:_,options:{readOnly:b||!d,automaticLayout:!0},value:A,onMount:T,onChange:e=>{let t=te.current!==null&&e===te.current;te.current=null,!t&&(w(e),S(!0),oe(!1),D())}})}):(0,K.jsx)(gs,{}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 w-full`,children:[(0,K.jsx)(`div`,{className:`flex`,children:t&&!y&&(0,K.jsxs)(H,{variant:`destructive`,type:`button`,autoFocus:!1,onClick:()=>{let e=d?.[0]?.[o];e!=null&&m([e])},disabled:g||h,children:[(0,K.jsx)(Eo,{}),` Delete Record`]})}),u&&(0,K.jsx)(lM,{...u,disabled:ue,onPrevious:()=>de(u.onPrevious),onNext:()=>de(u.onNext)}),(0,K.jsx)(`div`,{className:`flex`,children:e&&!y&&(0,K.jsxs)(H,{variant:`submit`,autoFocus:!0,accessKey:`s`,onClick:()=>{if(C===void 0){i(!1);return}let e=hD(C);if(!e.ok){U.error(`This record isn't valid JSON`,{description:gD(e.error)}),E(e.error);return}let t=Array.isArray(e.value)?e.value:[e.value],a=aM(O,t,o);if(a){U.error(a.kind===`lost`?`This record's ${o} is missing from the save`:a.kind===`unknown`?`This edit names a ${o} the editor didn't load`:`This edit ${a.added?`adds`:`drops`} ${(a.added||a.dropped)===1?`a record`:`${a.added||a.dropped} records`} with no ${o}`,{description:a.kind===`lost`?`${o} identifies the record, so restore ${a.keys.join(`, `)} to save this edit. Changing it doesn't rename a record — the save would do nothing, or overwrite whatever is stored under the new value. To delete the record, use Delete Record.`:a.kind===`unknown`?`Saving would edit the record stored under ${a.keys.join(`, `)}, which isn't the record open here. Remove it from the JSON and edit that record directly.`:a.added?`A record with no ${o} can't be written from here — the save would skip it and still report success. Remove it, and use Add Record to create a record.`:`Removing a record from the JSON doesn't delete it, so the save would report success having left it alone. Put it back, and use Delete Record to delete a record.`});return}let s=oM(O,t,o);if(s.length){if(s.length<t.length){U.error(`Removing an attribute can't be combined with other record edits`,{description:`Removing an attribute replaces the whole record, which would overwrite any concurrent change to the other records in this payload. Remove the same attribute from every record here, or put it back and save the value changes on their own — the records loaded together have to be saved together.`});return}if(!n){let e=sM(s),t=e.length===1?`an attribute`:`attributes`,n=`Removing ${e.join(`, `)}`;U.error(r===`permission`?`You don't have permission to remove ${t}`:`This Harper version can't remove ${t}`,{description:r===`permission`?`${n} rewrites the record through the 'put' operation, which needs both insert and update on this table, and 'put' in the role's allowed operations. Ask an administrator for those grants, or set the value to null instead of removing it.`:`${n} needs the 'put' operation, added in Harper 5.3.0. On this instance the update operation can only merge, so the attribute would silently stay. Upgrade the instance, or set the value to null instead of removing it.`});return}p(t);return}f(t)},disabled:h||g,children:[(0,K.jsx)(Ka,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`S`}),`ave Changes`]})]})})]})})]})})}function lM({position:e,total:t,isTotalEstimated:n,hasPrevious:r,hasNext:i,onPrevious:a,onNext:o,disabled:s}){return(0,K.jsxs)(`div`,{className:`flex items-center rounded-lg border border-border text-sm text-muted-foreground`,children:[(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Previous record`,disabled:s||!r,onClick:a,children:(0,K.jsx)(Er,{})}),(0,K.jsxs)(`span`,{className:`whitespace-nowrap px-1 tabular-nums`,"aria-live":`polite`,children:[`Record `,e===void 0?`…`:Jg(e),t!==void 0&&(0,K.jsxs)(K.Fragment,{children:[` of `,n?`~`:``,Jg(t)]})]}),(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Next record`,disabled:s||!i,onClick:o,children:(0,K.jsx)(Or,{})})]})}function uM(e=!1){let[t,n]=(0,G.useState)(e),r=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(e=>!e)},[]),i=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(!0)},[]),a=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(!1)},[]);return(0,G.useMemo)(()=>({toggled:t,setToggled:n,toggle:r,toggleOn:i,toggleOff:a}),[r,n,a,i,t])}async function dM({databaseName:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`cleanup_orphan_blobs`,database:e});return n}function fM(){return R({mutationFn:dM})}function pM(e){return e!==void 0&&!Array.isArray(e)}var mM=`Harper's response didn't report which records it wrote, so the change may not have been saved.`;function hM(e,t){if(!Array.isArray(e?.deleted_hashes)||pM(e?.skipped_hashes))return{message:mM,wroteNothing:!1};let n=e.skipped_hashes?.length??0,r=e.deleted_hashes.length;if(!(n===0&&r>=t))return{message:`Harper deleted ${r} of ${t} records${n>0?` and skipped ${n}`:``}. A record is skipped when nothing is stored under its primary key.`,wroteNothing:r===0}}async function gM({databaseName:e,tableName:t,hashValues:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`delete`,database:e,table:t,hash_values:n});return i}function _M(){return R({mutationFn:gM})}function vM(e,t,n){return[e,`search_by_id`,t,n]}function yM({enabled:e,entityId:t,instanceClient:n,databaseName:r,tableName:i,ids:a}){let o=a?.filter(e=>e!=null)??null;return z({queryKey:[t,`search_by_id`,r,i,o],queryFn:()=>n.post(`/`,{get_attributes:[`*`],ids:o,noCacheStore:!0,onlyIfCached:!1,operation:`search_by_id`,database:r,table:i}),enabled:e&&!!o?.length,retry:!1})}async function bM({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t,exact_count:!0},{timeout:0});return r.record_count}function xM(e){return z({enabled:e.enabled&&!!e.databaseName&&!!e.tableName,queryKey:[e.entityId,e.databaseName,e.tableName,`record_count`,`exact`],queryFn:()=>bM(e),staleTime:6e4,gcTime:5e3,retry:!1})}function SM(e){return!!e&&of(`5.3.0`,e)}function CM(e,t){if(!t)return`permission`;if(e!==void 0&&!SM(e))return`version`}async function wM({databaseName:e,tableName:t,records:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`put`,database:e,table:t,records:n});return i}function TM(e,t){if(!Array.isArray(e?.put_hashes))return{message:mM,wroteNothing:!1};if(!(e.put_hashes.length>=t))return{message:`Harper reported writing ${e.put_hashes.length} of ${t} records, so the change may not have been saved.`,wroteNothing:e.put_hashes.length===0}}function EM(){return R({mutationFn:wM})}function DM(e,t){if(pM(e?.update_hashes)||pM(e?.skipped_hashes))return{message:mM,wroteNothing:!1};let n=e?.skipped_hashes?.length??0,r=e?.update_hashes?.length??t;if(!(n===0&&r>=t))return{message:`Harper updated ${r} of ${t} records${n>0?` and skipped ${n}`:``}. A record is skipped when nothing is stored under its primary key.`,wroteNothing:Array.isArray(e?.update_hashes)&&r===0}}async function OM(e){let{databaseName:t,tableName:n,records:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`update`,database:t,table:n,records:r});return a}function kM(){return R({mutationFn:OM})}var AM=j(M(),M());function jM({applyFilters:e,columnFiltersForm:t,headerGroups:n,selectColumnWidth:r}){let i=(0,G.useCallback)(t=>{if(t.key===`Enter`)return t.preventDefault(),e(),!1},[e]);return(0,K.jsx)(k_,{children:(0,K.jsx)(El,{...t,children:n.map(e=>(0,K.jsxs)(j_,{className:`border-none`,children:[r!==void 0&&(0,K.jsx)(P_,{style:{width:`${r}px`},className:`sticky top-10 left-0 z-20 bg-card dark:bg-black-dark border-b border-border shadow-[inset_-1px_0_0_var(--color-border)]`}),e.headers.map(e=>{let n=e.column.columnDef.meta?.relationshipInfo;return(0,K.jsx)(P_,{style:{width:`${e.column.getSize()}px`},className:`sticky top-10 z-10 bg-card dark:bg-black-dark border-b border-border`,children:e.column.columnDef.enableColumnFilter&&(0,K.jsx)(Y,{control:t.control,name:e.id,render:({field:e})=>(0,K.jsxs)(X,{className:`border-r border-r-black`,children:[(0,K.jsxs)(`div`,{className:`flex items-center`,children:[n&&(0,K.jsx)(MM,{relationshipInfo:n,value:e.value??``,onChange:e.onChange}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,className:`rounded-none`,onKeyDown:i,value:e.value??``,placeholder:n?`.${n.relatedPrimaryKey} value`:void 0})})]}),(0,K.jsx)(Q,{})]})})},e.id)})]},e.id))})})}function MM({relationshipInfo:e,value:t,onChange:n}){return(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,className:`rounded-none shrink-0`,title:`Filter by a ${e.relatedTableName} property`,children:(0,K.jsx)(On,{})})}),(0,K.jsx)(Zo,{side:`bottom`,align:`start`,children:e.relatedAttributes.map(e=>(0,K.jsxs)(Qo,{onClick:()=>{let r=t.replace(/^\s*\.\S*\s*/,``);n(`.${e.attribute} ${r}`)},children:[e.attribute,e.type&&(0,K.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:e.type})]},e.attribute))})]})}function NM({tableName:e,hasPrimaryKey:t,isFiltered:n,isPastFirstPage:r,recordCount:i,canImportFile:a,canImportUrl:o,canSeedSample:s,canSeedRandom:c,canAddRecords:l,onImport:u,onSeed:d,onAddRecords:f,onClearFilters:p}){if(!t)return(0,K.jsxs)(IM,{children:[(0,K.jsxs)(LM,{children:[(0,K.jsx)(`span`,{className:`font-mono`,children:e}),` has no primary key`]}),(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[i?`It reports ${_(Jg(i),`record`,`records`)}, but Studio`:`Studio`,` `,`lists and opens records by their primary key, so it can't browse this table. To browse its records here, copy them into a new table that has a primary key.`]})]});if(r)return(0,K.jsxs)(IM,{children:[(0,K.jsx)(LM,{children:`No records on this page`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`There are fewer records than this page starts at. Try an earlier page.`})]});if(n)return(0,K.jsxs)(IM,{children:[(0,K.jsx)(LM,{children:`No records match these filters`}),(0,K.jsxs)(H,{variant:`ghost`,onClick:p,children:[(0,K.jsx)(vi,{}),`Clear Filters`]})]});if(i)return(0,K.jsxs)(IM,{children:[(0,K.jsx)(LM,{children:`No records came back`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This table reports records, but the page returned none. Try refreshing, or turn off Only If Cached in the table options menu.`})]});let m=a||o,h=s||c;return(0,K.jsxs)(IM,{children:[(0,K.jsx)(LM,{children:i===0?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`font-mono`,children:e}),` has no records yet`]}):`No records to show`}),m&&h&&(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Two ways to get some in — bring your own, or start from data we provide.`}),(m||h)&&(0,K.jsxs)(`div`,{className:`flex w-full flex-col gap-3 sm:flex-row`,children:[m&&(0,K.jsx)(RM,{Icon:Jr,title:`Import your data`,description:PM(a,o),action:`Import data`,onClick:u}),h&&(0,K.jsx)(RM,{Icon:Oa,title:`Seed some data`,description:FM(s,c),action:`Seed data`,onClick:d})]}),l&&(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[m||h?`Or write one yourself: `:`Write one yourself: `,(0,K.jsxs)(H,{variant:`link`,className:`h-auto p-0 text-sm dark:text-violet-300`,onClick:f,children:[(0,K.jsx)(Ia,{}),`Add New Record(s)`]})]})]})}function PM(e,t){return e?t?`Upload a CSV or JSON file, or load a CSV from a URL the instance can reach.`:`Upload a CSV or JSON file.`:`Load a CSV from a URL the instance can reach.`}function FM(e,t){return e?t?`Fill this table with random records, or load a ready-made sample dataset into a table of its own.`:`Load a ready-made sample dataset. It arrives in a table of its own.`:`Fill this table with random records modelled on its columns.`}function IM({children:e}){return(0,K.jsx)(`div`,{className:`h-full overflow-y-auto p-6`,children:(0,K.jsx)(`div`,{className:`flex min-h-full items-center justify-center`,children:(0,K.jsxs)(`div`,{className:`flex w-full max-w-2xl flex-col items-center gap-4 text-center`,children:[(0,K.jsx)(vo,{"aria-hidden":!0,className:`size-8 text-muted-foreground/50`}),e]})})})}function LM({children:e}){return(0,K.jsx)(`h2`,{className:`text-base font-medium`,children:e})}function RM({Icon:e,title:t,description:n,action:r,onClick:i}){return(0,K.jsxs)(`button`,{type:`button`,onClick:i,className:`group flex flex-1 cursor-pointer flex-col items-start gap-1.5 rounded-lg border border-border p-4 text-left transition-colors hover:border-primary hover:bg-accent/50 focus-visible:ring-1 focus-visible:ring-purple-200 focus-visible:outline-1 dark:border-grey-700 dark:hover:border-violet-300`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2 font-medium`,children:[(0,K.jsx)(e,{className:`size-4 text-primary dark:text-violet-300`}),t]}),(0,K.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:n}),(0,K.jsxs)(`span`,{className:`mt-1 text-sm text-primary group-hover:underline dark:text-violet-300`,children:[r,` →`]})]})}function zM({columns:e,columnVisibility:t,setColumnVisibility:n}){let r=(0,G.useMemo)(()=>e.map(e=>typeof e.header==`string`?e.header:void 0).filter($c),[e]),i=(0,G.useCallback)((e,r)=>{n({...t,[e]:r})},[t,n]),a=(0,G.useCallback)(e=>{n({...t,...Object.fromEntries(r.map(t=>[t,e]))})},[r,t,n]),o=(0,G.useMemo)(()=>r.every(e=>t[e]??!0),[r,t]),s=(0,G.useMemo)(()=>r.every(e=>!(t[e]??!0)),[r,t]);return(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsxs)(H,{variant:`ghost`,children:[(0,K.jsx)(Xr,{className:`inline-block `}),`Columns`]})}),(0,K.jsxs)(Zo,{children:[r.length>0&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Qo,{inset:!0,disabled:o,onSelect:e=>{e.preventDefault(),a(!0)},children:`Select all`}),(0,K.jsx)(Qo,{inset:!0,disabled:s,onSelect:e=>{e.preventDefault(),a(!1)},children:`Deselect all`}),(0,K.jsx)(rs,{})]}),r.map(e=>(0,K.jsx)(BM,{columnHeader:e,isChecked:t[e]??!0,toggleColumn:i},e))]})]})}function BM({columnHeader:e,isChecked:t,toggleColumn:n}){let r=(0,G.useCallback)(t=>{n(e,t)},[e,n]);return(0,K.jsx)($o,{checked:t,onCheckedChange:r,onSelect:e=>e.preventDefault(),children:e})}function VM({className:e}){return(0,K.jsx)(Xi,{className:y(`animate-spin`,e)})}var HM=[20,50,100,250];function UM({pageIndex:e,pageSize:t,totalPages:n,totalRecords:r,isEstimatedCount:i,estimatedRange:a,isExactCountFetching:o,isExactCountError:s,onRequestExactCount:c,setPageIndex:l,setPageSize:u}){let d=n===void 0||r===void 0,f=n&&n>0?n:1,p=e+1,m=e>0,h=!d&&p<f,g=e=>{l(Math.max(0,Math.min(e,f)-1))},_=e=>{u(e),l(0)},v=JM(p,f);return(0,K.jsx)(`div`,{className:`@container shrink-0 border-t border-border`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 whitespace-nowrap text-sm text-muted-foreground`,children:[(0,K.jsxs)(`span`,{className:`hidden @min-[400px]:inline`,children:[`Page `,Jg(p),` of `,d?`…`:Jg(f)]}),(0,K.jsx)(`span`,{"aria-hidden":!0,className:`hidden text-border @min-[400px]:inline`,children:`•`}),(0,K.jsx)(`span`,{children:d?(0,K.jsx)(Sg,{}):i?(0,K.jsx)(WM,{totalRecords:r,estimatedRange:a,isExactCountFetching:o,isExactCountError:s,onRequestExactCount:c}):(0,K.jsxs)(K.Fragment,{children:[Jg(r),` `,r===1?`record`:`records`]})})]}),(0,K.jsx)(`div`,{className:`grow`}),(0,K.jsxs)(`nav`,{className:`flex items-center divide-x divide-border overflow-hidden rounded-lg border border-border`,children:[(0,K.jsxs)(GM,{onClick:()=>g(p-1),disabled:!m,"aria-label":`Previous page`,children:[(0,K.jsx)(Er,{}),(0,K.jsx)(`span`,{className:`hidden @min-[480px]:inline`,children:`Previous`})]}),(0,K.jsx)(`div`,{className:`hidden divide-x divide-border @min-[620px]:flex`,children:v.map((e,t)=>e===`ellipsis`?(0,K.jsx)(`span`,{className:`flex h-9 min-w-9 items-center justify-center px-1 text-sm text-muted-foreground`,children:`…`},`ellipsis-${t}`):(0,K.jsx)(GM,{onClick:()=>g(e),isActive:e===p,"aria-label":`Page ${e}`,"aria-current":e===p?`page`:void 0,children:Jg(e)},e))}),(0,K.jsxs)(GM,{onClick:()=>g(p+1),disabled:!h,"aria-label":`Next page`,children:[(0,K.jsx)(`span`,{className:`hidden @min-[480px]:inline`,children:`Next`}),(0,K.jsx)(Or,{})]})]}),(0,K.jsx)(`div`,{className:`hidden grow @min-[840px]:block`}),(0,K.jsx)(qM,{pageSize:t,onChange:_}),(0,K.jsx)(KM,{pageCount:f,disabled:d||f<=1,onGo:g})]})})}function WM({totalRecords:e,estimatedRange:t,isExactCountFetching:n,isExactCountError:r,onRequestExactCount:i}){let a=e===1?`record`:`records`,o=r&&!n;return(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsxs)(`button`,{type:`button`,className:`cursor-help underline decoration-dotted underline-offset-4`,"aria-label":`Approximately ${Jg(e)} ${a} (estimated)`,children:[`~`,Jg(e),` `,a]})}),(0,K.jsxs)(Tc,{side:`top`,align:`start`,className:`flex max-w-60 flex-col gap-2 p-3 text-left`,children:[(0,K.jsxs)(`span`,{children:[`Estimated count.`,t?(0,K.jsxs)(K.Fragment,{children:[` `,`Likely between `,Jg(t[0]),` and `,Jg(t[1]),`.`]}):null]}),o&&(0,K.jsx)(`span`,{className:`font-medium`,children:`Couldn’t get the exact count.`}),(0,K.jsxs)(`button`,{type:`button`,onClick:i,disabled:n,className:`inline-flex items-center justify-center gap-1.5 self-start rounded border
817
+ `}function lj(e){return e.kind===`named`?e.name:lj(e.of)}function uj(e){return e.kind===`list`}function dj(e){return e.kind===`named`?`${e.name}${e.nonNull?`!`:``}`:`[${dj(e.of)}]${e.nonNull?`!`:``}`}function fj(e,t){return e.find(e=>e.name===t)}function pj(e,t){return e?.args.find(e=>e.name===t)}function mj(e){if(e===void 0)return;let t=e.trim();if(t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`))try{return JSON.parse(t)}catch{return t.slice(1,-1)}}function hj(e){if(e===void 0)return;let t=Number(e.trim());return Number.isFinite(t)?t:void 0}function gj(e){let t=e?.trim();return t===`true`||t!==`false`&&void 0}function _j(e){return JSON.stringify(e)}function vj(e){return String(Math.trunc(e))}function yj(e){return e?`true`:`false`}var bj=0;function xj(){return`f${bj++}`}function Sj(e=``){return{key:xj(),leadingComments:[],name:e,type:{kind:`named`,name:`String`,nonNull:!1},directives:[]}}function Cj(e){return{id:e,leading:``,typeName:``,directives:[{name:`table`,args:[],hadParens:!1},{name:`export`,args:[],hadParens:!1},{name:`sealed`,args:[],hadParens:!1}],fields:[{key:xj(),leadingComments:[],name:`id`,type:{kind:`named`,name:`ID`,nonNull:!1},directives:[{name:`primaryKey`,args:[],hadParens:!1}]}],trailingComments:[],raw:``,edited:!0}}function wj(e,t){return e.some(e=>e.name===t)}function Tj(e,t,n){return n===wj(e,t)?e:n?[...e,{name:t,args:[],hadParens:!1}]:e.filter(e=>e.name!==t)}function Ej(e,t,n){return e.find(e=>e.name===t)?.args.find(e=>e.name===n)?.value}function Dj(e,t,n,r){return(wj(e,t)?e:[...e,{name:t,args:[],hadParens:!1}]).map(e=>{if(e.name!==t)return e;let i=e.args.filter(e=>e.name!==n),a=r===void 0?i:[...i,{name:n,value:r}];return{...e,args:a}})}function Oj(e,t,n,r){return Dj(e,t,n,r?_j(r):void 0)}function kj(e,t,n,r){return Dj(e,t,n,r===void 0||Number.isNaN(r)?void 0:vj(r))}function Aj(e,t,n,r,i){return Dj(e,t,n,r===i?void 0:yj(r))}function jj(e,t,n){let r={kind:`named`,name:e,nonNull:!t&&n};return t?{kind:`list`,of:r,nonNull:n}:r}function Mj(e){return lj(e.type)}function Nj(e){return e.type.kind===`list`}function Pj(e){return e.type.nonNull}function Fj(e){return/[A-Za-z0-9_]/.test(e)}function Ij(e,t){if(e.startsWith(`"""`,t)){let n=t+3;for(;n<e.length;){if(e[n]===`\\`){n+=2;continue}if(e.startsWith(`"""`,n))return n+3;n++}return-1}let n=t+1;for(;n<e.length;){let t=e[n];if(t===`\\`){n+=2;continue}if(t===`"`)return n+1;if(t===`
818
+ `)return-1;n++}return-1}function Lj(e,t){let n=t;for(;n<e.length&&e[n]!==`
819
+ `;)n++;return n}function Rj(e,t,n,r){let i=0,a=t;for(;a<e.length;){let t=e[a];if(t===`"`){if(a=Ij(e,a),a<0)return-1;continue}if(t===`#`){a=Lj(e,a);continue}if(t===n)i++;else if(t===r&&(i--,i===0))return a+1;a++}return-1}function zj(e,t){let n=t;for(;n<e.length&&/[\s,]/.test(e[n]);)n++;return n}function Bj(e,t,n){if(!e.startsWith(n,t)||t>0&&Fj(e[t-1]))return!1;let r=e[t+n.length];return r===void 0||!Fj(r)}function Vj(e,t){let n=zj(e,t+4),r=n;for(;n<e.length&&Fj(e[n]);)n++;if(n===r)return-1;for(;n<e.length;){let t=e[n];if(t===`"`){if(n=Ij(e,n),n<0)return-1;continue}if(t===`#`){n=Lj(e,n);continue}if(t===`(`){if(n=Rj(e,n,`(`,`)`),n<0)return-1;continue}if(t===`{`)break;if(t===`}`)return-1;n++}return n>=e.length||e[n]!==`{`?-1:Rj(e,n,`{`,`}`)}function Hj(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(r===`"`){if(n=Ij(e,n),n<0)return{blocks:t,ok:!1};continue}if(r===`#`){n=Lj(e,n);continue}if(Bj(e,n,`type`)){let r=Vj(e,n);if(r>0){t.push({start:n,end:r}),n=r;continue}}n++}return{blocks:t,ok:!0}}function Uj(e,t){let n=e[t];if(n===`"`){let n=Ij(e,t);return n<0?e.length:n}if(n===`[`){let n=Rj(e,t,`[`,`]`);return n<0?e.length:n}if(n===`{`){let n=Rj(e,t,`{`,`}`);return n<0?e.length:n}let r=t;for(;r<e.length&&!/[\s,)]/.test(e[r]);)r++;return r}function Wj(e){let t=[],n=0;for(;n<e.length&&(n=zj(e,n),!(n>=e.length));){if(e[n]===`#`){n=Lj(e,n);continue}let r=n;for(;n<e.length&&Fj(e[n]);)n++;let i=e.slice(r,n);if(!i){n++;continue}if(n=zj(e,n),e[n]!==`:`)continue;n=zj(e,n+1);let a=n;n=Uj(e,n),t.push({name:i,value:e.slice(a,n).trim()})}return t}function Gj(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(/\s/.test(r)){n++;continue}if(r===`#`){n=Lj(e,n);continue}if(r!==`@`){n++;continue}n++;let i=n;for(;n<e.length&&Fj(e[n]);)n++;let a=e.slice(i,n);if(!a)continue;let o=n;for(;o<e.length&&/\s/.test(e[o]);)o++;let s=[],c=!1;if(e[o]===`(`){let t=Rj(e,o,`(`,`)`);t>0&&(c=!0,s=Wj(e.slice(o+1,t-1)),n=t)}t.push({name:a,args:s,hadParens:c})}return t}function Kj(e,t){if(t=zj(e,t),e[t]===`[`){let n=Kj(e,t+1);if(!n)return null;let r=zj(e,n.end);if(e[r]!==`]`)return null;r++;let i=!1;return e[r]===`!`&&(i=!0,r++),{type:{kind:`list`,of:n.type,nonNull:i},end:r}}let n=t;for(;t<e.length&&Fj(e[t]);)t++;if(t===n)return null;let r=e.slice(n,t),i=!1;return e[t]===`!`&&(i=!0,t++),{type:{kind:`named`,name:r,nonNull:i},end:t}}function qj(e,t){let n=t;for(;n<e.length&&(e[n]===` `||e[n]===` `||e[n]===`,`);)n++;return n}function Jj(e){let t=[],n=[],r=0;for(;r<e.length;){let i=e[r];if(/[\s,]/.test(i)){r++;continue}if(i===`#`){let t=Lj(e,r);n.push(e.slice(r,t).replace(/\r$/,``).trim()),r=t;continue}if(i===`"`){let t=Ij(e,r);if(t<0)return null;n.push(e.slice(r,t)),r=t;continue}let a=r;for(;r<e.length&&Fj(e[r]);)r++;let o=e.slice(a,r);if(!o||(r=zj(e,r),e[r]!==`:`))return null;let s=Kj(e,r+1);if(!s)return null;r=s.end;let c=r;for(r=qj(e,r);e[r]===`@`;){for(r++;r<e.length&&Fj(e[r]);)r++;let t=qj(e,r);if(e[t]===`(`){let n=Rj(e,t,`(`,`)`);if(n<0)return null;t=n}r=t,r=qj(e,r)}let l=Gj(e.slice(c,r));r=qj(e,r);let u;if(e[r]===`#`){let t=Lj(e,r);u=e.slice(r,t).replace(/\r$/,``).trim(),r=t}t.push({key:xj(),leadingComments:n,name:o,type:s.type,directives:l,lineComment:u}),n=[]}return{fields:t,trailingComments:n}}function Yj(e){let t=e.indexOf(`
820
+ `);if(t<0)return{body:e};let n=e.slice(0,t);return n.replace(/^[ \t,]+/,``).startsWith(`#`)?{headerComment:n.replace(/\r$/,``).trim(),body:e.slice(t+1)}:{body:e}}function Xj(e,t){let n=zj(e,4),r=n;for(;n<e.length&&Fj(e[n]);)n++;let i=e.slice(r,n);if(!i)return null;let a=e.indexOf(`{`,n);if(a<0)return null;let o=Gj(e.slice(n,a));if(!fj(o,`table`))return null;let s=e.lastIndexOf(`}`);if(s<a)return null;let{headerComment:c,body:l}=Yj(e.slice(a+1,s)),u=Jj(l);return u?{id:t,leading:``,typeName:i,headerComment:c,directives:o,fields:u.fields,trailingComments:u.trailingComments,raw:e,edited:!1}:null}function Zj(e){let t=[0];for(let n=0;n<e.length;n++)e[n]===`
821
+ `&&t.push(n+1);let n=t.length,r=r=>e.slice(t[r],r+1<n?t[r+1]-1:e.length).replace(/\r$/,``),i=Array.from({length:n},()=>!1),a=!1;for(let e=0;e<n;e++){let t=a,n=0;for(let t=r(e).indexOf(`"""`);t!==-1;t=r(e).indexOf(`"""`,t+3))n++,a=!a;i[e]=t||n>0}let o=t[n-1];for(let e=n-2;e>=0;e--){let n=r(e).trim();if(i[e]||n.startsWith(`#`)){o=t[e];continue}break}return[e.slice(0,o),e.slice(o)]}function Qj(e){let t=sj(e),n=cj(e),{blocks:r,ok:i}=Hj(e);if(!i)return{document:{segments:[{kind:`raw`,text:e}],indent:t,newline:n},ok:!1};let a=[],o=e=>{e&&a.push({kind:`raw`,text:e})},s=0,c=0;for(let t of r){let n=e.slice(s,t.start),r=e.slice(t.start,t.end),i=Xj(r,`t${c}`);if(i){let[e,t]=Zj(n);o(e),i.leading=t,a.push({kind:`table`,table:i}),c++}else o(n+r);s=t.end}return o(e.slice(s)),{document:{segments:a,indent:t,newline:n},ok:!0}}function $j(e){let t=(e||``)?.split(`.`);return t.length>1?t.slice(-1)[0]:``}var eM={apng:{kind:`image`,mime:`image/apng`},avif:{kind:`image`,mime:`image/avif`},bmp:{kind:`image`,mime:`image/bmp`},gif:{kind:`image`,mime:`image/gif`},ico:{kind:`image`,mime:`image/x-icon`},jfif:{kind:`image`,mime:`image/jpeg`},jpeg:{kind:`image`,mime:`image/jpeg`},jpg:{kind:`image`,mime:`image/jpeg`},png:{kind:`image`,mime:`image/png`},webp:{kind:`image`,mime:`image/webp`},m4v:{kind:`video`,mime:`video/mp4`},mov:{kind:`video`,mime:`video/quicktime`},mp4:{kind:`video`,mime:`video/mp4`},ogv:{kind:`video`,mime:`video/ogg`},webm:{kind:`video`,mime:`video/webm`}};function tM(e){return eM[$j(e).toLowerCase()]}function nM(e){return tM(e)!==void 0}async function rM({instanceClient:e,file:t,project:n,encoding:r}){let{data:i}=await e.post(`/`,{operation:`get_component_file`,project:n,file:t,encoding:r??(nM(t)?`base64`:`utf8`)});return{project:n,file:t,...i}}function iM(e){return z({queryKey:aM(e),queryFn:()=>rM(e),enabled:!!e.file&&!!e.project,retry:!1})}function aM(e){return[e.entityId,`get_component_file`,e.project,e.file,e.encoding]}var oM=`data`,sM=25;function cM(e){return z({queryKey:[e.entityId,`schema-relationships`],staleTime:6e4,retry:!1,enabled:e.enabled!==!1,queryFn:async()=>{try{let t=lM(await gC(e)).slice(0,sM);return uM((await Promise.all(t.map(({project:t,file:n})=>rM({...e,project:t,file:n}).then(e=>e.message).catch(()=>void 0)))).filter(e=>typeof e==`string`))}catch{return{}}}})}function lM(e){let t=[];for(let n of e?.entries??[]){if(!(`entries`in n))continue;let e=(r,i)=>{for(let a of r)`entries`in a?e(a.entries,`${i}${a.name}/`):a.name.endsWith(`.graphql`)&&t.push({project:n.name,file:`${i}${a.name}`})};e(n.entries,``)}return t}function uM(e){let t=[];for(let n of e){let{document:e,ok:r}=Qj(n);if(r)for(let n of e.segments){if(n.kind!==`table`)continue;let{table:e}=n,r=fj(e.directives,`table`),i=mj(pj(r,`table`)?.value)??e.typeName,a=mj(pj(r,`database`)?.value)??oM,o=[];for(let t of e.fields){let e=fj(t.directives,`relationship`);e&&o.push({attribute:t.name,relatedTypeName:lj(t.type),isToMany:uj(t.type),from:mj(pj(e,`from`)?.value),to:mj(pj(e,`to`)?.value)})}t.push({typeName:e.typeName,tableName:i,database:a,relationships:o})}}let n={};for(let e of t){if(!e.relationships.length)continue;let r=[];for(let{relatedTypeName:n,...i}of e.relationships){let a=t.find(t=>t.typeName===n&&t.database===e.database);a&&r.push({...i,relatedTableName:a.tableName})}r.length&&((n[e.database]??={})[e.tableName]=r)}return n}function dM(e,t,n){if(!n||!e?.length)return;let r=new Set;for(let t of e){let e=t[n];e!=null&&r.add(e)}let i=new Set;for(let e of t){let t=e[n];t!=null&&i.add(t)}let a=[...r].filter(e=>!i.has(e));if(a.length)return{kind:`lost`,keys:a};let o=[...i].filter(e=>!r.has(e));if(o.length)return{kind:`unknown`,keys:o};let s=e.filter(e=>e[n]==null).length,c=t.filter(e=>e[n]==null).length;if(c!==s)return{kind:`keyless`,added:Math.max(0,c-s),dropped:Math.max(0,s-c)}}function fM(e,t,n){if(!n||!e?.length)return[];let r=new Map(e.map(e=>[e[n],e])),i=[];for(let[e,a]of t.entries()){let t=a[n];if(t==null)continue;let o=r.get(t);if(!o)continue;let s=Object.keys(o).filter(e=>!Object.hasOwn(a,e));s.length&&i.push({index:e,removed:s})}return i}function pM(e){return[...new Set(e.flatMap(e=>e.removed))]}function mM({canEditRecords:e,canDeleteRecords:t,canReplaceRecords:n,replaceBlockedReason:r,setIsModalOpen:i,isModalOpen:a,primaryKey:o,missingPrimaryKey:s,recordUnavailable:c,syntheticAttributes:l,recordNavigation:u,data:d,onSaveChanges:f,onReplaceRecord:p,onDeleteRecord:m,isUpdateTableRecordsPending:h,isDeleteTableRecordsPending:g}){let _=rv(),v=(0,G.useRef)(null),y=!!s||!!c,b=!e||y,[x,S]=(0,G.useState)(!1),[C,w]=(0,G.useState)(),{onEditorMount:T,showRecordJsonError:E,clearRecordJsonError:D}=AD(),O=(0,G.useMemo)(()=>d?.map(({__createdtime__:e,__updatedtime__:t,...n})=>{for(let e of l??[])delete n[e];return n}),[d,l]),k=(0,G.useMemo)(()=>O&&JSON.stringify(O,null,4),[O]),A=k??``,ee=(0,G.useRef)(A),te=(0,G.useRef)(null);(0,G.useLayoutEffect)(()=>{ee.current!==A&&(ee.current=A,te.current=A)},[A]);let j=(0,G.useMemo)(()=>d&&JSON.stringify(d.map(e=>e[o]??null)),[d,o]),M=a?k:null,N=a?j:null,[P,ne]=(0,G.useState)(M),[re,ie]=(0,G.useState)(N),[ae,oe]=(0,G.useState)(!1),[se,ce]=(0,G.useState)(!1);M!==P&&(oe(a&&N!=null&&N===re&&x),ne(M),ie(N),w(void 0),S(!1));let le=a&&(d!==void 0||se);se!==le&&ce(le);let ue=h||g,de=e=>{(!x||confirm(`Discard your unsaved changes to this record?`))&&(w(void 0),S(!1),oe(!1),e())};return(0,K.jsx)(Id,{onOpenChange:i,open:a,children:(0,K.jsxs)(Ud,{"aria-describedby":void 0,resizable:!0,autoFocus:!b,onKeyDown:e=>{if(!u||ue||v.current?.contains(e.target))return;let t=e.key===`ArrowLeft`||e.key===`ArrowUp`?u.hasPrevious?u.onPrevious:void 0:(e.key===`ArrowRight`||e.key===`ArrowDown`)&&u.hasNext?u.onNext:void 0;t&&(e.preventDefault(),de(t))},onEscapeKeyDown:b?void 0:e=>{x&&e.preventDefault()},children:[(0,K.jsx)(Wd,{children:(0,K.jsxs)(Kd,{children:[b?`View`:`Edit`,` Record`]})}),y&&(0,K.jsxs)(_m,{variant:`warning`,children:[(0,K.jsx)(Oo,{}),(0,K.jsx)(vm,{children:s?`This record has no primary key value`:`This record couldn't be loaded`}),(0,K.jsxs)(ym,{children:[(0,K.jsx)(`p`,{children:s?o?(0,K.jsxs)(K.Fragment,{children:[`It has no value for the primary key`,` `,(0,K.jsx)(`code`,{children:o}),`, so it can't be looked up, edited, or deleted individually.`]}):`It has no primary key value, so it can't be looked up, edited, or deleted individually.`:o?(0,K.jsxs)(K.Fragment,{children:[`Nothing is stored under its primary key`,` `,(0,K.jsx)(`code`,{children:o}),`, so it can't be edited or deleted individually.`]}):`Nothing is stored under its primary key, so it can't be edited or deleted individually.`}),(0,K.jsx)(`p`,{children:`This usually means the table's primary key was changed after the record was created, so the value shown here isn't the key the record is actually stored under. To remove it, recreate the table or restore the original primary key attribute.`})]})]}),ae&&(0,K.jsxs)(_m,{variant:`warning`,children:[(0,K.jsx)(Oo,{}),(0,K.jsx)(vm,{children:`This record changed while you were editing it`}),(0,K.jsx)(ym,{children:`The editor was refreshed with the stored record, so the unsaved changes were discarded. Make them again and save.`})]}),d||se?(0,K.jsx)(`div`,{ref:v,className:`flex-1 min-h-0 w-full`,children:(0,K.jsx)(av,{className:`w-full h-full`,language:gD,theme:_,options:{readOnly:b||!d,automaticLayout:!0},value:A,onMount:T,onChange:e=>{let t=te.current!==null&&e===te.current;te.current=null,!t&&(w(e),S(!0),oe(!1),D())}})}):(0,K.jsx)(gs,{}),(0,K.jsx)(Gd,{children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-3 w-full`,children:[(0,K.jsx)(`div`,{className:`flex`,children:t&&!y&&(0,K.jsxs)(H,{variant:`destructive`,type:`button`,autoFocus:!1,onClick:()=>{let e=d?.[0]?.[o];e!=null&&m([e])},disabled:g||h,children:[(0,K.jsx)(Eo,{}),` Delete Record`]})}),u&&(0,K.jsx)(hM,{...u,disabled:ue,onPrevious:()=>de(u.onPrevious),onNext:()=>de(u.onNext)}),(0,K.jsx)(`div`,{className:`flex`,children:e&&!y&&(0,K.jsxs)(H,{variant:`submit`,autoFocus:!0,accessKey:`s`,onClick:()=>{if(C===void 0){i(!1);return}let e=bD(C);if(!e.ok){U.error(`This record isn't valid JSON`,{description:xD(e.error)}),E(e.error);return}let t=Array.isArray(e.value)?e.value:[e.value],a=dM(O,t,o);if(a){U.error(a.kind===`lost`?`This record's ${o} is missing from the save`:a.kind===`unknown`?`This edit names a ${o} the editor didn't load`:`This edit ${a.added?`adds`:`drops`} ${(a.added||a.dropped)===1?`a record`:`${a.added||a.dropped} records`} with no ${o}`,{description:a.kind===`lost`?`${o} identifies the record, so restore ${a.keys.join(`, `)} to save this edit. Changing it doesn't rename a record — the save would do nothing, or overwrite whatever is stored under the new value. To delete the record, use Delete Record.`:a.kind===`unknown`?`Saving would edit the record stored under ${a.keys.join(`, `)}, which isn't the record open here. Remove it from the JSON and edit that record directly.`:a.added?`A record with no ${o} can't be written from here — the save would skip it and still report success. Remove it, and use Add Record to create a record.`:`Removing a record from the JSON doesn't delete it, so the save would report success having left it alone. Put it back, and use Delete Record to delete a record.`});return}let s=fM(O,t,o);if(s.length){if(s.length<t.length){U.error(`Removing an attribute can't be combined with other record edits`,{description:`Removing an attribute replaces the whole record, which would overwrite any concurrent change to the other records in this payload. Remove the same attribute from every record here, or put it back and save the value changes on their own — the records loaded together have to be saved together.`});return}if(!n){let e=pM(s),t=e.length===1?`an attribute`:`attributes`,n=`Removing ${e.join(`, `)}`;U.error(r===`permission`?`You don't have permission to remove ${t}`:`This Harper version can't remove ${t}`,{description:r===`permission`?`${n} rewrites the record through the 'put' operation, which needs both insert and update on this table, and 'put' in the role's allowed operations. Ask an administrator for those grants, or set the value to null instead of removing it.`:`${n} needs the 'put' operation, added in Harper 5.3.0. On this instance the update operation can only merge, so the attribute would silently stay. Upgrade the instance, or set the value to null instead of removing it.`});return}p(t);return}f(t)},disabled:h||g,children:[(0,K.jsx)(Ka,{}),` `,(0,K.jsxs)(`span`,{children:[(0,K.jsx)(`u`,{children:`S`}),`ave Changes`]})]})})]})})]})})}function hM({position:e,total:t,isTotalEstimated:n,hasPrevious:r,hasNext:i,onPrevious:a,onNext:o,disabled:s}){return(0,K.jsxs)(`div`,{className:`flex items-center rounded-lg border border-border text-sm text-muted-foreground`,children:[(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Previous record`,disabled:s||!r,onClick:a,children:(0,K.jsx)(Er,{})}),(0,K.jsxs)(`span`,{className:`whitespace-nowrap px-1 tabular-nums`,"aria-live":`polite`,children:[`Record `,e===void 0?`…`:Jg(e),t!==void 0&&(0,K.jsxs)(K.Fragment,{children:[` of `,n?`~`:``,Jg(t)]})]}),(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Next record`,disabled:s||!i,onClick:o,children:(0,K.jsx)(Or,{})})]})}function gM(e=!1){let[t,n]=(0,G.useState)(e),r=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(e=>!e)},[]),i=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(!0)},[]),a=(0,G.useCallback)(e=>{e?.preventDefault?.(),n(!1)},[]);return(0,G.useMemo)(()=>({toggled:t,setToggled:n,toggle:r,toggleOn:i,toggleOff:a}),[r,n,a,i,t])}async function _M({databaseName:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`cleanup_orphan_blobs`,database:e});return n}function vM(){return R({mutationFn:_M})}function yM(e){return e!==void 0&&!Array.isArray(e)}var bM=`Harper's response didn't report which records it wrote, so the change may not have been saved.`;function xM(e,t){if(!Array.isArray(e?.deleted_hashes)||yM(e?.skipped_hashes))return{message:bM,wroteNothing:!1};let n=e.skipped_hashes?.length??0,r=e.deleted_hashes.length;if(!(n===0&&r>=t))return{message:`Harper deleted ${r} of ${t} records${n>0?` and skipped ${n}`:``}. A record is skipped when nothing is stored under its primary key.`,wroteNothing:r===0}}async function SM({databaseName:e,tableName:t,hashValues:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`delete`,database:e,table:t,hash_values:n});return i}function CM(){return R({mutationFn:SM})}function wM(e,t,n){return[e,`search_by_id`,t,n]}function TM({enabled:e,entityId:t,instanceClient:n,databaseName:r,tableName:i,ids:a}){let o=a?.filter(e=>e!=null)??null;return z({queryKey:[t,`search_by_id`,r,i,o],queryFn:()=>n.post(`/`,{get_attributes:[`*`],ids:o,noCacheStore:!0,onlyIfCached:!1,operation:`search_by_id`,database:r,table:i}),enabled:e&&!!o?.length,retry:!1})}async function EM({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t,exact_count:!0},{timeout:0});return r.record_count}function DM(e){return z({enabled:e.enabled&&!!e.databaseName&&!!e.tableName,queryKey:[e.entityId,e.databaseName,e.tableName,`record_count`,`exact`],queryFn:()=>EM(e),staleTime:6e4,gcTime:5e3,retry:!1})}function OM(e){return!!e&&of(`5.3.0`,e)}function kM(e,t){if(!t)return`permission`;if(e!==void 0&&!OM(e))return`version`}async function AM({databaseName:e,tableName:t,records:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`put`,database:e,table:t,records:n});return i}function jM(e,t){if(!Array.isArray(e?.put_hashes))return{message:bM,wroteNothing:!1};if(!(e.put_hashes.length>=t))return{message:`Harper reported writing ${e.put_hashes.length} of ${t} records, so the change may not have been saved.`,wroteNothing:e.put_hashes.length===0}}function MM(){return R({mutationFn:AM})}function NM(e,t){if(yM(e?.update_hashes)||yM(e?.skipped_hashes))return{message:bM,wroteNothing:!1};let n=e?.skipped_hashes?.length??0,r=e?.update_hashes?.length??t;if(!(n===0&&r>=t))return{message:`Harper updated ${r} of ${t} records${n>0?` and skipped ${n}`:``}. A record is skipped when nothing is stored under its primary key.`,wroteNothing:Array.isArray(e?.update_hashes)&&r===0}}async function PM(e){let{databaseName:t,tableName:n,records:r,instanceClient:i}=e,{data:a}=await i.post(`/`,{operation:`update`,database:t,table:n,records:r});return a}function FM(){return R({mutationFn:PM})}var IM=j(M(),M());function LM({applyFilters:e,columnFiltersForm:t,headerGroups:n,selectColumnWidth:r}){let i=(0,G.useCallback)(t=>{if(t.key===`Enter`)return t.preventDefault(),e(),!1},[e]);return(0,K.jsx)(k_,{children:(0,K.jsx)(El,{...t,children:n.map(e=>(0,K.jsxs)(j_,{className:`border-none`,children:[r!==void 0&&(0,K.jsx)(P_,{style:{width:`${r}px`},className:`sticky top-10 left-0 z-20 bg-card dark:bg-black-dark border-b border-border shadow-[inset_-1px_0_0_var(--color-border)]`}),e.headers.map(e=>{let n=e.column.columnDef.meta?.relationshipInfo;return(0,K.jsx)(P_,{style:{width:`${e.column.getSize()}px`},className:`sticky top-10 z-10 bg-card dark:bg-black-dark border-b border-border`,children:e.column.columnDef.enableColumnFilter&&(0,K.jsx)(Y,{control:t.control,name:e.id,render:({field:e})=>(0,K.jsxs)(X,{className:`border-r border-r-black`,children:[(0,K.jsxs)(`div`,{className:`flex items-center`,children:[n&&(0,K.jsx)(RM,{relationshipInfo:n,value:e.value??``,onChange:e.onChange}),(0,K.jsx)(J,{children:(0,K.jsx)($,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,className:`rounded-none`,onKeyDown:i,value:e.value??``,placeholder:n?`.${n.relatedPrimaryKey} value`:void 0})})]}),(0,K.jsx)(Q,{})]})})},e.id)})]},e.id))})})}function RM({relationshipInfo:e,value:t,onChange:n}){return(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{type:`button`,variant:`ghost`,size:`icon`,className:`rounded-none shrink-0`,title:`Filter by a ${e.relatedTableName} property`,children:(0,K.jsx)(On,{})})}),(0,K.jsx)(Zo,{side:`bottom`,align:`start`,children:e.relatedAttributes.map(e=>(0,K.jsxs)(Qo,{onClick:()=>{let r=t.replace(/^\s*\.\S*\s*/,``);n(`.${e.attribute} ${r}`)},children:[e.attribute,e.type&&(0,K.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:e.type})]},e.attribute))})]})}function zM({tableName:e,hasPrimaryKey:t,isFiltered:n,isPastFirstPage:r,recordCount:i,canImportFile:a,canImportUrl:o,canSeedSample:s,canSeedRandom:c,canAddRecords:l,onImport:u,onSeed:d,onAddRecords:f,onClearFilters:p}){if(!t)return(0,K.jsxs)(HM,{children:[(0,K.jsxs)(UM,{children:[(0,K.jsx)(`span`,{className:`font-mono`,children:e}),` has no primary key`]}),(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[i?`It reports ${_(Jg(i),`record`,`records`)}, but Studio`:`Studio`,` `,`lists and opens records by their primary key, so it can't browse this table. To browse its records here, copy them into a new table that has a primary key.`]})]});if(r)return(0,K.jsxs)(HM,{children:[(0,K.jsx)(UM,{children:`No records on this page`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`There are fewer records than this page starts at. Try an earlier page.`})]});if(n)return(0,K.jsxs)(HM,{children:[(0,K.jsx)(UM,{children:`No records match these filters`}),(0,K.jsxs)(H,{variant:`ghost`,onClick:p,children:[(0,K.jsx)(vi,{}),`Clear Filters`]})]});if(i)return(0,K.jsxs)(HM,{children:[(0,K.jsx)(UM,{children:`No records came back`}),(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This table reports records, but the page returned none. Try refreshing, or turn off Only If Cached in the table options menu.`})]});let m=a||o,h=s||c;return(0,K.jsxs)(HM,{children:[(0,K.jsx)(UM,{children:i===0?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`span`,{className:`font-mono`,children:e}),` has no records yet`]}):`No records to show`}),m&&h&&(0,K.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Two ways to get some in — bring your own, or start from data we provide.`}),(m||h)&&(0,K.jsxs)(`div`,{className:`flex w-full flex-col gap-3 sm:flex-row`,children:[m&&(0,K.jsx)(WM,{Icon:Jr,title:`Import your data`,description:BM(a,o),action:`Import data`,onClick:u}),h&&(0,K.jsx)(WM,{Icon:Oa,title:`Seed some data`,description:VM(s,c),action:`Seed data`,onClick:d})]}),l&&(0,K.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[m||h?`Or write one yourself: `:`Write one yourself: `,(0,K.jsxs)(H,{variant:`link`,className:`h-auto p-0 text-sm dark:text-violet-300`,onClick:f,children:[(0,K.jsx)(Ia,{}),`Add New Record(s)`]})]})]})}function BM(e,t){return e?t?`Upload a CSV or JSON file, or load a CSV from a URL the instance can reach.`:`Upload a CSV or JSON file.`:`Load a CSV from a URL the instance can reach.`}function VM(e,t){return e?t?`Fill this table with random records, or load a ready-made sample dataset into a table of its own.`:`Load a ready-made sample dataset. It arrives in a table of its own.`:`Fill this table with random records modelled on its columns.`}function HM({children:e}){return(0,K.jsx)(`div`,{className:`h-full overflow-y-auto p-6`,children:(0,K.jsx)(`div`,{className:`flex min-h-full items-center justify-center`,children:(0,K.jsxs)(`div`,{className:`flex w-full max-w-2xl flex-col items-center gap-4 text-center`,children:[(0,K.jsx)(vo,{"aria-hidden":!0,className:`size-8 text-muted-foreground/50`}),e]})})})}function UM({children:e}){return(0,K.jsx)(`h2`,{className:`text-base font-medium`,children:e})}function WM({Icon:e,title:t,description:n,action:r,onClick:i}){return(0,K.jsxs)(`button`,{type:`button`,onClick:i,className:`group flex flex-1 cursor-pointer flex-col items-start gap-1.5 rounded-lg border border-border p-4 text-left transition-colors hover:border-primary hover:bg-accent/50 focus-visible:ring-1 focus-visible:ring-purple-200 focus-visible:outline-1 dark:border-grey-700 dark:hover:border-violet-300`,children:[(0,K.jsxs)(`span`,{className:`flex items-center gap-2 font-medium`,children:[(0,K.jsx)(e,{className:`size-4 text-primary dark:text-violet-300`}),t]}),(0,K.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:n}),(0,K.jsxs)(`span`,{className:`mt-1 text-sm text-primary group-hover:underline dark:text-violet-300`,children:[r,` →`]})]})}function GM({columns:e,columnVisibility:t,setColumnVisibility:n}){let r=(0,G.useMemo)(()=>e.map(e=>typeof e.header==`string`?e.header:void 0).filter($c),[e]),i=(0,G.useCallback)((e,r)=>{n({...t,[e]:r})},[t,n]),a=(0,G.useCallback)(e=>{n({...t,...Object.fromEntries(r.map(t=>[t,e]))})},[r,t,n]),o=(0,G.useMemo)(()=>r.every(e=>t[e]??!0),[r,t]),s=(0,G.useMemo)(()=>r.every(e=>!(t[e]??!0)),[r,t]);return(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsxs)(H,{variant:`ghost`,children:[(0,K.jsx)(Xr,{className:`inline-block `}),`Columns`]})}),(0,K.jsxs)(Zo,{children:[r.length>0&&(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(Qo,{inset:!0,disabled:o,onSelect:e=>{e.preventDefault(),a(!0)},children:`Select all`}),(0,K.jsx)(Qo,{inset:!0,disabled:s,onSelect:e=>{e.preventDefault(),a(!1)},children:`Deselect all`}),(0,K.jsx)(rs,{})]}),r.map(e=>(0,K.jsx)(KM,{columnHeader:e,isChecked:t[e]??!0,toggleColumn:i},e))]})]})}function KM({columnHeader:e,isChecked:t,toggleColumn:n}){let r=(0,G.useCallback)(t=>{n(e,t)},[e,n]);return(0,K.jsx)($o,{checked:t,onCheckedChange:r,onSelect:e=>e.preventDefault(),children:e})}function qM({className:e}){return(0,K.jsx)(Xi,{className:y(`animate-spin`,e)})}var JM=[20,50,100,250];function YM({pageIndex:e,pageSize:t,totalPages:n,totalRecords:r,isEstimatedCount:i,estimatedRange:a,isExactCountFetching:o,isExactCountError:s,onRequestExactCount:c,setPageIndex:l,setPageSize:u}){let d=n===void 0||r===void 0,f=n&&n>0?n:1,p=e+1,m=e>0,h=!d&&p<f,g=e=>{l(Math.max(0,Math.min(e,f)-1))},_=e=>{u(e),l(0)},v=eN(p,f);return(0,K.jsx)(`div`,{className:`@container shrink-0 border-t border-border`,children:(0,K.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-4`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 whitespace-nowrap text-sm text-muted-foreground`,children:[(0,K.jsxs)(`span`,{className:`hidden @min-[400px]:inline`,children:[`Page `,Jg(p),` of `,d?`…`:Jg(f)]}),(0,K.jsx)(`span`,{"aria-hidden":!0,className:`hidden text-border @min-[400px]:inline`,children:`•`}),(0,K.jsx)(`span`,{children:d?(0,K.jsx)(Sg,{}):i?(0,K.jsx)(XM,{totalRecords:r,estimatedRange:a,isExactCountFetching:o,isExactCountError:s,onRequestExactCount:c}):(0,K.jsxs)(K.Fragment,{children:[Jg(r),` `,r===1?`record`:`records`]})})]}),(0,K.jsx)(`div`,{className:`grow`}),(0,K.jsxs)(`nav`,{className:`flex items-center divide-x divide-border overflow-hidden rounded-lg border border-border`,children:[(0,K.jsxs)(ZM,{onClick:()=>g(p-1),disabled:!m,"aria-label":`Previous page`,children:[(0,K.jsx)(Er,{}),(0,K.jsx)(`span`,{className:`hidden @min-[480px]:inline`,children:`Previous`})]}),(0,K.jsx)(`div`,{className:`hidden divide-x divide-border @min-[620px]:flex`,children:v.map((e,t)=>e===`ellipsis`?(0,K.jsx)(`span`,{className:`flex h-9 min-w-9 items-center justify-center px-1 text-sm text-muted-foreground`,children:`…`},`ellipsis-${t}`):(0,K.jsx)(ZM,{onClick:()=>g(e),isActive:e===p,"aria-label":`Page ${e}`,"aria-current":e===p?`page`:void 0,children:Jg(e)},e))}),(0,K.jsxs)(ZM,{onClick:()=>g(p+1),disabled:!h,"aria-label":`Next page`,children:[(0,K.jsx)(`span`,{className:`hidden @min-[480px]:inline`,children:`Next`}),(0,K.jsx)(Or,{})]})]}),(0,K.jsx)(`div`,{className:`hidden grow @min-[840px]:block`}),(0,K.jsx)($M,{pageSize:t,onChange:_}),(0,K.jsx)(QM,{pageCount:f,disabled:d||f<=1,onGo:g})]})})}function XM({totalRecords:e,estimatedRange:t,isExactCountFetching:n,isExactCountError:r,onRequestExactCount:i}){let a=e===1?`record`:`records`,o=r&&!n;return(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsxs)(`button`,{type:`button`,className:`cursor-help underline decoration-dotted underline-offset-4`,"aria-label":`Approximately ${Jg(e)} ${a} (estimated)`,children:[`~`,Jg(e),` `,a]})}),(0,K.jsxs)(Tc,{side:`top`,align:`start`,className:`flex max-w-60 flex-col gap-2 p-3 text-left`,children:[(0,K.jsxs)(`span`,{children:[`Estimated count.`,t?(0,K.jsxs)(K.Fragment,{children:[` `,`Likely between `,Jg(t[0]),` and `,Jg(t[1]),`.`]}):null]}),o&&(0,K.jsx)(`span`,{className:`font-medium`,children:`Couldn’t get the exact count.`}),(0,K.jsxs)(`button`,{type:`button`,onClick:i,disabled:n,className:`inline-flex items-center justify-center gap-1.5 self-start rounded border
822
822
  border-primary-foreground/30 bg-primary-foreground/10 px-2 py-1 font-medium transition-colors
823
- hover:bg-primary-foreground/20 disabled:pointer-events-none disabled:opacity-60`,children:[n&&(0,K.jsx)(Xi,{className:`size-3 animate-spin`}),n?`Counting…`:o?`Try again`:`Get exact count`]})]})]})}function GM({isActive:e,className:t,...n}){return(0,K.jsx)(`button`,{type:`button`,className:P(`flex h-9 min-w-9 items-center justify-center gap-1 px-3 text-sm whitespace-nowrap
823
+ hover:bg-primary-foreground/20 disabled:pointer-events-none disabled:opacity-60`,children:[n&&(0,K.jsx)(Xi,{className:`size-3 animate-spin`}),n?`Counting…`:o?`Try again`:`Get exact count`]})]})]})}function ZM({isActive:e,className:t,...n}){return(0,K.jsx)(`button`,{type:`button`,className:P(`flex h-9 min-w-9 items-center justify-center gap-1 px-3 text-sm whitespace-nowrap
824
824
  transition-colors hover:bg-accent hover:text-foreground
825
825
  disabled:pointer-events-none disabled:opacity-40
826
- [&_svg]:size-4 [&_svg]:shrink-0`,e&&`bg-muted font-semibold text-foreground`,t),...n})}function KM({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
826
+ [&_svg]:size-4 [&_svg]:shrink-0`,e&&`bg-muted font-semibold text-foreground`,t),...n})}function QM({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
827
827
  placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-purple focus-visible:outline-none
828
- disabled:pointer-events-none disabled:opacity-50 dark:bg-grey-700 dark:text-white`})]})}function qM({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)(Cg,{value:String(e),onValueChange:e=>t(Number(e)),children:[(0,K.jsx)(Eg,{"aria-label":`Rows per page`,className:`h-9 w-20`,children:(0,K.jsx)(Tg,{})}),(0,K.jsx)(Dg,{side:`top`,children:HM.map(e=>(0,K.jsx)(kg,{value:String(e),children:Jg(e)},e))})]})]})}function JM(e,t,n=1){if(t<=n*2+5)return YM(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?[...YM(1,s),`ellipsis`,t]:a&&!o?[1,`ellipsis`,...YM(t-s+1,t)]:[1,`ellipsis`,...YM(r,i),`ellipsis`,t]}function YM(e,t){return Array.from({length:t-e+1},(t,n)=>e+n)}var XM=32,ZM=`shadow-[inset_-1px_0_0_var(--color-border)]`;function QM(e,t){return!t||typeof e!=`object`||!e||!Object.hasOwn(e,t)?void 0:e[t]??void 0}function $M({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=Je({features:F_,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=>QM(e,p)).filter(e=>e!==void 0):[],[O,o,p]),A=m?k.filter(e=>m.selectedKeys.has(e)).length:0,ee=k.length>0&&A===k.length,te=A>0&&!ee,[j,M]=(0,G.useState)(void 0),N=(0,G.useCallback)((e,t)=>{if(!m)return;let n=t?k.indexOf(j):-1,r=k.indexOf(e);if(n===-1||r===-1){m.toggleRow(e),M(e);return}let[i,a]=n<=r?[n,r]:[r,n];m.setRangeSelected(k.slice(i,a+1),!m.selectedKeys.has(e))},[m,k,j]),ne=(0,G.useRef)(null),re=(0,G.useRef)(!1),ie=(0,G.useRef)(!1),ae=(0,G.useCallback)((e,t)=>{!m||e===void 0||t.button!==0||t.shiftKey||t.ctrlKey||t.metaKey||(re.current=!0,ne.current={originKey:e,selected:!m.selectedKeys.has(e),snapshot:new Set(m.selectedKeys),applied:[],lastKey:e})},[m]),oe=(0,G.useCallback)((e,t)=>{let n=ne.current;if(!n)return;if(!(t&1)){ne.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,M(n.originKey),ie.current=!0},[m,k]);(0,G.useEffect)(()=>{let e=()=>{ne.current=null},t=()=>{re.current=!1,ie.current=!1};return window.addEventListener(`mouseup`,e),window.addEventListener(`mousedown`,t,!0),()=>{window.removeEventListener(`mouseup`,e),window.removeEventListener(`mousedown`,t,!0)}},[]),(0,G.useLayoutEffect)(()=>{M(void 0),ne.current=null},[h]);let se=(0,G.useRef)(null),[ce,le]=(0,G.useState)(0);(0,G.useLayoutEffect)(()=>{let e=se.current;e&&(e.scrollTop=0)},[h]),(0,G.useLayoutEffect)(()=>{let e=se.current;e&&(e.scrollTop=0,e.scrollLeft=0)},[g]);let ue=D.state.columnResizing,de=ue.isResizingColumn;(0,G.useLayoutEffect)(()=>{de&&le(se.current?.scrollLeft??0)},[de]);let fe=null;if(de){let e=D.options.defaultColumn?.minSize??20,t=D.getColumn(de)?.getSize()??0,n=O?XM:0;for(let e of D.getVisibleLeafColumns())if(n+=e.getSize(),e.id===de)break;fe=n+Math.max(ue.deltaOffset??0,e-t)-ce}let pe=D.getRowModel().rows.length>0,me=o===void 0,he=!pe&&!me&&!!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)(O_,{containerRef:se,containerClassName:P(`rounded-t-md bg-card dark:bg-black-dark min-h-0 overflow-y-auto`,he?`shrink-0`:`rounded-b-md grow`),className:`table-fixed`,children:[(0,K.jsx)(k_,{children:D.getHeaderGroups().map(e=>(0,K.jsxs)(j_,{className:`border-none`,children:[O&&(0,K.jsx)(M_,{style:{width:`${XM}px`},className:P(`sticky top-0 left-0 z-20 p-0 bg-card dark:bg-black-dark border-b border-border`,ZM),children:(0,K.jsx)(eN,{checked:ee,indeterminate:te,disabled:k.length===0,onToggle:()=>{m.toggleAll(k,!ee),M(ee?void 0:k[0])}})}),e.headers.map(e=>(0,K.jsx)(N_,{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)(M_,{"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)(jM,{applyFilters:e,columnFiltersForm:t,headerGroups:D.getHeaderGroups(),selectColumnWidth:O?XM:void 0}),!he&&(0,K.jsx)(A_,{className:`bg-background dark:bg-black border-y border-border dark:border-grey-700`,children:pe?D.getRowModel().rows.map(e=>(0,K.jsx)(nN,{row:e,onRowClick:u,primaryKey:p,rowSelection:O?m:void 0,onSelectRow:N,onBeginDrag:ae,onDragOver:oe,pressedInGutterRef:re,dragMovedRef:ie},e.id)):(0,K.jsx)(j_,{children:(0,K.jsx)(P_,{colSpan:n.length+1+ +!!O,className:`h-24 text-center`,children:c||me?(0,K.jsx)(VM,{className:`opacity-50 inline-block`}):(0,K.jsx)(`span`,{children:`No results.`})})})})]}),he&&(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}),fe!==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:`${fe}px`}})]}),(0,K.jsx)(UM,{pageIndex:d,pageSize:f,totalPages:b,totalRecords:x,isEstimatedCount:S,estimatedRange:C,isExactCountFetching:w,isExactCountError:T,onRequestExactCount:E,setPageIndex:_,setPageSize:v})]})}function eN({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)(tN,{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 tN({children:e}){return(0,K.jsx)(`label`,{className:`flex h-full w-full items-center justify-center py-2`,children:e})}function nN({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)(iN,{cell:l[0]},l[0].id),(0,K.jsx)(aN,{colSpan:l.length-1},`expired`)]:[(0,K.jsx)(aN,{colSpan:l.length},`expired`)]:l.map(e=>(0,K.jsx)(iN,{cell:e},e.id))},[e,t,l]),d=r?QM(e.original,t):void 0,f=d!==void 0&&!!r?.selectedKeys.has(d);return(0,K.jsxs)(j_,{"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:P(`hover:bg-muted/10 data-[state=selected]:bg-muted`,n&&`cursor-pointer`),children:[r&&(0,K.jsx)(P_,{className:P(`sticky left-0 z-10 p-0`,ZM,f?`bg-muted`:`bg-background dark:bg-black`),onClick:SO,onMouseDown:e=>{e.preventDefault(),e.currentTarget.querySelector(`input`)?.focus(),a?.(d,e)},children:(0,K.jsx)(tN,{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:rN})})}),u,(0,K.jsx)(P_,{"aria-hidden":!0,className:`p-0`})]})}function rN(){}function iN({cell:e}){let t=e.column.getSize();return(0,K.jsx)(P_,{"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:Ue(e.column.columnDef.cell,e.getContext())})}function aN({colSpan:e}){return(0,K.jsx)(P_,{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 oN=new Set,sN=[];function cN({instanceDatabaseMap:e,databaseName:t,tableName:n}){let r=B({strict:!1}),i=q(),{clusterId:a,instanceId:o}=r,{toggled:s,toggle:c}=uM(!0),l=zn(`instance:update`),u=Fp(o??a,t,n,`insert`),d=Lp(o??a,t,n),f=zp(),p=Fp(o??a,t,n,`update`),m=Fp(o??a,t,n,`delete`),h=Pp(),{data:g}=F(YO({...i,databaseName:t,tableName:n})),v=e?.[t],y=v?.[n],b=g??y,x=d&&f.methods.file,S=d&&f.methods.url,C=d&&f.allowsSource(`csv-data`),w=(0,G.useMemo)(()=>aO(y?.attributes,v),[y,v]),T=d&&f.allowsSource(`json-records`)&&w.length>0,E=(0,G.useMemo)(()=>Lm(b?.attributes??[],`attribute`),[b]),{data:D}=F(nM(i)),{data:O}=F(NS(i)),k=Ip(o??a,t,n),A=CM(O?.version,k),ee=A===void 0,te=D?.[t]?.[n],j=(0,G.useMemo)(()=>jE(b,v,te),[b,v,te]),M=(0,G.useMemo)(()=>IE(b,v),[b,v]),N=(0,G.useMemo)(()=>NE(b?.attributes,v),[b,v]),[P,ne]=Ty(null,r),[re,ie]=(0,G.useState)(!1),[ae,oe]=Ty(null,r),[se,ce]=Ty(null,r),[le,ue]=(0,G.useState)(null),de=le!==null,fe=(0,G.useMemo)(()=>h&&!!v&&Object.keys(v).length>1,[h,v]),{toggled:pe,toggleOn:me,toggleOff:he}=uM(!1),ge=Gt({resolver:it(AM)}),{reset:_e}=ge,I=ge.watch(),[L,ve]=Ty(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(...zO(n,r,E[n],j[n]))}catch(e){U.error(String(e))}}return t},[E,j]),be=(0,G.useCallback)(()=>{let e=ye(I);ve(e.length?e:null),_e({...I})},[ye,_e,I]),xe=(0,G.useCallback)(()=>{_e({},{keepValues:!1,keepDirtyValues:!1,keepDefaultValues:!1}),_e(),ve(null),he()},[he,_e]);(0,G.useEffect)(function(){return xe()},[r,xe]);let{filters:Se}=Te({strict:!1}),Ce=JSON.stringify([t,n,Se??null]),R=(0,G.useRef)(null);(0,G.useEffect)(function(){if(!b||R.current===Ce)return;let e=R.current===null;if(R.current=Ce,Se){_e({...Se});let e=ye(Se);ve(e.length?e:null),me()}else e||xe()},[Se,Ce,b,_e,ye,ve,me,xe]);let{dataTableColumns:we,primaryKey:Ee}=DO(b,j),z=!b||!!Ee,[De,Oe]=Ty({attribute:Ee,descending:!1},r),[ke,Ae]=Ty(0,[t,n,L]),[je,Ne]=(0,G.useState)(20),[Pe,Fe]=Ty(null,[t,n,L,je,s]),Ie=g?.record_count??y?.record_count,Le=g?.estimated_record_range??y?.estimated_record_range,[Re,ze]=Ty(!1,[t,n]),{data:Be,isFetching:Ve,isError:He,refetch:Ue}=F(xM({...i,enabled:Re,databaseName:t,tableName:n})),We=(0,G.useCallback)(()=>{Re?Ue():ze(!0)},[Re,Ue,ze]),Ge=Be??Ie,Ke=Ge&&z?Math.ceil(Ge/je):0,qe=Be===void 0&&Le!==void 0,Je=pe&&!!L,Ye=JSON.stringify([t,n]),Xe=JSON.stringify([i.entityId,t,n,ke,je,De,Je?L:null,s]),[Ze,Qe]=Ty(oN,[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):oN)},[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=Eb({...i,enabled:!Je&&!!Ee,databaseName:t,tableName:n,searchAttribute:Ee,sort:De,pageSize:je,pageIndex:ke,onlyIfCached:s,getAttributes:M}),{data:at,isFetching:ot,isError:st}=F(rt),ct=LO({...i,enabled:Je&&!!Ee,databaseName:t,tableName:n,conditions:L,sort:De,pageSize:je,pageIndex:ke,onlyIfCached:s,getAttributes:M}),{data:lt,isFetching:ut,isError:dt}=F(ct),ft=Je?lt:at,pt=ot||ut,mt=Je?dt:st,ht=ft?.data,gt=(0,G.useMemo)(()=>(ht??[]).map(e=>QM(e,Ee)).filter(e=>e!==void 0&&Ze.has(e)),[ht,Ee,Ze]),{data:_t,isFetching:vt,isError:yt}=F(yM({...i,enabled:re,databaseName:t,tableName:n,ids:P})),bt=re&&!de&&!!ae&&(!Ee||ae[Ee]==null),xt=_t?.data,St=!bt&&!de&&!!P?.length&&!vt&&(yt||Array.isArray(xt)&&xt.length===0),{mutate:Ct,isPending:wt}=kM(),{mutate:Tt,isPending:Et}=_M(),{mutate:Dt,isPending:Ot}=EM(),{mutate:kt,isPending:At}=fM(),jt=Me(),Mt=(0,G.useCallback)(()=>(Fe(null),Qe(oN),jt.invalidateQueries({queryKey:[i.entityId,t,n]})),[jt,i.entityId,t,n,Fe,Qe]),Nt=(0,G.useCallback)(()=>jt.invalidateQueries({queryKey:vM(i.entityId,t,n)}),[jt,i.entityId,t,n]),Pt=(0,G.useCallback)(async()=>{confirm(`Are you sure you want to cleanup orphan blobs for database "${t}"?`)&&kt({...i,databaseName:t},{onSuccess:e=>{U.success(e.message||`Orphan blobs cleanup started successfully`),Mt()},onError:e=>{U.error(e instanceof Error?e.message:`Failed to cleanup orphan blobs`)}})},[kt,t,i,Mt]),{exportCsv:Ft,isExporting:It}=GO(),Lt=(0,G.useCallback)(()=>{Ft({databaseName:t,tableName:n,primaryKey:Ee,sort:De,conditions:Je?L:null})},[Ft,t,n,Ee,De,Je,L]),Rt=(0,G.useCallback)(e=>{if(e?.wroteNothing){U.error(`The record wasn't updated`,{description:e.message});return}if(Mt(),Nt(),ie(!1),e){U.error(`The record wasn't fully updated`,{description:e.message});return}U.success(`Record updated successfully`)},[Mt,Nt]),zt=(0,G.useCallback)(e=>{Ct({...i,databaseName:t,tableName:n,records:e},{onSuccess:t=>Rt(DM(t,e.length))})},[Ct,i,t,n,Rt]),Bt=(0,G.useCallback)(e=>{Dt({...i,databaseName:t,tableName:n,records:e},{onSuccess:t=>Rt(TM(t,e.length))})},[Dt,i,t,n,Rt]),Vt=(0,G.useCallback)(e=>{Tt({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:t=>{let n=hM(t,e.length);if(n?.wroteNothing){U.error(`The record wasn't deleted`,{description:n.message});return}if(Mt(),Nt(),ie(!1),n){U.error(`The record wasn't fully deleted`,{description:n.message});return}U.success(`Record deleted successfully`)}})},[Tt,i,t,n,Mt,Nt]),Ht=(0,G.useCallback)(()=>{let e=gt;e.length&&confirm(`Permanently delete ${_(e.length,`record`,`records`)} from "${n}"?`)&&Tt({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:t=>{Mt(),Nt();let n=hM(t,e.length);if(n){U.error(`The records weren't all deleted`,{description:n.message});return}U.success(`${_(e.length,`record`,`records`)} deleted successfully`)}})},[Tt,i,t,n,Mt,Nt,gt]),Ut=(0,G.useCallback)((e,t)=>{let n=Ee?t[Ee]:void 0;oe(t),ne(n==null?null:[n]),ce(e)},[Ee,oe,ne,ce]),Wt=(0,G.useCallback)(e=>{if(se===null||!ht)return;let t=se+e,n=ht[t];if(n){Ut(t,n);return}let r=ke+e;r<0||(Ae(r),ue({end:e===1?`first`:`last`,fromPage:ke}))},[se,ht,Ut,ke,Ae]);(0,G.useEffect)(function(){if(!le)return;if(!re){ue(null);return}let e=le.end===`first`?0:(ht?.length??0)-1,t=e>=0?ht?.[e]:void 0;if(t){ue(null),Ut(e,t);return}if(ht||mt){if(ue(null),Ae(le.fromPage),mt){U.error(`Couldn't load the next page of records`);return}if(le.end===`first`){Fe(le.fromPage),U.info(`This is the last record`);return}U.info(`This is the first record`)}},[le,ht,mt,re,Ut,Ae,Fe]);let Kt=e=>{Ut(e.index,e.original),ie(!0)},qt=(e,t)=>{Oe({attribute:e,descending:!t})},Jt=H_(Mt),Yt=(0,G.useCallback)(()=>{VD(`ShowAddTableRecords`,{databaseName:t,tableName:n})},[t,n]),Xt=(0,G.useCallback)(()=>{VD(`ShowImportData`,{databaseName:t,tableName:n})},[t,n]),Zt=(0,G.useCallback)(()=>{VD(`ShowImportData`,{databaseName:t,tableName:n,method:x?`file`:`url`})},[t,n,x]),Qt=(0,G.useCallback)(()=>{VD(`ShowImportData`,{databaseName:t,tableName:n,method:`sample`})},[t,n]),[$t,en]=jy(`ColumnDisplayed/${t}/${n}`,{}),tn=(0,G.useMemo)(()=>({...Object.fromEntries(FE(j).map(e=>[e,!1])),...$t}),[j,$t]),nn=se===null?void 0:{position:de?void 0:ke*je+se+1,total:Je?void 0:Ge,isTotalEstimated:qe,hasPrevious:!de&&(se>0||ke>0),hasNext:!de&&!!ht&&(se+1<ht.length||ht.length===je&&Pe!==ke),onPrevious:()=>Wt(-1),onNext:()=>Wt(1)},[rn,an]=jy(`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&&z&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:Yt,accessKey:`n`,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[`Add `,(0,K.jsx)(`u`,{children:`N`}),`ew Record(s)`]})]}),m&&gt.length>0&&(0,K.jsxs)(H,{variant:`destructiveOutline`,onClick:Ht,disabled:Et,children:[(0,K.jsx)(Eo,{className:`text-destructive`}),(0,K.jsxs)(`span`,{children:[`Delete Selected (`,gt.length,`)`]})]})]}),(0,K.jsxs)(`div`,{className:`flex space-x-2`,children:[pe&&L&&(0,K.jsxs)(H,{type:`button`,variant:`ghost`,onClick:xe,accessKey:`f`,children:[(0,K.jsx)(vi,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Clear `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),pe&&ge.formState.isDirty&&(0,K.jsxs)(H,{variant:`default`,onClick:be,children:[(0,K.jsx)(gi,{className:`inline-block `}),`Apply Filters`]}),pe&&!L&&(0,K.jsxs)(H,{variant:`ghost`,onClick:he,accessKey:`f`,children:[(0,K.jsx)(vi,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Hide `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),!pe&&z&&(0,K.jsxs)(H,{variant:`ghost`,onClick:me,accessKey:`f`,children:[(0,K.jsx)(bi,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Show `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),(0,K.jsx)(H,{variant:`defaultOutline`,onClick:Jt,disabled:pt,children:(0,K.jsx)(Ra,{"aria-label":`Refresh table`,role:`img`})}),(0,K.jsx)(zM,{columns:we,columnVisibility:tn,setColumnVisibility:en}),(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{variant:`ghost`,size:`icon`,children:(0,K.jsx)(oi,{"aria-label":`Table options`})})}),(0,K.jsxs)(Zo,{side:`bottom`,align:`end`,children:[d&&z&&(0,K.jsxs)(Qo,{onClick:Xt,children:[(0,K.jsx)(Jr,{}),`Import Data`]}),(0,K.jsxs)(Qo,{onClick:Lt,disabled:It||!z,children:[(0,K.jsx)(Kr,{}),`Export CSV`]}),(0,K.jsx)(rs,{}),(0,K.jsxs)(Qo,{className:`focus:bg-primary/70 focus:text-white`,onClick:c,children:[s?(0,K.jsx)(Mr,{className:`text-green`}):(0,K.jsx)(Rr,{}),`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:SO,children:(0,K.jsx)(ci,{})})]}),h&&l&&!!o&&(0,K.jsxs)(Qo,{className:`focus:bg-yellow/70 focus:text-white`,onClick:Pt,disabled:At,children:[(0,K.jsx)(mr,{className:`text-yellow `}),`Cleanup Orphan Blobs`]}),h&&(0,K.jsx)(rs,{}),fe&&(0,K.jsxs)(Qo,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>VD(`ShowDeleteTable`,{databaseName:t,tableName:n}),children:[(0,K.jsx)(Eo,{className:`inline-block `}),`Drop Table`]}),h&&(0,K.jsxs)(Qo,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>VD(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,K.jsx)(Eo,{}),`Drop Database`]})]})]})]})]}),(0,K.jsx)($M,{primaryKey:Ee,data:z?ht:sN,emptyState:(0,K.jsx)(NM,{tableName:n,hasPrimaryKey:z,isFiltered:Je,isPastFirstPage:ke>0,recordCount:Ge,canImportFile:x,canImportUrl:S,canSeedSample:C,canSeedRandom:T,canAddRecords:u,onImport:Zt,onSeed:Qt,onAddRecords:Yt,onClearFilters:xe}),isFetching:pt,filtersToggled:pe,columns:we,columnVisibility:tn,columnSizing:rn,setColumnSizing:an,onRowClick:Kt,onColumnClick:qt,rowSelection:nt,totalPages:Ke,totalRecords:Ge,isEstimatedCount:qe,estimatedRange:Le,isExactCountFetching:Ve,isExactCountError:He,onRequestExactCount:We,pageIndex:ke,pageSize:je,resultSetKey:Xe,tableIdentity:Ye,columnFiltersForm:ge,applyFilters:be,setPageIndex:Ae,setPageSize:Ne}),(0,K.jsx)(cM,{canEditRecords:p,canDeleteRecords:m,canReplaceRecords:ee,replaceBlockedReason:A,setIsModalOpen:ie,isModalOpen:re,primaryKey:Ee,missingPrimaryKey:bt,recordUnavailable:St,syntheticAttributes:N,recordNavigation:nn,data:de?void 0:bt||St?ae?[ae]:void 0:_t?.data,onSaveChanges:zt,onReplaceRecord:Bt,onDeleteRecord:Vt,isUpdateTableRecordsPending:wt||Ot,isDeleteTableRecordsPending:Et})]})}function lN(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 uN=10;function dN(e){return Math.max(200,Math.floor(e/2))}function fN(e,t){return Math.round(Math.min(Math.max(e,200),dN(t)))}function pN(){let[e,t]=Es(Pn.DatabasesSidebarWidth,320),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(()=>fN(e,window.innerWidth)),o=(0,G.useRef)(i);o.current=i;let s=(0,G.useRef)(null);(0,G.useEffect)(()=>{n||a(fN(e,window.innerWidth))},[e,n]),(0,G.useEffect)(()=>{let t=()=>{n||a(fN(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(fN(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=>fN(e-uN,window.innerWidth))):e.key===`ArrowRight`&&(e.preventDefault(),t(e=>fN(e+uN,window.innerWidth)))},[t])}}function mN(){let e=B({strict:!1}),t=q(),{data:n}=F($C({...t,skipRecordCount:!0})),{width:r,isResizing:i,startResizing:a,handleKeyDown:o}=pN(),s={"--db-sidebar-width":`${r}px`},c=lN(n,e);return c?(0,K.jsx)(ve,{to:TE({...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)(ej,{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":dN(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:P(`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)(cN,{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)(ek,{instanceDatabaseMap:n,databaseName:e.databaseName})}):null})]}),n&&(0,K.jsx)(xO,{instanceDatabaseMap:n})]})}function hN(e){return I({getParentRoute:()=>e,path:`/databases/{-$databaseName}/{-$tableName}`,head:()=>({meta:[{title:`Databases — Harper Fabric`}]}),component:mN})}var gN={className:`text-primary font-semibold bg-primary/10 rounded-md dark:text-white dark:bg-white/10`};function _N(){let e=Np(),t=B({strict:!1}),{version:n}=_e({strict:!1}),r=of(`4.6.0`,n)&&e,i=of(`4.7.0-beta.7`,n),a=q(),{data:o}=F(dx(a,r)),s=o?.restartRequired??!1,c=(0,G.useMemo)(()=>[e&&{to:t.clusterId&&!t.instanceId?hx(t,`apps`):hx(t),activeOptions:{exact:!0},name:`Applications`,shortName:`Apps`,icon:(0,K.jsx)(Oa,{className:`inline-block`})},{to:hx(t,`databases`),icon:(0,K.jsx)(ni,{className:`inline-block`}),name:`Databases`},e&&i&&{to:hx(t,`apis`),name:`APIs`,icon:(0,K.jsx)(Qa,{className:`inline-block`})},e&&r&&{to:hx(t,`status`),icon:(0,K.jsx)(Si,{className:`inline-block`}),name:`Status`},e&&{to:hx(t,`logs`),icon:(0,K.jsx)(wa,{className:`inline-block`}),name:`Logs`},e&&{to:hx(t,`config`),icon:(0,K.jsx)(eo,{className:`inline-block`}),name:`Config`}].filter($c),[e,t,i,r]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(vN,{links:c,restartRequired:s}),(0,K.jsx)(yN,{links:c,restartRequired:s})]})}function vN({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)(Tl,{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:gN,...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)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:n}),(0,K.jsx)(Tc,{side:`bottom`,className:`xl:hidden`,children:t.name})]},t.to)})})]})}function yN({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)(Tl,{restartRequired:t}),(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{variant:`ghost`,className:`p-0`,children:(0,K.jsx)(ga,{className:`h-8 w-8`})})}),(0,K.jsxs)(Zo,{children:[(0,K.jsx)(ns,{children:`Instance Menu`}),(0,K.jsx)(rs,{}),e.map(e=>(0,K.jsx)(Qo,{asChild:!0,children:(0,K.jsxs)(V,{to:e.to,activeProps:gN,className:`flex items-center gap-2`,children:[e.icon,e.name]})},e.to))]})]})]})})}(0,G.lazy)(()=>pe(()=>import(`./FloatingChat-CEnWhHeR.js`).then(e=>({default:e.FloatingChat})),__vite__mapDeps([35,1,2,3,13,27,26])));function bN(){let{instanceId:e,clusterId:t}=B({strict:!1});return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{className:`studio-subnav 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)(_N,{})}),(0,K.jsxs)(`div`,{className:`mt-32 min-h-[calc(100vh-(--spacing(32)))]`,children:[(0,K.jsx)(Cm,{entityId:m,clusterId:t,noun:`instance`,className:`px-4 pt-4 md:px-12`}),(0,K.jsx)($e,{})]}),!1]})}function xN(e){switch(e){case`local`:return I({getParentRoute:()=>il,id:`_instanceLayout`,component:bN,loader:CE});case`cluster`:return I({getParentRoute:()=>Ly,id:`_instanceLayout`,component:bN,beforeLoad:SN,loader:CE});case`instance`:return I({getParentRoute:()=>Ly,path:`instance/$instanceId`,component:bN,beforeLoad:SN,loader:CE})}}async function SN({context:e,params:t}){let n=t.instanceId||t.clusterId,r=!1;if(u.checkForFabricConnect(n)&&!u.hasResolvedFabricConnect(n)&&(r=!0,await CN(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?jp(a.user,t.organizationId,t.clusterId):Tp(a.user,t.organizationId,t.clusterId);if(!r&&o&&await CN(n,e.cluster,t.instanceId))return;let s=`/${t.organizationId}/${t.clusterId}/`+(t.instanceId?`instance/${t.instanceId}`:``)+`/sign-in`;throw Se({to:s,search:Jc()})}async function CN(e,t,n){try{return await u.establishFabricConnectAuth({id:e,operationsUrl:wN(t,n)}),!0}catch(e){return console.debug(`Fabric Connect not established`,e),!1}}function wN(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 TN(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 EN=[`secondary`,`default`,`warning`,`outline`,`success`,`destructive`],DN=0,ON=new Map,kN=e=>{if(ON.has(e))return ON.get(e);DN++;let t=EN[DN%EN.length];return ON.set(e,t),t};function AN(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 jN({columns:e,data:t,onRowClick:n,containerRef:r}){let i=Je({features:F_,data:t,columns:e});return(0,K.jsxs)(O_,{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)(k_,{children:i.getHeaderGroups().map(e=>(0,K.jsx)(j_,{className:`border-b border-border`,children:e.headers.map(e=>(0,K.jsx)(M_,{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:Ue(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,K.jsx)(A_,{className:`bg-background dark:bg-black`,children:i.getRowModel().rows?.length?i.getRowModel().rows.map(e=>(0,K.jsx)(j_,{"data-state":e.getIsSelected()&&`selected`,className:P(`hover:bg-muted/20 data-[state=selected]:bg-muted max-w-full border-l-2`,AN(e.original.level),n&&`cursor-pointer`),onClick:()=>n?.(e),children:e.getVisibleCells().map(e=>(0,K.jsx)(P_,{className:`p-2`,children:Ue(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,K.jsx)(j_,{children:(0,K.jsx)(P_,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})}var MN=524288,NN=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 PN(e){try{JSON.parse(e)}catch{return!1}return!0}function FN(e){return!e||e.length>524288?`plaintext`:PN(e)?`json`:`plaintext`}function IN({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 LN({setIsModalOpen:e,isModalOpen:t,data:n}){let r=n?kN(n.node):`default`,i=rv();return(0,K.jsx)(Id,{onOpenChange:e,open:t,children:(0,K.jsxs)(Ud,{"aria-describedby":void 0,resizable:!0,children:[(0,K.jsx)(Wd,{children:(0,K.jsx)(Kd,{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)(IN,{label:`Level`,children:(0,K.jsx)(Fs,{variant:TN(n.level),children:Cl(n.level)})}),(0,K.jsx)(IN,{label:`Timestamp`,children:(0,K.jsx)(`span`,{className:`tabular-nums`,children:new Date(n.timestamp).toLocaleString()})}),(0,K.jsx)(IN,{label:`Thread`,children:(0,K.jsx)(`span`,{className:`tabular-nums font-mono`,children:n.thread})}),n.node&&(0,K.jsx)(IN,{label:`Node`,children:(0,K.jsx)(Fs,{variant:r,children:n.node})}),n.tags&&n.tags.length>0&&(0,K.jsx)(IN,{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)(av,{className:`w-full h-full`,language:FN(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)(gs,{})]})})}var RN=S({limit:M().or(E()).or(k()).optional(),level:ee([`notify`,`error`,`warn`,`info`,`debug`,`trace`,`undefined`]).or(E()).or(k()).optional(),from:M().or(E()).or(k()).optional(),until:M().or(E()).or(k()).optional(),log_name:ee([`hdb.log`,`system.log`]).or(E()).or(k()).optional(),filter:M().or(E()).or(k()).optional()}),zN=`dark:bg-grey-600 dark:border-grey-500`;function BN({form:e,resetFilters:t,submitFilters:n,showLogName:r,showFilter:i,isOpen:a,onOpenChange:o}){return(0,K.jsxs)(Vn,{className:P(a?`block`:`hidden`,`mt-3 md:mt-0 md:block`),children:[(0,K.jsx)(Hn,{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)(Un,{className:`flex items-center gap-2 text-base`,children:[(0,K.jsx)(so,{className:`size-4 text-muted-foreground`}),`Filters`]})})}),(0,K.jsx)(Gn,{id:`logs-filters-content`,children:(0,K.jsx)(El,{...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)(Xa,{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:P(`pl-9`,zN),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)(Cg,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(Eg,{className:P(`w-full bg-white`,zN),children:(0,K.jsx)(Tg,{placeholder:`Select log file`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(kg,{value:`hdb.log`,children:`Application (hdb.log)`}),(0,K.jsx)(kg,{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)(Cg,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(Eg,{className:P(`w-full bg-white`,zN),children:(0,K.jsx)(Tg,{placeholder:`Limit`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(kg,{value:`1000`,children:`1000`}),(0,K.jsx)(kg,{value:`500`,children:`500`}),(0,K.jsx)(kg,{value:`250`,children:`250`}),(0,K.jsx)(kg,{value:`100`,children:`100`}),(0,K.jsx)(kg,{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)(Cg,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(Eg,{className:P(`w-full bg-white`,zN),children:(0,K.jsx)(Tg,{placeholder:`Level`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(kg,{value:`undefined`,children:`All`}),(0,K.jsx)(kg,{value:`notify`,children:`Notify`}),(0,K.jsx)(kg,{value:`error`,children:`Error`}),(0,K.jsx)(kg,{value:`warn`,children:`Warn`}),(0,K.jsx)(kg,{value:`info`,children:`Info`}),(0,K.jsx)(kg,{value:`debug`,children:`Debug`}),(0,K.jsx)(kg,{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:zN,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:zN,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)(H,{type:`submit`,variant:`positiveOutline`,className:`grow`,children:`Apply Filters`}),(0,K.jsx)(H,{type:`reset`,variant:`destructiveOutline`,onClick:t,children:`Clear`})]})]})})})]})}var VN=1e4;function HN(e){if(!e)return;let t=parseInt(e,10);if(!(!Number.isFinite(t)||t<=0))return Math.min(t,VN)}function UN(e,t){return{operation:`read_log`,start:0,replicated:t,limit:HN(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 WN({instanceClient:e,logFilters:t,replicated:n}){let{data:r}=await e.post(`/`,UN(t,n));return r}function GN(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:()=>WN(e),retry:!1,refetchInterval:e.isAutoRefreshEnabled?5e3:!1})}async function KN({connection:e,logFilters:t,replicated:n,signal:r,onEntry:i}){let{url:a,headers:o,credentials:s}=bS(e),c;try{c=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(UN(t,n)),signal:r})}catch(e){throw r?.aborted?e:new _S(`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 _S(`read_log did not return an event stream (status ${c.status}, content-type "${l}").`);for await(let e of mS(c.body,r)){if(e.event===`error`){let t=gS(e);if(!t||typeof t!=`object`)throw new yS(typeof t==`string`&&t?t:`The log stream failed.`);let n=t;throw new yS(n.message??`The log stream failed.`,{code:n.code})}if(e.event===`done`||e.event===`end`)return;for(let t of qN(gS(e)))i(t)}}function qN(e){return Array.isArray(e)?e.filter(JN):JN(e)?[e]:[]}function JN(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 YN(e){return[e.timestamp,e.node??``,e.thread??``,e.level,e.message].join(`|`)}function XN(e,t,n){let r=new Set,i=[];for(let n of[...t,...e]){let e=YN(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 ZN={entries:[],fellBack:!1};function QN(e,t){switch(t.kind){case`reset`:return ZN;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 $N(){let e=q();return u.isDirectConnection(e.entityId)}var eP=1e3,tP=2e3,nP=250;function rP(e){return HN(e)??eP}function iP(e,t){return JSON.stringify([e.limit,e.level,e.from,e.until,e.log_name,e.filter,t])}function aP({params:e,logFilters:t,replicated:n,live:r}){let i=$N(),[a,o]=(0,G.useReducer)(QN,ZN),s=r&&i&&!a.fellBack,c=iP(t,n),l=rP(t.limit),u=Math.max(tP,l),d=F(GN({...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,nP);return KN({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:XN(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 oP={log_name:`hdb.log`,limit:`100`,level:`undefined`,from:``,until:``,filter:``},sP={error:(0,K.jsx)(Ar,{className:`size-3`}),stderr:(0,K.jsx)(Ar,{className:`size-3`}),warn:(0,K.jsx)(Oo,{className:`size-3`}),notify:(0,K.jsx)(cr,{className:`size-3`}),info:(0,K.jsx)(Ii,{className:`size-3`}),debug:(0,K.jsx)(gr,{className:`size-3`}),trace:(0,K.jsx)(Xn,{className:`size-3`}),stdout:(0,K.jsx)(So,{className:`size-3`})},cP=[{accessorKey:`level`,header:`Level`,cell:({row:e})=>{let{level:t}=e.original;return(0,K.jsxs)(Fs,{variant:TN(t),children:[sP[t],Cl(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=kN(t);return(0,K.jsx)(K.Fragment,{children:t?(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsxs)(Fs,{variant:n,children:[t.split(`.`)[0],`...`]})}),(0,K.jsx)(Tc,{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}}],lP=(e,t)=>!e&&!t||!e||!t||new Date(e)<=new Date(t);function uP(){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)(Jv,{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)(Jv,{className:`h-5 w-14`}),(0,K.jsx)(Jv,{className:`h-5 w-32`}),(0,K.jsx)(Jv,{className:`h-5 w-10`}),(0,K.jsx)(Jv,{className:`h-5 w-20`}),(0,K.jsx)(Jv,{className:`h-5 w-12`}),(0,K.jsx)(Jv,{className:`h-5 flex-1 max-w-xs`})]},t))]})}function dP(){let[e,t]=(0,G.useState)(oP),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(),[o,s]=(0,G.useState)(!1),[c,l]=Es(Pn.LogsOrderReversed,!1),[u,d]=(0,G.useState)(!1),f=q(),{data:p}=F(NS(f)),m=p?.version,h=!!m&&of(`4.7.16`,m),{logs:g,isLoading:_,isFetching:v,refetch:y,transport:b}=aP({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=Gt({resolver:it(RN),defaultValues:oP,mode:`onChange`}),w=e=>{a(e.original),r(!0)},T=async e=>{if(!lP(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(oP)},D=H_(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)(H,{variant:`defaultOutline`,onClick:()=>d(e=>!e),"aria-label":`Toggle filters`,"aria-expanded":u,className:`flex-1`,children:[(0,K.jsx)(so,{}),`Filters`]}),(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,"aria-label":`Refresh logs`,className:`flex-1`,children:[(0,K.jsx)(Ra,{className:v?`animate-spin`:``}),`Refresh`]}),(0,K.jsxs)(H,{variant:c?`default`:`defaultOutline`,onClick:()=>l(e=>!e),"aria-label":`Reverse log order`,"aria-pressed":c,className:`flex-1`,children:[(0,K.jsx)(ir,{}),`Reverse`]})]}),(0,K.jsx)(BN,{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)(H,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,className:`w-full`,children:[(0,K.jsx)(Ra,{}),`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)(yv,{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)(Ra,{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)(yv,{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)(ir,{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)(uP,{}):(0,K.jsx)(jN,{columns:cP,data:x,onRowClick:w,containerRef:S})}),(0,K.jsx)(LN,{isModalOpen:n,setIsModalOpen:r,data:i})]})}function fP(e){return I({getParentRoute:()=>e,path:`logs`,head:()=>({meta:[{title:`Logs — Harper Fabric`}]}),component:dP})}var pP=6e4,mP=60*pP,hP=24*mP,gP=[{id:`1h`,label:`Last 1 hour`,durationMs:mP,bucketMs:1*pP,expandedBucketMs:1*pP},{id:`6h`,label:`Last 6 hours`,durationMs:6*mP,bucketMs:2*pP,expandedBucketMs:1*pP},{id:`24h`,label:`Last 24 hours`,durationMs:hP,bucketMs:10*pP,expandedBucketMs:5*pP},{id:`7d`,label:`Last 7 days`,durationMs:7*hP,bucketMs:mP,expandedBucketMs:15*pP},{id:`30d`,label:`Last 30 days`,durationMs:30*hP,bucketMs:4*mP,expandedBucketMs:mP}];function _P(e){let t=gP.find(t=>t.id===e);if(!t)throw Error(`Unknown preset: ${e}`);return t}function vP(e){let t=(e,t)=>`${e} ${t}${e===1?``:`s`}`;return e>=mP&&e%mP===0?t(e/mP,`hour`):e>=pP&&e%pP===0?t(e/pP,`minute`):e>=1e3&&e%1e3==0?t(e/1e3,`second`):`${e} ms`}function yP(e,t){let n=e=>t?.expanded?e.expandedBucketMs:e.bucketMs,r=n(gP[0]);if(!Number.isFinite(e)||e<=0)return r;for(let t of gP)if(e<=t.durationMs*1.01)return n(t);let i=gP[gP.length-1];return Math.max(r,Math.ceil(e/(i.durationMs/n(i))))}var bP=[{label:`Off`,value:0},{label:`30s`,value:3e4},{label:`60s`,value:6e4},{label:`5m`,value:3e5}],xP=6e4,SP=[`health`,`traffic`,`requests`,`database`,`replication`,`storage`,`overview`],CP={tab:`health`,range:`1h`,refresh:xP};function wP(e){let t=e.refresh===``?NaN:Number(e.refresh);return{tab:SP.find(t=>t===e.tab)??CP.tab,range:gP.find(t=>t.id===e.range)?.id??CP.range,refresh:bP.find(e=>e.value===t)?.value??CP.refresh}}function TP(e){return I({getParentRoute:()=>e,path:`status`,validateSearch:wP,search:{middlewares:[Ee(CP)]},head:()=>({meta:[{title:`Status — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./status-CGJwrNPH.js`),__vite__mapDeps([36,1,7,6,2,3,4,8,9,13,37,12,31,38,39,40,41,42,43,44,45,29,46])),`StatusIndex`)})}function EP(e){let t=xN(e),n=[fP(t),...Hx(t,e),Vx(t),TP(t),wE(t),hN(t)];return t.addChildren(n)}I({getParentRoute:()=>il,path:`notifications`,head:()=>({meta:[{title:`Notifications — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./notifications-TuzN0IMi.js`),__vite__mapDeps([47,1,6,7,2,3,8,9])),`NotificationsCenter`)}),I({getParentRoute:()=>il,path:`profile`,head:()=>({meta:[{title:`Profile — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./profile-D7C7Lupz.js`),__vite__mapDeps([48,1,23,7,6,24,4,2,3,25,26,8,9])),`ProfileIndex`)});var DP=rl.addChildren([...Ed,il.addChildren([EP(`local`)])]);function OP({routeTree:e=DP,authentication:t}){let[n]=(0,G.useState)(()=>Qe({routeTree:e,history:ye(),defaultNotFoundComponent:Uo,defaultErrorComponent:Ho,defaultPreload:!Wo()&&`intent`,trailingSlash:`never`,defaultPreloadStaleTime:0,scrollRestoration:!0,context:{queryClient:Jo,authentication:t||{}}}));return n}function kP(){let e=Fn(),t=OP({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)(Ne,{router:t,context:{authentication:e}}),(0,K.jsx)(We,{router:t,position:`bottom-right`})]})}var AP=({...e})=>(0,K.jsx)(Ct,{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}),jP=!1;function MP(){(0,G.useEffect)(()=>{jP||=!0},[])}function NP(){return pl(),tl(),MP(),(0,K.jsxs)(ks,{children:[(0,K.jsxs)(Ce,{client:Jo,children:[(0,K.jsx)(kP,{}),(0,K.jsx)(Xe,{buttonPosition:`bottom-right`})]}),(0,K.jsx)(AP,{richColors:!0})]})}function PP(){u.signOutAllLocally(),Jo.getMutationCache().clear(),Jo.getQueryCache().clear(),Ac(),jc()}function FP(e,t=()=>!1,n=()=>!0){return r=>(r?.response?.status===401&&!t(r.config?.url??``)&&n(r.config)&&e(),Promise.reject(r))}var IP=[`/Login/`,`/ForgotPassword/`,`/ResetPassword/`,`/VerifyEmail/`,`/ResendVerificationEmail/`],LP=`authUserAtSend`;function RP(){let e=u.getConnectionById(m).user;return e&&`id`in e?e.id:null}var zP=!1;function BP(){zP||(zP=!0,N.interceptors.request.use(e=>(e[LP]=RP(),e)),N.interceptors.response.use(e=>e,FP(PP,e=>IP.some(t=>e.startsWith(t)),e=>e?.[LP]===RP())))}function VP(){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 HP=`Studio:StaleDeployReloadedAt`,UP=6e4,WP=`__harperStaleDeployReloadState__`;function GP(){if(typeof window<`u`)return window[WP]}function KP(){let e=GP();if(e){try{let e=Number(sessionStorage.getItem(HP)??0);if(Date.now()-e<UP)return;sessionStorage.setItem(HP,String(Date.now()))}catch{return}e.reload()}}function qP(e=()=>window.location.reload()){if(typeof window>`u`)return;let t=window,n=t[WP];if(n){n.reload=e;return}t[WP]={reload:e},window.addEventListener(`vite:preloadError`,()=>KP())}var JP=ge();VP(),qP(),BP(),a(),u.installExplorerCrossTabCleanup(),(0,JP.createRoot)(document.getElementById(`root`),{onUncaughtError:(e,t)=>{me(e,t),console.error(`Uncaught error:`,e,t)},onCaughtError:(e,t)=>{me(e,t),console.error(`Caught error:`,e,t)},onRecoverableError:(e,t)=>{me(e,t),console.warn(`Recoverable error:`,e,t)}}).render((0,K.jsx)(G.StrictMode,{children:(0,K.jsx)(NP,{})}));export{dT as $,$s as $n,Gn as $r,kg as $t,Cj as A,Al as An,Xa as Ar,Db as At,XO as B,q as Bn,Xi as Br,Q_ as Bt,Ej as C,Wd as Cn,Oo as Cr,_S as Ct,vj as D,$ as Dn,go as Dr,dx as Dt,bj as E,ql as En,vo as Er,hx as Et,cj as F,ol as Fn,Ia as Fr,Dy as Ft,VD as G,mc as Gn,Pr as Gr,M_ as Gt,RO as H,Cc as Hn,Ii as Hr,O_ as Ht,IA as I,$c as In,Pa as Ir,Jv as It,dD as J,ic as Jn,vr as Jr,x_ as Jt,UD as K,pc as Kn,Ar as Kr,k_ as Kt,$k as L,Kc as Ln,Ma as Lr,yv as Lt,uj as M,Y as Mn,Ha as Mr,ky as Mt,aj as N,J as Nn,Ba as Nr,Oy as Nt,wj as O,Q as On,no as Or,ix as Ot,lj as P,El as Pn,Ra as Pr,Ay as Pt,rE as Q,rc as Qn,Vn as Qr,Dg as Qt,nk as R,Mc as Rn,Oa as Rr,av as Rt,_j as S,Gd as Sn,Mo as Sr,vS as St,Oj as T,Uu as Tn,So as Tr,Kx as Tt,SO as U,Tc as Un,ni as Ur,A_ as Ut,JO as V,Oc as Vn,Ri as Vr,B_ as Vt,HD as W,wc as Wn,Qr as Wr,P_ as Wt,XE as X,Xs as Xn,er as Xr,Lg as Xt,mD as Y,Zs as Yn,nr as Yr,qg as Yt,LE as Z,tc as Zn,qn as Zr,Cg as Zt,Yj as _,tf as _n,qo as _r,FS as _t,vP as a,zn as ai,ym as an,ws as ar,Rw as at,Tj as b,Ud as bn,Ho as br,OS as bt,WN as c,tm as cn,$o as cr,Ww as ct,OM as d,Np as dn,rs as dr,pC as dt,Wn as ei,Eg as en,Hs as er,oT as et,gM as f,of as fn,is as fr,dC as ft,Qj as g,ef as gn,Xo as gr,$S as gt,$j as h,Qd as hn,os as hr,rC as ht,gP as i,Bn as ii,_m as in,Es as ir,Lw as it,Sj as j,X as jn,Ka as jr,jy as jt,yj as k,Z as kn,Qa as kr,Fb as kt,NN as l,Tp as ln,Zo as lr,rw as lt,Zj as m,Zd as mn,ss as mr,uC as mt,wP as n,Un as ni,Jm as nn,Ws as nr,Jw as nt,_P as o,vm as on,gs as or,Gw as ot,uM as p,Yd as pn,as as pr,fC as pt,BD as q,ac as qn,Or as qr,j_ as qt,bP as r,Ln as ri,zm as rn,Fs as rr,Pw as rt,yP as s,nm as sn,Yo as sr,zw as st,KP as t,Hn as ti,Tg as tn,Us as tr,qw as tt,MN as u,Pp as un,Qo as ur,QC as ut,qj as v,Xd as vn,Jo as vr,NS as vt,Dj as w,Kd as wn,Eo as wr,pS as wt,gj as x,qd as xn,Io as xr,wS as xt,Kj as y,Id as yn,Go as yr,MS as yt,tk as z,Dc as zn,ea as zr,rv as zt};
828
+ disabled:pointer-events-none disabled:opacity-50 dark:bg-grey-700 dark:text-white`})]})}function $M({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)(Cg,{value:String(e),onValueChange:e=>t(Number(e)),children:[(0,K.jsx)(Eg,{"aria-label":`Rows per page`,className:`h-9 w-20`,children:(0,K.jsx)(Tg,{})}),(0,K.jsx)(Dg,{side:`top`,children:JM.map(e=>(0,K.jsx)(kg,{value:String(e),children:Jg(e)},e))})]})]})}function eN(e,t,n=1){if(t<=n*2+5)return tN(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?[...tN(1,s),`ellipsis`,t]:a&&!o?[1,`ellipsis`,...tN(t-s+1,t)]:[1,`ellipsis`,...tN(r,i),`ellipsis`,t]}function tN(e,t){return Array.from({length:t-e+1},(t,n)=>e+n)}var nN=32,rN=`shadow-[inset_-1px_0_0_var(--color-border)]`;function iN(e,t){return!t||typeof e!=`object`||!e||!Object.hasOwn(e,t)?void 0:e[t]??void 0}function aN({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=Je({features:F_,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=>iN(e,p)).filter(e=>e!==void 0):[],[O,o,p]),A=m?k.filter(e=>m.selectedKeys.has(e)).length:0,ee=k.length>0&&A===k.length,te=A>0&&!ee,[j,M]=(0,G.useState)(void 0),N=(0,G.useCallback)((e,t)=>{if(!m)return;let n=t?k.indexOf(j):-1,r=k.indexOf(e);if(n===-1||r===-1){m.toggleRow(e),M(e);return}let[i,a]=n<=r?[n,r]:[r,n];m.setRangeSelected(k.slice(i,a+1),!m.selectedKeys.has(e))},[m,k,j]),ne=(0,G.useRef)(null),re=(0,G.useRef)(!1),ie=(0,G.useRef)(!1),ae=(0,G.useCallback)((e,t)=>{!m||e===void 0||t.button!==0||t.shiftKey||t.ctrlKey||t.metaKey||(re.current=!0,ne.current={originKey:e,selected:!m.selectedKeys.has(e),snapshot:new Set(m.selectedKeys),applied:[],lastKey:e})},[m]),oe=(0,G.useCallback)((e,t)=>{let n=ne.current;if(!n)return;if(!(t&1)){ne.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,M(n.originKey),ie.current=!0},[m,k]);(0,G.useEffect)(()=>{let e=()=>{ne.current=null},t=()=>{re.current=!1,ie.current=!1};return window.addEventListener(`mouseup`,e),window.addEventListener(`mousedown`,t,!0),()=>{window.removeEventListener(`mouseup`,e),window.removeEventListener(`mousedown`,t,!0)}},[]),(0,G.useLayoutEffect)(()=>{M(void 0),ne.current=null},[h]);let se=(0,G.useRef)(null),[ce,le]=(0,G.useState)(0);(0,G.useLayoutEffect)(()=>{let e=se.current;e&&(e.scrollTop=0)},[h]),(0,G.useLayoutEffect)(()=>{let e=se.current;e&&(e.scrollTop=0,e.scrollLeft=0)},[g]);let ue=D.state.columnResizing,de=ue.isResizingColumn;(0,G.useLayoutEffect)(()=>{de&&le(se.current?.scrollLeft??0)},[de]);let fe=null;if(de){let e=D.options.defaultColumn?.minSize??20,t=D.getColumn(de)?.getSize()??0,n=O?nN:0;for(let e of D.getVisibleLeafColumns())if(n+=e.getSize(),e.id===de)break;fe=n+Math.max(ue.deltaOffset??0,e-t)-ce}let pe=D.getRowModel().rows.length>0,me=o===void 0,he=!pe&&!me&&!!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)(O_,{containerRef:se,containerClassName:P(`rounded-t-md bg-card dark:bg-black-dark min-h-0 overflow-y-auto`,he?`shrink-0`:`rounded-b-md grow`),className:`table-fixed`,children:[(0,K.jsx)(k_,{children:D.getHeaderGroups().map(e=>(0,K.jsxs)(j_,{className:`border-none`,children:[O&&(0,K.jsx)(M_,{style:{width:`${nN}px`},className:P(`sticky top-0 left-0 z-20 p-0 bg-card dark:bg-black-dark border-b border-border`,rN),children:(0,K.jsx)(oN,{checked:ee,indeterminate:te,disabled:k.length===0,onToggle:()=>{m.toggleAll(k,!ee),M(ee?void 0:k[0])}})}),e.headers.map(e=>(0,K.jsx)(N_,{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)(M_,{"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)(LM,{applyFilters:e,columnFiltersForm:t,headerGroups:D.getHeaderGroups(),selectColumnWidth:O?nN:void 0}),!he&&(0,K.jsx)(A_,{className:`bg-background dark:bg-black border-y border-border dark:border-grey-700`,children:pe?D.getRowModel().rows.map(e=>(0,K.jsx)(cN,{row:e,onRowClick:u,primaryKey:p,rowSelection:O?m:void 0,onSelectRow:N,onBeginDrag:ae,onDragOver:oe,pressedInGutterRef:re,dragMovedRef:ie},e.id)):(0,K.jsx)(j_,{children:(0,K.jsx)(P_,{colSpan:n.length+1+ +!!O,className:`h-24 text-center`,children:c||me?(0,K.jsx)(qM,{className:`opacity-50 inline-block`}):(0,K.jsx)(`span`,{children:`No results.`})})})})]}),he&&(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}),fe!==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:`${fe}px`}})]}),(0,K.jsx)(YM,{pageIndex:d,pageSize:f,totalPages:b,totalRecords:x,isEstimatedCount:S,estimatedRange:C,isExactCountFetching:w,isExactCountError:T,onRequestExactCount:E,setPageIndex:_,setPageSize:v})]})}function oN({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)(sN,{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 sN({children:e}){return(0,K.jsx)(`label`,{className:`flex h-full w-full items-center justify-center py-2`,children:e})}function cN({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)(uN,{cell:l[0]},l[0].id),(0,K.jsx)(dN,{colSpan:l.length-1},`expired`)]:[(0,K.jsx)(dN,{colSpan:l.length},`expired`)]:l.map(e=>(0,K.jsx)(uN,{cell:e},e.id))},[e,t,l]),d=r?iN(e.original,t):void 0,f=d!==void 0&&!!r?.selectedKeys.has(d);return(0,K.jsxs)(j_,{"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:P(`hover:bg-muted/10 data-[state=selected]:bg-muted`,n&&`cursor-pointer`),children:[r&&(0,K.jsx)(P_,{className:P(`sticky left-0 z-10 p-0`,rN,f?`bg-muted`:`bg-background dark:bg-black`),onClick:OO,onMouseDown:e=>{e.preventDefault(),e.currentTarget.querySelector(`input`)?.focus(),a?.(d,e)},children:(0,K.jsx)(sN,{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:lN})})}),u,(0,K.jsx)(P_,{"aria-hidden":!0,className:`p-0`})]})}function lN(){}function uN({cell:e}){let t=e.column.getSize();return(0,K.jsx)(P_,{"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:Ue(e.column.columnDef.cell,e.getContext())})}function dN({colSpan:e}){return(0,K.jsx)(P_,{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 fN=new Set,pN=[];function mN({instanceDatabaseMap:e,databaseName:t,tableName:n}){let r=B({strict:!1}),i=q(),{clusterId:a,instanceId:o}=r,{toggled:s,toggle:c}=gM(!0),l=zn(`instance:update`),u=Fp(o??a,t,n,`insert`),d=Lp(o??a,t,n),f=zp(),p=Fp(o??a,t,n,`update`),m=Fp(o??a,t,n,`delete`),h=Pp(),{data:g}=F(tk({...i,databaseName:t,tableName:n})),v=e?.[t],y=v?.[n],b=g??y,x=d&&f.methods.file,S=d&&f.methods.url,C=d&&f.allowsSource(`csv-data`),w=(0,G.useMemo)(()=>uO(y?.attributes,v),[y,v]),T=d&&f.allowsSource(`json-records`)&&w.length>0,E=(0,G.useMemo)(()=>Lm(b?.attributes??[],`attribute`),[b]),{data:D}=F(cM(i)),{data:O}=F(RS(i)),k=Ip(o??a,t,n),A=kM(O?.version,k),ee=A===void 0,te=D?.[t]?.[n],j=(0,G.useMemo)(()=>IE(b,v,te),[b,v,te]),M=(0,G.useMemo)(()=>VE(b,v),[b,v]),N=(0,G.useMemo)(()=>RE(b?.attributes,v),[b,v]),[P,ne]=Ty(null,r),[re,ie]=(0,G.useState)(!1),[ae,oe]=Ty(null,r),[se,ce]=Ty(null,r),[le,ue]=(0,G.useState)(null),de=le!==null,fe=(0,G.useMemo)(()=>h&&!!v&&Object.keys(v).length>1,[h,v]),{toggled:pe,toggleOn:me,toggleOff:he}=gM(!1),ge=Gt({resolver:it(IM)}),{reset:_e}=ge,I=ge.watch(),[L,ve]=Ty(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(...GO(n,r,E[n],j[n]))}catch(e){U.error(String(e))}}return t},[E,j]),be=(0,G.useCallback)(()=>{let e=ye(I);ve(e.length?e:null),_e({...I})},[ye,_e,I]),xe=(0,G.useCallback)(()=>{_e({},{keepValues:!1,keepDirtyValues:!1,keepDefaultValues:!1}),_e(),ve(null),he()},[he,_e]);(0,G.useEffect)(function(){return xe()},[r,xe]);let{filters:Se}=Te({strict:!1}),Ce=JSON.stringify([t,n,Se??null]),R=(0,G.useRef)(null);(0,G.useEffect)(function(){if(!b||R.current===Ce)return;let e=R.current===null;if(R.current=Ce,Se){_e({...Se});let e=ye(Se);ve(e.length?e:null),me()}else e||xe()},[Se,Ce,b,_e,ye,ve,me,xe]);let{dataTableColumns:we,primaryKey:Ee}=NO(b,j),z=!b||!!Ee,[De,Oe]=Ty({attribute:Ee,descending:!1},r),[ke,Ae]=Ty(0,[t,n,L]),[je,Ne]=(0,G.useState)(20),[Pe,Fe]=Ty(null,[t,n,L,je,s]),Ie=g?.record_count??y?.record_count,Le=g?.estimated_record_range??y?.estimated_record_range,[Re,ze]=Ty(!1,[t,n]),{data:Be,isFetching:Ve,isError:He,refetch:Ue}=F(DM({...i,enabled:Re,databaseName:t,tableName:n})),We=(0,G.useCallback)(()=>{Re?Ue():ze(!0)},[Re,Ue,ze]),Ge=Be??Ie,Ke=Ge&&z?Math.ceil(Ge/je):0,qe=Be===void 0&&Le!==void 0,Je=pe&&!!L,Ye=JSON.stringify([t,n]),Xe=JSON.stringify([i.entityId,t,n,ke,je,De,Je?L:null,s]),[Ze,Qe]=Ty(fN,[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):fN)},[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=Eb({...i,enabled:!Je&&!!Ee,databaseName:t,tableName:n,searchAttribute:Ee,sort:De,pageSize:je,pageIndex:ke,onlyIfCached:s,getAttributes:M}),{data:at,isFetching:ot,isError:st}=F(rt),ct=UO({...i,enabled:Je&&!!Ee,databaseName:t,tableName:n,conditions:L,sort:De,pageSize:je,pageIndex:ke,onlyIfCached:s,getAttributes:M}),{data:lt,isFetching:ut,isError:dt}=F(ct),ft=Je?lt:at,pt=ot||ut,mt=Je?dt:st,ht=ft?.data,gt=(0,G.useMemo)(()=>(ht??[]).map(e=>iN(e,Ee)).filter(e=>e!==void 0&&Ze.has(e)),[ht,Ee,Ze]),{data:_t,isFetching:vt,isError:yt}=F(TM({...i,enabled:re,databaseName:t,tableName:n,ids:P})),bt=re&&!de&&!!ae&&(!Ee||ae[Ee]==null),xt=_t?.data,St=!bt&&!de&&!!P?.length&&!vt&&(yt||Array.isArray(xt)&&xt.length===0),{mutate:Ct,isPending:wt}=FM(),{mutate:Tt,isPending:Et}=CM(),{mutate:Dt,isPending:Ot}=MM(),{mutate:kt,isPending:At}=vM(),jt=Me(),Mt=(0,G.useCallback)(()=>(Fe(null),Qe(fN),jt.invalidateQueries({queryKey:[i.entityId,t,n]})),[jt,i.entityId,t,n,Fe,Qe]),Nt=(0,G.useCallback)(()=>jt.invalidateQueries({queryKey:wM(i.entityId,t,n)}),[jt,i.entityId,t,n]),Pt=(0,G.useCallback)(async()=>{confirm(`Are you sure you want to cleanup orphan blobs for database "${t}"?`)&&kt({...i,databaseName:t},{onSuccess:e=>{U.success(e.message||`Orphan blobs cleanup started successfully`),Mt()},onError:e=>{U.error(e instanceof Error?e.message:`Failed to cleanup orphan blobs`)}})},[kt,t,i,Mt]),{exportCsv:Ft,isExporting:It}=ZO(),Lt=(0,G.useCallback)(()=>{Ft({databaseName:t,tableName:n,primaryKey:Ee,sort:De,conditions:Je?L:null})},[Ft,t,n,Ee,De,Je,L]),Rt=(0,G.useCallback)(e=>{if(e?.wroteNothing){U.error(`The record wasn't updated`,{description:e.message});return}if(Mt(),Nt(),ie(!1),e){U.error(`The record wasn't fully updated`,{description:e.message});return}U.success(`Record updated successfully`)},[Mt,Nt]),zt=(0,G.useCallback)(e=>{Ct({...i,databaseName:t,tableName:n,records:e},{onSuccess:t=>Rt(NM(t,e.length))})},[Ct,i,t,n,Rt]),Bt=(0,G.useCallback)(e=>{Dt({...i,databaseName:t,tableName:n,records:e},{onSuccess:t=>Rt(jM(t,e.length))})},[Dt,i,t,n,Rt]),Vt=(0,G.useCallback)(e=>{Tt({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:t=>{let n=xM(t,e.length);if(n?.wroteNothing){U.error(`The record wasn't deleted`,{description:n.message});return}if(Mt(),Nt(),ie(!1),n){U.error(`The record wasn't fully deleted`,{description:n.message});return}U.success(`Record deleted successfully`)}})},[Tt,i,t,n,Mt,Nt]),Ht=(0,G.useCallback)(()=>{let e=gt;e.length&&confirm(`Permanently delete ${_(e.length,`record`,`records`)} from "${n}"?`)&&Tt({...i,databaseName:t,tableName:n,hashValues:e},{onSuccess:t=>{Mt(),Nt();let n=xM(t,e.length);if(n){U.error(`The records weren't all deleted`,{description:n.message});return}U.success(`${_(e.length,`record`,`records`)} deleted successfully`)}})},[Tt,i,t,n,Mt,Nt,gt]),Ut=(0,G.useCallback)((e,t)=>{let n=Ee?t[Ee]:void 0;oe(t),ne(n==null?null:[n]),ce(e)},[Ee,oe,ne,ce]),Wt=(0,G.useCallback)(e=>{if(se===null||!ht)return;let t=se+e,n=ht[t];if(n){Ut(t,n);return}let r=ke+e;r<0||(Ae(r),ue({end:e===1?`first`:`last`,fromPage:ke}))},[se,ht,Ut,ke,Ae]);(0,G.useEffect)(function(){if(!le)return;if(!re){ue(null);return}let e=le.end===`first`?0:(ht?.length??0)-1,t=e>=0?ht?.[e]:void 0;if(t){ue(null),Ut(e,t);return}if(ht||mt){if(ue(null),Ae(le.fromPage),mt){U.error(`Couldn't load the next page of records`);return}if(le.end===`first`){Fe(le.fromPage),U.info(`This is the last record`);return}U.info(`This is the first record`)}},[le,ht,mt,re,Ut,Ae,Fe]);let Kt=e=>{Ut(e.index,e.original),ie(!0)},qt=(e,t)=>{Oe({attribute:e,descending:!t})},Jt=H_(Mt),Yt=(0,G.useCallback)(()=>{KD(`ShowAddTableRecords`,{databaseName:t,tableName:n})},[t,n]),Xt=(0,G.useCallback)(()=>{KD(`ShowImportData`,{databaseName:t,tableName:n})},[t,n]),Zt=(0,G.useCallback)(()=>{KD(`ShowImportData`,{databaseName:t,tableName:n,method:x?`file`:`url`})},[t,n,x]),Qt=(0,G.useCallback)(()=>{KD(`ShowImportData`,{databaseName:t,tableName:n,method:`sample`})},[t,n]),[$t,en]=jy(`ColumnDisplayed/${t}/${n}`,{}),tn=(0,G.useMemo)(()=>({...Object.fromEntries(BE(j).map(e=>[e,!1])),...$t}),[j,$t]),nn=se===null?void 0:{position:de?void 0:ke*je+se+1,total:Je?void 0:Ge,isTotalEstimated:qe,hasPrevious:!de&&(se>0||ke>0),hasNext:!de&&!!ht&&(se+1<ht.length||ht.length===je&&Pe!==ke),onPrevious:()=>Wt(-1),onNext:()=>Wt(1)},[rn,an]=jy(`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&&z&&(0,K.jsxs)(H,{variant:`positiveOutline`,onClick:Yt,accessKey:`n`,children:[(0,K.jsx)(Ia,{}),(0,K.jsxs)(`span`,{children:[`Add `,(0,K.jsx)(`u`,{children:`N`}),`ew Record(s)`]})]}),m&&gt.length>0&&(0,K.jsxs)(H,{variant:`destructiveOutline`,onClick:Ht,disabled:Et,children:[(0,K.jsx)(Eo,{className:`text-destructive`}),(0,K.jsxs)(`span`,{children:[`Delete Selected (`,gt.length,`)`]})]})]}),(0,K.jsxs)(`div`,{className:`flex space-x-2`,children:[pe&&L&&(0,K.jsxs)(H,{type:`button`,variant:`ghost`,onClick:xe,accessKey:`f`,children:[(0,K.jsx)(vi,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Clear `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),pe&&ge.formState.isDirty&&(0,K.jsxs)(H,{variant:`default`,onClick:be,children:[(0,K.jsx)(gi,{className:`inline-block `}),`Apply Filters`]}),pe&&!L&&(0,K.jsxs)(H,{variant:`ghost`,onClick:he,accessKey:`f`,children:[(0,K.jsx)(vi,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Hide `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),!pe&&z&&(0,K.jsxs)(H,{variant:`ghost`,onClick:me,accessKey:`f`,children:[(0,K.jsx)(bi,{className:`inline-block `}),(0,K.jsxs)(`span`,{children:[`Show `,(0,K.jsx)(`u`,{children:`F`}),`ilters`]})]}),(0,K.jsx)(H,{variant:`defaultOutline`,onClick:Jt,disabled:pt,children:(0,K.jsx)(Ra,{"aria-label":`Refresh table`,role:`img`})}),(0,K.jsx)(GM,{columns:we,columnVisibility:tn,setColumnVisibility:en}),(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{variant:`ghost`,size:`icon`,children:(0,K.jsx)(oi,{"aria-label":`Table options`})})}),(0,K.jsxs)(Zo,{side:`bottom`,align:`end`,children:[d&&z&&(0,K.jsxs)(Qo,{onClick:Xt,children:[(0,K.jsx)(Jr,{}),`Import Data`]}),(0,K.jsxs)(Qo,{onClick:Lt,disabled:It||!z,children:[(0,K.jsx)(Kr,{}),`Export CSV`]}),(0,K.jsx)(rs,{}),(0,K.jsxs)(Qo,{className:`focus:bg-primary/70 focus:text-white`,onClick:c,children:[s?(0,K.jsx)(Mr,{className:`text-green`}):(0,K.jsx)(Rr,{}),`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:OO,children:(0,K.jsx)(ci,{})})]}),h&&l&&!!o&&(0,K.jsxs)(Qo,{className:`focus:bg-yellow/70 focus:text-white`,onClick:Pt,disabled:At,children:[(0,K.jsx)(mr,{className:`text-yellow `}),`Cleanup Orphan Blobs`]}),h&&(0,K.jsx)(rs,{}),fe&&(0,K.jsxs)(Qo,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>KD(`ShowDeleteTable`,{databaseName:t,tableName:n}),children:[(0,K.jsx)(Eo,{className:`inline-block `}),`Drop Table`]}),h&&(0,K.jsxs)(Qo,{className:`focus:bg-red/70 focus:text-white`,onClick:()=>KD(`ShowDeleteDatabase`,{databaseName:t}),children:[(0,K.jsx)(Eo,{}),`Drop Database`]})]})]})]})]}),(0,K.jsx)(aN,{primaryKey:Ee,data:z?ht:pN,emptyState:(0,K.jsx)(zM,{tableName:n,hasPrimaryKey:z,isFiltered:Je,isPastFirstPage:ke>0,recordCount:Ge,canImportFile:x,canImportUrl:S,canSeedSample:C,canSeedRandom:T,canAddRecords:u,onImport:Zt,onSeed:Qt,onAddRecords:Yt,onClearFilters:xe}),isFetching:pt,filtersToggled:pe,columns:we,columnVisibility:tn,columnSizing:rn,setColumnSizing:an,onRowClick:Kt,onColumnClick:qt,rowSelection:nt,totalPages:Ke,totalRecords:Ge,isEstimatedCount:qe,estimatedRange:Le,isExactCountFetching:Ve,isExactCountError:He,onRequestExactCount:We,pageIndex:ke,pageSize:je,resultSetKey:Xe,tableIdentity:Ye,columnFiltersForm:ge,applyFilters:be,setPageIndex:Ae,setPageSize:Ne}),(0,K.jsx)(mM,{canEditRecords:p,canDeleteRecords:m,canReplaceRecords:ee,replaceBlockedReason:A,setIsModalOpen:ie,isModalOpen:re,primaryKey:Ee,missingPrimaryKey:bt,recordUnavailable:St,syntheticAttributes:N,recordNavigation:nn,data:de?void 0:bt||St?ae?[ae]:void 0:_t?.data,onSaveChanges:zt,onReplaceRecord:Bt,onDeleteRecord:Vt,isUpdateTableRecordsPending:wt||Ot,isDeleteTableRecordsPending:Et})]})}function hN(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 gN=10;function _N(e){return Math.max(200,Math.floor(e/2))}function vN(e,t){return Math.round(Math.min(Math.max(e,200),_N(t)))}function yN(){let[e,t]=Es(Pn.DatabasesSidebarWidth,320),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(()=>vN(e,window.innerWidth)),o=(0,G.useRef)(i);o.current=i;let s=(0,G.useRef)(null);(0,G.useEffect)(()=>{n||a(vN(e,window.innerWidth))},[e,n]),(0,G.useEffect)(()=>{let t=()=>{n||a(vN(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(vN(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=>vN(e-gN,window.innerWidth))):e.key===`ArrowRight`&&(e.preventDefault(),t(e=>vN(e+gN,window.innerWidth)))},[t])}}function bN(){let e=B({strict:!1}),t=q(),{data:n}=F(iw({...t,skipRecordCount:!0})),{width:r,isResizing:i,startResizing:a,handleKeyDown:o}=yN(),s={"--db-sidebar-width":`${r}px`},c=hN(n,e);return c?(0,K.jsx)(ve,{to:AE({...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)(oj,{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":_N(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:P(`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)(mN,{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)(ok,{instanceDatabaseMap:n,databaseName:e.databaseName})}):null})]}),n&&(0,K.jsx)(DO,{instanceDatabaseMap:n})]})}function xN(e){return I({getParentRoute:()=>e,path:`/databases/{-$databaseName}/{-$tableName}`,head:()=>({meta:[{title:`Databases — Harper Fabric`}]}),component:bN})}var SN={className:`text-primary font-semibold bg-primary/10 rounded-md dark:text-white dark:bg-white/10`};function CN(){let e=Np(),t=B({strict:!1}),{version:n}=_e({strict:!1}),r=of(`4.6.0`,n)&&e,i=of(`4.7.0-beta.7`,n),a=q(),{data:o}=F(gx(a,r)),s=o?.restartRequired??!1,c=(0,G.useMemo)(()=>[e&&{to:t.clusterId&&!t.instanceId?bx(t,`apps`):bx(t),activeOptions:{exact:!0},name:`Applications`,shortName:`Apps`,icon:(0,K.jsx)(Oa,{className:`inline-block`})},{to:bx(t,`databases`),icon:(0,K.jsx)(ni,{className:`inline-block`}),name:`Databases`},e&&i&&{to:bx(t,`apis`),name:`APIs`,icon:(0,K.jsx)(Qa,{className:`inline-block`})},e&&r&&{to:bx(t,`status`),icon:(0,K.jsx)(Si,{className:`inline-block`}),name:`Status`},e&&{to:bx(t,`logs`),icon:(0,K.jsx)(wa,{className:`inline-block`}),name:`Logs`},e&&{to:bx(t,`config`),icon:(0,K.jsx)(eo,{className:`inline-block`}),name:`Config`}].filter($c),[e,t,i,r]);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(wN,{links:c,restartRequired:s}),(0,K.jsx)(TN,{links:c,restartRequired:s})]})}function wN({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)(Tl,{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:SN,...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)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:n}),(0,K.jsx)(Tc,{side:`bottom`,className:`xl:hidden`,children:t.name})]},t.to)})})]})}function TN({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)(Tl,{restartRequired:t}),(0,K.jsxs)(Yo,{children:[(0,K.jsx)(Xo,{asChild:!0,children:(0,K.jsx)(H,{variant:`ghost`,className:`p-0`,children:(0,K.jsx)(ga,{className:`h-8 w-8`})})}),(0,K.jsxs)(Zo,{children:[(0,K.jsx)(ns,{children:`Instance Menu`}),(0,K.jsx)(rs,{}),e.map(e=>(0,K.jsx)(Qo,{asChild:!0,children:(0,K.jsxs)(V,{to:e.to,activeProps:SN,className:`flex items-center gap-2`,children:[e.icon,e.name]})},e.to))]})]})]})})}(0,G.lazy)(()=>pe(()=>import(`./FloatingChat-kWHApEtF.js`).then(e=>({default:e.FloatingChat})),__vite__mapDeps([35,1,2,3,13,27,26])));function EN(){let{instanceId:e,clusterId:t}=B({strict:!1});return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`nav`,{className:`studio-subnav 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)(CN,{})}),(0,K.jsxs)(`div`,{className:`mt-32 min-h-[calc(100vh-(--spacing(32)))]`,children:[(0,K.jsx)(Cm,{entityId:m,clusterId:t,noun:`instance`,className:`px-4 pt-4 md:px-12`}),(0,K.jsx)($e,{})]}),!1]})}function DN(e){switch(e){case`local`:return I({getParentRoute:()=>il,id:`_instanceLayout`,component:EN,loader:OE});case`cluster`:return I({getParentRoute:()=>Ly,id:`_instanceLayout`,component:EN,beforeLoad:ON,loader:OE});case`instance`:return I({getParentRoute:()=>Ly,path:`instance/$instanceId`,component:EN,beforeLoad:ON,loader:OE})}}async function ON({context:e,params:t}){let n=t.instanceId||t.clusterId,r=!1;if(u.checkForFabricConnect(n)&&!u.hasResolvedFabricConnect(n)&&(r=!0,await kN(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?jp(a.user,t.organizationId,t.clusterId):Tp(a.user,t.organizationId,t.clusterId);if(!r&&o&&await kN(n,e.cluster,t.instanceId))return;let s=`/${t.organizationId}/${t.clusterId}/`+(t.instanceId?`instance/${t.instanceId}`:``)+`/sign-in`;throw Se({to:s,search:Jc()})}async function kN(e,t,n){try{return await u.establishFabricConnectAuth({id:e,operationsUrl:AN(t,n)}),!0}catch(e){return console.debug(`Fabric Connect not established`,e),!1}}function AN(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 jN(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 MN=[`secondary`,`default`,`warning`,`outline`,`success`,`destructive`],NN=0,PN=new Map,FN=e=>{if(PN.has(e))return PN.get(e);NN++;let t=MN[NN%MN.length];return PN.set(e,t),t};function IN(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 LN({columns:e,data:t,onRowClick:n,containerRef:r}){let i=Je({features:F_,data:t,columns:e});return(0,K.jsxs)(O_,{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)(k_,{children:i.getHeaderGroups().map(e=>(0,K.jsx)(j_,{className:`border-b border-border`,children:e.headers.map(e=>(0,K.jsx)(M_,{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:Ue(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,K.jsx)(A_,{className:`bg-background dark:bg-black`,children:i.getRowModel().rows?.length?i.getRowModel().rows.map(e=>(0,K.jsx)(j_,{"data-state":e.getIsSelected()&&`selected`,className:P(`hover:bg-muted/20 data-[state=selected]:bg-muted max-w-full border-l-2`,IN(e.original.level),n&&`cursor-pointer`),onClick:()=>n?.(e),children:e.getVisibleCells().map(e=>(0,K.jsx)(P_,{className:`p-2`,children:Ue(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,K.jsx)(j_,{children:(0,K.jsx)(P_,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})}var RN=524288,zN=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 BN(e){try{JSON.parse(e)}catch{return!1}return!0}function VN(e){return!e||e.length>524288?`plaintext`:BN(e)?`json`:`plaintext`}function HN({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 UN({setIsModalOpen:e,isModalOpen:t,data:n}){let r=n?FN(n.node):`default`,i=rv();return(0,K.jsx)(Id,{onOpenChange:e,open:t,children:(0,K.jsxs)(Ud,{"aria-describedby":void 0,resizable:!0,children:[(0,K.jsx)(Wd,{children:(0,K.jsx)(Kd,{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)(HN,{label:`Level`,children:(0,K.jsx)(Fs,{variant:jN(n.level),children:Cl(n.level)})}),(0,K.jsx)(HN,{label:`Timestamp`,children:(0,K.jsx)(`span`,{className:`tabular-nums`,children:new Date(n.timestamp).toLocaleString()})}),(0,K.jsx)(HN,{label:`Thread`,children:(0,K.jsx)(`span`,{className:`tabular-nums font-mono`,children:n.thread})}),n.node&&(0,K.jsx)(HN,{label:`Node`,children:(0,K.jsx)(Fs,{variant:r,children:n.node})}),n.tags&&n.tags.length>0&&(0,K.jsx)(HN,{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)(av,{className:`w-full h-full`,language:VN(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)(gs,{})]})})}var WN=S({limit:M().or(E()).or(k()).optional(),level:ee([`notify`,`error`,`warn`,`info`,`debug`,`trace`,`undefined`]).or(E()).or(k()).optional(),from:M().or(E()).or(k()).optional(),until:M().or(E()).or(k()).optional(),log_name:ee([`hdb.log`,`system.log`]).or(E()).or(k()).optional(),filter:M().or(E()).or(k()).optional()}),GN=`dark:bg-grey-600 dark:border-grey-500`;function KN({form:e,resetFilters:t,submitFilters:n,showLogName:r,showFilter:i,isOpen:a,onOpenChange:o}){return(0,K.jsxs)(Vn,{className:P(a?`block`:`hidden`,`mt-3 md:mt-0 md:block`),children:[(0,K.jsx)(Hn,{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)(Un,{className:`flex items-center gap-2 text-base`,children:[(0,K.jsx)(so,{className:`size-4 text-muted-foreground`}),`Filters`]})})}),(0,K.jsx)(Gn,{id:`logs-filters-content`,children:(0,K.jsx)(El,{...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)(Xa,{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:P(`pl-9`,GN),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)(Cg,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(Eg,{className:P(`w-full bg-white`,GN),children:(0,K.jsx)(Tg,{placeholder:`Select log file`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(kg,{value:`hdb.log`,children:`Application (hdb.log)`}),(0,K.jsx)(kg,{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)(Cg,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(Eg,{className:P(`w-full bg-white`,GN),children:(0,K.jsx)(Tg,{placeholder:`Limit`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(kg,{value:`1000`,children:`1000`}),(0,K.jsx)(kg,{value:`500`,children:`500`}),(0,K.jsx)(kg,{value:`250`,children:`250`}),(0,K.jsx)(kg,{value:`100`,children:`100`}),(0,K.jsx)(kg,{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)(Cg,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,K.jsx)(Eg,{className:P(`w-full bg-white`,GN),children:(0,K.jsx)(Tg,{placeholder:`Level`})}),(0,K.jsx)(Dg,{children:(0,K.jsxs)(wg,{children:[(0,K.jsx)(kg,{value:`undefined`,children:`All`}),(0,K.jsx)(kg,{value:`notify`,children:`Notify`}),(0,K.jsx)(kg,{value:`error`,children:`Error`}),(0,K.jsx)(kg,{value:`warn`,children:`Warn`}),(0,K.jsx)(kg,{value:`info`,children:`Info`}),(0,K.jsx)(kg,{value:`debug`,children:`Debug`}),(0,K.jsx)(kg,{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:GN,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:GN,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)(H,{type:`submit`,variant:`positiveOutline`,className:`grow`,children:`Apply Filters`}),(0,K.jsx)(H,{type:`reset`,variant:`destructiveOutline`,onClick:t,children:`Clear`})]})]})})})]})}var qN=1e4;function JN(e){if(!e)return;let t=parseInt(e,10);if(!(!Number.isFinite(t)||t<=0))return Math.min(t,qN)}function YN(e,t){return{operation:`read_log`,start:0,replicated:t,limit:JN(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 XN({instanceClient:e,logFilters:t,replicated:n}){let{data:r}=await e.post(`/`,YN(t,n));return r}function ZN(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:()=>XN(e),retry:!1,refetchInterval:e.isAutoRefreshEnabled?5e3:!1})}async function QN({connection:e,logFilters:t,replicated:n,signal:r,onEntry:i}){let{url:a,headers:o,credentials:s}=TS(e),c;try{c=await fetch(a,{method:`POST`,headers:o,credentials:s,body:JSON.stringify(YN(t,n)),signal:r})}catch(e){throw r?.aborted?e:new SS(`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 SS(`read_log did not return an event stream (status ${c.status}, content-type "${l}").`);for await(let e of yS(c.body,r)){if(e.event===`error`){let t=xS(e);if(!t||typeof t!=`object`)throw new wS(typeof t==`string`&&t?t:`The log stream failed.`);let n=t;throw new wS(n.message??`The log stream failed.`,{code:n.code})}if(e.event===`done`||e.event===`end`)return;for(let t of $N(xS(e)))i(t)}}function $N(e){return Array.isArray(e)?e.filter(eP):eP(e)?[e]:[]}function eP(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 tP(e){return[e.timestamp,e.node??``,e.thread??``,e.level,e.message].join(`|`)}function nP(e,t,n){let r=new Set,i=[];for(let n of[...t,...e]){let e=tP(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 rP={entries:[],fellBack:!1};function iP(e,t){switch(t.kind){case`reset`:return rP;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 aP(){let e=q();return u.isDirectConnection(e.entityId)}var oP=1e3,sP=2e3,cP=250;function lP(e){return JN(e)??oP}function uP(e,t){return JSON.stringify([e.limit,e.level,e.from,e.until,e.log_name,e.filter,t])}function dP({params:e,logFilters:t,replicated:n,live:r}){let i=aP(),[a,o]=(0,G.useReducer)(iP,rP),s=r&&i&&!a.fellBack,c=uP(t,n),l=lP(t.limit),u=Math.max(sP,l),d=F(ZN({...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,cP);return QN({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:nP(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 fP={log_name:`hdb.log`,limit:`100`,level:`undefined`,from:``,until:``,filter:``},pP={error:(0,K.jsx)(Ar,{className:`size-3`}),stderr:(0,K.jsx)(Ar,{className:`size-3`}),warn:(0,K.jsx)(Oo,{className:`size-3`}),notify:(0,K.jsx)(cr,{className:`size-3`}),info:(0,K.jsx)(Ii,{className:`size-3`}),debug:(0,K.jsx)(gr,{className:`size-3`}),trace:(0,K.jsx)(Xn,{className:`size-3`}),stdout:(0,K.jsx)(So,{className:`size-3`})},mP=[{accessorKey:`level`,header:`Level`,cell:({row:e})=>{let{level:t}=e.original;return(0,K.jsxs)(Fs,{variant:jN(t),children:[pP[t],Cl(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=FN(t);return(0,K.jsx)(K.Fragment,{children:t?(0,K.jsxs)(Cc,{children:[(0,K.jsx)(wc,{asChild:!0,children:(0,K.jsxs)(Fs,{variant:n,children:[t.split(`.`)[0],`...`]})}),(0,K.jsx)(Tc,{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}}],hP=(e,t)=>!e&&!t||!e||!t||new Date(e)<=new Date(t);function gP(){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)(Jv,{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)(Jv,{className:`h-5 w-14`}),(0,K.jsx)(Jv,{className:`h-5 w-32`}),(0,K.jsx)(Jv,{className:`h-5 w-10`}),(0,K.jsx)(Jv,{className:`h-5 w-20`}),(0,K.jsx)(Jv,{className:`h-5 w-12`}),(0,K.jsx)(Jv,{className:`h-5 flex-1 max-w-xs`})]},t))]})}function _P(){let[e,t]=(0,G.useState)(fP),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(),[o,s]=(0,G.useState)(!1),[c,l]=Es(Pn.LogsOrderReversed,!1),[u,d]=(0,G.useState)(!1),f=q(),{data:p}=F(RS(f)),m=p?.version,h=!!m&&of(`4.7.16`,m),{logs:g,isLoading:_,isFetching:v,refetch:y,transport:b}=dP({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=Gt({resolver:it(WN),defaultValues:fP,mode:`onChange`}),w=e=>{a(e.original),r(!0)},T=async e=>{if(!hP(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(fP)},D=H_(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)(H,{variant:`defaultOutline`,onClick:()=>d(e=>!e),"aria-label":`Toggle filters`,"aria-expanded":u,className:`flex-1`,children:[(0,K.jsx)(so,{}),`Filters`]}),(0,K.jsxs)(H,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,"aria-label":`Refresh logs`,className:`flex-1`,children:[(0,K.jsx)(Ra,{className:v?`animate-spin`:``}),`Refresh`]}),(0,K.jsxs)(H,{variant:c?`default`:`defaultOutline`,onClick:()=>l(e=>!e),"aria-label":`Reverse log order`,"aria-pressed":c,className:`flex-1`,children:[(0,K.jsx)(ir,{}),`Reverse`]})]}),(0,K.jsx)(KN,{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)(H,{variant:`defaultOutline`,onClick:D,disabled:v||_||o,className:`w-full`,children:[(0,K.jsx)(Ra,{}),`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)(yv,{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)(Ra,{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)(yv,{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)(ir,{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)(gP,{}):(0,K.jsx)(LN,{columns:mP,data:x,onRowClick:w,containerRef:S})}),(0,K.jsx)(UN,{isModalOpen:n,setIsModalOpen:r,data:i})]})}function vP(e){return I({getParentRoute:()=>e,path:`logs`,head:()=>({meta:[{title:`Logs — Harper Fabric`}]}),component:_P})}var yP=6e4,bP=60*yP,xP=24*bP,SP=[{id:`1h`,label:`Last 1 hour`,durationMs:bP,bucketMs:1*yP,expandedBucketMs:1*yP},{id:`6h`,label:`Last 6 hours`,durationMs:6*bP,bucketMs:2*yP,expandedBucketMs:1*yP},{id:`24h`,label:`Last 24 hours`,durationMs:xP,bucketMs:10*yP,expandedBucketMs:5*yP},{id:`7d`,label:`Last 7 days`,durationMs:7*xP,bucketMs:bP,expandedBucketMs:15*yP},{id:`30d`,label:`Last 30 days`,durationMs:30*xP,bucketMs:4*bP,expandedBucketMs:bP}];function CP(e){let t=SP.find(t=>t.id===e);if(!t)throw Error(`Unknown preset: ${e}`);return t}function wP(e){let t=(e,t)=>`${e} ${t}${e===1?``:`s`}`;return e>=bP&&e%bP===0?t(e/bP,`hour`):e>=yP&&e%yP===0?t(e/yP,`minute`):e>=1e3&&e%1e3==0?t(e/1e3,`second`):`${e} ms`}function TP(e,t){let n=e=>t?.expanded?e.expandedBucketMs:e.bucketMs,r=n(SP[0]);if(!Number.isFinite(e)||e<=0)return r;for(let t of SP)if(e<=t.durationMs*1.01)return n(t);let i=SP[SP.length-1];return Math.max(r,Math.ceil(e/(i.durationMs/n(i))))}var EP=[{label:`Off`,value:0},{label:`30s`,value:3e4},{label:`60s`,value:6e4},{label:`5m`,value:3e5}],DP=6e4,OP=[`health`,`traffic`,`requests`,`database`,`replication`,`storage`,`overview`],kP={tab:`health`,range:`1h`,refresh:DP};function AP(e){let t=e.refresh===``?NaN:Number(e.refresh);return{tab:OP.find(t=>t===e.tab)??kP.tab,range:SP.find(t=>t.id===e.range)?.id??kP.range,refresh:EP.find(e=>e.value===t)?.value??kP.refresh}}function jP(e){return I({getParentRoute:()=>e,path:`status`,validateSearch:AP,search:{middlewares:[Ee(kP)]},head:()=>({meta:[{title:`Status — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./status-BCWnn70o.js`),__vite__mapDeps([36,1,7,6,2,3,4,8,9,13,37,12,31,38,39,40,41,42,43,44,45,29,46])),`StatusIndex`)})}function MP(e){let t=DN(e),n=[vP(t),...qx(t,e),Kx(t),jP(t),kE(t),xN(t)];return t.addChildren(n)}I({getParentRoute:()=>il,path:`notifications`,head:()=>({meta:[{title:`Notifications — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./notifications--nwFLGmM.js`),__vite__mapDeps([47,1,6,7,2,3,8,9])),`NotificationsCenter`)}),I({getParentRoute:()=>il,path:`profile`,head:()=>({meta:[{title:`Profile — Harper Fabric`}]}),component:Fe(async()=>pe(()=>import(`./profile-AU5FjOBx.js`),__vite__mapDeps([48,1,23,7,6,24,4,2,3,25,26,8,9])),`ProfileIndex`)});var NP=rl.addChildren([...Ed,il.addChildren([MP(`local`)])]);function PP({routeTree:e=NP,authentication:t}){let[n]=(0,G.useState)(()=>Qe({routeTree:e,history:ye(),defaultNotFoundComponent:Uo,defaultErrorComponent:Ho,defaultPreload:!Wo()&&`intent`,trailingSlash:`never`,defaultPreloadStaleTime:0,scrollRestoration:!0,context:{queryClient:Jo,authentication:t||{}}}));return n}function FP(){let e=Fn(),t=PP({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)(Ne,{router:t,context:{authentication:e}}),(0,K.jsx)(We,{router:t,position:`bottom-right`})]})}var IP=({...e})=>(0,K.jsx)(Ct,{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}),LP=!1;function RP(){(0,G.useEffect)(()=>{LP||=!0},[])}function zP(){return pl(),tl(),RP(),(0,K.jsxs)(ks,{children:[(0,K.jsxs)(Ce,{client:Jo,children:[(0,K.jsx)(FP,{}),(0,K.jsx)(Xe,{buttonPosition:`bottom-right`})]}),(0,K.jsx)(IP,{richColors:!0})]})}function BP(){u.signOutAllLocally(),Jo.getMutationCache().clear(),Jo.getQueryCache().clear(),Ac(),jc()}function VP(e,t=()=>!1,n=()=>!0){return r=>(r?.response?.status===401&&!t(r.config?.url??``)&&n(r.config)&&e(),Promise.reject(r))}var HP=[`/Login/`,`/ForgotPassword/`,`/ResetPassword/`,`/VerifyEmail/`,`/ResendVerificationEmail/`],UP=`authUserAtSend`;function WP(){let e=u.getConnectionById(m).user;return e&&`id`in e?e.id:null}var GP=!1;function KP(){GP||(GP=!0,N.interceptors.request.use(e=>(e[UP]=WP(),e)),N.interceptors.response.use(e=>e,VP(BP,e=>HP.some(t=>e.startsWith(t)),e=>e?.[UP]===WP())))}function qP(){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 JP=`Studio:StaleDeployReloadedAt`,YP=6e4,XP=`__harperStaleDeployReloadState__`;function ZP(){if(typeof window<`u`)return window[XP]}function QP(){let e=ZP();if(e){try{let e=Number(sessionStorage.getItem(JP)??0);if(Date.now()-e<YP)return;sessionStorage.setItem(JP,String(Date.now()))}catch{return}e.reload()}}function $P(e=()=>window.location.reload()){if(typeof window>`u`)return;let t=window,n=t[XP];if(n){n.reload=e;return}t[XP]={reload:e},window.addEventListener(`vite:preloadError`,()=>QP())}var eF=ge();qP(),$P(),KP(),a(),u.installExplorerCrossTabCleanup(),(0,eF.createRoot)(document.getElementById(`root`),{onUncaughtError:(e,t)=>{me(e,t),console.error(`Uncaught error:`,e,t)},onCaughtError:(e,t)=>{me(e,t),console.error(`Caught error:`,e,t)},onRecoverableError:(e,t)=>{me(e,t),console.warn(`Recoverable error:`,e,t)}}).render((0,K.jsx)(G.StrictMode,{children:(0,K.jsx)(zP,{})}));export{gT as $,$s as $n,Gn as $r,kg as $t,kj as A,Al as An,Xa as Ar,Db as At,nk as B,q as Bn,Xi as Br,Q_ as Bt,Mj as C,Wd as Cn,Oo as Cr,SS as Ct,wj as D,$ as Dn,go as Dr,gx as Dt,Ej as E,ql as En,vo as Er,bx as Et,mj as F,ol as Fn,Ia as Fr,Dy as Ft,KD as G,mc as Gn,Pr as Gr,M_ as Gt,WO as H,Cc as Hn,Ii as Hr,O_ as Ht,HA as I,$c as In,Pa as Ir,Jv as It,gD as J,ic as Jn,vr as Jr,x_ as Jt,JD as K,pc as Kn,Ar as Kr,k_ as Kt,aA as L,Kc as Ln,Ma as Lr,yv as Lt,gj as M,Y as Mn,Ha as Mr,ky as Mt,dj as N,J as Nn,Ba as Nr,Oy as Nt,Aj as O,Q as On,no as Or,ix as Ot,hj as P,El as Pn,Ra as Pr,Ay as Pt,cE as Q,rc as Qn,Vn as Qr,Dg as Qt,ck as R,Mc as Rn,Oa as Rr,av as Rt,Cj as S,Gd as Sn,Mo as Sr,CS as St,Pj as T,Uu as Tn,So as Tr,Zx as Tt,OO as U,Tc as Un,ni as Ur,A_ as Ut,ek as V,Oc as Vn,Ri as Vr,B_ as Vt,qD as W,wc as Wn,Qr as Wr,P_ as Wt,tD as X,Xs as Xn,er as Xr,Lg as Xt,yD as Y,Zs as Yn,nr as Yr,qg as Yt,HE as Z,tc as Zn,qn as Zr,Cg as Zt,tM as _,tf as _n,qo as _r,BS as _t,wP as a,zn as ai,ym as an,ws as ar,Uw as at,jj as b,Ud as bn,Ho as br,NS as bt,XN as c,tm as cn,$o as cr,Yw as ct,PM as d,Np as dn,rs as dr,vC as dt,Wn as ei,Eg as en,Hs as er,dT as et,SM as f,of as fn,is as fr,gC as ft,iM as g,ef as gn,Xo as gr,iC as gt,aM as h,Qd as hn,os as hr,cC as ht,SP as i,Bn as ii,_m as in,Es as ir,Hw as it,Oj as j,X as jn,Ka as jr,jy as jt,Tj as k,Z as kn,Qa as kr,Fb as kt,zN as l,Tp as ln,Zo as lr,cw as lt,rM as m,Zd as mn,ss as mr,hC as mt,AP as n,Un as ni,Jm as nn,Ws as nr,$w as nt,CP as o,vm as on,gs as or,Xw as ot,gM as p,Yd as pn,as as pr,_C as pt,GD as q,ac as qn,Or as qr,j_ as qt,EP as r,Ln as ri,zm as rn,Fs as rr,zw as rt,TP as s,nm as sn,Yo as sr,Ww as st,QP as t,Hn as ti,Tg as tn,Us as tr,Qw as tt,RN as u,Pp as un,Qo as ur,rw as ut,$j as v,Xd as vn,Jo as vr,RS as vt,Nj as w,Kd as wn,Eo as wr,vS as wt,Sj as x,qd as xn,Io as xr,kS as xt,Qj as y,Id as yn,Go as yr,LS as yt,sk as z,Dc as zn,ea as zr,rv as zt};