@burdenoff/microfe-bigconsole 2026.924.3 → 2026.925.2

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 (27) hide show
  1. package/dist/bigconsole/BigConsoleRoot.js +94 -84
  2. package/dist/bigconsole/BigConsoleRoot.js.map +1 -1
  3. package/dist/bigconsole/assistant/previewController.js +6 -6
  4. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +142 -145
  5. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
  6. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +73 -61
  7. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
  8. package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js +5 -5
  9. package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js.map +1 -1
  10. package/dist/bigconsole/components/embed/types.js.map +1 -1
  11. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +4 -4
  12. package/dist/bigconsole/components/preview/AiPreviewPanel.js +5 -5
  13. package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js +2 -4
  14. package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js.map +1 -1
  15. package/dist/bigconsole/hooks/useDataSinkOperations.js +92 -89
  16. package/dist/bigconsole/hooks/useDataSinkOperations.js.map +1 -1
  17. package/dist/bigconsole/hooks/useImportDataSink.js +96 -91
  18. package/dist/bigconsole/hooks/useImportDataSink.js.map +1 -1
  19. package/dist/bigconsole/pages/DataSinkBuilderPage.js +79 -77
  20. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  21. package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +36 -35
  22. package/dist/bigconsole/providers/BigConsoleQuotaProvider.js.map +1 -1
  23. package/dist/bigconsole/utils/quota.js +51 -23
  24. package/dist/bigconsole/utils/quota.js.map +1 -1
  25. package/dist/generated/wspace-operations.js +0 -1
  26. package/dist/generated/wspace-operations.js.map +1 -1
  27. package/package.json +1 -1
@@ -1,25 +1,26 @@
1
1
  import { useAppNavigate as e } from "../contexts/NavigationContext.js";
2
2
  import "../contexts/index.js";
3
- import { Section as t, SectionStack as n } from "../components/common/Section.js";
3
+ import { reportBigConsoleQuotaError as t } from "../utils/quota.js";
4
+ import { Section as n, SectionStack as r } from "../components/common/Section.js";
4
5
  import "../components/common/index.js";
5
- import ee from "../hooks/useDataSinkOperations.js";
6
- import { BIGCONSOLE_PERMISSIONS as r } from "../../constants/permissions.js";
7
- import { isNative as te, nativeCopyText as ne, nativeToast as i } from "../../utils/nativeBridge.js";
6
+ import i from "../hooks/useDataSinkOperations.js";
7
+ import { BIGCONSOLE_PERMISSIONS as a } from "../../constants/permissions.js";
8
+ import { isNative as ee, nativeCopyText as te, nativeToast as ne } from "../../utils/nativeBridge.js";
8
9
  import re from "../components/datasink/CacheTTLSelector.js";
9
- import ie from "../components/datasink/RefreshTypeSelector.js";
10
- import { memo as a, useCallback as o, useEffect as s, useMemo as ae, useState as c } from "react";
11
- import { useParams as oe } from "react-router";
12
- import { AccessDenied as se, PermissionButton as l } from "@burdenoff/fe-libs/shared/components";
13
- import { usePermissions as u } from "@burdenoff/fe-libs/shared/providers/shell";
14
- import { AlertCircle as d, ArrowLeft as f, Check as ce, Copy as le, Database as p, Eye as m, ListChecks as h, Loader2 as g, Save as ue, Settings as de } from "lucide-react";
15
- import { Button as _, IllustratedEmptyState as v, Input as y, Label as b, PagePurpose as fe, Textarea as x } from "@burdenoff/fe-libs/ui";
10
+ import o from "../components/datasink/RefreshTypeSelector.js";
11
+ import { memo as s, useCallback as c, useEffect as l, useMemo as ie, useState as u } from "react";
12
+ import { useParams as ae } from "react-router";
13
+ import { AccessDenied as oe, PermissionButton as se } from "@burdenoff/fe-libs/shared/components";
14
+ import { usePermissions as ce } from "@burdenoff/fe-libs/shared/providers/shell";
15
+ import { AlertCircle as d, ArrowLeft as f, Check as le, Copy as ue, Database as p, Eye as m, ListChecks as h, Loader2 as g, Save as _, Settings as de } from "lucide-react";
16
+ import { Button as v, IllustratedEmptyState as fe, Input as y, Label as b, PagePurpose as pe, Textarea as x } from "@burdenoff/fe-libs/ui";
16
17
  import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
17
- import { useI18n as pe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
18
+ import { useI18n as me } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
18
19
  //#region src/bigconsole/pages/DataSinkBuilderPage.tsx
19
- function me(e) {
20
+ function he(e) {
20
21
  return e.toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "").substring(0, 64);
21
22
  }
22
- function he(e, t) {
23
+ function ge(e, t) {
23
24
  let n = {};
24
25
  if (e.name.trim() ? e.name.length < 2 ? n.name = t("bigconsole.dataSinks.builder.validation.nameMinLength", "Name must be at least 2 characters") : e.name.length > 100 && (n.name = t("bigconsole.dataSinks.builder.validation.nameMaxLength", "Name must be less than 100 characters")) : n.name = t("bigconsole.dataSinks.builder.validation.nameRequired", "Name is required"), e.key.trim() ? /^[a-z0-9_]+$/.test(e.key) ? e.key.length > 64 && (n.key = t("bigconsole.dataSinks.builder.validation.keyMaxLength", "Key must be less than 64 characters")) : n.key = t("bigconsole.dataSinks.builder.validation.keyFormat", "Key can only contain lowercase letters, numbers, and underscores") : n.key = t("bigconsole.dataSinks.builder.validation.keyRequired", "Key is required"), e.data && e.data.trim()) try {
25
26
  JSON.parse(e.data);
@@ -28,25 +29,25 @@ function he(e, t) {
28
29
  }
29
30
  return n;
30
31
  }
31
- var T = a(function() {
32
- let { dataSinkId: a } = oe(), T = e(), { t: E } = pe(), D = a !== "new" && !!a, { hasPermission: ge, isLoading: _e } = u(), ve = ge(r.DATASINK_READ), ye = D ? r.DATASINK_UPDATE : r.DATASINK_CREATE, [O, k] = c({
32
+ var T = s(function() {
33
+ let { dataSinkId: s } = ae(), T = e(), { t: E } = me(), D = s !== "new" && !!s, { hasPermission: _e, isLoading: ve } = ce(), ye = _e(a.DATASINK_READ), be = D ? a.DATASINK_UPDATE : a.DATASINK_CREATE, [O, k] = u({
33
34
  name: "",
34
35
  key: "",
35
36
  description: "",
36
37
  ttl: 300,
37
38
  refresh: { type: "manual" },
38
39
  data: "{}"
39
- }), [A, j] = c({}), [M, N] = c(!1), [P, F] = c(!1), [I, L] = c(null), [be, R] = c(!1), [z, B] = c(!1), [V, H] = c(null), [U, W] = c(null), { loading: xe, error: G, dataSinks: Se, fetchDataSink: K, createDataSink: q, updateDataSink: J, getDataSinkData: Y } = ee({ skipFetch: !0 }), X = D ? Se.find((e) => e.id === a) : null;
40
- s(() => {
41
- D && a && !X && K(a);
40
+ }), [A, j] = u({}), [M, N] = u(!1), [P, F] = u(!1), [I, L] = u(null), [xe, R] = u(!1), [z, B] = u(!1), [V, H] = u(null), [U, W] = u(null), { loading: Se, error: G, dataSinks: Ce, fetchDataSink: K, createDataSink: q, updateDataSink: J, getDataSinkData: Y } = i({ skipFetch: !0 }), X = D ? Ce.find((e) => e.id === s) : null;
41
+ l(() => {
42
+ D && s && !X && K(s);
42
43
  }, [
43
44
  D,
44
- a,
45
+ s,
45
46
  X,
46
47
  K
47
48
  ]);
48
- let [Z, Ce] = c(!1);
49
- s(() => {
49
+ let [Z, we] = u(!1);
50
+ l(() => {
50
51
  if (X && !Z) {
51
52
  let e = "";
52
53
  if (X.data) try {
@@ -70,20 +71,20 @@ var T = a(function() {
70
71
  } : void 0
71
72
  } : { type: "manual" },
72
73
  data: e
73
- }), N(!0), Ce(!0), j({});
74
+ }), N(!0), we(!0), j({});
74
75
  }
75
76
  }, [X, Z]);
76
- let we = o((e) => {
77
+ let Te = c((e) => {
77
78
  let t = e.target.value;
78
79
  k((e) => ({
79
80
  ...e,
80
81
  name: t,
81
- key: M ? e.key : me(t)
82
+ key: M ? e.key : he(t)
82
83
  })), j((e) => ({
83
84
  ...e,
84
85
  name: void 0
85
86
  }));
86
- }, [M]), Te = o((e) => {
87
+ }, [M]), Ee = c((e) => {
87
88
  let t = e.target.value.toLowerCase().replace(/[^a-z0-9_]/g, "");
88
89
  k((e) => ({
89
90
  ...e,
@@ -92,22 +93,22 @@ var T = a(function() {
92
93
  ...e,
93
94
  key: void 0
94
95
  }));
95
- }, []), Ee = o((e) => {
96
+ }, []), De = c((e) => {
96
97
  k((t) => ({
97
98
  ...t,
98
99
  description: e.target.value
99
100
  }));
100
- }, []), De = o((e) => {
101
+ }, []), Oe = c((e) => {
101
102
  k((t) => ({
102
103
  ...t,
103
104
  ttl: e || 0
104
105
  }));
105
- }, []), Oe = o((e) => {
106
+ }, []), Q = c((e) => {
106
107
  k((t) => ({
107
108
  ...t,
108
109
  refresh: e
109
110
  }));
110
- }, []), Q = o((e) => {
111
+ }, []), ke = c((e) => {
111
112
  k((t) => ({
112
113
  ...t,
113
114
  data: e.target.value
@@ -115,7 +116,7 @@ var T = a(function() {
115
116
  ...e,
116
117
  data: void 0
117
118
  }));
118
- }, []), ke = o(() => {
119
+ }, []), Ae = c(() => {
119
120
  try {
120
121
  let e = JSON.parse(O.data);
121
122
  k((t) => ({
@@ -131,11 +132,11 @@ var T = a(function() {
131
132
  data: E("bigconsole.dataSinks.builder.validation.invalidJson", "Invalid JSON format")
132
133
  }));
133
134
  }
134
- }, [O.data, E]), Ae = o(async () => {
135
- O.key && (await ne(O.key), R(!0), te() && i(E("bigconsole.dataSinks.builder.toolbar.keyCopied", "Key copied")), setTimeout(() => R(!1), 2e3));
136
- }, [O.key, E]), $ = o(() => {
135
+ }, [O.data, E]), je = c(async () => {
136
+ O.key && (await te(O.key), R(!0), ee() && ne(E("bigconsole.dataSinks.builder.toolbar.keyCopied", "Key copied")), setTimeout(() => R(!1), 2e3));
137
+ }, [O.key, E]), $ = c(() => {
137
138
  T("/datasinks");
138
- }, [T]), je = o(async () => {
139
+ }, [T]), Me = c(async () => {
139
140
  if (!(!D || !X)) {
140
141
  B(!0), W(null);
141
142
  try {
@@ -152,11 +153,11 @@ var T = a(function() {
152
153
  X,
153
154
  Y,
154
155
  E
155
- ]), Me = o(async (e) => {
156
+ ]), Ne = c(async (e) => {
156
157
  e.preventDefault(), L(null);
157
- let t = he(O, E);
158
- if (Object.keys(t).length > 0) {
159
- j(t);
158
+ let n = ge(O, E);
159
+ if (Object.keys(n).length > 0) {
160
+ j(n);
160
161
  return;
161
162
  }
162
163
  F(!0);
@@ -197,6 +198,7 @@ var T = a(function() {
197
198
  })) throw Error(E("bigconsole.dataSinks.builder.errors.createFailed", "Failed to create DataSink"));
198
199
  T("/datasinks");
199
200
  } catch (e) {
201
+ if (t(e)) return;
200
202
  L(e instanceof Error ? e.message : E("bigconsole.dataSinks.builder.errors.saveFailed", "Failed to save DataSink"));
201
203
  } finally {
202
204
  F(!1);
@@ -209,7 +211,7 @@ var T = a(function() {
209
211
  J,
210
212
  T,
211
213
  E
212
- ]), Ne = ae(() => {
214
+ ]), Pe = ie(() => {
213
215
  let e = O.name.trim().length >= 2, t = O.key.trim().length > 0, n = !0;
214
216
  if (O.data && O.data.trim()) try {
215
217
  JSON.parse(O.data);
@@ -222,25 +224,25 @@ var T = a(function() {
222
224
  O.key,
223
225
  O.data
224
226
  ]);
225
- return xe && D ? /* @__PURE__ */ C("div", {
227
+ return Se && D ? /* @__PURE__ */ C("div", {
226
228
  className: "flex min-h-[240px] items-center justify-center p-card-padding",
227
229
  children: /* @__PURE__ */ C(g, { className: "h-icon-lg w-icon-lg animate-spin text-text-secondary" })
228
230
  }) : G ? /* @__PURE__ */ C("div", {
229
231
  className: "mx-auto w-full max-w-3xl p-card-padding",
230
- children: /* @__PURE__ */ C(t, {
232
+ children: /* @__PURE__ */ C(n, {
231
233
  tone: "danger",
232
234
  headingLevel: 2,
233
235
  title: E("bigconsole.dataSinks.builder.errors.loadFailed", "Failed to load DataSink"),
234
236
  description: G.message,
235
237
  icon: /* @__PURE__ */ C(d, { className: "h-icon-sm w-icon-sm" }),
236
- actions: /* @__PURE__ */ w(_, {
238
+ actions: /* @__PURE__ */ w(v, {
237
239
  onClick: $,
238
240
  variant: "secondary",
239
241
  size: "sm",
240
242
  children: [/* @__PURE__ */ C(f, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.header.backToDataSinks", "Back to DataSinks")]
241
243
  })
242
244
  })
243
- }) : D && !_e && !ve ? /* @__PURE__ */ C(se, {
245
+ }) : D && !ve && !ye ? /* @__PURE__ */ C(oe, {
244
246
  title: E("bigconsole.dataSinks.builder.accessDenied.title", "Access Denied"),
245
247
  description: E("bigconsole.dataSinks.builder.accessDenied.description", "You don't have permission to view this data sink.")
246
248
  }) : /* @__PURE__ */ w("div", {
@@ -249,7 +251,7 @@ var T = a(function() {
249
251
  /* @__PURE__ */ w("header", {
250
252
  className: "mb-form-gap",
251
253
  children: [
252
- /* @__PURE__ */ w(_, {
254
+ /* @__PURE__ */ w(v, {
253
255
  onClick: $,
254
256
  variant: "ghost",
255
257
  size: "sm",
@@ -266,11 +268,11 @@ var T = a(function() {
266
268
  })
267
269
  ]
268
270
  }),
269
- /* @__PURE__ */ C(fe, {
271
+ /* @__PURE__ */ C(pe, {
270
272
  className: "mb-section-gap",
271
273
  children: E("bigconsole.dataSinks.builder.header.purpose", "A data sink is the named, structured store your dashboards read from. Give it a unique key, configure how long data is cached and how it refreshes, then point a workflow at that key to push data in. Get the basics right here and everything downstream connects to it.")
272
274
  }),
273
- I && /* @__PURE__ */ C(t, {
275
+ I && /* @__PURE__ */ C(n, {
274
276
  tone: "danger",
275
277
  headingLevel: 2,
276
278
  title: E("bigconsole.dataSinks.builder.errors.saveFailed", "Failed to save DataSink"),
@@ -279,9 +281,9 @@ var T = a(function() {
279
281
  className: "mb-section-gap"
280
282
  }),
281
283
  /* @__PURE__ */ C("form", {
282
- onSubmit: Me,
283
- children: /* @__PURE__ */ w(n, { children: [
284
- /* @__PURE__ */ C(t, {
284
+ onSubmit: Ne,
285
+ children: /* @__PURE__ */ w(r, { children: [
286
+ /* @__PURE__ */ C(n, {
285
287
  emphasis: "primary",
286
288
  headingLevel: 2,
287
289
  title: E("bigconsole.dataSinks.builder.basicInfo.title", "Basic Information"),
@@ -307,7 +309,7 @@ var T = a(function() {
307
309
  id: "name",
308
310
  type: "text",
309
311
  value: O.name,
310
- onChange: we,
312
+ onChange: Te,
311
313
  placeholder: E("bigconsole.dataSinks.builder.basicInfo.namePlaceholder", "e.g., Sales Metrics"),
312
314
  className: A.name ? "border-status-error-border" : ""
313
315
  }),
@@ -337,17 +339,17 @@ var T = a(function() {
337
339
  id: "key",
338
340
  type: "text",
339
341
  value: O.key,
340
- onChange: Te,
342
+ onChange: Ee,
341
343
  placeholder: E("bigconsole.dataSinks.builder.basicInfo.keyPlaceholder", "sales_metrics"),
342
344
  disabled: D,
343
345
  className: `font-mono flex-1 ${A.key ? "border-status-error-border" : ""}`
344
- }), O.key && /* @__PURE__ */ C(_, {
346
+ }), O.key && /* @__PURE__ */ C(v, {
345
347
  type: "button",
346
- onClick: Ae,
348
+ onClick: je,
347
349
  variant: "outline",
348
350
  size: "sm",
349
351
  className: "px-3",
350
- children: be ? /* @__PURE__ */ C(ce, { className: "w-4 h-4 text-status-success-text" }) : /* @__PURE__ */ C(le, { className: "w-4 h-4" })
352
+ children: xe ? /* @__PURE__ */ C(le, { className: "w-4 h-4 text-status-success-text" }) : /* @__PURE__ */ C(ue, { className: "w-4 h-4" })
351
353
  })]
352
354
  }),
353
355
  A.key && /* @__PURE__ */ C("p", {
@@ -368,7 +370,7 @@ var T = a(function() {
368
370
  }), /* @__PURE__ */ C(x, {
369
371
  id: "description",
370
372
  value: O.description,
371
- onChange: Ee,
373
+ onChange: De,
372
374
  placeholder: E("bigconsole.dataSinks.builder.basicInfo.descriptionPlaceholder", "Describe what data this sink stores..."),
373
375
  rows: 2,
374
376
  className: "resize-none"
@@ -376,7 +378,7 @@ var T = a(function() {
376
378
  })
377
379
  ] })
378
380
  }),
379
- /* @__PURE__ */ C(t, {
381
+ /* @__PURE__ */ C(n, {
380
382
  headingLevel: 2,
381
383
  title: E("bigconsole.dataSinks.builder.config.title", "Configuration"),
382
384
  description: E("bigconsole.dataSinks.builder.config.subtitle", "Cache and refresh settings"),
@@ -388,7 +390,7 @@ var T = a(function() {
388
390
  /* @__PURE__ */ C(b, { children: E("bigconsole.dataSinks.builder.config.cacheDurationLabel", "Cache Duration") }),
389
391
  /* @__PURE__ */ C(re, {
390
392
  value: O.ttl,
391
- onChange: De,
393
+ onChange: Oe,
392
394
  hideLabel: !0
393
395
  }),
394
396
  /* @__PURE__ */ C("p", {
@@ -396,19 +398,19 @@ var T = a(function() {
396
398
  children: E("bigconsole.dataSinks.builder.config.cacheDurationHelp", "How long cached data remains valid before requiring refresh.")
397
399
  })
398
400
  ]
399
- }), /* @__PURE__ */ C(ie, {
401
+ }), /* @__PURE__ */ C(o, {
400
402
  value: O.refresh,
401
- onChange: Oe
403
+ onChange: Q
402
404
  })] })
403
405
  }),
404
- /* @__PURE__ */ C(t, {
406
+ /* @__PURE__ */ C(n, {
405
407
  headingLevel: 2,
406
408
  title: E("bigconsole.dataSinks.builder.dataPayload.title", "Data Payload"),
407
409
  description: D ? E("bigconsole.dataSinks.builder.dataPayload.subtitleEdit", "Edit the JSON data stored in this DataSink") : E("bigconsole.dataSinks.builder.dataPayload.subtitleCreate", "Optional initial data (JSON format)"),
408
410
  icon: /* @__PURE__ */ C(p, { className: "h-icon-sm w-icon-sm" }),
409
- actions: /* @__PURE__ */ C(_, {
411
+ actions: /* @__PURE__ */ C(v, {
410
412
  type: "button",
411
- onClick: ke,
413
+ onClick: Ae,
412
414
  variant: "outline",
413
415
  size: "sm",
414
416
  children: E("bigconsole.dataSinks.builder.dataPayload.formatJson", "Format JSON")
@@ -418,7 +420,7 @@ var T = a(function() {
418
420
  /* @__PURE__ */ C(x, {
419
421
  "aria-label": E("bigconsole.dataSinks.builder.dataPayload.title", "Data Payload"),
420
422
  value: O.data,
421
- onChange: Q,
423
+ onChange: ke,
422
424
  placeholder: E("bigconsole.dataSinks.builder.dataPayload.dataPlaceholder", "{\"key\": \"value\"}"),
423
425
  rows: 10,
424
426
  className: `resize-y font-mono text-xs ${A.data ? "border-status-error-border" : ""}`
@@ -433,21 +435,21 @@ var T = a(function() {
433
435
  })
434
436
  ] })
435
437
  }),
436
- D && X && /* @__PURE__ */ C(t, {
438
+ D && X && /* @__PURE__ */ C(n, {
437
439
  emphasis: "muted",
438
440
  headingLevel: 2,
439
441
  title: E("bigconsole.dataSinks.builder.preview.title", "Data Preview"),
440
442
  description: E("bigconsole.dataSinks.builder.preview.subtitle", "Preview the first 20 records"),
441
443
  icon: /* @__PURE__ */ C(m, { className: "h-icon-sm w-icon-sm" }),
442
- actions: /* @__PURE__ */ C(_, {
444
+ actions: /* @__PURE__ */ C(v, {
443
445
  type: "button",
444
- onClick: je,
446
+ onClick: Me,
445
447
  variant: "outline",
446
448
  size: "sm",
447
449
  disabled: z,
448
450
  children: z ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(g, { className: "w-4 h-4 mr-2 animate-spin" }), E("bigconsole.dataSinks.builder.preview.loading", "Loading...")] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(m, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.preview.showData", "Show Data")] })
449
451
  }),
450
- children: U ? /* @__PURE__ */ C(t, {
452
+ children: U ? /* @__PURE__ */ C(n, {
451
453
  tone: "danger",
452
454
  padding: "compact",
453
455
  headingLevel: 3,
@@ -459,7 +461,7 @@ var T = a(function() {
459
461
  }) : V && V.length > 0 ? /* @__PURE__ */ C("pre", {
460
462
  className: "max-h-[300px] min-w-0 overflow-auto rounded-input bg-bg-surface p-3 font-mono text-xs",
461
463
  children: JSON.stringify(V, null, 2)
462
- }) : V ? /* @__PURE__ */ C(v, {
464
+ }) : V ? /* @__PURE__ */ C(fe, {
463
465
  illustration: "empty-generic",
464
466
  title: E("bigconsole.dataSinks.builder.preview.emptyTitle", "No data available yet"),
465
467
  description: E("bigconsole.dataSinks.builder.preview.emptyDescription", "Connect a workflow to this sink's key to start pushing data.")
@@ -468,7 +470,7 @@ var T = a(function() {
468
470
  children: "Select \"Show data\" to load the records this sink currently holds."
469
471
  })
470
472
  }),
471
- !D && /* @__PURE__ */ C(t, {
473
+ !D && /* @__PURE__ */ C(n, {
472
474
  tone: "info",
473
475
  emphasis: "muted",
474
476
  headingLevel: 2,
@@ -496,25 +498,25 @@ var T = a(function() {
496
498
  ]
497
499
  })
498
500
  }),
499
- /* @__PURE__ */ w(t, {
501
+ /* @__PURE__ */ w(n, {
500
502
  emphasis: "bare",
501
503
  padding: "none",
502
504
  "aria-label": "Save or discard this data sink",
503
505
  className: "border-t border-[var(--color-border-subtle)] pt-form-gap",
504
506
  bodyClassName: "flex flex-wrap items-center justify-end gap-control-gap",
505
- children: [/* @__PURE__ */ C(_, {
507
+ children: [/* @__PURE__ */ C(v, {
506
508
  type: "button",
507
509
  onClick: $,
508
510
  variant: "secondary",
509
511
  children: E("bigconsole.dataSinks.builder.actions.cancel", "Cancel")
510
- }), /* @__PURE__ */ C(l, {
511
- permission: ye,
512
+ }), /* @__PURE__ */ C(se, {
513
+ permission: be,
512
514
  deniedBehavior: "disable",
513
- children: /* @__PURE__ */ C(_, {
515
+ children: /* @__PURE__ */ C(v, {
514
516
  type: "submit",
515
- disabled: !Ne || P,
517
+ disabled: !Pe || P,
516
518
  variant: "default",
517
- children: P ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(g, { className: "w-4 h-4 mr-2 animate-spin" }), E("bigconsole.dataSinks.builder.actions.saving", "Saving...")] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(ue, { className: "w-4 h-4 mr-2" }), D ? E("bigconsole.dataSinks.builder.actions.saveChanges", "Save Changes") : E("bigconsole.dataSinks.builder.actions.create", "Create DataSink")] })
519
+ children: P ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(g, { className: "w-4 h-4 mr-2 animate-spin" }), E("bigconsole.dataSinks.builder.actions.saving", "Saving...")] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(_, { className: "w-4 h-4 mr-2" }), D ? E("bigconsole.dataSinks.builder.actions.saveChanges", "Save Changes") : E("bigconsole.dataSinks.builder.actions.create", "Create DataSink")] })
518
520
  })
519
521
  })]
520
522
  })