@lunora/studio 1.0.0-alpha.2 → 1.0.0-alpha.21

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 (60) hide show
  1. package/__assets__/package-og.svg +1 -1
  2. package/dist/index.d.ts +23 -17
  3. package/dist/index.js +34 -34
  4. package/dist/mount.d.ts +1 -1
  5. package/dist/mount.js +1 -1
  6. package/dist/packem_shared/{ADMIN_FUNCTION_PREFIX-DmBqMZ-z.js → ADMIN_FUNCTIONS-CdaxLGkE.js} +3 -0
  7. package/dist/packem_shared/{ApiDocsPanel-DpRjJhG5.js → ApiDocsPanel-BgrN4kml.js} +3 -3
  8. package/dist/packem_shared/{ApiReferencePanel-DMIUp-kK.js → ApiReferencePanel-1vubqG5s.js} +2 -2
  9. package/dist/packem_shared/{ApiTab-DURGU15e.js → ApiTab-CHkX49o_.js} +4 -4
  10. package/dist/packem_shared/{AuditPanel-BC59Nhst.js → AuditPanel-CP9HM9nq.js} +19 -31
  11. package/dist/packem_shared/{CommandPalette-Dx_CoB9i.js → CommandPalette-BtgkBzZI.js} +2 -2
  12. package/dist/packem_shared/{ConfirmButton-WQVUoGFb.js → ConfirmButton-C2eVi2Qv.js} +1 -1
  13. package/dist/packem_shared/{ConnectionBadge-Bxagrip8.js → ConnectionBadge-B2DDM2Tn.js} +1 -1
  14. package/dist/packem_shared/{createStudioI18n-CgvlmDkN.js → DEFAULT_LOCALE-CiX4W7Kr.js} +1 -1
  15. package/dist/packem_shared/{DataBrowser-Coz6jJE6.js → DataBrowser-Bb1gTQ6c.js} +182 -249
  16. package/dist/packem_shared/{ExportImportPanel-WO34fJxy.js → ExportImportPanel-Dj87tRa5.js} +9 -5
  17. package/dist/packem_shared/{FileBrowser-Zcr-Qgxo.js → FileBrowser-CWvxp_is.js} +7 -7
  18. package/dist/packem_shared/{FunctionRunner-j0Rd5m9t.js → FunctionRunner-DlWApMCH.js} +4 -4
  19. package/dist/packem_shared/{FunctionStatsPanel-DboBl-XL.js → FunctionStatsPanel-CuO2Tmw-.js} +141 -198
  20. package/dist/packem_shared/{GlobalDataBrowser-9MhPEfgN.js → GlobalDataBrowser-3X9uRfdO.js} +37 -66
  21. package/dist/packem_shared/{HealthPanel-DOIgbUtx.js → HealthPanel-Dj0GRo5P.js} +31 -23
  22. package/dist/packem_shared/{HomePanel-bdOCNA-p.js → HomePanel-BewOCuag.js} +450 -389
  23. package/dist/packem_shared/{InsightsPanel-DaZPnSgt.js → InsightsPanel-y_Q-xdPY.js} +104 -66
  24. package/dist/packem_shared/{LogsPanel-CWdqAGpQ.js → LogsPanel-C7crgYoS.js} +35 -47
  25. package/dist/packem_shared/{MailPanel-D_EGtDnS.js → MailPanel-PILidruz.js} +31 -38
  26. package/dist/packem_shared/{MetricsPanel-E4Gv6wTO.js → MetricsPanel-DioILzgf.js} +34 -48
  27. package/dist/packem_shared/{MigrationsPanel-DQdPY9io.js → MigrationsPanel-DkIcRoE5.js} +31 -38
  28. package/dist/packem_shared/{OpenRpcReferencePanel-j2p3HB0s.js → OpenRpcReferencePanel-vbcYbv3V.js} +2 -2
  29. package/dist/packem_shared/{PitrPanel-BbBkQR6t.js → PitrPanel-yKJ1JPPk.js} +4 -4
  30. package/dist/packem_shared/{ScheduledJobs-Ok1CYYwI.js → ScheduledJobs-BWNwIN3I.js} +164 -61
  31. package/dist/packem_shared/{SchemaViewer-D8XGnp-X.js → SchemaViewer-CNr8Wame.js} +4 -4
  32. package/dist/packem_shared/{SecurityAdvisorPanel-Cdm2IxLW.js → SecurityAdvisorPanel-BBzv7L3c.js} +44 -31
  33. package/dist/packem_shared/SettingsPanel-BKSKl8tl.js +390 -0
  34. package/dist/packem_shared/{ShardInput-DNCsT1KW.js → ShardInput-gx_DZXXn.js} +1 -1
  35. package/dist/packem_shared/SqlEditorPanel-CkemCQvy.js +13 -0
  36. package/dist/packem_shared/Studio-QkOjc2NS.js +33 -0
  37. package/dist/packem_shared/{StudioApp-dvywkJ8I.js → StudioApp-TEElspKL.js} +278 -4
  38. package/dist/packem_shared/{StudioI18nProvider-Dcajsznk.js → StudioI18nProvider-B-tDCZIi.js} +1 -1
  39. package/dist/packem_shared/TableEditor-JS3sXYgS.js +11 -0
  40. package/dist/packem_shared/{advisor-view-DBlzJi6C.js → advisor-view-CGcfMiPq.js} +1 -1
  41. package/dist/packem_shared/{app.d-CCmwDEVs.d.ts → app.d-Cnij4Zp5.d.ts} +1 -1
  42. package/dist/packem_shared/{cf-links-BZfRdxSE.js → cf-links-2cktDedA.js} +1 -1
  43. package/dist/packem_shared/{data-grid-CCh2Couo.js → data-grid-B5CaV3wS.js} +2 -2
  44. package/dist/packem_shared/{grid-features-DTjG6Sex.js → grid-features-CzUfqgsM.js} +3 -3
  45. package/dist/packem_shared/{internal-BBZYexre.js → internal-rXJEAhXS.js} +1 -1
  46. package/dist/packem_shared/{live-status-bPff1O7Y.js → live-status-FZ0psC1z.js} +1 -1
  47. package/dist/packem_shared/{reference-view-BCKIoai7.js → reference-view-B4E49Lip.js} +3 -3
  48. package/dist/packem_shared/{sql-editor-panel-CW2y2x9h.js → sql-editor-panel-CUJoYF1Z.js} +6 -6
  49. package/dist/packem_shared/{studio-BDVd7rIV.js → studio-c5Vf7kSh.js} +2897 -1668
  50. package/dist/packem_shared/{TableEditor-DIVDk3vT.js → table-editor-9fhJ4hMJ.js} +43 -7
  51. package/dist/packem_shared/{table-list-sidebar-aZHLq70w.js → table-list-sidebar-Bg7uzbvC.js} +2 -2
  52. package/dist/packem_shared/use-admin-query-BkbdNFNz.js +105 -0
  53. package/dist/standalone/studio.js +198 -176
  54. package/dist/styles.css +1 -1
  55. package/package.json +13 -12
  56. package/dist/packem_shared/SettingsPanel-D3WF2mBU.js +0 -176
  57. package/dist/packem_shared/SqlEditorPanel-BuQ7f2Hs.js +0 -13
  58. package/dist/packem_shared/Studio-D36od9Oz.js +0 -33
  59. package/dist/packem_shared/use-live-admin-D1h1Fzsd.js +0 -73
  60. package/dist/packem_shared/use-live-shard-seed-B74RYcOy.js +0 -76
@@ -3,12 +3,14 @@ import { LunoraClient } from '@lunora/client';
3
3
  import { LunoraProvider } from '@lunora/react';
4
4
  import { useState, useEffect } from 'react';
5
5
  import { ErrorBoundary } from './ErrorBoundary-BzAApI7J.js';
6
- import { T as ThemeProvider, u as useTheme, a as TooltipProvider, S as Studio } from './studio-BDVd7rIV.js';
6
+ import { u as useTheme, B as BrandMark, T as ThemeProvider, a as TooltipProvider, S as Studio } from './studio-c5Vf7kSh.js';
7
7
  import useDebounced from './useDebounced-Dxncpg6z.js';
8
- import { createStudioI18n, useT } from './createStudioI18n-CgvlmDkN.js';
9
- import { StudioI18nProvider } from './StudioI18nProvider-Dcajsznk.js';
8
+ import { useT, createStudioI18n } from './DEFAULT_LOCALE-CiX4W7Kr.js';
9
+ import { StudioI18nProvider } from './StudioI18nProvider-B-tDCZIi.js';
10
10
  import STUDIO_ROOT_CLASS from './STUDIO_ROOT_CLASS-D12gX2dV.js';
11
11
  import { c as cn } from './utils-B05Dmz_H.js';
12
+ import { B as Button } from './button-BhsN2uZH.js';
13
+ import { I as Input } from './input-XH4r1Pt1.js';
12
14
  import { jsxDEV } from 'react/jsx-dev-runtime';
13
15
 
14
16
  const STORAGE_KEY = "lunora-studio-admin-token";
@@ -41,6 +43,275 @@ const saveToken = (token) => {
41
43
  }
42
44
  };
43
45
 
46
+ const StudioLoginForm = (t0) => {
47
+ const $ = c(42);
48
+ const {
49
+ onSubmit
50
+ } = t0;
51
+ const t = useT();
52
+ const [value, setValue] = useState("");
53
+ let t1;
54
+ if ($[0] !== value) {
55
+ t1 = value.trim();
56
+ $[0] = value;
57
+ $[1] = t1;
58
+ } else {
59
+ t1 = $[1];
60
+ }
61
+ const trimmed = t1;
62
+ let t2;
63
+ if ($[2] !== onSubmit || $[3] !== trimmed) {
64
+ t2 = (event) => {
65
+ event.preventDefault();
66
+ if (trimmed !== "") {
67
+ onSubmit(trimmed);
68
+ }
69
+ };
70
+ $[2] = onSubmit;
71
+ $[3] = trimmed;
72
+ $[4] = t2;
73
+ } else {
74
+ t2 = $[4];
75
+ }
76
+ const submit = t2;
77
+ let t3;
78
+ if ($[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
79
+ t3 = /* @__PURE__ */ jsxDEV("div", {
80
+ className: "h-10 w-10 text-foreground",
81
+ children: /* @__PURE__ */ jsxDEV(BrandMark, {}, void 0, false)
82
+ }, void 0, false);
83
+ $[5] = t3;
84
+ } else {
85
+ t3 = $[5];
86
+ }
87
+ let t4;
88
+ if ($[6] !== t) {
89
+ t4 = t("Connect to Lunora Studio");
90
+ $[6] = t;
91
+ $[7] = t4;
92
+ } else {
93
+ t4 = $[7];
94
+ }
95
+ let t5;
96
+ if ($[8] !== t4) {
97
+ t5 = /* @__PURE__ */ jsxDEV("h1", {
98
+ className: "text-base font-semibold text-foreground",
99
+ children: t4
100
+ }, void 0, false);
101
+ $[8] = t4;
102
+ $[9] = t5;
103
+ } else {
104
+ t5 = $[9];
105
+ }
106
+ let t6;
107
+ if ($[10] !== t) {
108
+ t6 = t("Enter your admin token to access the studio.");
109
+ $[10] = t;
110
+ $[11] = t6;
111
+ } else {
112
+ t6 = $[11];
113
+ }
114
+ let t7;
115
+ if ($[12] !== t6) {
116
+ t7 = /* @__PURE__ */ jsxDEV("p", {
117
+ className: "text-[13px] text-muted-foreground",
118
+ children: t6
119
+ }, void 0, false);
120
+ $[12] = t6;
121
+ $[13] = t7;
122
+ } else {
123
+ t7 = $[13];
124
+ }
125
+ let t8;
126
+ if ($[14] !== t5 || $[15] !== t7) {
127
+ t8 = /* @__PURE__ */ jsxDEV("div", {
128
+ className: "flex flex-col items-center gap-3 text-center",
129
+ children: [t3, /* @__PURE__ */ jsxDEV("div", {
130
+ className: "flex flex-col gap-1",
131
+ children: [t5, t7]
132
+ }, void 0, true)]
133
+ }, void 0, true);
134
+ $[14] = t5;
135
+ $[15] = t7;
136
+ $[16] = t8;
137
+ } else {
138
+ t8 = $[16];
139
+ }
140
+ let t9;
141
+ if ($[17] !== t) {
142
+ t9 = t("admin token");
143
+ $[17] = t;
144
+ $[18] = t9;
145
+ } else {
146
+ t9 = $[18];
147
+ }
148
+ let t10;
149
+ if ($[19] !== t9) {
150
+ t10 = /* @__PURE__ */ jsxDEV("label", {
151
+ className: "text-xs font-medium text-foreground",
152
+ htmlFor: "lunora-studio-login-token",
153
+ children: t9
154
+ }, void 0, false);
155
+ $[19] = t9;
156
+ $[20] = t10;
157
+ } else {
158
+ t10 = $[20];
159
+ }
160
+ let t11;
161
+ if ($[21] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
162
+ t11 = (event_0) => {
163
+ setValue(event_0.target.value);
164
+ };
165
+ $[21] = t11;
166
+ } else {
167
+ t11 = $[21];
168
+ }
169
+ let t12;
170
+ if ($[22] !== value) {
171
+ t12 = /* @__PURE__ */ jsxDEV(Input, {
172
+ autoComplete: "off",
173
+ autoFocus: true,
174
+ "data-testid": "lunora-studio-login-token",
175
+ id: "lunora-studio-login-token",
176
+ onChange: t11,
177
+ placeholder: "LUNORA_ADMIN_TOKEN",
178
+ type: "password",
179
+ value
180
+ }, void 0, false);
181
+ $[22] = value;
182
+ $[23] = t12;
183
+ } else {
184
+ t12 = $[23];
185
+ }
186
+ let t13;
187
+ if ($[24] !== t) {
188
+ t13 = t("From your worker's LUNORA_ADMIN_TOKEN — your project's .dev.vars in dev, or a deployment secret in production.");
189
+ $[24] = t;
190
+ $[25] = t13;
191
+ } else {
192
+ t13 = $[25];
193
+ }
194
+ let t14;
195
+ if ($[26] !== t13) {
196
+ t14 = /* @__PURE__ */ jsxDEV("p", {
197
+ className: "text-[11px] text-muted-foreground",
198
+ children: t13
199
+ }, void 0, false);
200
+ $[26] = t13;
201
+ $[27] = t14;
202
+ } else {
203
+ t14 = $[27];
204
+ }
205
+ let t15;
206
+ if ($[28] !== t10 || $[29] !== t12 || $[30] !== t14) {
207
+ t15 = /* @__PURE__ */ jsxDEV("div", {
208
+ className: "flex flex-col gap-1.5",
209
+ children: [t10, t12, t14]
210
+ }, void 0, true);
211
+ $[28] = t10;
212
+ $[29] = t12;
213
+ $[30] = t14;
214
+ $[31] = t15;
215
+ } else {
216
+ t15 = $[31];
217
+ }
218
+ const t16 = trimmed === "";
219
+ let t17;
220
+ if ($[32] !== t) {
221
+ t17 = t("Connect");
222
+ $[32] = t;
223
+ $[33] = t17;
224
+ } else {
225
+ t17 = $[33];
226
+ }
227
+ let t18;
228
+ if ($[34] !== t16 || $[35] !== t17) {
229
+ t18 = /* @__PURE__ */ jsxDEV(Button, {
230
+ "data-testid": "lunora-studio-login-submit",
231
+ disabled: t16,
232
+ type: "submit",
233
+ children: t17
234
+ }, void 0, false);
235
+ $[34] = t16;
236
+ $[35] = t17;
237
+ $[36] = t18;
238
+ } else {
239
+ t18 = $[36];
240
+ }
241
+ let t19;
242
+ if ($[37] !== submit || $[38] !== t15 || $[39] !== t18 || $[40] !== t8) {
243
+ t19 = /* @__PURE__ */ jsxDEV("form", {
244
+ className: "flex w-full max-w-sm flex-col gap-5 rounded-xl border border-border bg-card p-7 shadow-lg",
245
+ "data-testid": "lunora-studio-login",
246
+ onSubmit: submit,
247
+ children: [t8, t15, t18]
248
+ }, void 0, true);
249
+ $[37] = submit;
250
+ $[38] = t15;
251
+ $[39] = t18;
252
+ $[40] = t8;
253
+ $[41] = t19;
254
+ } else {
255
+ t19 = $[41];
256
+ }
257
+ return t19;
258
+ };
259
+ const StudioLogin = (t0) => {
260
+ const $ = c(10);
261
+ const {
262
+ i18n,
263
+ onSubmit
264
+ } = t0;
265
+ const {
266
+ resolvedTheme
267
+ } = useTheme();
268
+ const t1 = resolvedTheme === "dark" && "dark";
269
+ let t2;
270
+ if ($[0] !== t1) {
271
+ t2 = cn(STUDIO_ROOT_CLASS, t1, "flex h-dvh items-center justify-center bg-sidebar p-6 text-sm text-foreground");
272
+ $[0] = t1;
273
+ $[1] = t2;
274
+ } else {
275
+ t2 = $[1];
276
+ }
277
+ let t3;
278
+ if ($[2] !== onSubmit) {
279
+ t3 = /* @__PURE__ */ jsxDEV(StudioLoginForm, {
280
+ onSubmit
281
+ }, void 0, false);
282
+ $[2] = onSubmit;
283
+ $[3] = t3;
284
+ } else {
285
+ t3 = $[3];
286
+ }
287
+ let t4;
288
+ if ($[4] !== i18n || $[5] !== t3) {
289
+ t4 = /* @__PURE__ */ jsxDEV(StudioI18nProvider, {
290
+ i18n,
291
+ children: t3
292
+ }, void 0, false);
293
+ $[4] = i18n;
294
+ $[5] = t3;
295
+ $[6] = t4;
296
+ } else {
297
+ t4 = $[6];
298
+ }
299
+ let t5;
300
+ if ($[7] !== t2 || $[8] !== t4) {
301
+ t5 = /* @__PURE__ */ jsxDEV("div", {
302
+ className: t2,
303
+ "data-testid": "lunora-studio-login-root",
304
+ children: t4
305
+ }, void 0, false);
306
+ $[7] = t2;
307
+ $[8] = t4;
308
+ $[9] = t5;
309
+ } else {
310
+ t5 = $[9];
311
+ }
312
+ return t5;
313
+ };
314
+
44
315
  const resolveBaseUrl = (explicit) => {
45
316
  if (explicit !== void 0 && explicit !== "") {
46
317
  return explicit;
@@ -356,7 +627,10 @@ const StudioApp = (t0) => {
356
627
  let t11;
357
628
  if ($[18] !== basePath || $[19] !== client || $[20] !== i18n || $[21] !== rulesInstalled || $[22] !== studio || $[23] !== token) {
358
629
  t11 = /* @__PURE__ */ jsxDEV(ThemeProvider, {
359
- children: /* @__PURE__ */ jsxDEV(StudioShell, {
630
+ children: token === "" ? /* @__PURE__ */ jsxDEV(StudioLogin, {
631
+ i18n,
632
+ onSubmit: setToken
633
+ }, void 0, false) : /* @__PURE__ */ jsxDEV(StudioShell, {
360
634
  basePath,
361
635
  clearToken,
362
636
  client,
@@ -1,5 +1,5 @@
1
1
  import { c } from 'react/compiler-runtime';
2
- import { studioI18n, createStudioI18n, StudioI18nContext } from './createStudioI18n-CgvlmDkN.js';
2
+ import { studioI18n, createStudioI18n, StudioI18nContext } from './DEFAULT_LOCALE-CiX4W7Kr.js';
3
3
  import { jsxDEV } from 'react/jsx-dev-runtime';
4
4
 
5
5
  const resolveInstance = (i18n, locale, catalogs) => {
@@ -0,0 +1,11 @@
1
+ import 'react/compiler-runtime';
2
+ import '@lunora/react';
3
+ import '@tanstack/react-router';
4
+ import 'react';
5
+ import './storage-tier-CL98eOvn.js';
6
+ import './DEFAULT_LOCALE-CiX4W7Kr.js';
7
+ export { T as TableEditor } from './table-editor-9fhJ4hMJ.js';
8
+ import './internal-rXJEAhXS.js';
9
+ import './DataBrowser-Bb1gTQ6c.js';
10
+ import './GlobalDataBrowser-3X9uRfdO.js';
11
+ import 'react/jsx-dev-runtime';
@@ -1,7 +1,7 @@
1
1
  import { useState, useMemo } from 'react';
2
2
  import { C as Card, a as CardContent } from './card-DURq3ElK.js';
3
3
  import { T as Table, a as TableHeader, b as TableRow, c as TableHead, d as TableBody, e as TableCell } from './table-_RzNvy3R.js';
4
- import { useT } from './createStudioI18n-CgvlmDkN.js';
4
+ import { useT } from './DEFAULT_LOCALE-CiX4W7Kr.js';
5
5
  import { c as cn } from './utils-B05Dmz_H.js';
6
6
  import { jsxDEV } from 'react/jsx-dev-runtime';
7
7
 
@@ -115,7 +115,7 @@ interface FunctionDescriptor {
115
115
  /** Outcome of a single `FunctionRunner` invocation. */
116
116
  type RunStatus = "error" | "idle" | "running" | "success";
117
117
  /** Identifier for each built-in studio tab. */
118
- type StudioTab = "analytics" | "api" | "audit" | "authConfig" | "authSessions" | "dashboards" | "data" | "drains" | "export" | "files" | "functions" | "health" | "home" | "insights" | "logs" | "mail" | "metrics" | "migrations" | "organizations" | "payments" | "permissions" | "pitr" | "realtime" | "rls" | "schedule" | "schema" | "security" | "settings" | "sql" | "storageRules" | "users" | "vectors" | "workflows";
118
+ type StudioTab = "analytics" | "api" | "audit" | "authConfig" | "authSessions" | "dashboards" | "data" | "drains" | "export" | "fanout" | "files" | "flags" | "functions" | "health" | "home" | "insights" | "logs" | "mail" | "metrics" | "migrations" | "organizations" | "payments" | "permissions" | "pitr" | "queues" | "realtime" | "rls" | "schedule" | "schema" | "security" | "settings" | "sql" | "storageRules" | "users" | "vectors" | "workflows";
119
119
  interface StudioProps {
120
120
  /**
121
121
  * URL path prefix the studio is mounted under, passed to the router as its
@@ -5,4 +5,4 @@ const CLOUDFLARE_R2_URL = `${CLOUDFLARE_DASH}/r2`;
5
5
  const CLOUDFLARE_D1_URL = `${CLOUDFLARE_DASH}/workers/d1`;
6
6
  const CLOUDFLARE_DURABLE_OBJECTS_URL = `${CLOUDFLARE_DASH}/workers/durable-objects`;
7
7
 
8
- export { CLOUDFLARE_D1_URL as C, CLOUDFLARE_OBSERVABILITY_URL as a, CLOUDFLARE_WORKERS_URL as b, CLOUDFLARE_DURABLE_OBJECTS_URL as c, CLOUDFLARE_R2_URL as d };
8
+ export { CLOUDFLARE_OBSERVABILITY_URL as C, CLOUDFLARE_WORKERS_URL as a, CLOUDFLARE_D1_URL as b, CLOUDFLARE_DURABLE_OBJECTS_URL as c, CLOUDFLARE_R2_URL as d };
@@ -1,6 +1,6 @@
1
1
  import { c } from 'react/compiler-runtime';
2
- import { useT } from './createStudioI18n-CgvlmDkN.js';
3
- import { h as formatCell } from './internal-BBZYexre.js';
2
+ import { useT } from './DEFAULT_LOCALE-CiX4W7Kr.js';
3
+ import { h as formatCell } from './internal-rXJEAhXS.js';
4
4
  import { jsxDEV } from 'react/jsx-dev-runtime';
5
5
 
6
6
  const CellValue = (t0) => {
@@ -1,11 +1,11 @@
1
1
  import { c } from 'react/compiler-runtime';
2
2
  import { useState } from 'react';
3
- import { ConfirmButton } from './ConfirmButton-WQVUoGFb.js';
3
+ import { ConfirmButton } from './ConfirmButton-C2eVi2Qv.js';
4
4
  import { D as DropdownMenuTrigger, a as DropdownMenuLabel, b as DropdownMenuItem, c as DropdownMenuContent, d as DropdownMenu, e as DropdownMenuCheckboxItem, f as DropdownMenuSeparator, g as DropdownMenuGroup } from './dropdown-menu-WY4B_eJO.js';
5
5
  import { c as cn } from './utils-B05Dmz_H.js';
6
6
  import { jsxDEV } from 'react/jsx-dev-runtime';
7
- import { useT } from './createStudioI18n-CgvlmDkN.js';
8
- import { h as formatCell, f as fireAndForget } from './internal-BBZYexre.js';
7
+ import { useT } from './DEFAULT_LOCALE-CiX4W7Kr.js';
8
+ import { h as formatCell, f as fireAndForget } from './internal-rXJEAhXS.js';
9
9
 
10
10
  const OVERLAY_BY_VARIANT = {
11
11
  dialog: "fixed inset-0 z-[1000] flex justify-center bg-black/20 pt-[10vh]",
@@ -65,4 +65,4 @@ const formatTimestamp = (value, fallback = "") => {
65
65
  return Number.isNaN(date.getTime()) ? String(value) : date.toLocaleString();
66
66
  };
67
67
 
68
- export { adminRef as a, copyToClipboard as b, callOptions as c, formatTimestamp as d, errorMessage as e, fireAndForget as f, formatBytes as g, formatCell as h };
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 };
@@ -1,5 +1,5 @@
1
1
  import { c } from 'react/compiler-runtime';
2
- import { useT } from './createStudioI18n-CgvlmDkN.js';
2
+ import { useT } from './DEFAULT_LOCALE-CiX4W7Kr.js';
3
3
  import { jsxDEV } from 'react/jsx-dev-runtime';
4
4
 
5
5
  const LiveError = (t0) => {
@@ -2,14 +2,14 @@ import { c } from 'react/compiler-runtime';
2
2
  import { c as cn } from './utils-B05Dmz_H.js';
3
3
  import { jsxDEV, Fragment } from 'react/jsx-dev-runtime';
4
4
  import { useState, useEffect, createContext, use } from 'react';
5
- import { e as errorMessage, b as copyToClipboard, f as fireAndForget, c as callOptions, a as adminRef } from './internal-BBZYexre.js';
5
+ import { e as errorMessage, g as copyToClipboard, f as fireAndForget, c as callOptions, a as adminRef } from './internal-rXJEAhXS.js';
6
6
  import { SentIcon, Copy01Icon, Search01Icon } from '@hugeicons/core-free-icons';
7
7
  import { HugeiconsIcon } from '@hugeicons/react';
8
8
  import { I as Input } from './input-XH4r1Pt1.js';
9
- import { useT } from './createStudioI18n-CgvlmDkN.js';
9
+ import { useT } from './DEFAULT_LOCALE-CiX4W7Kr.js';
10
10
  import { B as Button } from './button-BhsN2uZH.js';
11
11
  import { B as Badge$1 } from './badge-B2PKA1-5.js';
12
- import { ShardInput } from './ShardInput-DNCsT1KW.js';
12
+ import { ShardInput } from './ShardInput-gx_DZXXn.js';
13
13
  import { L as Label } from './label-D8ykjn5J.js';
14
14
  import { T as Textarea } from './textarea-D3gaCU_-.js';
15
15
  import { useLunora } from '@lunora/react';
@@ -1,18 +1,18 @@
1
1
  import { c } from 'react/compiler-runtime';
2
2
  import { useLunora } from '@lunora/react';
3
3
  import { useState, useEffect, useRef, useId } from 'react';
4
- import { useT } from './createStudioI18n-CgvlmDkN.js';
5
- import { h as formatCell, f as fireAndForget, c as callOptions, a as adminRef, e as errorMessage } from './internal-BBZYexre.js';
4
+ import { useT } from './DEFAULT_LOCALE-CiX4W7Kr.js';
5
+ import { h as formatCell, f as fireAndForget, c as callOptions, a as adminRef, e as errorMessage } from './internal-rXJEAhXS.js';
6
6
  import { X as XAxis, B as Bar, T as Tooltip, E as EvilBarChart } from './bar-chart-CzJAgqkp.js';
7
7
  import { jsxDEV, Fragment } from 'react/jsx-dev-runtime';
8
- import { ShardInput } from './ShardInput-DNCsT1KW.js';
8
+ import { ShardInput } from './ShardInput-gx_DZXXn.js';
9
9
  import { cva } from 'class-variance-authority';
10
10
  import { c as cn } from './utils-B05Dmz_H.js';
11
11
  import { c as TableHead, a as TableHeader, b as TableRow, e as TableCell, d as TableBody, T as Table } from './table-_RzNvy3R.js';
12
- import { ADMIN_FUNCTIONS } from './ADMIN_FUNCTION_PREFIX-DmBqMZ-z.js';
12
+ import { ADMIN_FUNCTIONS } from './ADMIN_FUNCTIONS-CdaxLGkE.js';
13
13
  import { r as recordShard } from './shard-history-DyebH1R5.js';
14
- import { C as CellValue } from './data-grid-CCh2Couo.js';
15
- import { E as ExportMenu } from './grid-features-DTjG6Sex.js';
14
+ import { C as CellValue } from './data-grid-B5CaV3wS.js';
15
+ import { E as ExportMenu } from './grid-features-CzUfqgsM.js';
16
16
 
17
17
  const MAX_BARS = 50;
18
18
  const RESULT_CHART_CONFIG = {