@lunora/studio 1.0.0-alpha.79 → 1.0.0-alpha.80

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 (235) hide show
  1. package/dist/index.d.ts +28 -14
  2. package/dist/index.js +1 -1
  3. package/dist/mount.d.ts +1 -1
  4. package/dist/mount.js +1 -1
  5. package/dist/packem_chunks/ApiTab.js +1 -1
  6. package/dist/packem_chunks/AuditPanel.js +1 -1
  7. package/dist/packem_chunks/DeploymentHealthPanel.js +1 -1
  8. package/dist/packem_chunks/ExportImportPanel.js +3 -3
  9. package/dist/packem_chunks/FileBrowser.js +4 -4
  10. package/dist/packem_chunks/FunctionRunner.js +1 -1
  11. package/dist/packem_chunks/FunctionStatsPanel.js +1 -1
  12. package/dist/packem_chunks/HealthPanel.js +1 -1
  13. package/dist/packem_chunks/InsightsPanel.js +1 -1
  14. package/dist/packem_chunks/LogsPanel.js +1 -1
  15. package/dist/packem_chunks/MailPanel.js +2 -2
  16. package/dist/packem_chunks/MetricsPanel.js +1 -1
  17. package/dist/packem_chunks/NotificationsPanel.js +1 -1
  18. package/dist/packem_chunks/PitrPanel.js +1 -1
  19. package/dist/packem_chunks/SchemaViewer.js +1 -2
  20. package/dist/packem_chunks/SecurityAdvisorPanel.js +1 -1
  21. package/dist/packem_chunks/SettingsPanel.js +1 -1
  22. package/dist/packem_chunks/SqlEditorPanel.js +6 -4
  23. package/dist/packem_chunks/TableEditor.js +1 -1
  24. package/dist/packem_chunks/agents-panel.js +1 -1
  25. package/dist/packem_chunks/analytics-panel.js +1 -1
  26. package/dist/packem_chunks/auth-audit-panel.js +1 -1
  27. package/dist/packem_chunks/auth-config-panel.js +1 -1
  28. package/dist/packem_chunks/auth-sessions-panel.js +1 -1
  29. package/dist/packem_chunks/containers-panel.js +1 -1
  30. package/dist/packem_chunks/dashboards-panel.js +1 -1
  31. package/dist/packem_chunks/fanout-panel.js +1 -1
  32. package/dist/packem_chunks/flags-panel.js +1 -1
  33. package/dist/packem_chunks/issues-panel.js +1 -1
  34. package/dist/packem_chunks/kv-browser.js +1 -1
  35. package/dist/packem_chunks/log-drains-panel.js +4 -4
  36. package/dist/packem_chunks/migrations-route.js +1 -0
  37. package/dist/packem_chunks/organizations-panel.js +1 -1
  38. package/dist/packem_chunks/payments-panel.js +1 -1
  39. package/dist/packem_chunks/permissions-panel.js +1 -1
  40. package/dist/packem_chunks/queues-panel.js +1 -1
  41. package/dist/packem_chunks/rls-panel.js +1 -1
  42. package/dist/packem_chunks/schedule-panel.js +1 -1
  43. package/dist/packem_chunks/sparkline.js +1 -1
  44. package/dist/packem_chunks/storage-rules-panel.js +1 -1
  45. package/dist/packem_chunks/subscriptions-panel.js +1 -1
  46. package/dist/packem_chunks/sync-client-panel.js +1 -1
  47. package/dist/packem_chunks/traces-panel.js +1 -1
  48. package/dist/packem_chunks/users-panel.js +1 -1
  49. package/dist/packem_chunks/vector-browser.js +1 -1
  50. package/dist/packem_chunks/workflows-panel.js +1 -1
  51. package/dist/packem_shared/ADMIN_FUNCTIONS-BnD4aovm.js +1 -0
  52. package/dist/packem_shared/ApiDocsPanel-DfUQ1ZAF.js +2 -0
  53. package/dist/packem_shared/{ApiReferencePanel-C42v1jr6.js → ApiReferencePanel-9q8BbJl-.js} +1 -1
  54. package/dist/packem_shared/CommandPalette--SQwfTW1.js +1 -0
  55. package/dist/packem_shared/DataBrowser-CuRlztBz.js +1 -0
  56. package/dist/packem_shared/DataFilters-B26ZeqBZ.js +1 -0
  57. package/dist/packem_shared/GlobalDataBrowser-DB-vQ2_H.js +1 -0
  58. package/dist/packem_shared/HomePanel-Dcs4a3Ax.js +1 -0
  59. package/dist/packem_shared/MigrationsPanel-C2OnsqRb.js +1 -0
  60. package/dist/packem_shared/{OpenRpcReferencePanel-sGsIgYWj.js → OpenRpcReferencePanel-qOZcWXMs.js} +1 -1
  61. package/dist/packem_shared/ScheduledJobs-D8kBZWBu.js +1 -0
  62. package/dist/packem_shared/Studio-B26_pT8J.js +1 -0
  63. package/dist/packem_shared/StudioApp-bXhJeLlZ.js +1 -0
  64. package/dist/packem_shared/advisor-view-Pa8HLtBv.js +1 -0
  65. package/dist/packem_shared/{app.d-bRPJhby-.d.ts → app.d-DW7yZsfu.d.ts} +1 -3
  66. package/dist/packem_shared/bar-chart-DraN_srt.js +9 -0
  67. package/dist/packem_shared/data-grid-DcxyIXwG.js +1 -0
  68. package/dist/packem_shared/data-view-params-ClrV7XgF.js +1 -0
  69. package/dist/packem_shared/error-alert-t6cpEi0z.js +1 -0
  70. package/dist/packem_shared/grid-features-jnrD0SpX.js +6 -0
  71. package/dist/packem_shared/{home-panel-Cm88Nvqh.js → home-panel-CU6MWLHG.js} +2 -2
  72. package/dist/packem_shared/{internal-AtZ4bTal.js → internal-BSIsQVC6.js} +1 -1
  73. package/dist/packem_shared/live-status-CmuRLFKf.js +1 -0
  74. package/dist/packem_shared/operation-console-provider-BMJNtiyB.js +1 -0
  75. package/dist/packem_shared/recording-client-DRAZEmzE.js +1 -0
  76. package/dist/packem_shared/reference-view-DnYYWr7I.js +12 -0
  77. package/dist/packem_shared/result-chart-DzJOVsaw.js +1 -0
  78. package/dist/packem_shared/schema-diagram-cg-bz_VL.js +2 -0
  79. package/dist/packem_shared/{sparkline-DtcZoU48.js → sparkline-CgjeUU2I.js} +1 -1
  80. package/dist/packem_shared/studio-q-C-acL7.js +2 -0
  81. package/dist/packem_shared/table-list-sidebar-BFkSQwlB.js +1 -0
  82. package/dist/packem_shared/use-admin-query-QJ-ibl5u.js +1 -0
  83. package/dist/packem_shared/use-async-submit-q3ymBJkD.js +1 -0
  84. package/dist/packem_shared/{use-auth-config-9S_K_W-G.js → use-auth-config-BObBpdsi.js} +1 -1
  85. package/dist/packem_shared/use-sql-assistant-CHEu2-Rk.js +1 -0
  86. package/dist/standalone/chunk-2GA4SHO7.js +1 -0
  87. package/dist/standalone/{chunk-NG6LYBPJ.js → chunk-2VDFV5TD.js} +1 -1
  88. package/dist/standalone/chunk-2WOIRKEI.js +1 -0
  89. package/dist/standalone/chunk-33CL6OHR.js +1 -0
  90. package/dist/standalone/{chunk-EIT7ERYE.js → chunk-34D36UCW.js} +1 -1
  91. package/dist/standalone/chunk-3C3CG7ZK.js +1 -0
  92. package/dist/standalone/{chunk-6CULAILE.js → chunk-3O3HAXW7.js} +1 -1
  93. package/dist/standalone/{chunk-LSEZN2ZL.js → chunk-3STOIE7Q.js} +1 -1
  94. package/dist/standalone/chunk-53WEPGUD.js +1 -0
  95. package/dist/standalone/chunk-5CVJS7ON.js +1 -0
  96. package/dist/standalone/chunk-6IKEW5LG.js +1 -0
  97. package/dist/standalone/chunk-6LNCYDZO.js +1 -0
  98. package/dist/standalone/chunk-6NY7SPDL.js +1 -0
  99. package/dist/standalone/chunk-6PNPIW6I.js +2 -0
  100. package/dist/standalone/{chunk-AVZGVZZ7.js → chunk-6VAKZALJ.js} +1 -1
  101. package/dist/standalone/chunk-6YI4WJO4.js +1 -0
  102. package/dist/standalone/{chunk-HYT2ZUNP.js → chunk-6YTSSIEJ.js} +2 -2
  103. package/dist/standalone/{chunk-KYF2E5CJ.js → chunk-7LWMHTJ3.js} +1 -1
  104. package/dist/standalone/chunk-A74VSSA2.js +4 -0
  105. package/dist/standalone/chunk-CCVXYYPJ.js +1 -0
  106. package/dist/standalone/chunk-CT5MMH4O.js +1 -0
  107. package/dist/standalone/chunk-CTNB2KIA.js +1 -0
  108. package/dist/standalone/chunk-CU55Y5TV.js +62 -0
  109. package/dist/standalone/chunk-D2RKH6JK.js +1 -0
  110. package/dist/standalone/chunk-E3NMX2VU.js +4 -0
  111. package/dist/standalone/chunk-FNPJ7GJZ.js +1 -0
  112. package/dist/standalone/chunk-FOBRNWBG.js +3 -0
  113. package/dist/standalone/chunk-G6PSMGLD.js +1 -0
  114. package/dist/standalone/chunk-GAX5IZYG.js +8 -0
  115. package/dist/standalone/chunk-GB6U2BPU.js +1 -0
  116. package/dist/standalone/chunk-GEDMLM4A.js +6 -0
  117. package/dist/standalone/chunk-GXSZH7VJ.js +13 -0
  118. package/dist/standalone/chunk-GYKVBKT5.js +1 -0
  119. package/dist/standalone/chunk-H6YOWRFB.js +1 -0
  120. package/dist/standalone/chunk-HJ3E4YF5.js +1 -0
  121. package/dist/standalone/chunk-HJD2YUQS.js +1 -0
  122. package/dist/standalone/chunk-IHQC7J35.js +1 -0
  123. package/dist/standalone/chunk-JLOWAJRR.js +1 -0
  124. package/dist/standalone/chunk-JRMMYIAF.js +1 -0
  125. package/dist/standalone/{chunk-W6TE2I2D.js → chunk-KC44QCN6.js} +1 -1
  126. package/dist/standalone/chunk-KJB7YAKB.js +1 -0
  127. package/dist/standalone/chunk-KLQYC6CC.js +1 -0
  128. package/dist/standalone/{chunk-XQGANNLS.js → chunk-KZ3ALMMP.js} +1 -1
  129. package/dist/standalone/chunk-L7R74G63.js +1 -0
  130. package/dist/standalone/{chunk-3RTTXLMU.js → chunk-OY2RVUZL.js} +1 -1
  131. package/dist/standalone/chunk-P4YLIBCN.js +1 -0
  132. package/dist/standalone/chunk-PZVU2QMX.js +1 -0
  133. package/dist/standalone/{chunk-PRJ4RJDU.js → chunk-Q7O6B7WC.js} +1 -1
  134. package/dist/standalone/chunk-QLQADHFE.js +1 -0
  135. package/dist/standalone/{chunk-7LQWFOEU.js → chunk-QXXIJAD5.js} +1 -1
  136. package/dist/standalone/chunk-QZGTH6WH.js +1 -0
  137. package/dist/standalone/chunk-RJP3WBZ4.js +1 -0
  138. package/dist/standalone/chunk-RNL6BSFM.js +1 -0
  139. package/dist/standalone/chunk-RNRJKBY3.js +4 -0
  140. package/dist/standalone/{chunk-7YEFOSPH.js → chunk-RQ7AFLIV.js} +1 -1
  141. package/dist/standalone/chunk-S252DAFP.js +1 -0
  142. package/dist/standalone/chunk-S2VVR7HI.js +1 -0
  143. package/dist/standalone/chunk-SKW6J4VW.js +1 -0
  144. package/dist/standalone/chunk-T7IUZIF4.js +1 -0
  145. package/dist/standalone/chunk-TTGOOYLF.js +1 -0
  146. package/dist/standalone/chunk-U6TNNM5U.js +1 -0
  147. package/dist/standalone/chunk-VHWOCPRK.js +1 -0
  148. package/dist/standalone/chunk-W6SAOXGH.js +6 -0
  149. package/dist/standalone/{chunk-YCRMVBPW.js → chunk-WBYSSCV2.js} +1 -1
  150. package/dist/standalone/{chunk-LFXFP4IF.js → chunk-X665E2HU.js} +1 -1
  151. package/dist/standalone/chunk-XDAT7LHC.js +1 -0
  152. package/dist/standalone/chunk-XS5LDR52.js +1 -0
  153. package/dist/standalone/chunk-Y5Y7DHFW.js +1 -0
  154. package/dist/standalone/chunk-YJYTMQJI.js +1 -0
  155. package/dist/standalone/chunk-Z2V42P7J.js +1 -0
  156. package/dist/standalone/studio.js +5 -5
  157. package/dist/styles.css +1 -1
  158. package/package.json +1 -1
  159. package/dist/packem_chunks/MigrationsPanel.js +0 -1
  160. package/dist/packem_shared/ADMIN_FUNCTIONS-CpgIo9pj.js +0 -1
  161. package/dist/packem_shared/ApiDocsPanel-CjdsxN1t.js +0 -2
  162. package/dist/packem_shared/CommandPalette-CVIaY3j8.js +0 -1
  163. package/dist/packem_shared/DataBrowser-Bfstz_au.js +0 -1
  164. package/dist/packem_shared/DataFilters-Csb30F0C.js +0 -1
  165. package/dist/packem_shared/GlobalDataBrowser-RLJ6NvOs.js +0 -1
  166. package/dist/packem_shared/HomePanel-B8EFM4u3.js +0 -1
  167. package/dist/packem_shared/ScheduledJobs-DUbo6epc.js +0 -1
  168. package/dist/packem_shared/Studio-BDtS9C5g.js +0 -1
  169. package/dist/packem_shared/StudioApp-DjLzIO9E.js +0 -1
  170. package/dist/packem_shared/advisor-view-DaCX9Jy5.js +0 -1
  171. package/dist/packem_shared/bar-chart-AryFCeoa.js +0 -9
  172. package/dist/packem_shared/data-grid-BMBKzMEJ.js +0 -1
  173. package/dist/packem_shared/data-view-params-C8T3bW1z.js +0 -1
  174. package/dist/packem_shared/error-alert-B59DnrDI.js +0 -1
  175. package/dist/packem_shared/grid-features-uZCUj955.js +0 -6
  176. package/dist/packem_shared/live-status-CGW2JHf_.js +0 -1
  177. package/dist/packem_shared/reference-view-KvhektwF.js +0 -12
  178. package/dist/packem_shared/result-chart-CwKhhKM0.js +0 -1
  179. package/dist/packem_shared/studio-BmWFd-Rz.js +0 -2
  180. package/dist/packem_shared/table-list-sidebar-CMCcNALK.js +0 -1
  181. package/dist/packem_shared/use-admin-query-Di3fLE8H.js +0 -1
  182. package/dist/packem_shared/use-async-submit-DLNCqLFq.js +0 -1
  183. package/dist/standalone/chunk-2SHUN7KF.js +0 -1
  184. package/dist/standalone/chunk-2Y36BVVM.js +0 -4
  185. package/dist/standalone/chunk-3EXLKL6V.js +0 -1
  186. package/dist/standalone/chunk-3KAERFMC.js +0 -1
  187. package/dist/standalone/chunk-4XDMVUS5.js +0 -1
  188. package/dist/standalone/chunk-5RF4QDDA.js +0 -6
  189. package/dist/standalone/chunk-5YWJNF5X.js +0 -1
  190. package/dist/standalone/chunk-66YJ3IOZ.js +0 -1
  191. package/dist/standalone/chunk-6KHEBRBB.js +0 -1
  192. package/dist/standalone/chunk-6WCIFGDW.js +0 -1
  193. package/dist/standalone/chunk-7RG3AKPY.js +0 -1
  194. package/dist/standalone/chunk-A2FPLOMJ.js +0 -1
  195. package/dist/standalone/chunk-AADXUXZO.js +0 -1
  196. package/dist/standalone/chunk-ARI4JTIH.js +0 -1
  197. package/dist/standalone/chunk-BDO4J5AP.js +0 -1
  198. package/dist/standalone/chunk-BMQJ4CAO.js +0 -1
  199. package/dist/standalone/chunk-CMUP7HPS.js +0 -1
  200. package/dist/standalone/chunk-CP7AUUOU.js +0 -1
  201. package/dist/standalone/chunk-DX3RMFQU.js +0 -8
  202. package/dist/standalone/chunk-E2CJUP53.js +0 -13
  203. package/dist/standalone/chunk-FLYO3XY5.js +0 -1
  204. package/dist/standalone/chunk-FWCKM2CU.js +0 -1
  205. package/dist/standalone/chunk-GITJXQOS.js +0 -4
  206. package/dist/standalone/chunk-GP6IRITM.js +0 -1
  207. package/dist/standalone/chunk-GXU3ATKS.js +0 -1
  208. package/dist/standalone/chunk-H5Y5NQPL.js +0 -1
  209. package/dist/standalone/chunk-HALNNKTC.js +0 -1
  210. package/dist/standalone/chunk-HK4OVYG3.js +0 -1
  211. package/dist/standalone/chunk-HQEMYD2K.js +0 -1
  212. package/dist/standalone/chunk-I4WGRDL2.js +0 -1
  213. package/dist/standalone/chunk-ISZSYNTI.js +0 -4
  214. package/dist/standalone/chunk-JWG3VRGB.js +0 -1
  215. package/dist/standalone/chunk-KDYNM3GV.js +0 -1
  216. package/dist/standalone/chunk-KP6JQSH2.js +0 -4
  217. package/dist/standalone/chunk-LLXFYRGQ.js +0 -1
  218. package/dist/standalone/chunk-LU3GW7HI.js +0 -1
  219. package/dist/standalone/chunk-M536Y2KX.js +0 -1
  220. package/dist/standalone/chunk-MVGE3JJN.js +0 -1
  221. package/dist/standalone/chunk-MXSHWB3M.js +0 -1
  222. package/dist/standalone/chunk-NL2DZKFI.js +0 -1
  223. package/dist/standalone/chunk-OGVCXKRL.js +0 -2
  224. package/dist/standalone/chunk-OPC233PZ.js +0 -1
  225. package/dist/standalone/chunk-P4CWOYFL.js +0 -1
  226. package/dist/standalone/chunk-PUY3YDXI.js +0 -1
  227. package/dist/standalone/chunk-QZMR6MUG.js +0 -1
  228. package/dist/standalone/chunk-WCWYSOCN.js +0 -62
  229. package/dist/standalone/chunk-WEO3YVP6.js +0 -3
  230. package/dist/standalone/chunk-X2FQ6B5V.js +0 -1
  231. package/dist/standalone/chunk-XIZNYKOD.js +0 -1
  232. package/dist/standalone/chunk-XS6Q6GGV.js +0 -1
  233. package/dist/standalone/chunk-Y3CQDULJ.js +0 -1
  234. package/dist/standalone/chunk-Z2JPEI2V.js +0 -1
  235. /package/dist/standalone/{chunk-4CGALXS3.js → chunk-OG4N2XHD.js} +0 -0
@@ -1 +1 @@
1
- import{c as P}from"react/compiler-runtime";import{useState as j}from"react";import{E as A}from"../packem_shared/error-alert-B59DnrDI.js";import{ShardInput as L}from"../packem_shared/ShardInput-BVn2iCU0.js";import{g as M}from"../packem_shared/badge-BbuuAio7.js";import{c as K}from"../packem_shared/card-CIDGUN6K.js";import{E as W}from"../packem_shared/empty-state-Cg7t_8qu.js";import{n as B,d as H,m as _,p as T,f as O,u as D}from"../packem_shared/table-DdJBrClo.js";import{K as U}from"../packem_shared/use-admin-query-Di3fLE8H.js";import{useAutoRefresh as V}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js";import X from"../packem_shared/useDebounced-Ihdiid_k.js";import{useT as Y}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as q}from"../packem_shared/ADMIN_FUNCTIONS-CpgIo9pj.js";import{jsx as s,jsxs as x,Fragment as z}from"react/jsx-runtime";const E=i=>`${i.toString()} ms`,G=i=>i.totalConnections===0&&i.shapePoke.passes===0&&i.whisper.passes===0,R=i=>{const e=P(8),{label:r,testId:t,value:l}=i;let o;e[0]!==r?(o=s("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r}),e[0]=r,e[1]=o):o=e[1];let n;e[2]!==t||e[3]!==l?(n=s("span",{className:"truncate text-2xl font-semibold tabular-nums text-foreground","data-testid":t,children:l}),e[2]=t,e[3]=l,e[4]=n):n=e[4];let h;return e[5]!==o||e[6]!==n?(h=s(K,{className:"gap-0 py-0",children:x("div",{className:"flex flex-col gap-2.5 p-4",children:[o,n]})}),e[5]=o,e[6]=n,e[7]=h):h=e[7],h},F=i=>{const e=P(48),{counters:r,includeTiming:t,prefix:l,t:o,title:n}=i,h=`${l}-section`;let g;e[0]!==n?(g=s("h3",{className:"text-sm font-medium text-foreground",children:n}),e[0]=n,e[1]=g):g=e[1];const N=`${l}-stats`;let a;e[2]!==o?(a=o("Passes"),e[2]=o,e[3]=a):a=e[3];const c=`${l}-passes`;let v;e[4]!==r.passes||e[5]!==a||e[6]!==c?(v=s(R,{label:a,testId:c,value:r.passes}),e[4]=r.passes,e[5]=a,e[6]=c,e[7]=v):v=e[7];let $;e[8]!==o?($=o("Sockets iterated"),e[8]=o,e[9]=$):$=e[9];const I=`${l}-iterated`;let d;e[10]!==r.socketsIterated||e[11]!==$||e[12]!==I?(d=s(R,{label:$,testId:I,value:r.socketsIterated}),e[10]=r.socketsIterated,e[11]=$,e[12]=I,e[13]=d):d=e[13];let m;e[14]!==o?(m=o("Delivered"),e[14]=o,e[15]=m):m=e[15];const y=`${l}-delivered`;let u;e[16]!==r.socketsDelivered||e[17]!==m||e[18]!==y?(u=s(R,{label:m,testId:y,value:r.socketsDelivered}),e[16]=r.socketsDelivered,e[17]=m,e[18]=y,e[19]=u):u=e[19];let p;e[20]!==o?(p=o("Peak width"),e[20]=o,e[21]=p):p=e[21];const b=`${l}-peak`;let f;e[22]!==r.peakSocketsIterated||e[23]!==p||e[24]!==b?(f=s(R,{label:p,testId:b,value:r.peakSocketsIterated}),e[22]=r.peakSocketsIterated,e[23]=p,e[24]=b,e[25]=f):f=e[25];let k;e[26]!==r.totalMs||e[27]!==t||e[28]!==l||e[29]!==o?(k=t&&s(R,{label:o("Total time"),testId:`${l}-total-ms`,value:E(r.totalMs)}),e[26]=r.totalMs,e[27]=t,e[28]=l,e[29]=o,e[30]=k):k=e[30];let S;e[31]!==r.maxMs||e[32]!==t||e[33]!==l||e[34]!==o?(S=t&&s(R,{label:o("Max time"),testId:`${l}-max-ms`,value:E(r.maxMs)}),e[31]=r.maxMs,e[32]=t,e[33]=l,e[34]=o,e[35]=S):S=e[35];let C;e[36]!==u||e[37]!==f||e[38]!==k||e[39]!==S||e[40]!==N||e[41]!==v||e[42]!==d?(C=x("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":N,children:[v,d,u,f,k,S]}),e[36]=u,e[37]=f,e[38]=k,e[39]=S,e[40]=N,e[41]=v,e[42]=d,e[43]=C):C=e[43];let w;return e[44]!==h||e[45]!==C||e[46]!==g?(w=x("section",{className:"flex flex-col gap-2","data-testid":h,children:[g,C]}),e[44]=h,e[45]=C,e[46]=g,e[47]=w):w=e[47],w},ue=i=>{const e=P(32),{initialShardKey:r}=i,t=Y(),[l,o]=j(r??"");let n;e[0]!==l?(n=l.trim(),e[0]=l,e[1]=n):n=e[1];const h=X(n,400);let g;e[2]===Symbol.for("react.memo_cache_sentinel")?(g={},e[2]=g):g=e[2];let N;e[3]!==h?(N={keepPreviousData:!0,shardKey:h},e[3]=h,e[4]=N):N=e[4];const{data:a,error:c,errorSource:v,refetch:$}=U(q.getFanoutMetrics,g,N);V($,!0);let I;e[5]!==a?(I=a!==void 0&&G(a),e[5]=a,e[6]=I):I=e[6];const d=I;let m;e[7]!==l?(m=s(L,{onChange:o,testId:"fanout-shard-input",value:l}),e[7]=l,e[8]=m):m=e[8];let y;e[9]!==a||e[10]!==t?(y=a!==void 0&&x("div",{className:"ml-auto flex items-center gap-2 text-sm text-muted-foreground","data-testid":"fanout-count",children:[a.promoted&&s(M,{"data-testid":"fanout-promoted",variant:a.relayCount>=a.maxRelays?"destructive":"default",children:a.relayCount>=a.maxRelays?t("auto-scaled: {relayCount}/{maxRelays} relays (at ceiling)",{maxRelays:a.maxRelays,relayCount:a.relayCount}):t("auto-scaled: {relayCount}/{maxRelays} relays",{maxRelays:a.maxRelays,relayCount:a.relayCount})}),s(M,{variant:"secondary",children:t("{count} connections",{count:a.totalConnections})}),s(M,{variant:"secondary",children:t("peak {count} subscribers",{count:a.peakSubscribers})})]}),e[9]=a,e[10]=t,e[11]=y):y=e[11];let u;e[12]!==m||e[13]!==y?(u=x("div",{className:"flex flex-wrap items-center gap-2",children:[m,y]}),e[12]=m,e[13]=y,e[14]=u):u=e[14];let p;e[15]!==c||e[16]!==v?(p=c!==null&&s(A,{error:v,testId:"fanout-error"}),e[15]=c,e[16]=v,e[17]=p):p=e[17];let b;e[18]!==c||e[19]!==d||e[20]!==t?(b=c===null&&d&&s(W,{description:t("Realtime fan-out cost and per-topic subscriber counts for this shard."),icon:s("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:s("path",{d:"M4 12h4l3 7 4-14 3 7h2"})}),testId:"fanout-empty",title:t("No fan-out activity yet.")}),e[18]=c,e[19]=d,e[20]=t,e[21]=b):b=e[21];let f;e[22]!==c||e[23]!==d||e[24]!==a||e[25]!==t?(f=c===null&&a!==void 0&&!d&&x(z,{children:[a.topics.length>0&&x("section",{className:"flex flex-col gap-2","data-testid":"fanout-topics-section",children:[s("h3",{className:"text-sm font-medium text-foreground",children:t("Hot topics")}),s(K,{className:"overflow-hidden py-0",children:x(B,{"data-testid":"fanout-topics-table",children:[s(H,{children:x(_,{children:[s(T,{children:t("Topic")}),s(T,{children:t("Kind")}),s(T,{className:"text-right",children:t("Subscribers")})]})}),s(O,{children:a.topics.map(J)})]})})]}),x("section",{className:"flex flex-col gap-3","data-testid":"fanout-cost",children:[s("h2",{className:"text-sm font-medium text-muted-foreground",children:t("Fan-out cost since this instance woke")}),s(F,{counters:a.shapePoke,includeTiming:!0,prefix:"fanout-poke",t,title:t("Shape pokes")}),s(F,{counters:a.whisper,includeTiming:!1,prefix:"fanout-whisper",t,title:t("Whisper broadcasts")})]})]}),e[22]=c,e[23]=d,e[24]=a,e[25]=t,e[26]=f):f=e[26];let k;return e[27]!==f||e[28]!==u||e[29]!==p||e[30]!==b?(k=x("div",{className:"flex flex-col gap-4","data-testid":"fanout-panel",children:[u,p,b,f]}),e[27]=f,e[28]=u,e[29]=p,e[30]=b,e[31]=k):k=e[31],k};function J(i){return x(_,{"data-testid":"fanout-topic-row",children:[s(D,{className:"font-mono text-xs",children:i.topic}),s(D,{children:s(M,{variant:"outline",children:i.kind})}),s(D,{className:"text-right font-medium tabular-nums",children:i.subscribers})]},`${i.kind}:${i.topic}`)}export{ue as default};
1
+ import{c as P}from"react/compiler-runtime";import{useState as A}from"react";import{E as K}from"../packem_shared/error-alert-t6cpEi0z.js";import{ShardInput as L}from"../packem_shared/ShardInput-BVn2iCU0.js";import{g as M}from"../packem_shared/badge-BbuuAio7.js";import{c as _}from"../packem_shared/card-CIDGUN6K.js";import{E as W}from"../packem_shared/empty-state-Cg7t_8qu.js";import{n as B,d as H,m as j,p as T,f as O,u as D}from"../packem_shared/table-DdJBrClo.js";import{N as U}from"../packem_shared/use-admin-query-QJ-ibl5u.js";import{useAutoRefresh as V}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js";import X from"../packem_shared/useDebounced-Ihdiid_k.js";import{useT as Y}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as q}from"../packem_shared/ADMIN_FUNCTIONS-BnD4aovm.js";import{jsx as s,jsxs as x,Fragment as z}from"react/jsx-runtime";const E=i=>`${i.toString()} ms`,G=i=>i.totalConnections===0&&i.shapePoke.passes===0&&i.whisper.passes===0,R=i=>{const e=P(8),{label:r,testId:t,value:l}=i;let o;e[0]!==r?(o=s("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:r}),e[0]=r,e[1]=o):o=e[1];let n;e[2]!==t||e[3]!==l?(n=s("span",{className:"truncate text-2xl font-semibold tabular-nums text-foreground","data-testid":t,children:l}),e[2]=t,e[3]=l,e[4]=n):n=e[4];let h;return e[5]!==o||e[6]!==n?(h=s(_,{className:"gap-0 py-0",children:x("div",{className:"flex flex-col gap-2.5 p-4",children:[o,n]})}),e[5]=o,e[6]=n,e[7]=h):h=e[7],h},F=i=>{const e=P(48),{counters:r,includeTiming:t,prefix:l,t:o,title:n}=i,h=`${l}-section`;let g;e[0]!==n?(g=s("h3",{className:"text-sm font-medium text-foreground",children:n}),e[0]=n,e[1]=g):g=e[1];const N=`${l}-stats`;let a;e[2]!==o?(a=o("Passes"),e[2]=o,e[3]=a):a=e[3];const c=`${l}-passes`;let v;e[4]!==r.passes||e[5]!==a||e[6]!==c?(v=s(R,{label:a,testId:c,value:r.passes}),e[4]=r.passes,e[5]=a,e[6]=c,e[7]=v):v=e[7];let $;e[8]!==o?($=o("Sockets iterated"),e[8]=o,e[9]=$):$=e[9];const I=`${l}-iterated`;let d;e[10]!==r.socketsIterated||e[11]!==$||e[12]!==I?(d=s(R,{label:$,testId:I,value:r.socketsIterated}),e[10]=r.socketsIterated,e[11]=$,e[12]=I,e[13]=d):d=e[13];let m;e[14]!==o?(m=o("Delivered"),e[14]=o,e[15]=m):m=e[15];const y=`${l}-delivered`;let u;e[16]!==r.socketsDelivered||e[17]!==m||e[18]!==y?(u=s(R,{label:m,testId:y,value:r.socketsDelivered}),e[16]=r.socketsDelivered,e[17]=m,e[18]=y,e[19]=u):u=e[19];let p;e[20]!==o?(p=o("Peak width"),e[20]=o,e[21]=p):p=e[21];const b=`${l}-peak`;let f;e[22]!==r.peakSocketsIterated||e[23]!==p||e[24]!==b?(f=s(R,{label:p,testId:b,value:r.peakSocketsIterated}),e[22]=r.peakSocketsIterated,e[23]=p,e[24]=b,e[25]=f):f=e[25];let k;e[26]!==r.totalMs||e[27]!==t||e[28]!==l||e[29]!==o?(k=t&&s(R,{label:o("Total time"),testId:`${l}-total-ms`,value:E(r.totalMs)}),e[26]=r.totalMs,e[27]=t,e[28]=l,e[29]=o,e[30]=k):k=e[30];let S;e[31]!==r.maxMs||e[32]!==t||e[33]!==l||e[34]!==o?(S=t&&s(R,{label:o("Max time"),testId:`${l}-max-ms`,value:E(r.maxMs)}),e[31]=r.maxMs,e[32]=t,e[33]=l,e[34]=o,e[35]=S):S=e[35];let C;e[36]!==u||e[37]!==f||e[38]!==k||e[39]!==S||e[40]!==N||e[41]!==v||e[42]!==d?(C=x("dl",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3","data-testid":N,children:[v,d,u,f,k,S]}),e[36]=u,e[37]=f,e[38]=k,e[39]=S,e[40]=N,e[41]=v,e[42]=d,e[43]=C):C=e[43];let w;return e[44]!==h||e[45]!==C||e[46]!==g?(w=x("section",{className:"flex flex-col gap-2","data-testid":h,children:[g,C]}),e[44]=h,e[45]=C,e[46]=g,e[47]=w):w=e[47],w},ue=i=>{const e=P(32),{initialShardKey:r}=i,t=Y(),[l,o]=A(r??"");let n;e[0]!==l?(n=l.trim(),e[0]=l,e[1]=n):n=e[1];const h=X(n,400);let g;e[2]===Symbol.for("react.memo_cache_sentinel")?(g={},e[2]=g):g=e[2];let N;e[3]!==h?(N={keepPreviousData:!0,shardKey:h},e[3]=h,e[4]=N):N=e[4];const{data:a,error:c,errorSource:v,refetch:$}=U(q.getFanoutMetrics,g,N);V($,!0);let I;e[5]!==a?(I=a!==void 0&&G(a),e[5]=a,e[6]=I):I=e[6];const d=I;let m;e[7]!==l?(m=s(L,{onChange:o,testId:"fanout-shard-input",value:l}),e[7]=l,e[8]=m):m=e[8];let y;e[9]!==a||e[10]!==t?(y=a!==void 0&&x("div",{className:"ml-auto flex items-center gap-2 text-sm text-muted-foreground","data-testid":"fanout-count",children:[a.promoted&&s(M,{"data-testid":"fanout-promoted",variant:a.relayCount>=a.maxRelays?"destructive":"default",children:a.relayCount>=a.maxRelays?t("auto-scaled: {relayCount}/{maxRelays} relays (at ceiling)",{maxRelays:a.maxRelays,relayCount:a.relayCount}):t("auto-scaled: {relayCount}/{maxRelays} relays",{maxRelays:a.maxRelays,relayCount:a.relayCount})}),s(M,{variant:"secondary",children:t("{count} connections",{count:a.totalConnections})}),s(M,{variant:"secondary",children:t("peak {count} subscribers",{count:a.peakSubscribers})})]}),e[9]=a,e[10]=t,e[11]=y):y=e[11];let u;e[12]!==m||e[13]!==y?(u=x("div",{className:"flex flex-wrap items-center gap-2",children:[m,y]}),e[12]=m,e[13]=y,e[14]=u):u=e[14];let p;e[15]!==c||e[16]!==v?(p=c!==null&&s(K,{error:v,testId:"fanout-error"}),e[15]=c,e[16]=v,e[17]=p):p=e[17];let b;e[18]!==c||e[19]!==d||e[20]!==t?(b=c===null&&d&&s(W,{description:t("Realtime fan-out cost and per-topic subscriber counts for this shard."),icon:s("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:s("path",{d:"M4 12h4l3 7 4-14 3 7h2"})}),testId:"fanout-empty",title:t("No fan-out activity yet.")}),e[18]=c,e[19]=d,e[20]=t,e[21]=b):b=e[21];let f;e[22]!==c||e[23]!==d||e[24]!==a||e[25]!==t?(f=c===null&&a!==void 0&&!d&&x(z,{children:[a.topics.length>0&&x("section",{className:"flex flex-col gap-2","data-testid":"fanout-topics-section",children:[s("h3",{className:"text-sm font-medium text-foreground",children:t("Hot topics")}),s(_,{className:"overflow-hidden py-0",children:x(B,{"data-testid":"fanout-topics-table",children:[s(H,{children:x(j,{children:[s(T,{children:t("Topic")}),s(T,{children:t("Kind")}),s(T,{className:"text-right",children:t("Subscribers")})]})}),s(O,{children:a.topics.map(J)})]})})]}),x("section",{className:"flex flex-col gap-3","data-testid":"fanout-cost",children:[s("h2",{className:"text-sm font-medium text-muted-foreground",children:t("Fan-out cost since this instance woke")}),s(F,{counters:a.shapePoke,includeTiming:!0,prefix:"fanout-poke",t,title:t("Shape pokes")}),s(F,{counters:a.whisper,includeTiming:!1,prefix:"fanout-whisper",t,title:t("Whisper broadcasts")})]})]}),e[22]=c,e[23]=d,e[24]=a,e[25]=t,e[26]=f):f=e[26];let k;return e[27]!==f||e[28]!==u||e[29]!==p||e[30]!==b?(k=x("div",{className:"flex flex-col gap-4","data-testid":"fanout-panel",children:[u,p,b,f]}),e[27]=f,e[28]=u,e[29]=p,e[30]=b,e[31]=k):k=e[31],k};function J(i){return x(j,{"data-testid":"fanout-topic-row",children:[s(D,{className:"font-mono text-xs",children:i.topic}),s(D,{children:s(M,{variant:"outline",children:i.kind})}),s(D,{className:"text-right font-medium tabular-nums",children:i.subscribers})]},`${i.kind}:${i.topic}`)}export{ue as default};
@@ -1 +1 @@
1
- import{useState as k,useMemo as u}from"react";import{E as w}from"../packem_shared/error-alert-B59DnrDI.js";import{g as A}from"../packem_shared/badge-BbuuAio7.js";import{c as T,u as F}from"../packem_shared/card-CIDGUN6K.js";import{E as p}from"../packem_shared/empty-state-Cg7t_8qu.js";import{p as O}from"../packem_shared/label-6uP1obNF.js";import{n as C,d as j,m as h,p as n,f as E,u as i}from"../packem_shared/table-DdJBrClo.js";import{l as I}from"../packem_shared/textarea-Bu2-jKAs.js";import{K as J}from"../packem_shared/use-admin-query-Di3fLE8H.js";import{useT as K}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as V}from"../packem_shared/ADMIN_FUNCTIONS-CpgIo9pj.js";import{jsx as e,jsxs as s}from"react/jsx-runtime";const L=a=>{const t=a.trim();if(t.length===0)return{context:void 0,error:null};try{const o=JSON.parse(t);return o===null||typeof o!="object"||Array.isArray(o)?{context:void 0,error:"Targeting context must be a JSON object."}:{context:o,error:null}}catch{return{context:void 0,error:"Targeting context is not valid JSON."}}},M='{ "targetingKey": "user-123", "plan": "premium" }',_=a=>a.type==="object"?JSON.stringify(a.value):String(a.value),Y=({initialShardKey:a=""})=>{const t=K(),[o,x]=k(""),{context:c,error:f}=L(o),v=u(()=>c===void 0?{}:{context:c},[c]),{data:l,error:y,errorSource:N,liveError:b}=J(V.listFlags,v,{live:!0,shardKey:a}),g=l!==void 0,S=l?.configured??!1,m=u(()=>Array.isArray(l?.flags)?[...l.flags].toSorted((r,$)=>r.key.localeCompare($.key)):[],[l]);let d;return g&&!S?d=e(p,{description:t("No @lunora/flags provider is wired in this deployment. Add lunora/flags.ts with defineFlags({ provider }) to gate code paths on feature flags."),testId:"flags-unconfigured",title:t("No flags provider configured")}):g&&m.length===0?d=e(p,{description:t('A flags provider is configured, but no handler reads a flag yet. Call ctx.flags.boolean("key", false) in a query, mutation, or action.'),testId:"flags-empty",title:t("No flags read")}):d=e(T,{className:"overflow-hidden py-0",children:e(F,{className:"px-0",children:s(C,{"data-testid":"flags-table",children:[e(j,{children:s(h,{children:[e(n,{children:t("Key")}),e(n,{children:t("Type")}),e(n,{children:t("Value")}),e(n,{children:t("Reason")}),e(n,{children:t("Variant")})]})}),e(E,{children:m.map(r=>s(h,{"data-testid":`flags-row-${r.key}`,children:[e(i,{className:"font-mono text-xs",children:r.key}),e(i,{className:"font-mono text-xs text-muted-foreground",children:r.type}),e(i,{className:"font-mono text-xs",children:_(r)}),e(i,{children:r.errorCode===void 0?e("span",{className:"font-mono text-xs text-muted-foreground",children:r.reason??"—"}):e(A,{"data-testid":`flags-error-${r.key}`,variant:"destructive",children:r.errorCode})}),e(i,{className:"font-mono text-xs text-muted-foreground",children:r.variant??"—"})]},r.key))})]})})}),s("div",{className:"flex flex-col gap-6","data-testid":"lunora-flags-panel",children:[y!==null&&e(w,{error:N,testId:"flags-error"}),e("p",{className:"text-sm text-muted-foreground",children:t('Feature flags are read in code with ctx.flags.<type>("key", default). They evaluate through the OpenFeature provider configured in lunora/flags.ts; edit the targeting context below to see how each flag resolves for a given audience.')}),s("div",{className:"flex flex-col gap-2",children:[e(O,{htmlFor:"flags-targeting-context",children:t("Targeting context (JSON)")}),e(I,{className:"font-mono text-xs","data-testid":"flags-context-input",id:"flags-targeting-context",onChange:r=>{x(r.target.value)},placeholder:M,rows:3,value:o}),f!==null&&e("p",{className:"text-xs text-destructive","data-testid":"flags-context-error",role:"alert",children:t(f)}),b!==void 0&&e("p",{className:"text-xs text-amber-600 dark:text-amber-500","data-testid":"flags-live-error",role:"alert",children:t("Live updates unavailable; showing the last evaluation.")})]}),d]})};export{Y as FlagsPanel};
1
+ import{useState as $}from"react";import{E as k}from"../packem_shared/error-alert-t6cpEi0z.js";import{g as w}from"../packem_shared/badge-BbuuAio7.js";import{c as A,u as F}from"../packem_shared/card-CIDGUN6K.js";import{E as u}from"../packem_shared/empty-state-Cg7t_8qu.js";import{p as O}from"../packem_shared/label-6uP1obNF.js";import{n as T,d as C,m as p,p as l,f as j,u as n}from"../packem_shared/table-DdJBrClo.js";import{l as E}from"../packem_shared/textarea-Bu2-jKAs.js";import{N as I}from"../packem_shared/use-admin-query-QJ-ibl5u.js";import{useT as J}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as K}from"../packem_shared/ADMIN_FUNCTIONS-BnD4aovm.js";import{jsx as e,jsxs as i}from"react/jsx-runtime";const L=a=>{const t=a.trim();if(t.length===0)return{context:void 0,error:null};try{const o=JSON.parse(t);return o===null||typeof o!="object"||Array.isArray(o)?{context:void 0,error:"Targeting context must be a JSON object."}:{context:o,error:null}}catch{return{context:void 0,error:"Targeting context is not valid JSON."}}},V='{ "targetingKey": "user-123", "plan": "premium" }',_=a=>a.type==="object"?JSON.stringify(a.value):String(a.value),X=({initialShardKey:a=""})=>{const t=J(),[o,h]=$(""),{context:c,error:f}=L(o),x=c===void 0?{}:{context:c},{data:s,error:v,errorSource:y,liveError:N}=I(K.listFlags,x,{live:!0,shardKey:a}),g=s!==void 0,b=s?.configured??!1,m=Array.isArray(s?.flags)?[...s.flags].toSorted((r,S)=>r.key.localeCompare(S.key)):[];let d;return g&&!b?d=e(u,{description:t("No @lunora/flags provider is wired in this deployment. Add lunora/flags.ts with defineFlags({ provider }) to gate code paths on feature flags."),testId:"flags-unconfigured",title:t("No flags provider configured")}):g&&m.length===0?d=e(u,{description:t('A flags provider is configured, but no handler reads a flag yet. Call ctx.flags.boolean("key", false) in a query, mutation, or action.'),testId:"flags-empty",title:t("No flags read")}):d=e(A,{className:"overflow-hidden py-0",children:e(F,{className:"px-0",children:i(T,{"data-testid":"flags-table",children:[e(C,{children:i(p,{children:[e(l,{children:t("Key")}),e(l,{children:t("Type")}),e(l,{children:t("Value")}),e(l,{children:t("Reason")}),e(l,{children:t("Variant")})]})}),e(j,{children:m.map(r=>i(p,{"data-testid":`flags-row-${r.key}`,children:[e(n,{className:"font-mono text-xs",children:r.key}),e(n,{className:"font-mono text-xs text-muted-foreground",children:r.type}),e(n,{className:"font-mono text-xs",children:_(r)}),e(n,{children:r.errorCode===void 0?e("span",{className:"font-mono text-xs text-muted-foreground",children:r.reason??"—"}):e(w,{"data-testid":`flags-error-${r.key}`,variant:"destructive",children:r.errorCode})}),e(n,{className:"font-mono text-xs text-muted-foreground",children:r.variant??"—"})]},r.key))})]})})}),i("div",{className:"flex flex-col gap-6","data-testid":"lunora-flags-panel",children:[v!==null&&e(k,{error:y,testId:"flags-error"}),e("p",{className:"text-sm text-muted-foreground",children:t('Feature flags are read in code with ctx.flags.<type>("key", default). They evaluate through the OpenFeature provider configured in lunora/flags.ts; edit the targeting context below to see how each flag resolves for a given audience.')}),i("div",{className:"flex flex-col gap-2",children:[e(O,{htmlFor:"flags-targeting-context",children:t("Targeting context (JSON)")}),e(E,{className:"font-mono text-xs","data-testid":"flags-context-input",id:"flags-targeting-context",onChange:r=>{h(r.target.value)},placeholder:V,rows:3,value:o}),f!==null&&e("p",{className:"text-xs text-destructive","data-testid":"flags-context-error",role:"alert",children:t(f)}),N!==void 0&&e("p",{className:"text-xs text-amber-600 dark:text-amber-500","data-testid":"flags-live-error",role:"alert",children:t("Live updates unavailable; showing the last evaluation.")})]}),d]})};export{X as FlagsPanel};
@@ -1 +1 @@
1
- import{c as xe}from"react/compiler-runtime";import{findIssueSolution as Ie,flattenHint as Se}from"@lunora/errors";import{useLunora as Ne}from"@lunora/react";import{useState as re}from"react";import{L as ke}from"../packem_shared/live-status-CGW2JHf_.js";import{ShardInput as Me}from"../packem_shared/ShardInput-BVn2iCU0.js";import{g as ge}from"../packem_shared/badge-BbuuAio7.js";import{u as oe}from"../packem_shared/button-BkCrNcAs.js";import{c as Ae,u as Ce}from"../packem_shared/card-CIDGUN6K.js";import{E as Te}from"../packem_shared/empty-state-Cg7t_8qu.js";import{u as Ke}from"../packem_shared/input-JHu63lTv.js";import{N as _e,y as Ee,_ as Le,k as be,w as Re}from"../packem_shared/select-Bul-DeII.js";import{n as ze,d as Fe,m as ve,p as q,f as Ve,u as j}from"../packem_shared/table-DdJBrClo.js";import{K as We}from"../packem_shared/use-admin-query-Di3fLE8H.js";import{u as je}from"../packem_shared/use-async-submit-DLNCqLFq.js";import qe from"../packem_shared/useDebounced-Ihdiid_k.js";import{useT as ye}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as le}from"../packem_shared/ADMIN_FUNCTIONS-CpgIo9pj.js";import{i as De,f as ne,a as de,c as we,e as Oe}from"../packem_shared/internal-AtZ4bTal.js";import{jsx as s,jsxs as I,Fragment as Be}from"react/jsx-runtime";const fe="none",Ge=["all","open","resolved","ignored"],Ue=["critical","high","medium","low"],He=de(le.resolveIssue),Je=de(le.ignoreIssue),$e=de(le.assignIssue),Pe=de(le.setIssueSeverity),Qe=de(le.explainIssue),Xe=n=>Array.isArray(n?.issues)?n.issues:[],Ye=n=>n==="resolved"?"success":n==="ignored"?"secondary":"warning",Ze=n=>n==="critical"?"destructive":n==="high"?"warning":n==="medium"?"info":"secondary",et=n=>{const e=xe(44),{expanded:o,issue:t,shardKey:S}=n,i=Ne(),l=ye(),[a,C]=re(void 0),{busy:T,error:K,run:F}=je();let _;e[0]!==i||e[1]!==t||e[2]!==F||e[3]!==S?(_=()=>{C(void 0),F(async()=>{const g={culprit:t.culprit,sampleMessage:t.sampleMessage,title:t.title},w=await i.query(Qe,g,we(S));C(w)})},e[0]=i,e[1]=t,e[2]=F,e[3]=S,e[4]=_):_=e[4];const E=_;if(!o)return null;let d;if(e[5]!==t.sampleMessage){const g=Ie(t.sampleMessage);d=g===void 0?void 0:Se(g.body),e[5]=t.sampleMessage,e[6]=d}else d=e[6];const M=d,L=`issues-detail-${t.hash}`;let h;e[7]!==t.sampleMessage?(h=s("p",{className:"whitespace-pre-wrap font-mono text-xs text-muted-foreground",children:t.sampleMessage}),e[7]=t.sampleMessage,e[8]=h):h=e[8];let f;e[9]!==l?(f=l("Suggested fix"),e[9]=l,e[10]=f):f=e[10];let v;e[11]!==f?(v=s("div",{className:"text-xs font-medium text-muted-foreground",children:f}),e[11]=f,e[12]=v):v=e[12];let $;e[13]!==M||e[14]!==t.hash||e[15]!==l?($=M===void 0?s("p",{className:"mt-1 text-sm text-muted-foreground","data-testid":`issues-hint-empty-${t.hash}`,children:l("No known fix for this error yet.")}):s("p",{className:"mt-1 whitespace-pre-wrap text-sm","data-testid":`issues-hint-${t.hash}`,children:M}),e[13]=M,e[14]=t.hash,e[15]=l,e[16]=$):$=e[16];let c;e[17]!==v||e[18]!==$?(c=I("div",{children:[v,$]}),e[17]=v,e[18]=$,e[19]=c):c=e[19];const A=`issues-explain-${t.hash}`;let u;e[20]!==T||e[21]!==l?(u=l(T?"Explaining…":"Explain in plain language"),e[20]=T,e[21]=l,e[22]=u):u=e[22];let N;e[23]!==T||e[24]!==E||e[25]!==u||e[26]!==A?(N=s("div",{children:s(oe,{"data-testid":A,disabled:T,onClick:E,size:"sm",type:"button",variant:"outline",children:u})}),e[23]=T,e[24]=E,e[25]=u,e[26]=A,e[27]=N):N=e[27];let m;e[28]!==K||e[29]!==t.hash?(m=K!==null&&s("p",{className:"text-xs text-destructive","data-testid":`issues-explain-error-${t.hash}`,role:"alert",children:K}),e[28]=K,e[29]=t.hash,e[30]=m):m=e[30];let x;e[31]!==a||e[32]!==t.hash||e[33]!==l?(x=a!==void 0&&(a.degraded?s("p",{className:"text-xs text-muted-foreground","data-testid":`issues-degraded-${t.hash}`,children:a.reason==="no-ai-binding"?l("No AI binding is configured. Wire an AI binding to enable plain-language explanations — the suggested fix above is always available."):l("The AI model could not explain this error right now. The suggested fix above still applies.")}):I("div",{"data-testid":`issues-explanation-${t.hash}`,children:[s("div",{className:"text-xs font-medium text-muted-foreground",children:l("AI explanation")}),s("p",{className:"mt-1 whitespace-pre-wrap text-sm",children:a.explanation}),a.groundedId===void 0&&s("p",{className:"mt-1 text-xs text-muted-foreground","data-testid":`issues-ungrounded-${t.hash}`,children:l("No catalog fix matched this error, so this explanation is the model's own reading of the message. Verify before acting on it.")}),s("p",{className:"mt-1 text-[0.7rem] text-muted-foreground",children:l("Generated by {model}",{model:a.model})})]})),e[31]=a,e[32]=t.hash,e[33]=l,e[34]=x):x=e[34];let p;e[35]!==N||e[36]!==m||e[37]!==x||e[38]!==h||e[39]!==c?(p=s(j,{className:"bg-muted/30",colSpan:7,children:I("div",{className:"flex flex-col gap-3 py-1",children:[h,c,N,m,x]})}),e[35]=N,e[36]=m,e[37]=x,e[38]=h,e[39]=c,e[40]=p):p=e[40];let b;return e[41]!==p||e[42]!==L?(b=s(ve,{"data-testid":L,children:p}),e[41]=p,e[42]=L,e[43]=b):b=e[43],b},tt=n=>{const e=xe(119),{busy:o,issue:t,rowError:S,runTriage:i,shardKey:l}=n,a=ye(),[C,T]=re(!1);let K;e[0]===Symbol.for("react.memo_cache_sentinel")?(K=()=>{T(st)},e[0]=K):K=e[0];const F=K;let _;e[1]!==t.hash||e[2]!==i?(_=ie=>{const ce=ie===null||ie===fe?null:ie;ne(i(t.hash,Pe,{severity:ce}))},e[1]=t.hash,e[2]=i,e[3]=_):_=e[3];const E=_;let d;e[4]!==t.hash||e[5]!==i?(d=ie=>{if(ie.key!=="Enter")return;const ce=ie.currentTarget.value.trim();ne(i(t.hash,$e,{assignee:ce===""?null:ce}))},e[4]=t.hash,e[5]=i,e[6]=d):d=e[6];const M=d,L=`issues-row-${t.hash}`;let h;e[7]!==a?(h=a("Toggle issue details"),e[7]=a,e[8]=h):h=e[8];const f=`issues-toggle-${t.hash}`,v=`mt-1 size-3 shrink-0 text-muted-foreground transition-transform ${C?"rotate-90":""}`;let $;e[9]===Symbol.for("react.memo_cache_sentinel")?($=s("path",{d:"m9 6 6 6-6 6"}),e[9]=$):$=e[9];let c;e[10]!==v?(c=s("svg",{"aria-hidden":"true",className:v,fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24",children:$}),e[10]=v,e[11]=c):c=e[11];let A;e[12]!==t.title?(A=s("span",{className:"block truncate font-medium",title:t.title,children:t.title}),e[12]=t.title,e[13]=A):A=e[13];let u;e[14]!==t.culprit?(u=s("span",{className:"block truncate font-mono text-xs text-muted-foreground",title:t.culprit,children:t.culprit}),e[14]=t.culprit,e[15]=u):u=e[15];let N;e[16]!==A||e[17]!==u?(N=I("span",{className:"min-w-0",children:[A,u]}),e[16]=A,e[17]=u,e[18]=N):N=e[18];let m;e[19]!==C||e[20]!==N||e[21]!==h||e[22]!==f||e[23]!==c?(m=I("button",{"aria-expanded":C,"aria-label":h,className:"flex w-full items-start gap-2 text-left","data-testid":f,onClick:F,type:"button",children:[c,N]}),e[19]=C,e[20]=N,e[21]=h,e[22]=f,e[23]=c,e[24]=m):m=e[24];let x;e[25]!==t.hash||e[26]!==S?(x=S!==void 0&&s("p",{className:"mt-1 text-xs text-destructive","data-testid":`issues-action-error-${t.hash}`,role:"alert",children:S}),e[25]=t.hash,e[26]=S,e[27]=x):x=e[27];let p;e[28]!==m||e[29]!==x?(p=I(j,{className:"max-w-80",children:[m,x]}),e[28]=m,e[29]=x,e[30]=p):p=e[30];const b=`issues-status-${t.hash}`;let g;e[31]!==t.status?(g=Ye(t.status),e[31]=t.status,e[32]=g):g=e[32];let w;e[33]!==t.status||e[34]!==b||e[35]!==g?(w=s(j,{children:s(ge,{"data-testid":b,variant:g,children:t.status})}),e[33]=t.status,e[34]=b,e[35]=g,e[36]=w):w=e[36];const z=t.severity??fe;let R;e[37]!==a?(R=a("Set severity"),e[37]=a,e[38]=R):R=e[38];const r=`issues-severity-${t.hash}`;let V;e[39]!==a?(V=a("—"),e[39]=a,e[40]=V):V=e[40];let W;e[41]!==t.severity||e[42]!==a?(W=t.severity===void 0?s("span",{className:"text-muted-foreground",children:a("—")}):s(ge,{variant:Ze(t.severity),children:t.severity}),e[41]=t.severity,e[42]=a,e[43]=W):W=e[43];let y;e[44]!==V||e[45]!==W?(y=s(_e,{placeholder:V,children:W}),e[44]=V,e[45]=W,e[46]=y):y=e[46];let k;e[47]!==R||e[48]!==r||e[49]!==y?(k=s(Ee,{"aria-label":R,className:"h-7 w-[110px]","data-testid":r,children:y}),e[47]=R,e[48]=r,e[49]=y,e[50]=k):k=e[50];let D;e[51]===Symbol.for("react.memo_cache_sentinel")?(D=Ue.map(at),e[51]=D):D=e[51];let O;e[52]!==a?(O=a("Clear"),e[52]=a,e[53]=O):O=e[53];let B;e[54]!==O?(B=I(Le,{children:[D,s(be,{value:fe,children:O})]}),e[54]=O,e[55]=B):B=e[55];let G;e[56]!==o||e[57]!==E||e[58]!==z||e[59]!==k||e[60]!==B?(G=s(j,{children:I(Re,{disabled:o,onValueChange:E,value:z,children:[k,B]})}),e[56]=o,e[57]=E,e[58]=z,e[59]=k,e[60]=B,e[61]=G):G=e[61];let U;e[62]!==a?(U=a("Assignee"),e[62]=a,e[63]=U):U=e[63];const ue=`issues-assignee-${t.hash}`,me=t.assignee??"",pe=t.assignee??"";let H;e[64]!==a?(H=a("Unassigned"),e[64]=a,e[65]=H):H=e[65];let J;e[66]!==o||e[67]!==M||e[68]!==U||e[69]!==ue||e[70]!==me||e[71]!==pe||e[72]!==H?(J=s(j,{children:s(Ke,{"aria-label":U,className:"h-7 w-32","data-testid":ue,defaultValue:me,disabled:o,onKeyDown:M,placeholder:H},pe)}),e[66]=o,e[67]=M,e[68]=U,e[69]=ue,e[70]=me,e[71]=pe,e[72]=H,e[73]=J):J=e[73];let P;e[74]!==t.count?(P=s(j,{className:"text-right",children:s(ge,{variant:"secondary",children:t.count})}),e[74]=t.count,e[75]=P):P=e[75];let Q;e[76]!==t.lastSeen?(Q=De(t.lastSeen),e[76]=t.lastSeen,e[77]=Q):Q=e[77];let X;e[78]!==Q?(X=s(j,{className:"text-xs tabular-nums text-muted-foreground",children:Q}),e[78]=Q,e[79]=X):X=e[79];let Y;e[80]!==o||e[81]!==t.hash||e[82]!==t.status||e[83]!==i||e[84]!==a?(Y=t.status!=="resolved"&&s(oe,{"data-testid":`issues-resolve-${t.hash}`,disabled:o,onClick:()=>{ne(i(t.hash,He,{}))},size:"xs",variant:"outline",children:a("Resolve")}),e[80]=o,e[81]=t.hash,e[82]=t.status,e[83]=i,e[84]=a,e[85]=Y):Y=e[85];let Z;e[86]!==o||e[87]!==t.hash||e[88]!==t.status||e[89]!==i||e[90]!==a?(Z=t.status!=="ignored"&&s(oe,{"data-testid":`issues-ignore-${t.hash}`,disabled:o,onClick:()=>{ne(i(t.hash,Je,{}))},size:"xs",variant:"ghost",children:a("Ignore")}),e[86]=o,e[87]=t.hash,e[88]=t.status,e[89]=i,e[90]=a,e[91]=Z):Z=e[91];let ee;e[92]!==o||e[93]!==t.assignee||e[94]!==t.hash||e[95]!==t.status||e[96]!==i||e[97]!==a?(ee=t.status!=="open"&&s(oe,{"data-testid":`issues-reopen-${t.hash}`,disabled:o,onClick:()=>{ne(i(t.hash,$e,{assignee:t.assignee??null}))},size:"xs",variant:"ghost",children:a("Reopen")}),e[92]=o,e[93]=t.assignee,e[94]=t.hash,e[95]=t.status,e[96]=i,e[97]=a,e[98]=ee):ee=e[98];let te;e[99]!==Y||e[100]!==Z||e[101]!==ee?(te=s(j,{className:"text-right",children:I("div",{className:"flex justify-end gap-1",children:[Y,Z,ee]})}),e[99]=Y,e[100]=Z,e[101]=ee,e[102]=te):te=e[102];let se;e[103]!==p||e[104]!==w||e[105]!==G||e[106]!==J||e[107]!==P||e[108]!==X||e[109]!==L||e[110]!==te?(se=I(ve,{"data-testid":L,children:[p,w,G,J,P,X,te]}),e[103]=p,e[104]=w,e[105]=G,e[106]=J,e[107]=P,e[108]=X,e[109]=L,e[110]=te,e[111]=se):se=e[111];let ae;e[112]!==C||e[113]!==t||e[114]!==l?(ae=s(et,{expanded:C,issue:t,shardKey:l},t.sampleMessage),e[112]=C,e[113]=t,e[114]=l,e[115]=ae):ae=e[115];let he;return e[116]!==se||e[117]!==ae?(he=I(Be,{children:[se,ae]}),e[116]=se,e[117]=ae,e[118]=he):he=e[118],he},kt=n=>{const e=xe(38),{initialShardKey:o}=n,t=ye(),S=Ne(),[i,l]=re(o??""),[a,C]=re("all"),[T,K]=re(it),[F,_]=re(rt);let E;e[0]!==i?(E=i.trim(),e[0]=i,e[1]=E):E=e[1];const d=qe(E,400);let M;e[2]!==a?(M=a==="all"?{}:{status:a},e[2]=a,e[3]=M):M=e[3];let L;e[4]!==d?(L={live:!0,shardKey:d},e[4]=d,e[5]=L):L=e[5];const{data:h,error:f,liveError:v}=We(le.getIssues,M,L),$=h!==void 0;let c;if(e[6]!==F||e[7]!==T||e[8]!==S||e[9]!==h||e[10]!==d||e[11]!==f||e[12]!==v||e[13]!==$||e[14]!==i||e[15]!==a||e[16]!==t){const A=Xe(h);let u;e[18]!==S||e[19]!==d?(u=async(r,V,W)=>{_(y=>{if(!y.has(r))return y;const k=new Map(y);return k.delete(r),k}),K(y=>new Set(y).add(r));try{await S.query(V,{...W,hash:r},we(d))}catch(y){const k=Oe(y);_(D=>new Map(D).set(r,k))}K(y=>{const k=new Set(y);return k.delete(r),k})},e[18]=S,e[19]=d,e[20]=u):u=e[20];const N=u;let m;e[21]!==t?(m=r=>t(r==="all"?"All":r==="open"?"Open":r==="resolved"?"Resolved":"Ignored"),e[21]=t,e[22]=m):m=e[22];const x=m;let p;e[23]!==f?(p=f!==null&&s("p",{className:"text-sm text-destructive","data-testid":"issues-error",role:"alert",children:f}),e[23]=f,e[24]=p):p=e[24];let b;e[25]!==i?(b=s(Me,{onChange:l,testId:"issues-shard-input",value:i}),e[25]=i,e[26]=b):b=e[26];let g;e[27]!==v?(g=s(ke,{message:v,prefix:"issues"}),e[27]=v,e[28]=g):g=e[28];let w;e[29]!==a||e[30]!==x?(w=Ge.map(r=>s(oe,{"data-active":a===r?"":void 0,"data-testid":`issues-filter-${r}`,onClick:()=>{C(r)},size:"xs",variant:a===r?"default":"outline",children:x(r)},r)),e[29]=a,e[30]=x,e[31]=w):w=e[31];let z;e[32]!==w?(z=s("div",{className:"ms-auto flex items-center gap-1","data-testid":"issues-status-filter",role:"group",children:w}),e[32]=w,e[33]=z):z=e[33];let R;e[34]!==z||e[35]!==b||e[36]!==g?(R=I("div",{className:"flex flex-wrap items-center gap-2",children:[b,g,z]}),e[34]=z,e[35]=b,e[36]=g,e[37]=R):R=e[37],c=I("div",{className:"flex flex-col gap-6","data-testid":"lunora-issues-panel",children:[p,R,$&&A.length===0?s(Te,{description:t("No grouped errors yet. When a function throws or a container crashes, matching errors fold into a single issue here."),testId:"issues-empty",title:t("No issues")}):s(Ae,{className:"overflow-hidden py-0",children:s(Ce,{className:"px-0",children:I(ze,{"data-testid":"issues-table",children:[s(Fe,{children:I(ve,{children:[s(q,{children:t("Issue")}),s(q,{children:t("Status")}),s(q,{children:t("Severity")}),s(q,{children:t("Assignee")}),s(q,{className:"text-right",children:t("Events")}),s(q,{children:t("Last seen")}),s(q,{className:"text-right",children:t("Actions")})]})}),s(Ve,{children:A.map(r=>s(tt,{busy:T.has(r.hash),issue:r,rowError:F.get(r.hash),runTriage:N,shardKey:d},r.hash))})]})})})]}),e[6]=F,e[7]=T,e[8]=S,e[9]=h,e[10]=d,e[11]=f,e[12]=v,e[13]=$,e[14]=i,e[15]=a,e[16]=t,e[17]=c}else c=e[17];return c};function st(n){return!n}function at(n){return s(be,{value:n,children:n},n)}function it(){return new Set}function rt(){return new Map}export{kt as IssuesPanel};
1
+ import{c as xe}from"react/compiler-runtime";import{findIssueSolution as Ie,flattenHint as Se}from"@lunora/errors";import{useLunora as $e}from"@lunora/react";import{useState as re}from"react";import{L as ke}from"../packem_shared/live-status-CmuRLFKf.js";import{ShardInput as Me}from"../packem_shared/ShardInput-BVn2iCU0.js";import{g as ge}from"../packem_shared/badge-BbuuAio7.js";import{u as oe}from"../packem_shared/button-BkCrNcAs.js";import{c as Ae,u as Ce}from"../packem_shared/card-CIDGUN6K.js";import{E as Te}from"../packem_shared/empty-state-Cg7t_8qu.js";import{u as _e}from"../packem_shared/input-JHu63lTv.js";import{N as Ee,y as Ke,_ as Le,k as be,w as Re}from"../packem_shared/select-Bul-DeII.js";import{n as ze,d as Fe,m as ve,p as q,f as Ve,u as j}from"../packem_shared/table-DdJBrClo.js";import{N as We}from"../packem_shared/use-admin-query-QJ-ibl5u.js";import{u as je}from"../packem_shared/use-async-submit-q3ymBJkD.js";import qe from"../packem_shared/useDebounced-Ihdiid_k.js";import{useT as ye}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as le}from"../packem_shared/ADMIN_FUNCTIONS-BnD4aovm.js";import{i as De,f as ne,g as de,d as we,b as Oe}from"../packem_shared/internal-BSIsQVC6.js";import{jsx as s,jsxs as I,Fragment as Be}from"react/jsx-runtime";const fe="none",Ge=["all","open","resolved","ignored"],Ue=["critical","high","medium","low"],He=de(le.resolveIssue),Je=de(le.ignoreIssue),Ne=de(le.assignIssue),Pe=de(le.setIssueSeverity),Qe=de(le.explainIssue),Xe=n=>Array.isArray(n?.issues)?n.issues:[],Ye=n=>n==="resolved"?"success":n==="ignored"?"secondary":"warning",Ze=n=>n==="critical"?"destructive":n==="high"?"warning":n==="medium"?"info":"secondary",et=n=>{const e=xe(44),{expanded:o,issue:t,shardKey:S}=n,i=$e(),l=ye(),[a,C]=re(void 0),{busy:T,error:_,run:F}=je();let E;e[0]!==i||e[1]!==t||e[2]!==F||e[3]!==S?(E=()=>{C(void 0),F(async()=>{const g={culprit:t.culprit,sampleMessage:t.sampleMessage,title:t.title},w=await i.query(Qe,g,we(S));C(w)})},e[0]=i,e[1]=t,e[2]=F,e[3]=S,e[4]=E):E=e[4];const K=E;if(!o)return null;let d;if(e[5]!==t.sampleMessage){const g=Ie(t.sampleMessage);d=g===void 0?void 0:Se(g.body),e[5]=t.sampleMessage,e[6]=d}else d=e[6];const M=d,L=`issues-detail-${t.hash}`;let h;e[7]!==t.sampleMessage?(h=s("p",{className:"whitespace-pre-wrap font-mono text-xs text-muted-foreground",children:t.sampleMessage}),e[7]=t.sampleMessage,e[8]=h):h=e[8];let f;e[9]!==l?(f=l("Suggested fix"),e[9]=l,e[10]=f):f=e[10];let v;e[11]!==f?(v=s("div",{className:"text-xs font-medium text-muted-foreground",children:f}),e[11]=f,e[12]=v):v=e[12];let N;e[13]!==M||e[14]!==t.hash||e[15]!==l?(N=M===void 0?s("p",{className:"mt-1 text-sm text-muted-foreground","data-testid":`issues-hint-empty-${t.hash}`,children:l("No known fix for this error yet.")}):s("p",{className:"mt-1 whitespace-pre-wrap text-sm","data-testid":`issues-hint-${t.hash}`,children:M}),e[13]=M,e[14]=t.hash,e[15]=l,e[16]=N):N=e[16];let c;e[17]!==v||e[18]!==N?(c=I("div",{children:[v,N]}),e[17]=v,e[18]=N,e[19]=c):c=e[19];const A=`issues-explain-${t.hash}`;let u;e[20]!==T||e[21]!==l?(u=l(T?"Explaining…":"Explain in plain language"),e[20]=T,e[21]=l,e[22]=u):u=e[22];let $;e[23]!==T||e[24]!==K||e[25]!==u||e[26]!==A?($=s("div",{children:s(oe,{"data-testid":A,disabled:T,onClick:K,size:"sm",type:"button",variant:"outline",children:u})}),e[23]=T,e[24]=K,e[25]=u,e[26]=A,e[27]=$):$=e[27];let m;e[28]!==_||e[29]!==t.hash?(m=_!==null&&s("p",{className:"text-xs text-destructive","data-testid":`issues-explain-error-${t.hash}`,role:"alert",children:_}),e[28]=_,e[29]=t.hash,e[30]=m):m=e[30];let x;e[31]!==a||e[32]!==t.hash||e[33]!==l?(x=a!==void 0&&(a.degraded?s("p",{className:"text-xs text-muted-foreground","data-testid":`issues-degraded-${t.hash}`,children:a.reason==="no-ai-binding"?l("No AI binding is configured. Wire an AI binding to enable plain-language explanations — the suggested fix above is always available."):l("The AI model could not explain this error right now. The suggested fix above still applies.")}):I("div",{"data-testid":`issues-explanation-${t.hash}`,children:[s("div",{className:"text-xs font-medium text-muted-foreground",children:l("AI explanation")}),s("p",{className:"mt-1 whitespace-pre-wrap text-sm",children:a.explanation}),a.groundedId===void 0&&s("p",{className:"mt-1 text-xs text-muted-foreground","data-testid":`issues-ungrounded-${t.hash}`,children:l("No catalog fix matched this error, so this explanation is the model's own reading of the message. Verify before acting on it.")}),s("p",{className:"mt-1 text-[0.7rem] text-muted-foreground",children:l("Generated by {model}",{model:a.model})})]})),e[31]=a,e[32]=t.hash,e[33]=l,e[34]=x):x=e[34];let p;e[35]!==$||e[36]!==m||e[37]!==x||e[38]!==h||e[39]!==c?(p=s(j,{className:"bg-muted/30",colSpan:7,children:I("div",{className:"flex flex-col gap-3 py-1",children:[h,c,$,m,x]})}),e[35]=$,e[36]=m,e[37]=x,e[38]=h,e[39]=c,e[40]=p):p=e[40];let b;return e[41]!==p||e[42]!==L?(b=s(ve,{"data-testid":L,children:p}),e[41]=p,e[42]=L,e[43]=b):b=e[43],b},tt=n=>{const e=xe(119),{busy:o,issue:t,rowError:S,runTriage:i,shardKey:l}=n,a=ye(),[C,T]=re(!1);let _;e[0]===Symbol.for("react.memo_cache_sentinel")?(_=()=>{T(st)},e[0]=_):_=e[0];const F=_;let E;e[1]!==t.hash||e[2]!==i?(E=ie=>{const ce=ie===null||ie===fe?null:ie;ne(i(t.hash,Pe,{severity:ce}))},e[1]=t.hash,e[2]=i,e[3]=E):E=e[3];const K=E;let d;e[4]!==t.hash||e[5]!==i?(d=ie=>{if(ie.key!=="Enter")return;const ce=ie.currentTarget.value.trim();ne(i(t.hash,Ne,{assignee:ce===""?null:ce}))},e[4]=t.hash,e[5]=i,e[6]=d):d=e[6];const M=d,L=`issues-row-${t.hash}`;let h;e[7]!==a?(h=a("Toggle issue details"),e[7]=a,e[8]=h):h=e[8];const f=`issues-toggle-${t.hash}`,v=`mt-1 size-3 shrink-0 text-muted-foreground transition-transform ${C?"rotate-90":""}`;let N;e[9]===Symbol.for("react.memo_cache_sentinel")?(N=s("path",{d:"m9 6 6 6-6 6"}),e[9]=N):N=e[9];let c;e[10]!==v?(c=s("svg",{"aria-hidden":"true",className:v,fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,viewBox:"0 0 24 24",children:N}),e[10]=v,e[11]=c):c=e[11];let A;e[12]!==t.title?(A=s("span",{className:"block truncate font-medium",title:t.title,children:t.title}),e[12]=t.title,e[13]=A):A=e[13];let u;e[14]!==t.culprit?(u=s("span",{className:"block truncate font-mono text-xs text-muted-foreground",title:t.culprit,children:t.culprit}),e[14]=t.culprit,e[15]=u):u=e[15];let $;e[16]!==A||e[17]!==u?($=I("span",{className:"min-w-0",children:[A,u]}),e[16]=A,e[17]=u,e[18]=$):$=e[18];let m;e[19]!==C||e[20]!==$||e[21]!==h||e[22]!==f||e[23]!==c?(m=I("button",{"aria-expanded":C,"aria-label":h,className:"flex w-full items-start gap-2 text-left","data-testid":f,onClick:F,type:"button",children:[c,$]}),e[19]=C,e[20]=$,e[21]=h,e[22]=f,e[23]=c,e[24]=m):m=e[24];let x;e[25]!==t.hash||e[26]!==S?(x=S!==void 0&&s("p",{className:"mt-1 text-xs text-destructive","data-testid":`issues-action-error-${t.hash}`,role:"alert",children:S}),e[25]=t.hash,e[26]=S,e[27]=x):x=e[27];let p;e[28]!==m||e[29]!==x?(p=I(j,{className:"max-w-80",children:[m,x]}),e[28]=m,e[29]=x,e[30]=p):p=e[30];const b=`issues-status-${t.hash}`;let g;e[31]!==t.status?(g=Ye(t.status),e[31]=t.status,e[32]=g):g=e[32];let w;e[33]!==t.status||e[34]!==b||e[35]!==g?(w=s(j,{children:s(ge,{"data-testid":b,variant:g,children:t.status})}),e[33]=t.status,e[34]=b,e[35]=g,e[36]=w):w=e[36];const z=t.severity??fe;let R;e[37]!==a?(R=a("Set severity"),e[37]=a,e[38]=R):R=e[38];const r=`issues-severity-${t.hash}`;let V;e[39]!==a?(V=a("—"),e[39]=a,e[40]=V):V=e[40];let W;e[41]!==t.severity||e[42]!==a?(W=t.severity===void 0?s("span",{className:"text-muted-foreground",children:a("—")}):s(ge,{variant:Ze(t.severity),children:t.severity}),e[41]=t.severity,e[42]=a,e[43]=W):W=e[43];let y;e[44]!==V||e[45]!==W?(y=s(Ee,{placeholder:V,children:W}),e[44]=V,e[45]=W,e[46]=y):y=e[46];let k;e[47]!==R||e[48]!==r||e[49]!==y?(k=s(Ke,{"aria-label":R,className:"h-7 w-[110px]","data-testid":r,children:y}),e[47]=R,e[48]=r,e[49]=y,e[50]=k):k=e[50];let D;e[51]===Symbol.for("react.memo_cache_sentinel")?(D=Ue.map(at),e[51]=D):D=e[51];let O;e[52]!==a?(O=a("Clear"),e[52]=a,e[53]=O):O=e[53];let B;e[54]!==O?(B=I(Le,{children:[D,s(be,{value:fe,children:O})]}),e[54]=O,e[55]=B):B=e[55];let G;e[56]!==o||e[57]!==K||e[58]!==z||e[59]!==k||e[60]!==B?(G=s(j,{children:I(Re,{disabled:o,onValueChange:K,value:z,children:[k,B]})}),e[56]=o,e[57]=K,e[58]=z,e[59]=k,e[60]=B,e[61]=G):G=e[61];let U;e[62]!==a?(U=a("Assignee"),e[62]=a,e[63]=U):U=e[63];const ue=`issues-assignee-${t.hash}`,me=t.assignee??"",pe=t.assignee??"";let H;e[64]!==a?(H=a("Unassigned"),e[64]=a,e[65]=H):H=e[65];let J;e[66]!==o||e[67]!==M||e[68]!==U||e[69]!==ue||e[70]!==me||e[71]!==pe||e[72]!==H?(J=s(j,{children:s(_e,{"aria-label":U,className:"h-7 w-32","data-testid":ue,defaultValue:me,disabled:o,onKeyDown:M,placeholder:H},pe)}),e[66]=o,e[67]=M,e[68]=U,e[69]=ue,e[70]=me,e[71]=pe,e[72]=H,e[73]=J):J=e[73];let P;e[74]!==t.count?(P=s(j,{className:"text-right",children:s(ge,{variant:"secondary",children:t.count})}),e[74]=t.count,e[75]=P):P=e[75];let Q;e[76]!==t.lastSeen?(Q=De(t.lastSeen),e[76]=t.lastSeen,e[77]=Q):Q=e[77];let X;e[78]!==Q?(X=s(j,{className:"text-xs tabular-nums text-muted-foreground",children:Q}),e[78]=Q,e[79]=X):X=e[79];let Y;e[80]!==o||e[81]!==t.hash||e[82]!==t.status||e[83]!==i||e[84]!==a?(Y=t.status!=="resolved"&&s(oe,{"data-testid":`issues-resolve-${t.hash}`,disabled:o,onClick:()=>{ne(i(t.hash,He,{}))},size:"xs",variant:"outline",children:a("Resolve")}),e[80]=o,e[81]=t.hash,e[82]=t.status,e[83]=i,e[84]=a,e[85]=Y):Y=e[85];let Z;e[86]!==o||e[87]!==t.hash||e[88]!==t.status||e[89]!==i||e[90]!==a?(Z=t.status!=="ignored"&&s(oe,{"data-testid":`issues-ignore-${t.hash}`,disabled:o,onClick:()=>{ne(i(t.hash,Je,{}))},size:"xs",variant:"ghost",children:a("Ignore")}),e[86]=o,e[87]=t.hash,e[88]=t.status,e[89]=i,e[90]=a,e[91]=Z):Z=e[91];let ee;e[92]!==o||e[93]!==t.assignee||e[94]!==t.hash||e[95]!==t.status||e[96]!==i||e[97]!==a?(ee=t.status!=="open"&&s(oe,{"data-testid":`issues-reopen-${t.hash}`,disabled:o,onClick:()=>{ne(i(t.hash,Ne,{assignee:t.assignee??null}))},size:"xs",variant:"ghost",children:a("Reopen")}),e[92]=o,e[93]=t.assignee,e[94]=t.hash,e[95]=t.status,e[96]=i,e[97]=a,e[98]=ee):ee=e[98];let te;e[99]!==Y||e[100]!==Z||e[101]!==ee?(te=s(j,{className:"text-right",children:I("div",{className:"flex justify-end gap-1",children:[Y,Z,ee]})}),e[99]=Y,e[100]=Z,e[101]=ee,e[102]=te):te=e[102];let se;e[103]!==p||e[104]!==w||e[105]!==G||e[106]!==J||e[107]!==P||e[108]!==X||e[109]!==L||e[110]!==te?(se=I(ve,{"data-testid":L,children:[p,w,G,J,P,X,te]}),e[103]=p,e[104]=w,e[105]=G,e[106]=J,e[107]=P,e[108]=X,e[109]=L,e[110]=te,e[111]=se):se=e[111];let ae;e[112]!==C||e[113]!==t||e[114]!==l?(ae=s(et,{expanded:C,issue:t,shardKey:l},t.sampleMessage),e[112]=C,e[113]=t,e[114]=l,e[115]=ae):ae=e[115];let he;return e[116]!==se||e[117]!==ae?(he=I(Be,{children:[se,ae]}),e[116]=se,e[117]=ae,e[118]=he):he=e[118],he},kt=n=>{const e=xe(38),{initialShardKey:o}=n,t=ye(),S=$e(),[i,l]=re(o??""),[a,C]=re("all"),[T,_]=re(it),[F,E]=re(rt);let K;e[0]!==i?(K=i.trim(),e[0]=i,e[1]=K):K=e[1];const d=qe(K,400);let M;e[2]!==a?(M=a==="all"?{}:{status:a},e[2]=a,e[3]=M):M=e[3];let L;e[4]!==d?(L={live:!0,shardKey:d},e[4]=d,e[5]=L):L=e[5];const{data:h,error:f,liveError:v}=We(le.getIssues,M,L),N=h!==void 0;let c;if(e[6]!==F||e[7]!==T||e[8]!==S||e[9]!==h||e[10]!==d||e[11]!==f||e[12]!==v||e[13]!==N||e[14]!==i||e[15]!==a||e[16]!==t){const A=Xe(h);let u;e[18]!==S||e[19]!==d?(u=async(r,V,W)=>{E(y=>{if(!y.has(r))return y;const k=new Map(y);return k.delete(r),k}),_(y=>new Set(y).add(r));try{await S.query(V,{...W,hash:r},we(d))}catch(y){const k=Oe(y);E(D=>new Map(D).set(r,k))}_(y=>{const k=new Set(y);return k.delete(r),k})},e[18]=S,e[19]=d,e[20]=u):u=e[20];const $=u;let m;e[21]!==t?(m=r=>t(r==="all"?"All":r==="open"?"Open":r==="resolved"?"Resolved":"Ignored"),e[21]=t,e[22]=m):m=e[22];const x=m;let p;e[23]!==f?(p=f!==null&&s("p",{className:"text-sm text-destructive","data-testid":"issues-error",role:"alert",children:f}),e[23]=f,e[24]=p):p=e[24];let b;e[25]!==i?(b=s(Me,{onChange:l,testId:"issues-shard-input",value:i}),e[25]=i,e[26]=b):b=e[26];let g;e[27]!==v?(g=s(ke,{message:v,prefix:"issues"}),e[27]=v,e[28]=g):g=e[28];let w;e[29]!==a||e[30]!==x?(w=Ge.map(r=>s(oe,{"data-active":a===r?"":void 0,"data-testid":`issues-filter-${r}`,onClick:()=>{C(r)},size:"xs",variant:a===r?"default":"outline",children:x(r)},r)),e[29]=a,e[30]=x,e[31]=w):w=e[31];let z;e[32]!==w?(z=s("div",{className:"ms-auto flex items-center gap-1","data-testid":"issues-status-filter",role:"group",children:w}),e[32]=w,e[33]=z):z=e[33];let R;e[34]!==z||e[35]!==b||e[36]!==g?(R=I("div",{className:"flex flex-wrap items-center gap-2",children:[b,g,z]}),e[34]=z,e[35]=b,e[36]=g,e[37]=R):R=e[37],c=I("div",{className:"flex flex-col gap-6","data-testid":"lunora-issues-panel",children:[p,R,N&&A.length===0?s(Te,{description:t("No grouped errors yet. When a function throws or a container crashes, matching errors fold into a single issue here."),testId:"issues-empty",title:t("No issues")}):s(Ae,{className:"overflow-hidden py-0",children:s(Ce,{className:"px-0",children:I(ze,{"data-testid":"issues-table",children:[s(Fe,{children:I(ve,{children:[s(q,{children:t("Issue")}),s(q,{children:t("Status")}),s(q,{children:t("Severity")}),s(q,{children:t("Assignee")}),s(q,{className:"text-right",children:t("Events")}),s(q,{children:t("Last seen")}),s(q,{className:"text-right",children:t("Actions")})]})}),s(Ve,{children:A.map(r=>s(tt,{busy:T.has(r.hash),issue:r,rowError:F.get(r.hash),runTriage:$,shardKey:d},r.hash))})]})})})]}),e[6]=F,e[7]=T,e[8]=S,e[9]=h,e[10]=d,e[11]=f,e[12]=v,e[13]=N,e[14]=i,e[15]=a,e[16]=t,e[17]=c}else c=e[17];return c};function st(n){return!n}function at(n){return s(be,{value:n,children:n},n)}function it(){return new Set}function rt(){return new Map}export{kt as IssuesPanel};
@@ -1 +1 @@
1
- import{useLunora as ee}from"@lunora/react";import{useState as Z,useReducer as ae,useEffect as le}from"react";import{c as ve,u as pe}from"../packem_shared/card-CIDGUN6K.js";import{E as Fe}from"../packem_shared/empty-state-Cg7t_8qu.js";import{n as ye,d as he,m as X,p as Y,f as ke,u as Q}from"../packem_shared/table-DdJBrClo.js";import{useT as G}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{f as z,e as H,k as Ke,g as ne}from"../packem_shared/internal-AtZ4bTal.js";import{u as B}from"../packem_shared/button-BkCrNcAs.js";import{f as de}from"../packem_shared/checkbox-StT4Gob6.js";import{u as re}from"../packem_shared/input-JHu63lTv.js";import{g as se,c as ie,N as oe,v as ce}from"../packem_shared/studio-BmWFd-Rz.js";import{c as te}from"react/compiler-runtime";import{p as q}from"../packem_shared/label-6uP1obNF.js";import{l as fe}from"../packem_shared/textarea-Bu2-jKAs.js";import{N as Ee,y as Ve,k as Me,_ as Te,w as Ie}from"../packem_shared/select-Bul-DeII.js";import{jsx as r,jsxs as $,Fragment as be}from"react/jsx-runtime";import{g as Oe}from"../packem_shared/badge-BbuuAio7.js";const _e=l=>{const e=l.trim();if(e==="")return;const n=Number(e);return Number.isFinite(n)&&n>0?Math.floor(n):void 0},Je=l=>l===void 0?"—":new Date(l*1e3).toISOString(),De=l=>new TextEncoder().encode(l).length,ge=l=>{if(l.trim()!=="")try{return JSON.stringify(JSON.parse(l),void 0,2)}catch{return}},xe=l=>{if(l.trim()==="")return!0;try{return JSON.parse(l),!0}catch{return!1}},Ne=[{key:"seconds",seconds:1},{key:"minutes",seconds:60},{key:"hours",seconds:3600},{key:"days",seconds:86400}],ue=(l,e)=>{const n=l.trim();if(n==="")return"";const c=Number(n),s=Ne.find(v=>v.key===e)?.seconds??1;return Number.isFinite(c)&&c>0?String(Math.round(c*s)):n},Ce=l=>{const e=l.trim();if(e==="")return!0;const n=Number(e);return Number.isInteger(n)&&n>=60},we=(l,e,n,c)=>{const s=_e(l.ttl);return{expiration:s===void 0?c:void 0,expirationTtl:s,key:e,metadata:l.metadata.trim()===""?void 0:JSON.parse(l.metadata),namespace:n,value:l.value}},$e=l=>{const e=te(60),{helper:n,id:c,invalid:s,onChange:v,testId:i}=l,t=G(),[a,p]=Z(""),[o,g]=Z("seconds");let f;e[0]!==v||e[1]!==o?(f=b=>{p(b.target.value),v(ue(b.target.value,o))},e[0]=v,e[1]=o,e[2]=f):f=e[2];const I=f;let V;e[3]!==a||e[4]!==v?(V=b=>{b!==null&&(g(b),v(ue(a,b)))},e[3]=a,e[4]=v,e[5]=V):V=e[5];const O=V;let y;e[6]!==t?(y=t("days"),e[6]=t,e[7]=y):y=e[7];let m;e[8]!==t?(m=t("hours"),e[8]=t,e[9]=m):m=e[9];let h;e[10]!==t?(h=t("minutes"),e[10]=t,e[11]=h):h=e[11];let x;e[12]!==t?(x=t("seconds"),e[12]=t,e[13]=x):x=e[13];let N;e[14]!==y||e[15]!==m||e[16]!==h||e[17]!==x?(N={days:y,hours:m,minutes:h,seconds:x},e[14]=y,e[15]=m,e[16]=h,e[17]=x,e[18]=N):N=e[18];const C=N;let k;e[19]!==t?(k=t("Expires after"),e[19]=t,e[20]=k):k=e[20];let w;e[21]!==c||e[22]!==k?(w=r(q,{className:"text-xs",htmlFor:c,children:k}),e[21]=c,e[22]=k,e[23]=w):w=e[23];let F;e[24]!==t?(F=t("No expiration"),e[24]=t,e[25]=F):F=e[25];let _;e[26]!==a||e[27]!==c||e[28]!==s||e[29]!==I||e[30]!==F||e[31]!==i?(_=r(re,{"aria-invalid":s,className:"flex-1","data-testid":i,id:c,inputMode:"numeric",onChange:I,placeholder:F,value:a}),e[26]=a,e[27]=c,e[28]=s,e[29]=I,e[30]=F,e[31]=i,e[32]=_):_=e[32];let M;e[33]!==t?(M=t("TTL unit"),e[33]=t,e[34]=M):M=e[34];const D=`${i}-unit`;let J;e[35]===Symbol.for("react.memo_cache_sentinel")?(J=r(Ee,{}),e[35]=J):J=e[35];let d;e[36]!==M||e[37]!==D?(d=r(Ve,{"aria-label":M,className:"w-[7.5rem]","data-testid":D,children:J}),e[36]=M,e[37]=D,e[38]=d):d=e[38];let u;e[39]!==C?(u=Ne.map(b=>r(Me,{value:b.key,children:C[b.key]},b.key)),e[39]=C,e[40]=u):u=e[40];let E;e[41]!==u?(E=r(Te,{children:u}),e[41]=u,e[42]=E):E=e[42];let S;e[43]!==O||e[44]!==d||e[45]!==E||e[46]!==o?(S=$(Ie,{onValueChange:O,value:o,children:[d,E]}),e[43]=O,e[44]=d,e[45]=E,e[46]=o,e[47]=S):S=e[47];let T;e[48]!==_||e[49]!==S?(T=$("div",{className:"flex gap-2",children:[_,S]}),e[48]=_,e[49]=S,e[50]=T):T=e[50];let K;e[51]!==n||e[52]!==s||e[53]!==t||e[54]!==i?(K=s?r("p",{className:"text-xs text-destructive","data-testid":`${i}-invalid`,children:t("TTL must be at least 60 seconds.")}):n!==void 0&&r("p",{className:"text-xs text-muted-foreground",children:n}),e[51]=n,e[52]=s,e[53]=t,e[54]=i,e[55]=K):K=e[55];let L;return e[56]!==T||e[57]!==K||e[58]!==w?(L=$("div",{className:"mb-3 grid gap-1",children:[w,T,K]}),e[56]=T,e[57]=K,e[58]=w,e[59]=L):L=e[59],L},Se=l=>{const e=te(36),{id:n,invalidTestId:c,onChange:s,testId:v,valid:i,value:t}=l,a=G();let p;e[0]!==t?(p=ge(t),e[0]=t,e[1]=p):p=e[1];const o=p;let g;e[2]!==a?(g=a("Metadata (JSON)"),e[2]=a,e[3]=g):g=e[3];let f;e[4]!==n||e[5]!==g?(f=r(q,{className:"text-xs",htmlFor:n,children:g}),e[4]=n,e[5]=g,e[6]=f):f=e[6];const I=`${v}-format`,V=o===void 0;let O;e[7]!==o||e[8]!==s?(O=()=>{o!==void 0&&s(o)},e[7]=o,e[8]=s,e[9]=O):O=e[9];let y;e[10]!==a?(y=a("Format JSON"),e[10]=a,e[11]=y):y=e[11];let m;e[12]!==I||e[13]!==V||e[14]!==O||e[15]!==y?(m=r(B,{"data-testid":I,disabled:V,onClick:O,size:"sm",variant:"outline",children:y}),e[12]=I,e[13]=V,e[14]=O,e[15]=y,e[16]=m):m=e[16];let h;e[17]!==f||e[18]!==m?(h=$("div",{className:"flex items-center justify-between gap-2",children:[f,m]}),e[17]=f,e[18]=m,e[19]=h):h=e[19];const x=!i;let N;e[20]!==s?(N=F=>{s(F.target.value)},e[20]=s,e[21]=N):N=e[21];let C;e[22]!==n||e[23]!==x||e[24]!==N||e[25]!==v||e[26]!==t?(C=r(fe,{"aria-invalid":x,className:"min-h-[4rem] font-mono text-xs","data-testid":v,id:n,onChange:N,value:t}),e[22]=n,e[23]=x,e[24]=N,e[25]=v,e[26]=t,e[27]=C):C=e[27];let k;e[28]!==c||e[29]!==a||e[30]!==i?(k=!i&&r("p",{className:"text-xs text-destructive","data-testid":c,children:a("Metadata must be valid JSON.")}),e[28]=c,e[29]=a,e[30]=i,e[31]=k):k=e[31];let w;return e[32]!==C||e[33]!==k||e[34]!==h?(w=$("div",{className:"mb-3 grid gap-1",children:[h,C,k]}),e[32]=C,e[33]=k,e[34]=h,e[35]=w):w=e[35],w},Le={busy:!1,error:null,metadata:"",name:"",ttl:"",value:""},Be=(l,e)=>{switch(e.type){case"setField":return{...l,[e.field]:e.value};case"submitFailed":return{...l,busy:!1,error:e.error};case"submitStart":return{...l,busy:!0,error:null};default:return l}},Pe=l=>{const e=te(73),{namespace:n,onCancel:c,onCreated:s}=l,v=ee(),i=G(),[t,a]=ae(Be,Le);let p;e[0]!==t.metadata?(p=xe(t.metadata),e[0]=t.metadata,e[1]=p):p=e[1];const o=p;let g;e[2]!==t.ttl?(g=Ce(t.ttl),e[2]=t.ttl,e[3]=g):g=e[3];const f=g;let I;e[4]!==o||e[5]!==t.busy||e[6]!==t.name||e[7]!==f?(I=t.name.trim()!==""&&o&&f&&!t.busy,e[4]=o,e[5]=t.busy,e[6]=t.name,e[7]=f,e[8]=I):I=e[8];const V=I;let O;e[9]!==V||e[10]!==v||e[11]!==n||e[12]!==s||e[13]!==t.metadata||e[14]!==t.name||e[15]!==t.ttl||e[16]!==t.value?(O=()=>{V&&(a({type:"submitStart"}),z((async()=>{try{await v.putKvValue(we({metadata:t.metadata,ttl:t.ttl,value:t.value},t.name,n)),s()}catch(j){a({error:H(j),type:"submitFailed"})}})()))},e[9]=V,e[10]=v,e[11]=n,e[12]=s,e[13]=t.metadata,e[14]=t.name,e[15]=t.ttl,e[16]=t.value,e[17]=O):O=e[17];const y=O;let m;e[18]!==i?(m=i("Key name"),e[18]=i,e[19]=m):m=e[19];let h;e[20]!==m?(h=r(q,{className:"text-xs",htmlFor:"kv-create-name",children:m}),e[20]=m,e[21]=h):h=e[21];let x;e[22]===Symbol.for("react.memo_cache_sentinel")?(x=j=>{a({field:"name",type:"setField",value:j.target.value})},e[22]=x):x=e[22];let N;e[23]!==i?(N=i("Key name"),e[23]=i,e[24]=N):N=e[24];let C;e[25]!==t.name||e[26]!==N?(C=r(re,{autoFocus:!0,"data-testid":"kv-create-name",id:"kv-create-name",onChange:x,placeholder:N,value:t.name}),e[25]=t.name,e[26]=N,e[27]=C):C=e[27];let k;e[28]!==h||e[29]!==C?(k=$("div",{className:"grid gap-1",children:[h,C]}),e[28]=h,e[29]=C,e[30]=k):k=e[30];let w;e[31]!==i?(w=i("Value"),e[31]=i,e[32]=w):w=e[32];let F;e[33]!==w?(F=r(q,{className:"text-xs",htmlFor:"kv-create-value",children:w}),e[33]=w,e[34]=F):F=e[34];let _;e[35]===Symbol.for("react.memo_cache_sentinel")?(_=j=>{a({field:"value",type:"setField",value:j.target.value})},e[35]=_):_=e[35];let M;e[36]!==t.value?(M=r(fe,{className:"min-h-[6rem] font-mono text-xs","data-testid":"kv-create-value",id:"kv-create-value",onChange:_,value:t.value}),e[36]=t.value,e[37]=M):M=e[37];let D;e[38]!==F||e[39]!==M?(D=$("div",{className:"grid gap-1",children:[F,M]}),e[38]=F,e[39]=M,e[40]=D):D=e[40];const J=!f;let d;e[41]===Symbol.for("react.memo_cache_sentinel")?(d=j=>{a({field:"ttl",type:"setField",value:j})},e[41]=d):d=e[41];let u;e[42]!==J?(u=r($e,{id:"kv-create-ttl",invalid:J,onChange:d,testId:"kv-create-ttl"}),e[42]=J,e[43]=u):u=e[43];let E;e[44]===Symbol.for("react.memo_cache_sentinel")?(E=j=>{a({field:"metadata",type:"setField",value:j})},e[44]=E):E=e[44];let S;e[45]!==o||e[46]!==t.metadata?(S=r(Se,{id:"kv-create-metadata",invalidTestId:"kv-create-metadata-invalid",onChange:E,testId:"kv-create-metadata",valid:o,value:t.metadata}),e[45]=o,e[46]=t.metadata,e[47]=S):S=e[47];const T=!V;let K;e[48]!==t.busy||e[49]!==i?(K=t.busy?i("Creating…"):i("Create key"),e[48]=t.busy,e[49]=i,e[50]=K):K=e[50];let L;e[51]!==y||e[52]!==T||e[53]!==K?(L=r(B,{"data-testid":"kv-create-submit",disabled:T,onClick:y,children:K}),e[51]=y,e[52]=T,e[53]=K,e[54]=L):L=e[54];const b=t.busy;let P;e[55]!==i?(P=i("Cancel"),e[55]=i,e[56]=P):P=e[56];let A;e[57]!==c||e[58]!==t.busy||e[59]!==P?(A=r(B,{"data-testid":"kv-create-cancel",disabled:b,onClick:c,variant:"outline",children:P}),e[57]=c,e[58]=t.busy,e[59]=P,e[60]=A):A=e[60];let R;e[61]!==L||e[62]!==A?(R=$("div",{className:"flex flex-wrap gap-2",children:[L,A]}),e[61]=L,e[62]=A,e[63]=R):R=e[63];let U;e[64]!==t.error?(U=t.error!==null&&r("p",{className:"text-sm text-destructive","data-testid":"kv-create-error",role:"alert",children:t.error}),e[64]=t.error,e[65]=U):U=e[65];let W;return e[66]!==k||e[67]!==D||e[68]!==u||e[69]!==S||e[70]!==R||e[71]!==U?(W=$("div",{className:"grid gap-3 px-4 pb-4","data-testid":"kv-create-form",children:[k,D,u,S,R,U]}),e[66]=k,e[67]=D,e[68]=u,e[69]=S,e[70]=R,e[71]=U,e[72]=W):W=e[72],W},je={busy:"",editedMetadata:"",editedTtl:"",editedValue:"",loadError:null,loading:!0,value:null,writeError:null},Ae=(l,e)=>{switch(e.type){case"deleteStart":return{...l,busy:"deleting",writeError:null};case"editMetadata":return{...l,editedMetadata:e.value};case"editTtl":return{...l,editedTtl:e.value};case"editValue":return{...l,editedValue:e.value};case"loaded":return{...l,editedMetadata:e.metadata===null||e.metadata===void 0?"":JSON.stringify(e.metadata,null,2),editedValue:e.value??"",loading:!1,value:e.value};case"loadFailed":return{...l,loadError:e.error,loading:!1};case"saveOk":return{...l,busy:"",value:l.editedValue};case"saveStart":return{...l,busy:"saving",writeError:null};case"writeFailed":return{...l,busy:"",writeError:e.error};default:return l}},ze=l=>{const e=te(67),{expiration:n,keyName:c,namespace:s,onDeleted:v}=l,i=ee(),t=G(),[a,p]=ae(Ae,je);let o,g;e[0]!==i||e[1]!==c||e[2]!==s?(o=()=>{const b={cancelled:!1};return z((async()=>{try{const P=await i.getKvValue({key:c,namespace:s});b.cancelled||p({metadata:P.metadata,type:"loaded",value:P.value})}catch(P){const A=P;b.cancelled||p({error:H(A),type:"loadFailed"})}})()),()=>{b.cancelled=!0}},g=[i,s,c],e[0]=i,e[1]=c,e[2]=s,e[3]=o,e[4]=g):(o=e[3],g=e[4]),le(o,g);let f;e[5]===Symbol.for("react.memo_cache_sentinel")?(f=b=>{p({type:"editValue",value:b.target.value})},e[5]=f):f=e[5];const I=f;let V;e[6]===Symbol.for("react.memo_cache_sentinel")?(V=b=>{p({type:"editMetadata",value:b})},e[6]=V):V=e[6];const O=V;let y;e[7]!==a.editedValue?(y=ge(a.editedValue),e[7]=a.editedValue,e[8]=y):y=e[8];const m=y;let h;e[9]!==a.editedMetadata?(h=xe(a.editedMetadata),e[9]=a.editedMetadata,e[10]=h):h=e[10];const x=h;let N;e[11]!==a.editedTtl?(N=Ce(a.editedTtl),e[11]=a.editedTtl,e[12]=N):N=e[12];const C=N;let k;e[13]!==m?(k=()=>{m!==void 0&&p({type:"editValue",value:m})},e[13]=m,e[14]=k):k=e[14];const w=k;let F;e[15]!==i||e[16]!==n||e[17]!==c||e[18]!==x||e[19]!==s||e[20]!==a.editedMetadata||e[21]!==a.editedTtl||e[22]!==a.editedValue||e[23]!==t?(F=()=>{if(!x){p({error:t("Metadata must be valid JSON."),type:"writeFailed"});return}p({type:"saveStart"}),z((async()=>{try{await i.putKvValue(we({metadata:a.editedMetadata,ttl:a.editedTtl,value:a.editedValue},c,s,n)),p({type:"saveOk"})}catch(b){p({error:H(b),type:"writeFailed"})}})())},e[15]=i,e[16]=n,e[17]=c,e[18]=x,e[19]=s,e[20]=a.editedMetadata,e[21]=a.editedTtl,e[22]=a.editedValue,e[23]=t,e[24]=F):F=e[24];const _=F;let M;e[25]!==i||e[26]!==c||e[27]!==s||e[28]!==v?(M=()=>{p({type:"deleteStart"}),z((async()=>{try{await i.deleteKvKey({key:c,namespace:s}),v(c)}catch(b){p({error:H(b),type:"writeFailed"})}})())},e[25]=i,e[26]=c,e[27]=s,e[28]=v,e[29]=M):M=e[29];const D=M;let J;e[30]!==c?(J=()=>{ne(c)},e[30]=c,e[31]=J):J=e[31];let d;e[32]!==t?(d=t("Copy key"),e[32]=t,e[33]=d):d=e[33];let u;e[34]!==J||e[35]!==d?(u=r("div",{className:"mb-2 flex justify-end",children:r(B,{"data-testid":"kv-copy-key-btn",onClick:J,size:"sm",variant:"outline",children:d})}),e[34]=J,e[35]=d,e[36]=u):u=e[36];let E;e[37]!==a.loadError?(E=a.loadError!==null&&r("p",{className:"mb-2 text-sm text-destructive","data-testid":"kv-value-error",role:"alert",children:a.loadError}),e[37]=a.loadError,e[38]=E):E=e[38];let S;e[39]!==a.loading||e[40]!==t?(S=a.loading&&r("p",{className:"text-sm text-muted-foreground","data-testid":"kv-value-loading",children:t("Loading…")}),e[39]=a.loading,e[40]=t,e[41]=S):S=e[41];let T;e[42]!==m||e[43]!==x||e[44]!==D||e[45]!==w||e[46]!==_||e[47]!==a.busy||e[48]!==a.editedMetadata||e[49]!==a.editedValue||e[50]!==a.loading||e[51]!==a.value||e[52]!==a.writeError||e[53]!==t||e[54]!==C?(T=!a.loading&&a.value!==null&&$(be,{children:[$("div",{className:"mb-1 flex flex-wrap items-center gap-2",children:[r(q,{className:"text-xs",htmlFor:"kv-value-editor",children:t("Value")}),m!==void 0&&r(Oe,{variant:"secondary",children:t("JSON")}),r("span",{className:"ml-auto text-xs tabular-nums text-muted-foreground","data-testid":"kv-value-size",children:Ke(De(a.editedValue))})]}),r("textarea",{"aria-label":t("KV value"),className:"mb-2 min-h-[8rem] w-full rounded border border-border bg-muted/30 p-2 font-mono text-xs","data-testid":"kv-value-editor",id:"kv-value-editor",onChange:I,value:a.editedValue}),$("div",{className:"mb-3 flex flex-wrap gap-2",children:[r(B,{"data-testid":"kv-format-btn",disabled:m===void 0,onClick:w,size:"sm",variant:"outline",children:t("Format JSON")}),r(B,{"data-testid":"kv-copy-value-btn",onClick:()=>{ne(a.editedValue)},size:"sm",variant:"outline",children:t("Copy value")})]}),r($e,{helper:t("Leave blank to keep the current expiration."),id:"kv-ttl-input",invalid:!C,onChange:b=>{p({type:"editTtl",value:b})},testId:"kv-ttl-input"}),r(Se,{id:"kv-metadata-editor",invalidTestId:"kv-metadata-invalid",onChange:O,testId:"kv-metadata-editor",valid:x,value:a.editedMetadata}),$("div",{className:"flex flex-wrap gap-2",children:[r(B,{"data-testid":"kv-save-btn",disabled:a.busy!==""||!x||!C,onClick:_,children:a.busy==="saving"?t("Saving…"):t("Save")}),r(B,{"data-testid":"kv-delete-btn",disabled:a.busy!=="",onClick:D,variant:"destructive",children:a.busy==="deleting"?t("Deleting…"):t("Delete")})]}),a.writeError!==null&&r("p",{className:"mt-2 text-sm text-destructive","data-testid":"kv-save-error",role:"alert",children:a.writeError})]}),e[42]=m,e[43]=x,e[44]=D,e[45]=w,e[46]=_,e[47]=a.busy,e[48]=a.editedMetadata,e[49]=a.editedValue,e[50]=a.loading,e[51]=a.value,e[52]=a.writeError,e[53]=t,e[54]=C,e[55]=T):T=e[55];let K;e[56]!==a.loadError||e[57]!==a.loading||e[58]!==a.value||e[59]!==t?(K=!a.loading&&a.value===null&&a.loadError===null&&r("p",{className:"text-sm text-muted-foreground","data-testid":"kv-absent",children:t("Key is absent or has no value.")}),e[56]=a.loadError,e[57]=a.loading,e[58]=a.value,e[59]=t,e[60]=K):K=e[60];let L;return e[61]!==u||e[62]!==E||e[63]!==S||e[64]!==T||e[65]!==K?(L=$("div",{className:"px-4 pb-4","data-testid":"kv-value-section",children:[u,E,S,T,K]}),e[61]=u,e[62]=E,e[63]=S,e[64]=T,e[65]=K,e[66]=L):L=e[66],L},me=100,He={appliedPrefix:"",bulk:[],bulkBusy:!1,bulkError:null,cursor:null,keys:null,listComplete:!1,loadError:null,loading:!1,prefixInput:"",reloadNonce:0,selectedKey:null},Re=(l,e)=>{switch(e.type){case"appendPage":return{...l,cursor:e.cursor,keys:[...l.keys??[],...e.keys],listComplete:e.listComplete,loading:!1};case"applyFilter":return{...l,appliedPrefix:l.prefixInput,bulk:[],bulkError:null,cursor:null,keys:null,listComplete:!1,selectedKey:null};case"bulkDeleted":{const n=new Set(e.deleted);return{...l,bulk:l.bulk.filter(c=>!n.has(c)),bulkBusy:!1,bulkError:e.error,keys:l.keys===null?null:l.keys.filter(c=>!n.has(c.name)),selectedKey:l.selectedKey!==null&&n.has(l.selectedKey)?null:l.selectedKey}}case"bulkDeleteStart":return{...l,bulkBusy:!0,bulkError:null};case"firstPage":return{...l,cursor:e.cursor,keys:e.keys,listComplete:e.listComplete,loading:!1};case"keyDeleted":return{...l,bulk:l.bulk.filter(n=>n!==e.name),keys:l.keys===null?null:l.keys.filter(n=>n.name!==e.name),selectedKey:null};case"loadFailed":return{...l,loadError:e.error,loading:!1};case"loadStart":return{...l,loadError:null,loading:!0};case"prefixInput":return{...l,prefixInput:e.value};case"reload":return{...l,bulk:[],bulkError:null,reloadNonce:l.reloadNonce+1,selectedKey:null};case"selectKey":return{...l,selectedKey:e.name};case"toggleAllBulk":return{...l,bulk:e.names};case"toggleBulk":return{...l,bulk:l.bulk.includes(e.name)?l.bulk.filter(n=>n!==e.name):[...l.bulk,e.name]};default:return l}},Ue=({namespace:l})=>{const e=ee(),n=G(),[c,s]=ae(Re,He),{appliedPrefix:v,bulk:i,bulkBusy:t,bulkError:a,cursor:p,keys:o,listComplete:g,loadError:f,loading:I,prefixInput:V,reloadNonce:O,selectedKey:y}=c,[m,h]=Z(!1);le(()=>{const d={cancelled:!1};return z((async()=>{s({type:"loadStart"});try{const u=await e.listKvKeys({limit:me,namespace:l,prefix:v===""?void 0:v});d.cancelled||s({cursor:u.cursor??null,keys:u.keys,listComplete:u.listComplete,type:"firstPage"})}catch(u){d.cancelled||s({error:H(u),type:"loadFailed"})}})()),()=>{d.cancelled=!0}},[e,l,v,O]);const x=d=>{s({type:"prefixInput",value:d.target.value})},N=()=>{s({type:"applyFilter"})},C=d=>{s({name:d.currentTarget.dataset.key??null,type:"selectKey"})},k=()=>{p!==null&&(s({type:"loadStart"}),z((async()=>{try{const d=await e.listKvKeys({cursor:p,limit:me,namespace:l,prefix:v===""?void 0:v});s({cursor:d.cursor??null,keys:d.keys,listComplete:d.listComplete,type:"appendPage"})}catch(d){s({error:H(d),type:"loadFailed"})}})()))},w=d=>{s({name:d,type:"keyDeleted"})},F=d=>{s({name:d,type:"toggleBulk"})},_=d=>{s({names:d&&o!==null?o.map(u=>u.name):[],type:"toggleAllBulk"})},M=()=>{if(i.length===0)return;const d=[...i];s({type:"bulkDeleteStart"}),z((async()=>{const u=await Promise.allSettled(d.map(T=>e.deleteKvKey({key:T,namespace:l}))),E=d.filter((T,K)=>u[K]?.status==="fulfilled"),S=d.length-E.length;s({deleted:E,error:S>0?n("Failed to delete {count} keys.",{count:S}):null,type:"bulkDeleted"})})())},D=()=>{h(!1),s({type:"reload"})},J=o!==null&&o.length>0&&i.length===o.length;return $(be,{children:[$("section",{className:"border border-border bg-card p-3","data-testid":"kv-keys-section",children:[$("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[r(re,{"aria-label":n("Filter keys by prefix"),className:"min-w-[16rem] flex-1","data-testid":"kv-prefix-input",onChange:x,placeholder:n("Filter by prefix…"),value:V}),r(B,{"data-testid":"kv-filter-btn",disabled:I,onClick:N,children:n("Filter")}),r(B,{"data-testid":"kv-new-key-btn",onClick:()=>{h(d=>!d)},variant:"outline",children:n("New key")}),i.length>0&&r(B,{"data-testid":"kv-bulk-delete-btn",disabled:t,onClick:M,variant:"destructive",children:t?n("Deleting…"):n("Delete {count}",{count:i.length})})]}),a!==null&&r("p",{className:"mb-2 text-sm text-destructive","data-testid":"kv-bulk-error",role:"alert",children:a}),f!==null&&r("p",{className:"text-sm text-destructive","data-testid":"kv-keys-error",role:"alert",children:f}),o!==null&&o.length===0&&!I&&r("p",{className:"text-sm text-muted-foreground","data-testid":"kv-no-keys",children:n("No keys.")}),o!==null&&o.length>0&&r(ve,{className:"overflow-hidden py-0",children:r(pe,{className:"px-0",children:$(ye,{"data-testid":"kv-key-table",children:[r(he,{children:$(X,{children:[r(Y,{className:"w-10",children:r(de,{"aria-label":n("Select all"),checked:J,"data-testid":"kv-select-all",onCheckedChange:_})}),r(Y,{children:n("Key")}),r(Y,{children:n("Expiration")})]})}),r(ke,{children:o.map(d=>$(X,{className:d.name===y?"border-l-2 border-l-royal-amethyst bg-muted/50":"cursor-pointer","data-key":d.name,"data-testid":`kv-key-row-${d.name}`,onClick:C,children:[r(Q,{onClick:u=>{u.stopPropagation()},children:r(de,{"aria-label":n("Select {name}",{name:d.name}),checked:i.includes(d.name),"data-testid":`kv-select-${d.name}`,onCheckedChange:()=>{F(d.name)}})}),r(Q,{className:"font-mono text-xs",children:d.name}),r(Q,{className:"tabular-nums text-xs",children:Je(d.expiration)})]},d.name))})]})})}),!g&&p!==null&&r("div",{className:"mt-2",children:r(B,{"data-testid":"kv-load-more",disabled:I,onClick:k,variant:"outline",children:n(I?"Loading…":"Load more")})})]}),r(se,{onOpenChange:d=>{d||h(!1)},open:m,children:$(ie,{className:"w-full gap-0 overflow-y-auto sm:max-w-md","data-testid":"kv-create-sheet",side:"right",children:[r(oe,{children:r(ce,{children:n("New key")})}),r(Pe,{namespace:l,onCancel:()=>{h(!1)},onCreated:D})]})}),r(se,{onOpenChange:d=>{d||s({name:null,type:"selectKey"})},open:y!==null,children:$(ie,{className:"w-full gap-0 overflow-y-auto sm:max-w-md","data-testid":"kv-editor-sheet",side:"right",children:[r(oe,{children:r(ce,{className:"truncate font-mono text-xs",children:y})}),y!==null&&r(ze,{expiration:o?.find(d=>d.name===y)?.expiration,keyName:y,namespace:l,onDeleted:w},`${l}:${y}`)]})})]})},ct=({loadNamespaces:l}={})=>{const e=ee(),n=G(),[c,s]=Z(null),[v,i]=Z(null),[t,a]=Z(null);le(()=>{const o={cancelled:!1};return z((async()=>{try{const g=await(l??(()=>e.listKvNamespaces()))();o.cancelled||(s(g),i(null),a(f=>f??g[0]?.binding??null))}catch(g){o.cancelled||(s(null),i(H(g)))}})()),()=>{o.cancelled=!0}},[e,l]);const p=o=>{a(o.currentTarget.dataset.ns??null)};return $("div",{className:"flex flex-col gap-4","data-testid":"lunora-kv-browser",children:[v!==null&&r("p",{className:"text-sm text-destructive","data-testid":"kv-ns-error",role:"alert",children:v}),c!==null&&c.length===0&&r(Fe,{description:n("Add a kv_namespaces binding to wrangler.jsonc — it appears here automatically, no wiring needed."),icon:r("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:r("path",{d:"M5 5h14v4H5V5Zm0 5h14v4H5v-4Zm0 5h14v4H5v-4Z"})}),testId:"kv-empty",title:n("No KV namespaces.")}),c!==null&&c.length>0&&r(ve,{className:"overflow-hidden py-0",children:r(pe,{className:"px-0",children:$(ye,{"data-testid":"kv-namespace-table",children:[r(he,{children:r(X,{children:r(Y,{children:n("Namespace")})})}),r(ke,{children:c.map(o=>r(X,{className:o.binding===t?"border-l-2 border-l-royal-amethyst bg-muted/50":"cursor-pointer","data-ns":o.binding,"data-testid":`kv-ns-row-${o.binding}`,onClick:p,children:r(Q,{className:"font-mono text-xs",children:o.binding})},o.binding))})]})})}),t!==null&&r(Ue,{namespace:t},t)]})};export{ct as KvBrowser};
1
+ import{useLunora as ee}from"@lunora/react";import{useState as Z,useReducer as ae,useEffect as le}from"react";import{c as ve,u as pe}from"../packem_shared/card-CIDGUN6K.js";import{E as Fe}from"../packem_shared/empty-state-Cg7t_8qu.js";import{n as ye,d as he,m as X,p as Y,f as ke,u as Q}from"../packem_shared/table-DdJBrClo.js";import{useT as q}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{f as z,b as H,k as Ke,c as ne}from"../packem_shared/internal-BSIsQVC6.js";import{u as B}from"../packem_shared/button-BkCrNcAs.js";import{f as de}from"../packem_shared/checkbox-StT4Gob6.js";import{u as re}from"../packem_shared/input-JHu63lTv.js";import{g as se,c as ie,N as oe,v as ce}from"../packem_shared/studio-q-C-acL7.js";import{c as te}from"react/compiler-runtime";import{p as G}from"../packem_shared/label-6uP1obNF.js";import{l as be}from"../packem_shared/textarea-Bu2-jKAs.js";import{N as Ee,y as Ve,k as Me,_ as Te,w as Ie}from"../packem_shared/select-Bul-DeII.js";import{jsx as r,jsxs as $,Fragment as fe}from"react/jsx-runtime";import{g as Oe}from"../packem_shared/badge-BbuuAio7.js";const _e=l=>{const e=l.trim();if(e==="")return;const d=Number(e);return Number.isFinite(d)&&d>0?Math.floor(d):void 0},Je=l=>l===void 0?"—":new Date(l*1e3).toISOString(),De=l=>new TextEncoder().encode(l).length,ge=l=>{if(l.trim()!=="")try{return JSON.stringify(JSON.parse(l),void 0,2)}catch{return}},xe=l=>{if(l.trim()==="")return!0;try{return JSON.parse(l),!0}catch{return!1}},Ne=[{key:"seconds",seconds:1},{key:"minutes",seconds:60},{key:"hours",seconds:3600},{key:"days",seconds:86400}],ue=(l,e)=>{const d=l.trim();if(d==="")return"";const c=Number(d),s=Ne.find(m=>m.key===e)?.seconds??1;return Number.isFinite(c)&&c>0?String(Math.round(c*s)):d},Ce=l=>{const e=l.trim();if(e==="")return!0;const d=Number(e);return Number.isInteger(d)&&d>=60},we=(l,e,d,c)=>{const s=_e(l.ttl);return{expiration:s===void 0?c:void 0,expirationTtl:s,key:e,metadata:l.metadata.trim()===""?void 0:JSON.parse(l.metadata),namespace:d,value:l.value}},$e=l=>{const e=te(60),{helper:d,id:c,invalid:s,onChange:m,testId:i}=l,t=q(),[a,v]=Z(""),[o,g]=Z("seconds");let b;e[0]!==m||e[1]!==o?(b=f=>{v(f.target.value),m(ue(f.target.value,o))},e[0]=m,e[1]=o,e[2]=b):b=e[2];const I=b;let E;e[3]!==a||e[4]!==m?(E=f=>{f!==null&&(g(f),m(ue(a,f)))},e[3]=a,e[4]=m,e[5]=E):E=e[5];const O=E;let p;e[6]!==t?(p=t("days"),e[6]=t,e[7]=p):p=e[7];let u;e[8]!==t?(u=t("hours"),e[8]=t,e[9]=u):u=e[9];let y;e[10]!==t?(y=t("minutes"),e[10]=t,e[11]=y):y=e[11];let x;e[12]!==t?(x=t("seconds"),e[12]=t,e[13]=x):x=e[13];let N;e[14]!==p||e[15]!==u||e[16]!==y||e[17]!==x?(N={days:p,hours:u,minutes:y,seconds:x},e[14]=p,e[15]=u,e[16]=y,e[17]=x,e[18]=N):N=e[18];const C=N;let k;e[19]!==t?(k=t("Expires after"),e[19]=t,e[20]=k):k=e[20];let w;e[21]!==c||e[22]!==k?(w=r(G,{className:"text-xs",htmlFor:c,children:k}),e[21]=c,e[22]=k,e[23]=w):w=e[23];let K;e[24]!==t?(K=t("No expiration"),e[24]=t,e[25]=K):K=e[25];let J;e[26]!==a||e[27]!==c||e[28]!==s||e[29]!==I||e[30]!==K||e[31]!==i?(J=r(re,{"aria-invalid":s,className:"flex-1","data-testid":i,id:c,inputMode:"numeric",onChange:I,placeholder:K,value:a}),e[26]=a,e[27]=c,e[28]=s,e[29]=I,e[30]=K,e[31]=i,e[32]=J):J=e[32];let V;e[33]!==t?(V=t("TTL unit"),e[33]=t,e[34]=V):V=e[34];const L=`${i}-unit`;let D;e[35]===Symbol.for("react.memo_cache_sentinel")?(D=r(Ee,{}),e[35]=D):D=e[35];let M;e[36]!==V||e[37]!==L?(M=r(Ve,{"aria-label":V,className:"w-[7.5rem]","data-testid":L,children:D}),e[36]=V,e[37]=L,e[38]=M):M=e[38];let n;e[39]!==C?(n=Ne.map(f=>r(Me,{value:f.key,children:C[f.key]},f.key)),e[39]=C,e[40]=n):n=e[40];let h;e[41]!==n?(h=r(Te,{children:n}),e[41]=n,e[42]=h):h=e[42];let S;e[43]!==O||e[44]!==M||e[45]!==h||e[46]!==o?(S=$(Ie,{onValueChange:O,value:o,children:[M,h]}),e[43]=O,e[44]=M,e[45]=h,e[46]=o,e[47]=S):S=e[47];let T;e[48]!==J||e[49]!==S?(T=$("div",{className:"flex gap-2",children:[J,S]}),e[48]=J,e[49]=S,e[50]=T):T=e[50];let F;e[51]!==d||e[52]!==s||e[53]!==t||e[54]!==i?(F=s?r("p",{className:"text-xs text-destructive","data-testid":`${i}-invalid`,children:t("TTL must be at least 60 seconds.")}):d!==void 0&&r("p",{className:"text-xs text-muted-foreground",children:d}),e[51]=d,e[52]=s,e[53]=t,e[54]=i,e[55]=F):F=e[55];let _;return e[56]!==T||e[57]!==F||e[58]!==w?(_=$("div",{className:"mb-3 grid gap-1",children:[w,T,F]}),e[56]=T,e[57]=F,e[58]=w,e[59]=_):_=e[59],_},Se=l=>{const e=te(36),{id:d,invalidTestId:c,onChange:s,testId:m,valid:i,value:t}=l,a=q();let v;e[0]!==t?(v=ge(t),e[0]=t,e[1]=v):v=e[1];const o=v;let g;e[2]!==a?(g=a("Metadata (JSON)"),e[2]=a,e[3]=g):g=e[3];let b;e[4]!==d||e[5]!==g?(b=r(G,{className:"text-xs",htmlFor:d,children:g}),e[4]=d,e[5]=g,e[6]=b):b=e[6];const I=`${m}-format`,E=o===void 0;let O;e[7]!==o||e[8]!==s?(O=()=>{o!==void 0&&s(o)},e[7]=o,e[8]=s,e[9]=O):O=e[9];let p;e[10]!==a?(p=a("Format JSON"),e[10]=a,e[11]=p):p=e[11];let u;e[12]!==I||e[13]!==E||e[14]!==O||e[15]!==p?(u=r(B,{"data-testid":I,disabled:E,onClick:O,size:"sm",variant:"outline",children:p}),e[12]=I,e[13]=E,e[14]=O,e[15]=p,e[16]=u):u=e[16];let y;e[17]!==b||e[18]!==u?(y=$("div",{className:"flex items-center justify-between gap-2",children:[b,u]}),e[17]=b,e[18]=u,e[19]=y):y=e[19];const x=!i;let N;e[20]!==s?(N=K=>{s(K.target.value)},e[20]=s,e[21]=N):N=e[21];let C;e[22]!==d||e[23]!==x||e[24]!==N||e[25]!==m||e[26]!==t?(C=r(be,{"aria-invalid":x,className:"min-h-[4rem] font-mono text-xs","data-testid":m,id:d,onChange:N,value:t}),e[22]=d,e[23]=x,e[24]=N,e[25]=m,e[26]=t,e[27]=C):C=e[27];let k;e[28]!==c||e[29]!==a||e[30]!==i?(k=!i&&r("p",{className:"text-xs text-destructive","data-testid":c,children:a("Metadata must be valid JSON.")}),e[28]=c,e[29]=a,e[30]=i,e[31]=k):k=e[31];let w;return e[32]!==C||e[33]!==k||e[34]!==y?(w=$("div",{className:"mb-3 grid gap-1",children:[y,C,k]}),e[32]=C,e[33]=k,e[34]=y,e[35]=w):w=e[35],w},Le={busy:!1,error:null,metadata:"",name:"",ttl:"",value:""},Be=(l,e)=>{switch(e.type){case"setField":return{...l,[e.field]:e.value};case"submitFailed":return{...l,busy:!1,error:e.error};case"submitStart":return{...l,busy:!0,error:null};default:return l}},Pe=l=>{const e=te(73),{namespace:d,onCancel:c,onCreated:s}=l,m=ee(),i=q(),[t,a]=ae(Be,Le);let v;e[0]!==t.metadata?(v=xe(t.metadata),e[0]=t.metadata,e[1]=v):v=e[1];const o=v;let g;e[2]!==t.ttl?(g=Ce(t.ttl),e[2]=t.ttl,e[3]=g):g=e[3];const b=g;let I;e[4]!==o||e[5]!==t.busy||e[6]!==t.name||e[7]!==b?(I=t.name.trim()!==""&&o&&b&&!t.busy,e[4]=o,e[5]=t.busy,e[6]=t.name,e[7]=b,e[8]=I):I=e[8];const E=I;let O;e[9]!==E||e[10]!==m||e[11]!==d||e[12]!==s||e[13]!==t.metadata||e[14]!==t.name||e[15]!==t.ttl||e[16]!==t.value?(O=()=>{E&&(a({type:"submitStart"}),z((async()=>{try{await m.putKvValue(we({metadata:t.metadata,ttl:t.ttl,value:t.value},t.name,d)),s()}catch(j){a({error:H(j),type:"submitFailed"})}})()))},e[9]=E,e[10]=m,e[11]=d,e[12]=s,e[13]=t.metadata,e[14]=t.name,e[15]=t.ttl,e[16]=t.value,e[17]=O):O=e[17];const p=O;let u;e[18]!==i?(u=i("Key name"),e[18]=i,e[19]=u):u=e[19];let y;e[20]!==u?(y=r(G,{className:"text-xs",htmlFor:"kv-create-name",children:u}),e[20]=u,e[21]=y):y=e[21];let x;e[22]===Symbol.for("react.memo_cache_sentinel")?(x=j=>{a({field:"name",type:"setField",value:j.target.value})},e[22]=x):x=e[22];let N;e[23]!==i?(N=i("Key name"),e[23]=i,e[24]=N):N=e[24];let C;e[25]!==t.name||e[26]!==N?(C=r(re,{autoFocus:!0,"data-testid":"kv-create-name",id:"kv-create-name",onChange:x,placeholder:N,value:t.name}),e[25]=t.name,e[26]=N,e[27]=C):C=e[27];let k;e[28]!==y||e[29]!==C?(k=$("div",{className:"grid gap-1",children:[y,C]}),e[28]=y,e[29]=C,e[30]=k):k=e[30];let w;e[31]!==i?(w=i("Value"),e[31]=i,e[32]=w):w=e[32];let K;e[33]!==w?(K=r(G,{className:"text-xs",htmlFor:"kv-create-value",children:w}),e[33]=w,e[34]=K):K=e[34];let J;e[35]===Symbol.for("react.memo_cache_sentinel")?(J=j=>{a({field:"value",type:"setField",value:j.target.value})},e[35]=J):J=e[35];let V;e[36]!==t.value?(V=r(be,{className:"min-h-[6rem] font-mono text-xs","data-testid":"kv-create-value",id:"kv-create-value",onChange:J,value:t.value}),e[36]=t.value,e[37]=V):V=e[37];let L;e[38]!==K||e[39]!==V?(L=$("div",{className:"grid gap-1",children:[K,V]}),e[38]=K,e[39]=V,e[40]=L):L=e[40];const D=!b;let M;e[41]===Symbol.for("react.memo_cache_sentinel")?(M=j=>{a({field:"ttl",type:"setField",value:j})},e[41]=M):M=e[41];let n;e[42]!==D?(n=r($e,{id:"kv-create-ttl",invalid:D,onChange:M,testId:"kv-create-ttl"}),e[42]=D,e[43]=n):n=e[43];let h;e[44]===Symbol.for("react.memo_cache_sentinel")?(h=j=>{a({field:"metadata",type:"setField",value:j})},e[44]=h):h=e[44];let S;e[45]!==o||e[46]!==t.metadata?(S=r(Se,{id:"kv-create-metadata",invalidTestId:"kv-create-metadata-invalid",onChange:h,testId:"kv-create-metadata",valid:o,value:t.metadata}),e[45]=o,e[46]=t.metadata,e[47]=S):S=e[47];const T=!E;let F;e[48]!==t.busy||e[49]!==i?(F=t.busy?i("Creating…"):i("Create key"),e[48]=t.busy,e[49]=i,e[50]=F):F=e[50];let _;e[51]!==p||e[52]!==T||e[53]!==F?(_=r(B,{"data-testid":"kv-create-submit",disabled:T,onClick:p,children:F}),e[51]=p,e[52]=T,e[53]=F,e[54]=_):_=e[54];const f=t.busy;let P;e[55]!==i?(P=i("Cancel"),e[55]=i,e[56]=P):P=e[56];let A;e[57]!==c||e[58]!==t.busy||e[59]!==P?(A=r(B,{"data-testid":"kv-create-cancel",disabled:f,onClick:c,variant:"outline",children:P}),e[57]=c,e[58]=t.busy,e[59]=P,e[60]=A):A=e[60];let R;e[61]!==_||e[62]!==A?(R=$("div",{className:"flex flex-wrap gap-2",children:[_,A]}),e[61]=_,e[62]=A,e[63]=R):R=e[63];let U;e[64]!==t.error?(U=t.error!==null&&r("p",{className:"text-sm text-destructive","data-testid":"kv-create-error",role:"alert",children:t.error}),e[64]=t.error,e[65]=U):U=e[65];let W;return e[66]!==k||e[67]!==L||e[68]!==n||e[69]!==S||e[70]!==R||e[71]!==U?(W=$("div",{className:"grid gap-3 px-4 pb-4","data-testid":"kv-create-form",children:[k,L,n,S,R,U]}),e[66]=k,e[67]=L,e[68]=n,e[69]=S,e[70]=R,e[71]=U,e[72]=W):W=e[72],W},je={busy:"",editedMetadata:"",editedTtl:"",editedValue:"",loadError:null,loading:!0,value:null,writeError:null},Ae=(l,e)=>{switch(e.type){case"deleteStart":return{...l,busy:"deleting",writeError:null};case"editMetadata":return{...l,editedMetadata:e.value};case"editTtl":return{...l,editedTtl:e.value};case"editValue":return{...l,editedValue:e.value};case"loaded":return{...l,editedMetadata:e.metadata===null||e.metadata===void 0?"":JSON.stringify(e.metadata,null,2),editedValue:e.value??"",loading:!1,value:e.value};case"loadFailed":return{...l,loadError:e.error,loading:!1};case"saveOk":return{...l,busy:"",value:l.editedValue};case"saveStart":return{...l,busy:"saving",writeError:null};case"writeFailed":return{...l,busy:"",writeError:e.error};default:return l}},ze=l=>{const e=te(67),{expiration:d,keyName:c,namespace:s,onDeleted:m}=l,i=ee(),t=q(),[a,v]=ae(Ae,je);let o,g;e[0]!==i||e[1]!==c||e[2]!==s?(o=()=>{const f={cancelled:!1};return z((async()=>{try{const P=await i.getKvValue({key:c,namespace:s});f.cancelled||v({metadata:P.metadata,type:"loaded",value:P.value})}catch(P){const A=P;f.cancelled||v({error:H(A),type:"loadFailed"})}})()),()=>{f.cancelled=!0}},g=[i,s,c],e[0]=i,e[1]=c,e[2]=s,e[3]=o,e[4]=g):(o=e[3],g=e[4]),le(o,g);let b;e[5]===Symbol.for("react.memo_cache_sentinel")?(b=f=>{v({type:"editValue",value:f.target.value})},e[5]=b):b=e[5];const I=b;let E;e[6]===Symbol.for("react.memo_cache_sentinel")?(E=f=>{v({type:"editMetadata",value:f})},e[6]=E):E=e[6];const O=E;let p;e[7]!==a.editedValue?(p=ge(a.editedValue),e[7]=a.editedValue,e[8]=p):p=e[8];const u=p;let y;e[9]!==a.editedMetadata?(y=xe(a.editedMetadata),e[9]=a.editedMetadata,e[10]=y):y=e[10];const x=y;let N;e[11]!==a.editedTtl?(N=Ce(a.editedTtl),e[11]=a.editedTtl,e[12]=N):N=e[12];const C=N;let k;e[13]!==u?(k=()=>{u!==void 0&&v({type:"editValue",value:u})},e[13]=u,e[14]=k):k=e[14];const w=k;let K;e[15]!==i||e[16]!==d||e[17]!==c||e[18]!==x||e[19]!==s||e[20]!==a.editedMetadata||e[21]!==a.editedTtl||e[22]!==a.editedValue||e[23]!==t?(K=()=>{if(!x){v({error:t("Metadata must be valid JSON."),type:"writeFailed"});return}v({type:"saveStart"}),z((async()=>{try{await i.putKvValue(we({metadata:a.editedMetadata,ttl:a.editedTtl,value:a.editedValue},c,s,d)),v({type:"saveOk"})}catch(f){v({error:H(f),type:"writeFailed"})}})())},e[15]=i,e[16]=d,e[17]=c,e[18]=x,e[19]=s,e[20]=a.editedMetadata,e[21]=a.editedTtl,e[22]=a.editedValue,e[23]=t,e[24]=K):K=e[24];const J=K;let V;e[25]!==i||e[26]!==c||e[27]!==s||e[28]!==m?(V=()=>{v({type:"deleteStart"}),z((async()=>{try{await i.deleteKvKey({key:c,namespace:s}),m(c)}catch(f){v({error:H(f),type:"writeFailed"})}})())},e[25]=i,e[26]=c,e[27]=s,e[28]=m,e[29]=V):V=e[29];const L=V;let D;e[30]!==c?(D=()=>{ne(c)},e[30]=c,e[31]=D):D=e[31];let M;e[32]!==t?(M=t("Copy key"),e[32]=t,e[33]=M):M=e[33];let n;e[34]!==D||e[35]!==M?(n=r("div",{className:"mb-2 flex justify-end",children:r(B,{"data-testid":"kv-copy-key-btn",onClick:D,size:"sm",variant:"outline",children:M})}),e[34]=D,e[35]=M,e[36]=n):n=e[36];let h;e[37]!==a.loadError?(h=a.loadError!==null&&r("p",{className:"mb-2 text-sm text-destructive","data-testid":"kv-value-error",role:"alert",children:a.loadError}),e[37]=a.loadError,e[38]=h):h=e[38];let S;e[39]!==a.loading||e[40]!==t?(S=a.loading&&r("p",{className:"text-sm text-muted-foreground","data-testid":"kv-value-loading",children:t("Loading…")}),e[39]=a.loading,e[40]=t,e[41]=S):S=e[41];let T;e[42]!==u||e[43]!==x||e[44]!==L||e[45]!==w||e[46]!==J||e[47]!==a.busy||e[48]!==a.editedMetadata||e[49]!==a.editedValue||e[50]!==a.loading||e[51]!==a.value||e[52]!==a.writeError||e[53]!==t||e[54]!==C?(T=!a.loading&&a.value!==null&&$(fe,{children:[$("div",{className:"mb-1 flex flex-wrap items-center gap-2",children:[r(G,{className:"text-xs",htmlFor:"kv-value-editor",children:t("Value")}),u!==void 0&&r(Oe,{variant:"secondary",children:t("JSON")}),r("span",{className:"ml-auto text-xs tabular-nums text-muted-foreground","data-testid":"kv-value-size",children:Ke(De(a.editedValue))})]}),r("textarea",{"aria-label":t("KV value"),className:"mb-2 min-h-[8rem] w-full rounded border border-border bg-muted/30 p-2 font-mono text-xs","data-testid":"kv-value-editor",id:"kv-value-editor",onChange:I,value:a.editedValue}),$("div",{className:"mb-3 flex flex-wrap gap-2",children:[r(B,{"data-testid":"kv-format-btn",disabled:u===void 0,onClick:w,size:"sm",variant:"outline",children:t("Format JSON")}),r(B,{"data-testid":"kv-copy-value-btn",onClick:()=>{ne(a.editedValue)},size:"sm",variant:"outline",children:t("Copy value")})]}),r($e,{helper:t("Leave blank to keep the current expiration."),id:"kv-ttl-input",invalid:!C,onChange:f=>{v({type:"editTtl",value:f})},testId:"kv-ttl-input"}),r(Se,{id:"kv-metadata-editor",invalidTestId:"kv-metadata-invalid",onChange:O,testId:"kv-metadata-editor",valid:x,value:a.editedMetadata}),$("div",{className:"flex flex-wrap gap-2",children:[r(B,{"data-testid":"kv-save-btn",disabled:a.busy!==""||!x||!C,onClick:J,children:a.busy==="saving"?t("Saving…"):t("Save")}),r(B,{"data-testid":"kv-delete-btn",disabled:a.busy!=="",onClick:L,variant:"destructive",children:a.busy==="deleting"?t("Deleting…"):t("Delete")})]}),a.writeError!==null&&r("p",{className:"mt-2 text-sm text-destructive","data-testid":"kv-save-error",role:"alert",children:a.writeError})]}),e[42]=u,e[43]=x,e[44]=L,e[45]=w,e[46]=J,e[47]=a.busy,e[48]=a.editedMetadata,e[49]=a.editedValue,e[50]=a.loading,e[51]=a.value,e[52]=a.writeError,e[53]=t,e[54]=C,e[55]=T):T=e[55];let F;e[56]!==a.loadError||e[57]!==a.loading||e[58]!==a.value||e[59]!==t?(F=!a.loading&&a.value===null&&a.loadError===null&&r("p",{className:"text-sm text-muted-foreground","data-testid":"kv-absent",children:t("Key is absent or has no value.")}),e[56]=a.loadError,e[57]=a.loading,e[58]=a.value,e[59]=t,e[60]=F):F=e[60];let _;return e[61]!==n||e[62]!==h||e[63]!==S||e[64]!==T||e[65]!==F?(_=$("div",{className:"px-4 pb-4","data-testid":"kv-value-section",children:[n,h,S,T,F]}),e[61]=n,e[62]=h,e[63]=S,e[64]=T,e[65]=F,e[66]=_):_=e[66],_},me=100,He={appliedPrefix:"",bulk:[],bulkBusy:!1,bulkError:null,cursor:null,keys:null,listComplete:!1,loadError:null,loading:!1,prefixInput:"",reloadNonce:0,selectedKey:null},Re=(l,e)=>{switch(e.type){case"appendPage":return{...l,cursor:e.cursor,keys:[...l.keys??[],...e.keys],listComplete:e.listComplete,loading:!1};case"applyFilter":return{...l,appliedPrefix:l.prefixInput,bulk:[],bulkError:null,cursor:null,keys:null,listComplete:!1,selectedKey:null};case"bulkDeleted":{const d=new Set(e.deleted);return{...l,bulk:l.bulk.filter(c=>!d.has(c)),bulkBusy:!1,bulkError:e.error,keys:l.keys===null?null:l.keys.filter(c=>!d.has(c.name)),selectedKey:l.selectedKey!==null&&d.has(l.selectedKey)?null:l.selectedKey}}case"bulkDeleteStart":return{...l,bulkBusy:!0,bulkError:null};case"firstPage":return{...l,cursor:e.cursor,keys:e.keys,listComplete:e.listComplete,loading:!1};case"keyDeleted":return{...l,bulk:l.bulk.filter(d=>d!==e.name),keys:l.keys===null?null:l.keys.filter(d=>d.name!==e.name),selectedKey:null};case"loadFailed":return{...l,loadError:e.error,loading:!1};case"loadStart":return{...l,loadError:null,loading:!0};case"prefixInput":return{...l,prefixInput:e.value};case"reload":return{...l,bulk:[],bulkError:null,reloadNonce:l.reloadNonce+1,selectedKey:null};case"selectKey":return{...l,selectedKey:e.name};case"toggleAllBulk":return{...l,bulk:e.names};case"toggleBulk":return{...l,bulk:l.bulk.includes(e.name)?l.bulk.filter(d=>d!==e.name):[...l.bulk,e.name]};default:return l}},Ue=({namespace:l})=>{const e=ee(),d=q(),[c,s]=ae(Re,He),{appliedPrefix:m,bulk:i,bulkBusy:t,bulkError:a,cursor:v,keys:o,listComplete:g,loadError:b,loading:I,prefixInput:E,reloadNonce:O,selectedKey:p}=c,[u,y]=Z(!1);le(()=>{const n={cancelled:!1};return z((async()=>{s({type:"loadStart"});try{const h=await e.listKvKeys({limit:me,namespace:l,prefix:m===""?void 0:m});n.cancelled||s({cursor:h.cursor??null,keys:h.keys,listComplete:h.listComplete,type:"firstPage"})}catch(h){n.cancelled||s({error:H(h),type:"loadFailed"})}})()),()=>{n.cancelled=!0}},[e,l,m,O]);const x=n=>{s({type:"prefixInput",value:n.target.value})},N=()=>{s({type:"applyFilter"})},C=n=>{s({name:n.currentTarget.dataset.key??null,type:"selectKey"})},k=()=>{v!==null&&(s({type:"loadStart"}),z((async()=>{try{const n=await e.listKvKeys({cursor:v,limit:me,namespace:l,prefix:m===""?void 0:m});s({cursor:n.cursor??null,keys:n.keys,listComplete:n.listComplete,type:"appendPage"})}catch(n){s({error:H(n),type:"loadFailed"})}})()))},w=n=>{s({name:n,type:"keyDeleted"})},K=n=>{s({name:n,type:"toggleBulk"})},J=n=>{s({names:n&&o!==null?o.map(h=>h.name):[],type:"toggleAllBulk"})},V=()=>{if(i.length===0)return;const n=[...i];s({type:"bulkDeleteStart"}),z((async()=>{const h=await Promise.allSettled(n.map(F=>e.deleteKvKey({key:F,namespace:l}))),S=n.filter((F,_)=>h[_]?.status==="fulfilled"),T=n.length-S.length;s({deleted:S,error:T>0?d("Failed to delete {count} keys.",{count:T}):null,type:"bulkDeleted"})})())},L=()=>{y(!1),s({type:"reload"})},D=o!==null&&o.length>0&&i.length===o.length,M=new Set(i);return $(fe,{children:[$("section",{className:"border border-border bg-card p-3","data-testid":"kv-keys-section",children:[$("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:[r(re,{"aria-label":d("Filter keys by prefix"),className:"min-w-[16rem] flex-1","data-testid":"kv-prefix-input",onChange:x,placeholder:d("Filter by prefix…"),value:E}),r(B,{"data-testid":"kv-filter-btn",disabled:I,onClick:N,children:d("Filter")}),r(B,{"data-testid":"kv-new-key-btn",onClick:()=>{y(n=>!n)},variant:"outline",children:d("New key")}),i.length>0&&r(B,{"data-testid":"kv-bulk-delete-btn",disabled:t,onClick:V,variant:"destructive",children:t?d("Deleting…"):d("Delete {count}",{count:i.length})})]}),a!==null&&r("p",{className:"mb-2 text-sm text-destructive","data-testid":"kv-bulk-error",role:"alert",children:a}),b!==null&&r("p",{className:"text-sm text-destructive","data-testid":"kv-keys-error",role:"alert",children:b}),o!==null&&o.length===0&&!I&&r("p",{className:"text-sm text-muted-foreground","data-testid":"kv-no-keys",children:d("No keys.")}),o!==null&&o.length>0&&r(ve,{className:"overflow-hidden py-0",children:r(pe,{className:"px-0",children:$(ye,{"data-testid":"kv-key-table",children:[r(he,{children:$(X,{children:[r(Y,{className:"w-10",children:r(de,{"aria-label":d("Select all"),checked:D,"data-testid":"kv-select-all",onCheckedChange:J})}),r(Y,{children:d("Key")}),r(Y,{children:d("Expiration")})]})}),r(ke,{children:o.map(n=>$(X,{className:n.name===p?"border-l-2 border-l-royal-amethyst bg-muted/50":"cursor-pointer","data-key":n.name,"data-testid":`kv-key-row-${n.name}`,onClick:C,children:[r(Q,{onClick:h=>{h.stopPropagation()},children:r(de,{"aria-label":d("Select {name}",{name:n.name}),checked:M.has(n.name),"data-testid":`kv-select-${n.name}`,onCheckedChange:()=>{K(n.name)}})}),r(Q,{className:"font-mono text-xs",children:n.name}),r(Q,{className:"tabular-nums text-xs",children:Je(n.expiration)})]},n.name))})]})})}),!g&&v!==null&&r("div",{className:"mt-2",children:r(B,{"data-testid":"kv-load-more",disabled:I,onClick:k,variant:"outline",children:d(I?"Loading…":"Load more")})})]}),r(se,{onOpenChange:n=>{n||y(!1)},open:u,children:$(ie,{className:"w-full gap-0 overflow-y-auto sm:max-w-md","data-testid":"kv-create-sheet",side:"right",children:[r(oe,{children:r(ce,{children:d("New key")})}),r(Pe,{namespace:l,onCancel:()=>{y(!1)},onCreated:L})]})}),r(se,{onOpenChange:n=>{n||s({name:null,type:"selectKey"})},open:p!==null,children:$(ie,{className:"w-full gap-0 overflow-y-auto sm:max-w-md","data-testid":"kv-editor-sheet",side:"right",children:[r(oe,{children:r(ce,{className:"truncate font-mono text-xs",children:p})}),p!==null&&r(ze,{expiration:o?.find(n=>n.name===p)?.expiration,keyName:p,namespace:l,onDeleted:w},`${l}:${p}`)]})})]})},ct=({loadNamespaces:l}={})=>{const e=ee(),d=q(),[c,s]=Z(null),[m,i]=Z(null),[t,a]=Z(null);le(()=>{const o={cancelled:!1};return z((async()=>{try{const g=await(l??(()=>e.listKvNamespaces()))();o.cancelled||(s(g),i(null),a(b=>b??g[0]?.binding??null))}catch(g){o.cancelled||(s(null),i(H(g)))}})()),()=>{o.cancelled=!0}},[e,l]);const v=o=>{a(o.currentTarget.dataset.ns??null)};return $("div",{className:"flex flex-col gap-4","data-testid":"lunora-kv-browser",children:[m!==null&&r("p",{className:"text-sm text-destructive","data-testid":"kv-ns-error",role:"alert",children:m}),c!==null&&c.length===0&&r(Fe,{description:d("Add a kv_namespaces binding to wrangler.jsonc — it appears here automatically, no wiring needed."),icon:r("svg",{"aria-hidden":"true",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.6,viewBox:"0 0 24 24",children:r("path",{d:"M5 5h14v4H5V5Zm0 5h14v4H5v-4Zm0 5h14v4H5v-4Z"})}),testId:"kv-empty",title:d("No KV namespaces.")}),c!==null&&c.length>0&&r(ve,{className:"overflow-hidden py-0",children:r(pe,{className:"px-0",children:$(ye,{"data-testid":"kv-namespace-table",children:[r(he,{children:r(X,{children:r(Y,{children:d("Namespace")})})}),r(ke,{children:c.map(o=>r(X,{className:o.binding===t?"border-l-2 border-l-royal-amethyst bg-muted/50":"cursor-pointer","data-ns":o.binding,"data-testid":`kv-ns-row-${o.binding}`,onClick:v,children:r(Q,{className:"font-mono text-xs",children:o.binding})},o.binding))})]})})}),t!==null&&r(Ue,{namespace:t},t)]})};export{ct as KvBrowser};
@@ -1,4 +1,4 @@
1
- import{c as N}from"react/compiler-runtime";import{useState as y}from"react";import{u as b}from"../packem_shared/button-BkCrNcAs.js";import{c as k,u as v}from"../packem_shared/card-CIDGUN6K.js";import{u as C}from"../packem_shared/input-JHu63lTv.js";import{useT as w}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{b as S}from"../packem_shared/cf-links-gbDy51nR.js";import{f as L,e as T,g as j}from"../packem_shared/internal-AtZ4bTal.js";import{jsxs as p,jsx as r}from"react/jsx-runtime";const $=t=>{const e=N(23),{destination:s}=t,h=w();let m;e[0]!==s.snippet?(m=()=>{j(s.snippet)},e[0]=s.snippet,e[1]=m):m=e[1];const u=m;let a;e[2]!==s.title?(a=r("h4",{className:"text-sm font-semibold",children:s.title}),e[2]=s.title,e[3]=a):a=e[3];let o;e[4]!==s.description?(o=r("p",{className:"text-sm text-muted-foreground",children:s.description}),e[4]=s.description,e[5]=o):o=e[5];let l;e[6]!==a||e[7]!==o?(l=p("div",{children:[a,o]}),e[6]=a,e[7]=o,e[8]=l):l=e[8];const g=`drain-copy-${s.id}`;let d;e[9]!==h?(d=h("Copy"),e[9]=h,e[10]=d):d=e[10];let i;e[11]!==u||e[12]!==g||e[13]!==d?(i=r(b,{"data-testid":g,onClick:u,size:"sm",variant:"outline",children:d}),e[11]=u,e[12]=g,e[13]=d,e[14]=i):i=e[14];let n;e[15]!==l||e[16]!==i?(n=p("div",{className:"flex items-start justify-between gap-3",children:[l,i]}),e[15]=l,e[16]=i,e[17]=n):n=e[17];let c;e[18]!==s.snippet?(c=r("pre",{className:"mt-2 overflow-x-auto rounded bg-muted p-2 font-mono text-xs",children:s.snippet}),e[18]=s.snippet,e[19]=c):c=e[19];let f;return e[20]!==n||e[21]!==c?(f=r(k,{className:"py-0","data-testid":"drain-card",children:p(v,{className:"p-3",children:[n,c]})}),e[20]=n,e[21]=c,e[22]=f):f=e[22],f},E=()=>{const t=w(),e=[{description:t("Stream every request log to R2, a SIEM, or a third-party log service."),id:"logpush",snippet:["{",' "logpush": true',"}"].join(`
2
- `),title:t("Logpush")},{description:t("Send logs programmatically to a Worker for custom capture and forwarding."),id:"tail-worker",snippet:["{",' "tail_consumers": [{ "service": "my-log-forwarder" }]',"}"].join(`
3
- `),title:t("Tail Workers")},{description:t("Retain and query recent request logs directly in Cloudflare's dashboard."),id:"workers-logs",snippet:["{",' "observability": { "enabled": true }',"}"].join(`
4
- `),title:t("Workers Logs")}],[s,h]=y(""),[m,u]=y(!1),[a,o]=y(null),l=async()=>{const i=s.trim();if(i==="")return;const n="fetch"in globalThis?globalThis.fetch:void 0;if(n===void 0){o({kind:"error",message:t("fetch is unavailable in this environment.")});return}const c={durationMs:12,function:"messages:list",outcome:"ok",shard:"root",source:"lunora",tablesRead:["messages"],tablesWritten:[],ts:new Date().toISOString(),type:"request"};u(!0),o(null);const f=performance.now();try{const x=await n(i,{body:JSON.stringify(c),headers:{"Content-Type":"application/json"},method:"POST"});o({kind:"success",latencyMs:Math.round(performance.now()-f),status:x.status})}catch(x){o({kind:"error",message:T(x)})}finally{u(!1)}},g=()=>{L(l())},d=i=>{h(i.target.value)};return p("div",{className:"flex flex-col gap-4","data-testid":"log-drains",children:[r("div",{className:"flex flex-wrap items-center gap-3",children:r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"drain-cf-link",href:S,rel:"noreferrer",target:"_blank",children:t("Open in Cloudflare")})}),r("p",{className:"text-sm text-muted-foreground","data-testid":"drain-readonly-note",children:t("Lunora does not ship logs itself — forwarding is handled by Cloudflare. Configure a destination below, then test your collector.")}),p("section",{className:"flex flex-col gap-3","data-testid":"drain-destinations",children:[r("h3",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:t("Cloudflare destinations")}),e.map(i=>r($,{destination:i},i.id))]}),r(k,{className:"py-0",children:r(v,{className:"p-3",children:p("section",{"data-testid":"drain-webhook",children:[r("h3",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:t("Webhook test")}),r("p",{className:"mb-2 text-sm text-muted-foreground",children:t("POST a sample Lunora request-log envelope to your collector to confirm it is reachable.")}),p("div",{className:"flex flex-wrap items-center gap-2",children:[r(C,{className:"min-w-[20rem] flex-1","data-testid":"drain-webhook-url",onChange:d,placeholder:t("https://example.com/logs"),type:"url",value:s}),r(b,{"data-testid":"drain-webhook-test",disabled:m||s.trim()==="",onClick:g,children:t(m?"Sending…":"Send test event")})]}),a!==null&&r("p",{className:a.kind==="success"?"mt-2 text-sm text-muted-foreground":"mt-2 text-sm text-destructive","data-testid":"drain-webhook-result",role:a.kind==="error"?"alert":void 0,children:a.kind==="success"?t("Delivered — status {status} in {latency}ms",{latency:a.latencyMs,status:a.status}):t("Failed: {message}",{message:a.message})})]})})})]})};export{E as LogDrainsPanel};
1
+ import{c as te}from"react/compiler-runtime";import{useState as X}from"react";import{u as se}from"../packem_shared/button-BkCrNcAs.js";import{c as re,u as oe}from"../packem_shared/card-CIDGUN6K.js";import{u as ce}from"../packem_shared/input-JHu63lTv.js";import{useT as ae}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{b as me}from"../packem_shared/cf-links-gbDy51nR.js";import{c as pe,f as ue,b as fe}from"../packem_shared/internal-BSIsQVC6.js";import{jsx as r,jsxs as h}from"react/jsx-runtime";const he=e=>{const t=te(23),{destination:s}=e,f=ae();let g;t[0]!==s.snippet?(g=()=>{pe(s.snippet)},t[0]=s.snippet,t[1]=g):g=t[1];const m=g;let o;t[2]!==s.title?(o=r("h4",{className:"text-sm font-semibold",children:s.title}),t[2]=s.title,t[3]=o):o=t[3];let a;t[4]!==s.description?(a=r("p",{className:"text-sm text-muted-foreground",children:s.description}),t[4]=s.description,t[5]=a):a=t[5];let d;t[6]!==o||t[7]!==a?(d=h("div",{children:[o,a]}),t[6]=o,t[7]=a,t[8]=d):d=t[8];const F=`drain-copy-${s.id}`;let l;t[9]!==f?(l=f("Copy"),t[9]=f,t[10]=l):l=t[10];let n;t[11]!==m||t[12]!==F||t[13]!==l?(n=r(se,{"data-testid":F,onClick:m,size:"sm",variant:"outline",children:l}),t[11]=m,t[12]=F,t[13]=l,t[14]=n):n=t[14];let i;t[15]!==d||t[16]!==n?(i=h("div",{className:"flex items-start justify-between gap-3",children:[d,n]}),t[15]=d,t[16]=n,t[17]=i):i=t[17];let c;t[18]!==s.snippet?(c=r("pre",{className:"mt-2 overflow-x-auto rounded bg-muted p-2 font-mono text-xs",children:s.snippet}),t[18]=s.snippet,t[19]=c):c=t[19];let x;return t[20]!==i||t[21]!==c?(x=r(re,{className:"py-0","data-testid":"drain-card",children:h(oe,{className:"p-3",children:[i,c]})}),t[20]=i,t[21]=c,t[22]=x):x=t[22],x},_e=()=>{const e=te(88),t=ae();let s;e[0]!==t?(s=t("Stream every request log to R2, a SIEM, or a third-party log service."),e[0]=t,e[1]=s):s=e[1];let f;e[2]===Symbol.for("react.memo_cache_sentinel")?(f=["{",' "logpush": true',"}"],e[2]=f):f=e[2];const g=f.join(`
2
+ `);let m;e[3]!==t?(m=t("Logpush"),e[3]=t,e[4]=m):m=e[4];let o;e[5]!==s||e[6]!==m?(o={description:s,id:"logpush",snippet:g,title:m},e[5]=s,e[6]=m,e[7]=o):o=e[7];let a;e[8]!==t?(a=t("Send logs programmatically to a Worker for custom capture and forwarding."),e[8]=t,e[9]=a):a=e[9];let d;e[10]===Symbol.for("react.memo_cache_sentinel")?(d=["{",' "tail_consumers": [{ "service": "my-log-forwarder" }]',"}"],e[10]=d):d=e[10];const F=d.join(`
3
+ `);let l;e[11]!==t?(l=t("Tail Workers"),e[11]=t,e[12]=l):l=e[12];let n;e[13]!==a||e[14]!==l?(n={description:a,id:"tail-worker",snippet:F,title:l},e[13]=a,e[14]=l,e[15]=n):n=e[15];let i;e[16]!==t?(i=t("Retain and query recent request logs directly in Cloudflare's dashboard."),e[16]=t,e[17]=i):i=e[17];let c;e[18]===Symbol.for("react.memo_cache_sentinel")?(c=["{",' "observability": { "enabled": true }',"}"],e[18]=c):c=e[18];const x=c.join(`
4
+ `);let y;e[19]!==t?(y=t("Workers Logs"),e[19]=t,e[20]=y):y=e[20];let b;e[21]!==i||e[22]!==y?(b={description:i,id:"workers-logs",snippet:x,title:y},e[21]=i,e[22]=y,e[23]=b):b=e[23];let P;e[24]!==b||e[25]!==o||e[26]!==n?(P=[o,n,b],e[24]=b,e[25]=o,e[26]=n,e[27]=P):P=e[27];const V=P,[p,le]=X(""),[k,Z]=X(!1),[u,U]=X(null);let z;if(e[28]!==t||e[29]!==p){const G=async()=>{const Q=p.trim();if(Q==="")return;const ee="fetch"in globalThis?globalThis.fetch:void 0;if(ee===void 0){U({kind:"error",message:t("fetch is unavailable in this environment.")});return}const ie={durationMs:12,function:"messages:list",outcome:"ok",shard:"root",source:"lunora",tablesRead:["messages"],tablesWritten:[],ts:new Date().toISOString(),type:"request"};Z(!0),U(null);const de=performance.now();try{const H=await ee(Q,{body:JSON.stringify(ie),headers:{"Content-Type":"application/json"},method:"POST"});U({kind:"success",latencyMs:Math.round(performance.now()-de),status:H.status})}catch(H){U({kind:"error",message:fe(H)})}Z(!1)};z=()=>{ue(G())},e[28]=t,e[29]=p,e[30]=z}else z=e[30];const Y=z;let J;e[31]===Symbol.for("react.memo_cache_sentinel")?(J=G=>{le(G.target.value)},e[31]=J):J=e[31];const ne=J;let v;e[32]!==t?(v=t("Open in Cloudflare"),e[32]=t,e[33]=v):v=e[33];let w;e[34]!==v?(w=r("div",{className:"flex flex-wrap items-center gap-3",children:r("a",{className:"text-sm text-primary underline-offset-4 hover:underline","data-testid":"drain-cf-link",href:me,rel:"noreferrer",target:"_blank",children:v})}),e[34]=v,e[35]=w):w=e[35];let N;e[36]!==t?(N=t("Lunora does not ship logs itself — forwarding is handled by Cloudflare. Configure a destination below, then test your collector."),e[36]=t,e[37]=N):N=e[37];let S;e[38]!==N?(S=r("p",{className:"text-sm text-muted-foreground","data-testid":"drain-readonly-note",children:N}),e[38]=N,e[39]=S):S=e[39];let C;e[40]!==t?(C=t("Cloudflare destinations"),e[40]=t,e[41]=C):C=e[41];let _;e[42]!==C?(_=r("h3",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:C}),e[42]=C,e[43]=_):_=e[43];let L;e[44]!==V?(L=V.map(ge),e[44]=V,e[45]=L):L=e[45];let T;e[46]!==_||e[47]!==L?(T=h("section",{className:"flex flex-col gap-3","data-testid":"drain-destinations",children:[_,L]}),e[46]=_,e[47]=L,e[48]=T):T=e[48];let $;e[49]!==t?($=t("Webhook test"),e[49]=t,e[50]=$):$=e[50];let j;e[51]!==$?(j=r("h3",{className:"mb-1 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:$}),e[51]=$,e[52]=j):j=e[52];let O;e[53]!==t?(O=t("POST a sample Lunora request-log envelope to your collector to confirm it is reachable."),e[53]=t,e[54]=O):O=e[54];let M;e[55]!==O?(M=r("p",{className:"mb-2 text-sm text-muted-foreground",children:O}),e[55]=O,e[56]=M):M=e[56];let R;e[57]!==t?(R=t("https://example.com/logs"),e[57]=t,e[58]=R):R=e[58];let q;e[59]!==R||e[60]!==p?(q=r(ce,{className:"min-w-[20rem] flex-1","data-testid":"drain-webhook-url",onChange:ne,placeholder:R,type:"url",value:p}),e[59]=R,e[60]=p,e[61]=q):q=e[61];let W;e[62]!==k||e[63]!==p?(W=k||p.trim()==="",e[62]=k,e[63]=p,e[64]=W):W=e[64];let D;e[65]!==k||e[66]!==t?(D=t(k?"Sending…":"Send test event"),e[65]=k,e[66]=t,e[67]=D):D=e[67];let I;e[68]!==Y||e[69]!==W||e[70]!==D?(I=r(se,{"data-testid":"drain-webhook-test",disabled:W,onClick:Y,children:D}),e[68]=Y,e[69]=W,e[70]=D,e[71]=I):I=e[71];let A;e[72]!==q||e[73]!==I?(A=h("div",{className:"flex flex-wrap items-center gap-2",children:[q,I]}),e[72]=q,e[73]=I,e[74]=A):A=e[74];let B;e[75]!==u||e[76]!==t?(B=u!==null&&r("p",{className:u.kind==="success"?"mt-2 text-sm text-muted-foreground":"mt-2 text-sm text-destructive","data-testid":"drain-webhook-result",role:u.kind==="error"?"alert":void 0,children:u.kind==="success"?t("Delivered — status {status} in {latency}ms",{latency:u.latencyMs,status:u.status}):t("Failed: {message}",{message:u.message})}),e[75]=u,e[76]=t,e[77]=B):B=e[77];let E;e[78]!==j||e[79]!==M||e[80]!==A||e[81]!==B?(E=r(re,{className:"py-0",children:r(oe,{className:"p-3",children:h("section",{"data-testid":"drain-webhook",children:[j,M,A,B]})})}),e[78]=j,e[79]=M,e[80]=A,e[81]=B,e[82]=E):E=e[82];let K;return e[83]!==w||e[84]!==S||e[85]!==T||e[86]!==E?(K=h("div",{className:"flex flex-col gap-4","data-testid":"log-drains",children:[w,S,T,E]}),e[83]=w,e[84]=S,e[85]=T,e[86]=E,e[87]=K):K=e[87],K};function ge(e){return r(he,{destination:e},e.id)}export{_e as LogDrainsPanel};
@@ -0,0 +1 @@
1
+ import{c as w}from"react/compiler-runtime";import{useMemo as O,useState as D}from"react";import{useT as M}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{c as N}from"../packem_shared/utils-bhneXptQ.js";import{MigrationsPanel as E}from"../packem_shared/MigrationsPanel-C2OnsqRb.js";import{useNavigate as J,useSearch as P}from"@tanstack/react-router";import{E as H}from"../packem_shared/error-alert-t6cpEi0z.js";import{E as U}from"../packem_shared/empty-state-Cg7t_8qu.js";import{N as S}from"../packem_shared/use-admin-query-QJ-ibl5u.js";import{ADMIN_FUNCTIONS as I}from"../packem_shared/ADMIN_FUNCTIONS-BnD4aovm.js";import{i as V,f as W}from"../packem_shared/internal-BSIsQVC6.js";import{S as _}from"../packem_shared/schema-diagram-cg-bz_VL.js";import{jsx as l,jsxs as g}from"react/jsx-runtime";const k=t=>typeof t=="object"&&t!==null,z=t=>k(t)&&k(t.fields)&&k(t.indexes)&&k(t.relations)&&typeof t.shardMode=="string",B=t=>{if(t===void 0||t.trim()==="")return{status:"absent"};let e;try{e=JSON.parse(t)}catch(a){return{error:`baseline is not valid JSON: ${a instanceof Error?a.message:String(a)}`,status:"invalid"}}if(!k(e)||e.version!==1||!k(e.tables))return{error:`baseline is malformed or written by an incompatible version (expected version ${String(1)})`,status:"invalid"};for(const[a,n]of Object.entries(e.tables))if(!z(n))return{error:`baseline table "${a}" has an invalid structure`,status:"invalid"};return{snapshot:{jurisdiction:typeof e.jurisdiction=="string"?e.jurisdiction:void 0,migrationIds:Array.isArray(e.migrationIds)?e.migrationIds:[],tables:e.tables,version:1},status:"ok"}},L=(t,e)=>t.unique===e.unique&&t.fields.length===e.fields.length&&t.fields.every((a,n)=>a===e.fields[n]),Q=(t,e,a,n)=>{const s=[];return a.kind!==n.kind&&s.push({severity:"breaking",summary:`field ${t}.${e} changed type: ${a.kind} → ${n.kind} — add a data migration to convert existing values`,table:t,scope:"table",type:"changedFieldKind"}),a.optional&&!n.optional?s.push({severity:"breaking",summary:`field ${t}.${e} became required — rows missing it would be invalid; add a data migration to backfill it`,table:t,scope:"table",type:"fieldOptionalToRequired"}):!a.optional&&n.optional&&s.push({scope:"table",severity:"safe",summary:`field ${t}.${e} became optional`,table:t,type:"fieldRequiredToOptional"}),s},G=(t,e,a)=>a.optional?{scope:"table",severity:"safe",summary:`added optional field ${t}.${e}`,table:t,type:"addedOptionalField"}:{severity:"breaking",summary:`added required field ${t}.${e} — existing rows have no value; add a data migration to backfill it`,table:t,scope:"table",type:"addedRequiredField"},X=(t,e,a,n)=>{for(const[s,o]of Object.entries(a.fields)){const i=e.fields[s];i===void 0?n.push(G(t,s,o)):n.push(...Q(t,s,i,o))}for(const s of Object.keys(e.fields))a.fields[s]===void 0&&n.push({severity:"breaking",summary:`removed field ${t}.${s} — add a data migration if stored data must be cleaned up`,table:t,scope:"table",type:"removedField"})},Y=(t,e,a,n)=>{for(const[s,o]of Object.entries(a.indexes)){const i=e.indexes[s];if(i===void 0){n.push({scope:"table",severity:"safe",summary:`added index ${s} on ${t}`,table:t,type:"addedIndex"});continue}L(i,o)||n.push({severity:"breaking",summary:`index ${s} on ${t} changed shape — a query may have relied on the old index`,table:t,scope:"table",type:"changedIndex"})}for(const s of Object.keys(e.indexes))a.indexes[s]===void 0&&n.push({severity:"breaking",summary:`removed index ${s} on ${t} — a query that used \`.withIndex("${s}")\` would break`,table:t,scope:"table",type:"removedIndex"})},Z=(t,e,a,n)=>{for(const s of Object.keys(a.relations))e.relations[s]===void 0&&n.push({scope:"schema",severity:"safe",summary:`added relation ${t}.${s}`,table:t,type:"addedRelation"});for(const s of Object.keys(e.relations))a.relations[s]===void 0&&n.push({scope:"schema",severity:"breaking",summary:`removed relation ${t}.${s}`,table:t,type:"removedRelation"})},ee=(t,e,a,n)=>{e.shardMode!==a.shardMode&&n.push({severity:"breaking",summary:`table ${t} changed shard mode: ${e.shardMode} → ${a.shardMode} — its physical storage moves; add a data migration / re-shard plan`,table:t,scope:"table",type:"changedShardMode"}),X(t,e,a,n),Y(t,e,a,n),Z(t,e,a,n)},te=(t,e)=>{const a=[],n=t?.tables??{};for(const[s,o]of Object.entries(e.tables)){const i=n[s];if(i===void 0){a.push({scope:"table",severity:"safe",summary:`added table ${s}`,table:s,type:"addedTable"});continue}ee(s,i,o,a)}for(const s of Object.keys(n))e.tables[s]===void 0&&a.push({scope:"table",severity:"breaking",summary:`removed table ${s} — add a data migration if its data must be archived/cleaned up`,table:s,type:"removedTable"});if(t!==void 0&&t.jurisdiction!==e.jurisdiction){const s=t.jurisdiction??"(none)",o=e.jurisdiction??"(none)";a.push({scope:"schema",severity:"breaking",summary:`Durable Object jurisdiction changed from ${s} to ${o} — this re-homes every DO and strands all existing shard, scheduler, and session-DO data in the old region (no in-place migration; export then import to move it). Revert the change, or override the gate to proceed intentionally.`,type:"changedJurisdiction"})}return{changes:a}},T=t=>Object.entries(t.fields).map(([e,a])=>({name:e,optional:a.optional,ref:Object.values(t.relations).find(n=>n.field===e&&n.kind==="one")?.table,type:a.kind})),F=(t,e)=>{const a={},n=t?.fields??{},s=e?.fields??{};for(const[o,i]of Object.entries(s)){const r=n[o];r===void 0?a[o]=t===void 0?"unchanged":"added":a[o]=r.kind===i.kind&&r.optional===i.optional?"unchanged":"changed"}for(const o of Object.keys(n))s[o]===void 0&&(a[o]="removed");return a},ae=(t,e)=>{const{changes:a}=te(t,e),n=new Set(a.filter(i=>i.scope==="table"&&i.table!==void 0).map(i=>i.table)),s=[],o=(i,r)=>i?"added":n.has(r)?"changed":"context";for(const[i,r]of Object.entries(e.tables)){const c=t?.tables[i],u=o(c===void 0,i);s.push({columns:T(r),fieldStatus:F(c,r),name:i,shardMode:r.shardMode,status:u})}for(const[i,r]of Object.entries(t?.tables??{}))e.tables[i]===void 0&&s.push({columns:T(r),fieldStatus:F(r,void 0),name:i,shardMode:r.shardMode,status:"removed"});return s.sort((i,r)=>i.name.localeCompare(r.name)),{breakingCount:a.filter(i=>i.severity==="breaking").length,changes:a,tables:s}},A=t=>{const e=B(t);return e.status==="ok"?e.snapshot:void 0},ne={added:"ring-2 ring-emerald-500/60",changed:"ring-2 ring-amber-500/70",context:"opacity-55",removed:"opacity-70 ring-2 ring-destructive/60"},se=t=>t==="global"?"global":"shard",ie=t=>{const e=w(24),{appliedAt:a,hash:n,onSelect:s,selected:o,seq:i}=t,r=o?"border-s-primary bg-accent/60 text-foreground":"border-s-transparent text-muted-foreground hover:bg-accent/30 hover:text-foreground";let c;e[0]!==r?(c=N("flex w-full flex-col items-start gap-1 border-s-2 px-4 py-3 text-start outline-none transition-colors",r),e[0]=r,e[1]=c):c=e[1];const u=`sh-version-${n}`;let m;e[2]!==n||e[3]!==s?(m=()=>{s(n)},e[2]=n,e[3]=s,e[4]=m):m=e[4];let p;e[5]!==i?(p=g("span",{className:"font-mono text-[13px] tabular-nums",children:["v",i]}),e[5]=i,e[6]=p):p=e[6];let b;e[7]!==n?(b=n.slice(0,7),e[7]=n,e[8]=b):b=e[8];let h;e[9]!==b?(h=l("span",{className:"ms-auto font-mono text-[10px] tracking-wider text-muted-foreground/70 uppercase",children:b}),e[9]=b,e[10]=h):h=e[10];let f;e[11]!==p||e[12]!==h?(f=g("span",{className:"flex w-full items-baseline gap-2",children:[p,h]}),e[11]=p,e[12]=h,e[13]=f):f=e[13];let v;e[14]!==a?(v=V(a),e[14]=a,e[15]=v):v=e[15];let x;e[16]!==v?(x=l("span",{className:"font-mono text-[10px] tracking-wide text-muted-foreground/70",children:v}),e[16]=v,e[17]=x):x=e[17];let d;return e[18]!==x||e[19]!==c||e[20]!==u||e[21]!==m||e[22]!==f?(d=l("li",{children:g("button",{className:c,"data-testid":u,onClick:m,type:"button",children:[f,x]})}),e[18]=x,e[19]=c,e[20]=u,e[21]=m,e[22]=f,e[23]=d):d=e[23],d},re=t=>{const e=w(26),{breaking:a,count:n,first:s}=t,o=M();if(s){let h;e[0]!==n?(h=l("span",{className:"text-3xl leading-none font-light tracking-tight tabular-nums",children:n}),e[0]=n,e[1]=h):h=e[1];let f;e[2]!==o?(f=o("tables"),e[2]=o,e[3]=f):f=e[3];let v;e[4]!==f?(v=l("span",{className:"font-mono text-[11px] tracking-widest text-muted-foreground uppercase",children:f}),e[4]=f,e[5]=v):v=e[5];let x;return e[6]!==h||e[7]!==v?(x=g("div",{className:"flex items-baseline gap-3","data-testid":"sh-summary",children:[h,v]}),e[6]=h,e[7]=v,e[8]=x):x=e[8],x}const i=a>0&&"text-destructive";let r;e[9]!==i?(r=N("text-3xl leading-none font-light tracking-tight tabular-nums",i),e[9]=i,e[10]=r):r=e[10];let c;e[11]!==n||e[12]!==r?(c=l("span",{className:r,children:n}),e[11]=n,e[12]=r,e[13]=c):c=e[13];let u;e[14]!==n||e[15]!==o?(u=o(n===1?"change":"changes"),e[14]=n,e[15]=o,e[16]=u):u=e[16];let m;e[17]!==u?(m=l("span",{className:"font-mono text-[11px] tracking-widest text-muted-foreground uppercase",children:u}),e[17]=u,e[18]=m):m=e[18];let p;e[19]!==a||e[20]!==o?(p=a>0&&g("span",{className:"font-mono text-[11px] tracking-widest text-destructive uppercase",children:["· ",o("{count} breaking",{count:a})]}),e[19]=a,e[20]=o,e[21]=p):p=e[21];let b;return e[22]!==c||e[23]!==m||e[24]!==p?(b=g("div",{className:"flex items-baseline gap-3","data-testid":"sh-summary",children:[c,m,p]}),e[22]=c,e[23]=m,e[24]=p,e[25]=b):b=e[25],b},K={addedIndex:{action:"added",kind:"index"},addedOptionalField:{action:"added",kind:"field?"},addedRelation:{action:"added",kind:"relation"},addedRequiredField:{action:"added",kind:"field"},addedTable:{action:"added",kind:"table"},changedFieldKind:{action:"changed",kind:"field kind"},changedIndex:{action:"changed",kind:"index"},changedJurisdiction:{action:"changed",kind:"jurisdiction"},changedShardMode:{action:"changed",kind:"shard mode"},fieldOptionalToRequired:{action:"changed",kind:"field → required"},fieldRequiredToOptional:{action:"changed",kind:"field → optional"},removedField:{action:"removed",kind:"field"},removedIndex:{action:"removed",kind:"index"},removedRelation:{action:"removed",kind:"relation"},removedTable:{action:"removed",kind:"table"}},oe=(t,e)=>{const a=`${K[t.type].action} ${e} `;return t.summary.startsWith(a)?t.summary.slice(a.length):t.summary},de=t=>{const e=new Map;for(const n of t){const s=n.table??"",o=e.get(s);o===void 0?e.set(s,[n]):o.push(n)}const a=[...e].map(([n,s])=>({changes:s,table:n}));return[...a.filter(n=>n.table!==""),...a.filter(n=>n.table==="")]},le=t=>{const e=w(2),{children:a}=t;let n;return e[0]!==a?(n=l("div",{className:"px-4 pt-4 pb-2 font-mono text-[10px] tracking-widest text-muted-foreground/70 uppercase",children:a}),e[0]=a,e[1]=n):n=e[1],n},ce=({pane:t,shardKey:e=""})=>{const a=M(),n=J(),s=P({strict:!1}).version,o=d=>{W(n({search:{version:d},to:"/migrations"}))},i=S(I.schemaHistory,{},{shardKey:e}),r=i.data?.versions??[],c=s!==void 0&&r.some(d=>d.hash===s)?s:r[0]?.hash,u=r.findIndex(d=>d.hash===c),m=u===-1?void 0:r[u+1]?.hash,p=S(I.schemaVersion,{hash:c??""},{enabled:c!==void 0,shardKey:e}),b=S(I.schemaVersion,{hash:m??""},{enabled:m!==void 0,shardKey:e}),h=O(()=>{const d=A(p.data?.version?.snapshotJson);if(d!==void 0)return ae(A(b.data?.version?.snapshotJson),d)},[p.data,b.data]),f=O(()=>(h?.tables??[]).map(d=>({columns:d.columns,name:d.name,tier:se(d.shardMode)})),[h]),v=O(()=>{const d={};for(const $ of h?.tables??[])d[$.name]=ne[$.status];return d},[h]);if(i.error!==null)return l(H,{error:i.errorSource,testId:"sh-error"});if(r.length===0)return l(U,{description:a("Each distinct schema shape this shard runs is recorded here, so you can see what changed and when."),testId:"sh-empty",title:a("No schema versions recorded yet.")});const x=h?.changes??[];return g("div",{className:"flex min-h-0 flex-1 gap-4","data-testid":"lunora-schema-history",children:[g("nav",{className:"flex w-56 shrink-0 flex-col overflow-hidden border-e border-border","data-testid":"sh-timeline-rail",children:[l(le,{children:a("Schema versions")}),l("ul",{className:"min-h-0 flex-1 overflow-y-auto","data-testid":"sh-timeline",children:r.map(d=>l(ie,{appliedAt:d.appliedAt,hash:d.hash,onSelect:o,selected:d.hash===c,seq:d.seq},d.hash))})]}),g("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col gap-4 pe-1 pt-4",children:[l(re,{breaking:h?.breakingCount??0,count:m===void 0?f.length:x.length,first:m===void 0}),t==="diagram"?l("div",{className:"flex min-h-0 flex-1 flex-col",children:l(_,{fill:!0,nodeClasses:v,tables:f,testIdPrefix:"sh"})}):l("div",{className:"min-h-0 flex-1 overflow-y-auto","data-testid":"sh-changes",children:de(x).map(d=>{const $=(h?.tables??[]).find(y=>y.name===d.table);return g("section",{className:"mb-6",children:[g("div",{className:"flex items-baseline gap-3 border-b border-border/60 pb-1.5",children:[l("span",{className:"font-mono text-[13px] text-foreground",children:d.table===""?a("schema"):d.table}),$!==void 0&&l("span",{className:"font-mono text-[10px] tracking-widest text-muted-foreground/70 tabular-nums uppercase",children:a("{count} columns",{count:$.columns.length})}),d.changes.length>1&&l("span",{className:"ms-auto font-mono text-[10px] tracking-widest text-muted-foreground/70 tabular-nums",children:d.changes.length})]}),l("ul",{children:d.changes.map(y=>{const{action:C,kind:q}=K[y.type],j=y.severity==="breaking",R=oe(y,q);return g("li",{className:"flex items-baseline gap-4 border-s-2 py-1.5 ps-3 transition-colors hover:bg-accent/30",children:[l("span",{"aria-hidden":"true",className:N("-ms-3 h-3 w-0.5 shrink-0 self-center",j?"bg-destructive":"bg-transparent")}),g("span",{className:"w-44 shrink-0 font-mono text-[10px] tracking-widest text-muted-foreground/70 uppercase",children:[a(C)," ",q]}),R!==d.table&&l("span",{className:N("min-w-0 font-mono text-[13px]",j?"text-destructive":"text-foreground"),children:R}),j&&l("span",{className:"ms-auto shrink-0 font-mono text-[10px] tracking-widest text-destructive uppercase",children:a("breaking")})]},`${y.type}-${y.summary}`)})})]},d.table)})})]})]})},me=t=>N("-mb-px border-b-2 px-3 py-2.5 font-mono text-[11px] tracking-wider uppercase transition-colors outline-none","hover:bg-accent/40 focus-visible:bg-accent/40",t?"border-primary text-foreground":"border-transparent text-muted-foreground hover:text-foreground"),je=t=>{const e=w(11),{initialShardKey:a}=t,n=M(),[s,o]=D("diagram");let i;e[0]!==s?(i=(p,b,h,f)=>g("button",{"aria-selected":s===p,className:me(s===p),"data-testid":h,onClick:()=>{o(p)},role:"tab",type:"button",children:[b,f!==void 0&&l("span",{className:"ms-2 tabular-nums text-muted-foreground/70",children:f})]}),e[0]=s,e[1]=i):i=e[1];const r=i;let c;e[2]!==n||e[3]!==r?(c=g("div",{className:"flex shrink-0 items-center gap-1 border-b border-border px-3","data-testid":"mg-panes",role:"tablist",children:[r("diagram",n("Diagram"),"mg-pane-diagram"),r("changes",n("Changes"),"mg-pane-changes"),r("data",n("Data migrations"),"mg-pane-data")]}),e[2]=n,e[3]=r,e[4]=c):c=e[4];let u;e[5]!==a||e[6]!==s?(u=l("div",{className:"flex min-h-0 flex-1 flex-col",children:s==="data"?l("div",{className:"min-h-0 flex-1 overflow-y-auto px-4",children:l(E,{initialShardKey:a})}):l(ce,{pane:s,shardKey:a})}),e[5]=a,e[6]=s,e[7]=u):u=e[7];let m;return e[8]!==c||e[9]!==u?(m=g("div",{className:"flex min-h-0 flex-1 flex-col pt-4","data-testid":"lunora-migrations-route",children:[c,u]}),e[8]=c,e[9]=u,e[10]=m):m=e[10],m};export{je as MigrationsRoutePanel};
@@ -1 +1 @@
1
- import{c as G}from"react/compiler-runtime";import{useLunora as le}from"@lunora/react";import{useState as P}from"react";import{u as j}from"../packem_shared/button-BkCrNcAs.js";import{u as St,c as kt}from"../packem_shared/card-CIDGUN6K.js";import{E as et}from"../packem_shared/empty-state-Cg7t_8qu.js";import{p as me,d as Nt,m as bt,f as At,n as Ot,u as de}from"../packem_shared/table-DdJBrClo.js";import{T as Ze}from"../packem_shared/use-admin-query-Di3fLE8H.js";import{u as Mt}from"../packem_shared/use-auth-config-9S_K_W-G.js";import{useAutoRefresh as Dt}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js";import{useT as W}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{h as S,f as Et,e as Lt,i as jt}from"../packem_shared/internal-AtZ4bTal.js";import{u as V}from"../packem_shared/input-JHu63lTv.js";import{p as Pt}from"../packem_shared/label-6uP1obNF.js";import{M as Jt}from"../packem_shared/modal-shell-CUwwWC2o.js";import{l as _t}from"../packem_shared/textarea-Bu2-jKAs.js";import{u as ie}from"../packem_shared/use-async-submit-DLNCqLFq.js";import{jsx as n,jsxs as M,Fragment as ht}from"react/jsx-runtime";const Ft=t=>{const e=JSON.parse(t);if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("Expected a JSON object");return e},Ut=t=>{const e=Ft(t),r={};for(const[s,c]of Object.entries(e)){if(!Array.isArray(c)||c.some(l=>typeof l!="string"))throw new TypeError(`"${s}" must map to an array of action strings`);r[s]=c}return r},Rt=t=>t==null||t===""?"":typeof t=="string"?t:JSON.stringify(t,null,2),Q=t=>{const e=G(6),{children:r,htmlFor:s,label:c}=t;let l;e[0]!==s||e[1]!==c?(l=n(Pt,{htmlFor:s,children:c}),e[0]=s,e[1]=c,e[2]=l):l=e[2];let o;return e[3]!==r||e[4]!==l?(o=M("div",{className:"flex flex-col gap-1",children:[l,r]}),e[3]=r,e[4]=l,e[5]=o):o=e[5],o},se=({busy:t,canSubmit:e,children:r,destructive:s=!1,error:c,onClose:l,onSubmit:o,submitLabel:a,testId:i,title:m})=>{const d=W();return M(Jt,{label:m,onClose:l,panelTestId:`${i}-panel`,testId:`${i}-overlay`,variant:"dialog",children:[n("h2",{className:"text-sm font-semibold text-foreground",children:m}),r,c!==null&&n("p",{className:"text-sm text-destructive","data-testid":`${i}-error`,role:"alert",children:c}),M("div",{className:"flex justify-end gap-2 pt-1",children:[n(j,{"data-testid":`${i}-cancel`,onClick:l,size:"sm",type:"button",variant:"outline",children:d("Cancel")}),n(j,{"data-testid":`${i}-submit`,disabled:t||!e,onClick:o,size:"sm",type:"button",variant:s?"destructive":"default",children:t?d("Saving…"):a})]})]})},$t=t=>{const e=G(79),{mode:r,onClose:s,onDone:c,org:l}=t,o=le(),a=W(),{busy:i,error:m,run:d}=ie();let p;e[0]!==l?(p=l?S(l.name):"",e[0]=l,e[1]=p):p=e[1];const[u,g]=P(p);let C;e[2]!==l?(C=l?S(l.slug):"",e[2]=l,e[3]=C):C=e[3];const[b,v]=P(C);let $;e[4]!==l?($=l?S(l.logo):"",e[4]=l,e[5]=$):$=e[5];const[f,w]=P($),[h,x]=P("");let y;e[6]!==r||e[7]!==l?.metadata?(y=r==="edit"?Rt(l?.metadata):"",e[6]=r,e[7]=l?.metadata,e[8]=y):y=e[8];const[I,z]=P(y);let O;e[9]!==o||e[10]!==f||e[11]!==I||e[12]!==r||e[13]!==u||e[14]!==s||e[15]!==c||e[16]!==l?.id||e[17]!==h||e[18]!==d||e[19]!==b?(O=()=>{d(async()=>{const E=I.trim()===""?void 0:Ft(I);r==="create"?await o.createAuthOrganization({logo:f.trim()===""?void 0:f.trim(),metadata:E,name:u.trim(),ownerId:h.trim()===""?void 0:h.trim(),slug:b.trim()===""?void 0:b.trim()}):await o.updateAuthOrganization({logo:f.trim()===""?void 0:f.trim(),metadata:E,name:u.trim()===""?void 0:u.trim(),organizationId:S(l?.id),slug:b.trim()===""?void 0:b.trim()}),c(),s()})},e[9]=o,e[10]=f,e[11]=I,e[12]=r,e[13]=u,e[14]=s,e[15]=c,e[16]=l?.id,e[17]=h,e[18]=d,e[19]=b,e[20]=O):O=e[20];const N=O;let k;e[21]!==r||e[22]!==u?(k=u.trim()!==""||r==="edit",e[21]=r,e[22]=u,e[23]=k):k=e[23];let D;e[24]!==r||e[25]!==a?(D=a(r==="create"?"Create":"Save"),e[24]=r,e[25]=a,e[26]=D):D=e[26];let _;e[27]!==r||e[28]!==a?(_=a(r==="create"?"New organization":"Edit organization"),e[27]=r,e[28]=a,e[29]=_):_=e[29];let J;e[30]!==a?(J=a("name"),e[30]=a,e[31]=J):J=e[31];let q;e[32]===Symbol.for("react.memo_cache_sentinel")?(q=E=>{g(E.target.value)},e[32]=q):q=e[32];let U;e[33]!==u?(U=n(V,{"data-testid":"org-form-name",id:"org-form-name",onChange:q,value:u}),e[33]=u,e[34]=U):U=e[34];let L;e[35]!==U||e[36]!==J?(L=n(Q,{htmlFor:"org-form-name",label:J,children:U}),e[35]=U,e[36]=J,e[37]=L):L=e[37];let B;e[38]!==a?(B=a("Slug (optional — derived from name)"),e[38]=a,e[39]=B):B=e[39];let K;e[40]===Symbol.for("react.memo_cache_sentinel")?(K=E=>{v(E.target.value)},e[40]=K):K=e[40];let F;e[41]!==b?(F=n(V,{"data-testid":"org-form-slug",id:"org-form-slug",onChange:K,value:b}),e[41]=b,e[42]=F):F=e[42];let R;e[43]!==B||e[44]!==F?(R=n(Q,{htmlFor:"org-form-slug",label:B,children:F}),e[43]=B,e[44]=F,e[45]=R):R=e[45];let H;e[46]!==a?(H=a("Logo URL (optional)"),e[46]=a,e[47]=H):H=e[47];let re;e[48]===Symbol.for("react.memo_cache_sentinel")?(re=E=>{w(E.target.value)},e[48]=re):re=e[48];let X;e[49]!==f?(X=n(V,{"data-testid":"org-form-logo",id:"org-form-logo",onChange:re,value:f}),e[49]=f,e[50]=X):X=e[50];let Y;e[51]!==H||e[52]!==X?(Y=n(Q,{htmlFor:"org-form-logo",label:H,children:X}),e[51]=H,e[52]=X,e[53]=Y):Y=e[53];let Z;e[54]!==r||e[55]!==h||e[56]!==a?(Z=r==="create"&&n(Q,{htmlFor:"org-form-owner",label:a("Owner user id (optional)"),children:n(V,{"data-testid":"org-form-owner",id:"org-form-owner",onChange:E=>{x(E.target.value)},value:h})}),e[54]=r,e[55]=h,e[56]=a,e[57]=Z):Z=e[57];let ee;e[58]!==a?(ee=a("Metadata (JSON, optional)"),e[58]=a,e[59]=ee):ee=e[59];let oe;e[60]===Symbol.for("react.memo_cache_sentinel")?(oe=E=>{z(E.target.value)},e[60]=oe):oe=e[60];let te;e[61]!==I?(te=n(_t,{"data-testid":"org-form-metadata",id:"org-form-metadata",onChange:oe,value:I}),e[61]=I,e[62]=te):te=e[62];let A;e[63]!==ee||e[64]!==te?(A=n(Q,{htmlFor:"org-form-metadata",label:ee,children:te}),e[63]=ee,e[64]=te,e[65]=A):A=e[65];let ne;return e[66]!==i||e[67]!==m||e[68]!==s||e[69]!==N||e[70]!==L||e[71]!==R||e[72]!==Y||e[73]!==Z||e[74]!==A||e[75]!==k||e[76]!==D||e[77]!==_?(ne=M(se,{busy:i,canSubmit:k,error:m,onClose:s,onSubmit:N,submitLabel:D,testId:"org-form",title:_,children:[L,R,Y,Z,A]}),e[66]=i,e[67]=m,e[68]=s,e[69]=N,e[70]=L,e[71]=R,e[72]=Y,e[73]=Z,e[74]=A,e[75]=k,e[76]=D,e[77]=_,e[78]=ne):ne=e[78],ne},Bt=t=>{const e=G(40),{onClose:r,onDone:s,organizationId:c}=t,l=le(),o=W(),{busy:a,error:i,run:m}=ie(),[d,p]=P(""),[u,g]=P("");let C;e[0]!==l||e[1]!==r||e[2]!==s||e[3]!==c||e[4]!==u||e[5]!==m||e[6]!==d?(C=()=>{m(async()=>{await l.addAuthOrgMember({organizationId:c,role:u.trim()===""?void 0:u.trim(),userId:d.trim()}),s(),r()})},e[0]=l,e[1]=r,e[2]=s,e[3]=c,e[4]=u,e[5]=m,e[6]=d,e[7]=C):C=e[7];const b=C;let v;e[8]!==d?(v=d.trim(),e[8]=d,e[9]=v):v=e[9];const $=v!=="";let f;e[10]!==o?(f=o("Add member"),e[10]=o,e[11]=f):f=e[11];let w;e[12]!==o?(w=o("Add member"),e[12]=o,e[13]=w):w=e[13];let h;e[14]!==o?(h=o("User id"),e[14]=o,e[15]=h):h=e[15];let x;e[16]===Symbol.for("react.memo_cache_sentinel")?(x=_=>{p(_.target.value)},e[16]=x):x=e[16];let y;e[17]!==d?(y=n(V,{"data-testid":"org-add-member-user",id:"org-add-member-user",onChange:x,value:d}),e[17]=d,e[18]=y):y=e[18];let I;e[19]!==h||e[20]!==y?(I=n(Q,{htmlFor:"org-add-member-user",label:h,children:y}),e[19]=h,e[20]=y,e[21]=I):I=e[21];let z;e[22]!==o?(z=o("Role (optional)"),e[22]=o,e[23]=z):z=e[23];let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=_=>{g(_.target.value)},e[24]=O):O=e[24];let N;e[25]!==u?(N=n(V,{"data-testid":"org-add-member-role",id:"org-add-member-role",onChange:O,value:u}),e[25]=u,e[26]=N):N=e[26];let k;e[27]!==z||e[28]!==N?(k=n(Q,{htmlFor:"org-add-member-role",label:z,children:N}),e[27]=z,e[28]=N,e[29]=k):k=e[29];let D;return e[30]!==a||e[31]!==i||e[32]!==r||e[33]!==b||e[34]!==k||e[35]!==$||e[36]!==f||e[37]!==w||e[38]!==I?(D=M(se,{busy:a,canSubmit:$,error:i,onClose:r,onSubmit:b,submitLabel:f,testId:"org-add-member",title:w,children:[I,k]}),e[30]=a,e[31]=i,e[32]=r,e[33]=b,e[34]=k,e[35]=$,e[36]=f,e[37]=w,e[38]=I,e[39]=D):D=e[39],D},Ht=t=>{const e=G(40),{onClose:r,onDone:s,organizationId:c}=t,l=le(),o=W(),{busy:a,error:i,run:m}=ie(),[d,p]=P(""),[u,g]=P("");let C;e[0]!==l||e[1]!==d||e[2]!==r||e[3]!==s||e[4]!==c||e[5]!==u||e[6]!==m?(C=()=>{m(async()=>{await l.inviteAuthOrgMember({email:d.trim(),organizationId:c,role:u.trim()===""?void 0:u.trim()}),s(),r()})},e[0]=l,e[1]=d,e[2]=r,e[3]=s,e[4]=c,e[5]=u,e[6]=m,e[7]=C):C=e[7];const b=C;let v;e[8]!==d?(v=d.trim(),e[8]=d,e[9]=v):v=e[9];const $=v!=="";let f;e[10]!==o?(f=o("Send invitation"),e[10]=o,e[11]=f):f=e[11];let w;e[12]!==o?(w=o("Invite member"),e[12]=o,e[13]=w):w=e[13];let h;e[14]!==o?(h=o("email"),e[14]=o,e[15]=h):h=e[15];let x;e[16]===Symbol.for("react.memo_cache_sentinel")?(x=_=>{p(_.target.value)},e[16]=x):x=e[16];let y;e[17]!==d?(y=n(V,{"data-testid":"org-invite-member-email",id:"org-invite-member-email",onChange:x,type:"email",value:d}),e[17]=d,e[18]=y):y=e[18];let I;e[19]!==h||e[20]!==y?(I=n(Q,{htmlFor:"org-invite-member-email",label:h,children:y}),e[19]=h,e[20]=y,e[21]=I):I=e[21];let z;e[22]!==o?(z=o("Role (optional)"),e[22]=o,e[23]=z):z=e[23];let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=_=>{g(_.target.value)},e[24]=O):O=e[24];let N;e[25]!==u?(N=n(V,{"data-testid":"org-invite-member-role",id:"org-invite-member-role",onChange:O,value:u}),e[25]=u,e[26]=N):N=e[26];let k;e[27]!==z||e[28]!==N?(k=n(Q,{htmlFor:"org-invite-member-role",label:z,children:N}),e[27]=z,e[28]=N,e[29]=k):k=e[29];let D;return e[30]!==a||e[31]!==i||e[32]!==r||e[33]!==b||e[34]!==k||e[35]!==$||e[36]!==f||e[37]!==w||e[38]!==I?(D=M(se,{busy:a,canSubmit:$,error:i,onClose:r,onSubmit:b,submitLabel:f,testId:"org-invite-member",title:w,children:[I,k]}),e[30]=a,e[31]=i,e[32]=r,e[33]=b,e[34]=k,e[35]=$,e[36]=f,e[37]=w,e[38]=I,e[39]=D):D=e[39],D},qt=t=>{const e=G(32),{member:r,onClose:s,onDone:c}=t,l=le(),o=W(),{busy:a,error:i,run:m}=ie();let d;e[0]!==r.role?(d=S(r.role),e[0]=r.role,e[1]=d):d=e[1];const[p,u]=P(d);let g;e[2]!==l||e[3]!==r.id||e[4]!==s||e[5]!==c||e[6]!==p||e[7]!==m?(g=()=>{m(async()=>{await l.setAuthOrgMemberRole({memberId:S(r.id),role:p.trim()}),c(),s()})},e[2]=l,e[3]=r.id,e[4]=s,e[5]=c,e[6]=p,e[7]=m,e[8]=g):g=e[8];const C=g;let b;e[9]!==p?(b=p.trim(),e[9]=p,e[10]=b):b=e[10];const v=b!=="";let $;e[11]!==o?($=o("Save"),e[11]=o,e[12]=$):$=e[12];let f;e[13]!==o?(f=o("Change member role"),e[13]=o,e[14]=f):f=e[14];let w;e[15]!==o?(w=o("Role"),e[15]=o,e[16]=w):w=e[16];let h;e[17]===Symbol.for("react.memo_cache_sentinel")?(h=z=>{u(z.target.value)},e[17]=h):h=e[17];let x;e[18]!==p?(x=n(V,{"data-testid":"org-member-role-value",id:"org-member-role-value",onChange:h,value:p}),e[18]=p,e[19]=x):x=e[19];let y;e[20]!==w||e[21]!==x?(y=n(Q,{htmlFor:"org-member-role-value",label:w,children:x}),e[20]=w,e[21]=x,e[22]=y):y=e[22];let I;return e[23]!==a||e[24]!==i||e[25]!==s||e[26]!==C||e[27]!==y||e[28]!==v||e[29]!==$||e[30]!==f?(I=n(se,{busy:a,canSubmit:v,error:i,onClose:s,onSubmit:C,submitLabel:$,testId:"org-member-role",title:f,children:y}),e[23]=a,e[24]=i,e[25]=s,e[26]=C,e[27]=y,e[28]=v,e[29]=$,e[30]=f,e[31]=I):I=e[31],I},xt=t=>{const e=G(36),{mode:r,onClose:s,onDone:c,organizationId:l,team:o}=t,a=le(),i=W(),{busy:m,error:d,run:p}=ie();let u;e[0]!==o?(u=o?S(o.name):"",e[0]=o,e[1]=u):u=e[1];const[g,C]=P(u);let b;e[2]!==a||e[3]!==r||e[4]!==g||e[5]!==s||e[6]!==c||e[7]!==l||e[8]!==p||e[9]!==o?.id?(b=()=>{p(async()=>{await(r==="create"?a.createAuthOrgTeam({name:g.trim(),organizationId:l}):a.updateAuthOrgTeam({name:g.trim(),teamId:S(o?.id)})),c(),s()})},e[2]=a,e[3]=r,e[4]=g,e[5]=s,e[6]=c,e[7]=l,e[8]=p,e[9]=o?.id,e[10]=b):b=e[10];const v=b;let $;e[11]!==g?($=g.trim(),e[11]=g,e[12]=$):$=e[12];const f=$!=="";let w;e[13]!==r||e[14]!==i?(w=i(r==="create"?"Create":"Save"),e[13]=r,e[14]=i,e[15]=w):w=e[15];let h;e[16]!==r||e[17]!==i?(h=i(r==="create"?"New team":"Rename team"),e[16]=r,e[17]=i,e[18]=h):h=e[18];let x;e[19]!==i?(x=i("name"),e[19]=i,e[20]=x):x=e[20];let y;e[21]===Symbol.for("react.memo_cache_sentinel")?(y=N=>{C(N.target.value)},e[21]=y):y=e[21];let I;e[22]!==g?(I=n(V,{"data-testid":"org-team-form-name",id:"org-team-form-name",onChange:y,value:g}),e[22]=g,e[23]=I):I=e[23];let z;e[24]!==x||e[25]!==I?(z=n(Q,{htmlFor:"org-team-form-name",label:x,children:I}),e[24]=x,e[25]=I,e[26]=z):z=e[26];let O;return e[27]!==m||e[28]!==d||e[29]!==s||e[30]!==v||e[31]!==z||e[32]!==f||e[33]!==w||e[34]!==h?(O=n(se,{busy:m,canSubmit:f,error:d,onClose:s,onSubmit:v,submitLabel:w,testId:"org-team-form",title:h,children:z}),e[27]=m,e[28]=d,e[29]=s,e[30]=v,e[31]=z,e[32]=f,e[33]=w,e[34]=h,e[35]=O):O=e[35],O},Kt=t=>{const e=G(30),{onClose:r,onDone:s,teamId:c}=t,l=le(),o=W(),{busy:a,error:i,run:m}=ie(),[d,p]=P("");let u;e[0]!==l||e[1]!==r||e[2]!==s||e[3]!==m||e[4]!==c||e[5]!==d?(u=()=>{m(async()=>{await l.addAuthOrgTeamMember({teamId:c,userId:d.trim()}),s(),r()})},e[0]=l,e[1]=r,e[2]=s,e[3]=m,e[4]=c,e[5]=d,e[6]=u):u=e[6];const g=u;let C;e[7]!==d?(C=d.trim(),e[7]=d,e[8]=C):C=e[8];const b=C!=="";let v;e[9]!==o?(v=o("Add member"),e[9]=o,e[10]=v):v=e[10];let $;e[11]!==o?($=o("Add team member"),e[11]=o,e[12]=$):$=e[12];let f;e[13]!==o?(f=o("User id"),e[13]=o,e[14]=f):f=e[14];let w;e[15]===Symbol.for("react.memo_cache_sentinel")?(w=I=>{p(I.target.value)},e[15]=w):w=e[15];let h;e[16]!==d?(h=n(V,{"data-testid":"org-team-add-member-user",id:"org-team-add-member-user",onChange:w,value:d}),e[16]=d,e[17]=h):h=e[17];let x;e[18]!==f||e[19]!==h?(x=n(Q,{htmlFor:"org-team-add-member-user",label:f,children:h}),e[18]=f,e[19]=h,e[20]=x):x=e[20];let y;return e[21]!==a||e[22]!==i||e[23]!==r||e[24]!==g||e[25]!==b||e[26]!==v||e[27]!==$||e[28]!==x?(y=n(se,{busy:a,canSubmit:b,error:i,onClose:r,onSubmit:g,submitLabel:v,testId:"org-team-add-member",title:$,children:x}),e[21]=a,e[22]=i,e[23]=r,e[24]=g,e[25]=b,e[26]=v,e[27]=$,e[28]=x,e[29]=y):y=e[29],y},zt=t=>{const e=G(47),{mode:r,onClose:s,onDone:c,organizationId:l,role:o}=t,a=le(),i=W(),{busy:m,error:d,run:p}=ie();let u;e[0]!==o?(u=o?S(o.role):"",e[0]=o,e[1]=u):u=e[1];const[g,C]=P(u);let b;e[2]!==r||e[3]!==o?.permission?(b=r==="edit"?Rt(o?.permission):"",e[2]=r,e[3]=o?.permission,e[4]=b):b=e[4];const[v,$]=P(b);let f;e[5]!==a||e[6]!==r||e[7]!==g||e[8]!==s||e[9]!==c||e[10]!==l||e[11]!==v||e[12]!==o?.id||e[13]!==p?(f=()=>{p(async()=>{const _=Ut(v);await(r==="create"?a.createAuthOrgRole({organizationId:l,permission:_,role:g.trim()}):a.updateAuthOrgRole({permission:_,roleId:S(o?.id)})),c(),s()})},e[5]=a,e[6]=r,e[7]=g,e[8]=s,e[9]=c,e[10]=l,e[11]=v,e[12]=o?.id,e[13]=p,e[14]=f):f=e[14];const w=f;let h;e[15]!==r||e[16]!==g||e[17]!==v?(h=v.trim()!==""&&(r==="edit"||g.trim()!==""),e[15]=r,e[16]=g,e[17]=v,e[18]=h):h=e[18];let x;e[19]!==r||e[20]!==i?(x=i(r==="create"?"Create":"Save"),e[19]=r,e[20]=i,e[21]=x):x=e[21];let y;e[22]!==r||e[23]!==i?(y=i(r==="create"?"New role":"Edit role"),e[22]=r,e[23]=i,e[24]=y):y=e[24];let I;e[25]!==r||e[26]!==g||e[27]!==i?(I=r==="create"&&n(Q,{htmlFor:"org-role-form-name",label:i("Role name"),children:n(V,{"data-testid":"org-role-form-name",id:"org-role-form-name",onChange:_=>{C(_.target.value)},value:g})}),e[25]=r,e[26]=g,e[27]=i,e[28]=I):I=e[28];let z;e[29]!==i?(z=i('Permission (JSON, e.g. {"project":["create","update"]})'),e[29]=i,e[30]=z):z=e[30];let O;e[31]===Symbol.for("react.memo_cache_sentinel")?(O=_=>{$(_.target.value)},e[31]=O):O=e[31];let N;e[32]!==v?(N=n(_t,{"data-testid":"org-role-form-permission",id:"org-role-form-permission",onChange:O,value:v}),e[32]=v,e[33]=N):N=e[33];let k;e[34]!==N||e[35]!==z?(k=n(Q,{htmlFor:"org-role-form-permission",label:z,children:N}),e[34]=N,e[35]=z,e[36]=k):k=e[36];let D;return e[37]!==m||e[38]!==d||e[39]!==s||e[40]!==w||e[41]!==k||e[42]!==h||e[43]!==x||e[44]!==y||e[45]!==I?(D=M(se,{busy:m,canSubmit:h,error:d,onClose:s,onSubmit:w,submitLabel:x,testId:"org-role-form",title:y,children:[I,k]}),e[37]=m,e[38]=d,e[39]=s,e[40]=w,e[41]=k,e[42]=h,e[43]=x,e[44]=y,e[45]=I,e[46]=D):D=e[46],D},Tt=t=>{const e=G(18),{action:r,message:s,onClose:c,onDone:l,testId:o,title:a}=t,i=W(),{busy:m,error:d,run:p}=ie();let u;e[0]!==r||e[1]!==c||e[2]!==l||e[3]!==p?(u=()=>{p(async()=>{await r(),l(),c()})},e[0]=r,e[1]=c,e[2]=l,e[3]=p,e[4]=u):u=e[4];const g=u;let C;e[5]!==i?(C=i("Delete"),e[5]=i,e[6]=C):C=e[6];let b;e[7]!==s?(b=n("p",{className:"text-sm text-muted-foreground",children:s}),e[7]=s,e[8]=b):b=e[8];let v;return e[9]!==m||e[10]!==d||e[11]!==c||e[12]!==g||e[13]!==C||e[14]!==b||e[15]!==o||e[16]!==a?(v=n(se,{busy:m,canSubmit:!0,destructive:!0,error:d,onClose:c,onSubmit:g,submitLabel:C,testId:o,title:a,children:b}),e[9]=m,e[10]=d,e[11]=c,e[12]=g,e[13]=C,e[14]=b,e[15]=o,e[16]=a,e[17]=v):v=e[17],v},tt=t=>{const e=G(13),{action:r,children:s,heading:c,testId:l}=t;let o;e[0]!==c?(o=n("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:c}),e[0]=c,e[1]=o):o=e[1];let a;e[2]!==r?(a=r!==void 0&&n("div",{className:"flex items-center gap-2",children:r}),e[2]=r,e[3]=a):a=e[3];let i;e[4]!==o||e[5]!==a?(i=M("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[o,a]}),e[4]=o,e[5]=a,e[6]=i):i=e[6];let m;e[7]!==s?(m=n(St,{className:"px-0",children:s}),e[7]=s,e[8]=m):m=e[8];let d;return e[9]!==i||e[10]!==m||e[11]!==l?(d=M(kt,{className:"overflow-hidden py-0","data-testid":l,children:[i,m]}),e[9]=i,e[10]=m,e[11]=l,e[12]=d):d=e[12],d},rt=t=>{const e=G(23),{columns:r,rowActions:s,rowPrefix:c,rows:l}=t,o=W();let a;e[0]!==r?(a=r.map(Gt),e[0]=r,e[1]=a):a=e[1];let i;e[2]!==o?(i=o("Actions"),e[2]=o,e[3]=i):i=e[3];let m;e[4]!==i?(m=n(me,{"aria-label":i}),e[4]=i,e[5]=m):m=e[5];let d;e[6]!==a||e[7]!==m?(d=n(Nt,{children:M(bt,{children:[a,m]})}),e[6]=a,e[7]=m,e[8]=d):d=e[8];let p;if(e[9]!==r||e[10]!==s||e[11]!==c||e[12]!==l){let C;e[14]!==r||e[15]!==s||e[16]!==c?(C=b=>{const v=S(b.id);return M(bt,{"data-testid":`${c}-${v}`,children:[r.map($=>n(de,{className:$.className,children:$.render(b)},$.head)),n(de,{children:n("div",{className:"flex justify-end gap-1",children:s(b)})})]},v)},e[14]=r,e[15]=s,e[16]=c,e[17]=C):C=e[17],p=l.map(C),e[9]=r,e[10]=s,e[11]=c,e[12]=l,e[13]=p}else p=e[13];let u;e[18]!==p?(u=n(At,{children:p}),e[18]=p,e[19]=u):u=e[19];let g;return e[20]!==d||e[21]!==u?(g=M(Ot,{children:[d,u]}),e[20]=d,e[21]=u,e[22]=g):g=e[22],g},Qt=t=>{const e=G(219),{organizationId:r,rolesEnabled:s,teamsEnabled:c}=t,l=le(),o=W(),[a,i]=P(null),[m,d]=P(null),[p,u]=P(!1),[g,C]=P(null);let b;e[0]!==r?(b=["lunora-auth-org-members",r],e[0]=r,e[1]=b):b=e[1];let v;e[2]!==l||e[3]!==r?(v=()=>l.listAuthOrgMembers({limit:200,organizationId:r}),e[2]=l,e[3]=r,e[4]=v):v=e[4];const $=Ze(b,v);let f;e[5]!==r?(f=["lunora-auth-org-invitations",r],e[5]=r,e[6]=f):f=e[6];let w;e[7]!==l||e[8]!==r?(w=()=>l.listAuthOrgInvitations({limit:200,organizationId:r}),e[7]=l,e[8]=r,e[9]=w):w=e[9];const h=Ze(f,w);let x;e[10]!==r?(x=["lunora-auth-org-teams",r],e[10]=r,e[11]=x):x=e[11];let y;e[12]!==l||e[13]!==r?(y=()=>l.listAuthOrgTeams({limit:200,organizationId:r}),e[12]=l,e[13]=r,e[14]=y):y=e[14];let I;e[15]!==c?(I={enabled:c},e[15]=c,e[16]=I):I=e[16];const z=Ze(x,y,I);let O;e[17]!==r?(O=["lunora-auth-org-roles",r],e[17]=r,e[18]=O):O=e[18];let N;e[19]!==l||e[20]!==r?(N=()=>l.listAuthOrgRoles({limit:200,organizationId:r}),e[19]=l,e[20]=r,e[21]=N):N=e[21];let k;e[22]!==s?(k={enabled:s},e[22]=s,e[23]=k):k=e[23];const D=Ze(O,N,k);let _;e[24]!==m?(_=["lunora-auth-org-team-members",m],e[24]=m,e[25]=_):_=e[25];let J;e[26]!==l||e[27]!==m?(J=()=>l.listAuthOrgTeamMembers({limit:200,teamId:m??""}),e[26]=l,e[27]=m,e[28]=J):J=e[28];const q=m!==null;let U;e[29]!==q?(U={enabled:q},e[29]=q,e[30]=U):U=e[30];const L=Ze(_,J,U);let B;e[31]!==$.data?.rows?(B=$.data?.rows??[],e[31]=$.data?.rows,e[32]=B):B=e[32];const K=B;let F;e[33]!==h.data?.rows?(F=h.data?.rows??[],e[33]=h.data?.rows,e[34]=F):F=e[34];const R=F;let H;e[35]!==z.data?.rows?(H=z.data?.rows??[],e[35]=z.data?.rows,e[36]=H):H=e[36];const re=H;let X;e[37]!==D.data?.rows?(X=D.data?.rows??[],e[37]=D.data?.rows,e[38]=X):X=e[38];const Y=X;let Z;e[39]!==m||e[40]!==L?(Z=m===null?[]:L.data?.rows??[],e[39]=m,e[40]=L,e[41]=Z):Z=e[41];const ee=Z,oe=$.error??h.error??z.error??D.error??L.error;let te;e[42]!==h||e[43]!==$||e[44]!==s||e[45]!==D||e[46]!==m||e[47]!==L||e[48]!==c||e[49]!==z?(te=()=>{$.refetch(),h.refetch(),c&&z.refetch(),s&&D.refetch(),m!==null&&L.refetch()},e[42]=h,e[43]=$,e[44]=s,e[45]=D,e[46]=m,e[47]=L,e[48]=c,e[49]=z,e[50]=te):te=e[50];const A=te;Dt(A,!0);let ne;e[51]===Symbol.for("react.memo_cache_sentinel")?(ne=()=>{i(null)},e[51]=ne):ne=e[51];const E=ne;let ot;e[52]!==A?(ot=T=>{Et((async()=>{u(!0),C(null);try{await T(),A(),u(!1)}catch(gt){C(Lt(gt)),u(!1)}})())},e[52]=A,e[53]=ot):ot=e[53];const ae=ot;let nt;e[54]!==l||e[55]!==o?(nt=T=>{const gt=S(T.id);i({action:async()=>{await l.removeAuthOrgTeam({teamId:gt}),d(Ct=>Ct===gt?null:Ct)},kind:"confirm",message:o("Delete this team and its memberships? This cannot be undone."),testId:"org-team-delete",title:o("Delete team")})},e[54]=l,e[55]=o,e[56]=nt):nt=e[56];const ft=nt;let ce;e[57]!==o?(ce=o("userId"),e[57]=o,e[58]=ce):ce=e[58];let ue;e[59]!==ce?(ue={head:ce,render:Vt},e[59]=ce,e[60]=ue):ue=e[60];let ge;e[61]!==o?(ge=o("role"),e[61]=o,e[62]=ge):ge=e[62];let he;e[63]!==ge?(he={head:ge,render:Wt},e[63]=ge,e[64]=he):he=e[64];let at;e[65]!==ue||e[66]!==he?(at=[ue,he],e[65]=ue,e[66]=he,e[67]=at):at=e[67];const pt=at;let be;e[68]!==o?(be=o("email"),e[68]=o,e[69]=be):be=e[69];let fe;e[70]!==be?(fe={head:be,render:Xt},e[70]=be,e[71]=fe):fe=e[71];let pe;e[72]!==o?(pe=o("role"),e[72]=o,e[73]=pe):pe=e[73];let ve;e[74]!==pe?(ve={head:pe,render:Yt},e[74]=pe,e[75]=ve):ve=e[75];let ye;e[76]!==o?(ye=o("status"),e[76]=o,e[77]=ye):ye=e[77];let Ie;e[78]!==ye?(Ie={head:ye,render:Zt},e[78]=ye,e[79]=Ie):Ie=e[79];let lt;e[80]!==fe||e[81]!==ve||e[82]!==Ie?(lt=[fe,ve,Ie],e[80]=fe,e[81]=ve,e[82]=Ie,e[83]=lt):lt=e[83];const vt=lt;let we;e[84]!==o?(we=o("id"),e[84]=o,e[85]=we):we=e[85];let Ce;e[86]!==we?(Ce={className:"font-mono text-xs",head:we,render:er},e[86]=we,e[87]=Ce):Ce=e[87];let $e;e[88]!==o?($e=o("name"),e[88]=o,e[89]=$e):$e=e[89];let xe;e[90]!==$e?(xe={head:$e,render:tr},e[90]=$e,e[91]=xe):xe=e[91];let it;e[92]!==Ce||e[93]!==xe?(it=[Ce,xe],e[92]=Ce,e[93]=xe,e[94]=it):it=e[94];const yt=it;let ze;e[95]!==o?(ze=o("userId"),e[95]=o,e[96]=ze):ze=e[96];let st;e[97]!==ze?(st=[{head:ze,render:rr}],e[97]=ze,e[98]=st):st=e[98];const It=st;let Se;e[99]!==o?(Se=o("role"),e[99]=o,e[100]=Se):Se=e[100];let ke;e[101]!==Se?(ke={head:Se,render:or},e[101]=Se,e[102]=ke):ke=e[102];let Ne;e[103]!==o?(Ne=o("Permission"),e[103]=o,e[104]=Ne):Ne=e[104];let Ae;e[105]!==Ne?(Ae={className:"font-mono text-xs whitespace-pre-wrap",head:Ne,render:nr},e[105]=Ne,e[106]=Ae):Ae=e[106];let mt;e[107]!==ke||e[108]!==Ae?(mt=[ke,Ae],e[107]=ke,e[108]=Ae,e[109]=mt):mt=e[109];const wt=mt;let Oe;e[110]!==oe?(Oe=oe!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-detail-error",role:"alert",children:oe}),e[110]=oe,e[111]=Oe):Oe=e[111];let De;e[112]!==g?(De=g!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-action-error",role:"alert",children:g}),e[112]=g,e[113]=De):De=e[113];let dt;e[114]===Symbol.for("react.memo_cache_sentinel")?(dt=()=>{i({kind:"add-member"})},e[114]=dt):dt=e[114];let _e;e[115]!==o?(_e=o("Add member"),e[115]=o,e[116]=_e):_e=e[116];let Fe;e[117]!==_e?(Fe=n(j,{"data-testid":"org-open-add-member",onClick:dt,size:"xs",type:"button",variant:"outline",children:_e}),e[117]=_e,e[118]=Fe):Fe=e[118];let ct;e[119]===Symbol.for("react.memo_cache_sentinel")?(ct=()=>{i({kind:"invite-member"})},e[119]=ct):ct=e[119];let Re;e[120]!==o?(Re=o("Invite member"),e[120]=o,e[121]=Re):Re=e[121];let Te;e[122]!==Re?(Te=n(j,{"data-testid":"org-open-invite-member",onClick:ct,size:"xs",type:"button",variant:"outline",children:Re}),e[122]=Re,e[123]=Te):Te=e[123];let Me;e[124]!==Fe||e[125]!==Te?(Me=M(ht,{children:[Fe,Te]}),e[124]=Fe,e[125]=Te,e[126]=Me):Me=e[126];let Ee;e[127]!==o?(Ee=o("Members"),e[127]=o,e[128]=Ee):Ee=e[128];let Le;e[129]!==p||e[130]!==l||e[131]!==pt||e[132]!==K||e[133]!==ae||e[134]!==o?(Le=K.length===0?n("div",{className:"p-3",children:n(et,{testId:"org-members-empty",title:o("No members.")})}):n(rt,{columns:pt,rowActions:T=>M(ht,{children:[n(j,{"data-testid":`org-member-role-${S(T.id)}`,onClick:()=>{i({kind:"member-role",member:T})},size:"xs",type:"button",variant:"ghost",children:o("Change role")}),n(j,{"data-testid":`org-remove-member-${S(T.id)}`,disabled:p,onClick:()=>{ae(()=>l.removeAuthOrgMember({memberId:S(T.id)}))},size:"xs",type:"button",variant:"ghost",children:o("Remove")})]}),rowPrefix:"org-member",rows:K}),e[129]=p,e[130]=l,e[131]=pt,e[132]=K,e[133]=ae,e[134]=o,e[135]=Le):Le=e[135];let je;e[136]!==Me||e[137]!==Ee||e[138]!==Le?(je=n(tt,{action:Me,heading:Ee,testId:"org-members",children:Le}),e[136]=Me,e[137]=Ee,e[138]=Le,e[139]=je):je=e[139];let Pe;e[140]!==p||e[141]!==l||e[142]!==vt||e[143]!==R||e[144]!==ae||e[145]!==o?(Pe=R.length>0&&n(tt,{heading:o("Invitations"),testId:"org-invitations",children:n(rt,{columns:vt,rowActions:T=>n(j,{"data-testid":`org-cancel-invitation-${S(T.id)}`,disabled:p,onClick:()=>{ae(()=>l.cancelAuthOrgInvitation({invitationId:S(T.id)}))},size:"xs",type:"button",variant:"ghost",children:o("Cancel")}),rowPrefix:"org-invitation",rows:R})}),e[140]=p,e[141]=l,e[142]=vt,e[143]=R,e[144]=ae,e[145]=o,e[146]=Pe):Pe=e[146];let Je;e[147]!==ft||e[148]!==m||e[149]!==o||e[150]!==yt||e[151]!==re||e[152]!==c?(Je=c&&n(tt,{action:n(j,{"data-testid":"org-open-create-team",onClick:()=>{i({kind:"team-create"})},size:"xs",type:"button",variant:"outline",children:o("New team")}),heading:o("Teams"),testId:"org-teams",children:re.length===0?n("div",{className:"p-3",children:n(et,{testId:"org-teams-empty",title:o("No teams.")})}):n(rt,{columns:yt,rowActions:T=>M(ht,{children:[n(j,{"aria-pressed":m===S(T.id),"data-testid":`org-team-select-${S(T.id)}`,onClick:()=>{d(S(T.id))},size:"xs",type:"button",variant:"ghost",children:o("Members")}),n(j,{"data-testid":`org-team-rename-${S(T.id)}`,onClick:()=>{i({kind:"team-rename",team:T})},size:"xs",type:"button",variant:"ghost",children:o("Rename")}),n(j,{"data-testid":`org-team-delete-${S(T.id)}`,onClick:()=>{ft(T)},size:"xs",type:"button",variant:"ghost",children:o("Delete")})]}),rowPrefix:"org-team",rows:re})}),e[147]=ft,e[148]=m,e[149]=o,e[150]=yt,e[151]=re,e[152]=c,e[153]=Je):Je=e[153];let Ue;e[154]!==p||e[155]!==l||e[156]!==ae||e[157]!==m||e[158]!==o||e[159]!==It||e[160]!==ee||e[161]!==c?(Ue=c&&m!==null&&n(tt,{action:n(j,{"data-testid":"org-open-add-team-member",onClick:()=>{i({kind:"team-add-member",teamId:m})},size:"xs",type:"button",variant:"outline",children:o("Add member")}),heading:o("Team members"),testId:"org-team-members",children:ee.length===0?n("div",{className:"p-3",children:n(et,{testId:"org-team-members-empty",title:o("No team members.")})}):n(rt,{columns:It,rowActions:T=>n(j,{"data-testid":`org-team-remove-member-${S(T.id)}`,disabled:p,onClick:()=>{ae(()=>l.removeAuthOrgTeamMember({teamMemberId:S(T.id)}))},size:"xs",type:"button",variant:"ghost",children:o("Remove")}),rowPrefix:"org-team-member",rows:ee})}),e[154]=p,e[155]=l,e[156]=ae,e[157]=m,e[158]=o,e[159]=It,e[160]=ee,e[161]=c,e[162]=Ue):Ue=e[162];let Be;e[163]!==l||e[164]!==wt||e[165]!==Y||e[166]!==s||e[167]!==o?(Be=s&&n(tt,{action:n(j,{"data-testid":"org-open-create-role",onClick:()=>{i({kind:"role-create"})},size:"xs",type:"button",variant:"outline",children:o("New role")}),heading:o("Roles"),testId:"org-roles",children:Y.length===0?n("div",{className:"p-3",children:n(et,{testId:"org-roles-empty",title:o("No custom roles.")})}):n(rt,{columns:wt,rowActions:T=>M(ht,{children:[n(j,{"data-testid":`org-role-edit-${S(T.id)}`,onClick:()=>{i({kind:"role-edit",role:T})},size:"xs",type:"button",variant:"ghost",children:o("Edit")}),n(j,{"data-testid":`org-role-delete-${S(T.id)}`,onClick:()=>{i({action:()=>l.deleteAuthOrgRole({roleId:S(T.id)}),kind:"confirm",message:o("Delete this custom role? Members keeping it will lose its grants."),testId:"org-role-delete",title:o("Delete role")})},size:"xs",type:"button",variant:"ghost",children:o("Delete")})]}),rowPrefix:"org-role",rows:Y})}),e[163]=l,e[164]=wt,e[165]=Y,e[166]=s,e[167]=o,e[168]=Be):Be=e[168];let He;e[169]!==a?.kind||e[170]!==r||e[171]!==A?(He=a?.kind==="add-member"&&n(Bt,{onClose:E,onDone:A,organizationId:r}),e[169]=a?.kind,e[170]=r,e[171]=A,e[172]=He):He=e[172];let qe;e[173]!==a?.kind||e[174]!==r||e[175]!==A?(qe=a?.kind==="invite-member"&&n(Ht,{onClose:E,onDone:A,organizationId:r}),e[173]=a?.kind,e[174]=r,e[175]=A,e[176]=qe):qe=e[176];let Ke;e[177]!==a||e[178]!==A?(Ke=a?.kind==="member-role"&&n(qt,{member:a.member,onClose:E,onDone:A}),e[177]=a,e[178]=A,e[179]=Ke):Ke=e[179];let Qe;e[180]!==a?.kind||e[181]!==r||e[182]!==A?(Qe=a?.kind==="team-create"&&n(xt,{mode:"create",onClose:E,onDone:A,organizationId:r}),e[180]=a?.kind,e[181]=r,e[182]=A,e[183]=Qe):Qe=e[183];let Ge;e[184]!==a||e[185]!==r||e[186]!==A?(Ge=a?.kind==="team-rename"&&n(xt,{mode:"edit",onClose:E,onDone:A,organizationId:r,team:a.team}),e[184]=a,e[185]=r,e[186]=A,e[187]=Ge):Ge=e[187];let Ve;e[188]!==a||e[189]!==A?(Ve=a?.kind==="team-add-member"&&n(Kt,{onClose:E,onDone:A,teamId:a.teamId}),e[188]=a,e[189]=A,e[190]=Ve):Ve=e[190];let We;e[191]!==a?.kind||e[192]!==r||e[193]!==A?(We=a?.kind==="role-create"&&n(zt,{mode:"create",onClose:E,onDone:A,organizationId:r}),e[191]=a?.kind,e[192]=r,e[193]=A,e[194]=We):We=e[194];let Xe;e[195]!==a||e[196]!==r||e[197]!==A?(Xe=a?.kind==="role-edit"&&n(zt,{mode:"edit",onClose:E,onDone:A,organizationId:r,role:a.role}),e[195]=a,e[196]=r,e[197]=A,e[198]=Xe):Xe=e[198];let Ye;e[199]!==a||e[200]!==A?(Ye=a?.kind==="confirm"&&n(Tt,{action:a.action,message:a.message,onClose:E,onDone:A,testId:a.testId,title:a.title}),e[199]=a,e[200]=A,e[201]=Ye):Ye=e[201];let ut;return e[202]!==Oe||e[203]!==De||e[204]!==je||e[205]!==Pe||e[206]!==Je||e[207]!==Ue||e[208]!==Be||e[209]!==He||e[210]!==qe||e[211]!==Ke||e[212]!==Qe||e[213]!==Ge||e[214]!==Ve||e[215]!==We||e[216]!==Xe||e[217]!==Ye?(ut=M("div",{className:"flex flex-col gap-4","data-testid":"org-detail",children:[Oe,De,je,Pe,Je,Ue,Be,He,qe,Ke,Qe,Ge,Ve,We,Xe,Ye]}),e[202]=Oe,e[203]=De,e[204]=je,e[205]=Pe,e[206]=Je,e[207]=Ue,e[208]=Be,e[209]=He,e[210]=qe,e[211]=Ke,e[212]=Qe,e[213]=Ge,e[214]=Ve,e[215]=We,e[216]=Xe,e[217]=Ye,e[218]=ut):ut=e[218],ut};function Gt(t){return n(me,{children:t.head},t.head)}function Vt(t){return n("span",{className:"font-mono text-xs",children:S(t.userId)})}function Wt(t){return S(t.role)}function Xt(t){return S(t.email)}function Yt(t){return S(t.role)}function Zt(t){return S(t.status)}function er(t){return S(t.id)}function tr(t){return S(t.name)}function rr(t){return n("span",{className:"font-mono text-xs",children:S(t.userId)})}function or(t){return S(t.role)}function nr(t){return S(t.permission)}const $r=()=>{const t=G(62),e=le(),r=W(),{config:s,ready:c}=Mt(),l=s.capabilities.organization,[o,a]=P(null),[i,m]=P(null);let d;t[0]===Symbol.for("react.memo_cache_sentinel")?(d=["lunora-auth-orgs"],t[0]=d):d=t[0];let p;t[1]!==e?(p=()=>e.listAuthOrganizations({limit:100}),t[1]=e,t[2]=p):p=t[2];let u;t[3]!==l?(u={enabled:l},t[3]=l,t[4]=u):u=t[4];const g=Ze(d,p,u),C=g.data?.rows??null;let b;t[5]!==g?(b=()=>{g.refetch()},t[5]=g,t[6]=b):b=t[6],Dt(b,l);let v;t[7]===Symbol.for("react.memo_cache_sentinel")?(v=()=>{m(null)},t[7]=v):v=t[7];const $=v;let f;t[8]!==g?(f=()=>{g.refetch()},t[8]=g,t[9]=f):f=t[9];const w=f;let h;t[10]===Symbol.for("react.memo_cache_sentinel")?(h=F=>{a(F)},t[10]=h):h=t[10];const x=h;if(c&&!l){let F;t[11]!==r?(F=r("Enable the organization() plugin in your auth config to manage organizations here."),t[11]=r,t[12]=F):F=t[12];let R;t[13]!==r?(R=r("Organizations are not enabled."),t[13]=r,t[14]=R):R=t[14];let H;return t[15]!==F||t[16]!==R?(H=n(et,{description:F,testId:"org-disabled",title:R}),t[15]=F,t[16]=R,t[17]=H):H=t[17],H}let y;t[18]!==r?(y=r("Organizations"),t[18]=r,t[19]=y):y=t[19];let I;t[20]!==y?(I=n("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:y}),t[20]=y,t[21]=I):I=t[21];let z;t[22]===Symbol.for("react.memo_cache_sentinel")?(z=()=>{m({kind:"create"})},t[22]=z):z=t[22];let O;t[23]!==r?(O=r("New organization"),t[23]=r,t[24]=O):O=t[24];let N;t[25]!==O?(N=n(j,{"data-testid":"org-new",onClick:z,size:"sm",type:"button",children:O}),t[25]=O,t[26]=N):N=t[26];let k;t[27]!==N||t[28]!==I?(k=M("div",{className:"flex items-center justify-between",children:[I,N]}),t[27]=N,t[28]=I,t[29]=k):k=t[29];let D;t[30]!==g.error?(D=g.error!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-error",role:"alert",children:g.error}),t[30]=g.error,t[31]=D):D=t[31];let _;t[32]!==C||t[33]!==r?(_=C!==null&&C.length===0&&n(et,{testId:"org-empty",title:r("No organizations.")}),t[32]=C,t[33]=r,t[34]=_):_=t[34];let J;t[35]!==C||t[36]!==o||t[37]!==r?(J=C!==null&&C.length>0&&n(kt,{className:"overflow-hidden py-0",children:n(St,{className:"px-0",children:M(Ot,{"data-testid":"org-table",children:[n(Nt,{children:M(bt,{children:[n(me,{children:r("id")}),n(me,{children:r("name")}),n(me,{children:r("slug")}),n(me,{children:r("created")}),n(me,{"aria-label":r("Actions")})]})}),n(At,{children:C.map(F=>{const R=S(F.id);return M(bt,{"data-testid":`org-row-${R}`,children:[n(de,{className:"font-mono text-xs",children:R}),n(de,{children:S(F.name)}),n(de,{children:S(F.slug)}),n(de,{className:"text-muted-foreground tabular-nums",children:jt(F.createdAt)}),n(de,{children:M("div",{className:"flex justify-end gap-1",children:[n(j,{"aria-pressed":o===R,"data-testid":`org-select-${R}`,onClick:()=>{x(R)},size:"xs",type:"button",variant:"ghost",children:r("Manage")}),n(j,{"data-testid":`org-edit-${R}`,onClick:()=>{m({kind:"edit",org:F})},size:"xs",type:"button",variant:"ghost",children:r("Edit")}),n(j,{"data-testid":`org-delete-${R}`,onClick:()=>{m({kind:"delete",org:F})},size:"xs",type:"button",variant:"ghost",children:r("Delete")})]})})]},R)})})]})})}),t[35]=C,t[36]=o,t[37]=r,t[38]=J):J=t[38];let q;t[39]!==s.organization||t[40]!==o?(q=o!==null&&n(Qt,{organizationId:o,rolesEnabled:s.organization.roles,teamsEnabled:s.organization.teams}),t[39]=s.organization,t[40]=o,t[41]=q):q=t[41];let U;t[42]!==i?.kind||t[43]!==w?(U=i?.kind==="create"&&n($t,{mode:"create",onClose:$,onDone:w}),t[42]=i?.kind,t[43]=w,t[44]=U):U=t[44];let L;t[45]!==i||t[46]!==w?(L=i?.kind==="edit"&&n($t,{mode:"edit",onClose:$,onDone:w,org:i.org}),t[45]=i,t[46]=w,t[47]=L):L=t[47];let B;t[48]!==e||t[49]!==i||t[50]!==w||t[51]!==r?(B=i?.kind==="delete"&&n(Tt,{action:async()=>{const F=S(i.org.id);await e.deleteAuthOrganization({organizationId:F}),a(R=>R===F?null:R)},message:r("Delete this organization? Its members, invitations, teams, and custom roles are removed. This cannot be undone."),onClose:$,onDone:w,testId:"org-delete",title:r("Delete organization")}),t[48]=e,t[49]=i,t[50]=w,t[51]=r,t[52]=B):B=t[52];let K;return t[53]!==k||t[54]!==D||t[55]!==_||t[56]!==J||t[57]!==q||t[58]!==U||t[59]!==L||t[60]!==B?(K=M("div",{className:"flex flex-col gap-4","data-testid":"lunora-organizations",children:[k,D,_,J,q,U,L,B]}),t[53]=k,t[54]=D,t[55]=_,t[56]=J,t[57]=q,t[58]=U,t[59]=L,t[60]=B,t[61]=K):K=t[61],K};export{$r as OrganizationsPanel};
1
+ import{c as G}from"react/compiler-runtime";import{useLunora as le}from"@lunora/react";import{useState as P}from"react";import{u as j}from"../packem_shared/button-BkCrNcAs.js";import{u as St,c as kt}from"../packem_shared/card-CIDGUN6K.js";import{E as et}from"../packem_shared/empty-state-Cg7t_8qu.js";import{p as me,d as Nt,m as bt,f as At,n as Ot,u as de}from"../packem_shared/table-DdJBrClo.js";import{O as Ze}from"../packem_shared/use-admin-query-QJ-ibl5u.js";import{u as Tt}from"../packem_shared/use-auth-config-BObBpdsi.js";import{useAutoRefresh as Dt}from"../packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js";import{useT as W}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{h as S,f as Et,b as Lt,i as jt}from"../packem_shared/internal-BSIsQVC6.js";import{u as V}from"../packem_shared/input-JHu63lTv.js";import{p as Pt}from"../packem_shared/label-6uP1obNF.js";import{M as Jt}from"../packem_shared/modal-shell-CUwwWC2o.js";import{l as _t}from"../packem_shared/textarea-Bu2-jKAs.js";import{u as ie}from"../packem_shared/use-async-submit-q3ymBJkD.js";import{jsx as n,jsxs as T,Fragment as ht}from"react/jsx-runtime";const Ft=t=>{const e=JSON.parse(t);if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("Expected a JSON object");return e},Ut=t=>{const e=Ft(t),r={};for(const[s,c]of Object.entries(e)){if(!Array.isArray(c)||c.some(l=>typeof l!="string"))throw new TypeError(`"${s}" must map to an array of action strings`);r[s]=c}return r},Rt=t=>t==null||t===""?"":typeof t=="string"?t:JSON.stringify(t,null,2),Q=t=>{const e=G(6),{children:r,htmlFor:s,label:c}=t;let l;e[0]!==s||e[1]!==c?(l=n(Pt,{htmlFor:s,children:c}),e[0]=s,e[1]=c,e[2]=l):l=e[2];let o;return e[3]!==r||e[4]!==l?(o=T("div",{className:"flex flex-col gap-1",children:[l,r]}),e[3]=r,e[4]=l,e[5]=o):o=e[5],o},se=({busy:t,canSubmit:e,children:r,destructive:s=!1,error:c,onClose:l,onSubmit:o,submitLabel:a,testId:i,title:m})=>{const d=W();return T(Jt,{label:m,onClose:l,panelTestId:`${i}-panel`,testId:`${i}-overlay`,variant:"dialog",children:[n("h2",{className:"text-sm font-semibold text-foreground",children:m}),r,c!==null&&n("p",{className:"text-sm text-destructive","data-testid":`${i}-error`,role:"alert",children:c}),T("div",{className:"flex justify-end gap-2 pt-1",children:[n(j,{"data-testid":`${i}-cancel`,onClick:l,size:"sm",type:"button",variant:"outline",children:d("Cancel")}),n(j,{"data-testid":`${i}-submit`,disabled:t||!e,onClick:o,size:"sm",type:"button",variant:s?"destructive":"default",children:t?d("Saving…"):a})]})]})},$t=t=>{const e=G(79),{mode:r,onClose:s,onDone:c,org:l}=t,o=le(),a=W(),{busy:i,error:m,run:d}=ie();let p;e[0]!==l?(p=l?S(l.name):"",e[0]=l,e[1]=p):p=e[1];const[u,g]=P(p);let C;e[2]!==l?(C=l?S(l.slug):"",e[2]=l,e[3]=C):C=e[3];const[b,v]=P(C);let $;e[4]!==l?($=l?S(l.logo):"",e[4]=l,e[5]=$):$=e[5];const[f,w]=P($),[h,x]=P("");let y;e[6]!==r||e[7]!==l?.metadata?(y=r==="edit"?Rt(l?.metadata):"",e[6]=r,e[7]=l?.metadata,e[8]=y):y=e[8];const[I,z]=P(y);let O;e[9]!==o||e[10]!==f||e[11]!==I||e[12]!==r||e[13]!==u||e[14]!==s||e[15]!==c||e[16]!==l?.id||e[17]!==h||e[18]!==d||e[19]!==b?(O=()=>{d(async()=>{const E=I.trim()===""?void 0:Ft(I);r==="create"?await o.createAuthOrganization({logo:f.trim()===""?void 0:f.trim(),metadata:E,name:u.trim(),ownerId:h.trim()===""?void 0:h.trim(),slug:b.trim()===""?void 0:b.trim()}):await o.updateAuthOrganization({logo:f.trim()===""?void 0:f.trim(),metadata:E,name:u.trim()===""?void 0:u.trim(),organizationId:S(l?.id),slug:b.trim()===""?void 0:b.trim()}),c(),s()})},e[9]=o,e[10]=f,e[11]=I,e[12]=r,e[13]=u,e[14]=s,e[15]=c,e[16]=l?.id,e[17]=h,e[18]=d,e[19]=b,e[20]=O):O=e[20];const N=O;let k;e[21]!==r||e[22]!==u?(k=u.trim()!==""||r==="edit",e[21]=r,e[22]=u,e[23]=k):k=e[23];let D;e[24]!==r||e[25]!==a?(D=a(r==="create"?"Create":"Save"),e[24]=r,e[25]=a,e[26]=D):D=e[26];let _;e[27]!==r||e[28]!==a?(_=a(r==="create"?"New organization":"Edit organization"),e[27]=r,e[28]=a,e[29]=_):_=e[29];let J;e[30]!==a?(J=a("name"),e[30]=a,e[31]=J):J=e[31];let q;e[32]===Symbol.for("react.memo_cache_sentinel")?(q=E=>{g(E.target.value)},e[32]=q):q=e[32];let U;e[33]!==u?(U=n(V,{"data-testid":"org-form-name",id:"org-form-name",onChange:q,value:u}),e[33]=u,e[34]=U):U=e[34];let L;e[35]!==U||e[36]!==J?(L=n(Q,{htmlFor:"org-form-name",label:J,children:U}),e[35]=U,e[36]=J,e[37]=L):L=e[37];let B;e[38]!==a?(B=a("Slug (optional — derived from name)"),e[38]=a,e[39]=B):B=e[39];let K;e[40]===Symbol.for("react.memo_cache_sentinel")?(K=E=>{v(E.target.value)},e[40]=K):K=e[40];let F;e[41]!==b?(F=n(V,{"data-testid":"org-form-slug",id:"org-form-slug",onChange:K,value:b}),e[41]=b,e[42]=F):F=e[42];let R;e[43]!==B||e[44]!==F?(R=n(Q,{htmlFor:"org-form-slug",label:B,children:F}),e[43]=B,e[44]=F,e[45]=R):R=e[45];let H;e[46]!==a?(H=a("Logo URL (optional)"),e[46]=a,e[47]=H):H=e[47];let re;e[48]===Symbol.for("react.memo_cache_sentinel")?(re=E=>{w(E.target.value)},e[48]=re):re=e[48];let X;e[49]!==f?(X=n(V,{"data-testid":"org-form-logo",id:"org-form-logo",onChange:re,value:f}),e[49]=f,e[50]=X):X=e[50];let Y;e[51]!==H||e[52]!==X?(Y=n(Q,{htmlFor:"org-form-logo",label:H,children:X}),e[51]=H,e[52]=X,e[53]=Y):Y=e[53];let Z;e[54]!==r||e[55]!==h||e[56]!==a?(Z=r==="create"&&n(Q,{htmlFor:"org-form-owner",label:a("Owner user id (optional)"),children:n(V,{"data-testid":"org-form-owner",id:"org-form-owner",onChange:E=>{x(E.target.value)},value:h})}),e[54]=r,e[55]=h,e[56]=a,e[57]=Z):Z=e[57];let ee;e[58]!==a?(ee=a("Metadata (JSON, optional)"),e[58]=a,e[59]=ee):ee=e[59];let oe;e[60]===Symbol.for("react.memo_cache_sentinel")?(oe=E=>{z(E.target.value)},e[60]=oe):oe=e[60];let te;e[61]!==I?(te=n(_t,{"data-testid":"org-form-metadata",id:"org-form-metadata",onChange:oe,value:I}),e[61]=I,e[62]=te):te=e[62];let A;e[63]!==ee||e[64]!==te?(A=n(Q,{htmlFor:"org-form-metadata",label:ee,children:te}),e[63]=ee,e[64]=te,e[65]=A):A=e[65];let ne;return e[66]!==i||e[67]!==m||e[68]!==s||e[69]!==N||e[70]!==L||e[71]!==R||e[72]!==Y||e[73]!==Z||e[74]!==A||e[75]!==k||e[76]!==D||e[77]!==_?(ne=T(se,{busy:i,canSubmit:k,error:m,onClose:s,onSubmit:N,submitLabel:D,testId:"org-form",title:_,children:[L,R,Y,Z,A]}),e[66]=i,e[67]=m,e[68]=s,e[69]=N,e[70]=L,e[71]=R,e[72]=Y,e[73]=Z,e[74]=A,e[75]=k,e[76]=D,e[77]=_,e[78]=ne):ne=e[78],ne},Bt=t=>{const e=G(40),{onClose:r,onDone:s,organizationId:c}=t,l=le(),o=W(),{busy:a,error:i,run:m}=ie(),[d,p]=P(""),[u,g]=P("");let C;e[0]!==l||e[1]!==r||e[2]!==s||e[3]!==c||e[4]!==u||e[5]!==m||e[6]!==d?(C=()=>{m(async()=>{await l.addAuthOrgMember({organizationId:c,role:u.trim()===""?void 0:u.trim(),userId:d.trim()}),s(),r()})},e[0]=l,e[1]=r,e[2]=s,e[3]=c,e[4]=u,e[5]=m,e[6]=d,e[7]=C):C=e[7];const b=C;let v;e[8]!==d?(v=d.trim(),e[8]=d,e[9]=v):v=e[9];const $=v!=="";let f;e[10]!==o?(f=o("Add member"),e[10]=o,e[11]=f):f=e[11];let w;e[12]!==o?(w=o("Add member"),e[12]=o,e[13]=w):w=e[13];let h;e[14]!==o?(h=o("User id"),e[14]=o,e[15]=h):h=e[15];let x;e[16]===Symbol.for("react.memo_cache_sentinel")?(x=_=>{p(_.target.value)},e[16]=x):x=e[16];let y;e[17]!==d?(y=n(V,{"data-testid":"org-add-member-user",id:"org-add-member-user",onChange:x,value:d}),e[17]=d,e[18]=y):y=e[18];let I;e[19]!==h||e[20]!==y?(I=n(Q,{htmlFor:"org-add-member-user",label:h,children:y}),e[19]=h,e[20]=y,e[21]=I):I=e[21];let z;e[22]!==o?(z=o("Role (optional)"),e[22]=o,e[23]=z):z=e[23];let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=_=>{g(_.target.value)},e[24]=O):O=e[24];let N;e[25]!==u?(N=n(V,{"data-testid":"org-add-member-role",id:"org-add-member-role",onChange:O,value:u}),e[25]=u,e[26]=N):N=e[26];let k;e[27]!==z||e[28]!==N?(k=n(Q,{htmlFor:"org-add-member-role",label:z,children:N}),e[27]=z,e[28]=N,e[29]=k):k=e[29];let D;return e[30]!==a||e[31]!==i||e[32]!==r||e[33]!==b||e[34]!==k||e[35]!==$||e[36]!==f||e[37]!==w||e[38]!==I?(D=T(se,{busy:a,canSubmit:$,error:i,onClose:r,onSubmit:b,submitLabel:f,testId:"org-add-member",title:w,children:[I,k]}),e[30]=a,e[31]=i,e[32]=r,e[33]=b,e[34]=k,e[35]=$,e[36]=f,e[37]=w,e[38]=I,e[39]=D):D=e[39],D},Ht=t=>{const e=G(40),{onClose:r,onDone:s,organizationId:c}=t,l=le(),o=W(),{busy:a,error:i,run:m}=ie(),[d,p]=P(""),[u,g]=P("");let C;e[0]!==l||e[1]!==d||e[2]!==r||e[3]!==s||e[4]!==c||e[5]!==u||e[6]!==m?(C=()=>{m(async()=>{await l.inviteAuthOrgMember({email:d.trim(),organizationId:c,role:u.trim()===""?void 0:u.trim()}),s(),r()})},e[0]=l,e[1]=d,e[2]=r,e[3]=s,e[4]=c,e[5]=u,e[6]=m,e[7]=C):C=e[7];const b=C;let v;e[8]!==d?(v=d.trim(),e[8]=d,e[9]=v):v=e[9];const $=v!=="";let f;e[10]!==o?(f=o("Send invitation"),e[10]=o,e[11]=f):f=e[11];let w;e[12]!==o?(w=o("Invite member"),e[12]=o,e[13]=w):w=e[13];let h;e[14]!==o?(h=o("email"),e[14]=o,e[15]=h):h=e[15];let x;e[16]===Symbol.for("react.memo_cache_sentinel")?(x=_=>{p(_.target.value)},e[16]=x):x=e[16];let y;e[17]!==d?(y=n(V,{"data-testid":"org-invite-member-email",id:"org-invite-member-email",onChange:x,type:"email",value:d}),e[17]=d,e[18]=y):y=e[18];let I;e[19]!==h||e[20]!==y?(I=n(Q,{htmlFor:"org-invite-member-email",label:h,children:y}),e[19]=h,e[20]=y,e[21]=I):I=e[21];let z;e[22]!==o?(z=o("Role (optional)"),e[22]=o,e[23]=z):z=e[23];let O;e[24]===Symbol.for("react.memo_cache_sentinel")?(O=_=>{g(_.target.value)},e[24]=O):O=e[24];let N;e[25]!==u?(N=n(V,{"data-testid":"org-invite-member-role",id:"org-invite-member-role",onChange:O,value:u}),e[25]=u,e[26]=N):N=e[26];let k;e[27]!==z||e[28]!==N?(k=n(Q,{htmlFor:"org-invite-member-role",label:z,children:N}),e[27]=z,e[28]=N,e[29]=k):k=e[29];let D;return e[30]!==a||e[31]!==i||e[32]!==r||e[33]!==b||e[34]!==k||e[35]!==$||e[36]!==f||e[37]!==w||e[38]!==I?(D=T(se,{busy:a,canSubmit:$,error:i,onClose:r,onSubmit:b,submitLabel:f,testId:"org-invite-member",title:w,children:[I,k]}),e[30]=a,e[31]=i,e[32]=r,e[33]=b,e[34]=k,e[35]=$,e[36]=f,e[37]=w,e[38]=I,e[39]=D):D=e[39],D},qt=t=>{const e=G(32),{member:r,onClose:s,onDone:c}=t,l=le(),o=W(),{busy:a,error:i,run:m}=ie();let d;e[0]!==r.role?(d=()=>S(r.role),e[0]=r.role,e[1]=d):d=e[1];const[p,u]=P(d);let g;e[2]!==l||e[3]!==r.id||e[4]!==s||e[5]!==c||e[6]!==p||e[7]!==m?(g=()=>{m(async()=>{await l.setAuthOrgMemberRole({memberId:S(r.id),role:p.trim()}),c(),s()})},e[2]=l,e[3]=r.id,e[4]=s,e[5]=c,e[6]=p,e[7]=m,e[8]=g):g=e[8];const C=g;let b;e[9]!==p?(b=p.trim(),e[9]=p,e[10]=b):b=e[10];const v=b!=="";let $;e[11]!==o?($=o("Save"),e[11]=o,e[12]=$):$=e[12];let f;e[13]!==o?(f=o("Change member role"),e[13]=o,e[14]=f):f=e[14];let w;e[15]!==o?(w=o("Role"),e[15]=o,e[16]=w):w=e[16];let h;e[17]===Symbol.for("react.memo_cache_sentinel")?(h=z=>{u(z.target.value)},e[17]=h):h=e[17];let x;e[18]!==p?(x=n(V,{"data-testid":"org-member-role-value",id:"org-member-role-value",onChange:h,value:p}),e[18]=p,e[19]=x):x=e[19];let y;e[20]!==w||e[21]!==x?(y=n(Q,{htmlFor:"org-member-role-value",label:w,children:x}),e[20]=w,e[21]=x,e[22]=y):y=e[22];let I;return e[23]!==a||e[24]!==i||e[25]!==s||e[26]!==C||e[27]!==y||e[28]!==v||e[29]!==$||e[30]!==f?(I=n(se,{busy:a,canSubmit:v,error:i,onClose:s,onSubmit:C,submitLabel:$,testId:"org-member-role",title:f,children:y}),e[23]=a,e[24]=i,e[25]=s,e[26]=C,e[27]=y,e[28]=v,e[29]=$,e[30]=f,e[31]=I):I=e[31],I},xt=t=>{const e=G(36),{mode:r,onClose:s,onDone:c,organizationId:l,team:o}=t,a=le(),i=W(),{busy:m,error:d,run:p}=ie();let u;e[0]!==o?(u=o?S(o.name):"",e[0]=o,e[1]=u):u=e[1];const[g,C]=P(u);let b;e[2]!==a||e[3]!==r||e[4]!==g||e[5]!==s||e[6]!==c||e[7]!==l||e[8]!==p||e[9]!==o?.id?(b=()=>{p(async()=>{await(r==="create"?a.createAuthOrgTeam({name:g.trim(),organizationId:l}):a.updateAuthOrgTeam({name:g.trim(),teamId:S(o?.id)})),c(),s()})},e[2]=a,e[3]=r,e[4]=g,e[5]=s,e[6]=c,e[7]=l,e[8]=p,e[9]=o?.id,e[10]=b):b=e[10];const v=b;let $;e[11]!==g?($=g.trim(),e[11]=g,e[12]=$):$=e[12];const f=$!=="";let w;e[13]!==r||e[14]!==i?(w=i(r==="create"?"Create":"Save"),e[13]=r,e[14]=i,e[15]=w):w=e[15];let h;e[16]!==r||e[17]!==i?(h=i(r==="create"?"New team":"Rename team"),e[16]=r,e[17]=i,e[18]=h):h=e[18];let x;e[19]!==i?(x=i("name"),e[19]=i,e[20]=x):x=e[20];let y;e[21]===Symbol.for("react.memo_cache_sentinel")?(y=N=>{C(N.target.value)},e[21]=y):y=e[21];let I;e[22]!==g?(I=n(V,{"data-testid":"org-team-form-name",id:"org-team-form-name",onChange:y,value:g}),e[22]=g,e[23]=I):I=e[23];let z;e[24]!==x||e[25]!==I?(z=n(Q,{htmlFor:"org-team-form-name",label:x,children:I}),e[24]=x,e[25]=I,e[26]=z):z=e[26];let O;return e[27]!==m||e[28]!==d||e[29]!==s||e[30]!==v||e[31]!==z||e[32]!==f||e[33]!==w||e[34]!==h?(O=n(se,{busy:m,canSubmit:f,error:d,onClose:s,onSubmit:v,submitLabel:w,testId:"org-team-form",title:h,children:z}),e[27]=m,e[28]=d,e[29]=s,e[30]=v,e[31]=z,e[32]=f,e[33]=w,e[34]=h,e[35]=O):O=e[35],O},Kt=t=>{const e=G(30),{onClose:r,onDone:s,teamId:c}=t,l=le(),o=W(),{busy:a,error:i,run:m}=ie(),[d,p]=P("");let u;e[0]!==l||e[1]!==r||e[2]!==s||e[3]!==m||e[4]!==c||e[5]!==d?(u=()=>{m(async()=>{await l.addAuthOrgTeamMember({teamId:c,userId:d.trim()}),s(),r()})},e[0]=l,e[1]=r,e[2]=s,e[3]=m,e[4]=c,e[5]=d,e[6]=u):u=e[6];const g=u;let C;e[7]!==d?(C=d.trim(),e[7]=d,e[8]=C):C=e[8];const b=C!=="";let v;e[9]!==o?(v=o("Add member"),e[9]=o,e[10]=v):v=e[10];let $;e[11]!==o?($=o("Add team member"),e[11]=o,e[12]=$):$=e[12];let f;e[13]!==o?(f=o("User id"),e[13]=o,e[14]=f):f=e[14];let w;e[15]===Symbol.for("react.memo_cache_sentinel")?(w=I=>{p(I.target.value)},e[15]=w):w=e[15];let h;e[16]!==d?(h=n(V,{"data-testid":"org-team-add-member-user",id:"org-team-add-member-user",onChange:w,value:d}),e[16]=d,e[17]=h):h=e[17];let x;e[18]!==f||e[19]!==h?(x=n(Q,{htmlFor:"org-team-add-member-user",label:f,children:h}),e[18]=f,e[19]=h,e[20]=x):x=e[20];let y;return e[21]!==a||e[22]!==i||e[23]!==r||e[24]!==g||e[25]!==b||e[26]!==v||e[27]!==$||e[28]!==x?(y=n(se,{busy:a,canSubmit:b,error:i,onClose:r,onSubmit:g,submitLabel:v,testId:"org-team-add-member",title:$,children:x}),e[21]=a,e[22]=i,e[23]=r,e[24]=g,e[25]=b,e[26]=v,e[27]=$,e[28]=x,e[29]=y):y=e[29],y},zt=t=>{const e=G(47),{mode:r,onClose:s,onDone:c,organizationId:l,role:o}=t,a=le(),i=W(),{busy:m,error:d,run:p}=ie();let u;e[0]!==o?(u=o?S(o.role):"",e[0]=o,e[1]=u):u=e[1];const[g,C]=P(u);let b;e[2]!==r||e[3]!==o?.permission?(b=r==="edit"?Rt(o?.permission):"",e[2]=r,e[3]=o?.permission,e[4]=b):b=e[4];const[v,$]=P(b);let f;e[5]!==a||e[6]!==r||e[7]!==g||e[8]!==s||e[9]!==c||e[10]!==l||e[11]!==v||e[12]!==o?.id||e[13]!==p?(f=()=>{p(async()=>{const _=Ut(v);await(r==="create"?a.createAuthOrgRole({organizationId:l,permission:_,role:g.trim()}):a.updateAuthOrgRole({permission:_,roleId:S(o?.id)})),c(),s()})},e[5]=a,e[6]=r,e[7]=g,e[8]=s,e[9]=c,e[10]=l,e[11]=v,e[12]=o?.id,e[13]=p,e[14]=f):f=e[14];const w=f;let h;e[15]!==r||e[16]!==g||e[17]!==v?(h=v.trim()!==""&&(r==="edit"||g.trim()!==""),e[15]=r,e[16]=g,e[17]=v,e[18]=h):h=e[18];let x;e[19]!==r||e[20]!==i?(x=i(r==="create"?"Create":"Save"),e[19]=r,e[20]=i,e[21]=x):x=e[21];let y;e[22]!==r||e[23]!==i?(y=i(r==="create"?"New role":"Edit role"),e[22]=r,e[23]=i,e[24]=y):y=e[24];let I;e[25]!==r||e[26]!==g||e[27]!==i?(I=r==="create"&&n(Q,{htmlFor:"org-role-form-name",label:i("Role name"),children:n(V,{"data-testid":"org-role-form-name",id:"org-role-form-name",onChange:_=>{C(_.target.value)},value:g})}),e[25]=r,e[26]=g,e[27]=i,e[28]=I):I=e[28];let z;e[29]!==i?(z=i('Permission (JSON, e.g. {"project":["create","update"]})'),e[29]=i,e[30]=z):z=e[30];let O;e[31]===Symbol.for("react.memo_cache_sentinel")?(O=_=>{$(_.target.value)},e[31]=O):O=e[31];let N;e[32]!==v?(N=n(_t,{"data-testid":"org-role-form-permission",id:"org-role-form-permission",onChange:O,value:v}),e[32]=v,e[33]=N):N=e[33];let k;e[34]!==N||e[35]!==z?(k=n(Q,{htmlFor:"org-role-form-permission",label:z,children:N}),e[34]=N,e[35]=z,e[36]=k):k=e[36];let D;return e[37]!==m||e[38]!==d||e[39]!==s||e[40]!==w||e[41]!==k||e[42]!==h||e[43]!==x||e[44]!==y||e[45]!==I?(D=T(se,{busy:m,canSubmit:h,error:d,onClose:s,onSubmit:w,submitLabel:x,testId:"org-role-form",title:y,children:[I,k]}),e[37]=m,e[38]=d,e[39]=s,e[40]=w,e[41]=k,e[42]=h,e[43]=x,e[44]=y,e[45]=I,e[46]=D):D=e[46],D},Mt=t=>{const e=G(18),{action:r,message:s,onClose:c,onDone:l,testId:o,title:a}=t,i=W(),{busy:m,error:d,run:p}=ie();let u;e[0]!==r||e[1]!==c||e[2]!==l||e[3]!==p?(u=()=>{p(async()=>{await r(),l(),c()})},e[0]=r,e[1]=c,e[2]=l,e[3]=p,e[4]=u):u=e[4];const g=u;let C;e[5]!==i?(C=i("Delete"),e[5]=i,e[6]=C):C=e[6];let b;e[7]!==s?(b=n("p",{className:"text-sm text-muted-foreground",children:s}),e[7]=s,e[8]=b):b=e[8];let v;return e[9]!==m||e[10]!==d||e[11]!==c||e[12]!==g||e[13]!==C||e[14]!==b||e[15]!==o||e[16]!==a?(v=n(se,{busy:m,canSubmit:!0,destructive:!0,error:d,onClose:c,onSubmit:g,submitLabel:C,testId:o,title:a,children:b}),e[9]=m,e[10]=d,e[11]=c,e[12]=g,e[13]=C,e[14]=b,e[15]=o,e[16]=a,e[17]=v):v=e[17],v},tt=t=>{const e=G(13),{action:r,children:s,heading:c,testId:l}=t;let o;e[0]!==c?(o=n("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:c}),e[0]=c,e[1]=o):o=e[1];let a;e[2]!==r?(a=r!==void 0&&n("div",{className:"flex items-center gap-2",children:r}),e[2]=r,e[3]=a):a=e[3];let i;e[4]!==o||e[5]!==a?(i=T("header",{className:"flex items-center justify-between gap-2 border-b border-border px-4 py-3",children:[o,a]}),e[4]=o,e[5]=a,e[6]=i):i=e[6];let m;e[7]!==s?(m=n(St,{className:"px-0",children:s}),e[7]=s,e[8]=m):m=e[8];let d;return e[9]!==i||e[10]!==m||e[11]!==l?(d=T(kt,{className:"overflow-hidden py-0","data-testid":l,children:[i,m]}),e[9]=i,e[10]=m,e[11]=l,e[12]=d):d=e[12],d},rt=t=>{const e=G(23),{columns:r,rowActions:s,rowPrefix:c,rows:l}=t,o=W();let a;e[0]!==r?(a=r.map(Gt),e[0]=r,e[1]=a):a=e[1];let i;e[2]!==o?(i=o("Actions"),e[2]=o,e[3]=i):i=e[3];let m;e[4]!==i?(m=n(me,{"aria-label":i}),e[4]=i,e[5]=m):m=e[5];let d;e[6]!==a||e[7]!==m?(d=n(Nt,{children:T(bt,{children:[a,m]})}),e[6]=a,e[7]=m,e[8]=d):d=e[8];let p;if(e[9]!==r||e[10]!==s||e[11]!==c||e[12]!==l){let C;e[14]!==r||e[15]!==s||e[16]!==c?(C=b=>{const v=S(b.id);return T(bt,{"data-testid":`${c}-${v}`,children:[r.map($=>n(de,{className:$.className,children:$.render(b)},$.head)),n(de,{children:n("div",{className:"flex justify-end gap-1",children:s(b)})})]},v)},e[14]=r,e[15]=s,e[16]=c,e[17]=C):C=e[17],p=l.map(C),e[9]=r,e[10]=s,e[11]=c,e[12]=l,e[13]=p}else p=e[13];let u;e[18]!==p?(u=n(At,{children:p}),e[18]=p,e[19]=u):u=e[19];let g;return e[20]!==d||e[21]!==u?(g=T(Ot,{children:[d,u]}),e[20]=d,e[21]=u,e[22]=g):g=e[22],g},Qt=t=>{const e=G(219),{organizationId:r,rolesEnabled:s,teamsEnabled:c}=t,l=le(),o=W(),[a,i]=P(null),[m,d]=P(null),[p,u]=P(!1),[g,C]=P(null);let b;e[0]!==r?(b=["lunora-auth-org-members",r],e[0]=r,e[1]=b):b=e[1];let v;e[2]!==l||e[3]!==r?(v=()=>l.listAuthOrgMembers({limit:200,organizationId:r}),e[2]=l,e[3]=r,e[4]=v):v=e[4];const $=Ze(b,v);let f;e[5]!==r?(f=["lunora-auth-org-invitations",r],e[5]=r,e[6]=f):f=e[6];let w;e[7]!==l||e[8]!==r?(w=()=>l.listAuthOrgInvitations({limit:200,organizationId:r}),e[7]=l,e[8]=r,e[9]=w):w=e[9];const h=Ze(f,w);let x;e[10]!==r?(x=["lunora-auth-org-teams",r],e[10]=r,e[11]=x):x=e[11];let y;e[12]!==l||e[13]!==r?(y=()=>l.listAuthOrgTeams({limit:200,organizationId:r}),e[12]=l,e[13]=r,e[14]=y):y=e[14];let I;e[15]!==c?(I={enabled:c},e[15]=c,e[16]=I):I=e[16];const z=Ze(x,y,I);let O;e[17]!==r?(O=["lunora-auth-org-roles",r],e[17]=r,e[18]=O):O=e[18];let N;e[19]!==l||e[20]!==r?(N=()=>l.listAuthOrgRoles({limit:200,organizationId:r}),e[19]=l,e[20]=r,e[21]=N):N=e[21];let k;e[22]!==s?(k={enabled:s},e[22]=s,e[23]=k):k=e[23];const D=Ze(O,N,k);let _;e[24]!==m?(_=["lunora-auth-org-team-members",m],e[24]=m,e[25]=_):_=e[25];let J;e[26]!==l||e[27]!==m?(J=()=>l.listAuthOrgTeamMembers({limit:200,teamId:m??""}),e[26]=l,e[27]=m,e[28]=J):J=e[28];const q=m!==null;let U;e[29]!==q?(U={enabled:q},e[29]=q,e[30]=U):U=e[30];const L=Ze(_,J,U);let B;e[31]!==$.data?.rows?(B=$.data?.rows??[],e[31]=$.data?.rows,e[32]=B):B=e[32];const K=B;let F;e[33]!==h.data?.rows?(F=h.data?.rows??[],e[33]=h.data?.rows,e[34]=F):F=e[34];const R=F;let H;e[35]!==z.data?.rows?(H=z.data?.rows??[],e[35]=z.data?.rows,e[36]=H):H=e[36];const re=H;let X;e[37]!==D.data?.rows?(X=D.data?.rows??[],e[37]=D.data?.rows,e[38]=X):X=e[38];const Y=X;let Z;e[39]!==m||e[40]!==L?(Z=m===null?[]:L.data?.rows??[],e[39]=m,e[40]=L,e[41]=Z):Z=e[41];const ee=Z,oe=$.error??h.error??z.error??D.error??L.error;let te;e[42]!==h||e[43]!==$||e[44]!==s||e[45]!==D||e[46]!==m||e[47]!==L||e[48]!==c||e[49]!==z?(te=()=>{$.refetch(),h.refetch(),c&&z.refetch(),s&&D.refetch(),m!==null&&L.refetch()},e[42]=h,e[43]=$,e[44]=s,e[45]=D,e[46]=m,e[47]=L,e[48]=c,e[49]=z,e[50]=te):te=e[50];const A=te;Dt(A,!0);let ne;e[51]===Symbol.for("react.memo_cache_sentinel")?(ne=()=>{i(null)},e[51]=ne):ne=e[51];const E=ne;let ot;e[52]!==A?(ot=M=>{Et((async()=>{u(!0),C(null);try{await M(),A(),u(!1)}catch(gt){C(Lt(gt)),u(!1)}})())},e[52]=A,e[53]=ot):ot=e[53];const ae=ot;let nt;e[54]!==l||e[55]!==o?(nt=M=>{const gt=S(M.id);i({action:async()=>{await l.removeAuthOrgTeam({teamId:gt}),d(Ct=>Ct===gt?null:Ct)},kind:"confirm",message:o("Delete this team and its memberships? This cannot be undone."),testId:"org-team-delete",title:o("Delete team")})},e[54]=l,e[55]=o,e[56]=nt):nt=e[56];const ft=nt;let ce;e[57]!==o?(ce=o("userId"),e[57]=o,e[58]=ce):ce=e[58];let ue;e[59]!==ce?(ue={head:ce,render:Vt},e[59]=ce,e[60]=ue):ue=e[60];let ge;e[61]!==o?(ge=o("role"),e[61]=o,e[62]=ge):ge=e[62];let he;e[63]!==ge?(he={head:ge,render:Wt},e[63]=ge,e[64]=he):he=e[64];let at;e[65]!==ue||e[66]!==he?(at=[ue,he],e[65]=ue,e[66]=he,e[67]=at):at=e[67];const pt=at;let be;e[68]!==o?(be=o("email"),e[68]=o,e[69]=be):be=e[69];let fe;e[70]!==be?(fe={head:be,render:Xt},e[70]=be,e[71]=fe):fe=e[71];let pe;e[72]!==o?(pe=o("role"),e[72]=o,e[73]=pe):pe=e[73];let ve;e[74]!==pe?(ve={head:pe,render:Yt},e[74]=pe,e[75]=ve):ve=e[75];let ye;e[76]!==o?(ye=o("status"),e[76]=o,e[77]=ye):ye=e[77];let Ie;e[78]!==ye?(Ie={head:ye,render:Zt},e[78]=ye,e[79]=Ie):Ie=e[79];let lt;e[80]!==fe||e[81]!==ve||e[82]!==Ie?(lt=[fe,ve,Ie],e[80]=fe,e[81]=ve,e[82]=Ie,e[83]=lt):lt=e[83];const vt=lt;let we;e[84]!==o?(we=o("id"),e[84]=o,e[85]=we):we=e[85];let Ce;e[86]!==we?(Ce={className:"font-mono text-xs",head:we,render:er},e[86]=we,e[87]=Ce):Ce=e[87];let $e;e[88]!==o?($e=o("name"),e[88]=o,e[89]=$e):$e=e[89];let xe;e[90]!==$e?(xe={head:$e,render:tr},e[90]=$e,e[91]=xe):xe=e[91];let it;e[92]!==Ce||e[93]!==xe?(it=[Ce,xe],e[92]=Ce,e[93]=xe,e[94]=it):it=e[94];const yt=it;let ze;e[95]!==o?(ze=o("userId"),e[95]=o,e[96]=ze):ze=e[96];let st;e[97]!==ze?(st=[{head:ze,render:rr}],e[97]=ze,e[98]=st):st=e[98];const It=st;let Se;e[99]!==o?(Se=o("role"),e[99]=o,e[100]=Se):Se=e[100];let ke;e[101]!==Se?(ke={head:Se,render:or},e[101]=Se,e[102]=ke):ke=e[102];let Ne;e[103]!==o?(Ne=o("Permission"),e[103]=o,e[104]=Ne):Ne=e[104];let Ae;e[105]!==Ne?(Ae={className:"font-mono text-xs whitespace-pre-wrap",head:Ne,render:nr},e[105]=Ne,e[106]=Ae):Ae=e[106];let mt;e[107]!==ke||e[108]!==Ae?(mt=[ke,Ae],e[107]=ke,e[108]=Ae,e[109]=mt):mt=e[109];const wt=mt;let Oe;e[110]!==oe?(Oe=oe!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-detail-error",role:"alert",children:oe}),e[110]=oe,e[111]=Oe):Oe=e[111];let De;e[112]!==g?(De=g!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-action-error",role:"alert",children:g}),e[112]=g,e[113]=De):De=e[113];let dt;e[114]===Symbol.for("react.memo_cache_sentinel")?(dt=()=>{i({kind:"add-member"})},e[114]=dt):dt=e[114];let _e;e[115]!==o?(_e=o("Add member"),e[115]=o,e[116]=_e):_e=e[116];let Fe;e[117]!==_e?(Fe=n(j,{"data-testid":"org-open-add-member",onClick:dt,size:"xs",type:"button",variant:"outline",children:_e}),e[117]=_e,e[118]=Fe):Fe=e[118];let ct;e[119]===Symbol.for("react.memo_cache_sentinel")?(ct=()=>{i({kind:"invite-member"})},e[119]=ct):ct=e[119];let Re;e[120]!==o?(Re=o("Invite member"),e[120]=o,e[121]=Re):Re=e[121];let Me;e[122]!==Re?(Me=n(j,{"data-testid":"org-open-invite-member",onClick:ct,size:"xs",type:"button",variant:"outline",children:Re}),e[122]=Re,e[123]=Me):Me=e[123];let Te;e[124]!==Fe||e[125]!==Me?(Te=T(ht,{children:[Fe,Me]}),e[124]=Fe,e[125]=Me,e[126]=Te):Te=e[126];let Ee;e[127]!==o?(Ee=o("Members"),e[127]=o,e[128]=Ee):Ee=e[128];let Le;e[129]!==p||e[130]!==l||e[131]!==pt||e[132]!==K||e[133]!==ae||e[134]!==o?(Le=K.length===0?n("div",{className:"p-3",children:n(et,{testId:"org-members-empty",title:o("No members.")})}):n(rt,{columns:pt,rowActions:M=>T(ht,{children:[n(j,{"data-testid":`org-member-role-${S(M.id)}`,onClick:()=>{i({kind:"member-role",member:M})},size:"xs",type:"button",variant:"ghost",children:o("Change role")}),n(j,{"data-testid":`org-remove-member-${S(M.id)}`,disabled:p,onClick:()=>{ae(()=>l.removeAuthOrgMember({memberId:S(M.id)}))},size:"xs",type:"button",variant:"ghost",children:o("Remove")})]}),rowPrefix:"org-member",rows:K}),e[129]=p,e[130]=l,e[131]=pt,e[132]=K,e[133]=ae,e[134]=o,e[135]=Le):Le=e[135];let je;e[136]!==Te||e[137]!==Ee||e[138]!==Le?(je=n(tt,{action:Te,heading:Ee,testId:"org-members",children:Le}),e[136]=Te,e[137]=Ee,e[138]=Le,e[139]=je):je=e[139];let Pe;e[140]!==p||e[141]!==l||e[142]!==vt||e[143]!==R||e[144]!==ae||e[145]!==o?(Pe=R.length>0&&n(tt,{heading:o("Invitations"),testId:"org-invitations",children:n(rt,{columns:vt,rowActions:M=>n(j,{"data-testid":`org-cancel-invitation-${S(M.id)}`,disabled:p,onClick:()=>{ae(()=>l.cancelAuthOrgInvitation({invitationId:S(M.id)}))},size:"xs",type:"button",variant:"ghost",children:o("Cancel")}),rowPrefix:"org-invitation",rows:R})}),e[140]=p,e[141]=l,e[142]=vt,e[143]=R,e[144]=ae,e[145]=o,e[146]=Pe):Pe=e[146];let Je;e[147]!==ft||e[148]!==m||e[149]!==o||e[150]!==yt||e[151]!==re||e[152]!==c?(Je=c&&n(tt,{action:n(j,{"data-testid":"org-open-create-team",onClick:()=>{i({kind:"team-create"})},size:"xs",type:"button",variant:"outline",children:o("New team")}),heading:o("Teams"),testId:"org-teams",children:re.length===0?n("div",{className:"p-3",children:n(et,{testId:"org-teams-empty",title:o("No teams.")})}):n(rt,{columns:yt,rowActions:M=>T(ht,{children:[n(j,{"aria-pressed":m===S(M.id),"data-testid":`org-team-select-${S(M.id)}`,onClick:()=>{d(S(M.id))},size:"xs",type:"button",variant:"ghost",children:o("Members")}),n(j,{"data-testid":`org-team-rename-${S(M.id)}`,onClick:()=>{i({kind:"team-rename",team:M})},size:"xs",type:"button",variant:"ghost",children:o("Rename")}),n(j,{"data-testid":`org-team-delete-${S(M.id)}`,onClick:()=>{ft(M)},size:"xs",type:"button",variant:"ghost",children:o("Delete")})]}),rowPrefix:"org-team",rows:re})}),e[147]=ft,e[148]=m,e[149]=o,e[150]=yt,e[151]=re,e[152]=c,e[153]=Je):Je=e[153];let Ue;e[154]!==p||e[155]!==l||e[156]!==ae||e[157]!==m||e[158]!==o||e[159]!==It||e[160]!==ee||e[161]!==c?(Ue=c&&m!==null&&n(tt,{action:n(j,{"data-testid":"org-open-add-team-member",onClick:()=>{i({kind:"team-add-member",teamId:m})},size:"xs",type:"button",variant:"outline",children:o("Add member")}),heading:o("Team members"),testId:"org-team-members",children:ee.length===0?n("div",{className:"p-3",children:n(et,{testId:"org-team-members-empty",title:o("No team members.")})}):n(rt,{columns:It,rowActions:M=>n(j,{"data-testid":`org-team-remove-member-${S(M.id)}`,disabled:p,onClick:()=>{ae(()=>l.removeAuthOrgTeamMember({teamMemberId:S(M.id)}))},size:"xs",type:"button",variant:"ghost",children:o("Remove")}),rowPrefix:"org-team-member",rows:ee})}),e[154]=p,e[155]=l,e[156]=ae,e[157]=m,e[158]=o,e[159]=It,e[160]=ee,e[161]=c,e[162]=Ue):Ue=e[162];let Be;e[163]!==l||e[164]!==wt||e[165]!==Y||e[166]!==s||e[167]!==o?(Be=s&&n(tt,{action:n(j,{"data-testid":"org-open-create-role",onClick:()=>{i({kind:"role-create"})},size:"xs",type:"button",variant:"outline",children:o("New role")}),heading:o("Roles"),testId:"org-roles",children:Y.length===0?n("div",{className:"p-3",children:n(et,{testId:"org-roles-empty",title:o("No custom roles.")})}):n(rt,{columns:wt,rowActions:M=>T(ht,{children:[n(j,{"data-testid":`org-role-edit-${S(M.id)}`,onClick:()=>{i({kind:"role-edit",role:M})},size:"xs",type:"button",variant:"ghost",children:o("Edit")}),n(j,{"data-testid":`org-role-delete-${S(M.id)}`,onClick:()=>{i({action:()=>l.deleteAuthOrgRole({roleId:S(M.id)}),kind:"confirm",message:o("Delete this custom role? Members keeping it will lose its grants."),testId:"org-role-delete",title:o("Delete role")})},size:"xs",type:"button",variant:"ghost",children:o("Delete")})]}),rowPrefix:"org-role",rows:Y})}),e[163]=l,e[164]=wt,e[165]=Y,e[166]=s,e[167]=o,e[168]=Be):Be=e[168];let He;e[169]!==a?.kind||e[170]!==r||e[171]!==A?(He=a?.kind==="add-member"&&n(Bt,{onClose:E,onDone:A,organizationId:r}),e[169]=a?.kind,e[170]=r,e[171]=A,e[172]=He):He=e[172];let qe;e[173]!==a?.kind||e[174]!==r||e[175]!==A?(qe=a?.kind==="invite-member"&&n(Ht,{onClose:E,onDone:A,organizationId:r}),e[173]=a?.kind,e[174]=r,e[175]=A,e[176]=qe):qe=e[176];let Ke;e[177]!==a||e[178]!==A?(Ke=a?.kind==="member-role"&&n(qt,{member:a.member,onClose:E,onDone:A}),e[177]=a,e[178]=A,e[179]=Ke):Ke=e[179];let Qe;e[180]!==a?.kind||e[181]!==r||e[182]!==A?(Qe=a?.kind==="team-create"&&n(xt,{mode:"create",onClose:E,onDone:A,organizationId:r}),e[180]=a?.kind,e[181]=r,e[182]=A,e[183]=Qe):Qe=e[183];let Ge;e[184]!==a||e[185]!==r||e[186]!==A?(Ge=a?.kind==="team-rename"&&n(xt,{mode:"edit",onClose:E,onDone:A,organizationId:r,team:a.team}),e[184]=a,e[185]=r,e[186]=A,e[187]=Ge):Ge=e[187];let Ve;e[188]!==a||e[189]!==A?(Ve=a?.kind==="team-add-member"&&n(Kt,{onClose:E,onDone:A,teamId:a.teamId}),e[188]=a,e[189]=A,e[190]=Ve):Ve=e[190];let We;e[191]!==a?.kind||e[192]!==r||e[193]!==A?(We=a?.kind==="role-create"&&n(zt,{mode:"create",onClose:E,onDone:A,organizationId:r}),e[191]=a?.kind,e[192]=r,e[193]=A,e[194]=We):We=e[194];let Xe;e[195]!==a||e[196]!==r||e[197]!==A?(Xe=a?.kind==="role-edit"&&n(zt,{mode:"edit",onClose:E,onDone:A,organizationId:r,role:a.role}),e[195]=a,e[196]=r,e[197]=A,e[198]=Xe):Xe=e[198];let Ye;e[199]!==a||e[200]!==A?(Ye=a?.kind==="confirm"&&n(Mt,{action:a.action,message:a.message,onClose:E,onDone:A,testId:a.testId,title:a.title}),e[199]=a,e[200]=A,e[201]=Ye):Ye=e[201];let ut;return e[202]!==Oe||e[203]!==De||e[204]!==je||e[205]!==Pe||e[206]!==Je||e[207]!==Ue||e[208]!==Be||e[209]!==He||e[210]!==qe||e[211]!==Ke||e[212]!==Qe||e[213]!==Ge||e[214]!==Ve||e[215]!==We||e[216]!==Xe||e[217]!==Ye?(ut=T("div",{className:"flex flex-col gap-4","data-testid":"org-detail",children:[Oe,De,je,Pe,Je,Ue,Be,He,qe,Ke,Qe,Ge,Ve,We,Xe,Ye]}),e[202]=Oe,e[203]=De,e[204]=je,e[205]=Pe,e[206]=Je,e[207]=Ue,e[208]=Be,e[209]=He,e[210]=qe,e[211]=Ke,e[212]=Qe,e[213]=Ge,e[214]=Ve,e[215]=We,e[216]=Xe,e[217]=Ye,e[218]=ut):ut=e[218],ut};function Gt(t){return n(me,{children:t.head},t.head)}function Vt(t){return n("span",{className:"font-mono text-xs",children:S(t.userId)})}function Wt(t){return S(t.role)}function Xt(t){return S(t.email)}function Yt(t){return S(t.role)}function Zt(t){return S(t.status)}function er(t){return S(t.id)}function tr(t){return S(t.name)}function rr(t){return n("span",{className:"font-mono text-xs",children:S(t.userId)})}function or(t){return S(t.role)}function nr(t){return S(t.permission)}const $r=()=>{const t=G(62),e=le(),r=W(),{config:s,ready:c}=Tt(),l=s.capabilities.organization,[o,a]=P(null),[i,m]=P(null);let d;t[0]===Symbol.for("react.memo_cache_sentinel")?(d=["lunora-auth-orgs"],t[0]=d):d=t[0];let p;t[1]!==e?(p=()=>e.listAuthOrganizations({limit:100}),t[1]=e,t[2]=p):p=t[2];let u;t[3]!==l?(u={enabled:l},t[3]=l,t[4]=u):u=t[4];const g=Ze(d,p,u),C=g.data?.rows??null;let b;t[5]!==g?(b=()=>{g.refetch()},t[5]=g,t[6]=b):b=t[6],Dt(b,l);let v;t[7]===Symbol.for("react.memo_cache_sentinel")?(v=()=>{m(null)},t[7]=v):v=t[7];const $=v;let f;t[8]!==g?(f=()=>{g.refetch()},t[8]=g,t[9]=f):f=t[9];const w=f;let h;t[10]===Symbol.for("react.memo_cache_sentinel")?(h=F=>{a(F)},t[10]=h):h=t[10];const x=h;if(c&&!l){let F;t[11]!==r?(F=r("Enable the organization() plugin in your auth config to manage organizations here."),t[11]=r,t[12]=F):F=t[12];let R;t[13]!==r?(R=r("Organizations are not enabled."),t[13]=r,t[14]=R):R=t[14];let H;return t[15]!==F||t[16]!==R?(H=n(et,{description:F,testId:"org-disabled",title:R}),t[15]=F,t[16]=R,t[17]=H):H=t[17],H}let y;t[18]!==r?(y=r("Organizations"),t[18]=r,t[19]=y):y=t[19];let I;t[20]!==y?(I=n("span",{className:"font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:y}),t[20]=y,t[21]=I):I=t[21];let z;t[22]===Symbol.for("react.memo_cache_sentinel")?(z=()=>{m({kind:"create"})},t[22]=z):z=t[22];let O;t[23]!==r?(O=r("New organization"),t[23]=r,t[24]=O):O=t[24];let N;t[25]!==O?(N=n(j,{"data-testid":"org-new",onClick:z,size:"sm",type:"button",children:O}),t[25]=O,t[26]=N):N=t[26];let k;t[27]!==N||t[28]!==I?(k=T("div",{className:"flex items-center justify-between",children:[I,N]}),t[27]=N,t[28]=I,t[29]=k):k=t[29];let D;t[30]!==g.error?(D=g.error!==null&&n("p",{className:"text-sm text-destructive","data-testid":"org-error",role:"alert",children:g.error}),t[30]=g.error,t[31]=D):D=t[31];let _;t[32]!==C||t[33]!==r?(_=C!==null&&C.length===0&&n(et,{testId:"org-empty",title:r("No organizations.")}),t[32]=C,t[33]=r,t[34]=_):_=t[34];let J;t[35]!==C||t[36]!==o||t[37]!==r?(J=C!==null&&C.length>0&&n(kt,{className:"overflow-hidden py-0",children:n(St,{className:"px-0",children:T(Ot,{"data-testid":"org-table",children:[n(Nt,{children:T(bt,{children:[n(me,{children:r("id")}),n(me,{children:r("name")}),n(me,{children:r("slug")}),n(me,{children:r("created")}),n(me,{"aria-label":r("Actions")})]})}),n(At,{children:C.map(F=>{const R=S(F.id);return T(bt,{"data-testid":`org-row-${R}`,children:[n(de,{className:"font-mono text-xs",children:R}),n(de,{children:S(F.name)}),n(de,{children:S(F.slug)}),n(de,{className:"text-muted-foreground tabular-nums",children:jt(F.createdAt)}),n(de,{children:T("div",{className:"flex justify-end gap-1",children:[n(j,{"aria-pressed":o===R,"data-testid":`org-select-${R}`,onClick:()=>{x(R)},size:"xs",type:"button",variant:"ghost",children:r("Manage")}),n(j,{"data-testid":`org-edit-${R}`,onClick:()=>{m({kind:"edit",org:F})},size:"xs",type:"button",variant:"ghost",children:r("Edit")}),n(j,{"data-testid":`org-delete-${R}`,onClick:()=>{m({kind:"delete",org:F})},size:"xs",type:"button",variant:"ghost",children:r("Delete")})]})})]},R)})})]})})}),t[35]=C,t[36]=o,t[37]=r,t[38]=J):J=t[38];let q;t[39]!==s.organization||t[40]!==o?(q=o!==null&&n(Qt,{organizationId:o,rolesEnabled:s.organization.roles,teamsEnabled:s.organization.teams}),t[39]=s.organization,t[40]=o,t[41]=q):q=t[41];let U;t[42]!==i?.kind||t[43]!==w?(U=i?.kind==="create"&&n($t,{mode:"create",onClose:$,onDone:w}),t[42]=i?.kind,t[43]=w,t[44]=U):U=t[44];let L;t[45]!==i||t[46]!==w?(L=i?.kind==="edit"&&n($t,{mode:"edit",onClose:$,onDone:w,org:i.org}),t[45]=i,t[46]=w,t[47]=L):L=t[47];let B;t[48]!==e||t[49]!==i||t[50]!==w||t[51]!==r?(B=i?.kind==="delete"&&n(Mt,{action:async()=>{const F=S(i.org.id);await e.deleteAuthOrganization({organizationId:F}),a(R=>R===F?null:R)},message:r("Delete this organization? Its members, invitations, teams, and custom roles are removed. This cannot be undone."),onClose:$,onDone:w,testId:"org-delete",title:r("Delete organization")}),t[48]=e,t[49]=i,t[50]=w,t[51]=r,t[52]=B):B=t[52];let K;return t[53]!==k||t[54]!==D||t[55]!==_||t[56]!==J||t[57]!==q||t[58]!==U||t[59]!==L||t[60]!==B?(K=T("div",{className:"flex flex-col gap-4","data-testid":"lunora-organizations",children:[k,D,_,J,q,U,L,B]}),t[53]=k,t[54]=D,t[55]=_,t[56]=J,t[57]=q,t[58]=U,t[59]=L,t[60]=B,t[61]=K):K=t[61],K};export{$r as OrganizationsPanel};