@burdenoff/microfe-bigconsole 2026.624.2 → 2026.625.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 (71) hide show
  1. package/dist/bigconsole/BigConsoleRoutes.js +93 -93
  2. package/dist/bigconsole/assistant/assistantApi.js +215 -0
  3. package/dist/bigconsole/assistant/assistantApi.js.map +1 -0
  4. package/dist/bigconsole/assistant/createSandboxAssistantTransport.js +119 -0
  5. package/dist/bigconsole/assistant/createSandboxAssistantTransport.js.map +1 -0
  6. package/dist/bigconsole/assistant/index.js +2 -0
  7. package/dist/bigconsole/assistant/pageContext.js +51 -0
  8. package/dist/bigconsole/assistant/pageContext.js.map +1 -0
  9. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +48 -48
  10. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +52 -52
  11. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +1 -1
  12. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +33 -33
  13. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +179 -179
  14. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
  15. package/dist/bigconsole/components/dashboard/WidgetPalette.js +38 -38
  16. package/dist/bigconsole/components/datasink/DataSinkTableViewer.js +32 -32
  17. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js +31 -31
  18. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +98 -98
  19. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
  20. package/dist/bigconsole/components/parser/ExportParserDialog.js +31 -31
  21. package/dist/bigconsole/components/parser/ImportParserDialog.js +162 -162
  22. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
  23. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +79 -79
  24. package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
  25. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
  26. package/dist/bigconsole/components/widgets/PropertiesPanel.js +307 -307
  27. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  28. package/dist/bigconsole/components/widgets/WidgetConfigDialog.js +222 -222
  29. package/dist/bigconsole/components/widgets/WidgetConfigDialog.js.map +1 -1
  30. package/dist/bigconsole/components/widgets/WidgetTypeSelector.js +23 -23
  31. package/dist/bigconsole/index.js +3 -0
  32. package/dist/bigconsole/pages/DashboardBuilderPage.js +74 -74
  33. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  34. package/dist/bigconsole/pages/DashboardViewPage.js +168 -189
  35. package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
  36. package/dist/bigconsole/pages/DashboardsPage.js +266 -310
  37. package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
  38. package/dist/bigconsole/pages/DataParsersPage.js +148 -194
  39. package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
  40. package/dist/bigconsole/pages/DataSinkBuilderPage.js +252 -246
  41. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  42. package/dist/bigconsole/pages/DataSinkViewPage.js +256 -231
  43. package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
  44. package/dist/bigconsole/pages/DataSinksPage.js +173 -219
  45. package/dist/bigconsole/pages/DataSinksPage.js.map +1 -1
  46. package/dist/bigconsole/pages/HomePage.js +125 -141
  47. package/dist/bigconsole/pages/HomePage.js.map +1 -1
  48. package/dist/bigconsole/pages/InsightsPage.js +159 -184
  49. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  50. package/dist/bigconsole/pages/ParserBuilderPage.js +401 -393
  51. package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
  52. package/dist/bigconsole/pages/ParserViewPage.js +220 -201
  53. package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
  54. package/dist/bigconsole/pages/PipelineBuilderPage.js +212 -206
  55. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  56. package/dist/bigconsole/pages/PipelineViewPage.js +204 -181
  57. package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
  58. package/dist/bigconsole/pages/PipelinesPage.js +107 -150
  59. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  60. package/dist/bigconsole/pages/SettingsPage.js +184 -171
  61. package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
  62. package/dist/bigconsole/pages/WidgetDemoPage.js +69 -81
  63. package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
  64. package/dist/bigconsole/pages/WorkflowViewPage.js +230 -216
  65. package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
  66. package/dist/bigconsole/pages/WorkflowsPage.js +106 -149
  67. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  68. package/dist/generated/wspace-operations.js +87 -36
  69. package/dist/generated/wspace-operations.js.map +1 -1
  70. package/dist/index.js +3 -1
  71. package/package.json +6 -2
@@ -2,12 +2,13 @@ import { useAppNavigate as e } from "../contexts/NavigationContext.js";
2
2
  import "../contexts/index.js";
3
3
  import { isNative as t, nativeImpact as n, nativeNotify as r } from "../../utils/nativeBridge.js";
4
4
  import { memo as i, useCallback as a, useEffect as o, useState as s } from "react";
5
- import { AlertCircle as c, ArrowRight as l, Ban as ee, CheckCircle as u, Clock as d, Eye as te, Loader2 as f, RefreshCw as ne, Sparkles as p, Trash2 as m, Wand2 as h, X as re, XCircle as g } from "lucide-react";
5
+ import { AlertCircle as c, ArrowRight as l, Ban as u, CheckCircle as d, Clock as f, Eye as ee, Loader2 as p, RefreshCw as te, Sparkles as m, Trash2 as ne, Wand2 as h, X as re, XCircle as g } from "lucide-react";
6
6
  import { gql as _ } from "@apollo/client";
7
7
  import { useMutation as v, useQuery as y } from "@apollo/client/react";
8
- import { jsx as b, jsxs as x } from "react/jsx-runtime";
8
+ import { AuroraBackground as b, EmphasisPanel as ie, GlassCard as ae, GradientText as oe, IllustratedEmptyState as se } from "@burdenoff/fe-libs/ui";
9
+ import { jsx as x, jsxs as S } from "react/jsx-runtime";
9
10
  //#region src/bigconsole/pages/InsightsPage.tsx
10
- var S = _`
11
+ var C = _`
11
12
  query ListPromptGenerations($status: PromptGenerationStatus, $first: Int) {
12
13
  listPromptGenerations(status: $status, first: $first) {
13
14
  edges {
@@ -36,7 +37,7 @@ var S = _`
36
37
  totalCount
37
38
  }
38
39
  }
39
- `, C = _`
40
+ `, ce = _`
40
41
  query GetPromptSuggestions($category: String, $limit: Int) {
41
42
  getPromptSuggestions(category: $category, limit: $limit) {
42
43
  id
@@ -47,7 +48,7 @@ var S = _`
47
48
  tags
48
49
  }
49
50
  }
50
- `, ie = _`
51
+ `, le = _`
51
52
  mutation GenerateDashboardFromPrompt($input: GenerateDashboardFromPromptInput!) {
52
53
  generateDashboardFromPrompt(input: $input) {
53
54
  id
@@ -55,24 +56,24 @@ var S = _`
55
56
  prompt
56
57
  }
57
58
  }
58
- `, ae = _`
59
+ `, w = _`
59
60
  mutation CreateDashboardFromGeneration($input: CreateDashboardFromGenerationInput!) {
60
61
  createDashboardFromGeneration(input: $input) {
61
62
  id
62
63
  }
63
64
  }
64
- `, oe = _`
65
+ `, ue = _`
65
66
  mutation DeletePromptGeneration($generationId: ID!) {
66
67
  deletePromptGeneration(generationId: $generationId)
67
68
  }
68
- `, se = _`
69
+ `, de = _`
69
70
  mutation CancelPromptGeneration($generationId: ID!) {
70
71
  cancelPromptGeneration(generationId: $generationId) {
71
72
  id
72
73
  status
73
74
  }
74
75
  }
75
- `, w = _`
76
+ `, fe = _`
76
77
  mutation RegenerateDashboard($input: RegenerateDashboardInput!) {
77
78
  regenerateDashboard(input: $input) {
78
79
  id
@@ -80,7 +81,7 @@ var S = _`
80
81
  prompt
81
82
  }
82
83
  }
83
- `, ce = _`
84
+ `, pe = _`
84
85
  mutation RefineGeneratedDashboard($input: RefineGeneratedDashboardInput!) {
85
86
  refineGeneratedDashboard(input: $input) {
86
87
  id
@@ -95,25 +96,25 @@ var S = _`
95
96
  ];
96
97
  function E(e) {
97
98
  switch (e) {
98
- case "COMPLETED": return /* @__PURE__ */ b(u, {
99
+ case "COMPLETED": return /* @__PURE__ */ x(d, {
99
100
  size: 16,
100
101
  className: "text-green-500"
101
102
  });
102
- case "FAILED": return /* @__PURE__ */ b(g, {
103
+ case "FAILED": return /* @__PURE__ */ x(g, {
103
104
  size: 16,
104
105
  className: "text-red-500"
105
106
  });
106
- case "CANCELLED": return /* @__PURE__ */ b(g, {
107
+ case "CANCELLED": return /* @__PURE__ */ x(g, {
107
108
  size: 16,
108
109
  className: "text-gray-400"
109
110
  });
110
111
  case "PENDING":
111
112
  case "PROCESSING":
112
- case "GENERATING": return /* @__PURE__ */ b(f, {
113
+ case "GENERATING": return /* @__PURE__ */ x(p, {
113
114
  size: 16,
114
115
  className: "text-blue-500 animate-spin"
115
116
  });
116
- default: return /* @__PURE__ */ b(d, {
117
+ default: return /* @__PURE__ */ x(f, {
117
118
  size: 16,
118
119
  className: "text-gray-400"
119
120
  });
@@ -131,17 +132,17 @@ function D(e) {
131
132
  }
132
133
  }
133
134
  var O = i(function() {
134
- let i = e(), [u, d] = s(""), [g, _] = s(!1), [O, k] = s(null), [A, j] = s(() => /* @__PURE__ */ new Set()), [M, N] = s(null), [P, F] = s(null), [I, L] = s(""), R = a((e) => {
135
+ let i = e(), [d, f] = s(""), [g, _] = s(!1), [O, k] = s(null), [A, j] = s(() => /* @__PURE__ */ new Set()), [M, N] = s(null), [P, F] = s(null), [I, L] = s(""), R = a((e) => {
135
136
  j((t) => new Set(t).add(e));
136
137
  }, []), z = a((e) => {
137
138
  j((t) => {
138
139
  let n = new Set(t);
139
140
  return n.delete(e), n;
140
141
  });
141
- }, []), { data: B, loading: le, refetch: V, startPolling: H, stopPolling: U } = y(S, {
142
+ }, []), { data: B, loading: me, refetch: V, startPolling: H, stopPolling: U } = y(C, {
142
143
  variables: { first: 20 },
143
144
  fetchPolicy: "cache-and-network"
144
- }), W = B?.listPromptGenerations?.edges?.some((e) => T.includes(e.node.status)) ?? !1, { data: ue } = y(C, { variables: { limit: 6 } }), [G] = v(ie), [K] = v(ae), [q] = v(oe), [J] = v(se), [Y] = v(w), [X] = v(ce), Z = B?.listPromptGenerations?.edges?.map((e) => e.node) || [], Q = ue?.getPromptSuggestions || [];
145
+ }), W = B?.listPromptGenerations?.edges?.some((e) => T.includes(e.node.status)) ?? !1, { data: he } = y(ce, { variables: { limit: 6 } }), [G] = v(le), [K] = v(w), [q] = v(ue), [J] = v(de), [Y] = v(fe), [X] = v(pe), Z = B?.listPromptGenerations?.edges?.map((e) => e.node) || [], Q = he?.getPromptSuggestions || [];
145
146
  o(() => (W || g ? H(2e3) : U(), () => U()), [
146
147
  W,
147
148
  g,
@@ -155,19 +156,19 @@ var O = i(function() {
155
156
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
156
157
  }, [M, P]);
157
158
  let $ = a(async () => {
158
- if (!(!u.trim() || g)) {
159
- if (u.length > 2e3) {
159
+ if (!(!d.trim() || g)) {
160
+ if (d.length > 2e3) {
160
161
  k("Prompt is too long (max 2000 characters).");
161
162
  return;
162
163
  }
163
164
  k(null), _(!0);
164
165
  try {
165
166
  await G({ variables: { input: {
166
- prompt: u.trim(),
167
+ prompt: d.trim(),
167
168
  styleType: "MODERN",
168
169
  layoutType: "GRID",
169
170
  maxWidgets: 8
170
- } } }), d(""), V();
171
+ } } }), f(""), V();
171
172
  } catch (e) {
172
173
  k(e instanceof Error ? e.message : "Failed to generate dashboard");
173
174
  } finally {
@@ -175,11 +176,11 @@ var O = i(function() {
175
176
  }
176
177
  }
177
178
  }, [
178
- u,
179
+ d,
179
180
  g,
180
181
  G,
181
182
  V
182
- ]), de = a(async (e) => {
183
+ ]), ge = a(async (e) => {
183
184
  k(null);
184
185
  try {
185
186
  let t = (await K({ variables: { input: { generationId: e } } })).data?.createDashboardFromGeneration?.id;
@@ -187,14 +188,14 @@ var O = i(function() {
187
188
  } catch (e) {
188
189
  k(e instanceof Error ? e.message : "Failed to create dashboard");
189
190
  }
190
- }, [K, i]), fe = a(async (e) => {
191
+ }, [K, i]), _e = a(async (e) => {
191
192
  k(null);
192
193
  try {
193
194
  await q({ variables: { generationId: e } }), t() && r("success"), V();
194
195
  } catch (e) {
195
196
  k(e instanceof Error ? e.message : "Failed to delete generation"), t() && r("error");
196
197
  }
197
- }, [q, V]), pe = a(async (e) => {
198
+ }, [q, V]), ve = a(async (e) => {
198
199
  k(null), R(e);
199
200
  try {
200
201
  await J({ variables: { generationId: e } }), V();
@@ -203,7 +204,7 @@ var O = i(function() {
203
204
  } finally {
204
205
  z(e);
205
206
  }
206
- }, [J, V]), me = a(async (e) => {
207
+ }, [J, V]), ye = a(async (e) => {
207
208
  k(null), R(e);
208
209
  try {
209
210
  await Y({ variables: { input: { generationId: e } } }), V();
@@ -212,7 +213,7 @@ var O = i(function() {
212
213
  } finally {
213
214
  z(e);
214
215
  }
215
- }, [Y, V]), he = a(async () => {
216
+ }, [Y, V]), be = a(async () => {
216
217
  if (!P || !I.trim()) return;
217
218
  let e = P.id;
218
219
  k(null), R(e);
@@ -231,60 +232,58 @@ var O = i(function() {
231
232
  I,
232
233
  X,
233
234
  V
234
- ]), ge = a((e) => {
235
- d(e);
235
+ ]), xe = a((e) => {
236
+ f(e);
236
237
  }, []);
237
- return /* @__PURE__ */ x("div", {
238
+ return /* @__PURE__ */ S("div", {
238
239
  style: {
239
240
  minHeight: "100vh",
240
241
  backgroundColor: "var(--color-bg-canvas)"
241
242
  },
242
243
  children: [
243
- /* @__PURE__ */ x("div", {
244
+ /* @__PURE__ */ S("div", {
244
245
  style: {
245
246
  padding: "var(--space-pagePadding)",
246
247
  maxWidth: 960,
247
248
  margin: "0 auto"
248
249
  },
249
250
  children: [
250
- /* @__PURE__ */ x("div", {
251
- style: { marginBottom: "var(--space-sectionGap)" },
252
- children: [/* @__PURE__ */ x("div", {
253
- style: {
254
- display: "flex",
255
- alignItems: "center",
256
- gap: "var(--space-iconGap)"
257
- },
258
- children: [/* @__PURE__ */ b(p, {
259
- size: 24,
260
- style: { color: "var(--color-action-primary-bg)" }
261
- }), /* @__PURE__ */ b("h1", {
251
+ /* @__PURE__ */ S("div", {
252
+ className: "relative mb-[var(--space-sectionGap)] overflow-hidden rounded-card border border-border-seam bg-gloss-card p-6",
253
+ children: [
254
+ /* @__PURE__ */ x(b, { intensity: "subtle" }),
255
+ /* @__PURE__ */ S("div", {
262
256
  style: {
263
- fontSize: "var(--font-size-heading-h4)",
264
- fontWeight: "var(--font-weight-bold)",
265
- color: "var(--color-text-primary)"
257
+ display: "flex",
258
+ alignItems: "center",
259
+ gap: "var(--space-iconGap)"
266
260
  },
267
- children: "AI Insights"
268
- })]
269
- }), /* @__PURE__ */ b("p", {
270
- style: {
271
- fontSize: "var(--font-size-body-md)",
272
- color: "var(--color-text-secondary)",
273
- marginTop: 4
274
- },
275
- children: "Generate dashboards from natural language prompts"
276
- })]
261
+ children: [/* @__PURE__ */ x(m, {
262
+ size: 24,
263
+ style: { color: "var(--color-action-primary-bg)" }
264
+ }), /* @__PURE__ */ x("h1", {
265
+ style: {
266
+ fontSize: "var(--font-size-heading-h4)",
267
+ fontWeight: "var(--font-weight-bold)",
268
+ color: "var(--color-text-primary)"
269
+ },
270
+ children: /* @__PURE__ */ x(oe, { children: "AI Insights" })
271
+ })]
272
+ }),
273
+ /* @__PURE__ */ x("p", {
274
+ style: {
275
+ fontSize: "var(--font-size-body-md)",
276
+ color: "var(--color-text-secondary)",
277
+ marginTop: 4
278
+ },
279
+ children: "Generate dashboards from natural language prompts"
280
+ })
281
+ ]
277
282
  }),
278
- /* @__PURE__ */ x("div", {
279
- style: {
280
- backgroundColor: "var(--color-bg-surface)",
281
- border: "1px solid var(--color-border)",
282
- borderRadius: "var(--radius-card)",
283
- padding: "var(--space-cardPadding)",
284
- marginBottom: "var(--space-sectionGap)"
285
- },
283
+ /* @__PURE__ */ S(ie, {
284
+ className: "mb-[var(--space-sectionGap)] p-[var(--space-cardPadding)]",
286
285
  children: [
287
- /* @__PURE__ */ b("label", {
286
+ /* @__PURE__ */ x("label", {
288
287
  htmlFor: "prompt-input",
289
288
  style: {
290
289
  display: "block",
@@ -295,10 +294,10 @@ var O = i(function() {
295
294
  },
296
295
  children: "Describe the dashboard you want to create"
297
296
  }),
298
- /* @__PURE__ */ b("textarea", {
297
+ /* @__PURE__ */ x("textarea", {
299
298
  id: "prompt-input",
300
- value: u,
301
- onChange: (e) => d(e.target.value),
299
+ value: d,
300
+ onChange: (e) => f(e.target.value),
302
301
  placeholder: "e.g., Create a sales dashboard showing revenue trends, top products, and regional performance",
303
302
  rows: 3,
304
303
  maxLength: 2e3,
@@ -317,7 +316,7 @@ var O = i(function() {
317
316
  e.key === "Enter" && (e.metaKey || e.ctrlKey) && $();
318
317
  }
319
318
  }),
320
- /* @__PURE__ */ x("div", {
319
+ /* @__PURE__ */ S("div", {
321
320
  style: {
322
321
  display: "flex",
323
322
  justifyContent: "space-between",
@@ -326,15 +325,15 @@ var O = i(function() {
326
325
  flexWrap: "wrap",
327
326
  gap: 8
328
327
  },
329
- children: [/* @__PURE__ */ b("span", {
328
+ children: [/* @__PURE__ */ x("span", {
330
329
  style: {
331
330
  fontSize: "var(--font-size-body-sm)",
332
331
  color: "var(--color-text-muted)"
333
332
  },
334
333
  children: "Press Ctrl+Enter to generate"
335
- }), /* @__PURE__ */ x("button", {
334
+ }), /* @__PURE__ */ S("button", {
336
335
  onClick: $,
337
- disabled: !u.trim() || g,
336
+ disabled: !d.trim() || g,
338
337
  style: {
339
338
  display: "flex",
340
339
  alignItems: "center",
@@ -346,18 +345,18 @@ var O = i(function() {
346
345
  fontWeight: "var(--font-weight-medium)",
347
346
  fontSize: "var(--font-size-body-sm)",
348
347
  border: "none",
349
- cursor: !u.trim() || g ? "not-allowed" : "pointer",
350
- opacity: !u.trim() || g ? .5 : 1
348
+ cursor: !d.trim() || g ? "not-allowed" : "pointer",
349
+ opacity: !d.trim() || g ? .5 : 1
351
350
  },
352
- children: [g ? /* @__PURE__ */ b(f, {
351
+ children: [g ? /* @__PURE__ */ x(p, {
353
352
  size: 16,
354
353
  className: "animate-spin"
355
- }) : /* @__PURE__ */ b(p, { size: 16 }), "Generate Dashboard"]
354
+ }) : /* @__PURE__ */ x(m, { size: 16 }), "Generate Dashboard"]
356
355
  })]
357
356
  })
358
357
  ]
359
358
  }),
360
- O && /* @__PURE__ */ x("div", {
359
+ O && /* @__PURE__ */ S("div", {
361
360
  style: {
362
361
  display: "flex",
363
362
  alignItems: "center",
@@ -371,14 +370,14 @@ var O = i(function() {
371
370
  color: "var(--color-status-error-text)",
372
371
  fontSize: "var(--font-size-body-sm)"
373
372
  },
374
- children: [/* @__PURE__ */ x("div", {
373
+ children: [/* @__PURE__ */ S("div", {
375
374
  style: {
376
375
  display: "flex",
377
376
  alignItems: "center",
378
377
  gap: 8
379
378
  },
380
- children: [/* @__PURE__ */ b(c, { size: 16 }), O]
381
- }), /* @__PURE__ */ b("button", {
379
+ children: [/* @__PURE__ */ x(c, { size: 16 }), O]
380
+ }), /* @__PURE__ */ x("button", {
382
381
  onClick: () => k(null),
383
382
  style: {
384
383
  background: "none",
@@ -392,9 +391,9 @@ var O = i(function() {
392
391
  children: "×"
393
392
  })]
394
393
  }),
395
- Q.length > 0 && /* @__PURE__ */ x("div", {
394
+ Q.length > 0 && /* @__PURE__ */ S("div", {
396
395
  style: { marginBottom: "var(--space-sectionGap)" },
397
- children: [/* @__PURE__ */ b("h2", {
396
+ children: [/* @__PURE__ */ x("h2", {
398
397
  style: {
399
398
  fontSize: "var(--font-size-body-md)",
400
399
  fontWeight: "var(--font-weight-semibold)",
@@ -402,14 +401,14 @@ var O = i(function() {
402
401
  marginBottom: 12
403
402
  },
404
403
  children: "Suggestions"
405
- }), /* @__PURE__ */ b("div", {
404
+ }), /* @__PURE__ */ x("div", {
406
405
  style: {
407
406
  display: "grid",
408
407
  gridTemplateColumns: "repeat(auto-fill, minmax(min(280px, 100%), 1fr))",
409
408
  gap: 12
410
409
  },
411
- children: Q.map((e) => /* @__PURE__ */ x("button", {
412
- onClick: () => ge(e.prompt),
410
+ children: Q.map((e) => /* @__PURE__ */ S("button", {
411
+ onClick: () => xe(e.prompt),
413
412
  style: {
414
413
  textAlign: "left",
415
414
  padding: 12,
@@ -419,7 +418,7 @@ var O = i(function() {
419
418
  cursor: "pointer"
420
419
  },
421
420
  children: [
422
- /* @__PURE__ */ b("div", {
421
+ /* @__PURE__ */ x("div", {
423
422
  style: {
424
423
  fontWeight: "var(--font-weight-medium)",
425
424
  fontSize: "var(--font-size-body-sm)",
@@ -428,7 +427,7 @@ var O = i(function() {
428
427
  },
429
428
  children: e.title
430
429
  }),
431
- /* @__PURE__ */ b("div", {
430
+ /* @__PURE__ */ x("div", {
432
431
  style: {
433
432
  fontSize: "var(--font-size-body-sm)",
434
433
  color: "var(--color-text-secondary)",
@@ -436,14 +435,14 @@ var O = i(function() {
436
435
  },
437
436
  children: e.exampleDescription || e.prompt.slice(0, 80)
438
437
  }),
439
- /* @__PURE__ */ b("div", {
438
+ /* @__PURE__ */ x("div", {
440
439
  style: {
441
440
  display: "flex",
442
441
  gap: 4,
443
442
  marginTop: 8,
444
443
  flexWrap: "wrap"
445
444
  },
446
- children: e.tags.slice(0, 3).map((e) => /* @__PURE__ */ b("span", {
445
+ children: e.tags.slice(0, 3).map((e) => /* @__PURE__ */ x("span", {
447
446
  style: {
448
447
  fontSize: 11,
449
448
  padding: "2px 6px",
@@ -458,7 +457,7 @@ var O = i(function() {
458
457
  }, e.id))
459
458
  })]
460
459
  }),
461
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("h2", {
460
+ /* @__PURE__ */ S("div", { children: [/* @__PURE__ */ x("h2", {
462
461
  style: {
463
462
  fontSize: "var(--font-size-body-md)",
464
463
  fontWeight: "var(--font-weight-semibold)",
@@ -466,63 +465,39 @@ var O = i(function() {
466
465
  marginBottom: 12
467
466
  },
468
467
  children: "Recent Generations"
469
- }), le && Z.length === 0 ? /* @__PURE__ */ x("div", {
468
+ }), me && Z.length === 0 ? /* @__PURE__ */ S("div", {
470
469
  style: {
471
470
  textAlign: "center",
472
471
  padding: 40,
473
472
  color: "var(--color-text-muted)"
474
473
  },
475
- children: [/* @__PURE__ */ b(f, {
474
+ children: [/* @__PURE__ */ x(p, {
476
475
  size: 24,
477
476
  className: "animate-spin",
478
477
  style: { margin: "0 auto 8px" }
479
- }), /* @__PURE__ */ b("p", { children: "Loading generations..." })]
480
- }) : Z.length === 0 && !g ? /* @__PURE__ */ x("div", {
481
- style: {
482
- textAlign: "center",
483
- padding: 40,
484
- backgroundColor: "var(--color-bg-surface)",
485
- border: "1px solid var(--color-border)",
486
- borderRadius: "var(--radius-card)"
487
- },
488
- children: [
489
- /* @__PURE__ */ b(p, {
490
- size: 32,
491
- style: {
492
- color: "var(--color-text-muted)",
493
- margin: "0 auto 8px"
494
- }
495
- }),
496
- /* @__PURE__ */ b("p", {
497
- style: {
498
- color: "var(--color-text-secondary)",
499
- fontWeight: "var(--font-weight-medium)"
500
- },
501
- children: "No generations yet"
502
- }),
503
- /* @__PURE__ */ b("p", {
504
- style: {
505
- color: "var(--color-text-muted)",
506
- fontSize: "var(--font-size-body-sm)",
507
- marginTop: 4
508
- },
509
- children: "Describe a dashboard above to get started"
510
- })
511
- ]
512
- }) : /* @__PURE__ */ x("div", {
478
+ }), /* @__PURE__ */ x("p", { children: "Loading generations..." })]
479
+ }) : Z.length === 0 && !g ? /* @__PURE__ */ x(ae, {
480
+ treatment: "insight",
481
+ className: "border-border-seam",
482
+ children: /* @__PURE__ */ x(se, {
483
+ illustration: "onboarding",
484
+ title: "No generations yet",
485
+ description: "Describe a dashboard above to get started"
486
+ })
487
+ }) : /* @__PURE__ */ S("div", {
513
488
  style: {
514
489
  display: "flex",
515
490
  flexDirection: "column",
516
491
  gap: 12
517
492
  },
518
- children: [g && !W && /* @__PURE__ */ b("div", {
493
+ children: [g && !W && /* @__PURE__ */ x("div", {
519
494
  style: {
520
495
  padding: 16,
521
496
  borderRadius: "var(--radius-card)",
522
497
  border: "1px solid var(--color-border)",
523
498
  backgroundColor: "var(--color-bg-surface)"
524
499
  },
525
- children: /* @__PURE__ */ x("div", {
500
+ children: /* @__PURE__ */ S("div", {
526
501
  style: {
527
502
  display: "flex",
528
503
  alignItems: "center",
@@ -531,7 +506,7 @@ var O = i(function() {
531
506
  },
532
507
  children: [
533
508
  E("PROCESSING"),
534
- /* @__PURE__ */ b("span", {
509
+ /* @__PURE__ */ x("span", {
535
510
  style: {
536
511
  fontSize: "var(--font-size-body-sm)",
537
512
  fontWeight: "var(--font-weight-medium)",
@@ -539,7 +514,7 @@ var O = i(function() {
539
514
  },
540
515
  children: "Generating..."
541
516
  }),
542
- /* @__PURE__ */ b("span", {
517
+ /* @__PURE__ */ x("span", {
543
518
  style: {
544
519
  fontSize: 11,
545
520
  color: "var(--color-text-muted)",
@@ -551,14 +526,14 @@ var O = i(function() {
551
526
  })
552
527
  ]
553
528
  })
554
- }), Z.map((e) => /* @__PURE__ */ b("div", {
529
+ }), Z.map((e) => /* @__PURE__ */ x("div", {
555
530
  style: {
556
531
  padding: 16,
557
532
  borderRadius: "var(--radius-card)",
558
533
  border: "1px solid var(--color-border)",
559
534
  backgroundColor: "var(--color-bg-surface)"
560
535
  },
561
- children: /* @__PURE__ */ x("div", {
536
+ children: /* @__PURE__ */ S("div", {
562
537
  style: {
563
538
  display: "flex",
564
539
  justifyContent: "space-between",
@@ -566,13 +541,13 @@ var O = i(function() {
566
541
  flexWrap: "wrap",
567
542
  gap: 8
568
543
  },
569
- children: [/* @__PURE__ */ x("div", {
544
+ children: [/* @__PURE__ */ S("div", {
570
545
  style: {
571
546
  flex: "1 1 200px",
572
547
  minWidth: 0
573
548
  },
574
549
  children: [
575
- /* @__PURE__ */ x("div", {
550
+ /* @__PURE__ */ S("div", {
576
551
  style: {
577
552
  display: "flex",
578
553
  alignItems: "center",
@@ -582,7 +557,7 @@ var O = i(function() {
582
557
  },
583
558
  children: [
584
559
  E(e.status),
585
- /* @__PURE__ */ b("span", {
560
+ /* @__PURE__ */ x("span", {
586
561
  style: {
587
562
  fontSize: "var(--font-size-body-sm)",
588
563
  fontWeight: "var(--font-weight-medium)",
@@ -594,7 +569,7 @@ var O = i(function() {
594
569
  },
595
570
  children: e.generatedSpec?.name || "Generating..."
596
571
  }),
597
- /* @__PURE__ */ b("span", {
572
+ /* @__PURE__ */ x("span", {
598
573
  style: {
599
574
  fontSize: 11,
600
575
  color: "var(--color-text-muted)",
@@ -606,7 +581,7 @@ var O = i(function() {
606
581
  })
607
582
  ]
608
583
  }),
609
- /* @__PURE__ */ b("p", {
584
+ /* @__PURE__ */ x("p", {
610
585
  style: {
611
586
  fontSize: "var(--font-size-body-sm)",
612
587
  color: "var(--color-text-secondary)",
@@ -614,7 +589,7 @@ var O = i(function() {
614
589
  },
615
590
  children: e.prompt.length > 120 ? e.prompt.slice(0, 120) + "..." : e.prompt
616
591
  }),
617
- e.generatedSpec && /* @__PURE__ */ x("div", {
592
+ e.generatedSpec && /* @__PURE__ */ S("div", {
618
593
  style: {
619
594
  fontSize: 11,
620
595
  color: "var(--color-text-muted)"
@@ -630,7 +605,7 @@ var O = i(function() {
630
605
  "% confidence"
631
606
  ]
632
607
  }),
633
- e.errorMessage && /* @__PURE__ */ x("div", {
608
+ e.errorMessage && /* @__PURE__ */ S("div", {
634
609
  style: {
635
610
  display: "flex",
636
611
  alignItems: "center",
@@ -639,19 +614,19 @@ var O = i(function() {
639
614
  fontSize: "var(--font-size-body-sm)",
640
615
  color: "var(--color-status-error-text)"
641
616
  },
642
- children: [/* @__PURE__ */ b(c, { size: 14 }), e.errorMessage]
617
+ children: [/* @__PURE__ */ x(c, { size: 14 }), e.errorMessage]
643
618
  })
644
619
  ]
645
- }), /* @__PURE__ */ x("div", {
620
+ }), /* @__PURE__ */ S("div", {
646
621
  style: {
647
622
  display: "flex",
648
623
  gap: 8,
649
624
  flexWrap: "wrap"
650
625
  },
651
626
  children: [
652
- T.includes(e.status) && /* @__PURE__ */ x("button", {
627
+ T.includes(e.status) && /* @__PURE__ */ S("button", {
653
628
  onClick: () => {
654
- n("medium"), pe(e.id);
629
+ n("medium"), ve(e.id);
655
630
  },
656
631
  disabled: A.has(e.id),
657
632
  title: "Cancel generation",
@@ -667,9 +642,9 @@ var O = i(function() {
667
642
  fontSize: "var(--font-size-body-sm)",
668
643
  cursor: A.has(e.id) ? "wait" : "pointer"
669
644
  },
670
- children: [/* @__PURE__ */ b(ee, { size: 14 }), " Cancel"]
645
+ children: [/* @__PURE__ */ x(u, { size: 14 }), " Cancel"]
671
646
  }),
672
- e.status === "COMPLETED" && e.generatedSpec && /* @__PURE__ */ x("button", {
647
+ e.status === "COMPLETED" && e.generatedSpec && /* @__PURE__ */ S("button", {
673
648
  onClick: () => N(e),
674
649
  title: "Preview proposed layout",
675
650
  style: {
@@ -684,9 +659,9 @@ var O = i(function() {
684
659
  fontSize: "var(--font-size-body-sm)",
685
660
  cursor: "pointer"
686
661
  },
687
- children: [/* @__PURE__ */ b(te, { size: 14 }), " Preview"]
662
+ children: [/* @__PURE__ */ x(ee, { size: 14 }), " Preview"]
688
663
  }),
689
- e.status === "COMPLETED" && e.generatedSpec && /* @__PURE__ */ x("button", {
664
+ e.status === "COMPLETED" && e.generatedSpec && /* @__PURE__ */ S("button", {
690
665
  onClick: () => {
691
666
  F(e), L("");
692
667
  },
@@ -703,11 +678,11 @@ var O = i(function() {
703
678
  fontSize: "var(--font-size-body-sm)",
704
679
  cursor: "pointer"
705
680
  },
706
- children: [/* @__PURE__ */ b(h, { size: 14 }), " Refine"]
681
+ children: [/* @__PURE__ */ x(h, { size: 14 }), " Refine"]
707
682
  }),
708
- (e.status === "COMPLETED" || e.status === "FAILED" || e.status === "CANCELLED") && /* @__PURE__ */ x("button", {
683
+ (e.status === "COMPLETED" || e.status === "FAILED" || e.status === "CANCELLED") && /* @__PURE__ */ S("button", {
709
684
  onClick: () => {
710
- n("medium"), me(e.id);
685
+ n("medium"), ye(e.id);
711
686
  },
712
687
  disabled: A.has(e.id),
713
688
  title: "Regenerate with the same prompt",
@@ -723,13 +698,13 @@ var O = i(function() {
723
698
  fontSize: "var(--font-size-body-sm)",
724
699
  cursor: A.has(e.id) ? "wait" : "pointer"
725
700
  },
726
- children: [/* @__PURE__ */ b(ne, {
701
+ children: [/* @__PURE__ */ x(te, {
727
702
  size: 14,
728
703
  className: A.has(e.id) ? "animate-spin" : ""
729
704
  }), " Regenerate"]
730
705
  }),
731
- e.status === "COMPLETED" && !e.dashboardId && /* @__PURE__ */ x("button", {
732
- onClick: () => de(e.id),
706
+ e.status === "COMPLETED" && !e.dashboardId && /* @__PURE__ */ S("button", {
707
+ onClick: () => ge(e.id),
733
708
  style: {
734
709
  display: "flex",
735
710
  alignItems: "center",
@@ -742,9 +717,9 @@ var O = i(function() {
742
717
  fontSize: "var(--font-size-body-sm)",
743
718
  cursor: "pointer"
744
719
  },
745
- children: ["Create ", /* @__PURE__ */ b(l, { size: 14 })]
720
+ children: ["Create ", /* @__PURE__ */ x(l, { size: 14 })]
746
721
  }),
747
- e.dashboardId && /* @__PURE__ */ x("button", {
722
+ e.dashboardId && /* @__PURE__ */ S("button", {
748
723
  onClick: () => i(`/dashboards/${e.dashboardId}`),
749
724
  style: {
750
725
  display: "flex",
@@ -758,11 +733,11 @@ var O = i(function() {
758
733
  fontSize: "var(--font-size-body-sm)",
759
734
  cursor: "pointer"
760
735
  },
761
- children: ["View Dashboard ", /* @__PURE__ */ b(l, { size: 14 })]
736
+ children: ["View Dashboard ", /* @__PURE__ */ x(l, { size: 14 })]
762
737
  }),
763
- /* @__PURE__ */ b("button", {
738
+ /* @__PURE__ */ x("button", {
764
739
  onClick: () => {
765
- n("medium"), fe(e.id);
740
+ n("medium"), _e(e.id);
766
741
  },
767
742
  title: "Delete generation",
768
743
  style: {
@@ -775,7 +750,7 @@ var O = i(function() {
775
750
  color: "var(--color-text-muted)",
776
751
  cursor: "pointer"
777
752
  },
778
- children: /* @__PURE__ */ b(m, { size: 14 })
753
+ children: /* @__PURE__ */ x(ne, { size: 14 })
779
754
  })
780
755
  ]
781
756
  })]
@@ -784,7 +759,7 @@ var O = i(function() {
784
759
  })] })
785
760
  ]
786
761
  }),
787
- M?.generatedSpec && /* @__PURE__ */ b("div", {
762
+ M?.generatedSpec && /* @__PURE__ */ x("div", {
788
763
  role: "dialog",
789
764
  "aria-modal": "true",
790
765
  "aria-label": "Generation preview",
@@ -799,7 +774,7 @@ var O = i(function() {
799
774
  justifyContent: "center",
800
775
  padding: "var(--space-pagePadding)"
801
776
  },
802
- children: /* @__PURE__ */ x("div", {
777
+ children: /* @__PURE__ */ S("div", {
803
778
  onClick: (e) => e.stopPropagation(),
804
779
  style: {
805
780
  width: "min(640px, 100%)",
@@ -812,7 +787,7 @@ var O = i(function() {
812
787
  padding: "var(--space-cardPadding)"
813
788
  },
814
789
  children: [
815
- /* @__PURE__ */ x("div", {
790
+ /* @__PURE__ */ S("div", {
816
791
  style: {
817
792
  display: "flex",
818
793
  justifyContent: "space-between",
@@ -820,15 +795,15 @@ var O = i(function() {
820
795
  gap: 8,
821
796
  marginBottom: "var(--space-controlGap)"
822
797
  },
823
- children: [/* @__PURE__ */ x("div", {
798
+ children: [/* @__PURE__ */ S("div", {
824
799
  style: { minWidth: 0 },
825
- children: [/* @__PURE__ */ b("h3", {
800
+ children: [/* @__PURE__ */ x("h3", {
826
801
  style: {
827
802
  fontSize: "var(--font-size-heading-h4)",
828
803
  fontWeight: "var(--font-weight-semibold)"
829
804
  },
830
805
  children: M.generatedSpec.name
831
- }), M.generatedSpec.description && /* @__PURE__ */ b("p", {
806
+ }), M.generatedSpec.description && /* @__PURE__ */ x("p", {
832
807
  style: {
833
808
  fontSize: "var(--font-size-body-sm)",
834
809
  color: "var(--color-text-muted)",
@@ -836,7 +811,7 @@ var O = i(function() {
836
811
  },
837
812
  children: M.generatedSpec.description
838
813
  })]
839
- }), /* @__PURE__ */ b("button", {
814
+ }), /* @__PURE__ */ x("button", {
840
815
  onClick: () => N(null),
841
816
  "aria-label": "Close preview",
842
817
  style: {
@@ -848,10 +823,10 @@ var O = i(function() {
848
823
  color: "var(--color-text-muted)",
849
824
  cursor: "pointer"
850
825
  },
851
- children: /* @__PURE__ */ b(re, { size: 18 })
826
+ children: /* @__PURE__ */ x(re, { size: 18 })
852
827
  })]
853
828
  }),
854
- /* @__PURE__ */ x("div", {
829
+ /* @__PURE__ */ S("div", {
855
830
  style: {
856
831
  fontSize: 11,
857
832
  color: "var(--color-text-muted)",
@@ -868,9 +843,9 @@ var O = i(function() {
868
843
  "% confidence"
869
844
  ]
870
845
  }),
871
- M.generatedSpec.pages.map((e, t) => /* @__PURE__ */ x("div", {
846
+ M.generatedSpec.pages.map((e, t) => /* @__PURE__ */ S("div", {
872
847
  style: { marginBottom: "var(--space-controlGap)" },
873
- children: [/* @__PURE__ */ b("div", {
848
+ children: [/* @__PURE__ */ x("div", {
874
849
  style: {
875
850
  fontSize: "var(--font-size-body-sm)",
876
851
  fontWeight: "var(--font-weight-medium)",
@@ -878,13 +853,13 @@ var O = i(function() {
878
853
  marginBottom: 4
879
854
  },
880
855
  children: e.name
881
- }), /* @__PURE__ */ b("div", {
856
+ }), /* @__PURE__ */ x("div", {
882
857
  style: {
883
858
  display: "flex",
884
859
  flexWrap: "wrap",
885
860
  gap: 6
886
861
  },
887
- children: e.widgets.map((e, t) => /* @__PURE__ */ x("span", {
862
+ children: e.widgets.map((e, t) => /* @__PURE__ */ S("span", {
888
863
  style: {
889
864
  fontSize: 11,
890
865
  padding: "3px 8px",
@@ -903,7 +878,7 @@ var O = i(function() {
903
878
  ]
904
879
  })
905
880
  }),
906
- P && /* @__PURE__ */ b("div", {
881
+ P && /* @__PURE__ */ x("div", {
907
882
  role: "dialog",
908
883
  "aria-modal": "true",
909
884
  "aria-label": "Refine generation",
@@ -918,7 +893,7 @@ var O = i(function() {
918
893
  justifyContent: "center",
919
894
  padding: "var(--space-pagePadding)"
920
895
  },
921
- children: /* @__PURE__ */ x("div", {
896
+ children: /* @__PURE__ */ S("div", {
922
897
  onClick: (e) => e.stopPropagation(),
923
898
  style: {
924
899
  width: "min(520px, 100%)",
@@ -929,7 +904,7 @@ var O = i(function() {
929
904
  padding: "var(--space-cardPadding)"
930
905
  },
931
906
  children: [
932
- /* @__PURE__ */ b("h3", {
907
+ /* @__PURE__ */ x("h3", {
933
908
  style: {
934
909
  fontSize: "var(--font-size-heading-h4)",
935
910
  fontWeight: "var(--font-weight-semibold)",
@@ -937,7 +912,7 @@ var O = i(function() {
937
912
  },
938
913
  children: "Refine dashboard"
939
914
  }),
940
- /* @__PURE__ */ b("p", {
915
+ /* @__PURE__ */ x("p", {
941
916
  style: {
942
917
  fontSize: "var(--font-size-body-sm)",
943
918
  color: "var(--color-text-muted)",
@@ -945,7 +920,7 @@ var O = i(function() {
945
920
  },
946
921
  children: "Describe what to change — the AI keeps the existing spec and applies your instructions."
947
922
  }),
948
- /* @__PURE__ */ b("textarea", {
923
+ /* @__PURE__ */ x("textarea", {
949
924
  value: I,
950
925
  onChange: (e) => L(e.target.value),
951
926
  maxLength: 2e3,
@@ -963,14 +938,14 @@ var O = i(function() {
963
938
  marginBottom: "var(--space-controlGap)"
964
939
  }
965
940
  }),
966
- /* @__PURE__ */ x("div", {
941
+ /* @__PURE__ */ S("div", {
967
942
  style: {
968
943
  display: "flex",
969
944
  justifyContent: "flex-end",
970
945
  gap: 8,
971
946
  flexWrap: "wrap"
972
947
  },
973
- children: [/* @__PURE__ */ b("button", {
948
+ children: [/* @__PURE__ */ x("button", {
974
949
  onClick: () => F(null),
975
950
  style: {
976
951
  padding: "8px 16px",
@@ -982,8 +957,8 @@ var O = i(function() {
982
957
  cursor: "pointer"
983
958
  },
984
959
  children: "Cancel"
985
- }), /* @__PURE__ */ x("button", {
986
- onClick: () => void he(),
960
+ }), /* @__PURE__ */ S("button", {
961
+ onClick: () => void be(),
987
962
  disabled: !I.trim() || A.has(P.id),
988
963
  style: {
989
964
  display: "flex",
@@ -998,10 +973,10 @@ var O = i(function() {
998
973
  cursor: !I.trim() || A.has(P.id) ? "not-allowed" : "pointer",
999
974
  opacity: I.trim() ? 1 : .6
1000
975
  },
1001
- children: [A.has(P.id) ? /* @__PURE__ */ b(f, {
976
+ children: [A.has(P.id) ? /* @__PURE__ */ x(p, {
1002
977
  size: 14,
1003
978
  className: "animate-spin"
1004
- }) : /* @__PURE__ */ b(h, { size: 14 }), "Apply refinement"]
979
+ }) : /* @__PURE__ */ x(h, { size: 14 }), "Apply refinement"]
1005
980
  })]
1006
981
  })
1007
982
  ]