@lunora/studio 0.0.0 → 1.0.0-alpha.1

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 (81) hide show
  1. package/LICENSE.md +105 -0
  2. package/README.md +123 -9
  3. package/__assets__/package-og.svg +14 -0
  4. package/dist/index.d.ts +1402 -0
  5. package/dist/index.js +41 -0
  6. package/dist/mount.d.ts +21 -0
  7. package/dist/mount.js +26 -0
  8. package/dist/packem_shared/ADMIN_FUNCTION_PREFIX-DmBqMZ-z.js +45 -0
  9. package/dist/packem_shared/ApiDocsPanel-DpRjJhG5.js +842 -0
  10. package/dist/packem_shared/ApiReferencePanel-DMIUp-kK.js +229 -0
  11. package/dist/packem_shared/ApiTab-DURGU15e.js +251 -0
  12. package/dist/packem_shared/AuditPanel-BC59Nhst.js +212 -0
  13. package/dist/packem_shared/CommandPalette-Dx_CoB9i.js +373 -0
  14. package/dist/packem_shared/ConfirmButton-WQVUoGFb.js +59 -0
  15. package/dist/packem_shared/ConnectionBadge-Bxagrip8.js +111 -0
  16. package/dist/packem_shared/DEFAULT_AUTO_REFRESH_MS-Vxwaxx51.js +50 -0
  17. package/dist/packem_shared/DEFAULT_INSIGHT_THRESHOLDS-DjF0h-gA.js +89 -0
  18. package/dist/packem_shared/DataBrowser-Coz6jJE6.js +4542 -0
  19. package/dist/packem_shared/DataFilters-FNquMaiu.js +249 -0
  20. package/dist/packem_shared/ErrorBoundary-BzAApI7J.js +66 -0
  21. package/dist/packem_shared/ExportImportPanel-WO34fJxy.js +193 -0
  22. package/dist/packem_shared/FileBrowser-Zcr-Qgxo.js +2932 -0
  23. package/dist/packem_shared/FunctionRunner-j0Rd5m9t.js +343 -0
  24. package/dist/packem_shared/FunctionStatsPanel-DboBl-XL.js +432 -0
  25. package/dist/packem_shared/GlobalDataBrowser-9MhPEfgN.js +318 -0
  26. package/dist/packem_shared/HealthPanel-DOIgbUtx.js +640 -0
  27. package/dist/packem_shared/HomePanel-bdOCNA-p.js +1273 -0
  28. package/dist/packem_shared/InsightsPanel-DaZPnSgt.js +423 -0
  29. package/dist/packem_shared/LogsPanel-CWdqAGpQ.js +839 -0
  30. package/dist/packem_shared/MailPanel-D_EGtDnS.js +447 -0
  31. package/dist/packem_shared/MetricsPanel-E4Gv6wTO.js +1625 -0
  32. package/dist/packem_shared/MigrationsPanel-DQdPY9io.js +246 -0
  33. package/dist/packem_shared/OpenRpcReferencePanel-j2p3HB0s.js +191 -0
  34. package/dist/packem_shared/PitrPanel-BbBkQR6t.js +252 -0
  35. package/dist/packem_shared/STUDIO_ROOT_CLASS-D12gX2dV.js +3 -0
  36. package/dist/packem_shared/ScheduledJobs-Ok1CYYwI.js +159 -0
  37. package/dist/packem_shared/SchemaViewer-D8XGnp-X.js +2512 -0
  38. package/dist/packem_shared/SecurityAdvisorPanel-Cdm2IxLW.js +79 -0
  39. package/dist/packem_shared/SettingsPanel-D3WF2mBU.js +176 -0
  40. package/dist/packem_shared/ShardInput-DNCsT1KW.js +107 -0
  41. package/dist/packem_shared/SqlEditorPanel-BuQ7f2Hs.js +13 -0
  42. package/dist/packem_shared/Studio-D36od9Oz.js +33 -0
  43. package/dist/packem_shared/StudioApp-dvywkJ8I.js +383 -0
  44. package/dist/packem_shared/StudioI18nProvider-Dcajsznk.js +48 -0
  45. package/dist/packem_shared/TableEditor-DIVDk3vT.js +371 -0
  46. package/dist/packem_shared/advisor-view-DBlzJi6C.js +159 -0
  47. package/dist/packem_shared/aggregateMetrics-D4nUHEKU.js +108 -0
  48. package/dist/packem_shared/app.d-CCmwDEVs.d.ts +300 -0
  49. package/dist/packem_shared/badge-B2PKA1-5.js +49 -0
  50. package/dist/packem_shared/bar-chart-CzJAgqkp.js +3245 -0
  51. package/dist/packem_shared/button-BhsN2uZH.js +49 -0
  52. package/dist/packem_shared/card-DURq3ElK.js +175 -0
  53. package/dist/packem_shared/cf-links-BZfRdxSE.js +8 -0
  54. package/dist/packem_shared/checkbox-UNkzAxl-.js +63 -0
  55. package/dist/packem_shared/createStudioI18n-CgvlmDkN.js +27 -0
  56. package/dist/packem_shared/data-grid-CCh2Couo.js +183 -0
  57. package/dist/packem_shared/dropdown-menu-WY4B_eJO.js +280 -0
  58. package/dist/packem_shared/empty-state-DY_oe0k6.js +98 -0
  59. package/dist/packem_shared/grid-features-DTjG6Sex.js +840 -0
  60. package/dist/packem_shared/input-XH4r1Pt1.js +53 -0
  61. package/dist/packem_shared/internal-BBZYexre.js +68 -0
  62. package/dist/packem_shared/label-D8ykjn5J.js +46 -0
  63. package/dist/packem_shared/live-status-bPff1O7Y.js +44 -0
  64. package/dist/packem_shared/reference-view-BCKIoai7.js +2180 -0
  65. package/dist/packem_shared/shard-history-DyebH1R5.js +38 -0
  66. package/dist/packem_shared/sparkline-10dG-_f0.js +93 -0
  67. package/dist/packem_shared/sql-editor-panel-CW2y2x9h.js +2562 -0
  68. package/dist/packem_shared/storage-tier-CL98eOvn.js +85 -0
  69. package/dist/packem_shared/studio-BDVd7rIV.js +10303 -0
  70. package/dist/packem_shared/table-_RzNvy3R.js +246 -0
  71. package/dist/packem_shared/table-list-sidebar-aZHLq70w.js +832 -0
  72. package/dist/packem_shared/textarea-D3gaCU_-.js +46 -0
  73. package/dist/packem_shared/use-live-admin-D1h1Fzsd.js +73 -0
  74. package/dist/packem_shared/use-live-shard-seed-B74RYcOy.js +76 -0
  75. package/dist/packem_shared/useDebounced-Dxncpg6z.js +32 -0
  76. package/dist/packem_shared/utils-B05Dmz_H.js +8 -0
  77. package/dist/packem_shared/virtual-rect-CVMUskSm.js +10 -0
  78. package/dist/standalone/studio.js +356 -0
  79. package/dist/styles.css +2 -0
  80. package/package.json +77 -17
  81. package/src/theme.css +59 -0
@@ -0,0 +1,280 @@
1
+ 'use client';
2
+ import { c } from 'react/compiler-runtime';
3
+ import 'react';
4
+ import { Menu } from '@base-ui/react/menu';
5
+ import { c as cn } from './utils-B05Dmz_H.js';
6
+ import { HugeiconsIcon } from '@hugeicons/react';
7
+ import { Tick02Icon } from '@hugeicons/core-free-icons';
8
+ import { jsxDEV } from 'react/jsx-dev-runtime';
9
+
10
+ function DropdownMenu(t0) {
11
+ const $ = c(4);
12
+ let props;
13
+ if ($[0] !== t0) {
14
+ ({
15
+ ...props
16
+ } = t0);
17
+ $[0] = t0;
18
+ $[1] = props;
19
+ } else {
20
+ props = $[1];
21
+ }
22
+ let t1;
23
+ if ($[2] !== props) {
24
+ t1 = /* @__PURE__ */ jsxDEV(Menu.Root, {
25
+ "data-slot": "dropdown-menu",
26
+ ...props
27
+ }, void 0, false);
28
+ $[2] = props;
29
+ $[3] = t1;
30
+ } else {
31
+ t1 = $[3];
32
+ }
33
+ return t1;
34
+ }
35
+ function DropdownMenuTrigger(t0) {
36
+ const $ = c(4);
37
+ let props;
38
+ if ($[0] !== t0) {
39
+ ({
40
+ ...props
41
+ } = t0);
42
+ $[0] = t0;
43
+ $[1] = props;
44
+ } else {
45
+ props = $[1];
46
+ }
47
+ let t1;
48
+ if ($[2] !== props) {
49
+ t1 = /* @__PURE__ */ jsxDEV(Menu.Trigger, {
50
+ "data-slot": "dropdown-menu-trigger",
51
+ ...props
52
+ }, void 0, false);
53
+ $[2] = props;
54
+ $[3] = t1;
55
+ } else {
56
+ t1 = $[3];
57
+ }
58
+ return t1;
59
+ }
60
+ function DropdownMenuContent({
61
+ align = "start",
62
+ alignOffset = 0,
63
+ side = "bottom",
64
+ sideOffset = 4,
65
+ className,
66
+ ...props
67
+ }) {
68
+ return /* @__PURE__ */ jsxDEV(Menu.Portal, {
69
+ children: /* @__PURE__ */ jsxDEV(Menu.Positioner, {
70
+ className: "isolate z-50 outline-none",
71
+ align,
72
+ alignOffset,
73
+ side,
74
+ sideOffset,
75
+ children: /* @__PURE__ */ jsxDEV(Menu.Popup, {
76
+ "data-slot": "dropdown-menu-content",
77
+ className: cn("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-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:overflow-hidden 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),
78
+ ...props
79
+ }, void 0, false)
80
+ }, void 0, false)
81
+ }, void 0, false);
82
+ }
83
+ function DropdownMenuGroup(t0) {
84
+ const $ = c(4);
85
+ let props;
86
+ if ($[0] !== t0) {
87
+ ({
88
+ ...props
89
+ } = t0);
90
+ $[0] = t0;
91
+ $[1] = props;
92
+ } else {
93
+ props = $[1];
94
+ }
95
+ let t1;
96
+ if ($[2] !== props) {
97
+ t1 = /* @__PURE__ */ jsxDEV(Menu.Group, {
98
+ "data-slot": "dropdown-menu-group",
99
+ ...props
100
+ }, void 0, false);
101
+ $[2] = props;
102
+ $[3] = t1;
103
+ } else {
104
+ t1 = $[3];
105
+ }
106
+ return t1;
107
+ }
108
+ function DropdownMenuLabel(t0) {
109
+ const $ = c(10);
110
+ let className;
111
+ let inset;
112
+ let props;
113
+ if ($[0] !== t0) {
114
+ ({
115
+ className,
116
+ inset,
117
+ ...props
118
+ } = t0);
119
+ $[0] = t0;
120
+ $[1] = className;
121
+ $[2] = inset;
122
+ $[3] = props;
123
+ } else {
124
+ className = $[1];
125
+ inset = $[2];
126
+ props = $[3];
127
+ }
128
+ let t1;
129
+ if ($[4] !== className) {
130
+ t1 = cn("px-2 py-2 text-xs text-muted-foreground data-inset:ps-7", className);
131
+ $[4] = className;
132
+ $[5] = t1;
133
+ } else {
134
+ t1 = $[5];
135
+ }
136
+ let t2;
137
+ if ($[6] !== inset || $[7] !== props || $[8] !== t1) {
138
+ t2 = /* @__PURE__ */ jsxDEV(Menu.GroupLabel, {
139
+ "data-slot": "dropdown-menu-label",
140
+ "data-inset": inset,
141
+ className: t1,
142
+ ...props
143
+ }, void 0, false);
144
+ $[6] = inset;
145
+ $[7] = props;
146
+ $[8] = t1;
147
+ $[9] = t2;
148
+ } else {
149
+ t2 = $[9];
150
+ }
151
+ return t2;
152
+ }
153
+ function DropdownMenuItem({
154
+ className,
155
+ inset,
156
+ variant = "default",
157
+ ...props
158
+ }) {
159
+ return /* @__PURE__ */ jsxDEV(Menu.Item, {
160
+ "data-slot": "dropdown-menu-item",
161
+ "data-inset": inset,
162
+ "data-variant": variant,
163
+ className: cn("group/dropdown-menu-item relative flex cursor-default items-center gap-2 rounded-md px-2 py-2 text-xs outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive", className),
164
+ ...props
165
+ }, void 0, false);
166
+ }
167
+ function DropdownMenuCheckboxItem(t0) {
168
+ const $ = c(15);
169
+ let checked;
170
+ let children;
171
+ let className;
172
+ let inset;
173
+ let props;
174
+ if ($[0] !== t0) {
175
+ ({
176
+ className,
177
+ children,
178
+ checked,
179
+ inset,
180
+ ...props
181
+ } = t0);
182
+ $[0] = t0;
183
+ $[1] = checked;
184
+ $[2] = children;
185
+ $[3] = className;
186
+ $[4] = inset;
187
+ $[5] = props;
188
+ } else {
189
+ checked = $[1];
190
+ children = $[2];
191
+ className = $[3];
192
+ inset = $[4];
193
+ props = $[5];
194
+ }
195
+ let t1;
196
+ if ($[6] !== className) {
197
+ t1 = cn("relative flex 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 focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className);
198
+ $[6] = className;
199
+ $[7] = t1;
200
+ } else {
201
+ t1 = $[7];
202
+ }
203
+ let t2;
204
+ if ($[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
205
+ t2 = /* @__PURE__ */ jsxDEV("span", {
206
+ className: "pointer-events-none absolute end-2 flex items-center justify-center",
207
+ "data-slot": "dropdown-menu-checkbox-item-indicator",
208
+ children: /* @__PURE__ */ jsxDEV(Menu.CheckboxItemIndicator, {
209
+ children: /* @__PURE__ */ jsxDEV(HugeiconsIcon, {
210
+ icon: Tick02Icon,
211
+ strokeWidth: 2
212
+ }, void 0, false)
213
+ }, void 0, false)
214
+ }, void 0, false);
215
+ $[8] = t2;
216
+ } else {
217
+ t2 = $[8];
218
+ }
219
+ let t3;
220
+ if ($[9] !== checked || $[10] !== children || $[11] !== inset || $[12] !== props || $[13] !== t1) {
221
+ t3 = /* @__PURE__ */ jsxDEV(Menu.CheckboxItem, {
222
+ "data-slot": "dropdown-menu-checkbox-item",
223
+ "data-inset": inset,
224
+ className: t1,
225
+ checked,
226
+ ...props,
227
+ children: [t2, children]
228
+ }, void 0, true);
229
+ $[9] = checked;
230
+ $[10] = children;
231
+ $[11] = inset;
232
+ $[12] = props;
233
+ $[13] = t1;
234
+ $[14] = t3;
235
+ } else {
236
+ t3 = $[14];
237
+ }
238
+ return t3;
239
+ }
240
+ function DropdownMenuSeparator(t0) {
241
+ const $ = c(8);
242
+ let className;
243
+ let props;
244
+ if ($[0] !== t0) {
245
+ ({
246
+ className,
247
+ ...props
248
+ } = t0);
249
+ $[0] = t0;
250
+ $[1] = className;
251
+ $[2] = props;
252
+ } else {
253
+ className = $[1];
254
+ props = $[2];
255
+ }
256
+ let t1;
257
+ if ($[3] !== className) {
258
+ t1 = cn("-mx-1 h-px bg-border", className);
259
+ $[3] = className;
260
+ $[4] = t1;
261
+ } else {
262
+ t1 = $[4];
263
+ }
264
+ let t2;
265
+ if ($[5] !== props || $[6] !== t1) {
266
+ t2 = /* @__PURE__ */ jsxDEV(Menu.Separator, {
267
+ "data-slot": "dropdown-menu-separator",
268
+ className: t1,
269
+ ...props
270
+ }, void 0, false);
271
+ $[5] = props;
272
+ $[6] = t1;
273
+ $[7] = t2;
274
+ } else {
275
+ t2 = $[7];
276
+ }
277
+ return t2;
278
+ }
279
+
280
+ export { DropdownMenuTrigger as D, DropdownMenuLabel as a, DropdownMenuItem as b, DropdownMenuContent as c, DropdownMenu as d, DropdownMenuCheckboxItem as e, DropdownMenuSeparator as f, DropdownMenuGroup as g };
@@ -0,0 +1,98 @@
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 EmptyState = (t0) => {
6
+ const $ = c(19);
7
+ const {
8
+ action,
9
+ className,
10
+ description,
11
+ icon,
12
+ testId,
13
+ title
14
+ } = t0;
15
+ let t1;
16
+ if ($[0] !== className) {
17
+ t1 = cn("flex flex-col items-center justify-center gap-3 rounded-lg border border-dashed border-border px-6 py-14 text-center", className);
18
+ $[0] = className;
19
+ $[1] = t1;
20
+ } else {
21
+ t1 = $[1];
22
+ }
23
+ let t2;
24
+ if ($[2] !== icon) {
25
+ t2 = icon !== void 0 && /* @__PURE__ */ jsxDEV("span", {
26
+ className: "flex size-10 items-center justify-center rounded-lg bg-muted text-muted-foreground [&_svg]:size-5",
27
+ children: icon
28
+ }, void 0, false);
29
+ $[2] = icon;
30
+ $[3] = t2;
31
+ } else {
32
+ t2 = $[3];
33
+ }
34
+ let t3;
35
+ if ($[4] !== title) {
36
+ t3 = /* @__PURE__ */ jsxDEV("p", {
37
+ className: "text-sm font-medium text-foreground",
38
+ children: title
39
+ }, void 0, false);
40
+ $[4] = title;
41
+ $[5] = t3;
42
+ } else {
43
+ t3 = $[5];
44
+ }
45
+ let t4;
46
+ if ($[6] !== description) {
47
+ t4 = description !== void 0 && /* @__PURE__ */ jsxDEV("p", {
48
+ className: "max-w-sm text-sm text-muted-foreground",
49
+ children: description
50
+ }, void 0, false);
51
+ $[6] = description;
52
+ $[7] = t4;
53
+ } else {
54
+ t4 = $[7];
55
+ }
56
+ let t5;
57
+ if ($[8] !== t3 || $[9] !== t4) {
58
+ t5 = /* @__PURE__ */ jsxDEV("div", {
59
+ className: "flex flex-col gap-1",
60
+ children: [t3, t4]
61
+ }, void 0, true);
62
+ $[8] = t3;
63
+ $[9] = t4;
64
+ $[10] = t5;
65
+ } else {
66
+ t5 = $[10];
67
+ }
68
+ let t6;
69
+ if ($[11] !== action) {
70
+ t6 = action !== void 0 && /* @__PURE__ */ jsxDEV("div", {
71
+ className: "mt-1 flex items-center gap-2",
72
+ children: action
73
+ }, void 0, false);
74
+ $[11] = action;
75
+ $[12] = t6;
76
+ } else {
77
+ t6 = $[12];
78
+ }
79
+ let t7;
80
+ if ($[13] !== t1 || $[14] !== t2 || $[15] !== t5 || $[16] !== t6 || $[17] !== testId) {
81
+ t7 = /* @__PURE__ */ jsxDEV("div", {
82
+ className: t1,
83
+ "data-testid": testId,
84
+ children: [t2, t5, t6]
85
+ }, void 0, true);
86
+ $[13] = t1;
87
+ $[14] = t2;
88
+ $[15] = t5;
89
+ $[16] = t6;
90
+ $[17] = testId;
91
+ $[18] = t7;
92
+ } else {
93
+ t7 = $[18];
94
+ }
95
+ return t7;
96
+ };
97
+
98
+ export { EmptyState as E };