@burdenoff/microfe-bigconsole 2026.805.3 → 2026.812.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 (247) hide show
  1. package/dist/bigconsole/components/DrilldownDashboardRenderer.js +118 -106
  2. package/dist/bigconsole/components/DrilldownDashboardRenderer.js.map +1 -1
  3. package/dist/bigconsole/components/DrilldownModal.js +54 -50
  4. package/dist/bigconsole/components/DrilldownModal.js.map +1 -1
  5. package/dist/bigconsole/components/builder/BuilderCanvas.js +2 -2
  6. package/dist/bigconsole/components/builder/BuilderCanvas.js.map +1 -1
  7. package/dist/bigconsole/components/builder/BuilderTopbar.js +3 -3
  8. package/dist/bigconsole/components/builder/BuilderTopbar.js.map +1 -1
  9. package/dist/bigconsole/components/builder/inspector/AdvancedSection.js +24 -25
  10. package/dist/bigconsole/components/builder/inspector/AdvancedSection.js.map +1 -1
  11. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +40 -29
  12. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js.map +1 -1
  13. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +135 -97
  14. package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
  15. package/dist/bigconsole/components/builder/inspector/GeneralSection.js +58 -44
  16. package/dist/bigconsole/components/builder/inspector/GeneralSection.js.map +1 -1
  17. package/dist/bigconsole/components/common/Section.js +70 -0
  18. package/dist/bigconsole/components/common/Section.js.map +1 -0
  19. package/dist/bigconsole/components/common/index.js +2 -0
  20. package/dist/bigconsole/components/common/sectionStyles.js +42 -0
  21. package/dist/bigconsole/components/common/sectionStyles.js.map +1 -0
  22. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +209 -193
  23. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
  24. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +213 -231
  25. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
  26. package/dist/bigconsole/components/dashboard/DashboardGrid.js +12 -18
  27. package/dist/bigconsole/components/dashboard/DashboardGrid.js.map +1 -1
  28. package/dist/bigconsole/components/dashboard/DashboardToolbar.js +109 -102
  29. package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +1 -1
  30. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +81 -70
  31. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +1 -1
  32. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +125 -159
  33. package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js.map +1 -1
  34. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +25 -23
  35. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +1 -1
  36. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +3 -3
  37. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
  38. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +5 -3
  39. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +1 -1
  40. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +170 -284
  41. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
  42. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +147 -151
  43. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
  44. package/dist/bigconsole/components/dashboard/LiveBoardBanner.js +45 -53
  45. package/dist/bigconsole/components/dashboard/LiveBoardBanner.js.map +1 -1
  46. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js +157 -148
  47. package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js.map +1 -1
  48. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +17 -8
  49. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +1 -1
  50. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -95
  51. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +1 -1
  52. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js +20 -18
  53. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js.map +1 -1
  54. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js +26 -58
  55. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +1 -1
  56. package/dist/bigconsole/components/dashboard/WidgetPalette.js +307 -231
  57. package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +1 -1
  58. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +29 -29
  59. package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
  60. package/dist/bigconsole/components/datasink/DataSinkCard.js +78 -79
  61. package/dist/bigconsole/components/datasink/DataSinkCard.js.map +1 -1
  62. package/dist/bigconsole/components/datasink/DataSinkDataViewer.js +33 -34
  63. package/dist/bigconsole/components/datasink/DataSinkDataViewer.js.map +1 -1
  64. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +79 -56
  65. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +1 -1
  66. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +75 -65
  67. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +1 -1
  68. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js +1 -1
  69. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js.map +1 -1
  70. package/dist/bigconsole/components/datasink/DataSinkTableViewer.js +20 -19
  71. package/dist/bigconsole/components/datasink/DataSinkTableViewer.js.map +1 -1
  72. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js +127 -171
  73. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js.map +1 -1
  74. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +263 -243
  75. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
  76. package/dist/bigconsole/components/datasink/LinkedParsersPanel.js +65 -66
  77. package/dist/bigconsole/components/datasink/LinkedParsersPanel.js.map +1 -1
  78. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js +121 -127
  79. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js.map +1 -1
  80. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +33 -26
  81. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +1 -1
  82. package/dist/bigconsole/components/datasink/SetupStateBadge.js +3 -3
  83. package/dist/bigconsole/components/datasink/SetupStateBadge.js.map +1 -1
  84. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js +95 -95
  85. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js.map +1 -1
  86. package/dist/bigconsole/components/parser/DataSinkSelector.js +154 -123
  87. package/dist/bigconsole/components/parser/DataSinkSelector.js.map +1 -1
  88. package/dist/bigconsole/components/parser/ExpressionEditor.js +3 -3
  89. package/dist/bigconsole/components/parser/ExpressionEditor.js.map +1 -1
  90. package/dist/bigconsole/components/parser/ImportParserDialog.js +235 -275
  91. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
  92. package/dist/bigconsole/components/parser/ParserCard.js +133 -114
  93. package/dist/bigconsole/components/parser/ParserCard.js.map +1 -1
  94. package/dist/bigconsole/components/parser/ParserSelector.js +191 -174
  95. package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
  96. package/dist/bigconsole/components/parser/ParserStatusBadge.js +2 -2
  97. package/dist/bigconsole/components/parser/ParserStatusBadge.js.map +1 -1
  98. package/dist/bigconsole/components/parser/ParserTypeBadge.js +4 -4
  99. package/dist/bigconsole/components/parser/ParserTypeBadge.js.map +1 -1
  100. package/dist/bigconsole/components/pipeline/PipelineCard.js +134 -89
  101. package/dist/bigconsole/components/pipeline/PipelineCard.js.map +1 -1
  102. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js +77 -64
  103. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js.map +1 -1
  104. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js +7 -10
  105. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js.map +1 -1
  106. package/dist/bigconsole/components/preview/AiPreviewContent.js +31 -32
  107. package/dist/bigconsole/components/preview/AiPreviewContent.js.map +1 -1
  108. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +152 -106
  109. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +1 -1
  110. package/dist/bigconsole/components/preview/AiPreviewPanel.js +193 -152
  111. package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +1 -1
  112. package/dist/bigconsole/components/preview/previewShared.js +41 -23
  113. package/dist/bigconsole/components/preview/previewShared.js.map +1 -1
  114. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +342 -308
  115. package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
  116. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +262 -238
  117. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
  118. package/dist/bigconsole/components/widgets/PropertiesPanel.js +783 -867
  119. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  120. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js +7 -5
  121. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js.map +1 -1
  122. package/dist/bigconsole/components/widgets/WidgetHeader.js +7 -8
  123. package/dist/bigconsole/components/widgets/WidgetHeader.js.map +1 -1
  124. package/dist/bigconsole/components/widgets/WidgetRegistry.js +4 -4
  125. package/dist/bigconsole/components/widgets/WidgetRegistry.js.map +1 -1
  126. package/dist/bigconsole/components/widgets/WidgetWrapper.js +8 -7
  127. package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +1 -1
  128. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js +1 -1
  129. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js.map +1 -1
  130. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +2 -2
  131. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +1 -1
  132. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +11 -5
  133. package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +1 -1
  134. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +19 -15
  135. package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +1 -1
  136. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +154 -102
  137. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +1 -1
  138. package/dist/bigconsole/components/widgets/gauge/CircularGauge.js +36 -32
  139. package/dist/bigconsole/components/widgets/gauge/CircularGauge.js.map +1 -1
  140. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +85 -60
  141. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +1 -1
  142. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js +64 -35
  143. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js.map +1 -1
  144. package/dist/bigconsole/components/widgets/gauge/LinearGauge.js +46 -45
  145. package/dist/bigconsole/components/widgets/gauge/LinearGauge.js.map +1 -1
  146. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +35 -24
  147. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +1 -1
  148. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js +2 -2
  149. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js.map +1 -1
  150. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +4 -4
  151. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +1 -1
  152. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js +153 -90
  153. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js.map +1 -1
  154. package/dist/bigconsole/components/widgets/list/ListConfig.js +8 -2
  155. package/dist/bigconsole/components/widgets/list/ListConfig.js.map +1 -1
  156. package/dist/bigconsole/components/widgets/list/ListItem.js +1 -1
  157. package/dist/bigconsole/components/widgets/list/ListItem.js.map +1 -1
  158. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +1 -1
  159. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js.map +1 -1
  160. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +14 -4
  161. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +1 -1
  162. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js +112 -89
  163. package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js.map +1 -1
  164. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +21 -13
  165. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +1 -1
  166. package/dist/bigconsole/components/widgets/metric-card/index.js +4 -4
  167. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +3 -3
  168. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +1 -1
  169. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +34 -25
  170. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +1 -1
  171. package/dist/bigconsole/components/widgets/progress/ProgressWidget.js +129 -114
  172. package/dist/bigconsole/components/widgets/progress/ProgressWidget.js.map +1 -1
  173. package/dist/bigconsole/components/widgets/retention/RetentionWidget.js +3 -3
  174. package/dist/bigconsole/components/widgets/retention/RetentionWidget.js.map +1 -1
  175. package/dist/bigconsole/components/widgets/states/EmptyState.js +6 -4
  176. package/dist/bigconsole/components/widgets/states/EmptyState.js.map +1 -1
  177. package/dist/bigconsole/components/widgets/states/ErrorState.js +7 -5
  178. package/dist/bigconsole/components/widgets/states/ErrorState.js.map +1 -1
  179. package/dist/bigconsole/components/widgets/states/LoadingState.js +5 -4
  180. package/dist/bigconsole/components/widgets/states/LoadingState.js.map +1 -1
  181. package/dist/bigconsole/components/widgets/table/TableConfig.js +10 -4
  182. package/dist/bigconsole/components/widgets/table/TableConfig.js.map +1 -1
  183. package/dist/bigconsole/components/widgets/table/TableHeader.js +1 -1
  184. package/dist/bigconsole/components/widgets/table/TableHeader.js.map +1 -1
  185. package/dist/bigconsole/components/widgets/table/TableWidget.js +1 -1
  186. package/dist/bigconsole/components/widgets/table/TableWidget.js.map +1 -1
  187. package/dist/bigconsole/components/widgets/text-widget/TextWidget.js +1 -1
  188. package/dist/bigconsole/components/widgets/text-widget/TextWidget.js.map +1 -1
  189. package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js +3 -3
  190. package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js.map +1 -1
  191. package/dist/bigconsole/components/widgets/utils/conditionalFormat.js +2 -2
  192. package/dist/bigconsole/components/widgets/utils/conditionalFormat.js.map +1 -1
  193. package/dist/bigconsole/components/widgets/utils/targetProgress.js +13 -0
  194. package/dist/bigconsole/components/widgets/utils/targetProgress.js.map +1 -0
  195. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +112 -85
  196. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +1 -1
  197. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js +28 -20
  198. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js.map +1 -1
  199. package/dist/bigconsole/components/workflow/WorkflowCard.js +92 -77
  200. package/dist/bigconsole/components/workflow/WorkflowCard.js.map +1 -1
  201. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js +70 -51
  202. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js.map +1 -1
  203. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js +16 -17
  204. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js.map +1 -1
  205. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +6 -4
  206. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -1
  207. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +360 -338
  208. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
  209. package/dist/bigconsole/hooks/useModalFocusTrap.js +53 -0
  210. package/dist/bigconsole/hooks/useModalFocusTrap.js.map +1 -0
  211. package/dist/bigconsole/pages/DashboardBuilderPage.js +209 -203
  212. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  213. package/dist/bigconsole/pages/DashboardViewPage.js +126 -120
  214. package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
  215. package/dist/bigconsole/pages/DashboardsPage.js +838 -800
  216. package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
  217. package/dist/bigconsole/pages/DataParsersPage.js +263 -315
  218. package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
  219. package/dist/bigconsole/pages/DataSinkBuilderPage.js +301 -341
  220. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  221. package/dist/bigconsole/pages/DataSinkViewPage.js +346 -339
  222. package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
  223. package/dist/bigconsole/pages/DataSinksPage.js +356 -458
  224. package/dist/bigconsole/pages/DataSinksPage.js.map +1 -1
  225. package/dist/bigconsole/pages/DataSourcesPage.js +7 -2
  226. package/dist/bigconsole/pages/DataSourcesPage.js.map +1 -1
  227. package/dist/bigconsole/pages/HomePage.js +186 -193
  228. package/dist/bigconsole/pages/HomePage.js.map +1 -1
  229. package/dist/bigconsole/pages/InsightsPage.js +887 -740
  230. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  231. package/dist/bigconsole/pages/ParserBuilderPage.js +679 -637
  232. package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
  233. package/dist/bigconsole/pages/ParserViewPage.js +368 -342
  234. package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
  235. package/dist/bigconsole/pages/PipelineBuilderPage.js +537 -444
  236. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  237. package/dist/bigconsole/pages/PipelineViewPage.js +412 -377
  238. package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
  239. package/dist/bigconsole/pages/PipelinesPage.js +248 -298
  240. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  241. package/dist/bigconsole/pages/WidgetDemoPage.js +251 -153
  242. package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
  243. package/dist/bigconsole/pages/WorkflowViewPage.js +381 -371
  244. package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
  245. package/dist/bigconsole/pages/WorkflowsPage.js +171 -286
  246. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  247. package/package.json +1 -1
@@ -1,23 +1,25 @@
1
1
  import { useAppNavigate as e } from "../contexts/NavigationContext.js";
2
2
  import "../contexts/index.js";
3
- import t from "../hooks/useDataSinkOperations.js";
4
- import { BIGCONSOLE_PERMISSIONS as n } from "../../constants/permissions.js";
5
- import { isNative as ee, nativeCopyText as te, nativeToast as ne } from "../../utils/nativeBridge.js";
6
- import r from "../components/datasink/CacheTTLSelector.js";
7
- import re from "../components/datasink/RefreshTypeSelector.js";
8
- import { memo as i, useCallback as a, useEffect as o, useMemo as s, useState as c } from "react";
9
- import { useParams as l } from "react-router";
10
- import { AccessDenied as ie, PermissionButton as ae } from "@burdenoff/fe-libs/shared/components";
11
- import { usePermissions as oe } from "@burdenoff/fe-libs/shared/providers/shell";
12
- import { AlertCircle as u, ArrowLeft as se, Check as ce, Copy as le, Database as d, Eye as f, Loader2 as p, Save as ue, Settings as de } from "lucide-react";
13
- import { useI18n as fe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
14
- import { Button as m, Card as h, CardContent as g, CardHeader as _, CardTitle as v, GlassCard as pe, IllustratedEmptyState as me, Input as y, Label as b, PagePurpose as he, Textarea as x } from "@burdenoff/fe-libs/ui";
3
+ import { Section as t, SectionStack as n } from "../components/common/Section.js";
4
+ 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";
8
+ 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 ue, Loader2 as h, Save as de, Settings as fe } from "lucide-react";
15
+ import { useI18n as g } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
16
+ import { Button as _, IllustratedEmptyState as v, Input as y, Label as b, PagePurpose as pe, Textarea as x } from "@burdenoff/fe-libs/ui";
15
17
  import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
16
18
  //#region src/bigconsole/pages/DataSinkBuilderPage.tsx
17
- function ge(e) {
19
+ function me(e) {
18
20
  return e.toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "").substring(0, 64);
19
21
  }
20
- function _e(e, t) {
22
+ function he(e, t) {
21
23
  let n = {};
22
24
  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 {
23
25
  JSON.parse(e.data);
@@ -26,25 +28,25 @@ function _e(e, t) {
26
28
  }
27
29
  return n;
28
30
  }
29
- var T = i(function() {
30
- let { dataSinkId: i } = l(), T = e(), { t: E } = fe(), D = i !== "new" && !!i, { hasPermission: ve, isLoading: ye } = oe(), be = ve(n.DATASINK_READ), xe = D ? n.DATASINK_UPDATE : n.DATASINK_CREATE, [O, k] = c({
31
+ var T = a(function() {
32
+ let { dataSinkId: a } = oe(), T = e(), { t: E } = g(), 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({
31
33
  name: "",
32
34
  key: "",
33
35
  description: "",
34
36
  ttl: 300,
35
37
  refresh: { type: "manual" },
36
38
  data: "{}"
37
- }), [A, j] = c({}), [M, N] = c(!1), [P, F] = c(!1), [I, L] = c(null), [Se, R] = c(!1), [z, B] = c(!1), [V, H] = c(null), [U, W] = c(null), { loading: Ce, error: G, dataSinks: we, fetchDataSink: K, createDataSink: q, updateDataSink: J, getDataSinkData: Y } = t({ skipFetch: !0 }), X = D ? we.find((e) => e.id === i) : null;
38
- o(() => {
39
- D && i && !X && K(i);
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
42
  }, [
41
43
  D,
42
- i,
44
+ a,
43
45
  X,
44
46
  K
45
47
  ]);
46
- let [Z, Te] = c(!1);
47
- o(() => {
48
+ let [Z, Ce] = c(!1);
49
+ s(() => {
48
50
  if (X && !Z) {
49
51
  let e = "";
50
52
  if (X.data) try {
@@ -68,20 +70,20 @@ var T = i(function() {
68
70
  } : void 0
69
71
  } : { type: "manual" },
70
72
  data: e
71
- }), N(!0), Te(!0), j({});
73
+ }), N(!0), Ce(!0), j({});
72
74
  }
73
75
  }, [X, Z]);
74
- let Ee = a((e) => {
76
+ let we = o((e) => {
75
77
  let t = e.target.value;
76
78
  k((e) => ({
77
79
  ...e,
78
80
  name: t,
79
- key: M ? e.key : ge(t)
81
+ key: M ? e.key : me(t)
80
82
  })), j((e) => ({
81
83
  ...e,
82
84
  name: void 0
83
85
  }));
84
- }, [M]), De = a((e) => {
86
+ }, [M]), Te = o((e) => {
85
87
  let t = e.target.value.toLowerCase().replace(/[^a-z0-9_]/g, "");
86
88
  k((e) => ({
87
89
  ...e,
@@ -90,22 +92,22 @@ var T = i(function() {
90
92
  ...e,
91
93
  key: void 0
92
94
  }));
93
- }, []), Oe = a((e) => {
95
+ }, []), Ee = o((e) => {
94
96
  k((t) => ({
95
97
  ...t,
96
98
  description: e.target.value
97
99
  }));
98
- }, []), Q = a((e) => {
100
+ }, []), De = o((e) => {
99
101
  k((t) => ({
100
102
  ...t,
101
103
  ttl: e || 0
102
104
  }));
103
- }, []), ke = a((e) => {
105
+ }, []), Oe = o((e) => {
104
106
  k((t) => ({
105
107
  ...t,
106
108
  refresh: e
107
109
  }));
108
- }, []), Ae = a((e) => {
110
+ }, []), Q = o((e) => {
109
111
  k((t) => ({
110
112
  ...t,
111
113
  data: e.target.value
@@ -113,7 +115,7 @@ var T = i(function() {
113
115
  ...e,
114
116
  data: void 0
115
117
  }));
116
- }, []), je = a(() => {
118
+ }, []), ke = o(() => {
117
119
  try {
118
120
  let e = JSON.parse(O.data);
119
121
  k((t) => ({
@@ -129,11 +131,11 @@ var T = i(function() {
129
131
  data: E("bigconsole.dataSinks.builder.validation.invalidJson", "Invalid JSON format")
130
132
  }));
131
133
  }
132
- }, [O.data, E]), Me = a(async () => {
133
- O.key && (await te(O.key), R(!0), ee() && ne(E("bigconsole.dataSinks.builder.toolbar.keyCopied", "Key copied")), setTimeout(() => R(!1), 2e3));
134
- }, [O.key, E]), $ = a(() => {
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
137
  T("/datasinks");
136
- }, [T]), Ne = a(async () => {
138
+ }, [T]), je = o(async () => {
137
139
  if (!(!D || !X)) {
138
140
  B(!0), W(null);
139
141
  try {
@@ -150,9 +152,9 @@ var T = i(function() {
150
152
  X,
151
153
  Y,
152
154
  E
153
- ]), Pe = a(async (e) => {
155
+ ]), Me = o(async (e) => {
154
156
  e.preventDefault(), L(null);
155
- let t = _e(O, E);
157
+ let t = he(O, E);
156
158
  if (Object.keys(t).length > 0) {
157
159
  j(t);
158
160
  return;
@@ -207,7 +209,7 @@ var T = i(function() {
207
209
  J,
208
210
  T,
209
211
  E
210
- ]), Fe = s(() => {
212
+ ]), Ne = ae(() => {
211
213
  let e = O.name.trim().length >= 2, t = O.key.trim().length > 0, n = !0;
212
214
  if (O.data && O.data.trim()) try {
213
215
  JSON.parse(O.data);
@@ -220,347 +222,305 @@ var T = i(function() {
220
222
  O.key,
221
223
  O.data
222
224
  ]);
223
- return Ce && D ? /* @__PURE__ */ C("div", {
224
- className: "flex items-center justify-center min-h-[400px]",
225
- children: /* @__PURE__ */ C(p, { className: "w-8 h-8 text-text-secondary animate-spin" })
225
+ return xe && D ? /* @__PURE__ */ C("div", {
226
+ className: "flex min-h-[240px] items-center justify-center p-card-padding",
227
+ children: /* @__PURE__ */ C(h, { className: "h-icon-lg w-icon-lg animate-spin text-text-secondary" })
226
228
  }) : G ? /* @__PURE__ */ C("div", {
227
- className: "flex items-center justify-center min-h-[400px] p-card-padding",
228
- children: /* @__PURE__ */ w("div", {
229
- className: "text-center",
230
- children: [
231
- /* @__PURE__ */ C(u, { className: "w-12 h-12 text-status-error-text mx-auto mb-4" }),
232
- /* @__PURE__ */ C("p", {
233
- className: "text-status-error-text text-body-sm font-medium mb-2",
234
- children: E("bigconsole.dataSinks.builder.errors.loadFailed", "Failed to load DataSink")
235
- }),
236
- /* @__PURE__ */ C("p", {
237
- className: "text-text-tertiary text-body-xs",
238
- children: G.message
239
- })
240
- ]
229
+ className: "mx-auto w-full max-w-3xl p-card-padding",
230
+ children: /* @__PURE__ */ C(t, {
231
+ tone: "danger",
232
+ headingLevel: 2,
233
+ title: E("bigconsole.dataSinks.builder.errors.loadFailed", "Failed to load DataSink"),
234
+ description: G.message,
235
+ icon: /* @__PURE__ */ C(d, { className: "h-icon-sm w-icon-sm" }),
236
+ actions: /* @__PURE__ */ w(_, {
237
+ onClick: $,
238
+ variant: "secondary",
239
+ size: "sm",
240
+ children: [/* @__PURE__ */ C(f, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.header.backToDataSinks", "Back to DataSinks")]
241
+ })
241
242
  })
242
- }) : D && !ye && !be ? /* @__PURE__ */ C(ie, {
243
+ }) : D && !_e && !ve ? /* @__PURE__ */ C(se, {
243
244
  title: E("bigconsole.dataSinks.builder.accessDenied.title", "Access Denied"),
244
245
  description: E("bigconsole.dataSinks.builder.accessDenied.description", "You don't have permission to view this data sink.")
245
- }) : /* @__PURE__ */ C("div", {
246
- className: "min-h-screen bg-bg-canvas",
247
- children: /* @__PURE__ */ w("div", {
248
- className: "max-w-3xl mx-auto p-card-padding",
249
- children: [
250
- /* @__PURE__ */ w("div", {
251
- className: "mb-6",
252
- children: [
253
- /* @__PURE__ */ w(m, {
254
- onClick: $,
255
- variant: "ghost",
256
- size: "sm",
257
- className: "mb-4",
258
- children: [/* @__PURE__ */ C(se, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.header.backToDataSinks", "Back to DataSinks")]
259
- }),
260
- /* @__PURE__ */ C("h1", {
261
- className: "text-heading-h1 font-bold text-text-primary",
262
- children: D ? E("bigconsole.dataSinks.builder.header.editTitle", "Edit DataSink") : E("bigconsole.dataSinks.builder.header.createTitle", "Create DataSink")
263
- }),
264
- /* @__PURE__ */ C("p", {
265
- className: "text-body-sm text-text-secondary mt-1",
266
- children: D ? E("bigconsole.dataSinks.builder.header.editSubtitle", "Update the DataSink configuration.") : E("bigconsole.dataSinks.builder.header.createSubtitle", "Create a new DataSink to store and cache data. Use the unique key to connect workflows.")
267
- })
268
- ]
269
- }),
270
- I && /* @__PURE__ */ w("div", {
271
- className: "mb-6 p-4 bg-status-error-bg/10 border border-status-error-border/30 rounded-lg flex items-start gap-3",
272
- children: [/* @__PURE__ */ C(u, { className: "w-5 h-5 text-status-error-text flex-shrink-0 mt-0.5" }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C("p", {
273
- className: "text-sm font-medium text-status-error-text",
274
- children: E("bigconsole.dataSinks.builder.errors.saveFailed", "Failed to save DataSink")
275
- }), /* @__PURE__ */ C("p", {
276
- className: "text-xs text-status-error-text/80 mt-1",
277
- children: I
278
- })] })]
279
- }),
280
- /* @__PURE__ */ C(he, {
281
- className: "mb-6",
282
- 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.")
283
- }),
284
- /* @__PURE__ */ w("form", {
285
- onSubmit: Pe,
286
- className: "space-y-6",
287
- children: [
288
- /* @__PURE__ */ w(pe, {
289
- treatment: "glass",
290
- glow: !0,
291
- children: [/* @__PURE__ */ C(_, {
292
- className: "pb-4",
293
- children: /* @__PURE__ */ w("div", {
294
- className: "flex items-center gap-3",
295
- children: [/* @__PURE__ */ C("div", {
296
- className: "w-8 h-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center",
297
- children: /* @__PURE__ */ C(d, { className: "w-4 h-4 text-action-primary-bg" })
298
- }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C(v, {
299
- className: "text-base",
300
- children: E("bigconsole.dataSinks.builder.basicInfo.title", "Basic Information")
301
- }), /* @__PURE__ */ C("p", {
302
- className: "text-xs text-text-secondary mt-0.5",
303
- children: E("bigconsole.dataSinks.builder.basicInfo.subtitle", "Essential details for your DataSink")
304
- })] })]
305
- })
306
- }), /* @__PURE__ */ w(g, {
307
- className: "space-y-5",
246
+ }) : /* @__PURE__ */ w("div", {
247
+ className: "mx-auto w-full min-w-0 max-w-3xl p-card-padding",
248
+ children: [
249
+ /* @__PURE__ */ w("header", {
250
+ className: "mb-form-gap",
251
+ children: [
252
+ /* @__PURE__ */ w(_, {
253
+ onClick: $,
254
+ variant: "ghost",
255
+ size: "sm",
256
+ className: "mb-4",
257
+ children: [/* @__PURE__ */ C(f, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.header.backToDataSinks", "Back to DataSinks")]
258
+ }),
259
+ /* @__PURE__ */ C("h1", {
260
+ className: "text-2xl font-bold text-text-primary",
261
+ children: D ? E("bigconsole.dataSinks.builder.header.editTitle", "Edit DataSink") : E("bigconsole.dataSinks.builder.header.createTitle", "Create DataSink")
262
+ }),
263
+ /* @__PURE__ */ C("p", {
264
+ className: "mt-1 text-sm text-text-secondary",
265
+ children: D ? E("bigconsole.dataSinks.builder.header.editSubtitle", "Update the DataSink configuration.") : E("bigconsole.dataSinks.builder.header.createSubtitle", "Create a new DataSink to store and cache data. Use the unique key to connect workflows.")
266
+ })
267
+ ]
268
+ }),
269
+ /* @__PURE__ */ C(pe, {
270
+ className: "mb-section-gap",
271
+ 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
+ }),
273
+ I && /* @__PURE__ */ C(t, {
274
+ tone: "danger",
275
+ headingLevel: 2,
276
+ title: E("bigconsole.dataSinks.builder.errors.saveFailed", "Failed to save DataSink"),
277
+ description: I,
278
+ icon: /* @__PURE__ */ C(d, { className: "h-icon-sm w-icon-sm" }),
279
+ className: "mb-section-gap"
280
+ }),
281
+ /* @__PURE__ */ C("form", {
282
+ onSubmit: Me,
283
+ children: /* @__PURE__ */ w(n, { children: [
284
+ /* @__PURE__ */ C(t, {
285
+ emphasis: "primary",
286
+ headingLevel: 2,
287
+ title: E("bigconsole.dataSinks.builder.basicInfo.title", "Basic Information"),
288
+ description: E("bigconsole.dataSinks.builder.basicInfo.subtitle", "Essential details for your DataSink"),
289
+ icon: /* @__PURE__ */ C(p, { className: "h-icon-sm w-icon-sm" }),
290
+ bodyClassName: "space-y-form-gap",
291
+ children: /* @__PURE__ */ w(S, { children: [
292
+ /* @__PURE__ */ w("div", {
293
+ className: "space-y-2",
308
294
  children: [
309
- /* @__PURE__ */ w("div", {
310
- className: "space-y-2",
295
+ /* @__PURE__ */ w(b, {
296
+ htmlFor: "name",
311
297
  children: [
312
- /* @__PURE__ */ w(b, {
313
- htmlFor: "name",
314
- children: [
315
- E("bigconsole.dataSinks.builder.basicInfo.nameLabel", "Name"),
316
- " ",
317
- /* @__PURE__ */ C("span", {
318
- className: "text-status-error-text",
319
- children: "*"
320
- })
321
- ]
322
- }),
323
- /* @__PURE__ */ C(y, {
324
- id: "name",
325
- type: "text",
326
- value: O.name,
327
- onChange: Ee,
328
- placeholder: E("bigconsole.dataSinks.builder.basicInfo.namePlaceholder", "e.g., Sales Metrics"),
329
- className: A.name ? "border-status-error-border" : ""
330
- }),
331
- A.name && /* @__PURE__ */ C("p", {
332
- className: "text-body-xs text-status-error-text",
333
- children: A.name
298
+ E("bigconsole.dataSinks.builder.basicInfo.nameLabel", "Name"),
299
+ " ",
300
+ /* @__PURE__ */ C("span", {
301
+ className: "text-status-error-text",
302
+ children: "*"
334
303
  })
335
304
  ]
336
305
  }),
337
- /* @__PURE__ */ w("div", {
338
- className: "space-y-2",
306
+ /* @__PURE__ */ C(y, {
307
+ id: "name",
308
+ type: "text",
309
+ value: O.name,
310
+ onChange: we,
311
+ placeholder: E("bigconsole.dataSinks.builder.basicInfo.namePlaceholder", "e.g., Sales Metrics"),
312
+ className: A.name ? "border-status-error-border" : ""
313
+ }),
314
+ A.name && /* @__PURE__ */ C("p", {
315
+ className: "text-xs text-status-error-text",
316
+ children: A.name
317
+ })
318
+ ]
319
+ }),
320
+ /* @__PURE__ */ w("div", {
321
+ className: "space-y-2",
322
+ children: [
323
+ /* @__PURE__ */ w(b, {
324
+ htmlFor: "key",
339
325
  children: [
340
- /* @__PURE__ */ w(b, {
341
- htmlFor: "key",
342
- children: [
343
- E("bigconsole.dataSinks.builder.basicInfo.keyLabel", "Unique Key"),
344
- " ",
345
- /* @__PURE__ */ C("span", {
346
- className: "text-status-error-text",
347
- children: "*"
348
- })
349
- ]
350
- }),
351
- /* @__PURE__ */ w("div", {
352
- className: "flex gap-2",
353
- children: [/* @__PURE__ */ C(y, {
354
- id: "key",
355
- type: "text",
356
- value: O.key,
357
- onChange: De,
358
- placeholder: E("bigconsole.dataSinks.builder.basicInfo.keyPlaceholder", "sales_metrics"),
359
- disabled: D,
360
- className: `font-mono flex-1 ${A.key ? "border-status-error-border" : ""}`
361
- }), O.key && /* @__PURE__ */ C(m, {
362
- type: "button",
363
- onClick: Me,
364
- variant: "outline",
365
- size: "sm",
366
- className: "px-3",
367
- children: Se ? /* @__PURE__ */ C(ce, { className: "w-4 h-4 text-status-success-text" }) : /* @__PURE__ */ C(le, { className: "w-4 h-4" })
368
- })]
369
- }),
370
- A.key && /* @__PURE__ */ C("p", {
371
- className: "text-body-xs text-status-error-text",
372
- children: A.key
373
- }),
374
- /* @__PURE__ */ C("p", {
375
- className: "text-body-xs text-text-tertiary",
376
- children: D ? E("bigconsole.dataSinks.builder.basicInfo.keyHelpEdit", "Key cannot be changed. Use this key in your workflows to push data.") : E("bigconsole.dataSinks.builder.basicInfo.keyHelpCreate", "Auto-generated from name. This key will be used by workflows to push data.")
326
+ E("bigconsole.dataSinks.builder.basicInfo.keyLabel", "Unique Key"),
327
+ " ",
328
+ /* @__PURE__ */ C("span", {
329
+ className: "text-status-error-text",
330
+ children: "*"
377
331
  })
378
332
  ]
379
333
  }),
380
334
  /* @__PURE__ */ w("div", {
381
- className: "space-y-2",
382
- children: [/* @__PURE__ */ C(b, {
383
- htmlFor: "description",
384
- children: E("bigconsole.dataSinks.builder.basicInfo.descriptionLabel", "Description")
385
- }), /* @__PURE__ */ C(x, {
386
- id: "description",
387
- value: O.description,
388
- onChange: Oe,
389
- placeholder: E("bigconsole.dataSinks.builder.basicInfo.descriptionPlaceholder", "Describe what data this sink stores..."),
390
- rows: 2,
391
- className: "resize-none"
335
+ className: "flex gap-2",
336
+ children: [/* @__PURE__ */ C(y, {
337
+ id: "key",
338
+ type: "text",
339
+ value: O.key,
340
+ onChange: Te,
341
+ placeholder: E("bigconsole.dataSinks.builder.basicInfo.keyPlaceholder", "sales_metrics"),
342
+ disabled: D,
343
+ className: `font-mono flex-1 ${A.key ? "border-status-error-border" : ""}`
344
+ }), O.key && /* @__PURE__ */ C(_, {
345
+ type: "button",
346
+ onClick: Ae,
347
+ variant: "outline",
348
+ size: "sm",
349
+ 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" })
392
351
  })]
393
- })
394
- ]
395
- })]
396
- }),
397
- /* @__PURE__ */ w(h, { children: [/* @__PURE__ */ C(_, {
398
- className: "pb-4",
399
- children: /* @__PURE__ */ w("div", {
400
- className: "flex items-center gap-3",
401
- children: [/* @__PURE__ */ C("div", {
402
- className: "w-8 h-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center",
403
- children: /* @__PURE__ */ C(de, { className: "w-4 h-4 text-action-primary-bg" })
404
- }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C(v, {
405
- className: "text-base",
406
- children: E("bigconsole.dataSinks.builder.config.title", "Configuration")
407
- }), /* @__PURE__ */ C("p", {
408
- className: "text-xs text-text-secondary mt-0.5",
409
- children: E("bigconsole.dataSinks.builder.config.subtitle", "Cache and refresh settings")
410
- })] })]
411
- })
412
- }), /* @__PURE__ */ w(g, {
413
- className: "space-y-5",
414
- children: [/* @__PURE__ */ w("div", {
415
- className: "space-y-2",
416
- children: [
417
- /* @__PURE__ */ C(b, { children: E("bigconsole.dataSinks.builder.config.cacheDurationLabel", "Cache Duration") }),
418
- /* @__PURE__ */ C(r, {
419
- value: O.ttl,
420
- onChange: Q
352
+ }),
353
+ A.key && /* @__PURE__ */ C("p", {
354
+ className: "text-xs text-status-error-text",
355
+ children: A.key
421
356
  }),
422
357
  /* @__PURE__ */ C("p", {
423
- className: "text-body-xs text-text-tertiary",
424
- children: E("bigconsole.dataSinks.builder.config.cacheDurationHelp", "How long cached data remains valid before requiring refresh.")
358
+ className: "text-xs text-text-muted",
359
+ children: D ? E("bigconsole.dataSinks.builder.basicInfo.keyHelpEdit", "Key cannot be changed. Use this key in your workflows to push data.") : E("bigconsole.dataSinks.builder.basicInfo.keyHelpCreate", "Auto-generated from name. This key will be used by workflows to push data.")
425
360
  })
426
361
  ]
427
- }), /* @__PURE__ */ C(re, {
428
- value: O.refresh,
429
- onChange: ke
430
- })]
431
- })] }),
432
- /* @__PURE__ */ w(h, { children: [/* @__PURE__ */ C(_, {
433
- className: "pb-4",
434
- children: /* @__PURE__ */ w("div", {
435
- className: "flex items-center justify-between",
436
- children: [/* @__PURE__ */ w("div", {
437
- className: "flex items-center gap-3",
438
- children: [/* @__PURE__ */ C("div", {
439
- className: "w-8 h-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center",
440
- children: /* @__PURE__ */ C(d, { className: "w-4 h-4 text-action-primary-bg" })
441
- }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C(v, {
442
- className: "text-base",
443
- children: E("bigconsole.dataSinks.builder.dataPayload.title", "Data Payload")
444
- }), /* @__PURE__ */ C("p", {
445
- className: "text-xs text-text-secondary mt-0.5",
446
- children: 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)")
447
- })] })]
448
- }), /* @__PURE__ */ C(m, {
449
- type: "button",
450
- onClick: je,
451
- variant: "outline",
452
- size: "sm",
453
- children: E("bigconsole.dataSinks.builder.dataPayload.formatJson", "Format JSON")
362
+ }),
363
+ /* @__PURE__ */ w("div", {
364
+ className: "space-y-2",
365
+ children: [/* @__PURE__ */ C(b, {
366
+ htmlFor: "description",
367
+ children: E("bigconsole.dataSinks.builder.basicInfo.descriptionLabel", "Description")
368
+ }), /* @__PURE__ */ C(x, {
369
+ id: "description",
370
+ value: O.description,
371
+ onChange: Ee,
372
+ placeholder: E("bigconsole.dataSinks.builder.basicInfo.descriptionPlaceholder", "Describe what data this sink stores..."),
373
+ rows: 2,
374
+ className: "resize-none"
454
375
  })]
455
376
  })
456
- }), /* @__PURE__ */ C(g, { children: /* @__PURE__ */ w("div", {
377
+ ] })
378
+ }),
379
+ /* @__PURE__ */ C(t, {
380
+ headingLevel: 2,
381
+ title: E("bigconsole.dataSinks.builder.config.title", "Configuration"),
382
+ description: E("bigconsole.dataSinks.builder.config.subtitle", "Cache and refresh settings"),
383
+ icon: /* @__PURE__ */ C(fe, { className: "h-icon-sm w-icon-sm" }),
384
+ bodyClassName: "space-y-form-gap",
385
+ children: /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ w("div", {
457
386
  className: "space-y-2",
458
387
  children: [
459
- /* @__PURE__ */ C(x, {
460
- value: O.data,
461
- onChange: Ae,
462
- placeholder: E("bigconsole.dataSinks.builder.dataPayload.dataPlaceholder", "{\"key\": \"value\"}"),
463
- rows: 10,
464
- className: `font-mono text-xs resize-y ${A.data ? "border-status-error-border" : ""}`
465
- }),
466
- A.data && /* @__PURE__ */ C("p", {
467
- className: "text-body-xs text-status-error-text",
468
- children: A.data
388
+ /* @__PURE__ */ C(b, { children: E("bigconsole.dataSinks.builder.config.cacheDurationLabel", "Cache Duration") }),
389
+ /* @__PURE__ */ C(re, {
390
+ value: O.ttl,
391
+ onChange: De,
392
+ hideLabel: !0
469
393
  }),
470
394
  /* @__PURE__ */ C("p", {
471
- className: "text-body-xs text-text-tertiary",
472
- children: E("bigconsole.dataSinks.builder.dataPayload.help", "Enter valid JSON data. This data will be stored and can be accessed by widgets via parsers.")
395
+ className: "text-xs text-text-muted",
396
+ children: E("bigconsole.dataSinks.builder.config.cacheDurationHelp", "How long cached data remains valid before requiring refresh.")
473
397
  })
474
398
  ]
475
- }) })] }),
476
- D && X && /* @__PURE__ */ w(h, { children: [/* @__PURE__ */ C(_, {
477
- className: "pb-4",
478
- children: /* @__PURE__ */ w("div", {
479
- className: "flex items-center justify-between",
480
- children: [/* @__PURE__ */ w("div", {
481
- className: "flex items-center gap-3",
482
- children: [/* @__PURE__ */ C("div", {
483
- className: "w-8 h-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center",
484
- children: /* @__PURE__ */ C(f, { className: "w-4 h-4 text-action-primary-bg" })
485
- }), /* @__PURE__ */ w("div", { children: [/* @__PURE__ */ C(v, {
486
- className: "text-base",
487
- children: E("bigconsole.dataSinks.builder.preview.title", "Data Preview")
488
- }), /* @__PURE__ */ C("p", {
489
- className: "text-xs text-text-secondary mt-0.5",
490
- children: E("bigconsole.dataSinks.builder.preview.subtitle", "Preview the first 20 records")
491
- })] })]
492
- }), /* @__PURE__ */ C(m, {
493
- type: "button",
494
- onClick: Ne,
495
- variant: "outline",
496
- size: "sm",
497
- disabled: z,
498
- children: z ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(p, { className: "w-4 h-4 mr-2 animate-spin" }), E("bigconsole.dataSinks.builder.preview.loading", "Loading...")] }) : /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(f, { className: "w-4 h-4 mr-2" }), E("bigconsole.dataSinks.builder.preview.showData", "Show Data")] })
499
- })]
399
+ }), /* @__PURE__ */ C(ie, {
400
+ value: O.refresh,
401
+ onChange: Oe
402
+ })] })
403
+ }),
404
+ /* @__PURE__ */ C(t, {
405
+ headingLevel: 2,
406
+ title: E("bigconsole.dataSinks.builder.dataPayload.title", "Data Payload"),
407
+ 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
+ icon: /* @__PURE__ */ C(p, { className: "h-icon-sm w-icon-sm" }),
409
+ actions: /* @__PURE__ */ C(_, {
410
+ type: "button",
411
+ onClick: ke,
412
+ variant: "outline",
413
+ size: "sm",
414
+ children: E("bigconsole.dataSinks.builder.dataPayload.formatJson", "Format JSON")
415
+ }),
416
+ bodyClassName: "space-y-2",
417
+ children: /* @__PURE__ */ w(S, { children: [
418
+ /* @__PURE__ */ C(x, {
419
+ "aria-label": E("bigconsole.dataSinks.builder.dataPayload.title", "Data Payload"),
420
+ value: O.data,
421
+ onChange: Q,
422
+ placeholder: E("bigconsole.dataSinks.builder.dataPayload.dataPlaceholder", "{\"key\": \"value\"}"),
423
+ rows: 10,
424
+ className: `resize-y font-mono text-xs ${A.data ? "border-status-error-border" : ""}`
425
+ }),
426
+ A.data && /* @__PURE__ */ C("p", {
427
+ className: "text-xs text-status-error-text",
428
+ children: A.data
429
+ }),
430
+ /* @__PURE__ */ C("p", {
431
+ className: "text-xs text-text-muted",
432
+ children: E("bigconsole.dataSinks.builder.dataPayload.help", "Enter valid JSON data. This data will be stored and can be accessed by widgets via parsers.")
500
433
  })
501
- }), (V || U) && /* @__PURE__ */ C(g, { children: U ? /* @__PURE__ */ C("div", {
502
- className: "p-4 bg-status-error-bg/10 border border-status-error-border/30 rounded-md",
434
+ ] })
435
+ }),
436
+ D && X && /* @__PURE__ */ C(t, {
437
+ emphasis: "muted",
438
+ headingLevel: 2,
439
+ title: E("bigconsole.dataSinks.builder.preview.title", "Data Preview"),
440
+ description: E("bigconsole.dataSinks.builder.preview.subtitle", "Preview the first 20 records"),
441
+ icon: /* @__PURE__ */ C(m, { className: "h-icon-sm w-icon-sm" }),
442
+ actions: /* @__PURE__ */ C(_, {
443
+ type: "button",
444
+ onClick: je,
445
+ variant: "outline",
446
+ size: "sm",
447
+ disabled: z,
448
+ children: z ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(h, { 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
+ }),
450
+ children: U ? /* @__PURE__ */ C(t, {
451
+ tone: "danger",
452
+ padding: "compact",
453
+ headingLevel: 3,
454
+ title: "Could not load the preview",
503
455
  children: /* @__PURE__ */ C("p", {
504
456
  className: "text-sm text-status-error-text",
505
457
  children: U
506
458
  })
507
459
  }) : V && V.length > 0 ? /* @__PURE__ */ C("pre", {
508
- className: "p-4 bg-bg-sunken rounded-md overflow-auto max-h-[300px] text-xs font-mono",
460
+ className: "max-h-[300px] min-w-0 overflow-auto rounded-input bg-bg-surface p-3 font-mono text-xs",
509
461
  children: JSON.stringify(V, null, 2)
510
- }) : /* @__PURE__ */ C(me, {
462
+ }) : V ? /* @__PURE__ */ C(v, {
511
463
  illustration: "empty-generic",
512
464
  title: E("bigconsole.dataSinks.builder.preview.emptyTitle", "No data available yet"),
513
465
  description: E("bigconsole.dataSinks.builder.preview.emptyDescription", "Connect a workflow to this sink's key to start pushing data.")
514
- }) })] }),
515
- /* @__PURE__ */ w("div", {
516
- className: "flex items-center justify-end gap-4 pt-4",
517
- children: [/* @__PURE__ */ C(m, {
518
- type: "button",
519
- onClick: $,
520
- variant: "secondary",
521
- children: E("bigconsole.dataSinks.builder.actions.cancel", "Cancel")
522
- }), /* @__PURE__ */ C(ae, {
523
- permission: xe,
524
- deniedBehavior: "disable",
525
- children: /* @__PURE__ */ C(m, {
526
- type: "submit",
527
- disabled: !Fe || P,
528
- variant: "default",
529
- children: P ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(p, { 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")] })
530
- })
531
- })]
466
+ }) : /* @__PURE__ */ C("p", {
467
+ className: "text-sm text-text-secondary",
468
+ children: "Select \"Show data\" to load the records this sink currently holds."
532
469
  })
533
- ]
534
- }),
535
- !D && /* @__PURE__ */ w("div", {
536
- className: "mt-6 p-4 bg-bg-sunken rounded-lg border border-border-default",
537
- children: [/* @__PURE__ */ C("h3", {
538
- className: "text-sm font-medium text-text-primary mb-2",
539
- children: E("bigconsole.dataSinks.builder.whatsNext.title", "What's Next?")
540
- }), /* @__PURE__ */ w("ol", {
541
- className: "list-decimal list-inside text-xs text-text-secondary space-y-1",
542
- children: [
543
- /* @__PURE__ */ C("li", { children: E("bigconsole.dataSinks.builder.whatsNext.step1", "Create this DataSink to get your unique key") }),
544
- /* @__PURE__ */ w("li", { children: [
545
- E("bigconsole.dataSinks.builder.whatsNext.step2Prefix", "Go to"),
546
- " ",
547
- /* @__PURE__ */ C("strong", { children: E("bigconsole.dataSinks.builder.whatsNext.workflows", "Workflows") }),
548
- " ",
549
- E("bigconsole.dataSinks.builder.whatsNext.step2Suffix", "and create a FluidGrids workflow")
550
- ] }),
551
- /* @__PURE__ */ C("li", { children: E("bigconsole.dataSinks.builder.whatsNext.step3", "Use the unique key in your workflow to push data to this DataSink") }),
552
- /* @__PURE__ */ w("li", { children: [
553
- E("bigconsole.dataSinks.builder.whatsNext.step4Prefix", "Create"),
554
- " ",
555
- /* @__PURE__ */ C("strong", { children: E("bigconsole.dataSinks.builder.whatsNext.parsers", "Parsers") }),
556
- " ",
557
- E("bigconsole.dataSinks.builder.whatsNext.step4Suffix", "to transform the data using JQ or JSONata")
558
- ] })
559
- ]
560
- })]
561
- })
562
- ]
563
- })
470
+ }),
471
+ !D && /* @__PURE__ */ C(t, {
472
+ tone: "info",
473
+ emphasis: "muted",
474
+ headingLevel: 2,
475
+ title: E("bigconsole.dataSinks.builder.whatsNext.title", "What's Next?"),
476
+ icon: /* @__PURE__ */ C(ue, { className: "h-icon-sm w-icon-sm" }),
477
+ children: /* @__PURE__ */ w("ol", {
478
+ className: "list-inside list-decimal space-y-1 text-xs text-text-secondary",
479
+ children: [
480
+ /* @__PURE__ */ C("li", { children: E("bigconsole.dataSinks.builder.whatsNext.step1", "Create this DataSink to get your unique key") }),
481
+ /* @__PURE__ */ w("li", { children: [
482
+ E("bigconsole.dataSinks.builder.whatsNext.step2Prefix", "Go to"),
483
+ " ",
484
+ /* @__PURE__ */ C("strong", { children: E("bigconsole.dataSinks.builder.whatsNext.workflows", "Workflows") }),
485
+ " ",
486
+ E("bigconsole.dataSinks.builder.whatsNext.step2Suffix", "and create a FluidGrids workflow")
487
+ ] }),
488
+ /* @__PURE__ */ C("li", { children: E("bigconsole.dataSinks.builder.whatsNext.step3", "Use the unique key in your workflow to push data to this DataSink") }),
489
+ /* @__PURE__ */ w("li", { children: [
490
+ E("bigconsole.dataSinks.builder.whatsNext.step4Prefix", "Create"),
491
+ " ",
492
+ /* @__PURE__ */ C("strong", { children: E("bigconsole.dataSinks.builder.whatsNext.parsers", "Parsers") }),
493
+ " ",
494
+ E("bigconsole.dataSinks.builder.whatsNext.step4Suffix", "to transform the data using JQ or JSONata")
495
+ ] })
496
+ ]
497
+ })
498
+ }),
499
+ /* @__PURE__ */ w(t, {
500
+ emphasis: "bare",
501
+ padding: "none",
502
+ "aria-label": "Save or discard this data sink",
503
+ className: "border-t border-[var(--color-border-subtle)] pt-form-gap",
504
+ bodyClassName: "flex flex-wrap items-center justify-end gap-control-gap",
505
+ children: [/* @__PURE__ */ C(_, {
506
+ type: "button",
507
+ onClick: $,
508
+ variant: "secondary",
509
+ children: E("bigconsole.dataSinks.builder.actions.cancel", "Cancel")
510
+ }), /* @__PURE__ */ C(l, {
511
+ permission: ye,
512
+ deniedBehavior: "disable",
513
+ children: /* @__PURE__ */ C(_, {
514
+ type: "submit",
515
+ disabled: !Ne || P,
516
+ variant: "default",
517
+ children: P ? /* @__PURE__ */ w(S, { children: [/* @__PURE__ */ C(h, { 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")] })
518
+ })
519
+ })]
520
+ })
521
+ ] })
522
+ })
523
+ ]
564
524
  });
565
525
  });
566
526
  //#endregion