@burdenoff/microfe-bigconsole 2026.1004.2 → 2026.1004.4

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 (150) hide show
  1. package/dist/bigconsole/BigConsoleRoutes.d.ts +1 -1
  2. package/dist/bigconsole/BigConsoleRoutes.d.ts.map +1 -1
  3. package/dist/bigconsole/BigConsoleRoutes.js +15 -1
  4. package/dist/bigconsole/BigConsoleRoutes.js.map +1 -1
  5. package/dist/bigconsole/components/DrilldownModal.d.ts.map +1 -1
  6. package/dist/bigconsole/components/DrilldownModal.js +54 -53
  7. package/dist/bigconsole/components/DrilldownModal.js.map +1 -1
  8. package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts +3 -1
  9. package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts.map +1 -1
  10. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +40 -39
  11. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
  12. package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts.map +1 -1
  13. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +184 -177
  14. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
  15. package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts.map +1 -1
  16. package/dist/bigconsole/components/dashboard/DashboardGrid.js +40 -22
  17. package/dist/bigconsole/components/dashboard/DashboardGrid.js.map +1 -1
  18. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts.map +1 -1
  19. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +31 -25
  20. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js.map +1 -1
  21. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts +1 -1
  22. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts.map +1 -1
  23. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +115 -80
  24. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
  25. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts.map +1 -1
  26. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +177 -146
  27. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
  28. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts +1 -1
  29. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts.map +1 -1
  30. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +375 -325
  31. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +1 -1
  32. package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts.map +1 -1
  33. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +7 -1
  34. package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
  35. package/dist/bigconsole/components/parser/ParserSelector.d.ts +3 -1
  36. package/dist/bigconsole/components/parser/ParserSelector.d.ts.map +1 -1
  37. package/dist/bigconsole/components/parser/ParserSelector.js +94 -94
  38. package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
  39. package/dist/bigconsole/components/pipeline/PipelineCard.d.ts.map +1 -1
  40. package/dist/bigconsole/components/pipeline/PipelineCard.js +111 -89
  41. package/dist/bigconsole/components/pipeline/PipelineCard.js.map +1 -1
  42. package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts +8 -0
  43. package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts.map +1 -0
  44. package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +52 -0
  45. package/dist/bigconsole/components/pipeline/PipelineScopePicker.js.map +1 -0
  46. package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts.map +1 -1
  47. package/dist/bigconsole/components/widgets/PropertiesPanel.js +257 -221
  48. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  49. package/dist/bigconsole/components/widgets/WidgetHeader.d.ts +1 -0
  50. package/dist/bigconsole/components/widgets/WidgetHeader.d.ts.map +1 -1
  51. package/dist/bigconsole/components/widgets/WidgetHeader.js +29 -29
  52. package/dist/bigconsole/components/widgets/WidgetHeader.js.map +1 -1
  53. package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts +2 -0
  54. package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts.map +1 -1
  55. package/dist/bigconsole/components/widgets/WidgetWrapper.js +247 -239
  56. package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +1 -1
  57. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts.map +1 -1
  58. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js +6 -4
  59. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js.map +1 -1
  60. package/dist/bigconsole/components/widgets/states/EmptyState.d.ts +1 -0
  61. package/dist/bigconsole/components/widgets/states/EmptyState.d.ts.map +1 -1
  62. package/dist/bigconsole/components/widgets/states/EmptyState.js +4 -4
  63. package/dist/bigconsole/components/widgets/states/EmptyState.js.map +1 -1
  64. package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts +7 -0
  65. package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts.map +1 -0
  66. package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js +94 -0
  67. package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js.map +1 -0
  68. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts +7 -0
  69. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts.map +1 -0
  70. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +101 -0
  71. package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js.map +1 -0
  72. package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts +16 -0
  73. package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts.map +1 -0
  74. package/dist/bigconsole/hooks/useBigConsoleSettings.js +57 -0
  75. package/dist/bigconsole/hooks/useBigConsoleSettings.js.map +1 -0
  76. package/dist/bigconsole/hooks/useDashboardOperations.d.ts.map +1 -1
  77. package/dist/bigconsole/hooks/useDashboardOperations.js +102 -79
  78. package/dist/bigconsole/hooks/useDashboardOperations.js.map +1 -1
  79. package/dist/bigconsole/hooks/useExportDashboard.d.ts +3 -1
  80. package/dist/bigconsole/hooks/useExportDashboard.d.ts.map +1 -1
  81. package/dist/bigconsole/hooks/useExportDashboard.js +23 -13
  82. package/dist/bigconsole/hooks/useExportDashboard.js.map +1 -1
  83. package/dist/bigconsole/hooks/useFilterUrlSync.d.ts +18 -0
  84. package/dist/bigconsole/hooks/useFilterUrlSync.d.ts.map +1 -1
  85. package/dist/bigconsole/hooks/useFilterUrlSync.js +87 -57
  86. package/dist/bigconsole/hooks/useFilterUrlSync.js.map +1 -1
  87. package/dist/bigconsole/hooks/useGlobalFilters.d.ts.map +1 -1
  88. package/dist/bigconsole/hooks/useGlobalFilters.js +39 -29
  89. package/dist/bigconsole/hooks/useGlobalFilters.js.map +1 -1
  90. package/dist/bigconsole/hooks/usePageOperations.d.ts.map +1 -1
  91. package/dist/bigconsole/hooks/usePageOperations.js +1 -0
  92. package/dist/bigconsole/hooks/usePageOperations.js.map +1 -1
  93. package/dist/bigconsole/hooks/usePipelineOperations.d.ts.map +1 -1
  94. package/dist/bigconsole/hooks/usePipelineOperations.js +114 -112
  95. package/dist/bigconsole/hooks/usePipelineOperations.js.map +1 -1
  96. package/dist/bigconsole/hooks/useShareRecipients.d.ts +22 -0
  97. package/dist/bigconsole/hooks/useShareRecipients.d.ts.map +1 -0
  98. package/dist/bigconsole/hooks/useShareRecipients.js +198 -0
  99. package/dist/bigconsole/hooks/useShareRecipients.js.map +1 -0
  100. package/dist/bigconsole/pages/DashboardBuilderPage.d.ts.map +1 -1
  101. package/dist/bigconsole/pages/DashboardBuilderPage.js +198 -193
  102. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  103. package/dist/bigconsole/pages/DashboardViewPage.d.ts.map +1 -1
  104. package/dist/bigconsole/pages/DashboardViewPage.js +171 -167
  105. package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
  106. package/dist/bigconsole/pages/DashboardsPage.d.ts.map +1 -1
  107. package/dist/bigconsole/pages/DashboardsPage.js +313 -266
  108. package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
  109. package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts.map +1 -1
  110. package/dist/bigconsole/pages/DataSinkBuilderPage.js +84 -79
  111. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  112. package/dist/bigconsole/pages/DataSinkViewPage.d.ts.map +1 -1
  113. package/dist/bigconsole/pages/DataSinkViewPage.js +267 -257
  114. package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
  115. package/dist/bigconsole/pages/InsightsPage.d.ts.map +1 -1
  116. package/dist/bigconsole/pages/InsightsPage.js +465 -402
  117. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  118. package/dist/bigconsole/pages/PipelineBuilderPage.d.ts.map +1 -1
  119. package/dist/bigconsole/pages/PipelineBuilderPage.js +169 -157
  120. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  121. package/dist/bigconsole/pages/PipelineViewPage.d.ts.map +1 -1
  122. package/dist/bigconsole/pages/PipelineViewPage.js +370 -230
  123. package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
  124. package/dist/bigconsole/pages/PipelinesPage.d.ts.map +1 -1
  125. package/dist/bigconsole/pages/PipelinesPage.js +181 -151
  126. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  127. package/dist/bigconsole/pages/SettingsPage.d.ts.map +1 -1
  128. package/dist/bigconsole/pages/SettingsPage.js +188 -208
  129. package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
  130. package/dist/bigconsole/pages/WidgetDemoPage.d.ts.map +1 -1
  131. package/dist/bigconsole/pages/WidgetDemoPage.js +134 -117
  132. package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
  133. package/dist/bigconsole/pages/WorkflowViewPage.d.ts.map +1 -1
  134. package/dist/bigconsole/pages/WorkflowViewPage.js +315 -267
  135. package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
  136. package/dist/bigconsole/pages/WorkflowsPage.d.ts.map +1 -1
  137. package/dist/bigconsole/pages/WorkflowsPage.js +4 -3
  138. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  139. package/dist/bigconsole/types/index.d.ts +4 -0
  140. package/dist/bigconsole/types/index.d.ts.map +1 -1
  141. package/dist/generated/wspace-operations.d.ts +148 -0
  142. package/dist/generated/wspace-operations.d.ts.map +1 -1
  143. package/dist/generated/wspace-operations.js +172 -133
  144. package/dist/generated/wspace-operations.js.map +1 -1
  145. package/dist/generated/wspace-types.d.ts +21 -0
  146. package/dist/generated/wspace-types.d.ts.map +1 -1
  147. package/dist/generated/wspace-types.js.map +1 -1
  148. package/dist/microfe-bigconsole.css +1 -1
  149. package/dist/translations/en.d.ts.map +1 -1
  150. package/package.json +3 -3
@@ -1,26 +1,27 @@
1
1
  import { useAppNavigate as e } from "../contexts/NavigationContext.js";
2
2
  import "../contexts/index.js";
3
3
  import { reportBigConsoleQuotaError as t } from "../utils/quota.js";
4
- import { Section as n, SectionStack as r } from "../components/common/Section.js";
4
+ import { Section as n, SectionStack as ee } from "../components/common/Section.js";
5
5
  import "../components/common/index.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";
9
- import re from "../components/datasink/CacheTTLSelector.js";
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";
6
+ import te from "../hooks/useDataSinkOperations.js";
7
+ import { BIGCONSOLE_PERMISSIONS as r } from "../../constants/permissions.js";
8
+ import { loadBigConsoleSettings as ne } from "../hooks/useBigConsoleSettings.js";
9
+ import { isNative as re, nativeCopyText as ie, nativeToast as ae } from "../../utils/nativeBridge.js";
10
+ import i from "../components/datasink/CacheTTLSelector.js";
11
+ import a from "../components/datasink/RefreshTypeSelector.js";
12
+ import { memo as o, useCallback as s, useEffect as c, useMemo as oe, useState as l } from "react";
13
+ import { useParams as se } from "react-router";
14
+ import { AccessDenied as ce, PermissionButton as le } from "@burdenoff/fe-libs/shared/components";
15
+ import { usePermissions as ue } from "@burdenoff/fe-libs/shared/providers/shell";
16
+ import { AlertCircle as u, ArrowLeft as d, Check as f, Copy as p, Database as m, Eye as h, ListChecks as g, Loader2 as _, Save as de, Settings as fe } from "lucide-react";
17
+ import { Button as v, IllustratedEmptyState as pe, Input as y, Label as b, PagePurpose as me, Textarea as x } from "@burdenoff/fe-libs/ui";
17
18
  import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
18
- import { useI18n as me } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
19
+ import { useI18n as he } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
19
20
  //#region src/bigconsole/pages/DataSinkBuilderPage.tsx
20
- function he(e) {
21
+ function ge(e) {
21
22
  return e.toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "").substring(0, 64);
22
23
  }
23
- function ge(e, t) {
24
+ function _e(e, t) {
24
25
  let n = {};
25
26
  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 {
26
27
  JSON.parse(e.data);
@@ -29,25 +30,28 @@ function ge(e, t) {
29
30
  }
30
31
  return n;
31
32
  }
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
+ var T = o(function() {
34
+ let { dataSinkId: o } = se(), T = e(), { t: E } = he(), D = o !== "new" && !!o, { hasPermission: ve, isLoading: ye } = ue(), be = ve(r.DATASINK_READ), xe = D ? r.DATASINK_UPDATE : r.DATASINK_CREATE, [O, k] = l({
34
35
  name: "",
35
36
  key: "",
36
37
  description: "",
37
- ttl: 300,
38
+ ttl: (() => {
39
+ let e = ne();
40
+ return e.cacheEnabled ? e.cacheTTLSeconds : 0;
41
+ })(),
38
42
  refresh: { type: "manual" },
39
43
  data: "{}"
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);
44
+ }), [A, j] = l({}), [M, N] = l(!1), [P, F] = l(!1), [I, L] = l(null), [Se, R] = l(!1), [z, B] = l(!1), [V, H] = l(null), [U, W] = l(null), { loading: Ce, error: G, dataSinks: we, fetchDataSink: K, createDataSink: q, updateDataSink: J, getDataSinkData: Y } = te({ skipFetch: !0 }), X = D ? we.find((e) => e.id === o) : null;
45
+ c(() => {
46
+ D && o && !X && K(o);
43
47
  }, [
44
48
  D,
45
- s,
49
+ o,
46
50
  X,
47
51
  K
48
52
  ]);
49
- let [Z, we] = u(!1);
50
- l(() => {
53
+ let [Z, Te] = l(!1);
54
+ c(() => {
51
55
  if (X && !Z) {
52
56
  let e = "";
53
57
  if (X.data) try {
@@ -62,7 +66,7 @@ var T = s(function() {
62
66
  name: X.name || "",
63
67
  key: X.key || "",
64
68
  description: X.description || "",
65
- ttl: X.ttl || 300,
69
+ ttl: X.ttl ?? 300,
66
70
  refresh: X.refresh ? {
67
71
  type: X.refresh.type === "scheduled" ? "scheduled" : "manual",
68
72
  schedule: X.refresh.schedule ? {
@@ -71,20 +75,20 @@ var T = s(function() {
71
75
  } : void 0
72
76
  } : { type: "manual" },
73
77
  data: e
74
- }), N(!0), we(!0), j({});
78
+ }), N(!0), Te(!0), j({});
75
79
  }
76
80
  }, [X, Z]);
77
- let Te = c((e) => {
81
+ let Ee = s((e) => {
78
82
  let t = e.target.value;
79
83
  k((e) => ({
80
84
  ...e,
81
85
  name: t,
82
- key: M ? e.key : he(t)
86
+ key: M ? e.key : ge(t)
83
87
  })), j((e) => ({
84
88
  ...e,
85
89
  name: void 0
86
90
  }));
87
- }, [M]), Ee = c((e) => {
91
+ }, [M]), De = s((e) => {
88
92
  let t = e.target.value.toLowerCase().replace(/[^a-z0-9_]/g, "");
89
93
  k((e) => ({
90
94
  ...e,
@@ -93,22 +97,22 @@ var T = s(function() {
93
97
  ...e,
94
98
  key: void 0
95
99
  }));
96
- }, []), De = c((e) => {
100
+ }, []), Oe = s((e) => {
97
101
  k((t) => ({
98
102
  ...t,
99
103
  description: e.target.value
100
104
  }));
101
- }, []), Oe = c((e) => {
105
+ }, []), Q = s((e) => {
102
106
  k((t) => ({
103
107
  ...t,
104
108
  ttl: e || 0
105
109
  }));
106
- }, []), Q = c((e) => {
110
+ }, []), ke = s((e) => {
107
111
  k((t) => ({
108
112
  ...t,
109
113
  refresh: e
110
114
  }));
111
- }, []), ke = c((e) => {
115
+ }, []), Ae = s((e) => {
112
116
  k((t) => ({
113
117
  ...t,
114
118
  data: e.target.value
@@ -116,7 +120,7 @@ var T = s(function() {
116
120
  ...e,
117
121
  data: void 0
118
122
  }));
119
- }, []), Ae = c(() => {
123
+ }, []), je = s(() => {
120
124
  try {
121
125
  let e = JSON.parse(O.data);
122
126
  k((t) => ({
@@ -132,11 +136,11 @@ var T = s(function() {
132
136
  data: E("bigconsole.dataSinks.builder.validation.invalidJson", "Invalid JSON format")
133
137
  }));
134
138
  }
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(() => {
139
+ }, [O.data, E]), Me = s(async () => {
140
+ O.key && (await ie(O.key), R(!0), re() && ae(E("bigconsole.dataSinks.builder.toolbar.keyCopied", "Key copied")), setTimeout(() => R(!1), 2e3));
141
+ }, [O.key, E]), $ = s(() => {
138
142
  T("/datasinks");
139
- }, [T]), Me = c(async () => {
143
+ }, [T]), Ne = s(async () => {
140
144
  if (!(!D || !X)) {
141
145
  B(!0), W(null);
142
146
  try {
@@ -153,9 +157,9 @@ var T = s(function() {
153
157
  X,
154
158
  Y,
155
159
  E
156
- ]), Ne = c(async (e) => {
160
+ ]), Pe = s(async (e) => {
157
161
  e.preventDefault(), L(null);
158
- let n = ge(O, E);
162
+ let n = _e(O, E);
159
163
  if (Object.keys(n).length > 0) {
160
164
  j(n);
161
165
  return;
@@ -211,7 +215,7 @@ var T = s(function() {
211
215
  J,
212
216
  T,
213
217
  E
214
- ]), Pe = ie(() => {
218
+ ]), Fe = oe(() => {
215
219
  let e = O.name.trim().length >= 2, t = O.key.trim().length > 0, n = !0;
216
220
  if (O.data && O.data.trim()) try {
217
221
  JSON.parse(O.data);
@@ -224,29 +228,29 @@ var T = s(function() {
224
228
  O.key,
225
229
  O.data
226
230
  ]);
227
- return Se && D ? /* @__PURE__ */ C("div", {
231
+ return Ce && D ? /* @__PURE__ */ C("div", {
228
232
  className: "flex min-h-[240px] items-center justify-center p-card-padding",
229
- children: /* @__PURE__ */ C(g, { className: "h-icon-lg w-icon-lg animate-spin text-text-secondary" })
233
+ children: /* @__PURE__ */ C(_, { className: "h-icon-lg w-icon-lg animate-spin text-text-secondary" })
230
234
  }) : G ? /* @__PURE__ */ C("div", {
231
- className: "mx-auto w-full max-w-3xl p-card-padding",
235
+ className: "mx-auto w-full max-w-7xl p-card-padding",
232
236
  children: /* @__PURE__ */ C(n, {
233
237
  tone: "danger",
234
238
  headingLevel: 2,
235
239
  title: E("bigconsole.dataSinks.builder.errors.loadFailed", "Failed to load DataSink"),
236
240
  description: G.message,
237
- icon: /* @__PURE__ */ C(d, { className: "h-icon-sm w-icon-sm" }),
241
+ icon: /* @__PURE__ */ C(u, { className: "h-icon-sm w-icon-sm" }),
238
242
  actions: /* @__PURE__ */ w(v, {
239
243
  onClick: $,
240
244
  variant: "secondary",
241
245
  size: "sm",
242
- children: [/* @__PURE__ */ C(f, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.header.backToDataSinks", "Back to DataSinks")]
246
+ children: [/* @__PURE__ */ C(d, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.header.backToDataSinks", "Back to DataSinks")]
243
247
  })
244
248
  })
245
- }) : D && !ve && !ye ? /* @__PURE__ */ C(oe, {
249
+ }) : D && !ye && !be ? /* @__PURE__ */ C(ce, {
246
250
  title: E("bigconsole.dataSinks.builder.accessDenied.title", "Access Denied"),
247
251
  description: E("bigconsole.dataSinks.builder.accessDenied.description", "You don't have permission to view this data sink.")
248
252
  }) : /* @__PURE__ */ w("div", {
249
- className: "mx-auto w-full min-w-0 max-w-3xl p-card-padding",
253
+ className: "mx-auto w-full min-w-0 max-w-7xl p-card-padding",
250
254
  children: [
251
255
  /* @__PURE__ */ w("header", {
252
256
  className: "mb-form-gap",
@@ -256,7 +260,7 @@ var T = s(function() {
256
260
  variant: "ghost",
257
261
  size: "sm",
258
262
  className: "mb-4",
259
- children: [/* @__PURE__ */ C(f, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.header.backToDataSinks", "Back to DataSinks")]
263
+ children: [/* @__PURE__ */ C(d, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.header.backToDataSinks", "Back to DataSinks")]
260
264
  }),
261
265
  /* @__PURE__ */ C("h1", {
262
266
  className: "text-2xl font-bold text-text-primary",
@@ -268,7 +272,7 @@ var T = s(function() {
268
272
  })
269
273
  ]
270
274
  }),
271
- /* @__PURE__ */ C(pe, {
275
+ /* @__PURE__ */ C(me, {
272
276
  className: "mb-section-gap",
273
277
  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.")
274
278
  }),
@@ -277,20 +281,20 @@ var T = s(function() {
277
281
  headingLevel: 2,
278
282
  title: E("bigconsole.dataSinks.builder.errors.saveFailed", "Failed to save DataSink"),
279
283
  description: I,
280
- icon: /* @__PURE__ */ C(d, { className: "h-icon-sm w-icon-sm" }),
284
+ icon: /* @__PURE__ */ C(u, { className: "h-icon-sm w-icon-sm" }),
281
285
  className: "mb-section-gap"
282
286
  }),
283
287
  /* @__PURE__ */ C("form", {
284
288
  "data-tour": "bigconsole-datasink-builder",
285
- onSubmit: Ne,
286
- children: /* @__PURE__ */ w(r, { children: [
289
+ onSubmit: Pe,
290
+ children: /* @__PURE__ */ w(ee, { children: [
287
291
  /* @__PURE__ */ C(n, {
288
292
  emphasis: "primary",
289
293
  headingLevel: 2,
290
294
  title: E("bigconsole.dataSinks.builder.basicInfo.title", "Basic Information"),
291
295
  description: E("bigconsole.dataSinks.builder.basicInfo.subtitle", "Essential details for your DataSink"),
292
- icon: /* @__PURE__ */ C(p, { className: "h-icon-sm w-icon-sm" }),
293
- bodyClassName: "space-y-form-gap",
296
+ icon: /* @__PURE__ */ C(m, { className: "h-icon-sm w-icon-sm" }),
297
+ bodyClassName: "grid gap-form-gap md:grid-cols-2",
294
298
  children: /* @__PURE__ */ w(S, { children: [
295
299
  /* @__PURE__ */ w("div", {
296
300
  className: "space-y-2",
@@ -310,7 +314,7 @@ var T = s(function() {
310
314
  id: "name",
311
315
  type: "text",
312
316
  value: O.name,
313
- onChange: Te,
317
+ onChange: Ee,
314
318
  placeholder: E("bigconsole.dataSinks.builder.basicInfo.namePlaceholder", "e.g., Sales Metrics"),
315
319
  className: A.name ? "border-status-error-border" : ""
316
320
  }),
@@ -340,17 +344,18 @@ var T = s(function() {
340
344
  id: "key",
341
345
  type: "text",
342
346
  value: O.key,
343
- onChange: Ee,
347
+ onChange: De,
344
348
  placeholder: E("bigconsole.dataSinks.builder.basicInfo.keyPlaceholder", "sales_metrics"),
345
349
  disabled: D,
346
350
  className: `font-mono flex-1 ${A.key ? "border-status-error-border" : ""}`
347
351
  }), O.key && /* @__PURE__ */ C(v, {
348
352
  type: "button",
349
- onClick: je,
353
+ onClick: Me,
354
+ "aria-label": E("bigconsole.dataSinks.builder.basicInfo.copyKey", "Copy unique key"),
350
355
  variant: "outline",
351
356
  size: "sm",
352
357
  className: "px-3",
353
- children: xe ? /* @__PURE__ */ C(le, { className: "w-4 h-4 text-status-success-text" }) : /* @__PURE__ */ C(ue, { className: "w-4 h-4" })
358
+ children: Se ? /* @__PURE__ */ C(f, { className: "w-4 h-4 text-status-success-text" }) : /* @__PURE__ */ C(p, { className: "w-4 h-4" })
354
359
  })]
355
360
  }),
356
361
  A.key && /* @__PURE__ */ C("p", {
@@ -364,14 +369,14 @@ var T = s(function() {
364
369
  ]
365
370
  }),
366
371
  /* @__PURE__ */ w("div", {
367
- className: "space-y-2",
372
+ className: "space-y-2 md:col-span-2",
368
373
  children: [/* @__PURE__ */ C(b, {
369
374
  htmlFor: "description",
370
375
  children: E("bigconsole.dataSinks.builder.basicInfo.descriptionLabel", "Description")
371
376
  }), /* @__PURE__ */ C(x, {
372
377
  id: "description",
373
378
  value: O.description,
374
- onChange: De,
379
+ onChange: Oe,
375
380
  placeholder: E("bigconsole.dataSinks.builder.basicInfo.descriptionPlaceholder", "Describe what data this sink stores..."),
376
381
  rows: 2,
377
382
  className: "resize-none"
@@ -383,15 +388,15 @@ var T = s(function() {
383
388
  headingLevel: 2,
384
389
  title: E("bigconsole.dataSinks.builder.config.title", "Configuration"),
385
390
  description: E("bigconsole.dataSinks.builder.config.subtitle", "Cache and refresh settings"),
386
- icon: /* @__PURE__ */ C(de, { className: "h-icon-sm w-icon-sm" }),
387
- bodyClassName: "space-y-form-gap",
391
+ icon: /* @__PURE__ */ C(fe, { className: "h-icon-sm w-icon-sm" }),
392
+ bodyClassName: "grid gap-form-gap md:grid-cols-2",
388
393
  children: /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ w("div", {
389
394
  className: "space-y-2",
390
395
  children: [
391
396
  /* @__PURE__ */ C(b, { children: E("bigconsole.dataSinks.builder.config.cacheDurationLabel", "Cache Duration") }),
392
- /* @__PURE__ */ C(re, {
397
+ /* @__PURE__ */ C(i, {
393
398
  value: O.ttl,
394
- onChange: Oe,
399
+ onChange: Q,
395
400
  hideLabel: !0
396
401
  }),
397
402
  /* @__PURE__ */ C("p", {
@@ -399,19 +404,19 @@ var T = s(function() {
399
404
  children: E("bigconsole.dataSinks.builder.config.cacheDurationHelp", "How long cached data remains valid before requiring refresh.")
400
405
  })
401
406
  ]
402
- }), /* @__PURE__ */ C(o, {
407
+ }), /* @__PURE__ */ C(a, {
403
408
  value: O.refresh,
404
- onChange: Q
409
+ onChange: ke
405
410
  })] })
406
411
  }),
407
412
  /* @__PURE__ */ C(n, {
408
413
  headingLevel: 2,
409
414
  title: E("bigconsole.dataSinks.builder.dataPayload.title", "Data Payload"),
410
415
  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)"),
411
- icon: /* @__PURE__ */ C(p, { className: "h-icon-sm w-icon-sm" }),
416
+ icon: /* @__PURE__ */ C(m, { className: "h-icon-sm w-icon-sm" }),
412
417
  actions: /* @__PURE__ */ C(v, {
413
418
  type: "button",
414
- onClick: Ae,
419
+ onClick: je,
415
420
  variant: "outline",
416
421
  size: "sm",
417
422
  children: E("bigconsole.dataSinks.builder.dataPayload.formatJson", "Format JSON")
@@ -421,7 +426,7 @@ var T = s(function() {
421
426
  /* @__PURE__ */ C(x, {
422
427
  "aria-label": E("bigconsole.dataSinks.builder.dataPayload.title", "Data Payload"),
423
428
  value: O.data,
424
- onChange: ke,
429
+ onChange: Ae,
425
430
  placeholder: E("bigconsole.dataSinks.builder.dataPayload.dataPlaceholder", "{\"key\": \"value\"}"),
426
431
  rows: 10,
427
432
  className: `resize-y font-mono text-xs ${A.data ? "border-status-error-border" : ""}`
@@ -441,14 +446,14 @@ var T = s(function() {
441
446
  headingLevel: 2,
442
447
  title: E("bigconsole.dataSinks.builder.preview.title", "Data Preview"),
443
448
  description: E("bigconsole.dataSinks.builder.preview.subtitle", "Preview the first 20 records"),
444
- icon: /* @__PURE__ */ C(m, { className: "h-icon-sm w-icon-sm" }),
449
+ icon: /* @__PURE__ */ C(h, { className: "h-icon-sm w-icon-sm" }),
445
450
  actions: /* @__PURE__ */ C(v, {
446
451
  type: "button",
447
- onClick: Me,
452
+ onClick: Ne,
448
453
  variant: "outline",
449
454
  size: "sm",
450
455
  disabled: z,
451
- 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")] })
456
+ children: z ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(_, { className: "w-4 h-4 mr-2 animate-spin" }), E("bigconsole.dataSinks.builder.preview.loading", "Loading...")] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(h, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.preview.showData", "Show Data")] })
452
457
  }),
453
458
  children: U ? /* @__PURE__ */ C(n, {
454
459
  tone: "danger",
@@ -462,7 +467,7 @@ var T = s(function() {
462
467
  }) : V && V.length > 0 ? /* @__PURE__ */ C("pre", {
463
468
  className: "max-h-[300px] min-w-0 overflow-auto rounded-input bg-bg-surface p-3 font-mono text-xs",
464
469
  children: JSON.stringify(V, null, 2)
465
- }) : V ? /* @__PURE__ */ C(fe, {
470
+ }) : V ? /* @__PURE__ */ C(pe, {
466
471
  illustration: "empty-generic",
467
472
  title: E("bigconsole.dataSinks.builder.preview.emptyTitle", "No data available yet"),
468
473
  description: E("bigconsole.dataSinks.builder.preview.emptyDescription", "Connect a workflow to this sink's key to start pushing data.")
@@ -476,7 +481,7 @@ var T = s(function() {
476
481
  emphasis: "muted",
477
482
  headingLevel: 2,
478
483
  title: E("bigconsole.dataSinks.builder.whatsNext.title", "What's Next?"),
479
- icon: /* @__PURE__ */ C(h, { className: "h-icon-sm w-icon-sm" }),
484
+ icon: /* @__PURE__ */ C(g, { className: "h-icon-sm w-icon-sm" }),
480
485
  children: /* @__PURE__ */ w("ol", {
481
486
  className: "list-inside list-decimal space-y-1 text-xs text-text-secondary",
482
487
  children: [
@@ -510,14 +515,14 @@ var T = s(function() {
510
515
  onClick: $,
511
516
  variant: "secondary",
512
517
  children: E("bigconsole.dataSinks.builder.actions.cancel", "Cancel")
513
- }), /* @__PURE__ */ C(se, {
514
- permission: be,
518
+ }), /* @__PURE__ */ C(le, {
519
+ permission: xe,
515
520
  deniedBehavior: "disable",
516
521
  children: /* @__PURE__ */ C(v, {
517
522
  type: "submit",
518
- disabled: !Pe || P,
523
+ disabled: !Fe || P,
519
524
  variant: "default",
520
- 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")] })
525
+ children: P ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(_, { className: "w-4 h-4 mr-2 animate-spin" }), E("bigconsole.dataSinks.builder.actions.saving", "Saving...")] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(de, { className: "w-4 h-4 mr-2" }), D ? E("bigconsole.dataSinks.builder.actions.saveChanges", "Save Changes") : E("bigconsole.dataSinks.builder.actions.create", "Create DataSink")] })
521
526
  })
522
527
  })]
523
528
  })