@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,15 +1,23 @@
1
- import e from "../components/widgets/WidgetErrorBoundary.js";
2
- import t from "../renderers/adapters/BigConsoleRenderer.js";
3
- import { PROPOSABLE_WIDGET_TYPES as n, derivePreviewState as r, validateProposal as i } from "./proposalContract.js";
4
- import { localProposalSource as a } from "./proposalSource.js";
5
- import { memo as o, useCallback as s, useEffect as c, useMemo as l, useState as u } from "react";
6
- import { AlertTriangle as ee, Check as d, Loader2 as f, RefreshCw as p, Sparkles as m, X as te } from "lucide-react";
7
- import { useI18n as h } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
8
- import { Button as g, Input as _, Label as v, Textarea as y } from "@burdenoff/fe-libs/ui";
9
- import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
1
+ import { Section as e, SectionStack as t } from "../components/common/Section.js";
2
+ import "../components/common/index.js";
3
+ import n from "../components/widgets/WidgetErrorBoundary.js";
4
+ import ee from "../renderers/adapters/BigConsoleRenderer.js";
5
+ import { PROPOSABLE_WIDGET_TYPES as te, derivePreviewState as r, validateProposal as i } from "./proposalContract.js";
6
+ import { localProposalSource as ne } from "./proposalSource.js";
7
+ import { memo as a, useCallback as o, useEffect as re, useMemo as s, useState as c } from "react";
8
+ import { AlertTriangle as l, Check as u, Loader2 as d, RefreshCw as ie, Sparkles as ae, X as oe } from "lucide-react";
9
+ import { useI18n as se } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
10
+ import { Button as f, Input as p, Label as m, Textarea as ce } from "@burdenoff/fe-libs/ui";
11
+ import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
10
12
  //#region src/bigconsole/customWidget/CustomWidgetProposalPanel.tsx
11
- var ne = "w-full";
12
- function C(e, t) {
13
+ var v = "w-full", y = {
14
+ loading: "neutral",
15
+ valid: "neutral",
16
+ "no-data": "warning",
17
+ "field-mismatch": "warning",
18
+ "access-error": "danger"
19
+ };
20
+ function b(e, t) {
13
21
  let n = (/* @__PURE__ */ new Date(0)).toISOString();
14
22
  return {
15
23
  id: `preview-${e.id}`,
@@ -37,14 +45,14 @@ function C(e, t) {
37
45
  updatedAt: n
38
46
  };
39
47
  }
40
- function re(e) {
48
+ function x(e) {
41
49
  if (Array.isArray(e)) {
42
50
  let t = e.find((e) => e && typeof e == "object");
43
51
  return t ? Object.keys(t) : [];
44
52
  }
45
53
  if (e && typeof e == "object") return Object.keys(e);
46
54
  }
47
- function ie(e) {
55
+ function S(e) {
48
56
  if (Array.isArray(e)) return e.length;
49
57
  if (e && typeof e == "object") {
50
58
  let t = e.cells;
@@ -52,400 +60,414 @@ function ie(e) {
52
60
  }
53
61
  return 0;
54
62
  }
55
- var w = o(function({ sinks: o, parsers: w, resolvePreviewData: T, onApprove: E, onClose: D, source: O = a }) {
56
- let { t: k } = h(), A = l(() => ({
63
+ var C = a(function({ sinks: a, parsers: C, resolvePreviewData: w, onApprove: T, onClose: E, source: D = ne }) {
64
+ let { t: O } = se(), k = s(() => ({
57
65
  loading: {
58
- title: k("bigconsole.widget.customWidget.preview.loading.title", "Building preview…"),
59
- body: k("bigconsole.widget.customWidget.preview.loading.body", "Running the parser against the selected DataSink.")
66
+ title: O("bigconsole.widget.customWidget.preview.loading.title", "Building preview…"),
67
+ body: O("bigconsole.widget.customWidget.preview.loading.body", "Running the parser against the selected DataSink.")
60
68
  },
61
69
  valid: {
62
- title: k("bigconsole.widget.customWidget.preview.valid.title", "Preview"),
70
+ title: O("bigconsole.widget.customWidget.preview.valid.title", "Preview"),
63
71
  body: ""
64
72
  },
65
73
  "no-data": {
66
- title: k("bigconsole.widget.customWidget.preview.noData.title", "No data returned"),
67
- body: k("bigconsole.widget.customWidget.preview.noData.body", "The binding is valid but the parser returned no rows. The widget will render empty until the sink has data.")
74
+ title: O("bigconsole.widget.customWidget.preview.noData.title", "No data returned"),
75
+ body: O("bigconsole.widget.customWidget.preview.noData.body", "The binding is valid but the parser returned no rows. The widget will render empty until the sink has data.")
68
76
  },
69
77
  "field-mismatch": {
70
- title: k("bigconsole.widget.customWidget.preview.fieldMismatch.title", "Field mismatch"),
71
- body: k("bigconsole.widget.customWidget.preview.fieldMismatch.body", "Some mapped fields are not present in the parser output. Fix the mapping below before approving.")
78
+ title: O("bigconsole.widget.customWidget.preview.fieldMismatch.title", "Field mismatch"),
79
+ body: O("bigconsole.widget.customWidget.preview.fieldMismatch.body", "Some mapped fields are not present in the parser output. Fix the mapping below before approving.")
72
80
  },
73
81
  "access-error": {
74
- title: k("bigconsole.widget.customWidget.preview.accessError.title", "Cannot read this data"),
75
- body: k("bigconsole.widget.customWidget.preview.accessError.body", "You do not have access to the proposed DataSink or parser in this workspace.")
82
+ title: O("bigconsole.widget.customWidget.preview.accessError.title", "Cannot read this data"),
83
+ body: O("bigconsole.widget.customWidget.preview.accessError.body", "You do not have access to the proposed DataSink or parser in this workspace.")
76
84
  }
77
- }), [k]), [j, ae] = u(""), [M, N] = u(null), [P, F] = u(!1), [I, L] = u(!1), [R, z] = u(null), [B, V] = u(void 0), [H, U] = u(!1), [W, G] = u(!1), K = l(() => o.map((e) => e.id), [o]), q = l(() => w.map((e) => e.id), [w]), J = l(() => re(B), [B]), Y = l(() => M ? i(M, {
78
- permittedDataSinkIds: K,
79
- permittedParserIds: q,
80
- availableFields: J
85
+ }), [O]), [A, le] = c(""), [j, M] = c(null), [N, P] = c(!1), [F, I] = c(!1), [L, R] = c(null), [z, B] = c(void 0), [V, H] = c(!1), [U, W] = c(!1), G = s(() => a.map((e) => e.id), [a]), K = s(() => C.map((e) => e.id), [C]), q = s(() => x(z), [z]), J = s(() => j ? i(j, {
86
+ permittedDataSinkIds: G,
87
+ permittedParserIds: K,
88
+ availableFields: q
81
89
  }) : {
82
90
  issues: [],
83
91
  canApprove: !1
84
92
  }, [
85
- M,
93
+ j,
94
+ G,
86
95
  K,
87
- q,
88
- J
89
- ]), X = l(() => r(Y, {
90
- loading: H,
91
- accessError: W,
92
- rowCount: ie(B)
96
+ q
97
+ ]), Y = s(() => r(J, {
98
+ loading: V,
99
+ accessError: U,
100
+ rowCount: S(z)
93
101
  }), [
94
- Y,
95
- H,
96
- W,
97
- B
102
+ J,
103
+ V,
104
+ U,
105
+ z
98
106
  ]);
99
- c(() => {
100
- if (!M || !M.binding.dataSinkId) {
101
- V(void 0);
107
+ re(() => {
108
+ if (!j || !j.binding.dataSinkId) {
109
+ B(void 0);
102
110
  return;
103
111
  }
104
112
  let e = !1;
105
- return U(!0), G(!1), T(M).then((t) => {
106
- e || V(t);
113
+ return H(!0), W(!1), w(j).then((t) => {
114
+ e || B(t);
107
115
  }).catch(() => {
108
- e || (V(void 0), G(!0));
116
+ e || (B(void 0), W(!0));
109
117
  }).finally(() => {
110
- e || U(!1);
118
+ e || H(!1);
111
119
  }), () => {
112
120
  e = !0;
113
121
  };
114
- }, [M ? `${M.binding.dataSinkId}|${M.binding.parserId ?? ""}|${M.binding.dataPath ?? ""}` : "", T]);
115
- let oe = s(async () => {
116
- if (j.trim()) {
117
- F(!0), z(null);
122
+ }, [j ? `${j.binding.dataSinkId}|${j.binding.parserId ?? ""}|${j.binding.dataPath ?? ""}` : "", w]);
123
+ let ue = o(async () => {
124
+ if (A.trim()) {
125
+ P(!0), R(null);
118
126
  try {
119
- N(await O.propose({
120
- prompt: j.trim(),
121
- sinks: o,
122
- parsers: w
127
+ M(await D.propose({
128
+ prompt: A.trim(),
129
+ sinks: a,
130
+ parsers: C
123
131
  }));
124
132
  } finally {
125
- F(!1);
133
+ P(!1);
126
134
  }
127
135
  }
128
136
  }, [
129
- j,
130
- O,
131
- o,
132
- w
133
- ]), Z = s((e) => {
134
- N((t) => t && e(t));
135
- }, []), se = s(() => {
136
- N(null), V(void 0), G(!1), z(null);
137
- }, []), ce = s(async () => {
138
- if (!(!M || !Y.canApprove)) {
139
- L(!0), z(null);
137
+ A,
138
+ D,
139
+ a,
140
+ C
141
+ ]), X = o((e) => {
142
+ M((t) => t && e(t));
143
+ }, []), de = o(() => {
144
+ M(null), B(void 0), W(!1), R(null);
145
+ }, []), Z = o(async () => {
146
+ if (!(!j || !J.canApprove)) {
147
+ I(!0), R(null);
140
148
  try {
141
- await E(M), D();
149
+ await T(j), E();
142
150
  } catch (e) {
143
- z(e instanceof Error ? e.message : k("bigconsole.widget.customWidget.error.couldNotSaveWidget", "Could not save the widget."));
151
+ R(e instanceof Error ? e.message : O("bigconsole.widget.customWidget.error.couldNotSaveWidget", "Could not save the widget."));
144
152
  } finally {
145
- L(!1);
153
+ I(!1);
146
154
  }
147
155
  }
148
156
  }, [
149
- M,
150
- Y.canApprove,
157
+ j,
158
+ J.canApprove,
159
+ T,
151
160
  E,
152
- D,
153
- k
154
- ]), Q = Y.issues.filter((e) => e.severity === "error"), $ = Y.issues.filter((e) => e.severity === "warning");
155
- return /* @__PURE__ */ S("section", {
161
+ O
162
+ ]), Q = J.issues.filter((e) => e.severity === "error"), $ = J.issues.filter((e) => e.severity === "warning");
163
+ return /* @__PURE__ */ g("section", {
156
164
  "data-testid": "custom-widget-proposal-panel",
157
- "aria-label": k("bigconsole.widget.customWidget.panel.ariaLabel", "AI custom widget builder"),
158
- className: "flex h-full w-full flex-col gap-4 overflow-y-auto p-4",
159
- children: [/* @__PURE__ */ S("div", {
160
- className: "flex flex-col gap-2",
161
- children: [
162
- /* @__PURE__ */ S(v, {
163
- htmlFor: "custom-widget-prompt",
164
- className: "flex items-center gap-2",
165
- children: [/* @__PURE__ */ x(m, {
166
- className: "size-4",
165
+ "aria-label": O("bigconsole.widget.customWidget.panel.ariaLabel", "AI custom widget builder"),
166
+ className: "flex h-full w-full min-w-0 flex-col overflow-y-auto p-4",
167
+ children: /* @__PURE__ */ _(t, { children: [/* @__PURE__ */ g(e, {
168
+ title: O("bigconsole.widget.customWidget.prompt.label", "Describe the widget you need"),
169
+ description: "Plain English. The assistant proposes a typed widget you can edit before anything is saved.",
170
+ icon: /* @__PURE__ */ g(ae, {
171
+ className: "size-4",
172
+ "aria-hidden": "true"
173
+ }),
174
+ actions: /* @__PURE__ */ _("div", {
175
+ className: "flex flex-wrap gap-2",
176
+ children: [/* @__PURE__ */ _(f, {
177
+ "data-testid": "custom-widget-generate",
178
+ onClick: ue,
179
+ disabled: !A.trim() || N,
180
+ children: [N ? /* @__PURE__ */ g(d, {
181
+ className: "mr-2 size-4 animate-spin",
167
182
  "aria-hidden": "true"
168
- }), k("bigconsole.widget.customWidget.prompt.label", "Describe the widget you need")]
169
- }),
170
- /* @__PURE__ */ x(y, {
183
+ }) : null, j ? O("bigconsole.widget.customWidget.action.regenerate", "Regenerate") : O("bigconsole.widget.customWidget.action.generateProposal", "Generate proposal")]
184
+ }), j ? /* @__PURE__ */ _(f, {
185
+ variant: "outline",
186
+ "data-testid": "custom-widget-reject",
187
+ onClick: de,
188
+ children: [/* @__PURE__ */ g(oe, {
189
+ className: "mr-1 size-4",
190
+ "aria-hidden": "true"
191
+ }), O("bigconsole.widget.customWidget.action.reject", "Reject")]
192
+ }) : null]
193
+ }),
194
+ children: /* @__PURE__ */ _("div", {
195
+ className: "flex flex-col gap-2",
196
+ children: [/* @__PURE__ */ g(m, {
197
+ htmlFor: "custom-widget-prompt",
198
+ children: "What should it show?"
199
+ }), /* @__PURE__ */ g(ce, {
171
200
  id: "custom-widget-prompt",
172
201
  "data-testid": "custom-widget-prompt",
173
- value: j,
174
- onChange: (e) => ae(e.target.value),
175
- placeholder: k("bigconsole.widget.customWidget.prompt.placeholder", "e.g. a funnel of signup conversion stages"),
202
+ value: A,
203
+ onChange: (e) => le(e.target.value),
204
+ placeholder: O("bigconsole.widget.customWidget.prompt.placeholder", "e.g. a funnel of signup conversion stages"),
176
205
  rows: 3
206
+ })]
207
+ })
208
+ }), j ? /* @__PURE__ */ _(h, { children: [
209
+ /* @__PURE__ */ _(e, {
210
+ emphasis: "primary",
211
+ tone: y[Y],
212
+ title: k[Y].title,
213
+ description: "Rendered by the real widget renderer against the real parser output — what you approve is what you get.",
214
+ meta: /* @__PURE__ */ g("span", {
215
+ "data-testid": "custom-widget-preview-state",
216
+ "data-state": Y,
217
+ className: "rounded-pill bg-bg-sunken px-2 py-0.5 text-xs text-text-secondary",
218
+ children: Y
177
219
  }),
178
- /* @__PURE__ */ S("div", {
179
- className: "flex flex-wrap gap-2",
180
- children: [/* @__PURE__ */ S(g, {
181
- "data-testid": "custom-widget-generate",
182
- onClick: oe,
183
- disabled: !j.trim() || P,
184
- children: [P ? /* @__PURE__ */ x(f, {
220
+ children: [/* @__PURE__ */ g("div", {
221
+ "data-testid": "custom-widget-preview",
222
+ className: "min-h-[220px] min-w-0 rounded-card border border-[var(--color-border-subtle)] bg-bg-surface p-2",
223
+ children: Y === "loading" ? /* @__PURE__ */ _("div", {
224
+ className: "flex h-[200px] items-center justify-center text-text-secondary",
225
+ children: [/* @__PURE__ */ g(d, {
185
226
  className: "mr-2 size-4 animate-spin",
186
227
  "aria-hidden": "true"
187
- }) : null, M ? k("bigconsole.widget.customWidget.action.regenerate", "Regenerate") : k("bigconsole.widget.customWidget.action.generateProposal", "Generate proposal")]
188
- }), M ? /* @__PURE__ */ S(g, {
189
- variant: "outline",
190
- "data-testid": "custom-widget-reject",
191
- onClick: se,
192
- children: [/* @__PURE__ */ x(te, {
193
- className: "mr-1 size-4",
194
- "aria-hidden": "true"
195
- }), k("bigconsole.widget.customWidget.action.reject", "Reject")]
196
- }) : null]
197
- })
198
- ]
199
- }), M ? /* @__PURE__ */ S(b, { children: [
200
- /* @__PURE__ */ S("div", {
201
- className: "flex flex-col gap-2",
202
- children: [
203
- /* @__PURE__ */ S("div", {
204
- className: "flex items-center justify-between gap-2",
205
- children: [/* @__PURE__ */ x("h3", {
206
- className: "text-sm font-semibold text-text-primary",
207
- children: A[X].title
208
- }), /* @__PURE__ */ x("span", {
209
- "data-testid": "custom-widget-preview-state",
210
- "data-state": X,
211
- className: "rounded-full bg-bg-sunken px-2 py-0.5 text-xs text-text-secondary",
212
- children: X
228
+ }), /* @__PURE__ */ g("span", {
229
+ className: "text-sm",
230
+ children: k.loading.body
213
231
  })]
214
- }),
215
- /* @__PURE__ */ x("div", {
216
- "data-testid": "custom-widget-preview",
217
- className: "min-h-[220px] rounded-lg border border-border-default bg-bg-surface p-2",
218
- children: X === "loading" ? /* @__PURE__ */ S("div", {
219
- className: "flex h-[200px] items-center justify-center text-text-secondary",
220
- children: [/* @__PURE__ */ x(f, {
221
- className: "mr-2 size-4 animate-spin",
222
- "aria-hidden": "true"
223
- }), /* @__PURE__ */ x("span", {
224
- className: "text-sm",
225
- children: A.loading.body
226
- })]
227
- }) : X === "valid" ? /* @__PURE__ */ x("div", {
228
- className: "h-[200px]",
229
- children: /* @__PURE__ */ x(e, {
230
- widgetId: `preview-${M.id}`,
231
- children: /* @__PURE__ */ x(t, {
232
- widget: C(M, k("bigconsole.widget.customWidget.untitledWidget", "Untitled widget")),
233
- data: B
234
- })
232
+ }) : Y === "valid" ? /* @__PURE__ */ g("div", {
233
+ className: "h-[200px]",
234
+ children: /* @__PURE__ */ g(n, {
235
+ widgetId: `preview-${j.id}`,
236
+ children: /* @__PURE__ */ g(ee, {
237
+ widget: b(j, O("bigconsole.widget.customWidget.untitledWidget", "Untitled widget")),
238
+ data: z
235
239
  })
236
- }) : /* @__PURE__ */ S("div", {
237
- className: "flex h-[200px] flex-col items-center justify-center gap-2 px-4 text-center",
238
- children: [
239
- /* @__PURE__ */ x(ee, {
240
- className: "size-5 text-status-warning-text",
241
- "aria-hidden": "true"
242
- }),
243
- /* @__PURE__ */ x("p", {
244
- className: "text-sm text-text-secondary",
245
- children: A[X].body
246
- }),
247
- X === "access-error" ? /* @__PURE__ */ S(g, {
248
- size: "sm",
249
- variant: "outline",
250
- onClick: () => Z((e) => ({ ...e })),
251
- children: [/* @__PURE__ */ x(p, {
252
- className: "mr-1 size-3.5",
253
- "aria-hidden": "true"
254
- }), k("bigconsole.widget.customWidget.action.retry", "Retry")]
255
- }) : null
256
- ]
257
240
  })
258
- }),
259
- M.rationale ? /* @__PURE__ */ x("p", {
260
- className: "text-xs text-text-secondary",
261
- "data-testid": "custom-widget-rationale",
262
- children: M.rationale
263
- }) : null
264
- ]
241
+ }) : /* @__PURE__ */ _("div", {
242
+ className: "flex h-[200px] flex-col items-center justify-center gap-2 px-4 text-center",
243
+ children: [
244
+ /* @__PURE__ */ g(l, {
245
+ className: "size-5 text-[var(--color-status-warning-text)]",
246
+ "aria-hidden": "true"
247
+ }),
248
+ /* @__PURE__ */ g("p", {
249
+ className: "text-sm text-text-secondary",
250
+ children: k[Y].body
251
+ }),
252
+ Y === "access-error" ? /* @__PURE__ */ _(f, {
253
+ size: "sm",
254
+ variant: "outline",
255
+ onClick: () => X((e) => ({ ...e })),
256
+ children: [/* @__PURE__ */ g(ie, {
257
+ className: "mr-1 size-3.5",
258
+ "aria-hidden": "true"
259
+ }), O("bigconsole.widget.customWidget.action.retry", "Retry")]
260
+ }) : null
261
+ ]
262
+ })
263
+ }), j.rationale ? /* @__PURE__ */ g("p", {
264
+ className: "mt-2 text-xs text-text-secondary",
265
+ "data-testid": "custom-widget-rationale",
266
+ children: j.rationale
267
+ }) : null]
265
268
  }),
266
- Q.length > 0 || $.length > 0 ? /* @__PURE__ */ x("ul", {
267
- "data-testid": "custom-widget-issues",
268
- className: "flex flex-col gap-1",
269
- children: [...Q, ...$].map((e) => /* @__PURE__ */ x("li", {
270
- "data-severity": e.severity,
271
- className: `rounded-md px-2 py-1 text-xs ${e.severity === "error" ? "bg-status-error-bg/10 text-status-error-text" : "bg-status-warning-bg/10 text-status-warning-text"}`,
272
- children: e.message
273
- }, `${e.code}-${e.path ?? ""}`))
269
+ Q.length > 0 || $.length > 0 ? /* @__PURE__ */ g(e, {
270
+ tone: Q.length > 0 ? "danger" : "warning",
271
+ padding: "compact",
272
+ headingLevel: 3,
273
+ title: Q.length > 0 ? `${Q.length} ${Q.length === 1 ? "problem" : "problems"} to fix before approving` : `${$.length} ${$.length === 1 ? "warning" : "warnings"}`,
274
+ children: /* @__PURE__ */ g("ul", {
275
+ "data-testid": "custom-widget-issues",
276
+ className: "flex min-w-0 flex-col gap-1",
277
+ children: [...Q, ...$].map((e) => /* @__PURE__ */ g("li", {
278
+ "data-severity": e.severity,
279
+ className: `break-words text-xs ${e.severity === "error" ? "text-[var(--color-status-error-text)]" : "text-[var(--color-status-warning-text)]"}`,
280
+ children: e.message
281
+ }, `${e.code}-${e.path ?? ""}`))
282
+ })
274
283
  }) : null,
275
- /* @__PURE__ */ S("div", {
276
- className: "flex flex-col gap-3",
277
- children: [
278
- /* @__PURE__ */ x("h3", {
279
- className: "text-sm font-semibold text-text-primary",
280
- children: k("bigconsole.widget.customWidget.proposal.heading", "Proposal")
281
- }),
282
- /* @__PURE__ */ S("div", {
283
- className: "flex flex-col gap-1",
284
- children: [/* @__PURE__ */ x(v, {
285
- htmlFor: "custom-widget-title",
286
- children: k("bigconsole.widget.customWidget.field.title", "Title")
287
- }), /* @__PURE__ */ x(_, {
288
- id: "custom-widget-title",
289
- "data-testid": "custom-widget-title",
290
- className: ne,
291
- value: M.presentation.title,
292
- onChange: (e) => Z((t) => ({
293
- ...t,
294
- presentation: {
295
- ...t.presentation,
296
- title: e.target.value
297
- }
298
- }))
299
- })]
300
- }),
301
- /* @__PURE__ */ S("div", {
302
- className: "flex flex-col gap-1",
303
- children: [/* @__PURE__ */ x(v, {
304
- htmlFor: "custom-widget-type",
305
- children: k("bigconsole.widget.customWidget.field.widgetType", "Widget type")
306
- }), /* @__PURE__ */ x("select", {
307
- id: "custom-widget-type",
308
- "data-testid": "custom-widget-type",
309
- value: M.widgetType,
310
- onChange: (e) => Z((t) => ({
311
- ...t,
312
- widgetType: e.target.value
313
- })),
314
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg",
315
- children: n.map((e) => /* @__PURE__ */ x("option", {
316
- value: e,
317
- children: e
318
- }, e))
319
- })]
320
- }),
321
- /* @__PURE__ */ S("div", {
322
- className: "flex flex-col gap-1",
323
- children: [/* @__PURE__ */ x(v, {
324
- htmlFor: "custom-widget-sink",
325
- children: k("bigconsole.widget.customWidget.field.dataSink", "DataSink")
326
- }), /* @__PURE__ */ S("select", {
327
- id: "custom-widget-sink",
328
- "data-testid": "custom-widget-sink",
329
- value: M.binding.dataSinkId,
330
- onChange: (e) => {
331
- let t = o.find((t) => t.id === e.target.value);
332
- Z((n) => ({
333
- ...n,
334
- binding: {
335
- ...n.binding,
336
- dataSinkId: e.target.value,
337
- dataSinkKey: t?.key
338
- }
339
- }));
340
- },
341
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg",
342
- children: [/* @__PURE__ */ x("option", {
343
- value: "",
344
- children: k("bigconsole.widget.customWidget.field.selectDataSink", "Select a DataSink…")
345
- }), o.map((e) => /* @__PURE__ */ x("option", {
346
- value: e.id,
347
- children: e.name || e.key
348
- }, e.id))]
349
- })]
350
- }),
351
- /* @__PURE__ */ S("div", {
352
- className: "flex flex-col gap-1",
353
- children: [/* @__PURE__ */ x(v, {
354
- htmlFor: "custom-widget-parser",
355
- children: k("bigconsole.widget.customWidget.field.parser", "Parser")
356
- }), /* @__PURE__ */ S("select", {
357
- id: "custom-widget-parser",
358
- "data-testid": "custom-widget-parser",
359
- value: M.binding.parserId ?? "",
360
- onChange: (e) => {
361
- let t = w.find((t) => t.id === e.target.value);
362
- Z((n) => ({
363
- ...n,
364
- binding: {
365
- ...n.binding,
366
- parserId: e.target.value || void 0,
367
- parserName: t?.name
284
+ /* @__PURE__ */ g(e, {
285
+ title: O("bigconsole.widget.customWidget.proposal.heading", "Proposal"),
286
+ description: "Every field is editable — the assistant proposes, you dispose.",
287
+ "data-testid": "custom-widget-proposal-fields",
288
+ children: /* @__PURE__ */ _("div", {
289
+ className: "flex flex-col gap-3",
290
+ children: [
291
+ /* @__PURE__ */ _("div", {
292
+ className: "flex flex-col gap-1",
293
+ children: [/* @__PURE__ */ g(m, {
294
+ htmlFor: "custom-widget-title",
295
+ children: O("bigconsole.widget.customWidget.field.title", "Title")
296
+ }), /* @__PURE__ */ g(p, {
297
+ id: "custom-widget-title",
298
+ "data-testid": "custom-widget-title",
299
+ className: v,
300
+ value: j.presentation.title,
301
+ onChange: (e) => X((t) => ({
302
+ ...t,
303
+ presentation: {
304
+ ...t.presentation,
305
+ title: e.target.value
368
306
  }
369
- }));
370
- },
371
- className: "w-full rounded-md border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg",
372
- children: [/* @__PURE__ */ x("option", {
373
- value: "",
374
- children: k("bigconsole.widget.customWidget.field.noParser", "No parser")
375
- }), w.map((e) => /* @__PURE__ */ x("option", {
376
- value: e.id,
377
- children: e.name
378
- }, e.id))]
379
- })]
380
- }),
381
- Object.keys(M.fieldMapping).length > 0 ? /* @__PURE__ */ S("fieldset", {
382
- className: "flex flex-col gap-2",
383
- "data-testid": "custom-widget-field-mapping",
384
- children: [
385
- /* @__PURE__ */ x("legend", {
386
- className: "text-sm font-medium text-text-primary",
387
- children: k("bigconsole.widget.customWidget.fieldMapping.legend", "Field mapping")
388
- }),
389
- Object.entries(M.fieldMapping).map(([e, t]) => /* @__PURE__ */ S("div", {
390
- className: "flex flex-col gap-1",
391
- children: [/* @__PURE__ */ x(v, {
392
- htmlFor: `custom-widget-field-${e}`,
307
+ }))
308
+ })]
309
+ }),
310
+ /* @__PURE__ */ _("div", {
311
+ className: "flex flex-col gap-1",
312
+ children: [/* @__PURE__ */ g(m, {
313
+ htmlFor: "custom-widget-type",
314
+ children: O("bigconsole.widget.customWidget.field.widgetType", "Widget type")
315
+ }), /* @__PURE__ */ g("select", {
316
+ id: "custom-widget-type",
317
+ "data-testid": "custom-widget-type",
318
+ value: j.widgetType,
319
+ onChange: (e) => X((t) => ({
320
+ ...t,
321
+ widgetType: e.target.value
322
+ })),
323
+ className: "w-full rounded-md border border-[var(--color-border-default)] bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg",
324
+ children: te.map((e) => /* @__PURE__ */ g("option", {
325
+ value: e,
393
326
  children: e
394
- }), /* @__PURE__ */ x(_, {
395
- id: `custom-widget-field-${e}`,
396
- "data-testid": `custom-widget-field-${e}`,
397
- value: t,
398
- onChange: (t) => Z((n) => ({
327
+ }, e))
328
+ })]
329
+ }),
330
+ /* @__PURE__ */ _("div", {
331
+ className: "flex flex-col gap-1",
332
+ children: [/* @__PURE__ */ g(m, {
333
+ htmlFor: "custom-widget-sink",
334
+ children: O("bigconsole.widget.customWidget.field.dataSink", "DataSink")
335
+ }), /* @__PURE__ */ _("select", {
336
+ id: "custom-widget-sink",
337
+ "data-testid": "custom-widget-sink",
338
+ value: j.binding.dataSinkId,
339
+ onChange: (e) => {
340
+ let t = a.find((t) => t.id === e.target.value);
341
+ X((n) => ({
399
342
  ...n,
400
- fieldMapping: {
401
- ...n.fieldMapping,
402
- [e]: t.target.value
343
+ binding: {
344
+ ...n.binding,
345
+ dataSinkId: e.target.value,
346
+ dataSinkKey: t?.key
403
347
  }
404
- }))
405
- })]
406
- }, e)),
407
- J?.length ? /* @__PURE__ */ x("p", {
408
- className: "text-xs text-text-secondary",
409
- children: k("bigconsole.widget.customWidget.fieldMapping.available", "Available: {{fields}}", { fields: J.join(", ") })
410
- }) : null
411
- ]
412
- }) : null
413
- ]
348
+ }));
349
+ },
350
+ className: "w-full rounded-md border border-[var(--color-border-default)] bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg",
351
+ children: [/* @__PURE__ */ g("option", {
352
+ value: "",
353
+ children: O("bigconsole.widget.customWidget.field.selectDataSink", "Select a DataSink…")
354
+ }), a.map((e) => /* @__PURE__ */ g("option", {
355
+ value: e.id,
356
+ children: e.name || e.key
357
+ }, e.id))]
358
+ })]
359
+ }),
360
+ /* @__PURE__ */ _("div", {
361
+ className: "flex flex-col gap-1",
362
+ children: [/* @__PURE__ */ g(m, {
363
+ htmlFor: "custom-widget-parser",
364
+ children: O("bigconsole.widget.customWidget.field.parser", "Parser")
365
+ }), /* @__PURE__ */ _("select", {
366
+ id: "custom-widget-parser",
367
+ "data-testid": "custom-widget-parser",
368
+ value: j.binding.parserId ?? "",
369
+ onChange: (e) => {
370
+ let t = C.find((t) => t.id === e.target.value);
371
+ X((n) => ({
372
+ ...n,
373
+ binding: {
374
+ ...n.binding,
375
+ parserId: e.target.value || void 0,
376
+ parserName: t?.name
377
+ }
378
+ }));
379
+ },
380
+ className: "w-full rounded-md border border-[var(--color-border-default)] bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg",
381
+ children: [/* @__PURE__ */ g("option", {
382
+ value: "",
383
+ children: O("bigconsole.widget.customWidget.field.noParser", "No parser")
384
+ }), C.map((e) => /* @__PURE__ */ g("option", {
385
+ value: e.id,
386
+ children: e.name
387
+ }, e.id))]
388
+ })]
389
+ }),
390
+ Object.keys(j.fieldMapping).length > 0 ? /* @__PURE__ */ _("fieldset", {
391
+ className: "flex flex-col gap-2",
392
+ "data-testid": "custom-widget-field-mapping",
393
+ children: [
394
+ /* @__PURE__ */ g("legend", {
395
+ className: "text-sm font-medium text-text-primary",
396
+ children: O("bigconsole.widget.customWidget.fieldMapping.legend", "Field mapping")
397
+ }),
398
+ Object.entries(j.fieldMapping).map(([e, t]) => /* @__PURE__ */ _("div", {
399
+ className: "flex flex-col gap-1",
400
+ children: [/* @__PURE__ */ g(m, {
401
+ htmlFor: `custom-widget-field-${e}`,
402
+ children: e
403
+ }), /* @__PURE__ */ g(p, {
404
+ id: `custom-widget-field-${e}`,
405
+ "data-testid": `custom-widget-field-${e}`,
406
+ value: t,
407
+ onChange: (t) => X((n) => ({
408
+ ...n,
409
+ fieldMapping: {
410
+ ...n.fieldMapping,
411
+ [e]: t.target.value
412
+ }
413
+ }))
414
+ })]
415
+ }, e)),
416
+ q?.length ? /* @__PURE__ */ g("p", {
417
+ className: "break-words text-xs text-text-secondary",
418
+ children: O("bigconsole.widget.customWidget.fieldMapping.available", "Available: {{fields}}", { fields: q.join(", ") })
419
+ }) : null
420
+ ]
421
+ }) : null
422
+ ]
423
+ })
414
424
  }),
415
- R ? /* @__PURE__ */ x("p", {
416
- role: "alert",
417
- className: "text-xs text-status-error-text",
418
- "data-testid": "custom-widget-approve-error",
419
- children: R
425
+ L ? /* @__PURE__ */ g(e, {
426
+ tone: "danger",
427
+ padding: "compact",
428
+ headingLevel: 3,
429
+ title: "Could not add the widget",
430
+ children: /* @__PURE__ */ g("p", {
431
+ role: "alert",
432
+ className: "break-words text-xs text-[var(--color-status-error-text)]",
433
+ "data-testid": "custom-widget-approve-error",
434
+ children: L
435
+ })
420
436
  }) : null,
421
- /* @__PURE__ */ S("div", {
422
- className: "flex flex-wrap gap-2 border-t border-border-default pt-3",
423
- children: [/* @__PURE__ */ S(g, {
437
+ /* @__PURE__ */ _("div", {
438
+ className: "flex flex-wrap gap-2 border-t border-[var(--color-border-subtle)] pt-3",
439
+ children: [/* @__PURE__ */ _(f, {
424
440
  "data-testid": "custom-widget-approve",
425
- onClick: ce,
426
- disabled: !Y.canApprove || I,
427
- children: [I ? /* @__PURE__ */ x(f, {
441
+ onClick: Z,
442
+ disabled: !J.canApprove || F,
443
+ children: [F ? /* @__PURE__ */ g(d, {
428
444
  className: "mr-2 size-4 animate-spin",
429
445
  "aria-hidden": "true"
430
- }) : /* @__PURE__ */ x(d, {
446
+ }) : /* @__PURE__ */ g(u, {
431
447
  className: "mr-1 size-4",
432
448
  "aria-hidden": "true"
433
- }), k("bigconsole.widget.customWidget.action.approveAndAdd", "Approve & add to dashboard")]
434
- }), /* @__PURE__ */ x(g, {
449
+ }), O("bigconsole.widget.customWidget.action.approveAndAdd", "Approve & add to dashboard")]
450
+ }), /* @__PURE__ */ g(f, {
435
451
  variant: "outline",
436
- onClick: D,
452
+ onClick: E,
437
453
  "data-testid": "custom-widget-cancel",
438
- children: k("bigconsole.widget.customWidget.action.cancel", "Cancel")
454
+ children: O("bigconsole.widget.customWidget.action.cancel", "Cancel")
439
455
  })]
440
456
  })
441
- ] }) : /* @__PURE__ */ x("p", {
442
- className: "text-sm text-text-secondary",
443
- "data-testid": "custom-widget-empty",
444
- children: k("bigconsole.widget.customWidget.empty", "No proposal yet. Describe a widget and the assistant will propose one for you to review — nothing is added to the dashboard until you approve it.")
445
- })]
457
+ ] }) : /* @__PURE__ */ g(e, {
458
+ emphasis: "muted",
459
+ padding: "compact",
460
+ title: "No proposal yet",
461
+ headingLevel: 3,
462
+ children: /* @__PURE__ */ g("p", {
463
+ className: "text-sm text-text-secondary",
464
+ "data-testid": "custom-widget-empty",
465
+ children: O("bigconsole.widget.customWidget.empty", "No proposal yet. Describe a widget and the assistant will propose one for you to review — nothing is added to the dashboard until you approve it.")
466
+ })
467
+ })] })
446
468
  });
447
469
  });
448
470
  //#endregion
449
- export { w as default };
471
+ export { C as default };
450
472
 
451
473
  //# sourceMappingURL=CustomWidgetProposalPanel.js.map