@burdenoff/microfe-bigconsole 2026.805.2 → 2026.812.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) 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 +145 -111
  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 +269 -251
  23. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
  24. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +214 -223
  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 +110 -102
  29. package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +1 -1
  30. package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +81 -68
  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 +147 -144
  35. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +1 -1
  36. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +154 -153
  37. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
  38. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +82 -79
  39. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +1 -1
  40. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +171 -284
  41. package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
  42. package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +250 -273
  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/PublishToStoreDialog.js +75 -83
  49. package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +1 -1
  50. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +167 -161
  51. package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +1 -1
  52. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +181 -190
  53. package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
  54. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -95
  55. package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +1 -1
  56. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js +20 -18
  57. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js.map +1 -1
  58. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -0
  59. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js +26 -58
  60. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +1 -1
  61. package/dist/bigconsole/components/dashboard/WidgetPalette.js +307 -229
  62. package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +1 -1
  63. package/dist/bigconsole/components/datasink/CacheTTLSelector.js +128 -129
  64. package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
  65. package/dist/bigconsole/components/datasink/DataSinkCard.js +78 -79
  66. package/dist/bigconsole/components/datasink/DataSinkCard.js.map +1 -1
  67. package/dist/bigconsole/components/datasink/DataSinkDataViewer.js +33 -34
  68. package/dist/bigconsole/components/datasink/DataSinkDataViewer.js.map +1 -1
  69. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +79 -61
  70. package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +1 -1
  71. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +75 -64
  72. package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +1 -1
  73. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js +1 -1
  74. package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js.map +1 -1
  75. package/dist/bigconsole/components/datasink/DataSinkTableViewer.js +20 -19
  76. package/dist/bigconsole/components/datasink/DataSinkTableViewer.js.map +1 -1
  77. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js +127 -171
  78. package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js.map +1 -1
  79. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +113 -117
  80. package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +1 -1
  81. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +312 -307
  82. package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
  83. package/dist/bigconsole/components/datasink/LinkedParsersPanel.js +65 -66
  84. package/dist/bigconsole/components/datasink/LinkedParsersPanel.js.map +1 -1
  85. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js +121 -127
  86. package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js.map +1 -1
  87. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +194 -189
  88. package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +1 -1
  89. package/dist/bigconsole/components/datasink/SetupStateBadge.js +3 -3
  90. package/dist/bigconsole/components/datasink/SetupStateBadge.js.map +1 -1
  91. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js +95 -95
  92. package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js.map +1 -1
  93. package/dist/bigconsole/components/parser/DataSinkSelector.js +163 -131
  94. package/dist/bigconsole/components/parser/DataSinkSelector.js.map +1 -1
  95. package/dist/bigconsole/components/parser/ExpressionEditor.js +3 -3
  96. package/dist/bigconsole/components/parser/ExpressionEditor.js.map +1 -1
  97. package/dist/bigconsole/components/parser/ImportParserDialog.js +205 -260
  98. package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
  99. package/dist/bigconsole/components/parser/ParserCard.js +133 -114
  100. package/dist/bigconsole/components/parser/ParserCard.js.map +1 -1
  101. package/dist/bigconsole/components/parser/ParserSelector.js +193 -174
  102. package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
  103. package/dist/bigconsole/components/parser/ParserStatusBadge.js +2 -2
  104. package/dist/bigconsole/components/parser/ParserStatusBadge.js.map +1 -1
  105. package/dist/bigconsole/components/parser/ParserTypeBadge.js +4 -4
  106. package/dist/bigconsole/components/parser/ParserTypeBadge.js.map +1 -1
  107. package/dist/bigconsole/components/pipeline/PipelineCard.js +134 -89
  108. package/dist/bigconsole/components/pipeline/PipelineCard.js.map +1 -1
  109. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js +77 -64
  110. package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js.map +1 -1
  111. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js +7 -10
  112. package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js.map +1 -1
  113. package/dist/bigconsole/components/preview/AiPreviewContent.js +31 -32
  114. package/dist/bigconsole/components/preview/AiPreviewContent.js.map +1 -1
  115. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +152 -103
  116. package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +1 -1
  117. package/dist/bigconsole/components/preview/AiPreviewPanel.js +193 -148
  118. package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +1 -1
  119. package/dist/bigconsole/components/preview/previewShared.js +41 -23
  120. package/dist/bigconsole/components/preview/previewShared.js.map +1 -1
  121. package/dist/bigconsole/components/widgets/ActionConfigDialog.js +405 -364
  122. package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
  123. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +265 -237
  124. package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
  125. package/dist/bigconsole/components/widgets/PropertiesPanel.js +764 -821
  126. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  127. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js +7 -5
  128. package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js.map +1 -1
  129. package/dist/bigconsole/components/widgets/WidgetHeader.js +7 -8
  130. package/dist/bigconsole/components/widgets/WidgetHeader.js.map +1 -1
  131. package/dist/bigconsole/components/widgets/WidgetWrapper.js +8 -7
  132. package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +1 -1
  133. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js +1 -1
  134. package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js.map +1 -1
  135. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +46 -49
  136. package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +1 -1
  137. package/dist/bigconsole/components/widgets/chart/ChartConfig.js +154 -147
  138. package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +1 -1
  139. package/dist/bigconsole/components/widgets/comments/WidgetComments.js +118 -101
  140. package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +1 -1
  141. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +244 -191
  142. package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +1 -1
  143. package/dist/bigconsole/components/widgets/form/FormWidget.js +167 -159
  144. package/dist/bigconsole/components/widgets/form/FormWidget.js.map +1 -1
  145. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +92 -76
  146. package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +1 -1
  147. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js +1 -1
  148. package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js.map +1 -1
  149. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +89 -86
  150. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +1 -1
  151. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js +2 -2
  152. package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js.map +1 -1
  153. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +64 -63
  154. package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +1 -1
  155. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js +2 -2
  156. package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js.map +1 -1
  157. package/dist/bigconsole/components/widgets/list/ListConfig.js +65 -58
  158. package/dist/bigconsole/components/widgets/list/ListConfig.js.map +1 -1
  159. package/dist/bigconsole/components/widgets/list/ListItem.js +1 -1
  160. package/dist/bigconsole/components/widgets/list/ListItem.js.map +1 -1
  161. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +1 -1
  162. package/dist/bigconsole/components/widgets/map-widget/MapWidget.js.map +1 -1
  163. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +79 -72
  164. package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +1 -1
  165. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +35 -34
  166. package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +1 -1
  167. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +20 -19
  168. package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +1 -1
  169. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +181 -180
  170. package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +1 -1
  171. package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +100 -90
  172. package/dist/bigconsole/components/widgets/progress/ProgressConfig.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 +193 -172
  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/webhook-config/WebhookConfigPanel.js +283 -249
  194. package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +1 -1
  195. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js +28 -20
  196. package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js.map +1 -1
  197. package/dist/bigconsole/components/workflow/WorkflowCard.js +92 -77
  198. package/dist/bigconsole/components/workflow/WorkflowCard.js.map +1 -1
  199. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js +70 -51
  200. package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js.map +1 -1
  201. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js +16 -17
  202. package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js.map +1 -1
  203. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +46 -42
  204. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -1
  205. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +372 -348
  206. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
  207. package/dist/bigconsole/hooks/useModalFocusTrap.js +53 -0
  208. package/dist/bigconsole/hooks/useModalFocusTrap.js.map +1 -0
  209. package/dist/bigconsole/pages/DashboardBuilderPage.js +153 -142
  210. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  211. package/dist/bigconsole/pages/DashboardViewPage.js +230 -220
  212. package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
  213. package/dist/bigconsole/pages/DashboardsPage.js +832 -790
  214. package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
  215. package/dist/bigconsole/pages/DataParsersPage.js +249 -304
  216. package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
  217. package/dist/bigconsole/pages/DataSinkBuilderPage.js +324 -349
  218. package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
  219. package/dist/bigconsole/pages/DataSinkViewPage.js +336 -323
  220. package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
  221. package/dist/bigconsole/pages/DataSinksPage.js +356 -458
  222. package/dist/bigconsole/pages/DataSinksPage.js.map +1 -1
  223. package/dist/bigconsole/pages/DataSourcesPage.js +14 -8
  224. package/dist/bigconsole/pages/DataSourcesPage.js.map +1 -1
  225. package/dist/bigconsole/pages/HomePage.js +186 -193
  226. package/dist/bigconsole/pages/HomePage.js.map +1 -1
  227. package/dist/bigconsole/pages/InsightsPage.js +901 -724
  228. package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
  229. package/dist/bigconsole/pages/ParserBuilderPage.js +769 -675
  230. package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
  231. package/dist/bigconsole/pages/ParserViewPage.js +382 -354
  232. package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
  233. package/dist/bigconsole/pages/PipelineBuilderPage.js +540 -420
  234. package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
  235. package/dist/bigconsole/pages/PipelineViewPage.js +416 -384
  236. package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
  237. package/dist/bigconsole/pages/PipelinesPage.js +260 -309
  238. package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
  239. package/dist/bigconsole/pages/SettingsPage.js +177 -172
  240. package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
  241. package/dist/bigconsole/pages/WidgetDemoPage.js +278 -142
  242. package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
  243. package/dist/bigconsole/pages/WorkflowViewPage.js +382 -366
  244. package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
  245. package/dist/bigconsole/pages/WorkflowsPage.js +202 -316
  246. package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
  247. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +111 -109
  248. package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +1 -1
  249. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +127 -126
  250. package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +1 -1
  251. package/dist/bigconsole/renderers/adapters/CustomRenderer.js +103 -103
  252. package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +1 -1
  253. package/package.json +2 -1
@@ -1,514 +1,546 @@
1
1
  import { usePipelineStore as e } from "../store/pipelineStore.js";
2
2
  import { useAppNavigate as t } from "../contexts/NavigationContext.js";
3
3
  import "../contexts/index.js";
4
- import n from "../hooks/usePipelineOperations.js";
5
- import { BIGCONSOLE_PERMISSIONS as r } from "../../constants/permissions.js";
6
- import { isNative as i, nativeNotify as a } from "../../utils/nativeBridge.js";
7
- import o from "../components/pipeline/PipelineStatusBadge.js";
8
- import s from "../components/pipeline/PipelineDeleteDialog.js";
9
- import { memo as c, useCallback as l, useEffect as u, useState as d } from "react";
10
- import { useParams as f, useSearchParams as p } from "react-router";
11
- import { AccessDenied as m } from "@burdenoff/fe-libs/shared/components";
12
- import { usePermissions as h } from "@burdenoff/fe-libs/shared/providers/shell";
13
- import { GlassCard as g, IllustratedEmptyState as _, NextSteps as v, PagePurpose as ee } from "@burdenoff/fe-libs/ui";
14
- import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
4
+ import { SECTION_FOCUS_RING as n } from "../components/common/sectionStyles.js";
5
+ import { Section as r, SectionStack as i } from "../components/common/Section.js";
6
+ import "../components/common/index.js";
7
+ import ee from "../hooks/usePipelineOperations.js";
8
+ import { BIGCONSOLE_PERMISSIONS as a } from "../../constants/permissions.js";
9
+ import { isNative as o, nativeNotify as s } from "../../utils/nativeBridge.js";
10
+ import c from "../components/pipeline/PipelineStatusBadge.js";
11
+ import te from "../components/pipeline/PipelineDeleteDialog.js";
12
+ import { memo as l, useCallback as u, useEffect as ne, useId as re, useState as d } from "react";
13
+ import { useParams as ie, useSearchParams as ae } from "react-router";
14
+ import { AccessDenied as f } from "@burdenoff/fe-libs/shared/components";
15
+ import { usePermissions as p } from "@burdenoff/fe-libs/shared/providers/shell";
16
+ import { useI18n as m } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
17
+ import { Button as h, IllustratedEmptyState as oe, NextSteps as se, PagePurpose as ce, Spinner as le } from "@burdenoff/fe-libs/ui";
18
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
15
19
  //#region src/bigconsole/pages/PipelineViewPage.tsx
16
- var S = ({ className: e }) => /* @__PURE__ */ b("svg", {
20
+ var v = "min-h-[var(--size-controlHeight-md)]", ue = "rounded-pill bg-bg-sunken px-2 py-0.5 text-xs font-medium text-text-secondary", y = "rounded-button bg-bg-surface px-1.5 py-0.5 font-mono break-all text-text-primary", b = ({ className: e }) => /* @__PURE__ */ g("svg", {
17
21
  className: e,
18
22
  fill: "none",
19
23
  stroke: "currentColor",
20
24
  viewBox: "0 0 24 24",
21
- children: /* @__PURE__ */ b("path", {
25
+ children: /* @__PURE__ */ g("path", {
22
26
  strokeLinecap: "round",
23
27
  strokeLinejoin: "round",
24
28
  strokeWidth: 2,
25
29
  d: "M10 19l-7-7m0 0l7-7m-7 7h18"
26
30
  })
27
- }), te = ({ className: e }) => /* @__PURE__ */ b("svg", {
31
+ }), x = ({ className: e }) => /* @__PURE__ */ g("svg", {
28
32
  className: e,
29
33
  fill: "none",
30
34
  stroke: "currentColor",
31
35
  viewBox: "0 0 24 24",
32
- children: /* @__PURE__ */ b("path", {
36
+ children: /* @__PURE__ */ g("path", {
33
37
  strokeLinecap: "round",
34
38
  strokeLinejoin: "round",
35
39
  strokeWidth: 2,
36
40
  d: "M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"
37
41
  })
38
- }), C = ({ className: e }) => /* @__PURE__ */ b("svg", {
42
+ }), S = ({ className: e }) => /* @__PURE__ */ g("svg", {
39
43
  className: e,
40
44
  fill: "none",
41
45
  stroke: "currentColor",
42
46
  viewBox: "0 0 24 24",
43
- children: /* @__PURE__ */ b("path", {
47
+ children: /* @__PURE__ */ g("path", {
44
48
  strokeLinecap: "round",
45
49
  strokeLinejoin: "round",
46
50
  strokeWidth: 2,
47
51
  d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
48
52
  })
49
- }), w = ({ className: e }) => /* @__PURE__ */ x("svg", {
53
+ }), C = ({ className: e }) => /* @__PURE__ */ _("svg", {
50
54
  className: e,
51
55
  fill: "none",
52
56
  stroke: "currentColor",
53
57
  viewBox: "0 0 24 24",
54
- children: [/* @__PURE__ */ b("path", {
58
+ children: [/* @__PURE__ */ g("path", {
55
59
  strokeLinecap: "round",
56
60
  strokeLinejoin: "round",
57
61
  strokeWidth: 2,
58
62
  d: "M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"
59
- }), /* @__PURE__ */ b("path", {
63
+ }), /* @__PURE__ */ g("path", {
60
64
  strokeLinecap: "round",
61
65
  strokeLinejoin: "round",
62
66
  strokeWidth: 2,
63
67
  d: "M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
64
68
  })]
65
- }), T = ({ className: e }) => /* @__PURE__ */ b("svg", {
69
+ }), w = ({ className: e }) => /* @__PURE__ */ g("svg", {
66
70
  className: e,
67
71
  fill: "none",
68
72
  stroke: "currentColor",
69
73
  viewBox: "0 0 24 24",
70
- children: /* @__PURE__ */ b("path", {
74
+ children: /* @__PURE__ */ g("path", {
71
75
  strokeLinecap: "round",
72
76
  strokeLinejoin: "round",
73
77
  strokeWidth: 2,
74
78
  d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
75
79
  })
76
- }), E = ({ className: e }) => /* @__PURE__ */ b("svg", {
80
+ }), de = ({ className: e }) => /* @__PURE__ */ g("svg", {
77
81
  className: e,
78
82
  fill: "none",
79
83
  stroke: "currentColor",
80
84
  viewBox: "0 0 24 24",
81
- children: /* @__PURE__ */ b("path", {
85
+ children: /* @__PURE__ */ g("path", {
82
86
  strokeLinecap: "round",
83
87
  strokeLinejoin: "round",
84
88
  strokeWidth: 2,
85
89
  d: "M5 13l4 4L19 7"
86
90
  })
87
- }), D = ({ className: e }) => /* @__PURE__ */ b("svg", {
91
+ }), T = ({ className: e }) => /* @__PURE__ */ g("svg", {
88
92
  className: e,
89
93
  fill: "none",
90
94
  stroke: "currentColor",
91
95
  viewBox: "0 0 24 24",
92
- children: /* @__PURE__ */ b("path", {
96
+ children: /* @__PURE__ */ g("path", {
93
97
  strokeLinecap: "round",
94
98
  strokeLinejoin: "round",
95
99
  strokeWidth: 2,
96
100
  d: "M14 5l7 7m0 0l-7 7m7-7H3"
97
101
  })
98
- }), O = ({ handling: e }) => {
99
- let t = {
102
+ }), E = ({ handling: e }) => {
103
+ let { t } = m(), n = {
100
104
  fail: {
101
- label: "Fail",
102
- className: "bg-status-error-bg/10 text-status-error-text"
105
+ label: t("bigconsole.pipelines.view.errorHandlingFail", "Fail"),
106
+ className: "bg-[var(--color-status-error-bgSubtle)] text-status-error-text border-[var(--color-status-error-border)]"
103
107
  },
104
108
  skip: {
105
- label: "Skip",
106
- className: "bg-status-warning-bg/10 text-status-warning-text"
109
+ label: t("bigconsole.pipelines.view.errorHandlingSkip", "Skip"),
110
+ className: "bg-[var(--color-status-warning-bgSubtle)] text-[var(--color-status-warning-text)] border-[var(--color-status-warning-border)]"
107
111
  },
108
112
  fallback: {
109
- label: "Fallback",
110
- className: "bg-action-primary-bg/10 text-action-primary-bg"
113
+ label: t("bigconsole.pipelines.view.errorHandlingFallback", "Fallback"),
114
+ className: "bg-[var(--color-status-info-bgSubtle)] text-[var(--color-status-info-text)] border-[var(--color-status-info-border)]"
111
115
  }
112
- }, n = t[e] || t.fail;
113
- return /* @__PURE__ */ b("span", {
114
- className: `px-1.5 py-0.5 text-xs font-medium rounded ${n.className}`,
115
- children: n.label
116
+ }, r = n[e] || n.fail;
117
+ return /* @__PURE__ */ _("span", {
118
+ className: `inline-flex items-center gap-1 whitespace-nowrap rounded-pill border px-2 py-0.5 text-xs font-medium ${r.className}`,
119
+ children: [/* @__PURE__ */ g("span", {
120
+ className: "font-normal opacity-80",
121
+ children: "On error"
122
+ }), r.label]
116
123
  });
117
- }, k = c(function() {
118
- let { pipelineId: c } = f(), k = t(), A = "default", [j] = p(), { hasPermission: M, isLoading: ne } = h(), re = M(r.PIPELINE_READ), N = M(r.PIPELINE_UPDATE), P = M(r.PIPELINE_DELETE), F = M(r.PIPELINE_TEST), [I, L] = d(null), [R, z] = d("{\n \"data\": \"sample\"\n}"), [B, V] = d(null), [H, U] = d(j.get("test") === "true"), W = e((e) => e.deleteDialogOpen), G = e((e) => e.openDeleteDialog), K = e((e) => e.closeDeleteDialog), { loading: q, error: J, fetchPipeline: Y, deletePipeline: X, testPipeline: Z } = n({
119
- consoleId: A,
124
+ }, D = l(function() {
125
+ let { pipelineId: l } = ie(), D = t(), { t: O } = m(), k = "default", [fe] = ae(), A = re(), { hasPermission: j, isLoading: pe } = p(), M = j(a.PIPELINE_READ), N = j(a.PIPELINE_UPDATE), P = j(a.PIPELINE_DELETE), F = j(a.PIPELINE_TEST), [I, L] = d(null), [R, z] = d("{\n \"data\": \"sample\"\n}"), [B, me] = d(null), [V, H] = d(fe.get("test") === "true"), he = e((e) => e.deleteDialogOpen), U = e((e) => e.openDeleteDialog), W = e((e) => e.closeDeleteDialog), { loading: G, error: K, fetchPipeline: q, deletePipeline: J, testPipeline: Y } = ee({
126
+ consoleId: k,
120
127
  skipFetch: !0
121
128
  });
122
- u(() => {
123
- c && Y(c).then((e) => {
129
+ ne(() => {
130
+ l && q(l).then((e) => {
124
131
  e && L(e);
125
132
  });
126
- }, [c, Y]);
127
- let Q = l(() => {
128
- k("/pipelines");
129
- }, [k]), $ = l(() => {
130
- k(`/pipelines/${c}/edit`);
131
- }, [k, c]), ie = l(() => {
132
- I && G(I);
133
- }, [I, G]), ae = l(async () => {
134
- I && (await X(I.id) ? (i() && a("success"), K(), k("/pipelines")) : i() && a("error"));
133
+ }, [l, q]);
134
+ let X = u(() => {
135
+ D("/pipelines");
136
+ }, [D]), Z = u(() => {
137
+ D(`/pipelines/${l}/edit`);
138
+ }, [D, l]), ge = u(() => {
139
+ I && U(I);
140
+ }, [I, U]), _e = u(async () => {
141
+ I && (await J(I.id) ? (o() && s("success"), W(), D("/pipelines")) : o() && s("error"));
135
142
  }, [
136
143
  I,
137
- X,
138
- K,
139
- k
140
- ]), oe = l((e) => {
141
- k(`/dashboards/${A}/parsers/${e}`);
142
- }, [k, A]), se = l(async () => {
144
+ J,
145
+ W,
146
+ D
147
+ ]), ve = u((e) => {
148
+ D(`/dashboards/${k}/parsers/${e}`);
149
+ }, [D, k]), ye = u(async () => {
143
150
  if (I) try {
144
- let e = await Z({
151
+ let e = await Y({
145
152
  pipelineId: I.id,
146
153
  inputData: R
147
154
  });
148
- e && V(e);
155
+ e && me(e);
149
156
  } catch {}
150
157
  }, [
151
158
  I,
152
- Z,
159
+ Y,
153
160
  R
154
161
  ]);
155
- return q && !I ? /* @__PURE__ */ b("div", {
156
- className: "p-6",
157
- children: /* @__PURE__ */ x("div", {
162
+ if (G && !I) return /* @__PURE__ */ g("div", {
163
+ className: "p-card-padding",
164
+ children: /* @__PURE__ */ _("div", {
158
165
  className: "flex flex-col items-center justify-center py-16",
159
- children: [/* @__PURE__ */ x("svg", {
160
- className: "w-8 h-8 text-action-primary-bg animate-spin mb-4",
161
- fill: "none",
162
- viewBox: "0 0 24 24",
163
- children: [/* @__PURE__ */ b("circle", {
164
- className: "opacity-25",
165
- cx: "12",
166
- cy: "12",
167
- r: "10",
168
- stroke: "currentColor",
169
- strokeWidth: "4"
170
- }), /* @__PURE__ */ b("path", {
171
- className: "opacity-75",
172
- fill: "currentColor",
173
- d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
174
- })]
175
- }), /* @__PURE__ */ b("p", {
176
- className: "text-sm text-text-secondary",
177
- children: "Loading Pipeline..."
166
+ role: "status",
167
+ children: [/* @__PURE__ */ g(le, { style: {
168
+ height: "var(--size-icon-xl)",
169
+ width: "var(--size-icon-xl)"
170
+ } }), /* @__PURE__ */ g("p", {
171
+ className: "mt-form-gap text-sm text-text-secondary",
172
+ children: O("bigconsole.pipelines.view.loading", "Loading Pipeline...")
178
173
  })]
179
174
  })
180
- }) : !ne && !re ? /* @__PURE__ */ b(m, {
181
- title: "Access Denied",
182
- description: "You don't have permission to view this pipeline."
183
- }) : J ? /* @__PURE__ */ b("div", {
184
- className: "p-6",
185
- children: /* @__PURE__ */ x("div", {
186
- className: "flex flex-col items-center justify-center py-16 text-center",
187
- children: [
188
- /* @__PURE__ */ b("div", {
189
- className: "p-3 rounded-full bg-status-error-bg/10 mb-4",
190
- children: /* @__PURE__ */ b(T, { className: "w-8 h-8 text-status-error-text" })
191
- }),
192
- /* @__PURE__ */ b("h3", {
193
- className: "text-lg font-medium text-text-primary mb-2",
194
- children: "Failed to load Pipeline"
195
- }),
196
- /* @__PURE__ */ b("p", {
197
- className: "text-sm text-text-secondary mb-4",
198
- children: J.message
199
- }),
200
- /* @__PURE__ */ b("button", {
201
- type: "button",
202
- onClick: Q,
203
- className: "px-4 py-2 text-sm font-medium text-action-primary-fg bg-action-primary-bg hover:bg-action-primary-bgHover rounded-md transition-colors",
204
- children: "Back to Pipelines"
205
- })
206
- ]
175
+ });
176
+ if (!pe && !M) return /* @__PURE__ */ g(f, {
177
+ title: O("bigconsole.pipelines.errors.accessDeniedTitle", "Access Denied"),
178
+ description: O("bigconsole.pipelines.errors.accessDeniedViewDescription", "You don't have permission to view this pipeline.")
179
+ });
180
+ if (K) return /* @__PURE__ */ g("div", {
181
+ className: "p-card-padding",
182
+ children: /* @__PURE__ */ g(r, {
183
+ tone: "danger",
184
+ headingLevel: 2,
185
+ title: O("bigconsole.pipelines.view.loadError", "Failed to load Pipeline"),
186
+ description: K.message,
187
+ icon: /* @__PURE__ */ g(w, { className: "h-icon-sm w-icon-sm" }),
188
+ actions: /* @__PURE__ */ g(h, {
189
+ onClick: X,
190
+ className: v,
191
+ children: O("bigconsole.pipelines.actions.backToPipelines", "Back to Pipelines")
192
+ }),
193
+ "data-testid": "pipeline-view-error",
194
+ children: /* @__PURE__ */ g("p", {
195
+ className: "text-sm text-text-secondary",
196
+ children: "The pipeline could not be read from the console service. Nothing was changed."
197
+ })
207
198
  })
208
- }) : I ? /* @__PURE__ */ x("div", {
209
- className: "p-6",
210
- children: [
211
- /* @__PURE__ */ x("div", {
212
- className: "flex items-center justify-between mb-6",
213
- children: [/* @__PURE__ */ x("div", {
214
- className: "flex items-center gap-4",
215
- children: [/* @__PURE__ */ b("button", {
216
- type: "button",
217
- onClick: Q,
218
- className: "p-2 text-text-secondary hover:text-text-primary hover:bg-bg-sunken rounded-md transition-colors",
219
- children: /* @__PURE__ */ b(S, { className: "w-5 h-5" })
220
- }), /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ x("div", {
221
- className: "flex items-center gap-3",
222
- children: [/* @__PURE__ */ b("h1", {
223
- className: "text-2xl font-bold text-text-primary",
224
- children: I.name
225
- }), /* @__PURE__ */ b(o, { status: I.status })]
226
- }), I.description && /* @__PURE__ */ b("p", {
227
- className: "text-sm text-text-secondary mt-1",
228
- children: I.description
229
- })] })]
230
- }), /* @__PURE__ */ x("div", {
231
- className: "flex items-center gap-2",
199
+ });
200
+ if (!I) return /* @__PURE__ */ g("div", {
201
+ className: "p-card-padding",
202
+ children: /* @__PURE__ */ g(r, {
203
+ tone: "warning",
204
+ headingLevel: 2,
205
+ title: O("bigconsole.pipelines.view.notFoundTitle", "Pipeline not found"),
206
+ description: O("bigconsole.pipelines.view.notFoundDescription", "The pipeline you're looking for doesn't exist or has been deleted."),
207
+ icon: /* @__PURE__ */ g(w, { className: "h-icon-sm w-icon-sm" }),
208
+ actions: /* @__PURE__ */ g(h, {
209
+ onClick: X,
210
+ className: v,
211
+ children: O("bigconsole.pipelines.actions.backToPipelines", "Back to Pipelines")
212
+ }),
213
+ "data-testid": "pipeline-not-found"
214
+ })
215
+ });
216
+ let Q = I.stages?.length ?? 0, $ = B?.status === "completed", be = /* @__PURE__ */ g(r, {
217
+ emphasis: V ? "standard" : "primary",
218
+ headingLevel: 2,
219
+ title: O("bigconsole.pipelines.view.stagesHeading", "Pipeline Stages ({{count}})", { count: Q }),
220
+ description: "Data flows top to bottom — each stage reads its input key and writes an output key for the next one.",
221
+ "data-testid": "pipeline-stages",
222
+ children: Q === 0 ? /* @__PURE__ */ g(oe, {
223
+ illustration: "empty-generic",
224
+ title: O("bigconsole.pipelines.view.noStagesTitle", "No stages defined"),
225
+ description: O("bigconsole.pipelines.view.noStagesDescription", "Edit the pipeline to add parser stages."),
226
+ action: /* @__PURE__ */ _(h, {
227
+ variant: "secondary",
228
+ onClick: Z,
229
+ disabled: !N,
230
+ className: v,
231
+ children: [/* @__PURE__ */ g(x, { className: "h-icon-sm w-icon-sm" }), O("bigconsole.pipelines.actions.edit", "Edit")]
232
+ })
233
+ }) : /* @__PURE__ */ g("ol", {
234
+ className: "flex flex-col",
235
+ children: (I.stages ?? []).map((e, t) => /* @__PURE__ */ _("li", {
236
+ className: "flex min-w-0 flex-col",
237
+ children: [/* @__PURE__ */ _("div", {
238
+ "data-testid": "pipeline-stage",
239
+ "data-enabled": e.enabled,
240
+ className: `min-w-0 rounded-card border bg-bg-sunken p-4 ${e.enabled ? "border-[var(--color-border-subtle)]" : "border-dashed border-[var(--color-border-strong)]"}`,
232
241
  children: [
233
- /* @__PURE__ */ x("button", {
242
+ /* @__PURE__ */ _("div", {
243
+ className: "flex flex-wrap items-center justify-between gap-control-gap",
244
+ children: [/* @__PURE__ */ _("div", {
245
+ className: "flex min-w-0 flex-wrap items-center gap-icon-gap",
246
+ children: [
247
+ /* @__PURE__ */ g("span", {
248
+ "aria-hidden": "true",
249
+ className: "flex h-6 w-6 shrink-0 items-center justify-center rounded-pill bg-bg-surface text-xs font-semibold text-text-secondary",
250
+ children: t + 1
251
+ }),
252
+ /* @__PURE__ */ g("h3", {
253
+ className: "min-w-0 truncate text-sm font-semibold text-text-primary",
254
+ children: e.parserName || O("bigconsole.pipelines.view.stageFallbackName", "Stage {{number}}", { number: t + 1 })
255
+ }),
256
+ e.parserType && /* @__PURE__ */ g("span", {
257
+ className: "rounded-pill bg-bg-surface px-2 py-0.5 text-xs font-medium text-text-secondary",
258
+ children: e.parserType.toUpperCase()
259
+ })
260
+ ]
261
+ }), /* @__PURE__ */ _("div", {
262
+ className: "flex flex-wrap items-center gap-icon-gap",
263
+ children: [/* @__PURE__ */ g(E, { handling: e.onError }), !e.enabled && /* @__PURE__ */ g("span", {
264
+ className: "rounded-pill border border-[var(--color-border-strong)] px-2 py-0.5 text-xs font-medium text-text-secondary",
265
+ children: O("bigconsole.pipelines.view.stageDisabled", "Disabled")
266
+ })]
267
+ })]
268
+ }),
269
+ /* @__PURE__ */ _("div", {
270
+ className: "mt-2 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-text-secondary",
271
+ children: [
272
+ /* @__PURE__ */ g("span", {
273
+ className: "text-text-muted",
274
+ children: "Reads"
275
+ }),
276
+ /* @__PURE__ */ g("code", {
277
+ className: y,
278
+ children: e.inputKey
279
+ }),
280
+ /* @__PURE__ */ g(T, { className: "h-3 w-3 shrink-0" }),
281
+ /* @__PURE__ */ g("span", {
282
+ className: "text-text-muted",
283
+ children: "writes"
284
+ }),
285
+ /* @__PURE__ */ g("code", {
286
+ className: y,
287
+ children: e.outputKey
288
+ })
289
+ ]
290
+ }),
291
+ e.description && /* @__PURE__ */ g("p", {
292
+ className: "mt-2 text-xs text-text-secondary",
293
+ children: e.description
294
+ }),
295
+ e.parserId && /* @__PURE__ */ g("button", {
234
296
  type: "button",
235
- onClick: () => U(!H),
297
+ onClick: () => ve(e.parserId),
298
+ className: "mt-2 rounded-button text-xs text-text-link hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface",
299
+ children: O("bigconsole.pipelines.view.viewParser", "View Parser")
300
+ })
301
+ ]
302
+ }), t < Q - 1 && /* @__PURE__ */ g("span", {
303
+ "aria-hidden": "true",
304
+ className: "flex justify-center py-1",
305
+ children: /* @__PURE__ */ g(T, { className: "h-icon-sm w-icon-sm rotate-90 text-text-muted" })
306
+ })]
307
+ }, e.id))
308
+ })
309
+ }), xe = V ? /* @__PURE__ */ g(r, {
310
+ id: "pipeline-test-panel",
311
+ emphasis: "primary",
312
+ headingLevel: 2,
313
+ title: O("bigconsole.pipelines.view.testPanelHeading", "Test Pipeline"),
314
+ description: "Run sample input through every enabled stage. Nothing is written to the connected sink.",
315
+ actions: /* @__PURE__ */ _(h, {
316
+ onClick: ye,
317
+ disabled: G || !F,
318
+ className: v,
319
+ children: [/* @__PURE__ */ g(C, { className: "h-icon-sm w-icon-sm" }), G ? O("bigconsole.pipelines.view.testRunning", "Running...") : O("bigconsole.pipelines.view.runTest", "Run Test")]
320
+ }),
321
+ "data-testid": "pipeline-test-panel",
322
+ children: /* @__PURE__ */ _("div", {
323
+ className: "flex flex-col gap-form-gap",
324
+ children: [/* @__PURE__ */ _("div", {
325
+ className: "min-w-0",
326
+ children: [/* @__PURE__ */ g("label", {
327
+ htmlFor: A,
328
+ className: "mb-1 block text-sm font-medium text-text-primary",
329
+ children: O("bigconsole.pipelines.view.inputJsonLabel", "Input JSON")
330
+ }), /* @__PURE__ */ g("textarea", {
331
+ id: A,
332
+ value: R,
333
+ onChange: (e) => z(e.target.value),
334
+ spellCheck: !1,
335
+ className: `min-h-32 w-full resize-y rounded-input border border-[var(--color-border-subtle)] bg-bg-canvas px-3 py-2 font-mono text-sm text-text-primary ${n}`,
336
+ placeholder: "{\"key\": \"value\"}"
337
+ })]
338
+ }), B && /* @__PURE__ */ g(r, {
339
+ tone: $ ? "success" : "danger",
340
+ headingLevel: 3,
341
+ title: $ ? O("bigconsole.pipelines.view.testPassed", "Test Passed") : O("bigconsole.pipelines.view.testFailed", "Test Failed"),
342
+ icon: g($ ? de : w, { className: "h-icon-sm w-icon-sm" }),
343
+ meta: B.totalExecutionTimeMs ? /* @__PURE__ */ _("span", {
344
+ className: ue,
345
+ children: [B.totalExecutionTimeMs, "ms"]
346
+ }) : null,
347
+ "data-testid": "pipeline-test-result",
348
+ children: /* @__PURE__ */ _("div", {
349
+ className: "flex flex-col gap-form-gap",
350
+ children: [/* @__PURE__ */ _("div", {
351
+ className: "min-w-0",
352
+ children: [/* @__PURE__ */ g("h4", {
353
+ className: "mb-1 text-sm font-medium text-text-primary",
354
+ children: O("bigconsole.pipelines.view.outputLabel", "Output")
355
+ }), /* @__PURE__ */ g("pre", {
356
+ className: "max-h-64 w-full overflow-auto rounded-input border border-[var(--color-border-subtle)] bg-bg-canvas p-3 font-mono text-xs text-text-primary",
357
+ children: JSON.stringify(B.outputData, null, 2) || "null"
358
+ })]
359
+ }), B.error && /* @__PURE__ */ _("div", {
360
+ className: "min-w-0",
361
+ children: [/* @__PURE__ */ g("h4", {
362
+ className: "mb-1 text-sm font-medium text-status-error-text",
363
+ children: O("bigconsole.pipelines.view.errorLabel", "Error")
364
+ }), /* @__PURE__ */ g("pre", {
365
+ className: "max-h-64 w-full overflow-auto rounded-input border border-[var(--color-status-error-border)] bg-[var(--color-status-error-bgSubtle)] p-3 font-mono text-xs text-status-error-text",
366
+ children: B.error
367
+ })]
368
+ })]
369
+ })
370
+ })]
371
+ })
372
+ }) : null;
373
+ return /* @__PURE__ */ _("div", {
374
+ className: "p-card-padding",
375
+ children: [/* @__PURE__ */ _(i, { children: [
376
+ /* @__PURE__ */ _("header", {
377
+ className: "flex flex-col gap-form-gap sm:flex-row sm:items-start sm:justify-between",
378
+ children: [/* @__PURE__ */ _("div", {
379
+ className: "flex min-w-0 flex-col gap-control-gap",
380
+ children: [
381
+ /* @__PURE__ */ _(h, {
382
+ variant: "ghost",
383
+ size: "sm",
384
+ onClick: X,
385
+ className: "w-fit",
386
+ children: [/* @__PURE__ */ g(b, { className: "h-icon-sm w-icon-sm" }), O("bigconsole.pipelines.actions.backToPipelines", "Back to Pipelines")]
387
+ }),
388
+ /* @__PURE__ */ _("div", {
389
+ className: "flex flex-wrap items-center gap-icon-gap",
390
+ children: [/* @__PURE__ */ g("h1", {
391
+ className: "min-w-0 break-words text-2xl font-bold leading-tight text-text-primary",
392
+ children: I.name
393
+ }), /* @__PURE__ */ g(c, { status: I.status })]
394
+ }),
395
+ I.description && /* @__PURE__ */ g("p", {
396
+ className: "text-sm text-text-secondary",
397
+ children: I.description
398
+ })
399
+ ]
400
+ }), /* @__PURE__ */ _("div", {
401
+ className: "flex flex-wrap items-center gap-control-gap",
402
+ children: [
403
+ /* @__PURE__ */ _(h, {
404
+ onClick: () => H(!V),
236
405
  disabled: !F,
237
- className: "inline-flex items-center gap-2 px-3 py-2 text-sm font-medium text-status-success-text bg-status-success-bg/10 hover:bg-status-success-bg/20 rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
238
- children: [/* @__PURE__ */ b(w, { className: "w-4 h-4" }), "Test"]
406
+ "aria-expanded": V,
407
+ "aria-controls": "pipeline-test-panel",
408
+ className: v,
409
+ children: [/* @__PURE__ */ g(C, { className: "h-icon-sm w-icon-sm" }), O("bigconsole.pipelines.actions.test", "Test")]
239
410
  }),
240
- /* @__PURE__ */ x("button", {
241
- type: "button",
242
- onClick: $,
411
+ /* @__PURE__ */ _(h, {
412
+ variant: "secondary",
413
+ onClick: Z,
243
414
  disabled: !N,
244
- className: "inline-flex items-center gap-2 px-3 py-2 text-sm font-medium text-text-primary bg-bg-sunken hover:bg-border-default rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
245
- children: [/* @__PURE__ */ b(te, { className: "w-4 h-4" }), "Edit"]
415
+ className: v,
416
+ children: [/* @__PURE__ */ g(x, { className: "h-icon-sm w-icon-sm" }), O("bigconsole.pipelines.actions.edit", "Edit")]
246
417
  }),
247
- P && /* @__PURE__ */ x("button", {
248
- type: "button",
249
- onClick: ie,
250
- className: "inline-flex items-center gap-2 px-3 py-2 text-sm font-medium text-status-error-text bg-status-error-bg/10 hover:bg-status-error-bg/20 rounded-md transition-colors",
251
- children: [/* @__PURE__ */ b(C, { className: "w-4 h-4" }), "Delete"]
418
+ P && /* @__PURE__ */ _(h, {
419
+ variant: "destructive",
420
+ onClick: ge,
421
+ className: v,
422
+ children: [/* @__PURE__ */ g(S, { className: "h-icon-sm w-icon-sm" }), O("bigconsole.pipelines.actions.delete", "Delete")]
252
423
  })
253
424
  ]
254
425
  })]
255
426
  }),
256
- /* @__PURE__ */ b(ee, {
257
- className: "mb-6",
258
- children: "A pipeline chains parsers and a data sink into a repeatable flow. Review its stages here, test it with sample input to confirm the output, then edit the stages or run it to process real data into the connected sink."
427
+ /* @__PURE__ */ g(ce, {
428
+ className: "max-w-[75ch]",
429
+ children: O("bigconsole.pipelines.view.purpose", "A pipeline chains parsers and a data sink into a repeatable flow. Review its stages here, test it with sample input to confirm the output, then edit the stages or run it to process real data into the connected sink.")
259
430
  }),
260
- /* @__PURE__ */ b(v, {
431
+ /* @__PURE__ */ g(se, {
261
432
  storageKey: "bigconsole-pipeline-view",
262
433
  steps: [
263
434
  ...F ? [{
264
435
  id: "test",
265
- label: "Test with sample input",
266
- description: "Run the pipeline against a sample to verify each stage.",
267
- onClick: () => U(!0)
436
+ label: O("bigconsole.pipelines.view.nextStepTestLabel", "Test with sample input"),
437
+ description: O("bigconsole.pipelines.view.nextStepTestDescription", "Run the pipeline against a sample to verify each stage."),
438
+ onClick: () => H(!0)
268
439
  }] : [],
269
440
  ...N ? [{
270
441
  id: "edit",
271
- label: "Edit the stages",
272
- description: "Add, reorder, or configure the parsers in this pipeline.",
273
- onClick: $
442
+ label: O("bigconsole.pipelines.view.nextStepEditLabel", "Edit the stages"),
443
+ description: O("bigconsole.pipelines.view.nextStepEditDescription", "Add, reorder, or configure the parsers in this pipeline."),
444
+ onClick: Z
274
445
  }] : [],
275
446
  {
276
447
  id: "sinks",
277
- label: "Review the target data sink",
278
- description: "See where the processed data lands.",
279
- onClick: () => k("/datasinks")
448
+ label: O("bigconsole.pipelines.view.nextStepSinksLabel", "Review the target data sink"),
449
+ description: O("bigconsole.pipelines.view.nextStepSinksDescription", "See where the processed data lands."),
450
+ onClick: () => D("/datasinks")
280
451
  }
281
452
  ]
282
453
  }),
283
- /* @__PURE__ */ x("div", {
284
- className: "grid grid-cols-1 lg:grid-cols-3 gap-6",
285
- children: [/* @__PURE__ */ x("div", {
286
- className: "lg:col-span-2 space-y-6",
287
- children: [/* @__PURE__ */ x(g, {
288
- treatment: "glass",
289
- glow: !0,
290
- className: "p-6",
291
- children: [/* @__PURE__ */ x("h2", {
292
- className: "text-lg font-semibold text-text-primary mb-4",
293
- children: [
294
- "Pipeline Stages (",
295
- I.stages?.length || 0,
296
- ")"
297
- ]
298
- }), !I.stages || I.stages.length === 0 ? /* @__PURE__ */ b(_, {
299
- illustration: "empty-generic",
300
- title: "No stages defined",
301
- description: "Edit the pipeline to add parser stages."
302
- }) : /* @__PURE__ */ b("div", {
303
- className: "space-y-3",
304
- children: I.stages.map((e, t) => /* @__PURE__ */ x("div", {
305
- className: "flex items-center gap-3",
306
- children: [/* @__PURE__ */ x("div", {
307
- className: `
308
- flex-1 p-4 rounded-lg border
309
- ${e.enabled ? "bg-bg-surface border-border-default" : "bg-bg-sunken border-border-default opacity-60"}
310
- `,
311
- children: [
312
- /* @__PURE__ */ x("div", {
313
- className: "flex items-center justify-between mb-2",
314
- children: [/* @__PURE__ */ x("div", {
315
- className: "flex items-center gap-2",
316
- children: [
317
- /* @__PURE__ */ b("span", {
318
- className: "w-6 h-6 flex items-center justify-center text-xs font-medium bg-action-primary-bg/10 text-action-primary-bg rounded-full",
319
- children: t + 1
320
- }),
321
- /* @__PURE__ */ b("span", {
322
- className: "font-medium text-text-primary",
323
- children: e.parserName || `Stage ${t + 1}`
324
- }),
325
- e.parserType && /* @__PURE__ */ b("span", {
326
- className: "px-1.5 py-0.5 text-xs font-medium bg-bg-sunken text-text-secondary rounded",
327
- children: e.parserType.toUpperCase()
328
- })
329
- ]
330
- }), /* @__PURE__ */ x("div", {
331
- className: "flex items-center gap-2",
332
- children: [/* @__PURE__ */ b(O, { handling: e.onError }), !e.enabled && /* @__PURE__ */ b("span", {
333
- className: "px-1.5 py-0.5 text-xs font-medium bg-bg-sunken text-text-secondary rounded",
334
- children: "Disabled"
335
- })]
336
- })]
337
- }),
338
- /* @__PURE__ */ x("div", {
339
- className: "flex items-center gap-2 text-xs text-text-secondary",
340
- children: [
341
- /* @__PURE__ */ b("span", {
342
- className: "font-mono bg-bg-sunken px-1.5 py-0.5 rounded",
343
- children: e.inputKey
344
- }),
345
- /* @__PURE__ */ b(D, { className: "w-3 h-3" }),
346
- /* @__PURE__ */ b("span", {
347
- className: "font-mono bg-bg-sunken px-1.5 py-0.5 rounded",
348
- children: e.outputKey
349
- })
350
- ]
351
- }),
352
- e.description && /* @__PURE__ */ b("p", {
353
- className: "text-xs text-text-secondary mt-2",
354
- children: e.description
355
- }),
356
- e.parserId && /* @__PURE__ */ b("button", {
357
- type: "button",
358
- onClick: () => oe(e.parserId),
359
- className: "mt-2 text-xs text-action-primary-bg hover:underline",
360
- children: "View Parser"
454
+ /* @__PURE__ */ _("div", {
455
+ className: "grid grid-cols-1 gap-section-gap lg:grid-cols-3",
456
+ children: [/* @__PURE__ */ g("div", {
457
+ className: "min-w-0 lg:col-span-2",
458
+ children: /* @__PURE__ */ _(i, { children: [xe, be] })
459
+ }), /* @__PURE__ */ g("div", {
460
+ className: "min-w-0",
461
+ children: /* @__PURE__ */ g(i, { children: /* @__PURE__ */ g(r, {
462
+ emphasis: "muted",
463
+ headingLevel: 2,
464
+ title: O("bigconsole.pipelines.view.detailsHeading", "Details"),
465
+ "data-testid": "pipeline-details",
466
+ children: /* @__PURE__ */ _("dl", {
467
+ className: "flex flex-col gap-form-gap text-sm",
468
+ children: [/* @__PURE__ */ _("div", {
469
+ className: "flex flex-col gap-3",
470
+ children: [
471
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("dt", {
472
+ className: "text-xs text-text-muted",
473
+ children: O("bigconsole.pipelines.view.detailStatus", "Status")
474
+ }), /* @__PURE__ */ g("dd", {
475
+ className: "mt-1",
476
+ children: /* @__PURE__ */ g(c, {
477
+ status: I.status,
478
+ size: "sm"
361
479
  })
362
- ]
363
- }), t < (I.stages?.length || 0) - 1 && /* @__PURE__ */ b(D, { className: "w-5 h-5 text-text-secondary flex-shrink-0 hidden md:block" })]
364
- }, e.id))
365
- })]
366
- }), H && /* @__PURE__ */ x("div", {
367
- className: "bg-bg-surface border border-border-default rounded-lg p-6",
368
- children: [/* @__PURE__ */ b("h2", {
369
- className: "text-lg font-semibold text-text-primary mb-4",
370
- children: "Test Pipeline"
371
- }), /* @__PURE__ */ x("div", {
372
- className: "space-y-4",
373
- children: [
374
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("label", {
375
- className: "block text-sm font-medium text-text-primary mb-2",
376
- children: "Input JSON"
377
- }), /* @__PURE__ */ b("textarea", {
378
- value: R,
379
- onChange: (e) => z(e.target.value),
380
- className: "w-full h-32 px-3 py-2 text-sm font-mono text-text-primary bg-bg-sunken border border-border-default rounded-md focus:outline-none focus:ring-2 focus:ring-action-primary-bg resize-none",
381
- placeholder: "{\"key\": \"value\"}"
382
- })] }),
383
- /* @__PURE__ */ x("button", {
384
- type: "button",
385
- onClick: se,
386
- disabled: q || !F,
387
- className: "inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-action-primary-fg bg-action-primary-bg hover:bg-action-primary-bgHover rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
388
- children: [/* @__PURE__ */ b(w, { className: "w-4 h-4" }), q ? "Running..." : "Run Test"]
389
- }),
390
- B && /* @__PURE__ */ x("div", {
391
- className: "mt-4",
392
- children: [
393
- /* @__PURE__ */ x("div", {
394
- className: "flex items-center gap-2 mb-2",
395
- children: [B.status === "completed" ? /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(E, { className: "w-4 h-4 text-status-success-text" }), /* @__PURE__ */ b("span", {
396
- className: "text-sm font-medium text-status-success-text",
397
- children: "Test Passed"
398
- })] }) : /* @__PURE__ */ x(y, { children: [/* @__PURE__ */ b(T, { className: "w-4 h-4 text-status-error-text" }), /* @__PURE__ */ b("span", {
399
- className: "text-sm font-medium text-status-error-text",
400
- children: "Test Failed"
401
- })] }), B.totalExecutionTimeMs && /* @__PURE__ */ x("span", {
402
- className: "text-xs text-text-secondary",
403
- children: [
404
- "(",
405
- B.totalExecutionTimeMs,
406
- "ms)"
407
- ]
408
- })]
409
- }),
410
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("label", {
411
- className: "block text-sm font-medium text-text-primary mb-2",
412
- children: "Output"
413
- }), /* @__PURE__ */ b("pre", {
414
- className: "w-full p-3 text-xs font-mono text-text-primary bg-bg-sunken border border-border-default rounded-md overflow-auto max-h-48",
415
- children: JSON.stringify(B.outputData, null, 2) || "null"
416
- })] }),
417
- B.error && /* @__PURE__ */ x("div", {
418
- className: "mt-2",
419
- children: [/* @__PURE__ */ b("label", {
420
- className: "block text-sm font-medium text-status-error-text mb-2",
421
- children: "Error"
422
- }), /* @__PURE__ */ b("pre", {
423
- className: "w-full p-3 text-xs font-mono text-status-error-text bg-status-error-bg/10 border border-status-error-border/20 rounded-md overflow-auto",
424
- children: B.error
425
- })]
480
+ })] }),
481
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("dt", {
482
+ className: "text-xs text-text-muted",
483
+ children: O("bigconsole.pipelines.view.detailStages", "Stages")
484
+ }), /* @__PURE__ */ g("dd", {
485
+ className: "text-text-primary",
486
+ children: Q
487
+ })] }),
488
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("dt", {
489
+ className: "text-xs text-text-muted",
490
+ children: O("bigconsole.pipelines.view.detailLastExecuted", "Last Executed")
491
+ }), /* @__PURE__ */ g("dd", {
492
+ className: "break-words text-text-primary",
493
+ children: I.lastExecutedAt ? new Date(I.lastExecutedAt).toLocaleString(void 0, {
494
+ dateStyle: "medium",
495
+ timeStyle: "short"
496
+ }) : O("bigconsole.pipelines.view.detailNever", "Never")
497
+ })] })
498
+ ]
499
+ }), /* @__PURE__ */ _("div", {
500
+ className: "flex flex-col gap-3 border-t border-[var(--color-border-subtle)] pt-form-gap",
501
+ children: [
502
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("dt", {
503
+ className: "text-xs text-text-muted",
504
+ children: O("bigconsole.pipelines.view.detailVersion", "Version")
505
+ }), /* @__PURE__ */ g("dd", {
506
+ className: "text-text-primary",
507
+ children: I.version
508
+ })] }),
509
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("dt", {
510
+ className: "text-xs text-text-muted",
511
+ children: O("bigconsole.pipelines.view.detailCreated", "Created")
512
+ }), /* @__PURE__ */ g("dd", {
513
+ className: "break-words text-text-primary",
514
+ children: new Date(I.createdAt).toLocaleString(void 0, {
515
+ dateStyle: "medium",
516
+ timeStyle: "short"
426
517
  })
427
- ]
428
- })
429
- ]
430
- })]
431
- })]
432
- }), /* @__PURE__ */ b("div", {
433
- className: "space-y-6",
434
- children: /* @__PURE__ */ x("div", {
435
- className: "bg-bg-surface border border-border-default rounded-lg p-6",
436
- children: [/* @__PURE__ */ b("h2", {
437
- className: "text-lg font-semibold text-text-primary mb-4",
438
- children: "Details"
439
- }), /* @__PURE__ */ x("dl", {
440
- className: "space-y-3",
441
- children: [
442
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("dt", {
443
- className: "text-xs text-text-secondary",
444
- children: "Status"
445
- }), /* @__PURE__ */ b("dd", {
446
- className: "mt-1",
447
- children: /* @__PURE__ */ b(o, { status: I.status })
448
- })] }),
449
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("dt", {
450
- className: "text-xs text-text-secondary",
451
- children: "Stages"
452
- }), /* @__PURE__ */ b("dd", {
453
- className: "text-sm text-text-primary",
454
- children: I.stages?.length || 0
455
- })] }),
456
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("dt", {
457
- className: "text-xs text-text-secondary",
458
- children: "Last Executed"
459
- }), /* @__PURE__ */ b("dd", {
460
- className: "text-sm text-text-primary",
461
- children: I.lastExecutedAt ? new Date(I.lastExecutedAt).toLocaleString() : "Never"
462
- })] }),
463
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("dt", {
464
- className: "text-xs text-text-secondary",
465
- children: "Version"
466
- }), /* @__PURE__ */ b("dd", {
467
- className: "text-sm text-text-primary",
468
- children: I.version
469
- })] }),
470
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("dt", {
471
- className: "text-xs text-text-secondary",
472
- children: "Created"
473
- }), /* @__PURE__ */ b("dd", {
474
- className: "text-sm text-text-primary",
475
- children: new Date(I.createdAt).toLocaleString()
476
- })] }),
477
- /* @__PURE__ */ x("div", { children: [/* @__PURE__ */ b("dt", {
478
- className: "text-xs text-text-secondary",
479
- children: "Updated"
480
- }), /* @__PURE__ */ b("dd", {
481
- className: "text-sm text-text-primary",
482
- children: new Date(I.updatedAt).toLocaleString()
483
- })] })
484
- ]
485
- })]
486
- })
518
+ })] }),
519
+ /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g("dt", {
520
+ className: "text-xs text-text-muted",
521
+ children: O("bigconsole.pipelines.view.detailUpdated", "Updated")
522
+ }), /* @__PURE__ */ g("dd", {
523
+ className: "break-words text-text-primary",
524
+ children: new Date(I.updatedAt).toLocaleString(void 0, {
525
+ dateStyle: "medium",
526
+ timeStyle: "short"
527
+ })
528
+ })] })
529
+ ]
530
+ })]
531
+ })
532
+ }) })
487
533
  })]
488
- }),
489
- I && /* @__PURE__ */ b(s, {
490
- pipeline: I,
491
- isOpen: W,
492
- onClose: K,
493
- onConfirm: ae
494
- })
495
- ]
496
- }) : /* @__PURE__ */ b("div", {
497
- className: "p-6",
498
- children: /* @__PURE__ */ b(_, {
499
- illustration: "empty-data",
500
- title: "Pipeline not found",
501
- description: "The pipeline you're looking for doesn't exist or has been deleted.",
502
- action: /* @__PURE__ */ b("button", {
503
- type: "button",
504
- onClick: Q,
505
- className: "px-4 py-2 text-sm font-medium text-action-primary-fg bg-action-primary-bg hover:bg-action-primary-bgHover rounded-md transition-colors",
506
- children: "Back to Pipelines"
507
534
  })
508
- })
535
+ ] }), I && /* @__PURE__ */ g(te, {
536
+ pipeline: I,
537
+ isOpen: he,
538
+ onClose: W,
539
+ onConfirm: _e
540
+ })]
509
541
  });
510
542
  });
511
543
  //#endregion
512
- export { k as PipelineViewPage, k as default };
544
+ export { D as PipelineViewPage, D as default };
513
545
 
514
546
  //# sourceMappingURL=PipelineViewPage.js.map