@lunora/studio 1.0.0-alpha.31 → 1.0.0-alpha.32

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 (183) hide show
  1. package/dist/index.js +10 -10
  2. package/dist/mount.js +3 -2
  3. package/dist/packem_chunks/ApiTab.js +3 -3
  4. package/dist/packem_chunks/AuditPanel.js +7 -7
  5. package/dist/packem_chunks/ExportImportPanel.js +5 -4
  6. package/dist/packem_chunks/FileBrowser.js +2 -2
  7. package/dist/packem_chunks/FunctionRunner.js +1 -1
  8. package/dist/packem_chunks/FunctionStatsPanel.js +72 -70
  9. package/dist/packem_chunks/HealthPanel.js +3 -3
  10. package/dist/packem_chunks/InsightsPanel.js +4 -3
  11. package/dist/packem_chunks/LogsPanel.js +6 -6
  12. package/dist/packem_chunks/MailPanel.js +8 -7
  13. package/dist/packem_chunks/MetricsPanel.js +3 -3
  14. package/dist/packem_chunks/MigrationsPanel.js +7 -7
  15. package/dist/packem_chunks/PitrPanel.js +1 -1
  16. package/dist/packem_chunks/SchemaViewer.js +3 -2
  17. package/dist/packem_chunks/SecurityAdvisorPanel.js +11 -8
  18. package/dist/packem_chunks/SettingsPanel.js +50 -49
  19. package/dist/packem_chunks/SqlEditorPanel.js +5 -4
  20. package/dist/packem_chunks/TableEditor.js +3 -3
  21. package/dist/packem_chunks/analytics-panel.js +1 -1
  22. package/dist/packem_chunks/auth-config-panel.js +1 -1
  23. package/dist/packem_chunks/auth-sessions-panel.js +2 -2
  24. package/dist/packem_chunks/containers-panel.js +1 -1
  25. package/dist/packem_chunks/dashboards-panel.js +3 -2
  26. package/dist/packem_chunks/fanout-panel.js +31 -30
  27. package/dist/packem_chunks/flags-panel.js +6 -6
  28. package/dist/packem_chunks/kv-browser.js +2 -2
  29. package/dist/packem_chunks/log-drains-panel.js +1 -1
  30. package/dist/packem_chunks/organizations-panel.js +3 -3
  31. package/dist/packem_chunks/payments-panel.js +6 -5
  32. package/dist/packem_chunks/permissions-panel.js +12 -11
  33. package/dist/packem_chunks/queues-panel.js +32 -31
  34. package/dist/packem_chunks/rls-panel.js +86 -84
  35. package/dist/packem_chunks/schedule-panel.js +3 -3
  36. package/dist/packem_chunks/sparkline.js +1 -1
  37. package/dist/packem_chunks/storage-rules-panel.js +27 -25
  38. package/dist/packem_chunks/subscriptions-panel.js +33 -31
  39. package/dist/packem_chunks/users-panel.js +3 -3
  40. package/dist/packem_chunks/vector-browser.js +1 -1
  41. package/dist/packem_chunks/workflows-panel.js +2 -2
  42. package/dist/packem_shared/{ApiDocsPanel-B6u_wnz-.js → ApiDocsPanel-Cu6mD4u7.js} +1 -1
  43. package/dist/packem_shared/{ApiReferencePanel-Drz4UO0a.js → ApiReferencePanel-Co_wpRF2.js} +1 -1
  44. package/dist/packem_shared/{CommandPalette-B5BertvU.js → CommandPalette-BUPpbpMc.js} +1 -1
  45. package/dist/packem_shared/{DataBrowser-ANTHLWWh.js → DataBrowser-DSNK1tPg.js} +5 -5
  46. package/dist/packem_shared/{GlobalDataBrowser-CjgTG_wa.js → GlobalDataBrowser-ErfvIs1S.js} +3 -3
  47. package/dist/packem_shared/{HomePanel-BRcQVDby.js → HomePanel-DQk3P8xX.js} +3 -3
  48. package/dist/packem_shared/{OpenRpcReferencePanel-CspFdbUT.js → OpenRpcReferencePanel-DLWzrIx9.js} +1 -1
  49. package/dist/packem_shared/{ScheduledJobs-BEJXtsBn.js → ScheduledJobs-ClaNpZsg.js} +2 -2
  50. package/dist/packem_shared/{Studio-B1V0GxTz.js → Studio-CFTYGEUt.js} +4 -4
  51. package/dist/packem_shared/{StudioApp-CR0Tvy81.js → StudioApp-Cy9vUwVl.js} +1 -1
  52. package/dist/packem_shared/{advisor-view-DzqyvUU3.js → advisor-view-D3-U4kRR.js} +5 -5
  53. package/dist/packem_shared/alert-CdAET2K_.js +68 -0
  54. package/dist/packem_shared/{bar-chart-Bb__F5-u.js → bar-chart-DSwcWIRy.js} +4 -3
  55. package/dist/packem_shared/{browser-storage-d03UsV7v.js → browser-storage-tLOxkIHd.js} +3 -67
  56. package/dist/packem_shared/{data-grid-Dsg6nRjo.js → data-grid-Jz8FqQ2C.js} +1 -1
  57. package/dist/packem_shared/error-alert-BBT6D22d.js +114 -0
  58. package/dist/packem_shared/{grid-features-D7nNzBYm.js → grid-features-CUr8Z1_O.js} +1 -1
  59. package/dist/packem_shared/{home-panel-CRIs6x2j.js → home-panel-Bo-Mgrkn.js} +2 -2
  60. package/dist/packem_shared/{internal-FcNZ3beb.js → internal-DTsYVn-g.js} +30 -1
  61. package/dist/packem_shared/{reference-view-Doy1XlQq.js → reference-view-CSKyUyPl.js} +3 -2
  62. package/dist/packem_shared/{sparkline-KgMPHS4u.js → sparkline-BnA1kC9X.js} +1 -1
  63. package/dist/packem_shared/{studio-CQ-rtNhn.js → studio-Dg2e-dsR.js} +6 -5
  64. package/dist/packem_shared/{table-list-sidebar-VMo0ftxD.js → table-list-sidebar-B5psdSV1.js} +1 -1
  65. package/dist/packem_shared/{use-admin-query-BViPA3US.js → use-admin-query-BHPKmPuj.js} +2 -1
  66. package/dist/packem_shared/{use-auth-capabilities-BHkoBnbZ.js → use-auth-capabilities-C-VH0oJJ.js} +1 -1
  67. package/dist/standalone/{chunk-N4JI6VQD.js → chunk-25VHPD2I.js} +1 -1
  68. package/dist/standalone/chunk-2GGMGPEP.js +1 -0
  69. package/dist/standalone/{chunk-BHTPZS7L.js → chunk-3CJW6NWG.js} +1 -1
  70. package/dist/standalone/chunk-4H2OJBXO.js +1 -0
  71. package/dist/standalone/chunk-4MLAVZP4.js +1 -0
  72. package/dist/standalone/chunk-55YA7ZZI.js +76 -0
  73. package/dist/standalone/chunk-5OH3VPZF.js +1 -0
  74. package/dist/standalone/chunk-6GFEVKJP.js +1 -0
  75. package/dist/standalone/{chunk-ITLLHEVG.js → chunk-764T6X6X.js} +1 -1
  76. package/dist/standalone/chunk-7M3F6U4L.js +1 -0
  77. package/dist/standalone/{chunk-KGS7KM4A.js → chunk-7VF3IAAW.js} +1 -1
  78. package/dist/standalone/chunk-AJIUI7DD.js +1 -0
  79. package/dist/standalone/{chunk-5NSZVXCS.js → chunk-BACPICH6.js} +1 -1
  80. package/dist/standalone/chunk-BET2625I.js +1 -0
  81. package/dist/standalone/chunk-BQUQS7QN.js +1 -0
  82. package/dist/standalone/chunk-CKSHCYGC.js +2 -0
  83. package/dist/standalone/chunk-DCECRP45.js +1 -0
  84. package/dist/standalone/chunk-DFP2DADO.js +1 -0
  85. package/dist/standalone/chunk-DORBUITF.js +1 -0
  86. package/dist/standalone/chunk-DVKPRFIJ.js +1 -0
  87. package/dist/standalone/chunk-E6WUCLSI.js +1 -0
  88. package/dist/standalone/chunk-E7WLF6IU.js +1 -0
  89. package/dist/standalone/chunk-EVPLBWUT.js +8 -0
  90. package/dist/standalone/chunk-FCSPAJW4.js +1 -0
  91. package/dist/standalone/chunk-G2ICR3DL.js +1 -0
  92. package/dist/standalone/{chunk-2DS7JLWL.js → chunk-GJ6PGSES.js} +5 -5
  93. package/dist/standalone/chunk-GMSGZDDH.js +13 -0
  94. package/dist/standalone/chunk-GVRM4U6W.js +2 -0
  95. package/dist/standalone/chunk-GZDWDDXN.js +1 -0
  96. package/dist/standalone/chunk-ISJAJWYI.js +1 -0
  97. package/dist/standalone/{chunk-G2TFEWEQ.js → chunk-JIDZFLTB.js} +1 -1
  98. package/dist/standalone/{chunk-RMYA7NAH.js → chunk-K3GNLVYK.js} +1 -1
  99. package/dist/standalone/chunk-K4ZDRTQM.js +1 -0
  100. package/dist/standalone/{chunk-ASLGNHAX.js → chunk-LI43EKM6.js} +1 -1
  101. package/dist/standalone/chunk-MFPTVCJ6.js +1 -0
  102. package/dist/standalone/chunk-MPYFGAOW.js +1 -0
  103. package/dist/standalone/{chunk-TICVNLPM.js → chunk-O3NAGRTR.js} +1 -1
  104. package/dist/standalone/chunk-OV2WFAJX.js +1 -0
  105. package/dist/standalone/chunk-PA3LN4XJ.js +1 -0
  106. package/dist/standalone/chunk-PD6WPVYU.js +1 -0
  107. package/dist/standalone/{chunk-7PBZKXYA.js → chunk-PN5NCZDX.js} +1 -1
  108. package/dist/standalone/{chunk-YJGANMU7.js → chunk-PVZI3CXP.js} +10 -9
  109. package/dist/standalone/chunk-PZ7HD5T2.js +1 -0
  110. package/dist/standalone/{chunk-UGMRUEBU.js → chunk-QAFAJBAW.js} +1 -1
  111. package/dist/standalone/{chunk-6VTGE3WJ.js → chunk-QBAT52GB.js} +1 -1
  112. package/dist/standalone/chunk-QHIIRFG7.js +1 -0
  113. package/dist/standalone/chunk-RSEEHNFI.js +1 -0
  114. package/dist/standalone/chunk-SFJ5F4DX.js +1 -0
  115. package/dist/standalone/{chunk-3BP4BTLR.js → chunk-SGDQIWAR.js} +3 -3
  116. package/dist/standalone/chunk-SYEIXTEU.js +1 -0
  117. package/dist/standalone/chunk-T5HRXUSY.js +1 -0
  118. package/dist/standalone/{chunk-OD2POGPJ.js → chunk-TDL7NEWA.js} +1 -1
  119. package/dist/standalone/chunk-TM7CMA7X.js +1 -0
  120. package/dist/standalone/chunk-U4OAQPBT.js +1 -0
  121. package/dist/standalone/chunk-UDSVXA42.js +1 -0
  122. package/dist/standalone/chunk-UK64ZSUW.js +1 -0
  123. package/dist/standalone/chunk-VEZO7G5Q.js +3 -0
  124. package/dist/standalone/chunk-VSHUSN6T.js +1 -0
  125. package/dist/standalone/chunk-VYMCCC6O.js +1 -0
  126. package/dist/standalone/{chunk-7RYIQKZA.js → chunk-WXPWVBIY.js} +1 -1
  127. package/dist/standalone/chunk-X72PYOEW.js +1 -0
  128. package/dist/standalone/chunk-X7MMBSNW.js +1 -0
  129. package/dist/standalone/{chunk-6RC6L33K.js → chunk-XIGIWZLO.js} +3 -3
  130. package/dist/standalone/chunk-XNJNSCLM.js +1 -0
  131. package/dist/standalone/{chunk-NNISYDNI.js → chunk-XUGSA2NG.js} +1 -1
  132. package/dist/standalone/{chunk-VXBZQIGY.js → chunk-Y2ZPNDL7.js} +1 -1
  133. package/dist/standalone/chunk-YM6BBZDN.js +1 -0
  134. package/dist/standalone/chunk-ZHVTQ37P.js +1 -0
  135. package/dist/standalone/chunk-ZPP2KOR4.js +1 -0
  136. package/dist/standalone/studio.js +30 -30
  137. package/dist/styles.css +1 -1
  138. package/package.json +6 -5
  139. package/dist/standalone/chunk-2PDQ4KZ6.js +0 -1
  140. package/dist/standalone/chunk-45QK5ZPN.js +0 -1
  141. package/dist/standalone/chunk-57LYXHXH.js +0 -1
  142. package/dist/standalone/chunk-63XKJQTQ.js +0 -1
  143. package/dist/standalone/chunk-7POIIWC5.js +0 -3
  144. package/dist/standalone/chunk-AB6QGMBF.js +0 -1
  145. package/dist/standalone/chunk-D6ORSB24.js +0 -1
  146. package/dist/standalone/chunk-DGWTR4G7.js +0 -1
  147. package/dist/standalone/chunk-DSX53PBM.js +0 -1
  148. package/dist/standalone/chunk-DV2MNASX.js +0 -1
  149. package/dist/standalone/chunk-EGJX34WM.js +0 -1
  150. package/dist/standalone/chunk-FCR3HKFV.js +0 -1
  151. package/dist/standalone/chunk-FQKNJSRA.js +0 -76
  152. package/dist/standalone/chunk-GZXPPJVK.js +0 -1
  153. package/dist/standalone/chunk-HFBRE65A.js +0 -1
  154. package/dist/standalone/chunk-HG7Q5B3H.js +0 -1
  155. package/dist/standalone/chunk-HTQL7AXU.js +0 -1
  156. package/dist/standalone/chunk-KG3QTFWE.js +0 -1
  157. package/dist/standalone/chunk-KNRVPCFX.js +0 -1
  158. package/dist/standalone/chunk-KODWGUAB.js +0 -1
  159. package/dist/standalone/chunk-LZWPCZLE.js +0 -1
  160. package/dist/standalone/chunk-N2QDG3MW.js +0 -1
  161. package/dist/standalone/chunk-O4PXDNR3.js +0 -1
  162. package/dist/standalone/chunk-OXCK3ZUG.js +0 -1
  163. package/dist/standalone/chunk-P7DSVO4U.js +0 -1
  164. package/dist/standalone/chunk-PKAM3N5C.js +0 -1
  165. package/dist/standalone/chunk-QGXGBHQO.js +0 -1
  166. package/dist/standalone/chunk-QHA3TAEJ.js +0 -1
  167. package/dist/standalone/chunk-QQWC62X7.js +0 -1
  168. package/dist/standalone/chunk-S53RUBW5.js +0 -1
  169. package/dist/standalone/chunk-SB4GT6PK.js +0 -1
  170. package/dist/standalone/chunk-SHIOUDOT.js +0 -1
  171. package/dist/standalone/chunk-SIDRSX7Y.js +0 -1
  172. package/dist/standalone/chunk-VJPQUBN6.js +0 -8
  173. package/dist/standalone/chunk-VMJKJWG6.js +0 -1
  174. package/dist/standalone/chunk-VPDPN5RR.js +0 -2
  175. package/dist/standalone/chunk-VSEGZA3J.js +0 -1
  176. package/dist/standalone/chunk-W5LWN6IP.js +0 -1
  177. package/dist/standalone/chunk-W7PCVQTE.js +0 -1
  178. package/dist/standalone/chunk-W7SQVLBH.js +0 -1
  179. package/dist/standalone/chunk-XLILSHPE.js +0 -1
  180. package/dist/standalone/chunk-XURNGQSS.js +0 -1
  181. package/dist/standalone/chunk-YQQJ4N6U.js +0 -1
  182. package/dist/standalone/chunk-ZH7UES4T.js +0 -2
  183. package/dist/standalone/chunk-ZQCVDXDL.js +0 -1
@@ -0,0 +1 @@
1
+ import{a as Ln}from"./chunk-ZPUO7FNI.js";import{a as oo,b as so,c as ro,d as Tn,e as is}from"./chunk-764T6X6X.js";import{A as Wo,B as vn,C as Gt,E as xn,F as j,G as bn,H as yn,K as Kt,N as ft,O as Zo,P as Qt,R as qo,S as Pn,T as Rn,U as Go,V as Yt,W as Jt,X as Xt,Y as eo,Z as Ko,_ as to,aa as Cn,b as sn,ba as Sn,ca as Qo,da as Yo,ga as Jo,ha as tt,i as dn,ia as Nn,j as cn,ja as no,k as pn,ka as En,la as ue,n as Gs,na as Xo,o as $o,pa as es,q as jo,qa as ts,r as un,ra as os,s as zo,sa as ss,ta as rs,u as fn,ua as ns,va as wn,w as mn,wa as kn,x as gn,xa as as,y as hn,ya as On,z as Uo}from"./chunk-XUGSA2NG.js";import{f as Jr}from"./chunk-UII66UVF.js";import{a as Bn}from"./chunk-7TJJXVSE.js";import{a as $r,b as jr,d as zr,e as pt,f as Fo,g as Ur,h as Wr,i as Zr,j as qr,k as Gr}from"./chunk-SVR644RF.js";import{a as ls}from"./chunk-KZ6INM5M.js";import{c as Mn,h as In,k as Ks}from"./chunk-4QHKBC77.js";import{B as rn,C as nn,I as He,J as an,K as qt,O as A,P as Y,R as ln,e as ye,p as ho,q as on}from"./chunk-3CJW6NWG.js";import{b as mt,c as Qs}from"./chunk-UK64ZSUW.js";import{a as ut,c as en,h as Ho,i as tn}from"./chunk-O3NAGRTR.js";import{a as Hr}from"./chunk-HV7G6DFP.js";import{a as Ct}from"./chunk-AQGOX5DK.js";import{a as Dn}from"./chunk-TAD43CG5.js";import{b as ao}from"./chunk-DVKPRFIJ.js";import{a as gt,e as Ys}from"./chunk-SEU5V7I6.js";import{a as qs,b as go}from"./chunk-ZPP2KOR4.js";import{a as it,i as Rt,j as F}from"./chunk-CKSHCYGC.js";import{f as Zs}from"./chunk-X7MMBSNW.js";import{a as Xr}from"./chunk-ZHVTQ37P.js";import{a as be}from"./chunk-3OA7PECS.js";import{a as Kr,b as Qr,c as Yr,d as ie,e as _n,f as An,k as $e,m as Vn}from"./chunk-PVZI3CXP.js";import{b as Ws}from"./chunk-GMSGZDDH.js";import{a,d as Us,e as C,f as M,g as Lo,h as mo,j as U}from"./chunk-RRCPZMC2.js";var B=C(Lo(),1);var ct=C(M(),1),q=C(M(),1);var i=C(mo(),1);var Fn=C(M(),1),ht=C(mo(),1);var gi={border:"1px solid var(--destructive)",color:"var(--destructive)",padding:12},hi={overflow:"auto",whiteSpace:"pre-wrap"},ds=class extends Fn.Component{static{a(this,"ErrorBoundary")}static getDerivedStateFromError(e){return{error:e}}state={error:null};componentDidCatch(e,o){console.error("[lunora-studio] panel error",e,o.componentStack)}reset=a(()=>{this.setState({error:null})},"reset");render(){let{children:e,fallbackTitle:o,label:s,retryLabel:r}=this.props,{error:n}=this.state;if(n===null)return(0,ht.jsxDEV)(ht.Fragment,{children:e},void 0,!1);let l=o??(s===void 0?"Something went wrong":`${s} failed`);return(0,ht.jsxDEV)("div",{"data-testid":"dash-error-boundary",role:"alert",style:gi,children:[(0,ht.jsxDEV)("strong",{children:l},void 0,!1),(0,ht.jsxDEV)("pre",{"data-testid":"dash-error-message",style:hi,children:n.message},void 0,!1),(0,ht.jsxDEV)("button",{"data-testid":"dash-error-retry",onClick:this.reset,type:"button",children:r??"Try again"},void 0,!1)]},void 0,!0)}};var yt={};Us(yt,{Arrow:()=>nr,Backdrop:()=>ar,Close:()=>dr,Description:()=>lr,Handle:()=>xo,Popup:()=>rr,Portal:()=>er,Positioner:()=>tr,Root:()=>jn,Title:()=>ir,Trigger:()=>Js,Viewport:()=>cr,createHandle:()=>oa});var lt=C(M(),1);var cs=C(M(),1);var ps=cs.createContext(void 0);ps.displayName="PopoverRootContext";function oe(t){let e=cs.useContext(ps);if(e===void 0&&!t)throw new Error("Base UI: PopoverRootContext is missing. Popover parts must be placed within <Popover.Root>.");return e}a(oe,"usePopoverRootContext");var vt=C(M(),1),Hn=C(Hr(),1);function vi(){return{...oo(),disabled:!1,modal:!1,focusManagerModal:!1,instantType:void 0,openMethod:null,openChangeReason:null,titleElementId:void 0,descriptionElementId:void 0,stickIfOpen:!0,nested:!1,openOnHover:!1,closeDelay:0,hasViewport:!1}}a(vi,"createInitialState");var xi={...ro,disabled:j(t=>t.disabled),instantType:j(t=>t.instantType),openMethod:j(t=>t.openMethod),openChangeReason:j(t=>t.openChangeReason),modal:j(t=>t.modal),focusManagerModal:j(t=>t.focusManagerModal),stickIfOpen:j(t=>t.stickIfOpen),titleElementId:j(t=>t.titleElementId),descriptionElementId:j(t=>t.descriptionElementId),openOnHover:j(t=>t.openOnHover),closeDelay:j(t=>t.closeDelay),hasViewport:j(t=>t.hasViewport)},io=class t extends Kt{static{a(this,"PopoverStore")}constructor(e,o,s=!1){let r={...vi(),...e},n=new to;r.open&&e?.mounted===void 0&&(r.mounted=!0),r.floatingRootContext=so(n,o,s),super(r,{popupRef:vt.createRef(),backdropRef:vt.createRef(),internalBackdropRef:vt.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerFocusTargetRef:vt.createRef(),beforeContentFocusGuardRef:vt.createRef(),stickIfOpenTimeout:new rn,triggerElements:n},xi)}setOpen=a((e,o)=>{let s=o.reason===A.triggerHover,r=o.reason===A.triggerPress&&o.event.detail===0,n=!e&&(o.reason===A.escapeKey||o.reason==null),l=Pn(o),c=this.select("activeTriggerId");if(!e&&o.reason===A.closePress&&o.trigger==null&&c!=null&&(o.trigger=this.context.triggerElements.getById(c)??this.select("activeTriggerElement")??void 0),this.context.onOpenChange?.(e,o),o.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(e,o);let p=a(()=>{let d={open:e,openChangeReason:o.reason};qo(d,e,o.trigger,l()),this.update(d)},"changeState");s?(this.set("stickIfOpen",!0),this.context.stickIfOpenTimeout.start(500,()=>{this.set("stickIfOpen",!1)}),Hn.flushSync(p)):p(),r||n?this.set("instantType",r?"click":"dismiss"):o.reason===A.focusOut?this.set("instantType","focus"):this.set("instantType",void 0)},"setOpen");static useStore(e,o){let{store:s,internalStore:r}=Qt(e,(n,l)=>new t(o,n,l));return vt.useEffect(()=>r?.disposeEffect(),[r]),s}disposeEffect=a(()=>this.context.stickIfOpenTimeout.disposeEffect(),"disposeEffect")};var St=C(be(),1);function $n({props:t}){let{children:e,open:o,defaultOpen:s=!1,onOpenChange:r,onOpenChangeComplete:n,modal:l=!1,handle:c,triggerId:p,defaultTriggerId:d=null}=t,u=io.useStore(c?.store,{modal:l,open:s,openProp:o,activeTriggerId:d,triggerIdProp:p});Go(u,o,s,d),u.useControlledProp("openProp",o),u.useControlledProp("triggerIdProp",p);let g=u.useState("open"),m=u.useState("mounted"),h=u.useState("payload"),f=fn()!=null;u.useContextCallback("onOpenChange",r),u.useContextCallback("onOpenChangeComplete",n),Ko(u,g),Jt(u);let{forceUnmount:v}=Xt(g,u,()=>{u.update({stickIfOpen:!0,openChangeReason:null})});u.useSyncedValues({modal:l,nested:f}),lt.useEffect(()=>{g||u.context.stickIfOpenTimeout.clear()},[u,g]);let x=lt.useCallback(()=>{u.setOpen(!1,Y(A.imperativeAction))},[u]);lt.useImperativeHandle(t.actionsRef,()=>({unmount:v,close:x}),[v,x]);let b=g||m,R=lt.useMemo(()=>({store:u}),[u]);return(0,St.jsxs)(ps.Provider,{value:R,children:[b&&(0,St.jsx)(bi,{store:u,modal:l}),typeof e=="function"?e({payload:h}):e]})}a($n,"PopoverRootComponent");function jn(t){return oe(!0)?(0,St.jsx)($n,{props:t}):(0,St.jsx)(hn,{children:(0,St.jsx)($n,{props:t})})}a(jn,"PopoverRoot");function bi({store:t,modal:e}){let o=t.useState("floatingRootContext"),s=Gt(o,{outsidePressEvent:{mouse:e==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}}),r=s.reference??Rt,n=s.trigger??Rt,l=lt.useMemo(()=>it(ft,s.floating),[s.floating]);return eo(t,{activeTriggerProps:r,inactiveTriggerProps:n,popupProps:l}),null}a(bi,"PopoverInteractions");var xt=C(M(),1);var Nt=C(be(),1);var Js=xt.forwardRef(a(function(e,o){let{render:s,className:r,style:n,disabled:l=!1,nativeButton:c=!0,handle:p,payload:d,openOnHover:u=!1,delay:g=300,closeDelay:m=0,id:h,...f}=e,v=oe(!0),x=p?.store??v?.store;if(!x)throw new Error("Base UI: <Popover.Trigger> must be either used within a <Popover.Root> component or provided with a handle.");let b=ye(h),R=x.useState("isTriggerActive",b),P=x.useState("floatingRootContext"),N=x.useState("isOpenedByTrigger",b),S=x.useState("triggerPopupId",b),E=xt.useRef(null),{registerTrigger:T,isMountedByThisTrigger:k}=Yt(b,E,x,{payload:d,disabled:l,openOnHover:u,closeDelay:m}),w=x.useState("openChangeReason"),O=x.useState("stickIfOpen"),V=x.useState("openMethod"),W=x.useState("focusManagerModal"),_=Yo(P,{enabled:!l&&P!=null&&u&&(V!=="touch"||w!==A.triggerPress),mouseOnly:!0,move:!1,handleClose:Jo(),restMs:g,delay:{close:m},triggerElementRef:E,isActiveTrigger:R,isClosing:a(()=>x.select("transitionStatus")==="ending","isClosing")}),H=Wo(P,{enabled:P!=null,stickIfOpen:O}),$=Xo(()=>x.select("open"),ee=>{x.set("openMethod",ee)}),Z=x.useState("triggerProps",k),{getButtonProps:K,buttonRef:D}=mt({disabled:l,native:c}),I={open(ee){return ee&&w===A.triggerPress?En.open(ee):no.open(ee)}},{preFocusGuardRef:z,handlePreFocusGuardFocus:te,handleFocusTargetFocus:re}=Tn(x,E),J=F("button",e,{state:{disabled:l,open:N},ref:[D,o,T,E],props:[H.reference,_,Z,$,{[$o]:"",id:b,"aria-haspopup":"dialog","aria-expanded":N,"aria-controls":S},f,K],stateAttributesMapping:I});return k&&!W?(0,Nt.jsxs)(xt.Fragment,{children:[(0,Nt.jsx)(Gs,{ref:z,onFocus:te}),(0,Nt.jsx)(xt.Fragment,{children:J},b),(0,Nt.jsx)(Gs,{ref:x.context.triggerFocusTargetRef,onFocus:re})]}):(0,Nt.jsx)(xt.Fragment,{children:J},b)},"PopoverTrigger"));Js.displayName="PopoverTrigger";var Un=C(M(),1);var us=C(M(),1);var fs=us.createContext(void 0);fs.displayName="PopoverPortalContext";function zn(){let t=us.useContext(fs);if(t===void 0)throw new Error("Base UI: <Popover.Portal> is missing.");return t}a(zn,"usePopoverPortalContext");var Xs=C(be(),1);var er=Un.forwardRef(a(function(e,o){let{keepMounted:s=!1,...r}=e,{store:n}=oe();return n.useState("mounted")||s?(0,Xs.jsx)(fs.Provider,{value:s,children:(0,Xs.jsx)(zo,{ref:o,...r})}):null},"PopoverPortal"));er.displayName="PopoverPortal";var co=C(M(),1);var ms=C(M(),1);var gs=ms.createContext(void 0);gs.displayName="PopoverPositionerContext";function lo(){let t=ms.useContext(gs);if(!t)throw new Error("Base UI: PopoverPositionerContext is missing. PopoverPositioner parts must be placed within <Popover.Positioner>.");return t}a(lo,"usePopoverPositionerContext");var vo=C(be(),1);var tr=co.forwardRef(a(function(e,o){let{render:s,className:r,style:n,anchor:l,positionMethod:c="absolute",side:p="bottom",align:d="center",sideOffset:u=0,alignOffset:g=0,collisionBoundary:m="clipping-ancestors",collisionPadding:h=5,arrowPadding:f=5,sticky:v=!1,disableAnchorTracking:x=!1,collisionAvoidance:b=jo,...R}=e,{store:P}=oe(),N=zn(),S=mn(),E=P.useState("floatingRootContext"),T=P.useState("mounted"),k=P.useState("open"),w=P.useState("openChangeReason"),O=P.useState("activeTriggerElement"),V=P.useState("modal"),W=P.useState("openMethod"),_=P.useState("positionerElement"),H=P.useState("instantType"),$=P.useState("transitionStatus"),Z=P.useState("hasViewport"),K=co.useRef(null),D=an(_,!1,!1),I=os({anchor:l,floatingRootContext:E,positionMethod:c,mounted:T,side:p,sideOffset:u,align:d,alignOffset:g,arrowPadding:f,collisionBoundary:m,collisionPadding:h,sticky:v,disableAnchorTracking:x,keepMounted:N,nodeId:S,collisionAvoidance:b,adaptiveOrigin:Z?ts:void 0}),z=E.useState("domReferenceElement");ut(()=>{let J=z,ee=K.current;if(J&&(K.current=J),ee&&J&&J!==ee){P.set("instantType",void 0);let ae=new AbortController;return D(()=>{P.set("instantType","trigger-change")},ae.signal),()=>{ae.abort()}}},[z,D,P]),kn(k&&V===!0&&w!==A.triggerHover,W==="touch",_,O);let te=co.useCallback(J=>{P.set("positionerElement",J)},[P]),re={open:k,side:I.side,align:I.align,anchorHidden:I.anchorHidden,instant:H},ne=ns(e,re,{styles:I.positionerStyles,transitionStatus:$,props:R,refs:[o,te],hidden:!T,inert:!k});return(0,vo.jsxs)(gs.Provider,{value:I,children:[T&&V===!0&&w!==A.triggerHover&&(0,vo.jsx)(ss,{ref:P.context.internalBackdropRef,inert:es(!k),cutout:O}),(0,vo.jsx)(gn,{id:S,children:ne})]})},"PopoverPositioner"));tr.displayName="PopoverPositioner";var hs=C(M(),1);var bt=C(M(),1);var Wn=C(be(),1);var or=bt.createContext(void 0);or.displayName="ClosePartContext";function Zn(){let[t,e]=bt.useState(0),o=en(()=>(e(r=>r+1),()=>{e(r=>Math.max(0,r-1))}));return{context:bt.useMemo(()=>({register:o}),[o]),hasClosePart:t>0}}a(Zn,"useClosePartCount");function qn(t){let{value:e,children:o}=t;return(0,Wn.jsx)(or.Provider,{value:e,children:o})}a(qn,"ClosePartProvider");function Gn(){let t=bt.useContext(or);ut(()=>t?.register(),[t])}a(Gn,"useClosePartRegistration");var sr=C(be(),1);var yi={...ue,...He},rr=hs.forwardRef(a(function(e,o){let{render:s,className:r,style:n,initialFocus:l,finalFocus:c,...p}=e,{store:d}=oe(),u=lo(),g=On(!0)!=null,{context:m,hasClosePart:h}=Zn(),f=d.useState("open"),v=d.useState("openMethod"),x=d.useState("instantType"),b=d.useState("transitionStatus"),R=d.useState("popupProps"),P=d.useState("titleElementId"),N=d.useState("descriptionElementId"),S=d.useState("modal"),E=d.useState("mounted"),T=d.useState("openChangeReason"),k=d.useState("activeTriggerElement"),w=d.useState("floatingRootContext"),O=w.useState("floatingId"),V=d.useState("disabled"),W=d.useState("openOnHover"),_=d.useState("closeDelay"),H=p.id??O;qt({open:f,ref:d.context.popupRef,onComplete(){f&&d.context.onOpenChangeComplete?.(!0)}}),Qo(w,{enabled:W&&!V,closeDelay:_});let $=l===void 0?Zo(d.context.popupRef):l,Z=S!==!1&&h;d.useSyncedValue("focusManagerModal",Z);let K=hs.useCallback(z=>{d.set("popupElement",z)},[d]),D={open:f,side:u.side,align:u.align,instant:x,transitionStatus:b},I=F("div",e,{state:D,ref:[o,d.context.popupRef,K],props:[R,{id:H,role:"dialog",...ft,"aria-labelledby":P,"aria-describedby":N,onKeyDown(z){g&&as.has(z.key)&&z.stopPropagation()}},rs(b),p],stateAttributesMapping:yi});return(0,sr.jsx)(Uo,{context:w,openInteractionType:v,modal:Z,disabled:!E||T===A.triggerHover,initialFocus:$,returnFocus:c,restoreFocus:"popup",previousFocusableElement:tn(k)?k:void 0,nextFocusableElement:d.context.triggerFocusTargetRef,beforeContentFocusGuardRef:d.context.beforeContentFocusGuardRef,children:(0,sr.jsx)(qn,{value:m,children:I})})},"PopoverPopup"));rr.displayName="PopoverPopup";var Kn=C(M(),1);var nr=Kn.forwardRef(a(function(e,o){let{render:s,className:r,style:n,...l}=e,{store:c}=oe(),p=c.useState("open"),{arrowRef:d,side:u,align:g,arrowUncentered:m,arrowStyles:h}=lo();return F("div",e,{state:{open:p,side:u,align:g,uncentered:m},ref:[o,d],props:[{style:h,"aria-hidden":!0},l],stateAttributesMapping:ue})},"PopoverArrow"));nr.displayName="PopoverArrow";var Qn=C(M(),1);var Pi={...ue,...He},ar=Qn.forwardRef(a(function(e,o){let{render:s,className:r,style:n,...l}=e,{store:c}=oe(),p=c.useState("open"),d=c.useState("mounted"),u=c.useState("transitionStatus"),g=c.useState("openChangeReason");return F("div",e,{state:{open:p,transitionStatus:u},ref:[c.context.backdropRef,o],props:[{role:"presentation",hidden:!d,style:{pointerEvents:g===A.triggerHover?"none":void 0,userSelect:"none",WebkitUserSelect:"none"}},l],stateAttributesMapping:Pi})},"PopoverBackdrop"));ar.displayName="PopoverBackdrop";var Yn=C(M(),1);var ir=Yn.forwardRef(a(function(e,o){let{render:s,className:r,style:n,...l}=e,{store:c}=oe(),p=ye(l.id);return c.useSyncedValueWithCleanup("titleElementId",p),F("h2",e,{ref:o,props:[{id:p},l]})},"PopoverTitle"));ir.displayName="PopoverTitle";var Jn=C(M(),1);var lr=Jn.forwardRef(a(function(e,o){let{render:s,className:r,style:n,...l}=e,{store:c}=oe(),p=ye(l.id);return c.useSyncedValueWithCleanup("descriptionElementId",p),F("p",e,{ref:o,props:[{id:p},l]})},"PopoverDescription"));lr.displayName="PopoverDescription";var Xn=C(M(),1);var dr=Xn.forwardRef(a(function(e,o){let{render:s,className:r,style:n,disabled:l=!1,nativeButton:c=!0,...p}=e,{buttonRef:d,getButtonProps:u}=mt({disabled:l,focusableWhenDisabled:!1,native:c}),{store:g}=oe();return Gn(),F("button",e,{ref:[o,d],props:[{onClick(h){g.setOpen(!1,Y(A.closePress,h.nativeEvent))}},p,u]})},"PopoverClose"));dr.displayName="PopoverClose";var ta=C(M(),1);var ea=(function(t){return t.popupWidth="--popup-width",t.popupHeight="--popup-height",t})({});var Ri={activationDirection:a(t=>t?{"data-activation-direction":t}:null,"activationDirection")},cr=ta.forwardRef(a(function(e,o){let{render:s,className:r,style:n,children:l,...c}=e,{store:p}=oe(),{side:d}=lo(),u=p.useState("instantType"),{children:g,state:m}=is({store:p,side:d,cssVars:ea,children:l}),h={activationDirection:m.activationDirection,transitioning:m.transitioning,instant:u};return F("div",e,{state:h,ref:o,props:[c,{children:g}],stateAttributesMapping:Ri})},"PopoverViewport"));cr.displayName="PopoverViewport";var xo=class{static{a(this,"PopoverHandle")}constructor(){this.store=new io}open(e){let o=e?this.store.context.triggerElements.getById(e)??void 0:void 0;if(e&&!o)throw new Error(`Base UI: PopoverHandle.open: No trigger found with id "${e}".`);this.store.setOpen(!0,Y(A.imperativeAction,void 0,o))}close(){this.store.setOpen(!1,Y(A.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}};function oa(){return new xo}a(oa,"createPopoverHandle");var fe={};Us(fe,{Backdrop:()=>pr,Close:()=>ur,Description:()=>fr,Handle:()=>Co,Popup:()=>mr,Portal:()=>gr,Root:()=>ha,Title:()=>xr,Trigger:()=>br,Viewport:()=>vr,createHandle:()=>ba});var sa=C(M(),1);var bo=C(M(),1);var yo=bo.createContext(!1);yo.displayName="IsDrawerContext";var vs=bo.createContext(void 0);vs.displayName="DialogRootContext";function le(t){let e=bo.useContext(vs);if(t===!1&&e===void 0)throw new Error("Base UI: DialogRootContext is missing. Dialog parts must be placed within <Dialog.Root>.");return e}a(le,"useDialogRootContext");var Ci={...ue,...He},pr=sa.forwardRef(a(function(e,o){let{render:s,className:r,style:n,forceRender:l=!1,...c}=e,{store:p}=le(),d=p.useState("open"),u=p.useState("nested"),g=p.useState("mounted"),m=p.useState("transitionStatus");return F("div",e,{state:{open:d,transitionStatus:m},ref:[p.context.backdropRef,o],stateAttributesMapping:Ci,props:[{role:"presentation",hidden:!g,style:{userSelect:"none",WebkitUserSelect:"none"}},c],enabled:l||!u})},"DialogBackdrop"));pr.displayName="DialogBackdrop";var ra=C(M(),1);var ur=ra.forwardRef(a(function(e,o){let{render:s,className:r,style:n,disabled:l=!1,nativeButton:c=!0,...p}=e,{store:d}=le(),u=d.useState("open"),{getButtonProps:g,buttonRef:m}=mt({disabled:l,native:c}),h={disabled:l};function f(v){u&&d.setOpen(!1,Y(A.closePress,v.nativeEvent))}return a(f,"handleClick"),F("button",e,{state:h,ref:[o,m],props:[{onClick:f},p,g]})},"DialogClose"));ur.displayName="DialogClose";var na=C(M(),1);var fr=na.forwardRef(a(function(e,o){let{render:s,className:r,style:n,id:l,...c}=e,{store:p}=le(),d=ye(l);return p.useSyncedValueWithCleanup("descriptionElementId",d),F("p",e,{ref:o,props:[{id:d},c]})},"DialogDescription"));fr.displayName="DialogDescription";var la=C(M(),1);var aa=(function(t){return t.nestedDialogs="--nested-dialogs",t})({});var ia=(function(t){return t[t.open=tt.open]="open",t[t.closed=tt.closed]="closed",t[t.startingStyle=tt.startingStyle]="startingStyle",t[t.endingStyle=tt.endingStyle]="endingStyle",t.nested="data-nested",t.nestedDialogOpen="data-nested-dialog-open",t})({});var xs=C(M(),1);var bs=xs.createContext(void 0);bs.displayName="DialogPortalContext";function ys(){let t=xs.useContext(bs);if(t===void 0)throw new Error("Base UI: <Dialog.Portal> is missing.");return t}a(ys,"useDialogPortalContext");var da=C(be(),1);var Si={...ue,...He,nestedDialogOpen(t){return t?{[ia.nestedDialogOpen]:""}:null}},mr=la.forwardRef(a(function(e,o){let{render:s,className:r,style:n,finalFocus:l,initialFocus:c,...p}=e,{store:d}=le(),u=d.useState("descriptionElementId"),g=d.useState("disablePointerDismissal"),m=d.useState("floatingRootContext"),h=d.useState("popupProps"),f=d.useState("modal"),v=d.useState("mounted"),x=d.useState("nested"),b=d.useState("nestedOpenDialogCount"),R=d.useState("open"),P=d.useState("openMethod"),N=d.useState("titleElementId"),S=d.useState("transitionStatus"),E=d.useState("role"),T=m.useState("floatingId"),k=p.id??T;ys(),qt({open:R,ref:d.context.popupRef,onComplete(){R&&d.context.onOpenChangeComplete?.(!0)}});let w=c===void 0?Zo(d.context.popupRef):c,O=b>0,V=d.useStateSetter("popupElement"),_=F("div",e,{state:{open:R,nested:x,transitionStatus:S,nestedDialogOpen:O},props:[h,{id:k,"aria-labelledby":N??void 0,"aria-describedby":u??void 0,role:E,...ft,hidden:!v,onKeyDown(H){as.has(H.key)&&H.stopPropagation()},style:{[aa.nestedDialogs]:b}},p],ref:[o,d.context.popupRef,V],stateAttributesMapping:Si});return(0,da.jsx)(Uo,{context:m,openInteractionType:P,disabled:!v,closeOnFocusOut:!g,initialFocus:w,returnFocus:l,modal:f!==!1,restoreFocus:"popup",children:_})},"DialogPopup"));mr.displayName="DialogPopup";var ca=C(M(),1);var Po=C(be(),1);var gr=ca.forwardRef(a(function(e,o){let{keepMounted:s=!1,...r}=e,{store:n}=le(),l=n.useState("mounted"),c=n.useState("modal"),p=n.useState("open");return l||s?(0,Po.jsx)(bs.Provider,{value:s,children:(0,Po.jsxs)(zo,{ref:o,...r,children:[l&&c===!0&&(0,Po.jsx)(ss,{ref:n.context.internalBackdropRef,inert:es(!p)}),e.children]})}):null},"DialogPortal"));gr.displayName="DialogPortal";var ga=C(M(),1);var fa=C(M(),1);var dt=C(M(),1);function pa(t){let{store:e,actionsRef:o}=t,s=e.useState("open");Ko(e,s),Jt(e);let{forceUnmount:r}=Xt(s,e),n=dt.useCallback(()=>{e.setOpen(!1,Y(A.imperativeAction))},[e]);dt.useImperativeHandle(o,()=>({unmount:r,close:n}),[r,n])}a(pa,"useDialogRoot");function ua({store:t,parentContext:e,isDrawer:o}){let s=t.useState("open"),r=t.useState("disablePointerDismissal"),n=t.useState("modal"),l=t.useState("popupElement"),c=t.useState("floatingRootContext"),[p,d]=dt.useState(0),[u,g]=dt.useState(0),m=p===0,h=Gt(c,{outsidePressEvent(){return t.context.internalBackdropRef.current||t.context.backdropRef.current?"intentional":{mouse:n==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}},outsidePress(b){if(!t.context.outsidePressEnabledRef.current||"button"in b&&b.button!==0||"touches"in b&&b.touches.length!==1)return!1;let R=on(b);return m&&!r?n&&(t.context.internalBackdropRef.current||t.context.backdropRef.current)?t.context.internalBackdropRef.current===R||t.context.backdropRef.current===R||ho(R,l)&&!R?.hasAttribute("data-base-ui-portal"):!0:!1},escapeKey:m});wn(s&&n===!0,l),t.useContextCallback("onNestedDialogOpen",(b,R)=>{d(b),g(R)}),t.useContextCallback("onNestedDialogClose",()=>{d(0),g(0)}),dt.useEffect(()=>(e?.onNestedDialogOpen&&s&&e.onNestedDialogOpen(p+1,u+(o?1:0)),e?.onNestedDialogClose&&!s&&e.onNestedDialogClose(),()=>{e?.onNestedDialogClose&&s&&e.onNestedDialogClose()}),[o,s,p,u,e]);let f=h.reference??Rt,v=h.trigger??Rt,x=h.floating??Rt;return eo(t,{activeTriggerProps:f,inactiveTriggerProps:v,popupProps:x,nestedOpenDialogCount:p,nestedOpenDrawerCount:u}),null}a(ua,"DialogInteractions");var Ps=C(M(),1);var Ni={...ro,modal:j(t=>t.modal),nested:j(t=>t.nested),nestedOpenDialogCount:j(t=>t.nestedOpenDialogCount),nestedOpenDrawerCount:j(t=>t.nestedOpenDrawerCount),disablePointerDismissal:j(t=>t.disablePointerDismissal),openMethod:j(t=>t.openMethod),descriptionElementId:j(t=>t.descriptionElementId),titleElementId:j(t=>t.titleElementId),viewportElement:j(t=>t.viewportElement),role:j(t=>t.role)},po=class t extends Kt{static{a(this,"DialogStore")}constructor(e,o,s=!1){let r=new to,n=Ei(e);n.floatingRootContext=so(r,o,s),super(n,{popupRef:Ps.createRef(),backdropRef:Ps.createRef(),internalBackdropRef:Ps.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:r,onOpenChange:void 0,onOpenChangeComplete:void 0},Ni)}setOpen=a((e,o)=>{if(o.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},!e&&o.trigger==null&&this.state.activeTriggerId!=null&&(o.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(e,o),o.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(e,o);let s={open:e};qo(s,e,o.trigger),this.update(s)},"setOpen");static useStore(e,o){return Qt(e,(r,n)=>new t(o,r,n),!0).store}};function Ei(t={}){return{...oo(),modal:!0,disablePointerDismissal:!1,popupElement:null,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,nestedOpenDrawerCount:0,role:"dialog",...t}}a(Ei,"createInitialState");var Ro=C(be(),1);function ma(t,e="dialog"){let{children:o,open:s,defaultOpen:r=!1,onOpenChange:n,onOpenChangeComplete:l,disablePointerDismissal:c=!1,modal:p=!0,actionsRef:d,handle:u,triggerId:g,defaultTriggerId:m=null}=t,h=e==="drawer",f=e==="alert-dialog",v=f?!0:p,x=f||c,b=f?"alertdialog":"dialog",R=le(!0),N={modal:v,disablePointerDismissal:x,nested:!!R,role:b},S=po.useStore(u?.store,{open:r,openProp:s,activeTriggerId:m,triggerIdProp:g,...N});xn(()=>{let V=s===void 0&&S.state.open===!1&&r===!0?{open:!0,activeTriggerId:m}:null;f?S.update(V?{...N,...V}:N):V&&S.update(V)}),S.useControlledProp("openProp",s),S.useControlledProp("triggerIdProp",g),S.useSyncedValues(N),S.useContextCallback("onOpenChange",n),S.useContextCallback("onOpenChangeComplete",l);let E=S.useState("open"),T=S.useState("mounted"),k=S.useState("payload");pa({store:S,actionsRef:d});let w=E||T,O=fa.useMemo(()=>({store:S}),[S]);return(0,Ro.jsx)(yo.Provider,{value:!1,children:(0,Ro.jsxs)(vs.Provider,{value:O,children:[w&&(0,Ro.jsx)(ua,{store:S,parentContext:R?.store.context,isDrawer:h}),typeof o=="function"?o({payload:k}):o]})})}a(ma,"useRenderDialogRoot");function ha(t){let e=ga.useContext(yo)?"drawer":"dialog";return ma(t,e)}a(ha,"DialogRoot");var va=C(M(),1);var hr=(function(t){return t[t.open=tt.open]="open",t[t.closed=tt.closed]="closed",t[t.startingStyle=tt.startingStyle]="startingStyle",t[t.endingStyle=tt.endingStyle]="endingStyle",t.nested="data-nested",t.nestedDialogOpen="data-nested-dialog-open",t})({});var Ti={...ue,...He,nested(t){return t?{[hr.nested]:""}:null},nestedDialogOpen(t){return t?{[hr.nestedDialogOpen]:""}:null}},vr=va.forwardRef(a(function(e,o){let{render:s,className:r,style:n,children:l,...c}=e,p=ys(),{store:d}=le(),u=d.useState("open"),g=d.useState("nested"),m=d.useState("transitionStatus"),h=d.useState("nestedOpenDialogCount"),f=d.useState("mounted"),v=d.useStateSetter("viewportElement"),x=h>0;return F("div",e,{enabled:p||f,state:{open:u,nested:g,transitionStatus:m,nestedDialogOpen:x},ref:[o,v],stateAttributesMapping:Ti,props:[{role:"presentation",hidden:!f,style:{pointerEvents:u?void 0:"none"},children:l},c]})},"DialogViewport"));vr.displayName="DialogViewport";var xa=C(M(),1);var xr=xa.forwardRef(a(function(e,o){let{render:s,className:r,style:n,id:l,...c}=e,{store:p}=le(),d=ye(l);return p.useSyncedValueWithCleanup("titleElementId",d),F("h2",e,{ref:o,props:[{id:d},c]})},"DialogTitle"));xr.displayName="DialogTitle";var Rs=C(M(),1);var br=Rs.forwardRef(a(function(e,o){let{render:s,className:r,style:n,disabled:l=!1,nativeButton:c=!0,id:p,payload:d,handle:u,...g}=e,m=le(!0),h=u?.store??m?.store;if(!h)throw new Error("Base UI: <Dialog.Trigger> must be used within <Dialog.Root> or provided with a handle.");let f=ye(p),v=h.useState("floatingRootContext"),x=h.useState("isOpenedByTrigger",f),b=h.useState("triggerPopupId",f),R=Rs.useRef(null),{registerTrigger:P,isMountedByThisTrigger:N}=Yt(f,R,h,{payload:d}),{getButtonProps:S,buttonRef:E}=mt({disabled:l,native:c}),T=Wo(v,{enabled:v!=null}),k=Xo(()=>h.select("open"),V=>{h.set("openMethod",V)}),w={disabled:l,open:x},O=h.useState("triggerProps",N);return F("button",e,{state:w,ref:[E,o,P,R],props:[T.reference,O,k,{[$o]:"",id:f,"aria-haspopup":"dialog","aria-expanded":x,"aria-controls":b},g,S],stateAttributesMapping:no})},"DialogTrigger"));br.displayName="DialogTrigger";var Co=class{static{a(this,"DialogHandle")}constructor(e){this.store=e??new po}open(e){let o=e?this.store.context.triggerElements.getById(e):void 0;e&&!o&&console.warn(`Base UI: DialogHandle.open: No trigger found with id "${e}". The dialog will open, but the trigger will not be associated with the dialog.`),this.store.setOpen(!0,Y(A.imperativeAction,void 0,o))}openWithPayload(e){this.store.set("payload",e),this.store.setOpen(!0,Y(A.imperativeAction,void 0,void 0))}close(){this.store.setOpen(!1,Y(A.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}};function ba(){return new Co}a(ba,"createDialogHandle");var st={};Us(st,{Arrow:()=>Tr,Handle:()=>So,Popup:()=>Er,Portal:()=>Sr,Positioner:()=>Nr,Provider:()=>Or,Root:()=>yr,Trigger:()=>Pr,Viewport:()=>Mr,createHandle:()=>_a});var ot=C(M(),1);var Cs=C(M(),1);var Ss=Cs.createContext(void 0);Ss.displayName="TooltipRootContext";function je(t){let e=Cs.useContext(Ss);if(e===void 0&&!t)throw new Error("Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>.");return e}a(je,"useTooltipRootContext");var ya=C(M(),1);var wi={...ro,disabled:j(t=>t.disabled),instantType:j(t=>t.instantType),isInstantPhase:j(t=>t.isInstantPhase),trackCursorAxis:j(t=>t.trackCursorAxis),disableHoverablePopup:j(t=>t.disableHoverablePopup),lastOpenChangeReason:j(t=>t.openChangeReason),closeOnClick:j(t=>t.closeOnClick),closeDelay:j(t=>t.closeDelay),hasViewport:j(t=>t.hasViewport)},uo=class t extends Kt{static{a(this,"TooltipStore")}constructor(e,o,s=!1){let r=new to,n={...ki(),...e};n.floatingRootContext=so(r,o,s),super(n,{popupRef:ya.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:r},wi)}setOpen=a((e,o)=>{Rn(this,e,o,{extraState:{openChangeReason:o.reason}})},"setOpen");cancelPendingOpen(e){this.state.floatingRootContext.dispatchOpenChange(!1,Y(A.triggerPress,e))}static useStore(e,o){return Qt(e,(r,n)=>new t(o,r,n)).store}};function ki(){return{...oo(),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,hasViewport:!1}}a(ki,"createInitialState");var Ns=C(be(),1);var yr=bn(a(function(e){let{disabled:o=!1,defaultOpen:s=!1,open:r,disableHoverablePopup:n=!1,trackCursorAxis:l="none",actionsRef:c,onOpenChange:p,onOpenChangeComplete:d,handle:u,triggerId:g,defaultTriggerId:m=null,children:h}=e,f=uo.useStore(u?.store,{open:s,openProp:r,activeTriggerId:m,triggerIdProp:g});Go(f,r,s,m),f.useControlledProp("openProp",r),f.useControlledProp("triggerIdProp",g),f.useContextCallback("onOpenChange",p),f.useContextCallback("onOpenChangeComplete",d);let v=f.useState("open"),x=!o&&v,b=f.useState("activeTriggerId"),R=f.useState("mounted"),P=f.useState("payload");f.useSyncedValues({trackCursorAxis:l,disableHoverablePopup:n}),f.useSyncedValue("disabled",o),Jt(f,{closeOnActiveTriggerUnmount:!0});let{forceUnmount:N,transitionStatus:S}=Xt(x,f),E=f.useState("isInstantPhase"),T=f.useState("instantType"),k=f.useState("lastOpenChangeReason"),w=ot.useRef(null);ut(()=>{v&&o&&f.setOpen(!1,Y(A.disabled))},[v,o,f]),ut(()=>{S==="ending"&&k===A.none||S!=="ending"&&E?(T!=="delay"&&(w.current=T),f.set("instantType","delay")):w.current!==null&&(f.set("instantType",w.current),w.current=null)},[S,E,k,T,f]),ut(()=>{x&&b==null&&f.set("payload",void 0)},[f,b,x]);let O=ot.useCallback(()=>{f.setOpen(!1,Y(A.imperativeAction))},[f]);ot.useImperativeHandle(c,()=>({unmount:N,close:O}),[N,O]);let V=x||R||!o&&l!=="none";return(0,Ns.jsxs)(Ss.Provider,{value:f,children:[V&&(0,Ns.jsx)(Oi,{store:f,disabled:o,trackCursorAxis:l}),typeof h=="function"?h({payload:P}):h]})},"TooltipRoot"));yr.displayName="TooltipRoot";function Oi({store:t,disabled:e,trackCursorAxis:o}){let s=t.useState("floatingRootContext"),r=Gt(s,{enabled:!e,referencePress:a(()=>t.select("closeOnClick"),"referencePress")}),n=vn(s,{enabled:!e&&o!=="none",axis:o==="none"?void 0:o}),l=ot.useMemo(()=>it(n.reference,r.reference),[n.reference,r.reference]),c=ot.useMemo(()=>it(n.trigger,r.trigger),[n.trigger,r.trigger]),p=ot.useMemo(()=>it(ft,n.floating,r.floating),[n.floating,r.floating]);return eo(t,{activeTriggerProps:l,inactiveTriggerProps:c,popupProps:p}),null}a(Oi,"TooltipInteractions");var ws=C(M(),1);var Es=C(M(),1);var Ts=Es.createContext(void 0);Ts.displayName="TooltipProviderContext";function Pa(){return Es.useContext(Ts)}a(Pa,"useTooltipProviderContext");var Ra=(function(t){return t[t.popupOpen=Nn.popupOpen]="popupOpen",t.triggerDisabled="data-trigger-disabled",t})({});var Sa="data-base-ui-tooltip-trigger";function Ca(t){if("composedPath"in t){let o=t.composedPath();for(let s=0;s<o.length;s+=1){let r=o[s];if(Ho(r))return r}}let e=t.target;return Ho(e)?e:null}a(Ca,"getTargetElement");function Mi(t){let e=t;for(;e;){if(e.hasAttribute(Sa))return e;let o=e.parentElement;if(o){e=o;continue}let s=e.getRootNode();e="host"in s&&Ho(s.host)?s.host:null}return null}a(Mi,"closestEnabledTooltipTrigger");var Pr=yn(a(function(e,o){let{render:s,className:r,style:n,handle:l,payload:c,disabled:p,delay:d,closeOnClick:u=!0,closeDelay:g,id:m,...h}=e,f=je(!0),v=l?.store??f;if(!v)throw new Error("Base UI: <Tooltip.Trigger> must be either used within a <Tooltip.Root> component or provided with a handle.");let x=ye(m),b=v.useState("isTriggerActive",x),R=v.useState("isOpenedByTrigger",x),P=v.useState("floatingRootContext"),N=ws.useRef(null),S=d??600,E=g??0,{registerTrigger:T,isMountedByThisTrigger:k}=Yt(x,N,v,{payload:c,closeOnClick:u,closeDelay:E}),w=Pa(),{delayRef:O,isInstantPhase:V,hasProvider:W}=cn(P,{open:R}),_=Sn(P);v.useSyncedValue("isInstantPhase",V);let H=v.useState("disabled"),$=p??H,Z=pn($),K=v.useState("trackCursorAxis"),D=v.useState("disableHoverablePopup"),I=ws.useRef(!1),z=nn(),te=ws.useRef(void 0);function re(){let L=w?.delay,Q=typeof O.current=="object"?O.current.open:void 0,X=S;return W&&(Q!==0?X=d??L??S:X=0),X}a(re,"getOpenDelay");function ne(L){let Q=N.current;if(!Q||!L)return!1;let X=Mi(L);return X!==null&&X!==Q&&ho(Q,X)}a(ne,"isEnabledNestedTriggerTarget");function J(L){let Q=ne(L);return I.current=Q,Q&&(_.openChangeTimeout.clear(),_.restTimeout.clear(),_.restTimeoutPending=!1,z.clear()),Q}a(J,"detectNestedTriggerHover");let ee=Yo(P,{enabled:!$,mouseOnly:!0,move:!1,handleClose:!D&&K!=="both"?Jo():null,restMs:re,delay(){let L=typeof O.current=="object"?O.current.close:void 0,Q=E;return g==null&&W&&(Q=L),{close:Q}},triggerElementRef:N,isActiveTrigger:b,isClosing:a(()=>v.select("transitionStatus")==="ending","isClosing"),shouldOpen(){return!I.current}}),ae=Cn(P,{enabled:!$}).reference,Be=a(L=>{let Q=I.current,X=Ca(L),xe=J(X),se=N.current,Fe=se&&X&&ho(se,X);if(xe&&v.select("open")&&v.select("lastOpenChangeReason")===A.triggerHover){v.setOpen(!1,Y(A.triggerHover,L));return}if(Q&&!xe&&Fe&&!Z.current&&!v.select("open")&&se&&sn(te.current)){let ce=a(()=>{!I.current&&!Z.current&&!v.select("open")&&v.setOpen(!0,Y(A.triggerHover,L,se))},"open"),pe=re();pe===0?(z.clear(),ce()):z.start(pe,ce)}},"handleNestedTriggerHover"),me=v.useState("triggerProps",k);return F("button",e,{state:{open:R},ref:[o,T,N],props:[ee,ae,k||K!=="none"?me:void 0,{onMouseOver(L){Be(L.nativeEvent)},onFocus(L){ne(Ca(L.nativeEvent))&&L.preventBaseUIHandler()},onMouseLeave(){I.current=!1,z.clear(),te.current=void 0},onPointerEnter(L){te.current=L.pointerType},onPointerDown(L){te.current=L.pointerType,v.set("closeOnClick",u),u&&!v.select("open")&&v.cancelPendingOpen(L.nativeEvent)},onClick(L){u&&!v.select("open")&&v.cancelPendingOpen(L.nativeEvent)},id:x,[Ra.triggerDisabled]:$?"":void 0,[Sa]:$?void 0:""},h],stateAttributesMapping:no})},"TooltipTrigger"));Pr.displayName="TooltipTrigger";var wa=C(M(),1);var ks=C(M(),1);var Os=ks.createContext(void 0);Os.displayName="TooltipPortalContext";function Na(){let t=ks.useContext(Os);if(t===void 0)throw new Error("Base UI: <Tooltip.Portal> is missing.");return t}a(Na,"useTooltipPortalContext");var Ms=C(M(),1),Ea=C(Hr(),1);var Ta=C(be(),1);var Rr=Ms.forwardRef(a(function(e,o){let{children:s,container:r,className:n,render:l,style:c,...p}=e,{portalNode:d,portalSubtree:u}=un({container:r,ref:o,componentProps:e,elementProps:p});return!u&&!d?null:(0,Ta.jsxs)(Ms.Fragment,{children:[u,d&&Ea.createPortal(s,d)]})},"FloatingPortalLite"));Rr.displayName="FloatingPortalLite";var Cr=C(be(),1);var Sr=wa.forwardRef(a(function(e,o){let{keepMounted:s=!1,...r}=e;return je().useState("mounted")||s?(0,Cr.jsx)(Os.Provider,{value:s,children:(0,Cr.jsx)(Rr,{ref:o,...r})}):null},"TooltipPortal"));Sr.displayName="TooltipPortal";var _s=C(M(),1);var Is=C(M(),1);var Ds=Is.createContext(void 0);Ds.displayName="TooltipPositionerContext";function fo(){let t=Is.useContext(Ds);if(t===void 0)throw new Error("Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>.");return t}a(fo,"useTooltipPositionerContext");var ka=C(be(),1);var Nr=_s.forwardRef(a(function(e,o){let{render:s,className:r,anchor:n,positionMethod:l="absolute",side:c="top",align:p="center",sideOffset:d=0,alignOffset:u=0,collisionBoundary:g="clipping-ancestors",collisionPadding:m=5,arrowPadding:h=5,sticky:f=!1,disableAnchorTracking:v=!1,collisionAvoidance:x=jo,style:b,...R}=e,P=je(),N=Na(),S=P.useState("open"),E=P.useState("mounted"),T=P.useState("trackCursorAxis"),k=P.useState("disableHoverablePopup"),w=P.useState("floatingRootContext"),O=P.useState("instantType"),V=P.useState("transitionStatus"),W=P.useState("hasViewport"),_=os({anchor:n,positionMethod:l,floatingRootContext:w,mounted:E,side:c,sideOffset:d,align:p,alignOffset:u,collisionBoundary:g,collisionPadding:m,sticky:f,arrowPadding:h,disableAnchorTracking:v,keepMounted:N,collisionAvoidance:x,adaptiveOrigin:W?ts:void 0}),H=_s.useMemo(()=>({open:S,side:_.side,align:_.align,anchorHidden:_.anchorHidden,instant:T!=="none"?"tracking-cursor":O}),[S,_.side,_.align,_.anchorHidden,T,O]),$=ns(e,H,{styles:_.positionerStyles,transitionStatus:V,props:R,refs:[o,P.useStateSetter("positionerElement")],hidden:!E,inert:!S||T==="both"||k});return(0,ka.jsx)(Ds.Provider,{value:_,children:$})},"TooltipPositioner"));Nr.displayName="TooltipPositioner";var Oa=C(M(),1);var Ii={...ue,...He},Er=Oa.forwardRef(a(function(e,o){let{render:s,className:r,style:n,...l}=e,c=je(),{side:p,align:d}=fo(),u=c.useState("open"),g=c.useState("instantType"),m=c.useState("transitionStatus"),h=c.useState("popupProps"),f=c.useState("floatingRootContext"),v=c.useState("disabled"),x=c.useState("closeDelay");qt({open:u,ref:c.context.popupRef,onComplete(){u&&c.context.onOpenChangeComplete?.(!0)}}),Qo(f,{enabled:!v,closeDelay:x});let b=c.useStateSetter("popupElement");return F("div",e,{state:{open:u,side:p,align:d,instant:g,transitionStatus:m},ref:[o,c.context.popupRef,b],props:[h,rs(m),l],stateAttributesMapping:Ii})},"TooltipPopup"));Er.displayName="TooltipPopup";var Ma=C(M(),1);var Tr=Ma.forwardRef(a(function(e,o){let{render:s,className:r,style:n,...l}=e,c=je(),{arrowRef:p,side:d,align:u,arrowUncentered:g,arrowStyles:m}=fo(),h=c.useState("open"),f=c.useState("instantType");return F("div",e,{state:{open:h,side:d,align:u,uncentered:g,instant:f},ref:[o,p],props:[{style:m,"aria-hidden":!0},l],stateAttributesMapping:ue})},"TooltipArrow"));Tr.displayName="TooltipArrow";var wr=C(M(),1);var kr=C(be(),1);var Or=a(function(e){let{delay:o,closeDelay:s,timeout:r=400}=e,n=wr.useMemo(()=>({delay:o,closeDelay:s}),[o,s]),l=wr.useMemo(()=>({open:o,close:s}),[o,s]);return(0,kr.jsx)(Ts.Provider,{value:n,children:(0,kr.jsx)(dn,{delay:l,timeoutMs:r,children:e.children})})},"TooltipProvider");Or.displayName="TooltipProvider";var Da=C(M(),1);var Ia=(function(t){return t.popupWidth="--popup-width",t.popupHeight="--popup-height",t})({});var Di={activationDirection:a(t=>t?{"data-activation-direction":t}:null,"activationDirection")},Mr=Da.forwardRef(a(function(e,o){let{render:s,className:r,style:n,children:l,...c}=e,p=je(),d=fo(),u=p.useState("instantType"),{children:g,state:m}=is({store:p,side:d.side,cssVars:Ia,children:l}),h={activationDirection:m.activationDirection,transitioning:m.transitioning,instant:u};return F("div",e,{state:h,ref:o,props:[c,{children:g}],stateAttributesMapping:Di})},"TooltipViewport"));Mr.displayName="TooltipViewport";var So=class{static{a(this,"TooltipHandle")}constructor(){this.store=new uo}open(e){let o=e?this.store.context.triggerElements.getById(e):void 0;if(e&&!o)throw new Error(`Base UI: TooltipHandle.open: No trigger found with id "${e}".`);this.store.setOpen(!0,Y(A.imperativeAction,void 0,o))}close(){this.store.setOpen(!1,Y(A.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}};function _a(){return new So}a(_a,"createTooltipHandle");var Ve=C(Lo(),1);var rt=C(M(),1);var y=C(mo(),1);var _i=_n(Ct.studioFeatures),Fa={analytics:!0,auth:!0,containers:!0,flags:!0,kv:!0,mail:!0,payments:!0,queues:!0,scheduler:!0,storage:!0,vectors:!0,workflows:!0},Ai=a(t=>{if(t===null||typeof t!="object")return Fa;let e=t,o=a(s=>typeof e[s]=="boolean"?e[s]:!0,"flag");return{analytics:o("analytics"),auth:o("auth"),containers:o("containers"),flags:o("flags"),kv:o("kv"),mail:o("mail"),payments:o("payments"),queues:o("queues"),scheduler:o("scheduler"),storage:o("storage"),vectors:o("vectors"),workflows:o("workflows")}},"coerceFeatures"),_r=a(()=>{let t=(0,Ve.c)(3),e=Zs(),[o,s]=(0,rt.useState)(Fa),r,n;return t[0]!==e?(r=a(()=>{$e((async()=>{try{s(Ai(await e.query(_i,{},An(""))))}catch{}})())},"t0"),n=[e],t[0]=e,t[1]=r,t[2]=n):(r=t[1],n=t[2]),(0,rt.useEffect)(r,n),o},"useStudioFeatures"),Vi=a(()=>{let t=(0,Ve.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,y.jsxDEV)("svg",{"aria-hidden":"true",className:"size-4 text-muted-foreground",fill:"none",stroke:"currentColor",strokeWidth:1.6,viewBox:"0 0 24 24",children:(0,y.jsxDEV)("path",{d:"m9 6 6 6-6 6",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1)},void 0,!1),t[0]=e):e=t[0],e},"ChevronRight$1"),Bi=a(t=>{let e=(0,Ve.c)(24),{group:o}=t,s=ie(),r=pt(),n;e[0]!==o.tab||e[1]!==r?(n=a(()=>{$e(r({to:`/${o.tab}`}))},"t1"),e[0]=o.tab,e[1]=r,e[2]=n):n=e[2];let l=n,c=o.bindings.length,p;e[3]!==o.label?(p=(0,y.jsxDEV)("span",{className:"text-sm font-medium text-foreground",children:o.label},void 0,!1),e[3]=o.label,e[4]=p):p=e[4];let d;e[5]===Symbol.for("react.memo_cache_sentinel")?(d=(0,y.jsxDEV)(Vi,{},void 0,!1),e[5]=d):d=e[5];let u;e[6]!==p?(u=(0,y.jsxDEV)("div",{className:"flex items-center justify-between",children:[p,d]},void 0,!0),e[6]=p,e[7]=u):u=e[7];let g;e[8]!==c||e[9]!==s?(g=c===1?s("1 binding"):s("{count} bindings",{count:c}),e[8]=c,e[9]=s,e[10]=g):g=e[10];let m;e[11]!==g?(m=(0,y.jsxDEV)("span",{className:"text-xs text-muted-foreground",children:g},void 0,!1),e[11]=g,e[12]=m):m=e[12];let h;e[13]!==c||e[14]!==o.bindings?(h=c>0&&(0,y.jsxDEV)("div",{className:"flex flex-wrap gap-1.5",children:o.bindings.map(Hi)},void 0,!1),e[13]=c,e[14]=o.bindings,e[15]=h):h=e[15];let f;e[16]!==u||e[17]!==m||e[18]!==h?(f=(0,y.jsxDEV)(Ys,{className:"flex flex-col gap-2 py-4",children:[u,m,h]},void 0,!0),e[16]=u,e[17]=m,e[18]=h,e[19]=f):f=e[19];let v;return e[20]!==o.testId||e[21]!==l||e[22]!==f?(v=(0,y.jsxDEV)(gt,{className:"cursor-pointer gap-0 py-0 transition-colors hover:bg-muted/40","data-testid":o.testId,onClick:l,children:f},void 0,!1),e[20]=o.testId,e[21]=l,e[22]=f,e[23]=v):v=e[23],v},"BindingCard"),Aa=["kv","files","vectors"],Li=a((t,e)=>[...t.filter(o=>o.tab!==e.tab),e].toSorted((o,s)=>Aa.indexOf(o.tab)-Aa.indexOf(s.tab)),"upsertCard"),Fi=a(()=>{let t=(0,Ve.c)(19),e=Zs(),o=_r(),s=ie(),r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r=[],t[0]=r):r=t[0];let[n,l]=(0,rt.useState)(r),c,p;if(t[1]!==e||t[2]!==o.kv||t[3]!==o.storage||t[4]!==o.vectors||t[5]!==s?(c=a(()=>{let f={cancelled:!1},v=[{enabled:o.kv,label:s("KV Namespaces"),load:a(async()=>(await e.listKvNamespaces()).map($i),"load"),tab:"kv",testId:"home-binding-kv"},{enabled:o.storage,label:s("R2 Buckets"),load:a(()=>e.listStorageBuckets(),"load"),tab:"files",testId:"home-binding-r2"},{enabled:o.vectors,label:s("Vectorize Indexes"),load:a(async()=>(await e.listVectorIndexes()).map(ji),"load"),tab:"vectors",testId:"home-binding-vectors"}];for(let x of v)x.enabled&&$e((async()=>{try{let b=await x.load();if(!f.cancelled){let R={bindings:b,label:x.label,tab:x.tab,testId:x.testId};l(P=>Li(P,R))}}catch{}})());return()=>{f.cancelled=!0}},"t1"),p=[e,o.kv,o.storage,o.vectors,s],t[1]=e,t[2]=o.kv,t[3]=o.storage,t[4]=o.vectors,t[5]=s,t[6]=c,t[7]=p):(c=t[6],p=t[7]),(0,rt.useEffect)(c,p),n.length===0)return null;let d;t[8]!==s?(d=s("Bindings"),t[8]=s,t[9]=d):d=t[9];let u;t[10]!==d?(u=(0,y.jsxDEV)("h2",{className:"text-sm font-semibold tracking-tight text-foreground",children:d},void 0,!1),t[10]=d,t[11]=u):u=t[11];let g;t[12]!==n?(g=n.map(zi),t[12]=n,t[13]=g):g=t[13];let m;t[14]!==g?(m=(0,y.jsxDEV)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:g},void 0,!1),t[14]=g,t[15]=m):m=t[15];let h;return t[16]!==u||t[17]!==m?(h=(0,y.jsxDEV)("section",{className:"flex flex-col gap-3","data-testid":"home-bindings",children:[u,m]},void 0,!0),t[16]=u,t[17]=m,t[18]=h):h=t[18],h},"BindingsOverview");function Hi(t){return(0,y.jsxDEV)(go,{variant:"secondary",children:t},t,!1)}a(Hi,"_temp$1");function $i(t){return t.binding}a($i,"_temp2$1");function ji(t){return t.name}a(ji,"_temp3$1");function zi(t){return(0,y.jsxDEV)(Bi,{group:t},t.tab,!1)}a(zi,"_temp4");var Ui=(0,rt.lazy)(()=>import("./chunk-VSHUSN6T.js").then(t=>({default:t.Sparkline}))),Dr=a(t=>{if(t<1e3)return`${String(Math.round(t))}ms`;let e=t>=1e4?0:1;return`${(t/1e3).toFixed(e)}s`},"formatMs"),Wi=a((t,e)=>{let o=Math.max(0,Math.round((e-t)/1e3));if(o<60)return`${String(o)}s ago`;let s=Math.round(o/60);if(s<60)return`${String(s)}m ago`;let r=Math.round(s/60);return r<24?`${String(r)}h ago`:`${String(Math.round(r/24))}d ago`},"relativeTime"),Va=a((t,e)=>{if(t===void 0||t.length===0)return[];let o=new Map;for(let s of t)o.set(s.bucketMs,(o.get(s.bucketMs)??0)+s[e]);return[...o.entries()].toSorted(([s],[r])=>s-r).map(([,s])=>s)},"bucketSeries"),Ba=a((t,e=!0)=>{if(t.length<4)return null;let o=Math.floor(t.length/2),s=t.slice(0,o).reduce((l,c)=>l+c,0),r=t.slice(o).reduce((l,c)=>l+c,0);if(s===0)return null;let n=(r-s)/s*100;return{positive:e?n>=0:n<=0,text:`${n>=0?"+":""}${n.toFixed(1)}%`}},"seriesDelta"),As=a(t=>{let e=(0,Ve.c)(24),{delta:o,footer:s,label:r,trend:n,unit:l,value:c}=t,p=ie(),d;e[0]!==r?(d=(0,y.jsxDEV)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r},void 0,!1),e[0]=r,e[1]=d):d=e[1];let u;e[2]!==c?(u=(0,y.jsxDEV)("span",{className:"text-2xl font-semibold tabular-nums text-foreground",children:c},void 0,!1),e[2]=c,e[3]=u):u=e[3];let g;e[4]!==l?(g=l!==void 0&&(0,y.jsxDEV)("span",{className:"text-xs text-muted-foreground",children:l},void 0,!1),e[4]=l,e[5]=g):g=e[5];let m;e[6]!==u||e[7]!==g?(m=(0,y.jsxDEV)("span",{className:"flex items-baseline gap-1.5",children:[u,g]},void 0,!0),e[6]=u,e[7]=g,e[8]=m):m=e[8];let h;e[9]!==n?(h=n!==void 0&&(0,y.jsxDEV)(rt.Suspense,{fallback:(0,y.jsxDEV)("div",{"aria-hidden":"true",className:"h-8 w-28"},void 0,!1),children:(0,y.jsxDEV)(Ui,{data:n},void 0,!1)},void 0,!1),e[9]=n,e[10]=h):h=e[10];let f;e[11]!==m||e[12]!==h?(f=(0,y.jsxDEV)("div",{className:"flex items-center justify-between gap-3",children:[m,h]},void 0,!0),e[11]=m,e[12]=h,e[13]=f):f=e[13];let v;e[14]!==d||e[15]!==f?(v=(0,y.jsxDEV)("div",{className:"flex flex-col gap-2.5 p-4",children:[d,f]},void 0,!0),e[14]=d,e[15]=f,e[16]=v):v=e[16];let x;e[17]!==o||e[18]!==s||e[19]!==p?(x=o==null?s!=null&&(0,y.jsxDEV)("div",{className:"border-t border-border bg-muted/50 px-4 py-2.5 text-[11px] text-muted-foreground",children:s},void 0,!1):(0,y.jsxDEV)("div",{className:"border-t border-border bg-muted/50 px-4 py-2.5 text-[11px]",children:[(0,y.jsxDEV)("span",{className:U("font-semibold",o.positive?"text-success":"text-destructive"),children:o.text},void 0,!1)," ",(0,y.jsxDEV)("span",{className:"text-muted-foreground",children:p("vs. prev.")},void 0,!1)]},void 0,!0),e[17]=o,e[18]=s,e[19]=p,e[20]=x):x=e[20];let b;return e[21]!==v||e[22]!==x?(b=(0,y.jsxDEV)(gt,{className:"justify-between gap-0 py-0",children:[v,x]},void 0,!0),e[21]=v,e[22]=x,e[23]=b):b=e[23],b},"StatCard"),Zi=a(()=>{let t=(0,Ve.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,y.jsxDEV)("svg",{"aria-hidden":"true",className:"size-3.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.8,viewBox:"0 0 24 24",children:(0,y.jsxDEV)("path",{d:"m9 6 6 6-6 6"},void 0,!1)},void 0,!1),t[0]=e):e=t[0],e},"ChevronRight"),Ir=a(t=>{let e=(0,Ve.c)(7),{command:o,label:s}=t,r;e[0]!==s?(r=(0,y.jsxDEV)("div",{className:"p-4",children:(0,y.jsxDEV)("span",{className:"text-sm font-medium text-foreground",children:s},void 0,!1)},void 0,!1),e[0]=s,e[1]=r):r=e[1];let n;e[2]!==o?(n=(0,y.jsxDEV)("div",{className:"border-t border-border bg-muted/50 px-4 py-2.5",children:(0,y.jsxDEV)("code",{className:"font-mono text-xs text-muted-foreground",children:o},void 0,!1)},void 0,!1),e[2]=o,e[3]=n):n=e[3];let l;return e[4]!==r||e[5]!==n?(l=(0,y.jsxDEV)(gt,{className:"justify-between gap-0 py-0",children:[r,n]},void 0,!0),e[4]=r,e[5]=n,e[6]=l):l=e[6],l},"ConnectCard"),La=a(t=>{let e=(0,Ve.c)(18),{count:o,onView:s,testId:r,title:n}=t,l=ie(),c;e[0]!==n?(c=(0,y.jsxDEV)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:n},void 0,!1),e[0]=n,e[1]=c):c=e[1];let p;e[2]!==o||e[3]!==l?(p=o===null?(0,y.jsxDEV)("span",{className:"text-xs text-muted-foreground",children:l("No data yet")},void 0,!1):(0,y.jsxDEV)(go,{variant:o>0?"destructive":"success",children:o>0?o:l("All clear")},void 0,!1),e[2]=o,e[3]=l,e[4]=p):p=e[4];let d;e[5]!==c||e[6]!==p?(d=(0,y.jsxDEV)("div",{className:"flex items-start justify-between gap-2 p-4",children:[c,p]},void 0,!0),e[5]=c,e[6]=p,e[7]=d):d=e[7];let u;e[8]!==l?(u=l("View"),e[8]=l,e[9]=u):u=e[9];let g;e[10]===Symbol.for("react.memo_cache_sentinel")?(g=(0,y.jsxDEV)(Zi,{},void 0,!1),e[10]=g):g=e[10];let m;e[11]!==s||e[12]!==u?(m=(0,y.jsxDEV)("button",{className:"flex items-center gap-1 border-t border-border bg-muted/50 px-4 py-2.5 text-[12px] font-medium text-foreground outline-none transition-colors hover:bg-muted focus-visible:bg-muted",onClick:s,type:"button",children:[u,g]},void 0,!0),e[11]=s,e[12]=u,e[13]=m):m=e[13];let h;return e[14]!==d||e[15]!==m||e[16]!==r?(h=(0,y.jsxDEV)(gt,{className:"justify-between gap-0 py-0","data-testid":r,children:[d,m]},void 0,!0),e[14]=d,e[15]=m,e[16]=r,e[17]=h):h=e[17],h},"AdvisorCard"),qi=a(t=>{let e=(0,Ve.c)(7),{functions:o}=t,s=ie(),r;if(e[0]!==o||e[1]!==s){let n=[...o].toSorted(Yi).slice(0,5),l;e[3]!==s?(l=s("Top functions"),e[3]=s,e[4]=l):l=e[4];let c;e[5]!==l?(c=(0,y.jsxDEV)("div",{className:"border-b border-border px-4 py-3",children:(0,y.jsxDEV)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:l},void 0,!1)},void 0,!1),e[5]=l,e[6]=c):c=e[6],r=(0,y.jsxDEV)(gt,{className:"gap-0 py-0","data-testid":"home-top-functions",children:[c,n.length===0?(0,y.jsxDEV)("p",{className:"px-4 py-8 text-center text-xs text-muted-foreground",children:s("No functions called yet.")},void 0,!1):(0,y.jsxDEV)("div",{className:"divide-y divide-border",children:[(0,y.jsxDEV)("div",{className:"grid grid-cols-[1fr_auto_auto_auto] gap-4 px-4 py-1.5 font-mono text-[10px] tracking-wide text-muted-foreground uppercase",children:[(0,y.jsxDEV)("span",{children:s("Function")},void 0,!1),(0,y.jsxDEV)("span",{className:"text-end",children:s("Calls")},void 0,!1),(0,y.jsxDEV)("span",{className:"w-12 text-end",children:s("Avg")},void 0,!1),(0,y.jsxDEV)("span",{className:"w-8 text-end",children:s("Err")},void 0,!1)]},void 0,!0),n.map(Ji)]},void 0,!0)]},void 0,!0),e[0]=o,e[1]=s,e[2]=r}else r=e[2];return r},"TopFunctionsCard"),Gi=a(t=>{let e=(0,Ve.c)(26),{subs:o}=t,s=ie(),r;e[0]!==s?(r=s("Live connections"),e[0]=s,e[1]=r):r=e[1];let n;e[2]!==r?(n=(0,y.jsxDEV)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r},void 0,!1),e[2]=r,e[3]=n):n=e[3];let l=o?.totalConnections??0,c;e[4]!==l?(c=l.toLocaleString(),e[4]=l,e[5]=c):c=e[5];let p;e[6]!==c?(p=(0,y.jsxDEV)("span",{className:"text-2xl font-semibold tabular-nums text-foreground",children:c},void 0,!1),e[6]=c,e[7]=p):p=e[7];let d;e[8]!==s?(d=s("sockets"),e[8]=s,e[9]=d):d=e[9];let u;e[10]!==d?(u=(0,y.jsxDEV)("span",{className:"text-xs text-muted-foreground",children:d},void 0,!1),e[10]=d,e[11]=u):u=e[11];let g;e[12]!==p||e[13]!==u?(g=(0,y.jsxDEV)("span",{className:"flex items-baseline gap-1.5",children:[p,u]},void 0,!0),e[12]=p,e[13]=u,e[14]=g):g=e[14];let m=o?.totalSubscriptions??0,h;e[15]!==m?(h=m.toLocaleString(),e[15]=m,e[16]=h):h=e[16];let f;e[17]!==s?(f=s("active subscriptions"),e[17]=s,e[18]=f):f=e[18];let v;e[19]!==h||e[20]!==f?(v=(0,y.jsxDEV)("span",{className:"text-[11px] text-muted-foreground",children:[h," ",f]},void 0,!0),e[19]=h,e[20]=f,e[21]=v):v=e[21];let x;return e[22]!==v||e[23]!==n||e[24]!==g?(x=(0,y.jsxDEV)(gt,{"data-testid":"home-live-connections",children:(0,y.jsxDEV)(Ys,{className:"flex flex-col gap-2.5 py-4",children:[n,g,v]},void 0,!0)},void 0,!1),e[22]=v,e[23]=n,e[24]=g,e[25]=x):x=e[25],x},"LiveConnectionsCard"),Ki=a(t=>{let e=(0,Ve.c)(7),{entries:o}=t,s=ie(),r;if(e[0]!==o||e[1]!==s){let n=Date.now(),l;e[3]!==s?(l=s("Recent activity"),e[3]=s,e[4]=l):l=e[4];let c;e[5]!==l?(c=(0,y.jsxDEV)("div",{className:"border-b border-border px-4 py-3",children:(0,y.jsxDEV)("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:l},void 0,!1)},void 0,!1),e[5]=l,e[6]=c):c=e[6],r=(0,y.jsxDEV)(gt,{className:"gap-0 py-0","data-testid":"home-recent-activity",children:[c,o.length===0?(0,y.jsxDEV)("p",{className:"px-4 py-8 text-center text-xs text-muted-foreground",children:s("No recent activity.")},void 0,!1):(0,y.jsxDEV)("ul",{className:"divide-y divide-border",children:o.slice(0,5).map(p=>(0,y.jsxDEV)("li",{className:"flex items-center justify-between gap-3 px-4 py-2 text-[13px]",children:[(0,y.jsxDEV)("span",{className:"flex min-w-0 items-center gap-2",children:[(0,y.jsxDEV)("span",{"aria-hidden":"true",className:"size-1.5 shrink-0 rounded-full bg-muted-foreground/40"},void 0,!1),(0,y.jsxDEV)("span",{className:"truncate text-foreground",children:[p.op,p.table!==void 0&&(0,y.jsxDEV)("span",{className:"text-muted-foreground",children:[" \xB7 ",p.table,p.id===void 0?"":`#${p.id}`]},void 0,!0)]},void 0,!0)]},void 0,!0),(0,y.jsxDEV)("span",{className:"shrink-0 text-xs tabular-nums text-muted-foreground",children:Wi(p.ts,n)},void 0,!1)]},p.seq,!0))},void 0,!1)]},void 0,!0),e[0]=o,e[1]=s,e[2]=r}else r=e[2];return r},"RecentActivityCard"),Qi=a(t=>{let e=t.reduce((o,s)=>o+s.calls,0);return e===0?null:t.reduce((o,s)=>o+s.totalDurationMs,0)/e},"averageLatencyMs"),Ha=a(t=>{let e=(0,Ve.c)(150),{initialShardKey:o}=t,s=ie(),r=pt(),n=o??"",l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l={},e[0]=l):l=e[0];let c;e[1]!==n?(c={shardKey:n},e[1]=n,e[2]=c):c=e[2];let p=ao(Ct.getMetrics,l,c),d;e[3]===Symbol.for("react.memo_cache_sentinel")?(d={},e[3]=d):d=e[3];let u;e[4]!==n?(u={shardKey:n},e[4]=n,e[5]=u):u=e[5];let g=ao(Ct.getFunctionStats,d,u),m,h;e[6]===Symbol.for("react.memo_cache_sentinel")?(m={},h={shardKey:""},e[6]=m,e[7]=h):(m=e[6],h=e[7]);let f=ao(Ct.getSecurityAudit,m,h),v;e[8]===Symbol.for("react.memo_cache_sentinel")?(v={},e[8]=v):v=e[8];let x;e[9]!==n?(x={shardKey:n},e[9]=n,e[10]=x):x=e[10];let b=ao(Ct.listSubscriptions,v,x),R;e[11]===Symbol.for("react.memo_cache_sentinel")?(R={},e[11]=R):R=e[11];let P;e[12]!==n?(P={shardKey:n},e[12]=n,e[13]=P):P=e[13];let N=ao(Ct.getAuditLog,R,P),S=p.data??null,E,T,k,w,O,V,W,_,H,$,Z,K,D,I,z,te,re,ne;if(e[14]!==N.data||e[15]!==f.data||e[16]!==S||e[17]!==p.data||e[18]!==r||e[19]!==g.data||e[20]!==b.data||e[21]!==s){w=Array.isArray(g.data?.functions)?g.data.functions:[],W=b.data??null;let Ue;e[40]!==N.data?(Ue=Array.isArray(N.data?.entries)?N.data.entries:[],e[40]=N.data,e[41]=Ue):Ue=e[41],T=Ue,O=p.data===void 0||g.data===void 0?null:Bn(S,w).length,V=Array.isArray(f.data?.findings)?f.data.findings.length:null;let We;e[42]!==r?(We=a(()=>{$e(r({to:"/security"}))},"t212"),e[42]=r,e[43]=We):We=e[43],ne=We;let Ze;e[44]!==r?(Ze=a(()=>{$e(r({to:"/insights"}))},"t222"),e[44]=r,e[45]=Ze):Ze=e[45],re=Ze;let qe=Va(S?.history,"calls"),Ge=Va(S?.history,"errors"),nt=Qi(w),Ke=Math.max(0,...w.map(Xi)),ge=S?.cache,Qe;e[46]!==ge?(Qe=ge!=null&&ge.hits+ge.misses>0?Math.round(ge.hits/(ge.hits+ge.misses)*100):null,e[46]=ge,e[47]=Qe):Qe=e[47],k=Qe,z="flex flex-col gap-6",te="lunora-home",Z="grid gap-3 sm:grid-cols-2 xl:grid-cols-4",K="home-health";let Ye=Ba(qe),Ie;e[48]!==s?(Ie=s("Requests"),e[48]=s,e[49]=Ie):Ie=e[49];let Je=S?.requests??0,De;e[50]!==Je?(De=Je.toLocaleString(),e[50]=Je,e[51]=De):De=e[51],e[52]!==qe||e[53]!==Ye||e[54]!==Ie||e[55]!==De?(D=(0,y.jsxDEV)(As,{delta:Ye,label:Ie,trend:qe,value:De},void 0,!1),e[52]=qe,e[53]=Ye,e[54]=Ie,e[55]=De,e[56]=D):D=e[56];let Xe=Ba(Ge,!1),_e;e[57]!==s?(_e=s("Errors"),e[57]=s,e[58]=_e):_e=e[58];let et=S?.errors??0,Ae;e[59]!==et?(Ae=et.toLocaleString(),e[59]=et,e[60]=Ae):Ae=e[60],e[61]!==Ge||e[62]!==Xe||e[63]!==_e||e[64]!==Ae?(I=(0,y.jsxDEV)(As,{delta:Xe,label:_e,trend:Ge,value:Ae},void 0,!1),e[61]=Ge,e[62]=Xe,e[63]=_e,e[64]=Ae,e[65]=I):I=e[65],E=As,e[66]!==Ke||e[67]!==s?(_=Ke>0?`${s("max")} ${Dr(Ke)}`:void 0,e[66]=Ke,e[67]=s,e[68]=_):_=e[68],e[69]!==s?(H=s("Avg latency"),e[69]=s,e[70]=H):H=e[70],$=nt===null?"\u2014":Dr(nt),e[14]=N.data,e[15]=f.data,e[16]=S,e[17]=p.data,e[18]=r,e[19]=g.data,e[20]=b.data,e[21]=s,e[22]=E,e[23]=T,e[24]=k,e[25]=w,e[26]=O,e[27]=V,e[28]=W,e[29]=_,e[30]=H,e[31]=$,e[32]=Z,e[33]=K,e[34]=D,e[35]=I,e[36]=z,e[37]=te,e[38]=re,e[39]=ne}else E=e[22],T=e[23],k=e[24],w=e[25],O=e[26],V=e[27],W=e[28],_=e[29],H=e[30],$=e[31],Z=e[32],K=e[33],D=e[34],I=e[35],z=e[36],te=e[37],re=e[38],ne=e[39];let J;e[71]!==E||e[72]!==_||e[73]!==H||e[74]!==$?(J=(0,y.jsxDEV)(E,{footer:_,label:H,value:$},void 0,!1),e[71]=E,e[72]=_,e[73]=H,e[74]=$,e[75]=J):J=e[75];let ee;e[76]!==k||e[77]!==s?(ee=k===null?void 0:`${String(k)}% ${s("cache hit")}`,e[76]=k,e[77]=s,e[78]=ee):ee=e[78];let ae;e[79]!==s?(ae=s("Database size"),e[79]=s,e[80]=ae):ae=e[80];let Be=S?.databaseSize??null,me;e[81]!==Be?(me=Vn(Be),e[81]=Be,e[82]=me):me=e[82];let he;e[83]!==ee||e[84]!==ae||e[85]!==me?(he=(0,y.jsxDEV)(As,{footer:ee,label:ae,value:me},void 0,!1),e[83]=ee,e[84]=ae,e[85]=me,e[86]=he):he=e[86];let ve;e[87]!==Z||e[88]!==K||e[89]!==D||e[90]!==I||e[91]!==J||e[92]!==he?(ve=(0,y.jsxDEV)("div",{className:Z,"data-testid":K,children:[D,I,J,he]},void 0,!0),e[87]=Z,e[88]=K,e[89]=D,e[90]=I,e[91]=J,e[92]=he,e[93]=ve):ve=e[93];let Le;e[94]===Symbol.for("react.memo_cache_sentinel")?(Le=(0,y.jsxDEV)(Fi,{},void 0,!1),e[94]=Le):Le=e[94];let L;e[95]!==w?(L=(0,y.jsxDEV)("div",{className:"lg:col-span-2",children:(0,y.jsxDEV)(qi,{functions:w},void 0,!1)},void 0,!1),e[95]=w,e[96]=L):L=e[96];let Q;e[97]!==W?(Q=(0,y.jsxDEV)(Gi,{subs:W},void 0,!1),e[97]=W,e[98]=Q):Q=e[98];let X;e[99]!==T?(X=(0,y.jsxDEV)(Ki,{entries:T},void 0,!1),e[99]=T,e[100]=X):X=e[100];let xe;e[101]!==Q||e[102]!==X?(xe=(0,y.jsxDEV)("div",{className:"flex flex-col gap-3",children:[Q,X]},void 0,!0),e[101]=Q,e[102]=X,e[103]=xe):xe=e[103];let se;e[104]!==L||e[105]!==xe?(se=(0,y.jsxDEV)("div",{className:"grid gap-3 lg:grid-cols-3",children:[L,xe]},void 0,!0),e[104]=L,e[105]=xe,e[106]=se):se=e[106];let Fe;e[107]!==s?(Fe=s("Advisors"),e[107]=s,e[108]=Fe):Fe=e[108];let ce;e[109]!==Fe?(ce=(0,y.jsxDEV)("h2",{className:"text-sm font-semibold tracking-tight text-foreground",children:Fe},void 0,!1),e[109]=Fe,e[110]=ce):ce=e[110];let pe;e[111]!==O||e[112]!==V||e[113]!==s||e[114]!==re||e[115]!==ne?(pe=V===0&&O===0?(0,y.jsxDEV)(Dn,{description:s("No security or performance issues detected."),icon:(0,y.jsxDEV)("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:[(0,y.jsxDEV)("path",{d:"M12 3 4 6v5c0 5 3.4 8.5 8 10 4.6-1.5 8-5 8-10V6l-8-3Z"},void 0,!1),(0,y.jsxDEV)("path",{d:"m9 12 2 2 4-4"},void 0,!1)]},void 0,!0),testId:"home-advisors-clear",title:s("No issues found")},void 0,!1):(0,y.jsxDEV)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,y.jsxDEV)(La,{count:V,onView:ne,testId:"home-security",title:s("Security findings")},void 0,!1),(0,y.jsxDEV)(La,{count:O,onView:re,testId:"home-performance",title:s("Performance issues")},void 0,!1)]},void 0,!0),e[111]=O,e[112]=V,e[113]=s,e[114]=re,e[115]=ne,e[116]=pe):pe=e[116];let Pe;e[117]!==ce||e[118]!==pe?(Pe=(0,y.jsxDEV)("section",{className:"flex flex-col gap-3","data-testid":"home-advisors",children:[ce,pe]},void 0,!0),e[117]=ce,e[118]=pe,e[119]=Pe):Pe=e[119];let Re;e[120]!==s?(Re=s("Get connected"),e[120]=s,e[121]=Re):Re=e[121];let Ce;e[122]!==Re?(Ce=(0,y.jsxDEV)("h2",{className:"text-sm font-semibold tracking-tight text-foreground",children:Re},void 0,!1),e[122]=Re,e[123]=Ce):Ce=e[123];let Se;e[124]!==s?(Se=s("Client SDK"),e[124]=s,e[125]=Se):Se=e[125];let Ne;e[126]!==Se?(Ne=(0,y.jsxDEV)(Ir,{command:"npm i @lunora/client",label:Se},void 0,!1),e[126]=Se,e[127]=Ne):Ne=e[127];let Ee;e[128]!==s?(Ee=s("React"),e[128]=s,e[129]=Ee):Ee=e[129];let Te;e[130]!==Ee?(Te=(0,y.jsxDEV)(Ir,{command:"npm i @lunora/react",label:Ee},void 0,!1),e[130]=Ee,e[131]=Te):Te=e[131];let we;e[132]!==s?(we=s("CLI"),e[132]=s,e[133]=we):we=e[133];let ke;e[134]!==we?(ke=(0,y.jsxDEV)(Ir,{command:"lunora dev",label:we},void 0,!1),e[134]=we,e[135]=ke):ke=e[135];let Oe;e[136]!==Ne||e[137]!==Te||e[138]!==ke?(Oe=(0,y.jsxDEV)("div",{className:"grid gap-3 sm:grid-cols-3",children:[Ne,Te,ke]},void 0,!0),e[136]=Ne,e[137]=Te,e[138]=ke,e[139]=Oe):Oe=e[139];let Me;e[140]!==Ce||e[141]!==Oe?(Me=(0,y.jsxDEV)("section",{className:"flex flex-col gap-3","data-testid":"home-get-connected",children:[Ce,Oe]},void 0,!0),e[140]=Ce,e[141]=Oe,e[142]=Me):Me=e[142];let ze;return e[143]!==z||e[144]!==te||e[145]!==ve||e[146]!==se||e[147]!==Pe||e[148]!==Me?(ze=(0,y.jsxDEV)("div",{className:z,"data-testid":te,children:[ve,Le,se,Pe,Me]},void 0,!0),e[143]=z,e[144]=te,e[145]=ve,e[146]=se,e[147]=Pe,e[148]=Me,e[149]=ze):ze=e[149],ze},"HomePanel");function Yi(t,e){return e.calls-t.calls}a(Yi,"_temp");function Ji(t){return(0,y.jsxDEV)("div",{className:"grid grid-cols-[1fr_auto_auto_auto] items-center gap-4 px-4 py-2 text-[13px]",children:[(0,y.jsxDEV)("span",{className:"truncate font-mono text-xs text-foreground",children:t.path},void 0,!1),(0,y.jsxDEV)("span",{className:"text-end tabular-nums",children:t.calls.toLocaleString()},void 0,!1),(0,y.jsxDEV)("span",{className:"w-12 text-end tabular-nums text-muted-foreground",children:Dr(t.calls>0?t.totalDurationMs/t.calls:0)},void 0,!1),(0,y.jsxDEV)("span",{className:U("w-8 text-end tabular-nums",t.errors>0?"text-destructive":"text-muted-foreground"),children:t.errors},void 0,!1)]},t.path,!0)}a(Ji,"_temp2");function Xi(t){return t.maxDurationMs}a(Xi,"_temp3");var $a=C(Lo(),1);var ja=C(mo(),1);var el=a((t,e,o)=>t!==void 0?t:e===void 0&&o===void 0?Qr:Kr(e,o),"resolveInstance"),za=a(t=>{let e=(0,$a.c)(7),{catalogs:o,children:s,i18n:r,locale:n}=t,l;e[0]!==o||e[1]!==r||e[2]!==n?(l=el(r,n,o),e[0]=o,e[1]=r,e[2]=n,e[3]=l):l=e[3];let c=l,p;return e[4]!==s||e[5]!==c?(p=(0,ja.jsxDEV)(Yr,{value:c,children:s},void 0,!1),e[4]=s,e[5]=c,e[6]=p):p=e[6],p},"StudioI18nProvider");var Vr=C(Lo(),1);var Pt=C(M(),1);var de=C(mo(),1);var Ar="lunora:command-palette",Ua=a(()=>{"window"in globalThis&&globalThis.dispatchEvent(new Event(Ar))},"openCommandPalette"),tl=a(t=>{let e=(0,Vr.c)(18),{active:o,index:s,item:r,onActivate:n,onSelect:l}=t,c;e[0]!==r||e[1]!==l?(c=a(()=>{l(r)},"t1"),e[0]=r,e[1]=l,e[2]=c):c=e[2];let p=c,d;e[3]!==s||e[4]!==n?(d=a(()=>{n(s)},"t2"),e[3]=s,e[4]=n,e[5]=d):d=e[5];let u=d,g=o?"bg-accent text-accent-foreground":"text-foreground",m;e[6]!==g?(m=U("flex w-full items-center justify-between gap-3 rounded-md px-3 py-2 text-start text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground",g),e[6]=g,e[7]=m):m=e[7];let h;e[8]!==r.label?(h=(0,de.jsxDEV)("span",{children:r.label},void 0,!1),e[8]=r.label,e[9]=h):h=e[9];let f;e[10]!==r.group?(f=(0,de.jsxDEV)("span",{className:"text-xs text-muted-foreground",children:r.group},void 0,!1),e[10]=r.group,e[11]=f):f=e[11];let v;return e[12]!==p||e[13]!==u||e[14]!==m||e[15]!==h||e[16]!==f?(v=(0,de.jsxDEV)("li",{children:(0,de.jsxDEV)("button",{className:m,onClick:p,onMouseEnter:u,type:"button",children:[h,f]},void 0,!0)},void 0,!1),e[12]=p,e[13]=u,e[14]=m,e[15]=h,e[16]=f,e[17]=v):v=e[17],v},"CommandRow"),Wa=a(t=>{let e=(0,Vr.c)(39),{items:o}=t,s=ie(),r=pt(),[n,l]=(0,Pt.useState)(!1),[c,p]=(0,Pt.useState)(""),[d,u]=(0,Pt.useState)(0),g=(0,Pt.useRef)(null),m,h;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=a(()=>{let D=a(z=>{(z.metaKey||z.ctrlKey)&&z.key.toLowerCase()==="k"&&(z.preventDefault(),l(!0))},"onKeyDown"),I=a(()=>{l(!0)},"onOpen");return globalThis.addEventListener("keydown",D),globalThis.addEventListener(Ar,I),()=>{globalThis.removeEventListener("keydown",D),globalThis.removeEventListener(Ar,I)}},"t1"),h=[],e[0]=m,e[1]=h):(m=e[0],h=e[1]),(0,Pt.useEffect)(m,h);let f;if(e[2]!==o||e[3]!==c){e:{let D=c.trim().toLowerCase();if(D===""){f=o;break e}f=o.filter(I=>I.label.toLowerCase().includes(D)||I.group.toLowerCase().includes(D))}e[2]=o,e[3]=c,e[4]=f}else f=e[4];let v=f,x;e[5]===Symbol.for("react.memo_cache_sentinel")?(x=a(D=>{l(D),D||(p(""),u(0))},"t4"),e[5]=x):x=e[5];let b=x,R;e[6]!==r?(R=a(D=>{b(!1),$e(r({to:D.to}))},"t5"),e[6]=r,e[7]=R):R=e[7];let P=R,N;e[8]===Symbol.for("react.memo_cache_sentinel")?(N=a(D=>{p(D.target.value),u(0)},"t6"),e[8]=N):N=e[8];let S=N,E;e[9]!==d||e[10]!==v||e[11]!==P?(E=a(D=>{e:switch(D.key){case"ArrowDown":{D.preventDefault(),u(I=>v.length===0?0:(I+1)%v.length);break e}case"ArrowUp":{D.preventDefault(),u(I=>v.length===0?0:(I-1+v.length)%v.length);break e}case"Enter":{D.preventDefault();let I=v[d];I!==void 0&&P(I);break e}}},"t7"),e[9]=d,e[10]=v,e[11]=P,e[12]=E):E=e[12];let T=E,k;e[13]===Symbol.for("react.memo_cache_sentinel")?(k=(0,de.jsxDEV)(fe.Backdrop,{className:"fixed inset-0 z-50 bg-black/40 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0"},void 0,!1),e[13]=k):k=e[13];let w;e[14]!==s?(w=s("Command palette"),e[14]=s,e[15]=w):w=e[15];let O;e[16]!==w?(O=(0,de.jsxDEV)(fe.Title,{className:"sr-only",children:w},void 0,!1),e[16]=w,e[17]=O):O=e[17];let V;e[18]===Symbol.for("react.memo_cache_sentinel")?(V=(0,de.jsxDEV)("svg",{"aria-hidden":"true",className:"size-4 text-muted-foreground",fill:"none",stroke:"currentColor",strokeWidth:1.8,viewBox:"0 0 24 24",children:[(0,de.jsxDEV)("circle",{cx:"11",cy:"11",r:"7"},void 0,!1),(0,de.jsxDEV)("path",{d:"m21 21-4.3-4.3",strokeLinecap:"round"},void 0,!1)]},void 0,!0),e[18]=V):V=e[18];let W;e[19]!==s?(W=s("Search\u2026"),e[19]=s,e[20]=W):W=e[20];let _;e[21]!==T||e[22]!==c||e[23]!==W?(_=(0,de.jsxDEV)("div",{className:"flex items-center gap-2 border-b border-border px-3",children:[V,(0,de.jsxDEV)("input",{className:"h-11 w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground","data-testid":"dash-command-input",onChange:S,onKeyDown:T,placeholder:W,ref:g,type:"text",value:c},void 0,!1)]},void 0,!0),e[21]=T,e[22]=c,e[23]=W,e[24]=_):_=e[24];let H;e[25]!==d||e[26]!==v||e[27]!==P||e[28]!==s?(H=v.length===0?(0,de.jsxDEV)("li",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:s("No results.")},void 0,!1):v.map((D,I)=>(0,de.jsxDEV)(tl,{active:I===d,index:I,item:D,onActivate:u,onSelect:P},D.to,!1)),e[25]=d,e[26]=v,e[27]=P,e[28]=s,e[29]=H):H=e[29];let $;e[30]!==H?($=(0,de.jsxDEV)("ul",{className:"max-h-80 overflow-y-auto p-1.5","data-testid":"dash-command-list",children:H},void 0,!1),e[30]=H,e[31]=$):$=e[31];let Z;e[32]!==O||e[33]!==_||e[34]!==$?(Z=(0,de.jsxDEV)(fe.Portal,{children:[k,(0,de.jsxDEV)(fe.Popup,{className:"fixed start-1/2 top-24 z-50 w-[36rem] max-w-[90vw] -translate-x-1/2 overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-lg outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95","data-testid":"dash-command-palette",initialFocus:g,children:[O,_,$]},void 0,!0)]},void 0,!0),e[32]=O,e[33]=_,e[34]=$,e[35]=Z):Z=e[35];let K;return e[36]!==n||e[37]!==Z?(K=(0,de.jsxDEV)(fe.Root,{onOpenChange:b,open:n,children:Z},void 0,!1),e[36]=n,e[37]=Z,e[38]=K):K=e[38],K},"CommandPalette");var Ya="(prefers-color-scheme: dark)",Ja=a(()=>{try{return globalThis.localStorage}catch{return}},"store"),ol=a(t=>t==="system"||t==="light"||t==="dark","isPreference"),Xa=a(()=>globalThis.matchMedia,"matchMedia"),ei="lunora-studio-theme",Br=["system","light","dark"],sl=a((t="system")=>{try{let e=Ja()?.getItem(ei);return ol(e)?e:t}catch{return t}},"loadThemePreference"),Za=a(t=>{let e=Ja();if(e!==void 0)try{e.setItem(ei,t)}catch{}},"saveThemePreference"),rl=a(()=>{try{return Xa()?.(Ya).matches?"dark":"light"}catch{return"light"}},"getSystemTheme"),nl=a((t,e)=>t==="system"?e:t,"resolveTheme"),al=a(t=>{let e;try{e=Xa()?.(Ya)}catch{e=void 0}if(e===void 0)return()=>{};let o=a(s=>{t(s.matches?"dark":"light")},"handler");return e.addEventListener("change",o),()=>{e.removeEventListener("change",o)}},"subscribeSystemTheme"),ti=(0,q.createContext)(null),g0=a(({children:t,defaultTheme:e="system"})=>{let[o,s]=(0,q.useState)(()=>sl(e)),[r,n]=(0,q.useState)(()=>rl());(0,q.useEffect)(()=>al(n),[]);let l=a(d=>{Za(d),s(d)},"setTheme"),p={cycleTheme:a(()=>{s(d=>{let u=Br[(Br.indexOf(d)+1)%Br.length]??d;return Za(u),u})},"cycleTheme"),resolvedTheme:nl(o,r),setTheme:l,systemTheme:r,theme:o};return(0,i.jsxDEV)(ti,{value:p,children:t},void 0,!1)},"ThemeProvider"),il=a(()=>{let t=(0,q.use)(ti);if(t===null)throw new Ws("INTERNAL","useTheme must be used within a <ThemeProvider>");return t},"useTheme");function h0({delay:t=0,...e}){return(0,i.jsxDEV)(st.Provider,{"data-slot":"tooltip-provider",delay:t,...e},void 0,!1)}a(h0,"TooltipProvider");function ll(t){let e=(0,B.c)(4),o;e[0]!==t?({...o}=t,e[0]=t,e[1]=o):o=e[1];let s;return e[2]!==o?(s=(0,i.jsxDEV)(st.Root,{"data-slot":"tooltip",...o},void 0,!1),e[2]=o,e[3]=s):s=e[3],s}a(ll,"Tooltip");function dl(t){let e=(0,B.c)(4),o;e[0]!==t?({...o}=t,e[0]=t,e[1]=o):o=e[1];let s;return e[2]!==o?(s=(0,i.jsxDEV)(st.Trigger,{"data-slot":"tooltip-trigger",...o},void 0,!1),e[2]=o,e[3]=s):s=e[3],s}a(dl,"TooltipTrigger");function cl({className:t,side:e="top",sideOffset:o=4,align:s="center",alignOffset:r=0,children:n,...l}){return(0,i.jsxDEV)(st.Portal,{children:(0,i.jsxDEV)(st.Positioner,{align:s,alignOffset:r,side:e,sideOffset:o,className:"isolate z-50",children:(0,i.jsxDEV)(st.Popup,{"data-slot":"tooltip-content",className:U("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pe-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-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 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-md data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...l,children:[n,(0,i.jsxDEV)(st.Arrow,{className:"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-md bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-start-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-end-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5"},void 0,!1)]},void 0,!0)},void 0,!1)},void 0,!1)}a(cl,"TooltipContent");var pl=a(t=>{let e=(0,B.c)(5),{className:o}=t,s;e[0]!==o?(s=U("h-full w-full text-foreground",o),e[0]=o,e[1]=s):s=e[1];let r;e[2]===Symbol.for("react.memo_cache_sentinel")?(r=(0,i.jsxDEV)("path",{d:"M 259.500 10.552 C 220.080 15.859, 182.424 32.566, 152.500 58.025 C 110.179 94.031, 85.380 137.183, 77.518 188.500 C 75.410 202.255, 74.569 225.677, 75.796 236.466 C 76.757 244.917, 76.683 245.692, 74.518 249.966 C 63.118 272.466, 53.141 303.876, 51.382 322.799 L 50.718 329.943 71.960 320.471 C 83.643 315.262, 93.326 311, 93.478 311 C 93.630 311, 96.547 316.063, 99.959 322.250 C 103.371 328.438, 107.249 334.850, 108.577 336.500 L 110.990 339.500 110.981 336 C 110.977 334.075, 111.499 324.991, 112.143 315.813 L 113.312 299.127 121.406 293.336 C 132.495 285.403, 149.593 271.554, 161 261.268 C 171.556 251.748, 189.116 235, 188.540 235 C 188.337 235, 183.069 238.648, 176.835 243.106 C 142.318 267.789, 68.537 314, 63.646 314 C 61.843 314, 72.791 281.179, 80.905 262.259 C 92.233 235.845, 107.473 212.389, 132.106 183.453 L 138.451 176 148.268 176 C 176.192 176, 197.512 187.154, 212.868 209.797 C 216.470 215.108, 217.035 216.595, 216.477 219.297 C 211.386 243.968, 202.359 274.496, 193.797 296 C 183.898 320.861, 167.147 352.101, 152.395 373.215 L 147.004 380.930 152.891 385.830 C 161.400 392.911, 165.563 396, 166.594 395.998 C 167.092 395.998, 168.772 391.641, 170.327 386.317 C 176.279 365.934, 188.422 338.749, 200.942 317.778 C 223.060 280.731, 256.432 244.369, 294.500 215.836 C 309.956 204.252, 313.937 201.603, 314.719 202.385 C 315.116 202.783, 315.449 213.096, 315.460 225.304 C 315.474 241.855, 315.021 250.405, 313.680 258.924 C 307.009 301.272, 291.175 336.677, 263.112 372 C 255.259 381.883, 227.182 410.673, 218.516 417.727 L 213.532 421.783 223.439 424.880 C 281.705 443.093, 349.165 436.018, 398.616 406.508 C 446.728 377.797, 483.322 331.466, 497.366 281.481 C 503.381 260.075, 504.480 250.741, 504.491 221 C 504.501 191.997, 503.598 184.047, 497.987 163.732 C 484.768 115.871, 452.505 72.708, 407.718 42.964 C 381.051 25.254, 352.818 14.828, 319.695 10.460 C 305.932 8.645, 273.298 8.695, 259.500 10.552",fillRule:"evenodd"},void 0,!1),e[2]=r):r=e[2];let n;return e[3]!==s?(n=(0,i.jsxDEV)("svg",{"aria-hidden":"true",className:s,fill:"currentColor",viewBox:"0 0 543 446",children:r},void 0,!1),e[3]=s,e[4]=n):n=e[4],n},"BrandMark"),oi="lunora.studio.rulesBannerDismissed",ul=a(()=>{try{return globalThis.localStorage.getItem(oi)==="1"}catch{return!1}},"readBannerDismissed"),fl=a(()=>{try{globalThis.localStorage.setItem(oi,"1")}catch{}},"writeBannerDismissed"),ml=a(()=>{let t=(0,B.c)(18),e=ie(),[o,s]=(0,q.useState)(gl),r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r=a(()=>{s(!0),fl()},"t0"),t[0]=r):r=t[0];let n=r;if(o)return null;let l;t[1]===Symbol.for("react.memo_cache_sentinel")?(l=(0,i.jsxDEV)("span",{"aria-hidden":"true",className:"text-warning",children:"\u26A0"},void 0,!1),t[1]=l):l=t[1];let c;t[2]!==e?(c=e("Lunora AI rules aren't installed."),t[2]=e,t[3]=c):c=t[3];let p;t[4]===Symbol.for("react.memo_cache_sentinel")?(p=(0,i.jsxDEV)("code",{className:"rounded bg-muted px-1 py-0.5 font-mono text-[11px]",children:"lunora rules install"},void 0,!1),t[4]=p):p=t[4];let d;t[5]!==e?(d=e("lets your coding agent use Lunora correctly."),t[5]=e,t[6]=d):d=t[6];let u;t[7]!==c||t[8]!==d?(u=(0,i.jsxDEV)("span",{children:[c," ",p," ",d]},void 0,!0),t[7]=c,t[8]=d,t[9]=u):u=t[9];let g;t[10]!==e?(g=e("Dismiss"),t[10]=e,t[11]=g):g=t[11];let m;t[12]===Symbol.for("react.memo_cache_sentinel")?(m=(0,i.jsxDEV)("svg",{"aria-hidden":"true",className:"size-3.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:1.8,viewBox:"0 0 24 24",children:(0,i.jsxDEV)("path",{d:"M18 6 6 18M6 6l12 12"},void 0,!1)},void 0,!1),t[12]=m):m=t[12];let h;t[13]!==g?(h=(0,i.jsxDEV)("button",{"aria-label":g,className:"ms-auto flex size-5 items-center justify-center rounded text-muted-foreground outline-none transition-colors hover:bg-accent hover:text-foreground focus-visible:bg-accent","data-testid":"dash-app-rules-banner-dismiss",onClick:n,type:"button",children:m},void 0,!1),t[13]=g,t[14]=h):h=t[14];let f;return t[15]!==u||t[16]!==h?(f=(0,i.jsxDEV)("div",{className:"flex shrink-0 items-center gap-2 border-b border-warning/30 bg-warning/10 px-6 py-2 text-[12px] text-foreground","data-testid":"dash-app-rules-banner",role:"note",children:[l,u,h]},void 0,!0),t[15]=u,t[16]=h,t[17]=f):f=t[17],f},"RulesBanner");function gl(){return ul()}a(gl,"_temp$1");var hl=a(()=>{let t=(0,B.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,i.jsxDEV)("svg",{"aria-hidden":"true",className:"size-3.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.8,viewBox:"0 0 24 24",children:[(0,i.jsxDEV)("rect",{height:"14",rx:"2",width:"20",x:"2",y:"3"},void 0,!1),(0,i.jsxDEV)("path",{d:"M8 21h8M12 17v4"},void 0,!1)]},void 0,!0),t[0]=e):e=t[0],e},"MonitorIcon"),vl=a(()=>{let t=(0,B.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,i.jsxDEV)("svg",{"aria-hidden":"true",className:"size-3.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.8,viewBox:"0 0 24 24",children:[(0,i.jsxDEV)("circle",{cx:"12",cy:"12",r:"4"},void 0,!1),(0,i.jsxDEV)("path",{d:"M12 2v2m0 16v2M4.9 4.9l1.4 1.4m11.4 11.4 1.4 1.4M2 12h2m16 0h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"},void 0,!1)]},void 0,!0),t[0]=e):e=t[0],e},"SunIcon"),xl=a(()=>{let t=(0,B.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,i.jsxDEV)("svg",{"aria-hidden":"true",className:"size-3.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.8,viewBox:"0 0 24 24",children:(0,i.jsxDEV)("path",{d:"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8Z"},void 0,!1)},void 0,!1),t[0]=e):e=t[0],e},"MoonIcon"),bl=[{Icon:hl,value:"system"},{Icon:vl,value:"light"},{Icon:xl,value:"dark"}],yl=a(()=>{let t=(0,B.c)(19),{theme:e,setTheme:o}=il(),s=ie(),r;t[0]!==s?(r=s("Dark theme"),t[0]=s,t[1]=r):r=t[1];let n;t[2]!==s?(n=s("Light theme"),t[2]=s,t[3]=n):n=t[3];let l;t[4]!==s?(l=s("System theme"),t[4]=s,t[5]=l):l=t[5];let c;t[6]!==r||t[7]!==n||t[8]!==l?(c={dark:r,light:n,system:l},t[6]=r,t[7]=n,t[8]=l,t[9]=c):c=t[9];let p=c,d;t[10]!==s?(d=s("Theme"),t[10]=s,t[11]=d):d=t[11];let u;t[12]!==p||t[13]!==o||t[14]!==e?(u=bl.map(m=>{let{Icon:h,value:f}=m,v=e===f;return(0,i.jsxDEV)("button",{"aria-checked":v,"aria-label":p[f],className:U("relative flex size-7 cursor-pointer items-center justify-center rounded-md outline-none transition-colors focus-visible:bg-accent",v?"text-foreground":"text-muted-foreground hover:text-foreground"),"data-testid":`dash-app-theme-${f}`,onClick:a(()=>{o(f)},"onClick"),role:"radio",title:p[f],type:"button",children:[v&&(0,i.jsxDEV)(Jr.span,{className:"absolute inset-0 rounded-md border border-muted-foreground/40 bg-background/40",layoutId:"studio-theme-active",transition:{bounce:.1,duration:.45,type:"spring"}},void 0,!1),(0,i.jsxDEV)("span",{className:"relative",children:(0,i.jsxDEV)(h,{},void 0,!1)},void 0,!1)]},f,!0)}),t[12]=p,t[13]=o,t[14]=e,t[15]=u):u=t[15];let g;return t[16]!==d||t[17]!==u?(g=(0,i.jsxDEV)("div",{"aria-label":d,className:"inline-flex items-center gap-0.5 overflow-hidden rounded-md border border-border bg-muted/60 p-0.5","data-testid":"dash-app-theme",role:"radiogroup",children:u},void 0,!1),t[16]=d,t[17]=u,t[18]=g):g=t[18],g},"ThemeToggle");function si(t){let e=(0,B.c)(4),o;e[0]!==t?({...o}=t,e[0]=t,e[1]=o):o=e[1];let s;return e[2]!==o?(s=(0,i.jsxDEV)(yt.Root,{"data-slot":"popover",...o},void 0,!1),e[2]=o,e[3]=s):s=e[3],s}a(si,"Popover");function ri(t){let e=(0,B.c)(4),o;e[0]!==t?({...o}=t,e[0]=t,e[1]=o):o=e[1];let s;return e[2]!==o?(s=(0,i.jsxDEV)(yt.Trigger,{"data-slot":"popover-trigger",...o},void 0,!1),e[2]=o,e[3]=s):s=e[3],s}a(ri,"PopoverTrigger");function ni({align:t="end",alignOffset:e=0,className:o,keepMounted:s=!1,side:r="bottom",sideOffset:n=6,...l}){return(0,i.jsxDEV)(yt.Portal,{keepMounted:s,children:(0,i.jsxDEV)(yt.Positioner,{align:t,alignOffset:e,className:"isolate z-50 outline-none",side:r,sideOffset:n,children:(0,i.jsxDEV)(yt.Popup,{className:U("z-50 w-72 origin-(--transform-origin) rounded-lg border border-border bg-popover p-3 text-popover-foreground shadow-md outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",o),"data-slot":"popover-content",...l},void 0,!1)},void 0,!1)},void 0,!1)}a(ni,"PopoverContent");var Lr=768;function Pl(){let t=(0,B.c)(2),[e,o]=(0,q.useState)(void 0),s,r;return t[0]===Symbol.for("react.memo_cache_sentinel")?(s=a(()=>{let n=globalThis.matchMedia(`(max-width: ${Lr-1}px)`),l=a(()=>{o(globalThis.innerWidth<Lr)},"onChange");return n.addEventListener("change",l),o(globalThis.innerWidth<Lr),()=>{n.removeEventListener("change",l)}},"t0"),r=[],t[0]=s,t[1]=r):(s=t[0],r=t[1]),(0,q.useEffect)(s,r),!!e}a(Pl,"useIsMobile");function Rl(t){let e=(0,B.c)(4),o;e[0]!==t?({...o}=t,e[0]=t,e[1]=o):o=e[1];let s;return e[2]!==o?(s=(0,i.jsxDEV)(fe.Root,{"data-slot":"sheet",...o},void 0,!1),e[2]=o,e[3]=s):s=e[3],s}a(Rl,"Sheet");function Cl(t){let e=(0,B.c)(4),o;e[0]!==t?({...o}=t,e[0]=t,e[1]=o):o=e[1];let s;return e[2]!==o?(s=(0,i.jsxDEV)(fe.Portal,{"data-slot":"sheet-portal",...o},void 0,!1),e[2]=o,e[3]=s):s=e[3],s}a(Cl,"SheetPortal");function Sl(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("fixed inset-0 z-50 bg-black/10 text-xs/relaxed transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)(fe.Backdrop,{"data-slot":"sheet-overlay",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(Sl,"SheetOverlay");function Nl({className:t,children:e,side:o="right",showCloseButton:s=!0,...r}){return(0,i.jsxDEV)(Cl,{children:[(0,i.jsxDEV)(Sl,{},void 0,!1),(0,i.jsxDEV)(fe.Popup,{"data-slot":"sheet-content","data-side":o,className:U("fixed z-50 flex flex-col bg-popover bg-clip-padding text-xs/relaxed text-popover-foreground shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-e data-[side=left]:data-ending-style:translate-x-[-2.5rem] rtl:data-[side=left]:data-ending-style:-translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] rtl:data-[side=left]:data-starting-style:-translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-s data-[side=right]:data-ending-style:translate-x-[2.5rem] rtl:data-[side=right]:data-ending-style:-translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] rtl:data-[side=right]:data-starting-style:-translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",t),...r,children:[e,s&&(0,i.jsxDEV)(fe.Close,{"data-slot":"sheet-close",render:(0,i.jsxDEV)(Qs,{variant:"ghost",className:"absolute top-3 end-3",size:"icon-sm"},void 0,!1),children:[(0,i.jsxDEV)(Ks,{icon:Mn,strokeWidth:2},void 0,!1),(0,i.jsxDEV)("span",{className:"sr-only",children:"Close"},void 0,!1)]},void 0,!0)]},void 0,!0)]},void 0,!0)}a(Nl,"SheetContent");function El(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("flex flex-col gap-0.5 p-4",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)("div",{"data-slot":"sheet-header",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(El,"SheetHeader");function Tl(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("text-sm font-medium text-foreground",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)(fe.Title,{"data-slot":"sheet-title",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(Tl,"SheetTitle");function wl(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("text-xs/relaxed text-muted-foreground",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)(fe.Description,{"data-slot":"sheet-description",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(wl,"SheetDescription");var kl="sidebar_state",Ol=3600*24*7,Ml="16rem",Il="18rem",Dl="3rem",_l="b",ai=ct.createContext(null);function Vs(){let t=ct.useContext(ai);if(!t)throw new Ws("INTERNAL","useSidebar must be used within a SidebarProvider.");return t}a(Vs,"useSidebar");function Al({defaultOpen:t=!0,open:e,onOpenChange:o,className:s,style:r,children:n,...l}){let c=Pl(),[p,d]=ct.useState(!1),[u,g]=ct.useState(t),m=e??u,h=a(b=>{let R=typeof b=="function"?b(m):b;o?o(R):g(R),document.cookie=`${kl}=${R}; path=/; max-age=${Ol}`},"setOpen"),f=a(()=>c?d(b=>!b):h(b=>!b),"toggleSidebar");ct.useEffect(()=>{let b=a(R=>{R.key===_l&&(R.metaKey||R.ctrlKey)&&(R.preventDefault(),f())},"handleKeyDown");return globalThis.addEventListener("keydown",b),()=>globalThis.removeEventListener("keydown",b)},[f]);let x={state:m?"expanded":"collapsed",open:m,setOpen:h,isMobile:c,openMobile:p,setOpenMobile:d,toggleSidebar:f};return(0,i.jsxDEV)(ai.Provider,{value:x,children:(0,i.jsxDEV)("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":Ml,"--sidebar-width-icon":Dl,...r},className:U("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",s),...l,children:n},void 0,!1)},void 0,!1)}a(Al,"SidebarProvider");function Vl({side:t="left",variant:e="sidebar",collapsible:o="offcanvas",className:s,children:r,dir:n,...l}){let{isMobile:c,state:p,openMobile:d,setOpenMobile:u}=Vs();return o==="none"?(0,i.jsxDEV)("div",{"data-slot":"sidebar",className:U("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",s),...l,children:r},void 0,!1):c?(0,i.jsxDEV)(Rl,{open:d,onOpenChange:u,...l,children:(0,i.jsxDEV)(Nl,{dir:n,"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":Il},side:t,children:[(0,i.jsxDEV)(El,{className:"sr-only",children:[(0,i.jsxDEV)(Tl,{children:"Sidebar"},void 0,!1),(0,i.jsxDEV)(wl,{children:"Displays the mobile sidebar."},void 0,!1)]},void 0,!0),(0,i.jsxDEV)("div",{className:"flex h-full w-full flex-col",children:r},void 0,!1)]},void 0,!0)},void 0,!1):(0,i.jsxDEV)("div",{className:"group peer hidden text-sidebar-foreground md:block","data-state":p,"data-collapsible":p==="collapsed"?o:"","data-variant":e,"data-side":t,"data-slot":"sidebar",children:[(0,i.jsxDEV)("div",{"data-slot":"sidebar-gap",className:U("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")},void 0,!1),(0,i.jsxDEV)("div",{"data-slot":"sidebar-container","data-side":t,className:U("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex",e==="floating"||e==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-e group-data-[side=right]:border-s",s),...l,children:(0,i.jsxDEV)("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-none group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border",children:r},void 0,!1)},void 0,!1)]},void 0,!0)}a(Vl,"Sidebar");function Bl(t){let e=(0,B.c)(15),o,s,r;e[0]!==t?({className:o,onClick:s,...r}=t,e[0]=t,e[1]=o,e[2]=s,e[3]=r):(o=e[1],s=e[2],r=e[3]);let{toggleSidebar:n}=Vs(),l;e[4]!==o?(l=U(o),e[4]=o,e[5]=l):l=e[5];let c;e[6]!==s||e[7]!==n?(c=a(g=>{s?.(g),n()},"t2"),e[6]=s,e[7]=n,e[8]=c):c=e[8];let p,d;e[9]===Symbol.for("react.memo_cache_sentinel")?(p=(0,i.jsxDEV)(Ks,{icon:In,strokeWidth:2,className:"rtl:rotate-180"},void 0,!1),d=(0,i.jsxDEV)("span",{className:"sr-only",children:"Toggle Sidebar"},void 0,!1),e[9]=p,e[10]=d):(p=e[9],d=e[10]);let u;return e[11]!==r||e[12]!==l||e[13]!==c?(u=(0,i.jsxDEV)(Qs,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:l,onClick:c,...r,children:[p,d]},void 0,!0),e[11]=r,e[12]=l,e[13]=c,e[14]=u):u=e[14],u}a(Bl,"SidebarTrigger");function Ll(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-none md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)("main",{"data-slot":"sidebar-inset",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(Ll,"SidebarInset");function Fl(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("flex flex-col gap-2 p-2",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(Fl,"SidebarHeader");function Hl(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("flex flex-col gap-2 p-2",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(Hl,"SidebarFooter");function $l(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("flex min-h-0 flex-1 flex-col gap-0 overflow-x-hidden overflow-y-auto [scrollbar-color:color-mix(in_oklch,var(--muted-foreground)_25%,transparent)_transparent] [scrollbar-width:thin] [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/25 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar]:w-1.5 hover:[scrollbar-color:color-mix(in_oklch,var(--muted-foreground)_50%,transparent)_transparent] hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/50",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a($l,"SidebarContent");function jl(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("relative flex w-full min-w-0 flex-col p-2",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(jl,"SidebarGroup");function zl(t){let e=(0,B.c)(10),o,s,r,n;if(e[0]!==t){let{className:p,render:d,...u}=t;o=d,n=qs,s="div",r=it({className:U("flex h-8 shrink-0 items-center rounded-none px-2 text-xs text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",p)},u),e[0]=t,e[1]=o,e[2]=s,e[3]=r,e[4]=n}else o=e[1],s=e[2],r=e[3],n=e[4];let l;e[5]===Symbol.for("react.memo_cache_sentinel")?(l={slot:"sidebar-group-label",sidebar:"group-label"},e[5]=l):l=e[5];let c;return e[6]!==o||e[7]!==s||e[8]!==r?(c={defaultTagName:s,props:r,render:o,state:l},e[6]=o,e[7]=s,e[8]=r,e[9]=c):c=e[9],n(c)}a(zl,"SidebarGroupLabel");function Ul(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("w-full text-xs",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(Ul,"SidebarGroupContent");function qa(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("flex w-full min-w-0 flex-col gap-0",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(qa,"SidebarMenu");function Ga(t){let e=(0,B.c)(8),o,s;e[0]!==t?({className:o,...s}=t,e[0]=t,e[1]=o,e[2]=s):(o=e[1],s=e[2]);let r;e[3]!==o?(r=U("group/menu-item relative",o),e[3]=o,e[4]=r):r=e[4];let n;return e[5]!==s||e[6]!==r?(n=(0,i.jsxDEV)("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:r,...s},void 0,!1),e[5]=s,e[6]=r,e[7]=n):n=e[7],n}a(Ga,"SidebarMenuItem");var Wl=Xr("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-none p-2 text-start text-xs ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pe-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-xs",sm:"h-7 text-xs",lg:"h-12 text-xs group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function ii({render:t,isActive:e=!1,variant:o="default",size:s="default",tooltip:r,className:n,...l}){let{isMobile:c,state:p}=Vs(),d=qs({defaultTagName:"button",props:it({className:U(Wl({variant:o,size:s}),n)},l),render:r?(0,i.jsxDEV)(dl,{render:t},void 0,!1):t,state:{slot:"sidebar-menu-button",sidebar:"menu-button",size:s,active:e}});return r?(typeof r=="string"&&(r={children:r}),(0,i.jsxDEV)(ll,{children:[d,(0,i.jsxDEV)(cl,{side:"right",align:"center",hidden:p!=="collapsed"||c,...r},void 0,!1)]},void 0,!0)):d}a(ii,"SidebarMenuButton");var G=a((t,e)=>(0,q.lazy)(()=>t().then(o=>({default:o[e]}))),"lazyNamed"),Zl=G(()=>import("./chunk-PD6WPVYU.js"),"InsightsPanel"),ql=(0,q.lazy)(()=>import("./chunk-T5HRXUSY.js")),Gl=(0,q.lazy)(()=>import("./chunk-BET2625I.js")),Kl=G(()=>import("./chunk-FCSPAJW4.js"),"AnalyticsPanel"),Ql=(0,q.lazy)(()=>import("./chunk-GJ6PGSES.js")),Yl=G(()=>import("./chunk-RSEEHNFI.js"),"AuthConfigPanel"),Jl=G(()=>import("./chunk-U4OAQPBT.js"),"AuthSessionsPanel"),Xl=G(()=>import("./chunk-2GGMGPEP.js"),"OrganizationsPanel"),ed=G(()=>import("./chunk-DORBUITF.js"),"UsersPanel"),td=G(()=>import("./chunk-X72PYOEW.js"),"ContainersPanel"),od=G(()=>import("./chunk-JIDZFLTB.js"),"TableEditor"),sd=G(()=>import("./chunk-VEZO7G5Q.js"),"ExportImportPanel"),rd=G(()=>import("./chunk-ISJAJWYI.js"),"MigrationsPanel"),nd=G(()=>import("./chunk-PA3LN4XJ.js"),"PitrPanel"),ad=G(()=>import("./chunk-DCECRP45.js"),"FlagsPanel"),id=G(()=>import("./chunk-G2ICR3DL.js"),"FunctionRunner"),ld=G(()=>import("./chunk-4MLAVZP4.js"),"FunctionStatsPanel"),dd=G(()=>import("./chunk-DFP2DADO.js"),"AuditPanel"),cd=G(()=>import("./chunk-Y2ZPNDL7.js"),"LogDrainsPanel"),pd=(0,q.lazy)(()=>import("./chunk-VYMCCC6O.js").then(t=>({default:t.LogsPanel}))),ud=G(()=>import("./chunk-GVRM4U6W.js"),"MailPanel"),fd=G(()=>import("./chunk-5OH3VPZF.js"),"SchedulePanel"),md=(0,q.lazy)(()=>import("./chunk-7M3F6U4L.js")),gd=G(()=>import("./chunk-SFJ5F4DX.js"),"KvBrowser"),hd=G(()=>import("./chunk-SYEIXTEU.js"),"PaymentsPanel"),vd=G(()=>import("./chunk-K4ZDRTQM.js"),"PermissionsPanel"),xd=(0,q.lazy)(()=>import("./chunk-UDSVXA42.js")),bd=(0,q.lazy)(()=>import("./chunk-MFPTVCJ6.js")),yd=(0,q.lazy)(()=>import("./chunk-YM6BBZDN.js")),Pd=G(()=>import("./chunk-GZDWDDXN.js"),"HealthPanel"),Rd=G(()=>import("./chunk-E7WLF6IU.js"),"MetricsPanel"),Cd=G(()=>import("./chunk-EVPLBWUT.js"),"SchemaViewer"),Sd=G(()=>import("./chunk-E6WUCLSI.js"),"SettingsPanel"),Nd=G(()=>import("./chunk-SGDQIWAR.js"),"SqlEditorPanel"),Ed=G(()=>import("./chunk-XIGIWZLO.js"),"FileBrowser"),Td=G(()=>import("./chunk-TM7CMA7X.js"),"StorageRulesPanel"),wd=G(()=>import("./chunk-BQUQS7QN.js"),"VectorBrowser"),kd=(0,q.lazy)(()=>import("./chunk-QHIIRFG7.js")),li=(0,q.createContext)(null),Od={analytics:(0,i.jsxDEV)("path",{d:"M5 20V10m6.5 10V4M18 20v-7M3 20h18"},void 0,!1),api:(0,i.jsxDEV)("path",{d:"m9 8-4 4 4 4m6-8 4 4-4 4M13 5l-2 14"},void 0,!1),audit:(0,i.jsxDEV)("path",{d:"M7 4h7l4 4v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Zm6 0v5h5M9 13h6M9 16h6M9 10h2"},void 0,!1),authConfig:(0,i.jsxDEV)("path",{d:"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm7.4-3a7.4 7.4 0 0 0-.1-1.2l2-1.6-2-3.4-2.4 1a7.3 7.3 0 0 0-2-1.2l-.4-2.6h-3.6l-.4 2.6a7.3 7.3 0 0 0-2 1.2l-2.4-1-2 3.4 2 1.6a7.4 7.4 0 0 0 0 2.4l-2 1.6 2 3.4 2.4-1a7.3 7.3 0 0 0 2 1.2l.4 2.6h3.6l.4-2.6a7.3 7.3 0 0 0 2-1.2l2.4 1 2-3.4-2-1.6a7.4 7.4 0 0 0 .1-1.2Z"},void 0,!1),authSessions:(0,i.jsxDEV)("path",{d:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-13.5V12l4 2"},void 0,!1),containers:(0,i.jsxDEV)("path",{d:"M3 7.5 12 3l9 4.5v9L12 21l-9-4.5v-9Zm0 0 9 4.5m0 0 9-4.5m-9 4.5V21"},void 0,!1),dashboards:(0,i.jsxDEV)("path",{d:"M4 5h7v6H4V5Zm9 0h7v4h-7V5ZM4 14h7v5H4v-5Zm9-1h7v6h-7v-6Z"},void 0,!1),drains:(0,i.jsxDEV)("path",{d:"M5 5h14M7 5v6a5 5 0 0 0 10 0V5M10 16h4v3h-4zM12 19v2"},void 0,!1),data:(0,i.jsxDEV)("path",{d:"M5 6c0-1.4 3.1-2.5 7-2.5s7 1.1 7 2.5-3.1 2.5-7 2.5S5 7.4 5 6Zm0 0v12c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5V6M5 12c0 1.4 3.1 2.5 7 2.5s7-1.1 7-2.5"},void 0,!1),export:(0,i.jsxDEV)("path",{d:"M12 3v11m0 0 4-4m-4 4-4-4M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"},void 0,!1),fanout:(0,i.jsxDEV)("path",{d:"M12 5a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm-7 16a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm14 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4ZM12 7v3.5M12 10.5 6 17m6-6.5 6 6.5"},void 0,!1),files:(0,i.jsxDEV)("path",{d:"M4 7a2 2 0 0 1 2-2h3l2 2.5h7a2 2 0 0 1 2 2V18a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V7Z"},void 0,!1),flags:(0,i.jsxDEV)("path",{d:"M6 21V4m0 0h11l-2 3 2 3H6"},void 0,!1),functions:(0,i.jsxDEV)("path",{d:"m9 8-4 4 4 4m6-8 4 4-4 4"},void 0,!1),health:(0,i.jsxDEV)("path",{d:"M3 12h4l2 6 4-14 2 8h6"},void 0,!1),home:(0,i.jsxDEV)("path",{d:"M3 11.5 12 4l9 7.5M5 10v9a1 1 0 0 0 1 1h4v-6h4v6h4a1 1 0 0 0 1-1v-9"},void 0,!1),insights:(0,i.jsxDEV)("path",{d:"M12 3a6 6 0 0 0-3.6 10.8c.5.4.8.9.9 1.5l.2 1.2h5l.2-1.2c.1-.6.4-1.1.9-1.5A6 6 0 0 0 12 3ZM9.5 20.5h5M10 18h4"},void 0,!1),kv:(0,i.jsxDEV)("path",{d:"M5 5h14v4H5V5Zm0 5h14v4H5v-4Zm0 5h14v4H5v-4Z"},void 0,!1),logs:(0,i.jsxDEV)("path",{d:"M5 6h14M5 10h14M5 14h9M5 18h11"},void 0,!1),mail:(0,i.jsxDEV)("path",{d:"M4 5h16v14H4V5Zm0 1.5 8 6 8-6"},void 0,!1),payments:(0,i.jsxDEV)("path",{d:"M3 7h18v10H3V7Zm0 3h18M7 14h4"},void 0,!1),metrics:(0,i.jsxDEV)("path",{d:"M5 20V10m6.5 10V4M18 20v-7M3 20h18"},void 0,!1),migrations:(0,i.jsxDEV)("path",{d:"M4 12a8 8 0 0 1 13.7-5.6L20 8M20 4v4h-4M20 12a8 8 0 0 1-13.7 5.6L4 16m0 4v-4h4"},void 0,!1),organizations:(0,i.jsxDEV)("path",{d:"M3 21V8l6-4 6 4v13M9 21v-5h2v5M15 11h6v10M18 14v.01M18 17v.01M6 9v.01M6 12v.01M6 15v.01"},void 0,!1),permissions:(0,i.jsxDEV)("path",{d:"M12 3 5 6v5c0 4.5 3 7.8 7 9 4-1.2 7-4.5 7-9V6l-7-3Zm-3 8 2.2 2.2L15 9.5M8.5 16h7"},void 0,!1),pitr:(0,i.jsxDEV)("path",{d:"M12 21a9 9 0 1 0-9-9M12 7.5V12l3 2M3 12l-2-2m2 2 2-2"},void 0,!1),queues:(0,i.jsxDEV)("path",{d:"M4 6h16M4 10h16M4 14h10M4 18h10m4-2 3 2-3 2v-4Z"},void 0,!1),realtime:(0,i.jsxDEV)("path",{d:"M5 12a7 7 0 0 1 14 0M8 12a4 4 0 0 1 8 0M12 12v8m0-8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"},void 0,!1),rls:(0,i.jsxDEV)("path",{d:"M12 3 5 6v5c0 4.5 3 7.8 7 9 4-1.2 7-4.5 7-9V6l-7-3ZM8.5 10h7M8.5 13h7"},void 0,!1),schedule:(0,i.jsxDEV)("path",{d:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm0-13.5V12l4 2"},void 0,!1),schema:(0,i.jsxDEV)("path",{d:"M4 5h16v14H4V5Zm0 5h16M10 10v9M4 14.5h16"},void 0,!1),sql:(0,i.jsxDEV)("path",{d:"M4 5h16v14H4V5Zm3 4 3 3-3 3m6 0h4"},void 0,!1),storageRules:(0,i.jsxDEV)("path",{d:"M7 10V7a5 5 0 0 1 10 0v3m-11 0h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1Zm6 4v2"},void 0,!1),security:(0,i.jsxDEV)("path",{d:"M12 3 5 6v5c0 4.5 3 7.8 7 9 4-1.2 7-4.5 7-9V6l-7-3Zm-2.5 8.5 2 2 4-4"},void 0,!1),settings:(0,i.jsxDEV)("path",{d:"M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm7.4-3a7.4 7.4 0 0 0-.1-1.2l2-1.6-2-3.4-2.4 1a7.3 7.3 0 0 0-2-1.2l-.4-2.6H10.5l-.4 2.6a7.3 7.3 0 0 0-2 1.2l-2.4-1-2 3.4 2 1.6a7.4 7.4 0 0 0 0 2.4l-2 1.6 2 3.4 2.4-1a7.3 7.3 0 0 0 2 1.2l.4 2.6h3.6l.4-2.6a7.3 7.3 0 0 0 2-1.2l2.4 1 2-3.4-2-1.6a7.4 7.4 0 0 0 .1-1.2Z"},void 0,!1),users:(0,i.jsxDEV)("path",{d:"M16 20v-2a4 4 0 0 0-4-4H7a4 4 0 0 0-4 4v2M9.5 10a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Zm11.5 10v-2a4 4 0 0 0-3-3.85M16 3.13A4 4 0 0 1 16 11"},void 0,!1),vectors:(0,i.jsxDEV)("path",{d:"M4 7l8-4 8 4-8 4-8-4Zm0 5 8 4 8-4M4 17l8 4 8-4"},void 0,!1),workflows:(0,i.jsxDEV)("path",{d:"M5 5h5v5H5V5Zm9 9h5v5h-5v-5ZM7.5 10v2a2 2 0 0 0 2 2H14m2.5-4V8a2 2 0 0 0-2-2H10"},void 0,!1)},Ka=[{key:"overview",tabs:["home","dashboards"]},{key:"database",tabs:["data","sql","schema","migrations","vectors","pitr","export"]},{key:"functions",tabs:["functions","api","workflows","queues","containers"]},{key:"auth",tabs:["users","organizations","authSessions","authConfig"]},{key:"storage",tabs:["files","storageRules","kv"]},{key:"observability",tabs:["logs","audit","realtime","fanout","metrics","analytics","health"]},{key:"advisors",tabs:["security","rls","permissions","insights"]},{key:"operations",tabs:["schedule","mail","drains","payments","flags"]},{key:"settings",tabs:["settings"]}],Md={analytics:"analytics",authConfig:"auth",authSessions:"auth",containers:"containers",files:"storage",flags:"flags",kv:"kv",mail:"mail",organizations:"auth",payments:"payments",queues:"queues",schedule:"scheduler",storageRules:"storage",users:"auth",vectors:"vectors",workflows:"workflows"},Qa=a((t,e)=>{let o=Md[t];return o===void 0||e[o]},"isTabVisible"),Fr=a(t=>{let e=(0,B.c)(2),{tab:o}=t,s=Od[o],r;return e[0]!==s?(r=(0,i.jsxDEV)("svg",{"aria-hidden":"true",className:"size-4 shrink-0",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:s},void 0,!1),e[0]=s,e[1]=r):r=e[1],r},"TabIcon"),di=["home","data","sql","functions","api","workflows","queues","containers","schema","migrations","vectors","export","pitr","users","organizations","authSessions","authConfig","files","storageRules","kv","dashboards","metrics","analytics","health","security","rls","permissions","insights","logs","realtime","mail","payments","audit","schedule","drains","flags","settings"],Id=new Set(["api","data","sql"]),Dd=a(t=>{let e=t.split("/").findLast(Boolean)??"";return di.includes(e)?e:"home"},"tabFromPathname"),_d=a(t=>{let e=(0,B.c)(19),{chrome:o,connected:s}=t,r=ie(),n;e[0]!==r?(n=r("admin token"),e[0]=r,e[1]=n):n=e[1];let l;e[2]!==n?(l=(0,i.jsxDEV)("label",{className:"text-xs font-medium text-foreground",htmlFor:"dash-app-token",children:n},void 0,!1),e[2]=n,e[3]=l):l=e[3];let c;e[4]!==o.onTokenChange||e[5]!==o.token?(c=(0,i.jsxDEV)(ln,{className:"h-8","data-testid":"dash-app-token",id:"dash-app-token",onChange:o.onTokenChange,placeholder:"LUNORA_ADMIN_TOKEN",type:"password",value:o.token},void 0,!1),e[4]=o.onTokenChange,e[5]=o.token,e[6]=c):c=e[6];let p;e[7]!==s||e[8]!==r?(p=s&&(0,i.jsxDEV)("p",{className:"flex items-start gap-1.5 text-[11px] text-muted-foreground","data-testid":"dash-app-token-warning",role:"note",children:[(0,i.jsxDEV)("span",{"aria-hidden":"true",className:"text-warning",children:"\u26A0"},void 0,!1),r("Token rides the WebSocket URL \u2014 it can surface in browser DevTools and server logs. Use a dev-only token.")]},void 0,!0),e[7]=s,e[8]=r,e[9]=p):p=e[9];let d;e[10]!==o.clearToken||e[11]!==s||e[12]!==r?(d=s&&(0,i.jsxDEV)("button",{className:"self-start rounded-md border border-border px-2.5 py-1 text-xs font-medium outline-none transition-colors hover:bg-accent focus-visible:bg-accent","data-testid":"dash-app-clear-token",onClick:o.clearToken,type:"button",children:r("Clear")},void 0,!1),e[10]=o.clearToken,e[11]=s,e[12]=r,e[13]=d):d=e[13];let u;return e[14]!==l||e[15]!==c||e[16]!==p||e[17]!==d?(u=(0,i.jsxDEV)("div",{className:"flex flex-col gap-2",children:[l,c,p,d]},void 0,!0),e[14]=l,e[15]=c,e[16]=p,e[17]=d,e[18]=u):u=e[18],u},"ConnectPopoverContent"),Ad=a(t=>{let e=(0,B.c)(25),{current:o,group:s,groupLabel:r,selectTab:n,tabDescription:l,tabLabel:c}=t,p=s.tabs.includes(o)?"page":void 0,d=r[s.key],u=s.tabs[0],g;e[0]!==u?(g=(0,i.jsxDEV)(Fr,{tab:u},void 0,!1),e[0]=u,e[1]=g):g=e[1];let m;e[2]!==p||e[3]!==d||e[4]!==g?(m=(0,i.jsxDEV)(ri,{"aria-current":p,"aria-label":d,className:"mx-auto flex size-8 items-center justify-center rounded-md text-muted-foreground outline-none transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent data-[popup-open]:bg-sidebar-accent data-[popup-open]:text-sidebar-accent-foreground data-[popup-open]:shadow-xs aria-[current=page]:bg-sidebar-accent aria-[current=page]:text-sidebar-accent-foreground aria-[current=page]:shadow-xs",delay:120,openOnHover:!0,children:g},void 0,!1),e[2]=p,e[3]=d,e[4]=g,e[5]=m):m=e[5];let h=r[s.key],f;e[6]!==h?(f=(0,i.jsxDEV)("div",{className:"px-2 py-1.5 text-[11px] font-medium tracking-wider text-muted-foreground uppercase",children:h},void 0,!1),e[6]=h,e[7]=f):f=e[7];let v;if(e[8]!==o||e[9]!==s.tabs||e[10]!==n||e[11]!==l||e[12]!==c){let R;e[14]!==o||e[15]!==n||e[16]!==l||e[17]!==c?(R=a(P=>(0,i.jsxDEV)("button",{"aria-current":o===P?"page":void 0,className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start text-[13px] text-foreground outline-none transition-colors hover:bg-accent focus-visible:bg-accent aria-[current=page]:bg-accent aria-[current=page]:font-medium [&_svg]:opacity-70 aria-[current=page]:[&_svg]:opacity-100","data-tab":P,"data-testid":`dash-tab-${P}`,onClick:n,title:l[P],type:"button",children:[(0,i.jsxDEV)(Fr,{tab:P},void 0,!1),(0,i.jsxDEV)("span",{children:c[P]},void 0,!1)]},P,!0),"t92"),e[14]=o,e[15]=n,e[16]=l,e[17]=c,e[18]=R):R=e[18],v=s.tabs.map(R),e[8]=o,e[9]=s.tabs,e[10]=n,e[11]=l,e[12]=c,e[13]=v}else v=e[13];let x;e[19]!==f||e[20]!==v?(x=(0,i.jsxDEV)(ni,{align:"start",className:"w-56 p-1",side:"right",sideOffset:8,children:[f,v]},void 0,!0),e[19]=f,e[20]=v,e[21]=x):x=e[21];let b;return e[22]!==m||e[23]!==x?(b=(0,i.jsxDEV)(si,{children:[m,x]},void 0,!0),e[22]=m,e[23]=x,e[24]=b):b=e[24],b},"CollapsedGroupNav"),Vd=a(t=>{let e=(0,B.c)(45),{chrome:o,collapsed:s,connected:r}=t,n=ie();if(o===null){let P;e[0]!==n?(P=n("Admin"),e[0]=n,e[1]=P):P=e[1];let N;e[2]===Symbol.for("react.memo_cache_sentinel")?(N=(0,i.jsxDEV)("span",{className:"flex size-8 items-center justify-center rounded-full bg-sidebar-accent text-[11px] font-medium",children:"C"},void 0,!1),e[2]=N):N=e[2];let S;e[3]!==n?(S=n("Admin"),e[3]=n,e[4]=S):S=e[4];let E;e[5]!==S?(E=(0,i.jsxDEV)("span",{className:"truncate text-[13px] font-medium",children:S},void 0,!1),e[5]=S,e[6]=E):E=e[6];let T;e[7]!==n?(T=n("Studio"),e[7]=n,e[8]=T):T=e[8];let k;e[9]!==T?(k=(0,i.jsxDEV)("span",{className:"truncate text-[11px] text-muted-foreground",children:T},void 0,!1),e[9]=T,e[10]=k):k=e[10];let w;e[11]!==E||e[12]!==k?(w=(0,i.jsxDEV)("span",{className:"grid flex-1 text-start leading-tight",children:[E,k]},void 0,!0),e[11]=E,e[12]=k,e[13]=w):w=e[13];let O;return e[14]!==P||e[15]!==w?(O=(0,i.jsxDEV)(ii,{className:"data-active:bg-transparent",size:"lg",tooltip:P,children:[N,w]},void 0,!0),e[14]=P,e[15]=w,e[16]=O):O=e[16],O}let l=s?"mx-auto size-8 justify-center":"w-full p-2",c;e[17]!==l?(c=U("flex items-center gap-2 rounded-md text-start outline-none transition-colors hover:bg-sidebar-accent focus-visible:bg-sidebar-accent",l),e[17]=l,e[18]=c):c=e[18];let p;e[19]!==r||e[20]!==n?(p=n(r?"Connected":"Not connected"),e[19]=r,e[20]=n,e[21]=p):p=e[21];let d=r?"bg-success":"bg-muted-foreground/50",u;e[22]!==d?(u=U("absolute -end-0.5 -bottom-0.5 size-2.5 rounded-full border-2 border-sidebar",d),e[22]=d,e[23]=u):u=e[23];let g;e[24]!==u?(g=(0,i.jsxDEV)("span",{className:"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-sidebar-accent text-[11px] font-medium",children:["C",(0,i.jsxDEV)("span",{"aria-hidden":"true",className:u},void 0,!1)]},void 0,!0),e[24]=u,e[25]=g):g=e[25];let m;e[26]!==s||e[27]!==r||e[28]!==n?(m=!s&&(0,i.jsxDEV)(i.Fragment,{children:[(0,i.jsxDEV)("span",{className:"grid flex-1 text-start leading-tight",children:[(0,i.jsxDEV)("span",{className:"truncate text-[13px] font-medium",children:n("Admin")},void 0,!1),(0,i.jsxDEV)("span",{className:"truncate text-[11px] text-muted-foreground",children:n(r?"Connected":"Not connected")},void 0,!1)]},void 0,!0),(0,i.jsxDEV)("svg",{"aria-hidden":"true",className:"size-4 text-muted-foreground",fill:"none",stroke:"currentColor",strokeWidth:1.7,viewBox:"0 0 24 24",children:(0,i.jsxDEV)("path",{d:"m8 9 4-4 4 4M8 15l4 4 4-4",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1)},void 0,!1)]},void 0,!0),e[26]=s,e[27]=r,e[28]=n,e[29]=m):m=e[29];let h;e[30]!==c||e[31]!==p||e[32]!==g||e[33]!==m?(h=(0,i.jsxDEV)(ri,{className:c,"data-testid":"dash-app-connect",title:p,children:[g,m]},void 0,!0),e[30]=c,e[31]=p,e[32]=g,e[33]=m,e[34]=h):h=e[34];let f=s?"end":"start",v=s?"right":"top",x;e[35]!==o||e[36]!==r?(x=(0,i.jsxDEV)(_d,{chrome:o,connected:r},void 0,!1),e[35]=o,e[36]=r,e[37]=x):x=e[37];let b;e[38]!==v||e[39]!==x||e[40]!==f?(b=(0,i.jsxDEV)(ni,{align:f,keepMounted:!0,side:v,children:x},void 0,!1),e[38]=v,e[39]=x,e[40]=f,e[41]=b):b=e[41];let R;return e[42]!==b||e[43]!==h?(R=(0,i.jsxDEV)(si,{children:[h,b]},void 0,!0),e[42]=b,e[43]=h,e[44]=R):R=e[44],R},"SidebarFooterProfile"),Bd=a(t=>{let e=(0,B.c)(28),{chrome:o,connected:s,current:r,groupLabel:n,groups:l,selectTab:c,tabDescription:p,tabLabel:d}=t,u=ie(),{state:g}=Vs(),m=g==="collapsed",h=m&&"justify-center px-0",f;e[0]!==h?(f=U("flex items-center gap-2.5 px-1.5 py-1",h),e[0]=h,e[1]=f):f=e[1];let v;e[2]===Symbol.for("react.memo_cache_sentinel")?(v=(0,i.jsxDEV)(pl,{className:"size-9 shrink-0 text-foreground"},void 0,!1),e[2]=v):v=e[2];let x;e[3]!==m||e[4]!==s||e[5]!==u?(x=!m&&(0,i.jsxDEV)(i.Fragment,{children:[(0,i.jsxDEV)("span",{className:"grid flex-1 leading-tight",children:[(0,i.jsxDEV)("span",{className:"truncate text-sm font-semibold text-foreground",children:"lunora"},void 0,!1),(0,i.jsxDEV)("span",{className:"truncate text-[11px] text-muted-foreground",children:u("Studio")},void 0,!1)]},void 0,!0),(0,i.jsxDEV)(go,{className:"px-1.5 text-[10px] tracking-wider uppercase",variant:"secondary",children:u(s?"Live":"Local")},void 0,!1)]},void 0,!0),e[3]=m,e[4]=s,e[5]=u,e[6]=x):x=e[6];let b;e[7]!==f||e[8]!==x?(b=(0,i.jsxDEV)(Fl,{children:(0,i.jsxDEV)("div",{className:f,children:[v,x]},void 0,!0)},void 0,!1),e[7]=f,e[8]=x,e[9]=b):b=e[9];let R;e[10]!==m||e[11]!==r||e[12]!==n||e[13]!==l||e[14]!==c||e[15]!==p||e[16]!==d?(R=m?l.map(E=>(0,i.jsxDEV)(Ad,{current:r,group:E,groupLabel:n,selectTab:c,tabDescription:p,tabLabel:d},E.key,!1)):l.map(E=>(0,i.jsxDEV)(jl,{children:[(0,i.jsxDEV)(zl,{className:"text-[11px] font-medium tracking-wider uppercase",children:n[E.key]},void 0,!1),(0,i.jsxDEV)(Ul,{children:(0,i.jsxDEV)(qa,{children:E.tabs.map(T=>(0,i.jsxDEV)(Ga,{children:(0,i.jsxDEV)(ii,{className:"data-active:text-foreground dark:data-active:text-royal-amethyst data-active:shadow-[inset_2px_0_0_0_var(--royal-amethyst)]","data-tab":T,"data-testid":`dash-tab-${T}`,isActive:r===T,onClick:c,title:p[T],tooltip:p[T],children:[(0,i.jsxDEV)(Fr,{tab:T},void 0,!1),(0,i.jsxDEV)("span",{children:d[T]},void 0,!1)]},void 0,!0)},T,!1))},void 0,!1)},void 0,!1)]},E.key,!0)),e[10]=m,e[11]=r,e[12]=n,e[13]=l,e[14]=c,e[15]=p,e[16]=d,e[17]=R):R=e[17];let P;e[18]!==R?(P=(0,i.jsxDEV)($l,{children:R},void 0,!1),e[18]=R,e[19]=P):P=e[19];let N;e[20]!==o||e[21]!==m||e[22]!==s?(N=(0,i.jsxDEV)(Hl,{children:(0,i.jsxDEV)(qa,{children:(0,i.jsxDEV)(Ga,{children:(0,i.jsxDEV)(Vd,{chrome:o,collapsed:m,connected:s},void 0,!1)},void 0,!1)},void 0,!1)},void 0,!1),e[20]=o,e[21]=m,e[22]=s,e[23]=N):N=e[23];let S;return e[24]!==b||e[25]!==P||e[26]!==N?(S=(0,i.jsxDEV)(Vl,{collapsible:"icon",variant:"inset",children:[b,P,N]},void 0,!0),e[24]=b,e[25]=P,e[26]=N,e[27]=S):S=e[27],S},"StudioSidebar"),ci=a(()=>{let t=(0,B.c)(1),e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,i.jsxDEV)("div",{className:"flex flex-col gap-4","data-testid":"dash-pending",children:[(0,i.jsxDEV)("div",{className:"flex items-center gap-2",children:[(0,i.jsxDEV)(ls,{className:"h-8 w-40"},void 0,!1),(0,i.jsxDEV)(ls,{className:"h-8 w-24"},void 0,!1)]},void 0,!0),(0,i.jsxDEV)(ls,{className:"h-72 w-full"},void 0,!1)]},void 0,!0),t[0]=e):e=t[0],e},"RoutePending"),Ld=a(()=>{let t=(0,B.c)(294),e=ie(),o=pt(),s;t[0]===Symbol.for("react.memo_cache_sentinel")?(s={select:zd},t[0]=s):s=t[0];let r=Gr(s),n,l;t[1]!==r?(n=Dd(r),l=Id.has(n),t[1]=r,t[2]=n,t[3]=l):(n=t[2],l=t[3]);let c=l,p=_r(),d;t[4]!==p?(d=a(at=>({...at,tabs:at.tabs.filter(Bo=>Qa(Bo,p))}),"t2"),t[4]=p,t[5]=d):d=t[5];let u=Ka.map(d).filter(Ud),g,m;t[6]!==n||t[7]!==p||t[8]!==o?(g=a(()=>{Qa(n,p)||$e(o({replace:!0,to:"/home"}))},"t3"),m=[n,p,o],t[6]=n,t[7]=p,t[8]=o,t[9]=g,t[10]=m):(g=t[9],m=t[10]),(0,q.useEffect)(g,m);let h;t[11]!==e?(h=e("Analytics"),t[11]=e,t[12]=h):h=t[12];let f;t[13]!==e?(f=e("API"),t[13]=e,t[14]=f):f=t[14];let v;t[15]!==e?(v=e("Audit"),t[15]=e,t[16]=v):v=t[16];let x;t[17]!==e?(x=e("Configuration"),t[17]=e,t[18]=x):x=t[18];let b;t[19]!==e?(b=e("Sessions"),t[19]=e,t[20]=b):b=t[20];let R;t[21]!==e?(R=e("Containers"),t[21]=e,t[22]=R):R=t[22];let P;t[23]!==e?(P=e("Dashboards"),t[23]=e,t[24]=P):P=t[24];let N;t[25]!==e?(N=e("Data"),t[25]=e,t[26]=N):N=t[26];let S;t[27]!==e?(S=e("Log drains"),t[27]=e,t[28]=S):S=t[28];let E;t[29]!==e?(E=e("Export / Import"),t[29]=e,t[30]=E):E=t[30];let T;t[31]!==e?(T=e("Fan-out"),t[31]=e,t[32]=T):T=t[32];let k;t[33]!==e?(k=e("Files"),t[33]=e,t[34]=k):k=t[34];let w;t[35]!==e?(w=e("Flags"),t[35]=e,t[36]=w):w=t[36];let O;t[37]!==e?(O=e("Functions"),t[37]=e,t[38]=O):O=t[38];let V;t[39]!==e?(V=e("Health"),t[39]=e,t[40]=V):V=t[40];let W;t[41]!==e?(W=e("Home"),t[41]=e,t[42]=W):W=t[42];let _;t[43]!==e?(_=e("Performance"),t[43]=e,t[44]=_):_=t[44];let H;t[45]!==e?(H=e("KV"),t[45]=e,t[46]=H):H=t[46];let $;t[47]!==e?($=e("Logs"),t[47]=e,t[48]=$):$=t[48];let Z;t[49]!==e?(Z=e("Metrics"),t[49]=e,t[50]=Z):Z=t[50];let K;t[51]!==e?(K=e("Migrations"),t[51]=e,t[52]=K):K=t[52];let D;t[53]!==e?(D=e("Organizations"),t[53]=e,t[54]=D):D=t[54];let I;t[55]!==e?(I=e("Time Travel"),t[55]=e,t[56]=I):I=t[56];let z;t[57]!==e?(z=e("Mail"),t[57]=e,t[58]=z):z=t[58];let te;t[59]!==e?(te=e("Payments"),t[59]=e,t[60]=te):te=t[60];let re;t[61]!==e?(re=e("Permissions"),t[61]=e,t[62]=re):re=t[62];let ne;t[63]!==e?(ne=e("Queues"),t[63]=e,t[64]=ne):ne=t[64];let J;t[65]!==e?(J=e("Realtime"),t[65]=e,t[66]=J):J=t[66];let ee;t[67]!==e?(ee=e("RLS Policies"),t[67]=e,t[68]=ee):ee=t[68];let ae;t[69]!==e?(ae=e("Scheduled"),t[69]=e,t[70]=ae):ae=t[70];let Be;t[71]!==e?(Be=e("Schema"),t[71]=e,t[72]=Be):Be=t[72];let me;t[73]!==e?(me=e("Security"),t[73]=e,t[74]=me):me=t[74];let he;t[75]!==e?(he=e("Settings"),t[75]=e,t[76]=he):he=t[76];let ve;t[77]!==e?(ve=e("SQL editor"),t[77]=e,t[78]=ve):ve=t[78];let Le;t[79]!==e?(Le=e("Access Rules"),t[79]=e,t[80]=Le):Le=t[80];let L;t[81]!==e?(L=e("Users"),t[81]=e,t[82]=L):L=t[82];let Q;t[83]!==e?(Q=e("Vectors"),t[83]=e,t[84]=Q):Q=t[84];let X;t[85]!==e?(X=e("Workflows"),t[85]=e,t[86]=X):X=t[86];let xe;t[87]!==R||t[88]!==P||t[89]!==N||t[90]!==S||t[91]!==E||t[92]!==T||t[93]!==k||t[94]!==w||t[95]!==O||t[96]!==V||t[97]!==W||t[98]!==_||t[99]!==H||t[100]!==$||t[101]!==Z||t[102]!==K||t[103]!==D||t[104]!==I||t[105]!==z||t[106]!==te||t[107]!==re||t[108]!==ne||t[109]!==J||t[110]!==ee||t[111]!==ae||t[112]!==Be||t[113]!==me||t[114]!==he||t[115]!==ve||t[116]!==Le||t[117]!==L||t[118]!==Q||t[119]!==X||t[120]!==h||t[121]!==f||t[122]!==v||t[123]!==x||t[124]!==b?(xe={analytics:h,api:f,audit:v,authConfig:x,authSessions:b,containers:R,dashboards:P,data:N,drains:S,export:E,fanout:T,files:k,flags:w,functions:O,health:V,home:W,insights:_,kv:H,logs:$,metrics:Z,migrations:K,organizations:D,pitr:I,mail:z,payments:te,permissions:re,queues:ne,realtime:J,rls:ee,schedule:ae,schema:Be,security:me,settings:he,sql:ve,storageRules:Le,users:L,vectors:Q,workflows:X},t[87]=R,t[88]=P,t[89]=N,t[90]=S,t[91]=E,t[92]=T,t[93]=k,t[94]=w,t[95]=O,t[96]=V,t[97]=W,t[98]=_,t[99]=H,t[100]=$,t[101]=Z,t[102]=K,t[103]=D,t[104]=I,t[105]=z,t[106]=te,t[107]=re,t[108]=ne,t[109]=J,t[110]=ee,t[111]=ae,t[112]=Be,t[113]=me,t[114]=he,t[115]=ve,t[116]=Le,t[117]=L,t[118]=Q,t[119]=X,t[120]=h,t[121]=f,t[122]=v,t[123]=x,t[124]=b,t[125]=xe):xe=t[125];let se=xe,Fe={advisors:e("Advisors"),auth:e("Auth"),database:e("Database"),functions:e("Functions"),observability:e("Observability"),operations:e("Operations"),overview:e("Overview"),settings:e("Settings"),storage:e("Storage")},ce;t[126]!==e?(ce=e("Usage and latency from Analytics Engine \u2014 request volume, p50/p95, and hot shards."),t[126]=e,t[127]=ce):ce=t[127];let pe;t[128]!==e?(pe=e("Interactive OpenAPI reference and copy-paste snippets for your functions."),t[128]=e,t[129]=pe):pe=t[129];let Pe;t[130]!==e?(Pe=e("A durable log of admin state-changing operations."),t[130]=e,t[131]=Pe):Pe=t[131];let Re;t[132]!==e?(Re=e("Enabled plugins and session config (read-only)."),t[132]=e,t[133]=Re):Re=t[133];let Ce;t[134]!==e?(Ce=e("Browse and revoke active sessions across all users."),t[134]=e,t[135]=Ce):Ce=t[135];let Se;t[136]!==e?(Se=e("Live Cloudflare Containers \u2014 current lifecycle state per container from the log stream."),t[136]=e,t[137]=Se):Se=t[137];let Ne;t[138]!==e?(Ne=e("Chart widgets backed by saved read-only SQL queries."),t[138]=e,t[139]=Ne):Ne=t[139];let Ee;t[140]!==e?(Ee=e("Browse and edit rows across your shard and global tables."),t[140]=e,t[141]=Ee):Ee=t[141];let Te;t[142]!==e?(Te=e("Forward logs to Logpush, Tail Workers, or a webhook collector."),t[142]=e,t[143]=Te):Te=t[143];let we;t[144]!==e?(we=e("Export a shard to NDJSON, or import rows from it."),t[144]=e,t[145]=we):we=t[145];let ke;t[146]!==e?(ke=e("Realtime fan-out cost and per-topic subscriber counts for this shard."),t[146]=e,t[147]=ke):ke=t[147];let Oe;t[148]!==e?(Oe=e("Browse objects in your R2 storage buckets."),t[148]=e,t[149]=Oe):Oe=t[149];let Me;t[150]!==e?(Me=e("Inspect feature flags and their live evaluation under a targeting context."),t[150]=e,t[151]=Me):Me=t[151];let ze;t[152]!==e?(ze=e("Run registered queries, mutations, and actions."),t[152]=e,t[153]=ze):ze=t[153];let Ue;t[154]!==e?(Ue=e("At-a-glance connection, error, and shard signals."),t[154]=e,t[155]=Ue):Ue=t[155];let We;t[156]!==e?(We=e("Connection, health, and advisor summary for your deployment."),t[156]=e,t[157]=We):We=t[157];let Ze;t[158]!==e?(Ze=e("Surface slow functions, error spikes, and cache problems."),t[158]=e,t[159]=Ze):Ze=t[159];let qe;t[160]!==e?(qe=e("A live stream of recent function logs."),t[160]=e,t[161]=qe):qe=t[161];let Ge;t[162]!==e?(Ge=e("Per-shard health and aggregate metrics."),t[162]=e,t[163]=Ge):Ge=t[163];let nt;t[164]!==e?(nt=e("Review migration status and run them."),t[164]=e,t[165]=nt):nt=t[165];let Ke;t[166]!==e?(Ke=e("Browse and manage organizations, members, and invitations."),t[166]=e,t[167]=Ke):Ke=t[167];let ge;t[168]!==e?(ge=e("Restore a shard to a point in the last 30 days."),t[168]=e,t[169]=ge):ge=t[169];let Qe;t[170]!==e?(Qe=e("Email your app sent, captured in dev."),t[170]=e,t[171]=Qe):Qe=t[171];let Ye;t[172]!==e?(Ye=e("Synced customers, subscriptions, and webhook events."),t[172]=e,t[173]=Ye):Ye=t[173];let Ie;t[174]!==e?(Ie=e("Inspect access policies per table, and probe a function as any identity."),t[174]=e,t[175]=Ie):Ie=t[175];let Je;t[176]!==e?(Je=e("Inspect declared Cloudflare Queues \u2014 their producer bindings, consumer mode, and dead-letter queue."),t[176]=e,t[177]=Je):Je=t[177];let De;t[178]!==e?(De=e("Active WebSocket subscriptions on this shard."),t[178]=e,t[179]=De):De=t[179];let Xe;t[180]!==e?(Xe=e("Inspect row-level-security policies and roles, per table."),t[180]=e,t[181]=Xe):Xe=t[181];let _e;t[182]!==e?(_e=e("Inspect and cancel scheduled jobs."),t[182]=e,t[183]=_e):_e=t[183];let et;t[184]!==e?(et=e("Inspect each table and its columns."),t[184]=e,t[185]=et):et=t[185];let Ae;t[186]!==e?(Ae=e("Review admin gates, credentials, and log redaction."),t[186]=e,t[187]=Ae):Ae=t[187];let Et;t[188]!==e?(Et=e("Read-only deployment config \u2014 vars, secrets, and bindings."),t[188]=e,t[189]=Et):Et=t[189];let Tt;t[190]!==e?(Tt=e("Run read-only SQL against a shard."),t[190]=e,t[191]=Tt):Tt=t[191];let wt;t[192]!==e?(wt=e("Browse and edit key-value pairs in your Workers KV namespaces."),t[192]=e,t[193]=wt):wt=t[193];let kt;t[194]!==e?(kt=e("Inspect storage access rules \u2014 per bucket, operation, and key prefix."),t[194]=e,t[195]=kt):kt=t[195];let Ot;t[196]!==e?(Ot=e("Manage auth users \u2014 roles, bans, sessions, and identity."),t[196]=e,t[197]=Ot):Ot=t[197];let Mt;t[198]!==e?(Mt=e("Browse Vectorize indexes and run similarity searches."),t[198]=e,t[199]=Mt):Mt=t[199];let It;t[200]!==e?(It=e("Inspect declared Cloudflare Workflows and their bindings."),t[200]=e,t[201]=It):It=t[201];let No;t[202]!==ce||t[203]!==pe||t[204]!==Pe||t[205]!==Re||t[206]!==Ce||t[207]!==Se||t[208]!==Ne||t[209]!==Ee||t[210]!==Te||t[211]!==we||t[212]!==ke||t[213]!==Oe||t[214]!==Me||t[215]!==ze||t[216]!==Ue||t[217]!==We||t[218]!==Ze||t[219]!==qe||t[220]!==Ge||t[221]!==nt||t[222]!==Ke||t[223]!==ge||t[224]!==Qe||t[225]!==Ye||t[226]!==Ie||t[227]!==Je||t[228]!==De||t[229]!==Xe||t[230]!==_e||t[231]!==et||t[232]!==Ae||t[233]!==Et||t[234]!==Tt||t[235]!==wt||t[236]!==kt||t[237]!==Ot||t[238]!==Mt||t[239]!==It?(No={analytics:ce,api:pe,audit:Pe,authConfig:Re,authSessions:Ce,containers:Se,dashboards:Ne,data:Ee,drains:Te,export:we,fanout:ke,files:Oe,flags:Me,functions:ze,health:Ue,home:We,insights:Ze,logs:qe,metrics:Ge,migrations:nt,organizations:Ke,pitr:ge,mail:Qe,payments:Ye,permissions:Ie,queues:Je,realtime:De,rls:Xe,schedule:_e,schema:et,security:Ae,settings:Et,sql:Tt,kv:wt,storageRules:kt,users:Ot,vectors:Mt,workflows:It},t[202]=ce,t[203]=pe,t[204]=Pe,t[205]=Re,t[206]=Ce,t[207]=Se,t[208]=Ne,t[209]=Ee,t[210]=Te,t[211]=we,t[212]=ke,t[213]=Oe,t[214]=Me,t[215]=ze,t[216]=Ue,t[217]=We,t[218]=Ze,t[219]=qe,t[220]=Ge,t[221]=nt,t[222]=Ke,t[223]=ge,t[224]=Qe,t[225]=Ye,t[226]=Ie,t[227]=Je,t[228]=De,t[229]=Xe,t[230]=_e,t[231]=et,t[232]=Ae,t[233]=Et,t[234]=Tt,t[235]=wt,t[236]=kt,t[237]=Ot,t[238]=Mt,t[239]=It,t[240]=No):No=t[240];let pi=No,Eo;t[241]!==o?(Eo=a(at=>{$e(o({to:`/${at.currentTarget.dataset.tab??""}`}))},"t83"),t[241]=o,t[242]=Eo):Eo=t[242];let ui=Eo,To,wo;t[243]!==n||t[244]!==se?(To=a(()=>{typeof document<"u"&&(document.title=`${se[n]} \xB7 lunora`)},"t84"),wo=[n,se],t[243]=n,t[244]=se,t[245]=To,t[246]=wo):(To=t[245],wo=t[246]),(0,q.useEffect)(To,wo);let fi=u.find(at=>at.tabs.includes(n))??Ka[0],Bs=u.flatMap(at=>at.tabs.map(Bo=>({group:Fe[at.key],label:se[Bo],to:`/${Bo}`}))),Dt=(0,q.use)(li),mi=Dt!==null&&Dt.token!=="",ko;t[247]!==Bs?(ko=(0,i.jsxDEV)(Wa,{items:Bs},void 0,!1),t[247]=Bs,t[248]=ko):ko=t[248];let Oo;t[249]===Symbol.for("react.memo_cache_sentinel")?(Oo=(0,i.jsxDEV)(Bl,{className:"-ms-1"},void 0,!1),t[249]=Oo):Oo=t[249];let _t;t[250]!==e?(_t=e("Breadcrumb"),t[250]=e,t[251]=_t):_t=t[251];let Ls=Fe[fi.key],At;t[252]!==Ls?(At=(0,i.jsxDEV)("span",{className:"text-muted-foreground",children:Ls},void 0,!1),t[252]=Ls,t[253]=At):At=t[253];let Mo;t[254]===Symbol.for("react.memo_cache_sentinel")?(Mo=(0,i.jsxDEV)("svg",{"aria-hidden":"true",className:"size-3.5 text-muted-foreground/60",fill:"none",stroke:"currentColor",strokeWidth:1.7,viewBox:"0 0 24 24",children:(0,i.jsxDEV)("path",{d:"m9 6 6 6-6 6",strokeLinecap:"round",strokeLinejoin:"round"},void 0,!1)},void 0,!1),t[254]=Mo):Mo=t[254];let Fs=se[n],Vt;t[255]!==Fs?(Vt=(0,i.jsxDEV)("span",{className:"font-medium text-foreground",children:Fs},void 0,!1),t[255]=Fs,t[256]=Vt):Vt=t[256];let Bt;t[257]!==_t||t[258]!==At||t[259]!==Vt?(Bt=(0,i.jsxDEV)("nav",{"aria-label":_t,className:"flex items-center gap-1.5 text-[13px]",children:[At,Mo,Vt]},void 0,!0),t[257]=_t,t[258]=At,t[259]=Vt,t[260]=Bt):Bt=t[260];let Io;t[261]===Symbol.for("react.memo_cache_sentinel")?(Io=(0,i.jsxDEV)("svg",{"aria-hidden":"true",className:"size-3.5",fill:"none",stroke:"currentColor",strokeWidth:1.8,viewBox:"0 0 24 24",children:[(0,i.jsxDEV)("circle",{cx:"11",cy:"11",r:"7"},void 0,!1),(0,i.jsxDEV)("path",{d:"m21 21-4.3-4.3",strokeLinecap:"round"},void 0,!1)]},void 0,!0),t[261]=Io):Io=t[261];let Lt;t[262]!==e?(Lt=e("Search\u2026"),t[262]=e,t[263]=Lt):Lt=t[263];let Do;t[264]===Symbol.for("react.memo_cache_sentinel")?(Do=(0,i.jsxDEV)("kbd",{className:"ms-auto rounded border border-border bg-background px-1 font-sans text-[10px] text-muted-foreground",children:"\u2318K"},void 0,!1),t[264]=Do):Do=t[264];let Ft;t[265]!==Lt?(Ft=(0,i.jsxDEV)("button",{className:"mx-auto hidden h-8 w-72 items-center gap-2 rounded-lg border border-border bg-muted/40 px-3 text-xs text-muted-foreground transition-colors hover:bg-muted md:flex","data-testid":"dash-app-search",onClick:Ua,type:"button",children:[Io,Lt,Do]},void 0,!0),t[265]=Lt,t[266]=Ft):Ft=t[266];let _o;t[267]===Symbol.for("react.memo_cache_sentinel")?(_o=(0,i.jsxDEV)("div",{className:"ms-auto flex items-center gap-1.5 md:ms-0",children:(0,i.jsxDEV)(yl,{},void 0,!1)},void 0,!1),t[267]=_o):_o=t[267];let Ht;t[268]!==Bt||t[269]!==Ft?(Ht=(0,i.jsxDEV)("header",{className:"flex h-11 shrink-0 items-center gap-2 border-b border-border px-4","data-testid":"dash-app-header",children:[Oo,Bt,Ft,_o]},void 0,!0),t[268]=Bt,t[269]=Ft,t[270]=Ht):Ht=t[270];let $t;t[271]!==Dt?.rulesInstalled?($t=Dt?.rulesInstalled===!1&&(0,i.jsxDEV)(ml,{},void 0,!1),t[271]=Dt?.rulesInstalled,t[272]=$t):$t=t[272];let Hs=`dash-tab-${n}`,$s=c?"flex min-w-0 flex-1 flex-col overflow-hidden":"min-w-0 flex-1 overflow-auto p-6",js=se[n],jt;t[273]!==e||t[274]!==js?(jt=e("{title} failed",{title:js}),t[273]=e,t[274]=js,t[275]=jt):jt=t[275];let zs=se[n],zt;t[276]!==e?(zt=e("Try again"),t[276]=e,t[277]=zt):zt=t[277];let Ao;t[278]===Symbol.for("react.memo_cache_sentinel")?(Ao=(0,i.jsxDEV)(q.Suspense,{fallback:(0,i.jsxDEV)(ci,{},void 0,!1),children:(0,i.jsxDEV)(Wr,{},void 0,!1)},void 0,!1),t[278]=Ao):Ao=t[278];let Ut;t[279]!==n||t[280]!==jt||t[281]!==zs||t[282]!==zt?(Ut=(0,i.jsxDEV)(ds,{fallbackTitle:jt,label:zs,retryLabel:zt,children:Ao},n,!1),t[279]=n,t[280]=jt,t[281]=zs,t[282]=zt,t[283]=Ut):Ut=t[283];let Wt;t[284]!==$s||t[285]!==Ut?(Wt=(0,i.jsxDEV)("div",{className:$s,children:Ut},void 0,!1),t[284]=$s,t[285]=Ut,t[286]=Wt):Wt=t[286];let Zt;t[287]!==Hs||t[288]!==Wt?(Zt=(0,i.jsxDEV)("div",{"aria-labelledby":Hs,className:"flex min-w-0 flex-1 flex-col overflow-hidden","data-testid":"dash-panel",id:"dash-panel",role:"tabpanel",children:Wt},void 0,!1),t[287]=Hs,t[288]=Wt,t[289]=Zt):Zt=t[289];let Vo;return t[290]!==Ht||t[291]!==$t||t[292]!==Zt?(Vo=(0,i.jsxDEV)(Ll,{className:"overflow-hidden md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",children:[Ht,$t,Zt]},void 0,!0),t[290]=Ht,t[291]=$t,t[292]=Zt,t[293]=Vo):Vo=t[293],(0,i.jsxDEV)(Al,{className:"min-h-0 flex-1","data-testid":"lunora-studio",children:[ko,(0,i.jsxDEV)(Bd,{chrome:Dt,connected:mi,current:n,groupLabel:Fe,groups:u,selectTab:ui,tabDescription:pi,tabLabel:se},void 0,!1),Vo]},void 0,!0)},"StudioLayout"),Fd=a(t=>{let e=(0,B.c)(5),{initialShardKey:o,schemaEditable:s}=t,r;e[0]===Symbol.for("react.memo_cache_sentinel")?(r={strict:!1},e[0]=r):r=e[0];let n=zr(r),{table:l}=n,c=typeof l=="string"?l:void 0,p;return e[1]!==o||e[2]!==c||e[3]!==s?(p=(0,i.jsxDEV)(Cd,{initialShardKey:o,initialTable:c,schemaEditable:s},void 0,!1),e[1]=o,e[2]=c,e[3]=s,e[4]=p):p=e[4],p},"SchemaRoutePanel"),Hd=a(()=>{let t=(0,B.c)(3),e=pt(),o,s;return t[0]!==e?(o=a(()=>{$e(e({replace:!0,to:"/home"}))},"t0"),s=[e],t[0]=e,t[1]=o,t[2]=s):(o=t[1],s=t[2]),(0,q.useEffect)(o,s),null},"NotFoundRedirect"),$d=a(({basePath:t,dataEditable:e=!1,functions:o,initialShardKey:s,openApiSpec:r,openRpcSpec:n,runAsIdentity:l=!1,schemaEditable:c=!1,scheduledCancel:p,scheduledCron:d,scheduledLoad:u})=>{let g=Ur({component:Ld}),m={analytics:(0,i.jsxDEV)(Kl,{},void 0,!1),api:(0,i.jsxDEV)(Ql,{functions:o,initialShardKey:s,openApiSpec:r,openRpcSpec:n},void 0,!1),audit:(0,i.jsxDEV)(dd,{initialShardKey:s},void 0,!1),authConfig:(0,i.jsxDEV)(Yl,{},void 0,!1),authSessions:(0,i.jsxDEV)(Jl,{},void 0,!1),containers:(0,i.jsxDEV)(td,{},void 0,!1),dashboards:(0,i.jsxDEV)(bd,{initialShardKey:s},void 0,!1),data:(0,i.jsxDEV)(od,{editable:e,initialShardKey:s},void 0,!1),drains:(0,i.jsxDEV)(cd,{},void 0,!1),export:(0,i.jsxDEV)(sd,{initialShardKey:s},void 0,!1),fanout:(0,i.jsxDEV)(yd,{initialShardKey:s},void 0,!1),files:(0,i.jsxDEV)(Ed,{},void 0,!1),kv:(0,i.jsxDEV)(gd,{},void 0,!1),flags:(0,i.jsxDEV)(ad,{initialShardKey:s},void 0,!1),functions:(0,i.jsxDEV)("div",{className:"flex flex-col gap-8",children:[(0,i.jsxDEV)(ld,{functions:o,initialShardKey:s},void 0,!1),(0,i.jsxDEV)(id,{functions:o,runAsIdentity:l},void 0,!1)]},void 0,!0),health:(0,i.jsxDEV)(Pd,{initialShardKey:s},void 0,!1),home:(0,i.jsxDEV)(Ha,{initialShardKey:s},void 0,!1),insights:(0,i.jsxDEV)(Zl,{initialShardKey:s},void 0,!1),logs:(0,i.jsxDEV)(pd,{initialShardKey:s},void 0,!1),metrics:(0,i.jsxDEV)(Rd,{initialShardKey:s},void 0,!1),migrations:(0,i.jsxDEV)(rd,{initialShardKey:s},void 0,!1),organizations:(0,i.jsxDEV)(Xl,{},void 0,!1),permissions:(0,i.jsxDEV)(vd,{functions:o,runAsIdentity:l,schemaEditable:c},void 0,!1),pitr:(0,i.jsxDEV)(nd,{initialShardKey:s},void 0,!1),mail:(0,i.jsxDEV)(ud,{},void 0,!1),payments:(0,i.jsxDEV)(hd,{},void 0,!1),queues:(0,i.jsxDEV)(xd,{},void 0,!1),realtime:(0,i.jsxDEV)(md,{initialShardKey:s},void 0,!1),rls:(0,i.jsxDEV)(ql,{},void 0,!1),schedule:(0,i.jsxDEV)(fd,{loadCronJobs:d,scheduledCancel:p,scheduledLoad:u},void 0,!1),schema:(0,i.jsxDEV)(Fd,{initialShardKey:s,schemaEditable:c},void 0,!1),security:(0,i.jsxDEV)(Gl,{},void 0,!1),settings:(0,i.jsxDEV)(Sd,{initialShardKey:s},void 0,!1),sql:(0,i.jsxDEV)(Nd,{initialShardKey:s},void 0,!1),storageRules:(0,i.jsxDEV)(Td,{},void 0,!1),users:(0,i.jsxDEV)(ed,{},void 0,!1),vectors:(0,i.jsxDEV)(wd,{},void 0,!1),workflows:(0,i.jsxDEV)(kd,{},void 0,!1)},h=Fo({component:a(()=>m.home,"component"),getParentRoute:a(()=>g,"getParentRoute"),path:"/"}),f=di.map(b=>b==="data"?Fo({component:a(()=>m[b],"component"),getParentRoute:a(()=>g,"getParentRoute"),path:`/${b}`,validateSearch:Ln}):Fo({component:a(()=>m[b],"component"),getParentRoute:a(()=>g,"getParentRoute"),path:`/${b}`})),v=g.addChildren([h,...f]),x="window"in globalThis?$r():jr({initialEntries:["/home"]});return Zr({...t===void 0||t==="/"?{}:{basepath:t},defaultNotFoundComponent:Hd,defaultPendingComponent:ci,defaultPendingMinMs:0,defaultPendingMs:0,history:x,routeTree:v})},"buildRouter"),jd=a(t=>{let e=(0,B.c)(17),{basePath:o,chrome:s,dataEditable:r,functions:n,initialShardKey:l,openApiSpec:c,openRpcSpec:p,runAsIdentity:d,schemaEditable:u,scheduledCancel:g,scheduledCron:m,scheduledLoad:h}=t,f;e[0]!==o||e[1]!==r||e[2]!==n||e[3]!==l||e[4]!==c||e[5]!==p||e[6]!==d||e[7]!==g||e[8]!==m||e[9]!==h||e[10]!==u?(f=$d({basePath:o,dataEditable:r,functions:n,initialShardKey:l,openApiSpec:c,openRpcSpec:p,runAsIdentity:d,schemaEditable:u,scheduledCancel:g,scheduledCron:m,scheduledLoad:h}),e[0]=o,e[1]=r,e[2]=n,e[3]=l,e[4]=c,e[5]=p,e[6]=d,e[7]=g,e[8]=m,e[9]=h,e[10]=u,e[11]=f):f=e[11];let v=f,x=s??null,b;e[12]!==v?(b=(0,i.jsxDEV)(qr,{router:v},void 0,!1),e[12]=v,e[13]=b):b=e[13];let R;return e[14]!==x||e[15]!==b?(R=(0,i.jsxDEV)(li,{value:x,children:b},void 0,!1),e[14]=x,e[15]=b,e[16]=R):R=e[16],R},"StudioShell"),v0=a(t=>{let e=(0,B.c)(17),{basePath:o,chrome:s,dataEditable:r,functions:n,i18n:l,initialShardKey:c,locale:p,openApiSpec:d,openRpcSpec:u,runAsIdentity:g,schemaEditable:m,scheduledCancel:h,scheduledCron:f,scheduledLoad:v}=t,x;e[0]!==o||e[1]!==s||e[2]!==r||e[3]!==n||e[4]!==c||e[5]!==d||e[6]!==u||e[7]!==g||e[8]!==h||e[9]!==f||e[10]!==v||e[11]!==m?(x=(0,i.jsxDEV)(jd,{basePath:o,chrome:s,dataEditable:r,functions:n,initialShardKey:c,openApiSpec:d,openRpcSpec:u,runAsIdentity:g,scheduledCancel:h,scheduledCron:f,scheduledLoad:v,schemaEditable:m},void 0,!1),e[0]=o,e[1]=s,e[2]=r,e[3]=n,e[4]=c,e[5]=d,e[6]=u,e[7]=g,e[8]=h,e[9]=f,e[10]=v,e[11]=m,e[12]=x):x=e[12];let b=x;if(l===void 0&&p===void 0)return b;let R;return e[13]!==l||e[14]!==p||e[15]!==b?(R=(0,i.jsxDEV)(za,{i18n:l,locale:p,children:b},void 0,!1),e[13]=l,e[14]=p,e[15]=b,e[16]=R):R=e[16],R},"Studio");function zd(t){return t.location.pathname}a(zd,"_temp");function Ud(t){return t.tabs.length>0}a(Ud,"_temp2");export{ds as a,za as b,g0 as c,il as d,h0 as e,pl as f,Rl as g,Nl as h,El as i,Tl as j,v0 as k};
@@ -0,0 +1 @@
1
+ import{a as S}from"./chunk-J6J54MBP.js";import{a as R}from"./chunk-TDL7NEWA.js";import{a as h}from"./chunk-JSEXCW5Q.js";import{R as y}from"./chunk-3CJW6NWG.js";import{c as L}from"./chunk-UK64ZSUW.js";import"./chunk-O3NAGRTR.js";import"./chunk-HV7G6DFP.js";import{a as w}from"./chunk-AQGOX5DK.js";import{b as F}from"./chunk-ZPP2KOR4.js";import"./chunk-CKSHCYGC.js";import{f as P}from"./chunk-X7MMBSNW.js";import"./chunk-ZHVTQ37P.js";import"./chunk-3OA7PECS.js";import{d as E,e as N,f as m,g as p,k as u}from"./chunk-PVZI3CXP.js";import"./chunk-GMSGZDDH.js";import{a,e as O,f as Q,h as W}from"./chunk-RRCPZMC2.js";var o=O(Q(),1);var e=O(W(),1);var C=N(w.getPitrBookmark),X=N(w.pitrRestore),le=a(({initialShardKey:A})=>{let c=P(),r=E(),i=A??"",[U,v]=(0,o.useState)(null),[n,q]=(0,o.useState)(""),[B,_]=(0,o.useState)(null),[f,K]=(0,o.useState)(""),[x,M]=(0,o.useState)(!1),[s,z]=(0,o.useState)(null),[T,l]=(0,o.useState)(null),[k,d]=(0,o.useState)(!1),b=(0,o.useCallback)(async()=>{d(!0),l(null);try{let t=await c.query(C,{},m(i));v(t.current)}catch(t){l(p(t))}finally{d(!1)}},[c,i]);(0,o.useEffect)(()=>{u(b())},[b]),S(()=>{u((async()=>{try{let t=await c.query(C,{},m(i));v(t.current)}catch{}})())},!0);let D=a(t=>{q(t.target.value)},"onTimeChange"),j=a(t=>{K(t.target.value)},"onBookmarkChange"),G=a(t=>{M(t.target.checked)},"onRestartChange"),V=a(()=>{n.trim()!==""&&u((async()=>{d(!0),l(null);try{let t=await c.query(C,{time:n.trim()},m(i));_(t.forTime??null),v(t.current)}catch(t){_(null),l(p(t))}finally{d(!1)}})())},"onPreview"),I=a(t=>{u((async()=>{d(!0),l(null);try{let g=await c.mutation(X,t,m(i));z(g),await b()}catch(g){l(p(g))}finally{d(!1)}})())},"runRestore"),Z=f.trim()!==""||n.trim()!=="",H=a(()=>{let t=x?{restart:!0}:{};f.trim()===""?t.time=n.trim():t.bookmark=f.trim(),I(t)},"onConfirmRestore"),J=a(()=>{s!==null&&I(x?{bookmark:s.undoBookmark,restart:!0}:{bookmark:s.undoBookmark})},"onUndo");return(0,e.jsxDEV)("div",{className:"flex flex-col gap-4","data-testid":"lunora-pitr",children:[(0,e.jsxDEV)("div",{className:"flex flex-wrap items-center gap-3",children:(0,e.jsxDEV)("span",{className:"text-xs text-muted-foreground",children:[r("Shard"),": ",(0,e.jsxDEV)("span",{className:"font-mono",children:i===""?r("root"):i},void 0,!1)]},void 0,!0)},void 0,!1),(0,e.jsxDEV)("p",{className:"text-sm text-muted-foreground","data-testid":"pitr-note",children:r("In-place recovery to any moment in the last 30 days. For older or portable recovery, use the snapshot backup tier.")},void 0,!1),T!==null&&(0,e.jsxDEV)("p",{className:"text-sm text-destructive","data-testid":"pitr-error",role:"alert",children:T},void 0,!1),(0,e.jsxDEV)("section",{className:"rounded-xl border border-border bg-card p-3 shadow-xs",children:[(0,e.jsxDEV)("h3",{className:"mb-2 text-sm font-semibold",children:r("Current bookmark")},void 0,!1),(0,e.jsxDEV)("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-current",children:U??(0,e.jsxDEV)("span",{className:"text-muted-foreground",children:"\u2014"},void 0,!1)},void 0,!1)]},void 0,!0),(0,e.jsxDEV)("section",{className:"flex flex-col gap-3 rounded-xl border border-border bg-card p-3 shadow-xs",children:[(0,e.jsxDEV)("h3",{className:"text-sm font-semibold",children:r("Restore")},void 0,!1),(0,e.jsxDEV)("div",{className:"flex flex-col gap-1",children:[(0,e.jsxDEV)(h,{htmlFor:"pitr-time",children:r("Time (ISO or epoch-ms, last 30 days)")},void 0,!1),(0,e.jsxDEV)("div",{className:"flex items-center gap-2",children:[(0,e.jsxDEV)(y,{"data-testid":"pitr-time",id:"pitr-time",onChange:D,placeholder:"2026-06-01T00:00:00.000Z",value:n},void 0,!1),(0,e.jsxDEV)(L,{"data-testid":"pitr-preview",disabled:k||n.trim()==="",onClick:V,size:"sm",type:"button",variant:"outline",children:r("Preview")},void 0,!1)]},void 0,!0),B!==null&&(0,e.jsxDEV)("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-preview-bookmark",children:[r("Bookmark for that time"),": ",B]},void 0,!0)]},void 0,!0),(0,e.jsxDEV)("div",{className:"flex flex-col gap-1",children:[(0,e.jsxDEV)(h,{htmlFor:"pitr-bookmark",children:r("Or an explicit bookmark (wins over time)")},void 0,!1),(0,e.jsxDEV)(y,{"data-testid":"pitr-bookmark",id:"pitr-bookmark",onChange:j,placeholder:r("bookmark string"),value:f},void 0,!1)]},void 0,!0),(0,e.jsxDEV)(h,{className:"flex items-center gap-2 text-xs font-normal text-muted-foreground",htmlFor:"pitr-restart",children:[(0,e.jsxDEV)("input",{checked:x,className:"size-4 accent-primary","data-testid":"pitr-restart",id:"pitr-restart",onChange:G,type:"checkbox"},void 0,!1),r("Restart the shard now so recovery applies immediately")]},void 0,!0),(0,e.jsxDEV)("div",{children:(0,e.jsxDEV)(R,{confirmLabel:r("Confirm restore"),disabled:k||!Z,onConfirm:H,testId:"pitr-restore",children:r("Restore")},void 0,!1)},void 0,!1)]},void 0,!0),s!==null&&(0,e.jsxDEV)("section",{className:"flex flex-col gap-2 rounded-xl border border-border bg-card p-3 shadow-xs","data-testid":"pitr-result",children:[(0,e.jsxDEV)("div",{className:"flex items-center gap-2",children:[(0,e.jsxDEV)("h3",{className:"text-sm font-semibold",children:r("Restore armed")},void 0,!1),(0,e.jsxDEV)(F,{variant:s.restarted?"destructive":"secondary",children:s.restarted?r("restarted now"):r("on next restart")},void 0,!1)]},void 0,!0),(0,e.jsxDEV)("p",{className:"font-mono text-xs break-all text-muted-foreground",children:[r("Restored to"),": ",s.restoredTo]},void 0,!0),(0,e.jsxDEV)("p",{className:"font-mono text-xs break-all text-muted-foreground","data-testid":"pitr-undo-bookmark",children:[r("Undo bookmark"),": ",s.undoBookmark]},void 0,!0),(0,e.jsxDEV)("div",{children:(0,e.jsxDEV)(R,{confirmLabel:r("Confirm undo"),disabled:k,onConfirm:J,testId:"pitr-undo",children:r("Undo restore")},void 0,!1)},void 0,!1)]},void 0,!0)]},void 0,!0)},"PitrPanel");export{le as PitrPanel};
@@ -0,0 +1 @@
1
+ import{a as je}from"./chunk-TDL7NEWA.js";import{a as Oe}from"./chunk-7TJJXVSE.js";import{e as Pe}from"./chunk-SVR644RF.js";import{a as We}from"./chunk-2K47A3P6.js";import"./chunk-KEGAWN6Y.js";import{a as D,b as De}from"./chunk-PZ7HD5T2.js";import"./chunk-AJIUI7DD.js";import"./chunk-XNJNSCLM.js";import"./chunk-GTM65MVX.js";import{a as He}from"./chunk-K3GNLVYK.js";import{b as Ue}from"./chunk-TBMYIZIO.js";import"./chunk-3CJW6NWG.js";import{c as Fe}from"./chunk-UK64ZSUW.js";import"./chunk-O3NAGRTR.js";import"./chunk-HV7G6DFP.js";import{a as R}from"./chunk-AQGOX5DK.js";import{b as C}from"./chunk-DVKPRFIJ.js";import"./chunk-SEU5V7I6.js";import"./chunk-CKSHCYGC.js";import{f as Ke}from"./chunk-X7MMBSNW.js";import"./chunk-ZHVTQ37P.js";import"./chunk-3OA7PECS.js";import{d as I,e as H,f as W,k as T}from"./chunk-PVZI3CXP.js";import"./chunk-GMSGZDDH.js";import{a as r,e as U,f as et,g as tt,h as nt}from"./chunk-RRCPZMC2.js";var Ee=U(tt(),1);var y=U(et(),1);var A=U(nt(),1);var l=r((a,t)=>({cacheKey:t.cacheKey,categories:t.categories??a.categories,description:a.description,detail:t.detail,facing:t.facing??a.facing,level:t.level??a.level,metadata:t.metadata,name:a.name,remediation:a.remediation,title:a.title}),"emit");var L=5,j=r(a=>typeof a._id=="string"?a._id:"?","rowId"),z=r((a,t,e)=>a?` (sample capped at ${t.toString()} rows \u2014 ${e})`:"","truncatedSuffix"),X=r((a,t)=>{let e=a.slice(0,L),n=t-e.length,i=e.map(o=>`"${o}"`).join(", ");return n>0?`${i} (+${n.toString()} more)`:i},"formatExamples"),at=r((a,t,e,n)=>{if(e.kind!=="one")return;let i=e.field,o=[];for(let u of t.rows){let g=u[i];if(g==null)continue;let m=String(g);n.existingIds.has(m)||o.push(j(u))}if(o.length===0)return;let s=t.truncated||n.truncated,c=Math.min(t.cap,n.cap),d=`Table "${t.table}": ${o.length.toString()} sampled row(s) have a dangling FK value in column "${i}" \u2014 the referenced "${e.table}" row does not exist. Row ids: ${X(o,o.length)}${z(s,c,"more rows may exist beyond the window")}.`;return l(a,{cacheKey:`constraint_validator:fk:${t.table}:${i}`,detail:d,metadata:{cap:c,column:i,count:o.length,examples:o.slice(0,L),kind:"fk",referencesTable:e.table,table:t.table,truncated:s}})},"checkFkRelation"),it=r((a,t,e,n)=>{if(!n)return;let i=[];for(let s of t.rows){let c=s[e];c==null&&i.push(j(s))}if(i.length===0)return;let o=`Table "${t.table}": ${i.length.toString()} sampled row(s) have a null/missing value in column "${e}", which is declared as non-optional. Row ids: ${X(i,i.length)}${z(t.truncated,t.cap,"more rows may exist beyond the window")}.`;return l(a,{cacheKey:`constraint_validator:null:${t.table}:${e}`,detail:o,metadata:{cap:t.cap,column:e,count:i.length,examples:i.slice(0,L),kind:"null",table:t.table,truncated:t.truncated}})},"checkNullField"),ot=r((a,t)=>{let e=[];for(let n of t){let i=a[n];if(i==null)return;e.push(JSON.stringify(i))}return e.join("|")},"compositeKey"),rt=r((a,t,e)=>{e.includes(t)||e.push(t),e.push(a)},"recordDuplicate"),st=r((a,t,e)=>{if(e.kind!=="index"||e.unique!==!0)return;let n=new Map,i=[];for(let s of t.rows){let c=j(s),d=ot(s,e.fields);if(d===void 0)continue;let u=n.get(d);u===void 0?n.set(d,c):rt(c,u,i)}if(i.length===0)return;let o=`Table "${t.table}": ${i.length.toString()} sampled row(s) share duplicate values on unique index "${e.name}" (${e.fields.join(", ")}). Row ids: ${X(i,i.length)}${z(t.truncated,t.cap,"duplicates beyond the window may exist")}.`;return l(a,{cacheKey:`constraint_validator:unique:${t.table}:${e.name}`,detail:o,metadata:{cap:t.cap,count:i.length,examples:i.slice(0,L),fields:e.fields,index:e.name,kind:"unique",table:t.table,truncated:t.truncated}})},"checkUniqueIndex"),lt=r((a,t,e,n)=>{let i=n.get(t.table);if(!i)return[];let o=[];for(let s of i.relations){let c=e.get(s.table);if(!c)continue;let d=at(a,t,s,c);d&&o.push(d)}for(let s of i.fields){let c=!i.optionalFields?.has(s),d=it(a,t,s,c);d&&o.push(d)}for(let s of i.indexes){let c=st(a,t,s);c&&o.push(c)}return o},"checkTable"),B={categories:["SCHEMA"],description:"Sampled rows violate one or more declared constraints: a foreign-key column references a non-existent row, a non-optional column contains null, or a unique-indexed column has duplicate values. These violations indicate data inserted before a constraint was enforced (e.g. a schema migration, a raw import, or a bug in a past data-migration transform).",facing:"INTERNAL",level:"WARN",name:"constraint_validator",remediation:"Inspect the listed rows and correct or remove the violating values. Run a data migration to backfill nulls, dedup unique violations, or re-link dangling FK references. For FK violations, confirm the target table rows exist before fixing the referencing rows.",run:r(a=>{if(!a.tableSamples||a.tableSamples.length===0)return[];let t=new Map;for(let n of a.tableSamples)t.set(n.table,n);let e=new Map(a.schema.tables.map(n=>[n.name,n]));return a.tableSamples.flatMap(n=>lt(B,n,t,e))},"run"),source:"runtime",title:"Constraint violation"};var ct=.5,dt=50,Q={categories:["PERFORMANCE"],description:"One shard is taking a disproportionate share of a sharded function's traffic, so the busy shard becomes a single-DO bottleneck while its siblings sit idle \u2014 the hot-key skew sharding is meant to avoid.",facing:"EXTERNAL",level:"WARN",name:"hot_shard",remediation:"Re-shard on a higher-cardinality / more evenly-distributed key, or split the hot entity's state, so request volume spreads across shards instead of concentrating on one.",run:r(a=>{let t=(a.shardTraffic??[]).filter(i=>i.requests>0),e=t.reduce((i,o)=>i+o.requests,0);if(t.length<2||e<dt)return[];let n=[];for(let i of t){let o=i.requests/e;if(o<ct)continue;let s=i.group!==void 0&&i.group!==""?`"${i.group}" `:"",c=i.shardKey===""?"the root shard":`shard "${i.shardKey}"`,d=Math.round(o*100);n.push(l(Q,{cacheKey:`hot_shard:${i.group??""}:${i.shardKey}`,detail:`${s}${c} handled ${i.requests.toString()} of ${e.toString()} requests (${d.toString()}%) across ${t.length.toString()} shards \u2014 a hot-key skew. Re-shard on a more evenly-distributed key.`,metadata:{group:i.group,requests:i.requests,shardCount:t.length,shardKey:i.shardKey,share:o,totalRequests:e}}))}return n},"run"),source:"runtime",title:"Hot shard"};var ut=25,M={categories:["PERFORMANCE"],description:"Recorded reads show an index the workload doesn't pay for: either a declared index no read ever used (dead overhead on every write) or a table read hot with no index at all (a repeated full scan that degrades as it grows).",facing:"INTERNAL",level:"INFO",name:"index_utilization",remediation:"Drop a dead index so writes stop maintaining it; add an index covering the hot full-scanned table's read predicate so the read stops scanning every row.",run:r(a=>{let t=[];for(let e of a.indexHits??[])e.reads>0||t.push(l(M,{cacheKey:`index_utilization:dead_index:${e.table}:${e.index}`,detail:`Index "${e.index}" on table "${e.table}" has recorded no reads since its counter was created \u2014 it's dead overhead: every write maintains it and nothing reads through it.`,metadata:{index:e.index,kind:"dead_index",reads:e.reads,table:e.table}}));for(let e of a.tableScans??[])e.scans<ut||t.push(l(M,{cacheKey:`index_utilization:hot_scan:${e.table}`,detail:`Table "${e.table}" has been full-scanned ${e.scans.toString()} times (cumulative) with no index \u2014 a repeated full scan that degrades linearly as "${e.table}" grows. Add an index covering the read predicate.`,facing:"EXTERNAL",level:"WARN",metadata:{kind:"hot_scan",scans:e.scans,table:e.table}}));return t},"run"),source:"runtime",title:"Index utilization"};var Y={categories:["SECURITY"],description:"An `httpRoute` on an admin/privileged path has no visible auth/admin guard. REST routes aren't covered by RLS, so an unguarded `/admin/*` route is callable by anyone who reaches the URL.",facing:"EXTERNAL",level:"WARN",name:"admin_route_without_guard",remediation:"Assert an authenticated, authorized caller at the top of the handler \u2014 check `ctx.auth` / `getSession(...)`, or a `requireAdmin`-style guard \u2014 and reject (401/403) before doing privileged work. For machine callers, verify a secret with a timing-safe compare.",run:r(a=>{if(a.adminRoutes===void 0)return[];let t=[];for(let e of a.adminRoutes)e.usesGuard||t.push(l(Y,{cacheKey:`admin_route_without_guard:${e.file}:${e.method}:${e.path}`,detail:`Route \`${e.method} ${e.path}\` (\`${e.exportName}\` in ${e.file}) is on an admin/privileged path but its handler shows no auth/admin guard. Assert an authorized caller before doing privileged work.`,metadata:{exportName:e.exportName,file:e.file,method:e.method,path:e.path}}));return t},"run"),source:"static",title:"Admin route without an auth guard"};var V={categories:["SECURITY"],description:"A `ctx.authApi.<method>(...)` call omits `headers` \u2014 better-auth skips session authorization and runs the call with full server-to-server privileges, regardless of the caller's identity.",facing:"EXTERNAL",level:"WARN",name:"auth_api_call_without_headers",remediation:"Pass the inbound `headers` from the incoming request into every `ctx.authApi.*` call: `ctx.authApi.<method>({ body, headers: request.headers })`. See the `withAuthPlugins` middleware doc for details.",run:r(a=>{if(a.authApiCalls===void 0)return[];let t=[],e=new Map;for(let n of a.authApiCalls){if(n.hasHeaders)continue;let i=`${n.file}:${n.line.toString()}:${n.method}`,o=(e.get(i)??0)+1;e.set(i,o);let s=o>1?`:${o.toString()}`:"";t.push(l(V,{cacheKey:`auth_api_call_without_headers:${i}${s}`,detail:`\`ctx.authApi.${n.method||"<method>"}(\u2026)\` in ${n.exportName} (${n.file}:${n.line.toString()}) is called without \`headers\` \u2014 better-auth skips session authorization, so this runs with full privileges. Pass the inbound \`headers\`.`,metadata:{exportName:n.exportName,file:n.file,line:n.line,method:n.method}}))}return t},"run"),source:"static",title:"Privileged ctx.authApi call missing headers"};var G={categories:["SCHEMA"],description:"A chain of foreign-key relations forms a cycle (e.g. A \u2192 B \u2192 C \u2192 A). Circular FK dependencies can cause unexpected behavior during DELETE operations \u2014 a CASCADE chain may loop indefinitely, and even a RESTRICT cycle prevents deletion of any row in the loop without temporarily disabling constraints.",facing:"INTERNAL",level:"WARN",name:"circular_fk",remediation:"Remove or break the cycle by dropping at least one FK relation from the loop. Consider replacing the circular dependency with a nullable FK and explicit application logic, or restructure the schema using a junction table.",run:r(a=>{let t=[],e=new Map;for(let c of a.schema.tables)for(let d of c.relations){if(d.kind!=="one")continue;let u=e.get(c.name);u===void 0&&(u=new Set,e.set(c.name,u)),u.add(d.table)}let n=new Set,i=new Set,o=r((c,d)=>{let u=d.indexOf(c);if(u===-1)return;let g=d.slice(u);if(g.length<2)return;let m=0;for(let w=1;w<g.length;w+=1)g[w]<g[m]&&(m=w);let h=[...g.slice(m),...g.slice(0,m)],v=h.join("\u2192");if(i.has(v))return;i.add(v);let x=[...h,h[0]].join(" \u2192 ");t.push(l(G,{cacheKey:`circular_fk:${v}`,detail:`Circular foreign-key dependency detected: ${x}. This cycle can cause unexpected behavior during DELETE operations.`,metadata:{cycle:h,path:x,tables:h}}))},"reportBackEdge"),s=r((c,d)=>{n.add(c),d.push(c);for(let u of e.get(c)??[])n.has(u)?o(u,d):s(u,d);d.pop(),n.delete(c)},"dfs");for(let c of a.schema.tables)s(c.name,[]);return t},"run"),source:"static",title:"Circular foreign-key dependency"};var mt=new Set(["standard-3","standard-4"]),ft=2,ht=4096,pt=r(a=>typeof a=="string"?mt.has(a):(a.vcpu??0)>ft||(a.memoryMib??0)>ht,"isOversized"),J={categories:["PERFORMANCE"],description:"A container is declared on a large instance type, whose provisioned memory and disk are billed for the lifetime of every running instance.",facing:"INTERNAL",level:"INFO",name:"container_oversized_instance",remediation:"Confirm the workload needs this size; a smaller instanceType (lite/basic/standard-1) costs less while idle-but-running.",run:r(a=>{let t=[];for(let e of a.containers??[]){let{instanceType:n}=e;if(n===void 0||!pt(n))continue;let i=typeof n=="string"?n:JSON.stringify(n);t.push(l(J,{cacheKey:`container_oversized_instance:${e.exportName}`,detail:`Container "${e.exportName}" uses a large instance type (${i}); its memory + disk are billed while any instance runs.`,metadata:{container:e.exportName,instanceType:n}}))}return t},"run"),source:"static",title:"Oversized container instance"};var Z={categories:["SECURITY"],description:"A container leaves outbound internet access at the default (enabled), which is billed per GB of egress and widens the attack surface.",facing:"INTERNAL",level:"INFO",name:"container_public_internet",remediation:"Set `enableInternet: false` on the container if it doesn't call external services, or `true` to opt in deliberately.",run:r(a=>{let t=[];for(let e of a.containers??[])e.enableInternet===void 0&&t.push(l(Z,{cacheKey:`container_public_internet:${e.exportName}`,detail:`Container "${e.exportName}" doesn't set enableInternet, so outbound internet is on by default (egress is billed).`,metadata:{container:e.exportName}}));return t},"run"),source:"static",title:"Container egress enabled by default"};var gt=r((a,t)=>a.length>t.length?!1:a.every((e,n)=>e===t[n]),"isLeadingPrefix"),ee={categories:["PERFORMANCE"],description:"A secondary index is redundant because another index already covers every lookup it serves (its columns are a leading prefix of the other's). The redundant index costs storage and is maintained on every write for no read benefit.",facing:"INTERNAL",level:"INFO",name:"duplicate_index",remediation:"Drop the redundant index; the covering index already serves its lookups.",run:r(a=>{let t=[];for(let e of a.schema.tables){let n=e.indexes.filter(i=>i.kind==="index");for(let i of n){if(i.unique===!0)continue;let o=n.find(s=>s===i||!gt(i.fields,s.fields)?!1:i.fields.length===s.fields.length?i.name>s.name:!0);o&&t.push(l(ee,{cacheKey:`duplicate_index:${e.name}:${i.name}`,detail:`Index "${i.name}" on table "${e.name}" (${i.fields.join(", ")}) is redundant \u2014 index "${o.name}" (${o.fields.join(", ")}) already covers its lookups.`,metadata:{coveredBy:{fields:o.fields,name:o.name},fields:i.fields,index:i.name,table:e.name}}))}}return t},"run"),source:"static",title:"Duplicate / redundant index"};var te={categories:["SCHEMA"],description:"An index declares no columns, so it indexes nothing and can never narrow a read.",facing:"INTERNAL",level:"WARN",name:"empty_index",remediation:"Give the index its columns, or remove it.",run:r(a=>{let t=[];for(let e of a.schema.tables)for(let n of e.indexes)n.kind!=="index"||n.fields.length>0||t.push(l(te,{cacheKey:`empty_index:${e.name}:${n.name}`,detail:`Index "${n.name}" on table "${e.name}" declares no columns.`,metadata:{index:n.name,table:e.name}}));return t},"run"),source:"static",title:"Empty index"};var ne={categories:["PERFORMANCE"],description:"A query calls `.filter()` without a `.withIndex()` / `.withSearchIndex()`, so it loads every row in the table and filters in memory \u2014 a full table scan that gets linearly slower as the table grows.",facing:"EXTERNAL",level:"WARN",name:"filter_without_index",remediation:'Narrow the read with `.withIndex("name", (q) => q.eq(...))` first, then `.filter()` only for what the index cannot express.',run:r(a=>{let t=[];for(let e of a.queries??[]){if(!e.hasFilter||e.hasIndex||e.table==="")continue;let n=e.line>0?`${e.file}:${e.line.toString()}`:e.file;t.push(l(ne,{cacheKey:`filter_without_index:${e.file}:${e.line.toString()}:${e.table}`,detail:`Query on "${e.table}" at ${n} calls .filter() without an index \u2014 it loads every row of "${e.table}" and filters in memory.`,metadata:{file:e.file,line:e.line,table:e.table}}))}return t},"run"),source:"static",title:"Filter without index"};var ae={categories:["SECURITY"],description:"A secret-shaped string literal (live API key, access key, private key, or high-entropy token) is hard-coded in the source. Committed secrets leak via clone/fork/history and force a redeploy to rotate.",facing:"INTERNAL",level:"ERROR",name:"hardcoded_secret",remediation:'Move the secret out of source: set it locally in `.dev.vars` (`lunora env set <NAME> "<value>"`) and in production with `wrangler secret put <NAME>`, then read it at runtime from `env.<NAME>`. Rotate the exposed value \u2014 assume it is already compromised.',run:r(a=>{if(a.secretLiterals===void 0)return[];let t=[],e=new Map;for(let n of a.secretLiterals){let i=`${n.file}:${n.line.toString()}:${n.kind}`,o=(e.get(i)??0)+1;e.set(i,o);let s=o>1?`:${o.toString()}`:"";t.push(l(ae,{cacheKey:`hardcoded_secret:${i}${s}`,detail:`A ${n.kind.replaceAll("_"," ")} (${n.preview}) is hard-coded at ${n.file}:${n.line.toString()}. Move it to \`.dev.vars\` / \`wrangler secret put\` and read it from \`env\`. Rotate the exposed value.`,metadata:{file:n.file,kind:n.kind,line:n.line,preview:n.preview}}))}return t},"run"),source:"static",title:"Hard-coded secret in source"};var ie={categories:["SCHEMA"],description:"A `query`/`mutation` handler accesses Hyperdrive via `ctx.sql`. Hyperdrive hits an external database Lunora does not own: queries are non-deterministic (like `fetch`) and external writes are invisible to live queries. `ctx.sql` is available on `ActionCtx` only and must be confined to `action` handlers.",facing:"EXTERNAL",level:"WARN",name:"hyperdrive_outside_action",remediation:"Move the `ctx.sql` access into an `action(...)` (the only context where it is typed), where external I/O is allowed. If a query/mutation needs the data, have the action read it via `ctx.sql` and write a projection into a `defineSchema` DO/D1 table \u2014 that write is tracked by live queries, whereas the external DB is not.",run:r(a=>{if(a.hyperdriveCalls===void 0)return[];let t=[];for(let e of a.hyperdriveCalls)t.push(l(ie,{cacheKey:`hyperdrive_outside_action:${e.file}:${e.line.toString()}:${e.callee}`,detail:`\`${e.callee}(\u2026)\` in ${e.exportName} (${e.file}:${e.line.toString()}) runs inside a ${e.kind} handler \u2014 Hyperdrive's \`ctx.sql\` is non-deterministic and non-reactive, so it is available only in actions. Move the external SQL into an \`action\` and project the result into a Lunora table if a query/mutation needs it.`,metadata:{callee:e.callee,exportName:e.exportName,file:e.file,kind:e.kind,line:e.line}}));return t},"run"),source:"static",title:"Hyperdrive `ctx.sql` used outside an action"};var bt=new Set(["_creationTime","_id"]),q=r(a=>new Set([...bt,...a.fields]),"tableColumnSet");var oe={categories:["SCHEMA"],description:"An index references a column that is not declared on its table. The index can never match, and the typo would otherwise surface only at runtime.",facing:"INTERNAL",level:"ERROR",name:"index_references_unknown_field",remediation:"Fix the column name in the index declaration, or add the column to the table.",run:r(a=>{let t=[];for(let e of a.schema.tables){let n=q(e);for(let i of e.indexes)for(let o of i.fields)n.has(o)||t.push(l(oe,{cacheKey:`index_references_unknown_field:${e.name}:${i.name}:${o}`,detail:`Index "${i.name}" on table "${e.name}" references column "${o}", which is not declared on the table.`,metadata:{field:o,index:i.name,indexKind:i.kind,table:e.name}}))}return t},"run"),source:"static",title:"Index references unknown field"};var re={categories:["SECURITY"],description:"A public procedure reads a table whose columns are masked by `.use(mask(...))` elsewhere in the app, but this procedure's builder chain does not include `.use(mask(...))`. It returns those columns in the clear while a sibling procedure redacts them.",facing:"EXTERNAL",level:"WARN",name:"mask_uncovered_pii_column",remediation:"Add `.use(mask(policies))` to the procedure's builder chain \u2014 e.g. `c.use(mask(myMasks)).query(...)` \u2014 so its returned rows redact the same columns as the rest of the app. If this procedure is intentionally privileged (e.g. an admin export), declare it with `internalQuery` / `internalMutation` / `internalAction` instead of the public builder so the intent is explicit.",run:r(a=>{if(a.maskProcedures===void 0)return[];let t=new Map;for(let n of a.maskProcedures)for(let{column:i,table:o}of n.maskColumns){if(o===""||i==="")continue;let s=t.get(o)??new Set;s.add(i),t.set(o,s)}if(t.size===0)return[];let e=[];for(let n of a.maskProcedures){if(n.usesMask||n.visibility==="internal")continue;let i=new Set;for(let o of n.tablesRead)o!==""&&t.has(o)&&i.add(o);for(let o of i){let s=[...t.get(o)??new Set].toSorted((d,u)=>d.localeCompare(u)),c=s.map(d=>`\`${d}\``).join(", ");e.push(l(re,{cacheKey:`mask_uncovered_pii_column:${n.file}:${n.exportName}:${o}`,detail:`\`${n.exportName}\` in ${n.file} reads table \`${o}\` without \`.use(mask(...))\` \u2014 its column${s.length===1?"":"s"} ${c} ${s.length===1?"is":"are"} masked elsewhere in the app but returned in the clear here.`,metadata:{columns:s,exportName:n.exportName,file:n.file,table:o}}))}}return e},"run"),source:"static",title:"Maskable column returned without mask() middleware"};var se={categories:["SCHEMA"],description:"A custom mutator's `server` impl writes with `ctx.db.replace(id, document)` \u2014 a whole-row overwrite. On a synced table this clobbers a concurrent edit to a different column; `ctx.db.patch(id, { field })` merges at the column level so independent field edits coexist.",facing:"EXTERNAL",level:"WARN",name:"mutator_full_row_replace",remediation:"Prefer `ctx.db.patch(id, { onlyTheChangedField })` so a concurrent edit to another column isn't lost. Keep `replace` only when the mutator genuinely owns the entire row (e.g. a full-form save).",run:r(a=>a.mutatorWrites===void 0?[]:a.mutatorWrites.map(t=>l(se,{cacheKey:`mutator_full_row_replace:${t.exportName}:${String(t.line)}`,detail:`Mutator \`${t.exportName}\` (${t.file}:${String(t.line)}) writes with \`ctx.db.replace(...)\`, overwriting the whole row. A concurrent edit to a different column is clobbered \u2014 use \`ctx.db.patch(id, { field })\` to merge at the column level.`,metadata:{exportName:t.exportName,file:t.file,line:t.line}})),"run"),source:"static",title:"Mutator overwrites the whole row (clobbers concurrent column edits)"};var le={categories:["SCHEMA"],description:"A `query`/`mutation` handler calls a non-deterministic API (`Date.now`, `Math.random`, `crypto.randomUUID`, `crypto.getRandomValues`, or `fetch`). These handlers may be re-run on OCC retry / subscription re-evaluation, so they must be deterministic \u2014 time, randomness, and network belong in an `action`.",facing:"EXTERNAL",level:"WARN",name:"nondeterministic_query_mutation",remediation:"Move the non-deterministic call into an `action(...)` (which runs once and may use ambient APIs), then pass the computed value into the mutation as an argument \u2014 e.g. compute `Date.now()` in the action and call `ctx.runMutation(api.\u2026, { now })`. Take generated ids/timestamps as args instead of producing them in the handler.",run:r(a=>{if(a.nondeterministicCalls===void 0)return[];let t=[],e=new Map;for(let n of a.nondeterministicCalls){let i=`${n.file}:${n.line.toString()}:${n.callee}`,o=(e.get(i)??0)+1;e.set(i,o);let s=o>1?`:${o.toString()}`:"";t.push(l(le,{cacheKey:`nondeterministic_query_mutation:${i}${s}`,detail:`\`${n.callee}(\u2026)\` in ${n.exportName} (${n.file}:${n.line.toString()}) runs inside a ${n.kind} handler \u2014 query/mutation handlers must be deterministic. Compute it in an \`action\` and pass the value into the mutation as an argument.`,metadata:{callee:n.callee,exportName:n.exportName,file:n.file,kind:n.kind,line:n.line}}))}return t},"run"),source:"static",title:"Non-deterministic call in query/mutation handler"};var ce={categories:["SECURITY"],description:"An RLS policy is bound to a `table` name that does not exist in the schema. The `rls()` middleware never matches it, so the table the policy was meant to protect is left ungated \u2014 reads return unrestricted rows and writes are allowed.",facing:"EXTERNAL",level:"WARN",name:"policy_references_unknown_table",remediation:"Fix the policy's `table` to a real table name (check for a typo or a table that was renamed/removed). If the table is gone, delete the dead policy.",run:r(a=>{if(a.rlsProcedures===void 0)return[];let t=new Set(a.schema.tables.map(i=>i.name)),e=new Set,n=[];for(let i of a.rlsProcedures)for(let o of i.rlsTables)o===""||t.has(o)||e.has(o)||(e.add(o),n.push(l(ce,{cacheKey:`policy_references_unknown_table:${o}`,detail:`An RLS policy in \`${i.exportName}\` (${i.file}) is bound to table \`${o}\`, which is not declared in the schema. The policy never matches, so \`${o}\` \u2014 if it exists under another name \u2014 is left ungated.`,metadata:{exportName:i.exportName,file:i.file,table:o}})));return n},"run"),source:"static",title:"RLS policy bound to an unknown table"};var de={categories:["SECURITY"],description:"A public procedure declares a `v.any()` argument. `v.any()` accepts arbitrary untyped input from an untrusted client \u2014 defeating validation and opening injection / oversized-payload abuse.",facing:"EXTERNAL",level:"WARN",name:"public_arg_uses_any",remediation:"Replace `v.any()` with a precise validator \u2014 `v.object({...})`, `v.string()`, `v.union(...)`, etc. If the shape is genuinely dynamic, model the known variants with `v.union` rather than accepting anything.",run:r(a=>{if(a.argValidators===void 0)return[];let t=[];for(let e of a.argValidators)for(let n of e.anyArgs)t.push(l(de,{cacheKey:`public_arg_uses_any:${e.file}:${e.exportName}:${n}`,detail:`Arg \`${n}\` of public procedure \`${e.exportName}\` (${e.file}:${e.line.toString()}) is \`v.any()\` \u2014 untrusted input with no validation. Give it a precise validator.`,metadata:{argument:n,exportName:e.exportName,file:e.file,line:e.line}}));return t},"run"),source:"static",title:"Public argument uses v.any()"};var wt=/contact|forgot|login|magic|otp|register|reset|signin|signup|subscribe|verify/iu,ue={categories:["SECURITY"],description:"A public `mutation`/`action` has no `rateLimit` middleware. Publicly-callable writes are flood and brute-force targets \u2014 an attacker can exhaust writes, mail quota, or credits, or guess credentials on auth-shaped endpoints.",facing:"EXTERNAL",level:"WARN",name:"public_mutation_without_ratelimit",remediation:'Attach a rate limit: `.use(rateLimit(limiter, "<bucket>"))` from `@lunora/ratelimit`, or wrap the recommended public-procedure guards with `.use(protectPublic({ rateLimit, captcha }))` from `@lunora/server`. Genuinely-open writes can be acknowledged by adding a permissive limiter.',run:r(a=>{if(a.procedureProtections===void 0)return[];let t=[];for(let e of a.procedureProtections){if(!(e.visibility==="public"&&(e.kind==="mutation"||e.kind==="action"))||e.usesRateLimit)continue;let i=wt.test(e.exportName);t.push(l(ue,{cacheKey:`public_mutation_without_ratelimit:${e.file}:${e.exportName}`,detail:`Public ${e.kind} \`${e.exportName}\` (${e.file}) has no rate limit${i?" \u2014 its name suggests an auth/abuse-sensitive endpoint, so this is high-risk":""}. Add \`.use(rateLimit(...))\` or \`.use(protectPublic({ rateLimit }))\`.`,metadata:{exportName:e.exportName,file:e.file,kind:e.kind,sensitive:i}}))}return t},"run"),source:"static",title:"Public write without a rate limit"};var me={categories:["SCHEMA"],description:"A `query`/`mutation` handler accesses R2 SQL via `ctx.r2sql`. R2 SQL queries external Apache Iceberg tables over REST (no Workers binding): queries are non-deterministic (like `fetch`) and the reads are invisible to live queries. `ctx.r2sql` is available on `ActionCtx` only and must be confined to `action` handlers.",facing:"EXTERNAL",level:"WARN",name:"r2sql_outside_action",remediation:"Move the `ctx.r2sql` access into an `action(...)` (the only context where it is typed), where external I/O is allowed. If a query/mutation needs the data, have the action read it via `ctx.r2sql` and write a projection into a `defineSchema` DO/D1 table \u2014 that write is tracked by live queries, whereas R2 SQL is not.",run:r(a=>{if(a.r2sqlCalls===void 0)return[];let t=[];for(let e of a.r2sqlCalls)t.push(l(me,{cacheKey:`r2sql_outside_action:${e.file}:${e.line.toString()}:${e.callee}`,detail:`\`${e.callee}(\u2026)\` in ${e.exportName} (${e.file}:${e.line.toString()}) runs inside a ${e.kind} handler \u2014 R2 SQL's \`ctx.r2sql\` is non-deterministic and non-reactive, so it is available only in actions. Move the external query into an \`action\` and project the result into a Lunora table if a query/mutation needs it.`,metadata:{callee:e.callee,exportName:e.exportName,file:e.file,kind:e.kind,line:e.line}}));return t},"run"),source:"static",title:"R2 SQL `ctx.r2sql` used outside an action"};var vt=r((a,t,e,n)=>{let i=a.get(n.table);if(!i)return[];let o=n.kind==="one"?e:i,s=n.kind==="one"?i:e,c=[];return t(o).has(n.field)||c.push({column:n.field,owner:o.name,side:"field"}),t(s).has(n.references)||c.push({column:n.references,owner:s.name,side:"references"}),c},"missingColumns"),fe={categories:["SCHEMA"],description:"A relation references a foreign-key or referenced column that is not declared on its table, so the join can never resolve.",facing:"INTERNAL",level:"ERROR",name:"relation_references_unknown_field",remediation:"Fix the `field` / `references` column name in the relation, or add the missing column.",run:r(a=>{let t=new Map(a.schema.tables.map(i=>[i.name,i])),e=new Map,n=r(i=>{let o=e.get(i);return o||(o=q(i),e.set(i,o)),o},"columnsOf");return a.schema.tables.flatMap(i=>i.relations.flatMap(o=>vt(t,n,i,o).map(s=>l(fe,{cacheKey:`relation_references_unknown_field:${i.name}:${o.name}:${s.side}`,detail:`Relation "${o.name}" on table "${i.name}" uses ${s.side} "${s.column}", which is not declared on table "${s.owner}".`,metadata:{column:s.column,owner:s.owner,relation:o.name,side:s.side,table:i.name}}))))},"run"),source:"static",title:"Relation references unknown field"};var he={categories:["SCHEMA"],description:"A relation targets a table that does not exist in the schema. The relation can never load \u2014 the target is a typo or a removed/renamed table.",facing:"INTERNAL",level:"ERROR",name:"relation_references_unknown_table",remediation:"Fix the target table name in the relation, or add the missing table to the schema.",run:r(a=>{let t=[],e=new Set(a.schema.tables.map(n=>n.name));for(let n of a.schema.tables)for(let i of n.relations)e.has(i.table)||t.push(l(he,{cacheKey:`relation_references_unknown_table:${n.name}:${i.name}`,detail:`Relation "${i.name}" on table "${n.name}" targets table "${i.table}", which does not exist in the schema.`,metadata:{relation:i.name,table:n.name,target:i.table}}));return t},"run"),source:"static",title:"Relation references unknown table"};var pe={categories:["SECURITY"],description:"A public procedure reads or writes a table that is covered by an RLS policy elsewhere in the app, but this procedure's builder chain does not include `.use(rls(...))`. The raw, unwrapped `ctx.db` silently bypasses every policy in the list.",facing:"EXTERNAL",level:"WARN",name:"rls_uncovered_table",remediation:"Add `.use(rls(policies))` to the procedure's builder chain \u2014 e.g. `c.use(rls(myPolicies)).query(...)` \u2014 so its `ctx.db` is wrapped by the same policy evaluator as the rest of the app. If this procedure is intentionally privileged (e.g. a background job), declare it with `internalQuery` / `internalMutation` / `internalAction` instead of the public builder so the intent is explicit.",run:r(a=>{if(a.rlsProcedures===void 0)return[];let t=new Set;for(let n of a.rlsProcedures)for(let i of n.rlsTables)i!==""&&t.add(i);if(t.size===0)return[];let e=[];for(let n of a.rlsProcedures){if(n.usesRls||n.visibility==="internal")continue;let i=new Set;for(let o of[...n.tablesRead,...n.tablesWritten])o!==""&&t.has(o)&&i.add(o);for(let o of i)e.push(l(pe,{cacheKey:`rls_uncovered_table:${n.file}:${n.exportName}:${o}`,detail:`\`${n.exportName}\` in ${n.file} accesses table \`${o}\` without \`.use(rls(...))\` \u2014 the table is policy-gated elsewhere in the app but this procedure bypasses those policies entirely.`,metadata:{exportName:n.exportName,file:n.file,table:o}}))}return e},"run"),source:"static",title:"RLS-gated table accessed without rls() middleware"};var ge={categories:["PERFORMANCE"],description:"A `defineShape` replicates from a `.global()` table. Global tables live outside the shard DO's SQLite op-log, so the shape is served through the cross-shard tier \u2014 coordinator/poll-refreshed and latency-tiered, not poke-live like a sharded shape.",facing:"EXTERNAL",level:"WARN",name:"shape_targets_global_table",remediation:"Expected if you want the cross-shard tier \u2014 just don't assume poke-live freshness; global shapes refresh on a poll. For live updates, replicate from a sharded table instead (denormalize the columns you need into the shard).",run:r(a=>{if(a.shapes===void 0)return[];let t=new Set(a.schema.tables.filter(n=>n.shardKind==="global").map(n=>n.name)),e=[];for(let n of a.shapes)n.table===void 0||!t.has(n.table)||e.push(l(ge,{cacheKey:`shape_targets_global_table:${n.exportName}`,detail:`Shape \`${n.exportName}\` (${n.file}) replicates from the \`.global()\` table \`${n.table}\`. It is served through the cross-shard global tier \u2014 poll-refreshed and latency-tiered, not poke-live.`,metadata:{exportName:n.exportName,file:n.file,table:n.table}}));return e},"run"),source:"static",title:"Shape replicates from a global (cross-shard) table"};var be={categories:["SCHEMA"],description:"A `defineShape` is bound to a `table` name that does not exist in the schema. The shape can never resolve a rowset \u2014 its subscription seeds empty and errors at the first flush.",facing:"INTERNAL",level:"ERROR",name:"shape_unknown_table",remediation:"Fix the shape's `table` to a real table name (check for a typo or a table that was renamed/removed).",run:r(a=>{if(a.shapes===void 0)return[];let t=new Set(a.schema.tables.map(n=>n.name)),e=[];for(let n of a.shapes)n.table===void 0||t.has(n.table)||e.push(l(be,{cacheKey:`shape_unknown_table:${n.exportName}`,detail:`Shape \`${n.exportName}\` (${n.file}) replicates from table \`${n.table}\`, which is not declared in the schema. The shape can never resolve a rowset.`,metadata:{exportName:n.exportName,file:n.file,table:n.table}}));return e},"run"),source:"static",title:"Shape bound to an unknown table"};var we={categories:["SECURITY"],description:"A `ctx.sql` tagged-template interpolates an unparameterized string-building expression (concatenation or nested template) instead of a bound value \u2014 splicing raw text into the query and reopening SQL injection.",facing:"EXTERNAL",level:"ERROR",name:"sql_injection_risk",remediation:"Pass the value through a bound placeholder so the driver parameterizes it \u2014 keep request input inside a `ctx.sql` placeholder instead of concatenating it into the query string. Never build SQL text from request input by hand.",run:r(a=>a.sqlInterpolations===void 0?[]:a.sqlInterpolations.map(t=>l(we,{cacheKey:`sql_injection_risk:${t.file}:${t.line.toString()}`,detail:`\`ctx.sql\` in \`${t.exportName}\` (${t.file}:${t.line.toString()}) interpolates a string-building expression instead of a bound value \u2014 a SQL-injection vector. Pass the value through a bound placeholder so the driver parameterizes it.`,metadata:{exportName:t.exportName,file:t.file,line:t.line}})),"run"),source:"static",title:"Possible SQL injection in ctx.sql interpolation"};var ve={categories:["SCHEMA"],description:'No function inserts into this table via `ctx.db.insert("<table>", \u2026)`. It may be read-only by design (seeded by a migration, replicated, or written through a path the advisor can\'t see) \u2014 or it may be dead schema.',facing:"INTERNAL",level:"INFO",name:"table_without_insert",remediation:'If the table should be writable, add a mutation that calls `ctx.db.insert("<table>", \u2026)`. If it is read-only or seeded elsewhere, this advisory can be ignored.',run:r(a=>{if(a.inserts===void 0)return[];let t=new Set(a.inserts.filter(n=>n.table!=="").map(n=>n.table)),e=[];for(let n of a.schema.tables)t.has(n.name)||n.externallyManaged===!0||e.push(l(ve,{cacheKey:`table_without_insert:${n.name}`,detail:`No function calls \`ctx.db.insert("${n.name}", \u2026)\` \u2014 table "${n.name}" has no discovered insert path.`,metadata:{table:n.name}}));return e},"run"),source:"static",title:"Table has no insert path"};var ye={categories:["SECURITY"],description:"A public `v.string()` argument has no maximum-length bound. An unbounded string lets a client submit arbitrarily large input \u2014 abusing storage and CPU on every request that processes it.",facing:"EXTERNAL",level:"INFO",name:"unbounded_string_arg",remediation:"Add a max-length bound via `.check(...)` / `.meta({ maxLength })` on the string validator (e.g. cap a name at 256, a body at a few KB). Size the cap to the field's real-world maximum.",run:r(a=>{if(a.argValidators===void 0)return[];let t=[];for(let e of a.argValidators)for(let n of e.unboundedStringArgs)t.push(l(ye,{cacheKey:`unbounded_string_arg:${e.file}:${e.exportName}:${n}`,detail:`Arg \`${n}\` of public procedure \`${e.exportName}\` (${e.file}:${e.line.toString()}) is an unbounded \`v.string()\`. Add a max-length bound to cap payload size.`,metadata:{argument:n,exportName:e.exportName,file:e.file,line:e.line}}));return t},"run"),source:"static",title:"Public string argument has no length bound"};var K=r(a=>`by${a.charAt(0).toUpperCase()}${a.slice(1)}`,"suggestIndexName"),P=r(a=>new Set(a.indexes.filter(t=>t.kind==="index").map(t=>t.fields[0]).filter(t=>t!==void 0)),"leadingIndexedColumns");var $e={categories:["PERFORMANCE"],description:"A foreign-key column declared by a `one` relation has no index leading with it. Reads that filter or join on the column full-scan the table, which gets linearly slower as rows accumulate.",facing:"EXTERNAL",level:"INFO",name:"unindexed_foreign_key",remediation:'Add a secondary index leading with the FK column, e.g. `.index("byAuthorId", ["authorId"])`.',run:r(a=>{let t=[];for(let e of a.schema.tables){let n=P(e);for(let i of e.relations){if(i.kind!=="one")continue;let o=i.field;if(o==="_id"||n.has(o))continue;let s=K(o);t.push(l($e,{cacheKey:`unindexed_foreign_key:${e.name}:${o}`,detail:`Relation "${i.name}" on table "${e.name}" references "${i.table}" via column "${o}", which is not the leading column of any index. Reads filtering or joining on "${o}" full-scan "${e.name}".`,metadata:{fkColumn:o,references:{column:i.references,table:i.table},relation:i.name,suggestedIndex:{fields:[o],name:s},table:e.name}}))}}return t},"run"),source:"static",title:"Unindexed foreign key"};var ke={categories:["PERFORMANCE"],description:"A `many` relation's foreign-key column on the target table has no index leading with it. Relation predicates (`some`/`none`/`every`) and `with:` child reads filter the target on that column, full-scanning it as rows accumulate.",facing:"EXTERNAL",level:"INFO",name:"unindexed_relation_target",remediation:'Add a secondary index on the target table leading with the FK column, e.g. `.index("byAuthorId", ["authorId"])`.',run:r(a=>{let t=[],e=new Map(a.schema.tables.map(n=>[n.name,n]));for(let n of a.schema.tables)for(let i of n.relations){if(i.kind!=="many")continue;let o=e.get(i.table);if(o===void 0)continue;let s=i.field;if(s==="_id"||o.relations.some(u=>u.kind==="one"&&u.field===s)||P(o).has(s))continue;let d=K(s);t.push(l(ke,{cacheKey:`unindexed_relation_target:${i.table}:${s}`,detail:`Relation "${i.name}" on table "${n.name}" is a to-many over "${i.table}" via its column "${s}", which is not the leading column of any index on "${i.table}". Relation predicates (\`some\`/\`none\`/\`every\`) and \`with:\` reads of "${i.name}" full-scan "${i.table}".`,metadata:{fkColumn:s,references:{column:i.references,table:n.name},relation:i.name,suggestedIndex:{fields:[s],name:d},table:i.table}}))}return t},"run"),source:"static",title:"Unindexed relation target"};var Ae={categories:["SECURITY"],description:"A public `mutation`/`action` that creates a user/session or sends mail has no CAPTCHA / bot check. Account-creating and mail-sending endpoints are prime automated-abuse targets (credential stuffing, mailbox flooding, disposable-account farming).",facing:"EXTERNAL",level:"WARN",name:"user_creating_mutation_without_captcha",remediation:"Add a server-verified human check: `.use(verifyTurnstile({ secret, token }))` from `@lunora/auth`, or wrap it with `.use(protectPublic({ rateLimit, captcha }))` from `@lunora/server`. Pair with a rate limit for defense in depth.",run:r(a=>{if(a.procedureProtections===void 0)return[];let t=[];for(let e of a.procedureProtections){let n=e.visibility==="public"&&(e.kind==="mutation"||e.kind==="action"),i=e.writesUserTable||e.callsMail;if(!n||!i||e.usesCaptcha)continue;let o=e.writesUserTable?"writes a user/session table":"sends mail";t.push(l(Ae,{cacheKey:`user_creating_mutation_without_captcha:${e.file}:${e.exportName}`,detail:`Public ${e.kind} \`${e.exportName}\` (${e.file}) ${o} but has no CAPTCHA check. Add \`.use(verifyTurnstile(...))\` or \`.use(protectPublic({ captcha }))\`.`,metadata:{callsMail:e.callsMail,exportName:e.exportName,file:e.file,kind:e.kind,writesUserTable:e.writesUserTable}}))}return t},"run"),source:"static",title:"Account-creating / mail-sending write without a CAPTCHA"};var Ne={categories:["SCHEMA"],description:"Two durable steps in this workflow share a name. Cloudflare memoizes a step by its name, so on replay the second call returns the first step's cached result instead of running its body \u2014 silently skipping the work without an error.",facing:"INTERNAL",level:"ERROR",name:"workflow_duplicate_step_name",remediation:"Give every `step.do` / `step.sleep` / `step.sleepUntil` / `step.waitForEvent` call in the workflow a unique name. If a step legitimately repeats (e.g. a loop), make the name distinct per iteration by interpolating the item id into the step name.",run:r(a=>{if(a.workflows===void 0)return[];let t=[];for(let e of a.workflows){let{steps:n}=e;if(n===void 0||n.length===0)continue;let i=new Map,o=new Set;for(let s of n){let c=i.get(s.name);if(c===void 0){i.set(s.name,s.line);continue}o.has(s.name)||(o.add(s.name),t.push(l(Ne,{cacheKey:`workflow_duplicate_step_name:${e.exportName}:${s.name}`,detail:`Workflow "${e.exportName}" reuses the durable step name "${s.name}" (first at line ${String(c)}, again at line ${String(s.line)}). The second call returns the first's cached result instead of running.`,metadata:{firstLine:c,line:s.line,stepName:s.name,workflow:e.exportName}})))}}return t},"run"),source:"static",title:"Duplicate durable step name in workflow"};var Se={categories:["SCHEMA"],description:'A `ctx.workflows.get("<name>")` call references a workflow that is not declared by any `defineWorkflow` export in `lunora/workflows.ts`. The name is a typo or points at a removed/renamed workflow \u2014 the call throws at runtime.',facing:"INTERNAL",level:"ERROR",name:"workflow_unknown_target",remediation:'Fix the workflow name in the `ctx.workflows.get("\u2026")` call, or add the missing `defineWorkflow` export to `lunora/workflows.ts`.',run:r(a=>{if(a.workflows===void 0||a.workflowCalls===void 0)return[];let t=new Set(a.workflows.map(n=>n.exportName)),e=[];for(let n of a.workflowCalls)n.workflow===""||t.has(n.workflow)||e.push(l(Se,{cacheKey:`workflow_unknown_target:${n.file}:${n.exportName}:${n.workflow}`,detail:`\`ctx.workflows.get("${n.workflow}")\` in "${n.exportName}" (${n.file}) references workflow "${n.workflow}", which is not declared in lunora/workflows.ts.`,metadata:{exportName:n.exportName,file:n.file,line:n.line,workflow:n.workflow}}));return e},"run"),source:"static",title:"Workflow call references unknown workflow"};var Re={categories:["SCHEMA"],description:'No function starts this workflow via `ctx.workflows.get("<name>")`. It may be triggered through a path the advisor can\'t see (the Cloudflare API, a wrangler invocation, a cross-service binding) \u2014 or it may be dead code that still deploys as a billable WorkflowEntrypoint.',facing:"INTERNAL",level:"INFO",name:"workflow_unused",remediation:'If the workflow should be triggered in-app, start it from a mutation/action with `ctx.workflows.get("<name>").create({ params })`. If it is started externally or is no longer needed, this advisory can be ignored (or remove the `defineWorkflow` export).',run:r(a=>{if(a.workflows===void 0)return[];let t=a.workflowCalls??[];if(t.some(i=>i.workflow===""))return[];let e=new Set(t.map(i=>i.workflow)),n=[];for(let i of a.workflows)e.has(i.exportName)||n.push(l(Re,{cacheKey:`workflow_unused:${i.exportName}`,detail:`No function calls \`ctx.workflows.get("${i.exportName}")\` \u2014 workflow "${i.exportName}" is declared but never started in app code.`,metadata:{workflow:i.exportName}}));return n},"run"),source:"static",title:"Workflow is never started"};var yt=[oe,he,fe,Se,Ne,be,te,G,$e,ke,ee,ve,Re,ne,ge,se,le,ie,me,V,ce,pe,re,J,Z,ue,Ae,de,ye,ae,we,Y],_e=[Q,M,B],xt=[...yt,..._e],ze=r((a,t={})=>{let e=t.lints??xt,n=[];for(let i of e)t.source!==void 0&&i.source!==t.source||n.push(...i.run(a));return n},"runAdvisor");var $t=r(a=>{let{suggestedIndex:t,table:e}=a;return!(typeof e!="string"||e.length===0||typeof t!="object"||t===null||!Array.isArray(t.fields)||t.fields.length===0)},"hasIndexMetadata"),kt=r((a,t,e)=>{let n=`"${a}"`,i=`"${t}"`,o=e.map(s=>`"${s}"`).join(", ");return`CREATE INDEX IF NOT EXISTS ${i} ON ${n} (${o});`},"composeCreateIndex"),At=r(a=>{let t=(0,Ee.c)(19),{fields:e,indexName:n,table:i,testId:o}=a,s=I(),[c,d]=(0,y.useState)(!1),u;t[0]!==e||t[1]!==n||t[2]!==i?(u=r(()=>{let x="navigator"in globalThis?globalThis.navigator.clipboard:void 0;if(x===void 0)return;let w=kt(i,n,e);T(x.writeText(w)),d(!0)},"t1"),t[0]=e,t[1]=n,t[2]=i,t[3]=u):u=t[3];let g=u;if(c){let x=`${o}-applied`,w;t[4]!==s?(w=s("CREATE INDEX SQL copied to clipboard."),t[4]=s,t[5]=w):w=t[5];let S;return t[6]!==x||t[7]!==w?(S=(0,A.jsxDEV)("span",{className:"text-xs text-muted-foreground","data-testid":x,children:w},void 0,!1),t[6]=x,t[7]=w,t[8]=S):S=t[8],S}let m;t[9]!==s?(m=s("Apply?"),t[9]=s,t[10]=m):m=t[10];let h;t[11]!==s||t[12]!==i?(h=s("Apply index on {table}",{table:i}),t[11]=s,t[12]=i,t[13]=h):h=t[13];let v;return t[14]!==g||t[15]!==m||t[16]!==h||t[17]!==o?(v=(0,A.jsxDEV)(je,{confirmLabel:m,onConfirm:g,testId:o,children:h},void 0,!1),t[14]=g,t[15]=m,t[16]=h,t[17]=o,t[18]=v):v=t[18],v},"ApplyIndexButton"),Nt=r((a,t)=>{let e=new Map;for(let n of t){let i=`${n.table} ${n.index}`;e.set(i,(e.get(i)??0)+n.reads)}return a.map(n=>({index:n.index,reads:e.get(`${n.table} ${n.index}`)??0,table:n.table}))},"reconcileIndexHits"),St=r(a=>{let t=new Map;for(let e of a)for(let n of e.scannedTables??[])t.set(n.table,(t.get(n.table)??0)+n.scans);return[...t].map(([e,n])=>({scans:n,table:e}))},"aggregateTableScans"),Rt=r((a,t)=>t.map(e=>({index:e.name,table:a})),"declaredIndexesFor"),_t=r(a=>{let t=Nt(a.declaredIndexes??[],a.indexHits??[]),e=St(a.functions??[]),n=a.shardTraffic??[],i=a.analyticsMetrics,o=i&&i.indexHits.length>0?i.indexHits:t,s=i&&i.tableScans.length>0?i.tableScans:e,c=i&&i.shardTraffic.length>0?i.shardTraffic:n,d=ze({indexHits:o,schema:{tables:[]},shardTraffic:c,tableScans:s},{lints:_e,source:"runtime"}),u=a.suppressHotScanTables;return(u===void 0?d:d.filter(m=>!(m.metadata.kind==="hot_scan"&&typeof m.metadata.table=="string"&&u.has(m.metadata.table)))).map(m=>D(m))},"deriveRuntimeAdvisories"),Tt=H(R.listTables),Et=H(R.listTableIndexes),Te=r(a=>`${(a*100).toFixed(1)}%`,"percent"),Xe=r(a=>`${(a/1e3).toFixed(2)}s`,"seconds"),It=r(a=>{if(a.length<=1)return a[0]??"";let t=a[a.length-1]??"";return`${a.slice(0,-1).join(", ")} and ${t}`},"tableList"),Ct=r((a,t)=>({"high-error-rate":a("High error rate"),"high-evictions":a("High cache eviction rate"),"high-write-contention":a("High write contention"),"low-cache-hit-rate":a("Low cache hit rate"),"missing-index":a("Missing index"),"slow-function":a("Slow function")})[t.kind],"insightTitle"),Be=r((a,t)=>({"high-error-rate":a("{rate} of calls failed.",{rate:Te(t.value)}),"high-evictions":a("{count} entries evicted recently.",{count:t.value}),"high-write-contention":a("{rate} of calls hit a write conflict \u2014 consider sharding to cut contention.",{rate:Te(t.value)}),"low-cache-hit-rate":a("{rate} hit rate over recent traffic.",{rate:Te(t.value)}),"missing-index":a("Slowest call took {duration} \u2014 it full-scanned {tables} with no index.",{duration:Xe(t.value),tables:It(t.tables??[])}),"slow-function":a("Slowest call took {duration}.",{duration:Xe(t.value)})})[t.kind],"insightDetail"),Lt=r(a=>{let t=(0,Ee.c)(10),{onJump:e,table:n}=a,i=I(),o;t[0]!==e||t[1]!==n?(o=r(()=>{e(n)},"t1"),t[0]=e,t[1]=n,t[2]=o):o=t[2];let s=o,c=`in-add-index-${n}`,d;t[3]!==i||t[4]!==n?(d=i("Add index on {table}",{table:n}),t[3]=i,t[4]=n,t[5]=d):d=t[5];let u;return t[6]!==s||t[7]!==c||t[8]!==d?(u=(0,A.jsxDEV)(Fe,{"data-testid":c,onClick:s,size:"sm",type:"button",variant:"outline",children:d},void 0,!1),t[6]=s,t[7]=c,t[8]=d,t[9]=u):u=t[9],u},"AddIndexButton"),Oi=r(({initialShardKey:a,loadShardTraffic:t})=>{let e=Ke(),n=Pe(),i=I(),[o,s]=(0,y.useState)(a??""),[c,d]=(0,y.useState)(null),[u,g]=(0,y.useState)(null),m=We(o.trim(),400),h=(0,y.useRef)(""),v=C(R.getMetrics,{},{live:!0,shardKey:m}),x=C(R.getFunctionStats,{},{live:!0,shardKey:m}),w=C(R.getAdvisories,{},{live:!0,shardKey:m}),S=v.data??null,Ie=x.data?.functions??null,Ce=w.data?.advisories??null,Qe=v.data?.indexHits??null,Le=v.error!==null&&x.error!==null?v.error:null,Ye=t??(f=>e.shardTraffic(f)),Ve=r(async(f,k)=>{let N=f[0];if(N===void 0||N===""){h.current===k&&g(null);return}try{let p=await Ye(N);if(h.current!==k)return;let $=new Map;for(let b of p.shards)$.has(b.shardKey)||$.set(b.shardKey,{requests:b.requests,shardKey:b.shardKey});g([...$.values()])}catch{h.current===k&&g(null)}},"loadShardTrafficFeed"),E=(0,y.useCallback)(async f=>{h.current=f;let k=[];try{let N=await e.query(Tt,{},W(f));if(h.current!==f)return;Ue(f),k=N.map(b=>b.name);let p=await Promise.allSettled(N.map(async b=>[b.name,await e.query(Et,{table:b.name},W(f))]));if(h.current!==f)return;let $=[];for(let b of p)if(b.status==="fulfilled"){let[_,O]=b.value;$.push(...Rt(_,O.indexes))}d($)}catch{h.current===f&&d(null)}await Ve(k,f)},[e]);(0,y.useEffect)(()=>{T(E(m))},[m,E]),(0,y.useEffect)(()=>{let f=r(()=>{document.visibilityState==="visible"&&(v.refetch(),x.refetch(),w.refetch(),T(E(m)))},"onVisible");return document.addEventListener("visibilitychange",f),()=>{document.removeEventListener("visibilitychange",f)}},[w,m,E,x,v]);let Me=(0,y.useCallback)(f=>{T(n({search:{table:f},to:"/schema"}))},[n]),F=Oe(S,Ie),Ge=new Set(F.filter(f=>f.kind==="missing-index").flatMap(f=>f.tables??[])),qe=_t({declaredIndexes:c??[],functions:Ie,indexHits:Qe,shardTraffic:u,suppressHotScanTables:Ge}),Je=(0,y.useMemo)(()=>{let f=F.map(p=>{let $=p.kind==="missing-index"?p.tables??[]:[];return{action:$.length>0?$.map(b=>(0,A.jsxDEV)(Lt,{onJump:Me,table:b},b,!1)):void 0,description:p.message===void 0?Be(i,p):`${Be(i,p)} \u2014 ${p.message}`,entity:p.fn,issueType:Ct(i,p),key:`${p.kind}:${p.fn??""}`,level:p.severity}}),k=new Set(["unindexed_foreign_key","unindexed_relation_target"]);return[...(Ce??[]).map(p=>{let $=D(p);if(k.has(p.name)&&$t(p.metadata)){let{table:b,suggestedIndex:_}=p.metadata,O=`in-apply-index-${b}-${_.name}`;return{...$,action:(0,A.jsxDEV)(At,{fields:_.fields,indexName:_.name,table:b,testId:O},void 0,!1)}}return $}),...qe,...f]},[Ce,F,Me,qe,i]),Ze=(0,A.jsxDEV)(He,{onChange:s,testId:"in-shard-input",value:o},void 0,!1);return(0,A.jsxDEV)(De,{error:Le,errorSource:Le===null?void 0:v.errorSource,rows:Je,testId:"lunora-insights",toolbar:Ze},void 0,!1)},"InsightsPanel");export{Oi as InsightsPanel};