@harperfast/harper-pro 5.0.22 → 5.0.24

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 (34) hide show
  1. package/core/DESIGN.md +2 -0
  2. package/core/bin/copyDb.ts +21 -2
  3. package/core/package-lock.json +82 -70
  4. package/core/resources/RecordEncoder.ts +21 -3
  5. package/core/resources/Table.ts +18 -6
  6. package/core/resources/blob.ts +18 -4
  7. package/core/resources/databases.ts +18 -0
  8. package/core/utility/logging/logRotator.js +3 -4
  9. package/dist/core/bin/copyDb.js +22 -1
  10. package/dist/core/bin/copyDb.js.map +1 -1
  11. package/dist/core/resources/RecordEncoder.js +14 -2
  12. package/dist/core/resources/RecordEncoder.js.map +1 -1
  13. package/dist/core/resources/Table.js +19 -6
  14. package/dist/core/resources/Table.js.map +1 -1
  15. package/dist/core/resources/blob.js +19 -4
  16. package/dist/core/resources/blob.js.map +1 -1
  17. package/dist/core/resources/databases.js +20 -0
  18. package/dist/core/resources/databases.js.map +1 -1
  19. package/dist/core/utility/logging/logRotator.js +3 -3
  20. package/dist/core/utility/logging/logRotator.js.map +1 -1
  21. package/npm-shrinkwrap.json +82 -70
  22. package/package.json +3 -3
  23. package/studio/web/assets/{index-CKW3SZJG.js → index-C5Er24-c.js} +16 -16
  24. package/studio/web/assets/index-C5Er24-c.js.map +1 -0
  25. package/studio/web/assets/index-j0M5ZXh5.css +1 -0
  26. package/studio/web/assets/{index.lazy-D9dMKjQH.js → index.lazy-C5LLrJkX.js} +2 -2
  27. package/studio/web/assets/{index.lazy-D9dMKjQH.js.map → index.lazy-C5LLrJkX.js.map} +1 -1
  28. package/studio/web/assets/{profile-DAsdweRg.js → profile-DdGCk1RA.js} +2 -2
  29. package/studio/web/assets/{profile-DAsdweRg.js.map → profile-DdGCk1RA.js.map} +1 -1
  30. package/studio/web/assets/{status-KVqwJsbk.js → status-t7ZjUhlN.js} +2 -2
  31. package/studio/web/assets/{status-KVqwJsbk.js.map → status-t7ZjUhlN.js.map} +1 -1
  32. package/studio/web/index.html +2 -2
  33. package/studio/web/assets/index-BGocx0nU.css +0 -1
  34. package/studio/web/assets/index-CKW3SZJG.js.map +0 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.lazy-D9dMKjQH.js","assets/rolldown-runtime-Cyuzqnbw.js","assets/vendor-datadog-xl5t1ffd.js","assets/vendor-react-C3fPIb_V.js","assets/vendor-core-8FI3Cbaa.js","assets/vendor-misc-Bj3r0doz.js","assets/vendor-markdown-QRBWuGNe.js","assets/vendor-html-CubNlVgM.js","assets/vendor-monaco-DXu1dQeO.js","assets/vendor-charts-BCMLE3XK.js","assets/vendor-react-CrIa5r46.css","assets/button-b8IkGZ_9.js","assets/index-bNiPLS8i.css","assets/vendor-viz-morXXTZA.js","assets/status-KVqwJsbk.js","assets/profile-DAsdweRg.js"])))=>i.map(i=>d[i]);
2
- import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{_ as t,a as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _,v,y}from"./button-b8IkGZ_9.js";import{At as b,Bt as x,Dt as S,Et as C,Mt as ee,Nt as w,Ot as te,Pt as ne,St as T,Tt as E,bt as re,jt as D,kt as ie,wt as ae,xt as O,yt as oe,zt as se}from"./vendor-core-8FI3Cbaa.js";import{$i as ce,$n as le,$r as ue,$t as de,Aa as fe,Ai as pe,An as me,Ar as he,Ba as ge,Bn as _e,Br as ve,Bt as ye,Ca as k,Ci as be,Cn as xe,Cr as Se,Da as Ce,Di as we,Dn as Te,Dr as Ee,Ea as De,Ei as Oe,En as ke,Er as Ae,Fa as je,Fi as Me,Fn as Ne,Fr as Pe,Gi as Fe,Gn as Ie,Gr as Le,Gt as Re,Hi as ze,Hn as Be,Hr as Ve,Ht as He,Ia as A,Ii as Ue,In as We,Ir as Ge,Ji as Ke,Jn as qe,Jr as Je,Jt as Ye,Ki as Xe,Kn as j,Kr as Ze,Kt as Qe,La as $e,Li as et,Ln as tt,Lr as nt,Ma as rt,Mi as it,Mn as at,Mt as ot,Na as M,Ni as st,Nn as ct,Nr as lt,Nt as ut,Oa as N,Oi as dt,On as ft,Or as pt,Pa as P,Pi as mt,Pn as ht,Pr as gt,Pt as _t,Qi as vt,Qn as yt,Qt as bt,Ra as xt,Ri as St,Rn as Ct,Rr as wt,Rt as Tt,Sa as F,Si as Et,Sn as Dt,Sr as Ot,Ta as kt,Ti as At,Tn as jt,Tr as Mt,Un as Nt,Ur as Pt,Ut as Ft,Vi as It,Vn as Lt,Vr as Rt,Vt as zt,Wi as Bt,Wn as Vt,Wr as Ht,Wt as Ut,Xn as Wt,Xt as Gt,Yi as Kt,Yn as qt,Yr as Jt,Yt,Zn as I,Zr as Xt,Zt,_a as Qt,_i as $t,_n as en,aa as tn,ai as nn,an as rn,ar as an,bi as on,bn as sn,br as cn,ca as ln,ci as un,cn as dn,cr as fn,da as pn,di as mn,dn as hn,dr as gn,ea as _n,en as vn,er as yn,fa as bn,fn as xn,fr as Sn,ga as Cn,gi as wn,gn as Tn,gr as En,ha as Dn,hi as On,hn as kn,hr as An,ii as jn,in as Mn,ir as Nn,ja as Pn,ji as Fn,jn as In,jr as Ln,jt as Rn,ka as zn,ki as Bn,kn as Vn,kr as Hn,la as Un,li as Wn,ln as Gn,lr as Kn,ma as qn,mi as Jn,mn as Yn,mr as L,ni as Xn,nn as Zn,nr as Qn,oa as $n,oi as er,on as tr,or as nr,pa as rr,pi as ir,pn as ar,pr as or,qi as sr,qn as cr,qr as lr,qt as ur,ra as dr,ri as fr,rn as pr,rr as mr,sa as hr,si as gr,sn as _r,sr as vr,ti as yr,tn as br,tr as xr,ua as Sr,ui as Cr,un as wr,ur as Tr,va as Er,vi as Dr,vn as Or,vr as kr,wa as Ar,wn as jr,wr as Mr,xa as Nr,xi as Pr,xn as Fr,xr as Ir,ya as Lr,yi as Rr,yn as zr,yr as Br,za as Vr,zi as Hr,zn as Ur,zr as Wr,zt as Gr}from"./vendor-react-C3fPIb_V.js";import{n as Kr,r as qr,t as Jr}from"./vendor-tanstack-CuwPGbD7.js";import{n as Yr,t as Xr}from"./vendor-datadog-xl5t1ffd.js";import{Br as Zr,Fr as Qr,Gr as $r,Hr as ei,Ir as ti,Jr as ni,Kr as ri,Lr as ii,Mr as ai,Nr as oi,Pr as si,Ur as ci,Vr as li,Wr as ui,Xr as di,Yr as fi,qr as pi,zr as mi}from"./vendor-misc-Bj3r0doz.js";import"./vendor-stripe-5RM5oC9f.js";import{t as hi}from"./vendor-markdown-QRBWuGNe.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),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var R=e(ge(),1);function gi(){let[e,t]=(0,R.useState)(c.getAllConnections());return(0,R.useEffect)(()=>c.listenToAllEntities((n,r)=>{t({...e,[r]:n})}),[e]),e}function _i(){let e=c.calculateIdFromEntity(m),[t,n]=(0,R.useState)(c.getConnectionById(m));return(0,R.useEffect)(()=>c.listenToEntity(e,n),[e]),t}function vi(){return _i()}function yi(){let{user:e}=vi();return e?.fabricRole===`fabric_admin`||e?.fabricRole===`super_user`}function bi(e){let t=m,{clusterId:n,instanceId:r}=N({strict:!1}),[i,a]=(0,R.useState)(c.getConnectionById(t??r??n));return(0,R.useEffect)(()=>c.listenToEntity(t,a),[t]),i}var z=Vr();function xi({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card`,className:d(`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 Si({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card-header`,className:d(`flex flex-col gap-1.5 px-6`,e),...t})}function Ci({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card-title`,className:d(`leading-none text-lg`,e),...t})}function wi({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card-description`,className:d(`text-muted-foreground text-xs`,e),...t})}function Ti({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card-content`,className:d(`px-6`,e),...t})}function Ei(e){return e!==null&&!!e.username}function Di(e){if(e&&!Ei(e)){let t=Object.keys(e.roles);if(t.length===1)return`/${t[0]}`}return`/`}function Oi({className:e,error:t,title:n,showReturnToHome:r,children:i}){let{user:a,isLoading:o}=_i();return Di(a),(0,z.jsxs)(xi,{className:d(`text-red p-5 border border-red rounded-md m-12 mt-36`,e),children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{className:`text-2xl`,children:(0,z.jsx)(`h2`,{children:n??`Component Error`})}),(0,z.jsx)(wi,{children:t.message})]}),(0,z.jsxs)(Ti,{children:[i,r!==!1&&(a&&!o?(0,z.jsx)(k,{to:`/`,children:(0,z.jsxs)(g,{children:[` `,(0,z.jsx)(Sr,{}),` Return to Home`]})}):(0,z.jsx)(k,{to:`/sign-in`,children:(0,z.jsxs)(g,{children:[` `,(0,z.jsx)(Sr,{}),` Go to Sign In Page`]})}))]})]})}function ki(){let{user:e,isLoading:t}=_i();return Di(e),(0,z.jsx)(`div`,{className:`flex items-center justify-center h-screen px-3`,children:(0,z.jsxs)(xi,{className:`text-red p-5 border border-red rounded-md w-full max-w-md`,children:[(0,z.jsx)(Si,{children:(0,z.jsx)(Ci,{className:`text-2xl`,children:(0,z.jsx)(`h2`,{children:`Sorry, Page Not Found`})})}),(0,z.jsx)(Ti,{children:e&&!t?(0,z.jsx)(k,{to:`/`,children:(0,z.jsxs)(g,{children:[` `,(0,z.jsx)(Sr,{}),` Return to Home`]})}):(0,z.jsx)(k,{to:`/sign-in`,children:(0,z.jsxs)(g,{children:[` `,(0,z.jsx)(Sr,{}),` Go Sign In Page`]})})})]})})}function Ai(){return`ontouchstart`in window||navigator.maxTouchPoints>0}function ji(e){let t=`Error`,n=`We had some trouble!`;console.error(e);let r=e,i=e;if(typeof e==`string`?n=e:r?.response?.data?typeof r.response.data==`string`?n=r.response.data:r.response.data.error?n=r.response.data.error:r.response.data.message&&(n=r.response.data.message):i?.message&&(n=i.message),n.includes(`:`)){let e=n.split(`:`);t=e.shift(),n=e.join(`:`)}let a=r?.code===`ECONNABORTED`||r?.code===`ETIMEDOUT`;L.error(t,{id:a?`request-timeout`:void 0,description:n,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}var Mi=new Jr({queryCache:new Kr({onError:ji}),mutationCache:new qr({onError:ji})});function Ni(e){return!!e}var Pi=!1,Fi=!1;function Ii(){(0,R.useEffect)(()=>{Pi||(Pi=!0,Fi&&(Xr.init({applicationId:`f590deee-4bac-49b4-a202-3b6963d9721d`,clientToken:`pub27aa29cea521492f4fef73032f86a023`,site:`datadoghq.com`,service:`studio`,env:void 0,version:`v5.0.22`,trackViewsManually:!0,trackUserInteractions:!0,sessionSampleRate:100,sessionReplaySampleRate:0,defaultPrivacyLevel:`mask`,plugins:[Sn()]}),Xr.onReady(()=>{Xr.startView({service:`studio`,version:`v5.0.22`,name:window.location.pathname||`initial`})})))},[])}function Li(e){if(!Fi)return;Xr.setUser({id:e.id,email:e.email,name:[e.firstname,e.lastname].filter(Boolean).join(` `)||void 0});let t=`hasLoggedInBefore:${e.id}`;localStorage.getItem(t)?Xr.addAction(`return_login`):(Xr.addAction(`first_time_login`),localStorage.setItem(t,`true`));let n=`lastLoginTimestamp:${e.id}`,r=localStorage.getItem(n),i=Date.now();if(r){let e=Math.floor((i-Number(r))/1e3);!Number.isNaN(e)&&e>=0&&Xr.addAction(`login_time_gap`,{value:e})}localStorage.setItem(n,String(i)),Xr.addAction(`login_success`,{userId:e.id})}function Ri(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(qn,{}),(0,z.jsx)(Er,{})]})}var zi=Nr()({component:Ri});function Bi(){return(0,z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 126.644 96`,width:24,height:24,children:(0,z.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 Vi(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`img`,{src:`/harper-studio_white.png`,alt:`Harper Studio`,className:`w-64 hidden md:inline-block`}),(0,z.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`50px`,height:`44px`,alt:`Harper`,className:`inline-block md:hidden`})]})}function Hi(e){try{return e===`null`||e===`undefined`||e==null?null:JSON.parse(e)}catch(e){return console.error(`safeParse failed to parse value, returning null instead`,e),null}}function Ui(e,t){return Hi(localStorage.getItem(e))??t}function Wi(e,t){t==null?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(t))}function Gi(e,t){let n=(0,R.useState)(Ui(e,t)),[r]=n;return(0,R.useEffect)(()=>Wi(e,r),[e,r]),n}function Ki(){let[e,t]=(0,R.useState)(()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);return(0,R.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 qi=function(e){return e.ApplicationChatPosition=`ApplicationChatPosition`,e.ApplicationChatWidth=`ApplicationChatWidth`,e.ChatAlwaysApprovedTools=`ChatAlwaysApprovedTools`,e.SavedClusterState=`SavedClusterState`,e.Theme=`Theme`,e}({}),Ji=(0,R.createContext)([`system`,()=>{}]);function Yi({children:e}){let[t,n]=Gi(qi.Theme,`system`),r=Ki();return(0,R.useEffect)(()=>{let e=t===`dark`||t===`system`&&r===`dark`;document.documentElement.classList.toggle(`dark`,e)},[t,r]),(0,z.jsx)(Ji.Provider,{value:[t,n],children:e})}function Xi(){return(0,R.useContext)(Ji)}var Zi=[{value:`light`,icon:(0,z.jsx)(Mt,{className:`size-4`}),label:`Light`},{value:`system`,icon:(0,z.jsx)(Jt,{className:`size-4`}),label:`System`},{value:`dark`,icon:(0,z.jsx)(Je,{className:`size-4`}),label:`Dark`}];function Qi(){let[e,t]=Xi();return(0,z.jsx)(`div`,{className:`flex items-center bg-muted dark:bg-black rounded-xl p-0.5 gap-0.5`,children:Zi.map(({value:n,icon:r,label:i})=>(0,z.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 $i({className:e,...t}){return(0,z.jsx)(`div`,{className:d(`absolute top-full left-0 isolate z-50 flex justify-center`),children:(0,z.jsx)(Tr,{"data-slot":`navigation-menu-viewport`,className:d(`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 ea({className:e,children:t,viewport:n=!0,...r}){return(0,z.jsxs)(Kn,{"data-slot":`navigation-menu`,"data-viewport":n,className:d(`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,e),...r,children:[t,n&&(0,z.jsx)($i,{})]})}function ta({className:e,...t}){return(0,z.jsx)(nr,{"data-slot":`navigation-menu-item`,className:d(`relative`,e),...t})}function na({className:e,...t}){return(0,z.jsx)(vr,{"data-slot":`navigation-menu-link`,className:d(`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 ra({className:e,...t}){return(0,z.jsx)(fn,{"data-slot":`navigation-menu-list`,className:d(`group flex flex-1 list-none items-center justify-center gap-1`,e),...t})}var ia=se(`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 aa(){let e=`v5.0.22`;return(0,z.jsx)(`a`,{href:e.startsWith(`v`)?`https://github.com/HarperFast/studio/releases/tag/${e}`:`https://github.com/HarperFast/studio/releases`,target:`_blank`,rel:`noopener noreferrer`,children:(0,z.jsxs)(`span`,{className:d(ia({variant:`default`}),`text-xs inline-block ml-2 align-text-top`),children:[e,` BETA`]})})}function oa(e={}){let{instanceId:t,clusterId:n}=N({strict:!1});return a({id:m,...e})}function sa(e={}){let{instanceId:t,clusterId:n}=N({strict:!1});return{instanceClient:a({id:m,...e}),entityType:`instance`}}function B(e={}){let{instanceId:t,clusterId:n}=N({strict:!1});return(0,R.useMemo)(()=>ca({instanceId:t,clusterId:n,...e}),[e.instanceId??t,e.clusterId??n,e.operationsUrl,e.port,e.secure,e.disableFabricConnect,e.forceFabricConnect])}function ca({instanceId:e,clusterId:t,...n}){let r=m;if(!r)throw Error(`id could not be automatically calculated in useInstanceClientIdParams`);return{instanceClient:a({id:r,...n}),entityId:r,entityType:`instance`}}function la(){localStorage.clear()}function ua(){sessionStorage.clear()}async function da(){c.setUserForEntity(m,null),Mi.getQueryCache().clear(),la(),ua(),await Mi.invalidateQueries({refetchType:`none`})}async function fa(e){await c.signOutFromPotentiallyAuthenticatedInstances(),await r({...e,entityId:m})}function pa(){let e=oa();return M({mutationFn:()=>fa({instanceClient:e}),onSuccess:da})}function ma(e){let{user:t}=vi(),{organizationId:n}=N({strict:!1}),r=t?.roles?.[e??n];return!r?.permission&&!r?.organization?{update:!1,remove:!1}:r.permission?.super_user?{update:!0,remove:!0}:{update:r.organization.update,remove:r.organization.delete}}function ha(e){let{user:t}=vi(),{organizationId:n}=N({strict:!1}),r=t?.roles?.[e??n];if(!r?.permission&&!r?.organization?.roles)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.roles;return{create:i.create,remove:i.delete,update:i.update,view:i.view}}function ga(e,t){let{user:n}=vi(),{organizationId:r,clusterId:i}=N({strict:!1});return _a(n,e??r,t??i)}function _a(e,t,n){let r=e?.roles?.[t];if(!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 va(e,t){let{user:n}=vi(),{organizationId:r,clusterId:i}=N({strict:!1});return ya(n,e??r,t??i)}function ya(e,t,n){let r=e?.roles?.[t];if(!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 ba(e){let{clusterId:t,instanceId:n}=N({strict:!1}),{user:r}=bi(e??n??t),i=r?.role?.permission;return i?i.super_user===!0:!1}function xa(e){let{clusterId:t,instanceId:n}=N({strict:!1}),{user:r}=bi(e??n??t),i=r?.role?.permission;return i?i.super_user===!0||i.structure_user===!0:!1}function Sa(e,t,n,r){let{clusterId:i,instanceId:a}=N({strict:!1}),{user:o}=bi(e??a??i),s=o?.role?.permission;return s?s.super_user===!0||s.structure_user===!0?!0:s[t]?.tables?.[n][r]===!0:!1}var Ca={className:`text-foreground dark:text-white font-semibold`};function wa(){let{mutate:e}=pa(),t=De(),{user:n}=_i(),r=fe(),{organizationId:i}=N({strict:!1}),{update:a}=ma(i),{view:o}=ha(i),s=a,c=(0,R.useCallback)(()=>{e(void 0,{onSuccess:async()=>{L.success(`Success`,{description:`You have been signed out successfully.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),t({to:`/sign-in`}),r.invalidate()}})},[e,r,t]),l=(0,R.useMemo)(()=>[!1,!1,!1,{to:`https://docs.harperdb.io/docs`,target:`_blank`,icon:(0,z.jsx)(dr,{}),text:`Docs`,textBreakpoint:`md`},{to:`https://github.com/HarperFast/studio/issues`,target:`_blank`,icon:(0,z.jsx)(vt,{}),text:`Report an Issue`,textBreakpoint:`lg`},{to:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,icon:(0,z.jsx)(Bi,{}),text:`Discord`,textBreakpoint:`lg`},{onClick:c,icon:(0,z.jsx)(yr,{}),text:`Sign Out`,textBreakpoint:`md`}].filter(Ni),[i,s,o,c]);return n?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(ka,{menuItems:l}),(0,z.jsx)(Da,{menuItems:l})]}):(0,z.jsx)(Ea,{})}function Ta(e){return e.items!==void 0}function Ea(){return(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`inline-block`,children:[(0,z.jsx)(k,{to:`/sign-in`,children:(0,z.jsx)(Vi,{})}),(0,z.jsx)(aa,{})]}),(0,z.jsx)(ea,{children:(0,z.jsxs)(ra,{className:`text-muted-foreground dark:text-grey-400`,children:[(0,z.jsx)(ta,{children:(0,z.jsx)(na,{asChild:!0,children:(0,z.jsxs)(k,{to:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noreferrer noopener`,className:`flex-row items-center`,children:[(0,z.jsx)(dr,{}),` `,(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Docs`})]})})}),(0,z.jsx)(ta,{children:(0,z.jsx)(Qi,{})}),(0,z.jsx)(ta,{children:(0,z.jsx)(na,{asChild:!0,children:(0,z.jsxs)(k,{to:`/sign-in`,className:`flex-row items-center`,activeProps:Ca,children:[(0,z.jsx)(Xn,{}),` Sign In`]})})})]})})]})}function Da({menuItems:e}){let{user:t}=_i();return Di(t),(0,z.jsx)(`div`,{className:`hidden md:block`,children:(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`inline-block`,children:[(0,z.jsx)(k,{to:`/`,children:(0,z.jsx)(Vi,{})}),(0,z.jsx)(aa,{})]}),(0,z.jsx)(ea,{children:(0,z.jsxs)(ra,{className:`text-muted-foreground dark:text-grey-400`,children:[e.map(e=>Ta(e)?!!e.items.length&&(0,z.jsx)(`div`,{className:`bg-muted dark:bg-black rounded-2xl flex`,children:e.items.map(e=>(0,z.jsx)(Oa,{menuItem:e},e.text))},e.text):(0,z.jsx)(Oa,{menuItem:e},e.text)),(0,z.jsx)(ta,{children:(0,z.jsx)(Qi,{})})]})})]})})}function Oa({menuItem:e}){return(0,z.jsx)(ta,{className:`text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,children:(0,z.jsx)(na,{asChild:!0,children:(0,z.jsxs)(k,{to:e.to,onClick:e.onClick,className:`flex-row items-center`,target:e.target,activeProps:e.to?Ca:void 0,children:[e.icon,(0,z.jsx)(`span`,{className:`hidden ${e.textBreakpoint}:inline-block`,children:e.text}),(0,z.jsx)(`span`,{className:`${e.textBreakpoint}:hidden`,children:`\xA0`})]})})})}function ka({menuItems:e}){let{user:t}=_i();Di(t);let[n,r]=(0,R.useState)(!1),i=(0,R.useCallback)(()=>r(e=>!e),[]),a=(0,R.useCallback)(()=>r(!1),[]);return(0,z.jsxs)(`div`,{className:`md:hidden`,id:`mobile-menu`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsx)(k,{to:`/`,children:(0,z.jsx)(Vi,{})}),(0,z.jsx)(aa,{}),(0,z.jsxs)(`button`,{type:`button`,className:`shadow-xs text-muted-foreground dark:text-grey-400 hover:text-foreground dark:hover:text-white hover:bg-muted dark:hover:bg-black-dark`,onClick:i,children:[(0,z.jsx)(`span`,{className:`sr-only`,children:n?`Close menu`:`Open menu`}),n?(0,z.jsx)(An,{}):(0,z.jsx)(Xt,{})]})]}),(0,z.jsx)(`div`,{className:`${n?`fixed`:`hidden`} top-40 bottom-0 left-0 right-0 bg-foreground/20 dark:bg-black-dark dark:opacity-70`,onClick:a}),(0,z.jsxs)(`div`,{className:`${n?`block`:`hidden`} md:hidden z-50 space-y-1 pb-3 bg-card border-b border-border dark:bg-black-dark dark:border-none absolute left-0 top-full w-full rounded-b-md`,children:[(0,z.jsx)(`div`,{className:`flex justify-end px-3 pt-2`,children:(0,z.jsx)(Qi,{})}),e.map(e=>Ta(e)?!!e.items.length&&(0,z.jsx)(`div`,{className:`bg-muted dark:bg-black pl-10 pr-2 py-2`,children:e.items.map(e=>(0,z.jsx)(Aa,{menuItem:e,onClick:a},e.text))},e.text):(0,z.jsx)(Aa,{menuItem:e,onClick:a},e.text))]})]})}function Aa({menuItem:e,onClick:t}){let n=(0,R.useCallback)(()=>{e.onClick?.(),t()},[e,t]);return(0,z.jsxs)(k,{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?Ca:void 0,children:[e.icon,(0,z.jsx)(`span`,{className:`ml-4`,children:e.text})]})}function ja(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,z.jsx)(wa,{})}),(0,z.jsxs)(`div`,{className:`pt-20 h-screen grid grid-cols-1 md:grid-cols-2`,children:[(0,z.jsx)(`section`,{"aria-label":`Harper Fabric overview`,className:`items-center justify-center hidden text-white md:flex px-6 fabricSignupTextContainer`,children:(0,z.jsx)(`img`,{className:`object-scale-down max-h-[calc(100vh-80px-40px)] min-h-115`,src:`/fabric-signup-text.png`,alt:`One Runtime: App, database, Cache and Messaging. Distributed by design, free to deploy, and live in minutes. Deploy!`})}),(0,z.jsx)(`main`,{className:`overflow-y-auto px-6 bg-white dark:bg-linear-(--black-dark-gradient) border-l border-border dark:border-none`,children:(0,z.jsx)(`div`,{className:`min-h-full flex items-start justify-center py-12`,children:(0,z.jsx)(Er,{})})})]})]})}var Ma;function Na(){(0,R.useEffect)(()=>{},[])}var Pa=[`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 Fa(e){if(!e||!e.includes(`@`))return null;let t=e.split(`@`).pop()||``;if(!t)return null;for(let e of Pa)if(t===e||t.endsWith(`.`+e))return null;return t}var Ia=null;function La(){let e=De(),t=fe(),n=xt(),{redirect:r}=Ce({strict:!1});return(0,R.useEffect)(()=>{Ia||=(async function(){let i=await _().catch(()=>null);if(!i)L.error(`We were not able to verify your sign-in. Please try signing in again.`,{duration:1e4}),await e({to:`/sign-in`});else{c.setUserForEntity(m,i);let a=Di(i);Li(i);let o=Fa(i.email);Ma?.identify?.({username:i.email,type:`email`,...o?{company:o}:{}}),await n.invalidateQueries({queryKey:l,refetchType:`none`}),await t.invalidate(),await e({to:r?.startsWith(`/`)?r:a})}Ia=null})()},[]),(0,z.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`text-foreground dark:text-white w-lg flex flex-col gap-4`,children:[(0,z.jsxs)(`h1`,{className:`text-3xl font-light`,children:[(0,z.jsx)(`span`,{"aria-hidden":`true`,className:`text-2xl animate-flower-dance mr-4`,title:`Loading`,children:`🌼`}),`Checking...`]}),(0,z.jsx)(`div`,{className:`underline flex gap-4`,children:(0,z.jsx)(k,{className:`text-sm opacity-50 text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-in`,children:`Try signing in again`})})]})}function Ra({delayDuration:e=0,...t}){return(0,z.jsx)(mr,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function za({...e}){return(0,z.jsx)(Ra,{children:(0,z.jsx)(Nn,{"data-slot":`tooltip`,...e})})}function Ba({...e}){return(0,z.jsx)(an,{"data-slot":`tooltip-trigger`,...e})}function Va({className:e,sideOffset:t=0,arrowClassName:n,children:r,...i}){return(0,z.jsx)(Qn,{children:(0,z.jsxs)(xr,{"data-slot":`tooltip-content`,sideOffset:t,className:d(`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,z.jsx)(yn,{className:d(`bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`,n)})]})})}var Ha=new Map;function Ua(e){if(!e)return``;if(Ha.has(e))return Ha.get(e);let t=e.replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim();if(!t)return Ha.set(e,``),``;let n=t.match(/([A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+|[0-9]+)/g);if(!n)return Ha.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(Wa).join(` `);return Ha.set(e,i),i}function Wa(e){return/^[A-Z]{2,3}s?$/.test(e)||/^[0-9]+$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function Ga({restartRequired:e}){let t=Dn(),{organization:n,instance:r,cluster:i}=Ar({strict:!1});return(0,z.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:[...(0,R.useMemo)(()=>{let e=t.pathname.split(`/`).filter(e=>e&&e.length>0),a=[(0,z.jsxs)(k,{to:`/`,children:[(0,z.jsx)(Wn,{"aria-hidden":`true`,className:`size-5 shrink-0`}),(0,z.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=Ua(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,z.jsx)(`svg`,{fill:`currentColor`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`size-5 shrink-0 text-grey`,children:(0,z.jsx)(`path`,{d:`M5.555 17.776l8-16 .894.448-8 16-.894-.448z`})},a.length+`-dash`),(0,z.jsx)(k,{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]),e&&(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(`div`,{className:`text-xs italic text-muted-foreground`,children:[`* Restart `,(0,z.jsx)(`span`,{className:`hidden lg:inline-block`,children:`Requested`})]})}),(0,z.jsxs)(Va,{side:`bottom`,children:[`This `,`Instance`,` is requesting a restart, when convenient, to apply your latest changes.`,(0,z.jsx)(`br`,{}),`You can do this from the Apps or Config pages.`]})]})]})}var V=qt,Ka=(0,R.createContext)({}),qa=(0,R.createContext)({});function Ja(){let e=(0,R.useContext)(Ka),t=(0,R.useContext)(qa),{getFieldState:n}=yt(),r=le({name:e.name}),i=n(e.name,r);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}}function H({...e}){let{error:t,formItemId:n,formDescriptionId:r,formMessageId:i}=Ja();return(0,z.jsx)(rr,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${r} ${i}`:`${r}`,"aria-invalid":!!t,...e})}function U({...e}){return(0,z.jsx)(Ka,{value:{name:e.name},children:(0,z.jsx)(qe,{...e})})}function W({className:e,...t}){return(0,z.jsx)(qa,{value:{id:(0,R.useId)()},children:(0,z.jsx)(`div`,{"data-slot":`form-item`,className:d(`grid gap-2`,e),...t})})}function Ya({className:e,...t}){return(0,z.jsx)(cr,{"data-slot":`label`,className:d(`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 G({className:e,...t}){let{error:n,formItemId:r}=Ja();return(0,z.jsx)(Ya,{"data-slot":`form-label`,"data-error":!!n,className:d(`data-[error=true]:text-destructive`,e),htmlFor:r,...t})}function K({className:e,...t}){let{error:n,formMessageId:r}=Ja(),i=n?String(n?.message):t.children;return i?(0,z.jsx)(`p`,{"data-slot":`form-message`,id:r,className:d(`text-destructive text-sm`,e),...t,children:i}):null}function q({className:e,type:t,...n}){return(0,z.jsx)(`input`,{type:t,"data-slot":`input`,className:d(`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/index.lazy-C5LLrJkX.js","assets/rolldown-runtime-Cyuzqnbw.js","assets/vendor-datadog-xl5t1ffd.js","assets/vendor-react-C3fPIb_V.js","assets/vendor-core-8FI3Cbaa.js","assets/vendor-misc-Bj3r0doz.js","assets/vendor-markdown-QRBWuGNe.js","assets/vendor-html-CubNlVgM.js","assets/vendor-monaco-DXu1dQeO.js","assets/vendor-charts-BCMLE3XK.js","assets/vendor-react-CrIa5r46.css","assets/button-b8IkGZ_9.js","assets/index-bNiPLS8i.css","assets/vendor-viz-morXXTZA.js","assets/status-t7ZjUhlN.js","assets/profile-DdGCk1RA.js"])))=>i.map(i=>d[i]);
2
+ import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{_ as t,a as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _,v,y}from"./button-b8IkGZ_9.js";import{At as b,Bt as x,Dt as S,Et as C,Mt as ee,Nt as w,Ot as te,Pt as ne,St as T,Tt as E,bt as re,jt as D,kt as ie,wt as ae,xt as O,yt as oe,zt as se}from"./vendor-core-8FI3Cbaa.js";import{$i as ce,$n as le,$r as ue,$t as de,Aa as fe,Ai as pe,An as me,Ar as he,Ba as ge,Bn as _e,Br as ve,Bt as ye,Ca as k,Ci as be,Cn as xe,Cr as Se,Da as Ce,Di as we,Dn as Te,Dr as Ee,Ea as De,Ei as Oe,En as ke,Er as Ae,Fa as je,Fi as Me,Fn as Ne,Fr as Pe,Gi as Fe,Gn as Ie,Gr as Le,Gt as Re,Hi as ze,Hn as Be,Hr as Ve,Ht as He,Ia as A,Ii as Ue,In as We,Ir as Ge,Ji as Ke,Jn as qe,Jr as Je,Jt as Ye,Ki as Xe,Kn as j,Kr as Ze,Kt as Qe,La as $e,Li as et,Ln as tt,Lr as nt,Ma as rt,Mi as it,Mn as at,Mt as ot,Na as M,Ni as st,Nn as ct,Nr as lt,Nt as ut,Oa as N,Oi as dt,On as ft,Or as pt,Pa as P,Pi as mt,Pn as ht,Pr as gt,Pt as _t,Qi as vt,Qn as yt,Qt as bt,Ra as xt,Ri as St,Rn as Ct,Rr as wt,Rt as Tt,Sa as F,Si as Et,Sn as Dt,Sr as Ot,Ta as kt,Ti as At,Tn as jt,Tr as Mt,Un as Nt,Ur as Pt,Ut as Ft,Vi as It,Vn as Lt,Vr as Rt,Vt as zt,Wi as Bt,Wn as Vt,Wr as Ht,Wt as Ut,Xn as Wt,Xt as Gt,Yi as Kt,Yn as qt,Yr as Jt,Yt,Zn as I,Zr as Xt,Zt,_a as Qt,_i as $t,_n as en,aa as tn,ai as nn,an as rn,ar as an,bi as on,bn as sn,br as cn,ca as ln,ci as un,cn as dn,cr as fn,da as pn,di as mn,dn as hn,dr as gn,ea as _n,en as vn,er as yn,fa as bn,fn as xn,fr as Sn,ga as Cn,gi as wn,gn as Tn,gr as En,ha as Dn,hi as On,hn as kn,hr as An,ii as jn,in as Mn,ir as Nn,ja as Pn,ji as Fn,jn as In,jr as Ln,jt as Rn,ka as zn,ki as Bn,kn as Vn,kr as Hn,la as Un,li as Wn,ln as Gn,lr as Kn,ma as qn,mi as Jn,mn as Yn,mr as L,ni as Xn,nn as Zn,nr as Qn,oa as $n,oi as er,on as tr,or as nr,pa as rr,pi as ir,pn as ar,pr as or,qi as sr,qn as cr,qr as lr,qt as ur,ra as dr,ri as fr,rn as pr,rr as mr,sa as hr,si as gr,sn as _r,sr as vr,ti as yr,tn as br,tr as xr,ua as Sr,ui as Cr,un as wr,ur as Tr,va as Er,vi as Dr,vn as Or,vr as kr,wa as Ar,wn as jr,wr as Mr,xa as Nr,xi as Pr,xn as Fr,xr as Ir,ya as Lr,yi as Rr,yn as zr,yr as Br,za as Vr,zi as Hr,zn as Ur,zr as Wr,zt as Gr}from"./vendor-react-C3fPIb_V.js";import{n as Kr,r as qr,t as Jr}from"./vendor-tanstack-CuwPGbD7.js";import{n as Yr,t as Xr}from"./vendor-datadog-xl5t1ffd.js";import{Br as Zr,Fr as Qr,Gr as $r,Hr as ei,Ir as ti,Jr as ni,Kr as ri,Lr as ii,Mr as ai,Nr as oi,Pr as si,Ur as ci,Vr as li,Wr as ui,Xr as di,Yr as fi,qr as pi,zr as mi}from"./vendor-misc-Bj3r0doz.js";import"./vendor-stripe-5RM5oC9f.js";import{t as hi}from"./vendor-markdown-QRBWuGNe.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),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var R=e(ge(),1);function gi(){let[e,t]=(0,R.useState)(c.getAllConnections());return(0,R.useEffect)(()=>c.listenToAllEntities((n,r)=>{t({...e,[r]:n})}),[e]),e}function _i(){let e=c.calculateIdFromEntity(m),[t,n]=(0,R.useState)(c.getConnectionById(m));return(0,R.useEffect)(()=>c.listenToEntity(e,n),[e]),t}function vi(){return _i()}function yi(){let{user:e}=vi();return e?.fabricRole===`fabric_admin`||e?.fabricRole===`super_user`}function bi(e){let t=m,{clusterId:n,instanceId:r}=N({strict:!1}),[i,a]=(0,R.useState)(c.getConnectionById(t??r??n));return(0,R.useEffect)(()=>c.listenToEntity(t,a),[t]),i}var z=Vr();function xi({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card`,className:d(`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 Si({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card-header`,className:d(`flex flex-col gap-1.5 px-6`,e),...t})}function Ci({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card-title`,className:d(`leading-none text-lg`,e),...t})}function wi({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card-description`,className:d(`text-muted-foreground text-xs`,e),...t})}function Ti({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`card-content`,className:d(`px-6`,e),...t})}function Ei(e){return e!==null&&!!e.username}function Di(e){if(e&&!Ei(e)){let t=Object.keys(e.roles);if(t.length===1)return`/${t[0]}`}return`/`}function Oi({className:e,error:t,title:n,showReturnToHome:r,children:i}){let{user:a,isLoading:o}=_i();return Di(a),(0,z.jsxs)(xi,{className:d(`text-red p-5 border border-red rounded-md m-12 mt-36`,e),children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{className:`text-2xl`,children:(0,z.jsx)(`h2`,{children:n??`Component Error`})}),(0,z.jsx)(wi,{children:t.message})]}),(0,z.jsxs)(Ti,{children:[i,r!==!1&&(a&&!o?(0,z.jsx)(k,{to:`/`,children:(0,z.jsxs)(g,{children:[` `,(0,z.jsx)(Sr,{}),` Return to Home`]})}):(0,z.jsx)(k,{to:`/sign-in`,children:(0,z.jsxs)(g,{children:[` `,(0,z.jsx)(Sr,{}),` Go to Sign In Page`]})}))]})]})}function ki(){let{user:e,isLoading:t}=_i();return Di(e),(0,z.jsx)(`div`,{className:`flex items-center justify-center h-screen px-3`,children:(0,z.jsxs)(xi,{className:`text-red p-5 border border-red rounded-md w-full max-w-md`,children:[(0,z.jsx)(Si,{children:(0,z.jsx)(Ci,{className:`text-2xl`,children:(0,z.jsx)(`h2`,{children:`Sorry, Page Not Found`})})}),(0,z.jsx)(Ti,{children:e&&!t?(0,z.jsx)(k,{to:`/`,children:(0,z.jsxs)(g,{children:[` `,(0,z.jsx)(Sr,{}),` Return to Home`]})}):(0,z.jsx)(k,{to:`/sign-in`,children:(0,z.jsxs)(g,{children:[` `,(0,z.jsx)(Sr,{}),` Go Sign In Page`]})})})]})})}function Ai(){return`ontouchstart`in window||navigator.maxTouchPoints>0}function ji(e){let t=`Error`,n=`We had some trouble!`;console.error(e);let r=e,i=e;if(typeof e==`string`?n=e:r?.response?.data?typeof r.response.data==`string`?n=r.response.data:r.response.data.error?n=r.response.data.error:r.response.data.message&&(n=r.response.data.message):i?.message&&(n=i.message),n.includes(`:`)){let e=n.split(`:`);t=e.shift(),n=e.join(`:`)}let a=r?.code===`ECONNABORTED`||r?.code===`ETIMEDOUT`;L.error(t,{id:a?`request-timeout`:void 0,description:n,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}var Mi=new Jr({queryCache:new Kr({onError:ji}),mutationCache:new qr({onError:ji})});function Ni(e){return!!e}var Pi=!1,Fi=!1;function Ii(){(0,R.useEffect)(()=>{Pi||(Pi=!0,Fi&&(Xr.init({applicationId:`f590deee-4bac-49b4-a202-3b6963d9721d`,clientToken:`pub27aa29cea521492f4fef73032f86a023`,site:`datadoghq.com`,service:`studio`,env:void 0,version:`v5.0.24`,trackViewsManually:!0,trackUserInteractions:!0,sessionSampleRate:100,sessionReplaySampleRate:0,defaultPrivacyLevel:`mask`,plugins:[Sn()]}),Xr.onReady(()=>{Xr.startView({service:`studio`,version:`v5.0.24`,name:window.location.pathname||`initial`})})))},[])}function Li(e){if(!Fi)return;Xr.setUser({id:e.id,email:e.email,name:[e.firstname,e.lastname].filter(Boolean).join(` `)||void 0});let t=`hasLoggedInBefore:${e.id}`;localStorage.getItem(t)?Xr.addAction(`return_login`):(Xr.addAction(`first_time_login`),localStorage.setItem(t,`true`));let n=`lastLoginTimestamp:${e.id}`,r=localStorage.getItem(n),i=Date.now();if(r){let e=Math.floor((i-Number(r))/1e3);!Number.isNaN(e)&&e>=0&&Xr.addAction(`login_time_gap`,{value:e})}localStorage.setItem(n,String(i)),Xr.addAction(`login_success`,{userId:e.id})}function Ri(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(qn,{}),(0,z.jsx)(Er,{})]})}var zi=Nr()({component:Ri});function Bi(){return(0,z.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 126.644 96`,width:24,height:24,children:(0,z.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 Vi(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`img`,{src:`/harper-studio_white.png`,alt:`Harper Studio`,className:`w-64 hidden md:inline-block`}),(0,z.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`50px`,height:`44px`,alt:`Harper`,className:`inline-block md:hidden`})]})}function Hi(e){try{return e===`null`||e===`undefined`||e==null?null:JSON.parse(e)}catch(e){return console.error(`safeParse failed to parse value, returning null instead`,e),null}}function Ui(e,t){return Hi(localStorage.getItem(e))??t}function Wi(e,t){t==null?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(t))}function Gi(e,t){let n=(0,R.useState)(Ui(e,t)),[r]=n;return(0,R.useEffect)(()=>Wi(e,r),[e,r]),n}function Ki(){let[e,t]=(0,R.useState)(()=>window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);return(0,R.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 qi=function(e){return e.ApplicationChatPosition=`ApplicationChatPosition`,e.ApplicationChatWidth=`ApplicationChatWidth`,e.ChatAlwaysApprovedTools=`ChatAlwaysApprovedTools`,e.SavedClusterState=`SavedClusterState`,e.Theme=`Theme`,e}({}),Ji=(0,R.createContext)([`system`,()=>{}]);function Yi({children:e}){let[t,n]=Gi(qi.Theme,`system`),r=Ki();return(0,R.useEffect)(()=>{let e=t===`dark`||t===`system`&&r===`dark`;document.documentElement.classList.toggle(`dark`,e)},[t,r]),(0,z.jsx)(Ji.Provider,{value:[t,n],children:e})}function Xi(){return(0,R.useContext)(Ji)}var Zi=[{value:`light`,icon:(0,z.jsx)(Mt,{className:`size-4`}),label:`Light`},{value:`system`,icon:(0,z.jsx)(Jt,{className:`size-4`}),label:`System`},{value:`dark`,icon:(0,z.jsx)(Je,{className:`size-4`}),label:`Dark`}];function Qi(){let[e,t]=Xi();return(0,z.jsx)(`div`,{className:`flex items-center bg-muted dark:bg-black rounded-xl p-0.5 gap-0.5`,children:Zi.map(({value:n,icon:r,label:i})=>(0,z.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 $i({className:e,...t}){return(0,z.jsx)(`div`,{className:d(`absolute top-full left-0 isolate z-50 flex justify-center`),children:(0,z.jsx)(Tr,{"data-slot":`navigation-menu-viewport`,className:d(`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 ea({className:e,children:t,viewport:n=!0,...r}){return(0,z.jsxs)(Kn,{"data-slot":`navigation-menu`,"data-viewport":n,className:d(`group/navigation-menu relative flex max-w-max flex-1 items-center justify-center`,e),...r,children:[t,n&&(0,z.jsx)($i,{})]})}function ta({className:e,...t}){return(0,z.jsx)(nr,{"data-slot":`navigation-menu-item`,className:d(`relative`,e),...t})}function na({className:e,...t}){return(0,z.jsx)(vr,{"data-slot":`navigation-menu-link`,className:d(`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 ra({className:e,...t}){return(0,z.jsx)(fn,{"data-slot":`navigation-menu-list`,className:d(`group flex flex-1 list-none items-center justify-center gap-1`,e),...t})}var ia=se(`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 aa(){let e=`v5.0.24`;return(0,z.jsx)(`a`,{href:e.startsWith(`v`)?`https://github.com/HarperFast/studio/releases/tag/${e}`:`https://github.com/HarperFast/studio/releases`,target:`_blank`,rel:`noopener noreferrer`,children:(0,z.jsxs)(`span`,{className:d(ia({variant:`default`}),`text-xs inline-block ml-2 align-text-top`),children:[e,` BETA`]})})}function oa(e={}){let{instanceId:t,clusterId:n}=N({strict:!1});return a({id:m,...e})}function sa(e={}){let{instanceId:t,clusterId:n}=N({strict:!1});return{instanceClient:a({id:m,...e}),entityType:`instance`}}function B(e={}){let{instanceId:t,clusterId:n}=N({strict:!1});return(0,R.useMemo)(()=>ca({instanceId:t,clusterId:n,...e}),[e.instanceId??t,e.clusterId??n,e.operationsUrl,e.port,e.secure,e.disableFabricConnect,e.forceFabricConnect])}function ca({instanceId:e,clusterId:t,...n}){let r=m;if(!r)throw Error(`id could not be automatically calculated in useInstanceClientIdParams`);return{instanceClient:a({id:r,...n}),entityId:r,entityType:`instance`}}function la(){localStorage.clear()}function ua(){sessionStorage.clear()}async function da(){c.setUserForEntity(m,null),Mi.getQueryCache().clear(),la(),ua(),await Mi.invalidateQueries({refetchType:`none`})}async function fa(e){await c.signOutFromPotentiallyAuthenticatedInstances(),await r({...e,entityId:m})}function pa(){let e=oa();return M({mutationFn:()=>fa({instanceClient:e}),onSuccess:da})}function ma(e){let{user:t}=vi(),{organizationId:n}=N({strict:!1}),r=t?.roles?.[e??n];return!r?.permission&&!r?.organization?{update:!1,remove:!1}:r.permission?.super_user?{update:!0,remove:!0}:{update:r.organization.update,remove:r.organization.delete}}function ha(e){let{user:t}=vi(),{organizationId:n}=N({strict:!1}),r=t?.roles?.[e??n];if(!r?.permission&&!r?.organization?.roles)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.roles;return{create:i.create,remove:i.delete,update:i.update,view:i.view}}function ga(e,t){let{user:n}=vi(),{organizationId:r,clusterId:i}=N({strict:!1});return _a(n,e??r,t??i)}function _a(e,t,n){let r=e?.roles?.[t];if(!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 va(e,t){let{user:n}=vi(),{organizationId:r,clusterId:i}=N({strict:!1});return ya(n,e??r,t??i)}function ya(e,t,n){let r=e?.roles?.[t];if(!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 ba(e){let{clusterId:t,instanceId:n}=N({strict:!1}),{user:r}=bi(e??n??t),i=r?.role?.permission;return i?i.super_user===!0:!1}function xa(e){let{clusterId:t,instanceId:n}=N({strict:!1}),{user:r}=bi(e??n??t),i=r?.role?.permission;return i?i.super_user===!0||i.structure_user===!0:!1}function Sa(e,t,n,r){let{clusterId:i,instanceId:a}=N({strict:!1}),{user:o}=bi(e??a??i),s=o?.role?.permission;return s?s.super_user===!0||s.structure_user===!0?!0:s[t]?.tables?.[n][r]===!0:!1}var Ca={className:`text-foreground dark:text-white font-semibold`};function wa(){let{mutate:e}=pa(),t=De(),{user:n}=_i(),r=fe(),{organizationId:i}=N({strict:!1}),{update:a}=ma(i),{view:o}=ha(i),s=a,c=(0,R.useCallback)(()=>{e(void 0,{onSuccess:async()=>{L.success(`Success`,{description:`You have been signed out successfully.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),t({to:`/sign-in`}),r.invalidate()}})},[e,r,t]),l=(0,R.useMemo)(()=>[!1,!1,!1,{to:`https://docs.harperdb.io/docs`,target:`_blank`,icon:(0,z.jsx)(dr,{}),text:`Docs`,textBreakpoint:`md`},{to:`https://github.com/HarperFast/studio/issues`,target:`_blank`,icon:(0,z.jsx)(vt,{}),text:`Report an Issue`,textBreakpoint:`lg`},{to:`https://discord.gg/VzZuaw3Xay`,target:`_blank`,icon:(0,z.jsx)(Bi,{}),text:`Discord`,textBreakpoint:`lg`},{onClick:c,icon:(0,z.jsx)(yr,{}),text:`Sign Out`,textBreakpoint:`md`}].filter(Ni),[i,s,o,c]);return n?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(ka,{menuItems:l}),(0,z.jsx)(Da,{menuItems:l})]}):(0,z.jsx)(Ea,{})}function Ta(e){return e.items!==void 0}function Ea(){return(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`inline-block`,children:[(0,z.jsx)(k,{to:`/sign-in`,children:(0,z.jsx)(Vi,{})}),(0,z.jsx)(aa,{})]}),(0,z.jsx)(ea,{children:(0,z.jsxs)(ra,{className:`text-muted-foreground dark:text-grey-400`,children:[(0,z.jsx)(ta,{children:(0,z.jsx)(na,{asChild:!0,children:(0,z.jsxs)(k,{to:`https://docs.harperdb.io/docs`,target:`_blank`,rel:`noreferrer noopener`,className:`flex-row items-center`,children:[(0,z.jsx)(dr,{}),` `,(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Docs`})]})})}),(0,z.jsx)(ta,{children:(0,z.jsx)(Qi,{})}),(0,z.jsx)(ta,{children:(0,z.jsx)(na,{asChild:!0,children:(0,z.jsxs)(k,{to:`/sign-in`,className:`flex-row items-center`,activeProps:Ca,children:[(0,z.jsx)(Xn,{}),` Sign In`]})})})]})})]})}function Da({menuItems:e}){let{user:t}=_i();return Di(t),(0,z.jsx)(`div`,{className:`hidden md:block`,children:(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsxs)(`div`,{className:`inline-block`,children:[(0,z.jsx)(k,{to:`/`,children:(0,z.jsx)(Vi,{})}),(0,z.jsx)(aa,{})]}),(0,z.jsx)(ea,{children:(0,z.jsxs)(ra,{className:`text-muted-foreground dark:text-grey-400`,children:[e.map(e=>Ta(e)?!!e.items.length&&(0,z.jsx)(`div`,{className:`bg-muted dark:bg-black rounded-2xl flex`,children:e.items.map(e=>(0,z.jsx)(Oa,{menuItem:e},e.text))},e.text):(0,z.jsx)(Oa,{menuItem:e},e.text)),(0,z.jsx)(ta,{children:(0,z.jsx)(Qi,{})})]})})]})})}function Oa({menuItem:e}){return(0,z.jsx)(ta,{className:`text-muted-foreground dark:text-gray-400 hover:text-foreground dark:hover:text-white`,children:(0,z.jsx)(na,{asChild:!0,children:(0,z.jsxs)(k,{to:e.to,onClick:e.onClick,className:`flex-row items-center`,target:e.target,activeProps:e.to?Ca:void 0,children:[e.icon,(0,z.jsx)(`span`,{className:`hidden ${e.textBreakpoint}:inline-block`,children:e.text}),(0,z.jsx)(`span`,{className:`${e.textBreakpoint}:hidden`,children:`\xA0`})]})})})}function ka({menuItems:e}){let{user:t}=_i();Di(t);let[n,r]=(0,R.useState)(!1),i=(0,R.useCallback)(()=>r(e=>!e),[]),a=(0,R.useCallback)(()=>r(!1),[]);return(0,z.jsxs)(`div`,{className:`md:hidden`,id:`mobile-menu`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,z.jsx)(k,{to:`/`,children:(0,z.jsx)(Vi,{})}),(0,z.jsx)(aa,{}),(0,z.jsxs)(`button`,{type:`button`,className:`shadow-xs text-muted-foreground dark:text-grey-400 hover:text-foreground dark:hover:text-white hover:bg-muted dark:hover:bg-black-dark`,onClick:i,children:[(0,z.jsx)(`span`,{className:`sr-only`,children:n?`Close menu`:`Open menu`}),n?(0,z.jsx)(An,{}):(0,z.jsx)(Xt,{})]})]}),(0,z.jsx)(`div`,{className:`${n?`fixed`:`hidden`} top-40 bottom-0 left-0 right-0 bg-foreground/20 dark:bg-black-dark dark:opacity-70`,onClick:a}),(0,z.jsxs)(`div`,{className:`${n?`block`:`hidden`} md:hidden z-50 space-y-1 pb-3 bg-card border-b border-border dark:bg-black-dark dark:border-none absolute left-0 top-full w-full rounded-b-md`,children:[(0,z.jsx)(`div`,{className:`flex justify-end px-3 pt-2`,children:(0,z.jsx)(Qi,{})}),e.map(e=>Ta(e)?!!e.items.length&&(0,z.jsx)(`div`,{className:`bg-muted dark:bg-black pl-10 pr-2 py-2`,children:e.items.map(e=>(0,z.jsx)(Aa,{menuItem:e,onClick:a},e.text))},e.text):(0,z.jsx)(Aa,{menuItem:e,onClick:a},e.text))]})]})}function Aa({menuItem:e,onClick:t}){let n=(0,R.useCallback)(()=>{e.onClick?.(),t()},[e,t]);return(0,z.jsxs)(k,{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?Ca:void 0,children:[e.icon,(0,z.jsx)(`span`,{className:`ml-4`,children:e.text})]})}function ja(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,z.jsx)(wa,{})}),(0,z.jsxs)(`div`,{className:`pt-20 h-screen grid grid-cols-1 md:grid-cols-2`,children:[(0,z.jsx)(`section`,{"aria-label":`Harper Fabric overview`,className:`items-center justify-center hidden text-white md:flex px-6 fabricSignupTextContainer`,children:(0,z.jsx)(`img`,{className:`object-scale-down max-h-[calc(100vh-80px-40px)] min-h-115`,src:`/fabric-signup-text.png`,alt:`One Runtime: App, database, Cache and Messaging. Distributed by design, free to deploy, and live in minutes. Deploy!`})}),(0,z.jsx)(`main`,{className:`overflow-y-auto px-6 bg-white dark:bg-linear-(--black-dark-gradient) border-l border-border dark:border-none`,children:(0,z.jsx)(`div`,{className:`min-h-full flex items-start justify-center py-12`,children:(0,z.jsx)(Er,{})})})]})]})}var Ma;function Na(){(0,R.useEffect)(()=>{},[])}var Pa=[`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 Fa(e){if(!e||!e.includes(`@`))return null;let t=e.split(`@`).pop()||``;if(!t)return null;for(let e of Pa)if(t===e||t.endsWith(`.`+e))return null;return t}var Ia=null;function La(){let e=De(),t=fe(),n=xt(),{redirect:r}=Ce({strict:!1});return(0,R.useEffect)(()=>{Ia||=(async function(){let i=await _().catch(()=>null);if(!i)L.error(`We were not able to verify your sign-in. Please try signing in again.`,{duration:1e4}),await e({to:`/sign-in`});else{c.setUserForEntity(m,i);let a=Di(i);Li(i);let o=Fa(i.email);Ma?.identify?.({username:i.email,type:`email`,...o?{company:o}:{}}),await n.invalidateQueries({queryKey:l,refetchType:`none`}),await t.invalidate(),await e({to:r?.startsWith(`/`)?r:a})}Ia=null})()},[]),(0,z.jsxs)(`div`,{role:`status`,"aria-live":`polite`,className:`text-foreground dark:text-white w-lg flex flex-col gap-4`,children:[(0,z.jsxs)(`h1`,{className:`text-3xl font-light`,children:[(0,z.jsx)(`span`,{"aria-hidden":`true`,className:`text-2xl animate-flower-dance mr-4`,title:`Loading`,children:`🌼`}),`Checking...`]}),(0,z.jsx)(`div`,{className:`underline flex gap-4`,children:(0,z.jsx)(k,{className:`text-sm opacity-50 text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-in`,children:`Try signing in again`})})]})}function Ra({delayDuration:e=0,...t}){return(0,z.jsx)(mr,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function za({...e}){return(0,z.jsx)(Ra,{children:(0,z.jsx)(Nn,{"data-slot":`tooltip`,...e})})}function Ba({...e}){return(0,z.jsx)(an,{"data-slot":`tooltip-trigger`,...e})}function Va({className:e,sideOffset:t=0,arrowClassName:n,children:r,...i}){return(0,z.jsx)(Qn,{children:(0,z.jsxs)(xr,{"data-slot":`tooltip-content`,sideOffset:t,className:d(`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,z.jsx)(yn,{className:d(`bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`,n)})]})})}var Ha=new Map;function Ua(e){if(!e)return``;if(Ha.has(e))return Ha.get(e);let t=e.replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim();if(!t)return Ha.set(e,``),``;let n=t.match(/([A-Z]+(?=[A-Z][a-z])|[A-Z]?[a-z]+|[A-Z]+|[0-9]+)/g);if(!n)return Ha.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(Wa).join(` `);return Ha.set(e,i),i}function Wa(e){return/^[A-Z]{2,3}s?$/.test(e)||/^[0-9]+$/.test(e)?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function Ga({restartRequired:e}){let t=Dn(),{organization:n,instance:r,cluster:i}=Ar({strict:!1});return(0,z.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:[...(0,R.useMemo)(()=>{let e=t.pathname.split(`/`).filter(e=>e&&e.length>0),a=[(0,z.jsxs)(k,{to:`/`,children:[(0,z.jsx)(Wn,{"aria-hidden":`true`,className:`size-5 shrink-0`}),(0,z.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=Ua(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,z.jsx)(`svg`,{fill:`currentColor`,viewBox:`0 0 20 20`,"aria-hidden":`true`,className:`size-5 shrink-0 text-grey`,children:(0,z.jsx)(`path`,{d:`M5.555 17.776l8-16 .894.448-8 16-.894-.448z`})},a.length+`-dash`),(0,z.jsx)(k,{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]),e&&(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(`div`,{className:`text-xs italic text-muted-foreground`,children:[`* Restart `,(0,z.jsx)(`span`,{className:`hidden lg:inline-block`,children:`Requested`})]})}),(0,z.jsxs)(Va,{side:`bottom`,children:[`This `,`Instance`,` is requesting a restart, when convenient, to apply your latest changes.`,(0,z.jsx)(`br`,{}),`You can do this from the Apps or Config pages.`]})]})]})}var V=qt,Ka=(0,R.createContext)({}),qa=(0,R.createContext)({});function Ja(){let e=(0,R.useContext)(Ka),t=(0,R.useContext)(qa),{getFieldState:n}=yt(),r=le({name:e.name}),i=n(e.name,r);if(!e)throw Error(`useFormField should be used within <FormField>`);let{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}}function H({...e}){let{error:t,formItemId:n,formDescriptionId:r,formMessageId:i}=Ja();return(0,z.jsx)(rr,{"data-slot":`form-control`,id:n,"aria-describedby":t?`${r} ${i}`:`${r}`,"aria-invalid":!!t,...e})}function U({...e}){return(0,z.jsx)(Ka,{value:{name:e.name},children:(0,z.jsx)(qe,{...e})})}function W({className:e,...t}){return(0,z.jsx)(qa,{value:{id:(0,R.useId)()},children:(0,z.jsx)(`div`,{"data-slot":`form-item`,className:d(`grid gap-2`,e),...t})})}function Ya({className:e,...t}){return(0,z.jsx)(cr,{"data-slot":`label`,className:d(`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 G({className:e,...t}){let{error:n,formItemId:r}=Ja();return(0,z.jsx)(Ya,{"data-slot":`form-label`,"data-error":!!n,className:d(`data-[error=true]:text-destructive`,e),htmlFor:r,...t})}function K({className:e,...t}){let{error:n,formMessageId:r}=Ja(),i=n?String(n?.message):t.children;return i?(0,z.jsx)(`p`,{"data-slot":`form-message`,id:r,className:d(`text-destructive text-sm`,e),...t,children:i}):null}function q({className:e,type:t,...n}){return(0,z.jsx)(`input`,{type:t,"data-slot":`input`,className:d(`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,16 +7,16 @@ import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{_ as t,a as n,c as r,d
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 Xa=[`RUNNING`],Za=[`TERMINATING`,`TERMINATED`,`REMOVED`];function Qa(){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 $a({username:e,password:t,instanceClient:n,entityId:r}){let i={username:e,password:t};c.checkForBasicAuth(r)&&(n.defaults.auth=i,n.defaults.withCredentials=!1);let{data:{message:o}}=await n.post(`/`,{operation:`login`,username:e,password:t});if(!c.checkForBasicAuth(r))try{return{message:o,user:await h({instanceClient:n})}}catch(e){console.error(`Failed to get user after login, trying basic auth`,e)}try{n.defaults.auth=i,n.defaults.withCredentials=!1;let e=await h({instanceClient:n,auth:i});return c.flagForBasicAuth(r,i),{message:o,user:e}}catch(e){throw n.defaults.auth=void 0,n.defaults.withCredentials=!0,e}let s=a({id:r,forceFabricConnect:!0}),l=await h({instanceClient:s});return c.flagForFabricConnect(r,!0),{message:o,user:l,instanceClient:s}}function eo(){return M({mutationFn:$a})}function to({cluster:e,instance:t,instanceParams:n}){let r=De(),i=fe(),{redirect:a}=Ce({strict:!1}),{mutate:o,isPending:s}=eo();return{isPending:s,submitForm:(0,R.useCallback)(async s=>{o({...s,...n},{onSuccess:async({message:n,user:o})=>{if(L.success(n),e?.instances?.length&&!t)for(let t of e.instances)c.setUserForEntity(t,o);let s=m;if(!s)throw Error(`Sign in failed due to missing cluster or instance.`);c.setUserForEntity(s,o),i.invalidate(),await r({to:a?.startsWith(`/`)?a:`/`})}})},[e,t,n,r,a,i,o])}}async function no(e){let{data:t}=await s.get(`/Cluster/${e}`);return t}function ro(e,t){return P({queryKey:[e],queryFn:()=>no(e),retry:!1,staleTime:1900,enabled:!!e,refetchInterval:t?t===!0?1e4:t:void 0})}var io=S({error:`Please enter a valid email address.`}).toLowerCase().trim(),ao=w().nonempty({error:`Please enter your password.`}),oo=w().nonempty({error:`Please enter a username.`}),so=D({username:oo,password:ao}),co=D({email:io,password:ao});function lo({entityId:e,instanceClient:t}){return P({queryKey:[e,`health`],queryFn:async()=>{try{return await t.get(`/health`),!0}catch{return!1}},retry:2,refetchInterval:5e3})}var uo=[`localhost`,`127.0.0.1`],fo=function(e){return e.MixedLoopback=`MixedLoopback`,e.InsecureCookieOutsideChromeAndFirefox=`InsecureCookieOutsideChromeAndFirefox`,e}({});function po(e,t,n){if(!n||!t||!e)return null;let r=new URL(n).hostname,i=uo.includes(t),a=uo.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 mo(){let{clusterId:e,instanceId:t}=N({strict:!1}),{data:r}=A(ro(e,!0)),i=(0,R.useMemo)(()=>t&&r&&r?.instances?.find(e=>e.id===t)||void 0,[r,t]),a=(0,R.useMemo)(()=>r?.status&&Xa.includes(r.status),[r?.status]),o=`instance`,s=(0,R.useMemo)(()=>r?i?(c.flagForFabricConnect(i.id,!1),n(i)):(c.flagForFabricConnect(r.id,!1),f(r)):null,[r,i]),l=B({operationsUrl:s}),u=(0,R.useMemo)(()=>s?.includes(`localhost`)||s?.includes(`127.0.0.1`),[s]),d=(0,R.useMemo)(()=>po(navigator.userAgent,location.hostname,s),[s]),{data:p}=A(lo(l)),m=I({resolver:j(so),defaultValues:{username:``,password:``}}),{control:h,handleSubmit:_}=m,{submitForm:v,isPending:y}=to({cluster:r,instance:i,instanceParams:l});return!t&&r&&!r?.fqdn?(0,z.jsx)(kt,{to:`../instances`,replace:!0}):a&&r?.resetPassword?(0,z.jsx)(kt,{to:`/${r.organizationId}/${r.id}/finish-setup`,replace:!0}):!a&&r?.resetPassword?(0,z.jsx)(kt,{to:`/${r.organizationId}/${r.id}/starting-up`,replace:!0}):(0,z.jsxs)(z.Fragment,{children:[!1,(0,z.jsx)(`div`,{className:x(`min-h-screen`,`items-center justify-center flex`),children:(0,z.jsxs)(`div`,{className:`text-foreground w-xs py-8`,children:[(0,z.jsxs)(`h1`,{className:`text-2xl font-light`,children:[`Sign in to Harper `,`Local`]}),(0,z.jsx)(V,{...m,children:(0,z.jsxs)(`form`,{id:`auth-${o}-signin-form`,name:`auth-${o}-signin-form`,onSubmit:_(v),className:`my-4`,children:[(0,z.jsx)(U,{control:h,name:`username`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{autoComplete:`username`,autoFocus:!0,type:`text`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:h,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{disabled:y,type:`submit`,variant:`submit`,className:`w-full my-2 rounded-full`,children:`Sign In`}),p===!1&&(0,z.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,z.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` This `,o,` is not responding to GET`,` `,(0,z.jsxs)(`a`,{href:`${s}health`,className:`underline`,target:`_blank`,children:[s,`health`]}),` `,`checks.`,(0,z.jsxs)(`ol`,{className:`list-decimal ml-8 mt-2`,children:[(0,z.jsx)(`li`,{children:`Is the server running?`}),(0,z.jsxs)(`li`,{children:[`Have you`,` `,(0,z.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?`]}),u&&(0,z.jsxs)(`li`,{children:[`Have you allowed`,` `,(0,z.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?`]})]})]}),d===fo.MixedLoopback&&(0,z.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,z.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.`]}),d===fo.InsecureCookieOutsideChromeAndFirefox&&(0,z.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,z.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,z.jsxs)(`div`,{className:`p-4 mt-4 text-sm rounded-lg bg-purple-950`,role:`alert`,children:[(0,z.jsx)(`span`,{className:`font-medium`,children:`Did you know?`}),` `,`You can add this instance to your Harper account to manage it remotely.`,(0,z.jsx)(`div`,{className:`text-center pt-2`,children:(0,z.jsx)(k,{to:Qa(),target:`_blank`,children:(0,z.jsx)(g,{type:`button`,variant:`positive`,children:`Connect to Harper Fabric`})})})]})]})})]})})]})}async function ho({email:e}){let{data:t}=await s.post(`/ForgotPassword/`,{email:e});if(t)return t;throw Error(`Something went wrong`)}function go(){return M({mutationFn:e=>ho(e)})}var _o=D({email:io});function vo(){let e=De(),{me:t}=Ce({strict:!1}),n=I({resolver:j(_o),defaultValues:{email:t||``}}),r=n.watch(`email`),{setFocus:i,control:a,handleSubmit:o}=n;(0,R.useEffect)(()=>{i(`email`)},[i]);let{mutate:s,isPending:c}=go(),l=async t=>{s(t,{onSuccess:t=>{L.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),e({to:`/sign-in`,search:{me:r}})}})};return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light`,children:`Enter your account email`}),(0,z.jsx)(`p`,{className:`text-sm pt-1`,children:`If a matching account exists, we'll send you a password reset link.`}),(0,z.jsx)(V,{...n,children:(0,z.jsxs)(`form`,{id:`auth-forgot-password-form`,name:`auth-forgot-password-form`,onSubmit:o(l),className:`my-4`,children:[(0,z.jsx)(U,{control:a,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:c,type:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{type:`submit`,variant:`submit`,disabled:c,className:`w-full my-2 rounded-full`,children:`Send Password Reset Email`})]})}),(0,z.jsxs)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:[(0,z.jsx)(k,{className:`text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:r},children:`Sign in to your account`}),(0,z.jsx)(k,{className:`text-sm hover:text-blue-300`,to:`/sign-up`,search:{me:r},children:`Sign up for free`})]})]})}var yo=async({token:e,password:t})=>{let{data:n}=await s.put(`/ResetPassword/`,{token:e,newPassword:t});return n};function bo(){return M({mutationFn:e=>yo(e)})}var xo=D({password:ao.min(8,{error:`Password must be at least 8 characters long.`}).max(50,{error:`Password cannot be longer than 50 characters.`}),confirmPassword:w()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function So(){let{token:e}=Ce({strict:!1}),t=De();(0,R.useEffect)(()=>{e||t({to:`/sign-in`})},[e,t]);let n=I({resolver:j(xo),defaultValues:{password:``,confirmPassword:``}}),{setFocus:r,control:i,handleSubmit:a}=n;(0,R.useEffect)(()=>{r(`password`)},[r]);let{mutate:o,isPending:s}=bo(),c=(0,R.useCallback)(async n=>{o({token:e,password:n.password},{onSuccess:()=>{L.success(`Success`,{description:`Your password has been reset successfully.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),t({to:`/sign-in`})}})},[t,o,e]);return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light`,children:`Reset Password`}),(0,z.jsx)(V,{...n,children:(0,z.jsxs)(`form`,{id:`auth-reset-password-form`,name:`auth-reset-password-form`,className:`my-4`,onSubmit:a(c),children:[(0,z.jsx)(U,{control:i,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`New Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:s,type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:i,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:s,type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{variant:`submit`,type:`submit`,disabled:s,className:`w-full my-2 rounded-full`,children:`Submit New Password`})]})})]})}function Co({text:e,disabled:t,onClick:n}){return(0,z.jsxs)(`a`,{href:`/oauth/github/login?redirect=%2F%23%2Fcheck-oauth`,onClick:n,"aria-disabled":t||void 0,className:x(`github-signin-btn`,t&&`opacity-50 cursor-default`),children:[(0,z.jsx)(`img`,{src:`/github/GitHub_Invertocat_White.svg`,alt:``,className:`github-icon`}),e]})}function wo({text:e,disabled:t,onClick:n}){return(0,z.jsxs)(`a`,{href:`/oauth/google/login?redirect=%2F%23%2Fcheck-oauth`,onClick:n,"aria-disabled":t||void 0,className:x(`gsi-material-button`,t&&`opacity-50 cursor-default`),children:[(0,z.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-state`}),(0,z.jsxs)(`div`,{className:`gsi-material-button-content-wrapper`,children:[(0,z.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-icon`,children:(0,z.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,z.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,z.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,z.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,z.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,z.jsx)(`path`,{fill:`none`,d:`M0 0h48v48H0z`})]})}),(0,z.jsx)(`span`,{className:`gsi-material-button-contents`,children:e}),(0,z.jsx)(`span`,{className:`hidden`,children:e})]})]})}function To(){let e=De(),t=xt(),n=fe(),{redirect:r}=Ce({strict:!1}),{mutate:i,isPending:a}=Eo();return{isPending:a,submitForm:(0,R.useCallback)(a=>{i(a,{onSuccess:async i=>{c.setUserForEntity(m,i);let a=Di(i);Li(i);let o=Fa(i.email);Ma?.identify?.({username:i.email,type:`email`,...o?{company:o}:{}}),await t.invalidateQueries({queryKey:l,refetchType:`none`}),n.invalidate(),await e({to:r?.startsWith(`/`)?r:a})}})},[e,t,r,n,i])}}function Eo(){return M({mutationFn:e=>Do(e)})}async function Do({email:e,password:t}){let{data:n}=await s.post(`/Login/`,{email:e,password:t});if(n)return n;throw Error(`Something went wrong`)}function Oo(){let{me:e}=Ce({strict:!1}),t=I({resolver:j(co),defaultValues:{email:e||``,password:``}}),{handleSubmit:n,control:r}=t,i=t.watch(`email`),{submitForm:a,isPending:o}=To();return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light text-center`,children:`Sign in to Harper Fabric`}),(0,z.jsx)(V,{...t,children:(0,z.jsxs)(`form`,{id:`auth-signin-form`,name:`auth-signin-form`,onSubmit:n(a),className:`my-4`,children:[(0,z.jsx)(U,{control:r,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`email`,autoFocus:!0,autoComplete:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`current-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{type:`submit`,variant:`submit`,className:`w-full my-2 rounded-full`,disabled:o,children:`Sign In`}),(0,z.jsxs)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:[(0,z.jsx)(k,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-up`,search:{me:i},children:`Sign up for free`}),(0,z.jsx)(k,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/forgot-password`,search:{me:i},children:`Forgot password?`})]})]})}),(0,z.jsx)(`hr`,{"aria-hidden":`true`,className:`border-border dark:border-gray-600 my-6`}),(0,z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,z.jsx)(wo,{text:`Sign in with Google`}),(0,z.jsx)(Co,{text:`Sign in with GitHub`})]})]})}var ko=/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžæÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,'-]+$/u;async function Ao(e){let{data:t}=await s.post(`/User/`,e);if(t)return t;throw Error(`Something went wrong`)}function jo(){return M({mutationFn:e=>Ao(e)})}var Mo=D({email:io.max(80,{error:`Email cannot be longer than 80 characters.`}),firstname:w().trim().min(2,{error:`Please enter your first name.`}).regex(ko,{error:`First name can only contain letters, spaces, and hyphens.`}).max(40,{error:`First name cannot be longer than 40 characters.`}),lastname:w().trim().min(2,{error:`Please enter your last name.`}).regex(ko,{error:`Last name can only contain letters, spaces, and hyphens.`}).max(80,{error:`Last name cannot be longer than 80 characters.`}),password:ao.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:w(),acceptTerms:E().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 No(){let e=De(),{email:t,me:n}=Ce({strict:!1}),[r,i]=(0,R.useState)(!1),a=I({resolver:j(Mo),defaultValues:{firstname:``,lastname:``,email:n||t||``,password:``,confirmPassword:``,acceptTerms:!1}}),o=a.watch(`email`),s=a.watch(`acceptTerms`),{setFocus:c,control:l,handleSubmit:u}=a;(0,R.useEffect)(()=>{c(`firstname`)},[c]);let{mutate:d}=jo(),f=(0,R.useCallback)(async t=>{let{confirmPassword:n,acceptTerms:r,...i}=t;d(i,{onSuccess:()=>{let t=Fa(i.email);Ma?.identify?.({username:i.email,type:`email`,firstname:i.firstname,lastname:i.lastname,...t?{company:t}:{}}),e({to:`/verifying?email=`+encodeURIComponent(i.email)})}})},[e,d]),p=(0,R.useCallback)(e=>{if(!s)return i(!0),setTimeout(()=>i(!1),1e3),e.preventDefault(),!1},[s]),m=(0,z.jsx)(U,{control:l,name:`acceptTerms`,render:({field:e})=>(0,z.jsxs)(W,{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,z.jsx)(H,{children:(0,z.jsx)(q,{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,z.jsxs)(`div`,{className:`space-y-1 leading-none`,children:[(0,z.jsxs)(G,{className:`text-xs font-normal`,children:[`I accept the`,` `,(0,z.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,z.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,z.jsx)(K,{})]})]})});return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light text-center`,children:`Sign up for Harper Fabric`}),(0,z.jsxs)(V,{...a,children:[(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 my-6`,children:[m,(0,z.jsx)(wo,{text:`Sign up with Google`,disabled:!s,onClick:p}),(0,z.jsx)(Co,{text:`Sign up with GitHub`,disabled:!s,onClick:p})]}),(0,z.jsx)(`hr`,{className:`border-gray-600`}),(0,z.jsxs)(`form`,{id:`auth-signup-form`,name:`auth-signup-form`,onSubmit:u(f),className:`grid gap-4 my-4`,children:[(0,z.jsx)(U,{control:l,name:`firstname`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`First Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:`dark:bg-black dark:border-black`,autoCapitalize:`words`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`lastname`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Last Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:`dark:bg-black dark:border-black`,autoCapitalize:`words`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`email`,readOnly:!!t,disabled:!!t,className:`dark:bg-black dark:border-black`,autoComplete:`email`,autoCapitalize:`none`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),m,(0,z.jsx)(g,{type:`submit`,variant:`submit`,className:`w-full rounded-full my-4`,children:`Sign Up For Free`})]})]}),(0,z.jsx)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:(0,z.jsx)(k,{className:`m-auto text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:o},children:`Already have an account? Sign in instead.`})})]})}var Po=async({email:e})=>{let{data:t}=await s.post(`/ResendVerificationEmail/`,{email:e});return t};function Fo(){return M({mutationFn:e=>Po(e)})}var Io=async e=>{let{data:t}=await s.put(`/VerifyEmail/`,{token:e.toString()});return t};function Lo(){return M({mutationFn:e=>Io(e)})}var Ro=D({email:io});function zo(){let e=De(),{mutate:t,isPending:n}=Fo(),r=I({resolver:j(Ro),defaultValues:{email:``}}),i=r.watch(`email`),{setFocus:a,control:o,handleSubmit:s}=r;(0,R.useEffect)(()=>{a(`email`)},[a]);let c=(0,R.useCallback)(async n=>{t(n,{onSuccess:t=>{L.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),e({to:`/sign-in`,search:{me:i}})}})},[i,e,t]);return(0,z.jsxs)(V,{...r,children:[(0,z.jsx)(`p`,{className:`text-sm py-2`,children:`Please Enter an Email`}),(0,z.jsxs)(`form`,{id:`auth-verify-email-form`,name:`auth-verify-email-form`,onSubmit:s(c),className:`my-4`,children:[(0,z.jsx)(U,{control:o,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:n,type:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{type:`submit`,variant:`submit`,disabled:n,className:`w-full my-2 rounded-full`,children:`Send Verification Email`})]})]})}function Bo(){let{token:e}=Ce({strict:!1}),t=De(),{mutate:n,isPending:r}=Lo(),i=(0,R.useCallback)(e=>{n(e,{onSuccess:()=>{L.success(`Success`,{description:`Email verified successfully`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),t({to:`/sign-in`})}})},[n,t]);return(0,R.useEffect)(()=>{e&&i(e)},[i,e]),(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-3xl font-light`,children:`Verify Email`}),r?(0,z.jsx)(`p`,{className:`text-sm pt-1`,children:`Verifying email...`}):(0,z.jsx)(zo,{})]})}function Vo(){let{email:e}=Ce({strict:!1}),{mutate:t,isPending:n}=Fo(),r=(0,R.useCallback)(n=>(n.preventDefault(),e&&t({email:e},{onSuccess:e=>{L.success(`Code Sent`,{description:`${e}`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}}),!1),[e,t]);return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-lg flex flex-col gap-4`,children:[(0,z.jsxs)(`h1`,{className:`text-3xl font-light`,children:[(0,z.jsx)(`span`,{"aria-hidden":`true`,className:`text-2xl animate-flower-dance mr-4`,title:`Loading`,children:`🌼`}),`Check your email!`]}),(0,z.jsxs)(`p`,{children:[`Your account has been created! You should receive an email with a link to `,(0,z.jsx)(`strong`,{children:`[Verify My Email]`}),`!`]}),(0,z.jsxs)(`p`,{children:[`From: `,(0,z.jsx)(`strong`,{children:`harper@notifications.harperfabric.com`})]}),(0,z.jsxs)(`p`,{children:[`To: `,(0,z.jsx)(`strong`,{children:e||`your email`})]}),(0,z.jsx)(`p`,{children:`Can you click it? Then we can carry on to more fun things!`}),(0,z.jsxs)(`div`,{className:`underline flex gap-4`,children:[(0,z.jsx)(k,{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,z.jsx)(k,{className:`text-sm opacity-50 text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:void 0,onClick:r,disabled:n,children:`Send me another code, please.`})]})]})}var Ho=F({getParentRoute:()=>zi,id:`_authLayout`,component:ja}),Uo=F({getParentRoute:()=>Ho,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:Oo,beforeLoad:({context:e,location:t})=>{let n=e.authentication[m]?.user;if(n){let e=t?.search,r=Di(n);throw rt({to:e?.redirect?.startsWith(`/`)?e.redirect:r})}}}),Wo=F({getParentRoute:()=>zi,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:mo,beforeLoad:({context:e,location:t})=>{if(e.authentication.OverallAppSignIn?.user){let e=t?.search;throw rt({to:e?.redirect?.startsWith(`/`)?e.redirect:`/`})}}}),Go=F({getParentRoute:()=>Ho,path:`sign-up`,head:()=>({meta:[{title:`Sign Up — Harper Fabric`}]}),component:No}),Ko=F({getParentRoute:()=>Ho,path:`forgot-password`,head:()=>({meta:[{title:`Forgot Password — Harper Fabric`}]}),component:vo}),qo=F({getParentRoute:()=>Ho,path:`verify-email`,head:()=>({meta:[{title:`Verify Email — Harper Fabric`}]}),component:Bo}),Jo=F({getParentRoute:()=>Ho,path:`verifying`,head:()=>({meta:[{title:`Check Your Email — Harper Fabric`}]}),component:Vo}),Yo=F({getParentRoute:()=>Ho,path:`check-oauth`,head:()=>({meta:[{title:`Signing In — Harper Fabric`}]}),component:La}),Xo=F({getParentRoute:()=>Ho,path:`reset-password`,head:()=>({meta:[{title:`Reset Password — Harper Fabric`}]}),component:So});Ho.addChildren([Uo,Go,Yo,Ko,qo,Jo,Xo]);var Zo=[Wo];function Qo({children:e}){return(0,z.jsx)(`nav`,{className:`fixed top-20 w-full h-12 z-39 py-2 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,z.jsxs)(`div`,{className:`flex items-center h-full space-x-2`,children:[(0,z.jsx)(Ga,{}),e]})})}function $o(e){if(rs(e)||is(e))return`warning`;if(es(e))return`success`;switch(e){case`STOPPED`:return`secondary`;case`TERMINATING`:case`TERMINATED`:case`FAILED`:case`REMOVED`:case`ERROR`:return`destructive`;default:return`default`}}function es(e){switch(e){case`RUNNING`:case`UPDATED`:return!0;default:return!1}}function ts(e){switch(e){case`FAILED`:return!0;default:return!1}}function ns(e){switch(e){case`TERMINATED`:return!0;default:return!1}}function rs(e){switch(e){case`CLONE_PENDING`:return!0;default:return!1}}function is(e){switch(e){case`PROVISIONING`:case`CLONING`:case`CLONE_READY`:case`UPDATING_HDB_NODES`:case`UPDATING`:return!0;default:return!1}}function J({...e}){return(0,z.jsx)(Nt,{"data-slot":`dialog`,...e})}function as({...e}){return(0,z.jsx)(Ie,{"data-slot":`dialog-trigger`,...e})}function os({...e}){return(0,z.jsx)(Be,{"data-slot":`dialog-portal`,...e})}function ss({className:e,...t}){return(0,z.jsx)(Lt,{"data-slot":`dialog-overlay`,className:d(`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-black-dark/90`,e),...t})}function Y({className:e,children:t,...n}){return(0,z.jsxs)(os,{"data-slot":`dialog-portal`,children:[(0,z.jsx)(ss,{}),(0,z.jsxs)(Ur,{"data-slot":`dialog-content`,className:d(`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 p-6 shadow-lg duration-200`,e),...n,children:[t,(0,z.jsxs)(Ct,{className:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs 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`,children:[(0,z.jsx)(An,{className:`text-popover-foreground`}),(0,z.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function cs({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`dialog-header`,className:d(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function X({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`dialog-footer`,className:d(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...t})}function Z({className:e,...t}){return(0,z.jsx)(Vt,{"data-slot":`dialog-title`,className:d(`text-lg leading-none text-popover-foreground font-semibold`,e),...t})}function ls({className:e,...t}){return(0,z.jsx)(_e,{"data-slot":`dialog-description`,className:d(`text-muted-foreground text-sm`,e),...t})}function us({typeOfThingBeingDeleted:e,nameOfThingBeingDeleted:t,isModalOpen:n,hideDataLossWarning:r,setIsModalOpen:i,deletionConfirmed:a,deletionPending:o,trigger:s,presentParticiple:c=`Deleting`,transitiveVerb:l=`Delete`}){return(0,z.jsxs)(J,{open:n,onOpenChange:i,children:[s&&(0,z.jsx)(as,{asChild:!0,children:s}),(0,z.jsxs)(Y,{className:`sm:max-w-[750px]`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsxs)(Z,{children:[`Are you sure you want to `,l.toLowerCase(),` this `,e,`?`]}),(0,z.jsx)(ls,{children:`This action cannot be undone.`})]}),!r&&(0,z.jsxs)(`div`,{className:`p-3 my-5 text-white rounded-md bg-amber-600`,children:[(0,z.jsxs)(`p`,{className:`flex space-x-1 font-semibold align-baseline`,children:[(0,z.jsx)(Br,{className:`inline-block size-5`}),` `,(0,z.jsx)(`span`,{children:`Warning`})]}),(0,z.jsxs)(`p`,{className:`pt-2 text-base`,children:[`By `,c.toLowerCase(),` `,e,` `,(0,z.jsx)(`span`,{className:`font-semibold`,children:t}),` `,`you will lose the data stored in it permanently.`]})]}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-center space-x-5`,children:[(0,z.jsxs)(g,{type:`button`,className:`rounded-full`,onClick:()=>i(!1),children:[(0,z.jsx)(Sr,{}),` Cancel`]}),(0,z.jsxs)(g,{variant:`destructive`,className:`rounded-full`,onClick:a,disabled:o,children:[(0,z.jsx)(cn,{}),` `,l]})]})})]})]})}function ds({className:e,variant:t,asChild:n=!1,...r}){return(0,z.jsx)(n?rr:`span`,{"data-slot":`badge`,className:d(ia({variant:t}),e),...r})}function fs({...e}){return(0,z.jsx)(Ne,{"data-slot":`dropdown-menu`,...e})}function ps({...e}){return(0,z.jsx)(tt,{"data-slot":`dropdown-menu-trigger`,...e})}function ms({className:e,sideOffset:t=4,...n}){return(0,z.jsx)(ht,{children:(0,z.jsx)(me,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:d(`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 hs({className:e,inset:t,variant:n=`default`,...r}){return(0,z.jsx)(In,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:d(`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 gs({className:e,children:t,checked:n,...r}){return(0,z.jsxs)(Vn,{"data-slot":`dropdown-menu-checkbox-item`,className:d(`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,z.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,z.jsx)(at,{children:(0,z.jsx)(Ke,{className:`size-4`})})}),t]})}function _s({className:e,inset:t,...n}){return(0,z.jsx)(ct,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:d(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function vs({className:e,...t}){return(0,z.jsx)(We,{"data-slot":`dropdown-menu-separator`,className:d(`bg-border -mx-1 my-1 h-px`,e),...t})}function ys(e){return!!e?.plans?.[0]?.planId?.startsWith(`self-hosted`)}function bs({cluster:e}){let t=bi(e.id),{view:n,update:r}=ga(e.organizationId,e.id),i=!c.checkForFabricConnect(e.id)&&!!t.user,a=(0,R.useCallback)(()=>{c.setUserForEntity(e,null),c.flagForFabricConnect(e.id,!1)},[e]);if(n){if(!e.fqdn)return(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/instances`,className:`text-sm text-nowrap`,"aria-label":`View ${e.name}`,title:`View ${e.name}`,children:(0,z.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Instances `,(0,z.jsx)(Un,{className:`inline-block`})]})});if(e.resetPassword)return r?(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/finish-setup`,className:`text-sm text-nowrap`,"aria-label":`Set Password on ${e.name}`,title:`Set Password on ${e.name}`,children:(0,z.jsxs)(g,{variant:`positive`,className:`py-2 hover:border-b-2 animate-glow-pulse`,children:[`Finish Setup `,(0,z.jsx)(Un,{className:`inline-block`})]})}):(0,z.jsx)(`span`,{className:`py-2 text-nowrap`,children:`Pending Owner Setup`});if(!t.isLoading)return i?(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/`,className:`text-sm text-nowrap`,"aria-label":`View ${e.name}`,title:`View ${e.name}`,children:(0,z.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Direct Connect `,(0,z.jsx)(Un,{className:`inline-block`})]})}):r&&!ys(e)?(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/`,className:`text-sm text-nowrap`,"aria-label":`Connect to ${e.name}`,title:`Connect to ${e.name}`,children:(0,z.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Fabric Connect `,(0,z.jsx)(Un,{className:`inline-block`})]})}):(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/sign-in`,className:`text-sm text-nowrap`,"aria-label":`Sign In to ${e.name}`,title:`Sign In to ${e.name}`,onClick:a,children:(0,z.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Direct Sign In `,(0,z.jsx)(Un,{className:`inline-block`})]})})}}function xs(e,t){let n=[];if(e)for(let r of e)n.push(r[t]);return n}function Ss({cluster:e,forceProgressBarVisible:t}){let[n,r]=(0,R.useState)(t||!1),{data:i}=A(ro(n&&e.id,2e3));(0,R.useEffect)(function(){(rs(e.status)||is(e.status))&&r(!0)},[n,e.status,i?.instances]);let a=(0,R.useMemo)(()=>{let e=xs(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||ns(t)||(rs(t)?(n+=1,r[t]=`${n} ${Ua(t)}`):is(t)?(a+=1,o[t]=`${a} ${Ua(t)}`):ts(t)?(l+=1,u[t]=`${l} ${Ua(t)}`):!i.planId||!e.includes(i.planId)?(a+=1,o.DRAINING_TRAFFIC=`${a} ${Ua(`Draining Traffic`)}`):es(t)&&(s+=1,c[t]=`${s} ${Ua(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,z.jsxs)(`div`,{className:`w-full text-center`,children:[(0,z.jsxs)(`div`,{className:`w-full h-2.5 rounded-full overflow-clip flex shadow`,children:[(0,z.jsx)(`div`,{style:{width:a.runningWidth},className:`grow bg-green/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,z.jsx)(`div`,{style:{width:a.failedWidth},className:`grow bg-red/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,z.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,z.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,z.jsx)(`div`,{className:`text-xs text-muted-foreground font-light mt-2`,children:a.text})]}):null}async function Cs(e){let{data:t}=await s.delete(`/Cluster/${e}`,{timeout:0});return t}function ws(){return M({mutationFn:e=>Cs(e)})}function Ts(...e){return(0,R.useMemo)(()=>e.map(e=>(()=>{navigator.clipboard.writeText(e),L.info(`Copied to clipboard!`,{icon:(0,z.jsx)(It,{}),duration:1e3})})),e)}function Es({cluster:e}){let t=fe(),n=xt(),i=(0,R.useMemo)(()=>f(e),[e]),a=oa({operationsUrl:i}),o=bi(e.id),[,s]=Gi(qi.SavedClusterState,null),{view:l,update:u,remove:d,create:p}=ga(e.organizationId,e.id),{mutate:m,isPending:h}=ws(),[g,_]=(0,R.useState)(!1),[v,y]=(0,R.useState)(!1),b=(0,R.useMemo)(()=>e.status&&Xa.includes(e.status),[e.status]),x=ys(e),S=c.checkForFabricConnect(e.id),C=!S&&!!o.user,ee=(0,R.useMemo)(()=>e.status&&Za.includes(e.status),[e.status]),w=(0,R.useMemo)(()=>e.status&&ts(e.status),[e.status]),te=(0,R.useCallback)(async()=>{_(!0);let t=await no(e.id).catch(e=>(console.error(`Failed to lookup cluster details, proceeding without checking instances.`,e),null));if(await r({entityId:e.id,instanceClient:a}),t?.instances?.length)for(let e of t.instances)c.setUserForEntity(e,null);c.setUserForEntity(e,null)},[e,a]),ne=(0,R.useCallback)(()=>{s(e),t.navigate({to:`/${e.organizationId}/new-cluster`})},[e,t,s]),T=(0,R.useCallback)(()=>y(!0),[]),E=(0,R.useCallback)(()=>{let r=e.organizationId;m(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[r],refetchType:`active`}),await t.invalidate(),L.success(`Success`,{description:x?`Cluster successfully removed.`:`Cluster successfully terminated.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),y(!1)},onError:()=>{L.error(`Error`,{description:x?`Failed to remove cluster: ${e.name}`:`Failed to terminate cluster: ${e.name}.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),y(!1)}})},[t,e.organizationId,e.id,e.name,m,x,n]),re=e.domains?.[0]?.domain||e.fqdn,[D,ie]=Ts(`${re}`,`https://${re}`),ae=[b&&u&&!o.isLoading&&(!C||S)&&(0,z.jsx)(k,{to:`${e.id}/sign-in`,disabled:g,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(gr,{className:`text-green`}),` Direct Sign In`]})},`sign-in`),b&&l&&!!i&&!o.isLoading&&C&&(0,z.jsx)(hs,{onClick:te,disabled:g,children:`Direct Sign Out`},`direct-sign-out`),b&&u&&(0,z.jsx)(k,{to:`${e.id}/edit`,disabled:g,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(gt,{className:`text-purple-600`}),` `,x?`Edit`:`Edit Scaling`]})},`edit`),b&&u&&!x&&(0,z.jsx)(k,{to:`${e.id}/edit/version`,disabled:g,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(Jn,{className:`text-fuchsia-300`}),` Edit Version`]})},`edit-version`),b&&u&&!1,b&&l&&(0,z.jsx)(k,{to:`${e.id}/instances`,disabled:g,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(Ln,{className:`text-orange-300`}),` Instances`]})},`instances`),b&&l&&e.fqdn&&(0,z.jsx)(vs,{},`copy-separator`),b&&l&&e.fqdn&&(0,z.jsxs)(hs,{onClick:D,disabled:g,children:[(0,z.jsx)(Hr,{}),` Copy Host Name`]},`copy-host-name`),b&&l&&e.fqdn&&(0,z.jsxs)(hs,{onClick:ie,disabled:g,children:[(0,z.jsx)(Hr,{}),` Copy API URL`]},`copy-api-url`),w&&p&&(0,z.jsx)(hs,{className:`focus:bg-green/70 focus:text-white`,onClick:ne,children:`Try Again`},`try-again`),!ee&&d&&b&&(0,z.jsx)(vs,{},`remove-separator`),!ee&&d&&(0,z.jsxs)(hs,{className:`focus:bg-red/70 focus:text-white`,onClick:T,children:[(0,z.jsx)(cn,{className:`text-red-300`}),` `,x?`Remove`:`Terminate`]},`remove`)].filter(Ni);return(0,z.jsxs)(xi,{className:`relative h-full justify-between hover:shadow-lg transition-shadow duration-200`,children:[(0,z.jsxs)(Si,{children:[(0,z.jsxs)(wi,{className:`flex items-center justify-between`,children:[re?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`span`,{className:`truncate max-w-48`,children:re}),(0,z.jsx)(st,{onClick:D,size:16,className:`cursor-pointer`}),(0,z.jsx)(`span`,{className:`grow`})]}):(0,z.jsx)(`span`,{children:`Self-Hosted`}),!ee&&(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{children:(0,z.jsx)(Bn,{"aria-label":`Cluster options`})}),(0,z.jsx)(ms,{children:[...ae]})]})]}),(0,z.jsx)(Ci,{children:(0,z.jsx)(`h2`,{children:e.name})})]}),(0,z.jsxs)(Ti,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsx)(Ss,{cluster:e}),b&&l&&(0,z.jsx)(bs,{cluster:e}),w&&e.status&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(ds,{variant:$o(e.status),children:Ua(e.status)}),(0,z.jsx)(`span`,{className:`text-xs`,children:`Click "..." to choose how to proceed.`})]})]}),(0,z.jsx)(us,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:x?`Remove`:`Terminate`,presentParticiple:x?`Removing`:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:v,hideDataLossWarning:x,setIsModalOpen:e=>y(e),deletionConfirmed:E,deletionPending:h})]})}function Ds({overEmail:e}){return(0,z.jsx)(`a`,{href:e?`mailto:support@harperdb.io`:`https://discord.com/channels/1415002037439041710/1415002038286286994`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`Contact us`})}function Os({className:e,text:t,centered:n,...r}){return(0,z.jsxs)(`div`,{className:`text-foreground h-full w-full ${e||``} ${n?`flex flex-col items-center justify-center`:``}`,...r,children:[(0,z.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`100px`,height:`100px`,alt:`HDB Dog Logo Loading`,className:`inline-block`}),(0,z.jsx)(`p`,{className:`pt-4`,children:t||`Loading...`})]})}function ks({children:e,className:t}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] relative ${t??``}`,children:e})]})}async function As(e){let{data:t}=await s.get(`/Plan/`,{params:{organizationId:e}});return t}function js(e){return P({queryKey:[e,`instancePlan`],queryFn:()=>As(e),retry:!1})}async function Ms(){let{data:e}=await s.get(`/HarperVersions/`);return e}function Ns(){return P({queryKey:[`HarperVersions`],queryFn:Ms,staleTime:6e4,retry:!1})}async function Ps({organizationId:e,availableHosts:t}={}){let{data:n}=await s.get(`/Region/`,{params:{availableHosts:t,organizationId:e}});return n}function Fs({organizationId:e,availableHosts:t}={}){return P({queryKey:[e,`regionLocations`,t],queryFn:()=>Ps({organizationId:e,availableHosts:t}),retry:!1})}function Is(e){return(t,n)=>t[e]===n[e]?0:t[e]>n[e]?1:-1}function Ls(e){let t=e.split(`.`).map(Number);return(t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0}function Rs(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):!1}function zs(e,t){return e.instanceFqdn===t.instanceFqdn?e.operationsApiPort-t.operationsApiPort:Rs(e.instanceFqdn)&&Rs(t.instanceFqdn)?Ls(e.instanceFqdn)-Ls(t.instanceFqdn):e.instanceFqdn>t.instanceFqdn?1:-1}function Bs(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 Vs(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 Hs(e,t,n){let r=Bs(e,t),i={};for(let e in r)i[e]=Vs(r[e],n);return i}function Us(e,t){let n=Gs(e),r=Gs(t);return!n||!r?!1:Js(r,n)>=0}function Ws(e,t){let n=Gs(e),r=Gs(t);return!n&&!r?0:n?r?Js(n,r):1:-1}function Gs(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=Ks(a[0]),s=Ks(a[1]??`0`),c=Ks(a[2]??`0`);return o==null||s==null||c==null?null:{major:o,minor:s,patch:c,pre:i?i.split(`.`).map(e=>qs(e)?Number(e):e):[]}}function Ks(e){return e==null||e===``||!/^\d+$/.test(e)?null:Number(e)}function qs(e){return/^\d+$/.test(e)}function Js(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}function Ys({width:e,className:t,animated:n,placeholder:r}){return(0,z.jsxs)(`div`,{className:x(`w-full bg-gray-200 rounded-full relative`,r?`h-6`:`h-2.5`),children:[r&&(0,z.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,z.jsx)(`div`,{className:x(`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 Xs({duration:e,message:t,lateMessage:n}){let r=(0,R.useRef)(0),i=(0,R.useRef)(0),[a,o]=(0,R.useState)(!1),[s,c]=(0,R.useState)(`5%`),l=(0,R.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,R.useEffect)(()=>(r.current=requestAnimationFrame(l),()=>cancelAnimationFrame(r.current)),[l]),(0,z.jsxs)(z.Fragment,{children:[a?n:t,(0,z.jsx)(Ys,{width:s,animated:!1})]})}async function Zs(e){let{data:t}=await s.post(`/Cluster/`,e,{timeout:0});return t}function Qs(){return M({mutationFn:e=>Zs(e)})}async function $s(e){let{id:t,...n}=e,{data:r}=await s.put(`/Cluster/${t}`,n,{timeout:0});return r}function ec(){return M({mutationFn:e=>$s(e)})}async function tc(e){let{data:t}=await s.get(`/Organization/${e}`);return t}function nc(e){return P({queryKey:[e],queryFn:()=>tc(e),retry:!1,refetchInterval:1e4})}var rc=`ENTERPRISE`;function ic(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 ac(e,t,n=`-`){let r=t.split(n)[0];return e.findIndex(e=>e.startsWith(r))!==-1}function oc(e){return e.replace(/[^a-zA-Z0-9]/g,`-`).replace(/([a-z])([A-Z])/g,`$1-$2`).toLowerCase().replace(/-+/g,`-`).replace(/^-+|-+$/g,``)}async function sc(e){await s.put(`/Payment/`,e)}function cc(){return M({mutationFn:e=>sc(e)})}function lc(e){let{mutate:t}=cc();return(0,R.useCallback)((n,r)=>{t({paymentMethodId:typeof n==`string`?n:n.id,organizationId:e},{onSuccess:()=>{L.success(`Success! Your payment method has been saved.`),r(!0)},onError:()=>{L.error(`Failed to process payment method details. Please try another payment method.`),r(!1)}})},[t,e])}var uc=(0,R.createContext)(null);function dc(){return(0,R.useContext)(uc)}function fc({hasExistingBilling:e,onPaymentAdded:t,onSaveStateForBillingRedirect:n}){let{organizationId:r}=N({strict:!1}),i=ft(),a=dc(),o=Te(),[s,c]=(0,R.useState)(!1),l=lc(r),u=(0,R.useCallback)(()=>{t(!1)},[t]);return(0,z.jsxs)(`form`,{id:`billing-add-payment-method-form`,name:`billing-add-payment-method-form`,onSubmit:(0,R.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),L.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]),className:`max-w-xl`,children:[(0,z.jsx)(ke,{}),(0,z.jsx)(jt,{options:{mode:`billing`}}),(0,z.jsxs)(`div`,{className:`mt-4 flex gap-8 items-center`,children:[(0,z.jsxs)(g,{disabled:!i||!o||s,variant:`submit`,className:`rounded-full`,children:[(0,z.jsx)(Pe,{}),` Add Payment Method`]}),e&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`text-xs text-gray-600`,children:`Your existing payment method will be overwritten.`}),(0,z.jsx)(g,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Cancel`})]})]})]})}async function pc(e){let{data:t}=await s.post(`/StripeAccount/`,e);return t}function mc(){return M({mutationFn:e=>pc(e)})}async function hc(e){let{data:t}=await s.post(`/Payment/`,{organizationId:e.organizationId});return t}function gc(){return M({mutationFn:e=>hc(e)})}function _c(e){let{enabled:t,existingStripeId:n,organizationId:r}=e,{mutate:i}=mc(),{mutate:a}=gc(),[o,s]=(0,R.useState)(void 0);return(0,R.useEffect)(()=>{},[i,t,n,a,(0,R.useCallback)(e=>{s(e.clientSecret)},[]),r]),o}function vc({children:e}){let{organizationId:t}=N({strict:!1}),{data:n}=A(nc(t)),r=_c({organizationId:t,enabled:!!n,existingStripeId:n?.stripeId}),i=Ki();return(0,R.useMemo)(()=>({clientSecret:r||``,appearance:{theme:i===`dark`?`night`:`stripe`}}),[r,i]),console.error(`No VITE_PUBLIC_STRIPE_KEY is configured for this environment.`),(0,z.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 yc({onPaymentAdded:e,onSaveStateForBillingRedirect:t}){let{organizationId:n}=N({strict:!1}),{data:r}=A(nc(n)),i=r?.billing,a=i?.paymentMethod;return(0,z.jsxs)(vc,{children:[(0,z.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,z.jsx)(fc,{hasExistingBilling:!!i,onSaveStateForBillingRedirect:t,onPaymentAdded:e})]})}var bc=function(e){return e.PASS=`pass`,e.FAIL=`fail`,e.PENDING=`pending`,e.ERROR=`error`,e}({});function xc(e){switch(e){case bc.PASS:return`success`;case bc.FAIL:case bc.ERROR:return`destructive`;case bc.PENDING:default:return`default`}}function Sc(e){switch(e){case bc.PASS:return`READY`;case bc.FAIL:case bc.ERROR:case bc.PENDING:default:return e.toUpperCase()}}function Cc(e,t){return`${String(e).padStart(2,`0`)}/${String(t%100).padStart(2,`0`)}`}function wc(e){let{onSaveStateForBillingRedirect:t,onReplacingPaymentMethod:n}=e??{},{organizationId:r}=N({strict:!1}),{update:i}=ma(r),{data:a,refetch:o}=A(nc(r)),s=a?.billing?.paymentMethod,[c,l]=(0,R.useState)(!1),u=(0,R.useCallback)(()=>{l(!c),n?.(!c)},[n,c]),d=(0,R.useCallback)(e=>{l(!1),n?.(!1),e&&o()},[n,o]);return a?.type===`ENTERPRISE`?(0,z.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,z.jsx)(Ds,{}),`, we would love to talk!`]}):s&&!c?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`mt-2`,children:[s.brand?.toUpperCase()??`Card`,` ending in `,s.last4??`••••`,s.expMonth&&s.expYear?(0,z.jsxs)(z.Fragment,{children:[`(exp `,Cc(s.expMonth,s.expYear),`)`]}):null,s.status?(0,z.jsxs)(z.Fragment,{children:[`—`,` `,(0,z.jsx)(ds,{variant:xc(s.status),children:Sc(s.status)})]}):null]}),i&&(0,z.jsx)(`div`,{className:`mt-2 mb-6`,children:(0,z.jsx)(g,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Replace Payment Method`})})]}):i?(0,z.jsx)(yc,{onSaveStateForBillingRedirect:t,onPaymentAdded:d}):(0,z.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 Q(e){return e!==void 0&&e>0}function Tc({clusterId:e,isPending:t,onGoBackToDetails:n,onSaveStateForBillingRedirect:r,onSubmit:i,organizationId:a,selectedPlan:o}){let{data:s}=A(nc(a)),c=s?.billing,l=s?.type===rc,d=l||c?.paymentMethod?.status===bc.PASS,[f,p]=(0,R.useState)(!1),m=Q(o?.planLimits?.expirationMonths)&&o.planLimits.expirationMonths<1e3&&o.planLimits.expirationMonths,h=(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end mt-3 max-w-xl`,children:[(0,z.jsxs)(g,{type:`button`,variant:`defaultOutline`,className:`rounded-full`,disabled:t,onClick:n,children:[(0,z.jsx)(Sr,{}),` Back to Details`]}),(0,z.jsxs)(g,{disabled:t||!d||f,type:`submit`,variant:`submit`,className:`rounded-full`,onClick:i,children:[e?`Edit Cluster`:`Create New Cluster`,` `,(0,z.jsx)(Un,{})]})]})});if(l)return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`ul`,{className:`list-disc ml-6 max-w-lg`,children:[(0,z.jsx)(`li`,{children:`Reminder: you will be billed at your contracted rate for any additional infrastructure.`}),(0,z.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,z.jsx)(Ds,{overEmail:!0}),`, we are here to help.`]})]}),h]});let _=m&&`, or ${u(m,`month`,`months`)} elapse`;return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`ul`,{className:`list-disc ml-6 mb-6`,children:[(0,z.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,z.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,z.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,z.jsxs)(`li`,{children:[`When that block is used up`,_,`, you will be automatically renewed.`]}),(0,z.jsx)(`li`,{children:`While refunds are not available, we’d be happy to assist you with troubleshooting.`}),(0,z.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,z.jsx)(Ds,{overEmail:!0}),`, we are here to help.`]})]}),(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm mb-6`,children:`Payment method:`}),(0,z.jsx)(wc,{onSaveStateForBillingRedirect:r,onReplacingPaymentMethod:p}),h]})}var Ec=/(^$|^(?: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,Dc=65535,Oc=w().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.`),kc=D({clusterName:w().nonempty(`Please enter a cluster name.`).max(255,`Cluster name cannot be longer than 255 characters long.`),abbreviatedName:ne([ie(``),T(),Oc]).optional(),fqdn:w().regex(Ec,`Please enter a valid host name without the port or any path.`).optional(),version:w().optional(),deploymentDescription:w().nonempty(`Please select a deployment tier.`),performanceDescription:w().nonempty(`Please select a performance tier.`),regionPlans:ae(D({regionName:w().nonempty(`Please select a region.`),latencyDescription:w().nonempty(`Please select a latency tier.`)})).max(50,{error:`A maximum of 50 regions can be selected for each cluster. `}),instances:ae(D({secure:re([`true`,`false`]),fqdn:w().nonempty(`Please enter the host name of your instance.`).regex(Ec,`Please enter a valid host name without the port or any path.`),port:b().min(0,`Positive thinking only, please.`).max(Dc,`That port number is too high.`).optional()})).max(100,{error:`A maximum of 100 instances can be added to each cluster.`}),skipToBilling:E().optional(),skipGtmWait:E().optional(),sourceClusterId:w().optional()});function Ac({calculatedNames:e,disabled:t,form:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{control:n.control,name:`abbreviatedName`,render:({field:n})=>(0,z.jsxs)(W,{className:`col-span-3`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...n,type:`text`,maxLength:Oc.maxLength,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:e.suggestedAbbreviatedName,disabled:t})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(W,{className:`col-span-3 `,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Full Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(`span`,{children:e.fullHostName})}),(0,z.jsx)(K,{})]})]})}function jc({className:e}={}){return(0,z.jsx)(`div`,{className:(0,R.useMemo)(()=>x(`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])})}function Mc({...e}){return(0,z.jsx)(zr,{"data-slot":`select`,...e})}function Nc({...e}){return(0,z.jsx)(xn,{"data-slot":`select-group`,...e})}function Pc({...e}){return(0,z.jsx)(xe,{"data-slot":`select-value`,...e})}function Fc({className:e,children:t,...n}){return(0,z.jsxs)(Dt,{"data-slot":`select-trigger`,className:d(`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,z.jsx)(ar,{asChild:!0,children:(0,z.jsx)(sr,{className:`opacity-50 size-4`})})]})}function Ic({className:e,children:t,position:n=`popper`,...r}){return(0,z.jsx)(Or,{children:(0,z.jsxs)(hn,{"data-slot":`select-content`,className:d(`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,z.jsx)(Rc,{}),(0,z.jsx)(jr,{className:d(`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,z.jsx)(zc,{})]})})}function Lc({className:e,...t}){return(0,z.jsx)(en,{"data-slot":`select-label`,className:d(`px-2 py-1.5 text-sm font-medium`,e),...t})}function $({className:e,children:t,...n}){return(0,z.jsxs)(Yn,{"data-slot":`select-item`,className:d(`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,z.jsx)(Tn,{children:t}),(0,z.jsx)(`span`,{className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,z.jsx)(kn,{children:(0,z.jsx)(Ke,{className:`size-4`})})})]})}function Rc({className:e,...t}){return(0,z.jsx)(Fr,{"data-slot":`select-scroll-up-button`,className:d(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,z.jsx)(Xe,{className:`size-4`})})}function zc({className:e,...t}){return(0,z.jsx)(sn,{"data-slot":`select-scroll-down-button`,className:d(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,z.jsx)(sr,{className:`size-4`})})}var Bc={Colocated:`Shared infrastructure for optimized value`,Dedicated:`Dedicated infrastructure for consistent performance`,"Self-Hosted":`Your own infrastructure`};function Vc({availableDeploymentTypes:e,disabled:t,form:n}){return(0,z.jsx)(U,{control:n.control,name:`deploymentDescription`,render:({field:r})=>(0,z.jsxs)(W,{className:`col-span-3`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Harper Deployment`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...r,disabled:t,onValueChange:e=>{r.onChange(e),n.trigger()},children:[(0,z.jsx)(Fc,{className:`w-full h-auto`,children:(0,z.jsx)(Pc,{placeholder:`Choose Tier`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:e.map(e=>(0,z.jsxs)($,{value:e,children:[(0,z.jsx)(`dt`,{className:`text-left font-bold text-sm/6`,children:e}),Bc[e]&&(0,z.jsx)(`dd`,{className:`font-light`,children:Bc[e]})]},e))})})]})})}),(0,z.jsx)(K,{})]})})}function Hc({disabled:e,form:t}){return(0,z.jsx)(U,{control:t.control,name:`fqdn`,render:({field:t})=>(0,z.jsxs)(W,{className:`md:col-span-6 col-span-3`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Optional Cluster Load Balancer Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...t,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:`example.your-company.com`,disabled:e})}),(0,z.jsx)(K,{})]})})}function Uc({className:e,disabled:t,form:n}){return(0,z.jsx)(U,{control:n.control,name:`clusterName`,render:({field:n})=>(0,z.jsxs)(W,{className:e,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Cluster Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{autoFocus:!0,type:`text`,maxLength:kc.shape.clusterName.maxLength,autoCapitalize:`words`,disabled:t,...n})}),(0,z.jsx)(K,{})]})})}function Wc({availablePerformanceDescriptions:e,form:t,selectedDeployment:n}){return(0,z.jsx)(U,{control:t.control,name:`performanceDescription`,render:({field:r})=>(0,z.jsxs)(W,{className:`col-span-3`,children:[(0,z.jsxs)(G,{className:`pb-1`,children:[n.startsWith(`Self`)?`Support`:`Performance`,` & Usage`]}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...r,onValueChange:e=>{r.onChange(e),t.trigger()},disabled:!e?.length,children:[(0,z.jsx)(Fc,{className:`w-full h-auto`,children:(0,z.jsx)(Pc,{placeholder:`Choose Tier`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:e.map(e=>(0,z.jsxs)($,{value:e.performanceTier,children:[(0,z.jsx)(`dt`,{className:`text-left font-bold text-sm/6`,children:e.name}),e.description&&(0,z.jsx)(`dd`,{className:`font-light`,children:e.description})]},e.name))})})]})})}),(0,z.jsx)(K,{})]})})}function Gc({className:e,...t}){let{formDescriptionId:n}=Ja();return(0,z.jsx)(`p`,{"data-slot":`form-description`,id:n,className:d(`text-muted-foreground text-sm`,e),...t})}function Kc({className:e,form:t}){return(0,z.jsx)(U,{control:t.control,name:`skipGtmWait`,render:({field:t})=>(0,z.jsxs)(W,{className:e,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{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,z.jsx)(G,{className:`cursor-pointer`,children:`Immediate upgrade and restart`})]}),(0,z.jsx)(Gc,{children:`Apply changes immediately without waiting for each instance to be taken out of the load balancer (faster, but potentially less safe).`})]})})}function qc({className:e,disabled:t,form:n,harperVersions:r}){return r?.value?.length?(0,z.jsx)(U,{control:n.control,name:`version`,render:({field:i})=>(0,z.jsxs)(W,{className:e,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Harper Version`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...i,disabled:t,onValueChange:e=>{i.onChange(e),n.trigger()},children:[(0,z.jsx)(Fc,{className:`w-full h-auto`,children:(0,z.jsx)(Pc,{placeholder:`Choose Version`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:r?.value.map(e=>(0,z.jsxs)($,{value:e.version,children:[e.version,` `,(0,z.jsx)(`span`,{className:`font-light opacity-50`,children:e.name})]},e.version))})})]})})}),(0,z.jsx)(K,{})]})}):null}var Jc=new RegExp(/^\d+/);function Yc(e,t){let n=parseInt(e.match(Jc)?.[0]||`0`,10),r=parseInt(t.match(Jc)?.[0]||`0`,10);return n===r?0:n>r?1:-1}var Xc=[`B`,`KB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],Zc=[`secs`,`mins`,`hrs`],Qc={bytes:1e3,secs:60};function $c(e,t,n){let r,i;switch(t){case`bytes`:r=Xc,i=Qc.bytes;break;case`secs`:r=Zc,i=Qc.secs;break;default:return e}let a=r.indexOf(n);return a===-1?e:e/i**a}function el(e,t){let n,r;switch(e){case`bytes`:n=Xc,r=Qc.bytes;break;case`secs`:n=Zc,r=Qc.secs;break;default:return e}let i=0;for(;t>=r&&i<n.length-1;)t/=r,i++;return n[i]}function tl(e,t=1){let n=e*t,r=el(`bytes`,n),i=$c(n,`bytes`,r);return`${new Intl.NumberFormat().format(Math.round(i))} ${r}`}function nl(e){return new Intl.NumberFormat().format(e)}var rl=[`K`,`M`,`B`,`T`,`Qa`,`Qi`,`Sx`,`Sp`,`Oc`,`No`,`Dc`];function il(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<rl.length-1);return`${nl(Math.round(n))} ${rl[r]}`}function al({selectedPlan:e,selectedRegion:t,isEnterprise:n,cloudProvider:r}){let[i,a]=(0,R.useState)(!1),o=(0,R.useCallback)(()=>{a(!i)},[i,a]),s=e?.planLimits,c=e?.resourcesPerInstance,l=r&&e?.cloudInstanceTypes?.[r],f=Q(s?.expirationMonths)&&s.expirationMonths<1e3&&s.expirationMonths,p=t?.purchasedBlockMultiplier??1,m=(0,R.useMemo)(()=>s?[Q(s.totalReadCount)&&{label:`Total Reads`,value:`${il(s.totalReadCount*p)} reads`},Q(s.totalReadsBytes)&&{label:`Total Read Transfer`,value:`${tl(s.totalReadsBytes*p)}`},Q(s.readsPerMinuteCount)&&{label:`Read Rate`,value:`${il(s.readsPerMinuteCount*60*p)}/min`},Q(s.readsPerMinuteBytes)&&{label:`Read Bandwidth`,value:`${tl(s.readsPerMinuteBytes*60*p)}/min`},Q(s.totalWriteCount)&&{label:`Total Writes`,value:`${il(s.totalWriteCount)} reads`},Q(s.totalWritesBytes)&&{label:`Total Write Transfer`,value:`${tl(s.totalWritesBytes)}`},Q(s.writesPerMinuteCount)&&{label:`Write Rate`,value:`${il(s.writesPerMinuteCount*60)}/min`},Q(s.writesPerMinuteBytes)&&{label:`Write Bandwidth`,value:`${tl(s.writesPerMinuteBytes*60)}/min`},Q(s.totalRealTimeMessageDeliveries)&&{label:`Total Real-Time Messages`,value:`${il(s.totalRealTimeMessageDeliveries*p)} messages`},Q(s.totalRealTimeMessageDeliveryBytes)&&{label:`Total Real-Time Message Transfer`,value:`${tl(s.totalRealTimeMessageDeliveryBytes*p)}`},Q(s.realTimeMessageDeliveriesPerMinute)&&{label:`Real-Time Message Rate`,value:`${il(s.realTimeMessageDeliveriesPerMinute*60*p)}/min`},Q(s.realTimeMessageDeliveryBytesPerMinute)&&{label:`Real-Time Message Bandwidth`,value:`${tl(s.realTimeMessageDeliveryBytesPerMinute*60*p)}/min`},Q(s.tlsHandshakes)&&{label:`TLS Handshakes`,value:`${il(s.tlsHandshakes*60*p)}`},Q(s.applicationComputeHours)&&{label:`Application Compute Hours`,value:`${il(s.applicationComputeHours*p)}`},!!c&&Q(c.storageGb)&&{label:`Storage`,value:`${tl(c.storageGb*1e9)}`},!!c&&Q(c.cpuCores)&&{label:`Maximum CPU Cores`,value:`${il(c.cpuCores)}`},!!c&&Q(c.memoryMb)&&{label:`Memory`,value:`${c.memoryMb/1024} GB`},!!l&&{label:`Cloud Instance Type`,value:l},!!f&&{label:`Expiration`,value:u(f,`month`,`months`)},!!t?.id&&{label:`Region ID`,value:t.id},!!e?.id&&{label:`Plan ID`,value:e.id}].filter(Ni):[],[f,t,e,p]);if(!s)return``;if(!Q(s.totalReadCount))return`This plan has no usage limits.`;let h=n?` Pricing subject to contracted rate.`:` Beta pricing subject to change.`,_=Q(s.readsPerMinuteCount)?`${il(s.readsPerMinuteCount*p)} reads/min & `:``,v=Q(s.writesPerMinuteCount)?` ${il(s.writesPerMinuteCount)} writes/min & `:` `,y=Q(s.readsPerMinuteCount)?`in ${t?.region??``} region${t?` (${t?.id})`:``}`:`per server`,b=f?`, for ${u(f,`month`,`months`)}`:``,x=n?`for the contracted rate`:`for the price listed above`,S=f?` in ${u(f,`month`,`months`)} or`:``;return(0,z.jsxs)(W,{className:`basis-full`,children:[(0,z.jsxs)(G,{onClick:o,children:[(0,z.jsx)(`em`,{className:`text-muted-foreground`,children:e?.id}),` Purchasing usage block for `,_,il(s.totalReadCount*p),` total reads `,y,`,`,(0,z.jsx)(`br`,{className:`hidden sm:block`}),v,` `,il(s.totalWriteCount),` total writes`,b,`.`,h,(0,z.jsx)(`br`,{className:`block sm:hidden`}),(0,z.jsxs)(g,{type:`button`,variant:`link`,className:`text-foreground`,children:[`Learn More `,i?(0,z.jsx)(pn,{}):(0,z.jsx)(Un,{})]})]}),(0,z.jsx)(H,{children:(0,z.jsxs)(`dl`,{className:d(`divide-y divide-border border border-border rounded-md overflow-hidden transition-[max-height] duration-200 ease-in`,i?`max-h-fit`:`max-h-0`),children:[(0,z.jsxs)(`div`,{className:`text-sm mb-3 max-w-lg px-3 pt-3 text-muted-foreground`,children:[`This plan licenses Harper for the usage limits below, `,x,`. The usage license expires`,S,` `,`when any usage limit is reached. New usage blocks are automatically purchased/billed as blocks are consumed.`]}),m.map((e,t)=>(0,z.jsxs)(`div`,{className:d(`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,z.jsx)(`dt`,{className:`text-sm/6 font-medium text-foreground`,children:e.label}),(0,z.jsx)(`dd`,{className:`mt-1 text-sm/6 text-muted-foreground sm:col-span-2 sm:mt-0`,children:e.value})]},e.label))]})}),(0,z.jsx)(K,{})]})}function ol({control:e,fieldArray:t,form:n,index:r,regionNameToLatencyToRegion:i,selectedPlan:a,isEnterprise:o,cloudProvider:s}){let c=(0,R.useMemo)(()=>Object.keys(i).sort(),[i]),l=n.watch(`deploymentDescription`)?.startsWith(`Dedicated`),u=n.watch(`regionPlans.${r}.regionName`),d=n.watch(`regionPlans.${r}.latencyDescription`),f=(0,R.useMemo)(()=>Object.keys(i[u]||{}).sort(Yc).reverse(),[i,u]);(0,R.useEffect)(function(){if(u&&f?.length&&!f?.includes(d)){let e=d?.split(` `)[0].toLowerCase(),t=f.find(t=>e?t.split(` `)[0].toLowerCase()===e:!0)||f[0];n.setValue(`regionPlans.${r}.latencyDescription`,t),n.trigger()}},[f,n,r,d,u]);let p=(0,R.useCallback)(()=>{t?.remove(r),n.trigger()},[t,n,r]);return(0,z.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,z.jsx)(U,{control:e,name:`regionPlans.${r}.regionName`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex-1`,children:[(0,z.jsxs)(G,{children:[`Region `,t.fields.length>1?r+1:``]}),(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Region`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:c.map(e=>(0,z.jsx)($,{value:e,children:e},e))})})]})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e,name:`regionPlans.${r}.latencyDescription`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex-1`,children:[(0,z.jsxs)(G,{children:[`Estimated `,l?`P95`:`P90`,` Latency, Distribution`]}),(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,disabled:!f?.length,children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Latency Tier`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:f.map(e=>(0,z.jsx)($,{value:e,children:e},e))})})]})}),(0,z.jsx)(K,{})]})}),t?.fields?.length&&t?.fields?.length>1&&(0,z.jsx)(`div`,{className:`flex-none mt-6`,children:(0,z.jsxs)(g,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:p,children:[(0,z.jsx)(cn,{}),` `,(0,z.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})}),(0,z.jsx)(al,{selectedPlan:a,selectedRegion:i[u]?.[d],isEnterprise:o,cloudProvider:s})]})}function sl({form:e,regionLocations:t,regionNameToLatencyToRegion:n,selectedPlan:r,totalPrice:i,isEnterprise:a,cloudProvider:o}){let s=e.watch(`regionPlans`),c=Wt({control:e.control,name:`regionPlans`}),l=(0,R.useMemo)(()=>{let e=s.map(e=>n?.[e.regionName]?.[e.latencyDescription]?.region);return i?t?.find(t=>!e.includes(t.region)):null},[t,n,s,i]),u=(0,R.useCallback)(()=>{l&&(c.append({regionName:l.region,latencyDescription:l.latencyDescription}),e.trigger())},[e,l,c]);return t?.length?(0,z.jsxs)(z.Fragment,{children:[c.fields.map((t,i)=>(0,z.jsx)(ol,{control:e.control,fieldArray:c,form:e,index:i,regionNameToLatencyToRegion:n,selectedPlan:r,isEnterprise:a,cloudProvider:o},t.id)),l&&(0,z.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,z.jsxs)(g,{type:`button`,variant:`positiveOutline`,className:`rounded-full`,onClick:u,children:[(0,z.jsx)(Rt,{}),`Add Additional Region Usage`]})})]}):(0,z.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,z.jsx)(Oi,{className:`mt-0 m-0`,title:`No Regions Available`,showReturnToHome:!1,error:{message:(0,z.jsxs)(z.Fragment,{children:[`The deployment type you selected currently has no available regions. Please try a different deployment type, try again later, or `,(0,z.jsx)(Ds,{}),`.`]})}})})}function cl({control:e,fieldArray:n,form:r,index:i}){let a=(0,R.useCallback)(()=>{n?.remove(i)},[n,i]);return(0,z.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,z.jsx)(U,{control:e,name:`instances.${i}.secure`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsxs)(G,{children:[`Instance `,n.fields.length>1?i+1:``]}),(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:t=>{e.onChange(t),r.trigger()},children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`https://`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)($,{value:`true`,children:`https://`}),(0,z.jsx)($,{value:`false`,children:`http://`})]})})]})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e,name:`instances.${i}.fqdn`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex-3`,children:[(0,z.jsx)(G,{children:`Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,onChange:t=>{e.onChange(t);let n=t.target.value,a=n===`localhost`||n===`127.0.0.1`,o=r.getFieldState(`instances.${i}.secure`);a&&!o.isDirty&&r.setValue(`instances.${i}.secure`,`false`)}})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e,name:`instances.${i}.port`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Operations API Port`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`number`,min:0,max:Dc,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:String(t),onChange:t=>{e.onChange(t.target.value?parseInt(t.target.value,10):void 0),r.trigger()}})}),(0,z.jsx)(K,{})]})}),n?.fields?.length&&n?.fields?.length>1&&(0,z.jsx)(`div`,{className:`flex-none mt-6`,children:(0,z.jsxs)(g,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:a,children:[(0,z.jsx)(cn,{}),` `,(0,z.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})})]})}function ll({form:e}){let n=Wt({control:e.control,name:`instances`}),r=(0,R.useCallback)(()=>{n.append({secure:`true`,fqdn:``,port:t})},[n]);return(0,z.jsxs)(z.Fragment,{children:[n.fields.map((t,r)=>(0,z.jsx)(cl,{control:e.control,fieldArray:n,form:e,index:r},t.id)),(0,z.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,z.jsxs)(g,{type:`button`,variant:`positiveOutline`,className:`rounded-full`,onClick:r,children:[(0,z.jsx)(Rt,{}),`Add Instance`]})})]})}function ul({calculatedNames:e,clusterId:t,deploymentToPerformanceToPlan:n,form:r,harperVersions:i,isEnterprise:a,cloudProvider:o,isPending:s,mode:c,regionLocations:l,regionNameToLatencyToRegion:u,selectedDeployment:d,selectedPerformance:f,selectedPlan:p,totalPrice:m}){let{isDirty:h,isValid:_}=le(),v=(0,R.useMemo)(()=>Object.keys(n[d]||{}).map(e=>{let t=e.slice(0,-1).split(`(`);if(t.length>1)return{performanceTier:e,name:t[0],description:t[1]};let n=e.split(` for `);return n.length>1?{performanceTier:e,name:n[0],description:`For `+n[1]}:{performanceTier:e,name:e,description:``}}),[n,d]),y=(0,R.useMemo)(()=>Object.keys(n).sort(),[n]);(0,R.useEffect)(function(){v?.length&&!v.find(e=>e.performanceTier===f)&&(r.setValue(`performanceDescription`,v[0].performanceTier),r.trigger())},[d,f,v,r]);let b=d===`Self-Hosted`,x=(0,z.jsx)(X,{className:`mt-3 mb-12`,children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:s||t&&!h||!_,children:[c!==`version`&&m>0?`Confirm Payment Details`:t?`Edit Cluster`:`Create New Cluster`,(0,z.jsx)(Un,{})]})});return c===`version`?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-3 gap-6 text-foreground md:grid-cols-6`,children:[(0,z.jsx)(Uc,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!0,form:r}),(0,z.jsx)(qc,{className:`col-span-3`,form:r,harperVersions:i}),(0,z.jsx)(Kc,{className:`col-span-3 md:col-span-6`,form:r})]}),x]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-3 gap-6 text-foreground md:grid-cols-6`,children:[(0,z.jsx)(Uc,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!!t,form:r}),(0,z.jsx)(qc,{className:`col-span-3`,disabled:!!t,form:r,harperVersions:i}),b?(0,z.jsx)(Hc,{form:r,disabled:!!t}):(0,z.jsx)(Ac,{form:r,calculatedNames:e,disabled:!!t}),(0,z.jsx)(Vc,{form:r,availableDeploymentTypes:y}),(0,z.jsx)(Wc,{availablePerformanceDescriptions:v,form:r,selectedDeployment:d}),b?(0,z.jsx)(ll,{form:r}):(0,z.jsx)(sl,{form:r,regionLocations:l,regionNameToLatencyToRegion:u,selectedPlan:p,totalPrice:m,isEnterprise:a,cloudProvider:o}),t&&!b&&(0,z.jsx)(Kc,{className:`col-span-3 md:col-span-6`,form:r})]}),x]})}function dl(e){let{fqdn:n}=e,{secure:r,port:i}=e;return i||=t,i===443&&r===`false`&&(r=`true`),i===80&&r===`true`&&(r=`false`),`${r===`true`?`https`:`http`}://${n}${i===443||i===80?``:`:`+i}`.toLowerCase()}function fl(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 pl(e,t,n){if(t&&n){let r=e.getValues();if(!r.deploymentDescription||!r.performanceDescription||!r.regionPlans.length){let i=fl(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 ml({price:e}){return(0,z.jsx)(`span`,{className:`text-4xl`,children:new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).formatToParts(e||0).map((e,t)=>(0,z.jsx)(hl,{type:e.type,value:e.value},t))})}function hl({type:e,value:t}){switch(e){case`currency`:case`decimal`:case`fraction`:return(0,z.jsx)(`sup`,{className:`font-light text-xl`,children:t});default:return t}}function gl({alreadyUsingFree:e,clusterId:n,defaultValues:r,deploymentToPerformanceToPlan:i,harperVersions:a,mode:o,organization:s,organizationId:c,planTypes:l,regionLocationsColocated:u,regionLocationsDedicated:d,setSavedClusterState:f,startOffOnBilling:p}){let m=De(),h=fe(),g=s?.type===rc,_=s?.channel===`Akamai`?`linode`:void 0,v=xt(),{mutate:y,isPending:b}=Qs(),{mutate:S,isPending:C}=ec(),[ee,w]=(0,R.useState)(p),te=(0,R.useMemo)(()=>Hs(u?.sort(Is(`latencyDescription`))||[],`region`,`latencyDescription`),[u]),ne=(0,R.useMemo)(()=>Hs(d?.sort(Is(`latencyDescription`))||[],`region`,`latencyDescription`),[d]),T=(0,R.useCallback)((t,n)=>{let r=new Set,a=i?.[t.deploymentDescription]?.[t.performanceDescription];if(t.deploymentDescription===`Self-Hosted`)for(let e=0;e<t.instances.length;e++){let i=dl(t.instances[e]);r.has(i)?n.addIssue({code:`custom`,path:[`instances.${e}.fqdn`],message:`Every instance url must be unique!`}):r.add(i)}else{a?.priceUsd===0&&e&&n.addIssue({code:`custom`,path:[`performanceDescription`],message:`Only one free cluster is allowed per organization.`});let i=a?.deploymentDescription===`Dedicated`?ne:te;for(let e=0;e<t.regionPlans.length;e++){let o=t.regionPlans[e],s=i[o.regionName]?.[o.latencyDescription];r.has(o.regionName)?n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`You can only select a region once!`}):r.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!`}):ac(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,te,ne,i]),E=I({mode:`onChange`,resolver:j(kc.superRefine(T)),defaultValues:r}),[re,D]=(0,R.useState)(!0);(0,R.useEffect)(()=>{re&&r&&(f(null),D(!1))},[r,re,f]);let ie=E.watch(`clusterName`),ae=E.watch(`abbreviatedName`),O=E.watch(`deploymentDescription`),oe=E.watch(`performanceDescription`),se=E.watch(`regionPlans`),ce=E.watch(`instances`),le=O===`Dedicated`?ne:te,ue=O===`Dedicated`?d:u;(0,R.useEffect)(function(){let e=E.getValues();O&&(O===`Self-Hosted`?(e.abbreviatedName&&E.setValue(`abbreviatedName`,``),e.regionPlans.length&&E.setValue(`regionPlans`,[]),e.instances.length||E.setValue(`instances`,[{secure:`true`,fqdn:``,port:t}])):(e.fqdn&&E.setValue(`fqdn`,``),e.instances.length&&E.setValue(`instances`,[]),e.regionPlans.length||pl(E,l,ue)))},[E,l,ue,O]);let de=(0,R.useMemo)(()=>{let e=ic(oc(ie),Oc.maxLength);return{suggestedAbbreviatedName:e,fullHostName:`${ae||e}.${s.subdomain||`your-org`}.harperfabric.com`}},[ie,ae,s]),pe=(0,R.useMemo)(()=>i?.[O]?.[oe],[i,O,oe]);(0,R.useEffect)(function(){let e=pe?.allowedRegionIds;if(e?.length&&se?.length===1){let t=se[0],n=le?.[t.regionName]?.[t.latencyDescription];if(!e.includes(n?.id)){let t=ue?.filter(t=>e.includes(t.id)),n=t?.find(e=>e.region===`US`)||t?.[0];n&&(E.setValue(`regionPlans.0.regionName`,n.region),E.setValue(`regionPlans.0.latencyDescription`,n.latencyDescription),E.trigger())}}},[pe,se,E,le,ue]),(0,R.useEffect)(function(){if(O!==`Self-Hosted`&&Object.keys(le).length&&se.length)for(let e=0;e<se.length;e++)le[se[e].regionName]||E.setValue(`regionPlans.${e}.regionName`,``)},[E,le,O,se]);let me=pe?.priceUsd?O===`Self-Hosted`?ce.length*pe.priceUsd:se.reduce((e,t)=>{let n=le?.[t.regionName]?.[t.latencyDescription];return e+(n?pe.priceUsd*n.instanceCount/2:0)},0):0,he=(0,R.useCallback)(({creating:e,deploymentDescription:t})=>L.message(e?`Creating Cluster`:`Updating Cluster`,{description:(0,z.jsx)(Xs,{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}),[]),ge=(0,R.useCallback)(async({clusterId:e,sourceClusterId:t,creating:n,toastId:r,isSelfManaged:i})=>{if(t){let e=(await tc(c)).clusters?.find(e=>e.id===t);ts(e?.status)&&await Cs(t)}v.invalidateQueries({queryKey:[c],refetchType:`active`}),n||v.invalidateQueries({queryKey:[e],refetchType:`active`}),h.invalidate(),m(i?{to:`/${c}/${e}/instances`}:n?{to:`/${c}/${e}/starting-up`}:{to:`/${c}/${e}/scaling`}),E.reset(),L.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})},[v,h,m,c,E]),_e=(0,R.useCallback)(async()=>{let e=E.getValues(),t=[],r=i[e.deploymentDescription][e.performanceDescription],a=e.deploymentDescription===`Self-Hosted`;if(a)for(let n of e.instances)t.push({autoRenew:!0,instanceFqdn:n.fqdn,operationsApiPort:n.port||9925,operationsApiSecure:n.secure===`true`,planId:r.id});else for(let n of e.regionPlans){let e=le[n.regionName][n.latencyDescription];t.push({autoRenew:!0,planId:r.id,regionId:e.id})}f(null);let s=he({creating:!n,deploymentDescription:e.deploymentDescription}),l=()=>L.dismiss(s);n?S(o===`version`?{id:n,version:e.version,skipGtmWait:e.skipGtmWait}:{id:n,regionPlans:t,skipGtmWait:e.skipGtmWait},{onSuccess:t=>ge({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:a,creating:!1,toastId:s}),onError:l}):y({abbreviatedName:a?void 0:e.abbreviatedName||de.suggestedAbbreviatedName,autoRenew:!0,fqdn:a&&e.fqdn||void 0,name:e.clusterName,version:e.version,organizationId:c,regionPlans:t},{onSuccess:t=>ge({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:a,creating:!0,toastId:s}),onError:l})},[de.suggestedAbbreviatedName,n,i,E,ge,he,c,le,f,S,y]),ve=(0,R.useCallback)(()=>{if(o!==`version`&&me>0){w(!0);return}return _e()},[o,_e,me]),ye=(0,R.useCallback)(e=>{f(e?{clusterId:n,...E.getValues(),skipToBilling:!0}:null)},[n,E,f]),k=(0,R.useCallback)(()=>{w(!1)},[]),be=!g&&`mr-37.5`;return(0,z.jsxs)(z.Fragment,{children:[!g&&o!==`version`&&(0,z.jsxs)(`div`,{className:`absolute top-3 right-4 md:right-12 text-right`,children:[(0,z.jsx)(`dt`,{className:`font-light`,children:`Total Price`}),(0,z.jsx)(`dd`,{className:`font-bold`,children:(0,z.jsx)(ml,{price:me})})]}),(0,z.jsx)(V,{...E,children:ee?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`h1`,{className:x(`text-lg leading-none text-foreground font-semibold mb-4`,be),children:`Cluster Billing`}),(0,z.jsx)(`p`,{className:x(`text-muted-foreground text-sm mb-2`,be),children:`Please confirm the following billing details:`}),(0,z.jsx)(Tc,{clusterId:n,isPending:b||C,onGoBackToDetails:k,onSaveStateForBillingRedirect:ye,onSubmit:_e,organizationId:c,selectedPlan:pe})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`h1`,{className:x(`text-lg leading-none text-foreground font-semibold mb-4`,be),children:`Cluster Configuration`}),(0,z.jsx)(`p`,{className:x(`text-muted-foreground text-sm mb-6`,be),children:`Configure your Harper cluster and define deployment plans.`}),(0,z.jsx)(`form`,{id:`cluster-upsert-form`,name:`cluster-upsert-form`,onSubmit:E.handleSubmit(ve),children:(0,z.jsx)(ul,{calculatedNames:de,clusterId:n,deploymentToPerformanceToPlan:i,form:E,isPending:b||C,harperVersions:a,mode:o,regionLocations:ue,regionNameToLatencyToRegion:le,selectedDeployment:O,selectedPerformance:oe,selectedPlan:pe,totalPrice:me,isEnterprise:g,cloudProvider:_})})]})})]})}function _l(e){return e?.clusterName!==void 0}function vl(){let{organizationId:e,clusterId:t,mode:n}=N({strict:!1}),{create:r,update:i}=ga(e),{organization:a,cluster:o}=Ar({strict:!1}),[s,c]=Gi(qi.SavedClusterState,null),{data:l}=A(js(e)),{data:u}=A(Fs({availableHosts:!0,organizationId:e})),{data:d}=A(Fs({organizationId:e})),{data:f}=A(Ns()),p=(0,R.useMemo)(()=>{if(o){let e=o.instances?.map(e=>e.version).filter(Ni);if(f&&e){let t=e.sort(Ws).pop();return{...f,value:[!!t&&{name:`current`,version:t},...(f?.value||[]).filter(e=>t!==e.version&&(!t||Us(t,e.version)))].filter(Ni)}}}return f},[f,o]),m=(0,R.useMemo)(()=>{for(let e of a?.clusters??[])if(e.id!==o?.id&&l&&!ns(e.status)&&!ts(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]),h=(0,R.useMemo)(()=>Hs(l?.sort(Is(`priceUsd`))||[],`deploymentDescription`,`performanceDescription`),[l]),g=(0,R.useMemo)(()=>{if(!l||!p||!u||!d||t&&!o)return null;let e=o;if(s){if(_l(s))return{...s,clusterName:s.clusterName||``,abbreviatedName:s.abbreviatedName||``,version:s.version,deploymentDescription:s.deploymentDescription||``,performanceDescription:s.performanceDescription||``,fqdn:s.fqdn||``,regionPlans:s.regionPlans||[],instances:s.instances||[]};e=s}let n=l?.find(e=>e.id===o?.plans?.[0].planId),r=[],i=[],a=n?.deploymentDescription===`Dedicated`?d:u,c=fl(l,a,m),f=!1;if(e){if(e.plans){for(let t of e.plans)if(t.regionId){let e=a.find(e=>e.id===t.regionId);e&&r.push({regionName:e.region,latencyDescription:e.latencyDescription})}}if(!r.length&&e.instances){let t=e.instances.filter(e=>e.status&&!Za.includes(e.status)).sort(zs);for(let e of t)f=!0,i.push({fqdn:e.instanceFqdn,port:e.operationsApiPort,secure:e.operationsApiSecure?`true`:`false`})}}else c&&r.push(...c.regionPlans);!f&&!r.length&&r.push({regionName:``,latencyDescription:``});let h=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:h,deploymentDescription:n?.deploymentDescription??c?.deploymentDescription??``,performanceDescription:n?.performanceDescription??c?.performanceDescription??``,fqdn:f?e?.fqdn??``:``,instances:i,regionPlans:r}},[m,o,t,l,p,u,d,s]);return!g||!a||!l||!u||!d?(0,z.jsx)(ks,{children:(0,z.jsx)(Os,{centered:!0,text:`Loading...`})}):(o?.id?!i:!r)?(0,z.jsx)(ks,{children:(0,z.jsx)(Oi,{title:`Not Allowed`,error:{message:(0,z.jsxs)(z.Fragment,{children:[`You do not have permission to `,o?.id?`update`:`create`,` clusters in this org.`]})}})}):l.length===0?(0,z.jsx)(ks,{children:(0,z.jsx)(Oi,{title:`Cluster ${t?`Modification`:`Creation`} Not Currently Allowed`,error:{message:(0,z.jsxs)(z.Fragment,{children:[`There are no available deployment types right now! Please try again later, or `,(0,z.jsx)(Ds,{}),`.`]})}})}):(0,z.jsx)(ks,{className:`max-w-4xl mx-auto`,children:(0,z.jsx)(gl,{alreadyUsingFree:m,clusterId:t,defaultValues:g,deploymentToPerformanceToPlan:h,harperVersions:p,mode:n,organization:a,organizationId:e,planTypes:l,regionLocationsColocated:u,regionLocationsDedicated:d,setSavedClusterState:c,startOffOnBilling:_l(s)&&s.skipToBilling===!0})})}var yl={FAILED:0,UPDATING:1,PROVISIONING:2,RUNNING:3,TERMINATED:4},bl=yl.RUNNING;function xl(e,t){return e.status===t.status?e.name.localeCompare(t.name):(e.status?yl[e.status]??bl:bl)-(t.status?yl[t.status]??bl:bl)}function Sl(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 Cl(){let{organizationId:e}=N({strict:!1}),{create:t}=ga(e),{data:n,isSuccess:r}=je(nc(e)),[i]=Gi(qi.SavedClusterState,null),[a,o]=(0,R.useState)(``),s=(0,R.useCallback)(()=>o(``),[]),c=(0,R.useCallback)(e=>{o(e.currentTarget.value?.toLowerCase()||``)},[]),l=(0,R.useMemo)(()=>n?.clusters?.slice().filter(e=>!ns(e.status)).sort(xl)||[],[n?.clusters]),u=(0,R.useMemo)(()=>l.filter(Sl([`id`,`name`],a))||[],[a,l]);return n&&l.length===0&&t?(0,z.jsx)(vl,{}):i?(0,z.jsx)(kt,{to:`/${e}/new-cluster`}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{children:r?(0,z.jsxs)(`div`,{className:`flex w-full justify-end gap-2`,children:[(0,z.jsx)(q,{placeholder:`Filter by name`,className:`inline-block w-full text-xs`,value:a,onChange:c}),t&&(0,z.jsx)(k,{to:`new-cluster`,children:(0,z.jsxs)(g,{variant:`positive`,accessKey:`n`,children:[(0,z.jsx)(Rt,{}),` `,(0,z.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,z.jsx)(`u`,{children:`N`}),`ew `,(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Cluster`})]})]})})]}):null}),(0,z.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12 mb-4`,children:[u.map(e=>(0,z.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,z.jsx)(Es,{cluster:e})},e.id)),!u.length&&(0,z.jsxs)(`div`,{className:`col-span-1 md:col-span-12 text-center`,children:[(0,z.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,z.jsx)(g,{type:`button`,variant:`outline`,onClick:s,children:`Clear Filters`})]})]})})]})}function wl(){let e=URL.parse(location.href);return e?.hash?e.hash.startsWith(`#/`)?e.hash.slice(1):e.hash:`/`}function Tl(){return`/#`+wl()}function El(){let{organizationId:e}=N({strict:!1}),t=De(),n=new URLSearchParams(window.location.search).get(`setup_intent_client_secret`),{setup_intent_client_secret:r}=Ce({strict:!1}),[i]=Gi(qi.SavedClusterState,null),a=n||r,o=ft(),s=lc(e),c=(0,R.useCallback)(()=>{let e=i?i.clusterId?`../../${i.clusterId}/edit`:`../../new-cluster`:`../`;window.history.replaceState(null,``,Tl()),t({search:void 0,to:e})},[t,i]);return(0,R.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?(L.error(`Failed to process payment method details. Please try another payment method.`),c()):s(e.payment_method,c);break;case`processing`:L.warning(`Processing payment method. Please check back later.`),c();break;case`requires_payment_method`:L.error(`Failed to process payment method details. Please try another payment method.`),c();break;default:L.error(`Failed to process payment method details. Please try another payment method.`),c();break}}catch(e){console.error(e),L.error(`Failed to process payment method details. Please try another payment method.`),c()}})()},[a,c,e,s,o]),(0,z.jsx)(Os,{centered:!0})}function Dl(){return(0,z.jsx)(vc,{children:(0,z.jsx)(El,{})})}function Ol({clusterId:e,instanceId:t,organizationId:n},r){return`/`+[n,e,t&&`instance`,t,r].filter(Ni).join(`/`)}var kl=`flex items-center p-2 rounded-lg group`,Al={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-gray-700`},jl={className:`text-black bg-white pointer-events-none cursor-default`};function Ml(){let{organizationId:e}=N({strict:!1}),{update:t}=ma(e);return t?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,z.jsxs)(`div`,{className:`md:grid gap-4 md:grid-cols-12 min-h-[calc(100vh-theme(spacing.36))] mb-12`,children:[(0,z.jsxs)(`section`,{className:`col-span-1 text-foreground md:col-span-4 lg:col-span-3 md:border-r-1 border-b md:border-b-0 md:pr-4 border-gray-700`,children:[(0,z.jsx)(Nl,{}),(0,z.jsx)(Pl,{})]}),(0,z.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9`,children:(0,z.jsx)(Er,{})})]})})]}):(0,z.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.`})}function Nl(){let e=N({strict:!1});return(0,z.jsxs)(`div`,{className:`hidden md:block`,children:[(0,z.jsxs)(`span`,{className:kl,children:[(0,z.jsx)(Wr,{className:`inline-block`}),(0,z.jsx)(`h3`,{className:`ms-3 text-2xl font-extrabold text-foreground`,children:`Billing`})]}),(0,z.jsxs)(`ul`,{className:`border-t border-gray-700 pt-4 mt-4 space-y-2`,children:[(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Ol(e,`billing`),className:kl,activeOptions:{exact:!0},inactiveProps:Al,activeProps:jl,children:[(0,z.jsx)(it,{className:`inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Payment Method`})]})}),(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Ol(e,`billing/invoices`),className:kl,inactiveProps:Al,activeProps:jl,children:[(0,z.jsx)(ve,{className:`inline-block`}),(0,z.jsx)(`span`,{className:`ms-3`,children:`Invoices & Payments`})]})})]})]})}function Pl(){let e=N({strict:!1});return(0,z.jsxs)(`ul`,{className:`flex space-x-4 md:hidden py-2`,children:[(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Ol(e,`billing`),className:kl,activeOptions:{exact:!0},inactiveProps:Al,activeProps:jl,children:[(0,z.jsx)(it,{className:`inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Payment Method`})]})}),(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Ol(e,`billing/invoices`),className:kl,inactiveProps:Al,activeProps:jl,children:[(0,z.jsx)(ve,{className:`inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Invoices & Payments`})]})})]})}function Fl({className:e,containerClassName:t,...n}){return(0,z.jsx)(`div`,{"data-slot":`table-container`,className:d(`relative w-full overflow-x-auto`,t),children:(0,z.jsx)(`table`,{"data-slot":`table`,className:d(`w-full caption-bottom text-sm`,e),...n})})}function Il({className:e,...t}){return(0,z.jsx)(`thead`,{"data-slot":`table-header`,className:d(`[&_tr]:border-b`,e),...t})}function Ll({className:e,...t}){return(0,z.jsx)(`tbody`,{"data-slot":`table-body`,className:d(`[&_tr:last-child]:border-0`,e),...t})}function Rl({className:e,...t}){return(0,z.jsx)(`tr`,{"data-slot":`table-row`,className:d(`border-b border-grey-700 transition-colors`,e),...t})}function zl({className:e,...t}){return(0,z.jsx)(`th`,{"data-slot":`table-head`,className:d(`h-10 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function Bl({header:e,onColumnClick:t,...n}){let r=(0,R.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]),i=e.column.columnDef.enableSorting,a=e.column.columnDef.enableResizing,o=e.isPlaceholder?null:rn(e.column.columnDef.header,e.getContext()),s=(0,R.useCallback)(()=>{e.column.resetSize()},[e]);return(0,z.jsx)(zl,{...n,style:{width:`${e.getSize()}px`},className:i?`px-0`:`px-2`,children:(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[i?(0,z.jsxs)(g,{type:`button`,variant:`ghost`,className:d(`rounded-none`,!e.column.getIsSorted()||e.column.getIsSorted()===`asc`?`cursor-n-resize`:`cursor-s-resize`),onClick:r,children:[o,e.column.getIsSorted()===`asc`?(0,z.jsx)(hr,{}):e.column.getIsSorted()===`desc`?(0,z.jsx)(pn,{}):(0,z.jsx)(ln,{className:`text-gray-600`})]}):o,a&&(0,z.jsx)(g,{type:`button`,variant:`ghost`,className:`cursor-col-resize`,onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),onDoubleClick:s,style:{transform:e.column.getIsResizing()?`translateX(${e.getContext().table.getState().columnSizingInfo.deltaOffset}px)`:``},children:(0,z.jsx)(mn,{})})]})})}function Vl({className:e,...t}){return(0,z.jsx)(`td`,{"data-slot":`table-cell`,className:d(`align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function Hl({columns:e,data:t,isFetching:n,onRowClick:r,onColumnClick:i,sortingState:a,children:o}){let s=tr({data:t,columns:e,getCoreRowModel:dn(),getSortedRowModel:wr(),initialState:{sorting:a}});return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-end space-x-2 pb-4`,children:[(0,z.jsx)(`div`,{className:`grow lg:hidden`}),o,(0,z.jsx)(`div`,{className:`grow hidden lg:visible`})]}),(0,z.jsxs)(Fl,{containerClassName:`rounded-md bg-card dark:bg-black-dark`,children:[(0,z.jsx)(Il,{children:s.getHeaderGroups().map(e=>(0,z.jsx)(Rl,{className:`border-none`,children:e.headers.map(e=>(0,z.jsx)(Bl,{header:e,onColumnClick:i},e.id))},e.id))}),(0,z.jsx)(Ll,{className:`bg-background dark:bg-black border border-border dark:border-grey-700`,children:s.getRowModel().rows?.length?s.getRowModel().rows.map(e=>(0,z.jsx)(Rl,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>r?.(e),className:d(`hover:bg-muted/10 data-[state=selected]:bg-muted`,r&&`cursor-pointer`),children:e.getVisibleCells().map(e=>(0,z.jsx)(Vl,{className:`py-2 px-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,style:{width:`${e.column.getSize()}px`},children:rn(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,z.jsx)(Rl,{children:(0,z.jsx)(Vl,{colSpan:e.length,className:`h-24 text-center`,children:n?(0,z.jsx)(`div`,{children:(0,z.jsx)(Os,{className:`p-12`})}):(0,z.jsx)(`span`,{children:`No results.`})})})})]})]})}function Ul(e){switch(e){case`paid`:return`success`;case`void`:case`uncollectible`:return`destructive`;default:return`default`}}function Wl(e){return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(e)}function Gl(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 Kl=[{header:`Invoice Id`,accessorKey:`id`,enableSorting:!1},{header:`Status`,accessorKey:`status`,enableSorting:!1,cell:({cell:e})=>(0,z.jsx)(ds,{variant:Ul(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?Gl(r,t):[t?Gl(r,t):`-`,n?Gl(i,n):`-`].join(` to `)}},{header:`Amount Due`,accessorKey:`amountDue`,enableSorting:!1,cell:({cell:e})=>Wl(e.getValue()?e.getValue()/100:0)},{header:`Amount Paid`,accessorKey:`amountPaid`,enableSorting:!1,cell:({cell:e})=>Wl(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} @ ${Wl(e.amount/100)}`);return n.join(`
11
- `)}}];function ql(e){return(0,R.useCallback)(async()=>{L.loading(`Refreshing...`,{id:`refreshing`});let t=Date.now();await e(),Date.now()-t<500&&await p(500),L.success(`Refreshed!`,{id:`refreshing`})},[e])}async function Jl(e){let{data:t}=await s.get(`/Invoice/${e}`);return t}function Yl(e,t){return P({queryKey:[e,`invoices`],queryFn:()=>Jl(e),retry:!1,enabled:!!e,refetchInterval:t?1e4:void 0})}function Xl(){let{organizationId:e}=N({strict:!1}),{data:t}=A(nc(e)),{data:n,refetch:r,isLoading:i,isFetching:a,isRefetching:o}=A(Yl(t?.type!==`ENTERPRISE`&&t?.id,!1)),s=ql(r);return t?.type===`ENTERPRISE`?(0,z.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,z.jsx)(Ds,{}),`, we would love to talk!`]}):i?(0,z.jsx)(Os,{centered:!0}):!n||!n.length?(0,z.jsxs)(`span`,{children:[`Your invoices will be shown here once one is available! Want to explore your solution with Harper more?`,` `,(0,z.jsx)(Ds,{overEmail:!0}),`, we would love to talk!`]}):(0,z.jsx)(Hl,{data:n,columns:Kl,children:(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:s,accessKey:`r`,disabled:a||o,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]})})}function Zl(e){let t=F({getParentRoute:()=>e,path:`billing`,head:()=>({meta:[{title:`Billing — Harper Fabric`}]}),component:Ml}),n=F({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Payment Methods — Harper Fabric`}]}),component:wc}),r=F({getParentRoute:()=>t,path:`invoices`,head:()=>({meta:[{title:`Invoices — Harper Fabric`}]}),component:Xl}),i=F({getParentRoute:()=>t,path:`confirm`,head:()=>({meta:[{title:`Confirm Payment — Harper Fabric`}]}),component:Dl});return t.addChildren([n,r,i])}async function Ql(e){let{data:t}=await s.get(`/OrganizationRole/${e}`);return t}function $l(e){return P({queryKey:[e,`roles`],queryFn:()=>Ql(e),retry:!1,refetchInterval:10*1e3})}var eu=[{header:`Role Name`,accessorKey:`roleName`,enableSorting:!1},_r().display({header:`Users Assigned`,enableSorting:!1,id:`userIds`,cell:e=>!e.row.original.userIds||e.row.original.userIds.length===0?`No users assigned`:e.row.original.userIds.length})];async function tu(e){let{data:t}=await s.post(`/Role/`,e);return t}function nu(){return M({mutationFn:tu})}var ru=D({name:w().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:E(),delete:E()});D({roles:D({create:E(),delete:E(),update:E(),view:E()}),clusters:D({create:E(),delete:E(),update:E(),view:E(),resources:ae(D({id:w(),delete:E(),update:E(),view:E(),instances:D({create:E(),delete:E(),update:E(),view:E()})}))})});function iu(){let[e]=Xi(),t=Ki();return e===`dark`||e===`system`&&t===`dark`?`vs-dark`:`light`}var au={roles:{create:!0,view:!0,update:!0,delete:!0},clusters:{create:!0,view:!0,update:!0,delete:!0,resources:[]}};function ou({isModalOpen:e,setIsModalOpen:t}){let n=iu(),r=xt(),{organizationId:i}=N({strict:!1}),[a,o]=(0,R.useState)(!0),[s,c]=(0,R.useState)(JSON.stringify(au,null,2)),{mutate:l,isPending:u}=nu(),d=I({resolver:j(ru),defaultValues:{name:``,update:!1,delete:!1}}),f=(0,R.useCallback)(e=>{o(e.length===0)},[o]),p=(0,R.useCallback)(async e=>{let n=Hi(s);if(!n)return;let o={...e,...n,organizationId:i};e&&a&&l(o,{onSuccess:()=>{L.success(`Organization role added successfully!`),t(!1),r.invalidateQueries({queryKey:[i,`roles`],refetchType:`active`}),d.reset()},onError:e=>{L.error(`Failed to add organization role: ${e.message}`)}})},[a,s,l,d,r,t,i]);return(0,z.jsx)(J,{onOpenChange:t,open:e,children:(0,z.jsxs)(Y,{children:[(0,z.jsx)(Z,{children:`Add New Organization Role`}),(0,z.jsx)(ls,{children:`Set the new organization role permissions.`}),(0,z.jsx)(V,{...d,children:(0,z.jsxs)(`form`,{id:`org-add-role-form`,name:`org-add-role-form`,className:`grid grid-cols-2 gap-4 my-4`,onSubmit:d.handleSubmit(p),children:[(0,z.jsx)(U,{control:d.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Role Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:``,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:d.control,name:`update`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Can Update Organization`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:d.control,name:`delete`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Can Delete Organization`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`div`,{className:`col-span-2`,children:(0,z.jsx)(Mn,{theme:n,height:`300px`,defaultLanguage:`json`,onValidate:f,onChange:e=>{e&&c(e)},defaultValue:JSON.stringify(au,null,2)})}),(0,z.jsx)(X,{className:`col-span-2`,children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{variant:`destructiveOutline`,className:`rounded-full`,type:`button`,onClick:()=>t(!1),disabled:u,children:`Cancel`}),(0,z.jsx)(g,{variant:`submit`,className:`rounded-full`,disabled:u||!a||!d.formState.isValid,children:`Save Changes`})]})})]})})]})})}async function su({roleId:e}){let{data:t}=await s.delete(`/Role/${e}`,{id:e,deleted:!0});return t}function cu(){return M({mutationFn:({roleId:e})=>su({roleId:e})})}async function lu({roleId:e,updatedRoleInfo:t}){let{data:n}=await s.put(`/Role/${e}`,t);return n}function uu(){return M({mutationFn:({roleId:e,updatedRoleInfo:t})=>lu({roleId:e,updatedRoleInfo:t})})}function du({organizationId:e,roleId:t}){return P({queryKey:[e,`roles`,t],queryFn:()=>fu(t),refetchInterval:10*1e3})}async function fu(e){let{data:t}=await s.get(`/Role/${e}`);return t}function pu({onRoleDeleteClick:e,setIsConfirmingRoleDeletion:t,isRoleDeletionPending:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Z,{children:`Confirm Role Deletion`}),(0,z.jsx)(ls,{children:`Are you sure you want to delete this role? This action cannot be undone.`}),(0,z.jsxs)(X,{children:[(0,z.jsx)(g,{type:`button`,variant:`defaultOutline`,className:`rounded-full`,onClick:()=>t(!1),children:`Cancel`}),(0,z.jsx)(g,{variant:`destructiveOutline`,className:`rounded-full`,onClick:e,disabled:n,children:n?`Deleting...`:`Delete Role`})]})]})}function mu({data:e,isModalOpen:t,closeModal:n}){let r=xt(),{data:i}=je(du({roleId:e.id,organizationId:e.organizationId})),a=vi(),o=a.user&&a.user?.roles?.[e.organizationId]?.role===e.roleName,{update:s,remove:c}=ha(e.organizationId),{mutate:l,isPending:u}=uu(),{mutate:d,isPending:f}=cu(),p=iu(),[m,h]=(0,R.useState)(!1),_=I({resolver:j(ru),defaultValues:{name:e.roleName,update:i.organization.update||!1,delete:i.organization.delete||!1}}),v=(0,R.useCallback)(()=>{d({roleId:e.id},{onSuccess:()=>{L.success(`Role deleted successfully!`),n(!0),_.reset()},onError:e=>{L.error(`Error`,{description:`Failed to delete role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}})},[e.id,d,_,n]),[y,b]=(0,R.useState)(!0),[x,S]=(0,R.useState)(JSON.stringify({roles:{...i.organization.roles},clusters:{...i.organization.clusters}},null,2)),C=(0,R.useCallback)(e=>{b(e.length===0)},[b]),ee=(0,R.useCallback)(async t=>{if(!s)return;let i=Hi(x);if(!i)return;let a={...t,...i,organizationId:e.organizationId};x&&y&&l({roleId:e.id,updatedRoleInfo:a},{onSuccess:async()=>{L.success(`Role updated successfully!`),await r.invalidateQueries({queryKey:[e.organizationId,`roles`,e.id]}),n(!1),_.reset()},onError:e=>{L.error(`Error`,{description:`Failed to update role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}})},[n,e.id,e.organizationId,_,y,r,i,s,x,l]);return(0,z.jsx)(J,{onOpenChange:(0,R.useCallback)(()=>n(!1),[n]),open:t,children:(0,z.jsx)(Y,{children:m?(0,z.jsx)(pu,{onRoleDeleteClick:v,setIsConfirmingRoleDeletion:h,isRoleDeletionPending:f}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Z,{children:[o||!s?`View`:`Edit`,` Organization Role "`,e.roleName,`"`]}),(0,z.jsx)(V,{..._,children:(0,z.jsxs)(`form`,{id:`org-edit-role-form`,name:`org-edit-role-form`,className:`grid grid-cols-2 gap-4 my-4`,onSubmit:_.handleSubmit(ee),children:[(0,z.jsx)(U,{control:_.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Role Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:``,...e,disabled:!0,readOnly:!0})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:_.control,name:`update`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Can Update Organization`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6 ml-2`,disabled:o||!s,readOnly:o||!s,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:_.control,name:`delete`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Can Delete Organization`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6 ml-2`,disabled:o||!s,readOnly:o||!s,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`div`,{className:`col-span-2`,children:(0,z.jsx)(Mn,{theme:p,height:`300px`,defaultLanguage:`json`,onValidate:C,onChange:e=>{e&&S(e)},options:o||!s?{readOnly:!0}:void 0,defaultValue:x})}),!o&&(c||s)&&(0,z.jsx)(X,{className:`col-span-2`,children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[c&&(0,z.jsx)(g,{type:`button`,variant:`destructiveOutline`,className:`rounded-full`,onClick:()=>h(!0),disabled:u,children:`Delete Role`}),s&&(0,z.jsx)(g,{variant:`submit`,className:`rounded-full`,disabled:!y||u||!_.formState.isValid||!_.formState.isDirty,children:`Save Changes`})]})})]})})]})})})}function hu(){let e=De(),t=xt(),{organizationId:n,orgRoleId:r}=N({strict:!1}),{create:i}=ha(n),{data:a,refetch:o,isFetching:s,isRefetching:c}=je($l(n)),l=(0,R.useMemo)(()=>a&&a?.find(e=>e.id===r),[a,r]),u=!!r&&!!l,[d,f]=(0,R.useState)(!1),p=(0,R.useCallback)(async(i,a)=>{await e({to:[r?`..`:``,i].filter(Boolean).join(`/`)}),a&&await t.invalidateQueries({queryKey:[n,`roles`],refetchType:`active`})},[r,e,t]),m=(0,R.useCallback)(()=>{f(!0)},[f]),h=(0,R.useCallback)(e=>p(e.original.id,!1),[p]),_=(0,R.useCallback)(e=>p(void 0,e),[p]),v=ql(o);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsxs)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,z.jsxs)(Hl,{data:a,columns:eu,onRowClick:h,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:v,accessKey:`r`,disabled:s||c,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),i&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:d,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),i&&(0,z.jsx)(ou,{isModalOpen:d,setIsModalOpen:f}),u&&(0,z.jsx)(mu,{data:l,isModalOpen:u,closeModal:_})]})})]})}var gu=[{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},_r().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}],_u=oe.object({email:io.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:oe.string().nonempty({error:`Please select a role.`})});async function vu(e){let{data:t}=await s.post(`/OrganizationRole/`,e);return t}function yu(){return M({mutationFn:e=>vu(e)})}oe.object({email:io.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:oe.string().nonempty({error:`Please select a role.`})});async function bu(e){let{data:t}=await s.post(`/UserInvite/`,e);return t}function xu(){return M({mutationFn:e=>bu(e)})}function Su({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let{organizationId:r}=N({strict:!1}),{data:i}=je($l(r)),[a,o]=(0,R.useState)(!1),s=I({resolver:j(_u),defaultValues:{email:``,roleId:``}}),{mutate:c,isPending:l}=yu(),{mutate:u,isPending:d}=xu(),f=(0,R.useCallback)(async e=>{e&&(a?u:c)(e,{onSuccess:()=>{let r=e.roleId;s.reset(),s.setValue(`roleId`,r),t(),L.success(`User invited successfully!`),n(!1),o(!1)},onError:e=>{e?.status===404&&o(!0)}})},[c,s,u,t,n,a]);return(0,z.jsx)(J,{onOpenChange:()=>{n(!1),o(!1),s.reset()},open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...s,children:(0,z.jsxs)(`form`,{id:`org-add-user-form`,name:`org-add-user-form`,onSubmit:s.handleSubmit(f),className:`grid gap-4 my-4`,children:[(0,z.jsx)(cs,{children:(0,z.jsx)(Z,{children:a?`Invite User`:`Add User`})}),(0,z.jsx)(U,{control:s.control,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`email`,enterKeyHint:`next`,autoComplete:`email`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:s.control,name:`roleId`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Roles`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:t=>e.onChange(t),children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Role`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)(Lc,{children:`Role`}),i?.map(e=>(0,z.jsx)($,{value:e.id,children:e.roleName},e.id))]})})]})})}),(0,z.jsx)(K,{})]})}),a&&(0,z.jsxs)(ls,{className:`p-3 my-5 text-white rounded-md bg-amber-600 flex`,children:[(0,z.jsx)(ue,{className:`inline-block size-12 pr-2`}),(0,z.jsx)(`span`,{children:`This person doesn’t have a Fabric account. Do you want to invite them?`})]}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:l||d,children:[(0,z.jsx)(Pe,{}),` `,a?`Invite User`:`Add User`]})})})]})})})})}async function Cu({roleId:e,userId:t}){let{data:n}=await s.delete(`/OrganizationRole/role/${e}/user/${t}`);return n}function wu(){return M({mutationFn:({roleId:e,userId:t})=>Cu({roleId:e,userId:t})})}function Tu(e){let[t,n]=(0,R.useState)(e||!1);return[t,(0,R.useCallback)(e=>{n(typeof e==`boolean`?e:e.target.checked)},[])]}function Eu({data:e,readOnly:t,canRemove:n,orgRole:r,selectedRoles:i,setChangesMade:a}){let{mutate:o,isPending:s}=yu(),{mutate:c,isPending:l}=wu(),u=!!i[r.roleName],[d,f]=(0,R.useState)(u),[p,m]=Tu(u);return(0,R.useEffect)(()=>{p!==d&&(p?o({email:e.email,roleId:r.id},{onSuccess:()=>{f(p),a(!0),L.success(`Role added successfully`)}}):c({userId:e.id,roleId:r.id},{onSuccess:()=>{f(p),a(!0),L.success(`Role removed successfully`)}}))},[o,e.email,e.id,p,r.id,c,a,d]),(0,z.jsxs)(Ya,{className:`flex`,children:[(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,disabled:t||s||l||!n&&p,checked:p,onChange:m}),(0,z.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:r.roleName})]},r.id)}function Du({closeModal:e,data:t,isModalOpen:n,onUserUpdated:r}){let{organizationId:i}=N({strict:!1}),a=vi(),{update:o,remove:s}=ha(i),c=a.user?.email===t.email,{data:l}=je($l(i)),u=(0,R.useMemo)(()=>t.roles?Vs(t.roles,`roleName`):{},[t]),[d,f]=(0,R.useState)(!1);return(0,z.jsx)(J,{onOpenChange:d?r:e,open:n,children:(0,z.jsxs)(Y,{className:`sm:max-w-[750px]`,children:[(0,z.jsx)(cs,{children:(0,z.jsxs)(Z,{children:[o?`Edit `:`View `,` `,t.email,` `,c?`(yourself)`:``]})}),o&&(0,z.jsxs)(ls,{children:[`To remove `,c?`your self`:`this user`,` from the organization, uncheck all of the boxes below.`]}),l.map(e=>(0,z.jsx)(Eu,{readOnly:!o,canRemove:s,data:t,orgRole:e,selectedRoles:u,setChangesMade:f},e.id))]})})}function Ou(e,t){return e.email>t.email?1:-1}function ku(){let e=De(),{organizationId:t,orgUserId:n}=N({strict:!1}),{update:r}=ha(t),{data:i,refetch:a,isFetching:o,isRefetching:s}=je($l(t)),c=(0,R.useMemo)(()=>{let e={};for(let t of i)if(t.users)for(let n of t.users)e[n.id]||(e[n.id]={...n,roles:[]}),e[n.id].roles.push(t);return Object.values(e).sort(Ou)},[i]),l=(0,R.useMemo)(()=>c?.find(e=>e.id===n),[c,n]),u=(0,R.useCallback)(t=>{e({to:[n?`..`:``,t].filter(Boolean).join(`/`)})},[n,e]),d=!!n&&!!l,[f,p]=(0,R.useState)(!1),[m]=(0,R.useState)({attribute:`email`,descending:!1}),h=(0,R.useMemo)(()=>[{desc:m.descending,id:m.attribute}],[m]),_=(0,R.useCallback)(()=>{p(!0)},[p]),v=(0,R.useCallback)(()=>{a(),p(!1)},[a,p]),y=(0,R.useCallback)(e=>{u(e.original.id)},[u]),b=(0,R.useCallback)(()=>{u(void 0)},[u]),x=(0,R.useCallback)(()=>{a(),u(void 0)},[u,a]),S=ql(a);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,z.jsxs)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,z.jsxs)(Hl,{data:c,isFetching:o||s,columns:gu,onRowClick:y,sortingState:h,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,z.jsx)(wt,{}),` `,(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:_,accessKey:`a`,disabled:f,children:[(0,z.jsx)(Rt,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),r&&(0,z.jsx)(Su,{isModalOpen:f,onChangesSaved:v,setIsModalOpen:p}),d&&(0,z.jsx)(Du,{closeModal:b,data:l,isModalOpen:d,onUserUpdated:x})]})})]})}var Au=D({couponId:w().nonempty({message:`Please enter a coupon ID.`}).trim()});async function ju({organizationId:e,couponId:t}){let{data:n}=await s.post(`/Coupon`,{organizationId:e,couponId:t},{validateStatus:e=>e>=200&&e<400||e===400||e===409});return n}function Mu(){return M({mutationFn:ju})}function Nu({organizationId:e,organizationName:t,isOpen:n,onClose:r}){let{mutate:i,isPending:a}=Mu(),o=I({resolver:j(Au),defaultValues:{couponId:``}}),{handleSubmit:s,control:c,reset:l}=o;(0,R.useEffect)(()=>{n&&l({couponId:``})},[n,l]);let u=(0,R.useCallback)(n=>{i({organizationId:e,couponId:n.couponId},{onSuccess:i=>{i?L.error(`Error`,{description:i||`Failed to add coupon.`}):(L.success(`Success`,{description:`Coupon "${n.couponId}" added to ${t||e}.`}),r())}})},[i,e,t,r]);return(0,z.jsx)(J,{open:n,onOpenChange:e=>!e&&r(),children:(0,z.jsxs)(Y,{children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Add Coupon`}),(0,z.jsxs)(ls,{children:[`Add a coupon code to`,` `,t||e,`. This coupon will be applied to the next billing cycle.`,(0,z.jsx)(`br`,{}),`Coupons can be created in our`,` `,(0,z.jsx)(`a`,{href:`https://dashboard.stripe.com/`,target:`_blank`,rel:`noreferrer`,className:`text-purple hover:underline`,children:`Stripe Dashboard`}),`.`]})]}),(0,z.jsx)(V,{...o,children:(0,z.jsxs)(`form`,{onSubmit:s(u),children:[(0,z.jsx)(`div`,{className:`grid gap-4 py-4`,children:(0,z.jsx)(U,{control:c,name:`couponId`,render:({field:e})=>(0,z.jsxs)(W,{className:`grid items-center gap-4`,children:[(0,z.jsx)(G,{children:`Coupon ID`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,placeholder:`e.g. 100OFF`,disabled:a})}),(0,z.jsx)(K,{})]})})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(g,{type:`button`,variant:`ghost`,onClick:r,disabled:a,children:`Cancel`}),(0,z.jsx)(g,{type:`submit`,disabled:a,children:a?`Adding...`:`Add Coupon`})]})]})})]})})}function Pu({organizationRole:e,onDeleteOrgModal:t}){let{organizationId:n,organizationName:r,roleName:i}=e,{remove:a,update:o}=ma(n),s=o,{view:c}=ha(n),l=yi(),[u,d]=(0,R.useState)(!1),f=(0,R.useCallback)(()=>{t(e)},[t,e]);return(0,z.jsxs)(xi,{className:`relative h-full justify-between hover:shadow-lg transition-shadow duration-200`,children:[(0,z.jsxs)(Si,{children:[(0,z.jsxs)(wi,{className:`flex items-center justify-between`,children:[(0,z.jsx)(`span`,{className:`truncate`,children:n}),a&&(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{className:`p-4 -m-4 -mr-6 hover:text-foreground`,children:(0,z.jsx)(Bn,{"aria-label":`Options`})}),(0,z.jsxs)(ms,{children:[(0,z.jsx)(_s,{className:`text-gray-600 text-xs`,children:`Options`}),(0,z.jsx)(vs,{}),(0,z.jsx)(k,{to:`${n}`,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(Ln,{className:`size-4 mr-2 text-blue-500`}),`Clusters`]})}),c&&(0,z.jsx)(k,{to:`${n}/roles`,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(Hn,{className:`size-4 mr-2 text-purple`}),`Roles`]})}),c&&(0,z.jsx)(k,{to:`${n}/users`,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(En,{className:`size-4 mr-2 text-orange-500`}),`Users`]})}),s&&(0,z.jsx)(k,{to:`${n}/billing`,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(it,{className:`size-4 mr-2 text-green-500`}),`Billing`]})}),l&&(0,z.jsxs)(hs,{onClick:()=>d(!0),children:[(0,z.jsx)(Ot,{className:`size-4 mr-2 text-pink-500`}),`Add Coupon`]}),(0,z.jsx)(vs,{}),a&&(0,z.jsxs)(hs,{className:`focus:bg-red/70 focus:text-white`,onClick:f,children:[(0,z.jsx)(Ir,{className:`size-4 mr-2 text-red-500`}),`Delete`]})]})]})]}),(0,z.jsx)(Ci,{children:(0,z.jsx)(`h2`,{children:r})})]}),(0,z.jsxs)(Ti,{className:`flex justify-between`,children:[(0,z.jsx)(ds,{children:Ua(i)}),(0,z.jsx)(k,{to:n,className:`text-sm`,"aria-label":`View ${r}`,title:`View ${r}`,children:(0,z.jsxs)(`span`,{className:`py-2 transition-all duration-100 ease-in-out border-0 hover:border-b-2`,children:[`View `,(0,z.jsx)(Un,{className:`inline-block`})]})})]}),(0,z.jsx)(Nu,{organizationId:n,organizationName:r,isOpen:u,onClose:()=>d(!1)})]})}async function Fu(e){let{data:t}=await s.delete(`/Organization/${e}`);return t}function Iu(){return M({mutationFn:e=>Fu(e)})}async function Lu(e){let{data:t}=await s.post(`/Organization/`,{...e});return t}function Ru(){return M({mutationFn:e=>Lu(e)})}var zu=w().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.`}),Bu=D({name:w().max(255,{error:`Name cannot be longer than 255 characters.`}),subdomain:ne([ie(``),T(),zu]).optional()});function Vu(){let{user:e}=vi(),t=De(),n=I({resolver:j(Bu),defaultValues:{name:``,subdomain:``}}),{setFocus:r,watch:i}=n;(0,R.useEffect)(()=>{r(`name`)},[r]);let a=`${e?.firstname} ${e?.lastname} Org`,o=i(`name`)||a,s=i(`subdomain`),u=(0,R.useMemo)(()=>{let e=ic(oc(o),zu.maxLength);return{suggestedSubdomain:e,fullHostName:`future-cluster-names.${s||e}.harperfabric.com`}},[o,s]),{mutate:d,isPending:f}=Ru(),p=xt(),h=(0,R.useCallback)(async e=>{d({name:e.name||a,subdomain:e.subdomain||u.suggestedSubdomain},{onSuccess:e=>{p.invalidateQueries({queryKey:l,refetchType:`active`}),c.reloadUser(m),t({to:`/${e.id}`})}})},[u.suggestedSubdomain,p,d,a,t]);return(0,z.jsx)(z.Fragment,{children:(0,z.jsx)(V,{...n,children:(0,z.jsxs)(`form`,{id:`org-add-form`,name:`org-add-form`,onSubmit:n.handleSubmit(h),className:`grid gap-6 text-foreground max-w-xl`,children:[(0,z.jsx)(U,{control:n.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,maxLength:Bu.shape.name.maxLength,autoCapitalize:`words`,placeholder:a,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:n.control,name:`subdomain`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Subdomain`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,maxLength:zu.maxLength,autoCapitalize:`none`,placeholder:u.suggestedSubdomain,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Full Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(`span`,{children:u.fullHostName})}),(0,z.jsx)(K,{})]}),(0,z.jsx)(X,{children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:f,children:[`Create New Organization `,(0,z.jsx)(Un,{})]})})]})})})}function Hu(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,z.jsx)(Vu,{})})]})}function Uu(){let e=xt(),{data:t}=je(i()),{mutate:n,isPending:r}=Iu(),[a,o]=(0,R.useState)(!1),[s,c]=(0,R.useState)(null),[l,u]=(0,R.useState)(``),d=(0,R.useCallback)(()=>u(``),[]),f=(0,R.useMemo)(()=>{let e=t?.roles||{},n=Object.values(e);return Object.keys(e).map((e,t)=>({organizationId:e,organizationName:n[t].organizationName,roleName:n[t].role})).filter(Sl([`organizationId`,`organizationName`],l)).sort((e,t)=>(e.organizationName||``)>(t.organizationName||``)?1:-1)||[]},[l,t?.roles]),p=(0,R.useCallback)(e=>{u(e.currentTarget.value?.toLowerCase()||``)},[]),m=(0,R.useCallback)(t=>{t?.organizationId&&n(t.organizationId,{onSuccess:()=>{L.success(`Success`,{description:`Organization successfully deleted.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),e.invalidateQueries({queryKey:[]}),o(!1)},onError:()=>o(!1)})},[n,e,o]),h=(0,R.useCallback)(e=>{c(e),o(!0)},[]),{createCluster:_}=Ce({strict:!1});return f.length===1&&!l.length&&_?(0,z.jsx)(kt,{to:`/${f[0].organizationId}/new-cluster`,replace:!0}):!f.length&&!l.length?(0,z.jsx)(Hu,{}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{children:(0,z.jsxs)(`div`,{className:`flex w-full justify-end gap-2`,children:[(0,z.jsx)(q,{placeholder:`Filter by name`,className:`inline-block w-full text-xs`,value:l,onChange:p}),(0,z.jsx)(k,{to:`/new-org`,children:(0,z.jsxs)(g,{variant:`positive`,accessKey:`n`,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,z.jsx)(`u`,{children:`N`}),`ew `,(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Organization`})]})]})})]})}),(0,z.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,z.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12`,children:[f.map(e=>(0,z.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,z.jsx)(Pu,{organizationRole:e,onDeleteOrgModal:h})},e.organizationId)),!f.length&&(0,z.jsxs)(`div`,{className:`col-span-1 md:col-span-12 text-center`,children:[(0,z.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,z.jsx)(g,{variant:`outline`,onClick:d,children:`Clear Filters`})]})]})}),s&&(0,z.jsx)(us,{typeOfThingBeingDeleted:`organization`,nameOfThingBeingDeleted:s.organizationName,isModalOpen:a,setIsModalOpen:()=>o(!1),deletionConfirmed:()=>m(s),deletionPending:r})]})}function Wu(){let{isLoading:e}=_i(),{createCluster:t}=Ce({strict:!1}),[,n]=Gi(qi.SavedClusterState,null);return(0,R.useEffect)(()=>{t&&n(t)},[t,n]),e?(0,z.jsx)(Os,{className:`fixed z-50 translate-1/2`}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,z.jsx)(wa,{})}),(0,z.jsx)(`main`,{children:(0,z.jsx)(Er,{})})]})}var Gu=[`/`,`/forgot-password`,`/reset-password`,`/sign-in`,`/sign-up`,`/verify-email`];function Ku(){let e=wl();return!Gu.includes(e)&&{redirect:e}}var qu=F({getParentRoute:()=>zi,id:`_dashboardLayout`,component:Wu,beforeLoad:({context:e})=>{let t=e.authentication[m];if(t&&!t.isLoading&&!t.user)throw rt({to:`/sign-in`,search:Ku()})}}),Ju=F({getParentRoute:()=>qu,id:`_orgsLayout`});F({getParentRoute:()=>Ju,path:`/`,head:()=>({meta:[{title:`Organizations — Harper Fabric`}]}),component:Uu}),F({getParentRoute:()=>Ju,path:`/new-org`,head:()=>({meta:[{title:`New Organization — Harper Fabric`}]}),component:Hu});var Yu=F({getParentRoute:()=>Ju,path:`$organizationId`,beforeLoad:async e=>({organization:await e.context.queryClient.ensureQueryData(nc(e.params.organizationId))})});F({getParentRoute:()=>Yu,path:`/roles`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:hu}),F({getParentRoute:()=>Yu,path:`/roles/$orgRoleId`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:hu}),F({getParentRoute:()=>Yu,path:`/users`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:ku}),F({getParentRoute:()=>Yu,path:`/users/$orgUserId`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:ku}),Zl(Yu);var Xu=F({getParentRoute:()=>Yu,id:`_clusterLayout`});F({getParentRoute:()=>Xu,path:`/`,head:()=>({meta:[{title:`Clusters — Harper Fabric`}]}),component:Cl}),F({getParentRoute:()=>Yu,path:`/new-cluster`,head:()=>({meta:[{title:`New Cluster — Harper Fabric`}]}),component:vl}),F({getParentRoute:()=>Qu,path:`/edit`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:vl}),F({getParentRoute:()=>Qu,path:`/edit/$mode`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:vl});function Zu(){return(0,z.jsx)(Er,{})}var Qu=F({getParentRoute:()=>Xu,path:`$clusterId`,component:Zu,beforeLoad:async({context:e,params:t})=>({cluster:await e.queryClient.ensureQueryData(ro(t.clusterId))})});function $u({children:e,className:t}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:x(`mt-32 px-4 py-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] flex justify-center`,t),children:e})]})}var ed=new Set([`com`,`co`,`org`,`net`,`edu`,`gov`,`mil`,`me`,`biz`,`info`,`ac`,`or`,`ne`,`go`,`lg`,`asn`,`id`,`nom`,`sch`,`ltd`,`plc`]);function td(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&&ed.has(r)?3:2;return t.length<=i?`@`:t.slice(0,-i).join(`.`)}function nd({cluster:{fqdn:e},domain:{domain:t,id:n}}){let r=td(t),[i,a,o]=Ts(r,e||``,n);return(0,z.jsxs)(`div`,{className:`grid gap-4 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,z.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,z.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:i,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:a,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800 rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:o,children:(0,z.jsx)(st,{className:`w-3 h-3`})})]})}),(0,z.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 rd({certificate:e,domain:t,cluster:n}){let r=td(t.domain),[i,a,o]=Ts(r,n.fqdn||``,t.id),s=(0,R.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,z.jsxs)(`div`,{className:`w-full max-w-2xl border border-border/50 rounded-md p-4 bg-gray-900/20`,children:[(0,z.jsxs)(`div`,{className:`mb-4`,children:[(0,z.jsx)(`div`,{className:`w-full h-1.5 rounded-full overflow-clip flex shadow-sm bg-gray-800`,children:(0,z.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,z.jsx)(`div`,{className:`text-[10px] text-muted-foreground font-light mt-1 italic`,children:s.text})]}),(0,z.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] text-sm`,children:[(0,z.jsx)(`div`,{className:`col-span-1 text-xs text-muted-foreground`,children:`CNAME:`}),(0,z.jsxs)(`div`,{className:`col-span-1 flex gap-2 items-center flex-wrap`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800 px-2 py-0.5 rounded text-xs`,children:[(0,z.jsx)(`span`,{className:`truncate max-w-[150px]`,title:r,children:r}),(0,z.jsx)(g,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:i,title:`Copy Name`,children:(0,z.jsx)(st,{className:`w-3 h-3`})})]}),(0,z.jsx)(id,{}),(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800 px-2 py-0.5 rounded text-xs`,children:[(0,z.jsx)(`span`,{className:`truncate max-w-[200px]`,title:n.fqdn||``,children:n.fqdn}),(0,z.jsx)(g,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:a,title:`Copy Target`,children:(0,z.jsx)(st,{className:`w-3 h-3`})})]})]}),(0,z.jsx)(`div`,{className:`col-span-1 text-[10px] text-muted-foreground`,children:`Domain ID:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800/50 px-2 py-0.5 rounded text-[10px] text-muted-foreground italic`,children:[(0,z.jsx)(`span`,{className:`truncate max-w-[200px]`,children:t.id}),(0,z.jsx)(g,{type:`button`,variant:`ghost`,size:`sm`,className:`h-3 w-3 p-0`,onClick:o,title:`Copy ID`,children:(0,z.jsx)(st,{className:`w-2.5 h-2.5`})})]})})]})]})}function id(){return(0,z.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,z.jsx)(`path`,{d:`M5 12h14`}),(0,z.jsx)(`path`,{d:`m12 5 7 7-7 7`})]})}function ad(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,searchAttribute:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l}=e;return P({enabled:t,queryKey:[n,r,i,`search_by_value`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l],retry:!1,staleTime:6e4,gcTime:5e3,queryFn:()=>od(e)})}async function od({instanceClient:e,databaseName:t,tableName:n,searchAttribute:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,headers:c}){let l=i.attribute.length&&!(i.attribute===r&&!i.descending),u=await e.post(`/`,{operation:`search_by_value`,get_attributes:[`*`],database:t,table:n,search_attribute:r,search_value:`*`,sort:l?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:c,validateStatus:e=>e>=200&&e<400||e===404});return u.status===404?{data:[]}:u}function sd(e){return P({queryKey:[e,`ChallengeCertificate`],queryFn:async()=>{if(!e)return[];let{data:t}=await od({searchAttribute:`domain`,entityId:e,databaseName:`data`,tableName:`ChallengeCertificate`,sort:{attribute:`domain`,descending:!0},instanceClient:a({id:e,forceFabricConnect:!0}),onlyIfCached:!1,pageIndex:0,pageSize:100});return t},enabled:!!e,refetchInterval:5e3})}function cd(e){return A(sd(e))}function ld({domain:{challengeToken:e,challengeTxtRecord:t,domain:n,id:r},cluster:{fqdn:i}}){let a=td(n),[o,s,c,l,u]=Ts(t,e,a,i||``,r);return(0,z.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,z.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,z.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`TXT`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:o,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Content:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:s,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.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,z.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:c,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:l,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800 rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:u,children:(0,z.jsx)(st,{className:`w-3 h-3`})})]})}),(0,z.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 ud({clusterId:e,domainIds:t,generateDomainCerts:n}){let{data:r}=await s.put(`/Cluster/${e}`,{domainIds:t,generateDomainCerts:n},{timeout:0});return r}function dd(){return M({mutationFn:e=>ud(e)})}oe.object({domainId:oe.string()});async function fd(e){let{data:t}=await s.delete(`/Domain/${e.domainId}`);return t}function pd(){return M({mutationFn:e=>fd(e)})}function md(e){return[...new Set(e)]}var hd=_r();function gd(e,t,n){let{data:r}=cd(e.id),i=(0,R.useMemo)(()=>!!r?.some(e=>!e.issueDate||e.inProgress),[r]),{mutate:a,isPending:o}=dd(),{mutate:s,isPending:c}=pd(),l=o||c,u=(0,R.useCallback)((t,n)=>{if(!es(e.status)){L.error(`Cluster is currently `+e.status,{description:`To bind a domain, it must be running.`});return}a({clusterId:e.id,domainIds:md((e.domainIds?.slice()||[]).concat([t])),generateDomainCerts:n},{onSuccess:()=>{Mi.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),L.success(`Domain bound!`+(n?` Certificates are being generated in the background now.`:``))}})},[a,e]),d=(0,R.useCallback)(t=>{s({domainId:t},{onSuccess:()=>{Mi.invalidateQueries({queryKey:[e.organizationId,`domains`],refetchType:`active`}),L.success(`Domain removed!`)}})},[s]),f=(0,R.useCallback)(t=>{a({clusterId:e.id,domainIds:(e.domainIds?.slice()||[]).filter(e=>e!==t),generateDomainCerts:!1},{onSuccess:()=>{Mi.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),L.success(`Domain unbound!`)}})},[s]);return(0,R.useMemo)(()=>[hd.display({id:`select`,header:`Bind`,size:50,cell:r=>{let a=r.row.original;return a.status===`ACTIVE`&&!a.clusterId&&!ys(e)?(0,z.jsx)(`label`,{className:`p-10 -m-10`,children:(0,z.jsx)(`input`,{type:`checkbox`,checked:t.includes(a.id),onChange:()=>n(a.id),disabled:l||i})}):null}}),hd.display({header:`Domains`,id:`domain`,enableSorting:!1,size:150,cell:e=>{let t=e.row.original;return(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{children:t.domain}),(0,z.jsx)(g,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l||!!t.clusterId,onClick:()=>d(t.id),children:`Remove Domain`})]})}),(0,z.jsx)(Va,{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!`})]})}}),hd.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,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{children:`Bound to this cluster`}),i&&(!i.issueDate||i.inProgress)&&(0,z.jsx)(`div`,{className:`py-2`,children:(0,z.jsx)(rd,{certificate:i,domain:n,cluster:e})}),(0,z.jsx)(g,{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,z.jsx)(ld,{domain:n,cluster:e}):ys(e)?`Cannot be associated with this self-managed cluster.`:n.status===`ACTIVE`&&!n.clusterId?(0,z.jsx)(nd,{cluster:e,domain:n}):n.status}})],[e,u,l,r,i,t,n])}var _d=oe.object({domain:oe.string(),organizationId:oe.string()});async function vd(e){let{data:t}=await s.post(`/Domain/`,e);return t}function yd(){return M({mutationFn:e=>vd(e)})}async function bd(e){let{data:t}=await s.post(`/Domain/${e}/validate`);return t}async function xd(e){let{data:t}=await s.get(`/Domain/?organizationId=${e}`);return t}function Sd(e){return P({queryKey:[e,`domains`],queryFn:()=>xd(e)})}function Cd(){let{organizationId:e,clusterId:t}=N({strict:!1}),{data:n}=je(ro(t,!0)),{update:r}=ha(e),{data:i,refetch:a,isFetching:o,isRefetching:s}=A(Sd(e)),c=(0,R.useMemo)(()=>i?.filter(e=>e.status===`PENDING_VALIDATION`)||[],[i]),[l]=(0,R.useState)({attribute:`domain`,descending:!1}),d=(0,R.useMemo)(()=>[{desc:l.descending,id:l.attribute}],[l]),f=ql(a),[p,m]=(0,R.useState)([]),h=(0,R.useCallback)(e=>{m(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),{mutate:_,isPending:v}=dd(),y=(0,R.useCallback)(()=>{if(!es(n.status)){L.error(`Cluster is currently `+n.status,{description:`To bind a domain, it must be running.`});return}_({clusterId:n.id,domainIds:md((n.domainIds?.slice()||[]).concat(p)),generateDomainCerts:!0},{onSuccess:()=>{Mi.invalidateQueries({queryKey:[n.organizationId],refetchType:`active`}),L.success(`Domain(s) bound! Certificates are being generated in the background now.`),m([])}})},[n,p,_]),{mutateAsync:b,isPending:x}=yd(),S=I({resolver:j(_d),defaultValues:{domain:``,organizationId:e}}),C=(0,R.useCallback)(async e=>{if(e){let t=e.domain.split(/[,\s]+/).map(e=>e.trim()).filter(Boolean);for(let n of t)await b({...e,domain:n});S.reset(),await a(),L.success(`${u(t.length,`Domain`,`Domains`)} added! Please add the txt record above to your domain registrar.`)}},[b,S,a]),ee=(0,R.useCallback)(async()=>{let e=`Validating ${u(c.length,`domain`,`domains`)}...`,t=`validatingDomains`,n=0,r=0;for(let i of c)try{L.loading(e,{description:`${n++} of ${c.length} checked`,id:t}),await bd(i.id)}catch{r+=1}r>0?L.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(),L.success(`Validation succeeded!`,{description:`Please take a look at the next steps for newly verified domains.`,id:t}))},[c]),w=gd(n,p,h),te=S.watch(`domain`),ne=(0,R.useMemo)(()=>typeof te==`string`?te.trim().split(`.`).length===2:!1,[te]),T=(0,R.useCallback)(()=>{typeof te==`string`&&S.setValue(`domain`,`${te.trim()}, www.${te.trim()}`)},[te,S]);return(0,z.jsx)(Hl,{data:i||[],isFetching:o||s,columns:w,sortingState:d,children:(0,z.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,z.jsx)(V,{...S,children:(0,z.jsxs)(`form`,{id:`cluster-add-domain-form`,name:`cluster-add-domain-form`,onSubmit:S.handleSubmit(C),className:`flex gap-1 flex-col md:flex-row`,children:[(0,z.jsx)(U,{control:S.control,name:`domain`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex-1`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`New Domain Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,enterKeyHint:`done`,autoComplete:`off`,...e})}),ne&&(0,z.jsxs)(`div`,{className:`mt-1 flex gap-4`,children:[`Adding an apex domain?`,(0,z.jsx)(g,{variant:`positiveOutline`,type:`button`,onClick:T,children:`Add www as well`})]}),(0,z.jsx)(K,{children:(0,z.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,z.jsxs)(`div`,{className:`flex-0 self-start flex gap-1 md:pt-6.5`,children:[(0,z.jsxs)(g,{type:`submit`,variant:`submit`,disabled:x,children:[(0,z.jsx)(Rt,{}),` Add`]}),c.length>0&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:ee,accessKey:`r`,type:`button`,disabled:o||s,children:[(0,z.jsx)(nn,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`V`}),`alidate`]})]}),(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:f,accessKey:`r`,type:`button`,disabled:o||s,children:[(0,z.jsx)(wt,{}),` `,(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]})]})]})}),p.length>0&&(0,z.jsx)(`div`,{className:`flex-0 self-start md:pt-6.5`,children:(0,z.jsxs)(g,{variant:`submit`,onClick:y,disabled:v,children:[(0,z.jsx)(Pe,{}),` Bind `,u(p.length,`Domain`,`Domains`)]})})]})})}function wd(){return(0,z.jsx)($u,{className:`flex flex-col justify-start max-w-4xl`,children:(0,z.jsx)(Cd,{})})}var Td=D({username:oo,role:w().nonempty({error:`Please select a role.`}),password:ao.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:w()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});async function Ed(e){await s.patch(`/ResetPasswordUpdater/${e}`)}async function Dd(e){let{instanceClient:t,...n}=e,{data:r}=await t.post(`/`,{operation:`add_user`,...n});return r}function Od(){return M({mutationFn:Dd})}async function kd({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 Ad(){return M({mutationFn:kd})}async function jd({username:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_user`,username:e});return n}function Md(){return M({mutationFn:jd})}async function Nd({clusterId:e,initialUsername:t,desiredUsername:n,newPassword:i,tempPassword:a,instanceClient:s}){if(!a)throw Error(`You may not have permission to set the password on this cluster.`);let c=s;try{let r=await $a({username:t,password:a,instanceClient:c,entityId:e});return r.instanceClient&&(c=r.instanceClient),n===`HDB_ADMIN`?await kd({username:n,password:i,instanceClient:c}):(await Dd({username:n,password:i,role:`super_user`,active:!0,instanceClient:c}),await $a({username:n,password:i,instanceClient:c,entityId:e}),await jd({username:o,instanceClient:c})),await Ed(e),r}catch(t){throw await r({entityId:e,instanceClient:c}),t}}function Pd(){return M({mutationFn:Nd})}function Fd(){let{user:e}=vi(),{clusterId:t}=N({strict:!1}),{data:n}=A(ro(t,!0)),r=De(),i=(0,R.useMemo)(()=>f(n),[n]),a=oa({operationsUrl:i}),{redirect:s}=Ce({strict:!1}),l=fe(),u=I({resolver:j(Td),defaultValues:{confirmPassword:``,password:``,role:`super_user`,username:e?.email??``}}),{setFocus:d,control:p,handleSubmit:m}=u;(0,R.useEffect)(()=>{d(`password`)},[d]);let h=n?.instances?.find(e=>e.tempPassword)?.tempPassword,{mutate:_,isPending:v}=Pd(),y=(0,R.useCallback)(async e=>{if(!i){L.error(`Cluster is not yet fully loaded, please wait a moment before trying to sign in.`);return}_({instanceClient:a,clusterId:t,newPassword:e.password,tempPassword:h,initialUsername:o,desiredUsername:e.username},{onSuccess:async({message:e,user:t})=>{L.success(e),c.setUserForEntity(n,t),l.invalidate(),await r({to:s?.startsWith(`/`)?s:`../`})}})},[n,t,a,r,i,s,l,_,h]);return n&&!n.resetPassword?(0,z.jsx)(kt,{to:`../sign-in`,replace:!0}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`nav`,{"aria-label":`Breadcrumb`,className:`fixed top-20 w-full h-12 z-39 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none flex items-center`,children:(0,z.jsx)(Ga,{})}),(0,z.jsx)(`div`,{className:`items-center justify-center flex mt-32 py-4 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsxs)(`div`,{className:`text-foreground w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light`,children:`Create Admin User`}),(0,z.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,z.jsx)(V,{...u,children:(0,z.jsxs)(`form`,{id:`cluster-create-admin-form`,name:`cluster-create-admin-form`,onSubmit:m(y),className:`my-4`,children:[(0,z.jsx)(U,{control:p,name:`username`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{autoComplete:`username`,type:`text`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:p,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:p,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{disabled:v,type:`submit`,variant:`submit`,className:`w-full my-2 rounded-full`,children:`Create Admin User`})]})}),(0,z.jsxs)(`p`,{className:`text-muted-foreground flex gap-2 align-middle`,children:[(0,z.jsx)(bn,{size:36,className:`flex-none`}),(0,z.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 Id({columns:e,data:t}){let n=tr({data:t,columns:e,getCoreRowModel:dn()});return(0,z.jsx)(`div`,{className:`bg-card dark:bg-black-dark rounded-md`,children:(0,z.jsxs)(Fl,{children:[(0,z.jsx)(Il,{children:n.getHeaderGroups().map(e=>(0,z.jsx)(Rl,{className:`border-none`,children:e.headers.map(e=>(0,z.jsx)(zl,{className:`p-4`,style:{width:`${e.getSize()}%`},children:e.isPlaceholder?null:rn(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,z.jsx)(Ll,{className:`bg-background dark:bg-black`,children:n.getRowModel().rows?.length?n.getRowModel().rows.map(e=>(0,z.jsx)(Rl,{"data-state":e.getIsSelected()&&`selected`,className:`hover:bg-muted/10 data-[state=selected]:bg-muted`,children:e.getVisibleCells().map(e=>(0,z.jsx)(Vl,{className:`p-4`,style:{width:`${e.column.getSize()}%`},children:rn(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,z.jsx)(Rl,{children:(0,z.jsx)(Vl,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function Ld(){return(0,z.jsx)(`div`,{className:`flex-col items-center justify-center px-16 space-y-3 text-center pt-30`,children:(0,z.jsx)(`p`,{children:`No instances found.`})})}function Rd({isSelfManaged:e,instance:t}){let{user:i,isLoading:a}=bi(t.id),o=oa({operationsUrl:(0,R.useMemo)(()=>n(t),[t])}),{update:s}=va(),l=c.checkForFabricConnect(t.id),u=(0,R.useCallback)(async()=>{await r({instanceClient:o,entityId:t.id}),c.setUserForEntity(t,null)},[t,o]);return a||![`CLONE_READY`,`RUNNING`,`UPDATED`].includes(t.status)?(0,z.jsx)(jn,{className:`animate-spin`,color:`gray`}):!i||l?(0,z.jsxs)(`span`,{className:`flex gap-4`,children:[s&&!e&&(0,z.jsx)(k,{to:`../instance/${t.id}/`,className:`text-sm`,"aria-label":`Connect to ${t.name} instance`,title:`Connect to ${t.name} instance`,children:(0,z.jsx)(g,{variant:`positiveOutline`,children:`Fabric Connect`})}),(0,z.jsx)(k,{to:`../instance/${t.id}/sign-in`,className:`text-sm`,"aria-label":`Sign in to ${t.name} instance`,title:`Sign in to ${t.name} instance`,children:(0,z.jsx)(g,{variant:s?`defaultOutline`:`positiveOutline`,children:`Direct Sign In`})})]}):(0,z.jsxs)(`span`,{className:`flex gap-4`,children:[(0,z.jsx)(k,{to:`../instance/${t.id}/`,className:`text-sm`,"aria-label":`Go to ${t.name} instance`,title:`Go to ${t.name} instance`,children:(0,z.jsx)(g,{variant:`positiveOutline`,children:`Direct Connect`})}),(0,z.jsx)(g,{variant:`destructiveOutline`,className:`text-sm`,"aria-label":`Sign out from ${t.name} instance`,title:`Sign out from ${t.name} instance`,onClick:u,children:`Direct Sign Out`})]})}function zd({entityId:e,instanceClient:t},n){return P({queryKey:[e,`get_status`],staleTime:9e3,refetchInterval:1e4,retryDelay:1e4,throwOnError:!1,enabled:n,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_status`});return e}})}function Bd(e,t){return e?.systemStatus?.find(e=>e.id===t)?.status}async function Vd({instanceClient:e,id:t,status:n}){let{data:r}=await e.post(`/`,{operation:`set_status`,id:t,status:n});return r}function Hd(){return M({mutationFn:Vd,onSuccess:(e,t)=>Mi.invalidateQueries({queryKey:[t.entityId,`get_status`]})})}function Ud({instance:e,index:t}){let{update:r}=va(),i=B({operationsUrl:(0,R.useMemo)(()=>n(e),[e]),instanceId:e.id,forceFabricConnect:!0}),{mutate:a,isPending:o}=Hd(),[s,c]=(0,R.useState)(!1);(0,R.useEffect)(()=>{let e=setTimeout(()=>c(!0),t*500);return()=>clearTimeout(e)},[t]);let{data:l,isLoading:u,isFetching:d}=A(zd(i,s&&r)),f=Bd(l,`availability`)||`Unknown`,p=f===`Available`,m=f===`Unavailable`;return r?(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsx)(`div`,{className:`flex items-center`,children:u||!s||d&&!l?(0,z.jsx)(jn,{className:`animate-spin size-5 text-muted-foreground`}):(0,z.jsx)(ds,{variant:p?`success`:m?`destructive`:`default`,className:`size-4 rounded-full p-0`,children:(0,z.jsx)(`span`,{className:`sr-only`,children:p?`Online`:`Offline`})})})}),(0,z.jsxs)(Va,{children:[d&&l?`Refreshing... `:``,f]})]}),r&&(0,z.jsxs)(`div`,{className:`flex gap-1`,children:[p&&(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsx)(g,{type:`button`,variant:`destructiveGhost`,size:`icon`,onClick:()=>a({...i,id:`availability`,status:`Unavailable`}),disabled:o,children:o?(0,z.jsx)(jn,{className:`animate-spin size-4`}):(0,z.jsx)(pt,{className:`size-4`})})}),(0,z.jsx)(Va,{children:`Bring out of rotation`})]}),m&&(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsx)(g,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>a({...i,id:`availability`,status:`Available`}),disabled:o,children:o?(0,z.jsx)(jn,{className:`animate-spin size-4`}):(0,z.jsx)(Hn,{className:`size-4`})})}),(0,z.jsx)(Va,{children:`Bring back into rotation`})]})]})]}):null}function Wd(){let{clusterId:e}=N({strict:!1}),{data:t,isLoading:n}=A(ro(e,!0)),r=ys(t),i=(0,R.useMemo)(()=>[{id:`instanceActions`,size:1,minSize:1,cell:e=>(0,z.jsx)(`div`,{className:`flex justify-end gap-2 items-center`,children:(0,z.jsx)(Rd,{isSelfManaged:r,instance:e.row.original})})},r&&{accessorKey:`instanceFqdn`,size:90,header:`URL`,cell:e=>dl({secure:e.row.original.operationsApiSecure?`true`:`false`,port:e.row.original.operationsApiPort,fqdn:e.row.original.instanceFqdn})},!r&&{accessorKey:`name`,size:90,header:`Name`},{accessorKey:`status`,header:`Status`,size:1,minSize:1,cell:e=>{let t=e.getValue();return(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(Ud,{instance:e.row.original,index:e.row.index}),t?(0,z.jsx)(ds,{variant:$o(t),children:Ua(t)}):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,z.jsxs)(z.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`}].filter(Ni),[r]),a=(0,R.useMemo)(()=>t?.instances?t.instances.filter(e=>e.status&&!Za.includes(e.status)).sort(zs):[],[t]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsx)(xi,{className:`p-0 mt-4 min-h-96`,children:(0,z.jsx)(Ti,{className:`p-0 min-h-96`,children:n?(0,z.jsx)(jc,{}):a.length?(0,z.jsx)(Id,{data:a,columns:i}):(0,z.jsx)(Ld,{})})})})]})}function Gd(){let{clusterId:e}=N({strict:!1}),{data:t,isLoading:n}=A(ro(e,2e3)),r=t?.status,i=(0,R.useMemo)(()=>r&&Xa.includes(r),[r]);return n||!t?(0,z.jsx)($u,{className:`flex justify-center`,children:(0,z.jsx)(jc,{})}):i?(0,z.jsx)($u,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,z.jsx)(`h1`,{className:`text-xl text-center`,children:`All done!`}),(0,z.jsx)(Ss,{cluster:t,forceProgressBarVisible:!0}),(0,z.jsx)(`p`,{children:`Your cluster finished updating, and is ready for interaction.`}),(0,z.jsx)(`div`,{className:`text-center`,children:(0,z.jsx)(bs,{cluster:t})})]})}):(0,z.jsx)($u,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,z.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,z.jsx)(Ss,{cluster:t,forceProgressBarVisible:!0}),(0,z.jsxs)(`p`,{children:[`Your cluster is updating with the latest changes. This includes waiting several minutes to let traffic drain safely.`,` `,(0,z.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,z.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 Kd(){let e=fe(),{clusterId:t}=N({strict:!1}),{data:n,isLoading:r}=A(ro(t,2e3)),i=n?.status,a=(0,R.useMemo)(()=>i&&Xa.includes(i),[i]),o=ts(i),[,s]=Gi(qi.SavedClusterState,null),c=(0,R.useCallback)(()=>{s(n),e.navigate({to:`/${n.organizationId}/new-cluster`})},[n,e,s]);return r||!n?(0,z.jsx)($u,{className:`flex justify-center`,children:(0,z.jsx)(jc,{})}):o?(0,z.jsx)($u,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4 items-center`,children:[(0,z.jsx)(St,{className:`w-24 h-24`}),(0,z.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,z.jsx)(Ds,{}),` if you want more help.`]}),(0,z.jsx)(g,{type:`button`,variant:`positiveOutline`,onClick:c,children:`Try Again`})]})}):a?(0,z.jsx)($u,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,z.jsx)(`h1`,{className:`text-xl text-center`,children:`It's ready!`}),(0,z.jsx)(Ss,{cluster:n,forceProgressBarVisible:!0}),(0,z.jsxs)(`p`,{children:[`Let's set up your secure, browser-to-cluster connection now.`,` `,(0,z.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,z.jsx)(`em`,{children:`Direct Connect`}),`! Once you create your user, you will have the option to`,` `,(0,z.jsx)(`em`,{children:`Fabric Connect`}),` from your Fabric account without having to sign in again.`]})]}),(0,z.jsx)(`div`,{className:`text-center`,children:(0,z.jsx)(bs,{cluster:n})})]})}):(0,z.jsx)($u,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,z.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,z.jsx)(Ss,{cluster:n,forceProgressBarVisible:!0}),(0,z.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,z.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,z.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.`]})]})]})})}F({getParentRoute:()=>Qu,path:`instances`,head:()=>({meta:[{title:`Instances — Harper Fabric`}]}),component:Wd}),F({getParentRoute:()=>Qu,path:`starting-up`,head:()=>({meta:[{title:`Starting Up — Harper Fabric`}]}),component:Kd}),F({getParentRoute:()=>Qu,path:`scaling`,head:()=>({meta:[{title:`Scaling — Harper Fabric`}]}),component:Gd}),F({getParentRoute:()=>Qu,path:`domains`,head:()=>({meta:[{title:`Domains — Harper Fabric`}]}),component:wd}),F({getParentRoute:()=>Qu,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:mo,beforeLoad:({context:e,location:t,params:n})=>{let r=c.checkForFabricConnect(n.clusterId);if(e.authentication[n.clusterId]?.user&&!r){let e=t?.search;throw rt({to:e?.redirect?.startsWith(`/`)?e.redirect:`../`})}}}),F({getParentRoute:()=>Qu,path:`instance/$instanceId/sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:mo,beforeLoad:({context:e,location:t,params:n})=>{if(!(c.checkForFabricConnect(n.clusterId)||c.checkForFabricConnect(n.instanceId))&&e.authentication[n.instanceId]?.user){let e=t?.search;throw rt({to:e?.redirect?.startsWith(`/`)?e.redirect:`../`})}}}),F({getParentRoute:()=>Qu,path:`finish-setup`,head:()=>({meta:[{title:`Create Admin User — Harper Fabric`}]}),component:Fd});function qd(e){return F({getParentRoute:()=>e,path:`apis`,head:()=>({meta:[{title:`APIs — Harper Fabric`}]})}).lazy(()=>Yr(()=>import(`./index.lazy-D9dMKjQH.js`).then(e=>e.route),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])))}function Jd(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 Yd(e,t){let[n,r]=(0,R.useState)(t),[i,a]=(0,R.useState)(e);return(0,R.useEffect)(()=>{Jd(n,t)||(r(t),a(e))},[n,t,e]),Jd(n,t)?[i,a]:[e,a]}var Xd={};function Zd(e,t,n){let r=(0,R.useCallback)((e,n)=>t(e,n),[n]);(0,R.useEffect)(()=>(Xd[e]||(Xd[e]=[]),Xd[e].push(r),function(){let t=Xd[e].indexOf(r);t>=0&&Xd[e].splice(t,1)}),[e,t,r])}function Qd(e,t,n){let r=Xd[e];if(r)for(let e of r)e(t,n)}function $d(e,t,n){return r=>Qd(e,t,n??r)}function ef(e,t,n){return(0,R.useCallback)(r=>Qd(e,t,n??r),[e,t,n])}function tf(e,t){return Hi(sessionStorage.getItem(String(e)))??t}function nf(e,t){t==null?sessionStorage.removeItem(String(e)):sessionStorage.setItem(String(e),JSON.stringify(t))}function rf(e,t){let n=Yd(tf(e,t),[e]),[r,i]=n;return(0,R.useEffect)(()=>{nf(e,r),Qd(`Session:${e}`,r)},[e,r]),Zd(`Session:${e}`,function(e){r!==e&&i(e)},[r,e,t]),(0,R.useEffect)(function(){let n=n=>{n.key===e&&i(tf(e,t))};return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}},[e,i,t]),n}function af(e,t=!1){let[n,r]=rf(e,t),i=(0,R.useCallback)(e=>{e?.preventDefault?.(),r(e=>!e)},[r]),a=(0,R.useCallback)(e=>{e?.preventDefault?.(),r(!0)},[r]),o=(0,R.useCallback)(e=>{e?.preventDefault?.(),r(!1)},[r]);return(0,R.useMemo)(()=>({toggled:n,setToggled:r,toggle:i,toggleOn:a,toggleOff:o}),[i,r,o,a,n])}var of=(0,R.createContext)(null);function sf(){return(0,R.useContext)(of)}async function cf({file:e,project:t,entityType:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`drop_component`,file:e||void 0,project:t,replicated:n===`cluster`});return i}function lf(e){let t=(e||``)?.split(`.`);return t.length>1?t.slice(-1)[0]:``}function uf(e){switch(lf(e).toLowerCase()){case`jpg`:case`jpeg`:case`gif`:case`png`:case`pneg`:case`webp`:return!0;default:return!1}}async function df({instanceClient:e,file:t,project:n,encoding:r}){let{data:i}=await e.post(`/`,{operation:`get_component_file`,project:n,file:t,encoding:r??(uf(t)?`base64`:`utf8`)});return{project:n,file:t,...i}}function ff(e){return P({queryKey:pf(e),queryFn:()=>df(e),enabled:!!e.file&&!!e.project,retry:!1})}function pf(e){return[e.entityId,`get_component_file`,e.project,e.file,e.encoding]}async function mf({file:e,payload:t,project:n,entityType:r,instanceClient:i,encoding:a}){let{data:o}=await i.post(`/`,{operation:`set_component_file`,file:e,payload:t,project:n,encoding:a,replicated:r===`cluster`},{timeout:3e5});return o}function hf(){return M({mutationFn:mf})}function gf(){let{reloadRootEntries:e,setFocusedItem:t,setSelectedItems:n}=sf(),r=B();return(0,R.useCallback)(async i=>{let a=!1,o=i.filter(e=>e.from!==e.to);if(o.length===0)return;let s=`Renaming ${u(o.length,`File`,`Files`)}`,c={duration:6e4,action:{label:`Cancel`,onClick:()=>{a=!0}}};c.id=L.loading(s,{...c,description:(0,z.jsx)(Ys,{animated:!0,width:`0%`})});let l=o.length*3,d=0;function f(){d+=1,L.loading(s,{...c,description:(0,z.jsx)(Ys,{animated:!0,width:(d===0?0:d/l*100)+`%`})})}for(let e of o){let t=e.from.split(`/`),n=t.shift(),i=t.join(`/`),o=e.to.split(`/`),s=o.shift(),c=o.join(`/`),l=await df({...r,file:i,project:n,encoding:`base64`});if(a||(f(),await mf({...r,file:c,project:s,encoding:`base64`,payload:l.message}),a)||(f(),await cf({...r,file:i,project:n}),a))break;f()}d>=l?L.success(`Renamed ${u(o.length,`File`,`Files`)}`,{id:c.id,description:`All done!`,duration:3e3,action:{label:`OK`,onClick:()=>{}}}):L.warning(`Rename Cancelled`,{id:c.id,description:`${d} of ${l} steps completed.`,duration:1e4,action:{label:`OK`,onClick:()=>{}}}),e(),n(e=>{let t=e.slice();for(let e of o){let n=t.indexOf(e.from);n>=0?t.splice(n,1,e.to):t.push(e.to)}return t}),t(e=>{for(let t of o)if(e===t.from)return t.to;return e})},[r,e,t,n])}function _f(e,t){return e[t]!==void 0}function vf(e){return t=>_f(t,e)}function yf(e,t){let[n,r]=(0,R.useState)({value:t});return Zd(e,(e,t)=>r({value:e,trigger:t}),[r]),n}function bf(e,t,n){Qd(e,t,n)}function xf(e,t,n){return r=>bf(e,t,n??r)}function Sf(e,t,n){return(0,R.useCallback)(r=>{bf(e,t,n??r)},[e,t,n])}var Cf=[{handleGlobal(e,t){if((t.cmd||t.ctrl)&&e===`Delete`)return bf(`ShowDeleteDirectoryOrFileModal`,!0),!0},addEditorAction(e){return{id:`delete-file`,label:`Delete File`,keybindings:[e.KeyMod.CtrlCmd|e.KeyCode.Delete],run:xf(`ShowDeleteDirectoryOrFileModal`,!0)}}},{handleGlobal(e,t){if(t.ctrl&&t.alt&&t.shift&&e===`˜`)return bf(`ShowAddDirectoryOrFileModalType`,`directory`),!0},addEditorAction(e){return{id:`new-directory`,label:`New Directory`,keybindings:[e.KeyMod.WinCtrl|e.KeyMod.Alt|e.KeyMod.Shift|e.KeyCode.KeyN],run:xf(`ShowAddDirectoryOrFileModalType`,`directory`)}}},{handleGlobal(e,t){if(t.ctrl&&e===`n`)return bf(`ShowAddDirectoryOrFileModalType`,`file`),!0},addEditorAction(e){return{id:`new-file`,label:`New File`,keybindings:[e.KeyMod.WinCtrl|e.KeyCode.KeyN],run:xf(`ShowAddDirectoryOrFileModalType`,`file`)}}},{handleGlobal(e){if(e===`F2`)return bf(`ShowRenameFileModal`,`file`),!0},addEditorAction(e){return{id:`rename-file`,label:`Rename File`,keybindings:[e.KeyMod.WinCtrl|e.KeyMod.Alt|e.KeyCode.KeyR,e.KeyCode.F2],run:xf(`ShowRenameFileModal`,!0)}}},{addEditorAction(){return{id:`revert-file`,label:`Revert File`,run:$d(`RevertChanges`,!0)}}},{handleGlobal(e,t){if(t.cmd&&e===`s`)return Qd(`SaveFile`,!0),!0},addEditorAction(e){return{id:`save-file`,label:`Save Changes`,keybindings:[e.KeyMod.CtrlCmd|e.KeyCode.KeyS],run:$d(`SaveFile`,!0)}}}],wf=Cf.filter(vf(`addEditorAction`)),Tf=Cf.filter(vf(`handleGlobal`));function Ef(e){let[t,n]=e,r=wf.map(e=>t.addAction(e.addEditorAction(n)));return()=>{for(let e of r)e?.dispose()}}function Df(){(0,R.useEffect)(()=>(document.addEventListener(`keydown`,Of),()=>{document.removeEventListener(`keydown`,Of)}),[])}function Of(e){let t={cmd:e.getModifierState(`Meta`),alt:e.getModifierState(`Alt`),shift:e.getModifierState(`Shift`),ctrl:e.getModifierState(`Control`)};for(let n of Tf)if(n.handleGlobal(e.key,t)){e.preventDefault();return}}function kf(e){return e.split(`/`).pop()}function Af(...e){let t=e.flat(1);return t.map((e,n)=>typeof e==`string`?jf(e,n!==0,n!==t.length-1):e).join(`/`)}function jf(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}function Mf(e){return!!e?.entries}var Nf=`__root__`,Pf=`importedApplications`,Ff=`newApplication`;function If(e){let t={},n=[],r=[],i=[];for(let a of e)Mf(a)?a.package?r.push(a.path):n.push(a.path):i.push(a.path),Lf(t,a);return t[Nf]={index:Nf,isFolder:!0,children:[Ff,Pf,...n,...i].filter(Ni),data:void 0,canMove:!1,canRename:!1},t[Pf]={index:Pf,isFolder:!0,children:r,data:{name:`Imported Applications`,path:Pf,package:Pf,project:``,entries:[]},canMove:!1,canRename:!1},t[Ff]={index:Ff,isFolder:!1,data:{name:`New Application`,path:Ff,project:``},canMove:!1,canRename:!1},{items:t,rootId:Nf}}function Lf(e,t){let n=t.path;if(Mf(t)){let r=t,i=[],a=[];for(let e of r.entries)Mf(e)?i.push(e.path):a.push(e.path);e[n]={index:n,isFolder:!0,children:[...i,...a],data:t,canMove:!1,canRename:!1};for(let t of r.entries)Lf(e,t)}else e[n]={index:n,isFolder:!1,data:t,canMove:!t.package,canRename:!t.package}}function Rf(){let[e,t]=(0,R.useState)(!1),[n,r]=(0,R.useState)(void 0),i=(0,R.useCallback)(e=>{if(!e.dataTransfer?.types?.includes(`Files`))return;let n=e.target;if(n instanceof Element&&n.classList.contains(`rct-tree-item-button-isFolder`)){let e=n.getAttribute(`data-rct-item-id`);!n.querySelector(`.packageIsLocked`)&&e&&e!==`importedApplications`&&e!==`newApplication`&&r(e=>e===n?e:(e?.classList?.remove?.(`rct-tree-item-title-container-dragging-over`),n.classList.add(`rct-tree-item-title-container-dragging-over`),n))}t(!0)},[]),a=(0,R.useCallback)(()=>{t(!1),r(e=>{e&&e.classList.remove(`rct-tree-item-title-container-dragging-over`)})},[]),o=(0,R.useCallback)(e=>{if(!e.dataTransfer?.types?.includes(`Files`)||e.detail===1337)return;t(!1),n&&(n.classList.remove(`rct-tree-item-title-container-dragging-over`),r(void 0));let i=document.getElementById(`dropTarget`);return i?i.dispatchEvent(new DragEvent(`drop`,{bubbles:!0,detail:1337,cancelable:!0,dataTransfer:e.dataTransfer})):!1},[n]);return(0,R.useEffect)(()=>(document.addEventListener(`dragenter`,i),document.addEventListener(`dragover`,i),document.addEventListener(`dragleave`,a),document.addEventListener(`drop`,o),()=>{document.removeEventListener(`dragenter`,i),document.removeEventListener(`dragover`,i),document.removeEventListener(`dragleave`,a),document.removeEventListener(`drop`,o)}),[i,o,a]),(0,R.useMemo)(()=>({dragging:e,dragTarget:n}),[e,n])}function zf(e){return new Promise((t,n)=>{let r=new FileReader;r.onabort=n,r.onerror=n,r.onload=t,r.readAsDataURL(e)})}function Bf(){let[e,t]=(0,R.useState)(``),{clusterId:n}=N({strict:!1}),{openedEntry:r,restrictPackageModification:i,reloadRootEntries:a,entryExists:o}=sf(),s=!!r&&!r.package&&!i,l=B(),{dragging:d,dragTarget:f}=Rf(),p=(f?.getAttribute?.(`data-rct-item-id`))?.split?.(`/`)?.pop?.(),m=r?.project,h=!1,g;if(r?.path){let e=r.path.split(`/`),t=Mf(r);h=s&&(t?e.slice(1):e.slice(1,-1)).join(`/`),g=e[e.length-(t?1:2)]}let _=(0,R.useCallback)(async(e,n)=>{let r=f?.getAttribute?.(`data-rct-item-id`)?.split?.(`/`),i=r?.length?r[0]:s?m:!1,c=r?.length?r.slice(1).join(`/`):s?h:!1;if(i===!1||i===void 0||c===!1||c===void 0)return;let d=[],p=n.slice();for(let t of e){let e=Vf(c,t);t.name.startsWith(`.`)||t.relativePath?.includes(`/.`)?p.push({file:t,errors:[{message:`Sensitive files and folders starting with . are skipped.`,code:`dot-ignored`}]}):o(`${i}/${e}`)?p.push({file:t,errors:[{message:`${e} already exists`,code:`duplicate`}]}):d.push(t)}let g=!1,_=`uploading-files`,v={label:`Cancel`,onClick:()=>{g=!0}},y={label:`OK`,onClick:()=>void 0};t(`Uploading ${u(d.length,`file`,`files`)}...`);let b=d.reduce((e,t)=>e+t.size,0),x=0,S=0;for(let e of d){S+=1,L.loading(`Upload in progress...`,{id:_,descriptionClassName:`whitespace-pre`,description:`${S} of ${u(d.length,`file`,`files`)}
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 Xa=[`RUNNING`],Za=[`TERMINATING`,`TERMINATED`,`REMOVED`];function Qa(){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 $a({username:e,password:t,instanceClient:n,entityId:r}){let i={username:e,password:t};c.checkForBasicAuth(r)&&(n.defaults.auth=i,n.defaults.withCredentials=!1);let{data:{message:o}}=await n.post(`/`,{operation:`login`,username:e,password:t});if(!c.checkForBasicAuth(r))try{return{message:o,user:await h({instanceClient:n})}}catch(e){console.error(`Failed to get user after login, trying basic auth`,e)}try{n.defaults.auth=i,n.defaults.withCredentials=!1;let e=await h({instanceClient:n,auth:i});return c.flagForBasicAuth(r,i),{message:o,user:e}}catch(e){throw n.defaults.auth=void 0,n.defaults.withCredentials=!0,e}let s=a({id:r,forceFabricConnect:!0}),l=await h({instanceClient:s});return c.flagForFabricConnect(r,!0),{message:o,user:l,instanceClient:s}}function eo(){return M({mutationFn:$a})}function to({cluster:e,instance:t,instanceParams:n}){let r=De(),i=fe(),{redirect:a}=Ce({strict:!1}),{mutate:o,isPending:s}=eo();return{isPending:s,submitForm:(0,R.useCallback)(async s=>{o({...s,...n},{onSuccess:async({message:n,user:o})=>{if(L.success(n),e?.instances?.length&&!t)for(let t of e.instances)c.setUserForEntity(t,o);let s=m;if(!s)throw Error(`Sign in failed due to missing cluster or instance.`);c.setUserForEntity(s,o),i.invalidate(),await r({to:a?.startsWith(`/`)?a:`/`})}})},[e,t,n,r,a,i,o])}}async function no(e){let{data:t}=await s.get(`/Cluster/${e}`);return t}function ro(e,t){return P({queryKey:[e],queryFn:()=>no(e),retry:!1,staleTime:1900,enabled:!!e,refetchInterval:t?t===!0?1e4:t:void 0})}var io=S({error:`Please enter a valid email address.`}).toLowerCase().trim(),ao=w().nonempty({error:`Please enter your password.`}),oo=w().nonempty({error:`Please enter a username.`}),so=D({username:oo,password:ao}),co=D({email:io,password:ao});function lo({entityId:e,instanceClient:t}){return P({queryKey:[e,`health`],queryFn:async()=>{try{return await t.get(`/health`),!0}catch{return!1}},retry:2,refetchInterval:5e3})}var uo=[`localhost`,`127.0.0.1`],fo=function(e){return e.MixedLoopback=`MixedLoopback`,e.InsecureCookieOutsideChromeAndFirefox=`InsecureCookieOutsideChromeAndFirefox`,e}({});function po(e,t,n){if(!n||!t||!e)return null;let r=new URL(n).hostname,i=uo.includes(t),a=uo.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 mo(){let{clusterId:e,instanceId:t}=N({strict:!1}),{data:r}=A(ro(e,!0)),i=(0,R.useMemo)(()=>t&&r&&r?.instances?.find(e=>e.id===t)||void 0,[r,t]),a=(0,R.useMemo)(()=>r?.status&&Xa.includes(r.status),[r?.status]),o=`instance`,s=(0,R.useMemo)(()=>r?i?(c.flagForFabricConnect(i.id,!1),n(i)):(c.flagForFabricConnect(r.id,!1),f(r)):null,[r,i]),l=B({operationsUrl:s}),u=(0,R.useMemo)(()=>s?.includes(`localhost`)||s?.includes(`127.0.0.1`),[s]),d=(0,R.useMemo)(()=>po(navigator.userAgent,location.hostname,s),[s]),{data:p}=A(lo(l)),m=I({resolver:j(so),defaultValues:{username:``,password:``}}),{control:h,handleSubmit:_}=m,{submitForm:v,isPending:y}=to({cluster:r,instance:i,instanceParams:l});return!t&&r&&!r?.fqdn?(0,z.jsx)(kt,{to:`../instances`,replace:!0}):a&&r?.resetPassword?(0,z.jsx)(kt,{to:`/${r.organizationId}/${r.id}/finish-setup`,replace:!0}):!a&&r?.resetPassword?(0,z.jsx)(kt,{to:`/${r.organizationId}/${r.id}/starting-up`,replace:!0}):(0,z.jsxs)(z.Fragment,{children:[!1,(0,z.jsx)(`div`,{className:x(`min-h-screen`,`items-center justify-center flex`),children:(0,z.jsxs)(`div`,{className:`text-foreground w-xs py-8`,children:[(0,z.jsxs)(`h1`,{className:`text-2xl font-light`,children:[`Sign in to Harper `,`Local`]}),(0,z.jsx)(V,{...m,children:(0,z.jsxs)(`form`,{id:`auth-${o}-signin-form`,name:`auth-${o}-signin-form`,onSubmit:_(v),className:`my-4`,children:[(0,z.jsx)(U,{control:h,name:`username`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{autoComplete:`username`,autoFocus:!0,type:`text`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:h,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{disabled:y,type:`submit`,variant:`submit`,className:`w-full my-2 rounded-full`,children:`Sign In`}),p===!1&&(0,z.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,z.jsx)(`span`,{className:`font-medium`,children:`Warning!`}),` This `,o,` is not responding to GET`,` `,(0,z.jsxs)(`a`,{href:`${s}health`,className:`underline`,target:`_blank`,children:[s,`health`]}),` `,`checks.`,(0,z.jsxs)(`ol`,{className:`list-decimal ml-8 mt-2`,children:[(0,z.jsx)(`li`,{children:`Is the server running?`}),(0,z.jsxs)(`li`,{children:[`Have you`,` `,(0,z.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?`]}),u&&(0,z.jsxs)(`li`,{children:[`Have you allowed`,` `,(0,z.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?`]})]})]}),d===fo.MixedLoopback&&(0,z.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,z.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.`]}),d===fo.InsecureCookieOutsideChromeAndFirefox&&(0,z.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,z.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,z.jsxs)(`div`,{className:`p-4 mt-4 text-sm rounded-lg bg-purple-950`,role:`alert`,children:[(0,z.jsx)(`span`,{className:`font-medium`,children:`Did you know?`}),` `,`You can add this instance to your Harper account to manage it remotely.`,(0,z.jsx)(`div`,{className:`text-center pt-2`,children:(0,z.jsx)(k,{to:Qa(),target:`_blank`,children:(0,z.jsx)(g,{type:`button`,variant:`positive`,children:`Connect to Harper Fabric`})})})]})]})})]})})]})}async function ho({email:e}){let{data:t}=await s.post(`/ForgotPassword/`,{email:e});if(t)return t;throw Error(`Something went wrong`)}function go(){return M({mutationFn:e=>ho(e)})}var _o=D({email:io});function vo(){let e=De(),{me:t}=Ce({strict:!1}),n=I({resolver:j(_o),defaultValues:{email:t||``}}),r=n.watch(`email`),{setFocus:i,control:a,handleSubmit:o}=n;(0,R.useEffect)(()=>{i(`email`)},[i]);let{mutate:s,isPending:c}=go(),l=async t=>{s(t,{onSuccess:t=>{L.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),e({to:`/sign-in`,search:{me:r}})}})};return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light`,children:`Enter your account email`}),(0,z.jsx)(`p`,{className:`text-sm pt-1`,children:`If a matching account exists, we'll send you a password reset link.`}),(0,z.jsx)(V,{...n,children:(0,z.jsxs)(`form`,{id:`auth-forgot-password-form`,name:`auth-forgot-password-form`,onSubmit:o(l),className:`my-4`,children:[(0,z.jsx)(U,{control:a,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:c,type:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{type:`submit`,variant:`submit`,disabled:c,className:`w-full my-2 rounded-full`,children:`Send Password Reset Email`})]})}),(0,z.jsxs)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:[(0,z.jsx)(k,{className:`text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:r},children:`Sign in to your account`}),(0,z.jsx)(k,{className:`text-sm hover:text-blue-300`,to:`/sign-up`,search:{me:r},children:`Sign up for free`})]})]})}var yo=async({token:e,password:t})=>{let{data:n}=await s.put(`/ResetPassword/`,{token:e,newPassword:t});return n};function bo(){return M({mutationFn:e=>yo(e)})}var xo=D({password:ao.min(8,{error:`Password must be at least 8 characters long.`}).max(50,{error:`Password cannot be longer than 50 characters.`}),confirmPassword:w()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});function So(){let{token:e}=Ce({strict:!1}),t=De();(0,R.useEffect)(()=>{e||t({to:`/sign-in`})},[e,t]);let n=I({resolver:j(xo),defaultValues:{password:``,confirmPassword:``}}),{setFocus:r,control:i,handleSubmit:a}=n;(0,R.useEffect)(()=>{r(`password`)},[r]);let{mutate:o,isPending:s}=bo(),c=(0,R.useCallback)(async n=>{o({token:e,password:n.password},{onSuccess:()=>{L.success(`Success`,{description:`Your password has been reset successfully.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),t({to:`/sign-in`})}})},[t,o,e]);return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light`,children:`Reset Password`}),(0,z.jsx)(V,{...n,children:(0,z.jsxs)(`form`,{id:`auth-reset-password-form`,name:`auth-reset-password-form`,className:`my-4`,onSubmit:a(c),children:[(0,z.jsx)(U,{control:i,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`New Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:s,type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:i,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:s,type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{variant:`submit`,type:`submit`,disabled:s,className:`w-full my-2 rounded-full`,children:`Submit New Password`})]})})]})}function Co({text:e,disabled:t,onClick:n}){return(0,z.jsxs)(`a`,{href:`/oauth/github/login?redirect=%2F%23%2Fcheck-oauth`,onClick:n,"aria-disabled":t||void 0,className:x(`github-signin-btn`,t&&`opacity-50 cursor-default`),children:[(0,z.jsx)(`img`,{src:`/github/GitHub_Invertocat_White.svg`,alt:``,className:`github-icon`}),e]})}function wo({text:e,disabled:t,onClick:n}){return(0,z.jsxs)(`a`,{href:`/oauth/google/login?redirect=%2F%23%2Fcheck-oauth`,onClick:n,"aria-disabled":t||void 0,className:x(`gsi-material-button`,t&&`opacity-50 cursor-default`),children:[(0,z.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-state`}),(0,z.jsxs)(`div`,{className:`gsi-material-button-content-wrapper`,children:[(0,z.jsx)(`div`,{"aria-hidden":`true`,className:`gsi-material-button-icon`,children:(0,z.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,z.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,z.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,z.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,z.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,z.jsx)(`path`,{fill:`none`,d:`M0 0h48v48H0z`})]})}),(0,z.jsx)(`span`,{className:`gsi-material-button-contents`,children:e}),(0,z.jsx)(`span`,{className:`hidden`,children:e})]})]})}function To(){let e=De(),t=xt(),n=fe(),{redirect:r}=Ce({strict:!1}),{mutate:i,isPending:a}=Eo();return{isPending:a,submitForm:(0,R.useCallback)(a=>{i(a,{onSuccess:async i=>{c.setUserForEntity(m,i);let a=Di(i);Li(i);let o=Fa(i.email);Ma?.identify?.({username:i.email,type:`email`,...o?{company:o}:{}}),await t.invalidateQueries({queryKey:l,refetchType:`none`}),n.invalidate(),await e({to:r?.startsWith(`/`)?r:a})}})},[e,t,r,n,i])}}function Eo(){return M({mutationFn:e=>Do(e)})}async function Do({email:e,password:t}){let{data:n}=await s.post(`/Login/`,{email:e,password:t});if(n)return n;throw Error(`Something went wrong`)}function Oo(){let{me:e}=Ce({strict:!1}),t=I({resolver:j(co),defaultValues:{email:e||``,password:``}}),{handleSubmit:n,control:r}=t,i=t.watch(`email`),{submitForm:a,isPending:o}=To();return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light text-center`,children:`Sign in to Harper Fabric`}),(0,z.jsx)(V,{...t,children:(0,z.jsxs)(`form`,{id:`auth-signin-form`,name:`auth-signin-form`,onSubmit:n(a),className:`my-4`,children:[(0,z.jsx)(U,{control:r,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`email`,autoFocus:!0,autoComplete:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`current-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{type:`submit`,variant:`submit`,className:`w-full my-2 rounded-full`,disabled:o,children:`Sign In`}),(0,z.jsxs)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:[(0,z.jsx)(k,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/sign-up`,search:{me:i},children:`Sign up for free`}),(0,z.jsx)(k,{className:`text-sm text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:`/forgot-password`,search:{me:i},children:`Forgot password?`})]})]})}),(0,z.jsx)(`hr`,{"aria-hidden":`true`,className:`border-border dark:border-gray-600 my-6`}),(0,z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,z.jsx)(wo,{text:`Sign in with Google`}),(0,z.jsx)(Co,{text:`Sign in with GitHub`})]})]})}var ko=/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžæÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,'-]+$/u;async function Ao(e){let{data:t}=await s.post(`/User/`,e);if(t)return t;throw Error(`Something went wrong`)}function jo(){return M({mutationFn:e=>Ao(e)})}var Mo=D({email:io.max(80,{error:`Email cannot be longer than 80 characters.`}),firstname:w().trim().min(2,{error:`Please enter your first name.`}).regex(ko,{error:`First name can only contain letters, spaces, and hyphens.`}).max(40,{error:`First name cannot be longer than 40 characters.`}),lastname:w().trim().min(2,{error:`Please enter your last name.`}).regex(ko,{error:`Last name can only contain letters, spaces, and hyphens.`}).max(80,{error:`Last name cannot be longer than 80 characters.`}),password:ao.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:w(),acceptTerms:E().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 No(){let e=De(),{email:t,me:n}=Ce({strict:!1}),[r,i]=(0,R.useState)(!1),a=I({resolver:j(Mo),defaultValues:{firstname:``,lastname:``,email:n||t||``,password:``,confirmPassword:``,acceptTerms:!1}}),o=a.watch(`email`),s=a.watch(`acceptTerms`),{setFocus:c,control:l,handleSubmit:u}=a;(0,R.useEffect)(()=>{c(`firstname`)},[c]);let{mutate:d}=jo(),f=(0,R.useCallback)(async t=>{let{confirmPassword:n,acceptTerms:r,...i}=t;d(i,{onSuccess:()=>{let t=Fa(i.email);Ma?.identify?.({username:i.email,type:`email`,firstname:i.firstname,lastname:i.lastname,...t?{company:t}:{}}),e({to:`/verifying?email=`+encodeURIComponent(i.email)})}})},[e,d]),p=(0,R.useCallback)(e=>{if(!s)return i(!0),setTimeout(()=>i(!1),1e3),e.preventDefault(),!1},[s]),m=(0,z.jsx)(U,{control:l,name:`acceptTerms`,render:({field:e})=>(0,z.jsxs)(W,{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,z.jsx)(H,{children:(0,z.jsx)(q,{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,z.jsxs)(`div`,{className:`space-y-1 leading-none`,children:[(0,z.jsxs)(G,{className:`text-xs font-normal`,children:[`I accept the`,` `,(0,z.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,z.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,z.jsx)(K,{})]})]})});return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light text-center`,children:`Sign up for Harper Fabric`}),(0,z.jsxs)(V,{...a,children:[(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 my-6`,children:[m,(0,z.jsx)(wo,{text:`Sign up with Google`,disabled:!s,onClick:p}),(0,z.jsx)(Co,{text:`Sign up with GitHub`,disabled:!s,onClick:p})]}),(0,z.jsx)(`hr`,{className:`border-gray-600`}),(0,z.jsxs)(`form`,{id:`auth-signup-form`,name:`auth-signup-form`,onSubmit:u(f),className:`grid gap-4 my-4`,children:[(0,z.jsx)(U,{control:l,name:`firstname`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`First Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:`dark:bg-black dark:border-black`,autoCapitalize:`words`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`lastname`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Last Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:`dark:bg-black dark:border-black`,autoCapitalize:`words`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`email`,readOnly:!!t,disabled:!!t,className:`dark:bg-black dark:border-black`,autoComplete:`email`,autoCapitalize:`none`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`new-password`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),m,(0,z.jsx)(g,{type:`submit`,variant:`submit`,className:`w-full rounded-full my-4`,children:`Sign Up For Free`})]})]}),(0,z.jsx)(`div`,{className:`flex px-4 mt-4 underline place-content-between`,children:(0,z.jsx)(k,{className:`m-auto text-sm hover:text-blue-300`,to:`/sign-in`,search:{me:o},children:`Already have an account? Sign in instead.`})})]})}var Po=async({email:e})=>{let{data:t}=await s.post(`/ResendVerificationEmail/`,{email:e});return t};function Fo(){return M({mutationFn:e=>Po(e)})}var Io=async e=>{let{data:t}=await s.put(`/VerifyEmail/`,{token:e.toString()});return t};function Lo(){return M({mutationFn:e=>Io(e)})}var Ro=D({email:io});function zo(){let e=De(),{mutate:t,isPending:n}=Fo(),r=I({resolver:j(Ro),defaultValues:{email:``}}),i=r.watch(`email`),{setFocus:a,control:o,handleSubmit:s}=r;(0,R.useEffect)(()=>{a(`email`)},[a]);let c=(0,R.useCallback)(async n=>{t(n,{onSuccess:t=>{L.success(`Success`,{description:`${t}`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),e({to:`/sign-in`,search:{me:i}})}})},[i,e,t]);return(0,z.jsxs)(V,{...r,children:[(0,z.jsx)(`p`,{className:`text-sm py-2`,children:`Please Enter an Email`}),(0,z.jsxs)(`form`,{id:`auth-verify-email-form`,name:`auth-verify-email-form`,onSubmit:s(c),className:`my-4`,children:[(0,z.jsx)(U,{control:o,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:n,type:`email`,className:`dark:bg-black dark:border-black`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{type:`submit`,variant:`submit`,disabled:n,className:`w-full my-2 rounded-full`,children:`Send Verification Email`})]})]})}function Bo(){let{token:e}=Ce({strict:!1}),t=De(),{mutate:n,isPending:r}=Lo(),i=(0,R.useCallback)(e=>{n(e,{onSuccess:()=>{L.success(`Success`,{description:`Email verified successfully`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),t({to:`/sign-in`})}})},[n,t]);return(0,R.useEffect)(()=>{e&&i(e)},[i,e]),(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-3xl font-light`,children:`Verify Email`}),r?(0,z.jsx)(`p`,{className:`text-sm pt-1`,children:`Verifying email...`}):(0,z.jsx)(zo,{})]})}function Vo(){let{email:e}=Ce({strict:!1}),{mutate:t,isPending:n}=Fo(),r=(0,R.useCallback)(n=>(n.preventDefault(),e&&t({email:e},{onSuccess:e=>{L.success(`Code Sent`,{description:`${e}`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}}),!1),[e,t]);return(0,z.jsxs)(`div`,{className:`text-foreground dark:text-white w-lg flex flex-col gap-4`,children:[(0,z.jsxs)(`h1`,{className:`text-3xl font-light`,children:[(0,z.jsx)(`span`,{"aria-hidden":`true`,className:`text-2xl animate-flower-dance mr-4`,title:`Loading`,children:`🌼`}),`Check your email!`]}),(0,z.jsxs)(`p`,{children:[`Your account has been created! You should receive an email with a link to `,(0,z.jsx)(`strong`,{children:`[Verify My Email]`}),`!`]}),(0,z.jsxs)(`p`,{children:[`From: `,(0,z.jsx)(`strong`,{children:`harper@notifications.harperfabric.com`})]}),(0,z.jsxs)(`p`,{children:[`To: `,(0,z.jsx)(`strong`,{children:e||`your email`})]}),(0,z.jsx)(`p`,{children:`Can you click it? Then we can carry on to more fun things!`}),(0,z.jsxs)(`div`,{className:`underline flex gap-4`,children:[(0,z.jsx)(k,{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,z.jsx)(k,{className:`text-sm opacity-50 text-muted-foreground hover:text-foreground dark:text-inherit dark:hover:text-blue-300`,to:void 0,onClick:r,disabled:n,children:`Send me another code, please.`})]})]})}var Ho=F({getParentRoute:()=>zi,id:`_authLayout`,component:ja}),Uo=F({getParentRoute:()=>Ho,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:Oo,beforeLoad:({context:e,location:t})=>{let n=e.authentication[m]?.user;if(n){let e=t?.search,r=Di(n);throw rt({to:e?.redirect?.startsWith(`/`)?e.redirect:r})}}}),Wo=F({getParentRoute:()=>zi,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:mo,beforeLoad:({context:e,location:t})=>{if(e.authentication.OverallAppSignIn?.user){let e=t?.search;throw rt({to:e?.redirect?.startsWith(`/`)?e.redirect:`/`})}}}),Go=F({getParentRoute:()=>Ho,path:`sign-up`,head:()=>({meta:[{title:`Sign Up — Harper Fabric`}]}),component:No}),Ko=F({getParentRoute:()=>Ho,path:`forgot-password`,head:()=>({meta:[{title:`Forgot Password — Harper Fabric`}]}),component:vo}),qo=F({getParentRoute:()=>Ho,path:`verify-email`,head:()=>({meta:[{title:`Verify Email — Harper Fabric`}]}),component:Bo}),Jo=F({getParentRoute:()=>Ho,path:`verifying`,head:()=>({meta:[{title:`Check Your Email — Harper Fabric`}]}),component:Vo}),Yo=F({getParentRoute:()=>Ho,path:`check-oauth`,head:()=>({meta:[{title:`Signing In — Harper Fabric`}]}),component:La}),Xo=F({getParentRoute:()=>Ho,path:`reset-password`,head:()=>({meta:[{title:`Reset Password — Harper Fabric`}]}),component:So});Ho.addChildren([Uo,Go,Yo,Ko,qo,Jo,Xo]);var Zo=[Wo];function Qo({children:e}){return(0,z.jsx)(`nav`,{className:`fixed top-20 w-full h-12 z-39 py-2 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,z.jsxs)(`div`,{className:`flex items-center h-full space-x-2`,children:[(0,z.jsx)(Ga,{}),e]})})}function $o(e){if(rs(e)||is(e))return`warning`;if(es(e))return`success`;switch(e){case`STOPPED`:return`secondary`;case`TERMINATING`:case`TERMINATED`:case`FAILED`:case`REMOVED`:case`ERROR`:return`destructive`;default:return`default`}}function es(e){switch(e){case`RUNNING`:case`UPDATED`:return!0;default:return!1}}function ts(e){switch(e){case`FAILED`:return!0;default:return!1}}function ns(e){switch(e){case`TERMINATED`:return!0;default:return!1}}function rs(e){switch(e){case`CLONE_PENDING`:case`PENDING_UPGRADE`:return!0;default:return!1}}function is(e){switch(e){case`PROVISIONING`:case`CLONING`:case`CLONE_READY`:case`UPDATING_HDB_NODES`:case`DRAINING`:case`UPDATING`:return!0;default:return!1}}function J({...e}){return(0,z.jsx)(Nt,{"data-slot":`dialog`,...e})}function as({...e}){return(0,z.jsx)(Ie,{"data-slot":`dialog-trigger`,...e})}function os({...e}){return(0,z.jsx)(Be,{"data-slot":`dialog-portal`,...e})}function ss({className:e,...t}){return(0,z.jsx)(Lt,{"data-slot":`dialog-overlay`,className:d(`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-black-dark/90`,e),...t})}function Y({className:e,children:t,...n}){return(0,z.jsxs)(os,{"data-slot":`dialog-portal`,children:[(0,z.jsx)(ss,{}),(0,z.jsxs)(Ur,{"data-slot":`dialog-content`,className:d(`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 p-6 shadow-lg duration-200`,e),...n,children:[t,(0,z.jsxs)(Ct,{className:`ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs 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`,children:[(0,z.jsx)(An,{className:`text-popover-foreground`}),(0,z.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function cs({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`dialog-header`,className:d(`flex flex-col gap-2 text-center sm:text-left`,e),...t})}function X({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`dialog-footer`,className:d(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`,e),...t})}function Z({className:e,...t}){return(0,z.jsx)(Vt,{"data-slot":`dialog-title`,className:d(`text-lg leading-none text-popover-foreground font-semibold`,e),...t})}function ls({className:e,...t}){return(0,z.jsx)(_e,{"data-slot":`dialog-description`,className:d(`text-muted-foreground text-sm`,e),...t})}function us({typeOfThingBeingDeleted:e,nameOfThingBeingDeleted:t,isModalOpen:n,hideDataLossWarning:r,setIsModalOpen:i,deletionConfirmed:a,deletionPending:o,trigger:s,presentParticiple:c=`Deleting`,transitiveVerb:l=`Delete`}){return(0,z.jsxs)(J,{open:n,onOpenChange:i,children:[s&&(0,z.jsx)(as,{asChild:!0,children:s}),(0,z.jsxs)(Y,{className:`sm:max-w-[750px]`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsxs)(Z,{children:[`Are you sure you want to `,l.toLowerCase(),` this `,e,`?`]}),(0,z.jsx)(ls,{children:`This action cannot be undone.`})]}),!r&&(0,z.jsxs)(`div`,{className:`p-3 my-5 text-white rounded-md bg-amber-600`,children:[(0,z.jsxs)(`p`,{className:`flex space-x-1 font-semibold align-baseline`,children:[(0,z.jsx)(Br,{className:`inline-block size-5`}),` `,(0,z.jsx)(`span`,{children:`Warning`})]}),(0,z.jsxs)(`p`,{className:`pt-2 text-base`,children:[`By `,c.toLowerCase(),` `,e,` `,(0,z.jsx)(`span`,{className:`font-semibold`,children:t}),` `,`you will lose the data stored in it permanently.`]})]}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-center space-x-5`,children:[(0,z.jsxs)(g,{type:`button`,className:`rounded-full`,onClick:()=>i(!1),children:[(0,z.jsx)(Sr,{}),` Cancel`]}),(0,z.jsxs)(g,{variant:`destructive`,className:`rounded-full`,onClick:a,disabled:o,children:[(0,z.jsx)(cn,{}),` `,l]})]})})]})]})}function ds({className:e,variant:t,asChild:n=!1,...r}){return(0,z.jsx)(n?rr:`span`,{"data-slot":`badge`,className:d(ia({variant:t}),e),...r})}function fs({...e}){return(0,z.jsx)(Ne,{"data-slot":`dropdown-menu`,...e})}function ps({...e}){return(0,z.jsx)(tt,{"data-slot":`dropdown-menu-trigger`,...e})}function ms({className:e,sideOffset:t=4,...n}){return(0,z.jsx)(ht,{children:(0,z.jsx)(me,{"data-slot":`dropdown-menu-content`,sideOffset:t,className:d(`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 hs({className:e,inset:t,variant:n=`default`,...r}){return(0,z.jsx)(In,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:d(`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 gs({className:e,children:t,checked:n,...r}){return(0,z.jsxs)(Vn,{"data-slot":`dropdown-menu-checkbox-item`,className:d(`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,z.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,z.jsx)(at,{children:(0,z.jsx)(Ke,{className:`size-4`})})}),t]})}function _s({className:e,inset:t,...n}){return(0,z.jsx)(ct,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:d(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...n})}function vs({className:e,...t}){return(0,z.jsx)(We,{"data-slot":`dropdown-menu-separator`,className:d(`bg-border -mx-1 my-1 h-px`,e),...t})}function ys(e){return!!e?.plans?.[0]?.planId?.startsWith(`self-hosted`)}function bs({cluster:e}){let t=bi(e.id),{view:n,update:r}=ga(e.organizationId,e.id),i=!c.checkForFabricConnect(e.id)&&!!t.user,a=(0,R.useCallback)(()=>{c.setUserForEntity(e,null),c.flagForFabricConnect(e.id,!1)},[e]);if(n){if(!e.fqdn)return(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/instances`,className:`text-sm text-nowrap`,"aria-label":`View ${e.name}`,title:`View ${e.name}`,children:(0,z.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Instances `,(0,z.jsx)(Un,{className:`inline-block`})]})});if(e.resetPassword)return r?(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/finish-setup`,className:`text-sm text-nowrap`,"aria-label":`Set Password on ${e.name}`,title:`Set Password on ${e.name}`,children:(0,z.jsxs)(g,{variant:`positive`,className:`py-2 hover:border-b-2 animate-glow-pulse`,children:[`Finish Setup `,(0,z.jsx)(Un,{className:`inline-block`})]})}):(0,z.jsx)(`span`,{className:`py-2 text-nowrap`,children:`Pending Owner Setup`});if(!t.isLoading)return i?(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/`,className:`text-sm text-nowrap`,"aria-label":`View ${e.name}`,title:`View ${e.name}`,children:(0,z.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Direct Connect `,(0,z.jsx)(Un,{className:`inline-block`})]})}):r&&!ys(e)?(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/`,className:`text-sm text-nowrap`,"aria-label":`Connect to ${e.name}`,title:`Connect to ${e.name}`,children:(0,z.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Fabric Connect `,(0,z.jsx)(Un,{className:`inline-block`})]})}):(0,z.jsx)(k,{to:`/${e.organizationId}/${e.id}/sign-in`,className:`text-sm text-nowrap`,"aria-label":`Sign In to ${e.name}`,title:`Sign In to ${e.name}`,onClick:a,children:(0,z.jsxs)(`span`,{className:`py-2 hover:border-b-2`,children:[`Direct Sign In `,(0,z.jsx)(Un,{className:`inline-block`})]})})}}function xs(e,t){let n=[];if(e)for(let r of e)n.push(r[t]);return n}function Ss({cluster:e,forceProgressBarVisible:t}){let[n,r]=(0,R.useState)(t||!1),{data:i}=A(ro(n&&e.id,2e3));(0,R.useEffect)(function(){(rs(e.status)||is(e.status))&&r(!0)},[n,e.status,i?.instances]);let a=(0,R.useMemo)(()=>{let e=xs(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||ns(t)||(rs(t)?(n+=1,r[t]=`${n} ${Ua(t)}`):is(t)?(a+=1,o[t]=`${a} ${Ua(t)}`):ts(t)?(l+=1,u[t]=`${l} ${Ua(t)}`):!i.planId||!e.includes(i.planId)?(a+=1,o.DRAINING_TRAFFIC=`${a} ${Ua(`Draining Traffic`)}`):es(t)&&(s+=1,c[t]=`${s} ${Ua(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,z.jsxs)(`div`,{className:`w-full text-center`,children:[(0,z.jsxs)(`div`,{className:`w-full h-2.5 rounded-full overflow-clip flex shadow`,children:[(0,z.jsx)(`div`,{style:{width:a.runningWidth},className:`grow bg-green/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,z.jsx)(`div`,{style:{width:a.failedWidth},className:`grow bg-red/80 transition-[width] duration-1000 ease-in-out motion-reduce:transition-none`}),(0,z.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,z.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,z.jsx)(`div`,{className:`text-xs text-muted-foreground font-light mt-2`,children:a.text})]}):null}async function Cs(e){let{data:t}=await s.delete(`/Cluster/${e}`,{timeout:0});return t}function ws(){return M({mutationFn:e=>Cs(e)})}function Ts(...e){return(0,R.useMemo)(()=>e.map(e=>(()=>{navigator.clipboard.writeText(e),L.info(`Copied to clipboard!`,{icon:(0,z.jsx)(It,{}),duration:1e3})})),e)}function Es({cluster:e}){let t=fe(),n=xt(),i=(0,R.useMemo)(()=>f(e),[e]),a=oa({operationsUrl:i}),o=bi(e.id),[,s]=Gi(qi.SavedClusterState,null),{view:l,update:u,remove:d,create:p}=ga(e.organizationId,e.id),{mutate:m,isPending:h}=ws(),[g,_]=(0,R.useState)(!1),[v,y]=(0,R.useState)(!1),b=(0,R.useMemo)(()=>e.status&&Xa.includes(e.status),[e.status]),x=ys(e),S=c.checkForFabricConnect(e.id),C=!S&&!!o.user,ee=(0,R.useMemo)(()=>e.status&&Za.includes(e.status),[e.status]),w=(0,R.useMemo)(()=>e.status&&ts(e.status),[e.status]),te=(0,R.useCallback)(async()=>{_(!0);let t=await no(e.id).catch(e=>(console.error(`Failed to lookup cluster details, proceeding without checking instances.`,e),null));if(await r({entityId:e.id,instanceClient:a}),t?.instances?.length)for(let e of t.instances)c.setUserForEntity(e,null);c.setUserForEntity(e,null)},[e,a]),ne=(0,R.useCallback)(()=>{s(e),t.navigate({to:`/${e.organizationId}/new-cluster`})},[e,t,s]),T=(0,R.useCallback)(()=>y(!0),[]),E=(0,R.useCallback)(()=>{let r=e.organizationId;m(e.id,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[r],refetchType:`active`}),await t.invalidate(),L.success(`Success`,{description:x?`Cluster successfully removed.`:`Cluster successfully terminated.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),y(!1)},onError:()=>{L.error(`Error`,{description:x?`Failed to remove cluster: ${e.name}`:`Failed to terminate cluster: ${e.name}.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),y(!1)}})},[t,e.organizationId,e.id,e.name,m,x,n]),re=e.domains?.[0]?.domain||e.fqdn,[D,ie]=Ts(`${re}`,`https://${re}`),ae=[b&&u&&!o.isLoading&&(!C||S)&&(0,z.jsx)(k,{to:`${e.id}/sign-in`,disabled:g,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(gr,{className:`text-green`}),` Direct Sign In`]})},`sign-in`),b&&l&&!!i&&!o.isLoading&&C&&(0,z.jsx)(hs,{onClick:te,disabled:g,children:`Direct Sign Out`},`direct-sign-out`),b&&u&&(0,z.jsx)(k,{to:`${e.id}/edit`,disabled:g,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(gt,{className:`text-purple-600`}),` `,x?`Edit`:`Edit Scaling`]})},`edit`),b&&u&&!x&&(0,z.jsx)(k,{to:`${e.id}/edit/version`,disabled:g,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(Jn,{className:`text-fuchsia-300`}),` Edit Version`]})},`edit-version`),b&&u&&!1,b&&l&&(0,z.jsx)(k,{to:`${e.id}/instances`,disabled:g,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(Ln,{className:`text-orange-300`}),` Instances`]})},`instances`),b&&l&&e.fqdn&&(0,z.jsx)(vs,{},`copy-separator`),b&&l&&e.fqdn&&(0,z.jsxs)(hs,{onClick:D,disabled:g,children:[(0,z.jsx)(Hr,{}),` Copy Host Name`]},`copy-host-name`),b&&l&&e.fqdn&&(0,z.jsxs)(hs,{onClick:ie,disabled:g,children:[(0,z.jsx)(Hr,{}),` Copy API URL`]},`copy-api-url`),w&&p&&(0,z.jsx)(hs,{className:`focus:bg-green/70 focus:text-white`,onClick:ne,children:`Try Again`},`try-again`),!ee&&d&&b&&(0,z.jsx)(vs,{},`remove-separator`),!ee&&d&&(0,z.jsxs)(hs,{className:`focus:bg-red/70 focus:text-white`,onClick:T,children:[(0,z.jsx)(cn,{className:`text-red-300`}),` `,x?`Remove`:`Terminate`]},`remove`)].filter(Ni);return(0,z.jsxs)(xi,{className:`relative h-full justify-between hover:shadow-lg transition-shadow duration-200`,children:[(0,z.jsxs)(Si,{children:[(0,z.jsxs)(wi,{className:`flex items-center justify-between`,children:[re?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`span`,{className:`truncate max-w-48`,children:re}),(0,z.jsx)(st,{onClick:D,size:16,className:`cursor-pointer`}),(0,z.jsx)(`span`,{className:`grow`})]}):(0,z.jsx)(`span`,{children:`Self-Hosted`}),!ee&&(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{children:(0,z.jsx)(Bn,{"aria-label":`Cluster options`})}),(0,z.jsx)(ms,{children:[...ae]})]})]}),(0,z.jsx)(Ci,{children:(0,z.jsx)(`h2`,{children:e.name})})]}),(0,z.jsxs)(Ti,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsx)(Ss,{cluster:e}),b&&l&&(0,z.jsx)(bs,{cluster:e}),w&&e.status&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(ds,{variant:$o(e.status),children:Ua(e.status)}),(0,z.jsx)(`span`,{className:`text-xs`,children:`Click "..." to choose how to proceed.`})]})]}),(0,z.jsx)(us,{typeOfThingBeingDeleted:`cluster`,transitiveVerb:x?`Remove`:`Terminate`,presentParticiple:x?`Removing`:`Terminating`,nameOfThingBeingDeleted:e.name,isModalOpen:v,hideDataLossWarning:x,setIsModalOpen:e=>y(e),deletionConfirmed:E,deletionPending:h})]})}function Ds({overEmail:e}){return(0,z.jsx)(`a`,{href:e?`mailto:support@harperdb.io`:`https://discord.com/channels/1415002037439041710/1415002038286286994`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`Contact us`})}function Os({className:e,text:t,centered:n,...r}){return(0,z.jsxs)(`div`,{className:`text-foreground h-full w-full ${e||``} ${n?`flex flex-col items-center justify-center`:``}`,...r,children:[(0,z.jsx)(`img`,{src:`/HDBDogOnly.svg`,width:`100px`,height:`100px`,alt:`HDB Dog Logo Loading`,className:`inline-block`}),(0,z.jsx)(`p`,{className:`pt-4`,children:t||`Loading...`})]})}function ks({children:e,className:t}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] relative ${t??``}`,children:e})]})}async function As(e){let{data:t}=await s.get(`/Plan/`,{params:{organizationId:e}});return t}function js(e){return P({queryKey:[e,`instancePlan`],queryFn:()=>As(e),retry:!1})}async function Ms(){let{data:e}=await s.get(`/HarperVersions/`);return e}function Ns(){return P({queryKey:[`HarperVersions`],queryFn:Ms,staleTime:6e4,retry:!1})}async function Ps({organizationId:e,availableHosts:t}={}){let{data:n}=await s.get(`/Region/`,{params:{availableHosts:t,organizationId:e}});return n}function Fs({organizationId:e,availableHosts:t}={}){return P({queryKey:[e,`regionLocations`,t],queryFn:()=>Ps({organizationId:e,availableHosts:t}),retry:!1})}function Is(e){return(t,n)=>t[e]===n[e]?0:t[e]>n[e]?1:-1}function Ls(e){let t=e.split(`.`).map(Number);return(t[0]<<24|t[1]<<16|t[2]<<8|t[3])>>>0}function Rs(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):!1}function zs(e,t){return e.instanceFqdn===t.instanceFqdn?e.operationsApiPort-t.operationsApiPort:Rs(e.instanceFqdn)&&Rs(t.instanceFqdn)?Ls(e.instanceFqdn)-Ls(t.instanceFqdn):e.instanceFqdn>t.instanceFqdn?1:-1}function Bs(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 Vs(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 Hs(e,t,n){let r=Bs(e,t),i={};for(let e in r)i[e]=Vs(r[e],n);return i}function Us(e,t){let n=Gs(e),r=Gs(t);return!n||!r?!1:Js(r,n)>=0}function Ws(e,t){let n=Gs(e),r=Gs(t);return!n&&!r?0:n?r?Js(n,r):1:-1}function Gs(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=Ks(a[0]),s=Ks(a[1]??`0`),c=Ks(a[2]??`0`);return o==null||s==null||c==null?null:{major:o,minor:s,patch:c,pre:i?i.split(`.`).map(e=>qs(e)?Number(e):e):[]}}function Ks(e){return e==null||e===``||!/^\d+$/.test(e)?null:Number(e)}function qs(e){return/^\d+$/.test(e)}function Js(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}function Ys({width:e,className:t,animated:n,placeholder:r}){return(0,z.jsxs)(`div`,{className:x(`w-full bg-gray-200 rounded-full relative`,r?`h-6`:`h-2.5`),children:[r&&(0,z.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,z.jsx)(`div`,{className:x(`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 Xs({duration:e,message:t,lateMessage:n}){let r=(0,R.useRef)(0),i=(0,R.useRef)(0),[a,o]=(0,R.useState)(!1),[s,c]=(0,R.useState)(`5%`),l=(0,R.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,R.useEffect)(()=>(r.current=requestAnimationFrame(l),()=>cancelAnimationFrame(r.current)),[l]),(0,z.jsxs)(z.Fragment,{children:[a?n:t,(0,z.jsx)(Ys,{width:s,animated:!1})]})}async function Zs(e){let{data:t}=await s.post(`/Cluster/`,e,{timeout:0});return t}function Qs(){return M({mutationFn:e=>Zs(e)})}async function $s(e){let{id:t,...n}=e,{data:r}=await s.put(`/Cluster/${t}`,n,{timeout:0});return r}function ec(){return M({mutationFn:e=>$s(e)})}async function tc(e){let{data:t}=await s.get(`/Organization/${e}`);return t}function nc(e){return P({queryKey:[e],queryFn:()=>tc(e),retry:!1,enabled:!!e,refetchInterval:1e4})}var rc=`ENTERPRISE`;function ic(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 ac(e,t,n=`-`){let r=t.split(n)[0];return e.findIndex(e=>e.startsWith(r))!==-1}function oc(e){return e.replace(/[^a-zA-Z0-9]/g,`-`).replace(/([a-z])([A-Z])/g,`$1-$2`).toLowerCase().replace(/-+/g,`-`).replace(/^-+|-+$/g,``)}async function sc(e){await s.put(`/Payment/`,e)}function cc(){return M({mutationFn:e=>sc(e)})}function lc(e){let{mutate:t}=cc();return(0,R.useCallback)((n,r)=>{t({paymentMethodId:typeof n==`string`?n:n.id,organizationId:e},{onSuccess:()=>{L.success(`Success! Your payment method has been saved.`),r(!0)},onError:()=>{L.error(`Failed to process payment method details. Please try another payment method.`),r(!1)}})},[t,e])}var uc=(0,R.createContext)(null);function dc(){return(0,R.useContext)(uc)}function fc({hasExistingBilling:e,onPaymentAdded:t,onSaveStateForBillingRedirect:n}){let{organizationId:r}=N({strict:!1}),i=ft(),a=dc(),o=Te(),[s,c]=(0,R.useState)(!1),l=lc(r),u=(0,R.useCallback)(()=>{t(!1)},[t]);return(0,z.jsxs)(`form`,{id:`billing-add-payment-method-form`,name:`billing-add-payment-method-form`,onSubmit:(0,R.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),L.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]),className:`max-w-xl`,children:[(0,z.jsx)(ke,{}),(0,z.jsx)(jt,{options:{mode:`billing`}}),(0,z.jsxs)(`div`,{className:`mt-4 flex gap-8 items-center`,children:[(0,z.jsxs)(g,{disabled:!i||!o||s,variant:`submit`,className:`rounded-full`,children:[(0,z.jsx)(Pe,{}),` Add Payment Method`]}),e&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`text-xs text-gray-600`,children:`Your existing payment method will be overwritten.`}),(0,z.jsx)(g,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Cancel`})]})]})]})}async function pc(e){let{data:t}=await s.post(`/StripeAccount/`,e);return t}function mc(){return M({mutationFn:e=>pc(e)})}async function hc(e){let{data:t}=await s.post(`/Payment/`,{organizationId:e.organizationId});return t}function gc(){return M({mutationFn:e=>hc(e)})}function _c(e){let{enabled:t,existingStripeId:n,organizationId:r}=e,{mutate:i}=mc(),{mutate:a}=gc(),[o,s]=(0,R.useState)(void 0);return(0,R.useEffect)(()=>{},[i,t,n,a,(0,R.useCallback)(e=>{s(e.clientSecret)},[]),r]),o}function vc({children:e}){let{organizationId:t}=N({strict:!1}),{data:n}=A(nc(t)),r=_c({organizationId:t,enabled:!!n,existingStripeId:n?.stripeId}),i=Ki();return(0,R.useMemo)(()=>({clientSecret:r||``,appearance:{theme:i===`dark`?`night`:`stripe`}}),[r,i]),console.error(`No VITE_PUBLIC_STRIPE_KEY is configured for this environment.`),(0,z.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 yc({onPaymentAdded:e,onSaveStateForBillingRedirect:t}){let{organizationId:n}=N({strict:!1}),{data:r}=A(nc(n)),i=r?.billing,a=i?.paymentMethod;return(0,z.jsxs)(vc,{children:[(0,z.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,z.jsx)(fc,{hasExistingBilling:!!i,onSaveStateForBillingRedirect:t,onPaymentAdded:e})]})}var bc=function(e){return e.PASS=`pass`,e.FAIL=`fail`,e.PENDING=`pending`,e.ERROR=`error`,e}({});function xc(e){switch(e){case bc.PASS:return`success`;case bc.FAIL:case bc.ERROR:return`destructive`;case bc.PENDING:default:return`default`}}function Sc(e){switch(e){case bc.PASS:return`READY`;case bc.FAIL:case bc.ERROR:case bc.PENDING:default:return e.toUpperCase()}}function Cc(e,t){return`${String(e).padStart(2,`0`)}/${String(t%100).padStart(2,`0`)}`}function wc(e){let{onSaveStateForBillingRedirect:t,onReplacingPaymentMethod:n}=e??{},{organizationId:r}=N({strict:!1}),{update:i}=ma(r),{data:a,refetch:o}=A(nc(r)),s=a?.billing?.paymentMethod,[c,l]=(0,R.useState)(!1),u=(0,R.useCallback)(()=>{l(!c),n?.(!c)},[n,c]),d=(0,R.useCallback)(e=>{l(!1),n?.(!1),e&&o()},[n,o]);return a?.type===`ENTERPRISE`?(0,z.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,z.jsx)(Ds,{}),`, we would love to talk!`]}):s&&!c?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`mt-2`,children:[s.brand?.toUpperCase()??`Card`,` ending in `,s.last4??`••••`,s.expMonth&&s.expYear?(0,z.jsxs)(z.Fragment,{children:[`(exp `,Cc(s.expMonth,s.expYear),`)`]}):null,s.status?(0,z.jsxs)(z.Fragment,{children:[`—`,` `,(0,z.jsx)(ds,{variant:xc(s.status),children:Sc(s.status)})]}):null]}),i&&(0,z.jsx)(`div`,{className:`mt-2 mb-6`,children:(0,z.jsx)(g,{variant:`defaultOutline`,type:`button`,onClick:u,children:`Replace Payment Method`})})]}):i?(0,z.jsx)(yc,{onSaveStateForBillingRedirect:t,onPaymentAdded:d}):(0,z.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 Q(e){return e!==void 0&&e>0}function Tc({clusterId:e,isPending:t,onGoBackToDetails:n,onSaveStateForBillingRedirect:r,onSubmit:i,organizationId:a,selectedPlan:o}){let{data:s}=A(nc(a)),c=s?.billing,l=s?.type===rc,d=l||c?.paymentMethod?.status===bc.PASS,[f,p]=(0,R.useState)(!1),m=Q(o?.planLimits?.expirationMonths)&&o.planLimits.expirationMonths<1e3&&o.planLimits.expirationMonths,h=(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)(`div`,{className:`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end mt-3 max-w-xl`,children:[(0,z.jsxs)(g,{type:`button`,variant:`defaultOutline`,className:`rounded-full`,disabled:t,onClick:n,children:[(0,z.jsx)(Sr,{}),` Back to Details`]}),(0,z.jsxs)(g,{disabled:t||!d||f,type:`submit`,variant:`submit`,className:`rounded-full`,onClick:i,children:[e?`Edit Cluster`:`Create New Cluster`,` `,(0,z.jsx)(Un,{})]})]})});if(l)return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`ul`,{className:`list-disc ml-6 max-w-lg`,children:[(0,z.jsx)(`li`,{children:`Reminder: you will be billed at your contracted rate for any additional infrastructure.`}),(0,z.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,z.jsx)(Ds,{overEmail:!0}),`, we are here to help.`]})]}),h]});let _=m&&`, or ${u(m,`month`,`months`)} elapse`;return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`ul`,{className:`list-disc ml-6 mb-6`,children:[(0,z.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,z.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,z.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,z.jsxs)(`li`,{children:[`When that block is used up`,_,`, you will be automatically renewed.`]}),(0,z.jsx)(`li`,{children:`While refunds are not available, we’d be happy to assist you with troubleshooting.`}),(0,z.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,z.jsx)(Ds,{overEmail:!0}),`, we are here to help.`]})]}),(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm mb-6`,children:`Payment method:`}),(0,z.jsx)(wc,{onSaveStateForBillingRedirect:r,onReplacingPaymentMethod:p}),h]})}var Ec=/(^$|^(?: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,Dc=65535,Oc=w().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.`),kc=D({clusterName:w().nonempty(`Please enter a cluster name.`).max(255,`Cluster name cannot be longer than 255 characters long.`),abbreviatedName:ne([ie(``),T(),Oc]).optional(),fqdn:w().regex(Ec,`Please enter a valid host name without the port or any path.`).optional(),version:w().optional(),deploymentDescription:w().nonempty(`Please select a deployment tier.`),performanceDescription:w().nonempty(`Please select a performance tier.`),regionPlans:ae(D({regionName:w().nonempty(`Please select a region.`),latencyDescription:w().nonempty(`Please select a latency tier.`)})).max(50,{error:`A maximum of 50 regions can be selected for each cluster. `}),instances:ae(D({secure:re([`true`,`false`]),fqdn:w().nonempty(`Please enter the host name of your instance.`).regex(Ec,`Please enter a valid host name without the port or any path.`),port:b().min(0,`Positive thinking only, please.`).max(Dc,`That port number is too high.`).optional()})).max(100,{error:`A maximum of 100 instances can be added to each cluster.`}),skipToBilling:E().optional(),skipGtmWait:E().optional(),sourceClusterId:w().optional()});function Ac({calculatedNames:e,disabled:t,form:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(U,{control:n.control,name:`abbreviatedName`,render:({field:n})=>(0,z.jsxs)(W,{className:`col-span-3`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...n,type:`text`,maxLength:Oc.maxLength,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:e.suggestedAbbreviatedName,disabled:t})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(W,{className:`col-span-3 `,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Full Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(`span`,{children:e.fullHostName})}),(0,z.jsx)(K,{})]})]})}function jc({className:e}={}){return(0,z.jsx)(`div`,{className:(0,R.useMemo)(()=>x(`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])})}function Mc({...e}){return(0,z.jsx)(zr,{"data-slot":`select`,...e})}function Nc({...e}){return(0,z.jsx)(xn,{"data-slot":`select-group`,...e})}function Pc({...e}){return(0,z.jsx)(xe,{"data-slot":`select-value`,...e})}function Fc({className:e,children:t,...n}){return(0,z.jsxs)(Dt,{"data-slot":`select-trigger`,className:d(`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,z.jsx)(ar,{asChild:!0,children:(0,z.jsx)(sr,{className:`opacity-50 size-4`})})]})}function Ic({className:e,children:t,position:n=`popper`,...r}){return(0,z.jsx)(Or,{children:(0,z.jsxs)(hn,{"data-slot":`select-content`,className:d(`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,z.jsx)(Rc,{}),(0,z.jsx)(jr,{className:d(`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,z.jsx)(zc,{})]})})}function Lc({className:e,...t}){return(0,z.jsx)(en,{"data-slot":`select-label`,className:d(`px-2 py-1.5 text-sm font-medium`,e),...t})}function $({className:e,children:t,...n}){return(0,z.jsxs)(Yn,{"data-slot":`select-item`,className:d(`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,z.jsx)(Tn,{children:t}),(0,z.jsx)(`span`,{className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,z.jsx)(kn,{children:(0,z.jsx)(Ke,{className:`size-4`})})})]})}function Rc({className:e,...t}){return(0,z.jsx)(Fr,{"data-slot":`select-scroll-up-button`,className:d(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,z.jsx)(Xe,{className:`size-4`})})}function zc({className:e,...t}){return(0,z.jsx)(sn,{"data-slot":`select-scroll-down-button`,className:d(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,z.jsx)(sr,{className:`size-4`})})}var Bc={Colocated:`Shared infrastructure for optimized value`,Dedicated:`Dedicated infrastructure for consistent performance`,"Self-Hosted":`Your own infrastructure`};function Vc({availableDeploymentTypes:e,disabled:t,form:n}){return(0,z.jsx)(U,{control:n.control,name:`deploymentDescription`,render:({field:r})=>(0,z.jsxs)(W,{className:`col-span-3`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Harper Deployment`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...r,disabled:t,onValueChange:e=>{r.onChange(e),n.trigger()},children:[(0,z.jsx)(Fc,{className:`w-full h-auto`,children:(0,z.jsx)(Pc,{placeholder:`Choose Tier`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:e.map(e=>(0,z.jsxs)($,{value:e,children:[(0,z.jsx)(`dt`,{className:`text-left font-bold text-sm/6`,children:e}),Bc[e]&&(0,z.jsx)(`dd`,{className:`font-light`,children:Bc[e]})]},e))})})]})})}),(0,z.jsx)(K,{})]})})}function Hc({disabled:e,form:t}){return(0,z.jsx)(U,{control:t.control,name:`fqdn`,render:({field:t})=>(0,z.jsxs)(W,{className:`md:col-span-6 col-span-3`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Optional Cluster Load Balancer Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...t,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:`example.your-company.com`,disabled:e})}),(0,z.jsx)(K,{})]})})}function Uc({className:e,disabled:t,form:n}){return(0,z.jsx)(U,{control:n.control,name:`clusterName`,render:({field:n})=>(0,z.jsxs)(W,{className:e,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Cluster Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{autoFocus:!0,type:`text`,maxLength:kc.shape.clusterName.maxLength,autoCapitalize:`words`,disabled:t,...n})}),(0,z.jsx)(K,{})]})})}function Wc({availablePerformanceDescriptions:e,form:t,selectedDeployment:n}){return(0,z.jsx)(U,{control:t.control,name:`performanceDescription`,render:({field:r})=>(0,z.jsxs)(W,{className:`col-span-3`,children:[(0,z.jsxs)(G,{className:`pb-1`,children:[n.startsWith(`Self`)?`Support`:`Performance`,` & Usage`]}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...r,onValueChange:e=>{r.onChange(e),t.trigger()},disabled:!e?.length,children:[(0,z.jsx)(Fc,{className:`w-full h-auto`,children:(0,z.jsx)(Pc,{placeholder:`Choose Tier`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:e.map(e=>(0,z.jsxs)($,{value:e.performanceTier,children:[(0,z.jsxs)(`dt`,{className:`text-left font-bold text-sm/6 flex items-center gap-2`,children:[e.name,e.isPremium&&(0,z.jsx)(ds,{children:`Premium`})]}),e.description&&(0,z.jsx)(`dd`,{className:`font-light`,children:e.description})]},e.name))})})]})})}),(0,z.jsx)(K,{})]})})}function Gc({className:e,...t}){let{formDescriptionId:n}=Ja();return(0,z.jsx)(`p`,{"data-slot":`form-description`,id:n,className:d(`text-muted-foreground text-sm`,e),...t})}function Kc({className:e,form:t}){return(0,z.jsx)(U,{control:t.control,name:`skipGtmWait`,render:({field:t})=>(0,z.jsxs)(W,{className:e,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{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,z.jsx)(G,{className:`cursor-pointer`,children:`Immediate upgrade and restart`})]}),(0,z.jsx)(Gc,{children:`Apply changes immediately without waiting for each instance to be taken out of the load balancer (faster, but potentially less safe).`})]})})}function qc({className:e,disabled:t,form:n,harperVersions:r}){return r?.value?.length?(0,z.jsx)(U,{control:n.control,name:`version`,render:({field:i})=>(0,z.jsxs)(W,{className:e,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Harper Version`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...i,disabled:t,onValueChange:e=>{i.onChange(e),n.trigger()},children:[(0,z.jsx)(Fc,{className:`w-full h-auto`,children:(0,z.jsx)(Pc,{placeholder:`Choose Version`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:r?.value.map(e=>(0,z.jsxs)($,{value:e.version,children:[e.version,` `,(0,z.jsx)(`span`,{className:`font-light opacity-50`,children:e.name})]},e.version))})})]})})}),(0,z.jsx)(K,{})]})}):null}var Jc=new RegExp(/^\d+/);function Yc(e,t){let n=parseInt(e.match(Jc)?.[0]||`0`,10),r=parseInt(t.match(Jc)?.[0]||`0`,10);return n===r?0:n>r?1:-1}var Xc=[`B`,`KB`,`MB`,`GB`,`TB`,`PB`,`EB`,`ZB`,`YB`],Zc=[`secs`,`mins`,`hrs`],Qc={bytes:1e3,secs:60};function $c(e,t,n){let r,i;switch(t){case`bytes`:r=Xc,i=Qc.bytes;break;case`secs`:r=Zc,i=Qc.secs;break;default:return e}let a=r.indexOf(n);return a===-1?e:e/i**a}function el(e,t){let n,r;switch(e){case`bytes`:n=Xc,r=Qc.bytes;break;case`secs`:n=Zc,r=Qc.secs;break;default:return e}let i=0;for(;t>=r&&i<n.length-1;)t/=r,i++;return n[i]}function tl(e,t=1){let n=e*t,r=el(`bytes`,n),i=$c(n,`bytes`,r);return`${new Intl.NumberFormat().format(Math.round(i))} ${r}`}function nl(e){return new Intl.NumberFormat().format(e)}var rl=[`K`,`M`,`B`,`T`,`Qa`,`Qi`,`Sx`,`Sp`,`Oc`,`No`,`Dc`];function il(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<rl.length-1);return`${nl(Math.round(n))} ${rl[r]}`}function al({selectedPlan:e,selectedRegion:t,isEnterprise:n,cloudProvider:r}){let[i,a]=(0,R.useState)(!1),o=(0,R.useCallback)(()=>{a(!i)},[i,a]),s=e?.planLimits,c=e?.resourcesPerInstance,l=r&&e?.cloudInstanceTypes?.[r],f=Q(s?.expirationMonths)&&s.expirationMonths<1e3&&s.expirationMonths,p=t?.purchasedBlockMultiplier??1,m=(0,R.useMemo)(()=>s?[Q(s.totalReadCount)&&{label:`Total Reads`,value:`${il(s.totalReadCount*p)} reads`},Q(s.totalReadsBytes)&&{label:`Total Read Transfer`,value:`${tl(s.totalReadsBytes*p)}`},Q(s.readsPerMinuteCount)&&{label:`Read Rate`,value:`${il(s.readsPerMinuteCount*60*p)}/min`},Q(s.readsPerMinuteBytes)&&{label:`Read Bandwidth`,value:`${tl(s.readsPerMinuteBytes*60*p)}/min`},Q(s.totalWriteCount)&&{label:`Total Writes`,value:`${il(s.totalWriteCount)} reads`},Q(s.totalWritesBytes)&&{label:`Total Write Transfer`,value:`${tl(s.totalWritesBytes)}`},Q(s.writesPerMinuteCount)&&{label:`Write Rate`,value:`${il(s.writesPerMinuteCount*60)}/min`},Q(s.writesPerMinuteBytes)&&{label:`Write Bandwidth`,value:`${tl(s.writesPerMinuteBytes*60)}/min`},Q(s.totalRealTimeMessageDeliveries)&&{label:`Total Real-Time Messages`,value:`${il(s.totalRealTimeMessageDeliveries*p)} messages`},Q(s.totalRealTimeMessageDeliveryBytes)&&{label:`Total Real-Time Message Transfer`,value:`${tl(s.totalRealTimeMessageDeliveryBytes*p)}`},Q(s.realTimeMessageDeliveriesPerMinute)&&{label:`Real-Time Message Rate`,value:`${il(s.realTimeMessageDeliveriesPerMinute*60*p)}/min`},Q(s.realTimeMessageDeliveryBytesPerMinute)&&{label:`Real-Time Message Bandwidth`,value:`${tl(s.realTimeMessageDeliveryBytesPerMinute*60*p)}/min`},Q(s.tlsHandshakes)&&{label:`TLS Handshakes`,value:`${il(s.tlsHandshakes*60*p)}`},Q(s.applicationComputeHours)&&{label:`Application Compute Hours`,value:`${il(s.applicationComputeHours*p)}`},!!c&&Q(c.storageGb)&&{label:`Storage`,value:`${tl(c.storageGb*1e9)}`},!!c&&Q(c.cpuCores)&&{label:`Maximum CPU Cores`,value:`${il(c.cpuCores)}`},!!c&&Q(c.memoryMb)&&{label:`Memory`,value:`${c.memoryMb/1024} GB`},!!l&&{label:`Cloud Instance Type`,value:l},!!f&&{label:`Expiration`,value:u(f,`month`,`months`)},!!t?.id&&{label:`Region ID`,value:t.id},!!e?.id&&{label:`Plan ID`,value:e.id}].filter(Ni):[],[f,t,e,p]);if(!s)return``;if(!Q(s.totalReadCount))return`This plan has no usage limits.`;let h=n?` Pricing subject to contracted rate.`:` Beta pricing subject to change.`,_=Q(s.readsPerMinuteCount)?`${il(s.readsPerMinuteCount*p)} reads/min & `:``,v=Q(s.writesPerMinuteCount)?` ${il(s.writesPerMinuteCount)} writes/min & `:` `,y=Q(s.readsPerMinuteCount)?`in ${t?.region??``} region${t?` (${t?.id})`:``}`:`per server`,b=f?`, for ${u(f,`month`,`months`)}`:``,x=n?`for the contracted rate`:`for the price listed above`,S=f?` in ${u(f,`month`,`months`)} or`:``;return(0,z.jsxs)(W,{className:`basis-full`,children:[(0,z.jsxs)(G,{onClick:o,children:[`Purchasing usage block for `,_,il(s.totalReadCount*p),` total reads `,y,`,`,(0,z.jsx)(`br`,{className:`hidden sm:block`}),v,` `,il(s.totalWriteCount),` total writes`,b,`.`,` `,(0,z.jsx)(ds,{variant:`warning`,className:`mx-1 align-middle`,children:h.trim()}),(0,z.jsx)(`br`,{className:`block sm:hidden`}),(0,z.jsxs)(g,{type:`button`,variant:`link`,className:`text-foreground`,children:[`Learn More `,i?(0,z.jsx)(pn,{}):(0,z.jsx)(Un,{})]})]}),(0,z.jsx)(H,{children:(0,z.jsxs)(`dl`,{className:d(`divide-y divide-border border border-border rounded-md overflow-hidden transition-[max-height] duration-200 ease-in`,i?`max-h-fit`:`max-h-0`),children:[(0,z.jsxs)(`div`,{className:`text-sm mb-3 max-w-lg px-3 pt-3 text-muted-foreground`,children:[`This plan licenses Harper for the usage limits below, `,x,`. The usage license expires`,S,` `,`when any usage limit is reached. New usage blocks are automatically purchased/billed as blocks are consumed.`]}),m.map((e,t)=>(0,z.jsxs)(`div`,{className:d(`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,z.jsx)(`dt`,{className:`text-sm/6 font-medium text-foreground`,children:e.label}),(0,z.jsx)(`dd`,{className:`mt-1 text-sm/6 text-muted-foreground sm:col-span-2 sm:mt-0`,children:e.value})]},e.label))]})}),(0,z.jsx)(K,{})]})}function ol({control:e,fieldArray:t,form:n,index:r,regionNameToLatencyToRegion:i,premiumOnlyRegions:a,selectedPlan:o,isEnterprise:s,cloudProvider:c}){let l=(0,R.useMemo)(()=>Object.keys(i).sort(),[i]),u=n.watch(`deploymentDescription`)?.startsWith(`Dedicated`),d=n.watch(`regionPlans.${r}.regionName`),f=n.watch(`regionPlans.${r}.latencyDescription`),p=(0,R.useMemo)(()=>Object.keys(i[d]||{}).sort(Yc).reverse(),[i,d]),m=o?.allowedRegionIds,h=(0,R.useCallback)(e=>!m?.length||Object.values(i[e]||{}).some(e=>m.includes(e.id)),[m,i]),_=(0,R.useCallback)(e=>{if(!m?.length)return!0;let t=i[d]?.[e]?.id;return!t||m.includes(t)},[m,i,d]);(0,R.useEffect)(function(){if(d&&p?.length&&!p?.includes(f)){let e=f?.split(` `)[0].toLowerCase(),t=p.find(t=>e?t.split(` `)[0].toLowerCase()===e:!0)||p[0];n.setValue(`regionPlans.${r}.latencyDescription`,t),n.trigger()}},[p,n,r,f,d]);let v=(0,R.useCallback)(()=>{t?.remove(r),n.trigger()},[t,n,r]);return(0,z.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,z.jsx)(U,{control:e,name:`regionPlans.${r}.regionName`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex-1`,children:[(0,z.jsxs)(G,{children:[`Region `,t.fields.length>1?r+1:``]}),(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Region`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:l.map(e=>(0,z.jsx)($,{value:e,disabled:!h(e),children:(0,z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e,a.regionNames.has(e)&&(0,z.jsx)(ds,{children:`Premium`})]})},e))})})]})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e,name:`regionPlans.${r}.latencyDescription`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex-1`,children:[(0,z.jsxs)(G,{children:[`Estimated `,u?`P95`:`P90`,` Latency, Distribution`]}),(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{onValueChange:t=>{e.onChange(t),n.trigger()},...e,disabled:!p?.length,children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Latency Tier`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:p.map(e=>(0,z.jsx)($,{value:e,disabled:!_(e),children:(0,z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e,(()=>{let t=i[d]?.[e]?.id;return t&&a.regionIds.has(t)&&(0,z.jsx)(ds,{children:`Premium`})})()]})},e))})})]})}),(0,z.jsx)(K,{})]})}),t?.fields?.length&&t?.fields?.length>1&&(0,z.jsx)(`div`,{className:`flex-none mt-6`,children:(0,z.jsxs)(g,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:v,children:[(0,z.jsx)(cn,{}),` `,(0,z.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})}),(0,z.jsx)(al,{selectedPlan:o,selectedRegion:i[d]?.[f],isEnterprise:s,cloudProvider:c})]})}function sl({form:e,regionLocations:t,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,selectedPlan:i,totalPrice:a,isEnterprise:o,cloudProvider:s}){let c=e.watch(`regionPlans`),l=Wt({control:e.control,name:`regionPlans`}),u=(0,R.useMemo)(()=>{let e=c.map(e=>n?.[e.regionName]?.[e.latencyDescription]?.region);return a?t?.find(t=>!e.includes(t.region)):null},[t,n,c,a]),d=(0,R.useCallback)(()=>{u&&(l.append({regionName:u.region,latencyDescription:u.latencyDescription}),e.trigger())},[e,u,l]);return t?.length?(0,z.jsxs)(z.Fragment,{children:[l.fields.map((t,a)=>(0,z.jsx)(ol,{control:e.control,fieldArray:l,form:e,index:a,regionNameToLatencyToRegion:n,premiumOnlyRegions:r,selectedPlan:i,isEnterprise:o,cloudProvider:s},t.id)),u&&(0,z.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,z.jsxs)(g,{type:`button`,variant:`positiveOutline`,className:`rounded-full`,onClick:d,children:[(0,z.jsx)(Rt,{}),`Add Additional Region Usage`]})})]}):(0,z.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,z.jsx)(Oi,{className:`mt-0 m-0`,title:`No Regions Available`,showReturnToHome:!1,error:{message:(0,z.jsxs)(z.Fragment,{children:[`The deployment type you selected currently has no available regions. Please try a different deployment type, try again later, or `,(0,z.jsx)(Ds,{}),`.`]})}})})}function cl({control:e,fieldArray:n,form:r,index:i}){let a=(0,R.useCallback)(()=>{n?.remove(i)},[n,i]);return(0,z.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,z.jsx)(U,{control:e,name:`instances.${i}.secure`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsxs)(G,{children:[`Instance `,n.fields.length>1?i+1:``]}),(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:t=>{e.onChange(t),r.trigger()},children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`https://`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)($,{value:`true`,children:`https://`}),(0,z.jsx)($,{value:`false`,children:`http://`})]})})]})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e,name:`instances.${i}.fqdn`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex-3`,children:[(0,z.jsx)(G,{children:`Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,onChange:t=>{e.onChange(t);let n=t.target.value,a=n===`localhost`||n===`127.0.0.1`,o=r.getFieldState(`instances.${i}.secure`);a&&!o.isDirty&&r.setValue(`instances.${i}.secure`,`false`)}})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e,name:`instances.${i}.port`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Operations API Port`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`number`,min:0,max:Dc,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,placeholder:String(t),onChange:t=>{e.onChange(t.target.value?parseInt(t.target.value,10):void 0),r.trigger()}})}),(0,z.jsx)(K,{})]})}),n?.fields?.length&&n?.fields?.length>1&&(0,z.jsx)(`div`,{className:`flex-none mt-6`,children:(0,z.jsxs)(g,{type:`button`,variant:`destructiveOutline`,size:`sm`,onClick:a,children:[(0,z.jsx)(cn,{}),` `,(0,z.jsx)(`span`,{className:`sr-only`,children:`Remove`})]})})]})}function ll({form:e}){let n=Wt({control:e.control,name:`instances`}),r=(0,R.useCallback)(()=>{n.append({secure:`true`,fqdn:``,port:t})},[n]);return(0,z.jsxs)(z.Fragment,{children:[n.fields.map((t,r)=>(0,z.jsx)(cl,{control:e.control,fieldArray:n,form:e,index:r},t.id)),(0,z.jsx)(`div`,{className:`md:col-span-6 col-span-3`,children:(0,z.jsxs)(g,{type:`button`,variant:`positiveOutline`,className:`rounded-full`,onClick:r,children:[(0,z.jsx)(Rt,{}),`Add Instance`]})})]})}function ul(e,t){return!e.allowedRegionIds?.length||e.allowedRegionIds.includes(t)}function dl(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=>ul(t,e.id)),i=o.some(t=>ul(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 fl({calculatedNames:e,clusterId:t,deploymentToPerformanceToPlan:n,form:r,harperVersions:i,isEnterprise:a,cloudProvider:o,isPending:s,mode:c,regionLocations:l,regionNameToLatencyToRegion:u,selectedDeployment:d,selectedPerformance:f,selectedPlan:p,totalPrice:m}){let{isDirty:h,isValid:_}=le(),v=(0,R.useMemo)(()=>{let e=n[d]||{},t=Object.values(e).map(e=>e.planLevel??0),r=t.length?Math.min(...t):0;return Object.keys(e).map(t=>{let n=(e[t].planLevel??0)>r,i=t.slice(0,-1).split(`(`);if(i.length>1)return{performanceTier:t,name:i[0],description:i[1],isPremium:n};let a=t.split(` for `);return a.length>1?{performanceTier:t,name:a[0],description:`For `+a[1],isPremium:n}:{performanceTier:t,name:t,description:``,isPremium:n}})},[n,d]),y=(0,R.useMemo)(()=>Object.keys(n).sort(),[n]),b=(0,R.useMemo)(()=>dl(Object.values(n[d]||{}),u),[n,u,d]);(0,R.useEffect)(function(){v?.length&&!v.find(e=>e.performanceTier===f)&&(r.setValue(`performanceDescription`,v[0].performanceTier),r.trigger())},[d,f,v,r]);let x=d===`Self-Hosted`,S=(0,z.jsx)(X,{className:`mt-3 mb-12`,children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:s||t&&!h||!_,children:[c!==`version`&&m>0?`Confirm Payment Details`:t?`Edit Cluster`:`Create New Cluster`,(0,z.jsx)(Un,{})]})});return c===`version`?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-3 items-start gap-6 text-foreground md:grid-cols-6`,children:[(0,z.jsx)(Uc,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!0,form:r}),(0,z.jsx)(qc,{className:`col-span-3`,form:r,harperVersions:i}),(0,z.jsx)(Kc,{className:`col-span-3 md:col-span-6`,form:r})]}),S]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-3 items-start gap-6 text-foreground md:grid-cols-6`,children:[(0,z.jsx)(Uc,{className:i?.value?.length?`col-span-3`:`md:col-span-6 col-span-3`,disabled:!!t,form:r}),(0,z.jsx)(qc,{className:`col-span-3`,disabled:!!t,form:r,harperVersions:i}),x?(0,z.jsx)(Hc,{form:r,disabled:!!t}):(0,z.jsx)(Ac,{form:r,calculatedNames:e,disabled:!!t}),(0,z.jsx)(Vc,{form:r,availableDeploymentTypes:y}),(0,z.jsx)(Wc,{availablePerformanceDescriptions:v,form:r,selectedDeployment:d}),x?(0,z.jsx)(ll,{form:r}):(0,z.jsx)(sl,{form:r,regionLocations:l,regionNameToLatencyToRegion:u,premiumOnlyRegions:b,selectedPlan:p,totalPrice:m,isEnterprise:a,cloudProvider:o}),t&&!x&&(0,z.jsx)(Kc,{className:`col-span-3 md:col-span-6`,form:r})]}),S]})}function pl(e){let{fqdn:n}=e,{secure:r,port:i}=e;return i||=t,i===443&&r===`false`&&(r=`true`),i===80&&r===`true`&&(r=`false`),`${r===`true`?`https`:`http`}://${n}${i===443||i===80?``:`:`+i}`.toLowerCase()}function ml(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 hl(e,t,n){if(t&&n){let r=e.getValues();if(!r.deploymentDescription||!r.performanceDescription||!r.regionPlans.length){let i=ml(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 gl({price:e}){return(0,z.jsx)(`span`,{className:`text-4xl`,children:new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).formatToParts(e||0).map((e,t)=>(0,z.jsx)(_l,{type:e.type,value:e.value},t))})}function _l({type:e,value:t}){switch(e){case`currency`:case`decimal`:case`fraction`:return(0,z.jsx)(`sup`,{className:`font-light text-xl`,children:t});default:return t}}function vl({alreadyUsingFree:e,clusterId:n,defaultValues:r,deploymentToPerformanceToPlan:i,harperVersions:a,mode:o,organization:s,organizationId:c,planTypes:l,regionLocationsColocated:u,regionLocationsDedicated:d,setSavedClusterState:f,startOffOnBilling:p}){let m=De(),h=fe(),g=s?.type===rc,_=s?.channel===`Akamai`?`linode`:void 0,v=xt(),{mutate:y,isPending:b}=Qs(),{mutate:S,isPending:C}=ec(),[ee,w]=(0,R.useState)(p),te=(0,R.useMemo)(()=>Hs(u?.sort(Is(`latencyDescription`))||[],`region`,`latencyDescription`),[u]),ne=(0,R.useMemo)(()=>Hs(d?.sort(Is(`latencyDescription`))||[],`region`,`latencyDescription`),[d]),T=(0,R.useCallback)((t,n)=>{let r=new Set,a=i?.[t.deploymentDescription]?.[t.performanceDescription];if(t.deploymentDescription===`Self-Hosted`)for(let e=0;e<t.instances.length;e++){let i=pl(t.instances[e]);r.has(i)?n.addIssue({code:`custom`,path:[`instances.${e}.fqdn`],message:`Every instance url must be unique!`}):r.add(i)}else{a?.priceUsd===0&&e&&n.addIssue({code:`custom`,path:[`performanceDescription`],message:`Only one free cluster is allowed per organization.`});let i=a?.deploymentDescription===`Dedicated`?ne:te;for(let e=0;e<t.regionPlans.length;e++){let o=t.regionPlans[e],s=i[o.regionName]?.[o.latencyDescription];r.has(o.regionName)?n.addIssue({code:`custom`,path:[`regionPlans.${e}.regionName`],message:`You can only select a region once!`}):r.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!`}):ac(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,te,ne,i]),E=I({mode:`onChange`,resolver:j(kc.superRefine(T)),defaultValues:r}),[re,D]=(0,R.useState)(!0);(0,R.useEffect)(()=>{re&&r&&(f(null),D(!1))},[r,re,f]);let ie=E.watch(`clusterName`),ae=E.watch(`abbreviatedName`),O=E.watch(`deploymentDescription`),oe=E.watch(`performanceDescription`),se=E.watch(`regionPlans`),ce=E.watch(`instances`),le=O===`Dedicated`?ne:te,ue=O===`Dedicated`?d:u;(0,R.useEffect)(function(){let e=E.getValues();O&&(O===`Self-Hosted`?(e.abbreviatedName&&E.setValue(`abbreviatedName`,``),e.regionPlans.length&&E.setValue(`regionPlans`,[]),e.instances.length||E.setValue(`instances`,[{secure:`true`,fqdn:``,port:t}])):(e.fqdn&&E.setValue(`fqdn`,``),e.instances.length&&E.setValue(`instances`,[]),e.regionPlans.length||hl(E,l,ue)))},[E,l,ue,O]);let de=(0,R.useMemo)(()=>{let e=ic(oc(ie),Oc.maxLength);return{suggestedAbbreviatedName:e,fullHostName:`${ae||e}.${s.subdomain||`your-org`}.harperfabric.com`}},[ie,ae,s]),pe=(0,R.useMemo)(()=>i?.[O]?.[oe],[i,O,oe]);(0,R.useEffect)(function(){let e=pe?.allowedRegionIds;if(e?.length&&se?.length===1){let t=se[0],n=le?.[t.regionName]?.[t.latencyDescription];if(!e.includes(n?.id)){let t=ue?.filter(t=>e.includes(t.id)),n=t?.find(e=>e.region===`US`)||t?.[0];n&&(E.setValue(`regionPlans.0.regionName`,n.region),E.setValue(`regionPlans.0.latencyDescription`,n.latencyDescription),E.trigger())}}},[pe,se,E,le,ue]),(0,R.useEffect)(function(){if(O!==`Self-Hosted`&&Object.keys(le).length&&se.length)for(let e=0;e<se.length;e++)le[se[e].regionName]||E.setValue(`regionPlans.${e}.regionName`,``)},[E,le,O,se]);let me=pe?.priceUsd?O===`Self-Hosted`?ce.length*pe.priceUsd:se.reduce((e,t)=>{let n=le?.[t.regionName]?.[t.latencyDescription];return e+(n?pe.priceUsd*n.instanceCount/2:0)},0):0,he=(0,R.useCallback)(({creating:e,deploymentDescription:t})=>L.message(e?`Creating Cluster`:`Updating Cluster`,{description:(0,z.jsx)(Xs,{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}),[]),ge=(0,R.useCallback)(async({clusterId:e,sourceClusterId:t,creating:n,toastId:r,isSelfManaged:i})=>{if(t){let e=(await tc(c)).clusters?.find(e=>e.id===t);ts(e?.status)&&await Cs(t)}v.invalidateQueries({queryKey:[c],refetchType:`active`}),n||v.invalidateQueries({queryKey:[e],refetchType:`active`}),h.invalidate(),m(i?{to:`/${c}/${e}/instances`}:n?{to:`/${c}/${e}/starting-up`}:{to:`/${c}/${e}/scaling`}),E.reset(),L.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})},[v,h,m,c,E]),_e=(0,R.useCallback)(async()=>{let e=E.getValues(),t=[],r=i[e.deploymentDescription][e.performanceDescription],a=e.deploymentDescription===`Self-Hosted`;if(a)for(let n of e.instances)t.push({autoRenew:!0,instanceFqdn:n.fqdn,operationsApiPort:n.port||9925,operationsApiSecure:n.secure===`true`,planId:r.id});else for(let n of e.regionPlans){let e=le[n.regionName][n.latencyDescription];t.push({autoRenew:!0,planId:r.id,regionId:e.id})}f(null);let s=he({creating:!n,deploymentDescription:e.deploymentDescription}),l=()=>L.dismiss(s);n?S(o===`version`?{id:n,version:e.version,skipGtmWait:e.skipGtmWait}:{id:n,regionPlans:t,skipGtmWait:e.skipGtmWait},{onSuccess:t=>ge({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:a,creating:!1,toastId:s}),onError:l}):y({abbreviatedName:a?void 0:e.abbreviatedName||de.suggestedAbbreviatedName,autoRenew:!0,fqdn:a&&e.fqdn||void 0,name:e.clusterName,version:e.version,organizationId:c,regionPlans:t},{onSuccess:t=>ge({clusterId:t.id,sourceClusterId:e.sourceClusterId,isSelfManaged:a,creating:!0,toastId:s}),onError:l})},[de.suggestedAbbreviatedName,n,i,E,ge,he,c,le,f,S,y]),ve=(0,R.useCallback)(()=>{if(o!==`version`&&me>0){w(!0);return}return _e()},[o,_e,me]),ye=(0,R.useCallback)(e=>{f(e?{clusterId:n,...E.getValues(),skipToBilling:!0}:null)},[n,E,f]),k=(0,R.useCallback)(()=>{w(!1)},[]),be=!g&&`mr-37.5`;return(0,z.jsxs)(z.Fragment,{children:[!g&&o!==`version`&&(0,z.jsxs)(`div`,{className:`absolute top-3 right-4 md:right-12 text-right`,children:[(0,z.jsx)(`dt`,{className:`font-light`,children:`Total Price`}),(0,z.jsx)(`dd`,{className:`font-bold`,children:me>0?(0,z.jsx)(gl,{price:me}):(0,z.jsx)(`span`,{className:`text-4xl text-green`,children:`Free`})})]}),(0,z.jsx)(V,{...E,children:ee?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`h1`,{className:x(`text-lg leading-none text-foreground font-semibold mb-4`,be),children:`Cluster Billing`}),(0,z.jsx)(`p`,{className:x(`text-muted-foreground text-sm mb-2`,be),children:`Please confirm the following billing details:`}),(0,z.jsx)(Tc,{clusterId:n,isPending:b||C,onGoBackToDetails:k,onSaveStateForBillingRedirect:ye,onSubmit:_e,organizationId:c,selectedPlan:pe})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`h1`,{className:x(`text-lg leading-none text-foreground font-semibold mb-4`,be),children:`Cluster Configuration`}),(0,z.jsx)(`p`,{className:x(`text-muted-foreground text-sm mb-6`,be),children:`Configure your Harper cluster and define deployment plans.`}),(0,z.jsx)(`form`,{id:`cluster-upsert-form`,name:`cluster-upsert-form`,onSubmit:E.handleSubmit(ve),children:(0,z.jsx)(fl,{calculatedNames:de,clusterId:n,deploymentToPerformanceToPlan:i,form:E,isPending:b||C,harperVersions:a,mode:o,regionLocations:ue,regionNameToLatencyToRegion:le,selectedDeployment:O,selectedPerformance:oe,selectedPlan:pe,totalPrice:me,isEnterprise:g,cloudProvider:_})})]})})]})}function yl(e){return e?.clusterName!==void 0}function bl(){let{organizationId:e,clusterId:t,mode:n}=N({strict:!1}),{create:r,update:i}=ga(e),{organization:a,cluster:o}=Ar({strict:!1}),[s,c]=Gi(qi.SavedClusterState,null),{data:l}=A(js(e)),{data:u}=A(Fs({availableHosts:!0,organizationId:e})),{data:d}=A(Fs({organizationId:e})),{data:f}=A(Ns()),p=(0,R.useMemo)(()=>{if(o){let e=o.instances?.map(e=>e.version).filter(Ni);if(f&&e){let t=e.sort(Ws).pop();return{...f,value:[!!t&&{name:`current`,version:t},...(f?.value||[]).filter(e=>t!==e.version&&(!t||Us(t,e.version)))].filter(Ni)}}}return f},[f,o]),m=(0,R.useMemo)(()=>{for(let e of a?.clusters??[])if(e.id!==o?.id&&l&&!ns(e.status)&&!ts(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]),h=(0,R.useMemo)(()=>Hs(l?.sort(Is(`priceUsd`))||[],`deploymentDescription`,`performanceDescription`),[l]),g=(0,R.useMemo)(()=>{if(!l||!p||!u||!d||t&&!o)return null;let e=o;if(s){if(yl(s))return{...s,clusterName:s.clusterName||``,abbreviatedName:s.abbreviatedName||``,version:s.version,deploymentDescription:s.deploymentDescription||``,performanceDescription:s.performanceDescription||``,fqdn:s.fqdn||``,regionPlans:s.regionPlans||[],instances:s.instances||[]};e=s}let n=l?.find(e=>e.id===o?.plans?.[0].planId),r=[],i=[],a=n?.deploymentDescription===`Dedicated`?d:u,c=ml(l,a,m),f=!1;if(e){if(e.plans){for(let t of e.plans)if(t.regionId){let e=a.find(e=>e.id===t.regionId);e&&r.push({regionName:e.region,latencyDescription:e.latencyDescription})}}if(!r.length&&e.instances){let t=e.instances.filter(e=>e.status&&!Za.includes(e.status)).sort(zs);for(let e of t)f=!0,i.push({fqdn:e.instanceFqdn,port:e.operationsApiPort,secure:e.operationsApiSecure?`true`:`false`})}}else c&&r.push(...c.regionPlans);!f&&!r.length&&r.push({regionName:``,latencyDescription:``});let h=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:h,deploymentDescription:n?.deploymentDescription??c?.deploymentDescription??``,performanceDescription:n?.performanceDescription??c?.performanceDescription??``,fqdn:f?e?.fqdn??``:``,instances:i,regionPlans:r}},[m,o,t,l,p,u,d,s]);return!g||!a||!l||!u||!d?(0,z.jsx)(ks,{children:(0,z.jsx)(Os,{centered:!0,text:`Loading...`})}):(o?.id?!i:!r)?(0,z.jsx)(ks,{children:(0,z.jsx)(Oi,{title:`Not Allowed`,error:{message:(0,z.jsxs)(z.Fragment,{children:[`You do not have permission to `,o?.id?`update`:`create`,` clusters in this org.`]})}})}):l.length===0?(0,z.jsx)(ks,{children:(0,z.jsx)(Oi,{title:`Cluster ${t?`Modification`:`Creation`} Not Currently Allowed`,error:{message:(0,z.jsxs)(z.Fragment,{children:[`There are no available deployment types right now! Please try again later, or `,(0,z.jsx)(Ds,{}),`.`]})}})}):(0,z.jsx)(ks,{className:`max-w-4xl mx-auto`,children:(0,z.jsx)(vl,{alreadyUsingFree:m,clusterId:t,defaultValues:g,deploymentToPerformanceToPlan:h,harperVersions:p,mode:n,organization:a,organizationId:e,planTypes:l,regionLocationsColocated:u,regionLocationsDedicated:d,setSavedClusterState:c,startOffOnBilling:yl(s)&&s.skipToBilling===!0})})}var xl={FAILED:0,UPDATING:1,PROVISIONING:2,RUNNING:3,TERMINATED:4},Sl=xl.RUNNING;function Cl(e,t){return e.status===t.status?e.name.localeCompare(t.name):(e.status?xl[e.status]??Sl:Sl)-(t.status?xl[t.status]??Sl:Sl)}function wl(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 Tl(){let{organizationId:e}=N({strict:!1}),{create:t}=ga(e),{data:n,isSuccess:r}=je(nc(e)),[i]=Gi(qi.SavedClusterState,null),[a,o]=(0,R.useState)(``),s=(0,R.useCallback)(()=>o(``),[]),c=(0,R.useCallback)(e=>{o(e.currentTarget.value?.toLowerCase()||``)},[]),l=(0,R.useMemo)(()=>n?.clusters?.slice().filter(e=>!ns(e.status)).sort(Cl)||[],[n?.clusters]),u=(0,R.useMemo)(()=>l.filter(wl([`id`,`name`],a))||[],[a,l]);return n&&l.length===0&&t?(0,z.jsx)(bl,{}):i?(0,z.jsx)(kt,{to:`/${e}/new-cluster`}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{children:r?(0,z.jsxs)(`div`,{className:`flex w-full justify-end gap-2`,children:[(0,z.jsx)(q,{placeholder:`Filter by name`,className:`inline-block w-full text-xs`,value:a,onChange:c}),t&&(0,z.jsx)(k,{to:`new-cluster`,children:(0,z.jsxs)(g,{variant:`positive`,accessKey:`n`,children:[(0,z.jsx)(Rt,{}),` `,(0,z.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,z.jsx)(`u`,{children:`N`}),`ew `,(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Cluster`})]})]})})]}):null}),(0,z.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12 mb-4`,children:[u.map(e=>(0,z.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,z.jsx)(Es,{cluster:e})},e.id)),!u.length&&(0,z.jsxs)(`div`,{className:`col-span-1 md:col-span-12 text-center`,children:[(0,z.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,z.jsx)(g,{type:`button`,variant:`outline`,onClick:s,children:`Clear Filters`})]})]})})]})}function El(){let e=URL.parse(location.href);return e?.hash?e.hash.startsWith(`#/`)?e.hash.slice(1):e.hash:`/`}function Dl(){return`/#`+El()}function Ol(){let{organizationId:e}=N({strict:!1}),t=De(),n=new URLSearchParams(window.location.search).get(`setup_intent_client_secret`),{setup_intent_client_secret:r}=Ce({strict:!1}),[i]=Gi(qi.SavedClusterState,null),a=n||r,o=ft(),s=lc(e),c=(0,R.useCallback)(()=>{let e=i?i.clusterId?`../../${i.clusterId}/edit`:`../../new-cluster`:`../`;window.history.replaceState(null,``,Dl()),t({search:void 0,to:e})},[t,i]);return(0,R.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?(L.error(`Failed to process payment method details. Please try another payment method.`),c()):s(e.payment_method,c);break;case`processing`:L.warning(`Processing payment method. Please check back later.`),c();break;case`requires_payment_method`:L.error(`Failed to process payment method details. Please try another payment method.`),c();break;default:L.error(`Failed to process payment method details. Please try another payment method.`),c();break}}catch(e){console.error(e),L.error(`Failed to process payment method details. Please try another payment method.`),c()}})()},[a,c,e,s,o]),(0,z.jsx)(Os,{centered:!0})}function kl(){return(0,z.jsx)(vc,{children:(0,z.jsx)(Ol,{})})}function Al({clusterId:e,instanceId:t,organizationId:n},r){return`/`+[n,e,t&&`instance`,t,r].filter(Ni).join(`/`)}var jl=`flex items-center p-2 rounded-lg group`,Ml={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-gray-700`},Nl={className:`text-black bg-white pointer-events-none cursor-default`};function Pl(){let{organizationId:e}=N({strict:!1}),{update:t}=ma(e);return t?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,z.jsxs)(`div`,{className:`md:grid gap-4 md:grid-cols-12 min-h-[calc(100vh-theme(spacing.36))] mb-12`,children:[(0,z.jsxs)(`section`,{className:`col-span-1 text-foreground md:col-span-4 lg:col-span-3 md:border-r-1 border-b md:border-b-0 md:pr-4 border-gray-700`,children:[(0,z.jsx)(Fl,{}),(0,z.jsx)(Il,{})]}),(0,z.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9`,children:(0,z.jsx)(Er,{})})]})})]}):(0,z.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.`})}function Fl(){let e=N({strict:!1});return(0,z.jsxs)(`div`,{className:`hidden md:block`,children:[(0,z.jsxs)(`span`,{className:jl,children:[(0,z.jsx)(Wr,{className:`inline-block`}),(0,z.jsx)(`h3`,{className:`ms-3 text-2xl font-extrabold text-foreground`,children:`Billing`})]}),(0,z.jsxs)(`ul`,{className:`border-t border-gray-700 pt-4 mt-4 space-y-2`,children:[(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Al(e,`billing`),className:jl,activeOptions:{exact:!0},inactiveProps:Ml,activeProps:Nl,children:[(0,z.jsx)(it,{className:`inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Payment Method`})]})}),(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Al(e,`billing/invoices`),className:jl,inactiveProps:Ml,activeProps:Nl,children:[(0,z.jsx)(ve,{className:`inline-block`}),(0,z.jsx)(`span`,{className:`ms-3`,children:`Invoices & Payments`})]})})]})]})}function Il(){let e=N({strict:!1});return(0,z.jsxs)(`ul`,{className:`flex space-x-4 md:hidden py-2`,children:[(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Al(e,`billing`),className:jl,activeOptions:{exact:!0},inactiveProps:Ml,activeProps:Nl,children:[(0,z.jsx)(it,{className:`inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Payment Method`})]})}),(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Al(e,`billing/invoices`),className:jl,inactiveProps:Ml,activeProps:Nl,children:[(0,z.jsx)(ve,{className:`inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Invoices & Payments`})]})})]})}function Ll({className:e,containerClassName:t,...n}){return(0,z.jsx)(`div`,{"data-slot":`table-container`,className:d(`relative w-full overflow-x-auto`,t),children:(0,z.jsx)(`table`,{"data-slot":`table`,className:d(`w-full caption-bottom text-sm`,e),...n})})}function Rl({className:e,...t}){return(0,z.jsx)(`thead`,{"data-slot":`table-header`,className:d(`[&_tr]:border-b`,e),...t})}function zl({className:e,...t}){return(0,z.jsx)(`tbody`,{"data-slot":`table-body`,className:d(`[&_tr:last-child]:border-0`,e),...t})}function Bl({className:e,...t}){return(0,z.jsx)(`tr`,{"data-slot":`table-row`,className:d(`border-b border-grey-700 transition-colors`,e),...t})}function Vl({className:e,...t}){return(0,z.jsx)(`th`,{"data-slot":`table-head`,className:d(`h-10 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function Hl({header:e,onColumnClick:t,...n}){let r=(0,R.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]),i=e.column.columnDef.enableSorting,a=e.column.columnDef.enableResizing,o=e.isPlaceholder?null:rn(e.column.columnDef.header,e.getContext()),s=(0,R.useCallback)(()=>{e.column.resetSize()},[e]);return(0,z.jsx)(Vl,{...n,style:{width:`${e.getSize()}px`},className:i?`px-0`:`px-2`,children:(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[i?(0,z.jsxs)(g,{type:`button`,variant:`ghost`,className:d(`rounded-none`,!e.column.getIsSorted()||e.column.getIsSorted()===`asc`?`cursor-n-resize`:`cursor-s-resize`),onClick:r,children:[o,e.column.getIsSorted()===`asc`?(0,z.jsx)(hr,{}):e.column.getIsSorted()===`desc`?(0,z.jsx)(pn,{}):(0,z.jsx)(ln,{className:`text-gray-600`})]}):o,a&&(0,z.jsx)(g,{type:`button`,variant:`ghost`,className:`cursor-col-resize`,onMouseDown:e.getResizeHandler(),onTouchStart:e.getResizeHandler(),onDoubleClick:s,style:{transform:e.column.getIsResizing()?`translateX(${e.getContext().table.getState().columnSizingInfo.deltaOffset}px)`:``},children:(0,z.jsx)(mn,{})})]})})}function Ul({className:e,...t}){return(0,z.jsx)(`td`,{"data-slot":`table-cell`,className:d(`align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t})}function Wl({columns:e,data:t,isFetching:n,onRowClick:r,onColumnClick:i,sortingState:a,children:o}){let s=tr({data:t,columns:e,getCoreRowModel:dn(),getSortedRowModel:wr(),initialState:{sorting:a}});return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-end space-x-2 pb-4`,children:[(0,z.jsx)(`div`,{className:`grow lg:hidden`}),o,(0,z.jsx)(`div`,{className:`grow hidden lg:visible`})]}),(0,z.jsxs)(Ll,{containerClassName:`rounded-md bg-card dark:bg-black-dark`,children:[(0,z.jsx)(Rl,{children:s.getHeaderGroups().map(e=>(0,z.jsx)(Bl,{className:`border-none`,children:e.headers.map(e=>(0,z.jsx)(Hl,{header:e,onColumnClick:i},e.id))},e.id))}),(0,z.jsx)(zl,{className:`bg-background dark:bg-black border border-border dark:border-grey-700`,children:s.getRowModel().rows?.length?s.getRowModel().rows.map(e=>(0,z.jsx)(Bl,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>r?.(e),className:d(`hover:bg-muted/10 data-[state=selected]:bg-muted`,r&&`cursor-pointer`),children:e.getVisibleCells().map(e=>(0,z.jsx)(Ul,{className:`py-2 px-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,style:{width:`${e.column.getSize()}px`},children:rn(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,z.jsx)(Bl,{children:(0,z.jsx)(Ul,{colSpan:e.length,className:`h-24 text-center`,children:n?(0,z.jsx)(`div`,{children:(0,z.jsx)(Os,{className:`p-12`})}):(0,z.jsx)(`span`,{children:`No results.`})})})})]})]})}function Gl(e){switch(e){case`paid`:return`success`;case`void`:case`uncollectible`:return`destructive`;default:return`default`}}function Kl(e){return new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}).format(e)}function ql(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 Jl=[{header:`Invoice Id`,accessorKey:`id`,enableSorting:!1},{header:`Status`,accessorKey:`status`,enableSorting:!1,cell:({cell:e})=>(0,z.jsx)(ds,{variant:Gl(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?ql(r,t):[t?ql(r,t):`-`,n?ql(i,n):`-`].join(` to `)}},{header:`Amount Due`,accessorKey:`amountDue`,enableSorting:!1,cell:({cell:e})=>Kl(e.getValue()?e.getValue()/100:0)},{header:`Amount Paid`,accessorKey:`amountPaid`,enableSorting:!1,cell:({cell:e})=>Kl(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} @ ${Kl(e.amount/100)}`);return n.join(`
11
+ `)}}];function Yl(e){return(0,R.useCallback)(async()=>{L.loading(`Refreshing...`,{id:`refreshing`});let t=Date.now();await e(),Date.now()-t<500&&await p(500),L.success(`Refreshed!`,{id:`refreshing`})},[e])}async function Xl(e){let{data:t}=await s.get(`/Invoice/${e}`);return t}function Zl(e,t){return P({queryKey:[e,`invoices`],queryFn:()=>Xl(e),retry:!1,enabled:!!e,refetchInterval:t?1e4:void 0})}function Ql(){let{organizationId:e}=N({strict:!1}),{data:t}=A(nc(e)),{data:n,refetch:r,isLoading:i,isFetching:a,isRefetching:o}=A(Zl(t?.type!==`ENTERPRISE`&&t?.id,!1)),s=Yl(r);return t?.type===`ENTERPRISE`?(0,z.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,z.jsx)(Ds,{}),`, we would love to talk!`]}):i?(0,z.jsx)(Os,{centered:!0}):!n||!n.length?(0,z.jsxs)(`span`,{children:[`Your invoices will be shown here once one is available! Want to explore your solution with Harper more?`,` `,(0,z.jsx)(Ds,{overEmail:!0}),`, we would love to talk!`]}):(0,z.jsx)(Wl,{data:n,columns:Jl,children:(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:s,accessKey:`r`,disabled:a||o,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]})})}function $l(e){let t=F({getParentRoute:()=>e,path:`billing`,head:()=>({meta:[{title:`Billing — Harper Fabric`}]}),component:Pl}),n=F({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Payment Methods — Harper Fabric`}]}),component:wc}),r=F({getParentRoute:()=>t,path:`invoices`,head:()=>({meta:[{title:`Invoices — Harper Fabric`}]}),component:Ql}),i=F({getParentRoute:()=>t,path:`confirm`,head:()=>({meta:[{title:`Confirm Payment — Harper Fabric`}]}),component:kl});return t.addChildren([n,r,i])}async function eu(e){let{data:t}=await s.get(`/OrganizationRole/${e}`);return t}function tu(e){return P({queryKey:[e,`roles`],queryFn:()=>eu(e),retry:!1,refetchInterval:10*1e3})}var nu=[{header:`Role Name`,accessorKey:`roleName`,enableSorting:!1},_r().display({header:`Users Assigned`,enableSorting:!1,id:`userIds`,cell:e=>!e.row.original.userIds||e.row.original.userIds.length===0?`No users assigned`:e.row.original.userIds.length})];async function ru(e){let{data:t}=await s.post(`/Role/`,e);return t}function iu(){return M({mutationFn:ru})}var au=D({name:w().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:E(),delete:E()});D({roles:D({create:E(),delete:E(),update:E(),view:E()}),clusters:D({create:E(),delete:E(),update:E(),view:E(),resources:ae(D({id:w(),delete:E(),update:E(),view:E(),instances:D({create:E(),delete:E(),update:E(),view:E()})}))})});function ou(){let[e]=Xi(),t=Ki();return e===`dark`||e===`system`&&t===`dark`?`vs-dark`:`light`}var su={roles:{create:!0,view:!0,update:!0,delete:!0},clusters:{create:!0,view:!0,update:!0,delete:!0,resources:[]}};function cu({isModalOpen:e,setIsModalOpen:t}){let n=ou(),r=xt(),{organizationId:i}=N({strict:!1}),[a,o]=(0,R.useState)(!0),[s,c]=(0,R.useState)(JSON.stringify(su,null,2)),{mutate:l,isPending:u}=iu(),d=I({resolver:j(au),defaultValues:{name:``,update:!1,delete:!1}}),f=(0,R.useCallback)(e=>{o(e.length===0)},[o]),p=(0,R.useCallback)(async e=>{let n=Hi(s);if(!n)return;let o={...e,...n,organizationId:i};e&&a&&l(o,{onSuccess:()=>{L.success(`Organization role added successfully!`),t(!1),r.invalidateQueries({queryKey:[i,`roles`],refetchType:`active`}),d.reset()},onError:e=>{L.error(`Failed to add organization role: ${e.message}`)}})},[a,s,l,d,r,t,i]);return(0,z.jsx)(J,{onOpenChange:t,open:e,children:(0,z.jsxs)(Y,{children:[(0,z.jsx)(Z,{children:`Add New Organization Role`}),(0,z.jsx)(ls,{children:`Set the new organization role permissions.`}),(0,z.jsx)(V,{...d,children:(0,z.jsxs)(`form`,{id:`org-add-role-form`,name:`org-add-role-form`,className:`grid grid-cols-2 gap-4 my-4`,onSubmit:d.handleSubmit(p),children:[(0,z.jsx)(U,{control:d.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Role Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:``,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:d.control,name:`update`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Can Update Organization`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:d.control,name:`delete`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Can Delete Organization`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6 ml-2`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`div`,{className:`col-span-2`,children:(0,z.jsx)(Mn,{theme:n,height:`300px`,defaultLanguage:`json`,onValidate:f,onChange:e=>{e&&c(e)},defaultValue:JSON.stringify(su,null,2)})}),(0,z.jsx)(X,{className:`col-span-2`,children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{variant:`destructiveOutline`,className:`rounded-full`,type:`button`,onClick:()=>t(!1),disabled:u,children:`Cancel`}),(0,z.jsx)(g,{variant:`submit`,className:`rounded-full`,disabled:u||!a||!d.formState.isValid,children:`Save Changes`})]})})]})})]})})}async function lu({roleId:e}){let{data:t}=await s.delete(`/Role/${e}`,{id:e,deleted:!0});return t}function uu(){return M({mutationFn:({roleId:e})=>lu({roleId:e})})}async function du({roleId:e,updatedRoleInfo:t}){let{data:n}=await s.put(`/Role/${e}`,t);return n}function fu(){return M({mutationFn:({roleId:e,updatedRoleInfo:t})=>du({roleId:e,updatedRoleInfo:t})})}function pu({organizationId:e,roleId:t}){return P({queryKey:[e,`roles`,t],queryFn:()=>mu(t),refetchInterval:10*1e3})}async function mu(e){let{data:t}=await s.get(`/Role/${e}`);return t}function hu({onRoleDeleteClick:e,setIsConfirmingRoleDeletion:t,isRoleDeletionPending:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Z,{children:`Confirm Role Deletion`}),(0,z.jsx)(ls,{children:`Are you sure you want to delete this role? This action cannot be undone.`}),(0,z.jsxs)(X,{children:[(0,z.jsx)(g,{type:`button`,variant:`defaultOutline`,className:`rounded-full`,onClick:()=>t(!1),children:`Cancel`}),(0,z.jsx)(g,{variant:`destructiveOutline`,className:`rounded-full`,onClick:e,disabled:n,children:n?`Deleting...`:`Delete Role`})]})]})}function gu({data:e,isModalOpen:t,closeModal:n}){let r=xt(),{data:i}=je(pu({roleId:e.id,organizationId:e.organizationId})),a=vi(),o=a.user&&a.user?.roles?.[e.organizationId]?.role===e.roleName,{update:s,remove:c}=ha(e.organizationId),{mutate:l,isPending:u}=fu(),{mutate:d,isPending:f}=uu(),p=ou(),[m,h]=(0,R.useState)(!1),_=I({resolver:j(au),defaultValues:{name:e.roleName,update:i.organization.update||!1,delete:i.organization.delete||!1}}),v=(0,R.useCallback)(()=>{d({roleId:e.id},{onSuccess:()=>{L.success(`Role deleted successfully!`),n(!0),_.reset()},onError:e=>{L.error(`Error`,{description:`Failed to delete role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}})},[e.id,d,_,n]),[y,b]=(0,R.useState)(!0),[x,S]=(0,R.useState)(JSON.stringify({roles:{...i.organization.roles},clusters:{...i.organization.clusters}},null,2)),C=(0,R.useCallback)(e=>{b(e.length===0)},[b]),ee=(0,R.useCallback)(async t=>{if(!s)return;let i=Hi(x);if(!i)return;let a={...t,...i,organizationId:e.organizationId};x&&y&&l({roleId:e.id,updatedRoleInfo:a},{onSuccess:async()=>{L.success(`Role updated successfully!`),await r.invalidateQueries({queryKey:[e.organizationId,`roles`,e.id]}),n(!1),_.reset()},onError:e=>{L.error(`Error`,{description:`Failed to update role: ${e instanceof Error?e.message:String(e)}.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}})},[n,e.id,e.organizationId,_,y,r,i,s,x,l]);return(0,z.jsx)(J,{onOpenChange:(0,R.useCallback)(()=>n(!1),[n]),open:t,children:(0,z.jsx)(Y,{children:m?(0,z.jsx)(hu,{onRoleDeleteClick:v,setIsConfirmingRoleDeletion:h,isRoleDeletionPending:f}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Z,{children:[o||!s?`View`:`Edit`,` Organization Role "`,e.roleName,`"`]}),(0,z.jsx)(V,{..._,children:(0,z.jsxs)(`form`,{id:`org-edit-role-form`,name:`org-edit-role-form`,className:`grid grid-cols-2 gap-4 my-4`,onSubmit:_.handleSubmit(ee),children:[(0,z.jsx)(U,{control:_.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Role Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:``,...e,disabled:!0,readOnly:!0})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:_.control,name:`update`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Can Update Organization`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6 ml-2`,disabled:o||!s,readOnly:o||!s,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:_.control,name:`delete`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Can Delete Organization`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6 ml-2`,disabled:o||!s,readOnly:o||!s,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`div`,{className:`col-span-2`,children:(0,z.jsx)(Mn,{theme:p,height:`300px`,defaultLanguage:`json`,onValidate:C,onChange:e=>{e&&S(e)},options:o||!s?{readOnly:!0}:void 0,defaultValue:x})}),!o&&(c||s)&&(0,z.jsx)(X,{className:`col-span-2`,children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[c&&(0,z.jsx)(g,{type:`button`,variant:`destructiveOutline`,className:`rounded-full`,onClick:()=>h(!0),disabled:u,children:`Delete Role`}),s&&(0,z.jsx)(g,{variant:`submit`,className:`rounded-full`,disabled:!y||u||!_.formState.isValid||!_.formState.isDirty,children:`Save Changes`})]})})]})})]})})})}function _u(){let e=De(),t=xt(),{organizationId:n,orgRoleId:r}=N({strict:!1}),{create:i}=ha(n),{data:a,refetch:o,isFetching:s,isRefetching:c}=je(tu(n)),l=(0,R.useMemo)(()=>a&&a?.find(e=>e.id===r),[a,r]),u=!!r&&!!l,[d,f]=(0,R.useState)(!1),p=(0,R.useCallback)(async(i,a)=>{await e({to:[r?`..`:``,i].filter(Boolean).join(`/`)}),a&&await t.invalidateQueries({queryKey:[n,`roles`],refetchType:`active`})},[r,e,t]),m=(0,R.useCallback)(()=>{f(!0)},[f]),h=(0,R.useCallback)(e=>p(e.original.id,!1),[p]),_=(0,R.useCallback)(e=>p(void 0,e),[p]),v=Yl(o);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsxs)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,z.jsxs)(Wl,{data:a,columns:nu,onRowClick:h,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:v,accessKey:`r`,disabled:s||c,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),i&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:m,accessKey:`a`,disabled:d,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),i&&(0,z.jsx)(cu,{isModalOpen:d,setIsModalOpen:f}),u&&(0,z.jsx)(gu,{data:l,isModalOpen:u,closeModal:_})]})})]})}var vu=[{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},_r().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}],yu=oe.object({email:io.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:oe.string().nonempty({error:`Please select a role.`})});async function bu(e){let{data:t}=await s.post(`/OrganizationRole/`,e);return t}function xu(){return M({mutationFn:e=>bu(e)})}oe.object({email:io.max(80,{error:`Email cannot be longer than 80 characters.`}),roleId:oe.string().nonempty({error:`Please select a role.`})});async function Su(e){let{data:t}=await s.post(`/UserInvite/`,e);return t}function Cu(){return M({mutationFn:e=>Su(e)})}function wu({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let{organizationId:r}=N({strict:!1}),{data:i}=je(tu(r)),[a,o]=(0,R.useState)(!1),s=I({resolver:j(yu),defaultValues:{email:``,roleId:``}}),{mutate:c,isPending:l}=xu(),{mutate:u,isPending:d}=Cu(),f=(0,R.useCallback)(async e=>{e&&(a?u:c)(e,{onSuccess:()=>{let r=e.roleId;s.reset(),s.setValue(`roleId`,r),t(),L.success(`User invited successfully!`),n(!1),o(!1)},onError:e=>{e?.status===404&&o(!0)}})},[c,s,u,t,n,a]);return(0,z.jsx)(J,{onOpenChange:()=>{n(!1),o(!1),s.reset()},open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...s,children:(0,z.jsxs)(`form`,{id:`org-add-user-form`,name:`org-add-user-form`,onSubmit:s.handleSubmit(f),className:`grid gap-4 my-4`,children:[(0,z.jsx)(cs,{children:(0,z.jsx)(Z,{children:a?`Invite User`:`Add User`})}),(0,z.jsx)(U,{control:s.control,name:`email`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Email`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`email`,enterKeyHint:`next`,autoComplete:`email`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:s.control,name:`roleId`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Roles`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:t=>e.onChange(t),children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Role`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)(Lc,{children:`Role`}),i?.map(e=>(0,z.jsx)($,{value:e.id,children:e.roleName},e.id))]})})]})})}),(0,z.jsx)(K,{})]})}),a&&(0,z.jsxs)(ls,{className:`p-3 my-5 text-white rounded-md bg-amber-600 flex`,children:[(0,z.jsx)(ue,{className:`inline-block size-12 pr-2`}),(0,z.jsx)(`span`,{children:`This person doesn’t have a Fabric account. Do you want to invite them?`})]}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:l||d,children:[(0,z.jsx)(Pe,{}),` `,a?`Invite User`:`Add User`]})})})]})})})})}async function Tu({roleId:e,userId:t}){let{data:n}=await s.delete(`/OrganizationRole/role/${e}/user/${t}`);return n}function Eu(){return M({mutationFn:({roleId:e,userId:t})=>Tu({roleId:e,userId:t})})}function Du(e){let[t,n]=(0,R.useState)(e||!1);return[t,(0,R.useCallback)(e=>{n(typeof e==`boolean`?e:e.target.checked)},[])]}function Ou({data:e,readOnly:t,canRemove:n,orgRole:r,selectedRoles:i,setChangesMade:a}){let{mutate:o,isPending:s}=xu(),{mutate:c,isPending:l}=Eu(),u=!!i[r.roleName],[d,f]=(0,R.useState)(u),[p,m]=Du(u);return(0,R.useEffect)(()=>{p!==d&&(p?o({email:e.email,roleId:r.id},{onSuccess:()=>{f(p),a(!0),L.success(`Role added successfully`)}}):c({userId:e.id,roleId:r.id},{onSuccess:()=>{f(p),a(!0),L.success(`Role removed successfully`)}}))},[o,e.email,e.id,p,r.id,c,a,d]),(0,z.jsxs)(Ya,{className:`flex`,children:[(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,disabled:t||s||l||!n&&p,checked:p,onChange:m}),(0,z.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:r.roleName})]},r.id)}function ku({closeModal:e,data:t,isModalOpen:n,onUserUpdated:r}){let{organizationId:i}=N({strict:!1}),a=vi(),{update:o,remove:s}=ha(i),c=a.user?.email===t.email,{data:l}=je(tu(i)),u=(0,R.useMemo)(()=>t.roles?Vs(t.roles,`roleName`):{},[t]),[d,f]=(0,R.useState)(!1);return(0,z.jsx)(J,{onOpenChange:d?r:e,open:n,children:(0,z.jsxs)(Y,{className:`sm:max-w-[750px]`,children:[(0,z.jsx)(cs,{children:(0,z.jsxs)(Z,{children:[o?`Edit `:`View `,` `,t.email,` `,c?`(yourself)`:``]})}),o&&(0,z.jsxs)(ls,{children:[`To remove `,c?`your self`:`this user`,` from the organization, uncheck all of the boxes below.`]}),l.map(e=>(0,z.jsx)(Ou,{readOnly:!o,canRemove:s,data:t,orgRole:e,selectedRoles:u,setChangesMade:f},e.id))]})})}function Au(e,t){return e.email>t.email?1:-1}function ju(){let e=De(),{organizationId:t,orgUserId:n}=N({strict:!1}),{update:r}=ha(t),{data:i,refetch:a,isFetching:o,isRefetching:s}=je(tu(t)),c=(0,R.useMemo)(()=>{let e={};for(let t of i)if(t.users)for(let n of t.users)e[n.id]||(e[n.id]={...n,roles:[]}),e[n.id].roles.push(t);return Object.values(e).sort(Au)},[i]),l=(0,R.useMemo)(()=>c?.find(e=>e.id===n),[c,n]),u=(0,R.useCallback)(t=>{e({to:[n?`..`:``,t].filter(Boolean).join(`/`)})},[n,e]),d=!!n&&!!l,[f,p]=(0,R.useState)(!1),[m]=(0,R.useState)({attribute:`email`,descending:!1}),h=(0,R.useMemo)(()=>[{desc:m.descending,id:m.attribute}],[m]),_=(0,R.useCallback)(()=>{p(!0)},[p]),v=(0,R.useCallback)(()=>{a(),p(!1)},[a,p]),y=(0,R.useCallback)(e=>{u(e.original.id)},[u]),b=(0,R.useCallback)(()=>{u(void 0)},[u]),x=(0,R.useCallback)(()=>{a(),u(void 0)},[u,a]),S=Yl(a);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,z.jsxs)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,z.jsxs)(Wl,{data:c,isFetching:o||s,columns:vu,onRowClick:y,sortingState:h,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,z.jsx)(wt,{}),` `,(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),r&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:_,accessKey:`a`,disabled:f,children:[(0,z.jsx)(Rt,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),r&&(0,z.jsx)(wu,{isModalOpen:f,onChangesSaved:v,setIsModalOpen:p}),d&&(0,z.jsx)(ku,{closeModal:b,data:l,isModalOpen:d,onUserUpdated:x})]})})]})}var Mu=D({couponId:w().nonempty({message:`Please enter a coupon ID.`}).trim()});async function Nu({organizationId:e,couponId:t}){let{data:n}=await s.post(`/Coupon`,{organizationId:e,couponId:t},{validateStatus:e=>e>=200&&e<400||e===400||e===409});return n}function Pu(){return M({mutationFn:Nu})}function Fu({organizationId:e,organizationName:t,isOpen:n,onClose:r}){let{mutate:i,isPending:a}=Pu(),o=I({resolver:j(Mu),defaultValues:{couponId:``}}),{handleSubmit:s,control:c,reset:l}=o;(0,R.useEffect)(()=>{n&&l({couponId:``})},[n,l]);let u=(0,R.useCallback)(n=>{i({organizationId:e,couponId:n.couponId},{onSuccess:i=>{i?L.error(`Error`,{description:i||`Failed to add coupon.`}):(L.success(`Success`,{description:`Coupon "${n.couponId}" added to ${t||e}.`}),r())}})},[i,e,t,r]);return(0,z.jsx)(J,{open:n,onOpenChange:e=>!e&&r(),children:(0,z.jsxs)(Y,{children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Add Coupon`}),(0,z.jsxs)(ls,{children:[`Add a coupon code to`,` `,t||e,`. This coupon will be applied to the next billing cycle.`,(0,z.jsx)(`br`,{}),`Coupons can be created in our`,` `,(0,z.jsx)(`a`,{href:`https://dashboard.stripe.com/`,target:`_blank`,rel:`noreferrer`,className:`text-purple hover:underline`,children:`Stripe Dashboard`}),`.`]})]}),(0,z.jsx)(V,{...o,children:(0,z.jsxs)(`form`,{onSubmit:s(u),children:[(0,z.jsx)(`div`,{className:`grid gap-4 py-4`,children:(0,z.jsx)(U,{control:c,name:`couponId`,render:({field:e})=>(0,z.jsxs)(W,{className:`grid items-center gap-4`,children:[(0,z.jsx)(G,{children:`Coupon ID`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,placeholder:`e.g. 100OFF`,disabled:a})}),(0,z.jsx)(K,{})]})})}),(0,z.jsxs)(X,{children:[(0,z.jsx)(g,{type:`button`,variant:`ghost`,onClick:r,disabled:a,children:`Cancel`}),(0,z.jsx)(g,{type:`submit`,disabled:a,children:a?`Adding...`:`Add Coupon`})]})]})})]})})}function Iu({organizationRole:e,onDeleteOrgModal:t}){let{organizationId:n,organizationName:r,roleName:i}=e,{remove:a,update:o}=ma(n),s=o,{view:c}=ha(n),l=yi(),[u,d]=(0,R.useState)(!1),f=(0,R.useCallback)(()=>{t(e)},[t,e]);return(0,z.jsxs)(xi,{className:`relative h-full justify-between hover:shadow-lg transition-shadow duration-200`,children:[(0,z.jsxs)(Si,{children:[(0,z.jsxs)(wi,{className:`flex items-center justify-between`,children:[(0,z.jsx)(`span`,{className:`truncate`,children:n}),a&&(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{className:`p-4 -m-4 -mr-6 hover:text-foreground`,children:(0,z.jsx)(Bn,{"aria-label":`Options`})}),(0,z.jsxs)(ms,{children:[(0,z.jsx)(_s,{className:`text-gray-600 text-xs`,children:`Options`}),(0,z.jsx)(vs,{}),(0,z.jsx)(k,{to:`${n}`,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(Ln,{className:`size-4 mr-2 text-blue-500`}),`Clusters`]})}),c&&(0,z.jsx)(k,{to:`${n}/roles`,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(Hn,{className:`size-4 mr-2 text-purple`}),`Roles`]})}),c&&(0,z.jsx)(k,{to:`${n}/users`,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(En,{className:`size-4 mr-2 text-orange-500`}),`Users`]})}),s&&(0,z.jsx)(k,{to:`${n}/billing`,children:(0,z.jsxs)(hs,{children:[(0,z.jsx)(it,{className:`size-4 mr-2 text-green-500`}),`Billing`]})}),l&&(0,z.jsxs)(hs,{onClick:()=>d(!0),children:[(0,z.jsx)(Ot,{className:`size-4 mr-2 text-pink-500`}),`Add Coupon`]}),(0,z.jsx)(vs,{}),a&&(0,z.jsxs)(hs,{className:`focus:bg-red/70 focus:text-white`,onClick:f,children:[(0,z.jsx)(Ir,{className:`size-4 mr-2 text-red-500`}),`Delete`]})]})]})]}),(0,z.jsx)(Ci,{children:(0,z.jsx)(`h2`,{children:r})})]}),(0,z.jsxs)(Ti,{className:`flex justify-between`,children:[(0,z.jsx)(ds,{children:Ua(i)}),(0,z.jsx)(k,{to:n,className:`text-sm`,"aria-label":`View ${r}`,title:`View ${r}`,children:(0,z.jsxs)(`span`,{className:`py-2 transition-all duration-100 ease-in-out border-0 hover:border-b-2`,children:[`View `,(0,z.jsx)(Un,{className:`inline-block`})]})})]}),(0,z.jsx)(Fu,{organizationId:n,organizationName:r,isOpen:u,onClose:()=>d(!1)})]})}async function Lu(e){let{data:t}=await s.delete(`/Organization/${e}`);return t}function Ru(){return M({mutationFn:e=>Lu(e)})}async function zu(e){let{data:t}=await s.post(`/Organization/`,{...e});return t}function Bu(){return M({mutationFn:e=>zu(e)})}var Vu=w().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.`}),Hu=D({name:w().max(255,{error:`Name cannot be longer than 255 characters.`}),subdomain:ne([ie(``),T(),Vu]).optional()});function Uu(){let{user:e}=vi(),t=De(),n=I({resolver:j(Hu),defaultValues:{name:``,subdomain:``}}),{setFocus:r,watch:i}=n;(0,R.useEffect)(()=>{r(`name`)},[r]);let a=`${e?.firstname} ${e?.lastname} Org`,o=i(`name`)||a,s=i(`subdomain`),u=(0,R.useMemo)(()=>{let e=ic(oc(o),Vu.maxLength);return{suggestedSubdomain:e,fullHostName:`future-cluster-names.${s||e}.harperfabric.com`}},[o,s]),{mutate:d,isPending:f}=Bu(),p=xt(),h=(0,R.useCallback)(async e=>{d({name:e.name||a,subdomain:e.subdomain||u.suggestedSubdomain},{onSuccess:e=>{p.invalidateQueries({queryKey:l,refetchType:`active`}),c.reloadUser(m),t({to:`/${e.id}`})}})},[u.suggestedSubdomain,p,d,a,t]);return(0,z.jsx)(z.Fragment,{children:(0,z.jsx)(V,{...n,children:(0,z.jsxs)(`form`,{id:`org-add-form`,name:`org-add-form`,onSubmit:n.handleSubmit(h),className:`grid gap-6 text-foreground max-w-xl`,children:[(0,z.jsx)(U,{control:n.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,maxLength:Hu.shape.name.maxLength,autoCapitalize:`words`,placeholder:a,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:n.control,name:`subdomain`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Subdomain`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,maxLength:Vu.maxLength,autoCapitalize:`none`,placeholder:u.suggestedSubdomain,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Full Host Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(`span`,{children:u.fullHostName})}),(0,z.jsx)(K,{})]}),(0,z.jsx)(X,{children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:f,children:[`Create New Organization `,(0,z.jsx)(Un,{})]})})]})})})}function Wu(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,z.jsx)(Uu,{})})]})}function Gu(){let e=xt(),{data:t}=je(i()),{mutate:n,isPending:r}=Ru(),[a,o]=(0,R.useState)(!1),[s,c]=(0,R.useState)(null),[l,u]=(0,R.useState)(``),d=(0,R.useCallback)(()=>u(``),[]),f=(0,R.useMemo)(()=>{let e=t?.roles||{},n=Object.values(e);return Object.keys(e).map((e,t)=>({organizationId:e,organizationName:n[t].organizationName,roleName:n[t].role})).filter(wl([`organizationId`,`organizationName`],l)).sort((e,t)=>(e.organizationName||``)>(t.organizationName||``)?1:-1)||[]},[l,t?.roles]),p=(0,R.useCallback)(e=>{u(e.currentTarget.value?.toLowerCase()||``)},[]),m=(0,R.useCallback)(t=>{t?.organizationId&&n(t.organizationId,{onSuccess:()=>{L.success(`Success`,{description:`Organization successfully deleted.`,duration:5e3,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),e.invalidateQueries({queryKey:[]}),o(!1)},onError:()=>o(!1)})},[n,e,o]),h=(0,R.useCallback)(e=>{c(e),o(!0)},[]),{createCluster:_}=Ce({strict:!1});return f.length===1&&!l.length&&_?(0,z.jsx)(kt,{to:`/${f[0].organizationId}/new-cluster`,replace:!0}):!f.length&&!l.length?(0,z.jsx)(Wu,{}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{children:(0,z.jsxs)(`div`,{className:`flex w-full justify-end gap-2`,children:[(0,z.jsx)(q,{placeholder:`Filter by name`,className:`inline-block w-full text-xs`,value:l,onChange:p}),(0,z.jsx)(k,{to:`/new-org`,children:(0,z.jsxs)(g,{variant:`positive`,accessKey:`n`,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{className:`hidden sm:inline-block`,children:[(0,z.jsx)(`u`,{children:`N`}),`ew `,(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Organization`})]})]})})]})}),(0,z.jsx)(`section`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-theme(spacing.32))]`,children:(0,z.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12`,children:[f.map(e=>(0,z.jsx)(`div`,{className:`col-span-1 md:col-span-4 lg:col-span-3 2xl:col-span-2`,children:(0,z.jsx)(Iu,{organizationRole:e,onDeleteOrgModal:h})},e.organizationId)),!f.length&&(0,z.jsxs)(`div`,{className:`col-span-1 md:col-span-12 text-center`,children:[(0,z.jsx)(`h2`,{className:`my-4 text-xl`,children:`No matches found.`}),(0,z.jsx)(g,{variant:`outline`,onClick:d,children:`Clear Filters`})]})]})}),s&&(0,z.jsx)(us,{typeOfThingBeingDeleted:`organization`,nameOfThingBeingDeleted:s.organizationName,isModalOpen:a,setIsModalOpen:()=>o(!1),deletionConfirmed:()=>m(s),deletionPending:r})]})}function Ku(){let{isLoading:e}=_i(),{createCluster:t}=Ce({strict:!1}),[,n]=Gi(qi.SavedClusterState,null);return(0,R.useEffect)(()=>{t&&n(t)},[t,n]),e?(0,z.jsx)(Os,{className:`fixed z-50 translate-1/2`}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`header`,{className:`fixed top-0 z-40 w-full h-20 p-4 bg-gradient-to-r from-violet-100 to-white border-b border-violet-200 dark:from-purple-950 dark:to-zinc-900 dark:border-purple-950 md:px-12`,children:(0,z.jsx)(wa,{})}),(0,z.jsx)(`main`,{children:(0,z.jsx)(Er,{})})]})}var qu=[`/`,`/forgot-password`,`/reset-password`,`/sign-in`,`/sign-up`,`/verify-email`];function Ju(){let e=El();return!qu.includes(e)&&{redirect:e}}var Yu=F({getParentRoute:()=>zi,id:`_dashboardLayout`,component:Ku,beforeLoad:({context:e})=>{let t=e.authentication[m];if(t&&!t.isLoading&&!t.user)throw rt({to:`/sign-in`,search:Ju()})}}),Xu=F({getParentRoute:()=>Yu,id:`_orgsLayout`});F({getParentRoute:()=>Xu,path:`/`,head:()=>({meta:[{title:`Organizations — Harper Fabric`}]}),component:Gu}),F({getParentRoute:()=>Xu,path:`/new-org`,head:()=>({meta:[{title:`New Organization — Harper Fabric`}]}),component:Wu});var Zu=F({getParentRoute:()=>Xu,path:`$organizationId`,beforeLoad:async e=>({organization:await e.context.queryClient.ensureQueryData(nc(e.params.organizationId))})});F({getParentRoute:()=>Zu,path:`/roles`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:_u}),F({getParentRoute:()=>Zu,path:`/roles/$orgRoleId`,head:()=>({meta:[{title:`Organization Roles — Harper Fabric`}]}),component:_u}),F({getParentRoute:()=>Zu,path:`/users`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:ju}),F({getParentRoute:()=>Zu,path:`/users/$orgUserId`,head:()=>({meta:[{title:`Organization Users — Harper Fabric`}]}),component:ju}),$l(Zu);var Qu=F({getParentRoute:()=>Zu,id:`_clusterLayout`});F({getParentRoute:()=>Qu,path:`/`,head:()=>({meta:[{title:`Clusters — Harper Fabric`}]}),component:Tl}),F({getParentRoute:()=>Zu,path:`/new-cluster`,head:()=>({meta:[{title:`New Cluster — Harper Fabric`}]}),component:bl}),F({getParentRoute:()=>ed,path:`/edit`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:bl}),F({getParentRoute:()=>ed,path:`/edit/$mode`,head:()=>({meta:[{title:`Edit Cluster — Harper Fabric`}]}),component:bl});function $u(){return(0,z.jsx)(Er,{})}var ed=F({getParentRoute:()=>Qu,path:`$clusterId`,component:$u,beforeLoad:async({context:e,params:t})=>({cluster:await e.queryClient.ensureQueryData(ro(t.clusterId))})});function td({children:e,className:t}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:x(`mt-32 px-4 py-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))] flex justify-center`,t),children:e})]})}var nd=new Set([`com`,`co`,`org`,`net`,`edu`,`gov`,`mil`,`me`,`biz`,`info`,`ac`,`or`,`ne`,`go`,`lg`,`asn`,`id`,`nom`,`sch`,`ltd`,`plc`]);function rd(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&&nd.has(r)?3:2;return t.length<=i?`@`:t.slice(0,-i).join(`.`)}function id({cluster:{fqdn:e},domain:{domain:t,id:n}}){let r=rd(t),[i,a,o]=Ts(r,e||``,n);return(0,z.jsxs)(`div`,{className:`grid gap-4 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,z.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,z.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:i,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:a,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800 rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:o,children:(0,z.jsx)(st,{className:`w-3 h-3`})})]})}),(0,z.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 ad({certificate:e,domain:t,cluster:n}){let r=rd(t.domain),[i,a,o]=Ts(r,n.fqdn||``,t.id),s=(0,R.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,z.jsxs)(`div`,{className:`w-full max-w-2xl border border-border/50 rounded-md p-4 bg-gray-900/20`,children:[(0,z.jsxs)(`div`,{className:`mb-4`,children:[(0,z.jsx)(`div`,{className:`w-full h-1.5 rounded-full overflow-clip flex shadow-sm bg-gray-800`,children:(0,z.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,z.jsx)(`div`,{className:`text-[10px] text-muted-foreground font-light mt-1 italic`,children:s.text})]}),(0,z.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] text-sm`,children:[(0,z.jsx)(`div`,{className:`col-span-1 text-xs text-muted-foreground`,children:`CNAME:`}),(0,z.jsxs)(`div`,{className:`col-span-1 flex gap-2 items-center flex-wrap`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800 px-2 py-0.5 rounded text-xs`,children:[(0,z.jsx)(`span`,{className:`truncate max-w-[150px]`,title:r,children:r}),(0,z.jsx)(g,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:i,title:`Copy Name`,children:(0,z.jsx)(st,{className:`w-3 h-3`})})]}),(0,z.jsx)(od,{}),(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800 px-2 py-0.5 rounded text-xs`,children:[(0,z.jsx)(`span`,{className:`truncate max-w-[200px]`,title:n.fqdn||``,children:n.fqdn}),(0,z.jsx)(g,{type:`button`,variant:`ghost`,size:`sm`,className:`h-4 w-4 p-0`,onClick:a,title:`Copy Target`,children:(0,z.jsx)(st,{className:`w-3 h-3`})})]})]}),(0,z.jsx)(`div`,{className:`col-span-1 text-[10px] text-muted-foreground`,children:`Domain ID:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800/50 px-2 py-0.5 rounded text-[10px] text-muted-foreground italic`,children:[(0,z.jsx)(`span`,{className:`truncate max-w-[200px]`,children:t.id}),(0,z.jsx)(g,{type:`button`,variant:`ghost`,size:`sm`,className:`h-3 w-3 p-0`,onClick:o,title:`Copy ID`,children:(0,z.jsx)(st,{className:`w-2.5 h-2.5`})})]})})]})]})}function od(){return(0,z.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,z.jsx)(`path`,{d:`M5 12h14`}),(0,z.jsx)(`path`,{d:`m12 5 7 7-7 7`})]})}function sd(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,searchAttribute:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l}=e;return P({enabled:t,queryKey:[n,r,i,`search_by_value`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l],retry:!1,staleTime:6e4,gcTime:5e3,queryFn:()=>cd(e)})}async function cd({instanceClient:e,databaseName:t,tableName:n,searchAttribute:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,headers:c}){let l=i.attribute.length&&!(i.attribute===r&&!i.descending),u=await e.post(`/`,{operation:`search_by_value`,get_attributes:[`*`],database:t,table:n,search_attribute:r,search_value:`*`,sort:l?i:void 0,offset:a*o,limit:o,onlyIfCached:s,noCacheStore:s},{timeout:0,headers:c,validateStatus:e=>e>=200&&e<400||e===404});return u.status===404?{data:[]}:u}function ld(e){return P({queryKey:[e,`ChallengeCertificate`],queryFn:async()=>{if(!e)return[];let{data:t}=await cd({searchAttribute:`domain`,entityId:e,databaseName:`data`,tableName:`ChallengeCertificate`,sort:{attribute:`domain`,descending:!0},instanceClient:a({id:e,forceFabricConnect:!0}),onlyIfCached:!1,pageIndex:0,pageSize:100});return t},enabled:!!e,refetchInterval:5e3})}function ud(e){return A(ld(e))}function dd({domain:{challengeToken:e,challengeTxtRecord:t,domain:n,id:r},cluster:{fqdn:i}}){let a=rd(n),[o,s,c,l,u]=Ts(t,e,a,i||``,r);return(0,z.jsxs)(`div`,{className:`grid gap-2 grid-cols-1 md:grid-cols-[80px_1fr] pb-6`,children:[(0,z.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,z.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`TXT`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:o,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Content:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:s,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.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,z.jsx)(`div`,{className:`col-span-1`,children:`Type:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`CNAME`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Name:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:c,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`TTL:`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Auto`}),(0,z.jsx)(`div`,{className:`col-span-1`,children:`Target:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-700 rounded-md px-3 py-1 flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0 shrink-0`,onClick:l,children:(0,z.jsx)(st,{className:`w-3.5 h-3.5`})})]})}),(0,z.jsx)(`div`,{className:`col-span-1 text-xs`,children:`Domain ID:`}),(0,z.jsx)(`div`,{className:`col-span-1 flex gap-2 items-center`,children:(0,z.jsxs)(`div`,{className:`flex items-center gap-1 bg-gray-800 rounded-md px-3 py-0.5 text-xs text-muted-foreground italic flex-1 overflow-hidden`,children:[(0,z.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,z.jsx)(g,{type:`button`,size:`sm`,variant:`ghost`,className:`h-5 w-5 p-0 shrink-0`,onClick:u,children:(0,z.jsx)(st,{className:`w-3 h-3`})})]})}),(0,z.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 fd({clusterId:e,domainIds:t,generateDomainCerts:n}){let{data:r}=await s.put(`/Cluster/${e}`,{domainIds:t,generateDomainCerts:n},{timeout:0});return r}function pd(){return M({mutationFn:e=>fd(e)})}oe.object({domainId:oe.string()});async function md(e){let{data:t}=await s.delete(`/Domain/${e.domainId}`);return t}function hd(){return M({mutationFn:e=>md(e)})}function gd(e){return[...new Set(e)]}var _d=_r();function vd(e,t,n){let{data:r}=ud(e.id),i=(0,R.useMemo)(()=>!!r?.some(e=>!e.issueDate||e.inProgress),[r]),{mutate:a,isPending:o}=pd(),{mutate:s,isPending:c}=hd(),l=o||c,u=(0,R.useCallback)((t,n)=>{if(!es(e.status)){L.error(`Cluster is currently `+e.status,{description:`To bind a domain, it must be running.`});return}a({clusterId:e.id,domainIds:gd((e.domainIds?.slice()||[]).concat([t])),generateDomainCerts:n},{onSuccess:()=>{Mi.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),L.success(`Domain bound!`+(n?` Certificates are being generated in the background now.`:``))}})},[a,e]),d=(0,R.useCallback)(t=>{s({domainId:t},{onSuccess:()=>{Mi.invalidateQueries({queryKey:[e.organizationId,`domains`],refetchType:`active`}),L.success(`Domain removed!`)}})},[s]),f=(0,R.useCallback)(t=>{a({clusterId:e.id,domainIds:(e.domainIds?.slice()||[]).filter(e=>e!==t),generateDomainCerts:!1},{onSuccess:()=>{Mi.invalidateQueries({queryKey:[e.organizationId],refetchType:`active`}),L.success(`Domain unbound!`)}})},[s]);return(0,R.useMemo)(()=>[_d.display({id:`select`,header:`Bind`,size:50,cell:r=>{let a=r.row.original;return a.status===`ACTIVE`&&!a.clusterId&&!ys(e)?(0,z.jsx)(`label`,{className:`p-10 -m-10`,children:(0,z.jsx)(`input`,{type:`checkbox`,checked:t.includes(a.id),onChange:()=>n(a.id),disabled:l||i})}):null}}),_d.display({header:`Domains`,id:`domain`,enableSorting:!1,size:150,cell:e=>{let t=e.row.original;return(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{children:t.domain}),(0,z.jsx)(g,{type:`button`,variant:`destructiveGhost`,className:`text-muted-foreground text-xs`,disabled:l||!!t.clusterId,onClick:()=>d(t.id),children:`Remove Domain`})]})}),(0,z.jsx)(Va,{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!`})]})}}),_d.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,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{children:`Bound to this cluster`}),i&&(!i.issueDate||i.inProgress)&&(0,z.jsx)(`div`,{className:`py-2`,children:(0,z.jsx)(ad,{certificate:i,domain:n,cluster:e})}),(0,z.jsx)(g,{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,z.jsx)(dd,{domain:n,cluster:e}):ys(e)?`Cannot be associated with this self-managed cluster.`:n.status===`ACTIVE`&&!n.clusterId?(0,z.jsx)(id,{cluster:e,domain:n}):n.status}})],[e,u,l,r,i,t,n])}var yd=oe.object({domain:oe.string(),organizationId:oe.string()});async function bd(e){let{data:t}=await s.post(`/Domain/`,e);return t}function xd(){return M({mutationFn:e=>bd(e)})}async function Sd(e){let{data:t}=await s.post(`/Domain/${e}/validate`);return t}async function Cd(e){let{data:t}=await s.get(`/Domain/?organizationId=${e}`);return t}function wd(e){return P({queryKey:[e,`domains`],queryFn:()=>Cd(e)})}function Td(){let{organizationId:e,clusterId:t}=N({strict:!1}),{data:n}=je(ro(t,!0)),{update:r}=ha(e),{data:i,refetch:a,isFetching:o,isRefetching:s}=A(wd(e)),c=(0,R.useMemo)(()=>i?.filter(e=>e.status===`PENDING_VALIDATION`)||[],[i]),[l]=(0,R.useState)({attribute:`domain`,descending:!1}),d=(0,R.useMemo)(()=>[{desc:l.descending,id:l.attribute}],[l]),f=Yl(a),[p,m]=(0,R.useState)([]),h=(0,R.useCallback)(e=>{m(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),{mutate:_,isPending:v}=pd(),y=(0,R.useCallback)(()=>{if(!es(n.status)){L.error(`Cluster is currently `+n.status,{description:`To bind a domain, it must be running.`});return}_({clusterId:n.id,domainIds:gd((n.domainIds?.slice()||[]).concat(p)),generateDomainCerts:!0},{onSuccess:()=>{Mi.invalidateQueries({queryKey:[n.organizationId],refetchType:`active`}),L.success(`Domain(s) bound! Certificates are being generated in the background now.`),m([])}})},[n,p,_]),{mutateAsync:b,isPending:x}=xd(),S=I({resolver:j(yd),defaultValues:{domain:``,organizationId:e}}),C=(0,R.useCallback)(async e=>{if(e){let t=e.domain.split(/[,\s]+/).map(e=>e.trim()).filter(Boolean);for(let n of t)await b({...e,domain:n});S.reset(),await a(),L.success(`${u(t.length,`Domain`,`Domains`)} added! Please add the txt record above to your domain registrar.`)}},[b,S,a]),ee=(0,R.useCallback)(async()=>{let e=`Validating ${u(c.length,`domain`,`domains`)}...`,t=`validatingDomains`,n=0,r=0;for(let i of c)try{L.loading(e,{description:`${n++} of ${c.length} checked`,id:t}),await Sd(i.id)}catch{r+=1}r>0?L.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(),L.success(`Validation succeeded!`,{description:`Please take a look at the next steps for newly verified domains.`,id:t}))},[c]),w=vd(n,p,h),te=S.watch(`domain`),ne=(0,R.useMemo)(()=>typeof te==`string`?te.trim().split(`.`).length===2:!1,[te]),T=(0,R.useCallback)(()=>{typeof te==`string`&&S.setValue(`domain`,`${te.trim()}, www.${te.trim()}`)},[te,S]);return(0,z.jsx)(Wl,{data:i||[],isFetching:o||s,columns:w,sortingState:d,children:(0,z.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,z.jsx)(V,{...S,children:(0,z.jsxs)(`form`,{id:`cluster-add-domain-form`,name:`cluster-add-domain-form`,onSubmit:S.handleSubmit(C),className:`flex gap-1 flex-col md:flex-row`,children:[(0,z.jsx)(U,{control:S.control,name:`domain`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex-1`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`New Domain Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,enterKeyHint:`done`,autoComplete:`off`,...e})}),ne&&(0,z.jsxs)(`div`,{className:`mt-1 flex gap-4`,children:[`Adding an apex domain?`,(0,z.jsx)(g,{variant:`positiveOutline`,type:`button`,onClick:T,children:`Add www as well`})]}),(0,z.jsx)(K,{children:(0,z.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,z.jsxs)(`div`,{className:`flex-0 self-start flex gap-1 md:pt-6.5`,children:[(0,z.jsxs)(g,{type:`submit`,variant:`submit`,disabled:x,children:[(0,z.jsx)(Rt,{}),` Add`]}),c.length>0&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:ee,accessKey:`r`,type:`button`,disabled:o||s,children:[(0,z.jsx)(nn,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`V`}),`alidate`]})]}),(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:f,accessKey:`r`,type:`button`,disabled:o||s,children:[(0,z.jsx)(wt,{}),` `,(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]})]})]})}),p.length>0&&(0,z.jsx)(`div`,{className:`flex-0 self-start md:pt-6.5`,children:(0,z.jsxs)(g,{variant:`submit`,onClick:y,disabled:v,children:[(0,z.jsx)(Pe,{}),` Bind `,u(p.length,`Domain`,`Domains`)]})})]})})}function Ed(){return(0,z.jsx)(td,{className:`flex flex-col justify-start max-w-4xl`,children:(0,z.jsx)(Td,{})})}var Dd=D({username:oo,role:w().nonempty({error:`Please select a role.`}),password:ao.min(8,{error:`Password must be at least 8 characters long.`}),confirmPassword:w()}).refine(e=>e.password===e.confirmPassword,{error:`Passwords do not match.`,path:[`confirmPassword`]});async function Od(e){await s.patch(`/ResetPasswordUpdater/${e}`)}async function kd(e){let{instanceClient:t,...n}=e,{data:r}=await t.post(`/`,{operation:`add_user`,...n});return r}function Ad(){return M({mutationFn:kd})}async function jd({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 Md(){return M({mutationFn:jd})}async function Nd({username:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_user`,username:e});return n}function Pd(){return M({mutationFn:Nd})}async function Fd({clusterId:e,initialUsername:t,desiredUsername:n,newPassword:i,tempPassword:a,instanceClient:s}){if(!a)throw Error(`You may not have permission to set the password on this cluster.`);let c=s;try{let r=await $a({username:t,password:a,instanceClient:c,entityId:e});return r.instanceClient&&(c=r.instanceClient),n===`HDB_ADMIN`?await jd({username:n,password:i,instanceClient:c}):(await kd({username:n,password:i,role:`super_user`,active:!0,instanceClient:c}),await $a({username:n,password:i,instanceClient:c,entityId:e}),await Nd({username:o,instanceClient:c})),await Od(e),r}catch(t){throw await r({entityId:e,instanceClient:c}),t}}function Id(){return M({mutationFn:Fd})}function Ld(){let{user:e}=vi(),{clusterId:t}=N({strict:!1}),{data:n}=A(ro(t,!0)),r=De(),i=(0,R.useMemo)(()=>f(n),[n]),a=oa({operationsUrl:i}),{redirect:s}=Ce({strict:!1}),l=fe(),u=I({resolver:j(Dd),defaultValues:{confirmPassword:``,password:``,role:`super_user`,username:e?.email??``}}),{setFocus:d,control:p,handleSubmit:m}=u;(0,R.useEffect)(()=>{d(`password`)},[d]);let h=n?.instances?.find(e=>e.tempPassword)?.tempPassword,{mutate:_,isPending:v}=Id(),y=(0,R.useCallback)(async e=>{if(!i){L.error(`Cluster is not yet fully loaded, please wait a moment before trying to sign in.`);return}_({instanceClient:a,clusterId:t,newPassword:e.password,tempPassword:h,initialUsername:o,desiredUsername:e.username},{onSuccess:async({message:e,user:t})=>{L.success(e),c.setUserForEntity(n,t),l.invalidate(),await r({to:s?.startsWith(`/`)?s:`../`})}})},[n,t,a,r,i,s,l,_,h]);return n&&!n.resetPassword?(0,z.jsx)(kt,{to:`../sign-in`,replace:!0}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`nav`,{"aria-label":`Breadcrumb`,className:`fixed top-20 w-full h-12 z-39 px-4 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none flex items-center`,children:(0,z.jsx)(Ga,{})}),(0,z.jsx)(`div`,{className:`items-center justify-center flex mt-32 py-4 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsxs)(`div`,{className:`text-foreground w-xs`,children:[(0,z.jsx)(`h1`,{className:`text-2xl font-light`,children:`Create Admin User`}),(0,z.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,z.jsx)(V,{...u,children:(0,z.jsxs)(`form`,{id:`cluster-create-admin-form`,name:`cluster-create-admin-form`,onSubmit:m(y),className:`my-4`,children:[(0,z.jsx)(U,{control:p,name:`username`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{autoComplete:`username`,type:`text`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:p,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:p,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(g,{disabled:v,type:`submit`,variant:`submit`,className:`w-full my-2 rounded-full`,children:`Create Admin User`})]})}),(0,z.jsxs)(`p`,{className:`text-muted-foreground flex gap-2 align-middle`,children:[(0,z.jsx)(bn,{size:36,className:`flex-none`}),(0,z.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 Rd({columns:e,data:t}){let n=tr({data:t,columns:e,getCoreRowModel:dn()});return(0,z.jsx)(`div`,{className:`bg-card dark:bg-black-dark rounded-md`,children:(0,z.jsxs)(Ll,{children:[(0,z.jsx)(Rl,{children:n.getHeaderGroups().map(e=>(0,z.jsx)(Bl,{className:`border-none`,children:e.headers.map(e=>(0,z.jsx)(Vl,{className:`p-4`,style:{width:`${e.getSize()}%`},children:e.isPlaceholder?null:rn(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,z.jsx)(zl,{className:`bg-background dark:bg-black`,children:n.getRowModel().rows?.length?n.getRowModel().rows.map(e=>(0,z.jsx)(Bl,{"data-state":e.getIsSelected()&&`selected`,className:`hover:bg-muted/10 data-[state=selected]:bg-muted`,children:e.getVisibleCells().map(e=>(0,z.jsx)(Ul,{className:`p-4`,style:{width:`${e.column.getSize()}%`},children:rn(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,z.jsx)(Bl,{children:(0,z.jsx)(Ul,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function zd(){return(0,z.jsx)(`div`,{className:`flex-col items-center justify-center px-16 space-y-3 text-center pt-30`,children:(0,z.jsx)(`p`,{children:`No instances found.`})})}function Bd({isSelfManaged:e,instance:t}){let{user:i,isLoading:a}=bi(t.id),o=oa({operationsUrl:(0,R.useMemo)(()=>n(t),[t])}),{update:s}=va(),l=c.checkForFabricConnect(t.id),u=(0,R.useCallback)(async()=>{await r({instanceClient:o,entityId:t.id}),c.setUserForEntity(t,null)},[t,o]);return a||!t.status||![`CLONE_READY`,`RUNNING`,`UPDATED`,`PENDING_UPGRADE`].includes(t.status)?(0,z.jsx)(jn,{className:`animate-spin`,color:`gray`}):!i||l?(0,z.jsxs)(`span`,{className:`flex gap-4`,children:[s&&!e&&(0,z.jsx)(k,{to:`../instance/${t.id}/`,className:`text-sm`,"aria-label":`Connect to ${t.name} instance`,title:`Connect to ${t.name} instance`,children:(0,z.jsx)(g,{variant:`positiveOutline`,children:`Fabric Connect`})}),(0,z.jsx)(k,{to:`../instance/${t.id}/sign-in`,className:`text-sm`,"aria-label":`Sign in to ${t.name} instance`,title:`Sign in to ${t.name} instance`,children:(0,z.jsx)(g,{variant:s?`defaultOutline`:`positiveOutline`,children:`Direct Sign In`})})]}):(0,z.jsxs)(`span`,{className:`flex gap-4`,children:[(0,z.jsx)(k,{to:`../instance/${t.id}/`,className:`text-sm`,"aria-label":`Go to ${t.name} instance`,title:`Go to ${t.name} instance`,children:(0,z.jsx)(g,{variant:`positiveOutline`,children:`Direct Connect`})}),(0,z.jsx)(g,{variant:`destructiveOutline`,className:`text-sm`,"aria-label":`Sign out from ${t.name} instance`,title:`Sign out from ${t.name} instance`,onClick:u,children:`Direct Sign Out`})]})}function Vd({entityId:e,instanceClient:t},n){return P({queryKey:[e,`get_status`],staleTime:9e3,refetchInterval:1e4,retryDelay:1e4,throwOnError:!1,enabled:n,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_status`});return e}})}function Hd(e,t){return e?.systemStatus?.find(e=>e.id===t)?.status}async function Ud({instanceClient:e,id:t,status:n}){let{data:r}=await e.post(`/`,{operation:`set_status`,id:t,status:n});return r}function Wd(){return M({mutationFn:Ud,onSuccess:(e,t)=>Mi.invalidateQueries({queryKey:[t.entityId,`get_status`]})})}function Gd({instance:e,index:t}){let{update:r}=va(),i=B({operationsUrl:(0,R.useMemo)(()=>n(e),[e]),instanceId:e.id,forceFabricConnect:!0}),{mutate:a,isPending:o}=Wd(),[s,c]=(0,R.useState)(!1);(0,R.useEffect)(()=>{let e=setTimeout(()=>c(!0),t*500);return()=>clearTimeout(e)},[t]);let{data:l,isLoading:u,isFetching:d}=A(Vd(i,s&&r)),f=Hd(l,`availability`)||`Unknown`,p=f===`Available`,m=f===`Unavailable`;return r?(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsx)(`div`,{className:`flex items-center`,children:u||!s||d&&!l?(0,z.jsx)(jn,{className:`animate-spin size-5 text-muted-foreground`}):(0,z.jsx)(ds,{variant:p?`success`:m?`destructive`:`default`,className:`size-4 rounded-full p-0`,children:(0,z.jsx)(`span`,{className:`sr-only`,children:p?`Online`:`Offline`})})})}),(0,z.jsxs)(Va,{children:[d&&l?`Refreshing... `:``,f]})]}),r&&(0,z.jsxs)(`div`,{className:`flex gap-1`,children:[p&&(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsx)(g,{type:`button`,variant:`destructiveGhost`,size:`icon`,onClick:()=>a({...i,id:`availability`,status:`Unavailable`}),disabled:o,children:o?(0,z.jsx)(jn,{className:`animate-spin size-4`}):(0,z.jsx)(pt,{className:`size-4`})})}),(0,z.jsx)(Va,{children:`Bring out of rotation`})]}),m&&(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsx)(g,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>a({...i,id:`availability`,status:`Available`}),disabled:o,children:o?(0,z.jsx)(jn,{className:`animate-spin size-4`}):(0,z.jsx)(Hn,{className:`size-4`})})}),(0,z.jsx)(Va,{children:`Bring back into rotation`})]})]})]}):null}function Kd(){let{clusterId:e}=N({strict:!1}),{data:t,isLoading:n}=A(ro(e,!0)),r=ys(t),i=(0,R.useMemo)(()=>[{id:`instanceActions`,size:1,minSize:1,cell:e=>(0,z.jsx)(`div`,{className:`flex justify-end gap-2 items-center`,children:(0,z.jsx)(Bd,{isSelfManaged:r,instance:e.row.original})})},r&&{accessorKey:`instanceFqdn`,size:90,header:`URL`,cell:e=>pl({secure:e.row.original.operationsApiSecure?`true`:`false`,port:e.row.original.operationsApiPort,fqdn:e.row.original.instanceFqdn})},!r&&{accessorKey:`name`,size:90,header:`Name`},{accessorKey:`status`,header:`Status`,size:1,minSize:1,cell:e=>{let t=e.getValue();return(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(Gd,{instance:e.row.original,index:e.row.index}),t?(0,z.jsx)(ds,{variant:$o(t),children:Ua(t)}):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,z.jsxs)(z.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`}].filter(Ni),[r]),a=(0,R.useMemo)(()=>t?.instances?t.instances.filter(e=>e.status&&!Za.includes(e.status)).sort(zs):[],[t]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Qo,{}),(0,z.jsx)(`div`,{className:`mt-32 px-4 pt-4 md:px-12 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsx)(xi,{className:`p-0 mt-4 min-h-96`,children:(0,z.jsx)(Ti,{className:`p-0 min-h-96`,children:n?(0,z.jsx)(jc,{}):a.length?(0,z.jsx)(Rd,{data:a,columns:i}):(0,z.jsx)(zd,{})})})})]})}function qd(){let{clusterId:e}=N({strict:!1}),{data:t,isLoading:n}=A(ro(e,2e3)),r=t?.status,i=(0,R.useMemo)(()=>r&&Xa.includes(r),[r]);return n||!t?(0,z.jsx)(td,{className:`flex justify-center`,children:(0,z.jsx)(jc,{})}):i?(0,z.jsx)(td,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,z.jsx)(`h1`,{className:`text-xl text-center`,children:`All done!`}),(0,z.jsx)(Ss,{cluster:t,forceProgressBarVisible:!0}),(0,z.jsx)(`p`,{children:`Your cluster finished updating, and is ready for interaction.`}),(0,z.jsx)(`div`,{className:`text-center`,children:(0,z.jsx)(bs,{cluster:t})})]})}):(0,z.jsx)(td,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center w-2xl flex flex-col gap-4`,children:[(0,z.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,z.jsx)(Ss,{cluster:t,forceProgressBarVisible:!0}),(0,z.jsxs)(`p`,{children:[`Your cluster is updating with the latest changes. This includes waiting several minutes to let traffic drain safely.`,` `,(0,z.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,z.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 Jd(){let e=fe(),{clusterId:t}=N({strict:!1}),{data:n,isLoading:r}=A(ro(t,2e3)),i=n?.status,a=(0,R.useMemo)(()=>i&&Xa.includes(i),[i]),o=ts(i),[,s]=Gi(qi.SavedClusterState,null),c=(0,R.useCallback)(()=>{s(n),e.navigate({to:`/${n.organizationId}/new-cluster`})},[n,e,s]);return r||!n?(0,z.jsx)(td,{className:`flex justify-center`,children:(0,z.jsx)(jc,{})}):o?(0,z.jsx)(td,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4 items-center`,children:[(0,z.jsx)(St,{className:`w-24 h-24`}),(0,z.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,z.jsx)(Ds,{}),` if you want more help.`]}),(0,z.jsx)(g,{type:`button`,variant:`positiveOutline`,onClick:c,children:`Try Again`})]})}):a?(0,z.jsx)(td,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,z.jsx)(`h1`,{className:`text-xl text-center`,children:`It's ready!`}),(0,z.jsx)(Ss,{cluster:n,forceProgressBarVisible:!0}),(0,z.jsxs)(`p`,{children:[`Let's set up your secure, browser-to-cluster connection now.`,` `,(0,z.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,z.jsx)(`em`,{children:`Direct Connect`}),`! Once you create your user, you will have the option to`,` `,(0,z.jsx)(`em`,{children:`Fabric Connect`}),` from your Fabric account without having to sign in again.`]})]}),(0,z.jsx)(`div`,{className:`text-center`,children:(0,z.jsx)(bs,{cluster:n})})]})}):(0,z.jsx)(td,{className:`flex justify-center`,children:(0,z.jsxs)(`div`,{className:`center max-w-2xl flex flex-col gap-4`,children:[(0,z.jsx)(`h1`,{className:`text-xl text-center`,children:`Here we go!`}),(0,z.jsx)(Ss,{cluster:n,forceProgressBarVisible:!0}),(0,z.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,z.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,z.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.`]})]})]})})}F({getParentRoute:()=>ed,path:`instances`,head:()=>({meta:[{title:`Instances — Harper Fabric`}]}),component:Kd}),F({getParentRoute:()=>ed,path:`starting-up`,head:()=>({meta:[{title:`Starting Up — Harper Fabric`}]}),component:Jd}),F({getParentRoute:()=>ed,path:`scaling`,head:()=>({meta:[{title:`Scaling — Harper Fabric`}]}),component:qd}),F({getParentRoute:()=>ed,path:`domains`,head:()=>({meta:[{title:`Domains — Harper Fabric`}]}),component:Ed}),F({getParentRoute:()=>ed,path:`sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:mo,beforeLoad:({context:e,location:t,params:n})=>{let r=c.checkForFabricConnect(n.clusterId);if(e.authentication[n.clusterId]?.user&&!r){let e=t?.search;throw rt({to:e?.redirect?.startsWith(`/`)?e.redirect:`../`})}}}),F({getParentRoute:()=>ed,path:`instance/$instanceId/sign-in`,head:()=>({meta:[{title:`Sign In — Harper Fabric`}]}),component:mo,beforeLoad:({context:e,location:t,params:n})=>{if(!(c.checkForFabricConnect(n.clusterId)||c.checkForFabricConnect(n.instanceId))&&e.authentication[n.instanceId]?.user){let e=t?.search;throw rt({to:e?.redirect?.startsWith(`/`)?e.redirect:`../`})}}}),F({getParentRoute:()=>ed,path:`finish-setup`,head:()=>({meta:[{title:`Create Admin User — Harper Fabric`}]}),component:Ld});function Yd(e){return F({getParentRoute:()=>e,path:`apis`,head:()=>({meta:[{title:`APIs — Harper Fabric`}]})}).lazy(()=>Yr(()=>import(`./index.lazy-C5LLrJkX.js`).then(e=>e.route),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])))}function Xd(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 Zd(e,t){let[n,r]=(0,R.useState)(t),[i,a]=(0,R.useState)(e);return(0,R.useEffect)(()=>{Xd(n,t)||(r(t),a(e))},[n,t,e]),Xd(n,t)?[i,a]:[e,a]}var Qd={};function $d(e,t,n){let r=(0,R.useCallback)((e,n)=>t(e,n),[n]);(0,R.useEffect)(()=>(Qd[e]||(Qd[e]=[]),Qd[e].push(r),function(){let t=Qd[e].indexOf(r);t>=0&&Qd[e].splice(t,1)}),[e,t,r])}function ef(e,t,n){let r=Qd[e];if(r)for(let e of r)e(t,n)}function tf(e,t,n){return r=>ef(e,t,n??r)}function nf(e,t,n){return(0,R.useCallback)(r=>ef(e,t,n??r),[e,t,n])}function rf(e,t){return Hi(sessionStorage.getItem(String(e)))??t}function af(e,t){t==null?sessionStorage.removeItem(String(e)):sessionStorage.setItem(String(e),JSON.stringify(t))}function of(e,t){let n=Zd(rf(e,t),[e]),[r,i]=n;return(0,R.useEffect)(()=>{af(e,r),ef(`Session:${e}`,r)},[e,r]),$d(`Session:${e}`,function(e){r!==e&&i(e)},[r,e,t]),(0,R.useEffect)(function(){let n=n=>{n.key===e&&i(rf(e,t))};return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}},[e,i,t]),n}function sf(e,t=!1){let[n,r]=of(e,t),i=(0,R.useCallback)(e=>{e?.preventDefault?.(),r(e=>!e)},[r]),a=(0,R.useCallback)(e=>{e?.preventDefault?.(),r(!0)},[r]),o=(0,R.useCallback)(e=>{e?.preventDefault?.(),r(!1)},[r]);return(0,R.useMemo)(()=>({toggled:n,setToggled:r,toggle:i,toggleOn:a,toggleOff:o}),[i,r,o,a,n])}var cf=(0,R.createContext)(null);function lf(){return(0,R.useContext)(cf)}async function uf({file:e,project:t,entityType:n,instanceClient:r}){let{data:i}=await r.post(`/`,{operation:`drop_component`,file:e||void 0,project:t,replicated:n===`cluster`});return i}function df(e){let t=(e||``)?.split(`.`);return t.length>1?t.slice(-1)[0]:``}function ff(e){switch(df(e).toLowerCase()){case`jpg`:case`jpeg`:case`gif`:case`png`:case`pneg`:case`webp`:return!0;default:return!1}}async function pf({instanceClient:e,file:t,project:n,encoding:r}){let{data:i}=await e.post(`/`,{operation:`get_component_file`,project:n,file:t,encoding:r??(ff(t)?`base64`:`utf8`)});return{project:n,file:t,...i}}function mf(e){return P({queryKey:hf(e),queryFn:()=>pf(e),enabled:!!e.file&&!!e.project,retry:!1})}function hf(e){return[e.entityId,`get_component_file`,e.project,e.file,e.encoding]}async function gf({file:e,payload:t,project:n,entityType:r,instanceClient:i,encoding:a}){let{data:o}=await i.post(`/`,{operation:`set_component_file`,file:e,payload:t,project:n,encoding:a,replicated:r===`cluster`},{timeout:3e5});return o}function _f(){return M({mutationFn:gf})}function vf(){let{reloadRootEntries:e,setFocusedItem:t,setSelectedItems:n}=lf(),r=B();return(0,R.useCallback)(async i=>{let a=!1,o=i.filter(e=>e.from!==e.to);if(o.length===0)return;let s=`Renaming ${u(o.length,`File`,`Files`)}`,c={duration:6e4,action:{label:`Cancel`,onClick:()=>{a=!0}}};c.id=L.loading(s,{...c,description:(0,z.jsx)(Ys,{animated:!0,width:`0%`})});let l=o.length*3,d=0;function f(){d+=1,L.loading(s,{...c,description:(0,z.jsx)(Ys,{animated:!0,width:(d===0?0:d/l*100)+`%`})})}for(let e of o){let t=e.from.split(`/`),n=t.shift(),i=t.join(`/`),o=e.to.split(`/`),s=o.shift(),c=o.join(`/`),l=await pf({...r,file:i,project:n,encoding:`base64`});if(a||(f(),await gf({...r,file:c,project:s,encoding:`base64`,payload:l.message}),a)||(f(),await uf({...r,file:i,project:n}),a))break;f()}d>=l?L.success(`Renamed ${u(o.length,`File`,`Files`)}`,{id:c.id,description:`All done!`,duration:3e3,action:{label:`OK`,onClick:()=>{}}}):L.warning(`Rename Cancelled`,{id:c.id,description:`${d} of ${l} steps completed.`,duration:1e4,action:{label:`OK`,onClick:()=>{}}}),e(),n(e=>{let t=e.slice();for(let e of o){let n=t.indexOf(e.from);n>=0?t.splice(n,1,e.to):t.push(e.to)}return t}),t(e=>{for(let t of o)if(e===t.from)return t.to;return e})},[r,e,t,n])}function yf(e,t){return e[t]!==void 0}function bf(e){return t=>yf(t,e)}function xf(e,t){let[n,r]=(0,R.useState)({value:t});return $d(e,(e,t)=>r({value:e,trigger:t}),[r]),n}function Sf(e,t,n){ef(e,t,n)}function Cf(e,t,n){return r=>Sf(e,t,n??r)}function wf(e,t,n){return(0,R.useCallback)(r=>{Sf(e,t,n??r)},[e,t,n])}var Tf=[{handleGlobal(e,t){if((t.cmd||t.ctrl)&&e===`Delete`)return Sf(`ShowDeleteDirectoryOrFileModal`,!0),!0},addEditorAction(e){return{id:`delete-file`,label:`Delete File`,keybindings:[e.KeyMod.CtrlCmd|e.KeyCode.Delete],run:Cf(`ShowDeleteDirectoryOrFileModal`,!0)}}},{handleGlobal(e,t){if(t.ctrl&&t.alt&&t.shift&&e===`˜`)return Sf(`ShowAddDirectoryOrFileModalType`,`directory`),!0},addEditorAction(e){return{id:`new-directory`,label:`New Directory`,keybindings:[e.KeyMod.WinCtrl|e.KeyMod.Alt|e.KeyMod.Shift|e.KeyCode.KeyN],run:Cf(`ShowAddDirectoryOrFileModalType`,`directory`)}}},{handleGlobal(e,t){if(t.ctrl&&e===`n`)return Sf(`ShowAddDirectoryOrFileModalType`,`file`),!0},addEditorAction(e){return{id:`new-file`,label:`New File`,keybindings:[e.KeyMod.WinCtrl|e.KeyCode.KeyN],run:Cf(`ShowAddDirectoryOrFileModalType`,`file`)}}},{handleGlobal(e){if(e===`F2`)return Sf(`ShowRenameFileModal`,`file`),!0},addEditorAction(e){return{id:`rename-file`,label:`Rename File`,keybindings:[e.KeyMod.WinCtrl|e.KeyMod.Alt|e.KeyCode.KeyR,e.KeyCode.F2],run:Cf(`ShowRenameFileModal`,!0)}}},{addEditorAction(){return{id:`revert-file`,label:`Revert File`,run:tf(`RevertChanges`,!0)}}},{handleGlobal(e,t){if(t.cmd&&e===`s`)return ef(`SaveFile`,!0),!0},addEditorAction(e){return{id:`save-file`,label:`Save Changes`,keybindings:[e.KeyMod.CtrlCmd|e.KeyCode.KeyS],run:tf(`SaveFile`,!0)}}}],Ef=Tf.filter(bf(`addEditorAction`)),Df=Tf.filter(bf(`handleGlobal`));function Of(e){let[t,n]=e,r=Ef.map(e=>t.addAction(e.addEditorAction(n)));return()=>{for(let e of r)e?.dispose()}}function kf(){(0,R.useEffect)(()=>(document.addEventListener(`keydown`,Af),()=>{document.removeEventListener(`keydown`,Af)}),[])}function Af(e){let t={cmd:e.getModifierState(`Meta`),alt:e.getModifierState(`Alt`),shift:e.getModifierState(`Shift`),ctrl:e.getModifierState(`Control`)};for(let n of Df)if(n.handleGlobal(e.key,t)){e.preventDefault();return}}function jf(e){return e.split(`/`).pop()}function Mf(...e){let t=e.flat(1);return t.map((e,n)=>typeof e==`string`?Nf(e,n!==0,n!==t.length-1):e).join(`/`)}function Nf(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}function Pf(e){return!!e?.entries}var Ff=`__root__`,If=`importedApplications`,Lf=`newApplication`;function Rf(e){let t={},n=[],r=[],i=[];for(let a of e)Pf(a)?a.package?r.push(a.path):n.push(a.path):i.push(a.path),zf(t,a);return t[Ff]={index:Ff,isFolder:!0,children:[Lf,If,...n,...i].filter(Ni),data:void 0,canMove:!1,canRename:!1},t[If]={index:If,isFolder:!0,children:r,data:{name:`Imported Applications`,path:If,package:If,project:``,entries:[]},canMove:!1,canRename:!1},t[Lf]={index:Lf,isFolder:!1,data:{name:`New Application`,path:Lf,project:``},canMove:!1,canRename:!1},{items:t,rootId:Ff}}function zf(e,t){let n=t.path;if(Pf(t)){let r=t,i=[],a=[];for(let e of r.entries)Pf(e)?i.push(e.path):a.push(e.path);e[n]={index:n,isFolder:!0,children:[...i,...a],data:t,canMove:!1,canRename:!1};for(let t of r.entries)zf(e,t)}else e[n]={index:n,isFolder:!1,data:t,canMove:!t.package,canRename:!t.package}}function Bf(){let[e,t]=(0,R.useState)(!1),[n,r]=(0,R.useState)(void 0),i=(0,R.useCallback)(e=>{if(!e.dataTransfer?.types?.includes(`Files`))return;let n=e.target;if(n instanceof Element&&n.classList.contains(`rct-tree-item-button-isFolder`)){let e=n.getAttribute(`data-rct-item-id`);!n.querySelector(`.packageIsLocked`)&&e&&e!==`importedApplications`&&e!==`newApplication`&&r(e=>e===n?e:(e?.classList?.remove?.(`rct-tree-item-title-container-dragging-over`),n.classList.add(`rct-tree-item-title-container-dragging-over`),n))}t(!0)},[]),a=(0,R.useCallback)(()=>{t(!1),r(e=>{e&&e.classList.remove(`rct-tree-item-title-container-dragging-over`)})},[]),o=(0,R.useCallback)(e=>{if(!e.dataTransfer?.types?.includes(`Files`)||e.detail===1337)return;t(!1),n&&(n.classList.remove(`rct-tree-item-title-container-dragging-over`),r(void 0));let i=document.getElementById(`dropTarget`);return i?i.dispatchEvent(new DragEvent(`drop`,{bubbles:!0,detail:1337,cancelable:!0,dataTransfer:e.dataTransfer})):!1},[n]);return(0,R.useEffect)(()=>(document.addEventListener(`dragenter`,i),document.addEventListener(`dragover`,i),document.addEventListener(`dragleave`,a),document.addEventListener(`drop`,o),()=>{document.removeEventListener(`dragenter`,i),document.removeEventListener(`dragover`,i),document.removeEventListener(`dragleave`,a),document.removeEventListener(`drop`,o)}),[i,o,a]),(0,R.useMemo)(()=>({dragging:e,dragTarget:n}),[e,n])}function Vf(e){return new Promise((t,n)=>{let r=new FileReader;r.onabort=n,r.onerror=n,r.onload=t,r.readAsDataURL(e)})}function Hf(){let[e,t]=(0,R.useState)(``),{clusterId:n}=N({strict:!1}),{openedEntry:r,restrictPackageModification:i,reloadRootEntries:a,entryExists:o}=lf(),s=!!r&&!r.package&&!i,l=B(),{dragging:d,dragTarget:f}=Bf(),p=(f?.getAttribute?.(`data-rct-item-id`))?.split?.(`/`)?.pop?.(),m=r?.project,h=!1,g;if(r?.path){let e=r.path.split(`/`),t=Pf(r);h=s&&(t?e.slice(1):e.slice(1,-1)).join(`/`),g=e[e.length-(t?1:2)]}let _=(0,R.useCallback)(async(e,n)=>{let r=f?.getAttribute?.(`data-rct-item-id`)?.split?.(`/`),i=r?.length?r[0]:s?m:!1,c=r?.length?r.slice(1).join(`/`):s?h:!1;if(i===!1||i===void 0||c===!1||c===void 0)return;let d=[],p=n.slice();for(let t of e){let e=Uf(c,t);t.name.startsWith(`.`)||t.relativePath?.includes(`/.`)?p.push({file:t,errors:[{message:`Sensitive files and folders starting with . are skipped.`,code:`dot-ignored`}]}):o(`${i}/${e}`)?p.push({file:t,errors:[{message:`${e} already exists`,code:`duplicate`}]}):d.push(t)}let g=!1,_=`uploading-files`,v={label:`Cancel`,onClick:()=>{g=!0}},y={label:`OK`,onClick:()=>void 0};t(`Uploading ${u(d.length,`file`,`files`)}...`);let b=d.reduce((e,t)=>e+t.size,0),x=0,S=0;for(let e of d){S+=1,L.loading(`Upload in progress...`,{id:_,descriptionClassName:`whitespace-pre`,description:`${S} of ${u(d.length,`file`,`files`)}
12
12
  ${e.name}
13
- ${tl(x)} of ${tl(b)}`,action:v});let t=Vf(c,e),n=(await zf(e)).target.result,r=n.indexOf(`base64,`);g?p.push({file:e,errors:[{message:`${t} cancelled`,code:`cancelled`}]}):(await mf({...l,file:t,project:i,encoding:`base64`,payload:n.slice(r+7)}),x+=e.size)}L.loading(`Reloading sidebar...`,{id:g?void 0:_,action:y,description:``}),await a(),p.length===0?e.length>0&&L.success(`Uploaded ${u(d.length,`file`,`files`)}!`,{id:_,action:y,description:``}):(console.log(p),L.error(g?`Cancelled uploads`:`Rejected uploads`,{id:g?void 0:_,action:y,descriptionClassName:`whitespace-pre overflow-y-auto`,description:p.slice(0,5).map(e=>e.errors.map(e=>e.message).join(`
13
+ ${tl(x)} of ${tl(b)}`,action:v});let t=Uf(c,e),n=(await Vf(e)).target.result,r=n.indexOf(`base64,`);g?p.push({file:e,errors:[{message:`${t} cancelled`,code:`cancelled`}]}):(await gf({...l,file:t,project:i,encoding:`base64`,payload:n.slice(r+7)}),x+=e.size)}L.loading(`Reloading sidebar...`,{id:g?void 0:_,action:y,description:``}),await a(),p.length===0?e.length>0&&L.success(`Uploaded ${u(d.length,`file`,`files`)}!`,{id:_,action:y,description:``}):(console.log(p),L.error(g?`Cancelled uploads`:`Rejected uploads`,{id:g?void 0:_,action:y,descriptionClassName:`whitespace-pre overflow-y-auto`,description:p.slice(0,5).map(e=>e.errors.map(e=>e.message).join(`
14
14
  `)).join(`
15
15
  `)+(p?.length>5?`
16
- Check the console for the full list.`:``)})),t(``)},[f,s,m,h,o,l,a]),{getRootProps:b,getInputProps:S}=vn({multiple:!0,maxSize:n&&c.checkForFabricConnect(n)?v:y,onDrop:_});return!s&&!f?d?(0,z.jsxs)(`div`,{className:x(`border-3 border-dashed`,`pointer-events-auto`,`cursor-copy text-sm text-center`,`p-2 w-full fixed bottom-0 h-16`,`flex flex-col items-center justify-center`,`bg-red-950 border-red-600`),children:[`You cannot upload into`,(0,z.jsx)(`br`,{}),(0,z.jsx)(`strong`,{children:g})]}):null:(0,z.jsxs)(`div`,{...b(),className:d?`fixed top-0 bottom-0 w-full pointer-events-none`:``,children:[(0,z.jsx)(`input`,{id:`dropTarget`,...S()}),(0,z.jsx)(`div`,{className:x(`border-3 border-dashed`,`pointer-events-auto`,`cursor-copy text-sm text-center`,`p-2 w-full fixed bottom-0 h-16`,`flex flex-col items-center justify-center`,d?`animate-glow-pulse bg-green-950 border-green-600`:`bg-purple-950 border-purple-600`),children:e||(f?(0,z.jsxs)(z.Fragment,{children:[`Drop to upload into`,(0,z.jsx)(`br`,{}),(0,z.jsx)(`strong`,{children:p})]}):d?(0,z.jsxs)(z.Fragment,{children:[`Drop to upload into`,(0,z.jsx)(`br`,{}),(0,z.jsx)(`strong`,{children:g})]}):(0,z.jsxs)(z.Fragment,{children:[`Drag and drop to upload`,(0,z.jsx)(`br`,{}),`or click to select files.`]}))})]})}function Vf(e,t){let n=t.relativePath??t.name,r=n.indexOf(`/`),i=r===0||r===1?n.slice(r+1):n;return e?`${e}/${i}`:i}function Hf(e){let t=e.data;return t&&`name`in t?t.name:`root`}function Uf(e){let{instanceId:t,clusterId:n}=N({strict:!1}),[r,i]=rf(`EditorFileContent/${m}}/${e}`,void 0);return(0,R.useMemo)(()=>({content:e?r:void 0,setContent:i}),[e,r,i])}var Wf=`w-6 pointer-events-none `;function Gf({opened:e,pkg:t}){let n=Wf+`w-4 h-4 shrink-0`;return t?e?(0,z.jsx)(Ze,{className:`${n} text-orange-600`}):(0,z.jsx)(Le,{className:`${n} text-orange-600`}):e?(0,z.jsx)(Pr,{className:`${n} text-orange-400`}):(0,z.jsx)(on,{className:`${n} text-orange-400`})}function Kf({extension:e}){let t=`w-4 h-4 mr-2 shrink-0`;switch(e){case`js`:case`jsx`:case`cjs`:return(0,z.jsx)(Oe,{className:`${t} text-yellow-500`});case`ts`:case`tsx`:return(0,z.jsx)(Oe,{className:`${t} text-blue-500`});case`yaml`:case`yml`:return(0,z.jsx)(Et,{className:t});case`css`:return(0,z.jsx)(Et,{className:`${t} text-blue-500`});case`html`:return(0,z.jsx)(Me,{className:t});case`json`:return(0,z.jsx)(we,{className:t});case`png`:case`jpg`:case`jpeg`:case`gif`:return(0,z.jsx)(At,{className:t});case`svg`:return(0,z.jsx)(be,{className:t});case`vue`:return(0,z.jsx)(Oe,{className:`${t} text-green-500`});default:return(0,z.jsx)(Et,{className:t})}}function qf(){return(0,z.jsx)(fr,{className:Wf+`w-4 h-4 shrink-0 text-gray-400 ml-2 packageIsLocked`})}function Jf(){return(0,z.jsx)(Rt,{className:Wf+`w-4 h-4 shrink-0 text-green-500`})}function Yf({title:e,item:t,context:n}){let{content:r}=Uf(t.data?.path);return(0,z.jsxs)(z.Fragment,{children:[t.data?.path===`newApplication`?(0,z.jsx)(Jf,{}):Mf(t.data)?(0,z.jsx)(Gf,{opened:n.isExpanded,pkg:!!t.data?.package||t.data.path===`importedApplications`}):(0,z.jsx)(Kf,{extension:lf(e)}),(0,z.jsxs)(`span`,{className:`text-nowrap pointer-events-none`,children:[e,r?`*`:``]}),t.data?.package&&(0,z.jsx)(qf,{})]})}function Xf(){let{rootEntries:e,openedEntry:t,setOpenedEntry:n,focusedItem:r,setFocusedItem:i,expandedItems:a,setExpandedItems:o,selectedItems:s,setSelectedItems:c}=sf(),{items:l,rootId:u}=(0,R.useMemo)(()=>If(e),[e]);Df(),(0,R.useEffect)(function(){if(t?.path!==r&&r){let e=l[r]?.data;e&&n(e)}},[r,l,t?.path,n]);let d=gf();return(0,z.jsxs)(`div`,{className:`h-full overflow-auto pr-1.5 pb-18`,children:[(0,z.jsx)(Zn,{canDragAndDrop:!0,canDropOnFolder:!0,canDropOnNonFolder:!1,canReorderItems:!1,canSearch:!0,canRename:!1,getItemTitle:Hf,items:l,onDrop:(0,R.useCallback)((e,t)=>{switch(t.targetType){case`item`:if(l[t.targetItem]?.data?.package)L.error(`Read-Only Imported Application`,{description:`To make changes to an application, please click the "Redeploy" button and update the reference.`});else return d(e.map(e=>({from:e.index,to:Af(t.targetItem,kf(e.index))})));break;default:L.error(`${t.targetType} drop not yet supported`);break}},[l,d]),renderItemTitle:Yf,viewState:{applicationsTree:{focusedItem:r,expandedItems:a,selectedItems:s}},onFocusItem:e=>i(e.index),onExpandItem:e=>o([...a,e.index]),onCollapseItem:e=>o(a.filter(t=>t!==e.index)),onSelectItems:e=>c(e),children:(0,z.jsx)(br,{treeId:`applicationsTree`,rootItem:u,treeLabel:`Applications file tree`})}),(0,z.jsx)(Bf,{})]})}async function Zf(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 p(n)}throw i}async function Qf({operation:e,replicated:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:e,service:e===`restart_service`?`http`:void 0,replicated:t});return await p(1e4),await Zf(()=>h({instanceClient:n,timeout:3e3}),12,15e3),r}function $f(){return M({mutationFn:Qf})}function ep({onRestartedSuccessfully:e}={}){let{clusterId:t}=N({strict:!1}),r=xt(),[i,o]=(0,R.useState)(!1);return{onRestartClick:(0,R.useCallback)(async()=>{if(!t)throw Error(`clusterId must be set in the route to invoke useRestartClusterClick`);o(!0);let i=!1,s={duration:6e4,action:{label:`Cancel`,onClick:()=>{i=!0}}},l=L.loading(`Restarting`,{...s,description:(0,z.jsx)(Ys,{animated:!0,width:`0%`})}),d=await no(t),f=c.checkForFabricConnect(d.id),m=d?.instances??[],g=m.filter(e=>e.status===`RUNNING`).map(e=>a({id:e.id,forceFabricConnect:f,operationsUrl:n(e)})).reverse(),_=0;if(g.length)for(let e=0;e<g.length;e++){let t=g[e];if(!i){L.loading(`Restarting Instance ${e+1} of ${g.length}`,{...s,id:l,description:(0,z.jsx)(Ys,{animated:!0,width:(e===0?0:e/g.length*100)+`%`})});try{await h({instanceClient:t}),await Qf({operation:`restart`,replicated:!1,instanceClient:t}),_+=1}catch{e+1!==g.length&&(L.loading(`Failed Restarting Instance ${e+1} of ${g.length}`,{...s,id:l,description:`We will carry on momentarily.`}),await p(3e3))}}}if(o(!1),r.invalidateQueries({queryKey:[t]}),i)L.error(`Cancelled`,{id:l,description:`The restart was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});else if(m.length===_)e?.(),L.success(`Success`,{id:l,description:`Cluster fully restarted!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});else{let e=u(m.length,`instance`,`instances`),t=u(_,`"RUNNING" instance was`,`"RUNNING" instances were`);L.error(`Error`,{id:l,description:`Failed to fully restart cluster.
17
- `+([m.length===0&&`No instances were found within the cluster to restart.`,_===0&&`No instances were in a "RUNNING" state of ${e}.`,m.length!==_&&`Only ${t} restarted of ${e}.`].filter(Ni).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}},[t,e,r]),isRestartPending:i}}function tp({operation:e,instanceClient:t,onRestartedSuccessfully:n}){let{clusterId:r,instanceId:i}=N({strict:!1}),a=`Instance`,{mutate:o,isPending:s}=$f(),c=xt();return{onRestartClick:(0,R.useCallback)(()=>{let s=L.loading(`Restarting`,{description:`Restarting instance. This may take up to 60 seconds.`,duration:18e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});o({operation:e,replicated:e===`restart_service`&&!1,instanceClient:t},{onSuccess:()=>{c.invalidateQueries({queryKey:[r]}),c.invalidateQueries({queryKey:[i]}),L.dismiss(s),L.success(`Success`,{description:`${a} restarted!`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),n?.()},onError:()=>{L.dismiss(s),L.error(`Error`,{description:`Failed to restart instance.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}})},[r,t,i,n,e,c,o,a]),isRestartPending:s}}function np({className:e,disabled:t,hideText:n,instanceClient:r,operation:i,targetNoun:a,tooltip:o,variant:s}){let{onRestartClick:c,isRestartPending:l}=ep(),{onRestartClick:u,isRestartPending:d}=tp({operation:i,instanceClient:r});return(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(g,{type:`button`,variant:s||`positiveOutline`,className:x(`mx-0 md:mx-4 rounded-full`,e),onClick:a===`Cluster`&&i===`restart`?c:u,disabled:t||d||l,title:`Restart ${a}`,children:[(0,z.jsx)(Ge,{className:`pointer-events-none`}),n!==!0&&(0,z.jsxs)(`span`,{className:`hidden md:inline-block pointer-events-none`,children:[`Restart `,(0,z.jsx)(`span`,{className:`hidden 2xl:inline-block`,children:a})]})]})}),(0,z.jsx)(Va,{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.`)})]})}function rp({toggledSidebar:e,toggleSidebar:t}){let n=B(),{openedEntryContents:r,openedEntry:i,isSavingFile:a,restrictPackageModification:o}=sf(),{content:s}=Uf(i?.path),c=xa(),l=n.entityType===`instance`?`Instance`:`Cluster`,u=Sf(`ShowAddDirectoryOrFileModalType`,`file`),d=Sf(`ShowAddDirectoryOrFileModalType`,`directory`),f=Sf(`ShowDownloadApplicationModal`,!0),p=Sf(`ShowRenameFileModal`,!0),m=Sf(`ShowDeleteDirectoryOrFileModal`,!0),h=Sf(`ShowRedeployApplicationModal`,!0),_=ef(`SaveFile`,!0),v=ef(`RevertChanges`,!0),y=ef(`ShowNewTableModal`,!0),b=s===void 0||s===r;return(0,z.jsxs)(`div`,{className:`absolute top-0 right-0 left-0 backdrop-blur-sm bg-black-10 shadow-xl flex pr-4 md:pr-12`,children:[(0,z.jsxs)(g,{type:`button`,variant:`ghost`,className:(e?`toggled-sidebar-toggler`:`hidden-sidebar-toggler`)+` inline-flex text-sm md:hidden focus:outline-none focus:ring-2 text-foreground hover:text-muted-foreground focus:ring-gray-600 rounded-none`,onClick:t,children:[(0,z.jsxs)(`span`,{className:`sr-only`,children:[e?`Close`:`Open`,` sidebar`]}),e?(0,z.jsx)(Pt,{}):(0,z.jsx)(Ht,{})]}),i&&i?.path!==`newApplication`&&(0,z.jsxs)(z.Fragment,{children:[i.package&&(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(g,{variant:`ghost`,type:`button`,className:`cursor-help`,children:[(0,z.jsx)(fr,{width:16,height:16}),(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Imported applications are read-only`})]})}),(0,z.jsx)(Va,{children:o?(0,z.jsxs)(z.Fragment,{children:[`This application is read-only, and cannot be modified.`,(0,z.jsx)(`br`,{}),`It helps govern clustering amongst your instances.`]}):(0,z.jsx)(z.Fragment,{children:`This application is read-only, and cannot be directly modified. But you can re-deploy or remove it.`})})]}),!Mf(i)&&!i.package&&c&&(0,z.jsxs)(g,{variant:`default`,className:`rounded-none`,onClick:_,disabled:b||a,title:`Save`,children:[(0,z.jsx)(Pe,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block pointer-events-none`,children:[(0,z.jsx)(`u`,{children:`S`}),`ave`]})]}),!Mf(i)&&!i.package&&c&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:p,disabled:!b||a,title:`Rename`,children:[(0,z.jsx)(Ve,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block pointer-events-none`,children:[(0,z.jsx)(`u`,{children:`R`}),`ename`]})]}),!i.package&&c&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:u,title:`New File`,children:[(0,z.jsx)(Et,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`pointer-events-none hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`N`}),`ew`,(0,z.jsx)(`span`,{className:`hidden lg:inline-block`,children:`\xA0File`})]})]}),!i.package&&c&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:d,title:`Add Directory`,children:[(0,z.jsx)(on,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`pointer-events-none hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`A`}),`dd`,(0,z.jsx)(`span`,{className:`hidden xl:inline-block`,children:`\xA0Directory`})]})]}),i.path.endsWith(`.graphql`)&&c&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:y,title:`New Table`,children:[(0,z.jsx)(Rt,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block pointer-events-none`,children:[(0,z.jsx)(`span`,{className:`hidden xl:inline-block`,children:`New`}),` Table`]})]}),i.project&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:f,title:`Download Application`,children:[(0,z.jsx)(pe,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block pointer-events-none`,children:[`Download`,(0,z.jsx)(`span`,{className:`hidden 2xl:inline-block`,children:`\xA0Application`})]})]}),!!i.package&&c&&!o&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:h,title:`Redeploy Package`,children:[(0,z.jsx)(Le,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`pointer-events-none`,children:[`Redeploy `,(0,z.jsx)(`u`,{children:`P`}),`ackage`]})]}),(0,z.jsx)(`div`,{className:`grow`}),c&&(0,z.jsx)(np,{targetNoun:l,instanceClient:n.instanceClient,operation:`restart_service`,variant:`ghost`,className:`rounded-none mx-0 md:mx-0`,disabled:!b||a}),!Mf(i)&&!i.package&&c&&(0,z.jsxs)(g,{type:`button`,variant:`ghost`,className:`rounded-none`,onClick:v,disabled:b||a,title:`Revert Changes`,children:[(0,z.jsx)(kr,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden xl:inline-block pointer-events-none`,children:[`Revert `,(0,z.jsx)(`span`,{className:`hidden 2xl:inline-block`,children:`Changes`})]})]}),!o&&c&&(0,z.jsxs)(g,{type:`button`,variant:`destructiveGhost`,className:`rounded-none`,onClick:m,title:`Delete`,children:[(0,z.jsx)(cn,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden xl:inline-block pointer-events-none`,children:[(0,z.jsx)(`u`,{children:`D`}),`elete`]})]})]})]})}function ip(e){return(0,R.useCallback)((t,n,r)=>{if(n!==`href`)return t;if(t.startsWith(`http`))return r.properties.target=`_blank`,t;{let n=Tl().split(`?`)[0];switch(t){case`./apis`:case`./config`:case`./config/roles`:case`./config/users`:case`./databases`:case`./logs`:case`./status`:return`${n}/${t.slice(2)}`}return`${n}?open=${e}/${t.slice(t.startsWith(`../`)?3:2)}`}},[e])}function ap({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,z.jsx)(bt,{"data-slot":`separator-root`,decorative:n,orientation:t,className:d(`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})}function op({className:e,...t}){return(0,z.jsx)(Gt,{"data-slot":`tabs`,className:d(`flex flex-col gap-2`,e),...t})}function sp({className:e,...t}){return(0,z.jsx)(Yt,{"data-slot":`tabs-list`,className:d(`text-muted-foreground inline-flex w-fit items-center justify-center rounded-full bg-muted dark:bg-gray-950 p-1`,e),...t})}function cp({className:e,...t}){return(0,z.jsx)(Zt,{"data-slot":`tabs-trigger`,className:d(`data-[state=active]:text-foreground data-[state=active]:bg-card dark:data-[state=active]:bg-gray-600 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:outline-1 text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border rounded-full border-transparent px-2 py-1 font-medium whitespace-nowrap transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...t})}function lp({className:e,...t}){return(0,z.jsx)(Ye,{"data-slot":`tabs-content`,className:d(`flex-1 outline-none`,e),...t})}function up(e,t,n){for(let r of e)if(r[t]===n)return r}function dp(e){let{user:t}=bi(),n=sa(),{instance:r,cluster:i}=Ar({strict:!1}),a=n.instanceClient.defaults.baseURL;return(0,R.useMemo)(()=>{let n=oc(e),r=[t?.username&&` --deploymentUsername="${t?.username}"`,a&&` --deploymentURL="${a}"`].filter(Ni).join(``);return[{title:`Install or update the Harper CLI`,code:`npm install -g harper`},{title:`Create your awesome app`,code:`npm create harper ${n}${r.length?` --`:``}${r}`,note:`You will be asked some easy questions to get you started. To make deployments easy, enter your password for this cluster. It will get saved into your local .env file.`},{title:`Start local Harper instance`,code:`npm run dev`,note:`You will be prompted to configure Harper.`},{title:`Learn, make changes, grow!`,code:`cat AGENTS.md`},{title:`Deploy!`,code:`npm run deploy`,note:`Remember that .env file? It makes this deployment easy!`}]},[e,a,t?.username])}function fp({defaultApplicationName:e,formState:t,watch:n}){let r=n(`applicationName`)||e,i=dp(r),a=Ts(...i.map(e=>e.code));return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{children:`Deploy with Harper CLI`}),(0,z.jsx)(wi,{children:`Follow these steps to deploy your application using the Harper CLI`})]}),(0,z.jsxs)(Ti,{className:`space-y-6`,children:[i.map((e,t)=>(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`div`,{className:`w-6 h-6 rounded-full bg-primary text-primary-foreground flex items-center justify-center shrink-0`,children:t+1}),(0,z.jsx)(`h3`,{children:e.title})]}),(0,z.jsxs)(`div`,{className:`ml-8`,children:[(0,z.jsxs)(`div`,{className:`bg-muted dark:bg-black rounded-lg p-4 flex items-center justify-between group`,children:[(0,z.jsx)(`code`,{className:`text-sm overflow-auto pl-8 -indent-8 wrap-anywhere`,children:e.code}),(0,z.jsx)(g,{type:`button`,variant:`default`,size:`sm`,onClick:a[t],children:(0,z.jsx)(st,{className:`w-4 h-4`})})]}),e.note&&(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm mt-2`,children:e.note})]}),(0,z.jsx)(ap,{className:`bg-border`})]},e.title)),r&&(0,z.jsxs)(`div`,{className:`bg-accent rounded-lg p-4`,children:[(0,z.jsxs)(`p`,{className:`text-sm`,children:[(0,z.jsx)(`strong`,{children:`Application Name:`}),` `,r]}),(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm mt-2`,children:`Your application will be deployed with this name`})]}),(0,z.jsxs)(g,{className:`w-full`,variant:`secondary`,disabled:!t.isValid,children:[(0,z.jsx)(Ke,{className:`w-4 h-4 mr-2`}),`I Have Completed These Steps`]})]})]})}function pp({control:e,defaultApplicationName:t}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{children:`Application Name`}),(0,z.jsx)(wi,{children:`Choose a name for your new API application`})]}),(0,z.jsx)(Ti,{children:(0,z.jsxs)(`div`,{className:`space-y-2`,children:[(0,z.jsx)(U,{control:e,name:`applicationName`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoCapitalize:`words`,autoComplete:`off`,autoFocus:!0,placeholder:t,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Use lowercase letters, numbers, underscores, and hyphens`})]})})]})}var mp=se(`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 hp({className:e,variant:t,...n}){return(0,z.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:d(mp({variant:t}),e),...n})}function gp({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`alert-title`,className:d(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function _p({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`alert-description`,className:d(`text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed`,e),...t})}function vp({control:e,formState:t,isImportingApplication:n,setValue:r,watch:i}){let a=i(`contents.source`),o=(0,R.useCallback)(e=>{r(`contents.source`,e)},[r]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{children:`Import Existing Application`}),(0,z.jsx)(wi,{children:`Import from Git, NPM, or a tarball URL`})]}),(0,z.jsxs)(Ti,{className:`space-y-6`,children:[(0,z.jsxs)(op,{value:a,onValueChange:o,children:[(0,z.jsxs)(sp,{className:`grid w-full grid-cols-3`,children:[(0,z.jsxs)(cp,{value:`git`,children:[(0,z.jsx)(ir,{className:`w-4 h-4 mr-2`}),`Git`]}),(0,z.jsxs)(cp,{value:`npm`,children:[(0,z.jsx)(Le,{className:`w-4 h-4 mr-2`}),`NPM`]}),(0,z.jsxs)(cp,{value:`tarball`,children:[(0,z.jsx)(er,{className:`w-4 h-4 mr-2`}),`Tarball`]})]}),(0,z.jsx)(lp,{value:`git`,className:`space-y-4 mt-4`,children:(0,z.jsx)(`div`,{className:`space-y-2`,children:(0,z.jsx)(U,{control:e,name:`contents.ref`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Git Repository URL`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})})})}),(0,z.jsx)(lp,{value:`npm`,className:`space-y-4 mt-4`,children:(0,z.jsx)(`div`,{className:`space-y-2`,children:(0,z.jsx)(U,{control:e,name:`contents.ref`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`NPM Package Reference`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})})})}),(0,z.jsx)(lp,{value:`tarball`,className:`space-y-4 mt-4`,children:(0,z.jsx)(`div`,{className:`space-y-2`,children:(0,z.jsx)(U,{control:e,name:`contents.ref`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Tarball URL`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`url`,autoCapitalize:`none`,autoComplete:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})})})})]}),(0,z.jsx)(U,{control:e,name:`contents.installCommand`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Install Command`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoCapitalize:`none`,autoComplete:`off`,placeholder:`npm install`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(G,{children:`Authorization`}),(0,z.jsx)(U,{control:e,name:`contents.requiresAuth`,render:({field:e})=>(0,z.jsxs)(op,{className:`w-full pt-2 pb-0 mb-0`,value:String(e.value),onValueChange:t=>e.onChange(t===`true`),children:[(0,z.jsxs)(sp,{className:`grid w-full grid-cols-2`,children:[(0,z.jsx)(cp,{value:`false`,children:`Public Access`}),(0,z.jsx)(cp,{value:`true`,children:`Requires Auth`})]}),(0,z.jsx)(lp,{value:`false`,className:`space-y-4 mt-4`}),(0,z.jsx)(lp,{value:`true`,className:`space-y-4 mt-4`,children:(0,z.jsx)(hp,{children:(0,z.jsx)(_p,{children:(0,z.jsxs)(`span`,{children:[`You can manage your certificates over in`,` `,(0,z.jsx)(k,{to:`config`,className:`underline`,children:`Config`}),` `,`>`,` `,(0,z.jsx)(k,{to:`config/ssh-keys`,className:`underline`,children:`SSH Keys`}),`. This enables SSH based auth for private repos, i.e. following the pattern of`,` `,(0,z.jsx)(`a`,{href:`https://github.com/HarperFast/Studio`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`git@github.com:HarperFast/studio.git`}),`. If you have more than one key, make sure to utilize unique hostnames!`]})})})})]})}),(0,z.jsx)(ap,{className:`bg-border`}),(0,z.jsxs)(g,{className:`w-full`,disabled:!t.isValid||n,children:[(0,z.jsx)(nt,{className:`w-4 h-4 mr-2`}),`Import Application`]})]})]})}var yp=[{id:`vanilla-js`,name:`Web + REST ORM`,description:`Define your entities in schema.graphql, add your HTML/CSS/JS in web, and you're cooking!`,tags:[`Harper`,`ORM`,`REST`,`GraphQL`],npm:`@harperfast/template-vanilla-studio`,githubUrl:`https://github.com/HarperFast/create-harper/tree/main/template-vanilla`},{id:`vanilla-ts`,name:`TypeScript`,description:`The same Web + REST ORM from the first template, but with TypeScript sprinkled in.`,tags:[`Harper`,`TypeScript`,`GraphQL`],npm:`@harperfast/template-vanilla-ts-studio`,githubUrl:`https://github.com/HarperFast/create-harper/tree/main/template-vanilla-ts`}],bp=D({type:ie(`template`),id:w(`Please select a template.`)}),xp={type:`template`,id:yp[0].id},Sp=D({type:ie(`import`),source:re([`git`,`npm`,`tarball`]),ref:w().nonempty(`Please enter a URL or package reference.`),installCommand:w(),requiresAuth:E()}),Cp={type:`import`,source:`git`,ref:``,requiresAuth:!1,installCommand:``},wp=D({type:ie(`cli`)}),Tp={type:`cli`},Ep=D({applicationName:w().trim().max(75,{error:`Application name cannot be longer than 75 characters.`}).regex(/^[a-zA-Z0-9-_]*$/,{error:`Can only contain letters, numbers, dashes and underscores.`}),contents:C(`type`,[bp,Sp,wp])});function Dp({className:e,...t}){return(0,z.jsx)(ur,{"data-slot":`radio-group`,className:d(`grid gap-3`,e),...t})}function Op({className:e,...t}){return(0,z.jsx)(Qe,{"data-slot":`radio-group-item`,className:d(`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,z.jsx)(Re,{"data-slot":`radio-group-indicator`,className:`relative flex items-center justify-center`,children:(0,z.jsx)(ze,{className:`fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2`})})})}function kp(e){e.stopPropagation()}function Ap({control:e,formState:t,isCreatingFromTemplate:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{children:`Choose a Template`}),(0,z.jsx)(wi,{children:`Start with a pre-configured template for common use cases`})]}),(0,z.jsxs)(Ti,{children:[(0,z.jsx)(U,{control:e,name:`contents.id`,render:({field:e})=>(0,z.jsx)(Dp,{value:e.value,onValueChange:e.onChange,children:(0,z.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:yp.map(e=>(0,z.jsxs)(`div`,{className:`relative`,children:[(0,z.jsx)(Op,{value:e.id,id:e.id,className:`peer sr-only`}),(0,z.jsxs)(Ya,{htmlFor:e.id,className:`flex flex-col gap-3 p-4 border-2 rounded-lg cursor-pointer hover:bg-accent peer-data-[state=checked]:border-green peer-data-[state=checked]:bg-primary/5`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`div`,{className:`mb-1 flex items-center gap-2 justify-between`,children:[(0,z.jsx)(`div`,{children:e.name}),(0,z.jsx)(`a`,{href:e.githubUrl,target:`_blank`,rel:`noopener noreferrer`,onClick:kp,className:`opacity-70 hover:opacity-100 transition-colors -m-4 p-4`,children:(0,z.jsx)(`img`,{src:`/github/GitHub_Lockup_White.svg`,alt:`GitHub`,className:`h-4`})})]}),(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:e.description})]}),(0,z.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.tags.map(e=>(0,z.jsx)(ds,{variant:`outline`,children:e},e))})]})]},e.id))})})}),(0,z.jsx)(ap,{className:`my-6 bg-border`}),(0,z.jsxs)(g,{className:`w-full`,disabled:!t.isValid||n,children:[(0,z.jsx)(nt,{className:`w-4 h-4 mr-2`}),`Create from Template`]})]})]})}function jp(e){let t=sa(),{reloadRootEntries:n,setFocusedItem:r,setExpandedItems:i,setSelectedItems:a}=sf(),o=(0,R.useCallback)(({project:o})=>{let s=L.loading(`Looking for application...`,{description:`This may take a bit.`,duration:3e5});e(!0),n().then(n=>{let c=n?.entries||[];for(let n of c)if(n.name.toLowerCase()===o.toLowerCase()){r(n.name),a([n.name]),i([n.name]),e(!1),L.success(`Imported successfully`,{description:`${o} is now available in your ${t.entityType}!`,id:s,duration:5e3});return}L.warning(`Deployment Not Detected`,{description:`I searched for ${o} but did not find it in the ${t.entityType} yet. Do you see it on the left? Did you use a different name, perhaps?`,id:s,duration:1e4}),e(!1)})},[t,e,n,r,i,a]);return(0,R.useMemo)(()=>({checkCLI:o}),[o])}async function Mp({instanceClient:e,project:t,template:n,entityType:r}){let{data:i}=await e.post(`/`,{operation:`add_component`,project:t,template:n,replicated:r===`cluster`},{timeout:3e5});return i}function Np(){return M({mutationFn:Mp})}function Pp(e){let{mutate:t,isPending:n}=Np(),r=sa(),{reloadRootEntries:i,setFocusedItem:a,setExpandedItems:o,setSelectedItems:s}=sf(),c=(0,R.useCallback)(({contents:n,project:c})=>{let l=L.loading(`Creating from template...`,{description:`This may take a bit.`,duration:3e5}),u=up(yp,`id`,n.id);if(!u)return L.error(`Template Not Found`,{description:`Please select a template`,duration:1e4,id:l});t({project:c,template:u.npm||u.githubUrl,...r},{onSuccess:()=>{L.success(`Created successfully!`,{description:`${c} will be available once you restart your ${r.entityType}!`,id:l,duration:5e3}),e(!0),i(),a(c),s([c]),o([c])}})},[t,r,e,i,a,o,s]);return(0,R.useMemo)(()=>({isCreatingFromTemplate:n,createFromTemplate:c}),[n,c])}async function Fp({applicationName:e,applicationUrl:t,installCommand:n,entityType:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`deploy_component`,package:t,project:e,replicated:r===`cluster`,install_command:n||void 0,restart:`rolling`},{timeout:3e5});return a}function Ip(){return M({mutationFn:Fp})}function Lp(e){let{mutate:t,isPending:n}=Ip(),r=xt(),i=B(),{reloadRootEntries:a,setFocusedItem:o,setExpandedItems:s,setSelectedItems:c}=sf(),l=(0,R.useCallback)(({contents:n,project:l})=>{let u=L.loading(`Importing application...`,{description:`This may take a bit.`,duration:3e5});t({applicationName:l,applicationUrl:n.ref,installCommand:n.installCommand,...i},{onSuccess:()=>{L.success(`Imported successfully`,{description:`${l} will be available once you restart your ${i.entityType}!`,id:u,duration:5e3}),e(!0),r.invalidateQueries({queryKey:[i.entityId]}),a(),o(l),c([l]),s([l])},onError:()=>{L.dismiss(u)}})},[t,r,i,e,a,o,s,c]);return(0,R.useMemo)(()=>({isImportingApplication:n,importApplication:l}),[n,l])}function Rp(){let{rootEntries:e}=sf(),{organization:t,instance:n,cluster:r}=Ar({strict:!1}),i=(0,R.useMemo)(()=>{let i=oc(r?.name||n?.name||t?.name||``);if(i===``)return i;let a=i,o=1;for(;up(e,`name`,a);)o+=1,a=`${i}-${o}`;return a},[e,r,n,t]),a=(0,R.useCallback)((t,n)=>{!t.applicationName&&!i?n.addIssue({code:`custom`,path:[`applicationName`],message:`Please name your application!`}):e.find(e=>e.name===t.applicationName)&&n.addIssue({code:`custom`,path:[`applicationName`],message:`That application name is already in use!`})},[i,e]),o=I({resolver:j(Ep.superRefine(a)),defaultValues:{applicationName:``,contents:{...Cp,...Tp,...xp}}}),{watch:s,handleSubmit:c,control:l,setValue:u,formState:d,trigger:f}=o,[p,m]=(0,R.useState)(!1),{isCreatingFromTemplate:h,createFromTemplate:g}=Pp(m),{isImportingApplication:_,importApplication:v}=Lp(m),{checkCLI:y}=jp(m),b=(0,R.useCallback)(e=>{let t=e.applicationName||i;switch(e.contents.type){case`template`:g({contents:e.contents,project:t});break;case`import`:v({contents:e.contents,project:t});break;case`cli`:y({contents:e.contents,project:t});break}},[y,g,i,v]),x=s(`contents.type`),S=(0,R.useCallback)(e=>{let t=d.isValid;u(`contents.type`,e),t||f()},[u,d,f]);return(0,z.jsxs)(`div`,{className:`mx-auto max-w-4xl mt-6`,children:[(0,z.jsxs)(`div`,{className:`text-center`,children:[(0,z.jsx)(`h1`,{className:`text-4xl pt-4 pb-2`,children:`Bootstrap New API Application`}),(0,z.jsx)(`p`,{className:`text-muted-foreground`,children:`Create a new application from templates, import existing code, or deploy with Harper CLI`})]}),(0,z.jsx)(V,{...o,children:(0,z.jsx)(`form`,{id:`instance-add-application-form`,name:`instance-add-application-form`,onSubmit:c(b),className:`flex flex-col gap-4 p-4`,children:(0,z.jsxs)(`fieldset`,{disabled:_||h||p,children:[(0,z.jsx)(xi,{className:`dark:bg-black-dark`,children:(0,z.jsx)(pp,{control:l,defaultApplicationName:i})}),(0,z.jsx)(xi,{className:`dark:bg-black-dark mt-4 pt-0`,children:(0,z.jsxs)(op,{defaultValue:x,onValueChange:S,children:[(0,z.jsxs)(sp,{className:`w-full grid grid-cols-3 mt-0`,children:[(0,z.jsxs)(cp,{value:`template`,children:[(0,z.jsx)(_n,{}),(0,z.jsx)(`span`,{className:`hidden sm:inline-block`,children:`Templates`})]}),(0,z.jsxs)(cp,{value:`import`,children:[(0,z.jsx)(On,{}),`Import`]}),(0,z.jsxs)(cp,{value:`cli`,children:[(0,z.jsx)(Se,{}),(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Harper`}),` CLI`]})]}),(0,z.jsx)(`div`,{className:`mx-6 mt-1`,children:(0,z.jsx)(ap,{className:`bg-border`})}),(0,z.jsx)(lp,{value:`template`,className:`space-y-4`,children:(0,z.jsx)(Ap,{control:l,formState:d,isCreatingFromTemplate:h})}),(0,z.jsx)(lp,{value:`import`,className:`space-y-4`,children:(0,z.jsx)(vp,{control:l,formState:d,isImportingApplication:_,setValue:u,watch:s})}),(0,z.jsx)(lp,{value:`cli`,className:`space-y-4`,children:(0,z.jsx)(fp,{defaultApplicationName:i,formState:d,watch:s})})]})})]})})})]})}var zp={js:`javascript`,cjs:`javascript`,jsx:`javascript`,yaml:`yaml`,ts:`typescript`,tsx:`typescript`,json:`json`,md:`markdown`,html:`html`,css:`css`,graphql:`graphql`,mjs:`javascript`};function Bp(){let e=B(),{openedEntryContents:t,openedEntry:n,restrictPackageModification:r,isSavingFile:i,saveFile:a}=sf(),{content:o,setContent:s}=Uf(!!n&&!n.package&&n.path),c=(0,R.useCallback)(e=>{s(e===t?void 0:e)},[t,s]),l=iu(),u=xa(),[d,f]=(0,R.useState)(null),p=zp[lf(n?.path)]||`plaintext`,m=(0,R.useCallback)((e,t)=>{f([e,t])},[]);if((0,R.useEffect)(()=>{if(d&&u&&!n?.package&&!r)return Ef(d)},[d,u,n,r]),Zd(`SaveFile`,()=>{n&&!i&&o!==void 0&&a({...e,file:n.path.split(`/`).slice(1).join(`/`),payload:o,project:n.project},n.path)},[n,e,o]),Zd(`RevertChanges`,()=>{if(t!==void 0&&d){let[e]=d;c(void 0),e.setValue(t)}},[t,d]),!n)return null;let h=i||!!n.package||!u;return(0,z.jsx)(Mn,{className:`w-full min-h-full h-80`,language:p,theme:l,value:o??t,onMount:m,onChange:h?void 0:c,options:{automaticLayout:!0,minimap:{enabled:!1},readOnly:h,padding:{top:48}}})}function Vp(){let{openedEntry:e,openedEntryContents:t}=sf(),n=ip(e?.project);return e?.path===`newApplication`?(0,z.jsx)(Rp,{}):Mf(e)?(0,z.jsx)(`div`,{className:`directoryReadMe max-w-3xl`,children:(0,z.jsx)(de,{urlTransform:n,remarkPlugins:[hi],components:{code:Up},children:t})}):uf(e?.name)?(0,z.jsx)(`div`,{className:`mt-9 absolute top-0 right-0 bottom-0 left-0`,children:(0,z.jsx)(`img`,{className:`w-full h-full object-contain p-20`,alt:e?.name,src:`data:image/${lf(e?.name)};base64,${t}`})}):(0,z.jsx)(Bp,{})}function Hp({chart:e}){let t=(0,R.useRef)(null),[n,r]=(0,R.useState)(``),[i,a]=(0,R.useState)(null);return(0,R.useEffect)(()=>{let t=`mermaid-${Math.random().toString(36).slice(2,9)}`,n=!1;return Yr(async()=>{let{default:e}=await import(`./vendor-viz-morXXTZA.js`).then(e=>e.t);return{default:e}},__vite__mapDeps([13,1,2,4,3,5,6,7,8,9,10])).then(({default:i})=>{n||(i.initialize({startOnLoad:!1,theme:`default`}),i.render(t,e).then(({svg:e})=>{n||(r(e),a(null))}).catch(e=>{n||(console.error(`Mermaid render error:`,e),a(String(e)))}))}),()=>{n=!0}},[e]),i?(0,z.jsx)(`pre`,{className:`text-red-500 bg-red-50 p-3 rounded text-sm overflow-auto`,children:(0,z.jsx)(`code`,{children:e})}):(0,z.jsx)(`div`,{ref:t,className:`my-4 flex justify-center overflow-auto`,dangerouslySetInnerHTML:{__html:n}})}function Up({inline:e,className:t,children:n}){let r=String(n??``).replace(/\n$/,``),[i]=Ts(r),a=t?.replace(`language-`,``);return e||!r.includes(`
18
- `)?(0,z.jsx)(`code`,{className:t,children:n}):a===`mermaid`?(0,z.jsx)(Hp,{chart:r}):(0,z.jsxs)(`code`,{className:`relative`,children:[(0,z.jsx)(g,{className:`absolute top-2 right-2`,type:`button`,variant:`default`,size:`sm`,onClick:i,children:(0,z.jsx)(st,{className:`w-4 h-4`})}),r]})}function Wp(e){return new URL(e.match(/^https?:\/\//i)?e:`https://${e}`).toString()}function Gp(e){if(e?.domains){for(let t of e.domains)if(t.domain)return Wp(t.domain)}return e?.fqdn?Wp(e.fqdn):null}function Kp(){let{clusterId:e,instanceId:t}=N({strict:!1}),n=oa(),{data:r}=A(ro(e));return e&&c.checkForFabricConnect(e)||t&&c.checkForFabricConnect(t)||r&&!t?Gp(r):n.defaults.baseURL?n.defaults.baseURL.replace(/:9925\/?/,``):null}function qp(e,t,n,r=[]){let i=[];for(let a of e){let e=n(a,r);i.push(e);let o=a,s=o[t];s&&(e[t]=qp(s,t,n,[...r,o]))}return i}function Jp(e){let t=new Set;return{rootEntries:qp(e||[],`entries`,(e,n)=>{let r=Mf(e)&&e.entries.find(e=>e.name.toLowerCase()===`readme.md`),i=[...n.map(e=>e.name),e.name].join(`/`);return t.add(i),{name:e.name,path:i,project:(n[0]||e)?.name,package:(n[0]||e)?.package,overviewEntry:r&&!Mf(r)&&{name:r.name,path:[...n.map(e=>e.name),e.name,r.name].join(`/`),project:(n[0]||e)?.name,package:(n[0]||e)?.package}||void 0}}),pathsRegistry:t}}function Yp(e,t,n){let r=t,i=t.replace(/:9925/,``).replace(/\/?$/,``);return r&&(e=e.replaceAll(/https?:\/\/localhost:9926/g,i)),n.project&&(e=e.replaceAll(`Your New Harper Fabric App`,n.project).replaceAll(`your-project-name-here`,n.project)),e}async function Xp({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_components`});return t}function Zp(e){return P({queryKey:[e.entityId,`get_components`],queryFn:()=>Xp(e),retry:!1,enabled:e.enabled!==!1})}function Qp({children:e}){let t=De(),[n,r]=(0,R.useState)(void 0),[i,a]=(0,R.useState)(void 0),{setContent:o}=Uf(n?.path),s=B(),c=Kp(),l=xt(),{open:u}=Ce({strict:!1}),{data:d}=A(Zp(s)),f=(0,R.useMemo)(()=>d?Jp(d.entries):{rootEntries:[],pathsRegistry:new Map,allEntries:new Map},[d]),p=(0,R.useCallback)(async()=>l.fetchQuery({queryKey:[s.entityId,`get_components`],networkMode:`online`}),[l,s]);Zd(`ReloadApplicationRootEntries`,p,[p]);let m=(0,R.useCallback)(e=>f.pathsRegistry.has(e),[f.pathsRegistry]),h=f.rootEntries.filter(e=>!e.package&&e.path!==`newApplication`).map(e=>e.name),g=h[0],_=h.slice(0,1);!g&&d&&(g=Ff,_=[Ff]);let[v,y]=rf(`FileFocused/${s.entityId}`,g),[b,x]=rf(`FolderOpened/${s.entityId}`,h),[S,C]=rf(`FileSelected/${s.entityId}`,_);(0,R.useEffect)(()=>{if(u?.length){let e=u.split(`?`),n=e[0],r=e[1],i=n.split(`/`);if(r){let e=r.split(`=`);bf(e[0],e[1]===`true`?!0:e[1]===`false`?!1:e[1])}x(e=>{let t=new Set(e);for(let e=1;e<i.length;e++)t.add(i.slice(0,e).join(`/`));return[...t]}),C([n]),y(n),t({search:void 0})}},[t,u,x,y,C]);let ee=n&&(Mf(n)?n.overviewEntry?.path:n.path)||``,w=n&&(Mf(n)?n.overviewEntry?.project:n.project)||``,te=n&&(Mf(n)?!!n.overviewEntry?.path:!1)||!1,ne=pf({file:ee?.split(`/`).slice(1).join(`/`),project:w,...s}),{data:T}=A(ff({file:ee?.split(`/`).slice(1).join(`/`),project:w,...s}));(0,R.useEffect)(function(){let e=T?.project+`/`+T?.file,t=T?.message;e===ee&&t!==void 0?(te&&c&&T&&(t=Yp(t,c,T)),a(t)):a(void 0)},[T,ee,te,s]);let{mutate:E,isPending:re}=hf(),D=(0,R.useCallback)((e,t)=>{E(e,{onSuccess:()=>{n?.path===t&&e.payload!==void 0&&(o(void 0),a(e.payload||void 0),l.setQueryData(ne,{...T,message:e.payload}))},onError:e=>{console.error(`Error saving file:`,e)}})},[ne,T,n?.path,l,E,o]),ie=(0,R.useMemo)(()=>n?n.package?.includes(`github.com/HarperDB/status-check-fabric`)||n.package?.includes(`github.com/HarperFast/status-check-fabric`)||n.path===`importedApplications`||n.path===`newApplication`:!1,[n]),ae=(0,R.useMemo)(()=>({rootEntries:f.rootEntries,reloadRootEntries:p,entryExists:m,focusedItem:v,setFocusedItem:y,expandedItems:b,setExpandedItems:x,selectedItems:S,setSelectedItems:C,restrictPackageModification:ie,openedEntry:n,setOpenedEntry:r,openedEntryContents:i,setOpenedEntryContents:a,saveFile:D,isSavingFile:re}),[f.rootEntries,p,m,v,y,b,x,S,C,ie,n,r,i,a,D,re]);return(0,z.jsx)(of.Provider,{value:ae,children:e})}function $p(e){let t=e;if(t?.focus)em(t);else{let t=e;t?.target?.focus&&em(t.target)}}function em(e){p(1).then(()=>{e.focus?.()})}function tm(){let{value:e,trigger:t}=yf(`ShowAddDirectoryOrFileModalType`,!1),n=(0,R.useCallback)(()=>{bf(`ShowAddDirectoryOrFileModalType`,!1),$p(t)},[t]),{openedEntry:r,entryExists:i,reloadRootEntries:a,setFocusedItem:o,setSelectedItems:s,setExpandedItems:c}=sf(),l=B(),{mutate:u,isPending:d}=hf(),f=I({resolver:j(oe.object({name:oe.string().nonempty({error:`Please enter a valid name.`}).regex(/^[a-zA-Z0-9_\- .]*$/,{error:`Names can only contain letters, numbers, underscores, hyphens, periods, and spaces.`}).max(50,{error:`Names cannot be longer than 50 characters.`}).trim()})),defaultValues:{name:``}}),p=(0,R.useCallback)(t=>{if(!r||!e)return;let d=r.path.split(`/`),p=(Mf(r)?d.slice(1):d.slice(1,-1)).join(`/`),m=p?`${p}/${t.name}`:t.name;if(i(r.project+`/`+m)){L.error(`${Ua(e)} already exists!`,{description:m});return}u({file:m,project:r.project,payload:e===`directory`?void 0:``,...l},{onSuccess:()=>{a(),n(),f.reset();let i=[r.project,p,t.name].filter(Ni).join(`/`);o(i),s([i]),e===`directory`&&c(e=>[...e,i])}})},[u,f,n,l,r,i,a,c,o,s,e]),m=(0,R.useCallback)(()=>{n(),f.reset()},[n,f]);return(0,z.jsx)(J,{onOpenChange:n,open:!!e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:(0,z.jsx)(V,{...f,children:(0,z.jsxs)(`form`,{id:`instance-add-app-${e}-form`,name:`instance-add-app-${e}-form`,onSubmit:f.handleSubmit(p),children:[(0,z.jsxs)(cs,{children:[(0,z.jsxs)(Z,{children:[`Add `,e]}),(0,z.jsxs)(ls,{children:[`Enter the name of the `,e,` you want to add`,e===`file`?`, don't forget the extension`:``,`!`]})]}),(0,z.jsx)(U,{control:f.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:d,type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`rounded-full`,onClick:m,children:`Cancel`}),(0,z.jsxs)(g,{variant:`positiveOutline`,type:`submit`,className:`rounded-full`,disabled:d,children:[(0,z.jsx)(Rt,{}),` Add `,e]})]})})]})})})})}function nm(){let{value:e,trigger:t}=yf(`ShowDeleteDirectoryOrFileModal`,!1),n=B(),{openedEntry:r,reloadRootEntries:i,setFocusedItem:a,setSelectedItems:o,selectedItems:s}=sf(),c=s.length>1,l=Mf(r),d=l&&r.path===r.project,f=!!r?.package,p=f?`Remove`:`Delete`,m=f?`Imported Application`:d?`Application`:l?`Directory`:`File`,h=(0,R.useCallback)(()=>{bf(`ShowDeleteDirectoryOrFileModal`,!1),$p(t)},[t]),_=(0,R.useCallback)(async()=>{h();let e=[],t=0,r=!1,c={label:`Cancel`,onClick:()=>{r=!0}},l={label:`OK`,onClick:()=>void 0},d=`deleting-files`;for(let i of s.reverse()){e=i.split(`/`);let a=e[0],o=e.length>1?e.slice(1).join(`/`):void 0;if(L.loading(`${p} in progress...`,{id:d,description:`${t} of ${u(s.length,`item`,`items`)}`,action:c}),await cf({file:o,project:a,...n}),r)break;t+=1}if(r?L.warning(`${p} canceled!`,{id:d,description:``,action:l}):L.success(`${p} completed!`,{id:d,description:``,action:l}),e.length){let t=e.slice(0,-1).join(`/`);a(t||void 0),o(t?[t]:[]),i()}},[p,h,n,i,s,a,o]),v=(0,R.useCallback)(e=>{e.preventDefault(),_()},[_]);return(0,z.jsx)(J,{onOpenChange:h,open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsxs)(Z,{children:[p,` `,m]}),(0,z.jsxs)(ls,{children:[`Are you sure you want to `,p.toLowerCase(),` `,c?`these ${s.length} items`:`this ${m.toLowerCase()}`,`?`]}),!f&&(0,z.jsx)(ls,{className:`whitespace-pre`,children:c?s.join(`
19
- `):r?.path})]}),(0,z.jsxs)(`div`,{className:`flex w-full gap-4`,children:[(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`w-full rounded-full`,onClick:h,children:`Cancel`}),(0,z.jsxs)(g,{variant:`destructiveOutline`,type:`button`,className:`w-full rounded-full`,autoFocus:!0,onClick:v,children:[(0,z.jsx)(cn,{}),` `,p,` `,c?`items`:m]})]})]})})}async function rm({packageName:e,project:t,skipNodeModules:n,skipSymlinks:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`package_component`,package:e,project:t,skip_node_modules:n,skip_symlinks:r},{timeout:3e5});return a}function im(){return M({mutationFn:rm})}function am(){let{value:e,trigger:t}=yf(`ShowDownloadApplicationModal`,!1),n=B(),{openedEntry:r}=sf(),{mutate:i,isPending:a,isSuccess:o}=im(),s=o?`Downloaded`:a?`Downloading`:`Download`,[c,l]=(0,R.useState)(!1),u=(0,R.useCallback)(e=>{l(e.target.checked)},[]),d=(0,R.useCallback)(()=>{bf(`ShowDownloadApplicationModal`,!1),$p(t)},[t]),f=(0,R.useCallback)(e=>{if(e.preventDefault(),!r)return;d();let t=L.loading(`Packaging...`);i({packageName:r.package,project:r.project,skipNodeModules:!c,...n},{onSuccess:e=>{L.success(`Download ready!`,{id:t});let n=document.createElement(`a`);n.setAttribute(`class`,`invisible absolute top-0`);let i=Uint8Array.from(atob(e.payload),e=>e.charCodeAt(0)),a=new Blob([i],{type:`application/gzip`});n.href=URL.createObjectURL(a),n.download=`${r.project}.gz`,document.body.appendChild(n),n.click(),document.body.removeChild(n)}})},[r,i,c,n,d]);return(0,z.jsx)(J,{onOpenChange:d,open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Download Application`}),(0,z.jsxs)(ls,{children:[`This will package up the contents of `,(0,z.jsx)(`strong`,{children:r?.project}),` into a gzipped file.`]})]}),(0,z.jsxs)(Ya,{className:`flex`,children:[(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,disabled:a,checked:c,onChange:u}),(0,z.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Include Node Modules`})]}),(0,z.jsxs)(`div`,{className:`flex w-full gap-4`,children:[(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`w-full rounded-full`,onClick:d,children:`Cancel`}),(0,z.jsxs)(g,{variant:`positive`,type:`button`,className:`w-full rounded-full`,disabled:a,autoFocus:!0,onClick:f,children:[(0,z.jsx)(pe,{}),` `,s,a?`...`:``]})]})]})})}function om(e=!1){let[t,n]=(0,R.useState)(e),r=(0,R.useCallback)(e=>{e?.preventDefault?.(),n(e=>!e)},[]),i=(0,R.useCallback)(e=>{e?.preventDefault?.(),n(!0)},[]),a=(0,R.useCallback)(e=>{e?.preventDefault?.(),n(!1)},[]);return(0,R.useMemo)(()=>({toggled:t,setToggled:n,toggle:r,toggleOn:i,toggleOff:a}),[r,n,a,i,t])}function sm({field:e}){let{toggled:t,toggle:n}=om(!1);return(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsxs)(G,{onClick:n,className:x(`flex items-center gap-2`,t?``:`text-muted-foreground italic`),children:[t?(0,z.jsx)(pn,{}):(0,z.jsx)(Un,{}),` Optional Database Name`]}),(0,z.jsx)(Gc,{className:t?``:`hidden`,children:`"data" is the default recommended name`}),(0,z.jsx)(H,{className:t?``:`hidden`,children:(0,z.jsx)(q,{type:`text`,className:`my-1`,...e})}),(0,z.jsx)(K,{})]})}var cm=function(e){return e.Any=`Any`,e.BigInt=`BigInt`,e.Blob=`Blob`,e.Boolean=`Boolean`,e.Bytes=`Bytes`,e.Date=`Date`,e.Float=`Float`,e.ID=`ID`,e.Int=`Int`,e.Long=`Long`,e.String=`String`,e}({}),lm=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,um=w().regex(lm,{error:`Database name cannot include backticks or forward slashes.`}).max(75,{error:`Database name cannot be longer than 75 characters.`}),dm=w().nonempty({error:`Field name is required.`}).regex(lm,{error:`Field name cannot include backticks or forward slashes.`}).max(250,{error:`Field name cannot be longer than 250 characters.`}),fm=w().nonempty({error:`Table name is required.`}).regex(lm,{error:`Table name cannot include backticks or forward slashes.`}).max(250,{error:`Table name cannot be longer than 250 characters.`}),pm=D({tableName:fm,databaseName:um,expiration:te().or(ie(``)),enableRest:E(),sealed:E(),tableFields:ae(D({fieldName:dm,fieldType:re(cm),primaryKey:E(),nullable:E(),indexed:E(),array:E()})).min(1,{error:`Please add at least one field.`})});function mm({field:e}){let{toggled:t,toggle:n}=om(!1),r=(0,R.useCallback)(t=>e.onChange(t.target.value?parseInt(t.target.value,10):t.target.value),[]);return(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsxs)(G,{onClick:n,className:x(`flex items-center gap-2`,t?``:`text-muted-foreground italic`),children:[t?(0,z.jsx)(pn,{}):(0,z.jsx)(Un,{}),` Optional Expiration`]}),(0,z.jsx)(Gc,{className:t?``:`hidden`,children:`After how many seconds should records be automatically evicted? Leave blank or set to 0 to skip this feature. (It can be useful for cache records.)`}),(0,z.jsx)(H,{className:t?``:`hidden`,children:(0,z.jsx)(q,{...e,type:`number`,min:0,step:1,className:`my-1`,onChange:r})}),(0,z.jsx)(K,{})]})}function hm(){let e=Sf(`ShowNewTableModal`,!1),{openedEntry:t,openedEntryContents:n}=sf(),{setContent:r}=Uf(!!t&&!t.package&&t.path),i=I({resolver:j(pm),defaultValues:{tableName:``,databaseName:`data`,expiration:``,enableRest:!0,sealed:!0,tableFields:[{fieldName:`id`,fieldType:cm.ID,primaryKey:!0,nullable:!0,indexed:!1,array:!1}]}}),{control:a,handleSubmit:o,formState:s}=i,{fields:c,append:l,remove:u}=Wt({name:`tableFields`,control:a}),d=(0,R.useCallback)(()=>{l({fieldName:``,fieldType:cm.String,primaryKey:!1,nullable:!1,indexed:!1,array:!1})},[l]),f=(0,R.useCallback)(async t=>{r(e=>{let r=e||n||``,i=[!!t.databaseName&&t.databaseName!==`data`&&`database: "${t.databaseName}"`,!!t.expiration&&t.expiration>0&&`expiration: ${t.expiration}`].filter(Ni),a=i.length?`(${i.join(`, `)})`:``,o=t.enableRest?` @export`:``,s=t.sealed?` @sealed`:``,c=t.tableFields.map(e=>{let t=e.array?`[${e.fieldType}]`:e.fieldType,n=e.nullable?``:`!`,r=e.primaryKey?` @primaryKey`:``,i=e.indexed?` @indexed`:``;return`\n\t${e.fieldName}: ${t}${n}${r}${i}`}).join(``);return`${r}\ntype ${t.tableName} @table${a}${o}${s} {${c}\n}\n`}),e()},[r,e,n]);return(0,z.jsx)(V,{...i,children:(0,z.jsxs)(`form`,{id:`instance-new-app-table-form`,name:`instance-new-app-table-form`,onSubmit:o(f),children:[(0,z.jsx)(U,{control:a,name:`tableName`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Table Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:`my-1`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`h3`,{className:`text-lg`,children:`Table Fields`}),c.map((e,t)=>(0,z.jsxs)(`div`,{className:`p-4 my-2 border rounded-lg`,children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,z.jsx)(U,{control:a,name:`tableFields.${t}.fieldName`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Field Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`tableFields.${t}.fieldType`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Type`}),(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:e.onChange,defaultValue:e.value,children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{})}),(0,z.jsxs)(Ic,{children:[(0,z.jsx)($,{value:`Any`,children:`Any`}),(0,z.jsx)($,{value:`BigInt`,children:`BigInt`}),(0,z.jsx)($,{value:`Blob`,children:`Blob`}),(0,z.jsx)($,{value:`Boolean`,children:`Boolean`}),(0,z.jsx)($,{value:`Bytes`,children:`Bytes`}),(0,z.jsx)($,{value:`Date`,children:`Date`}),(0,z.jsx)($,{value:`Float`,children:`Float`}),(0,z.jsx)($,{value:`ID`,children:`ID`}),(0,z.jsx)($,{value:`Int`,children:`Int`}),(0,z.jsx)($,{value:`Long`,children:`Long`}),(0,z.jsx)($,{value:`String`,children:`String`})]})]})}),(0,z.jsx)(K,{})]})})]}),(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center mt-2 gap-x-2 md:gap-x-4`,children:[(0,z.jsx)(U,{control:a,name:`tableFields.${t}.indexed`,render:({field:e})=>(0,z.jsxs)(W,{className:`inline-flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`flex-1 py-2.5`,children:`Indexed`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`tableFields.${t}.primaryKey`,render:({field:e})=>(0,z.jsxs)(W,{className:`inline-flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`flex-1 py-2.5`,children:`Primary Key`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`tableFields.${t}.nullable`,render:({field:e})=>(0,z.jsxs)(W,{className:`inline-flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`flex-1 py-2.5`,children:`Nullable`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`tableFields.${t}.array`,render:({field:e})=>(0,z.jsxs)(W,{className:`inline-flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`flex-1 py-2.5`,children:`Array`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsxs)(g,{type:`button`,variant:`destructiveGhost`,className:`rounded-full`,onClick:()=>u(t),children:[(0,z.jsx)(cn,{}),` Remove Field`]})]})]},e.id)),(0,z.jsxs)(g,{variant:`ghost`,type:`button`,className:`w-full`,onClick:d,children:[(0,z.jsx)(Rt,{}),` Add Another Field`]}),(0,z.jsx)(`hr`,{className:`my-6 border-gray-600`}),(0,z.jsx)(U,{control:a,name:`databaseName`,render:({field:e})=>(0,z.jsx)(sm,{field:e})}),(0,z.jsx)(U,{control:a,name:`expiration`,render:({field:e})=>(0,z.jsx)(mm,{field:e})}),(0,z.jsx)(U,{control:a,name:`enableRest`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsxs)(G,{className:`flex-1 py-2.5`,children:[`Make available as a REST endpoint (add`,` `,(0,z.jsx)(`code`,{className:`text-muted-foreground italic ml-1`,children:`@export`}),`)`]}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`sealed`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsxs)(G,{className:`flex-1 py-2.5`,children:[`Sealed (add`,(0,z.jsx)(`code`,{className:`text-muted-foreground italic ml-1`,children:`@sealed`}),` to ignore unspecified properties)`]}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(`div`,{className:`text-muted-foreground italic text-sm pb-2`,children:[`There are even more directives available to you when editing your schema.graphql by hand! You can read more about them`,` `,(0,z.jsx)(`a`,{className:`underline`,target:`_blank`,rel:`noreferrer`,href:`https://docs.harperdb.io/docs/developers/applications/defining-schemas`,children:`in our documentation`}),`.`]}),(0,z.jsxs)(`div`,{className:`flex w-full gap-4 sticky -bottom-6 pb-6 pt-4 bg-background dark:bg-black`,children:[(0,z.jsxs)(g,{type:`button`,variant:`ghost`,className:`w-full rounded-full`,onClick:e,children:[(0,z.jsx)($n,{}),` Cancel`]}),(0,z.jsxs)(g,{variant:`positive`,type:`submit`,className:`w-full rounded-full`,disabled:!s.isValid,children:[(0,z.jsx)(Rt,{}),` New Table`]})]})]})})}function gm(){let{value:e,trigger:t}=yf(`ShowNewTableModal`,!1);return(0,z.jsx)(J,{onOpenChange:(0,R.useCallback)(()=>{bf(`ShowNewTableModal`,!1),$p(t)},[t]),open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`New Table`}),(0,z.jsx)(ls,{children:`Creating a table is the basis of a data-driven application and can immediately be used as RESTful endpoints. This can also be configured as a caching table and extended and customized for specific endpoint behavior.`})]}),(0,z.jsx)(hm,{})]})})}function _m(){let{value:e,trigger:t}=yf(`ShowRedeployApplicationModal`,!1),n=xt(),r=B(),{openedEntry:i}=sf(),a=i?.package,{mutate:o,isPending:s}=Ip(),c=I({defaultValues:{applicationUrl:a,installCommand:``}}),{control:l,handleSubmit:u,reset:d}=c;(0,R.useEffect)(()=>{d({applicationUrl:a})},[d,a]);let f=(0,R.useCallback)(()=>{bf(`ShowRedeployApplicationModal`,!1),$p(t),d({applicationUrl:a})},[d,a,t]),p=(0,R.useCallback)((e,t)=>{if(!i)return;f();let a=L.loading(`Redeploying...`);o({applicationName:i.project,applicationUrl:e,installCommand:t,...r},{onSuccess:()=>{L.success(`Application ${i.project} redeployed successfully`,{id:a}),n.invalidateQueries({queryKey:[r.entityId,`get_components`],refetchType:`active`})},onError:()=>{L.dismiss(a)}})},[o,i,r,n,f]),m=({applicationUrl:e,installCommand:t})=>{e&&p(e,t)};return(0,z.jsx)(J,{onOpenChange:f,open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Redeploy Package`}),(0,z.jsx)(ls,{children:`Redeploy this package?`})]}),(0,z.jsx)(`div`,{children:(0,z.jsx)(V,{...c,children:(0,z.jsxs)(`form`,{id:`instance-redeploy-app-form`,name:`instance-redeploy-app-form`,className:`flex flex-col w-full gap-4`,onSubmit:u(m),children:[(0,z.jsx)(U,{control:l,name:`applicationUrl`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Package Reference`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`installCommand`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Install Command`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,placeholder:`npm install`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(g,{variant:`positiveOutline`,type:`submit`,className:`w-full rounded-full`,disabled:s,children:[(0,z.jsx)(wt,{}),` Redeploy Application`]}),(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`w-full rounded-full`,onClick:f,disabled:s,children:`Cancel`})]})})})]})})}function vm(e){return Af(e.split(`/`).slice(0,-1))}function ym(e,t){return Af(vm(e),t)}function bm(){let{value:e,trigger:t}=yf(`ShowRenameFileModal`,!1),n=(0,R.useCallback)(()=>{bf(`ShowRenameFileModal`,!1),$p(t)},[t]),{openedEntry:r,entryExists:i}=sf(),a=oe.object({name:oe.string().nonempty({error:`Please enter a valid name.`}).regex(/^[a-zA-Z0-9_\- .]*$/,{error:`Names can only contain letters, numbers, underscores, hyphens, periods, and spaces.`}).max(50,{error:`Names cannot be longer than 50 characters.`}).trim().refine(e=>e!==r?.name,{error:`Please enter a new name.`})}),[o,s]=(0,R.useState)(!1),c=gf(),l=I({resolver:j(a)});(0,R.useEffect)(()=>{r?.name&&l.reset({name:r?.name})},[l,r?.name]);let u=(0,R.useCallback)(async e=>{if(!r)return;let t=ym(r.path,e.name);if(i(t)){L.error(`${Mf(r)?`Directory`:`File`} already exists!`,{description:t});return}s(!0),await c([{from:r.path,to:t}]),n(),l.reset(),s(!1)},[n,i,l,r,c,s]),d=(0,R.useCallback)(()=>{n(),l.reset()},[n,l]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:(0,z.jsx)(V,{...l,children:(0,z.jsxs)(`form`,{id:`instance-rename-app-file-form`,name:`instance-rename-app-file-form`,onSubmit:l.handleSubmit(u),children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Rename File`}),(0,z.jsx)(ls,{children:r?.path})]}),(0,z.jsx)(U,{control:l.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:o,type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`rounded-full`,onClick:d,children:`Cancel`}),(0,z.jsxs)(g,{variant:`positiveOutline`,type:`submit`,className:`rounded-full`,disabled:o||!l.formState.isDirty||!l.formState.isValid,children:[(0,z.jsx)(Ve,{}),` Rename`]})]})})]})})})})}function xm(){let e=ba(),t=N({strict:!1}),{toggle:n,toggled:r}=af(`ApplicationsSidebarOpened`,!0);return e?(0,z.jsxs)(Qp,{children:[(0,z.jsx)(`aside`,{id:`file-explorer-sidebar`,className:x(`pt-[calc(--spacing(32))] w-56 fixed top-0 left-0 bottom-0 z-30`,`bg-violet-50 border-r border-violet-200 shadow shadow-black/10`,`dark:bg-grey-700 dark:border-grey-600 dark:shadow-black`,`transition-transform -translate-x-full`,r?`translate-x-0`:`md:translate-x-0`),"aria-label":`Sidebar`,children:(0,z.jsx)(Xf,{})}),(0,z.jsxs)(`div`,{className:x(`applications-content`,`overflow-y-auto overflow-x-hidden`,`fixed top-32 right-0 bottom-0 left-0`,`transition-[left]`,`md:left-56`,r&&`sm:left-56`),children:[(0,z.jsx)(Vp,{}),(0,z.jsx)(rp,{toggledSidebar:r,toggleSidebar:n})]}),(0,z.jsx)(tm,{}),(0,z.jsx)(gm,{}),(0,z.jsx)(nm,{}),(0,z.jsx)(am,{}),(0,z.jsx)(_m,{}),(0,z.jsx)(bm,{})]}):(0,z.jsx)(kt,{to:Ol(t,`databases`)})}function Sm(e){return[F({getParentRoute:()=>e,path:`/`,head:()=>({meta:[{title:`Applications — Harper Fabric`}]}),component:xm})]}async function Cm({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_certificates`});return t}function wm(e){return P({queryKey:[e.entityId,`list_certificates`],queryFn:()=>Cm(e)})}var Tm=[{header:`Certificate Name`,accessorKey:`name`,enableSorting:!0},{header:`Issuer`,accessorKey:`details.issuer`,enableSorting:!0},_r().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 Em({className:e,...t}){return(0,z.jsx)(Ft,{"data-slot":`switch`,className:d(`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-input/80 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,z.jsx)(Ut,{"data-slot":`switch-thumb`,className:d(`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`)})})}function Dm({className:e,...t}){return(0,z.jsx)(`textarea`,{"data-slot":`input`,className:d(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
16
+ Check the console for the full list.`:``)})),t(``)},[f,s,m,h,o,l,a]),{getRootProps:b,getInputProps:S}=vn({multiple:!0,maxSize:n&&c.checkForFabricConnect(n)?v:y,onDrop:_});return!s&&!f?d?(0,z.jsxs)(`div`,{className:x(`border-3 border-dashed`,`pointer-events-auto`,`cursor-copy text-sm text-center`,`p-2 w-full fixed bottom-0 h-16`,`flex flex-col items-center justify-center`,`bg-red-950 border-red-600`),children:[`You cannot upload into`,(0,z.jsx)(`br`,{}),(0,z.jsx)(`strong`,{children:g})]}):null:(0,z.jsxs)(`div`,{...b(),className:d?`fixed top-0 bottom-0 w-full pointer-events-none`:``,children:[(0,z.jsx)(`input`,{id:`dropTarget`,...S()}),(0,z.jsx)(`div`,{className:x(`border-3 border-dashed`,`pointer-events-auto`,`cursor-copy text-sm text-center`,`p-2 w-full fixed bottom-0 h-16`,`flex flex-col items-center justify-center`,d?`animate-glow-pulse bg-green-950 border-green-600`:`bg-purple-950 border-purple-600`),children:e||(f?(0,z.jsxs)(z.Fragment,{children:[`Drop to upload into`,(0,z.jsx)(`br`,{}),(0,z.jsx)(`strong`,{children:p})]}):d?(0,z.jsxs)(z.Fragment,{children:[`Drop to upload into`,(0,z.jsx)(`br`,{}),(0,z.jsx)(`strong`,{children:g})]}):(0,z.jsxs)(z.Fragment,{children:[`Drag and drop to upload`,(0,z.jsx)(`br`,{}),`or click to select files.`]}))})]})}function Uf(e,t){let n=t.relativePath??t.name,r=n.indexOf(`/`),i=r===0||r===1?n.slice(r+1):n;return e?`${e}/${i}`:i}function Wf(e){let t=e.data;return t&&`name`in t?t.name:`root`}function Gf(e){let{instanceId:t,clusterId:n}=N({strict:!1}),[r,i]=of(`EditorFileContent/${m}}/${e}`,void 0);return(0,R.useMemo)(()=>({content:e?r:void 0,setContent:i}),[e,r,i])}var Kf=`w-6 pointer-events-none `;function qf({opened:e,pkg:t}){let n=Kf+`w-4 h-4 shrink-0`;return t?e?(0,z.jsx)(Ze,{className:`${n} text-orange-600`}):(0,z.jsx)(Le,{className:`${n} text-orange-600`}):e?(0,z.jsx)(Pr,{className:`${n} text-orange-400`}):(0,z.jsx)(on,{className:`${n} text-orange-400`})}function Jf({extension:e}){let t=`w-4 h-4 mr-2 shrink-0`;switch(e){case`js`:case`jsx`:case`cjs`:return(0,z.jsx)(Oe,{className:`${t} text-yellow-500`});case`ts`:case`tsx`:return(0,z.jsx)(Oe,{className:`${t} text-blue-500`});case`yaml`:case`yml`:return(0,z.jsx)(Et,{className:t});case`css`:return(0,z.jsx)(Et,{className:`${t} text-blue-500`});case`html`:return(0,z.jsx)(Me,{className:t});case`json`:return(0,z.jsx)(we,{className:t});case`png`:case`jpg`:case`jpeg`:case`gif`:return(0,z.jsx)(At,{className:t});case`svg`:return(0,z.jsx)(be,{className:t});case`vue`:return(0,z.jsx)(Oe,{className:`${t} text-green-500`});default:return(0,z.jsx)(Et,{className:t})}}function Yf(){return(0,z.jsx)(fr,{className:Kf+`w-4 h-4 shrink-0 text-gray-400 ml-2 packageIsLocked`})}function Xf(){return(0,z.jsx)(Rt,{className:Kf+`w-4 h-4 shrink-0 text-green-500`})}function Zf({title:e,item:t,context:n}){let{content:r}=Gf(t.data?.path);return(0,z.jsxs)(z.Fragment,{children:[t.data?.path===`newApplication`?(0,z.jsx)(Xf,{}):Pf(t.data)?(0,z.jsx)(qf,{opened:n.isExpanded,pkg:!!t.data?.package||t.data.path===`importedApplications`}):(0,z.jsx)(Jf,{extension:df(e)}),(0,z.jsxs)(`span`,{className:`text-nowrap pointer-events-none`,children:[e,r?`*`:``]}),t.data?.package&&(0,z.jsx)(Yf,{})]})}function Qf(){let{rootEntries:e,openedEntry:t,setOpenedEntry:n,focusedItem:r,setFocusedItem:i,expandedItems:a,setExpandedItems:o,selectedItems:s,setSelectedItems:c}=lf(),{items:l,rootId:u}=(0,R.useMemo)(()=>Rf(e),[e]);kf(),(0,R.useEffect)(function(){if(t?.path!==r&&r){let e=l[r]?.data;e&&n(e)}},[r,l,t?.path,n]);let d=vf();return(0,z.jsxs)(`div`,{className:`h-full overflow-auto pr-1.5 pb-18`,children:[(0,z.jsx)(Zn,{canDragAndDrop:!0,canDropOnFolder:!0,canDropOnNonFolder:!1,canReorderItems:!1,canSearch:!0,canRename:!1,getItemTitle:Wf,items:l,onDrop:(0,R.useCallback)((e,t)=>{switch(t.targetType){case`item`:if(l[t.targetItem]?.data?.package)L.error(`Read-Only Imported Application`,{description:`To make changes to an application, please click the "Redeploy" button and update the reference.`});else return d(e.map(e=>({from:e.index,to:Mf(t.targetItem,jf(e.index))})));break;default:L.error(`${t.targetType} drop not yet supported`);break}},[l,d]),renderItemTitle:Zf,viewState:{applicationsTree:{focusedItem:r,expandedItems:a,selectedItems:s}},onFocusItem:e=>i(e.index),onExpandItem:e=>o([...a,e.index]),onCollapseItem:e=>o(a.filter(t=>t!==e.index)),onSelectItems:e=>c(e),children:(0,z.jsx)(br,{treeId:`applicationsTree`,rootItem:u,treeLabel:`Applications file tree`})}),(0,z.jsx)(Hf,{})]})}async function $f(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 p(n)}throw i}async function ep({operation:e,replicated:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:e,service:e===`restart_service`?`http`:void 0,replicated:t});return await p(1e4),await $f(()=>h({instanceClient:n,timeout:3e3}),12,15e3),r}function tp(){return M({mutationFn:ep})}function np({onRestartedSuccessfully:e}={}){let{clusterId:t}=N({strict:!1}),r=xt(),[i,o]=(0,R.useState)(!1);return{onRestartClick:(0,R.useCallback)(async()=>{if(!t)throw Error(`clusterId must be set in the route to invoke useRestartClusterClick`);o(!0);let i=!1,s={duration:6e4,action:{label:`Cancel`,onClick:()=>{i=!0}}},l=L.loading(`Restarting`,{...s,description:(0,z.jsx)(Ys,{animated:!0,width:`0%`})}),d=await no(t),f=c.checkForFabricConnect(d.id),m=d?.instances??[],g=m.filter(e=>e.status===`RUNNING`).map(e=>a({id:e.id,forceFabricConnect:f,operationsUrl:n(e)})).reverse(),_=0;if(g.length)for(let e=0;e<g.length;e++){let t=g[e];if(!i){L.loading(`Restarting Instance ${e+1} of ${g.length}`,{...s,id:l,description:(0,z.jsx)(Ys,{animated:!0,width:(e===0?0:e/g.length*100)+`%`})});try{await h({instanceClient:t}),await ep({operation:`restart`,replicated:!1,instanceClient:t}),_+=1}catch{e+1!==g.length&&(L.loading(`Failed Restarting Instance ${e+1} of ${g.length}`,{...s,id:l,description:`We will carry on momentarily.`}),await p(3e3))}}}if(o(!1),r.invalidateQueries({queryKey:[t]}),i)L.error(`Cancelled`,{id:l,description:`The restart was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});else if(m.length===_)e?.(),L.success(`Success`,{id:l,description:`Cluster fully restarted!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});else{let e=u(m.length,`instance`,`instances`),t=u(_,`"RUNNING" instance was`,`"RUNNING" instances were`);L.error(`Error`,{id:l,description:`Failed to fully restart cluster.
17
+ `+([m.length===0&&`No instances were found within the cluster to restart.`,_===0&&`No instances were in a "RUNNING" state of ${e}.`,m.length!==_&&`Only ${t} restarted of ${e}.`].filter(Ni).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}},[t,e,r]),isRestartPending:i}}function rp({operation:e,instanceClient:t,onRestartedSuccessfully:n}){let{clusterId:r,instanceId:i}=N({strict:!1}),a=`Instance`,{mutate:o,isPending:s}=tp(),c=xt();return{onRestartClick:(0,R.useCallback)(()=>{let s=L.loading(`Restarting`,{description:`Restarting instance. This may take up to 60 seconds.`,duration:18e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});o({operation:e,replicated:e===`restart_service`&&!1,instanceClient:t},{onSuccess:()=>{c.invalidateQueries({queryKey:[r]}),c.invalidateQueries({queryKey:[i]}),L.dismiss(s),L.success(`Success`,{description:`${a} restarted!`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}}),n?.()},onError:()=>{L.dismiss(s),L.error(`Error`,{description:`Failed to restart instance.`,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}})},[r,t,i,n,e,c,o,a]),isRestartPending:s}}function ip({className:e,disabled:t,hideText:n,instanceClient:r,operation:i,targetNoun:a,tooltip:o,variant:s}){let{onRestartClick:c,isRestartPending:l}=np(),{onRestartClick:u,isRestartPending:d}=rp({operation:i,instanceClient:r});return(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(g,{type:`button`,variant:s||`positiveOutline`,className:x(`mx-0 md:mx-4 rounded-full`,e),onClick:a===`Cluster`&&i===`restart`?c:u,disabled:t||d||l,title:`Restart ${a}`,children:[(0,z.jsx)(Ge,{className:`pointer-events-none`}),n!==!0&&(0,z.jsxs)(`span`,{className:`hidden md:inline-block pointer-events-none`,children:[`Restart `,(0,z.jsx)(`span`,{className:`hidden 2xl:inline-block`,children:a})]})]})}),(0,z.jsx)(Va,{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.`)})]})}function ap({toggledSidebar:e,toggleSidebar:t}){let n=B(),{openedEntryContents:r,openedEntry:i,isSavingFile:a,restrictPackageModification:o}=lf(),{content:s}=Gf(i?.path),c=xa(),l=n.entityType===`instance`?`Instance`:`Cluster`,u=wf(`ShowAddDirectoryOrFileModalType`,`file`),d=wf(`ShowAddDirectoryOrFileModalType`,`directory`),f=wf(`ShowDownloadApplicationModal`,!0),p=wf(`ShowRenameFileModal`,!0),m=wf(`ShowDeleteDirectoryOrFileModal`,!0),h=wf(`ShowRedeployApplicationModal`,!0),_=nf(`SaveFile`,!0),v=nf(`RevertChanges`,!0),y=nf(`ShowNewTableModal`,!0),b=s===void 0||s===r;return(0,z.jsxs)(`div`,{className:`absolute top-0 right-0 left-0 backdrop-blur-sm bg-black-10 shadow-xl flex pr-4 md:pr-12`,children:[(0,z.jsxs)(g,{type:`button`,variant:`ghost`,className:(e?`toggled-sidebar-toggler`:`hidden-sidebar-toggler`)+` inline-flex text-sm md:hidden focus:outline-none focus:ring-2 text-foreground hover:text-muted-foreground focus:ring-gray-600 rounded-none`,onClick:t,children:[(0,z.jsxs)(`span`,{className:`sr-only`,children:[e?`Close`:`Open`,` sidebar`]}),e?(0,z.jsx)(Pt,{}):(0,z.jsx)(Ht,{})]}),i&&i?.path!==`newApplication`&&(0,z.jsxs)(z.Fragment,{children:[i.package&&(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(g,{variant:`ghost`,type:`button`,className:`cursor-help`,children:[(0,z.jsx)(fr,{width:16,height:16}),(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Imported applications are read-only`})]})}),(0,z.jsx)(Va,{children:o?(0,z.jsxs)(z.Fragment,{children:[`This application is read-only, and cannot be modified.`,(0,z.jsx)(`br`,{}),`It helps govern clustering amongst your instances.`]}):(0,z.jsx)(z.Fragment,{children:`This application is read-only, and cannot be directly modified. But you can re-deploy or remove it.`})})]}),!Pf(i)&&!i.package&&c&&(0,z.jsxs)(g,{variant:`default`,className:`rounded-none`,onClick:_,disabled:b||a,title:`Save`,children:[(0,z.jsx)(Pe,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block pointer-events-none`,children:[(0,z.jsx)(`u`,{children:`S`}),`ave`]})]}),!Pf(i)&&!i.package&&c&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:p,disabled:!b||a,title:`Rename`,children:[(0,z.jsx)(Ve,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block pointer-events-none`,children:[(0,z.jsx)(`u`,{children:`R`}),`ename`]})]}),!i.package&&c&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:u,title:`New File`,children:[(0,z.jsx)(Et,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`pointer-events-none hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`N`}),`ew`,(0,z.jsx)(`span`,{className:`hidden lg:inline-block`,children:`\xA0File`})]})]}),!i.package&&c&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:d,title:`Add Directory`,children:[(0,z.jsx)(on,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`pointer-events-none hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`A`}),`dd`,(0,z.jsx)(`span`,{className:`hidden xl:inline-block`,children:`\xA0Directory`})]})]}),i.path.endsWith(`.graphql`)&&c&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:y,title:`New Table`,children:[(0,z.jsx)(Rt,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block pointer-events-none`,children:[(0,z.jsx)(`span`,{className:`hidden xl:inline-block`,children:`New`}),` Table`]})]}),i.project&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:f,title:`Download Application`,children:[(0,z.jsx)(pe,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block pointer-events-none`,children:[`Download`,(0,z.jsx)(`span`,{className:`hidden 2xl:inline-block`,children:`\xA0Application`})]})]}),!!i.package&&c&&!o&&(0,z.jsxs)(g,{variant:`ghost`,className:`rounded-none`,onClick:h,title:`Redeploy Package`,children:[(0,z.jsx)(Le,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`pointer-events-none`,children:[`Redeploy `,(0,z.jsx)(`u`,{children:`P`}),`ackage`]})]}),(0,z.jsx)(`div`,{className:`grow`}),c&&(0,z.jsx)(ip,{targetNoun:l,instanceClient:n.instanceClient,operation:`restart_service`,variant:`ghost`,className:`rounded-none mx-0 md:mx-0`,disabled:!b||a}),!Pf(i)&&!i.package&&c&&(0,z.jsxs)(g,{type:`button`,variant:`ghost`,className:`rounded-none`,onClick:v,disabled:b||a,title:`Revert Changes`,children:[(0,z.jsx)(kr,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden xl:inline-block pointer-events-none`,children:[`Revert `,(0,z.jsx)(`span`,{className:`hidden 2xl:inline-block`,children:`Changes`})]})]}),!o&&c&&(0,z.jsxs)(g,{type:`button`,variant:`destructiveGhost`,className:`rounded-none`,onClick:m,title:`Delete`,children:[(0,z.jsx)(cn,{className:`pointer-events-none`}),(0,z.jsxs)(`span`,{className:`hidden xl:inline-block pointer-events-none`,children:[(0,z.jsx)(`u`,{children:`D`}),`elete`]})]})]})]})}function op(e){return(0,R.useCallback)((t,n,r)=>{if(n!==`href`)return t;if(t.startsWith(`http`))return r.properties.target=`_blank`,t;{let n=Dl().split(`?`)[0];switch(t){case`./apis`:case`./config`:case`./config/roles`:case`./config/users`:case`./databases`:case`./logs`:case`./status`:return`${n}/${t.slice(2)}`}return`${n}?open=${e}/${t.slice(t.startsWith(`../`)?3:2)}`}},[e])}function sp({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,z.jsx)(bt,{"data-slot":`separator-root`,decorative:n,orientation:t,className:d(`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})}function cp({className:e,...t}){return(0,z.jsx)(Gt,{"data-slot":`tabs`,className:d(`flex flex-col gap-2`,e),...t})}function lp({className:e,...t}){return(0,z.jsx)(Yt,{"data-slot":`tabs-list`,className:d(`text-muted-foreground inline-flex w-fit items-center justify-center rounded-full bg-muted dark:bg-gray-950 p-1`,e),...t})}function up({className:e,...t}){return(0,z.jsx)(Zt,{"data-slot":`tabs-trigger`,className:d(`data-[state=active]:text-foreground data-[state=active]:bg-card dark:data-[state=active]:bg-gray-600 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:outline-1 text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border rounded-full border-transparent px-2 py-1 font-medium whitespace-nowrap transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...t})}function dp({className:e,...t}){return(0,z.jsx)(Ye,{"data-slot":`tabs-content`,className:d(`flex-1 outline-none`,e),...t})}function fp(e,t,n){for(let r of e)if(r[t]===n)return r}function pp(e){let{user:t}=bi(),n=sa(),{instance:r,cluster:i}=Ar({strict:!1}),a=n.instanceClient.defaults.baseURL;return(0,R.useMemo)(()=>{let n=oc(e),r=[t?.username&&` --deploymentUsername="${t?.username}"`,a&&` --deploymentURL="${a}"`].filter(Ni).join(``);return[{title:`Install or update the Harper CLI`,code:`npm install -g harper`},{title:`Create your awesome app`,code:`npm create harper ${n}${r.length?` --`:``}${r}`,note:`You will be asked some easy questions to get you started. To make deployments easy, enter your password for this cluster. It will get saved into your local .env file.`},{title:`Start local Harper instance`,code:`npm run dev`,note:`You will be prompted to configure Harper.`},{title:`Learn, make changes, grow!`,code:`cat AGENTS.md`},{title:`Deploy!`,code:`npm run deploy`,note:`Remember that .env file? It makes this deployment easy!`}]},[e,a,t?.username])}function mp({defaultApplicationName:e,formState:t,watch:n}){let r=n(`applicationName`)||e,i=pp(r),a=Ts(...i.map(e=>e.code));return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{children:`Deploy with Harper CLI`}),(0,z.jsx)(wi,{children:`Follow these steps to deploy your application using the Harper CLI`})]}),(0,z.jsxs)(Ti,{className:`space-y-6`,children:[i.map((e,t)=>(0,z.jsxs)(`div`,{className:`space-y-3`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsx)(`div`,{className:`w-6 h-6 rounded-full bg-primary text-primary-foreground flex items-center justify-center shrink-0`,children:t+1}),(0,z.jsx)(`h3`,{children:e.title})]}),(0,z.jsxs)(`div`,{className:`ml-8`,children:[(0,z.jsxs)(`div`,{className:`bg-muted dark:bg-black rounded-lg p-4 flex items-center justify-between group`,children:[(0,z.jsx)(`code`,{className:`text-sm overflow-auto pl-8 -indent-8 wrap-anywhere`,children:e.code}),(0,z.jsx)(g,{type:`button`,variant:`default`,size:`sm`,onClick:a[t],children:(0,z.jsx)(st,{className:`w-4 h-4`})})]}),e.note&&(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm mt-2`,children:e.note})]}),(0,z.jsx)(sp,{className:`bg-border`})]},e.title)),r&&(0,z.jsxs)(`div`,{className:`bg-accent rounded-lg p-4`,children:[(0,z.jsxs)(`p`,{className:`text-sm`,children:[(0,z.jsx)(`strong`,{children:`Application Name:`}),` `,r]}),(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm mt-2`,children:`Your application will be deployed with this name`})]}),(0,z.jsxs)(g,{className:`w-full`,variant:`secondary`,disabled:!t.isValid,children:[(0,z.jsx)(Ke,{className:`w-4 h-4 mr-2`}),`I Have Completed These Steps`]})]})]})}function hp({control:e,defaultApplicationName:t}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{children:`Application Name`}),(0,z.jsx)(wi,{children:`Choose a name for your new API application`})]}),(0,z.jsx)(Ti,{children:(0,z.jsxs)(`div`,{className:`space-y-2`,children:[(0,z.jsx)(U,{control:e,name:`applicationName`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoCapitalize:`words`,autoComplete:`off`,autoFocus:!0,placeholder:t,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Use lowercase letters, numbers, underscores, and hyphens`})]})})]})}var gp=se(`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 _p({className:e,variant:t,...n}){return(0,z.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:d(gp({variant:t}),e),...n})}function vp({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`alert-title`,className:d(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,e),...t})}function yp({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`alert-description`,className:d(`text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed`,e),...t})}function bp({control:e,formState:t,isImportingApplication:n,setValue:r,watch:i}){let a=i(`contents.source`),o=(0,R.useCallback)(e=>{r(`contents.source`,e)},[r]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{children:`Import Existing Application`}),(0,z.jsx)(wi,{children:`Import from Git, NPM, or a tarball URL`})]}),(0,z.jsxs)(Ti,{className:`space-y-6`,children:[(0,z.jsxs)(cp,{value:a,onValueChange:o,children:[(0,z.jsxs)(lp,{className:`grid w-full grid-cols-3`,children:[(0,z.jsxs)(up,{value:`git`,children:[(0,z.jsx)(ir,{className:`w-4 h-4 mr-2`}),`Git`]}),(0,z.jsxs)(up,{value:`npm`,children:[(0,z.jsx)(Le,{className:`w-4 h-4 mr-2`}),`NPM`]}),(0,z.jsxs)(up,{value:`tarball`,children:[(0,z.jsx)(er,{className:`w-4 h-4 mr-2`}),`Tarball`]})]}),(0,z.jsx)(dp,{value:`git`,className:`space-y-4 mt-4`,children:(0,z.jsx)(`div`,{className:`space-y-2`,children:(0,z.jsx)(U,{control:e,name:`contents.ref`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Git Repository URL`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})})})}),(0,z.jsx)(dp,{value:`npm`,className:`space-y-4 mt-4`,children:(0,z.jsx)(`div`,{className:`space-y-2`,children:(0,z.jsx)(U,{control:e,name:`contents.ref`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`NPM Package Reference`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})})})}),(0,z.jsx)(dp,{value:`tarball`,className:`space-y-4 mt-4`,children:(0,z.jsx)(`div`,{className:`space-y-2`,children:(0,z.jsx)(U,{control:e,name:`contents.ref`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Tarball URL`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`url`,autoCapitalize:`none`,autoComplete:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})})})})]}),(0,z.jsx)(U,{control:e,name:`contents.installCommand`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Install Command`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoCapitalize:`none`,autoComplete:`off`,placeholder:`npm install`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(G,{children:`Authorization`}),(0,z.jsx)(U,{control:e,name:`contents.requiresAuth`,render:({field:e})=>(0,z.jsxs)(cp,{className:`w-full pt-2 pb-0 mb-0`,value:String(e.value),onValueChange:t=>e.onChange(t===`true`),children:[(0,z.jsxs)(lp,{className:`grid w-full grid-cols-2`,children:[(0,z.jsx)(up,{value:`false`,children:`Public Access`}),(0,z.jsx)(up,{value:`true`,children:`Requires Auth`})]}),(0,z.jsx)(dp,{value:`false`,className:`space-y-4 mt-4`}),(0,z.jsx)(dp,{value:`true`,className:`space-y-4 mt-4`,children:(0,z.jsx)(_p,{children:(0,z.jsx)(yp,{children:(0,z.jsxs)(`span`,{children:[`You can manage your certificates over in`,` `,(0,z.jsx)(k,{to:`config`,className:`underline`,children:`Config`}),` `,`>`,` `,(0,z.jsx)(k,{to:`config/ssh-keys`,className:`underline`,children:`SSH Keys`}),`. This enables SSH based auth for private repos, i.e. following the pattern of`,` `,(0,z.jsx)(`a`,{href:`https://github.com/HarperFast/Studio`,target:`_blank`,rel:`noreferrer`,className:`underline`,children:`git@github.com:HarperFast/studio.git`}),`. If you have more than one key, make sure to utilize unique hostnames!`]})})})})]})}),(0,z.jsx)(sp,{className:`bg-border`}),(0,z.jsxs)(g,{className:`w-full`,disabled:!t.isValid||n,children:[(0,z.jsx)(nt,{className:`w-4 h-4 mr-2`}),`Import Application`]})]})]})}var xp=[{id:`vanilla-js`,name:`Web + REST ORM`,description:`Define your entities in schema.graphql, add your HTML/CSS/JS in web, and you're cooking!`,tags:[`Harper`,`ORM`,`REST`,`GraphQL`],npm:`@harperfast/template-vanilla-studio`,githubUrl:`https://github.com/HarperFast/create-harper/tree/main/template-vanilla`},{id:`vanilla-ts`,name:`TypeScript`,description:`The same Web + REST ORM from the first template, but with TypeScript sprinkled in.`,tags:[`Harper`,`TypeScript`,`GraphQL`],npm:`@harperfast/template-vanilla-ts-studio`,githubUrl:`https://github.com/HarperFast/create-harper/tree/main/template-vanilla-ts`}],Sp=D({type:ie(`template`),id:w(`Please select a template.`)}),Cp={type:`template`,id:xp[0].id},wp=D({type:ie(`import`),source:re([`git`,`npm`,`tarball`]),ref:w().nonempty(`Please enter a URL or package reference.`),installCommand:w(),requiresAuth:E()}),Tp={type:`import`,source:`git`,ref:``,requiresAuth:!1,installCommand:``},Ep=D({type:ie(`cli`)}),Dp={type:`cli`},Op=D({applicationName:w().trim().max(75,{error:`Application name cannot be longer than 75 characters.`}).regex(/^[a-zA-Z0-9-_]*$/,{error:`Can only contain letters, numbers, dashes and underscores.`}),contents:C(`type`,[Sp,wp,Ep])});function kp({className:e,...t}){return(0,z.jsx)(ur,{"data-slot":`radio-group`,className:d(`grid gap-3`,e),...t})}function Ap({className:e,...t}){return(0,z.jsx)(Qe,{"data-slot":`radio-group-item`,className:d(`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,z.jsx)(Re,{"data-slot":`radio-group-indicator`,className:`relative flex items-center justify-center`,children:(0,z.jsx)(ze,{className:`fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2`})})})}function jp(e){e.stopPropagation()}function Mp({control:e,formState:t,isCreatingFromTemplate:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Si,{children:[(0,z.jsx)(Ci,{children:`Choose a Template`}),(0,z.jsx)(wi,{children:`Start with a pre-configured template for common use cases`})]}),(0,z.jsxs)(Ti,{children:[(0,z.jsx)(U,{control:e,name:`contents.id`,render:({field:e})=>(0,z.jsx)(kp,{value:e.value,onValueChange:e.onChange,children:(0,z.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:xp.map(e=>(0,z.jsxs)(`div`,{className:`relative`,children:[(0,z.jsx)(Ap,{value:e.id,id:e.id,className:`peer sr-only`}),(0,z.jsxs)(Ya,{htmlFor:e.id,className:`flex flex-col gap-3 p-4 border-2 rounded-lg cursor-pointer hover:bg-accent peer-data-[state=checked]:border-green peer-data-[state=checked]:bg-primary/5`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`div`,{className:`mb-1 flex items-center gap-2 justify-between`,children:[(0,z.jsx)(`div`,{children:e.name}),(0,z.jsx)(`a`,{href:e.githubUrl,target:`_blank`,rel:`noopener noreferrer`,onClick:jp,className:`opacity-70 hover:opacity-100 transition-colors -m-4 p-4`,children:(0,z.jsx)(`img`,{src:`/github/GitHub_Lockup_White.svg`,alt:`GitHub`,className:`h-4`})})]}),(0,z.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:e.description})]}),(0,z.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.tags.map(e=>(0,z.jsx)(ds,{variant:`outline`,children:e},e))})]})]},e.id))})})}),(0,z.jsx)(sp,{className:`my-6 bg-border`}),(0,z.jsxs)(g,{className:`w-full`,disabled:!t.isValid||n,children:[(0,z.jsx)(nt,{className:`w-4 h-4 mr-2`}),`Create from Template`]})]})]})}function Np(e){let t=sa(),{reloadRootEntries:n,setFocusedItem:r,setExpandedItems:i,setSelectedItems:a}=lf(),o=(0,R.useCallback)(({project:o})=>{let s=L.loading(`Looking for application...`,{description:`This may take a bit.`,duration:3e5});e(!0),n().then(n=>{let c=n?.entries||[];for(let n of c)if(n.name.toLowerCase()===o.toLowerCase()){r(n.name),a([n.name]),i([n.name]),e(!1),L.success(`Imported successfully`,{description:`${o} is now available in your ${t.entityType}!`,id:s,duration:5e3});return}L.warning(`Deployment Not Detected`,{description:`I searched for ${o} but did not find it in the ${t.entityType} yet. Do you see it on the left? Did you use a different name, perhaps?`,id:s,duration:1e4}),e(!1)})},[t,e,n,r,i,a]);return(0,R.useMemo)(()=>({checkCLI:o}),[o])}async function Pp({instanceClient:e,project:t,template:n,entityType:r}){let{data:i}=await e.post(`/`,{operation:`add_component`,project:t,template:n,replicated:r===`cluster`},{timeout:3e5});return i}function Fp(){return M({mutationFn:Pp})}function Ip(e){let{mutate:t,isPending:n}=Fp(),r=sa(),{reloadRootEntries:i,setFocusedItem:a,setExpandedItems:o,setSelectedItems:s}=lf(),c=(0,R.useCallback)(({contents:n,project:c})=>{let l=L.loading(`Creating from template...`,{description:`This may take a bit.`,duration:3e5}),u=fp(xp,`id`,n.id);if(!u)return L.error(`Template Not Found`,{description:`Please select a template`,duration:1e4,id:l});t({project:c,template:u.npm||u.githubUrl,...r},{onSuccess:()=>{L.success(`Created successfully!`,{description:`${c} will be available once you restart your ${r.entityType}!`,id:l,duration:5e3}),e(!0),i(),a(c),s([c]),o([c])}})},[t,r,e,i,a,o,s]);return(0,R.useMemo)(()=>({isCreatingFromTemplate:n,createFromTemplate:c}),[n,c])}async function Lp({applicationName:e,applicationUrl:t,installCommand:n,entityType:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`deploy_component`,package:t,project:e,replicated:r===`cluster`,install_command:n||void 0,restart:`rolling`},{timeout:3e5});return a}function Rp(){return M({mutationFn:Lp})}function zp(e){let{mutate:t,isPending:n}=Rp(),r=xt(),i=B(),{reloadRootEntries:a,setFocusedItem:o,setExpandedItems:s,setSelectedItems:c}=lf(),l=(0,R.useCallback)(({contents:n,project:l})=>{let u=L.loading(`Importing application...`,{description:`This may take a bit.`,duration:3e5});t({applicationName:l,applicationUrl:n.ref,installCommand:n.installCommand,...i},{onSuccess:()=>{L.success(`Imported successfully`,{description:`${l} will be available once you restart your ${i.entityType}!`,id:u,duration:5e3}),e(!0),r.invalidateQueries({queryKey:[i.entityId]}),a(),o(l),c([l]),s([l])},onError:()=>{L.dismiss(u)}})},[t,r,i,e,a,o,s,c]);return(0,R.useMemo)(()=>({isImportingApplication:n,importApplication:l}),[n,l])}function Bp(){let{rootEntries:e}=lf(),{organization:t,instance:n,cluster:r}=Ar({strict:!1}),i=(0,R.useMemo)(()=>{let i=oc(r?.name||n?.name||t?.name||``);if(i===``)return i;let a=i,o=1;for(;fp(e,`name`,a);)o+=1,a=`${i}-${o}`;return a},[e,r,n,t]),a=(0,R.useCallback)((t,n)=>{!t.applicationName&&!i?n.addIssue({code:`custom`,path:[`applicationName`],message:`Please name your application!`}):e.find(e=>e.name===t.applicationName)&&n.addIssue({code:`custom`,path:[`applicationName`],message:`That application name is already in use!`})},[i,e]),o=I({resolver:j(Op.superRefine(a)),defaultValues:{applicationName:``,contents:{...Tp,...Dp,...Cp}}}),{watch:s,handleSubmit:c,control:l,setValue:u,formState:d,trigger:f}=o,[p,m]=(0,R.useState)(!1),{isCreatingFromTemplate:h,createFromTemplate:g}=Ip(m),{isImportingApplication:_,importApplication:v}=zp(m),{checkCLI:y}=Np(m),b=(0,R.useCallback)(e=>{let t=e.applicationName||i;switch(e.contents.type){case`template`:g({contents:e.contents,project:t});break;case`import`:v({contents:e.contents,project:t});break;case`cli`:y({contents:e.contents,project:t});break}},[y,g,i,v]),x=s(`contents.type`),S=(0,R.useCallback)(e=>{let t=d.isValid;u(`contents.type`,e),t||f()},[u,d,f]);return(0,z.jsxs)(`div`,{className:`mx-auto max-w-4xl mt-6`,children:[(0,z.jsxs)(`div`,{className:`text-center`,children:[(0,z.jsx)(`h1`,{className:`text-4xl pt-4 pb-2`,children:`Bootstrap New API Application`}),(0,z.jsx)(`p`,{className:`text-muted-foreground`,children:`Create a new application from templates, import existing code, or deploy with Harper CLI`})]}),(0,z.jsx)(V,{...o,children:(0,z.jsx)(`form`,{id:`instance-add-application-form`,name:`instance-add-application-form`,onSubmit:c(b),className:`flex flex-col gap-4 p-4`,children:(0,z.jsxs)(`fieldset`,{disabled:_||h||p,children:[(0,z.jsx)(xi,{className:`dark:bg-black-dark`,children:(0,z.jsx)(hp,{control:l,defaultApplicationName:i})}),(0,z.jsx)(xi,{className:`dark:bg-black-dark mt-4 pt-0`,children:(0,z.jsxs)(cp,{defaultValue:x,onValueChange:S,children:[(0,z.jsxs)(lp,{className:`w-full grid grid-cols-3 mt-0`,children:[(0,z.jsxs)(up,{value:`template`,children:[(0,z.jsx)(_n,{}),(0,z.jsx)(`span`,{className:`hidden sm:inline-block`,children:`Templates`})]}),(0,z.jsxs)(up,{value:`import`,children:[(0,z.jsx)(On,{}),`Import`]}),(0,z.jsxs)(up,{value:`cli`,children:[(0,z.jsx)(Se,{}),(0,z.jsx)(`span`,{className:`hidden md:inline-block`,children:`Harper`}),` CLI`]})]}),(0,z.jsx)(`div`,{className:`mx-6 mt-1`,children:(0,z.jsx)(sp,{className:`bg-border`})}),(0,z.jsx)(dp,{value:`template`,className:`space-y-4`,children:(0,z.jsx)(Mp,{control:l,formState:d,isCreatingFromTemplate:h})}),(0,z.jsx)(dp,{value:`import`,className:`space-y-4`,children:(0,z.jsx)(bp,{control:l,formState:d,isImportingApplication:_,setValue:u,watch:s})}),(0,z.jsx)(dp,{value:`cli`,className:`space-y-4`,children:(0,z.jsx)(mp,{defaultApplicationName:i,formState:d,watch:s})})]})})]})})})]})}var Vp={js:`javascript`,cjs:`javascript`,jsx:`javascript`,yaml:`yaml`,ts:`typescript`,tsx:`typescript`,json:`json`,md:`markdown`,html:`html`,css:`css`,graphql:`graphql`,mjs:`javascript`};function Hp(){let e=B(),{openedEntryContents:t,openedEntry:n,restrictPackageModification:r,isSavingFile:i,saveFile:a}=lf(),{content:o,setContent:s}=Gf(!!n&&!n.package&&n.path),c=(0,R.useCallback)(e=>{s(e===t?void 0:e)},[t,s]),l=ou(),u=xa(),[d,f]=(0,R.useState)(null),p=Vp[df(n?.path)]||`plaintext`,m=(0,R.useCallback)((e,t)=>{f([e,t])},[]);if((0,R.useEffect)(()=>{if(d&&u&&!n?.package&&!r)return Of(d)},[d,u,n,r]),$d(`SaveFile`,()=>{n&&!i&&o!==void 0&&a({...e,file:n.path.split(`/`).slice(1).join(`/`),payload:o,project:n.project},n.path)},[n,e,o]),$d(`RevertChanges`,()=>{if(t!==void 0&&d){let[e]=d;c(void 0),e.setValue(t)}},[t,d]),!n)return null;let h=i||!!n.package||!u;return(0,z.jsx)(Mn,{className:`w-full min-h-full h-80`,language:p,theme:l,value:o??t,onMount:m,onChange:h?void 0:c,options:{automaticLayout:!0,minimap:{enabled:!1},readOnly:h,padding:{top:48}}})}function Up(){let{openedEntry:e,openedEntryContents:t}=lf(),n=op(e?.project);return e?.path===`newApplication`?(0,z.jsx)(Bp,{}):Pf(e)?(0,z.jsx)(`div`,{className:`directoryReadMe max-w-3xl`,children:(0,z.jsx)(de,{urlTransform:n,remarkPlugins:[hi],components:{code:Gp},children:t})}):ff(e?.name)?(0,z.jsx)(`div`,{className:`mt-9 absolute top-0 right-0 bottom-0 left-0`,children:(0,z.jsx)(`img`,{className:`w-full h-full object-contain p-20`,alt:e?.name,src:`data:image/${df(e?.name)};base64,${t}`})}):(0,z.jsx)(Hp,{})}function Wp({chart:e}){let t=(0,R.useRef)(null),[n,r]=(0,R.useState)(``),[i,a]=(0,R.useState)(null);return(0,R.useEffect)(()=>{let t=`mermaid-${Math.random().toString(36).slice(2,9)}`,n=!1;return Yr(async()=>{let{default:e}=await import(`./vendor-viz-morXXTZA.js`).then(e=>e.t);return{default:e}},__vite__mapDeps([13,1,2,4,3,5,6,7,8,9,10])).then(({default:i})=>{n||(i.initialize({startOnLoad:!1,theme:`default`}),i.render(t,e).then(({svg:e})=>{n||(r(e),a(null))}).catch(e=>{n||(console.error(`Mermaid render error:`,e),a(String(e)))}))}),()=>{n=!0}},[e]),i?(0,z.jsx)(`pre`,{className:`text-red-500 bg-red-50 p-3 rounded text-sm overflow-auto`,children:(0,z.jsx)(`code`,{children:e})}):(0,z.jsx)(`div`,{ref:t,className:`my-4 flex justify-center overflow-auto`,dangerouslySetInnerHTML:{__html:n}})}function Gp({inline:e,className:t,children:n}){let r=String(n??``).replace(/\n$/,``),[i]=Ts(r),a=t?.replace(`language-`,``);return e||!r.includes(`
18
+ `)?(0,z.jsx)(`code`,{className:t,children:n}):a===`mermaid`?(0,z.jsx)(Wp,{chart:r}):(0,z.jsxs)(`code`,{className:`relative`,children:[(0,z.jsx)(g,{className:`absolute top-2 right-2`,type:`button`,variant:`default`,size:`sm`,onClick:i,children:(0,z.jsx)(st,{className:`w-4 h-4`})}),r]})}function Kp(e){return new URL(e.match(/^https?:\/\//i)?e:`https://${e}`).toString()}function qp(e){if(e?.domains){for(let t of e.domains)if(t.domain)return Kp(t.domain)}return e?.fqdn?Kp(e.fqdn):null}function Jp(){let{clusterId:e,instanceId:t}=N({strict:!1}),n=oa(),{data:r}=A(ro(e));return e&&c.checkForFabricConnect(e)||t&&c.checkForFabricConnect(t)||r&&!t?qp(r):n.defaults.baseURL?n.defaults.baseURL.replace(/:9925\/?/,``):null}function Yp(e,t,n,r=[]){let i=[];for(let a of e){let e=n(a,r);i.push(e);let o=a,s=o[t];s&&(e[t]=Yp(s,t,n,[...r,o]))}return i}function Xp(e){let t=new Set;return{rootEntries:Yp(e||[],`entries`,(e,n)=>{let r=Pf(e)&&e.entries.find(e=>e.name.toLowerCase()===`readme.md`),i=[...n.map(e=>e.name),e.name].join(`/`);return t.add(i),{name:e.name,path:i,project:(n[0]||e)?.name,package:(n[0]||e)?.package,overviewEntry:r&&!Pf(r)&&{name:r.name,path:[...n.map(e=>e.name),e.name,r.name].join(`/`),project:(n[0]||e)?.name,package:(n[0]||e)?.package}||void 0}}),pathsRegistry:t}}function Zp(e,t,n){let r=t,i=t.replace(/:9925/,``).replace(/\/?$/,``);return r&&(e=e.replaceAll(/https?:\/\/localhost:9926/g,i)),n.project&&(e=e.replaceAll(`Your New Harper Fabric App`,n.project).replaceAll(`your-project-name-here`,n.project)),e}async function Qp({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_components`});return t}function $p(e){return P({queryKey:[e.entityId,`get_components`],queryFn:()=>Qp(e),retry:!1,enabled:e.enabled!==!1})}function em({children:e}){let t=De(),[n,r]=(0,R.useState)(void 0),[i,a]=(0,R.useState)(void 0),{setContent:o}=Gf(n?.path),s=B(),c=Jp(),l=xt(),{open:u}=Ce({strict:!1}),{data:d}=A($p(s)),f=(0,R.useMemo)(()=>d?Xp(d.entries):{rootEntries:[],pathsRegistry:new Map,allEntries:new Map},[d]),p=(0,R.useCallback)(async()=>l.fetchQuery({queryKey:[s.entityId,`get_components`],networkMode:`online`}),[l,s]);$d(`ReloadApplicationRootEntries`,p,[p]);let m=(0,R.useCallback)(e=>f.pathsRegistry.has(e),[f.pathsRegistry]),h=f.rootEntries.filter(e=>!e.package&&e.path!==`newApplication`).map(e=>e.name),g=h[0],_=h.slice(0,1);!g&&d&&(g=Lf,_=[Lf]);let[v,y]=of(`FileFocused/${s.entityId}`,g),[b,x]=of(`FolderOpened/${s.entityId}`,h),[S,C]=of(`FileSelected/${s.entityId}`,_);(0,R.useEffect)(()=>{if(u?.length){let e=u.split(`?`),n=e[0],r=e[1],i=n.split(`/`);if(r){let e=r.split(`=`);Sf(e[0],e[1]===`true`?!0:e[1]===`false`?!1:e[1])}x(e=>{let t=new Set(e);for(let e=1;e<i.length;e++)t.add(i.slice(0,e).join(`/`));return[...t]}),C([n]),y(n),t({search:void 0})}},[t,u,x,y,C]);let ee=n&&(Pf(n)?n.overviewEntry?.path:n.path)||``,w=n&&(Pf(n)?n.overviewEntry?.project:n.project)||``,te=n&&(Pf(n)?!!n.overviewEntry?.path:!1)||!1,ne=hf({file:ee?.split(`/`).slice(1).join(`/`),project:w,...s}),{data:T}=A(mf({file:ee?.split(`/`).slice(1).join(`/`),project:w,...s}));(0,R.useEffect)(function(){let e=T?.project+`/`+T?.file,t=T?.message;e===ee&&t!==void 0?(te&&c&&T&&(t=Zp(t,c,T)),a(t)):a(void 0)},[T,ee,te,s]);let{mutate:E,isPending:re}=_f(),D=(0,R.useCallback)((e,t)=>{E(e,{onSuccess:()=>{n?.path===t&&e.payload!==void 0&&(o(void 0),a(e.payload||void 0),l.setQueryData(ne,{...T,message:e.payload}))},onError:e=>{console.error(`Error saving file:`,e)}})},[ne,T,n?.path,l,E,o]),ie=(0,R.useMemo)(()=>n?n.package?.includes(`github.com/HarperDB/status-check-fabric`)||n.package?.includes(`github.com/HarperFast/status-check-fabric`)||n.path===`importedApplications`||n.path===`newApplication`:!1,[n]),ae=(0,R.useMemo)(()=>({rootEntries:f.rootEntries,reloadRootEntries:p,entryExists:m,focusedItem:v,setFocusedItem:y,expandedItems:b,setExpandedItems:x,selectedItems:S,setSelectedItems:C,restrictPackageModification:ie,openedEntry:n,setOpenedEntry:r,openedEntryContents:i,setOpenedEntryContents:a,saveFile:D,isSavingFile:re}),[f.rootEntries,p,m,v,y,b,x,S,C,ie,n,r,i,a,D,re]);return(0,z.jsx)(cf.Provider,{value:ae,children:e})}function tm(e){let t=e;if(t?.focus)nm(t);else{let t=e;t?.target?.focus&&nm(t.target)}}function nm(e){p(1).then(()=>{e.focus?.()})}function rm(){let{value:e,trigger:t}=xf(`ShowAddDirectoryOrFileModalType`,!1),n=(0,R.useCallback)(()=>{Sf(`ShowAddDirectoryOrFileModalType`,!1),tm(t)},[t]),{openedEntry:r,entryExists:i,reloadRootEntries:a,setFocusedItem:o,setSelectedItems:s,setExpandedItems:c}=lf(),l=B(),{mutate:u,isPending:d}=_f(),f=I({resolver:j(oe.object({name:oe.string().nonempty({error:`Please enter a valid name.`}).regex(/^[a-zA-Z0-9_\- .]*$/,{error:`Names can only contain letters, numbers, underscores, hyphens, periods, and spaces.`}).max(50,{error:`Names cannot be longer than 50 characters.`}).trim()})),defaultValues:{name:``}}),p=(0,R.useCallback)(t=>{if(!r||!e)return;let d=r.path.split(`/`),p=(Pf(r)?d.slice(1):d.slice(1,-1)).join(`/`),m=p?`${p}/${t.name}`:t.name;if(i(r.project+`/`+m)){L.error(`${Ua(e)} already exists!`,{description:m});return}u({file:m,project:r.project,payload:e===`directory`?void 0:``,...l},{onSuccess:()=>{a(),n(),f.reset();let i=[r.project,p,t.name].filter(Ni).join(`/`);o(i),s([i]),e===`directory`&&c(e=>[...e,i])}})},[u,f,n,l,r,i,a,c,o,s,e]),m=(0,R.useCallback)(()=>{n(),f.reset()},[n,f]);return(0,z.jsx)(J,{onOpenChange:n,open:!!e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:(0,z.jsx)(V,{...f,children:(0,z.jsxs)(`form`,{id:`instance-add-app-${e}-form`,name:`instance-add-app-${e}-form`,onSubmit:f.handleSubmit(p),children:[(0,z.jsxs)(cs,{children:[(0,z.jsxs)(Z,{children:[`Add `,e]}),(0,z.jsxs)(ls,{children:[`Enter the name of the `,e,` you want to add`,e===`file`?`, don't forget the extension`:``,`!`]})]}),(0,z.jsx)(U,{control:f.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:d,type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`rounded-full`,onClick:m,children:`Cancel`}),(0,z.jsxs)(g,{variant:`positiveOutline`,type:`submit`,className:`rounded-full`,disabled:d,children:[(0,z.jsx)(Rt,{}),` Add `,e]})]})})]})})})})}function im(){let{value:e,trigger:t}=xf(`ShowDeleteDirectoryOrFileModal`,!1),n=B(),{openedEntry:r,reloadRootEntries:i,setFocusedItem:a,setSelectedItems:o,selectedItems:s}=lf(),c=s.length>1,l=Pf(r),d=l&&r.path===r.project,f=!!r?.package,p=f?`Remove`:`Delete`,m=f?`Imported Application`:d?`Application`:l?`Directory`:`File`,h=(0,R.useCallback)(()=>{Sf(`ShowDeleteDirectoryOrFileModal`,!1),tm(t)},[t]),_=(0,R.useCallback)(async()=>{h();let e=[],t=0,r=!1,c={label:`Cancel`,onClick:()=>{r=!0}},l={label:`OK`,onClick:()=>void 0},d=`deleting-files`;for(let i of s.reverse()){e=i.split(`/`);let a=e[0],o=e.length>1?e.slice(1).join(`/`):void 0;if(L.loading(`${p} in progress...`,{id:d,description:`${t} of ${u(s.length,`item`,`items`)}`,action:c}),await uf({file:o,project:a,...n}),r)break;t+=1}if(r?L.warning(`${p} canceled!`,{id:d,description:``,action:l}):L.success(`${p} completed!`,{id:d,description:``,action:l}),e.length){let t=e.slice(0,-1).join(`/`);a(t||void 0),o(t?[t]:[]),i()}},[p,h,n,i,s,a,o]),v=(0,R.useCallback)(e=>{e.preventDefault(),_()},[_]);return(0,z.jsx)(J,{onOpenChange:h,open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsxs)(Z,{children:[p,` `,m]}),(0,z.jsxs)(ls,{children:[`Are you sure you want to `,p.toLowerCase(),` `,c?`these ${s.length} items`:`this ${m.toLowerCase()}`,`?`]}),!f&&(0,z.jsx)(ls,{className:`whitespace-pre`,children:c?s.join(`
19
+ `):r?.path})]}),(0,z.jsxs)(`div`,{className:`flex w-full gap-4`,children:[(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`w-full rounded-full`,onClick:h,children:`Cancel`}),(0,z.jsxs)(g,{variant:`destructiveOutline`,type:`button`,className:`w-full rounded-full`,autoFocus:!0,onClick:v,children:[(0,z.jsx)(cn,{}),` `,p,` `,c?`items`:m]})]})]})})}async function am({packageName:e,project:t,skipNodeModules:n,skipSymlinks:r,instanceClient:i}){let{data:a}=await i.post(`/`,{operation:`package_component`,package:e,project:t,skip_node_modules:n,skip_symlinks:r},{timeout:3e5});return a}function om(){return M({mutationFn:am})}function sm(){let{value:e,trigger:t}=xf(`ShowDownloadApplicationModal`,!1),n=B(),{openedEntry:r}=lf(),{mutate:i,isPending:a,isSuccess:o}=om(),s=o?`Downloaded`:a?`Downloading`:`Download`,[c,l]=(0,R.useState)(!1),u=(0,R.useCallback)(e=>{l(e.target.checked)},[]),d=(0,R.useCallback)(()=>{Sf(`ShowDownloadApplicationModal`,!1),tm(t)},[t]),f=(0,R.useCallback)(e=>{if(e.preventDefault(),!r)return;d();let t=L.loading(`Packaging...`);i({packageName:r.package,project:r.project,skipNodeModules:!c,...n},{onSuccess:e=>{L.success(`Download ready!`,{id:t});let n=document.createElement(`a`);n.setAttribute(`class`,`invisible absolute top-0`);let i=Uint8Array.from(atob(e.payload),e=>e.charCodeAt(0)),a=new Blob([i],{type:`application/gzip`});n.href=URL.createObjectURL(a),n.download=`${r.project}.gz`,document.body.appendChild(n),n.click(),document.body.removeChild(n)}})},[r,i,c,n,d]);return(0,z.jsx)(J,{onOpenChange:d,open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Download Application`}),(0,z.jsxs)(ls,{children:[`This will package up the contents of `,(0,z.jsx)(`strong`,{children:r?.project}),` into a gzipped file.`]})]}),(0,z.jsxs)(Ya,{className:`flex`,children:[(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,disabled:a,checked:c,onChange:u}),(0,z.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Include Node Modules`})]}),(0,z.jsxs)(`div`,{className:`flex w-full gap-4`,children:[(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`w-full rounded-full`,onClick:d,children:`Cancel`}),(0,z.jsxs)(g,{variant:`positive`,type:`button`,className:`w-full rounded-full`,disabled:a,autoFocus:!0,onClick:f,children:[(0,z.jsx)(pe,{}),` `,s,a?`...`:``]})]})]})})}function cm(e=!1){let[t,n]=(0,R.useState)(e),r=(0,R.useCallback)(e=>{e?.preventDefault?.(),n(e=>!e)},[]),i=(0,R.useCallback)(e=>{e?.preventDefault?.(),n(!0)},[]),a=(0,R.useCallback)(e=>{e?.preventDefault?.(),n(!1)},[]);return(0,R.useMemo)(()=>({toggled:t,setToggled:n,toggle:r,toggleOn:i,toggleOff:a}),[r,n,a,i,t])}function lm({field:e}){let{toggled:t,toggle:n}=cm(!1);return(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsxs)(G,{onClick:n,className:x(`flex items-center gap-2`,t?``:`text-muted-foreground italic`),children:[t?(0,z.jsx)(pn,{}):(0,z.jsx)(Un,{}),` Optional Database Name`]}),(0,z.jsx)(Gc,{className:t?``:`hidden`,children:`"data" is the default recommended name`}),(0,z.jsx)(H,{className:t?``:`hidden`,children:(0,z.jsx)(q,{type:`text`,className:`my-1`,...e})}),(0,z.jsx)(K,{})]})}var um=function(e){return e.Any=`Any`,e.BigInt=`BigInt`,e.Blob=`Blob`,e.Boolean=`Boolean`,e.Bytes=`Bytes`,e.Date=`Date`,e.Float=`Float`,e.ID=`ID`,e.Int=`Int`,e.Long=`Long`,e.String=`String`,e}({}),dm=/^[\x20-\x2E|\x30-\x5F|\x61-\x7E]*$/,fm=w().regex(dm,{error:`Database name cannot include backticks or forward slashes.`}).max(75,{error:`Database name cannot be longer than 75 characters.`}),pm=w().nonempty({error:`Field name is required.`}).regex(dm,{error:`Field name cannot include backticks or forward slashes.`}).max(250,{error:`Field name cannot be longer than 250 characters.`}),mm=w().nonempty({error:`Table name is required.`}).regex(dm,{error:`Table name cannot include backticks or forward slashes.`}).max(250,{error:`Table name cannot be longer than 250 characters.`}),hm=D({tableName:mm,databaseName:fm,expiration:te().or(ie(``)),enableRest:E(),sealed:E(),tableFields:ae(D({fieldName:pm,fieldType:re(um),primaryKey:E(),nullable:E(),indexed:E(),array:E()})).min(1,{error:`Please add at least one field.`})});function gm({field:e}){let{toggled:t,toggle:n}=cm(!1),r=(0,R.useCallback)(t=>e.onChange(t.target.value?parseInt(t.target.value,10):t.target.value),[]);return(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsxs)(G,{onClick:n,className:x(`flex items-center gap-2`,t?``:`text-muted-foreground italic`),children:[t?(0,z.jsx)(pn,{}):(0,z.jsx)(Un,{}),` Optional Expiration`]}),(0,z.jsx)(Gc,{className:t?``:`hidden`,children:`After how many seconds should records be automatically evicted? Leave blank or set to 0 to skip this feature. (It can be useful for cache records.)`}),(0,z.jsx)(H,{className:t?``:`hidden`,children:(0,z.jsx)(q,{...e,type:`number`,min:0,step:1,className:`my-1`,onChange:r})}),(0,z.jsx)(K,{})]})}function _m(){let e=wf(`ShowNewTableModal`,!1),{openedEntry:t,openedEntryContents:n}=lf(),{setContent:r}=Gf(!!t&&!t.package&&t.path),i=I({resolver:j(hm),defaultValues:{tableName:``,databaseName:`data`,expiration:``,enableRest:!0,sealed:!0,tableFields:[{fieldName:`id`,fieldType:um.ID,primaryKey:!0,nullable:!0,indexed:!1,array:!1}]}}),{control:a,handleSubmit:o,formState:s}=i,{fields:c,append:l,remove:u}=Wt({name:`tableFields`,control:a}),d=(0,R.useCallback)(()=>{l({fieldName:``,fieldType:um.String,primaryKey:!1,nullable:!1,indexed:!1,array:!1})},[l]),f=(0,R.useCallback)(async t=>{r(e=>{let r=e||n||``,i=[!!t.databaseName&&t.databaseName!==`data`&&`database: "${t.databaseName}"`,!!t.expiration&&t.expiration>0&&`expiration: ${t.expiration}`].filter(Ni),a=i.length?`(${i.join(`, `)})`:``,o=t.enableRest?` @export`:``,s=t.sealed?` @sealed`:``,c=t.tableFields.map(e=>{let t=e.array?`[${e.fieldType}]`:e.fieldType,n=e.nullable?``:`!`,r=e.primaryKey?` @primaryKey`:``,i=e.indexed?` @indexed`:``;return`\n\t${e.fieldName}: ${t}${n}${r}${i}`}).join(``);return`${r}\ntype ${t.tableName} @table${a}${o}${s} {${c}\n}\n`}),e()},[r,e,n]);return(0,z.jsx)(V,{...i,children:(0,z.jsxs)(`form`,{id:`instance-new-app-table-form`,name:`instance-new-app-table-form`,onSubmit:o(f),children:[(0,z.jsx)(U,{control:a,name:`tableName`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-4`,children:[(0,z.jsx)(G,{children:`Table Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,className:`my-1`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`h3`,{className:`text-lg`,children:`Table Fields`}),c.map((e,t)=>(0,z.jsxs)(`div`,{className:`p-4 my-2 border rounded-lg`,children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-4`,children:[(0,z.jsx)(U,{control:a,name:`tableFields.${t}.fieldName`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Field Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`tableFields.${t}.fieldType`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Type`}),(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:e.onChange,defaultValue:e.value,children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{})}),(0,z.jsxs)(Ic,{children:[(0,z.jsx)($,{value:`Any`,children:`Any`}),(0,z.jsx)($,{value:`BigInt`,children:`BigInt`}),(0,z.jsx)($,{value:`Blob`,children:`Blob`}),(0,z.jsx)($,{value:`Boolean`,children:`Boolean`}),(0,z.jsx)($,{value:`Bytes`,children:`Bytes`}),(0,z.jsx)($,{value:`Date`,children:`Date`}),(0,z.jsx)($,{value:`Float`,children:`Float`}),(0,z.jsx)($,{value:`ID`,children:`ID`}),(0,z.jsx)($,{value:`Int`,children:`Int`}),(0,z.jsx)($,{value:`Long`,children:`Long`}),(0,z.jsx)($,{value:`String`,children:`String`})]})]})}),(0,z.jsx)(K,{})]})})]}),(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center mt-2 gap-x-2 md:gap-x-4`,children:[(0,z.jsx)(U,{control:a,name:`tableFields.${t}.indexed`,render:({field:e})=>(0,z.jsxs)(W,{className:`inline-flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`flex-1 py-2.5`,children:`Indexed`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`tableFields.${t}.primaryKey`,render:({field:e})=>(0,z.jsxs)(W,{className:`inline-flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`flex-1 py-2.5`,children:`Primary Key`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`tableFields.${t}.nullable`,render:({field:e})=>(0,z.jsxs)(W,{className:`inline-flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`flex-1 py-2.5`,children:`Nullable`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`tableFields.${t}.array`,render:({field:e})=>(0,z.jsxs)(W,{className:`inline-flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`flex-1 py-2.5`,children:`Array`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsxs)(g,{type:`button`,variant:`destructiveGhost`,className:`rounded-full`,onClick:()=>u(t),children:[(0,z.jsx)(cn,{}),` Remove Field`]})]})]},e.id)),(0,z.jsxs)(g,{variant:`ghost`,type:`button`,className:`w-full`,onClick:d,children:[(0,z.jsx)(Rt,{}),` Add Another Field`]}),(0,z.jsx)(`hr`,{className:`my-6 border-gray-600`}),(0,z.jsx)(U,{control:a,name:`databaseName`,render:({field:e})=>(0,z.jsx)(lm,{field:e})}),(0,z.jsx)(U,{control:a,name:`expiration`,render:({field:e})=>(0,z.jsx)(gm,{field:e})}),(0,z.jsx)(U,{control:a,name:`enableRest`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsxs)(G,{className:`flex-1 py-2.5`,children:[`Make available as a REST endpoint (add`,` `,(0,z.jsx)(`code`,{className:`text-muted-foreground italic ml-1`,children:`@export`}),`)`]}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a,name:`sealed`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-5`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsxs)(G,{className:`flex-1 py-2.5`,children:[`Sealed (add`,(0,z.jsx)(`code`,{className:`text-muted-foreground italic ml-1`,children:`@sealed`}),` to ignore unspecified properties)`]}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(`div`,{className:`text-muted-foreground italic text-sm pb-2`,children:[`There are even more directives available to you when editing your schema.graphql by hand! You can read more about them`,` `,(0,z.jsx)(`a`,{className:`underline`,target:`_blank`,rel:`noreferrer`,href:`https://docs.harperdb.io/docs/developers/applications/defining-schemas`,children:`in our documentation`}),`.`]}),(0,z.jsxs)(`div`,{className:`flex w-full gap-4 sticky -bottom-6 pb-6 pt-4 bg-background dark:bg-black`,children:[(0,z.jsxs)(g,{type:`button`,variant:`ghost`,className:`w-full rounded-full`,onClick:e,children:[(0,z.jsx)($n,{}),` Cancel`]}),(0,z.jsxs)(g,{variant:`positive`,type:`submit`,className:`w-full rounded-full`,disabled:!s.isValid,children:[(0,z.jsx)(Rt,{}),` New Table`]})]})]})})}function vm(){let{value:e,trigger:t}=xf(`ShowNewTableModal`,!1);return(0,z.jsx)(J,{onOpenChange:(0,R.useCallback)(()=>{Sf(`ShowNewTableModal`,!1),tm(t)},[t]),open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`New Table`}),(0,z.jsx)(ls,{children:`Creating a table is the basis of a data-driven application and can immediately be used as RESTful endpoints. This can also be configured as a caching table and extended and customized for specific endpoint behavior.`})]}),(0,z.jsx)(_m,{})]})})}function ym(){let{value:e,trigger:t}=xf(`ShowRedeployApplicationModal`,!1),n=xt(),r=B(),{openedEntry:i}=lf(),a=i?.package,{mutate:o,isPending:s}=Rp(),c=I({defaultValues:{applicationUrl:a,installCommand:``}}),{control:l,handleSubmit:u,reset:d}=c;(0,R.useEffect)(()=>{d({applicationUrl:a})},[d,a]);let f=(0,R.useCallback)(()=>{Sf(`ShowRedeployApplicationModal`,!1),tm(t),d({applicationUrl:a})},[d,a,t]),p=(0,R.useCallback)((e,t)=>{if(!i)return;f();let a=L.loading(`Redeploying...`);o({applicationName:i.project,applicationUrl:e,installCommand:t,...r},{onSuccess:()=>{L.success(`Application ${i.project} redeployed successfully`,{id:a}),n.invalidateQueries({queryKey:[r.entityId,`get_components`],refetchType:`active`})},onError:()=>{L.dismiss(a)}})},[o,i,r,n,f]),m=({applicationUrl:e,installCommand:t})=>{e&&p(e,t)};return(0,z.jsx)(J,{onOpenChange:f,open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Redeploy Package`}),(0,z.jsx)(ls,{children:`Redeploy this package?`})]}),(0,z.jsx)(`div`,{children:(0,z.jsx)(V,{...c,children:(0,z.jsxs)(`form`,{id:`instance-redeploy-app-form`,name:`instance-redeploy-app-form`,className:`flex flex-col w-full gap-4`,onSubmit:u(m),children:[(0,z.jsx)(U,{control:l,name:`applicationUrl`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Package Reference`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:l,name:`installCommand`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Install Command`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,placeholder:`npm install`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(g,{variant:`positiveOutline`,type:`submit`,className:`w-full rounded-full`,disabled:s,children:[(0,z.jsx)(wt,{}),` Redeploy Application`]}),(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`w-full rounded-full`,onClick:f,disabled:s,children:`Cancel`})]})})})]})})}function bm(e){return Mf(e.split(`/`).slice(0,-1))}function xm(e,t){return Mf(bm(e),t)}function Sm(){let{value:e,trigger:t}=xf(`ShowRenameFileModal`,!1),n=(0,R.useCallback)(()=>{Sf(`ShowRenameFileModal`,!1),tm(t)},[t]),{openedEntry:r,entryExists:i}=lf(),a=oe.object({name:oe.string().nonempty({error:`Please enter a valid name.`}).regex(/^[a-zA-Z0-9_\- .]*$/,{error:`Names can only contain letters, numbers, underscores, hyphens, periods, and spaces.`}).max(50,{error:`Names cannot be longer than 50 characters.`}).trim().refine(e=>e!==r?.name,{error:`Please enter a new name.`})}),[o,s]=(0,R.useState)(!1),c=vf(),l=I({resolver:j(a)});(0,R.useEffect)(()=>{r?.name&&l.reset({name:r?.name})},[l,r?.name]);let u=(0,R.useCallback)(async e=>{if(!r)return;let t=xm(r.path,e.name);if(i(t)){L.error(`${Pf(r)?`Directory`:`File`} already exists!`,{description:t});return}s(!0),await c([{from:r.path,to:t}]),n(),l.reset(),s(!1)},[n,i,l,r,c,s]),d=(0,R.useCallback)(()=>{n(),l.reset()},[n,l]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,className:`text-popover-foreground`,children:(0,z.jsx)(V,{...l,children:(0,z.jsxs)(`form`,{id:`instance-rename-app-file-form`,name:`instance-rename-app-file-form`,onSubmit:l.handleSubmit(u),children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Rename File`}),(0,z.jsx)(ls,{children:r?.path})]}),(0,z.jsx)(U,{control:l.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`my-2`,children:[(0,z.jsx)(G,{children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{disabled:o,type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{type:`button`,variant:`ghostOutline`,className:`rounded-full`,onClick:d,children:`Cancel`}),(0,z.jsxs)(g,{variant:`positiveOutline`,type:`submit`,className:`rounded-full`,disabled:o||!l.formState.isDirty||!l.formState.isValid,children:[(0,z.jsx)(Ve,{}),` Rename`]})]})})]})})})})}function Cm(){let e=ba(),t=N({strict:!1}),{toggle:n,toggled:r}=sf(`ApplicationsSidebarOpened`,!0);return e?(0,z.jsxs)(em,{children:[(0,z.jsx)(`aside`,{id:`file-explorer-sidebar`,className:x(`pt-[calc(--spacing(32))] w-56 fixed top-0 left-0 bottom-0 z-30`,`bg-violet-50 border-r border-violet-200 shadow shadow-black/10`,`dark:bg-grey-700 dark:border-grey-600 dark:shadow-black`,`transition-transform -translate-x-full`,r?`translate-x-0`:`md:translate-x-0`),"aria-label":`Sidebar`,children:(0,z.jsx)(Qf,{})}),(0,z.jsxs)(`div`,{className:x(`applications-content`,`overflow-y-auto overflow-x-hidden`,`fixed top-32 right-0 bottom-0 left-0`,`transition-[left]`,`md:left-56`,r&&`sm:left-56`),children:[(0,z.jsx)(Up,{}),(0,z.jsx)(ap,{toggledSidebar:r,toggleSidebar:n})]}),(0,z.jsx)(rm,{}),(0,z.jsx)(vm,{}),(0,z.jsx)(im,{}),(0,z.jsx)(sm,{}),(0,z.jsx)(ym,{}),(0,z.jsx)(Sm,{})]}):(0,z.jsx)(kt,{to:Al(t,`databases`)})}function wm(e){return[F({getParentRoute:()=>e,path:`/`,head:()=>({meta:[{title:`Applications — Harper Fabric`}]}),component:Cm})]}async function Tm({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_certificates`});return t}function Em(e){return P({queryKey:[e.entityId,`list_certificates`],queryFn:()=>Tm(e)})}var Dm=[{header:`Certificate Name`,accessorKey:`name`,enableSorting:!0},{header:`Issuer`,accessorKey:`details.issuer`,enableSorting:!0},_r().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 Om({className:e,...t}){return(0,z.jsx)(Ft,{"data-slot":`switch`,className:d(`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-input/80 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,z.jsx)(Ut,{"data-slot":`switch-thumb`,className:d(`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`)})})}function km({className:e,...t}){return(0,z.jsx)(`textarea`,{"data-slot":`input`,className:d(`border-input file:text-foreground placeholder:text-muted-foreground selection:bg-purple
20
20
  selection:text-primary-foreground
21
21
  dark:aria-invalid:outline-destructive dark:aria-invalid:ring-destructive/50 ring-ring/10
22
22
  dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 aria-invalid:outline-destructive/60
@@ -24,11 +24,11 @@ Check the console for the full list.`:``)})),t(``)},[f,s,m,h,o,l,a]),{getRootPro
24
24
  flex w-full min-w-0 rounded-md border bg-white text-foreground dark:bg-grey-700 dark:text-white
25
25
  file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium
26
26
  focus-visible:ring-1 focus-visible:outline-none focus-visible:ring-purple disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50
27
- 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 Om({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`add_certificate`,...t});return n}var km=D({name:w().min(1,`Name is required`),certificate:w().min(1,`Certificate is required`),private_key:w().optional(),is_authority:E().default(!1),hosts:w().optional(),uses:w().optional()});function Am(){return M({mutationFn:({instanceParams:e,certificateParams:t})=>Om(e,t)})}function jm({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=I({resolver:j(km),defaultValues:{name:``,certificate:``,private_key:``,is_authority:!1,hosts:``,uses:``}}),i=B(),{mutate:a,isPending:o}=Am(),s=(0,R.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(),L.success(`Certificate added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,R.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...r,children:(0,z.jsxs)(`form`,{id:`instance-add-certificate-form`,name:`instance-add-certificate-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Add New Certificate`}),(0,z.jsx)(ls,{children:`Enter the details of your Certificate below.`})]}),(0,z.jsx)(U,{control:r.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`is_authority`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex flex-row items-center justify-between rounded-lg border border-gray-800 p-3 shadow-sm`,children:[(0,z.jsx)(`div`,{className:`space-y-0.5`,children:(0,z.jsx)(G,{children:`Is Authority`})}),(0,z.jsx)(H,{children:(0,z.jsx)(Em,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,z.jsx)(U,{control:r.control,name:`certificate`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Certificate`}),(0,z.jsx)(H,{children:(0,z.jsx)(Dm,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`hosts`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Hosts (optional)`}),(0,z.jsx)(Gc,{children:`Comma-separated list of hostnames this certificate is valid for.`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. example.com, *.example.com`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`uses`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Uses (optional)`}),(0,z.jsx)(Gc,{children:`Comma-separated list of intended uses, e.g. "https, operations, wss".`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. https, operations, wss`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`private_key`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Private Key (optional)`}),(0,z.jsx)(Gc,{children:`PEM formatted private key string.`}),(0,z.jsx)(H,{children:(0,z.jsx)(Dm,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{variant:`destructiveOutline`,type:`button`,className:`rounded-full`,onClick:c,disabled:o,children:`Cancel`}),(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:o||!r.formState.isDirty||!r.formState.isValid,children:[(0,z.jsx)(Pe,{}),` Add Certificate`]})]})})]})})})})}async function Mm({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`remove_certificate`,name:t});return n}function Nm(){return M({mutationFn:({instanceParams:e,name:t})=>Mm(e,t)})}function Pm({data:e,isModalOpen:t,closeModal:n,onSelectCertificate:r,onChangesSaved:i}){let{name:a}=e,o=B(),{mutate:s,isPending:c}=Nm(),[l,u]=(0,R.useState)(!1),d=(0,R.useCallback)(()=>{u(!0)},[]),f=(0,R.useCallback)(()=>{s({instanceParams:o,name:a},{onSuccess:()=>{L.success(`Certificate removed successfully!`),r(void 0),i()}})},[a,s,o,i,r]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(J,{onOpenChange:n,open:t,children:(0,z.jsx)(Y,{className:`sm:max-w-[800px] max-h-[90vh] overflow-y-auto`,"aria-describedby":void 0,children:(0,z.jsxs)(`div`,{className:`grid gap-4 my-4`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsxs)(Z,{children:[`View Certificate: `,a]}),(0,z.jsx)(ls,{children:`Details of the selected certificate.`})]}),(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 text-sm bg-gray-900/50 p-4 rounded-lg border border-gray-800`,children:[(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Issuer`}),(0,z.jsx)(`p`,{className:`text-gray-400 break-all`,children:e.details.issuer||`N/A`})]}),(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Subject`}),(0,z.jsx)(`p`,{className:`text-gray-400 break-all`,children:e.details.subject||`N/A`})]}),e.details.subject_alt_name&&(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Subject Alternative Name`}),(0,z.jsx)(`p`,{className:`text-gray-400 break-all`,children:e.details.subject_alt_name})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Valid From`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.details.valid_from?new Date(e.details.valid_from).toLocaleString():`N/A`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Valid To (Expires At)`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.details.valid_to?new Date(e.details.valid_to).toLocaleString():`N/A`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Serial Number`}),(0,z.jsx)(`p`,{className:`text-gray-400 font-mono text-xs break-all`,children:e.details.serial_number||`N/A`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Private Key Name`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.private_key_name||`N/A`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Is Authority`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.is_authority?`Yes`:`No`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Is Self-Signed`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.is_self_signed?`Yes`:`No`})]}),e.hosts&&e.hosts.length>0&&(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Hosts`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.hosts.join(`, `)})]}),(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Uses`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.uses?.join(`, `)||`N/A`})]})]}),(0,z.jsxs)(`div`,{className:`space-y-2`,children:[(0,z.jsx)(Ya,{children:`Certificate Content`}),(0,z.jsx)(Dm,{autoComplete:`off`,autoCapitalize:`off`,rows:8,readOnly:!0,className:`font-mono text-xs`,value:e.certificate})]})]}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{type:`button`,variant:`destructiveOutline`,className:`rounded-full`,onClick:d,disabled:c,children:`Remove Certificate`}),(0,z.jsx)(g,{type:`button`,variant:`defaultOutline`,className:`rounded-full`,onClick:()=>n(),children:`Close`})]})})]})})}),(0,z.jsx)(us,{isModalOpen:l,setIsModalOpen:u,deletionConfirmed:f,deletionPending:c,typeOfThingBeingDeleted:`certificate`,presentParticiple:`Removing`,transitiveVerb:`Remove`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function Fm(){let e=De(),{certName:t}=N({strict:!1}),{data:n,refetch:r,isFetching:i,isRefetching:a}=A(wm(B())),o=(0,R.useMemo)(()=>n?.find(e=>e.name===t),[n,t]),s=(0,R.useCallback)(n=>{let r=n?.original?.name;e({to:[t?`..`:``,r].filter(Boolean).join(`/`)})},[t,e]),c=!!t&&!!o,[l,u]=(0,R.useState)(!1),d=(0,R.useCallback)(()=>{u(!0)},[u]),f=ql(r);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Hl,{columns:Tm,data:n||[],isFetching:i,onRowClick:s,children:[(0,z.jsx)(k,{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,z.jsxs)(g,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:d,accessKey:`a`,disabled:l,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),l&&(0,z.jsx)(jm,{isModalOpen:l,onChangesSaved:r,setIsModalOpen:u}),c&&(0,z.jsx)(Pm,{isModalOpen:c,closeModal:s,data:o,onSelectCertificate:s,onChangesSaved:r})]})}function Im(){return(0,z.jsx)(Cd,{})}var Lm=`flex items-center p-2 rounded-lg group`,Rm={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-gray-700`},zm={className:`text-black bg-white pointer-events-none cursor-default`};function Bm(){let e=N({strict:!1}),{version:t}=zn({strict:!1}),n=Us(`4.6.0`,t),{clusterId:r}=e,i=ba(),{data:a}=A(ro(r,!1));a===void 0||ys(a);let o=i&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Ol(e,`config/users`),className:Lm,inactiveProps:Rm,activeProps:zm,children:[(0,z.jsx)(En,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Users`})]})}),(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Ol(e,`config/roles`),className:Lm,inactiveProps:Rm,activeProps:zm,children:[(0,z.jsx)(Cr,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Roles`})]})}),n&&(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Ol(e,`config/certificates`),className:Lm,inactiveProps:Rm,activeProps:zm,children:[(0,z.jsx)(Hn,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Certificates`})]})}),!1,n&&(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Ol(e,`config/ssh-keys`),className:Lm,inactiveProps:Rm,activeProps:zm,children:[(0,z.jsx)(gr,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`SSH Keys`})]})})]});return(0,z.jsxs)(`div`,{className:`md:grid gap-4 md:grid-cols-12 min-h-[calc(100vh-(--spacing(36)))]`,children:[(0,z.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,z.jsx)(Vm,{params:e,children:o}),(0,z.jsx)(Hm,{params:e,children:o})]}),(0,z.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9 md:pt-4`,children:(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:(0,z.jsx)(Er,{})})})]})}function Vm({params:e,children:t}){return(0,z.jsxs)(`div`,{className:`hidden md:block pl-4 pt-4`,children:[(0,z.jsxs)(k,{to:Ol(e,`config`),className:Lm,activeOptions:{exact:!0},inactiveProps:Rm,activeProps:zm,children:[(0,z.jsx)(Kt,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Overview`})]}),t&&(0,z.jsx)(`ul`,{className:`border-t border-gray-700 pt-4 mt-4 space-y-2`,children:t})]})}function Hm({params:e,children:t}){return(0,z.jsxs)(`ul`,{className:`flex space-x-2 md:hidden py-2 px-4`,children:[(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Ol(e,`config`),className:Lm,activeOptions:{exact:!0},inactiveProps:Rm,activeProps:zm,children:[(0,z.jsx)(Kt,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Overview`})]})}),t]})}async function Um({clusterId:e,instanceId:t}){return null}function Wm(e){return P({queryKey:[e.clusterId,e.instanceId],queryFn:()=>Um(e),retry:!1})}var Gm=({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,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Harper Version`}),(0,z.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,z.jsx)(jc,{className:`w-10`}):n?(0,z.jsx)(`a`,{href:n,target:`_blank`,className:`underline hover:text-blue-300`,rel:`noopener noreferrer`,children:t.version}):t?.version||`Unknown`})]})},Km=({loading:e,timestamp:t})=>{let n=t?new Date(t).toLocaleString():`Never`;return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Last Deployed`}),(0,z.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,z.jsx)(jc,{className:`w-24`}):n})]})};async function qm({instanceClient:e,...t}){let{data:n}=await e.post(`/`,{operation:`set_configuration`,...t});return n}function Jm({onRestartedSuccessfully:e}={}){let t=B(),r=xt(),[i,o]=(0,R.useState)(!1);return{onConfigUpdate:(0,R.useCallback)(async i=>{o(!0);let s=!1,l={duration:6e4,action:{label:`Cancel`,onClick:()=>{s=!0}}},d=L.loading(`Restarting`,{...l,description:(0,z.jsx)(Ys,{animated:!0,width:`0%`})}),f=t.entityType===`cluster`?await no(t.entityId):null,m=t.entityType===`cluster`?f?.instances||[]:[{id:t.entityId,status:`RUNNING`}],g=!!f&&c.checkForFabricConnect(f.id),_=t.entityType===`cluster`?m.filter(e=>e.status===`RUNNING`).map(e=>a({id:e.id,forceFabricConnect:g,operationsUrl:n(e)})).reverse():[t.instanceClient],v=0;if(_.length)for(let e=0;e<_.length;e++){let t=_[e];if(!s){L.loading(`Updating Instance ${e+1} of ${_.length}`,{...l,id:d,description:(0,z.jsx)(Ys,{animated:!0,width:(e===0?0:e/_.length*100)+`%`})});try{await h({instanceClient:t}),await qm({...i,instanceClient:t}),await Qf({operation:`restart_service`,replicated:!1,instanceClient:t}),v+=1}catch{e+1!==_.length&&(L.loading(`Failed Restarting Instance ${e+1} of ${_.length}`,{...l,id:d,description:`We will carry on momentarily.`}),await p(3e3))}}}if(o(!1),r.invalidateQueries({queryKey:[t.entityId,`get_configuration`]}),s)L.error(`Cancelled`,{id:d,description:`The config update was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});else if(m.length===v)e?.(),L.success(`Success`,{id:d,description:`Your configuration has been updated successfully!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});else{let e=u(m.length,`instance`,`instances`),t=u(v,`"RUNNING" instance was`,`"RUNNING" instances were`);L.error(`Error`,{id:d,description:`Failed to fully update cluster.
28
- `+([m.length===0&&`No instances were found within the cluster to restart.`,v===0&&`No instances were in a "RUNNING" state of ${e}.`,m.length!==v&&`Only ${t} restarted of ${e}.`].filter(Ni).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}},[t,e,r]),isPending:i}}function Ym({entityId:e,instanceClient:t}){return P({queryKey:[e,`get_configuration`],queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_configuration`});return e}})}function Xm({entityId:e,instanceClient:t}){return P({queryKey:[e,`registration_info`],staleTime:6e4,gcTime:5e3,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`registration_info`});return e}})}function Zm({entityId:e,instanceClient:t},n){return P({queryKey:[e,`get_usage_licenses`],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 Qm={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 $m(e,t,n){if(JSON.stringify(t)===JSON.stringify(n))return!1;let r=e.split(`.`),i=Qm;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 eh(e,t=Qm){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}else if(typeof a==`object`&&a){let e=eh(i,a);e!==void 0&&(typeof e!=`object`||Object.keys(e).length>0)&&(n[r]=e)}else n[r]=i}return n}function th(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=th(r,a);Object.keys(e).length>0&&(n[i]=e)}else JSON.stringify(r)!==JSON.stringify(a)&&(n[i]=a)}return n}function nh(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,nh(i,a)):n[a]=i}return n}var rh=({children:e})=>(0,z.jsx)(z.Fragment,{children:e});function ih(){let{clusterId:e,instanceId:t}=N({strict:!1}),{data:n,isLoading:r}=A(Wm({clusterId:e,instanceId:t})),i=B(),{version:a}=zn({strict:!1}),{data:o}=A(Zm(i,!1));n?.cluster;let s=n?.instance,{data:c,isLoading:l}=A(Xm(i)),{data:u,isLoading:d}=A(Ym(i)),f=ba(),{data:p,isLoading:m}=A(Zp({...i,enabled:f})),h=(0,R.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]),_=(0,R.useMemo)(()=>u?eh(u):null,[u]),v=iu(),[y,b]=(0,R.useState)(!1),[x,S]=(0,R.useState)(``),[C,ee]=(0,R.useState)(null),[w,te]=(0,R.useState)([]),{onConfigUpdate:ne,isPending:T}=Jm();(0,R.useEffect)(()=>{_&&!y&&(S(JSON.stringify(_,null,4)),ee(null),te([]))},[_,y]);let E=(0,R.useCallback)(e=>{if(S(e||``),e)try{let t=JSON.parse(e);ee(null);let n=[],r=(e,t,i=``)=>{for(let a in e){let o=i?`${i}.${a}`:a,s=e[a],c=t?.[a];$m(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||$m(a,void 0,t[r])&&n.push(a)}};_&&r(t,_),te(n)}catch(e){ee(e.message),te([])}},[u]),re=(0,R.useCallback)(()=>{if(!(C||w.length>0))try{ne(nh(th(_,JSON.parse(x)))),b(!1)}catch(e){ee(e.message)}},[x,C,ne,_,w.length]);return(0,R.useMemo)(()=>[],[o,s]),(0,z.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,z.jsx)(rh,{children:(0,z.jsxs)(`dl`,{className:`grid grid-cols-1 sm:grid-cols-3`,children:[(0,z.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,z.jsx)(Gm,{loadingRegistration:l,registrationInfo:c})}),(0,z.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,z.jsx)(Km,{loading:m,timestamp:h})}),(0,z.jsx)(`div`,{className:`px-4 pb-4 text-right sm:col-span-1 sm:px-0`,children:(0,z.jsx)(np,{targetNoun:`Instance`,instanceClient:i.instanceClient,operation:`restart`})})]})}),(0,z.jsxs)(`div`,{className:`flex-none flex items-center justify-between mb-2`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`h3`,{className:`font-bold text-sm/6`,children:[`Instance Config `,y?`(editing)`:`(read only)`]}),!t&&!1]}),(0,z.jsx)(`div`,{className:`flex items-center gap-2 pr-4`,children:y?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(g,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>b(!1),children:[(0,z.jsx)(An,{className:`w-4 h-4 mr-1`}),` Cancel`]}),(0,z.jsxs)(g,{size:`sm`,disabled:!!C||w.length>0||T,onClick:re,children:[(0,z.jsx)(Pe,{className:`w-4 h-4 mr-1`}),` `,T?`Saving...`:`Save & Restart`]})]}):(0,z.jsxs)(g,{size:`sm`,onClick:()=>b(!0),children:[(0,z.jsx)(Ae,{className:`w-4 h-4 mr-1`}),` Edit`]})})]}),C&&(0,z.jsxs)(hp,{variant:`destructive`,className:`mb-4`,children:[(0,z.jsx)(Fe,{className:`h-4 w-4`}),(0,z.jsx)(gp,{children:`Invalid JSON`}),(0,z.jsx)(_p,{children:C})]}),w.length>0&&(0,z.jsxs)(hp,{variant:`destructive`,className:`mb-4`,children:[(0,z.jsx)(Fe,{className:`h-4 w-4`}),(0,z.jsx)(gp,{children:`Restricted Configuration`}),(0,z.jsxs)(_p,{children:[`The following fields cannot be modified via Studio:`,(0,z.jsx)(`ul`,{className:`list-disc ml-4 mt-2`,children:w.map(e=>(0,z.jsx)(`li`,{children:(0,z.jsx)(`code`,{children:e})},e))})]})]}),(0,z.jsx)(`div`,{className:`grow`,children:d?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(jc,{className:`w-full`}),(0,z.jsx)(jc,{className:`w-full`}),(0,z.jsx)(jc,{className:`w-1/2`})]}):(0,z.jsx)(pr,{className:`w-full min-h-full h-96`,language:`json`,theme:v,options:{readOnly:!y,scrollBeyondLastLine:!1},value:y?x:JSON.stringify(_,null,4),onChange:E})})]})}var ah=_r(),oh=[{header:`Role`,accessorKey:`role`,enableSorting:!1},ah.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>Gl((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),ah.display({header:`Updated`,id:`__updatedtime__`,enableSorting:!1,cell:e=>Gl((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}),ah.display({header:`Super User`,id:`super_user`,enableSorting:!1,cell:e=>e.row.original.permission.super_user?`Yes`:`No`}),ah.display({header:`Structure User`,id:`structure_user`,enableSorting:!1,cell:e=>e.row.original.permission.structure_user?`Yes`:`No`})];async function sh(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 ch(){return M({mutationFn:sh})}var lh=D({role:w().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:E(),structure_user:E()});function uh({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=I({resolver:j(lh),defaultValues:{role:``,super_user:!1,structure_user:!1}}),i=B(),{mutate:a,isPending:o}=ch(),s=(0,R.useCallback)(async e=>{e&&a({role:e.role,super_user:e.super_user,structure_user:e.structure_user,...i},{onSuccess:()=>{r.reset(),t(e.role),L.success(`Role added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,R.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...r,children:(0,z.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,z.jsxs)(cs,{className:`md:col-span-2`,children:[(0,z.jsx)(Z,{children:`Add New Role`}),(0,z.jsx)(ls,{children:`After adding the role, you will be able to edit the per-table permissions.`})]}),(0,z.jsx)(U,{control:r.control,name:`role`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`super_user`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Super User`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`structure_user`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Structure User`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{className:`md:col-span-2`,children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{variant:`destructiveOutline`,type:`button`,className:`rounded-full`,onClick:c,disabled:o,children:`Cancel`}),(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:o,children:[(0,z.jsx)(Pe,{}),` Add Role`]})]})})]})})})})}function dh({entityId:e,instanceClient:t}){return P({queryKey:[e,`list_roles`],queryFn:()=>fh({instanceClient:t}),refetchInterval:1e4})}async function fh({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_roles`});return t}function ph({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;for(let n in e){i[n]={tables:{}};for(let a in e[n]){let o=e[n][a].attributes.map(e=>e.attribute).sort();if(c){let e=t&&t[n]&&t[n].tables[a];i[n].tables[a]=mh(e,o,r)}else{let e=t&&t[n]&&t[n].tables[a];i[n].tables[a]=hh(e,o,r)}}}return i}function mh(e,t,n){let r=e&&Vs(e.attribute_restrictions,`attribute_name`);return{read:e?e.read:!0,insert:e?e.insert:!0,update:e?e.update:!0,delete:e?e.delete:!0,attribute_restrictions:t.filter(()=>n).map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:e?e.read:!0,insert:n?n.insert:e?e.insert:!0,update:n?n.update:e?e.update:!0,delete:n?n.delete:e?e.delete:!0}})}}function hh(e,t,n){let r=e&&Vs(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}}async function gh({id:e,permission:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`alter_role`,id:e,permission:t});return r}function _h(){return M({mutationFn:gh})}async function vh({id:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_role`,id:e});return n}function yh(){return M({mutationFn:vh})}async function bh({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`describe_all`});return t}function xh(e){return P({queryKey:[e.entityId,`describe_all`],queryFn:()=>bh(e),staleTime:6e4,gcTime:5e3,retry:!1})}function Sh({data:e,instanceId:t,clusterId:n,isModalOpen:r,closeModal:i,onSelectRole:a,onChangesSaved:o}){let s=iu(),{role:c,permission:l}=e,[u,d]=(0,R.useState)(JSON.stringify(l,null,2)),f=B(),[p,m]=(0,R.useState)(!0),{data:h}=A(xh(f)),{data:_}=A(Xm(f)),v=bi(t??n).user?.role?.role===e.role,[y,b]=Tu(u?.includes(`attribute_name`)),{mutate:x,isPending:S}=_h(),{mutate:C}=yh(),ee=(0,R.useCallback)(e=>{m(e.length===0)},[m]),w=(0,R.useMemo)(()=>JSON.stringify(h&&_&&ph({instanceDatabaseMap:h,currentRolePermissions:u&&Hi(u)||l,version:_.version,showAttributes:y}),null,2),[l,h,_,y]);(0,R.useEffect)(()=>{d(w)},[w]);let te=(0,R.useCallback)(t=>{if(t){let n=JSON.parse(t);if(n.super_user||n.structure_user||n.cluster_user)for(let e in n)(e!==`super_user`&&e!==`structure_user`&&e!==`cluster_user`||n[e]===!1)&&delete n[e];x({id:e.id,permission:n,...f},{onSuccess:()=>{L.success(`Role updated successfully!`),a(void 0),o()}})}},[x,e.id,f,o,a]),ne=(0,R.useCallback)(()=>{C({id:e.id,...f},{onSuccess:()=>{L.success(`Role deleted successfully!`),a(void 0),o()}})},[e.id,C,f,o,a]),T=(0,R.useCallback)(()=>{u&&p&&te(u)},[u,te,p]),E=(0,R.useCallback)(()=>{ne()},[ne]);return(0,z.jsx)(J,{onOpenChange:i,open:r,children:(0,z.jsxs)(Y,{className:`sm:max-w-[750px]`,children:[(0,z.jsxs)(Z,{children:[v?`View`:`Edit`,` Role "`,c,`"`]}),(0,z.jsx)(ls,{children:v?`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.`}),w?(0,z.jsx)(Mn,{theme:s,height:`400px`,defaultLanguage:`json`,value:u,options:v?{readOnly:!0}:void 0,onValidate:ee,onChange:d,defaultValue:w}):(0,z.jsx)(jc,{}),(0,z.jsx)(X,{children:!v&&(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{type:`button`,variant:`destructiveOutline`,className:`rounded-full`,onClick:E,disabled:S,children:`Delete Role`}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsxs)(Ya,{className:`flex`,children:[(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,checked:y,onChange:b}),(0,z.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Pick Attributes`})]}),(0,z.jsx)(g,{variant:`submit`,className:`rounded-full`,onClick:T,disabled:S||!p,children:`Save Changes`})]})})]})})}function Ch(){let e=De(),{clusterId:t,instanceId:n,roleId:r}=N({strict:!1}),{data:i,refetch:a,isFetching:o,isRefetching:s}=je(dh(B())),c=(0,R.useMemo)(()=>i?.find(e=>e.id===r),[i,r]),l=(0,R.useCallback)(t=>{e({to:[r?`..`:``,t].filter(Boolean).join(`/`)})},[r,e]),u=!!r&&!!c,[d,f]=(0,R.useState)(!1),p=(0,R.useCallback)(()=>{f(!0)},[f]),m=(0,R.useCallback)(e=>{a(),f(!1),l(e)},[l,a]),h=(0,R.useCallback)(e=>{l(e.original.role)},[l]),_=(0,R.useCallback)(()=>{l(void 0)},[l]),v=ql(a);return(0,z.jsxs)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,z.jsxs)(Hl,{columns:oh,data:i,isFetching:o,onRowClick:h,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:v,accessKey:`r`,disabled:o||s,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:p,accessKey:`a`,disabled:d,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,z.jsx)(uh,{isModalOpen:d,onChangesSaved:m,setIsModalOpen:f}),u&&(0,z.jsx)(Sh,{instanceId:n,clusterId:t,isModalOpen:u,closeModal:_,data:c,onSelectRole:l,onChangesSaved:()=>a()})]})}async function wh({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_ssh_keys`});return t}function Th(e){return P({queryKey:[e.entityId,`list_ssh_keys`],queryFn:()=>wh(e)})}var Eh=[{header:`SSH Key Name`,accessorKey:`name`,enableSorting:!1}];async function Dh({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_ssh_known_hosts`});return t}function Oh(e){return P({queryKey:[e.entityId,`get_ssh_known_hosts`],queryFn:()=>Dh(e)})}var kh=D({known_hosts:w().trim()});async function Ah(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 jh(){return M({mutationFn:Ah})}function Mh(){let e=B(),{data:t}=je(Oh(e)),n=I({resolver:j(kh),defaultValues:{known_hosts:t?.known_hosts||``}}),{mutate:r,isPending:i}=jh(),a=(0,R.useCallback)(async t=>{let{known_hosts:i}=t;i&&r({known_hosts:i.trim()+`
29
- `,...e},{onSuccess:()=>{n.reset(t),L.success(`Known hosts saved!`)}})},[r,n,e]);return(0,z.jsx)(V,{...n,children:(0,z.jsx)(`form`,{id:`instance-edit-known-hosts-form`,name:`instance-edit-known-hosts-form`,onSubmit:n.handleSubmit(a),className:`grid my-4 md:grid-cols-2 overflow-x-auto rounded-md`,children:(0,z.jsx)(U,{control:n.control,name:`known_hosts`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2 gap-0`,children:[(0,z.jsx)(G,{className:`bg-muted dark:bg-black-dark py-3 px-2 m-0 text-left font-medium whitespace-nowrap`,children:`Known Hosts`}),(0,z.jsxs)(`div`,{className:`border border-grey-700 p-2 pb-3`,children:[(0,z.jsx)(Gc,{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,z.jsx)(H,{children:(0,z.jsx)(Dm,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:10,...e})}),(0,z.jsx)(K,{}),(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full mt-2`,disabled:i||!n.formState.isDirty||!n.formState.isValid,children:[(0,z.jsx)(Pe,{}),` `,i?`Saving`:`Save`,` Known Hosts`,i?`...`:``]})]})]})})})})}var Nh=D({name:w().trim().min(1).regex(/^[a-zA-Z0-9-_]*$/,{error:`Can only contain letters, numbers, dashes and underscores.`}),key:w().min(1).trim(),host:w().min(1).trim(),hostname:w().min(1).trim(),known_hosts:w().trim().optional()});async function Ph(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 Fh(){return M({mutationFn:Ph})}function Ih({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=I({resolver:j(Nh),defaultValues:{name:``,key:``,host:``,hostname:``,known_hosts:``}}),i=B(),{mutate:a,isPending:o}=Fh(),s=(0,R.useCallback)(async e=>{if(e){let{name:o,key:s,host:c,hostname:l,known_hosts:u}=e;a({name:o,key:s.trim()+`
30
- `,host:c,hostname:l,known_hosts:u||void 0,...i},{onSuccess:()=>{r.reset(),t(),L.success(`SSH Key added successfully!`),n(!1)}})}},[a,r,i,t,n]),c=(0,R.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...r,children:(0,z.jsxs)(`form`,{id:`instance-add-ssh-key-form`,name:`instance-add-ssh-key-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,z.jsxs)(cs,{className:`md:col-span-2`,children:[(0,z.jsx)(Z,{children:`Add New SSH Key`}),(0,z.jsx)(ls,{children:`Enter the details of your SSH Key below.`})]}),(0,z.jsx)(U,{control:r.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`key`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Key`}),(0,z.jsx)(Gc,{children:`Your private key. Don't have one? Try out "ssh-keygen"! You'll want to add your public key to your registry, i.e. GitHub.`}),(0,z.jsx)(H,{children:(0,z.jsx)(Dm,{autoComplete:`off`,autoCapitalize:`off`,rows:3,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`host`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Host`}),(0,z.jsx)(Gc,{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,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`hostname`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Hostname`}),(0,z.jsx)(Gc,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`known_hosts`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Known Hosts`}),(0,z.jsx)(Gc,{children:`Optionally, append known hosts, one per line. GitHub known hosts should resolve automatically.`}),(0,z.jsx)(H,{children:(0,z.jsx)(Dm,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:3,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{className:`md:col-span-2`,children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{variant:`destructiveOutline`,type:`button`,className:`rounded-full`,onClick:c,disabled:o,children:`Cancel`}),(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:o||!r.formState.isDirty||!r.formState.isValid,children:[(0,z.jsx)(Pe,{}),` Add SSH Key`]})]})})]})})})})}async function Lh(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 Rh(){return M({mutationFn:Lh})}async function zh({name:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`get_ssh_key`,name:e});return n}function Bh(e){return P({queryKey:[e.entityId,`get_ssh_key`],queryFn:()=>zh(e),refetchInterval:1e4})}var Vh=D({name:w().trim(),key:w().min(1).trim()});async function Hh(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 Uh(){return M({mutationFn:Hh})}function Wh({data:e,isModalOpen:t,closeModal:n,onSelectSSHKey:r,onChangesSaved:i}){let{name:a}=e,o=I({resolver:j(Vh),defaultValues:{name:a,key:``}}),s=B(),{data:c}=A(Bh({...s,name:a})),{mutate:l,isPending:u}=Uh(),{mutate:d}=Rh(),f=(0,R.useCallback)(async({key:e})=>{e&&l({name:a,key:e.trim()+`
31
- `,...s},{onSuccess:()=>{L.success(`SSH Key updated successfully!`),r(void 0),i()}})},[l,a,s,r,i]),p=(0,R.useCallback)(()=>{d({name:a,...s},{onSuccess:()=>{L.success(`SSH Key deleted successfully!`),r(void 0),i()}})},[a,d,s,i,r]);return(0,z.jsx)(J,{onOpenChange:n,open:t,children:(0,z.jsx)(Y,{className:`sm:max-w-[750px]`,"aria-describedby":void 0,children:(0,z.jsx)(V,{...o,children:(0,z.jsxs)(`form`,{id:`instance-edit-ssh-key-form`,name:`instance-edit-ssh-key-form`,onSubmit:o.handleSubmit(f),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,z.jsx)(Z,{children:`Edit SSH Key`}),(0,z.jsx)(U,{control:o.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,readOnly:!0,disabled:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:o.control,name:`key`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Key`}),(0,z.jsx)(Gc,{children:`Replace your existing private key. Lost it? Try out "ssh-keygen"! You'll want to add your public key to your registry, i.e. GitHub.`}),(0,z.jsx)(H,{children:(0,z.jsx)(Dm,{autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,rows:3,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Host`}),(0,z.jsx)(Gc,{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,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.host||``,disabled:!0,readOnly:!0})}),(0,z.jsx)(K,{})]}),(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Hostname`}),(0,z.jsx)(Gc,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.hostname||``,disabled:!0,readOnly:!0})}),(0,z.jsx)(K,{})]}),(0,z.jsxs)(X,{children:[(0,z.jsx)(g,{type:`button`,variant:`destructiveOutline`,className:`rounded-full`,onClick:p,disabled:u,children:`Delete SSH Key`}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsx)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:u||!o.formState.isValid,children:`Update SSH Key`})]})]})})})})}function Gh(){let e=De(),{keyName:t}=N({strict:!1}),{data:n,refetch:r,isFetching:i,isRefetching:a}=A(Th(B())),o=(0,R.useMemo)(()=>n?.find(e=>e.name===t),[n,t]),s=(0,R.useCallback)(n=>{let r=n?.original?.name;e({to:[t?`..`:``,r].filter(Boolean).join(`/`)})},[t,e]),c=!!t&&!!o,[l,u]=(0,R.useState)(!1),d=(0,R.useCallback)(()=>{u(!0)},[u]),f=ql(r);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Hl,{columns:Eh,data:n||[],isFetching:i,onRowClick:s,children:[(0,z.jsx)(k,{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,z.jsxs)(g,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:d,accessKey:`a`,disabled:l,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),l&&(0,z.jsx)(Ih,{isModalOpen:l,onChangesSaved:r,setIsModalOpen:u}),c&&(0,z.jsx)(Wh,{isModalOpen:c,closeModal:s,data:o,onSelectSSHKey:s,onChangesSaved:r}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(Os,{text:`Loading...`}),children:(0,z.jsx)(Mh,{})})]})}var Kh=_r(),qh=[{header:`Username`,accessorKey:`username`,enableSorting:!1},Kh.display({header:`Role`,enableSorting:!1,id:`role`,cell:e=>e.row.original.role.role}),{header:`Active`,accessorKey:`active`,enableSorting:!1},Kh.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>Gl((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),{header:`Updated`,accessorKey:`__updatedtime__`,enableSorting:!1,cell:e=>Gl((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}];function Jh({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=B(),{data:i}=je(dh(r)),a=I({resolver:j(Td),defaultValues:{username:``,role:``,password:``,confirmPassword:``}}),{mutate:o,isPending:s}=Od(),c=(0,R.useCallback)(async e=>{e&&o({active:!0,password:e.password,role:e.role,username:e.username,...r},{onSuccess:()=>{let r=e.role;a.reset(),a.setValue(`role`,r),t(),L.success(`User added successfully!`),n(!1)}})},[o,a,r,t,n]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...a,children:(0,z.jsxs)(`form`,{id:`instance-add-user-form`,name:`instance-add-user-form`,onSubmit:a.handleSubmit(c),className:`grid gap-4 my-4`,children:[(0,z.jsx)(cs,{children:(0,z.jsx)(Z,{children:`Add New User`})}),(0,z.jsx)(U,{control:a.control,name:`username`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a.control,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a.control,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a.control,name:`role`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Role`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:t=>e.onChange(t),children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Role`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)(Lc,{children:`Role`}),i?.map(e=>(0,z.jsx)($,{value:e.id,children:e.role},e.id))]})})]})})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:s,children:[(0,z.jsx)(Pe,{}),` Add User`]})})})]})})})})}var Yh=D({username:Td.shape.username,role:Td.shape.role,newPassword:Td.shape.password.or(ie(``)).optional(),confirmPassword:Td.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 Xh({data:e,onUserUpdated:t}){let n=B(),{data:r}=je(dh(n)),{mutate:i,isPending:a}=Ad(),o=I({resolver:j(Yh),defaultValues:{username:e.username,role:e.role.role,newPassword:``,confirmPassword:``}}),s=(0,R.useCallback)(r=>{let a={username:e.username,role:r.role,...n};r.newPassword&&(a.password=r.newPassword),i(a,{onSuccess:()=>{o.reset(),L.success(`User edited successfully!`),t()}})},[o,i,e.username,n,t]);return(0,z.jsx)(V,{...o,children:(0,z.jsxs)(`form`,{id:`instance-edit-user-form`,name:`instance-edit-user-form`,onSubmit:o.handleSubmit(s),className:`grid gap-4 my-4`,children:[(0,z.jsx)(cs,{children:(0,z.jsx)(Z,{children:`Edit User`})}),(0,z.jsx)(U,{control:o.control,name:`username`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,disabled:!0,readOnly:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:o.control,name:`newPassword`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Change Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:o.control,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:o.control,name:`role`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Role`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:t=>e.onChange(t),children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Role`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)(Lc,{children:`Role`}),r?.map(e=>(0,z.jsx)($,{value:e.id,children:e.role},e.id))]})})]})})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{variant:`submit`,className:`rounded-full`,disabled:a,children:[(0,z.jsx)(Pe,{}),` Save Changes`]})})})]})})}var Zh=D({username:oo,confirmUsernameForDeletion:w().nonempty({error:`Please type the username again to confirm deletion.`}).toLowerCase()}).refine(e=>e.username===e.confirmUsernameForDeletion,{error:`Username does not match.`,path:[`confirmUsernameForDeletion`]});function Qh({data:e,onUserDeleted:t}){let{mutate:n,isPending:r}=Md(),i=I({resolver:j(Zh),defaultValues:{username:e.username,confirmUsernameForDeletion:``}}),a=sa(),o=(0,R.useCallback)(()=>{n({username:e.username,...a},{onSuccess:()=>{i.reset(),L.success(`User deleted successfully!`),t()}})},[e.username,i,n,a,t]);return(0,z.jsx)(V,{...i,children:(0,z.jsxs)(`form`,{id:`instance-delete-user-form`,name:`instance-delete-user-form`,onSubmit:i.handleSubmit(o),className:`grid gap-4 my-4`,children:[(0,z.jsx)(U,{control:i.control,name:`confirmUsernameForDeletion`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Confirm Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{variant:`destructive`,className:`rounded-full`,disabled:r||!i.formState.isValid,children:[(0,z.jsx)(cn,{}),` Delete User`]})})})]})})}function $h({closeModal:e,clusterId:t,instanceId:n,data:r,isModalOpen:i,onUserDeleted:a,onUserUpdated:o}){let s=c.checkForFabricConnect(n??t),l=bi(n??t),u=!(!s&&l.user?.username===r.username);return(0,z.jsx)(J,{onOpenChange:e,open:i,children:(0,z.jsxs)(Y,{className:`sm:max-w-[750px]`,children:[(0,z.jsx)(Xh,{data:r,onUserUpdated:o}),u&&(0,z.jsx)(Qh,{data:r,onUserDeleted:a})]})})}function eg({entityId:e,instanceClient:t}){return P({queryKey:[e,`list_users`],queryFn:()=>tg({instanceClient:t}),refetchInterval:1e4})}async function tg({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_users`});return t}function ng(){let e=De(),{instanceId:t,clusterId:n,username:r}=N({strict:!1}),{data:i,refetch:a,isFetching:o,isRefetching:s}=je(eg(B())),c=(0,R.useMemo)(()=>i?.find(e=>e.username===r),[i,r]),l=(0,R.useCallback)(t=>{e({to:[r?`..`:``,t].filter(Boolean).join(`/`)})},[r,e]),u=!!r&&!!c,[d,f]=(0,R.useState)(!1),[p]=(0,R.useState)({attribute:`username`,descending:!1}),m=(0,R.useMemo)(()=>[{desc:p.descending,id:p.attribute}],[p]),h=(0,R.useCallback)(()=>{f(!0)},[f]),_=(0,R.useCallback)(()=>{a(),f(!1)},[a,f]),v=(0,R.useCallback)(e=>{l(e.original.username)},[l]),y=(0,R.useCallback)(()=>{l(void 0)},[l]),b=(0,R.useCallback)(()=>{a(),l(void 0)},[l,a]),x=(0,R.useCallback)(()=>{a(),l(void 0)},[l,a]),S=ql(a);return(0,z.jsxs)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,z.jsxs)(Hl,{data:i,isFetching:o||s,columns:qh,onRowClick:v,sortingState:m,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,z.jsx)(wt,{}),` `,(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:h,accessKey:`a`,disabled:d,children:[(0,z.jsx)(Rt,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,z.jsx)(Jh,{isModalOpen:d,onChangesSaved:_,setIsModalOpen:f}),u&&(0,z.jsx)($h,{instanceId:t,clusterId:n,closeModal:y,data:c,isModalOpen:u,onUserDeleted:x,onUserUpdated:b})]})}function rg({context:e,params:t}){let n=ca(t);return e.queryClient.ensureQueryData(Xm(n))}function ig(e){let t=F({getParentRoute:()=>e,path:`config`,head:()=>({meta:[{title:`Config — Harper Fabric`}]}),component:Bm,loader:rg}),n=F({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Overview — Harper Fabric`}]}),component:ih,loader:rg}),r=F({getParentRoute:()=>t,path:`roles`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:Ch}),i=F({getParentRoute:()=>t,path:`roles/$roleId`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:Ch}),a=F({getParentRoute:()=>t,path:`users`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:ng}),o=F({getParentRoute:()=>t,path:`users/$username`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:ng}),s=F({getParentRoute:()=>t,path:`domains`,head:()=>({meta:[{title:`Instance Domains — Harper Fabric`}]}),component:Im}),c=F({getParentRoute:()=>t,path:`ssh-keys`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:Gh}),l=F({getParentRoute:()=>t,path:`ssh-keys/$keyName`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:Gh}),u=F({getParentRoute:()=>t,path:`certificates`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:Fm}),d=F({getParentRoute:()=>t,path:`certificates/$certName`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:Fm});return t.addChildren([n,r,i,a,o,s,c,l,u,d])}function ag({clusterId:e,databaseName:t,instanceId:n,organizationId:r,tableName:i}){let a=[`databases`,t,i].filter(Ni).join(`/`);return Ol({organizationId:r,instanceId:n,clusterId:e},a)}function og({className:e,children:t,...n}){return(0,z.jsxs)(Gr,{"data-slot":`scroll-area`,className:d(`relative`,e),...n,children:[(0,z.jsx)(He,{"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,z.jsx)(sg,{}),(0,z.jsx)(Tt,{})]})}function sg({className:e,orientation:t=`vertical`,...n}){return(0,z.jsx)(ye,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:d(`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,z.jsx)(zt,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}async function cg({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 lg(){return M({mutationFn:cg})}var ug=D({databaseName:um,tableName:fm,primaryKey:w().regex(lm,{error:`Primary key cannot include backticks or forward slashes.`}).max(250,{error:`Primary key cannot be longer than 250 characters.`})});function dg({databaseName:e,onSelectTable:t}){let n=xt(),r=B(),i=fe(),[a,o]=(0,R.useState)(!1),s=I({resolver:j(ug),defaultValues:{databaseName:e||``,tableName:``,primaryKey:``}}),{mutate:c}=lg(),l=async e=>{let a=e.databaseName||`data`,l=e.tableName;c({databaseName:a,tableName:l,primaryKey:e.primaryKey||`id`,...r,replicated:r.entityType===`cluster`},{onSuccess:async()=>{await n.invalidateQueries({queryKey:[r.entityId,`describe_all`],refetchType:`all`}),L.success(`Table ${l} created successfully`),o(!1),s.reset(),t(a,l),await i.invalidate()}})};return(0,z.jsxs)(J,{open:a,onOpenChange:o,children:[(0,z.jsx)(as,{asChild:!0,children:(0,z.jsx)(`div`,{className:`sticky bottom-0 py-4 bg-background/80 backdrop-blur-xs dark:bg-black/70`,children:(0,z.jsxs)(g,{variant:`positiveOutline`,className:`w-full rounded-full`,size:`lg`,accessKey:`t`,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[`Create a `,(0,z.jsx)(`u`,{children:`T`}),`able`]})]})})}),(0,z.jsxs)(Y,{className:`sm:max-w-[425px]`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Create a New Table`}),(0,z.jsx)(ls,{children:`What would you like to create?`})]}),(0,z.jsx)(V,{...s,children:(0,z.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,z.jsx)(U,{control:s.control,name:`tableName`,render:({field:e})=>(0,z.jsxs)(W,{className:``,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Table Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`text`,maxLength:ug.shape.tableName.maxLength,autoFocus:!0,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:s.control,name:`primaryKey`,render:({field:e})=>(0,z.jsxs)(W,{className:``,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Primary Key`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,placeholder:`id`,type:`text`,maxLength:ug.shape.primaryKey.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:s.control,name:`databaseName`,render:({field:e})=>(0,z.jsxs)(W,{className:``,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Database Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`text`,placeholder:`data`,maxLength:ug.shape.databaseName.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,children:[(0,z.jsx)(Mr,{}),`Create New Table`]})})]})})]})]})}function fg({instanceDatabaseMap:e}){let t=fe(),n=!e,r=N({strict:!1}),i=De(),a=xa(),{databaseNames:o,tableNames:s}=(0,R.useMemo)(()=>({databaseNames:Object.keys(e||{}).sort(),tableNames:r.databaseName?Object.keys(e?.[r.databaseName]||[]).sort():[]}),[e,r.databaseName]),c=(0,R.useCallback)(n=>{let a=n?Object.keys(e?.[n]||[]).sort():[];r.databaseName?i({to:ag({...r,databaseName:n,tableName:a[0]})}):t.invalidate()},[e,r,t,i]),l=(0,R.useCallback)((e,t)=>{i({to:ag({...r,databaseName:e,tableName:t})})},[i,r]);return(0,z.jsxs)(`div`,{className:`pl-3`,children:[(0,z.jsx)(`h1`,{className:`pt-3 pb-3 text-3xl`,children:`Databases`}),n?(0,z.jsx)(jc,{className:`w-full h-9 m-0 rounded-md`}):(0,z.jsx)(`div`,{className:`flex space-x-2`,children:(0,z.jsxs)(Mc,{name:`databaseSelect`,value:r.databaseName||``,disabled:o.length===0,onValueChange:c,children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Select a Database`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:o.map(e=>(0,z.jsx)($,{value:e,children:e},e))})})]})}),n?(0,z.jsx)(jc,{className:`w-full min-h-80 rounded-md mb-0`}):(0,z.jsxs)(og,{className:`border rounded-md min-h-80 border-grey-700 mt-4`,children:[s.length===0&&r.databaseName?.length?(0,z.jsxs)(`div`,{className:`w-full h-full text-center`,children:[(0,z.jsx)(`p`,{className:`py-6`,children:`No tables found in this database.`}),a&&(0,z.jsx)(`p`,{children:`Tap "Create a Table" below!`})]}):s.length===0&&!r.databaseName?.length?a?(0,z.jsxs)(`p`,{className:`pt-2 text-sm text-center`,children:[`Please `,o.length===0?`create`:`select`,` a table.`]}):(0,z.jsxs)(`p`,{className:`pt-2 text-sm text-center`,children:[`Please `,o.length===0?`ask your admin to create`:`select`,` a table.`]}):``,(0,z.jsx)(`ul`,{children:s.map(e=>(0,z.jsx)(`li`,{className:`flex items-center p-2 border-b hover:bg-accent border-border dark:hover:bg-grey-700/80 dark:border-grey-700`,children:(0,z.jsxs)(g,{onClick:()=>l(r.databaseName,e),size:`lg`,className:`items-center justify-between w-full bg-transparent border-none shadow-none hover:bg-transparent text-foreground`,children:[e,(0,z.jsx)(`span`,{children:r.tableName===e&&(0,z.jsx)(Un,{})})]})},e))})]}),a&&(0,z.jsx)(dg,{databaseName:r.databaseName,onSelectTable:l})]})}function pg(e){if(!e)return{dataTableColumns:[],primaryKey:``};let t=e.primary_key??e.hash_attribute??``,{attributes:n}=e,r=[],i=[],a=[],o=[];for(let e=n.length-1;e>=0;e--){let{attribute:t,type:s,is_primary_key:c,indexed:l}=n[e],u={header:t,accessorKey:t,enableSorting:!!(c||l),enableColumnFilter:!!(c||l),size:mg(s)};c?r.push(u):t===`__createdtime__`||t===`__updatedtime__`?o.push(u):u.enableSorting?i.push(u):a.push(u)}return{dataTableColumns:[...r,...i,...a,...o],primaryKey:t}}function mg(e){switch(e){case`Id`:case`ID`:return 1;case`Boolean`:return 1;case`Int`:case`Long`:case`Float`:case`BigInt`:return 1;default:return Math.round(window.innerWidth*.1)}}async function hg({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 gg(){return M({mutationFn:hg})}function _g({isModalOpen:e,instanceTable:t,setIsModalOpen:n,refreshTable:r}){let i=iu(),{mutate:a,isPending:o}=gg(),s=B(),[c,l]=(0,R.useState)(!0),[d,f]=(0,R.useState)(),[p,m]=(0,R.useState)(!1),[h,_]=(0,R.useState)([]),v=(0,R.useMemo)(()=>{let e={};for(let n of t.attributes)n.is_primary_key||n.attribute===`__createdtime__`||n.attribute===`__updatedtime__`||(e[n.attribute]=vg(n.type));return JSON.stringify(e,null,4)},[t]),y=(0,R.useCallback)(e=>{m(!0),l(e.length===0)},[l]),b=(0,R.useCallback)(()=>{if(d&&c){let e=JSON.parse(d),i=Array.isArray(e)?e:[e],o=L.loading(`Adding ${i.length} records...`);a({...s,databaseName:t.schema,tableName:t.name,records:i},{onSuccess:e=>{r(),e.skipped_hashes?.length||n(!1),_(e.skipped_hashes),(e.skipped_hashes?.length>0?L.warning:L.success)(e.skipped_hashes?.length>0?`Warning!`:`Success!`,{id:o,description:(0,z.jsxs)(z.Fragment,{children:[e.inserted_hashes.length>0&&(0,z.jsxs)(`p`,{children:[`Added `,u(e.inserted_hashes.length,`record`,`records`)]}),e.skipped_hashes.length>0&&(0,z.jsxs)(`p`,{children:[`Skipped `,u(e.skipped_hashes.length,`record`,`records`)]})]})})}})}},[d,a,s,t.name,t.schema,c,r,n]),x=(0,R.useCallback)(e=>{e?.focus()},[]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,onEscapeKeyDown:e=>{p&&e.preventDefault()},children:[(0,z.jsx)(cs,{children:(0,z.jsxs)(Z,{children:[`Add New `,t.name]})}),(t?.primary_key??t?.hash_attribute)&&(0,z.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[`The primary key for this table is`,` `,(0,z.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,z.jsx)(pr,{className:`w-full h-96`,language:`json`,theme:i,value:v,onValidate:y,onChange:f,options:{minimap:{enabled:!1}},onMount:x}),(0,z.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[(0,z.jsx)(`strong`,{children:`Provide an [array]`}),` if you want to add more than one record at a time.`]}),h.length>0&&(0,z.jsxs)(hp,{className:`mt-2`,children:[(0,z.jsx)(Se,{className:`w-4 h-4`}),(0,z.jsxs)(gp,{children:[`Skipped `,h.length===1?`Hash`:`Hashes`,` Detected`]}),(0,z.jsx)(_p,{className:`max-h-36 overflow-auto`,children:(0,z.jsx)(`ol`,{children:h.map(e=>(0,z.jsx)(`li`,{children:e},e))})})]}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{variant:`submit`,className:`rounded-full`,onClick:b,accessKey:`s`,disabled:!d||!c||o,children:[(0,z.jsx)(Pe,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`S`}),`ave Changes`]})]})})})]})})}function vg(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 yg({databaseName:e,replicated:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`drop_database`,database:e,replicated:t});return r}function bg(){return M({mutationFn:yg})}function xg({databaseName:e,onDeleted:t}){let{value:n,trigger:r}=yf(`ShowDeleteDatabase`,!1),i=(0,R.useCallback)(()=>{bf(`ShowDeleteDatabase`,!1),$p(r)},[r]),a=xa(),o=xt(),s=B(),c=fe(),{mutate:l,isPending:u}=bg(),d=(0,R.useCallback)(()=>{l({databaseName:e,...s,replicated:s.entityType===`cluster`},{onSuccess:async()=>{i(),await o.invalidateQueries({queryKey:[s.entityId,`describe_all`],refetchType:`all`}),await c.invalidate(),L.success(`Database ${e} dropped successfully`),t(`database`)}})},[i,e,l,s,t,o,c]);return!a||!e?(0,z.jsx)(z.Fragment,{}):(0,z.jsx)(us,{typeOfThingBeingDeleted:`database`,nameOfThingBeingDeleted:e,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:i,deletionConfirmed:d,deletionPending:u})}async function Sg({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 Cg(){return M({mutationFn:Sg})}function wg({databaseName:e,tableName:t,onDeleted:n}){let{value:r,trigger:i}=yf(`ShowDeleteTable`,!1),a=(0,R.useCallback)(()=>{bf(`ShowDeleteTable`,!1),$p(i)},[i]),o=xa(),s=xt(),c=B(),l=fe(),{mutate:u,isPending:d}=Cg(),f=(0,R.useCallback)(()=>{u({databaseName:e,tableName:t,...c,replicated:c.entityType===`cluster`},{onSuccess:async()=>{a(),await s.invalidateQueries({queryKey:[c.entityId,`describe_all`],refetchType:`all`}),await l.invalidate(),L.success(`Table ${t} dropped successfully`),n(`table`)}})},[a,e,u,c,n,s,l,t]);return!o||!e?(0,z.jsx)(z.Fragment,{}):(0,z.jsx)(us,{typeOfThingBeingDeleted:`table`,nameOfThingBeingDeleted:`${e} > ${t}`,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:r,setIsModalOpen:a,deletionConfirmed:f,deletionPending:d})}function Tg({canEditRecords:e,canDeleteRecords:t,setIsModalOpen:n,isModalOpen:r,primaryKey:i,data:a,onSaveChanges:o,onDeleteRecord:s,isUpdateTableRecordsPending:c,isDeleteTableRecordsPending:l}){let u=iu(),[d,f]=(0,R.useState)(!0),[p,m]=(0,R.useState)(!1),[h,_]=(0,R.useState)(),v=(0,R.useMemo)(()=>{let e=a?.map(({__createdtime__:e,__updatedtime__:t,...n})=>n);return JSON.stringify(e,null,4)},[a]),y=(0,R.useCallback)(e=>{m(!0),f(e.length===0)},[f]);return(0,z.jsx)(J,{onOpenChange:n,open:r,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,autoFocus:e,onEscapeKeyDown:e?e=>{p&&e.preventDefault()}:void 0,children:[(0,z.jsx)(cs,{children:(0,z.jsxs)(Z,{children:[e?`Edit`:`View`,` Row`]})}),a?(0,z.jsx)(pr,{className:`w-full h-96`,language:`json`,theme:u,options:e?void 0:{readOnly:!0},value:v,onValidate:y,onChange:e=>{_(e)}}):(0,z.jsx)(Os,{}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[t&&(0,z.jsxs)(g,{variant:`destructive`,className:`rounded-full`,type:`button`,autoFocus:!1,onClick:()=>{let e=a[0]?.[i];e&&s([e])},disabled:l,children:[(0,z.jsx)(cn,{}),` Delete Row`]}),e&&(0,z.jsxs)(g,{variant:`submit`,className:`rounded-full`,autoFocus:!0,accessKey:`s`,onClick:()=>{h&&d?o(JSON.parse(h)):n(!1)},disabled:!d||c,children:[(0,z.jsx)(Pe,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`S`}),`ave Changes`]})]})]})})]})})}async function Eg(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}function Dg(){return M({mutationFn:Eg})}var Og=D({fileData:w(),database:w(),table:w()});function kg({setIsModalOpen:e,isModalOpen:t,onSaveChanges:n,database:r,table:i}){let[a,o]=(0,R.useState)(null),s=B(),{mutate:c,isPending:l}=Dg(),u=e=>{if(!e.target.files)return;let t=e.target.files[0];if(t){let e=new FileReader;e.onload=e=>{let n=e.target?.result;typeof n==`string`&&(o(t),d.setValue(`fileData`,n))},e.readAsText(t)}},d=I({resolver:j(Og),defaultValues:{database:r,table:i,fileData:``}}),f=e=>{c({fileData:e.fileData,database:r,table:i,...s},{onSuccess:({message:e})=>{d.reset(),o(null),n(e)}})};return(0,z.jsx)(J,{onOpenChange:()=>{e(!1),d.reset()},open:t,children:(0,z.jsxs)(Y,{children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Import CSV`}),(0,z.jsx)(ls,{children:`Upload a CSV file to import data into the table.`})]}),(0,z.jsx)(V,{...d,children:(0,z.jsxs)(`form`,{id:`instance-import-csv-form`,name:`instance-import-csv-form`,onSubmit:d.handleSubmit(f),children:[(0,z.jsx)(`div`,{className:`w-full`,children:(0,z.jsx)(U,{control:d.control,name:`fileData`,render:({field:e})=>(0,z.jsxs)(W,{className:`relative`,children:[(0,z.jsx)(G,{htmlFor:`dropzone-file`,className:`flex flex-col items-center justify-center w-full h-64 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,z.jsx)(H,{children:(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`div`,{className:`flex flex-col items-center justify-center pt-5 pb-6`,children:[(0,z.jsx)(Ue,{className:`text-muted-foreground`,size:48}),(0,z.jsx)(`p`,{className:`mb-2 text-sm text-muted-foreground`,children:a?a.name:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`span`,{className:`font-semibold`,children:`Click to upload`}),` or drag and drop a CSV File`]})})]}),(0,z.jsx)(q,{id:`dropzone-file`,type:`file`,className:`opacity-0 w-full h-full absolute left-0 top-0 cursor-pointer`,accept:`.csv`,name:e.name,ref:e.ref,onBlur:e.onBlur,disabled:e.disabled,onChange:u})]})})}),(0,z.jsx)(K,{})]})})}),(0,z.jsx)(X,{className:`mt-4`,children:(0,z.jsxs)(g,{variant:`submit`,className:`rounded-full`,accessKey:`u`,disabled:!a||l,children:[(0,z.jsx)(Pe,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`U`}),`pload CSV`]})]})})]})})]})})}async function Ag({databaseName:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`cleanup_orphan_blobs`,database:e});return n}function jg(){return M({mutationFn:Ag})}async function Mg({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 Ng(){return M({mutationFn:Mg})}async function Pg({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t});return r}function Fg(e){return P({queryKey:[e.entityId,e.databaseName,e.tableName,`describe_table`],queryFn:()=>Pg(e),staleTime:6e4,gcTime:5e3,enabled:!!e.databaseName&&!!e.tableName,retry:!1})}var Ig=[`1`,`bet`,`k`,`ok`,`si`,`tru`,`true`,`yes`,`yup`];function Lg(e){let t=e.toLowerCase().trim();return Ig.includes(t)}function Rg(e){return!isNaN(e)&&!isNaN(parseFloat(e))}function zg(e){if(e.startsWith(`0.`)&&Rg(e))return!0;let t=e.toUpperCase().includes(`E`);return!(e!==`0`&&e.startsWith(`0`))&&!t&&Rg(e)}var Bg={true:!0,TRUE:!0,false:!1,FALSE:!1,undefined:null,null:null,NULL:null,NaN:NaN},Vg=/^((\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 Hg(e){return e==null||e===``||typeof e!=`string`?e:Bg[e]===void 0?zg(e)?Number(e):Vg.test(e)?new Date(e):e:Bg[e]}function Ug(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,conditions:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l}=e;return P({enabled:t&&!!a,queryKey:[n,r,i,`search_by_conditions`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l],staleTime:6e4,gcTime:5e3,retry:!1,queryFn:()=>Wg(e)})}function Wg({instanceClient:e,databaseName:t,tableName:n,conditions:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,headers:c}){return e.post(`/`,{operation:`search_by_conditions`,get_attributes:[`*`],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:c})}function Gg(e,t,n){return t.split(/ & /).map(t=>Kg(e,t,n))}function Kg(e,t,n){t.startsWith(e)&&(t=t.substring(e.length));let{comparator:r,value:i}=Yg(t);switch(n?.type){case`ID`:case`String`:return{search_attribute:e,search_type:r,search_value:i};case`Int`:case`BigInt`:case`Long`:case`Float`:{let t=n.type.includes(`Int`)?parseInt(i,10):parseFloat(i);if(isNaN(t))throw Error(`${i} does not appear to be a valid number.`);return{search_attribute:e,search_type:r,search_value:t}}case`Date`:return{search_attribute:e,search_type:r,search_value:new Date(i).toISOString()};case`Boolean`:return{search_attribute:e,search_type:r,search_value:Lg(i)};case`Blob`:case`Bytes`:return{search_attribute:e,search_type:r,search_value:i};default:return{search_attribute:e,search_type:r,search_value:Hg(i)}}}var qg={"=== ":`equals`,"== ":`eq`,"equals ":`equals`,"equal ":`equals`,"eq ":`eq`,"!== ":`not_equal`,"!= ":`ne`,"notequals ":`not_equal`,"notequal ":`not_equal`,"ne ":`ne`},Jg={">":`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 Yg(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=Jg[e];if(r)return{comparator:r,value:t}}for(let n in qg)if(t.startsWith(n))return{comparator:qg[n],value:e.slice(n.length)};return t.endsWith(`*`)?{comparator:`starts_with`,value:e.slice(0,-1)}:{comparator:`equals`,value:e}}function Xg({enabled:e,entityId:t,instanceClient:n,databaseName:r,tableName:i,ids:a}){return P({queryKey:[t,`search_by_id`,r,i,a],queryFn:()=>n.post(`/`,{get_attributes:[`*`],ids:a,noCacheStore:!0,onlyIfCached:!0,operation:`search_by_id`,database:r,table:i}),enabled:e&&!!a?.length,retry:!1})}async function Zg(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 Qg(){return M({mutationFn:Zg})}var $g=ee(w(),w());function e_({applyFilters:e,columnFiltersForm:t,headerGroups:n}){let r=(0,R.useCallback)(t=>{if(t.key===`Enter`)return t.preventDefault(),e(),!1},[e]);return(0,z.jsx)(Il,{children:(0,z.jsx)(V,{...t,children:n.map(e=>(0,z.jsx)(Rl,{className:`border-none`,children:e.headers.map(e=>(0,z.jsx)(Vl,{style:{width:`${e.column.getSize()}px`},children:e.column.columnDef.enableColumnFilter&&(0,z.jsx)(U,{control:t.control,name:e.id,render:({field:e})=>(0,z.jsxs)(W,{className:`border-r-1 border-r-black`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,className:`rounded-none`,onKeyDown:r,value:e.value??``})}),(0,z.jsx)(K,{})]})})},e.id))},e.id))})})}function t_({columns:e,columnVisibility:t,setColumnVisibility:n}){let r=(0,R.useMemo)(()=>e.map(e=>typeof e.header==`string`?e.header:void 0).filter(Ni),[e]),i=(0,R.useCallback)((e,r)=>{n({...t,[e]:r})},[t,n]);return(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{asChild:!0,children:(0,z.jsxs)(g,{variant:`ghost`,children:[(0,z.jsx)(mt,{className:`inline-block `}),`Columns`]})}),(0,z.jsx)(ms,{children:r.map(e=>(0,z.jsx)(n_,{columnHeader:e,isChecked:t[e]??!0,toggleColumn:i},e))})]})}function n_({columnHeader:e,isChecked:t,toggleColumn:n}){return(0,z.jsx)(gs,{checked:t,onCheckedChange:(0,R.useCallback)(t=>{n(e,t)},[e,n]),onSelect:e=>e.preventDefault(),children:e})}function r_({className:e}){return(0,z.jsx)(jn,{className:x(`animate-spin`,e)})}function i_({applyFilters:e,columnFiltersForm:t,columns:n,columnVisibility:r,data:i,isFetching:a,onColumnClick:o,onRowClick:s,pageIndex:c,pageSize:l,primaryKey:u,setPageIndex:d,setPageSize:f,filtersToggled:p,totalPages:m,totalRecords:h}){let _=tr({data:i||[],columns:n,manualPagination:!0,enableColumnResizing:!0,columnResizeMode:`onEnd`,pageCount:m,defaultColumn:{minSize:1},state:{columnVisibility:r},rowCount:h,getCoreRowModel:dn(),getPaginationRowModel:Gn()}),v=(0,R.useCallback)(()=>{d(c-1)},[c,d]),y=(0,R.useCallback)(()=>{d(c+1)},[c,d]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Fl,{containerClassName:`rounded-md bg-card dark:bg-black-dark grow max-h-[calc(100vh-128px-16px-112px-80px)]`,children:[(0,z.jsx)(Il,{children:_.getHeaderGroups().map(e=>(0,z.jsx)(Rl,{className:`border-none`,children:e.headers.map(e=>(0,z.jsx)(Bl,{header:e,onColumnClick:o},e.id))},e.id))}),p&&(0,z.jsx)(e_,{applyFilters:e,columnFiltersForm:t,headerGroups:_.getHeaderGroups()}),(0,z.jsx)(Ll,{className:`bg-background dark:bg-black border border-border dark:border-grey-700`,children:_.getRowModel().rows?.length?_.getRowModel().rows.map(e=>(0,z.jsx)(a_,{row:e,onRowClick:s,primaryKey:u},e.id)):(0,z.jsx)(Rl,{children:(0,z.jsx)(Vl,{colSpan:n.length,className:`h-24 text-center`,children:a||i===void 0?(0,z.jsx)(r_,{className:`opacity-50 inline-block`}):(0,z.jsx)(`span`,{children:`No results.`})})})})]}),(0,z.jsxs)(`div`,{className:`flex items-center justify-end py-4 space-x-2 pr-4`,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,size:`sm`,onClick:v,className:`select-none`,disabled:c===0,children:[(0,z.jsx)(Sr,{}),`Previous`]}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsxs)(`div`,{className:`text-center`,children:[(0,z.jsx)(`dt`,{className:`font-medium text-gray-500 text-sm/6 dark:text-gray-400`,children:`Records`}),(0,z.jsx)(`dd`,{className:`font-semibold tracking-tight`,children:h===void 0?(0,z.jsx)(jc,{}):nl(h)})]}),h!==void 0&&h>0&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{children:(0,z.jsxs)(Mc,{defaultValue:l.toString(),onValueChange:e=>{f(Number(e))},children:[(0,z.jsx)(Fc,{className:`h-10 w-20`,children:(0,z.jsx)(Pc,{})}),(0,z.jsx)(Ic,{side:`top`,children:[20,50,100,250].map(e=>(0,z.jsx)($,{value:`${e}`,children:e},e))})]})}),m!==void 0&&m>1&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`text-center`,children:[(0,z.jsx)(`dt`,{className:`font-medium text-gray-500 text-sm/6 dark:text-gray-400`,children:`Pages`}),(0,z.jsx)(`dd`,{className:`font-semibold tracking-tight`,children:nl(m)})]}),(0,z.jsxs)(`div`,{className:`text-center`,children:[(0,z.jsx)(`dt`,{className:`font-medium text-gray-500 text-sm/6 dark:text-gray-400`,children:`Page`}),(0,z.jsx)(`dd`,{className:`font-semibold tracking-tight`,children:nl(c+1)})]})]})]}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsxs)(g,{variant:`defaultOutline`,size:`sm`,onClick:y,className:`select-none`,disabled:m===void 0||c===m-1,children:[`Next`,(0,z.jsx)(Un,{})]})]})]})}function a_({row:e,primaryKey:t,onRowClick:n}){let r=(0,R.useMemo)(()=>{let n=e.original,r=n&&n.message===`This entry has expired`,i=e.getVisibleCells();return console.log(`primaryKey, visibleCells`,t,i),r?i[0]?.column?.id===t?[(0,z.jsx)(o_,{cell:i[0]},i[0].id),(0,z.jsx)(s_,{colSpan:i.length-1},`expired`)]:[(0,z.jsx)(s_,{colSpan:i.length},`expired`)]:i.map(e=>(0,z.jsx)(o_,{cell:e},e.id))},[e,t]);return(0,z.jsx)(Rl,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>n?.(e),className:d(`hover:bg-muted/10 data-[state=selected]:bg-muted`,n&&`cursor-pointer`),children:r})}function o_({cell:e}){return(0,z.jsx)(Vl,{style:{width:`${e.column.getSize()}px`},className:`px-2 py-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,children:e.getValue()==`[object Object]`?JSON.stringify(e.getValue()):rn(e.column.columnDef.cell,e.getContext())})}function s_({colSpan:e}){return(0,z.jsx)(Vl,{colSpan:e,className:`px-2 py-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,children:(0,z.jsx)(`span`,{className:`text-muted-foreground`,children:`This entry has expired`})})}function c_({instanceDatabaseMap:e,databaseName:t,tableName:n}){let r=N({strict:!1}),i=De(),a=B(),{clusterId:o,instanceId:s}=r,{toggled:c,toggle:l}=om(!0),u=yi(),d=Sa(s??o,t,n,`insert`),f=Sa(s??o,t,n,`update`),p=Sa(s??o,t,n,`delete`),m=xa(),{data:h}=A(Fg({...a,databaseName:t,tableName:n})),_=(0,R.useMemo)(()=>Vs(h?.attributes??[],`attribute`),[h]),[v,y]=Yd(null,r),[b,x]=(0,R.useState)(!1),S=(0,R.useMemo)(()=>(t?Object.keys(e?.[t]||[]).sort():[]).length===1,[e,t]),{toggled:C,toggleOn:ee,toggleOff:w}=om(!1),te=I({resolver:j($g)}),{reset:ne}=te,T=te.watch(),[E,re]=Yd(null,[r.clusterId,r.instanceId,t,n]),D=(0,R.useCallback)(()=>{let e=[];for(let t in T)if(T[t]?.length)try{e.push(...Gg(t,T[t],_[t]))}catch(e){L.error(String(e))}re(e.length?e:null),ne({...T})},[_,ne,T]),ie=(0,R.useCallback)(()=>{ne({},{keepValues:!1,keepDirtyValues:!1,keepDefaultValues:!1}),ne(),re(null),w()},[w,ne]);(0,R.useEffect)(function(){return ie()},[r,ie]);let{dataTableColumns:ae,primaryKey:O}=pg(h),[oe,se]=(0,R.useState)(!1),[le,ue]=(0,R.useState)(!1),[de,fe]=Yd({attribute:O,descending:!1},r),[pe,me]=Yd(0,[t,n]),[he,ge]=(0,R.useState)(20),_e=h?.record_count,ve=h?.record_count?Math.ceil(h.record_count/he):0,ye=C&&!!E,be={...a,enabled:!ye&&!!O,databaseName:t,tableName:n,searchAttribute:O,sort:de,pageSize:he,pageIndex:pe,onlyIfCached:c},xe=ad(be),{data:Se,isFetching:Ce}=A(xe),we={...a,enabled:ye&&!!O,databaseName:t,tableName:n,conditions:E,sort:de,pageSize:he,pageIndex:pe,onlyIfCached:c},Te=Ug(we),{data:Ee,isFetching:Oe}=A(Te),ke=ye?Ee:Se,Ae=Ce||Oe,{data:je}=A(Xg({...a,enabled:b,databaseName:t,tableName:n,ids:v})),{mutate:Me,isPending:Ne}=Qg(),{mutate:Pe,isPending:Fe}=Ng(),{mutate:Ie,isPending:Le}=jg(),Re=xt(),Be=(0,R.useCallback)(()=>Re.invalidateQueries({queryKey:[a.entityId,t,n]}),[Re,a.entityId,t,n]),Ve=(0,R.useCallback)(async()=>{confirm(`Are you sure you want to cleanup orphan blobs for database "${t}"?`)&&Ie({...a,databaseName:t},{onSuccess:e=>{L.success(e.message||`Orphan blobs cleanup started successfully`),Be()},onError:e=>{L.error(e instanceof Error?e.message:`Failed to cleanup orphan blobs`)}})},[Ie,t,a,Be]),[He,We]=(0,R.useState)(!1),Ge=(0,R.useCallback)(async()=>{if(!O)return;let e=L.loading(`Loading CSV...`);We(!0);let r={pageIndex:0,pageSize:1e6,headers:{Accept:`text/csv`}},i=await(ye?Wg({...we,...r}):od({...be,...r}));L.loading(`Preparing CSV...`,{id:e});let a=i.data,o=new Blob([a],{type:`text/csv`}),s=URL.createObjectURL(o),c=document.createElement(`a`);c.href=s,c.setAttribute(`download`,`${t}.${n}.${new Date().toISOString()}.csv`),c.click(),L.success(`CSV Exported!`,{id:e}),We(!1)},[t,n,xe,Te]),Ke=(0,R.useCallback)(e=>{Me({...a,databaseName:t,tableName:n,records:e},{onSuccess:()=>{Be(),x(!1),L.success(`Record updated successfully`)}})},[Me,a,t,n,Be]),qe=(0,R.useCallback)(e=>{Pe({...a,databaseName:t,tableName:n,hashValues:e},{onSuccess:()=>{Be(),x(!1),L.success(`Record deleted successfully`)}})},[Pe,a,t,n,Be]),Je=(0,R.useCallback)(e=>{Be(),ue(!1),L.success(`${e}. Please wait a few moments then refresh the table.`)},[Be]),Ye=e=>{y([e.original[O]]),x(!b)},Xe=(e,t)=>{fe({attribute:e,descending:!t})},Ze=ql(Be),Qe=(0,R.useCallback)(()=>{se(!0)},[se]),$e=(0,R.useCallback)(()=>{ue(!0)},[ue]),tt=(0,R.useCallback)(e=>void i({to:e===`table`?`../`:`../../`}),[i]),[nt,rt]=rf(`ColumnDisplayed/${t}/${n}`,{}),it=Sf(`ShowDeleteTable`,!0),at=Sf(`ShowDeleteDatabase`,!0);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`flex flex-col md:flex-row items-center justify-between space-y-3 md:space-y-0 md:space-x-3 pt-15 pb-4 pr-4`,children:[(0,z.jsxs)(`div`,{className:`flex space-x-2`,children:[d&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:Qe,disabled:oe,accessKey:`n`,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[`Add `,(0,z.jsx)(`u`,{children:`N`}),`ew Record(s)`]})]}),d&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:$e,disabled:le,accessKey:`c`,children:[(0,z.jsx)(Ue,{}),(0,z.jsxs)(`span`,{children:[`Import `,(0,z.jsx)(`u`,{children:`C`}),`SV`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:Ge,disabled:He,accessKey:`e`,children:[(0,z.jsx)(et,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`E`}),`xport CSV`]})]})]}),(0,z.jsxs)(`div`,{className:`flex space-x-2`,children:[C&&E&&(0,z.jsxs)(g,{type:`button`,variant:`ghost`,onClick:ie,accessKey:`f`,children:[(0,z.jsx)(Dr,{className:`inline-block `}),(0,z.jsxs)(`span`,{children:[`Clear `,(0,z.jsx)(`u`,{children:`F`}),`ilters`]})]}),C&&te.formState.isDirty&&(0,z.jsxs)(g,{variant:`default`,onClick:D,children:[(0,z.jsx)(Rr,{className:`inline-block `}),`Apply Filters`]}),C&&!E&&(0,z.jsxs)(g,{variant:`ghost`,onClick:w,accessKey:`f`,children:[(0,z.jsx)(Dr,{className:`inline-block `}),(0,z.jsxs)(`span`,{children:[`Hide `,(0,z.jsx)(`u`,{children:`F`}),`ilters`]})]}),!C&&(0,z.jsxs)(g,{variant:`ghost`,onClick:ee,accessKey:`f`,children:[(0,z.jsx)($t,{className:`inline-block `}),(0,z.jsxs)(`span`,{children:[`Show `,(0,z.jsx)(`u`,{children:`F`}),`ilters`]})]}),(0,z.jsx)(g,{variant:`defaultOutline`,onClick:Ze,disabled:Ae,children:(0,z.jsx)(wt,{})}),(0,z.jsx)(t_,{columns:ae,columnVisibility:nt,setColumnVisibility:rt}),(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{asChild:!0,disabled:!e,children:(0,z.jsx)(g,{variant:`ghost`,size:`icon`,disabled:!e,children:(0,z.jsx)(Bn,{"aria-label":`Table options`})})}),(0,z.jsxs)(ms,{side:`bottom`,align:`end`,children:[(0,z.jsxs)(hs,{className:`focus:bg-primary/70 focus:text-white`,onClick:l,children:[c?(0,z.jsx)(Bt,{className:`text-green`}):(0,z.jsx)(ze,{}),`Only If Cached`,(0,z.jsx)(k,{to:`https://docs.harperdb.io/docs/developers/applications/caching#cache-control-header`,target:`_blank`,rel:`noopener noreferrer`,onClick:kp,children:(0,z.jsx)(dt,{})})]}),m&&u&&!!s&&(0,z.jsxs)(hs,{className:`focus:bg-yellow/70 focus:text-white`,onClick:Ve,disabled:Le,children:[(0,z.jsx)(ce,{className:`text-yellow `}),`Cleanup Orphan Blobs`]}),m&&!S&&(0,z.jsxs)(hs,{className:`focus:bg-red/70 focus:text-white`,onClick:it,children:[(0,z.jsx)(cn,{className:`inline-block `}),`Drop Table`]}),m&&(0,z.jsxs)(hs,{className:`focus:bg-red/70 focus:text-white`,onClick:at,children:[(0,z.jsx)(Ir,{}),`Drop Database`]})]})]})]})]}),(0,z.jsx)(i_,{primaryKey:O,data:ke?.data,isFetching:Ae,filtersToggled:C,columns:ae,columnVisibility:nt,onRowClick:Ye,onColumnClick:Xe,totalPages:ve,totalRecords:_e,pageIndex:pe,pageSize:he,columnFiltersForm:te,applyFilters:D,setPageIndex:me,setPageSize:ge}),d&&h&&oe&&(0,z.jsx)(_g,{instanceTable:h,isModalOpen:oe,refreshTable:Be,setIsModalOpen:se}),(0,z.jsx)(Tg,{canEditRecords:f,canDeleteRecords:p,setIsModalOpen:x,isModalOpen:b,primaryKey:O,data:je?.data,onSaveChanges:Ke,onDeleteRecord:qe,isUpdateTableRecordsPending:Ne,isDeleteTableRecordsPending:Fe}),(0,z.jsx)(xg,{databaseName:t,onDeleted:tt}),(0,z.jsx)(wg,{databaseName:t,tableName:n,onDeleted:tt}),(0,z.jsx)(kg,{isModalOpen:le,setIsModalOpen:ue,onSaveChanges:Je,database:t,table:n})]})}function l_(){let e=N({strict:!1}),{data:t}=A(xh(B())),n,r;if(t){e.databaseName||(n=Object.keys(t).sort()[0]);let i=e.databaseName??n;!e.tableName&&i&&t[i]&&(r=Object.keys(t[i]).sort()[0])}return n||r?(0,z.jsx)(kt,{to:ag({...e,databaseName:n??e.databaseName,tableName:r}),replace:!0}):(0,z.jsxs)(`main`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12 min-h-[calc(100vh-(--spacing(36)))]`,children:[(0,z.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-4 lg:col-span-3`,children:(0,z.jsx)(fg,{instanceDatabaseMap:t})}),(0,z.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9 flex flex-col`,children:e.databaseName&&e.tableName&&(0,z.jsx)(c_,{instanceDatabaseMap:t,databaseName:e.databaseName,tableName:e.tableName})})]})}function u_(e){return F({getParentRoute:()=>e,path:`/databases/{-$databaseName}/{-$tableName}`,head:()=>({meta:[{title:`Databases — Harper Fabric`}]}),component:l_})}var d_={className:`text-primary font-semibold bg-primary/10 rounded-md dark:text-white dark:bg-white/10`};function f_(){let e=ba(),t=N({strict:!1}),{version:n}=zn({strict:!1}),r=Us(`4.6.0`,n)&&e,i=Us(`4.7.0-beta.7`,n),{data:a}=A(zd(B(),r)),o=a?.restartRequired??!1,s=(0,R.useMemo)(()=>[e&&{to:Ol(t),activeOptions:{exact:!0},name:`Applications`,shortName:`Apps`,icon:(0,z.jsx)(Le,{className:`inline-block`})},{to:Ol(t,`databases`),icon:(0,z.jsx)(Fn,{className:`inline-block`}),name:`Databases`},e&&i&&{to:Ol(t,`apis`),name:`APIs`,icon:(0,z.jsx)(Ln,{className:`inline-block`})},e&&r&&{to:Ol(t,`status`),icon:(0,z.jsx)(wn,{className:`inline-block`}),name:`Status`},e&&{to:Ol(t,`logs`),icon:(0,z.jsx)(lr,{className:`inline-block`}),name:`Logs`},e&&{to:Ol(t,`config`),icon:(0,z.jsx)(he,{className:`inline-block`}),name:`Config`}].filter(Ni),[e,t,i,r]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(p_,{links:s,restartRequired:o}),(0,z.jsx)(m_,{links:s,restartRequired:o})]})}function p_({links:e,restartRequired:t}){return(0,z.jsxs)(`div`,{className:`hidden md:flex items-center justify-between h-full text-sm text-foreground`,children:[(0,z.jsx)(Ga,{restartRequired:t}),(0,z.jsx)(`div`,{className:`flex space-x-2`,children:e.map(({shortName:e,...t})=>(0,z.jsxs)(k,{className:`p-2 text-center text-muted-foreground hover:text-foreground`,activeProps:d_,...t,children:[t.icon,(0,z.jsx)(`span`,{className:`hidden xl:inline-block ml-1`,children:t.name}),e&&(0,z.jsx)(`span`,{className:`visible xl:hidden ml-1`,children:e})]},t.to))})]})}function m_({links:e,restartRequired:t}){return(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)(`div`,{className:`flex md:hidden items-center justify-between h-full px-2 text-foreground`,children:[(0,z.jsx)(Ga,{restartRequired:t}),(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{asChild:!0,children:(0,z.jsx)(g,{variant:`ghost`,className:`p-0`,children:(0,z.jsx)(Xt,{className:`h-8 w-8`})})}),(0,z.jsxs)(ms,{children:[(0,z.jsx)(_s,{children:`Instance Menu`}),(0,z.jsx)(vs,{}),e.map(e=>(0,z.jsx)(hs,{asChild:!0,children:(0,z.jsx)(k,{to:e.to,activeProps:d_,children:e.name})},e.to))]})]})]})})}({...di}),{...fi},{...ni},{...pi};var h_=5e4,g_=`get_analytics_raw`;function __(e){let{metric:t,startTime:n,endTime:r,conditions:i,instanceParams:a,bucketMs:o}=e,s=a.entityId;return P({queryKey:[g_,s,t,n,r,o??null,i??null],queryFn:()=>v_(e)})}async function v_({metric:e,startTime:t,endTime:n,conditions:r,instanceParams:i,bucketMs:a}){let o={operation:`get_analytics`,metric:e,start_time:t,end_time:n};r&&r.length>0&&(o.conditions=r),a&&a>0&&(o.bucket_ms=a);let{data:s}=await i.instanceClient.post(`/`,o);return s.length>h_?(console.warn(`[analytics] response exceeded row cap; truncating oldest`,{metric:e,rows:s.length,cap:h_,dropped:s.length-h_}),s.slice(-5e4)):s}({...ri}),{...$r},{...ui},{...ci},{...ei},{...li},{...Zr},{...mi},{...ii};async function y_({instanceClient:e,logFilters:t,replicated:n}){let{data:r}=await e.post(`/`,{operation:`read_log`,start:0,replicated:n,limit:t.limit?parseInt(t.limit,10):void 0,level:t.level===`undefined`?void 0:t.level,from:t.from?new Date(t.from).toISOString():void 0,until:t.until?new Date(t.until).toISOString():void 0,log_name:t.log_name??void 0,filter:t.filter?t.filter:void 0,order:`desc`});return r}function b_(e){let t=e.logFilters;return P({queryKey:[e.entityId,`read_log`,t.limit,t.level,t.from,t.until,t.log_name,t.filter,e.replicated],queryFn:()=>y_(e),retry:!1,refetchInterval:e.isAutoRefreshEnabled?5e3:!1})}({...ti}),{...Qr},{...si},{...oi},{...ai};function x_(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`nav`,{className:`fixed top-20 w-full z-39 h-12 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,z.jsx)(f_,{})}),(0,z.jsx)(`div`,{className:`mt-32 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsx)(Er,{})}),!1]})}function S_(e){switch(e){case`local`:return F({getParentRoute:()=>qu,id:`_instanceLayout`,component:x_,loader:rg});case`cluster`:return F({getParentRoute:()=>Qu,id:`_instanceLayout`,component:x_,beforeLoad:C_,loader:rg});case`instance`:return F({getParentRoute:()=>Qu,path:`instance/$instanceId`,component:x_,beforeLoad:C_,loader:rg})}}async function C_({context:e,params:t}){let n=e.authentication[t.instanceId||t.clusterId];if(n?.isLoading||n?.user)return;let r=e.authentication[m];if(r?.isLoading)return;let{update:i}=t.instanceId?ya(r.user,t.organizationId,t.clusterId):_a(r.user,t.organizationId,t.clusterId);if(i){let e=t.instanceId||t.clusterId,n=a({id:e,forceFabricConnect:!0});try{let t=await h({instanceClient:n});c.setUserForIdAndKey(e,n.defaults.baseURL,t),c.flagForFabricConnect(e,!0);return}catch(e){console.error(`Fabric Connect not established`,e)}}throw rt({to:`/${t.organizationId}/${t.clusterId}/`+(t.instanceId?`instance/${t.instanceId}`:``)+`/sign-in`,search:Ku()})}function w_({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`skeleton`,className:d(`bg-primary/10 animate-pulse rounded-md`,e),...t})}var T_=se(`inline-flex
27
+ 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 Am({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`add_certificate`,...t});return n}var jm=D({name:w().min(1,`Name is required`),certificate:w().min(1,`Certificate is required`),private_key:w().optional(),is_authority:E().default(!1),hosts:w().optional(),uses:w().optional()});function Mm(){return M({mutationFn:({instanceParams:e,certificateParams:t})=>Am(e,t)})}function Nm({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=I({resolver:j(jm),defaultValues:{name:``,certificate:``,private_key:``,is_authority:!1,hosts:``,uses:``}}),i=B(),{mutate:a,isPending:o}=Mm(),s=(0,R.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(),L.success(`Certificate added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,R.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...r,children:(0,z.jsxs)(`form`,{id:`instance-add-certificate-form`,name:`instance-add-certificate-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Add New Certificate`}),(0,z.jsx)(ls,{children:`Enter the details of your Certificate below.`})]}),(0,z.jsx)(U,{control:r.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`is_authority`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex flex-row items-center justify-between rounded-lg border border-gray-800 p-3 shadow-sm`,children:[(0,z.jsx)(`div`,{className:`space-y-0.5`,children:(0,z.jsx)(G,{children:`Is Authority`})}),(0,z.jsx)(H,{children:(0,z.jsx)(Om,{checked:e.value,onCheckedChange:e.onChange})})]})}),(0,z.jsx)(U,{control:r.control,name:`certificate`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Certificate`}),(0,z.jsx)(H,{children:(0,z.jsx)(km,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`hosts`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Hosts (optional)`}),(0,z.jsx)(Gc,{children:`Comma-separated list of hostnames this certificate is valid for.`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. example.com, *.example.com`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`uses`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Uses (optional)`}),(0,z.jsx)(Gc,{children:`Comma-separated list of intended uses, e.g. "https, operations, wss".`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,placeholder:`e.g. https, operations, wss`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`private_key`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Private Key (optional)`}),(0,z.jsx)(Gc,{children:`PEM formatted private key string.`}),(0,z.jsx)(H,{children:(0,z.jsx)(km,{autoComplete:`off`,autoCapitalize:`off`,rows:5,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{variant:`destructiveOutline`,type:`button`,className:`rounded-full`,onClick:c,disabled:o,children:`Cancel`}),(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:o||!r.formState.isDirty||!r.formState.isValid,children:[(0,z.jsx)(Pe,{}),` Add Certificate`]})]})})]})})})})}async function Pm({instanceClient:e},t){let{data:n}=await e.post(`/`,{operation:`remove_certificate`,name:t});return n}function Fm(){return M({mutationFn:({instanceParams:e,name:t})=>Pm(e,t)})}function Im({data:e,isModalOpen:t,closeModal:n,onSelectCertificate:r,onChangesSaved:i}){let{name:a}=e,o=B(),{mutate:s,isPending:c}=Fm(),[l,u]=(0,R.useState)(!1),d=(0,R.useCallback)(()=>{u(!0)},[]),f=(0,R.useCallback)(()=>{s({instanceParams:o,name:a},{onSuccess:()=>{L.success(`Certificate removed successfully!`),r(void 0),i()}})},[a,s,o,i,r]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(J,{onOpenChange:n,open:t,children:(0,z.jsx)(Y,{className:`sm:max-w-[800px] max-h-[90vh] overflow-y-auto`,"aria-describedby":void 0,children:(0,z.jsxs)(`div`,{className:`grid gap-4 my-4`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsxs)(Z,{children:[`View Certificate: `,a]}),(0,z.jsx)(ls,{children:`Details of the selected certificate.`})]}),(0,z.jsxs)(`div`,{className:`space-y-4`,children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 text-sm bg-gray-900/50 p-4 rounded-lg border border-gray-800`,children:[(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Issuer`}),(0,z.jsx)(`p`,{className:`text-gray-400 break-all`,children:e.details.issuer||`N/A`})]}),(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Subject`}),(0,z.jsx)(`p`,{className:`text-gray-400 break-all`,children:e.details.subject||`N/A`})]}),e.details.subject_alt_name&&(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Subject Alternative Name`}),(0,z.jsx)(`p`,{className:`text-gray-400 break-all`,children:e.details.subject_alt_name})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Valid From`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.details.valid_from?new Date(e.details.valid_from).toLocaleString():`N/A`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Valid To (Expires At)`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.details.valid_to?new Date(e.details.valid_to).toLocaleString():`N/A`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Serial Number`}),(0,z.jsx)(`p`,{className:`text-gray-400 font-mono text-xs break-all`,children:e.details.serial_number||`N/A`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Private Key Name`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.private_key_name||`N/A`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Is Authority`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.is_authority?`Yes`:`No`})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Is Self-Signed`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.is_self_signed?`Yes`:`No`})]}),e.hosts&&e.hosts.length>0&&(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Hosts`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.hosts.join(`, `)})]}),(0,z.jsxs)(`div`,{className:`col-span-2`,children:[(0,z.jsx)(`p`,{className:`font-semibold`,children:`Uses`}),(0,z.jsx)(`p`,{className:`text-gray-400`,children:e.uses?.join(`, `)||`N/A`})]})]}),(0,z.jsxs)(`div`,{className:`space-y-2`,children:[(0,z.jsx)(Ya,{children:`Certificate Content`}),(0,z.jsx)(km,{autoComplete:`off`,autoCapitalize:`off`,rows:8,readOnly:!0,className:`font-mono text-xs`,value:e.certificate})]})]}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{type:`button`,variant:`destructiveOutline`,className:`rounded-full`,onClick:d,disabled:c,children:`Remove Certificate`}),(0,z.jsx)(g,{type:`button`,variant:`defaultOutline`,className:`rounded-full`,onClick:()=>n(),children:`Close`})]})})]})})}),(0,z.jsx)(us,{isModalOpen:l,setIsModalOpen:u,deletionConfirmed:f,deletionPending:c,typeOfThingBeingDeleted:`certificate`,presentParticiple:`Removing`,transitiveVerb:`Remove`,nameOfThingBeingDeleted:a,hideDataLossWarning:!0})]})}function Lm(){let e=De(),{certName:t}=N({strict:!1}),{data:n,refetch:r,isFetching:i,isRefetching:a}=A(Em(B())),o=(0,R.useMemo)(()=>n?.find(e=>e.name===t),[n,t]),s=(0,R.useCallback)(n=>{let r=n?.original?.name;e({to:[t?`..`:``,r].filter(Boolean).join(`/`)})},[t,e]),c=!!t&&!!o,[l,u]=(0,R.useState)(!1),d=(0,R.useCallback)(()=>{u(!0)},[u]),f=Yl(r);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Wl,{columns:Dm,data:n||[],isFetching:i,onRowClick:s,children:[(0,z.jsx)(k,{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,z.jsxs)(g,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:d,accessKey:`a`,disabled:l,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),l&&(0,z.jsx)(Nm,{isModalOpen:l,onChangesSaved:r,setIsModalOpen:u}),c&&(0,z.jsx)(Im,{isModalOpen:c,closeModal:s,data:o,onSelectCertificate:s,onChangesSaved:r})]})}function Rm(){return(0,z.jsx)(Td,{})}var zm=`flex items-center p-2 rounded-lg group`,Bm={className:`text-foreground hover:bg-accent dark:text-white dark:hover:bg-gray-700`},Vm={className:`text-black bg-white pointer-events-none cursor-default`};function Hm(){let e=N({strict:!1}),{version:t}=zn({strict:!1}),n=Us(`4.6.0`,t),{clusterId:r}=e,i=ba(),{data:a}=A(ro(r,!1));a===void 0||ys(a);let o=i&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Al(e,`config/users`),className:zm,inactiveProps:Bm,activeProps:Vm,children:[(0,z.jsx)(En,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Users`})]})}),(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Al(e,`config/roles`),className:zm,inactiveProps:Bm,activeProps:Vm,children:[(0,z.jsx)(Cr,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Roles`})]})}),n&&(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Al(e,`config/certificates`),className:zm,inactiveProps:Bm,activeProps:Vm,children:[(0,z.jsx)(Hn,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Certificates`})]})}),!1,n&&(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Al(e,`config/ssh-keys`),className:zm,inactiveProps:Bm,activeProps:Vm,children:[(0,z.jsx)(gr,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`SSH Keys`})]})})]});return(0,z.jsxs)(`div`,{className:`md:grid gap-4 md:grid-cols-12 min-h-[calc(100vh-(--spacing(36)))]`,children:[(0,z.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,z.jsx)(Um,{params:e,children:o}),(0,z.jsx)(Wm,{params:e,children:o})]}),(0,z.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9 md:pt-4`,children:(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:(0,z.jsx)(Er,{})})})]})}function Um({params:e,children:t}){return(0,z.jsxs)(`div`,{className:`hidden md:block pl-4 pt-4`,children:[(0,z.jsxs)(k,{to:Al(e,`config`),className:zm,activeOptions:{exact:!0},inactiveProps:Bm,activeProps:Vm,children:[(0,z.jsx)(Kt,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Overview`})]}),t&&(0,z.jsx)(`ul`,{className:`border-t border-gray-700 pt-4 mt-4 space-y-2`,children:t})]})}function Wm({params:e,children:t}){return(0,z.jsxs)(`ul`,{className:`flex space-x-2 md:hidden py-2 px-4`,children:[(0,z.jsx)(`li`,{children:(0,z.jsxs)(k,{to:Al(e,`config`),className:zm,activeOptions:{exact:!0},inactiveProps:Bm,activeProps:Vm,children:[(0,z.jsx)(Kt,{className:`hidden md:inline-block`}),` `,(0,z.jsx)(`span`,{className:`ms-3`,children:`Overview`})]})}),t]})}async function Gm({clusterId:e,instanceId:t}){return null}function Km(e){return P({queryKey:[e.clusterId,e.instanceId],queryFn:()=>Gm(e),retry:!1})}var qm=({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,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Harper Version`}),(0,z.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,z.jsx)(jc,{className:`w-10`}):n?(0,z.jsx)(`a`,{href:n,target:`_blank`,className:`underline hover:text-blue-300`,rel:`noopener noreferrer`,children:t.version}):t?.version||`Unknown`})]})},Jm=({loading:e,timestamp:t})=>{let n=t?new Date(t).toLocaleString():`Never`;return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`dt`,{className:`font-bold text-sm/6`,children:`Last Deployed`}),(0,z.jsx)(`dd`,{className:`text-sm/6 sm:mt-2`,children:e?(0,z.jsx)(jc,{className:`w-24`}):n})]})};async function Ym({instanceClient:e,...t}){let{data:n}=await e.post(`/`,{operation:`set_configuration`,...t});return n}function Xm({onRestartedSuccessfully:e}={}){let t=B(),r=xt(),[i,o]=(0,R.useState)(!1);return{onConfigUpdate:(0,R.useCallback)(async i=>{o(!0);let s=!1,l={duration:6e4,action:{label:`Cancel`,onClick:()=>{s=!0}}},d=L.loading(`Restarting`,{...l,description:(0,z.jsx)(Ys,{animated:!0,width:`0%`})}),f=t.entityType===`cluster`?await no(t.entityId):null,m=t.entityType===`cluster`?f?.instances||[]:[{id:t.entityId,status:`RUNNING`}],g=!!f&&c.checkForFabricConnect(f.id),_=t.entityType===`cluster`?m.filter(e=>e.status===`RUNNING`).map(e=>a({id:e.id,forceFabricConnect:g,operationsUrl:n(e)})).reverse():[t.instanceClient],v=0;if(_.length)for(let e=0;e<_.length;e++){let t=_[e];if(!s){L.loading(`Updating Instance ${e+1} of ${_.length}`,{...l,id:d,description:(0,z.jsx)(Ys,{animated:!0,width:(e===0?0:e/_.length*100)+`%`})});try{await h({instanceClient:t}),await Ym({...i,instanceClient:t}),await ep({operation:`restart_service`,replicated:!1,instanceClient:t}),v+=1}catch{e+1!==_.length&&(L.loading(`Failed Restarting Instance ${e+1} of ${_.length}`,{...l,id:d,description:`We will carry on momentarily.`}),await p(3e3))}}}if(o(!1),r.invalidateQueries({queryKey:[t.entityId,`get_configuration`]}),s)L.error(`Cancelled`,{id:d,description:`The config update was partially cancelled.`,duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});else if(m.length===v)e?.(),L.success(`Success`,{id:d,description:`Your configuration has been updated successfully!`,duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}});else{let e=u(m.length,`instance`,`instances`),t=u(v,`"RUNNING" instance was`,`"RUNNING" instances were`);L.error(`Error`,{id:d,description:`Failed to fully update cluster.
28
+ `+([m.length===0&&`No instances were found within the cluster to restart.`,v===0&&`No instances were in a "RUNNING" state of ${e}.`,m.length!==v&&`Only ${t} restarted of ${e}.`].filter(Ni).shift()||``),duration:1e4,action:{label:`Dismiss`,onClick:()=>L.dismiss()}})}},[t,e,r]),isPending:i}}function Zm({entityId:e,instanceClient:t}){return P({queryKey:[e,`get_configuration`],queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`get_configuration`});return e}})}function Qm({entityId:e,instanceClient:t}){return P({queryKey:[e,`registration_info`],staleTime:6e4,gcTime:5e3,queryFn:async()=>{let{data:e}=await t.post(`/`,{operation:`registration_info`});return e}})}function $m({entityId:e,instanceClient:t},n){return P({queryKey:[e,`get_usage_licenses`],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 eh={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 th(e,t,n){if(JSON.stringify(t)===JSON.stringify(n))return!1;let r=e.split(`.`),i=eh;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 nh(e,t=eh){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}else if(typeof a==`object`&&a){let e=nh(i,a);e!==void 0&&(typeof e!=`object`||Object.keys(e).length>0)&&(n[r]=e)}else n[r]=i}return n}function rh(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=rh(r,a);Object.keys(e).length>0&&(n[i]=e)}else JSON.stringify(r)!==JSON.stringify(a)&&(n[i]=a)}return n}function ih(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,ih(i,a)):n[a]=i}return n}var ah=({children:e})=>(0,z.jsx)(z.Fragment,{children:e});function oh(){let{clusterId:e,instanceId:t}=N({strict:!1}),{data:n,isLoading:r}=A(Km({clusterId:e,instanceId:t})),i=B(),{version:a}=zn({strict:!1}),{data:o}=A($m(i,!1));n?.cluster;let s=n?.instance,{data:c,isLoading:l}=A(Qm(i)),{data:u,isLoading:d}=A(Zm(i)),f=ba(),{data:p,isLoading:m}=A($p({...i,enabled:f})),h=(0,R.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]),_=(0,R.useMemo)(()=>u?nh(u):null,[u]),v=ou(),[y,b]=(0,R.useState)(!1),[x,S]=(0,R.useState)(``),[C,ee]=(0,R.useState)(null),[w,te]=(0,R.useState)([]),{onConfigUpdate:ne,isPending:T}=Xm();(0,R.useEffect)(()=>{_&&!y&&(S(JSON.stringify(_,null,4)),ee(null),te([]))},[_,y]);let E=(0,R.useCallback)(e=>{if(S(e||``),e)try{let t=JSON.parse(e);ee(null);let n=[],r=(e,t,i=``)=>{for(let a in e){let o=i?`${i}.${a}`:a,s=e[a],c=t?.[a];th(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||th(a,void 0,t[r])&&n.push(a)}};_&&r(t,_),te(n)}catch(e){ee(e.message),te([])}},[u]),re=(0,R.useCallback)(()=>{if(!(C||w.length>0))try{ne(ih(rh(_,JSON.parse(x)))),b(!1)}catch(e){ee(e.message)}},[x,C,ne,_,w.length]);return(0,R.useMemo)(()=>[],[o,s]),(0,z.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,z.jsx)(ah,{children:(0,z.jsxs)(`dl`,{className:`grid grid-cols-1 sm:grid-cols-3`,children:[(0,z.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,z.jsx)(qm,{loadingRegistration:l,registrationInfo:c})}),(0,z.jsx)(`div`,{className:`px-4 pb-4 sm:col-span-1 sm:px-0`,children:(0,z.jsx)(Jm,{loading:m,timestamp:h})}),(0,z.jsx)(`div`,{className:`px-4 pb-4 text-right sm:col-span-1 sm:px-0`,children:(0,z.jsx)(ip,{targetNoun:`Instance`,instanceClient:i.instanceClient,operation:`restart`})})]})}),(0,z.jsxs)(`div`,{className:`flex-none flex items-center justify-between mb-2`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`h3`,{className:`font-bold text-sm/6`,children:[`Instance Config `,y?`(editing)`:`(read only)`]}),!t&&!1]}),(0,z.jsx)(`div`,{className:`flex items-center gap-2 pr-4`,children:y?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(g,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>b(!1),children:[(0,z.jsx)(An,{className:`w-4 h-4 mr-1`}),` Cancel`]}),(0,z.jsxs)(g,{size:`sm`,disabled:!!C||w.length>0||T,onClick:re,children:[(0,z.jsx)(Pe,{className:`w-4 h-4 mr-1`}),` `,T?`Saving...`:`Save & Restart`]})]}):(0,z.jsxs)(g,{size:`sm`,onClick:()=>b(!0),children:[(0,z.jsx)(Ae,{className:`w-4 h-4 mr-1`}),` Edit`]})})]}),C&&(0,z.jsxs)(_p,{variant:`destructive`,className:`mb-4`,children:[(0,z.jsx)(Fe,{className:`h-4 w-4`}),(0,z.jsx)(vp,{children:`Invalid JSON`}),(0,z.jsx)(yp,{children:C})]}),w.length>0&&(0,z.jsxs)(_p,{variant:`destructive`,className:`mb-4`,children:[(0,z.jsx)(Fe,{className:`h-4 w-4`}),(0,z.jsx)(vp,{children:`Restricted Configuration`}),(0,z.jsxs)(yp,{children:[`The following fields cannot be modified via Studio:`,(0,z.jsx)(`ul`,{className:`list-disc ml-4 mt-2`,children:w.map(e=>(0,z.jsx)(`li`,{children:(0,z.jsx)(`code`,{children:e})},e))})]})]}),(0,z.jsx)(`div`,{className:`grow`,children:d?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(jc,{className:`w-full`}),(0,z.jsx)(jc,{className:`w-full`}),(0,z.jsx)(jc,{className:`w-1/2`})]}):(0,z.jsx)(pr,{className:`w-full min-h-full h-96`,language:`json`,theme:v,options:{readOnly:!y,scrollBeyondLastLine:!1},value:y?x:JSON.stringify(_,null,4),onChange:E})})]})}var sh=_r(),ch=[{header:`Role`,accessorKey:`role`,enableSorting:!1},sh.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>ql((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),sh.display({header:`Updated`,id:`__updatedtime__`,enableSorting:!1,cell:e=>ql((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}),sh.display({header:`Super User`,id:`super_user`,enableSorting:!1,cell:e=>e.row.original.permission.super_user?`Yes`:`No`}),sh.display({header:`Structure User`,id:`structure_user`,enableSorting:!1,cell:e=>e.row.original.permission.structure_user?`Yes`:`No`})];async function lh(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 uh(){return M({mutationFn:lh})}var dh=D({role:w().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:E(),structure_user:E()});function fh({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=I({resolver:j(dh),defaultValues:{role:``,super_user:!1,structure_user:!1}}),i=B(),{mutate:a,isPending:o}=uh(),s=(0,R.useCallback)(async e=>{e&&a({role:e.role,super_user:e.super_user,structure_user:e.structure_user,...i},{onSuccess:()=>{r.reset(),t(e.role),L.success(`Role added successfully!`),n(!1)}})},[a,r,i,t,n]),c=(0,R.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...r,children:(0,z.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,z.jsxs)(cs,{className:`md:col-span-2`,children:[(0,z.jsx)(Z,{children:`Add New Role`}),(0,z.jsx)(ls,{children:`After adding the role, you will be able to edit the per-table permissions.`})]}),(0,z.jsx)(U,{control:r.control,name:`role`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`super_user`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Super User`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`structure_user`,render:({field:e})=>(0,z.jsxs)(W,{className:`flex`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,checked:e.value,onChange:t=>e.onChange(t.target.checked)})}),(0,z.jsx)(G,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Structure User`}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{className:`md:col-span-2`,children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{variant:`destructiveOutline`,type:`button`,className:`rounded-full`,onClick:c,disabled:o,children:`Cancel`}),(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:o,children:[(0,z.jsx)(Pe,{}),` Add Role`]})]})})]})})})})}function ph({entityId:e,instanceClient:t}){return P({queryKey:[e,`list_roles`],queryFn:()=>mh({instanceClient:t}),refetchInterval:1e4})}async function mh({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_roles`});return t}function hh({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;for(let n in e){i[n]={tables:{}};for(let a in e[n]){let o=e[n][a].attributes.map(e=>e.attribute).sort();if(c){let e=t&&t[n]&&t[n].tables[a];i[n].tables[a]=gh(e,o,r)}else{let e=t&&t[n]&&t[n].tables[a];i[n].tables[a]=_h(e,o,r)}}}return i}function gh(e,t,n){let r=e&&Vs(e.attribute_restrictions,`attribute_name`);return{read:e?e.read:!0,insert:e?e.insert:!0,update:e?e.update:!0,delete:e?e.delete:!0,attribute_restrictions:t.filter(()=>n).map(t=>{let n=r?.[t];return{attribute_name:t,read:n?n.read:e?e.read:!0,insert:n?n.insert:e?e.insert:!0,update:n?n.update:e?e.update:!0,delete:n?n.delete:e?e.delete:!0}})}}function _h(e,t,n){let r=e&&Vs(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}}async function vh({id:e,permission:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`alter_role`,id:e,permission:t});return r}function yh(){return M({mutationFn:vh})}async function bh({id:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`drop_role`,id:e});return n}function xh(){return M({mutationFn:bh})}async function Sh({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`describe_all`});return t}function Ch(e){return P({queryKey:[e.entityId,`describe_all`],queryFn:()=>Sh(e),staleTime:6e4,gcTime:5e3,retry:!1})}function wh({data:e,instanceId:t,clusterId:n,isModalOpen:r,closeModal:i,onSelectRole:a,onChangesSaved:o}){let s=ou(),{role:c,permission:l}=e,[u,d]=(0,R.useState)(JSON.stringify(l,null,2)),f=B(),[p,m]=(0,R.useState)(!0),{data:h}=A(Ch(f)),{data:_}=A(Qm(f)),v=bi(t??n).user?.role?.role===e.role,[y,b]=Du(u?.includes(`attribute_name`)),{mutate:x,isPending:S}=yh(),{mutate:C}=xh(),ee=(0,R.useCallback)(e=>{m(e.length===0)},[m]),w=(0,R.useMemo)(()=>JSON.stringify(h&&_&&hh({instanceDatabaseMap:h,currentRolePermissions:u&&Hi(u)||l,version:_.version,showAttributes:y}),null,2),[l,h,_,y]);(0,R.useEffect)(()=>{d(w)},[w]);let te=(0,R.useCallback)(t=>{if(t){let n=JSON.parse(t);if(n.super_user||n.structure_user||n.cluster_user)for(let e in n)(e!==`super_user`&&e!==`structure_user`&&e!==`cluster_user`||n[e]===!1)&&delete n[e];x({id:e.id,permission:n,...f},{onSuccess:()=>{L.success(`Role updated successfully!`),a(void 0),o()}})}},[x,e.id,f,o,a]),ne=(0,R.useCallback)(()=>{C({id:e.id,...f},{onSuccess:()=>{L.success(`Role deleted successfully!`),a(void 0),o()}})},[e.id,C,f,o,a]),T=(0,R.useCallback)(()=>{u&&p&&te(u)},[u,te,p]),E=(0,R.useCallback)(()=>{ne()},[ne]);return(0,z.jsx)(J,{onOpenChange:i,open:r,children:(0,z.jsxs)(Y,{className:`sm:max-w-[750px]`,children:[(0,z.jsxs)(Z,{children:[v?`View`:`Edit`,` Role "`,c,`"`]}),(0,z.jsx)(ls,{children:v?`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.`}),w?(0,z.jsx)(Mn,{theme:s,height:`400px`,defaultLanguage:`json`,value:u,options:v?{readOnly:!0}:void 0,onValidate:ee,onChange:d,defaultValue:w}):(0,z.jsx)(jc,{}),(0,z.jsx)(X,{children:!v&&(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{type:`button`,variant:`destructiveOutline`,className:`rounded-full`,onClick:E,disabled:S,children:`Delete Role`}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsxs)(Ya,{className:`flex`,children:[(0,z.jsx)(q,{type:`checkbox`,className:`w-6`,checked:y,onChange:b}),(0,z.jsx)(`span`,{className:`pl-4 pr-8 flex-1 py-2.5`,children:`Pick Attributes`})]}),(0,z.jsx)(g,{variant:`submit`,className:`rounded-full`,onClick:T,disabled:S||!p,children:`Save Changes`})]})})]})})}function Th(){let e=De(),{clusterId:t,instanceId:n,roleId:r}=N({strict:!1}),{data:i,refetch:a,isFetching:o,isRefetching:s}=je(ph(B())),c=(0,R.useMemo)(()=>i?.find(e=>e.id===r),[i,r]),l=(0,R.useCallback)(t=>{e({to:[r?`..`:``,t].filter(Boolean).join(`/`)})},[r,e]),u=!!r&&!!c,[d,f]=(0,R.useState)(!1),p=(0,R.useCallback)(()=>{f(!0)},[f]),m=(0,R.useCallback)(e=>{a(),f(!1),l(e)},[l,a]),h=(0,R.useCallback)(e=>{l(e.original.role)},[l]),_=(0,R.useCallback)(()=>{l(void 0)},[l]),v=Yl(a);return(0,z.jsxs)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,z.jsxs)(Wl,{columns:ch,data:i,isFetching:o,onRowClick:h,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:v,accessKey:`r`,disabled:o||s,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:p,accessKey:`a`,disabled:d,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,z.jsx)(fh,{isModalOpen:d,onChangesSaved:m,setIsModalOpen:f}),u&&(0,z.jsx)(wh,{instanceId:n,clusterId:t,isModalOpen:u,closeModal:_,data:c,onSelectRole:l,onChangesSaved:()=>a()})]})}async function Eh({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_ssh_keys`});return t}function Dh(e){return P({queryKey:[e.entityId,`list_ssh_keys`],queryFn:()=>Eh(e)})}var Oh=[{header:`SSH Key Name`,accessorKey:`name`,enableSorting:!1}];async function kh({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`get_ssh_known_hosts`});return t}function Ah(e){return P({queryKey:[e.entityId,`get_ssh_known_hosts`],queryFn:()=>kh(e)})}var jh=D({known_hosts:w().trim()});async function Mh(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 Nh(){return M({mutationFn:Mh})}function Ph(){let e=B(),{data:t}=je(Ah(e)),n=I({resolver:j(jh),defaultValues:{known_hosts:t?.known_hosts||``}}),{mutate:r,isPending:i}=Nh(),a=(0,R.useCallback)(async t=>{let{known_hosts:i}=t;i&&r({known_hosts:i.trim()+`
29
+ `,...e},{onSuccess:()=>{n.reset(t),L.success(`Known hosts saved!`)}})},[r,n,e]);return(0,z.jsx)(V,{...n,children:(0,z.jsx)(`form`,{id:`instance-edit-known-hosts-form`,name:`instance-edit-known-hosts-form`,onSubmit:n.handleSubmit(a),className:`grid my-4 md:grid-cols-2 overflow-x-auto rounded-md`,children:(0,z.jsx)(U,{control:n.control,name:`known_hosts`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2 gap-0`,children:[(0,z.jsx)(G,{className:`bg-muted dark:bg-black-dark py-3 px-2 m-0 text-left font-medium whitespace-nowrap`,children:`Known Hosts`}),(0,z.jsxs)(`div`,{className:`border border-grey-700 p-2 pb-3`,children:[(0,z.jsx)(Gc,{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,z.jsx)(H,{children:(0,z.jsx)(km,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:10,...e})}),(0,z.jsx)(K,{}),(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full mt-2`,disabled:i||!n.formState.isDirty||!n.formState.isValid,children:[(0,z.jsx)(Pe,{}),` `,i?`Saving`:`Save`,` Known Hosts`,i?`...`:``]})]})]})})})})}var Fh=D({name:w().trim().min(1).regex(/^[a-zA-Z0-9-_]*$/,{error:`Can only contain letters, numbers, dashes and underscores.`}),key:w().min(1).trim(),host:w().min(1).trim(),hostname:w().min(1).trim(),known_hosts:w().trim().optional()});async function Ih(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 Lh(){return M({mutationFn:Ih})}function Rh({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=I({resolver:j(Fh),defaultValues:{name:``,key:``,host:``,hostname:``,known_hosts:``}}),i=B(),{mutate:a,isPending:o}=Lh(),s=(0,R.useCallback)(async e=>{if(e){let{name:o,key:s,host:c,hostname:l,known_hosts:u}=e;a({name:o,key:s.trim()+`
30
+ `,host:c,hostname:l,known_hosts:u||void 0,...i},{onSuccess:()=>{r.reset(),t(),L.success(`SSH Key added successfully!`),n(!1)}})}},[a,r,i,t,n]),c=(0,R.useCallback)(()=>{r.reset(),n(!1)},[r,n]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...r,children:(0,z.jsxs)(`form`,{id:`instance-add-ssh-key-form`,name:`instance-add-ssh-key-form`,onSubmit:r.handleSubmit(s),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,z.jsxs)(cs,{className:`md:col-span-2`,children:[(0,z.jsx)(Z,{children:`Add New SSH Key`}),(0,z.jsx)(ls,{children:`Enter the details of your SSH Key below.`})]}),(0,z.jsx)(U,{control:r.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`key`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Key`}),(0,z.jsx)(Gc,{children:`Your private key. Don't have one? Try out "ssh-keygen"! You'll want to add your public key to your registry, i.e. GitHub.`}),(0,z.jsx)(H,{children:(0,z.jsx)(km,{autoComplete:`off`,autoCapitalize:`off`,rows:3,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`host`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Host`}),(0,z.jsx)(Gc,{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,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`hostname`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Hostname`}),(0,z.jsx)(Gc,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:r.control,name:`known_hosts`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Known Hosts`}),(0,z.jsx)(Gc,{children:`Optionally, append known hosts, one per line. GitHub known hosts should resolve automatically.`}),(0,z.jsx)(H,{children:(0,z.jsx)(km,{autoComplete:`off`,autoCapitalize:`off`,className:`whitespace-nowrap`,rows:3,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{className:`md:col-span-2`,children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[(0,z.jsx)(g,{variant:`destructiveOutline`,type:`button`,className:`rounded-full`,onClick:c,disabled:o,children:`Cancel`}),(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:o||!r.formState.isDirty||!r.formState.isValid,children:[(0,z.jsx)(Pe,{}),` Add SSH Key`]})]})})]})})})})}async function zh(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 Bh(){return M({mutationFn:zh})}async function Vh({name:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`get_ssh_key`,name:e});return n}function Hh(e){return P({queryKey:[e.entityId,`get_ssh_key`],queryFn:()=>Vh(e),refetchInterval:1e4})}var Uh=D({name:w().trim(),key:w().min(1).trim()});async function Wh(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 Gh(){return M({mutationFn:Wh})}function Kh({data:e,isModalOpen:t,closeModal:n,onSelectSSHKey:r,onChangesSaved:i}){let{name:a}=e,o=I({resolver:j(Uh),defaultValues:{name:a,key:``}}),s=B(),{data:c}=A(Hh({...s,name:a})),{mutate:l,isPending:u}=Gh(),{mutate:d}=Bh(),f=(0,R.useCallback)(async({key:e})=>{e&&l({name:a,key:e.trim()+`
31
+ `,...s},{onSuccess:()=>{L.success(`SSH Key updated successfully!`),r(void 0),i()}})},[l,a,s,r,i]),p=(0,R.useCallback)(()=>{d({name:a,...s},{onSuccess:()=>{L.success(`SSH Key deleted successfully!`),r(void 0),i()}})},[a,d,s,i,r]);return(0,z.jsx)(J,{onOpenChange:n,open:t,children:(0,z.jsx)(Y,{className:`sm:max-w-[750px]`,"aria-describedby":void 0,children:(0,z.jsx)(V,{...o,children:(0,z.jsxs)(`form`,{id:`instance-edit-ssh-key-form`,name:`instance-edit-ssh-key-form`,onSubmit:o.handleSubmit(f),className:`grid gap-4 my-4 md:grid-cols-2`,children:[(0,z.jsx)(Z,{children:`Edit SSH Key`}),(0,z.jsx)(U,{control:o.control,name:`name`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,readOnly:!0,disabled:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:o.control,name:`key`,render:({field:e})=>(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Key`}),(0,z.jsx)(Gc,{children:`Replace your existing private key. Lost it? Try out "ssh-keygen"! You'll want to add your public key to your registry, i.e. GitHub.`}),(0,z.jsx)(H,{children:(0,z.jsx)(km,{autoComplete:`off`,autoCapitalize:`off`,autoFocus:!0,rows:3,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Host`}),(0,z.jsx)(Gc,{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,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.host||``,disabled:!0,readOnly:!0})}),(0,z.jsx)(K,{})]}),(0,z.jsxs)(W,{className:`md:col-span-2`,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Hostname`}),(0,z.jsx)(Gc,{children:`When making the request, the actual hostname to use, i.e. "github.com".`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,autoComplete:`off`,autoCapitalize:`off`,value:c?.hostname||``,disabled:!0,readOnly:!0})}),(0,z.jsx)(K,{})]}),(0,z.jsxs)(X,{children:[(0,z.jsx)(g,{type:`button`,variant:`destructiveOutline`,className:`rounded-full`,onClick:p,disabled:u,children:`Delete SSH Key`}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsx)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:u||!o.formState.isValid,children:`Update SSH Key`})]})]})})})})}function qh(){let e=De(),{keyName:t}=N({strict:!1}),{data:n,refetch:r,isFetching:i,isRefetching:a}=A(Dh(B())),o=(0,R.useMemo)(()=>n?.find(e=>e.name===t),[n,t]),s=(0,R.useCallback)(n=>{let r=n?.original?.name;e({to:[t?`..`:``,r].filter(Boolean).join(`/`)})},[t,e]),c=!!t&&!!o,[l,u]=(0,R.useState)(!1),d=(0,R.useCallback)(()=>{u(!0)},[u]),f=Yl(r);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Wl,{columns:Oh,data:n||[],isFetching:i,onRowClick:s,children:[(0,z.jsx)(k,{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,z.jsxs)(g,{variant:`defaultOutline`,onClick:f,accessKey:`r`,disabled:i||a,children:[(0,z.jsx)(wt,{}),(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:d,accessKey:`a`,disabled:l,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),l&&(0,z.jsx)(Rh,{isModalOpen:l,onChangesSaved:r,setIsModalOpen:u}),c&&(0,z.jsx)(Kh,{isModalOpen:c,closeModal:s,data:o,onSelectSSHKey:s,onChangesSaved:r}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(Os,{text:`Loading...`}),children:(0,z.jsx)(Ph,{})})]})}var Jh=_r(),Yh=[{header:`Username`,accessorKey:`username`,enableSorting:!1},Jh.display({header:`Role`,enableSorting:!1,id:`role`,cell:e=>e.row.original.role.role}),{header:`Active`,accessorKey:`active`,enableSorting:!1},Jh.display({header:`Created`,enableSorting:!1,id:`__createdtime__`,cell:e=>ql((Date.now()-e.row.original.__createdtime__)/1e3,e.row.original.__createdtime__)}),{header:`Updated`,accessorKey:`__updatedtime__`,enableSorting:!1,cell:e=>ql((Date.now()-e.row.original.__updatedtime__)/1e3,e.row.original.__updatedtime__)}];function Xh({isModalOpen:e,onChangesSaved:t,setIsModalOpen:n}){let r=B(),{data:i}=je(ph(r)),a=I({resolver:j(Dd),defaultValues:{username:``,role:``,password:``,confirmPassword:``}}),{mutate:o,isPending:s}=Ad(),c=(0,R.useCallback)(async e=>{e&&o({active:!0,password:e.password,role:e.role,username:e.username,...r},{onSuccess:()=>{let r=e.role;a.reset(),a.setValue(`role`,r),t(),L.success(`User added successfully!`),n(!1)}})},[o,a,r,t,n]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsx)(Y,{"aria-describedby":void 0,children:(0,z.jsx)(V,{...a,children:(0,z.jsxs)(`form`,{id:`instance-add-user-form`,name:`instance-add-user-form`,onSubmit:a.handleSubmit(c),className:`grid gap-4 my-4`,children:[(0,z.jsx)(cs,{children:(0,z.jsx)(Z,{children:`Add New User`})}),(0,z.jsx)(U,{control:a.control,name:`username`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a.control,name:`password`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a.control,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:a.control,name:`role`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Role`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:t=>e.onChange(t),children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Role`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)(Lc,{children:`Role`}),i?.map(e=>(0,z.jsx)($,{value:e.id,children:e.role},e.id))]})})]})})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,disabled:s,children:[(0,z.jsx)(Pe,{}),` Add User`]})})})]})})})})}var Zh=D({username:Dd.shape.username,role:Dd.shape.role,newPassword:Dd.shape.password.or(ie(``)).optional(),confirmPassword:Dd.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 Qh({data:e,onUserUpdated:t}){let n=B(),{data:r}=je(ph(n)),{mutate:i,isPending:a}=Md(),o=I({resolver:j(Zh),defaultValues:{username:e.username,role:e.role.role,newPassword:``,confirmPassword:``}}),s=(0,R.useCallback)(r=>{let a={username:e.username,role:r.role,...n};r.newPassword&&(a.password=r.newPassword),i(a,{onSuccess:()=>{o.reset(),L.success(`User edited successfully!`),t()}})},[o,i,e.username,n,t]);return(0,z.jsx)(V,{...o,children:(0,z.jsxs)(`form`,{id:`instance-edit-user-form`,name:`instance-edit-user-form`,onSubmit:o.handleSubmit(s),className:`grid gap-4 my-4`,children:[(0,z.jsx)(cs,{children:(0,z.jsx)(Z,{children:`Edit User`})}),(0,z.jsx)(U,{control:o.control,name:`username`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,disabled:!0,readOnly:!0,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:o.control,name:`newPassword`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Change Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:o.control,name:`confirmPassword`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Confirm Password`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`password`,enterKeyHint:`next`,autoComplete:`new-password`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:o.control,name:`role`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Role`}),(0,z.jsx)(R.Suspense,{fallback:(0,z.jsx)(jc,{}),children:(0,z.jsx)(H,{children:(0,z.jsxs)(Mc,{...e,onValueChange:t=>e.onChange(t),children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Choose Role`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)(Lc,{children:`Role`}),r?.map(e=>(0,z.jsx)($,{value:e.id,children:e.role},e.id))]})})]})})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{variant:`submit`,className:`rounded-full`,disabled:a,children:[(0,z.jsx)(Pe,{}),` Save Changes`]})})})]})})}var $h=D({username:oo,confirmUsernameForDeletion:w().nonempty({error:`Please type the username again to confirm deletion.`}).toLowerCase()}).refine(e=>e.username===e.confirmUsernameForDeletion,{error:`Username does not match.`,path:[`confirmUsernameForDeletion`]});function eg({data:e,onUserDeleted:t}){let{mutate:n,isPending:r}=Pd(),i=I({resolver:j($h),defaultValues:{username:e.username,confirmUsernameForDeletion:``}}),a=sa(),o=(0,R.useCallback)(()=>{n({username:e.username,...a},{onSuccess:()=>{i.reset(),L.success(`User deleted successfully!`),t()}})},[e.username,i,n,a,t]);return(0,z.jsx)(V,{...i,children:(0,z.jsxs)(`form`,{id:`instance-delete-user-form`,name:`instance-delete-user-form`,onSubmit:i.handleSubmit(o),className:`grid gap-4 my-4`,children:[(0,z.jsx)(U,{control:i.control,name:`confirmUsernameForDeletion`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{className:`pb-1`,children:`Confirm Username`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`text`,enterKeyHint:`next`,autoComplete:`username`,...e})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{variant:`destructive`,className:`rounded-full`,disabled:r||!i.formState.isValid,children:[(0,z.jsx)(cn,{}),` Delete User`]})})})]})})}function tg({closeModal:e,clusterId:t,instanceId:n,data:r,isModalOpen:i,onUserDeleted:a,onUserUpdated:o}){let s=c.checkForFabricConnect(n??t),l=bi(n??t),u=!(!s&&l.user?.username===r.username);return(0,z.jsx)(J,{onOpenChange:e,open:i,children:(0,z.jsxs)(Y,{className:`sm:max-w-[750px]`,children:[(0,z.jsx)(Qh,{data:r,onUserUpdated:o}),u&&(0,z.jsx)(eg,{data:r,onUserDeleted:a})]})})}function ng({entityId:e,instanceClient:t}){return P({queryKey:[e,`list_users`],queryFn:()=>rg({instanceClient:t}),refetchInterval:1e4})}async function rg({instanceClient:e}){let{data:t}=await e.post(`/`,{operation:`list_users`});return t}function ig(){let e=De(),{instanceId:t,clusterId:n,username:r}=N({strict:!1}),{data:i,refetch:a,isFetching:o,isRefetching:s}=je(ng(B())),c=(0,R.useMemo)(()=>i?.find(e=>e.username===r),[i,r]),l=(0,R.useCallback)(t=>{e({to:[r?`..`:``,t].filter(Boolean).join(`/`)})},[r,e]),u=!!r&&!!c,[d,f]=(0,R.useState)(!1),[p]=(0,R.useState)({attribute:`username`,descending:!1}),m=(0,R.useMemo)(()=>[{desc:p.descending,id:p.attribute}],[p]),h=(0,R.useCallback)(()=>{f(!0)},[f]),_=(0,R.useCallback)(()=>{a(),f(!1)},[a,f]),v=(0,R.useCallback)(e=>{l(e.original.username)},[l]),y=(0,R.useCallback)(()=>{l(void 0)},[l]),b=(0,R.useCallback)(()=>{a(),l(void 0)},[l,a]),x=(0,R.useCallback)(()=>{a(),l(void 0)},[l,a]),S=Yl(a);return(0,z.jsxs)(R.Suspense,{fallback:(0,z.jsx)(Os,{className:`flex flex-col items-center justify-center h-full`,text:`Loading...`}),children:[(0,z.jsxs)(Wl,{data:i,isFetching:o||s,columns:Yh,onRowClick:v,sortingState:m,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:S,accessKey:`r`,disabled:o||s,children:[(0,z.jsx)(wt,{}),` `,(0,z.jsxs)(`span`,{className:`hidden lg:inline-block`,children:[(0,z.jsx)(`u`,{children:`R`}),`efresh`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:h,accessKey:`a`,disabled:d,children:[(0,z.jsx)(Rt,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`A`}),`dd`]})]})]}),(0,z.jsx)(Xh,{isModalOpen:d,onChangesSaved:_,setIsModalOpen:f}),u&&(0,z.jsx)(tg,{instanceId:t,clusterId:n,closeModal:y,data:c,isModalOpen:u,onUserDeleted:x,onUserUpdated:b})]})}function ag({context:e,params:t}){let n=ca(t);return e.queryClient.ensureQueryData(Qm(n))}function og(e){let t=F({getParentRoute:()=>e,path:`config`,head:()=>({meta:[{title:`Config — Harper Fabric`}]}),component:Hm,loader:ag}),n=F({getParentRoute:()=>t,path:`/`,head:()=>({meta:[{title:`Overview — Harper Fabric`}]}),component:oh,loader:ag}),r=F({getParentRoute:()=>t,path:`roles`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:Th}),i=F({getParentRoute:()=>t,path:`roles/$roleId`,head:()=>({meta:[{title:`Instance Roles — Harper Fabric`}]}),component:Th}),a=F({getParentRoute:()=>t,path:`users`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:ig}),o=F({getParentRoute:()=>t,path:`users/$username`,head:()=>({meta:[{title:`Instance Users — Harper Fabric`}]}),component:ig}),s=F({getParentRoute:()=>t,path:`domains`,head:()=>({meta:[{title:`Instance Domains — Harper Fabric`}]}),component:Rm}),c=F({getParentRoute:()=>t,path:`ssh-keys`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:qh}),l=F({getParentRoute:()=>t,path:`ssh-keys/$keyName`,head:()=>({meta:[{title:`SSH Keys — Harper Fabric`}]}),component:qh}),u=F({getParentRoute:()=>t,path:`certificates`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:Lm}),d=F({getParentRoute:()=>t,path:`certificates/$certName`,head:()=>({meta:[{title:`Certificates — Harper Fabric`}]}),component:Lm});return t.addChildren([n,r,i,a,o,s,c,l,u,d])}function sg({clusterId:e,databaseName:t,instanceId:n,organizationId:r,tableName:i}){let a=[`databases`,t,i].filter(Ni).join(`/`);return Al({organizationId:r,instanceId:n,clusterId:e},a)}function cg({className:e,children:t,...n}){return(0,z.jsxs)(Gr,{"data-slot":`scroll-area`,className:d(`relative`,e),...n,children:[(0,z.jsx)(He,{"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,z.jsx)(lg,{}),(0,z.jsx)(Tt,{})]})}function lg({className:e,orientation:t=`vertical`,...n}){return(0,z.jsx)(ye,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:d(`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,z.jsx)(zt,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}async function ug({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 dg(){return M({mutationFn:ug})}var fg=D({databaseName:fm,tableName:mm,primaryKey:w().regex(dm,{error:`Primary key cannot include backticks or forward slashes.`}).max(250,{error:`Primary key cannot be longer than 250 characters.`})});function pg({databaseName:e,onSelectTable:t}){let n=xt(),r=B(),i=fe(),[a,o]=(0,R.useState)(!1),s=I({resolver:j(fg),defaultValues:{databaseName:e||``,tableName:``,primaryKey:``}}),{mutate:c}=dg(),l=async e=>{let a=e.databaseName||`data`,l=e.tableName;c({databaseName:a,tableName:l,primaryKey:e.primaryKey||`id`,...r,replicated:r.entityType===`cluster`},{onSuccess:async()=>{await n.invalidateQueries({queryKey:[r.entityId,`describe_all`],refetchType:`all`}),L.success(`Table ${l} created successfully`),o(!1),s.reset(),t(a,l),await i.invalidate()}})};return(0,z.jsxs)(J,{open:a,onOpenChange:o,children:[(0,z.jsx)(as,{asChild:!0,children:(0,z.jsx)(`div`,{className:`sticky bottom-0 py-4 bg-background/80 backdrop-blur-xs dark:bg-black/70`,children:(0,z.jsxs)(g,{variant:`positiveOutline`,className:`w-full rounded-full`,size:`lg`,accessKey:`t`,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[`Create a `,(0,z.jsx)(`u`,{children:`T`}),`able`]})]})})}),(0,z.jsxs)(Y,{className:`sm:max-w-[425px]`,children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Create a New Table`}),(0,z.jsx)(ls,{children:`What would you like to create?`})]}),(0,z.jsx)(V,{...s,children:(0,z.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,z.jsx)(U,{control:s.control,name:`tableName`,render:({field:e})=>(0,z.jsxs)(W,{className:``,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Table Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`text`,maxLength:fg.shape.tableName.maxLength,autoFocus:!0,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:s.control,name:`primaryKey`,render:({field:e})=>(0,z.jsxs)(W,{className:``,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Primary Key`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,placeholder:`id`,type:`text`,maxLength:fg.shape.primaryKey.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:s.control,name:`databaseName`,render:({field:e})=>(0,z.jsxs)(W,{className:``,children:[(0,z.jsx)(G,{className:`pb-1`,children:`Database Name`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`text`,placeholder:`data`,maxLength:fg.shape.databaseName.maxLength,autoCapitalize:`off`,autoComplete:`off`,autoCorrect:`off`})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(X,{children:(0,z.jsxs)(g,{type:`submit`,variant:`submit`,className:`rounded-full`,children:[(0,z.jsx)(Mr,{}),`Create New Table`]})})]})})]})]})}function mg({instanceDatabaseMap:e}){let t=fe(),n=!e,r=N({strict:!1}),i=De(),a=xa(),{databaseNames:o,tableNames:s}=(0,R.useMemo)(()=>({databaseNames:Object.keys(e||{}).sort(),tableNames:r.databaseName?Object.keys(e?.[r.databaseName]||[]).sort():[]}),[e,r.databaseName]),c=(0,R.useCallback)(n=>{let a=n?Object.keys(e?.[n]||[]).sort():[];r.databaseName?i({to:sg({...r,databaseName:n,tableName:a[0]})}):t.invalidate()},[e,r,t,i]),l=(0,R.useCallback)((e,t)=>{i({to:sg({...r,databaseName:e,tableName:t})})},[i,r]);return(0,z.jsxs)(`div`,{className:`pl-3`,children:[(0,z.jsx)(`h1`,{className:`pt-3 pb-3 text-3xl`,children:`Databases`}),n?(0,z.jsx)(jc,{className:`w-full h-9 m-0 rounded-md`}):(0,z.jsx)(`div`,{className:`flex space-x-2`,children:(0,z.jsxs)(Mc,{name:`databaseSelect`,value:r.databaseName||``,disabled:o.length===0,onValueChange:c,children:[(0,z.jsx)(Fc,{className:`w-full`,children:(0,z.jsx)(Pc,{placeholder:`Select a Database`})}),(0,z.jsx)(Ic,{children:(0,z.jsx)(Nc,{children:o.map(e=>(0,z.jsx)($,{value:e,children:e},e))})})]})}),n?(0,z.jsx)(jc,{className:`w-full min-h-80 rounded-md mb-0`}):(0,z.jsxs)(cg,{className:`border rounded-md min-h-80 border-grey-700 mt-4`,children:[s.length===0&&r.databaseName?.length?(0,z.jsxs)(`div`,{className:`w-full h-full text-center`,children:[(0,z.jsx)(`p`,{className:`py-6`,children:`No tables found in this database.`}),a&&(0,z.jsx)(`p`,{children:`Tap "Create a Table" below!`})]}):s.length===0&&!r.databaseName?.length?a?(0,z.jsxs)(`p`,{className:`pt-2 text-sm text-center`,children:[`Please `,o.length===0?`create`:`select`,` a table.`]}):(0,z.jsxs)(`p`,{className:`pt-2 text-sm text-center`,children:[`Please `,o.length===0?`ask your admin to create`:`select`,` a table.`]}):``,(0,z.jsx)(`ul`,{children:s.map(e=>(0,z.jsx)(`li`,{className:`flex items-center p-2 border-b hover:bg-accent border-border dark:hover:bg-grey-700/80 dark:border-grey-700`,children:(0,z.jsxs)(g,{onClick:()=>l(r.databaseName,e),size:`lg`,className:`items-center justify-between w-full bg-transparent border-none shadow-none hover:bg-transparent text-foreground`,children:[e,(0,z.jsx)(`span`,{children:r.tableName===e&&(0,z.jsx)(Un,{})})]})},e))})]}),a&&(0,z.jsx)(pg,{databaseName:r.databaseName,onSelectTable:l})]})}function hg(e){if(!e)return{dataTableColumns:[],primaryKey:``};let t=e.primary_key??e.hash_attribute??``,{attributes:n}=e,r=[],i=[],a=[],o=[];for(let e=n.length-1;e>=0;e--){let{attribute:t,type:s,is_primary_key:c,indexed:l}=n[e],u={header:t,accessorKey:t,enableSorting:!!(c||l),enableColumnFilter:!!(c||l),size:gg(s)};c?r.push(u):t===`__createdtime__`||t===`__updatedtime__`?o.push(u):u.enableSorting?i.push(u):a.push(u)}return{dataTableColumns:[...r,...i,...a,...o],primaryKey:t}}function gg(e){switch(e){case`Id`:case`ID`:return 1;case`Boolean`:return 1;case`Int`:case`Long`:case`Float`:case`BigInt`:return 1;default:return Math.round(window.innerWidth*.1)}}async function _g({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 vg(){return M({mutationFn:_g})}function yg({isModalOpen:e,instanceTable:t,setIsModalOpen:n,refreshTable:r}){let i=ou(),{mutate:a,isPending:o}=vg(),s=B(),[c,l]=(0,R.useState)(!0),[d,f]=(0,R.useState)(),[p,m]=(0,R.useState)(!1),[h,_]=(0,R.useState)([]),v=(0,R.useMemo)(()=>{let e={};for(let n of t.attributes)n.is_primary_key||n.attribute===`__createdtime__`||n.attribute===`__updatedtime__`||(e[n.attribute]=bg(n.type));return JSON.stringify(e,null,4)},[t]),y=(0,R.useCallback)(e=>{m(!0),l(e.length===0)},[l]),b=(0,R.useCallback)(()=>{if(d&&c){let e=JSON.parse(d),i=Array.isArray(e)?e:[e],o=L.loading(`Adding ${i.length} records...`);a({...s,databaseName:t.schema,tableName:t.name,records:i},{onSuccess:e=>{r(),e.skipped_hashes?.length||n(!1),_(e.skipped_hashes),(e.skipped_hashes?.length>0?L.warning:L.success)(e.skipped_hashes?.length>0?`Warning!`:`Success!`,{id:o,description:(0,z.jsxs)(z.Fragment,{children:[e.inserted_hashes.length>0&&(0,z.jsxs)(`p`,{children:[`Added `,u(e.inserted_hashes.length,`record`,`records`)]}),e.skipped_hashes.length>0&&(0,z.jsxs)(`p`,{children:[`Skipped `,u(e.skipped_hashes.length,`record`,`records`)]})]})})}})}},[d,a,s,t.name,t.schema,c,r,n]),x=(0,R.useCallback)(e=>{e?.focus()},[]);return(0,z.jsx)(J,{onOpenChange:n,open:e,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,onEscapeKeyDown:e=>{p&&e.preventDefault()},children:[(0,z.jsx)(cs,{children:(0,z.jsxs)(Z,{children:[`Add New `,t.name]})}),(t?.primary_key??t?.hash_attribute)&&(0,z.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[`The primary key for this table is`,` `,(0,z.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,z.jsx)(pr,{className:`w-full h-96`,language:`json`,theme:i,value:v,onValidate:y,onChange:f,options:{minimap:{enabled:!1}},onMount:x}),(0,z.jsxs)(`div`,{className:`text-sm text-gray-500`,children:[(0,z.jsx)(`strong`,{children:`Provide an [array]`}),` if you want to add more than one record at a time.`]}),h.length>0&&(0,z.jsxs)(_p,{className:`mt-2`,children:[(0,z.jsx)(Se,{className:`w-4 h-4`}),(0,z.jsxs)(vp,{children:[`Skipped `,h.length===1?`Hash`:`Hashes`,` Detected`]}),(0,z.jsx)(yp,{className:`max-h-36 overflow-auto`,children:(0,z.jsx)(`ol`,{children:h.map(e=>(0,z.jsx)(`li`,{children:e},e))})})]}),(0,z.jsx)(X,{children:(0,z.jsx)(`div`,{className:`flex justify-between w-full`,children:(0,z.jsxs)(g,{variant:`submit`,className:`rounded-full`,onClick:b,accessKey:`s`,disabled:!d||!c||o,children:[(0,z.jsx)(Pe,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`S`}),`ave Changes`]})]})})})]})})}function bg(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 xg({databaseName:e,replicated:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`drop_database`,database:e,replicated:t});return r}function Sg(){return M({mutationFn:xg})}function Cg({databaseName:e,onDeleted:t}){let{value:n,trigger:r}=xf(`ShowDeleteDatabase`,!1),i=(0,R.useCallback)(()=>{Sf(`ShowDeleteDatabase`,!1),tm(r)},[r]),a=xa(),o=xt(),s=B(),c=fe(),{mutate:l,isPending:u}=Sg(),d=(0,R.useCallback)(()=>{l({databaseName:e,...s,replicated:s.entityType===`cluster`},{onSuccess:async()=>{i(),await o.invalidateQueries({queryKey:[s.entityId,`describe_all`],refetchType:`all`}),await c.invalidate(),L.success(`Database ${e} dropped successfully`),t(`database`)}})},[i,e,l,s,t,o,c]);return!a||!e?(0,z.jsx)(z.Fragment,{}):(0,z.jsx)(us,{typeOfThingBeingDeleted:`database`,nameOfThingBeingDeleted:e,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:n,setIsModalOpen:i,deletionConfirmed:d,deletionPending:u})}async function wg({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 Tg(){return M({mutationFn:wg})}function Eg({databaseName:e,tableName:t,onDeleted:n}){let{value:r,trigger:i}=xf(`ShowDeleteTable`,!1),a=(0,R.useCallback)(()=>{Sf(`ShowDeleteTable`,!1),tm(i)},[i]),o=xa(),s=xt(),c=B(),l=fe(),{mutate:u,isPending:d}=Tg(),f=(0,R.useCallback)(()=>{u({databaseName:e,tableName:t,...c,replicated:c.entityType===`cluster`},{onSuccess:async()=>{a(),await s.invalidateQueries({queryKey:[c.entityId,`describe_all`],refetchType:`all`}),await l.invalidate(),L.success(`Table ${t} dropped successfully`),n(`table`)}})},[a,e,u,c,n,s,l,t]);return!o||!e?(0,z.jsx)(z.Fragment,{}):(0,z.jsx)(us,{typeOfThingBeingDeleted:`table`,nameOfThingBeingDeleted:`${e} > ${t}`,transitiveVerb:`Drop`,presentParticiple:`Dropping`,isModalOpen:r,setIsModalOpen:a,deletionConfirmed:f,deletionPending:d})}function Dg({canEditRecords:e,canDeleteRecords:t,setIsModalOpen:n,isModalOpen:r,primaryKey:i,data:a,onSaveChanges:o,onDeleteRecord:s,isUpdateTableRecordsPending:c,isDeleteTableRecordsPending:l}){let u=ou(),[d,f]=(0,R.useState)(!0),[p,m]=(0,R.useState)(!1),[h,_]=(0,R.useState)(),v=(0,R.useMemo)(()=>{let e=a?.map(({__createdtime__:e,__updatedtime__:t,...n})=>n);return JSON.stringify(e,null,4)},[a]),y=(0,R.useCallback)(e=>{m(!0),f(e.length===0)},[f]);return(0,z.jsx)(J,{onOpenChange:n,open:r,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,autoFocus:e,onEscapeKeyDown:e?e=>{p&&e.preventDefault()}:void 0,children:[(0,z.jsx)(cs,{children:(0,z.jsxs)(Z,{children:[e?`Edit`:`View`,` Row`]})}),a?(0,z.jsx)(pr,{className:`w-full h-96`,language:`json`,theme:u,options:e?void 0:{readOnly:!0},value:v,onValidate:y,onChange:e=>{_(e)}}):(0,z.jsx)(Os,{}),(0,z.jsx)(X,{children:(0,z.jsxs)(`div`,{className:`flex justify-between w-full`,children:[t&&(0,z.jsxs)(g,{variant:`destructive`,className:`rounded-full`,type:`button`,autoFocus:!1,onClick:()=>{let e=a[0]?.[i];e&&s([e])},disabled:l,children:[(0,z.jsx)(cn,{}),` Delete Row`]}),e&&(0,z.jsxs)(g,{variant:`submit`,className:`rounded-full`,autoFocus:!0,accessKey:`s`,onClick:()=>{h&&d?o(JSON.parse(h)):n(!1)},disabled:!d||c,children:[(0,z.jsx)(Pe,{}),` `,(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`S`}),`ave Changes`]})]})]})})]})})}async function Og(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}function kg(){return M({mutationFn:Og})}var Ag=D({fileData:w(),database:w(),table:w()});function jg({setIsModalOpen:e,isModalOpen:t,onSaveChanges:n,database:r,table:i}){let[a,o]=(0,R.useState)(null),s=B(),{mutate:c,isPending:l}=kg(),u=e=>{if(!e.target.files)return;let t=e.target.files[0];if(t){let e=new FileReader;e.onload=e=>{let n=e.target?.result;typeof n==`string`&&(o(t),d.setValue(`fileData`,n))},e.readAsText(t)}},d=I({resolver:j(Ag),defaultValues:{database:r,table:i,fileData:``}}),f=e=>{c({fileData:e.fileData,database:r,table:i,...s},{onSuccess:({message:e})=>{d.reset(),o(null),n(e)}})};return(0,z.jsx)(J,{onOpenChange:()=>{e(!1),d.reset()},open:t,children:(0,z.jsxs)(Y,{children:[(0,z.jsxs)(cs,{children:[(0,z.jsx)(Z,{children:`Import CSV`}),(0,z.jsx)(ls,{children:`Upload a CSV file to import data into the table.`})]}),(0,z.jsx)(V,{...d,children:(0,z.jsxs)(`form`,{id:`instance-import-csv-form`,name:`instance-import-csv-form`,onSubmit:d.handleSubmit(f),children:[(0,z.jsx)(`div`,{className:`w-full`,children:(0,z.jsx)(U,{control:d.control,name:`fileData`,render:({field:e})=>(0,z.jsxs)(W,{className:`relative`,children:[(0,z.jsx)(G,{htmlFor:`dropzone-file`,className:`flex flex-col items-center justify-center w-full h-64 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,z.jsx)(H,{children:(0,z.jsxs)(`div`,{children:[(0,z.jsxs)(`div`,{className:`flex flex-col items-center justify-center pt-5 pb-6`,children:[(0,z.jsx)(Ue,{className:`text-muted-foreground`,size:48}),(0,z.jsx)(`p`,{className:`mb-2 text-sm text-muted-foreground`,children:a?a.name:(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`span`,{className:`font-semibold`,children:`Click to upload`}),` or drag and drop a CSV File`]})})]}),(0,z.jsx)(q,{id:`dropzone-file`,type:`file`,className:`opacity-0 w-full h-full absolute left-0 top-0 cursor-pointer`,accept:`.csv`,name:e.name,ref:e.ref,onBlur:e.onBlur,disabled:e.disabled,onChange:u})]})})}),(0,z.jsx)(K,{})]})})}),(0,z.jsx)(X,{className:`mt-4`,children:(0,z.jsxs)(g,{variant:`submit`,className:`rounded-full`,accessKey:`u`,disabled:!a||l,children:[(0,z.jsx)(Pe,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`U`}),`pload CSV`]})]})})]})})]})})}async function Mg({databaseName:e,instanceClient:t}){let{data:n}=await t.post(`/`,{operation:`cleanup_orphan_blobs`,database:e});return n}function Ng(){return M({mutationFn:Mg})}async function Pg({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 Fg(){return M({mutationFn:Pg})}async function Ig({databaseName:e,tableName:t,instanceClient:n}){let{data:r}=await n.post(`/`,{operation:`describe_table`,database:e,table:t});return r}function Lg(e){return P({queryKey:[e.entityId,e.databaseName,e.tableName,`describe_table`],queryFn:()=>Ig(e),staleTime:6e4,gcTime:5e3,enabled:!!e.databaseName&&!!e.tableName,retry:!1})}var Rg=[`1`,`bet`,`k`,`ok`,`si`,`tru`,`true`,`yes`,`yup`];function zg(e){let t=e.toLowerCase().trim();return Rg.includes(t)}function Bg(e){return!isNaN(e)&&!isNaN(parseFloat(e))}function Vg(e){if(e.startsWith(`0.`)&&Bg(e))return!0;let t=e.toUpperCase().includes(`E`);return!(e!==`0`&&e.startsWith(`0`))&&!t&&Bg(e)}var Hg={true:!0,TRUE:!0,false:!1,FALSE:!1,undefined:null,null:null,NULL:null,NaN:NaN},Ug=/^((\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 Wg(e){return e==null||e===``||typeof e!=`string`?e:Hg[e]===void 0?Vg(e)?Number(e):Ug.test(e)?new Date(e):e:Hg[e]}function Gg(e){let{enabled:t,entityId:n,databaseName:r,tableName:i,conditions:a,sort:o,pageIndex:s,pageSize:c,onlyIfCached:l}=e;return P({enabled:t&&!!a,queryKey:[n,r,i,`search_by_conditions`,a,o.attribute||`default`,o.descending||!1,s||0,c||0,l],staleTime:6e4,gcTime:5e3,retry:!1,queryFn:()=>Kg(e)})}function Kg({instanceClient:e,databaseName:t,tableName:n,conditions:r,sort:i,pageIndex:a,pageSize:o,onlyIfCached:s,headers:c}){return e.post(`/`,{operation:`search_by_conditions`,get_attributes:[`*`],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:c})}function qg(e,t,n){return t.split(/ & /).map(t=>Jg(e,t,n))}function Jg(e,t,n){t.startsWith(e)&&(t=t.substring(e.length));let{comparator:r,value:i}=Zg(t);switch(n?.type){case`ID`:case`String`:return{search_attribute:e,search_type:r,search_value:i};case`Int`:case`BigInt`:case`Long`:case`Float`:{let t=n.type.includes(`Int`)?parseInt(i,10):parseFloat(i);if(isNaN(t))throw Error(`${i} does not appear to be a valid number.`);return{search_attribute:e,search_type:r,search_value:t}}case`Date`:return{search_attribute:e,search_type:r,search_value:new Date(i).toISOString()};case`Boolean`:return{search_attribute:e,search_type:r,search_value:zg(i)};case`Blob`:case`Bytes`:return{search_attribute:e,search_type:r,search_value:i};default:return{search_attribute:e,search_type:r,search_value:Wg(i)}}}var Yg={"=== ":`equals`,"== ":`eq`,"equals ":`equals`,"equal ":`equals`,"eq ":`eq`,"!== ":`not_equal`,"!= ":`ne`,"notequals ":`not_equal`,"notequal ":`not_equal`,"ne ":`ne`},Xg={">":`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 Zg(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=Xg[e];if(r)return{comparator:r,value:t}}for(let n in Yg)if(t.startsWith(n))return{comparator:Yg[n],value:e.slice(n.length)};return t.endsWith(`*`)?{comparator:`starts_with`,value:e.slice(0,-1)}:{comparator:`equals`,value:e}}function Qg({enabled:e,entityId:t,instanceClient:n,databaseName:r,tableName:i,ids:a}){return P({queryKey:[t,`search_by_id`,r,i,a],queryFn:()=>n.post(`/`,{get_attributes:[`*`],ids:a,noCacheStore:!0,onlyIfCached:!0,operation:`search_by_id`,database:r,table:i}),enabled:e&&!!a?.length,retry:!1})}async function $g(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 e_(){return M({mutationFn:$g})}var t_=ee(w(),w());function n_({applyFilters:e,columnFiltersForm:t,headerGroups:n}){let r=(0,R.useCallback)(t=>{if(t.key===`Enter`)return t.preventDefault(),e(),!1},[e]);return(0,z.jsx)(Rl,{children:(0,z.jsx)(V,{...t,children:n.map(e=>(0,z.jsx)(Bl,{className:`border-none`,children:e.headers.map(e=>(0,z.jsx)(Ul,{style:{width:`${e.column.getSize()}px`},children:e.column.columnDef.enableColumnFilter&&(0,z.jsx)(U,{control:t.control,name:e.id,render:({field:e})=>(0,z.jsxs)(W,{className:`border-r-1 border-r-black`,children:[(0,z.jsx)(H,{children:(0,z.jsx)(q,{...e,type:`text`,autoCapitalize:`none`,autoComplete:`off`,className:`rounded-none`,onKeyDown:r,value:e.value??``})}),(0,z.jsx)(K,{})]})})},e.id))},e.id))})})}function r_({columns:e,columnVisibility:t,setColumnVisibility:n}){let r=(0,R.useMemo)(()=>e.map(e=>typeof e.header==`string`?e.header:void 0).filter(Ni),[e]),i=(0,R.useCallback)((e,r)=>{n({...t,[e]:r})},[t,n]);return(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{asChild:!0,children:(0,z.jsxs)(g,{variant:`ghost`,children:[(0,z.jsx)(mt,{className:`inline-block `}),`Columns`]})}),(0,z.jsx)(ms,{children:r.map(e=>(0,z.jsx)(i_,{columnHeader:e,isChecked:t[e]??!0,toggleColumn:i},e))})]})}function i_({columnHeader:e,isChecked:t,toggleColumn:n}){return(0,z.jsx)(gs,{checked:t,onCheckedChange:(0,R.useCallback)(t=>{n(e,t)},[e,n]),onSelect:e=>e.preventDefault(),children:e})}function a_({className:e}){return(0,z.jsx)(jn,{className:x(`animate-spin`,e)})}function o_({applyFilters:e,columnFiltersForm:t,columns:n,columnVisibility:r,data:i,isFetching:a,onColumnClick:o,onRowClick:s,pageIndex:c,pageSize:l,primaryKey:u,setPageIndex:d,setPageSize:f,filtersToggled:p,totalPages:m,totalRecords:h}){let _=tr({data:i||[],columns:n,manualPagination:!0,enableColumnResizing:!0,columnResizeMode:`onEnd`,pageCount:m,defaultColumn:{minSize:1},state:{columnVisibility:r},rowCount:h,getCoreRowModel:dn(),getPaginationRowModel:Gn()}),v=(0,R.useCallback)(()=>{d(c-1)},[c,d]),y=(0,R.useCallback)(()=>{d(c+1)},[c,d]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(Ll,{containerClassName:`rounded-md bg-card dark:bg-black-dark grow max-h-[calc(100vh-128px-16px-112px-80px)]`,children:[(0,z.jsx)(Rl,{children:_.getHeaderGroups().map(e=>(0,z.jsx)(Bl,{className:`border-none`,children:e.headers.map(e=>(0,z.jsx)(Hl,{header:e,onColumnClick:o},e.id))},e.id))}),p&&(0,z.jsx)(n_,{applyFilters:e,columnFiltersForm:t,headerGroups:_.getHeaderGroups()}),(0,z.jsx)(zl,{className:`bg-background dark:bg-black border border-border dark:border-grey-700`,children:_.getRowModel().rows?.length?_.getRowModel().rows.map(e=>(0,z.jsx)(s_,{row:e,onRowClick:s,primaryKey:u},e.id)):(0,z.jsx)(Bl,{children:(0,z.jsx)(Ul,{colSpan:n.length,className:`h-24 text-center`,children:a||i===void 0?(0,z.jsx)(a_,{className:`opacity-50 inline-block`}):(0,z.jsx)(`span`,{children:`No results.`})})})})]}),(0,z.jsxs)(`div`,{className:`flex items-center justify-end py-4 space-x-2 pr-4`,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,size:`sm`,onClick:v,className:`select-none`,disabled:c===0,children:[(0,z.jsx)(Sr,{}),`Previous`]}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsxs)(`div`,{className:`text-center`,children:[(0,z.jsx)(`dt`,{className:`font-medium text-gray-500 text-sm/6 dark:text-gray-400`,children:`Records`}),(0,z.jsx)(`dd`,{className:`font-semibold tracking-tight`,children:h===void 0?(0,z.jsx)(jc,{}):nl(h)})]}),h!==void 0&&h>0&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{children:(0,z.jsxs)(Mc,{defaultValue:l.toString(),onValueChange:e=>{f(Number(e))},children:[(0,z.jsx)(Fc,{className:`h-10 w-20`,children:(0,z.jsx)(Pc,{})}),(0,z.jsx)(Ic,{side:`top`,children:[20,50,100,250].map(e=>(0,z.jsx)($,{value:`${e}`,children:e},e))})]})}),m!==void 0&&m>1&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`text-center`,children:[(0,z.jsx)(`dt`,{className:`font-medium text-gray-500 text-sm/6 dark:text-gray-400`,children:`Pages`}),(0,z.jsx)(`dd`,{className:`font-semibold tracking-tight`,children:nl(m)})]}),(0,z.jsxs)(`div`,{className:`text-center`,children:[(0,z.jsx)(`dt`,{className:`font-medium text-gray-500 text-sm/6 dark:text-gray-400`,children:`Page`}),(0,z.jsx)(`dd`,{className:`font-semibold tracking-tight`,children:nl(c+1)})]})]})]}),(0,z.jsx)(`div`,{className:`grow`}),(0,z.jsxs)(g,{variant:`defaultOutline`,size:`sm`,onClick:y,className:`select-none`,disabled:m===void 0||c===m-1,children:[`Next`,(0,z.jsx)(Un,{})]})]})]})}function s_({row:e,primaryKey:t,onRowClick:n}){let r=(0,R.useMemo)(()=>{let n=e.original,r=n&&n.message===`This entry has expired`,i=e.getVisibleCells();return console.log(`primaryKey, visibleCells`,t,i),r?i[0]?.column?.id===t?[(0,z.jsx)(c_,{cell:i[0]},i[0].id),(0,z.jsx)(l_,{colSpan:i.length-1},`expired`)]:[(0,z.jsx)(l_,{colSpan:i.length},`expired`)]:i.map(e=>(0,z.jsx)(c_,{cell:e},e.id))},[e,t]);return(0,z.jsx)(Bl,{"data-state":e.getIsSelected()&&`selected`,onClick:()=>n?.(e),className:d(`hover:bg-muted/10 data-[state=selected]:bg-muted`,n&&`cursor-pointer`),children:r})}function c_({cell:e}){return(0,z.jsx)(Ul,{style:{width:`${e.column.getSize()}px`},className:`px-2 py-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,children:e.getValue()==`[object Object]`?JSON.stringify(e.getValue()):rn(e.column.columnDef.cell,e.getContext())})}function l_({colSpan:e}){return(0,z.jsx)(Ul,{colSpan:e,className:`px-2 py-2 overflow-x-hidden max-w-32 text-ellipsis whitespace-nowrap`,children:(0,z.jsx)(`span`,{className:`text-muted-foreground`,children:`This entry has expired`})})}function u_({instanceDatabaseMap:e,databaseName:t,tableName:n}){let r=N({strict:!1}),i=De(),a=B(),{clusterId:o,instanceId:s}=r,{toggled:c,toggle:l}=cm(!0),u=yi(),d=Sa(s??o,t,n,`insert`),f=Sa(s??o,t,n,`update`),p=Sa(s??o,t,n,`delete`),m=xa(),{data:h}=A(Lg({...a,databaseName:t,tableName:n})),_=(0,R.useMemo)(()=>Vs(h?.attributes??[],`attribute`),[h]),[v,y]=Zd(null,r),[b,x]=(0,R.useState)(!1),S=(0,R.useMemo)(()=>(t?Object.keys(e?.[t]||[]).sort():[]).length===1,[e,t]),{toggled:C,toggleOn:ee,toggleOff:w}=cm(!1),te=I({resolver:j(t_)}),{reset:ne}=te,T=te.watch(),[E,re]=Zd(null,[r.clusterId,r.instanceId,t,n]),D=(0,R.useCallback)(()=>{let e=[];for(let t in T)if(T[t]?.length)try{e.push(...qg(t,T[t],_[t]))}catch(e){L.error(String(e))}re(e.length?e:null),ne({...T})},[_,ne,T]),ie=(0,R.useCallback)(()=>{ne({},{keepValues:!1,keepDirtyValues:!1,keepDefaultValues:!1}),ne(),re(null),w()},[w,ne]);(0,R.useEffect)(function(){return ie()},[r,ie]);let{dataTableColumns:ae,primaryKey:O}=hg(h),[oe,se]=(0,R.useState)(!1),[le,ue]=(0,R.useState)(!1),[de,fe]=Zd({attribute:O,descending:!1},r),[pe,me]=Zd(0,[t,n]),[he,ge]=(0,R.useState)(20),_e=h?.record_count,ve=h?.record_count?Math.ceil(h.record_count/he):0,ye=C&&!!E,be={...a,enabled:!ye&&!!O,databaseName:t,tableName:n,searchAttribute:O,sort:de,pageSize:he,pageIndex:pe,onlyIfCached:c},xe=sd(be),{data:Se,isFetching:Ce}=A(xe),we={...a,enabled:ye&&!!O,databaseName:t,tableName:n,conditions:E,sort:de,pageSize:he,pageIndex:pe,onlyIfCached:c},Te=Gg(we),{data:Ee,isFetching:Oe}=A(Te),ke=ye?Ee:Se,Ae=Ce||Oe,{data:je}=A(Qg({...a,enabled:b,databaseName:t,tableName:n,ids:v})),{mutate:Me,isPending:Ne}=e_(),{mutate:Pe,isPending:Fe}=Fg(),{mutate:Ie,isPending:Le}=Ng(),Re=xt(),Be=(0,R.useCallback)(()=>Re.invalidateQueries({queryKey:[a.entityId,t,n]}),[Re,a.entityId,t,n]),Ve=(0,R.useCallback)(async()=>{confirm(`Are you sure you want to cleanup orphan blobs for database "${t}"?`)&&Ie({...a,databaseName:t},{onSuccess:e=>{L.success(e.message||`Orphan blobs cleanup started successfully`),Be()},onError:e=>{L.error(e instanceof Error?e.message:`Failed to cleanup orphan blobs`)}})},[Ie,t,a,Be]),[He,We]=(0,R.useState)(!1),Ge=(0,R.useCallback)(async()=>{if(!O)return;let e=L.loading(`Loading CSV...`);We(!0);let r={pageIndex:0,pageSize:1e6,headers:{Accept:`text/csv`}},i=await(ye?Kg({...we,...r}):cd({...be,...r}));L.loading(`Preparing CSV...`,{id:e});let a=i.data,o=new Blob([a],{type:`text/csv`}),s=URL.createObjectURL(o),c=document.createElement(`a`);c.href=s,c.setAttribute(`download`,`${t}.${n}.${new Date().toISOString()}.csv`),c.click(),L.success(`CSV Exported!`,{id:e}),We(!1)},[t,n,xe,Te]),Ke=(0,R.useCallback)(e=>{Me({...a,databaseName:t,tableName:n,records:e},{onSuccess:()=>{Be(),x(!1),L.success(`Record updated successfully`)}})},[Me,a,t,n,Be]),qe=(0,R.useCallback)(e=>{Pe({...a,databaseName:t,tableName:n,hashValues:e},{onSuccess:()=>{Be(),x(!1),L.success(`Record deleted successfully`)}})},[Pe,a,t,n,Be]),Je=(0,R.useCallback)(e=>{Be(),ue(!1),L.success(`${e}. Please wait a few moments then refresh the table.`)},[Be]),Ye=e=>{y([e.original[O]]),x(!b)},Xe=(e,t)=>{fe({attribute:e,descending:!t})},Ze=Yl(Be),Qe=(0,R.useCallback)(()=>{se(!0)},[se]),$e=(0,R.useCallback)(()=>{ue(!0)},[ue]),tt=(0,R.useCallback)(e=>void i({to:e===`table`?`../`:`../../`}),[i]),[nt,rt]=of(`ColumnDisplayed/${t}/${n}`,{}),it=wf(`ShowDeleteTable`,!0),at=wf(`ShowDeleteDatabase`,!0);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`flex flex-col md:flex-row items-center justify-between space-y-3 md:space-y-0 md:space-x-3 pt-15 pb-4 pr-4`,children:[(0,z.jsxs)(`div`,{className:`flex space-x-2`,children:[d&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:Qe,disabled:oe,accessKey:`n`,children:[(0,z.jsx)(Rt,{}),(0,z.jsxs)(`span`,{children:[`Add `,(0,z.jsx)(`u`,{children:`N`}),`ew Record(s)`]})]}),d&&(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:$e,disabled:le,accessKey:`c`,children:[(0,z.jsx)(Ue,{}),(0,z.jsxs)(`span`,{children:[`Import `,(0,z.jsx)(`u`,{children:`C`}),`SV`]})]}),(0,z.jsxs)(g,{variant:`positiveOutline`,onClick:Ge,disabled:He,accessKey:`e`,children:[(0,z.jsx)(et,{}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`u`,{children:`E`}),`xport CSV`]})]})]}),(0,z.jsxs)(`div`,{className:`flex space-x-2`,children:[C&&E&&(0,z.jsxs)(g,{type:`button`,variant:`ghost`,onClick:ie,accessKey:`f`,children:[(0,z.jsx)(Dr,{className:`inline-block `}),(0,z.jsxs)(`span`,{children:[`Clear `,(0,z.jsx)(`u`,{children:`F`}),`ilters`]})]}),C&&te.formState.isDirty&&(0,z.jsxs)(g,{variant:`default`,onClick:D,children:[(0,z.jsx)(Rr,{className:`inline-block `}),`Apply Filters`]}),C&&!E&&(0,z.jsxs)(g,{variant:`ghost`,onClick:w,accessKey:`f`,children:[(0,z.jsx)(Dr,{className:`inline-block `}),(0,z.jsxs)(`span`,{children:[`Hide `,(0,z.jsx)(`u`,{children:`F`}),`ilters`]})]}),!C&&(0,z.jsxs)(g,{variant:`ghost`,onClick:ee,accessKey:`f`,children:[(0,z.jsx)($t,{className:`inline-block `}),(0,z.jsxs)(`span`,{children:[`Show `,(0,z.jsx)(`u`,{children:`F`}),`ilters`]})]}),(0,z.jsx)(g,{variant:`defaultOutline`,onClick:Ze,disabled:Ae,children:(0,z.jsx)(wt,{})}),(0,z.jsx)(r_,{columns:ae,columnVisibility:nt,setColumnVisibility:rt}),(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{asChild:!0,disabled:!e,children:(0,z.jsx)(g,{variant:`ghost`,size:`icon`,disabled:!e,children:(0,z.jsx)(Bn,{"aria-label":`Table options`})})}),(0,z.jsxs)(ms,{side:`bottom`,align:`end`,children:[(0,z.jsxs)(hs,{className:`focus:bg-primary/70 focus:text-white`,onClick:l,children:[c?(0,z.jsx)(Bt,{className:`text-green`}):(0,z.jsx)(ze,{}),`Only If Cached`,(0,z.jsx)(k,{to:`https://docs.harperdb.io/docs/developers/applications/caching#cache-control-header`,target:`_blank`,rel:`noopener noreferrer`,onClick:jp,children:(0,z.jsx)(dt,{})})]}),m&&u&&!!s&&(0,z.jsxs)(hs,{className:`focus:bg-yellow/70 focus:text-white`,onClick:Ve,disabled:Le,children:[(0,z.jsx)(ce,{className:`text-yellow `}),`Cleanup Orphan Blobs`]}),m&&!S&&(0,z.jsxs)(hs,{className:`focus:bg-red/70 focus:text-white`,onClick:it,children:[(0,z.jsx)(cn,{className:`inline-block `}),`Drop Table`]}),m&&(0,z.jsxs)(hs,{className:`focus:bg-red/70 focus:text-white`,onClick:at,children:[(0,z.jsx)(Ir,{}),`Drop Database`]})]})]})]})]}),(0,z.jsx)(o_,{primaryKey:O,data:ke?.data,isFetching:Ae,filtersToggled:C,columns:ae,columnVisibility:nt,onRowClick:Ye,onColumnClick:Xe,totalPages:ve,totalRecords:_e,pageIndex:pe,pageSize:he,columnFiltersForm:te,applyFilters:D,setPageIndex:me,setPageSize:ge}),d&&h&&oe&&(0,z.jsx)(yg,{instanceTable:h,isModalOpen:oe,refreshTable:Be,setIsModalOpen:se}),(0,z.jsx)(Dg,{canEditRecords:f,canDeleteRecords:p,setIsModalOpen:x,isModalOpen:b,primaryKey:O,data:je?.data,onSaveChanges:Ke,onDeleteRecord:qe,isUpdateTableRecordsPending:Ne,isDeleteTableRecordsPending:Fe}),(0,z.jsx)(Cg,{databaseName:t,onDeleted:tt}),(0,z.jsx)(Eg,{databaseName:t,tableName:n,onDeleted:tt}),(0,z.jsx)(jg,{isModalOpen:le,setIsModalOpen:ue,onSaveChanges:Je,database:t,table:n})]})}function d_(){let e=N({strict:!1}),{data:t}=A(Ch(B())),n,r;if(t){e.databaseName||(n=Object.keys(t).sort()[0]);let i=e.databaseName??n;!e.tableName&&i&&t[i]&&(r=Object.keys(t[i]).sort()[0])}return n||r?(0,z.jsx)(kt,{to:sg({...e,databaseName:n??e.databaseName,tableName:r}),replace:!0}):(0,z.jsxs)(`main`,{className:`grid grid-cols-1 gap-4 md:grid-cols-12 min-h-[calc(100vh-(--spacing(36)))]`,children:[(0,z.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-4 lg:col-span-3`,children:(0,z.jsx)(mg,{instanceDatabaseMap:t})}),(0,z.jsx)(`section`,{className:`col-span-1 text-foreground md:col-span-8 lg:col-span-9 flex flex-col`,children:e.databaseName&&e.tableName&&(0,z.jsx)(u_,{instanceDatabaseMap:t,databaseName:e.databaseName,tableName:e.tableName})})]})}function f_(e){return F({getParentRoute:()=>e,path:`/databases/{-$databaseName}/{-$tableName}`,head:()=>({meta:[{title:`Databases — Harper Fabric`}]}),component:d_})}var p_={className:`text-primary font-semibold bg-primary/10 rounded-md dark:text-white dark:bg-white/10`};function m_(){let e=ba(),t=N({strict:!1}),{version:n}=zn({strict:!1}),r=Us(`4.6.0`,n)&&e,i=Us(`4.7.0-beta.7`,n),{data:a}=A(Vd(B(),r)),o=a?.restartRequired??!1,s=(0,R.useMemo)(()=>[e&&{to:Al(t),activeOptions:{exact:!0},name:`Applications`,shortName:`Apps`,icon:(0,z.jsx)(Le,{className:`inline-block`})},{to:Al(t,`databases`),icon:(0,z.jsx)(Fn,{className:`inline-block`}),name:`Databases`},e&&i&&{to:Al(t,`apis`),name:`APIs`,icon:(0,z.jsx)(Ln,{className:`inline-block`})},e&&r&&{to:Al(t,`status`),icon:(0,z.jsx)(wn,{className:`inline-block`}),name:`Status`},e&&{to:Al(t,`logs`),icon:(0,z.jsx)(lr,{className:`inline-block`}),name:`Logs`},e&&{to:Al(t,`config`),icon:(0,z.jsx)(he,{className:`inline-block`}),name:`Config`}].filter(Ni),[e,t,i,r]);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(h_,{links:s,restartRequired:o}),(0,z.jsx)(g_,{links:s,restartRequired:o})]})}function h_({links:e,restartRequired:t}){return(0,z.jsxs)(`div`,{className:`hidden md:flex items-center justify-between h-full text-sm text-foreground`,children:[(0,z.jsx)(Ga,{restartRequired:t}),(0,z.jsx)(`div`,{className:`flex space-x-2`,children:e.map(({shortName:e,...t})=>(0,z.jsxs)(k,{className:`p-2 text-center text-muted-foreground hover:text-foreground`,activeProps:p_,...t,children:[t.icon,(0,z.jsx)(`span`,{className:`hidden xl:inline-block ml-1`,children:t.name}),e&&(0,z.jsx)(`span`,{className:`visible xl:hidden ml-1`,children:e})]},t.to))})]})}function g_({links:e,restartRequired:t}){return(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)(`div`,{className:`flex md:hidden items-center justify-between h-full px-2 text-foreground`,children:[(0,z.jsx)(Ga,{restartRequired:t}),(0,z.jsxs)(fs,{children:[(0,z.jsx)(ps,{asChild:!0,children:(0,z.jsx)(g,{variant:`ghost`,className:`p-0`,children:(0,z.jsx)(Xt,{className:`h-8 w-8`})})}),(0,z.jsxs)(ms,{children:[(0,z.jsx)(_s,{children:`Instance Menu`}),(0,z.jsx)(vs,{}),e.map(e=>(0,z.jsx)(hs,{asChild:!0,children:(0,z.jsx)(k,{to:e.to,activeProps:p_,children:e.name})},e.to))]})]})]})})}({...di}),{...fi},{...ni},{...pi};var __=5e4,v_=`get_analytics_raw`;function y_(e){let{metric:t,startTime:n,endTime:r,conditions:i,instanceParams:a,bucketMs:o}=e,s=a.entityId;return P({queryKey:[v_,s,t,n,r,o??null,i??null],queryFn:()=>b_(e)})}async function b_({metric:e,startTime:t,endTime:n,conditions:r,instanceParams:i,bucketMs:a}){let o={operation:`get_analytics`,metric:e,start_time:t,end_time:n};r&&r.length>0&&(o.conditions=r),a&&a>0&&(o.bucket_ms=a);let{data:s}=await i.instanceClient.post(`/`,o);return s.length>__?(console.warn(`[analytics] response exceeded row cap; truncating oldest`,{metric:e,rows:s.length,cap:__,dropped:s.length-__}),s.slice(-5e4)):s}({...ri}),{...$r},{...ui},{...ci},{...ei},{...li},{...Zr},{...mi},{...ii};async function x_({instanceClient:e,logFilters:t,replicated:n}){let{data:r}=await e.post(`/`,{operation:`read_log`,start:0,replicated:n,limit:t.limit?parseInt(t.limit,10):void 0,level:t.level===`undefined`?void 0:t.level,from:t.from?new Date(t.from).toISOString():void 0,until:t.until?new Date(t.until).toISOString():void 0,log_name:t.log_name??void 0,filter:t.filter?t.filter:void 0,order:`desc`});return r}function S_(e){let t=e.logFilters;return P({queryKey:[e.entityId,`read_log`,t.limit,t.level,t.from,t.until,t.log_name,t.filter,e.replicated],queryFn:()=>x_(e),retry:!1,refetchInterval:e.isAutoRefreshEnabled?5e3:!1})}({...ti}),{...Qr},{...si},{...oi},{...ai};function C_(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`nav`,{className:`fixed top-20 w-full z-39 h-12 md:px-12 bg-violet-50 border-b border-violet-100 dark:bg-grey-700 dark:border-none`,children:(0,z.jsx)(m_,{})}),(0,z.jsx)(`div`,{className:`mt-32 min-h-[calc(100vh-(--spacing(32)))]`,children:(0,z.jsx)(Er,{})}),!1]})}function w_(e){switch(e){case`local`:return F({getParentRoute:()=>Yu,id:`_instanceLayout`,component:C_,loader:ag});case`cluster`:return F({getParentRoute:()=>ed,id:`_instanceLayout`,component:C_,beforeLoad:T_,loader:ag});case`instance`:return F({getParentRoute:()=>ed,path:`instance/$instanceId`,component:C_,beforeLoad:T_,loader:ag})}}async function T_({context:e,params:t}){let n=e.authentication[t.instanceId||t.clusterId];if(n?.isLoading||n?.user)return;let r=e.authentication[m];if(r?.isLoading)return;let{update:i}=t.instanceId?ya(r.user,t.organizationId,t.clusterId):_a(r.user,t.organizationId,t.clusterId);if(i){let e=t.instanceId||t.clusterId,n=a({id:e,forceFabricConnect:!0});try{let t=await h({instanceClient:n});c.setUserForIdAndKey(e,n.defaults.baseURL,t),c.flagForFabricConnect(e,!0);return}catch(e){console.error(`Fabric Connect not established`,e)}}throw rt({to:`/${t.organizationId}/${t.clusterId}/`+(t.instanceId?`instance/${t.instanceId}`:``)+`/sign-in`,search:Ju()})}function E_({className:e,...t}){return(0,z.jsx)(`div`,{"data-slot":`skeleton`,className:d(`bg-primary/10 animate-pulse rounded-md`,e),...t})}var D_=se(`inline-flex
32
32
  items-center
33
33
  justify-center
34
34
  gap-2
@@ -48,5 +48,5 @@ Check the console for the full list.`:``)})),t(``)},[f,s,m,h,o,l,a]),{getRootPro
48
48
  focus-visible:ring-1
49
49
  focus-visible:outline-1
50
50
  focus-visible:ring-purple-200
51
- aria-invalid:focus-visible:ring-0`,{variants:{variant:{default:`bg-primary text-primary-foreground shadow-sm hover:bg-primary/90`,outline:`border bg-default border-primary border-2 text-foreground shadow-xs hover:-translate-y-1 transition duration-200 hover:bg-accent/60 dark:text-white dark:hover:bg-grey-700/40`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 px-1.5 min-w-8`,lg:`h-10 px-2.5 min-w-10`}},defaultVariants:{variant:`default`,size:`default`}});function E_({className:e,variant:t,size:n,...r}){return(0,z.jsx)(_t,{"data-slot":`toggle`,className:d(T_({variant:t,size:n,className:e})),...r})}function D_(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 O_=[`secondary`,`default`,`warning`,`outline`,`success`,`destructive`],k_=0,A_=new Map,j_=e=>{if(A_.has(e))return A_.get(e);k_++;let t=O_[k_%O_.length];return A_.set(e,t),t};function M_(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 N_({columns:e,data:t,onRowClick:n}){let r=tr({data:t,columns:e,getCoreRowModel:dn()});return(0,z.jsx)(`div`,{className:`rounded-md bg-card dark:bg-black-dark logsTable overflow-hidden`,children:(0,z.jsxs)(Fl,{className:`text-xs`,children:[(0,z.jsx)(Il,{children:r.getHeaderGroups().map(e=>(0,z.jsx)(Rl,{className:`border-b border-border`,children:e.headers.map(e=>(0,z.jsx)(zl,{className:`p-4 max-w-96`,children:e.isPlaceholder?null:rn(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,z.jsx)(Ll,{className:`bg-background dark:bg-black`,children:r.getRowModel().rows?.length?r.getRowModel().rows.map(e=>(0,z.jsx)(Rl,{"data-state":e.getIsSelected()&&`selected`,className:d(`hover:bg-muted/20 data-[state=selected]:bg-muted max-w-full border-l-2`,M_(e.original.level),n&&`cursor-pointer`),onClick:()=>n?.(e),children:e.getVisibleCells().map(e=>(0,z.jsx)(Vl,{className:`p-2`,children:rn(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,z.jsx)(Rl,{children:(0,z.jsx)(Vl,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function P_(e){try{JSON.parse(e)}catch{return!1}return!0}function F_({label:e,children:t}){return(0,z.jsxs)(`div`,{className:`flex items-start gap-3 py-1.5 border-b border-border/50 last:border-0`,children:[(0,z.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground w-20 shrink-0 pt-0.5`,children:e}),(0,z.jsx)(`span`,{className:`text-xs`,children:t})]})}function I_({setIsModalOpen:e,isModalOpen:t,data:n}){let r=n?j_(n.node):`default`,i=iu();return(0,z.jsx)(J,{onOpenChange:e,open:t,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`max-w-2xl`,children:[(0,z.jsx)(cs,{children:(0,z.jsx)(Z,{children:`Log Entry`})}),n?(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 text-popover-foreground`,children:[(0,z.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-muted/20 px-3 py-1`,children:[(0,z.jsx)(F_,{label:`Level`,children:(0,z.jsx)(ds,{variant:D_(n.level),children:Ua(n.level)})}),(0,z.jsx)(F_,{label:`Timestamp`,children:(0,z.jsx)(`span`,{className:`tabular-nums`,children:new Date(n.timestamp).toLocaleString()})}),(0,z.jsx)(F_,{label:`Thread`,children:(0,z.jsx)(`span`,{className:`tabular-nums font-mono`,children:n.thread})}),n.node&&(0,z.jsx)(F_,{label:`Node`,children:(0,z.jsx)(ds,{variant:r,children:n.node})}),n.tags&&n.tags.length>0&&(0,z.jsx)(F_,{label:`Tags`,children:(0,z.jsx)(`span`,{className:`font-mono`,children:n.tags})})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`Message`}),(0,z.jsx)(`div`,{className:`rounded-md overflow-hidden border border-border/50 h-72`,children:(0,z.jsx)(pr,{className:`w-full h-full`,language:P_(n.message)?`json`:`text`,theme:i,value:n.message,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,padding:{top:12,bottom:12}}})})]})]}):(0,z.jsx)(Os,{})]})})}var L_=D({limit:w().or(T()).or(O()).optional(),level:re([`notify`,`error`,`warn`,`info`,`debug`,`trace`,`undefined`]).or(T()).or(O()).optional(),from:w().or(T()).or(O()).optional(),until:w().or(T()).or(O()).optional(),log_name:re([`hdb.log`,`system.log`]).or(T()).or(O()).optional(),filter:w().or(T()).or(O()).optional()});function R_({form:e,resetFilters:t,submitFilters:n,showLogName:r,showFilter:i}){let[a,o]=(0,R.useState)(!1);return(0,z.jsxs)(xi,{children:[(0,z.jsx)(Si,{children:(0,z.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-expanded":a,"aria-controls":`logs-filters-content`,className:`flex w-full items-center justify-between md:pointer-events-none`,children:[(0,z.jsxs)(Ci,{className:`flex items-center gap-2 text-base`,children:[(0,z.jsx)(Ee,{className:`size-4 text-muted-foreground`}),`Filters`]}),(0,z.jsx)(sr,{className:d(`size-4 text-muted-foreground transition-transform md:hidden`,a&&`rotate-180`)})]})}),(0,z.jsx)(Ti,{id:`logs-filters-content`,className:d(!a&&`hidden`,`md:block`),children:(0,z.jsx)(V,{...e,children:(0,z.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,z.jsx)(U,{control:e.control,name:`filter`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(H,{children:(0,z.jsxs)(`div`,{className:`relative`,children:[(0,z.jsx)(lt,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,z.jsx)(q,{type:`search`,placeholder:`Search logs…`,className:`pl-9`,value:e.value??``,onChange:e.onChange})]})}),(0,z.jsx)(K,{})]})}),r&&(0,z.jsx)(U,{control:e.control,name:`log_name`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Log file`}),(0,z.jsxs)(Mc,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,z.jsx)(Fc,{className:`w-full bg-white dark:bg-grey-700`,children:(0,z.jsx)(Pc,{placeholder:`Select log file`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)($,{value:`hdb.log`,children:`Application (hdb.log)`}),(0,z.jsx)($,{value:`system.log`,children:`System (system.log)`})]})})]}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,z.jsx)(U,{control:e.control,name:`limit`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Limit`}),(0,z.jsxs)(Mc,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,z.jsx)(Fc,{className:`w-full bg-white dark:bg-grey-700`,children:(0,z.jsx)(Pc,{placeholder:`Limit`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)($,{value:`1000`,children:`1000`}),(0,z.jsx)($,{value:`500`,children:`500`}),(0,z.jsx)($,{value:`250`,children:`250`}),(0,z.jsx)($,{value:`100`,children:`100`}),(0,z.jsx)($,{value:`10`,children:`10`})]})})]}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e.control,name:`level`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Level`}),(0,z.jsxs)(Mc,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,z.jsx)(Fc,{className:`w-full bg-white dark:bg-grey-700`,children:(0,z.jsx)(Pc,{placeholder:`Level`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)($,{value:`undefined`,children:`All`}),(0,z.jsx)($,{value:`notify`,children:`Notify`}),(0,z.jsx)($,{value:`error`,children:`Error`}),(0,z.jsx)($,{value:`warn`,children:`Warn`}),(0,z.jsx)($,{value:`info`,children:`Info`}),(0,z.jsx)($,{value:`debug`,children:`Debug`}),(0,z.jsx)($,{value:`trace`,children:`Trace`})]})})]}),(0,z.jsx)(K,{})]})})]}),(0,z.jsx)(U,{control:e.control,name:`from`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Start date`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`datetime-local`,value:e.value??void 0,onChange:e.onChange})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e.control,name:`until`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`End date`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`datetime-local`,value:e.value??void 0,onChange:e.onChange})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,z.jsx)(g,{type:`submit`,variant:`positiveOutline`,className:`grow`,children:`Apply Filters`}),(0,z.jsx)(g,{type:`reset`,variant:`destructiveOutline`,onClick:t,children:`Clear`})]})]})})})]})}var z_={log_name:`hdb.log`,limit:`100`,level:`undefined`,from:``,until:``,filter:``},B_={error:(0,z.jsx)(Fe,{className:`size-3`}),stderr:(0,z.jsx)(Fe,{className:`size-3`}),warn:(0,z.jsx)(Br,{className:`size-3`}),notify:(0,z.jsx)(tn,{className:`size-3`}),info:(0,z.jsx)(un,{className:`size-3`}),debug:(0,z.jsx)(vt,{className:`size-3`}),trace:(0,z.jsx)(bn,{className:`size-3`}),stdout:(0,z.jsx)(Se,{className:`size-3`})},V_=[{accessorKey:`level`,header:`Level`,cell:({row:e})=>{let{level:t}=e.original;return(0,z.jsxs)(ds,{variant:D_(t),children:[B_[t],Ua(t)]})}},{accessorKey:`timestamp`,header:`Timestamp`,cell:({row:e})=>{let{timestamp:t}=e.original,n=new Date(t);return(0,z.jsxs)(`span`,{className:`tabular-nums whitespace-nowrap text-muted-foreground`,children:[n.getFullYear()===new Date().getFullYear()?n.toLocaleDateString(void 0,{month:`numeric`,day:`2-digit`}):n.toLocaleDateString(),` `,n.toLocaleTimeString()]})}},{accessorKey:`message`,header:`Message`,cell:({row:e})=>{let{message:t}=e.original;return(0,z.jsx)(`span`,{className:`block max-w-xl truncate font-mono text-xs`,children:t})}},{accessorKey:`thread`,header:`Thread`,cell:({row:e})=>(0,z.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=j_(t);return(0,z.jsx)(z.Fragment,{children:t?(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(ds,{variant:n,children:[t.split(`.`)[0],`...`]})}),(0,z.jsx)(Va,{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,z.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:t}):null}}],H_=(e,t)=>!e&&!t||!e||!t?!0:new Date(e)<=new Date(t);function U_(){return(0,z.jsxs)(`div`,{className:`rounded-md bg-card dark:bg-black-dark overflow-hidden`,children:[(0,z.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,z.jsx)(w_,{className:`h-4 ${e}`},t))}),Array.from({length:12}).map((e,t)=>(0,z.jsxs)(`div`,{className:`flex gap-4 p-3 border-b border-border/40 border-l-2 border-l-transparent`,children:[(0,z.jsx)(w_,{className:`h-5 w-14`}),(0,z.jsx)(w_,{className:`h-5 w-32`}),(0,z.jsx)(w_,{className:`h-5 w-10`}),(0,z.jsx)(w_,{className:`h-5 w-20`}),(0,z.jsx)(w_,{className:`h-5 w-12`}),(0,z.jsx)(w_,{className:`h-5 flex-1 max-w-xs`})]},t))]})}function W_(){let[e,t]=(0,R.useState)(z_),[n,r]=(0,R.useState)(!1),[i,a]=(0,R.useState)(),[o,s]=(0,R.useState)(!1),c=B(),{data:l}=A(Xm(c)),u=l?.version,d=!!u&&Us(`4.7.16`,u),{data:f,isLoading:p,refetch:m,isFetching:h}=A(b_({logFilters:e,...c,replicated:c.entityType===`cluster`,isAutoRefreshEnabled:o})),_=I({resolver:j(L_),defaultValues:z_,mode:`onChange`}),v=e=>{a(e.original),r(!0)},y=async e=>{if(!H_(e.from,e.until)){_.setError(`from`,{type:`onChange`,message:`Start date must be before end date`}),_.setError(`until`,{type:`onChange`,message:`End date must be after start date`});return}t(e)},b=async()=>{_.reset(),t(z_)},x=ql(m);return(0,z.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 pt-2 text-foreground md:grid-cols-12`,children:[(0,z.jsxs)(`section`,{className:`col-span-1 md:col-span-4 lg:col-span-3 px-2 pb-4 md:self-start md:sticky md:top-34 md:max-h-[calc(100vh-(--spacing(34)))] md:overflow-y-auto`,children:[(0,z.jsx)(R_,{form:_,resetFilters:b,submitFilters:y,showLogName:!1,showFilter:d}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 mt-3`,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:x,disabled:h||p||o,className:`grow`,children:[(0,z.jsx)(wt,{}),`Refresh`]}),(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(E_,{variant:`outline`,"aria-label":`Toggle Auto Refresh`,pressed:o,onPressedChange:s,className:`shrink-0`,children:[(0,z.jsx)(wt,{className:o?`animate-spin`:``}),`Auto`]})}),(0,z.jsx)(Va,{children:o?`Auto refresh on — click to disable`:`Enable auto refresh (every 5s)`})]})]})]}),(0,z.jsx)(`section`,{className:`col-span-1 md:col-span-8 lg:col-span-9`,children:p?(0,z.jsx)(U_,{}):(0,z.jsx)(N_,{columns:V_,data:f||[],onRowClick:v})}),(0,z.jsx)(I_,{isModalOpen:n,setIsModalOpen:r,data:i})]})}function G_(e){return F({getParentRoute:()=>e,path:`logs`,head:()=>({meta:[{title:`Logs — Harper Fabric`}]}),component:W_})}function K_(e){return F({getParentRoute:()=>e,path:`status`,head:()=>({meta:[{title:`Status — Harper Fabric`}]}),component:Lr(async()=>Yr(()=>import(`./status-KVqwJsbk.js`),__vite__mapDeps([14,1,3,2,4,5,6,7,8,9,10,11])),`StatusIndex`)})}function q_(e){let t=S_(e),n=[G_(t),...Sm(t),qd(t),K_(t),ig(t),u_(t)];return t.addChildren(n)}F({getParentRoute:()=>qu,path:`profile`,head:()=>({meta:[{title:`Profile — Harper Fabric`}]}),component:Lr(async()=>Yr(()=>import(`./profile-DAsdweRg.js`),__vite__mapDeps([15,1,4,3,2,5,6,7,8,9,10,11])),`ProfileIndex`)});var J_=zi.addChildren([...Zo,qu.addChildren([q_(`local`)])]);function Y_({routeTree:e=J_,authentication:t}){return Qt({routeTree:e,history:Pn(),defaultNotFoundComponent:ki,defaultErrorComponent:Oi,defaultPreload:Ai()?!1:`intent`,trailingSlash:`never`,defaultPreloadStaleTime:0,scrollRestoration:!0,context:{queryClient:Mi,authentication:t||{}}})}function X_(){let e=gi(),t=Y_({authentication:e});return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Cn,{router:t,context:{authentication:e}}),(0,z.jsx)(ut,{router:t,position:`bottom-right`})]})}var Z_=({...e})=>(0,z.jsx)(or,{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}),Q_=!1,$_=!1;function ev(){(0,R.useEffect)(()=>{Q_||(Q_=!0,$_&&(function(e,t,n,r,i){e[r]=e[r]||[],e[r].push({"gtm.start":new Date().getTime(),event:`gtm.js`});let a=t.getElementsByTagName(n)[0],o=t.createElement(n),s=r===`dataLayer`?``:`&l=${r}`;o.async=!0,o.src=`https://www.googletagmanager.com/gtm.js?id=`+i+s,a.parentNode.insertBefore(o,a)})(window,document,`script`,`dataLayer`,`GTM-5QQX432`))},[])}function tv(){return Na(),Ii(),ev(),(0,z.jsxs)(Yi,{children:[(0,z.jsxs)($e,{client:Mi,children:[(0,z.jsx)(X_,{}),(0,z.jsx)(ot,{buttonPosition:`bottom-right`})]}),(0,z.jsx)(Z_,{richColors:!0})]})}(0,Rn().createRoot)(document.getElementById(`root`),{onUncaughtError:(e,t)=>{gn(e,t),console.error(`Uncaught error:`,e,t)},onCaughtError:(e,t)=>{gn(e,t),console.error(`Caught error:`,e,t)},onRecoverableError:(e,t)=>{gn(e,t),console.warn(`Recoverable error:`,e,t)}}).render((0,z.jsx)(R.StrictMode,{children:(0,z.jsx)(tv,{})}));export{U as A,Oi as B,ls as C,K as D,q as E,Ba as F,Ci as G,Ti as H,da as I,vi as K,B as L,V as M,za as N,G as O,Va as P,Ki as R,Y as S,Z as T,wi as U,xi as V,Si as W,Fc as _,Jm as a,Os as b,lp as c,zd as d,Gl as f,$ as g,Ic as h,Ym as i,H as j,W as k,sp as l,Mc as m,__ as n,Kp as o,tl as p,Xm as r,op as s,g_ as t,cp as u,Pc as v,cs as w,J as x,Us as y,Ni as z};
52
- //# sourceMappingURL=index-CKW3SZJG.js.map
51
+ aria-invalid:focus-visible:ring-0`,{variants:{variant:{default:`bg-primary text-primary-foreground shadow-sm hover:bg-primary/90`,outline:`border bg-default border-primary border-2 text-foreground shadow-xs hover:-translate-y-1 transition duration-200 hover:bg-accent/60 dark:text-white dark:hover:bg-grey-700/40`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 px-1.5 min-w-8`,lg:`h-10 px-2.5 min-w-10`}},defaultVariants:{variant:`default`,size:`default`}});function O_({className:e,variant:t,size:n,...r}){return(0,z.jsx)(_t,{"data-slot":`toggle`,className:d(D_({variant:t,size:n,className:e})),...r})}function k_(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 A_=[`secondary`,`default`,`warning`,`outline`,`success`,`destructive`],j_=0,M_=new Map,N_=e=>{if(M_.has(e))return M_.get(e);j_++;let t=A_[j_%A_.length];return M_.set(e,t),t};function P_(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 F_({columns:e,data:t,onRowClick:n}){let r=tr({data:t,columns:e,getCoreRowModel:dn()});return(0,z.jsx)(`div`,{className:`rounded-md bg-card dark:bg-black-dark logsTable overflow-hidden`,children:(0,z.jsxs)(Ll,{className:`text-xs`,children:[(0,z.jsx)(Rl,{children:r.getHeaderGroups().map(e=>(0,z.jsx)(Bl,{className:`border-b border-border`,children:e.headers.map(e=>(0,z.jsx)(Vl,{className:`p-4 max-w-96`,children:e.isPlaceholder?null:rn(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,z.jsx)(zl,{className:`bg-background dark:bg-black`,children:r.getRowModel().rows?.length?r.getRowModel().rows.map(e=>(0,z.jsx)(Bl,{"data-state":e.getIsSelected()&&`selected`,className:d(`hover:bg-muted/20 data-[state=selected]:bg-muted max-w-full border-l-2`,P_(e.original.level),n&&`cursor-pointer`),onClick:()=>n?.(e),children:e.getVisibleCells().map(e=>(0,z.jsx)(Ul,{className:`p-2`,children:rn(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,z.jsx)(Bl,{children:(0,z.jsx)(Ul,{colSpan:e.length,className:`h-24 text-center`,children:`No results.`})})})]})})}function I_(e){try{JSON.parse(e)}catch{return!1}return!0}function L_({label:e,children:t}){return(0,z.jsxs)(`div`,{className:`flex items-start gap-3 py-1.5 border-b border-border/50 last:border-0`,children:[(0,z.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground w-20 shrink-0 pt-0.5`,children:e}),(0,z.jsx)(`span`,{className:`text-xs`,children:t})]})}function R_({setIsModalOpen:e,isModalOpen:t,data:n}){let r=n?N_(n.node):`default`,i=ou();return(0,z.jsx)(J,{onOpenChange:e,open:t,children:(0,z.jsxs)(Y,{"aria-describedby":void 0,className:`max-w-2xl`,children:[(0,z.jsx)(cs,{children:(0,z.jsx)(Z,{children:`Log Entry`})}),n?(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 text-popover-foreground`,children:[(0,z.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-muted/20 px-3 py-1`,children:[(0,z.jsx)(L_,{label:`Level`,children:(0,z.jsx)(ds,{variant:k_(n.level),children:Ua(n.level)})}),(0,z.jsx)(L_,{label:`Timestamp`,children:(0,z.jsx)(`span`,{className:`tabular-nums`,children:new Date(n.timestamp).toLocaleString()})}),(0,z.jsx)(L_,{label:`Thread`,children:(0,z.jsx)(`span`,{className:`tabular-nums font-mono`,children:n.thread})}),n.node&&(0,z.jsx)(L_,{label:`Node`,children:(0,z.jsx)(ds,{variant:r,children:n.node})}),n.tags&&n.tags.length>0&&(0,z.jsx)(L_,{label:`Tags`,children:(0,z.jsx)(`span`,{className:`font-mono`,children:n.tags})})]}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground mb-1.5`,children:`Message`}),(0,z.jsx)(`div`,{className:`rounded-md overflow-hidden border border-border/50 h-72`,children:(0,z.jsx)(pr,{className:`w-full h-full`,language:I_(n.message)?`json`:`text`,theme:i,value:n.message,options:{readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,padding:{top:12,bottom:12}}})})]})]}):(0,z.jsx)(Os,{})]})})}var z_=D({limit:w().or(T()).or(O()).optional(),level:re([`notify`,`error`,`warn`,`info`,`debug`,`trace`,`undefined`]).or(T()).or(O()).optional(),from:w().or(T()).or(O()).optional(),until:w().or(T()).or(O()).optional(),log_name:re([`hdb.log`,`system.log`]).or(T()).or(O()).optional(),filter:w().or(T()).or(O()).optional()});function B_({form:e,resetFilters:t,submitFilters:n,showLogName:r,showFilter:i}){let[a,o]=(0,R.useState)(!1);return(0,z.jsxs)(xi,{children:[(0,z.jsx)(Si,{children:(0,z.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-expanded":a,"aria-controls":`logs-filters-content`,className:`flex w-full items-center justify-between md:pointer-events-none`,children:[(0,z.jsxs)(Ci,{className:`flex items-center gap-2 text-base`,children:[(0,z.jsx)(Ee,{className:`size-4 text-muted-foreground`}),`Filters`]}),(0,z.jsx)(sr,{className:d(`size-4 text-muted-foreground transition-transform md:hidden`,a&&`rotate-180`)})]})}),(0,z.jsx)(Ti,{id:`logs-filters-content`,className:d(!a&&`hidden`,`md:block`),children:(0,z.jsx)(V,{...e,children:(0,z.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,z.jsx)(U,{control:e.control,name:`filter`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(H,{children:(0,z.jsxs)(`div`,{className:`relative`,children:[(0,z.jsx)(lt,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground`}),(0,z.jsx)(q,{type:`search`,placeholder:`Search logs…`,className:`pl-9`,value:e.value??``,onChange:e.onChange})]})}),(0,z.jsx)(K,{})]})}),r&&(0,z.jsx)(U,{control:e.control,name:`log_name`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Log file`}),(0,z.jsxs)(Mc,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,z.jsx)(Fc,{className:`w-full bg-white dark:bg-grey-700`,children:(0,z.jsx)(Pc,{placeholder:`Select log file`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)($,{value:`hdb.log`,children:`Application (hdb.log)`}),(0,z.jsx)($,{value:`system.log`,children:`System (system.log)`})]})})]}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,z.jsx)(U,{control:e.control,name:`limit`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Limit`}),(0,z.jsxs)(Mc,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,z.jsx)(Fc,{className:`w-full bg-white dark:bg-grey-700`,children:(0,z.jsx)(Pc,{placeholder:`Limit`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)($,{value:`1000`,children:`1000`}),(0,z.jsx)($,{value:`500`,children:`500`}),(0,z.jsx)($,{value:`250`,children:`250`}),(0,z.jsx)($,{value:`100`,children:`100`}),(0,z.jsx)($,{value:`10`,children:`10`})]})})]}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e.control,name:`level`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Level`}),(0,z.jsxs)(Mc,{onValueChange:e.onChange,value:e.value??void 0,children:[(0,z.jsx)(Fc,{className:`w-full bg-white dark:bg-grey-700`,children:(0,z.jsx)(Pc,{placeholder:`Level`})}),(0,z.jsx)(Ic,{children:(0,z.jsxs)(Nc,{children:[(0,z.jsx)($,{value:`undefined`,children:`All`}),(0,z.jsx)($,{value:`notify`,children:`Notify`}),(0,z.jsx)($,{value:`error`,children:`Error`}),(0,z.jsx)($,{value:`warn`,children:`Warn`}),(0,z.jsx)($,{value:`info`,children:`Info`}),(0,z.jsx)($,{value:`debug`,children:`Debug`}),(0,z.jsx)($,{value:`trace`,children:`Trace`})]})})]}),(0,z.jsx)(K,{})]})})]}),(0,z.jsx)(U,{control:e.control,name:`from`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`Start date`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`datetime-local`,value:e.value??void 0,onChange:e.onChange})}),(0,z.jsx)(K,{})]})}),(0,z.jsx)(U,{control:e.control,name:`until`,render:({field:e})=>(0,z.jsxs)(W,{children:[(0,z.jsx)(G,{children:`End date`}),(0,z.jsx)(H,{children:(0,z.jsx)(q,{type:`datetime-local`,value:e.value??void 0,onChange:e.onChange})}),(0,z.jsx)(K,{})]})}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 pt-1`,children:[(0,z.jsx)(g,{type:`submit`,variant:`positiveOutline`,className:`grow`,children:`Apply Filters`}),(0,z.jsx)(g,{type:`reset`,variant:`destructiveOutline`,onClick:t,children:`Clear`})]})]})})})]})}var V_={log_name:`hdb.log`,limit:`100`,level:`undefined`,from:``,until:``,filter:``},H_={error:(0,z.jsx)(Fe,{className:`size-3`}),stderr:(0,z.jsx)(Fe,{className:`size-3`}),warn:(0,z.jsx)(Br,{className:`size-3`}),notify:(0,z.jsx)(tn,{className:`size-3`}),info:(0,z.jsx)(un,{className:`size-3`}),debug:(0,z.jsx)(vt,{className:`size-3`}),trace:(0,z.jsx)(bn,{className:`size-3`}),stdout:(0,z.jsx)(Se,{className:`size-3`})},U_=[{accessorKey:`level`,header:`Level`,cell:({row:e})=>{let{level:t}=e.original;return(0,z.jsxs)(ds,{variant:k_(t),children:[H_[t],Ua(t)]})}},{accessorKey:`timestamp`,header:`Timestamp`,cell:({row:e})=>{let{timestamp:t}=e.original,n=new Date(t);return(0,z.jsxs)(`span`,{className:`tabular-nums whitespace-nowrap text-muted-foreground`,children:[n.getFullYear()===new Date().getFullYear()?n.toLocaleDateString(void 0,{month:`numeric`,day:`2-digit`}):n.toLocaleDateString(),` `,n.toLocaleTimeString()]})}},{accessorKey:`message`,header:`Message`,cell:({row:e})=>{let{message:t}=e.original;return(0,z.jsx)(`span`,{className:`block max-w-xl truncate font-mono text-xs`,children:t})}},{accessorKey:`thread`,header:`Thread`,cell:({row:e})=>(0,z.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=N_(t);return(0,z.jsx)(z.Fragment,{children:t?(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(ds,{variant:n,children:[t.split(`.`)[0],`...`]})}),(0,z.jsx)(Va,{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,z.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:t}):null}}],W_=(e,t)=>!e&&!t||!e||!t?!0:new Date(e)<=new Date(t);function G_(){return(0,z.jsxs)(`div`,{className:`rounded-md bg-card dark:bg-black-dark overflow-hidden`,children:[(0,z.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,z.jsx)(E_,{className:`h-4 ${e}`},t))}),Array.from({length:12}).map((e,t)=>(0,z.jsxs)(`div`,{className:`flex gap-4 p-3 border-b border-border/40 border-l-2 border-l-transparent`,children:[(0,z.jsx)(E_,{className:`h-5 w-14`}),(0,z.jsx)(E_,{className:`h-5 w-32`}),(0,z.jsx)(E_,{className:`h-5 w-10`}),(0,z.jsx)(E_,{className:`h-5 w-20`}),(0,z.jsx)(E_,{className:`h-5 w-12`}),(0,z.jsx)(E_,{className:`h-5 flex-1 max-w-xs`})]},t))]})}function K_(){let[e,t]=(0,R.useState)(V_),[n,r]=(0,R.useState)(!1),[i,a]=(0,R.useState)(),[o,s]=(0,R.useState)(!1),c=B(),{data:l}=A(Qm(c)),u=l?.version,d=!!u&&Us(`4.7.16`,u),{data:f,isLoading:p,refetch:m,isFetching:h}=A(S_({logFilters:e,...c,replicated:c.entityType===`cluster`,isAutoRefreshEnabled:o})),_=I({resolver:j(z_),defaultValues:V_,mode:`onChange`}),v=e=>{a(e.original),r(!0)},y=async e=>{if(!W_(e.from,e.until)){_.setError(`from`,{type:`onChange`,message:`Start date must be before end date`}),_.setError(`until`,{type:`onChange`,message:`End date must be after start date`});return}t(e)},b=async()=>{_.reset(),t(V_)},x=Yl(m);return(0,z.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 pt-2 text-foreground md:grid-cols-12`,children:[(0,z.jsxs)(`section`,{className:`col-span-1 md:col-span-4 lg:col-span-3 px-2 pb-4 md:self-start md:sticky md:top-34 md:max-h-[calc(100vh-(--spacing(34)))] md:overflow-y-auto`,children:[(0,z.jsx)(B_,{form:_,resetFilters:b,submitFilters:y,showLogName:!1,showFilter:d}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 mt-3`,children:[(0,z.jsxs)(g,{variant:`defaultOutline`,onClick:x,disabled:h||p||o,className:`grow`,children:[(0,z.jsx)(wt,{}),`Refresh`]}),(0,z.jsxs)(za,{children:[(0,z.jsx)(Ba,{asChild:!0,children:(0,z.jsxs)(O_,{variant:`outline`,"aria-label":`Toggle Auto Refresh`,pressed:o,onPressedChange:s,className:`shrink-0`,children:[(0,z.jsx)(wt,{className:o?`animate-spin`:``}),`Auto`]})}),(0,z.jsx)(Va,{children:o?`Auto refresh on — click to disable`:`Enable auto refresh (every 5s)`})]})]})]}),(0,z.jsx)(`section`,{className:`col-span-1 md:col-span-8 lg:col-span-9`,children:p?(0,z.jsx)(G_,{}):(0,z.jsx)(F_,{columns:U_,data:f||[],onRowClick:v})}),(0,z.jsx)(R_,{isModalOpen:n,setIsModalOpen:r,data:i})]})}function q_(e){return F({getParentRoute:()=>e,path:`logs`,head:()=>({meta:[{title:`Logs — Harper Fabric`}]}),component:K_})}function J_(e){return F({getParentRoute:()=>e,path:`status`,head:()=>({meta:[{title:`Status — Harper Fabric`}]}),component:Lr(async()=>Yr(()=>import(`./status-t7ZjUhlN.js`),__vite__mapDeps([14,1,3,2,4,5,6,7,8,9,10,11])),`StatusIndex`)})}function Y_(e){let t=w_(e),n=[q_(t),...wm(t),Yd(t),J_(t),og(t),f_(t)];return t.addChildren(n)}F({getParentRoute:()=>Yu,path:`profile`,head:()=>({meta:[{title:`Profile — Harper Fabric`}]}),component:Lr(async()=>Yr(()=>import(`./profile-DdGCk1RA.js`),__vite__mapDeps([15,1,4,3,2,5,6,7,8,9,10,11])),`ProfileIndex`)});var X_=zi.addChildren([...Zo,Yu.addChildren([Y_(`local`)])]);function Z_({routeTree:e=X_,authentication:t}){return Qt({routeTree:e,history:Pn(),defaultNotFoundComponent:ki,defaultErrorComponent:Oi,defaultPreload:Ai()?!1:`intent`,trailingSlash:`never`,defaultPreloadStaleTime:0,scrollRestoration:!0,context:{queryClient:Mi,authentication:t||{}}})}function Q_(){let e=gi(),t=Z_({authentication:e});return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Cn,{router:t,context:{authentication:e}}),(0,z.jsx)(ut,{router:t,position:`bottom-right`})]})}var $_=({...e})=>(0,z.jsx)(or,{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}),ev=!1,tv=!1;function nv(){(0,R.useEffect)(()=>{ev||(ev=!0,tv&&(function(e,t,n,r,i){e[r]=e[r]||[],e[r].push({"gtm.start":new Date().getTime(),event:`gtm.js`});let a=t.getElementsByTagName(n)[0],o=t.createElement(n),s=r===`dataLayer`?``:`&l=${r}`;o.async=!0,o.src=`https://www.googletagmanager.com/gtm.js?id=`+i+s,a.parentNode.insertBefore(o,a)})(window,document,`script`,`dataLayer`,`GTM-5QQX432`))},[])}function rv(){return Na(),Ii(),nv(),(0,z.jsxs)(Yi,{children:[(0,z.jsxs)($e,{client:Mi,children:[(0,z.jsx)(Q_,{}),(0,z.jsx)(ot,{buttonPosition:`bottom-right`})]}),(0,z.jsx)($_,{richColors:!0})]})}(0,Rn().createRoot)(document.getElementById(`root`),{onUncaughtError:(e,t)=>{gn(e,t),console.error(`Uncaught error:`,e,t)},onCaughtError:(e,t)=>{gn(e,t),console.error(`Caught error:`,e,t)},onRecoverableError:(e,t)=>{gn(e,t),console.warn(`Recoverable error:`,e,t)}}).render((0,z.jsx)(R.StrictMode,{children:(0,z.jsx)(rv,{})}));export{U as A,Oi as B,ls as C,K as D,q as E,Ba as F,Ci as G,Ti as H,da as I,vi as K,B as L,V as M,za as N,G as O,Va as P,Ki as R,Y as S,Z as T,wi as U,xi as V,Si as W,Fc as _,Xm as a,Os as b,dp as c,Vd as d,ql as f,$ as g,Ic as h,Zm as i,H as j,W as k,lp as l,Mc as m,y_ as n,Jp as o,tl as p,Qm as r,cp as s,v_ as t,up as u,Pc as v,cs as w,J as x,Us as y,Ni as z};
52
+ //# sourceMappingURL=index-C5Er24-c.js.map