@lunora/studio 1.0.0-alpha.59 → 1.0.0-alpha.60

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 (381) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -43
  3. package/dist/mount.js +1 -27
  4. package/dist/packem_chunks/ApiTab.js +1 -251
  5. package/dist/packem_chunks/AuditPanel.js +1 -200
  6. package/dist/packem_chunks/DeploymentHealthPanel.js +1 -664
  7. package/dist/packem_chunks/ExportImportPanel.js +3 -198
  8. package/dist/packem_chunks/FileBrowser.js +4 -2955
  9. package/dist/packem_chunks/FunctionRunner.js +1 -326
  10. package/dist/packem_chunks/FunctionStatsPanel.js +1 -377
  11. package/dist/packem_chunks/HealthPanel.js +1 -648
  12. package/dist/packem_chunks/InsightsPanel.js +1 -462
  13. package/dist/packem_chunks/LogsPanel.js +1 -1303
  14. package/dist/packem_chunks/MailPanel.js +2 -353
  15. package/dist/packem_chunks/MetricsPanel.js +1 -1960
  16. package/dist/packem_chunks/MigrationsPanel.js +1 -239
  17. package/dist/packem_chunks/NotificationsPanel.js +1 -306
  18. package/dist/packem_chunks/PitrPanel.js +1 -252
  19. package/dist/packem_chunks/SchemaViewer.js +1 -2512
  20. package/dist/packem_chunks/SecurityAdvisorPanel.js +1 -95
  21. package/dist/packem_chunks/SettingsPanel.js +1 -391
  22. package/dist/packem_chunks/SqlEditorPanel.js +4 -2340
  23. package/dist/packem_chunks/TableEditor.js +1 -290
  24. package/dist/packem_chunks/agents-panel.js +1 -326
  25. package/dist/packem_chunks/analytics-panel.js +1 -261
  26. package/dist/packem_chunks/auth-audit-panel.js +1 -247
  27. package/dist/packem_chunks/auth-config-panel.js +1 -365
  28. package/dist/packem_chunks/auth-sessions-panel.js +1 -175
  29. package/dist/packem_chunks/containers-panel.js +1 -261
  30. package/dist/packem_chunks/dashboards-panel.js +1 -781
  31. package/dist/packem_chunks/fanout-panel.js +1 -482
  32. package/dist/packem_chunks/flags-panel.js +1 -176
  33. package/dist/packem_chunks/issues-panel.js +1 -427
  34. package/dist/packem_chunks/kv-browser.js +1 -1896
  35. package/dist/packem_chunks/log-drains-panel.js +4 -273
  36. package/dist/packem_chunks/organizations-panel.js +1 -3209
  37. package/dist/packem_chunks/payments-panel.js +1 -213
  38. package/dist/packem_chunks/permissions-panel.js +1 -805
  39. package/dist/packem_chunks/queues-panel.js +1 -1075
  40. package/dist/packem_chunks/rls-panel.js +1 -315
  41. package/dist/packem_chunks/schedule-panel.js +1 -831
  42. package/dist/packem_chunks/sparkline.js +1 -79
  43. package/dist/packem_chunks/storage-rules-panel.js +1 -140
  44. package/dist/packem_chunks/subscriptions-panel.js +1 -238
  45. package/dist/packem_chunks/sync-client-panel.js +1 -0
  46. package/dist/packem_chunks/traces-panel.js +1 -747
  47. package/dist/packem_chunks/users-panel.js +1 -1731
  48. package/dist/packem_chunks/vector-browser.js +1 -281
  49. package/dist/packem_chunks/workflows-panel.js +1 -562
  50. package/dist/packem_shared/ADMIN_FUNCTIONS-BYNSbBVE.js +1 -0
  51. package/dist/packem_shared/ApiDocsPanel-eJYZlylw.js +2 -0
  52. package/dist/packem_shared/ApiReferencePanel-C42v1jr6.js +1 -0
  53. package/dist/packem_shared/CommandPalette-CVIaY3j8.js +1 -0
  54. package/dist/packem_shared/ConfirmButton-CTL3f3kr.js +1 -0
  55. package/dist/packem_shared/ConnectionBadge-DOk0CQWo.js +1 -0
  56. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-BCC8_4BQ.js +1 -0
  57. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-B-hcFVoi.js +1 -0
  58. package/dist/packem_shared/DEFAULT_LOCALE-BZ4NojpD.js +1 -0
  59. package/dist/packem_shared/DataBrowser-B8J5lHjP.js +1 -0
  60. package/dist/packem_shared/DataFilters-Csb30F0C.js +1 -0
  61. package/dist/packem_shared/ErrorBoundary-DvzYskH7.js +1 -0
  62. package/dist/packem_shared/GlobalDataBrowser-RLJ6NvOs.js +1 -0
  63. package/dist/packem_shared/HomePanel-DL1HupAN.js +1 -0
  64. package/dist/packem_shared/OpenRpcReferencePanel-sGsIgYWj.js +1 -0
  65. package/dist/packem_shared/STUDIO_ROOT_CLASS-C6MccdVk.js +1 -0
  66. package/dist/packem_shared/ScheduledJobs-DUbo6epc.js +1 -0
  67. package/dist/packem_shared/ShardInput-BVn2iCU0.js +1 -0
  68. package/dist/packem_shared/Studio-BWBclm_C.js +1 -0
  69. package/dist/packem_shared/StudioApp-BFm73yVr.js +1 -0
  70. package/dist/packem_shared/StudioI18nProvider-CZ5h4nrV.js +1 -0
  71. package/dist/packem_shared/advisor-view-DaCX9Jy5.js +1 -0
  72. package/dist/packem_shared/aggregateMetrics-BNfajLa2.js +1 -0
  73. package/dist/packem_shared/alert-CVcOFuDR.js +1 -0
  74. package/dist/packem_shared/badge-BbuuAio7.js +1 -0
  75. package/dist/packem_shared/bar-chart-AryFCeoa.js +9 -0
  76. package/dist/packem_shared/browser-storage-xjTyMKY0.js +1 -0
  77. package/dist/packem_shared/button-BkCrNcAs.js +1 -0
  78. package/dist/packem_shared/card-CIDGUN6K.js +1 -0
  79. package/dist/packem_shared/cf-links-gbDy51nR.js +1 -0
  80. package/dist/packem_shared/checkbox-StT4Gob6.js +1 -0
  81. package/dist/packem_shared/data-grid-BMBKzMEJ.js +1 -0
  82. package/dist/packem_shared/data-view-params-C8T3bW1z.js +1 -0
  83. package/dist/packem_shared/dropdown-menu-C3RQ_HlW.js +2 -0
  84. package/dist/packem_shared/empty-state-Cg7t_8qu.js +1 -0
  85. package/dist/packem_shared/error-alert-B59DnrDI.js +1 -0
  86. package/dist/packem_shared/grid-features-uZCUj955.js +6 -0
  87. package/dist/packem_shared/home-panel-B-8BCffw.js +3 -0
  88. package/dist/packem_shared/input-JHu63lTv.js +1 -0
  89. package/dist/packem_shared/internal-AtZ4bTal.js +2 -0
  90. package/dist/packem_shared/label-6uP1obNF.js +1 -0
  91. package/dist/packem_shared/live-status-CGW2JHf_.js +1 -0
  92. package/dist/packem_shared/log-fields-CoL3hsIQ.js +1 -0
  93. package/dist/packem_shared/modal-shell-CUwwWC2o.js +1 -0
  94. package/dist/packem_shared/reference-view-KvhektwF.js +12 -0
  95. package/dist/packem_shared/result-chart-CwKhhKM0.js +1 -0
  96. package/dist/packem_shared/scroll-area-DTEq6Jec.js +2 -0
  97. package/dist/packem_shared/select-Bul-DeII.js +2 -0
  98. package/dist/packem_shared/shard-history-DMEW5VBE.js +1 -0
  99. package/dist/packem_shared/skeleton-C1wQ9M5t.js +1 -0
  100. package/dist/packem_shared/sparkline-DtcZoU48.js +1 -0
  101. package/dist/packem_shared/storage-tier-DznqOf-q.js +1 -0
  102. package/dist/packem_shared/studio-BHA7hnI3.js +2 -0
  103. package/dist/packem_shared/table-DdJBrClo.js +2 -0
  104. package/dist/packem_shared/table-list-sidebar-CMCcNALK.js +1 -0
  105. package/dist/packem_shared/textarea-Bu2-jKAs.js +1 -0
  106. package/dist/packem_shared/trace-handoff-Dw7mwjxu.js +1 -0
  107. package/dist/packem_shared/use-admin-query-Di3fLE8H.js +1 -0
  108. package/dist/packem_shared/use-async-submit-H68GHPz8.js +1 -0
  109. package/dist/packem_shared/useDebounced-Ihdiid_k.js +1 -0
  110. package/dist/packem_shared/utils-bhneXptQ.js +1 -0
  111. package/dist/packem_shared/virtual-rect-1o1veP7R.js +1 -0
  112. package/dist/standalone/chunk-23HKRH5H.js +13 -0
  113. package/dist/standalone/chunk-2A4RKII2.js +1 -0
  114. package/dist/standalone/chunk-3DTM4GI5.js +1 -0
  115. package/dist/standalone/chunk-3MHKT76P.js +1 -0
  116. package/dist/standalone/chunk-46IB4C4Q.js +1 -0
  117. package/dist/standalone/chunk-4AYEV5UN.js +1 -0
  118. package/dist/standalone/chunk-4FNHHFWR.js +1 -0
  119. package/dist/standalone/chunk-6CLVIOCB.js +1 -0
  120. package/dist/standalone/chunk-6I62RSI5.js +1 -0
  121. package/dist/standalone/chunk-6OKDCV7J.js +1 -0
  122. package/dist/standalone/chunk-6P7HIPUE.js +1 -0
  123. package/dist/standalone/chunk-6UYILUSX.js +1 -0
  124. package/dist/standalone/chunk-725RLB7D.js +1 -0
  125. package/dist/standalone/chunk-7AZZ7OJO.js +1 -0
  126. package/dist/standalone/chunk-7CRLAMGB.js +1 -0
  127. package/dist/standalone/chunk-7Z5QEFR4.js +2 -0
  128. package/dist/standalone/chunk-AGVJJQFL.js +1 -0
  129. package/dist/standalone/chunk-AKTGRZXN.js +1 -0
  130. package/dist/standalone/chunk-BAIN7UJ4.js +1 -0
  131. package/dist/standalone/chunk-BHWSIIDT.js +1 -0
  132. package/dist/standalone/{chunk-L7SK4ZZD.js → chunk-C4O5UR4Y.js} +1 -1
  133. package/dist/standalone/chunk-C4VURT57.js +1 -0
  134. package/dist/standalone/chunk-CKO3F55C.js +4 -0
  135. package/dist/standalone/chunk-CVMRZUF5.js +4 -0
  136. package/dist/standalone/chunk-CWWGDW4V.js +1 -0
  137. package/dist/standalone/chunk-CYET4BRZ.js +1 -0
  138. package/dist/standalone/chunk-CZEUVNCQ.js +1 -0
  139. package/dist/standalone/chunk-FXFK4M4E.js +1 -0
  140. package/dist/standalone/chunk-FYAJPWE7.js +1 -0
  141. package/dist/standalone/chunk-GS7OBQO5.js +1 -0
  142. package/dist/standalone/chunk-GTXVH7I5.js +1 -0
  143. package/dist/standalone/chunk-H6SIM4BT.js +1 -0
  144. package/dist/standalone/chunk-H6WOFY6A.js +8 -0
  145. package/dist/standalone/chunk-HA34GYEX.js +1 -0
  146. package/dist/standalone/chunk-HMIOF5GV.js +1 -0
  147. package/dist/standalone/chunk-HY46NTNW.js +6 -0
  148. package/dist/standalone/chunk-IBCKC2BO.js +1 -0
  149. package/dist/standalone/chunk-ICKBVXPP.js +1 -0
  150. package/dist/standalone/chunk-IE4ROTQD.js +1 -0
  151. package/dist/standalone/chunk-IYYTWZ2E.js +2 -0
  152. package/dist/standalone/chunk-J2LMP2A7.js +1 -0
  153. package/dist/standalone/chunk-JC6WYIHM.js +1 -0
  154. package/dist/standalone/chunk-JKPK25JO.js +1 -0
  155. package/dist/standalone/chunk-JLFCXBNQ.js +1 -0
  156. package/dist/standalone/chunk-JRWBGR5B.js +1 -0
  157. package/dist/standalone/chunk-K5PFWU5J.js +1 -0
  158. package/dist/standalone/chunk-KJTLW5W2.js +11 -0
  159. package/dist/standalone/{chunk-HBGS4SEX.js → chunk-KLLYGWNF.js} +9 -9
  160. package/dist/standalone/chunk-KNN3ZEQ7.js +1 -0
  161. package/dist/standalone/{chunk-4QHKBC77.js → chunk-KOC5KV3E.js} +1 -1
  162. package/dist/standalone/chunk-KSRXMTBV.js +1 -0
  163. package/dist/standalone/chunk-KYCAYNXM.js +1 -0
  164. package/dist/standalone/chunk-KZ2YUNMR.js +1 -0
  165. package/dist/standalone/chunk-LKHUVEHX.js +1 -0
  166. package/dist/standalone/chunk-LPOKAJT4.js +4 -0
  167. package/dist/standalone/chunk-MZEK4SGD.js +1 -0
  168. package/dist/standalone/chunk-NCCUM26H.js +1 -0
  169. package/dist/standalone/chunk-O62HJZV3.js +1 -0
  170. package/dist/standalone/chunk-OTJOI23O.js +62 -0
  171. package/dist/standalone/chunk-P2NBOUGZ.js +1 -0
  172. package/dist/standalone/chunk-P4J6XNG3.js +1 -0
  173. package/dist/standalone/chunk-PGDWFWH5.js +1 -0
  174. package/dist/standalone/chunk-PR2SE2MD.js +1 -0
  175. package/dist/standalone/chunk-PTTDIYGP.js +1 -0
  176. package/dist/standalone/chunk-PWDMXMRD.js +1 -0
  177. package/dist/standalone/chunk-Q34MSC2F.js +1 -0
  178. package/dist/standalone/chunk-Q5WXTZWX.js +1 -0
  179. package/dist/standalone/chunk-QC5HCNJZ.js +4 -0
  180. package/dist/standalone/chunk-QJKRHZYV.js +1 -0
  181. package/dist/standalone/chunk-R43KHQDA.js +1 -0
  182. package/dist/standalone/chunk-RC2K5RBE.js +1 -0
  183. package/dist/standalone/chunk-RE6UWCMG.js +1 -0
  184. package/dist/standalone/chunk-RUP3M2GF.js +3 -0
  185. package/dist/standalone/chunk-SA6MBPBL.js +1 -0
  186. package/dist/standalone/{chunk-BJGBHGK3.js → chunk-SEDZDNQF.js} +1 -1
  187. package/dist/standalone/chunk-SKHEGARW.js +1 -0
  188. package/dist/standalone/chunk-SKJZDOHG.js +1 -0
  189. package/dist/standalone/chunk-SNDYNCAA.js +1 -0
  190. package/dist/standalone/chunk-SZUHZ2OG.js +1 -0
  191. package/dist/standalone/chunk-TAE2H7PU.js +1 -0
  192. package/dist/standalone/chunk-TEIBKU46.js +1 -0
  193. package/dist/standalone/chunk-TO6NLVFD.js +1 -0
  194. package/dist/standalone/chunk-TYTJDFX2.js +1 -0
  195. package/dist/standalone/{chunk-LXULVPEM.js → chunk-UDZY7MKE.js} +3 -3
  196. package/dist/standalone/chunk-UHHTEBC3.js +1 -0
  197. package/dist/standalone/chunk-UNDFOYRI.js +1 -0
  198. package/dist/standalone/chunk-UNN4CESU.js +1 -0
  199. package/dist/standalone/chunk-UNXX5GQH.js +1 -0
  200. package/dist/standalone/{chunk-ZHVTQ37P.js → chunk-UREY4GLG.js} +1 -1
  201. package/dist/standalone/chunk-UWF5DOGV.js +1 -0
  202. package/dist/standalone/chunk-UY2Y5CXB.js +1 -0
  203. package/dist/standalone/{chunk-VLXV72QE.js → chunk-UZYGEOWY.js} +1 -1
  204. package/dist/standalone/chunk-V66TSUKV.js +1 -0
  205. package/dist/standalone/chunk-VEFNSN7P.js +1 -0
  206. package/dist/standalone/chunk-VUJGR4PB.js +1 -0
  207. package/dist/standalone/chunk-VUXJER3D.js +1 -0
  208. package/dist/standalone/chunk-W572365D.js +1 -0
  209. package/dist/standalone/chunk-WYFLGXZ3.js +3 -0
  210. package/dist/standalone/chunk-XDKFPBIL.js +1 -0
  211. package/dist/standalone/chunk-XRKCGQM2.js +1 -0
  212. package/dist/standalone/chunk-YNBJ6ICE.js +1 -0
  213. package/dist/standalone/chunk-YQ5PILIJ.js +1 -0
  214. package/dist/standalone/chunk-YT7VXQVX.js +1 -0
  215. package/dist/standalone/chunk-Z7MUQMLE.js +1 -0
  216. package/dist/standalone/chunk-ZFWEPGWG.js +1 -0
  217. package/dist/standalone/chunk-ZMFZRGAN.js +1 -0
  218. package/dist/standalone/studio.js +9 -214
  219. package/package.json +4 -4
  220. package/dist/packem_shared/ADMIN_FUNCTIONS-P2UzJscH.js +0 -62
  221. package/dist/packem_shared/ApiDocsPanel-DNDpeR5O.js +0 -842
  222. package/dist/packem_shared/ApiReferencePanel-ChlRsAXU.js +0 -230
  223. package/dist/packem_shared/CommandPalette-BpkopP5f.js +0 -373
  224. package/dist/packem_shared/ConfirmButton-C2eVi2Qv.js +0 -59
  225. package/dist/packem_shared/ConnectionBadge-B2DDM2Tn.js +0 -111
  226. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-Vxwaxx51.js +0 -50
  227. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-DjF0h-gA.js +0 -89
  228. package/dist/packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js +0 -27
  229. package/dist/packem_shared/DataBrowser-obTn4sKX.js +0 -4493
  230. package/dist/packem_shared/DataFilters-B1Q7mrt7.js +0 -253
  231. package/dist/packem_shared/ErrorBoundary-BzAApI7J.js +0 -66
  232. package/dist/packem_shared/GlobalDataBrowser-BCaohHZ5.js +0 -293
  233. package/dist/packem_shared/HomePanel-DCRj3hGB.js +0 -14
  234. package/dist/packem_shared/OpenRpcReferencePanel-CIeQE1aE.js +0 -192
  235. package/dist/packem_shared/STUDIO_ROOT_CLASS-D12gX2dV.js +0 -3
  236. package/dist/packem_shared/ScheduledJobs-BQzQo84k.js +0 -262
  237. package/dist/packem_shared/ShardInput-CZnpHILL.js +0 -107
  238. package/dist/packem_shared/Studio-DnlPCbID.js +0 -16
  239. package/dist/packem_shared/StudioApp-CzqlB4zO.js +0 -708
  240. package/dist/packem_shared/StudioI18nProvider-B-tDCZIi.js +0 -48
  241. package/dist/packem_shared/advisor-view-D95sN-wO.js +0 -159
  242. package/dist/packem_shared/aggregateMetrics-D4nUHEKU.js +0 -108
  243. package/dist/packem_shared/alert-CdAET2K_.js +0 -68
  244. package/dist/packem_shared/badge-B2PKA1-5.js +0 -49
  245. package/dist/packem_shared/bar-chart-DSwcWIRy.js +0 -3246
  246. package/dist/packem_shared/browser-storage-L4gOP5gJ.js +0 -105
  247. package/dist/packem_shared/button-BhsN2uZH.js +0 -49
  248. package/dist/packem_shared/card-F2vH_aj2.js +0 -175
  249. package/dist/packem_shared/cf-links-SIbyi4Y1.js +0 -8
  250. package/dist/packem_shared/checkbox-UNkzAxl-.js +0 -63
  251. package/dist/packem_shared/data-grid-BywzWfek.js +0 -183
  252. package/dist/packem_shared/data-view-params-Cd6yRVbv.js +0 -96
  253. package/dist/packem_shared/dropdown-menu-WY4B_eJO.js +0 -280
  254. package/dist/packem_shared/empty-state-DY_oe0k6.js +0 -98
  255. package/dist/packem_shared/error-alert-D9uIFJUS.js +0 -114
  256. package/dist/packem_shared/grid-features-ZOLhHKrR.js +0 -809
  257. package/dist/packem_shared/home-panel-BRAA2UlM.js +0 -1889
  258. package/dist/packem_shared/input-XH4r1Pt1.js +0 -53
  259. package/dist/packem_shared/internal-DzHCc2Rq.js +0 -131
  260. package/dist/packem_shared/label-D8ykjn5J.js +0 -46
  261. package/dist/packem_shared/live-status-FZ0psC1z.js +0 -44
  262. package/dist/packem_shared/log-fields-jEH83H2G.js +0 -18
  263. package/dist/packem_shared/modal-shell-hyaJvIJ6.js +0 -100
  264. package/dist/packem_shared/reference-view-DfXN7oWP.js +0 -2127
  265. package/dist/packem_shared/result-chart-Bf9mbCIo.js +0 -119
  266. package/dist/packem_shared/scroll-area-DLhcy-ml.js +0 -93
  267. package/dist/packem_shared/select-D9OwHEch.js +0 -273
  268. package/dist/packem_shared/shard-history-AxiJ1WPP.js +0 -16
  269. package/dist/packem_shared/skeleton-CGhL0p20.js +0 -45
  270. package/dist/packem_shared/sparkline-BnA1kC9X.js +0 -93
  271. package/dist/packem_shared/storage-tier-CL98eOvn.js +0 -85
  272. package/dist/packem_shared/studio-8QSXbZ98.js +0 -4192
  273. package/dist/packem_shared/table-DsCa9Qp9.js +0 -246
  274. package/dist/packem_shared/table-list-sidebar-gCE17v9B.js +0 -842
  275. package/dist/packem_shared/textarea-D3gaCU_-.js +0 -46
  276. package/dist/packem_shared/trace-handoff-CGolF3KS.js +0 -38
  277. package/dist/packem_shared/use-admin-query-C7JNuQp-.js +0 -106
  278. package/dist/packem_shared/use-async-submit-rnSk_jXl.js +0 -91
  279. package/dist/packem_shared/useDebounced-Dxncpg6z.js +0 -32
  280. package/dist/packem_shared/utils-B05Dmz_H.js +0 -8
  281. package/dist/packem_shared/virtual-rect-CVMUskSm.js +0 -10
  282. package/dist/standalone/chunk-2K47A3P6.js +0 -1
  283. package/dist/standalone/chunk-2MLA6WFH.js +0 -1
  284. package/dist/standalone/chunk-2NGUNNGW.js +0 -1
  285. package/dist/standalone/chunk-2TJVFKD2.js +0 -1
  286. package/dist/standalone/chunk-2YTF6LJ6.js +0 -1
  287. package/dist/standalone/chunk-3GXGLNKW.js +0 -1
  288. package/dist/standalone/chunk-3HGNPZBN.js +0 -1
  289. package/dist/standalone/chunk-3LJEGSMK.js +0 -11
  290. package/dist/standalone/chunk-3OA7PECS.js +0 -6
  291. package/dist/standalone/chunk-4PC7IXNY.js +0 -1
  292. package/dist/standalone/chunk-56XQYNUJ.js +0 -1
  293. package/dist/standalone/chunk-5OIBXYZM.js +0 -1
  294. package/dist/standalone/chunk-5QT5JRXD.js +0 -3
  295. package/dist/standalone/chunk-6RLPR7PL.js +0 -1
  296. package/dist/standalone/chunk-6V74EUPK.js +0 -1
  297. package/dist/standalone/chunk-7EE33WLB.js +0 -1
  298. package/dist/standalone/chunk-7TJJXVSE.js +0 -1
  299. package/dist/standalone/chunk-AHILM3ZP.js +0 -1
  300. package/dist/standalone/chunk-AN4RKMKW.js +0 -1
  301. package/dist/standalone/chunk-APSSZB6Z.js +0 -1
  302. package/dist/standalone/chunk-AXNGWSBM.js +0 -1
  303. package/dist/standalone/chunk-AXZILWRM.js +0 -1
  304. package/dist/standalone/chunk-C7RHEBOH.js +0 -1
  305. package/dist/standalone/chunk-CKSHCYGC.js +0 -2
  306. package/dist/standalone/chunk-CSWIYOB3.js +0 -1
  307. package/dist/standalone/chunk-D3VAON25.js +0 -1
  308. package/dist/standalone/chunk-DDLQN67F.js +0 -1
  309. package/dist/standalone/chunk-DGHW5JG5.js +0 -1
  310. package/dist/standalone/chunk-DMCSOTAE.js +0 -3
  311. package/dist/standalone/chunk-E3BKETAS.js +0 -1
  312. package/dist/standalone/chunk-E3OXNN6O.js +0 -1
  313. package/dist/standalone/chunk-E6BOGDIS.js +0 -1
  314. package/dist/standalone/chunk-F2YMCQ6B.js +0 -1
  315. package/dist/standalone/chunk-F7GE4X2U.js +0 -1
  316. package/dist/standalone/chunk-FAVUOGJR.js +0 -1
  317. package/dist/standalone/chunk-FXP6256Q.js +0 -1
  318. package/dist/standalone/chunk-G6CTAYHJ.js +0 -1
  319. package/dist/standalone/chunk-GTM65MVX.js +0 -1
  320. package/dist/standalone/chunk-H42W62SE.js +0 -1
  321. package/dist/standalone/chunk-HTF5ZX4I.js +0 -8
  322. package/dist/standalone/chunk-HV7G6DFP.js +0 -5
  323. package/dist/standalone/chunk-I2PS4L74.js +0 -1
  324. package/dist/standalone/chunk-IYHPYY4A.js +0 -1
  325. package/dist/standalone/chunk-J6J54MBP.js +0 -1
  326. package/dist/standalone/chunk-J7OGP4NN.js +0 -1
  327. package/dist/standalone/chunk-JSEXCW5Q.js +0 -1
  328. package/dist/standalone/chunk-JZLGLG4T.js +0 -1
  329. package/dist/standalone/chunk-KEGAWN6Y.js +0 -1
  330. package/dist/standalone/chunk-KZ6INM5M.js +0 -1
  331. package/dist/standalone/chunk-L2LN3MK4.js +0 -4
  332. package/dist/standalone/chunk-LT3FH6MW.js +0 -1
  333. package/dist/standalone/chunk-LZUWZBPE.js +0 -1
  334. package/dist/standalone/chunk-M4JM3TOY.js +0 -1
  335. package/dist/standalone/chunk-MLA5ZAEB.js +0 -1
  336. package/dist/standalone/chunk-MRBI5HNQ.js +0 -1
  337. package/dist/standalone/chunk-N5XX4HOL.js +0 -6
  338. package/dist/standalone/chunk-N7SVJOHN.js +0 -1
  339. package/dist/standalone/chunk-NKFXMDOD.js +0 -1
  340. package/dist/standalone/chunk-NPSNKFHE.js +0 -1
  341. package/dist/standalone/chunk-O3NAGRTR.js +0 -1
  342. package/dist/standalone/chunk-O7FVPUCO.js +0 -1
  343. package/dist/standalone/chunk-OKQXTLFX.js +0 -1
  344. package/dist/standalone/chunk-OXHHSUXO.js +0 -1
  345. package/dist/standalone/chunk-QAFAJBAW.js +0 -1
  346. package/dist/standalone/chunk-QAIM6KWT.js +0 -1
  347. package/dist/standalone/chunk-QCPMTB6W.js +0 -1
  348. package/dist/standalone/chunk-QQ2LOSZL.js +0 -1
  349. package/dist/standalone/chunk-QVIPA6UJ.js +0 -1
  350. package/dist/standalone/chunk-QVUQXJCT.js +0 -4
  351. package/dist/standalone/chunk-R2GMHLJY.js +0 -1
  352. package/dist/standalone/chunk-RD5UG2YL.js +0 -1
  353. package/dist/standalone/chunk-RJTIP3WF.js +0 -1
  354. package/dist/standalone/chunk-RRCPZMC2.js +0 -22
  355. package/dist/standalone/chunk-SHERR7ZP.js +0 -1
  356. package/dist/standalone/chunk-SOC5CY3F.js +0 -1
  357. package/dist/standalone/chunk-SS7JLF2I.js +0 -4
  358. package/dist/standalone/chunk-SWWYUGPL.js +0 -2
  359. package/dist/standalone/chunk-TAD43CG5.js +0 -1
  360. package/dist/standalone/chunk-TTXRHJUP.js +0 -4
  361. package/dist/standalone/chunk-UK64ZSUW.js +0 -1
  362. package/dist/standalone/chunk-UKDHGVOC.js +0 -1
  363. package/dist/standalone/chunk-UPNTMJFF.js +0 -1
  364. package/dist/standalone/chunk-V43BLH4J.js +0 -1
  365. package/dist/standalone/chunk-VL23Y44O.js +0 -4
  366. package/dist/standalone/chunk-VXM5H542.js +0 -4
  367. package/dist/standalone/chunk-WMDH2CIZ.js +0 -1
  368. package/dist/standalone/chunk-WVTPZ6CM.js +0 -1
  369. package/dist/standalone/chunk-XN6QYJQ6.js +0 -13
  370. package/dist/standalone/chunk-XNJNSCLM.js +0 -1
  371. package/dist/standalone/chunk-Y4U6CC22.js +0 -1
  372. package/dist/standalone/chunk-Y572GMZE.js +0 -1
  373. package/dist/standalone/chunk-Y7PD5KP4.js +0 -76
  374. package/dist/standalone/chunk-YFIPHCEC.js +0 -1
  375. package/dist/standalone/chunk-YJXOWLFJ.js +0 -1
  376. package/dist/standalone/chunk-YNN6NFRZ.js +0 -1
  377. package/dist/standalone/chunk-YUGHRVPD.js +0 -1
  378. package/dist/standalone/chunk-ZIGWVHCS.js +0 -1
  379. package/dist/standalone/chunk-ZPP2KOR4.js +0 -1
  380. package/dist/standalone/chunk-ZPUO7FNI.js +0 -1
  381. /package/dist/standalone/{chunk-TEWVD66F.js → chunk-GXZAXNZI.js} +0 -0
@@ -1,562 +1 @@
1
- import { useLunora } from '@lunora/react';
2
- import { useState, useEffect, useMemo } from 'react';
3
- import { B as Button } from '../packem_shared/button-BhsN2uZH.js';
4
- import { C as Card, a as CardContent } from '../packem_shared/card-F2vH_aj2.js';
5
- import { E as EmptyState } from '../packem_shared/empty-state-DY_oe0k6.js';
6
- import { I as Input } from '../packem_shared/input-XH4r1Pt1.js';
7
- import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from '../packem_shared/table-DsCa9Qp9.js';
8
- import { T as Textarea } from '../packem_shared/textarea-D3gaCU_-.js';
9
- import { u as useAdminQuery } from '../packem_shared/use-admin-query-C7JNuQp-.js';
10
- import { useT } from '../packem_shared/DEFAULT_LOCALE-CiX4W7Kr.js';
11
- import { ADMIN_FUNCTIONS } from '../packem_shared/ADMIN_FUNCTIONS-P2UzJscH.js';
12
- import { f as fireAndForget, e as errorMessage, c as callOptions, a as adminRef } from '../packem_shared/internal-DzHCc2Rq.js';
13
- import { jsxDEV } from 'react/jsx-dev-runtime';
14
-
15
- const STATUS_FILTERS = ["queued", "running", "paused", "waiting", "complete", "errored", "terminated"];
16
- const ACTIONS = ["pause", "resume", "terminate"];
17
- const NOT_CONFIGURED_CODE = "WORKFLOWS_NOT_CONFIGURED";
18
- const isNotConfigured = (error) => typeof error === "object" && error !== null && error.code === NOT_CONFIGURED_CODE;
19
- const formatStepPayload = (step) => {
20
- const value = step.error ?? step.output;
21
- if (value === void 0) {
22
- return "—";
23
- }
24
- try {
25
- return JSON.stringify(value);
26
- } catch {
27
- return "(unserializable)";
28
- }
29
- };
30
- const WorkflowInstanceHistory = ({
31
- loadDetail,
32
- loadInstances,
33
- readOnly,
34
- runAction,
35
- workflowName
36
- }) => {
37
- const client = useLunora();
38
- const t = useT();
39
- const [instances, setInstances] = useState(null);
40
- const [detail, setDetail] = useState(null);
41
- const [statusFilter, setStatusFilter] = useState("");
42
- const [error, setError] = useState(null);
43
- const [notConfigured, setNotConfigured] = useState(false);
44
- const [busyId, setBusyId] = useState(null);
45
- const detailImpl = loadDetail ?? ((arguments_) => client.getWorkflowInstance(arguments_));
46
- const clientOwned = loadInstances === void 0;
47
- const clientAction = clientOwned ? (arguments_) => client.setWorkflowInstanceStatus(arguments_) : void 0;
48
- const actionImpl = readOnly ? void 0 : runAction ?? clientAction;
49
- const load = async () => {
50
- setError(null);
51
- setNotConfigured(false);
52
- const status = statusFilter === "" ? void 0 : statusFilter;
53
- try {
54
- if (loadInstances === void 0) {
55
- const page = await client.listWorkflowInstances({
56
- name: workflowName,
57
- status
58
- });
59
- if (page.configured === false) {
60
- setInstances(null);
61
- setNotConfigured(true);
62
- return;
63
- }
64
- setInstances(page.instances);
65
- return;
66
- }
67
- setInstances(await loadInstances({
68
- name: workflowName,
69
- status
70
- }));
71
- } catch (error_) {
72
- setInstances(null);
73
- if (isNotConfigured(error_)) {
74
- setNotConfigured(true);
75
- } else {
76
- setError(errorMessage(error_));
77
- }
78
- }
79
- };
80
- useEffect(() => {
81
- setDetail(null);
82
- fireAndForget(load());
83
- }, [workflowName, statusFilter]);
84
- const openDetail = async (id) => {
85
- setError(null);
86
- try {
87
- setDetail(await detailImpl({
88
- id,
89
- name: workflowName
90
- }));
91
- } catch (error_) {
92
- setError(errorMessage(error_));
93
- }
94
- };
95
- const act = async (id, action) => {
96
- if (actionImpl === void 0) {
97
- return;
98
- }
99
- setBusyId(id);
100
- setError(null);
101
- try {
102
- await actionImpl({
103
- action,
104
- id,
105
- name: workflowName
106
- });
107
- await load();
108
- } catch (error_) {
109
- setError(errorMessage(error_));
110
- } finally {
111
- setBusyId(null);
112
- }
113
- };
114
- return /* @__PURE__ */ jsxDEV("div", {
115
- className: "flex flex-col gap-3",
116
- "data-testid": "lunora-workflow-instances",
117
- children: [/* @__PURE__ */ jsxDEV("div", {
118
- className: "flex items-center justify-between gap-2",
119
- children: [/* @__PURE__ */ jsxDEV("h3", {
120
- className: "text-sm font-medium",
121
- children: t("Instance history")
122
- }, void 0, false), /* @__PURE__ */ jsxDEV("select", {
123
- "aria-label": t("Filter by status"),
124
- className: "h-8 rounded-md border border-input bg-transparent px-2.5 py-1 text-xs outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50",
125
- "data-testid": "workflow-instances-filter",
126
- onChange: (event) => {
127
- setStatusFilter(event.target.value);
128
- },
129
- value: statusFilter,
130
- children: [/* @__PURE__ */ jsxDEV("option", {
131
- value: "",
132
- children: t("All statuses")
133
- }, void 0, false), STATUS_FILTERS.map((status) => /* @__PURE__ */ jsxDEV("option", {
134
- value: status,
135
- children: status
136
- }, status, false))]
137
- }, void 0, true)]
138
- }, void 0, true), error !== null && /* @__PURE__ */ jsxDEV("p", {
139
- className: "text-sm text-destructive",
140
- "data-testid": "workflow-instances-error",
141
- role: "alert",
142
- children: error
143
- }, void 0, false), notConfigured && /* @__PURE__ */ jsxDEV(EmptyState, {
144
- description: t("Set CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN in your .dev.vars to enable workflow instance history."),
145
- testId: "workflow-instances-unconfigured",
146
- title: t("Workflow inspection not configured")
147
- }, void 0, false), !notConfigured && instances !== null && instances.length === 0 && /* @__PURE__ */ jsxDEV(EmptyState, {
148
- description: t("No instances match this filter for the selected workflow."),
149
- testId: "workflow-instances-empty",
150
- title: t("No instances")
151
- }, void 0, false), instances !== null && instances.length > 0 && /* @__PURE__ */ jsxDEV(Card, {
152
- className: "overflow-hidden py-0",
153
- children: /* @__PURE__ */ jsxDEV(CardContent, {
154
- className: "px-0",
155
- children: /* @__PURE__ */ jsxDEV(Table, {
156
- "data-testid": "workflow-instances-table",
157
- children: [/* @__PURE__ */ jsxDEV(TableHeader, {
158
- children: /* @__PURE__ */ jsxDEV(TableRow, {
159
- children: [/* @__PURE__ */ jsxDEV(TableHead, {
160
- children: t("Instance id")
161
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
162
- children: t("Status")
163
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
164
- children: t("Created")
165
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
166
- children: t("Ended")
167
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
168
- "aria-label": t("Actions")
169
- }, void 0, false)]
170
- }, void 0, true)
171
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableBody, {
172
- children: instances.map((instance) => /* @__PURE__ */ jsxDEV(TableRow, {
173
- "data-testid": `workflow-instance-${instance.id}`,
174
- children: [/* @__PURE__ */ jsxDEV(TableCell, {
175
- className: "font-mono text-xs",
176
- children: instance.id
177
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
178
- className: "font-mono text-xs",
179
- children: instance.status
180
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
181
- className: "text-muted-foreground tabular-nums",
182
- children: instance.createdOn ?? "—"
183
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
184
- className: "text-muted-foreground tabular-nums",
185
- children: instance.endedOn ?? "—"
186
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
187
- className: "text-right",
188
- children: /* @__PURE__ */ jsxDEV("div", {
189
- className: "flex justify-end gap-1.5",
190
- children: [/* @__PURE__ */ jsxDEV(Button, {
191
- "data-testid": `workflow-instance-steps-${instance.id}`,
192
- onClick: () => {
193
- fireAndForget(openDetail(instance.id));
194
- },
195
- size: "sm",
196
- type: "button",
197
- variant: "outline",
198
- children: t("Steps")
199
- }, void 0, false), actionImpl !== void 0 && ACTIONS.map((action) => /* @__PURE__ */ jsxDEV(Button, {
200
- "data-testid": `workflow-instance-${action}-${instance.id}`,
201
- disabled: busyId === instance.id,
202
- onClick: () => {
203
- fireAndForget(act(instance.id, action));
204
- },
205
- size: "sm",
206
- type: "button",
207
- variant: "ghost",
208
- children: t(action)
209
- }, action, false))]
210
- }, void 0, true)
211
- }, void 0, false)]
212
- }, instance.id, true))
213
- }, void 0, false)]
214
- }, void 0, true)
215
- }, void 0, false)
216
- }, void 0, false), detail !== null && /* @__PURE__ */ jsxDEV(Card, {
217
- className: "overflow-hidden py-0",
218
- "data-testid": "workflow-instance-detail",
219
- children: /* @__PURE__ */ jsxDEV(CardContent, {
220
- className: "flex flex-col gap-2 px-4 py-3",
221
- children: [/* @__PURE__ */ jsxDEV("div", {
222
- className: "flex items-center justify-between",
223
- children: [/* @__PURE__ */ jsxDEV("span", {
224
- className: "font-mono text-xs",
225
- children: [t("Steps"), " · ", detail.id]
226
- }, void 0, true), /* @__PURE__ */ jsxDEV(Button, {
227
- "data-testid": "workflow-instance-detail-close",
228
- onClick: () => {
229
- setDetail(null);
230
- },
231
- size: "xs",
232
- type: "button",
233
- variant: "ghost",
234
- children: t("Close")
235
- }, void 0, false)]
236
- }, void 0, true), detail.steps.length === 0 ? /* @__PURE__ */ jsxDEV("p", {
237
- className: "text-xs text-muted-foreground",
238
- children: t("This instance has no recorded steps yet.")
239
- }, void 0, false) : /* @__PURE__ */ jsxDEV(Table, {
240
- "data-testid": "workflow-instance-steps",
241
- children: [/* @__PURE__ */ jsxDEV(TableHeader, {
242
- children: /* @__PURE__ */ jsxDEV(TableRow, {
243
- children: [/* @__PURE__ */ jsxDEV(TableHead, {
244
- children: t("Step")
245
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
246
- children: t("Type")
247
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
248
- children: t("Attempts")
249
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
250
- children: t("Started")
251
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
252
- children: t("Output")
253
- }, void 0, false)]
254
- }, void 0, true)
255
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableBody, {
256
- children: detail.steps.map((step, index) => /* @__PURE__ */ jsxDEV(TableRow, {
257
- "data-testid": `workflow-step-${String(index)}`,
258
- children: [/* @__PURE__ */ jsxDEV(TableCell, {
259
- className: "font-mono text-xs",
260
- children: step.name
261
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
262
- className: "text-xs text-muted-foreground",
263
- children: step.type ?? "—"
264
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
265
- className: "tabular-nums",
266
- children: step.attempts ?? "—"
267
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
268
- className: "text-muted-foreground tabular-nums",
269
- children: step.start ?? "—"
270
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
271
- className: "font-mono text-xs text-muted-foreground",
272
- children: formatStepPayload(step)
273
- }, void 0, false)]
274
- }, `${step.name}:${String(index)}`, true))
275
- }, void 0, false)]
276
- }, void 0, true)]
277
- }, void 0, true)
278
- }, void 0, false)]
279
- }, void 0, true);
280
- };
281
-
282
- const CREATE_WORKFLOW_INSTANCE = adminRef(ADMIN_FUNCTIONS.createWorkflowInstance);
283
- const GET_WORKFLOW_INSTANCE_STATUS = adminRef(ADMIN_FUNCTIONS.getWorkflowInstanceStatus);
284
- const formatPayload = (instance) => {
285
- if (instance.error) {
286
- return `${instance.error.name}: ${instance.error.message}`;
287
- }
288
- if (instance.output === void 0) {
289
- return "—";
290
- }
291
- try {
292
- return JSON.stringify(instance.output);
293
- } catch {
294
- return "(unserializable)";
295
- }
296
- };
297
- const WorkflowsPanel = () => {
298
- const client = useLunora();
299
- const t = useT();
300
- const {
301
- data,
302
- error
303
- } = useAdminQuery(ADMIN_FUNCTIONS.listWorkflows, {});
304
- const [selectedExport, setSelectedExport] = useState("");
305
- const [instanceIdInput, setInstanceIdInput] = useState("");
306
- const [paramsText, setParamsText] = useState("");
307
- const [starting, setStarting] = useState(false);
308
- const [startError, setStartError] = useState(null);
309
- const [instances, setInstances] = useState([]);
310
- const [refreshingId, setRefreshingId] = useState(null);
311
- const loaded = data !== void 0;
312
- const workflows = useMemo(() => Array.isArray(data?.workflows) ? [...data.workflows].toSorted((a, b) => a.exportName.localeCompare(b.exportName)) : [], [data]);
313
- const selectedExportName = useMemo(() => {
314
- if (workflows.some((workflow) => workflow.exportName === selectedExport)) {
315
- return selectedExport;
316
- }
317
- return workflows[0]?.exportName ?? "";
318
- }, [workflows, selectedExport]);
319
- const selectedWorkflow = useMemo(() => workflows.find((workflow_0) => workflow_0.exportName === selectedExportName), [workflows, selectedExportName]);
320
- const upsertInstance = (next) => {
321
- setInstances((previous) => {
322
- const rest = previous.filter((entry) => !(entry.exportName === next.exportName && entry.id === next.id));
323
- return [next, ...rest];
324
- });
325
- };
326
- const start = async () => {
327
- const exportName = selectedExportName;
328
- if (exportName === "") {
329
- return;
330
- }
331
- let parameters;
332
- const trimmed = paramsText.trim();
333
- if (trimmed !== "") {
334
- try {
335
- parameters = JSON.parse(trimmed);
336
- } catch {
337
- setStartError(t("Params must be valid JSON"));
338
- return;
339
- }
340
- }
341
- setStarting(true);
342
- setStartError(null);
343
- try {
344
- const id = instanceIdInput.trim();
345
- const result = await client.query(CREATE_WORKFLOW_INSTANCE, {
346
- exportName,
347
- id: id === "" ? void 0 : id,
348
- params: parameters
349
- }, callOptions(""));
350
- upsertInstance({
351
- exportName,
352
- id: result.id,
353
- status: result.status
354
- });
355
- setInstanceIdInput("");
356
- } catch (error_) {
357
- setStartError(errorMessage(error_));
358
- } finally {
359
- setStarting(false);
360
- }
361
- };
362
- const startInstance = () => {
363
- fireAndForget(start());
364
- };
365
- const refreshInstance = async (exportName_0, id_0) => {
366
- setRefreshingId(id_0);
367
- try {
368
- const result_0 = await client.query(GET_WORKFLOW_INSTANCE_STATUS, {
369
- exportName: exportName_0,
370
- id: id_0
371
- }, callOptions(""));
372
- upsertInstance({
373
- error: result_0.error,
374
- exportName: exportName_0,
375
- id: result_0.id,
376
- output: result_0.output,
377
- status: result_0.status
378
- });
379
- } catch (error__0) {
380
- setStartError(errorMessage(error__0));
381
- } finally {
382
- setRefreshingId(null);
383
- }
384
- };
385
- const onSelectedExportChange = (event) => {
386
- setSelectedExport(event.target.value);
387
- };
388
- const onInstanceIdChange = (event_0) => {
389
- setInstanceIdInput(event_0.target.value);
390
- };
391
- const onParamsChange = (event_1) => {
392
- setParamsText(event_1.target.value);
393
- };
394
- const onRefreshClick = (event_2) => {
395
- const {
396
- export: exportName_1,
397
- id: id_1
398
- } = event_2.currentTarget.dataset;
399
- if (exportName_1 !== void 0 && id_1 !== void 0) {
400
- fireAndForget(refreshInstance(exportName_1, id_1));
401
- }
402
- };
403
- return /* @__PURE__ */ jsxDEV("div", {
404
- className: "flex flex-col gap-6",
405
- "data-testid": "lunora-workflows-panel",
406
- children: [error !== null && /* @__PURE__ */ jsxDEV("p", {
407
- className: "text-sm text-destructive",
408
- "data-testid": "workflows-error",
409
- role: "alert",
410
- children: error
411
- }, void 0, false), /* @__PURE__ */ jsxDEV("p", {
412
- className: "text-sm text-muted-foreground",
413
- children: t("Workflows are declared in code with defineWorkflow and run as durable Cloudflare Workflows. Start an instance and observe its status below.")
414
- }, void 0, false), loaded && workflows.length === 0 ? /* @__PURE__ */ jsxDEV(EmptyState, {
415
- description: t("No defineWorkflow is declared in lunora/workflows.ts in this deployment. Add one to run a durable, multi-step workflow."),
416
- testId: "workflows-empty",
417
- title: t("No workflows defined")
418
- }, void 0, false) : /* @__PURE__ */ jsxDEV(Card, {
419
- className: "overflow-hidden py-0",
420
- children: /* @__PURE__ */ jsxDEV(CardContent, {
421
- className: "px-0",
422
- children: /* @__PURE__ */ jsxDEV(Table, {
423
- "data-testid": "workflows-table",
424
- children: [/* @__PURE__ */ jsxDEV(TableHeader, {
425
- children: /* @__PURE__ */ jsxDEV(TableRow, {
426
- children: [/* @__PURE__ */ jsxDEV(TableHead, {
427
- children: t("Export")
428
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
429
- children: t("Name")
430
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
431
- children: t("Class")
432
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
433
- children: t("Binding")
434
- }, void 0, false)]
435
- }, void 0, true)
436
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableBody, {
437
- children: workflows.map((workflow_1) => /* @__PURE__ */ jsxDEV(TableRow, {
438
- "data-testid": `workflows-row-${workflow_1.exportName}`,
439
- children: [/* @__PURE__ */ jsxDEV(TableCell, {
440
- className: "font-mono text-xs",
441
- children: workflow_1.exportName
442
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
443
- className: "font-mono text-xs text-muted-foreground",
444
- children: workflow_1.name
445
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
446
- className: "font-mono text-xs text-muted-foreground",
447
- children: workflow_1.className
448
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
449
- className: "font-mono text-xs text-muted-foreground",
450
- children: workflow_1.binding
451
- }, void 0, false)]
452
- }, workflow_1.exportName, true))
453
- }, void 0, false)]
454
- }, void 0, true)
455
- }, void 0, false)
456
- }, void 0, false), workflows.length > 0 && /* @__PURE__ */ jsxDEV("div", {
457
- className: "flex flex-col gap-3",
458
- "data-testid": "workflows-start",
459
- children: [/* @__PURE__ */ jsxDEV("h3", {
460
- className: "text-sm font-medium",
461
- children: t("Start instance")
462
- }, void 0, false), startError !== null && /* @__PURE__ */ jsxDEV("p", {
463
- className: "text-sm text-destructive",
464
- "data-testid": "workflows-start-error",
465
- role: "alert",
466
- children: startError
467
- }, void 0, false), /* @__PURE__ */ jsxDEV("div", {
468
- className: "flex flex-wrap items-center gap-2",
469
- children: [/* @__PURE__ */ jsxDEV("select", {
470
- "aria-label": t("Workflow"),
471
- className: "h-8 rounded-md border border-input bg-transparent px-2.5 py-1 text-xs outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50",
472
- "data-testid": "workflows-start-select",
473
- onChange: onSelectedExportChange,
474
- value: selectedExportName,
475
- children: workflows.map((workflow_2) => /* @__PURE__ */ jsxDEV("option", {
476
- value: workflow_2.exportName,
477
- children: workflow_2.exportName
478
- }, workflow_2.exportName, false))
479
- }, void 0, false), /* @__PURE__ */ jsxDEV(Input, {
480
- "aria-label": t("Instance id (optional)"),
481
- className: "max-w-48",
482
- "data-testid": "workflows-start-id",
483
- onChange: onInstanceIdChange,
484
- placeholder: t("Instance id (optional)"),
485
- value: instanceIdInput
486
- }, void 0, false), /* @__PURE__ */ jsxDEV(Button, {
487
- "data-testid": "workflows-start-button",
488
- disabled: starting || selectedExportName === "",
489
- onClick: startInstance,
490
- children: starting ? t("Starting…") : t("Start instance")
491
- }, void 0, false)]
492
- }, void 0, true), /* @__PURE__ */ jsxDEV(Textarea, {
493
- "aria-label": t("Params (JSON)"),
494
- className: "font-mono",
495
- "data-testid": "workflows-start-params",
496
- onChange: onParamsChange,
497
- placeholder: t("Params (JSON, optional)"),
498
- value: paramsText
499
- }, void 0, false)]
500
- }, void 0, true), instances.length > 0 && /* @__PURE__ */ jsxDEV("div", {
501
- className: "flex flex-col gap-3",
502
- "data-testid": "workflows-instances",
503
- children: [/* @__PURE__ */ jsxDEV("h3", {
504
- className: "text-sm font-medium",
505
- children: t("Instances")
506
- }, void 0, false), /* @__PURE__ */ jsxDEV(Card, {
507
- className: "overflow-hidden py-0",
508
- children: /* @__PURE__ */ jsxDEV(CardContent, {
509
- className: "px-0",
510
- children: /* @__PURE__ */ jsxDEV(Table, {
511
- "data-testid": "workflows-instances-table",
512
- children: [/* @__PURE__ */ jsxDEV(TableHeader, {
513
- children: /* @__PURE__ */ jsxDEV(TableRow, {
514
- children: [/* @__PURE__ */ jsxDEV(TableHead, {
515
- children: t("Workflow")
516
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
517
- children: t("Instance id")
518
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
519
- children: t("Status")
520
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {
521
- children: t("Output")
522
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableHead, {}, void 0, false)]
523
- }, void 0, true)
524
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableBody, {
525
- children: instances.map((instance) => /* @__PURE__ */ jsxDEV(TableRow, {
526
- "data-testid": `workflows-instance-${instance.id}`,
527
- children: [/* @__PURE__ */ jsxDEV(TableCell, {
528
- className: "font-mono text-xs",
529
- children: instance.exportName
530
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
531
- className: "font-mono text-xs text-muted-foreground",
532
- children: instance.id
533
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
534
- className: "font-mono text-xs",
535
- children: instance.status
536
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
537
- className: "font-mono text-xs text-muted-foreground",
538
- children: formatPayload(instance)
539
- }, void 0, false), /* @__PURE__ */ jsxDEV(TableCell, {
540
- children: /* @__PURE__ */ jsxDEV(Button, {
541
- "data-export": instance.exportName,
542
- "data-id": instance.id,
543
- "data-testid": `workflows-instance-refresh-${instance.id}`,
544
- disabled: refreshingId === instance.id,
545
- onClick: onRefreshClick,
546
- size: "xs",
547
- variant: "outline",
548
- children: refreshingId === instance.id ? t("Refreshing…") : t("Refresh")
549
- }, void 0, false)
550
- }, void 0, false)]
551
- }, `${instance.exportName}:${instance.id}`, true))
552
- }, void 0, false)]
553
- }, void 0, true)
554
- }, void 0, false)
555
- }, void 0, false)]
556
- }, void 0, true), selectedWorkflow !== void 0 && /* @__PURE__ */ jsxDEV(WorkflowInstanceHistory, {
557
- workflowName: selectedWorkflow.name
558
- }, void 0, false)]
559
- }, void 0, true);
560
- };
561
-
562
- export { WorkflowsPanel as default };
1
+ import{useLunora as V}from"@lunora/react";import{useState as m,useEffect as ae,useMemo as P}from"react";import{u as W}from"../packem_shared/button-BkCrNcAs.js";import{c as J,u as L}from"../packem_shared/card-CIDGUN6K.js";import{E as G}from"../packem_shared/empty-state-Cg7t_8qu.js";import{u as re}from"../packem_shared/input-JHu63lTv.js";import{n as U,d as _,m as N,p as o,f as K,u as i}from"../packem_shared/table-DdJBrClo.js";import{l as ne}from"../packem_shared/textarea-Bu2-jKAs.js";import{K as se}from"../packem_shared/use-admin-query-Di3fLE8H.js";import{useT as X}from"../packem_shared/DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as H}from"../packem_shared/ADMIN_FUNCTIONS-BYNSbBVE.js";import{f as A,e as E,c as B,a as Y}from"../packem_shared/internal-AtZ4bTal.js";import{jsxs as s,jsx as e}from"react/jsx-runtime";const le=["queued","running","paused","waiting","complete","errored","terminated"],oe=["pause","resume","terminate"],ie="WORKFLOWS_NOT_CONFIGURED",de=d=>typeof d=="object"&&d!==null&&d.code===ie,ce=d=>{const r=d.error??d.output;if(r===void 0)return"—";try{return JSON.stringify(r)}catch{return"(unserializable)"}},me=({loadDetail:d,loadInstances:r,readOnly:b,runAction:R,workflowName:h})=>{const I=V(),n=X(),[w,g]=m(null),[S,$]=m(null),[k,T]=m(""),[v,p]=m(null),[F,C]=m(!1),[j,z]=m(null),f=d??(a=>I.getWorkflowInstance(a)),x=b?void 0:R??(r===void 0?a=>I.setWorkflowInstanceStatus(a):void 0),O=async()=>{p(null),C(!1);const a=k===""?void 0:k;try{if(r===void 0){const l=await I.listWorkflowInstances({name:h,status:a});if(l.configured===!1){g(null),C(!0);return}g(l.instances);return}g(await r({name:h,status:a}))}catch(l){g(null),de(l)?C(!0):p(E(l))}};ae(()=>{$(null),A(O())},[h,k]);const D=async a=>{p(null);try{$(await f({id:a,name:h}))}catch(l){p(E(l))}},q=async(a,l)=>{if(x!==void 0){z(a),p(null);try{await x({action:l,id:a,name:h}),await O()}catch(M){p(E(M))}finally{z(null)}}};return s("div",{className:"flex flex-col gap-3","data-testid":"lunora-workflow-instances",children:[s("div",{className:"flex items-center justify-between gap-2",children:[e("h3",{className:"text-sm font-medium",children:n("Instance history")}),s("select",{"aria-label":n("Filter by status"),className:"h-8 rounded-md border border-input bg-transparent px-2.5 py-1 text-xs outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50","data-testid":"workflow-instances-filter",onChange:a=>{T(a.target.value)},value:k,children:[e("option",{value:"",children:n("All statuses")}),le.map(a=>e("option",{value:a,children:a},a))]})]}),v!==null&&e("p",{className:"text-sm text-destructive","data-testid":"workflow-instances-error",role:"alert",children:v}),F&&e(G,{description:n("Set CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN in your .dev.vars to enable workflow instance history."),testId:"workflow-instances-unconfigured",title:n("Workflow inspection not configured")}),!F&&w!==null&&w.length===0&&e(G,{description:n("No instances match this filter for the selected workflow."),testId:"workflow-instances-empty",title:n("No instances")}),w!==null&&w.length>0&&e(J,{className:"overflow-hidden py-0",children:e(L,{className:"px-0",children:s(U,{"data-testid":"workflow-instances-table",children:[e(_,{children:s(N,{children:[e(o,{children:n("Instance id")}),e(o,{children:n("Status")}),e(o,{children:n("Created")}),e(o,{children:n("Ended")}),e(o,{"aria-label":n("Actions")})]})}),e(K,{children:w.map(a=>s(N,{"data-testid":`workflow-instance-${a.id}`,children:[e(i,{className:"font-mono text-xs",children:a.id}),e(i,{className:"font-mono text-xs",children:a.status}),e(i,{className:"text-muted-foreground tabular-nums",children:a.createdOn??"—"}),e(i,{className:"text-muted-foreground tabular-nums",children:a.endedOn??"—"}),e(i,{className:"text-right",children:s("div",{className:"flex justify-end gap-1.5",children:[e(W,{"data-testid":`workflow-instance-steps-${a.id}`,onClick:()=>{A(D(a.id))},size:"sm",type:"button",variant:"outline",children:n("Steps")}),x!==void 0&&oe.map(l=>e(W,{"data-testid":`workflow-instance-${l}-${a.id}`,disabled:j===a.id,onClick:()=>{A(q(a.id,l))},size:"sm",type:"button",variant:"ghost",children:n(l)},l))]})})]},a.id))})]})})}),S!==null&&e(J,{className:"overflow-hidden py-0","data-testid":"workflow-instance-detail",children:s(L,{className:"flex flex-col gap-2 px-4 py-3",children:[s("div",{className:"flex items-center justify-between",children:[s("span",{className:"font-mono text-xs",children:[n("Steps")," · ",S.id]}),e(W,{"data-testid":"workflow-instance-detail-close",onClick:()=>{$(null)},size:"xs",type:"button",variant:"ghost",children:n("Close")})]}),S.steps.length===0?e("p",{className:"text-xs text-muted-foreground",children:n("This instance has no recorded steps yet.")}):s(U,{"data-testid":"workflow-instance-steps",children:[e(_,{children:s(N,{children:[e(o,{children:n("Step")}),e(o,{children:n("Type")}),e(o,{children:n("Attempts")}),e(o,{children:n("Started")}),e(o,{children:n("Output")})]})}),e(K,{children:S.steps.map((a,l)=>s(N,{"data-testid":`workflow-step-${String(l)}`,children:[e(i,{className:"font-mono text-xs",children:a.name}),e(i,{className:"text-xs text-muted-foreground",children:a.type??"—"}),e(i,{className:"tabular-nums",children:a.attempts??"—"}),e(i,{className:"text-muted-foreground tabular-nums",children:a.start??"—"}),e(i,{className:"font-mono text-xs text-muted-foreground",children:ce(a)})]},`${a.name}:${String(l)}`))})]})]})})]})},ue=Y(H.createWorkflowInstance),fe=Y(H.getWorkflowInstanceStatus),he=d=>{if(d.error)return`${d.error.name}: ${d.error.message}`;if(d.output===void 0)return"—";try{return JSON.stringify(d.output)}catch{return"(unserializable)"}},Oe=()=>{const d=V(),r=X(),{data:b,error:R}=se(H.listWorkflows,{}),[h,I]=m(""),[n,w]=m(""),[g,S]=m(""),[$,k]=m(!1),[T,v]=m(null),[p,F]=m([]),[C,j]=m(null),z=b!==void 0,f=P(()=>Array.isArray(b?.workflows)?[...b.workflows].toSorted((t,u)=>t.exportName.localeCompare(u.exportName)):[],[b]),x=P(()=>f.some(t=>t.exportName===h)?h:f[0]?.exportName??"",[f,h]),O=P(()=>f.find(t=>t.exportName===x),[f,x]),D=t=>{F(u=>{const c=u.filter(y=>!(y.exportName===t.exportName&&y.id===t.id));return[t,...c]})},q=async()=>{const t=x;if(t==="")return;let u;const c=g.trim();if(c!=="")try{u=JSON.parse(c)}catch{v(r("Params must be valid JSON"));return}k(!0),v(null);try{const y=n.trim(),Q=await d.query(ue,{exportName:t,id:y===""?void 0:y,params:u},B(""));D({exportName:t,id:Q.id,status:Q.status}),w("")}catch(y){v(E(y))}finally{k(!1)}},a=()=>{A(q())},l=async(t,u)=>{j(u);try{const c=await d.query(fe,{exportName:t,id:u},B(""));D({error:c.error,exportName:t,id:c.id,output:c.output,status:c.status})}catch(c){v(E(c))}finally{j(null)}},M=t=>{I(t.target.value)},Z=t=>{w(t.target.value)},ee=t=>{S(t.target.value)},te=t=>{const{export:u,id:c}=t.currentTarget.dataset;u!==void 0&&c!==void 0&&A(l(u,c))};return s("div",{className:"flex flex-col gap-6","data-testid":"lunora-workflows-panel",children:[R!==null&&e("p",{className:"text-sm text-destructive","data-testid":"workflows-error",role:"alert",children:R}),e("p",{className:"text-sm text-muted-foreground",children:r("Workflows are declared in code with defineWorkflow and run as durable Cloudflare Workflows. Start an instance and observe its status below.")}),z&&f.length===0?e(G,{description:r("No defineWorkflow is declared in lunora/workflows.ts in this deployment. Add one to run a durable, multi-step workflow."),testId:"workflows-empty",title:r("No workflows defined")}):e(J,{className:"overflow-hidden py-0",children:e(L,{className:"px-0",children:s(U,{"data-testid":"workflows-table",children:[e(_,{children:s(N,{children:[e(o,{children:r("Export")}),e(o,{children:r("Name")}),e(o,{children:r("Class")}),e(o,{children:r("Binding")})]})}),e(K,{children:f.map(t=>s(N,{"data-testid":`workflows-row-${t.exportName}`,children:[e(i,{className:"font-mono text-xs",children:t.exportName}),e(i,{className:"font-mono text-xs text-muted-foreground",children:t.name}),e(i,{className:"font-mono text-xs text-muted-foreground",children:t.className}),e(i,{className:"font-mono text-xs text-muted-foreground",children:t.binding})]},t.exportName))})]})})}),f.length>0&&s("div",{className:"flex flex-col gap-3","data-testid":"workflows-start",children:[e("h3",{className:"text-sm font-medium",children:r("Start instance")}),T!==null&&e("p",{className:"text-sm text-destructive","data-testid":"workflows-start-error",role:"alert",children:T}),s("div",{className:"flex flex-wrap items-center gap-2",children:[e("select",{"aria-label":r("Workflow"),className:"h-8 rounded-md border border-input bg-transparent px-2.5 py-1 text-xs outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50","data-testid":"workflows-start-select",onChange:M,value:x,children:f.map(t=>e("option",{value:t.exportName,children:t.exportName},t.exportName))}),e(re,{"aria-label":r("Instance id (optional)"),className:"max-w-48","data-testid":"workflows-start-id",onChange:Z,placeholder:r("Instance id (optional)"),value:n}),e(W,{"data-testid":"workflows-start-button",disabled:$||x==="",onClick:a,children:r($?"Starting…":"Start instance")})]}),e(ne,{"aria-label":r("Params (JSON)"),className:"font-mono","data-testid":"workflows-start-params",onChange:ee,placeholder:r("Params (JSON, optional)"),value:g})]}),p.length>0&&s("div",{className:"flex flex-col gap-3","data-testid":"workflows-instances",children:[e("h3",{className:"text-sm font-medium",children:r("Instances")}),e(J,{className:"overflow-hidden py-0",children:e(L,{className:"px-0",children:s(U,{"data-testid":"workflows-instances-table",children:[e(_,{children:s(N,{children:[e(o,{children:r("Workflow")}),e(o,{children:r("Instance id")}),e(o,{children:r("Status")}),e(o,{children:r("Output")}),e(o,{})]})}),e(K,{children:p.map(t=>s(N,{"data-testid":`workflows-instance-${t.id}`,children:[e(i,{className:"font-mono text-xs",children:t.exportName}),e(i,{className:"font-mono text-xs text-muted-foreground",children:t.id}),e(i,{className:"font-mono text-xs",children:t.status}),e(i,{className:"font-mono text-xs text-muted-foreground",children:he(t)}),e(i,{children:e(W,{"data-export":t.exportName,"data-id":t.id,"data-testid":`workflows-instance-refresh-${t.id}`,disabled:C===t.id,onClick:te,size:"xs",variant:"outline",children:C===t.id?r("Refreshing…"):r("Refresh")})})]},`${t.exportName}:${t.id}`))})]})})})]}),O!==void 0&&e(me,{workflowName:O.name})]})};export{Oe as default};
@@ -0,0 +1 @@
1
+ const _="__lunora_admin__:",e={assignIssue:"__lunora_admin__:assignIssue",clearCapturedMail:"__lunora_admin__:clearCapturedMail",clearQueueMessages:"__lunora_admin__:clearQueueMessages",clearTable:"__lunora_admin__:clearTable",createWorkflowInstance:"__lunora_admin__:createWorkflowInstance",deleteRows:"__lunora_admin__:deleteRows",describeTable:"__lunora_admin__:describeTable",describeTables:"__lunora_admin__:describeTables",exportShard:"__lunora_admin__:exportShard",facetColumn:"__lunora_admin__:facetColumn",getAdvisories:"__lunora_admin__:getAdvisories",getAuditLog:"__lunora_admin__:getAuditLog",getAuthAuditLog:"__lunora_admin__:getAuthAuditLog",getAuthMetrics:"__lunora_admin__:getAuthMetrics",getCapturedMail:"__lunora_admin__:getCapturedMail",getFanoutMetrics:"__lunora_admin__:getFanoutMetrics",getFunctionStats:"__lunora_admin__:getFunctionStats",getIssues:"__lunora_admin__:getIssues",listFlags:"__lunora_admin__:listFlags",listPushSubscriptions:"__lunora_admin__:listPushSubscriptions",listQueues:"__lunora_admin__:listQueues",listSubscriptions:"__lunora_admin__:listSubscriptions",listTableIndexes:"__lunora_admin__:listTableIndexes",listWorkflows:"__lunora_admin__:listWorkflows",getLogs:"__lunora_admin__:getLogs",getMetricHistory:"__lunora_admin__:getMetricHistory",getMetricSeries:"__lunora_admin__:getMetricSeries",getMetrics:"__lunora_admin__:getMetrics",getPitrBookmark:"__lunora_admin__:getPitrBookmark",getQueueMessages:"__lunora_admin__:getQueueMessages",getRequestLog:"__lunora_admin__:getRequestLog",getSecurityAudit:"__lunora_admin__:getSecurityAudit",getSettings:"__lunora_admin__:getSettings",getTraces:"__lunora_admin__:getTraces",getWorkflowInstanceStatus:"__lunora_admin__:getWorkflowInstanceStatus",ignoreIssue:"__lunora_admin__:ignoreIssue",importShard:"__lunora_admin__:importShard",listTables:"__lunora_admin__:listTables",maskPolicies:"__lunora_admin__:maskPolicies",migrationStatus:"__lunora_admin__:migrationStatus",pitrRestore:"__lunora_admin__:pitrRestore",readTablePage:"__lunora_admin__:readTablePage",replayQueueMessage:"__lunora_admin__:replayQueueMessage",resolveIssue:"__lunora_admin__:resolveIssue",rlsPolicies:"__lunora_admin__:rlsPolicies",runAs:"__lunora_admin__:runAs",runMigration:"__lunora_admin__:runMigration",runSql:"__lunora_admin__:runSql",sendQueueMessage:"__lunora_admin__:sendQueueMessage",sendTestMail:"__lunora_admin__:sendTestMail",setIssueSeverity:"__lunora_admin__:setIssueSeverity",storageOrphans:"__lunora_admin__:storageOrphans",storageReferences:"__lunora_admin__:storageReferences",storageRules:"__lunora_admin__:storageRules",studioFeatures:"__lunora_admin__:studioFeatures",writeRow:"__lunora_admin__:writeRow"};export{e as ADMIN_FUNCTIONS,_ as ADMIN_FUNCTION_PREFIX};
@@ -0,0 +1,2 @@
1
+ import{c as F}from"react/compiler-runtime";import{useLunora as G}from"@lunora/react";import{useState as Q,useEffect as ee}from"react";import{u as Z}from"./button-BkCrNcAs.js";import{E as V}from"./empty-state-Cg7t_8qu.js";import{useT as O}from"./DEFAULT_LOCALE-BZ4NojpD.js";import{ADMIN_FUNCTIONS as te}from"./ADMIN_FUNCTIONS-BYNSbBVE.js";import{g as ae,c as ne,a as le}from"./internal-AtZ4bTal.js";import{jsxs as P,jsx as p}from"react/jsx-runtime";const ie=le(te.listTables),oe=["react","client","cli"],re=!1,se={action:"action",mutation:"mutation",query:"query"},X=n=>{const e=n.indexOf(":");return e===-1?{file:"",fn:n}:{file:n.slice(0,e),fn:n.slice(e+1)}},J=({file:n,fn:e,kind:r})=>`await client.${se[r]}(api.${n}.${e}, { /* args */ });`,ce=n=>{const e=`api.${n.file}.${n.fn}`;switch(n.kind){case"action":return J(n);case"mutation":return`const ${n.fn} = useMutation(${e});`;default:return`const data = useQuery(${e}, { /* args */ });`}},de=({file:n,fn:e})=>`lunora run ${n}:${e} --args '{ }'`,pe=n=>["// Read rows",`const rows = await ctx.db.query("${n}").collect();`,"","// Insert a row",`const id = await ctx.db.insert("${n}", { /* fields */ });`,"","// Generated types",`type Row = Doc<"${n}">;`,`type RowId = Id<"${n}">;`].join(`
2
+ `),fe=(n,e)=>{switch(n){case"cli":return de(e);case"client":return J(e);default:return ce(e)}},W=n=>{const e=F(19),{code:r,label:s,testId:a}=n,l=O();let o;e[0]!==r?(o=()=>{ae(r)},e[0]=r,e[1]=o):o=e[1];const f=o;let t;e[2]!==s?(t=p("span",{className:"text-xs font-medium text-muted-foreground",children:s}),e[2]=s,e[3]=t):t=e[3];const c=`${a}-copy`;let i;e[4]!==l?(i=l("Copy"),e[4]=l,e[5]=i):i=e[5];let d;e[6]!==f||e[7]!==c||e[8]!==i?(d=p(Z,{"data-testid":c,onClick:f,size:"xs",type:"button",variant:"ghost",children:i}),e[6]=f,e[7]=c,e[8]=i,e[9]=d):d=e[9];let u;e[10]!==t||e[11]!==d?(u=P("div",{className:"flex items-center justify-between gap-2",children:[t,d]}),e[10]=t,e[11]=d,e[12]=u):u=e[12];let h;e[13]!==r||e[14]!==a?(h=p("pre",{className:"overflow-auto rounded-md border border-border bg-muted/50 p-3 font-mono text-xs","data-testid":a,children:r}),e[13]=r,e[14]=a,e[15]=h):h=e[15];let x;return e[16]!==u||e[17]!==h?(x=P("div",{className:"flex flex-col gap-1.5",children:[u,h]}),e[16]=u,e[17]=h,e[18]=x):x=e[18],x},ue=n=>{const e=F(50),{file:r,fn:s,kind:a}=n,l=O(),[o,f]=Q("react");let t,c,i;if(e[0]!==r||e[1]!==s||e[2]!==a||e[3]!==l||e[4]!==o){const y={file:r,fn:s,kind:a};let I;e[8]!==l?(I=l("CLI"),e[8]=l,e[9]=I):I=e[9];let C;e[10]!==l?(C=l("Client"),e[10]=l,e[11]=C):C=e[11];let S;e[12]!==l?(S=l("React"),e[12]=l,e[13]=S):S=e[13];let A;e[14]!==I||e[15]!==C||e[16]!==S?(A={cli:I,client:C,react:S},e[14]=I,e[15]=C,e[16]=S,e[17]=A):A=e[17],i=A;let q;e[18]===Symbol.for("react.memo_cache_sentinel")?(q=H=>{f(H.currentTarget.dataset.tab)},e[18]=q):q=e[18],t=q,c=fe(o,y),e[0]=r,e[1]=s,e[2]=a,e[3]=l,e[4]=o,e[5]=t,e[6]=c,e[7]=i}else t=e[5],c=e[6],i=e[7];const d=c,u=a==="action"&&o==="react"&&!re,h=`api.${r}.${s}`;let x;e[19]!==h?(x=p("h2",{className:"font-mono text-sm font-semibold text-foreground","data-testid":"api-fn-title",children:h}),e[19]=h,e[20]=x):x=e[20];let _;e[21]!==a||e[22]!==l?(_=l("Call this {kind} from your app.",{kind:a}),e[21]=a,e[22]=l,e[23]=_):_=e[23];let k;e[24]!==_?(k=p("p",{className:"text-xs text-muted-foreground",children:_}),e[24]=_,e[25]=k):k=e[25];let m;e[26]!==x||e[27]!==k?(m=P("div",{children:[x,k]}),e[26]=x,e[27]=k,e[28]=m):m=e[28];let g;e[29]!==l?(g=l("Snippet flavour"),e[29]=l,e[30]=g):g=e[30];let $;e[31]!==t||e[32]!==o||e[33]!==i?($=oe.map(y=>p(Z,{"aria-selected":o===y,"data-tab":y,"data-testid":`api-tab-${y}`,onClick:t,role:"tab",size:"xs",type:"button",variant:o===y?"default":"outline",children:i[y]},y)),e[31]=t,e[32]=o,e[33]=i,e[34]=$):$=e[34];let N;e[35]!==g||e[36]!==$?(N=p("div",{"aria-label":g,className:"flex gap-1.5","data-testid":"api-tabs",role:"tablist",children:$}),e[35]=g,e[36]=$,e[37]=N):N=e[37];const R=i[o],j=`api-snippet-${o}`;let w;e[38]!==d||e[39]!==R||e[40]!==j?(w=p(W,{code:d,label:R,testId:j}),e[38]=d,e[39]=R,e[40]=j,e[41]=w):w=e[41];let v;e[42]!==u||e[43]!==l?(v=u&&p("p",{className:"text-xs text-muted-foreground","data-testid":"api-action-note",children:l("Actions have no React hook — call them through the client.")}),e[42]=u,e[43]=l,e[44]=v):v=e[44];let T;return e[45]!==w||e[46]!==v||e[47]!==m||e[48]!==N?(T=P("div",{className:"flex flex-col gap-3","data-testid":"api-fn-doc",children:[m,N,w,v]}),e[45]=w,e[46]=v,e[47]=m,e[48]=N,e[49]=T):T=e[49],T},me=n=>{const e=F(19),{name:r}=n,s=O();let a;e[0]!==r?(a=pe(r),e[0]=r,e[1]=a):a=e[1];const l=a;let o;e[2]!==r?(o=p("h2",{className:"font-mono text-sm font-semibold text-foreground","data-testid":"api-table-title",children:r}),e[2]=r,e[3]=o):o=e[3];let f;e[4]!==s?(f=s("Read and write this table through the typed data model."),e[4]=s,e[5]=f):f=e[5];let t;e[6]!==f?(t=p("p",{className:"text-xs text-muted-foreground",children:f}),e[6]=f,e[7]=t):t=e[7];let c;e[8]!==o||e[9]!==t?(c=P("div",{children:[o,t]}),e[8]=o,e[9]=t,e[10]=c):c=e[10];let i;e[11]!==s?(i=s("Data model"),e[11]=s,e[12]=i):i=e[12];let d;e[13]!==l||e[14]!==i?(d=p(W,{code:l,label:i,testId:"api-snippet-table"}),e[13]=l,e[14]=i,e[15]=d):d=e[15];let u;return e[16]!==c||e[17]!==d?(u=P("div",{className:"flex flex-col gap-3","data-testid":"api-table-doc",children:[c,d]}),e[16]=c,e[17]=d,e[18]=u):u=e[18],u},Y=n=>{const e=F(8),{active:r,label:s,onSelect:a,testId:l,value:o}=n;let f;e[0]!==a||e[1]!==o?(f=()=>{a(o)},e[0]=a,e[1]=o,e[2]=f):f=e[2];const t=f,c=r?"page":void 0;let i;return e[3]!==s||e[4]!==t||e[5]!==c||e[6]!==l?(i=p("button",{"aria-current":c,className:"w-full truncate rounded-md px-2 py-1 text-start font-mono text-xs text-muted-foreground outline-none transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent aria-[current=page]:bg-sidebar-accent aria-[current=page]:font-medium aria-[current=page]:text-foreground","data-testid":l,onClick:t,type:"button",children:s}),e[3]=s,e[4]=t,e[5]=c,e[6]=l,e[7]=i):i=e[7],i},Re=n=>{const e=F(67),{functions:r,initialShardKey:s}=n,a=O(),l=G(),[o,f]=Q(null),[t,c]=Q(null);let i,d;e[0]!==l||e[1]!==s?(i=()=>{let D=!1;return l.query(ie,{},ne(s??"")).then(E=>(D||f(E),E)).catch(()=>{D||f([])}),()=>{D=!0}},d=[l,s],e[0]=l,e[1]=s,e[2]=i,e[3]=d):(i=e[2],d=e[3]),ee(i,d);let u;e[4]!==r?(u=r??[],e[4]=r,e[5]=u):u=e[5];const h=u;let x;if(e[6]!==h){const D=new Map;for(const E of h){const{file:B,fn:L}=X(E.path),K=D.get(B)??[];K.push({fn:L,kind:E.kind,path:E.path}),D.set(B,K)}x=[...D.entries()].map(xe).toSorted(be),e[6]=h,e[7]=x}else x=e[7];const _=x;let k,m,g,$,N,R,j,w,v,T;if(e[8]!==h||e[9]!==_||e[10]!==t||e[11]!==a||e[12]!==o){const D=(o??[]).map(ge).toSorted(ve);let E;e[23]===Symbol.for("react.memo_cache_sentinel")?(E=b=>{c({kind:"fn",path:b})},e[23]=E):E=e[23];const B=E;let L;e[24]===Symbol.for("react.memo_cache_sentinel")?(L=b=>{c({kind:"table",name:b})},e[24]=L):L=e[24];const K=L;if(m=t?.kind==="fn"?h.find(b=>b.path===t.path):void 0,k=h.length>0||D.length>0,g=m===void 0?void 0:X(m.path),$="grid min-h-0 gap-6 md:grid-cols-[16rem_minmax(0,1fr)]",N="lunora-api-docs",e[25]!==a?(R=a("API resources"),e[25]=a,e[26]=R):R=e[26],j="flex flex-col gap-4 overflow-y-auto",w="api-rail",e[27]!==_||e[28]!==t||e[29]!==a){let b;e[31]!==t||e[32]!==a?(b=U=>P("div",{className:"flex flex-col gap-1",children:[p("span",{className:"px-2 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:U.file||a("(root)")}),U.items.map(M=>p(Y,{active:t?.kind==="fn"&&t.path===M.path,label:M.fn,onSelect:B,testId:`api-rail-fn-${M.path}`,value:M.path},M.path))]},U.file),e[31]=t,e[32]=a,e[33]=b):b=e[33],v=_.map(b),e[27]=_,e[28]=t,e[29]=a,e[30]=v}else v=e[30];T=D.length>0&&P("div",{className:"flex flex-col gap-1",children:[p("span",{className:"px-2 font-mono text-[11px] tracking-wide text-muted-foreground uppercase",children:a("Tables")}),D.map(b=>p(Y,{active:t?.kind==="table"&&t.name===b,label:b,onSelect:K,testId:`api-rail-table-${b}`,value:b},b))]}),e[8]=h,e[9]=_,e[10]=t,e[11]=a,e[12]=o,e[13]=k,e[14]=m,e[15]=g,e[16]=$,e[17]=N,e[18]=R,e[19]=j,e[20]=w,e[21]=v,e[22]=T}else k=e[13],m=e[14],g=e[15],$=e[16],N=e[17],R=e[18],j=e[19],w=e[20],v=e[21],T=e[22];let y;e[34]!==k||e[35]!==a?(y=!k&&p("p",{className:"px-2 text-xs text-muted-foreground","data-testid":"api-rail-empty",children:a("No functions or tables to document yet.")}),e[34]=k,e[35]=a,e[36]=y):y=e[36];let I;e[37]!==y||e[38]!==R||e[39]!==j||e[40]!==w||e[41]!==v||e[42]!==T?(I=P("nav",{"aria-label":R,className:j,"data-testid":w,children:[v,T,y]}),e[37]=y,e[38]=R,e[39]=j,e[40]=w,e[41]=v,e[42]=T,e[43]=I):I=e[43];let C;e[44]!==t||e[45]!==a?(C=t===null&&p(V,{description:a("Select a function or table to see how to call it from your app."),testId:"api-empty",title:a("API usage snippets")}),e[44]=t,e[45]=a,e[46]=C):C=e[46];let S;e[47]!==t?.kind||e[48]!==m||e[49]!==g?(S=t?.kind==="fn"&&m!==void 0&&g!==void 0&&p(ue,{file:g.file,fn:g.fn,kind:m.kind},m.path),e[47]=t?.kind,e[48]=m,e[49]=g,e[50]=S):S=e[50];let A;e[51]!==t?.kind||e[52]!==m||e[53]!==a?(A=t?.kind==="fn"&&m===void 0&&p(V,{testId:"api-empty",title:a("API usage snippets")}),e[51]=t?.kind,e[52]=m,e[53]=a,e[54]=A):A=e[54];let q;e[55]!==t?(q=t?.kind==="table"&&p(me,{name:t.name}),e[55]=t,e[56]=q):q=e[56];let H;e[57]!==C||e[58]!==S||e[59]!==A||e[60]!==q?(H=P("div",{className:"min-w-0",children:[C,S,A,q]}),e[57]=C,e[58]=S,e[59]=A,e[60]=q,e[61]=H):H=e[61];let z;return e[62]!==$||e[63]!==N||e[64]!==I||e[65]!==H?(z=P("div",{className:$,"data-testid":N,children:[I,H]}),e[62]=$,e[63]=N,e[64]=I,e[65]=H,e[66]=z):z=e[66],z};function he(n,e){return n.fn.localeCompare(e.fn)}function xe(n){const[e,r]=n;return{file:e,items:r.toSorted(he)}}function be(n,e){return n.file.localeCompare(e.file)}function ge(n){return n.name}function ve(n,e){return n.localeCompare(e)}export{re as REACT_HAS_ACTION_HOOK,de as buildCliSnippet,J as buildClientSnippet,ce as buildReactSnippet,pe as buildTableSnippet,Re as default,X as splitPath};
@@ -0,0 +1 @@
1
+ import{c as y}from"react/compiler-runtime";import{useLunora as k}from"@lunora/react";import{E as u}from"./empty-state-Cg7t_8qu.js";import{n as h}from"./skeleton-C1wQ9M5t.js";import{u as v,U as j}from"./reference-view-KvhektwF.js";import{useT as I}from"./DEFAULT_LOCALE-BZ4NojpD.js";import{jsxs as w,jsx as f}from"react/jsx-runtime";const x=["get","post","put","patch","delete","head","options","trace"],g=i=>i?.content?.["application/json"]?.schema,P=(i,e)=>Object.entries(i.responses??{}).map(([a,t])=>{const c=t.$ref?.replace("#/components/responses/",""),n=c===void 0?t:e.components?.responses?.[c]??t;return{description:n.description,schema:g(n),status:a}}),A=(i,e,a,t,c)=>{const n=g(t.requestBody),r=n?.properties?.functionPath?.const,s=typeof r=="string"?r:void 0,m=s===void 0?n:n?.properties?.args,d=t.operationId??`${a} ${e}`;return{argsSchema:m,description:t.description,functionPath:s,httpPath:e,key:i,kind:t["x-lunora-function-kind"],method:a.toUpperCase(),operationId:d,requestSchema:n,responses:P(t,c),summary:t.summary??d,tags:t.tags??[],title:t.summary??d}},O=i=>{const e=[];for(const[a,t]of Object.entries(i.paths??{})){const c=a.includes("#")?a.slice(0,a.indexOf("#")):a;for(const n of x){const r=t[n];r!==void 0&&e.push(A(a,c,n,r,i))}}return e},b=i=>{const e=i??{},a=O(e),t=new Map((e.tags??[]).map(s=>[s.name,s.description])),c=new Set,n=[],r=s=>{if(c.has(s))return;c.add(s);const m=a.filter(d=>(d.tags[0]??"")===s);m.length>0&&n.push({description:t.get(s),name:s,operations:m})};for(const s of e.tags??[])r(s.name);for(const s of a)r(s.tags[0]??"");return{groups:n,operationByKey:new Map(a.map(s=>[s.key,s])),server:e.servers?.[0]?.url,title:e.info?.title??"API reference",version:e.info?.version}},S=i=>{const{paths:e}=i;return e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0},$=i=>{const e=i;return S(e)?{kind:"empty"}:{kind:"ready",spec:e}},U=i=>{const e=y(23),{spec:a}=i,t=I(),c=k();let n;e[0]!==c?(n=()=>c.fetchOpenApi(),e[0]=c,e[1]=n):n=e[1];const r=v(a,n,$);let s;e[2]!==r.kind||e[3]!==r.spec?(s=r.kind==="ready"?b(r.spec):void 0,e[2]=r.kind,e[3]=r.spec,e[4]=s):s=e[4];const m=s;if(r.kind==="loading"){let o;return e[5]===Symbol.for("react.memo_cache_sentinel")?(o=w("div",{className:"flex flex-col gap-4","data-testid":"api-reference-loading",children:[f(h,{className:"h-8 w-48"}),f(h,{className:"h-64 w-full"})]}),e[5]=o):o=e[5],o}if(r.kind==="error"){let o;e[6]!==r.message||e[7]!==t?(o=t("Couldn't load the OpenAPI spec: {message}",{message:r.message}),e[6]=r.message,e[7]=t,e[8]=o):o=e[8];let p;e[9]!==t?(p=t("API reference unavailable"),e[9]=t,e[10]=p):p=e[10];let l;return e[11]!==o||e[12]!==p?(l=f(u,{description:o,testId:"api-reference-error",title:p}),e[11]=o,e[12]=p,e[13]=l):l=e[13],l}if(r.kind==="empty"||m===void 0){let o;e[14]!==t?(o=t("Run `lunora codegen` and wire `_generated/openapi.json` to the worker to render the API reference here."),e[14]=t,e[15]=o):o=e[15];let p;e[16]!==t?(p=t("No OpenAPI spec configured"),e[16]=t,e[17]=p):p=e[17];let l;return e[18]!==o||e[19]!==p?(l=f(u,{description:o,testId:"api-reference-empty",title:p}),e[18]=o,e[19]=p,e[20]=l):l=e[20],l}let d;return e[21]!==m?(d=f(j,{model:m}),e[21]=m,e[22]=d):d=e[22],d};export{U as default};
@@ -0,0 +1 @@
1
+ import{c as I}from"react/compiler-runtime";import{Dialog as E}from"@base-ui/react/dialog";import{useNavigate as O}from"@tanstack/react-router";import{useState as F,useRef as U,useEffect as W}from"react";import{useT as X}from"./DEFAULT_LOCALE-BZ4NojpD.js";import{f as j}from"./internal-AtZ4bTal.js";import{c as q}from"./utils-bhneXptQ.js";import{jsx as s,jsxs as L}from"react/jsx-runtime";const M="lunora:command-palette",ne=()=>{"window"in globalThis&&globalThis.dispatchEvent(new Event(M))},G=B=>{const e=I(18),{active:h,index:n,item:r,onActivate:p,onSelect:f}=B;let c;e[0]!==r||e[1]!==f?(c=()=>{f(r)},e[0]=r,e[1]=f,e[2]=c):c=e[2];const g=c;let i;e[3]!==n||e[4]!==p?(i=()=>{p(n)},e[3]=n,e[4]=p,e[5]=i):i=e[5];const u=i,b=h?"bg-accent text-accent-foreground":"text-foreground";let d;e[6]!==b?(d=q("flex w-full items-center justify-between gap-3 rounded-md px-3 py-2 text-start text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground",b),e[6]=b,e[7]=d):d=e[7];let m;e[8]!==r.label?(m=s("span",{children:r.label}),e[8]=r.label,e[9]=m):m=e[9];let l;e[10]!==r.group?(l=s("span",{className:"text-xs text-muted-foreground",children:r.group}),e[10]=r.group,e[11]=l):l=e[11];let o;return e[12]!==g||e[13]!==u||e[14]!==d||e[15]!==m||e[16]!==l?(o=s("li",{children:L("button",{className:d,onClick:g,onMouseEnter:u,type:"button",children:[m,l]})}),e[12]=g,e[13]=u,e[14]=d,e[15]=m,e[16]=l,e[17]=o):o=e[17],o},re=B=>{const e=I(39),{items:h}=B,n=X(),r=O(),[p,f]=F(!1),[c,g]=F(""),[i,u]=F(0),b=U(null);let d,m;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=()=>{const t=$=>{($.metaKey||$.ctrlKey)&&$.key.toLowerCase()==="k"&&($.preventDefault(),f(!0))},a=()=>{f(!0)};return globalThis.addEventListener("keydown",t),globalThis.addEventListener(M,a),()=>{globalThis.removeEventListener("keydown",t),globalThis.removeEventListener(M,a)}},m=[],e[0]=d,e[1]=m):(d=e[0],m=e[1]),W(d,m);let l;if(e[2]!==h||e[3]!==c){e:{const t=c.trim().toLowerCase();if(t===""){l=h;break e}l=h.filter(a=>a.label.toLowerCase().includes(t)||a.group.toLowerCase().includes(t))}e[2]=h,e[3]=c,e[4]=l}else l=e[4];const o=l;let S;e[5]===Symbol.for("react.memo_cache_sentinel")?(S=t=>{f(t),t||(g(""),u(0))},e[5]=S):S=e[5];const H=S;let T;e[6]!==r?(T=t=>{H(!1),j(r({to:t.to}))},e[6]=r,e[7]=T):T=e[7];const x=T;let D;e[8]===Symbol.for("react.memo_cache_sentinel")?(D=t=>{g(t.target.value),u(0)},e[8]=D):D=e[8];const J=D;let A;e[9]!==i||e[10]!==o||e[11]!==x?(A=t=>{e:switch(t.key){case"ArrowDown":{t.preventDefault(),u(a=>o.length===0?0:(a+1)%o.length);break e}case"ArrowUp":{t.preventDefault(),u(a=>o.length===0?0:(a-1+o.length)%o.length);break e}case"Enter":{t.preventDefault();const a=o[i];a!==void 0&&x(a);break e}}},e[9]=i,e[10]=o,e[11]=x,e[12]=A):A=e[12];const R=A;let z;e[13]===Symbol.for("react.memo_cache_sentinel")?(z=s(E.Backdrop,{className:"fixed inset-0 z-50 bg-black/40 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0"}),e[13]=z):z=e[13];let v;e[14]!==n?(v=n("Command palette"),e[14]=n,e[15]=v):v=e[15];let w;e[16]!==v?(w=s(E.Title,{className:"sr-only",children:v}),e[16]=v,e[17]=w):w=e[17];let K;e[18]===Symbol.for("react.memo_cache_sentinel")?(K=L("svg",{"aria-hidden":"true",className:"size-4 text-muted-foreground",fill:"none",stroke:"currentColor",strokeWidth:1.8,viewBox:"0 0 24 24",children:[s("circle",{cx:"11",cy:"11",r:"7"}),s("path",{d:"m21 21-4.3-4.3",strokeLinecap:"round"})]}),e[18]=K):K=e[18];let y;e[19]!==n?(y=n("Search…"),e[19]=n,e[20]=y):y=e[20];let k;e[21]!==R||e[22]!==c||e[23]!==y?(k=L("div",{className:"flex items-center gap-2 border-b border-border px-3",children:[K,s("input",{className:"h-11 w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground","data-testid":"dash-command-input",onChange:J,onKeyDown:R,placeholder:y,ref:b,type:"text",value:c})]}),e[21]=R,e[22]=c,e[23]=y,e[24]=k):k=e[24];let N;e[25]!==i||e[26]!==o||e[27]!==x||e[28]!==n?(N=o.length===0?s("li",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:n("No results.")}):o.map((t,a)=>s(G,{active:a===i,index:a,item:t,onActivate:u,onSelect:x},t.to)),e[25]=i,e[26]=o,e[27]=x,e[28]=n,e[29]=N):N=e[29];let C;e[30]!==N?(C=s("ul",{className:"max-h-80 overflow-y-auto p-1.5","data-testid":"dash-command-list",children:N}),e[30]=N,e[31]=C):C=e[31];let _;e[32]!==w||e[33]!==k||e[34]!==C?(_=L(E.Portal,{children:[z,L(E.Popup,{className:"fixed start-1/2 top-24 z-50 w-[36rem] max-w-[90vw] -translate-x-1/2 overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-lg outline-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95","data-testid":"dash-command-palette",initialFocus:b,children:[w,k,C]})]}),e[32]=w,e[33]=k,e[34]=C,e[35]=_):_=e[35];let P;return e[36]!==p||e[37]!==_?(P=s(E.Root,{onOpenChange:H,open:p,children:_}),e[36]=p,e[37]=_,e[38]=P):P=e[38],P};export{re as CommandPalette,ne as openCommandPalette};
@@ -0,0 +1 @@
1
+ import{useState as p}from"react";import{useT as u}from"./DEFAULT_LOCALE-BZ4NojpD.js";import{u as i}from"./button-BkCrNcAs.js";import{jsxs as b,jsx as n}from"react/jsx-runtime";const $=({children:o,confirmLabel:r,disabled:s=!1,onConfirm:l,testId:t})=>{const a=u(),[d,e]=p(!1),m=()=>{e(!0)},c=()=>{e(!1)},f=()=>{e(!1),l()};return d?b("span",{className:"inline-flex items-center gap-1","data-testid":`${t}-prompt`,role:"group",children:[n(i,{"data-testid":`${t}-confirm`,disabled:s,onClick:f,size:"sm",type:"button",variant:"destructive",children:r??a("Confirm")}),n(i,{"data-testid":`${t}-cancel`,onClick:c,size:"sm",type:"button",variant:"ghost",children:a("Cancel")})]}):n(i,{"data-testid":t,disabled:s,onClick:m,size:"sm",type:"button",variant:"outline",children:o})};export{$ as ConfirmButton};