@lunora/studio 1.0.0-alpha.4 → 1.0.0-alpha.41

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 (187) hide show
  1. package/LICENSE.md +6 -0
  2. package/__assets__/package-og.svg +1 -1
  3. package/dist/index.d.ts +33 -18
  4. package/dist/index.js +29 -29
  5. package/dist/mount.d.ts +1 -1
  6. package/dist/mount.js +3 -2
  7. package/dist/{packem_shared/ApiTab-W3no0KOj.js → packem_chunks/ApiTab.js} +5 -5
  8. package/dist/{packem_shared/AuditPanel-Bq4o_IqT.js → packem_chunks/AuditPanel.js} +29 -41
  9. package/dist/{packem_shared/ExportImportPanel-dxY56TDF.js → packem_chunks/ExportImportPanel.js} +16 -11
  10. package/dist/{packem_shared/FileBrowser-Dhy4zES8.js → packem_chunks/FileBrowser.js} +15 -15
  11. package/dist/{packem_shared/FunctionRunner--fQJRPAD.js → packem_chunks/FunctionRunner.js} +10 -10
  12. package/dist/{packem_shared/FunctionStatsPanel-BjRUA_G3.js → packem_chunks/FunctionStatsPanel.js} +153 -208
  13. package/dist/{packem_shared/HealthPanel-PxclMWmA.js → packem_chunks/HealthPanel.js} +37 -29
  14. package/dist/{packem_shared/InsightsPanel-CWS_C-xW.js → packem_chunks/InsightsPanel.js} +108 -69
  15. package/dist/{packem_shared/LogsPanel-CTW8CFcM.js → packem_chunks/LogsPanel.js} +46 -58
  16. package/dist/{packem_shared/MailPanel-BwkvfIHF.js → packem_chunks/MailPanel.js} +45 -139
  17. package/dist/{packem_shared/MetricsPanel-BLuOhZQ4.js → packem_chunks/MetricsPanel.js} +41 -322
  18. package/dist/{packem_shared/MigrationsPanel-DT3lnwHF.js → packem_chunks/MigrationsPanel.js} +44 -51
  19. package/dist/{packem_shared/PitrPanel-CdErL7EJ.js → packem_chunks/PitrPanel.js} +9 -9
  20. package/dist/{packem_shared/SchemaViewer-LJDcmNIO.js → packem_chunks/SchemaViewer.js} +17 -16
  21. package/dist/{packem_shared/SecurityAdvisorPanel-C_ETsPih.js → packem_chunks/SecurityAdvisorPanel.js} +47 -31
  22. package/dist/packem_chunks/SettingsPanel.js +391 -0
  23. package/dist/{packem_shared/sql-editor-panel-BFRpzj6r.js → packem_chunks/SqlEditorPanel.js} +158 -387
  24. package/dist/{packem_shared/TableEditor-ChfUOZec.js → packem_chunks/TableEditor.js} +10 -68
  25. package/dist/packem_chunks/analytics-panel.js +261 -0
  26. package/dist/packem_chunks/auth-config-panel.js +365 -0
  27. package/dist/packem_chunks/auth-sessions-panel.js +175 -0
  28. package/dist/packem_chunks/containers-panel.js +247 -0
  29. package/dist/packem_chunks/dashboards-panel.js +780 -0
  30. package/dist/packem_chunks/fanout-panel.js +482 -0
  31. package/dist/packem_chunks/flags-panel.js +176 -0
  32. package/dist/packem_chunks/kv-browser.js +1896 -0
  33. package/dist/packem_chunks/log-drains-panel.js +273 -0
  34. package/dist/packem_chunks/organizations-panel.js +3178 -0
  35. package/dist/packem_chunks/payments-panel.js +186 -0
  36. package/dist/packem_chunks/permissions-panel.js +805 -0
  37. package/dist/packem_chunks/queues-panel.js +1075 -0
  38. package/dist/packem_chunks/rls-panel.js +315 -0
  39. package/dist/packem_chunks/schedule-panel.js +831 -0
  40. package/dist/packem_chunks/sparkline.js +79 -0
  41. package/dist/packem_chunks/storage-rules-panel.js +140 -0
  42. package/dist/packem_chunks/subscriptions-panel.js +238 -0
  43. package/dist/packem_chunks/users-panel.js +1731 -0
  44. package/dist/packem_chunks/vector-browser.js +281 -0
  45. package/dist/packem_chunks/workflows-panel.js +562 -0
  46. package/dist/packem_shared/{ADMIN_FUNCTIONS-DmBqMZ-z.js → ADMIN_FUNCTIONS-BHHJi3Gb.js} +7 -0
  47. package/dist/packem_shared/{ApiDocsPanel-C5-yJ1p7.js → ApiDocsPanel-CBma-lnp.js} +2 -2
  48. package/dist/packem_shared/{ApiReferencePanel-1vubqG5s.js → ApiReferencePanel-CQM3pPN7.js} +2 -1
  49. package/dist/packem_shared/{CommandPalette-BtgkBzZI.js → CommandPalette-X2tkbyHk.js} +1 -1
  50. package/dist/packem_shared/{DataBrowser-CtBe1So9.js → DataBrowser-D2ywrdId.js} +198 -247
  51. package/dist/packem_shared/{GlobalDataBrowser-BTEmGrph.js → GlobalDataBrowser-BkTPLzAY.js} +37 -66
  52. package/dist/packem_shared/HomePanel-D1Q9LZgK.js +14 -0
  53. package/dist/packem_shared/{OpenRpcReferencePanel-vbcYbv3V.js → OpenRpcReferencePanel-Dno-hfDb.js} +2 -1
  54. package/dist/packem_shared/{ScheduledJobs-CabfKbyM.js → ScheduledJobs-Ctw4jYtU.js} +163 -60
  55. package/dist/packem_shared/Studio-lJhzDAze.js +16 -0
  56. package/dist/packem_shared/{StudioApp-CHOZA-z-.js → StudioApp-DiMkupvZ.js} +276 -11
  57. package/dist/packem_shared/{advisor-view-CGcfMiPq.js → advisor-view-BX8OhG0w.js} +6 -6
  58. package/dist/packem_shared/alert-CdAET2K_.js +68 -0
  59. package/dist/packem_shared/{app.d-CCmwDEVs.d.ts → app.d-CNLRTrWw.d.ts} +1 -1
  60. package/dist/packem_shared/{bar-chart-CzJAgqkp.js → bar-chart-DSwcWIRy.js} +5 -4
  61. package/dist/packem_shared/browser-storage-BTrX4y3B.js +215 -0
  62. package/dist/packem_shared/{cf-links-2cktDedA.js → cf-links-BZfRdxSE.js} +1 -1
  63. package/dist/packem_shared/{data-grid-B5CaV3wS.js → data-grid-CdXztApG.js} +1 -1
  64. package/dist/packem_shared/data-view-params-Cd6yRVbv.js +96 -0
  65. package/dist/packem_shared/error-alert-CXjqyGw9.js +114 -0
  66. package/dist/packem_shared/{grid-features-CzUfqgsM.js → grid-features-BF-KBDFz.js} +131 -163
  67. package/dist/packem_shared/home-panel-TFcRf9Ui.js +1889 -0
  68. package/dist/packem_shared/{internal-rXJEAhXS.js → internal-CYcbqMjX.js} +44 -3
  69. package/dist/packem_shared/modal-shell-hyaJvIJ6.js +100 -0
  70. package/dist/packem_shared/{reference-view-B4E49Lip.js → reference-view-DUiJcILV.js} +6 -45
  71. package/dist/packem_shared/scroll-area-DLhcy-ml.js +93 -0
  72. package/dist/packem_shared/select-UkNYCT3s.js +273 -0
  73. package/dist/packem_shared/skeleton-CGhL0p20.js +45 -0
  74. package/dist/packem_shared/{sparkline-10dG-_f0.js → sparkline-BnA1kC9X.js} +1 -1
  75. package/dist/packem_shared/studio-Dh9UlaF_.js +4015 -0
  76. package/dist/packem_shared/{table-_RzNvy3R.js → table-DsCa9Qp9.js} +1 -1
  77. package/dist/packem_shared/{table-list-sidebar-Bg7uzbvC.js → table-list-sidebar-UVIXQJdU.js} +1 -1
  78. package/dist/packem_shared/use-admin-query-CfHYWx5n.js +106 -0
  79. package/dist/packem_shared/use-async-submit-DJQiPc-_.js +91 -0
  80. package/dist/standalone/chunk-25AYY4H7.js +2 -0
  81. package/dist/standalone/chunk-2ANAF4ZM.js +1 -0
  82. package/dist/standalone/chunk-2K47A3P6.js +1 -0
  83. package/dist/standalone/chunk-2NGUNNGW.js +1 -0
  84. package/dist/standalone/chunk-3CJW6NWG.js +4 -0
  85. package/dist/standalone/chunk-3OA7PECS.js +6 -0
  86. package/dist/standalone/chunk-3OIHOXVV.js +1 -0
  87. package/dist/standalone/chunk-447TAUFD.js +1 -0
  88. package/dist/standalone/chunk-4QHKBC77.js +1 -0
  89. package/dist/standalone/chunk-5C4TSNE6.js +1 -0
  90. package/dist/standalone/chunk-5OIBXYZM.js +1 -0
  91. package/dist/standalone/chunk-6HSHEMZV.js +76 -0
  92. package/dist/standalone/chunk-6JIZ34MB.js +3 -0
  93. package/dist/standalone/chunk-6VO23MMW.js +4 -0
  94. package/dist/standalone/chunk-7MVSQS7B.js +1 -0
  95. package/dist/standalone/chunk-7TJJXVSE.js +1 -0
  96. package/dist/standalone/chunk-7YXOPTWI.js +1 -0
  97. package/dist/standalone/chunk-AHILM3ZP.js +1 -0
  98. package/dist/standalone/chunk-BGXOXASQ.js +1 -0
  99. package/dist/standalone/chunk-BJGBHGK3.js +1 -0
  100. package/dist/standalone/chunk-BOXSWNXZ.js +1 -0
  101. package/dist/standalone/chunk-BX5MKYOC.js +1 -0
  102. package/dist/standalone/chunk-CKSHCYGC.js +2 -0
  103. package/dist/standalone/chunk-DWDILV2E.js +1 -0
  104. package/dist/standalone/chunk-E75ANNWX.js +19 -0
  105. package/dist/standalone/chunk-EQZQOTJY.js +1 -0
  106. package/dist/standalone/chunk-GTLEWM5Y.js +1 -0
  107. package/dist/standalone/chunk-GTM65MVX.js +1 -0
  108. package/dist/standalone/chunk-GUI5GFFI.js +1 -0
  109. package/dist/standalone/chunk-HN6KJXYQ.js +1 -0
  110. package/dist/standalone/chunk-HV7G6DFP.js +5 -0
  111. package/dist/standalone/chunk-HYDJNCGW.js +1 -0
  112. package/dist/standalone/chunk-HZK5RQHG.js +1 -0
  113. package/dist/standalone/chunk-IN2SYVJB.js +1 -0
  114. package/dist/standalone/chunk-IOANPSJN.js +1 -0
  115. package/dist/standalone/chunk-ISDZPW3V.js +1 -0
  116. package/dist/standalone/chunk-IXDH4GL5.js +1 -0
  117. package/dist/standalone/chunk-J6J54MBP.js +1 -0
  118. package/dist/standalone/chunk-J73VHFCL.js +1 -0
  119. package/dist/standalone/chunk-JHKMUTIF.js +13 -0
  120. package/dist/standalone/chunk-JPRH6DPK.js +1 -0
  121. package/dist/standalone/chunk-JSEXCW5Q.js +1 -0
  122. package/dist/standalone/chunk-KA5YB3VP.js +1 -0
  123. package/dist/standalone/chunk-KBB75WNT.js +1 -0
  124. package/dist/standalone/chunk-KEGAWN6Y.js +1 -0
  125. package/dist/standalone/chunk-KJJ3WM6H.js +4 -0
  126. package/dist/standalone/chunk-KQV4NGH3.js +1 -0
  127. package/dist/standalone/chunk-KSKXW5PX.js +1 -0
  128. package/dist/standalone/chunk-KUH4P5F5.js +1 -0
  129. package/dist/standalone/chunk-KYJPPVGB.js +1 -0
  130. package/dist/standalone/chunk-KZ6INM5M.js +1 -0
  131. package/dist/standalone/chunk-L2TJVSDQ.js +1 -0
  132. package/dist/standalone/chunk-L7SK4ZZD.js +1 -0
  133. package/dist/standalone/chunk-LAK5VSPI.js +1 -0
  134. package/dist/standalone/chunk-LBN7LPVK.js +1 -0
  135. package/dist/standalone/chunk-LNZIB2MD.js +1 -0
  136. package/dist/standalone/chunk-MJWVMKQ4.js +6 -0
  137. package/dist/standalone/chunk-MLZYX5CQ.js +1 -0
  138. package/dist/standalone/chunk-N2X2OO4V.js +1 -0
  139. package/dist/standalone/chunk-NGKITPQP.js +13 -0
  140. package/dist/standalone/chunk-O3NAGRTR.js +1 -0
  141. package/dist/standalone/chunk-OZACQNKG.js +1 -0
  142. package/dist/standalone/chunk-PNDNXS5Z.js +1 -0
  143. package/dist/standalone/chunk-Q7DMUTUE.js +1 -0
  144. package/dist/standalone/chunk-QAFAJBAW.js +1 -0
  145. package/dist/standalone/chunk-QBAT52GB.js +1 -0
  146. package/dist/standalone/chunk-RHZ4M2NZ.js +1 -0
  147. package/dist/standalone/chunk-RRCPZMC2.js +22 -0
  148. package/dist/standalone/chunk-SEU5V7I6.js +1 -0
  149. package/dist/standalone/chunk-TAD43CG5.js +1 -0
  150. package/dist/standalone/chunk-TBMYIZIO.js +1 -0
  151. package/dist/standalone/chunk-TDZ44E5I.js +4 -0
  152. package/dist/standalone/chunk-THNBTMUF.js +1 -0
  153. package/dist/standalone/chunk-TIQISBGK.js +1 -0
  154. package/dist/standalone/chunk-TMYVNQ66.js +1 -0
  155. package/dist/standalone/chunk-TQ36RWOP.js +1 -0
  156. package/dist/standalone/chunk-UGUEC6BC.js +1 -0
  157. package/dist/standalone/chunk-UJB2LEI4.js +4 -0
  158. package/dist/standalone/chunk-UK64ZSUW.js +1 -0
  159. package/dist/standalone/chunk-UKDJ4H7I.js +1 -0
  160. package/dist/standalone/chunk-VLXV72QE.js +1 -0
  161. package/dist/standalone/chunk-VON7JUPG.js +1 -0
  162. package/dist/standalone/chunk-W3JK4YWR.js +1 -0
  163. package/dist/standalone/chunk-W3SHEIAL.js +3 -0
  164. package/dist/standalone/chunk-WI7GWFEG.js +1 -0
  165. package/dist/standalone/chunk-WIHXMNUY.js +1 -0
  166. package/dist/standalone/chunk-WLDVXVI2.js +1 -0
  167. package/dist/standalone/chunk-XLXNLJ4N.js +1 -0
  168. package/dist/standalone/chunk-XNJNSCLM.js +1 -0
  169. package/dist/standalone/chunk-YAECF5LW.js +1 -0
  170. package/dist/standalone/chunk-YBGC4PPD.js +1 -0
  171. package/dist/standalone/chunk-YJAPWSDC.js +4 -0
  172. package/dist/standalone/chunk-ZEJB6DXU.js +8 -0
  173. package/dist/standalone/chunk-ZFNBPAIZ.js +1 -0
  174. package/dist/standalone/chunk-ZHVTQ37P.js +1 -0
  175. package/dist/standalone/chunk-ZIGWVHCS.js +1 -0
  176. package/dist/standalone/chunk-ZPP2KOR4.js +1 -0
  177. package/dist/standalone/chunk-ZPUO7FNI.js +1 -0
  178. package/dist/standalone/studio.js +104 -246
  179. package/dist/styles.css +2 -2
  180. package/package.json +15 -13
  181. package/dist/packem_shared/HomePanel-Cw16stjq.js +0 -1273
  182. package/dist/packem_shared/SettingsPanel-C0uLRf5P.js +0 -176
  183. package/dist/packem_shared/SqlEditorPanel-CguV7otm.js +0 -13
  184. package/dist/packem_shared/Studio-DFWAlcuf.js +0 -33
  185. package/dist/packem_shared/studio-Bj8psK1c.js +0 -10303
  186. package/dist/packem_shared/use-live-admin-Dq6g3daN.js +0 -73
  187. package/dist/packem_shared/use-live-shard-seed-Cuk3dnH0.js +0 -76
@@ -10,6 +10,35 @@ const callOptions = (shardKey) => {
10
10
  };
11
11
  };
12
12
  const errorMessage = (error) => error instanceof Error ? error.message : String(error);
13
+ const errorHint = (error) => {
14
+ if (error === null || typeof error !== "object" || !("hint" in error)) {
15
+ return void 0;
16
+ }
17
+ const {
18
+ hint
19
+ } = error;
20
+ if (typeof hint === "string") {
21
+ return hint;
22
+ }
23
+ return Array.isArray(hint) ? hint.filter((line) => typeof line === "string").join("\n") : void 0;
24
+ };
25
+ const errorDocumentationUrl = (error) => {
26
+ if (error === null || typeof error !== "object" || !("docsUrl" in error)) {
27
+ return void 0;
28
+ }
29
+ const value = error.docsUrl;
30
+ if (typeof value !== "string") {
31
+ return void 0;
32
+ }
33
+ try {
34
+ const {
35
+ protocol
36
+ } = new URL(value);
37
+ return protocol === "http:" || protocol === "https:" ? value : void 0;
38
+ } catch {
39
+ return void 0;
40
+ }
41
+ };
13
42
  const formatCell = (value) => {
14
43
  if (value === null || value === void 0) {
15
44
  return "";
@@ -35,11 +64,23 @@ const fireAndForget = (promise, onError) => {
35
64
  promise.catch((error) => {
36
65
  });
37
66
  };
67
+ const resolveOrigin = (explicit) => {
68
+ if (explicit !== void 0 && explicit !== "") {
69
+ return explicit;
70
+ }
71
+ const loc = globalThis.location;
72
+ if (loc?.origin !== void 0 && loc.origin !== "") {
73
+ return loc.origin;
74
+ }
75
+ return "http://localhost:5173";
76
+ };
38
77
  const copyToClipboard = (text) => {
39
78
  const clipboard = "navigator" in globalThis ? globalThis.navigator.clipboard : void 0;
40
- if (clipboard !== void 0) {
41
- fireAndForget(clipboard.writeText(text));
79
+ if (clipboard === void 0) {
80
+ return false;
42
81
  }
82
+ fireAndForget(clipboard.writeText(text));
83
+ return true;
43
84
  };
44
85
  const formatBytes = (bytes) => {
45
86
  if (bytes === null || bytes === void 0) {
@@ -65,4 +106,4 @@ const formatTimestamp = (value, fallback = "") => {
65
106
  return Number.isNaN(date.getTime()) ? String(value) : date.toLocaleString();
66
107
  };
67
108
 
68
- export { adminRef as a, formatTimestamp as b, callOptions as c, formatBytes as d, errorMessage as e, fireAndForget as f, copyToClipboard as g, formatCell as h };
109
+ export { adminRef as a, errorHint as b, callOptions as c, errorDocumentationUrl as d, errorMessage as e, fireAndForget as f, copyToClipboard as g, formatCell as h, formatTimestamp as i, formatBytes as j, resolveOrigin as r };
@@ -0,0 +1,100 @@
1
+ import { c } from 'react/compiler-runtime';
2
+ import { c as cn } from './utils-B05Dmz_H.js';
3
+ import { jsxDEV } from 'react/jsx-dev-runtime';
4
+
5
+ const OVERLAY_BY_VARIANT = {
6
+ dialog: "fixed inset-0 z-[1000] flex justify-center bg-black/20 pt-[10vh]",
7
+ drawer: "fixed inset-0 z-[1000] flex justify-end bg-black/20"
8
+ };
9
+ const PANEL_BY_VARIANT = {
10
+ dialog: "flex h-fit w-[min(28rem,92vw)] flex-col gap-3 rounded-lg border border-border bg-background p-4 shadow-xl",
11
+ drawer: "flex h-full w-[min(34rem,100vw)] flex-col gap-4 overflow-auto border-l border-border bg-background p-4 shadow-xl"
12
+ };
13
+ const ModalShell = (t0) => {
14
+ const $ = c(18);
15
+ const {
16
+ className,
17
+ children,
18
+ label,
19
+ onClose,
20
+ panelTestId,
21
+ testId,
22
+ variant
23
+ } = t0;
24
+ let t1;
25
+ if ($[0] !== onClose) {
26
+ t1 = (event) => {
27
+ if (event.target === event.currentTarget) {
28
+ onClose();
29
+ }
30
+ };
31
+ $[0] = onClose;
32
+ $[1] = t1;
33
+ } else {
34
+ t1 = $[1];
35
+ }
36
+ const onOverlayClick = t1;
37
+ let t2;
38
+ if ($[2] !== onClose) {
39
+ t2 = (event_0) => {
40
+ if (event_0.key === "Escape") {
41
+ onClose();
42
+ }
43
+ };
44
+ $[2] = onClose;
45
+ $[3] = t2;
46
+ } else {
47
+ t2 = $[3];
48
+ }
49
+ const onOverlayKeyDown = t2;
50
+ const t3 = OVERLAY_BY_VARIANT[variant];
51
+ const t4 = PANEL_BY_VARIANT[variant];
52
+ let t5;
53
+ if ($[4] !== className || $[5] !== t4) {
54
+ t5 = cn(t4, className);
55
+ $[4] = className;
56
+ $[5] = t4;
57
+ $[6] = t5;
58
+ } else {
59
+ t5 = $[6];
60
+ }
61
+ let t6;
62
+ if ($[7] !== children || $[8] !== label || $[9] !== panelTestId || $[10] !== t5) {
63
+ t6 = /* @__PURE__ */ jsxDEV("div", {
64
+ "aria-label": label,
65
+ className: t5,
66
+ "data-testid": panelTestId,
67
+ role: "dialog",
68
+ children
69
+ }, void 0, false);
70
+ $[7] = children;
71
+ $[8] = label;
72
+ $[9] = panelTestId;
73
+ $[10] = t5;
74
+ $[11] = t6;
75
+ } else {
76
+ t6 = $[11];
77
+ }
78
+ let t7;
79
+ if ($[12] !== onOverlayClick || $[13] !== onOverlayKeyDown || $[14] !== t3 || $[15] !== t6 || $[16] !== testId) {
80
+ t7 = /* @__PURE__ */ jsxDEV("div", {
81
+ className: t3,
82
+ "data-testid": testId,
83
+ onClick: onOverlayClick,
84
+ onKeyDown: onOverlayKeyDown,
85
+ role: "presentation",
86
+ children: t6
87
+ }, void 0, false);
88
+ $[12] = onOverlayClick;
89
+ $[13] = onOverlayKeyDown;
90
+ $[14] = t3;
91
+ $[15] = t6;
92
+ $[16] = testId;
93
+ $[17] = t7;
94
+ } else {
95
+ t7 = $[17];
96
+ }
97
+ return t7;
98
+ };
99
+
100
+ export { ModalShell as M };
@@ -1,58 +1,19 @@
1
1
  import { c } from 'react/compiler-runtime';
2
- import { c as cn } from './utils-B05Dmz_H.js';
3
- import { jsxDEV, Fragment } from 'react/jsx-dev-runtime';
4
2
  import { useState, useEffect, createContext, use } from 'react';
5
- import { e as errorMessage, g as copyToClipboard, f as fireAndForget, c as callOptions, a as adminRef } from './internal-rXJEAhXS.js';
3
+ import { e as errorMessage, g as copyToClipboard, f as fireAndForget, c as callOptions, a as adminRef } from './internal-CYcbqMjX.js';
6
4
  import { SentIcon, Copy01Icon, Search01Icon } from '@hugeicons/core-free-icons';
7
5
  import { HugeiconsIcon } from '@hugeicons/react';
8
6
  import { I as Input } from './input-XH4r1Pt1.js';
9
7
  import { useT } from './DEFAULT_LOCALE-CiX4W7Kr.js';
10
8
  import { B as Button } from './button-BhsN2uZH.js';
9
+ import { jsxDEV, Fragment } from 'react/jsx-dev-runtime';
11
10
  import { B as Badge$1 } from './badge-B2PKA1-5.js';
12
11
  import { ShardInput } from './ShardInput-gx_DZXXn.js';
13
12
  import { L as Label } from './label-D8ykjn5J.js';
14
13
  import { T as Textarea } from './textarea-D3gaCU_-.js';
14
+ import { LunoraError } from '@lunora/errors';
15
15
  import { useLunora } from '@lunora/react';
16
-
17
- function Skeleton(t0) {
18
- const $ = c(8);
19
- let className;
20
- let props;
21
- if ($[0] !== t0) {
22
- ({
23
- className,
24
- ...props
25
- } = t0);
26
- $[0] = t0;
27
- $[1] = className;
28
- $[2] = props;
29
- } else {
30
- className = $[1];
31
- props = $[2];
32
- }
33
- let t1;
34
- if ($[3] !== className) {
35
- t1 = cn("animate-pulse rounded-md bg-muted", className);
36
- $[3] = className;
37
- $[4] = t1;
38
- } else {
39
- t1 = $[4];
40
- }
41
- let t2;
42
- if ($[5] !== props || $[6] !== t1) {
43
- t2 = /* @__PURE__ */ jsxDEV("div", {
44
- "data-slot": "skeleton",
45
- className: t1,
46
- ...props
47
- }, void 0, false);
48
- $[5] = props;
49
- $[6] = t1;
50
- $[7] = t2;
51
- } else {
52
- t2 = $[7];
53
- }
54
- return t2;
55
- }
16
+ import { c as cn } from './utils-B05Dmz_H.js';
56
17
 
57
18
  const useAdminSpec = function(inlineSpec, fetcher, classify) {
58
19
  const $ = c(10);
@@ -855,7 +816,7 @@ const OperationRunContext = /* @__PURE__ */ createContext(null);
855
816
  const useOperationRun = () => {
856
817
  const value = use(OperationRunContext);
857
818
  if (value === null) {
858
- throw new Error("useOperationRun must be used within an OperationRunProvider");
819
+ throw new LunoraError("INTERNAL", "useOperationRun must be used within an OperationRunProvider");
859
820
  }
860
821
  return value;
861
822
  };
@@ -2177,4 +2138,4 @@ const ReferenceView = (t0) => {
2177
2138
  return t14;
2178
2139
  };
2179
2140
 
2180
- export { ReferenceView as R, Skeleton as S, useAdminSpec as u };
2141
+ export { ReferenceView as R, useAdminSpec as u };
@@ -0,0 +1,93 @@
1
+ 'use client';
2
+ import { c } from 'react/compiler-runtime';
3
+ import { ScrollArea as ScrollArea$1 } from '@base-ui/react/scroll-area';
4
+ import { c as cn } from './utils-B05Dmz_H.js';
5
+ import { jsxDEV } from 'react/jsx-dev-runtime';
6
+
7
+ function ScrollArea(t0) {
8
+ const $ = c(14);
9
+ let children;
10
+ let className;
11
+ let props;
12
+ if ($[0] !== t0) {
13
+ ({
14
+ className,
15
+ children,
16
+ ...props
17
+ } = t0);
18
+ $[0] = t0;
19
+ $[1] = children;
20
+ $[2] = className;
21
+ $[3] = props;
22
+ } else {
23
+ children = $[1];
24
+ className = $[2];
25
+ props = $[3];
26
+ }
27
+ let t1;
28
+ if ($[4] !== className) {
29
+ t1 = cn("relative", className);
30
+ $[4] = className;
31
+ $[5] = t1;
32
+ } else {
33
+ t1 = $[5];
34
+ }
35
+ let t2;
36
+ if ($[6] !== children) {
37
+ t2 = /* @__PURE__ */ jsxDEV(ScrollArea$1.Viewport, {
38
+ "data-slot": "scroll-area-viewport",
39
+ className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
40
+ children
41
+ }, void 0, false);
42
+ $[6] = children;
43
+ $[7] = t2;
44
+ } else {
45
+ t2 = $[7];
46
+ }
47
+ let t3;
48
+ let t4;
49
+ if ($[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
50
+ t3 = /* @__PURE__ */ jsxDEV(ScrollBar, {}, void 0, false);
51
+ t4 = /* @__PURE__ */ jsxDEV(ScrollArea$1.Corner, {}, void 0, false);
52
+ $[8] = t3;
53
+ $[9] = t4;
54
+ } else {
55
+ t3 = $[8];
56
+ t4 = $[9];
57
+ }
58
+ let t5;
59
+ if ($[10] !== props || $[11] !== t1 || $[12] !== t2) {
60
+ t5 = /* @__PURE__ */ jsxDEV(ScrollArea$1.Root, {
61
+ "data-slot": "scroll-area",
62
+ className: t1,
63
+ ...props,
64
+ children: [t2, t3, t4]
65
+ }, void 0, true);
66
+ $[10] = props;
67
+ $[11] = t1;
68
+ $[12] = t2;
69
+ $[13] = t5;
70
+ } else {
71
+ t5 = $[13];
72
+ }
73
+ return t5;
74
+ }
75
+ function ScrollBar({
76
+ className,
77
+ orientation = "vertical",
78
+ ...props
79
+ }) {
80
+ return /* @__PURE__ */ jsxDEV(ScrollArea$1.Scrollbar, {
81
+ "data-slot": "scroll-area-scrollbar",
82
+ "data-orientation": orientation,
83
+ orientation,
84
+ className: cn("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-s data-vertical:border-s-transparent", className),
85
+ ...props,
86
+ children: /* @__PURE__ */ jsxDEV(ScrollArea$1.Thumb, {
87
+ "data-slot": "scroll-area-thumb",
88
+ className: "relative flex-1 rounded-md bg-border"
89
+ }, void 0, false)
90
+ }, void 0, false);
91
+ }
92
+
93
+ export { ScrollArea as S };
@@ -0,0 +1,273 @@
1
+ 'use client';
2
+ import { c } from 'react/compiler-runtime';
3
+ import 'react';
4
+ import { Select as Select$1 } from '@base-ui/react/select';
5
+ import { c as cn } from './utils-B05Dmz_H.js';
6
+ import { HugeiconsIcon } from '@hugeicons/react';
7
+ import { UnfoldMoreIcon, Tick02Icon, ArrowUp01Icon, ArrowDown01Icon } from '@hugeicons/core-free-icons';
8
+ import { jsxDEV } from 'react/jsx-dev-runtime';
9
+
10
+ const Select = Select$1.Root;
11
+ function SelectValue(t0) {
12
+ const $ = c(8);
13
+ let className;
14
+ let props;
15
+ if ($[0] !== t0) {
16
+ ({
17
+ className,
18
+ ...props
19
+ } = t0);
20
+ $[0] = t0;
21
+ $[1] = className;
22
+ $[2] = props;
23
+ } else {
24
+ className = $[1];
25
+ props = $[2];
26
+ }
27
+ let t1;
28
+ if ($[3] !== className) {
29
+ t1 = cn("flex flex-1 text-start", className);
30
+ $[3] = className;
31
+ $[4] = t1;
32
+ } else {
33
+ t1 = $[4];
34
+ }
35
+ let t2;
36
+ if ($[5] !== props || $[6] !== t1) {
37
+ t2 = /* @__PURE__ */ jsxDEV(Select$1.Value, {
38
+ "data-slot": "select-value",
39
+ className: t1,
40
+ ...props
41
+ }, void 0, false);
42
+ $[5] = props;
43
+ $[6] = t1;
44
+ $[7] = t2;
45
+ } else {
46
+ t2 = $[7];
47
+ }
48
+ return t2;
49
+ }
50
+ function SelectTrigger({
51
+ className,
52
+ size = "default",
53
+ children,
54
+ ...props
55
+ }) {
56
+ return /* @__PURE__ */ jsxDEV(Select$1.Trigger, {
57
+ "data-slot": "select-trigger",
58
+ "data-size": size,
59
+ className: cn("flex w-fit items-center justify-between gap-1.5 rounded-md border border-input bg-transparent py-2 pe-2 ps-2.5 text-xs whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-1 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-md *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
60
+ ...props,
61
+ children: [children, /* @__PURE__ */ jsxDEV(Select$1.Icon, {
62
+ render: /* @__PURE__ */ jsxDEV(HugeiconsIcon, {
63
+ icon: UnfoldMoreIcon,
64
+ strokeWidth: 2,
65
+ className: "pointer-events-none size-4 text-muted-foreground"
66
+ }, void 0, false)
67
+ }, void 0, false)]
68
+ }, void 0, true);
69
+ }
70
+ function SelectContent({
71
+ className,
72
+ children,
73
+ side = "bottom",
74
+ sideOffset = 4,
75
+ align = "center",
76
+ alignOffset = 0,
77
+ alignItemWithTrigger = true,
78
+ ...props
79
+ }) {
80
+ return /* @__PURE__ */ jsxDEV(Select$1.Portal, {
81
+ children: /* @__PURE__ */ jsxDEV(Select$1.Positioner, {
82
+ side,
83
+ sideOffset,
84
+ align,
85
+ alignOffset,
86
+ alignItemWithTrigger,
87
+ className: "isolate z-50",
88
+ children: /* @__PURE__ */ jsxDEV(Select$1.Popup, {
89
+ "data-slot": "select-content",
90
+ "data-align-trigger": alignItemWithTrigger,
91
+ className: cn("isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-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 animate-none! relative bg-popover before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!", className),
92
+ ...props,
93
+ children: [/* @__PURE__ */ jsxDEV(SelectScrollUpButton, {}, void 0, false), /* @__PURE__ */ jsxDEV(Select$1.List, {
94
+ children
95
+ }, void 0, false), /* @__PURE__ */ jsxDEV(SelectScrollDownButton, {}, void 0, false)]
96
+ }, void 0, true)
97
+ }, void 0, false)
98
+ }, void 0, false);
99
+ }
100
+ function SelectItem(t0) {
101
+ const $ = c(13);
102
+ let children;
103
+ let className;
104
+ let props;
105
+ if ($[0] !== t0) {
106
+ ({
107
+ className,
108
+ children,
109
+ ...props
110
+ } = t0);
111
+ $[0] = t0;
112
+ $[1] = children;
113
+ $[2] = className;
114
+ $[3] = props;
115
+ } else {
116
+ children = $[1];
117
+ className = $[2];
118
+ props = $[3];
119
+ }
120
+ let t1;
121
+ if ($[4] !== className) {
122
+ t1 = cn("relative flex w-full cursor-default items-center gap-2 rounded-md py-2 pe-8 ps-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className);
123
+ $[4] = className;
124
+ $[5] = t1;
125
+ } else {
126
+ t1 = $[5];
127
+ }
128
+ let t2;
129
+ if ($[6] !== children) {
130
+ t2 = /* @__PURE__ */ jsxDEV(Select$1.ItemText, {
131
+ className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap",
132
+ children
133
+ }, void 0, false);
134
+ $[6] = children;
135
+ $[7] = t2;
136
+ } else {
137
+ t2 = $[7];
138
+ }
139
+ let t3;
140
+ if ($[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
141
+ t3 = /* @__PURE__ */ jsxDEV(Select$1.ItemIndicator, {
142
+ render: /* @__PURE__ */ jsxDEV("span", {
143
+ className: "pointer-events-none absolute end-2 flex size-4 items-center justify-center"
144
+ }, void 0, false),
145
+ children: /* @__PURE__ */ jsxDEV(HugeiconsIcon, {
146
+ icon: Tick02Icon,
147
+ strokeWidth: 2,
148
+ className: "pointer-events-none"
149
+ }, void 0, false)
150
+ }, void 0, false);
151
+ $[8] = t3;
152
+ } else {
153
+ t3 = $[8];
154
+ }
155
+ let t4;
156
+ if ($[9] !== props || $[10] !== t1 || $[11] !== t2) {
157
+ t4 = /* @__PURE__ */ jsxDEV(Select$1.Item, {
158
+ "data-slot": "select-item",
159
+ className: t1,
160
+ ...props,
161
+ children: [t2, t3]
162
+ }, void 0, true);
163
+ $[9] = props;
164
+ $[10] = t1;
165
+ $[11] = t2;
166
+ $[12] = t4;
167
+ } else {
168
+ t4 = $[12];
169
+ }
170
+ return t4;
171
+ }
172
+ function SelectScrollUpButton(t0) {
173
+ const $ = c(9);
174
+ let className;
175
+ let props;
176
+ if ($[0] !== t0) {
177
+ ({
178
+ className,
179
+ ...props
180
+ } = t0);
181
+ $[0] = t0;
182
+ $[1] = className;
183
+ $[2] = props;
184
+ } else {
185
+ className = $[1];
186
+ props = $[2];
187
+ }
188
+ let t1;
189
+ if ($[3] !== className) {
190
+ t1 = cn("top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", className);
191
+ $[3] = className;
192
+ $[4] = t1;
193
+ } else {
194
+ t1 = $[4];
195
+ }
196
+ let t2;
197
+ if ($[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
198
+ t2 = /* @__PURE__ */ jsxDEV(HugeiconsIcon, {
199
+ icon: ArrowUp01Icon,
200
+ strokeWidth: 2
201
+ }, void 0, false);
202
+ $[5] = t2;
203
+ } else {
204
+ t2 = $[5];
205
+ }
206
+ let t3;
207
+ if ($[6] !== props || $[7] !== t1) {
208
+ t3 = /* @__PURE__ */ jsxDEV(Select$1.ScrollUpArrow, {
209
+ "data-slot": "select-scroll-up-button",
210
+ className: t1,
211
+ ...props,
212
+ children: t2
213
+ }, void 0, false);
214
+ $[6] = props;
215
+ $[7] = t1;
216
+ $[8] = t3;
217
+ } else {
218
+ t3 = $[8];
219
+ }
220
+ return t3;
221
+ }
222
+ function SelectScrollDownButton(t0) {
223
+ const $ = c(9);
224
+ let className;
225
+ let props;
226
+ if ($[0] !== t0) {
227
+ ({
228
+ className,
229
+ ...props
230
+ } = t0);
231
+ $[0] = t0;
232
+ $[1] = className;
233
+ $[2] = props;
234
+ } else {
235
+ className = $[1];
236
+ props = $[2];
237
+ }
238
+ let t1;
239
+ if ($[3] !== className) {
240
+ t1 = cn("bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", className);
241
+ $[3] = className;
242
+ $[4] = t1;
243
+ } else {
244
+ t1 = $[4];
245
+ }
246
+ let t2;
247
+ if ($[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
248
+ t2 = /* @__PURE__ */ jsxDEV(HugeiconsIcon, {
249
+ icon: ArrowDown01Icon,
250
+ strokeWidth: 2
251
+ }, void 0, false);
252
+ $[5] = t2;
253
+ } else {
254
+ t2 = $[5];
255
+ }
256
+ let t3;
257
+ if ($[6] !== props || $[7] !== t1) {
258
+ t3 = /* @__PURE__ */ jsxDEV(Select$1.ScrollDownArrow, {
259
+ "data-slot": "select-scroll-down-button",
260
+ className: t1,
261
+ ...props,
262
+ children: t2
263
+ }, void 0, false);
264
+ $[6] = props;
265
+ $[7] = t1;
266
+ $[8] = t3;
267
+ } else {
268
+ t3 = $[8];
269
+ }
270
+ return t3;
271
+ }
272
+
273
+ export { SelectValue as S, SelectTrigger as a, SelectItem as b, SelectContent as c, Select as d };
@@ -0,0 +1,45 @@
1
+ import { c } from 'react/compiler-runtime';
2
+ import { c as cn } from './utils-B05Dmz_H.js';
3
+ import { jsxDEV } from 'react/jsx-dev-runtime';
4
+
5
+ function Skeleton(t0) {
6
+ const $ = c(8);
7
+ let className;
8
+ let props;
9
+ if ($[0] !== t0) {
10
+ ({
11
+ className,
12
+ ...props
13
+ } = t0);
14
+ $[0] = t0;
15
+ $[1] = className;
16
+ $[2] = props;
17
+ } else {
18
+ className = $[1];
19
+ props = $[2];
20
+ }
21
+ let t1;
22
+ if ($[3] !== className) {
23
+ t1 = cn("animate-pulse rounded-md bg-muted", className);
24
+ $[3] = className;
25
+ $[4] = t1;
26
+ } else {
27
+ t1 = $[4];
28
+ }
29
+ let t2;
30
+ if ($[5] !== props || $[6] !== t1) {
31
+ t2 = /* @__PURE__ */ jsxDEV("div", {
32
+ "data-slot": "skeleton",
33
+ className: t1,
34
+ ...props
35
+ }, void 0, false);
36
+ $[5] = props;
37
+ $[6] = t1;
38
+ $[7] = t2;
39
+ } else {
40
+ t2 = $[7];
41
+ }
42
+ return t2;
43
+ }
44
+
45
+ export { Skeleton as S };
@@ -1,5 +1,5 @@
1
1
  import { c } from 'react/compiler-runtime';
2
- import { B as Bar, E as EvilBarChart } from './bar-chart-CzJAgqkp.js';
2
+ import { B as Bar, E as EvilBarChart } from './bar-chart-DSwcWIRy.js';
3
3
  import { c as cn } from './utils-B05Dmz_H.js';
4
4
  import { jsxDEV } from 'react/jsx-dev-runtime';
5
5