@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 +1 @@
1
- {"version":3,"file":"ParserStatusBadge.js","names":[],"sources":["../../../../src/bigconsole/components/parser/ParserStatusBadge.tsx"],"sourcesContent":["/**\n * Parser Status Badge\n *\n * Badge component displaying parser status (active, inactive).\n */\n\nimport { memo } from 'react';\nimport type { ParserStatus } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface ParserStatusBadgeProps {\n /** Parser status */\n status: ParserStatus;\n /** Badge size */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to show icon */\n showIcon?: boolean;\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst SIZE_CLASSES = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n};\n\nconst ICON_SIZE_CLASSES = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n};\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n);\n\nconst XCircleIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n);\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const ParserStatusBadge = memo(function ParserStatusBadge({\n status,\n size = 'md',\n showIcon = true,\n}: ParserStatusBadgeProps) {\n const sizeClass = SIZE_CLASSES[size];\n const iconSizeClass = ICON_SIZE_CLASSES[size];\n\n const config = {\n active: {\n bg: 'bg-status-success-bg/10',\n text: 'text-status-success-text',\n icon: <CheckIcon className={iconSizeClass} />,\n label: 'Active',\n },\n inactive: {\n bg: 'bg-text-tertiary/10',\n text: 'text-text-tertiary',\n icon: <XCircleIcon className={iconSizeClass} />,\n label: 'Inactive',\n },\n }[status];\n\n if (!config) {\n return (\n <span\n className={`\n inline-flex items-center gap-1.5\n ${sizeClass}\n bg-bg-sunken\n text-text-secondary\n rounded-full\n font-medium\n `}\n >\n {status}\n </span>\n );\n }\n\n return (\n <span\n className={`\n inline-flex items-center gap-1.5\n ${sizeClass}\n ${config.bg}\n ${config.text}\n rounded-full\n font-medium\n `}\n >\n {showIcon && config.icon}\n <span>{config.label}</span>\n </span>\n );\n});\n\nexport default ParserStatusBadge;\n"],"mappings":";;;AA0BA,IAAM,IAAe;CACnB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAEK,IAAoB;CACxB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAMK,KAAa,EAAE,mBACnB,kBAAC,OAAD;CAAgB;CAAW,MAAK;CAAO,QAAO;CAAe,SAAQ;WACnE,kBAAC,QAAD;EAAM,eAAc;EAAQ,gBAAe;EAAQ,aAAa;EAAG,GAAE;EAAmB,CAAA;CACpF,CAAA,EAGF,KAAe,EAAE,mBACrB,kBAAC,OAAD;CAAgB;CAAW,MAAK;CAAO,QAAO;CAAe,SAAQ;WACnE,kBAAC,QAAD;EACE,eAAc;EACd,gBAAe;EACf,aAAa;EACb,GAAE;EACF,CAAA;CACE,CAAA,EAOK,IAAoB,EAAK,SAA2B,EAC/D,WACA,UAAO,MACP,cAAW,MACc;CACzB,IAAM,IAAY,EAAa,IACzB,IAAgB,EAAkB,IAElC,IAAS;EACb,QAAQ;GACN,IAAI;GACJ,MAAM;GACN,MAAM,kBAAC,GAAD,EAAW,WAAW,GAAiB,CAAA;GAC7C,OAAO;GACR;EACD,UAAU;GACR,IAAI;GACJ,MAAM;GACN,MAAM,kBAAC,GAAD,EAAa,WAAW,GAAiB,CAAA;GAC/C,OAAO;GACR;EACF,CAAC;AAmBF,QAjBK,IAkBH,kBAAC,QAAD;EACE,WAAW;;UAEP,EAAU;UACV,EAAO,GAAG;UACV,EAAO,KAAK;;;;YALlB,CAUG,KAAY,EAAO,MACpB,kBAAC,QAAD,EAAA,UAAO,EAAO,OAAa,CAAA,CACtB;MA5BL,kBAAC,QAAD;EACE,WAAW;;YAEP,EAAU;;;;;;YAOb;EACI,CAAA;EAmBX"}
1
+ {"version":3,"file":"ParserStatusBadge.js","names":[],"sources":["../../../../src/bigconsole/components/parser/ParserStatusBadge.tsx"],"sourcesContent":["/**\n * Parser Status Badge\n *\n * Badge component displaying parser status (active, inactive).\n */\n\nimport { memo } from 'react';\nimport type { ParserStatus } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface ParserStatusBadgeProps {\n /** Parser status */\n status: ParserStatus;\n /** Badge size */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to show icon */\n showIcon?: boolean;\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst SIZE_CLASSES = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n};\n\nconst ICON_SIZE_CLASSES = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n};\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n);\n\nconst XCircleIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n);\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const ParserStatusBadge = memo(function ParserStatusBadge({\n status,\n size = 'md',\n showIcon = true,\n}: ParserStatusBadgeProps) {\n const sizeClass = SIZE_CLASSES[size];\n const iconSizeClass = ICON_SIZE_CLASSES[size];\n\n const config = {\n active: {\n bg: 'bg-status-success-bg/10',\n text: 'text-status-success-text',\n icon: <CheckIcon className={iconSizeClass} />,\n label: 'Active',\n },\n inactive: {\n // `bg-text-tertiary` / `text-text-tertiary` are unregistered in this shell\n // and emitted no CSS, so the inactive pill rendered with no fill at all.\n bg: 'bg-bg-sunken',\n text: 'text-text-muted',\n icon: <XCircleIcon className={iconSizeClass} />,\n label: 'Inactive',\n },\n }[status];\n\n if (!config) {\n return (\n <span\n className={`\n inline-flex items-center gap-1.5\n ${sizeClass}\n bg-bg-sunken\n text-text-secondary\n rounded-full\n font-medium\n `}\n >\n {status}\n </span>\n );\n }\n\n return (\n <span\n className={`\n inline-flex items-center gap-1.5\n ${sizeClass}\n ${config.bg}\n ${config.text}\n rounded-full\n font-medium\n `}\n >\n {showIcon && config.icon}\n <span>{config.label}</span>\n </span>\n );\n});\n\nexport default ParserStatusBadge;\n"],"mappings":";;;AA0BA,IAAM,IAAe;CACnB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAEK,IAAoB;CACxB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAMK,KAAa,EAAE,mBACnB,kBAAC,OAAD;CAAgB;CAAW,MAAK;CAAO,QAAO;CAAe,SAAQ;WACnE,kBAAC,QAAD;EAAM,eAAc;EAAQ,gBAAe;EAAQ,aAAa;EAAG,GAAE;EAAmB,CAAA;CACpF,CAAA,EAGF,KAAe,EAAE,mBACrB,kBAAC,OAAD;CAAgB;CAAW,MAAK;CAAO,QAAO;CAAe,SAAQ;WACnE,kBAAC,QAAD;EACE,eAAc;EACd,gBAAe;EACf,aAAa;EACb,GAAE;EACF,CAAA;CACE,CAAA,EAOK,IAAoB,EAAK,SAA2B,EAC/D,WACA,UAAO,MACP,cAAW,MACc;CACzB,IAAM,IAAY,EAAa,IACzB,IAAgB,EAAkB,IAElC,IAAS;EACb,QAAQ;GACN,IAAI;GACJ,MAAM;GACN,MAAM,kBAAC,GAAD,EAAW,WAAW,GAAiB,CAAA;GAC7C,OAAO;GACR;EACD,UAAU;GAGR,IAAI;GACJ,MAAM;GACN,MAAM,kBAAC,GAAD,EAAa,WAAW,GAAiB,CAAA;GAC/C,OAAO;GACR;EACF,CAAC;AAmBF,QAjBK,IAkBH,kBAAC,QAAD;EACE,WAAW;;UAEP,EAAU;UACV,EAAO,GAAG;UACV,EAAO,KAAK;;;;YALlB,CAUG,KAAY,EAAO,MACpB,kBAAC,QAAD,EAAA,UAAO,EAAO,OAAa,CAAA,CACtB;MA5BL,kBAAC,QAAD;EACE,WAAW;;YAEP,EAAU;;;;;;YAOb;EACI,CAAA;EAmBX"}
@@ -7,13 +7,13 @@ var n = {
7
7
  lg: "px-3 py-1.5 text-base"
8
8
  }, r = {
9
9
  jq: {
10
- bg: "bg-blue-500/10",
11
- text: "text-blue-600 dark:text-blue-400",
10
+ bg: "bg-[var(--color-status-info-bgSubtle)]",
11
+ text: "text-[var(--color-status-info-text)]",
12
12
  label: "JQ"
13
13
  },
14
14
  jsonata: {
15
- bg: "bg-purple-500/10",
16
- text: "text-purple-600 dark:text-purple-400",
15
+ bg: "bg-bg-accentSubtle",
16
+ text: "text-text-link",
17
17
  label: "JSONata"
18
18
  }
19
19
  }, i = e(function({ type: e, size: i = "md" }) {
@@ -1 +1 @@
1
- {"version":3,"file":"ParserTypeBadge.js","names":[],"sources":["../../../../src/bigconsole/components/parser/ParserTypeBadge.tsx"],"sourcesContent":["/**\n * Parser Type Badge\n *\n * Badge component displaying parser type (JQ, JSONata).\n */\n\nimport { memo } from 'react';\nimport type { ParserType } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface ParserTypeBadgeProps {\n /** Parser type */\n type: ParserType;\n /** Badge size */\n size?: 'sm' | 'md' | 'lg';\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst SIZE_CLASSES = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n};\n\nconst TYPE_CONFIG: Record<ParserType, { bg: string; text: string; label: string }> = {\n jq: {\n bg: 'bg-blue-500/10',\n text: 'text-blue-600 dark:text-blue-400',\n label: 'JQ',\n },\n jsonata: {\n bg: 'bg-purple-500/10',\n text: 'text-purple-600 dark:text-purple-400',\n label: 'JSONata',\n },\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const ParserTypeBadge = memo(function ParserTypeBadge({ type, size = 'md' }: ParserTypeBadgeProps) {\n const sizeClass = SIZE_CLASSES[size];\n const config = TYPE_CONFIG[type];\n\n if (!config) {\n return (\n <span\n className={`\n inline-flex items-center\n ${sizeClass}\n bg-bg-sunken\n text-text-secondary\n rounded-md\n font-mono\n font-semibold\n `}\n >\n {type}\n </span>\n );\n }\n\n return (\n <span\n className={`\n inline-flex items-center\n ${sizeClass}\n ${config.bg}\n ${config.text}\n rounded-md\n font-mono\n font-semibold\n `}\n >\n {config.label}\n </span>\n );\n});\n\nexport default ParserTypeBadge;\n"],"mappings":";;;AAwBA,IAAM,IAAe;CACnB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAEK,IAA+E;CACnF,IAAI;EACF,IAAI;EACJ,MAAM;EACN,OAAO;EACR;CACD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,OAAO;EACR;CACF,EAMY,IAAkB,EAAK,SAAyB,EAAE,SAAM,UAAO,QAA8B;CACxG,IAAM,IAAY,EAAa,IACzB,IAAS,EAAY;AAoB3B,QAlBK,IAmBH,kBAAC,QAAD;EACE,WAAW;;UAEP,EAAU;UACV,EAAO,GAAG;UACV,EAAO,KAAK;;;;;YAMf,EAAO;EACH,CAAA,GA7BL,kBAAC,QAAD;EACE,WAAW;;YAEP,EAAU;;;;;;;YAQb;EACI,CAAA;EAmBX"}
1
+ {"version":3,"file":"ParserTypeBadge.js","names":[],"sources":["../../../../src/bigconsole/components/parser/ParserTypeBadge.tsx"],"sourcesContent":["/**\n * Parser Type Badge\n *\n * Badge component displaying parser type (JQ, JSONata).\n */\n\nimport { memo } from 'react';\nimport type { ParserType } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface ParserTypeBadgeProps {\n /** Parser type */\n type: ParserType;\n /** Badge size */\n size?: 'sm' | 'md' | 'lg';\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst SIZE_CLASSES = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n lg: 'px-3 py-1.5 text-base',\n};\n\n/**\n * Type accents use semantic tokens only — the previous raw `blue-500`/`purple-500`\n * palette classes were not theme-aware and disagreed with the duplicate badge on\n * the DataSink detail page. `info` and `accent` are the two neutral-safe accents\n * available in every BigConsole theme.\n */\nconst TYPE_CONFIG: Record<ParserType, { bg: string; text: string; label: string }> = {\n jq: {\n bg: 'bg-[var(--color-status-info-bgSubtle)]',\n text: 'text-[var(--color-status-info-text)]',\n label: 'JQ',\n },\n jsonata: {\n bg: 'bg-bg-accentSubtle',\n text: 'text-text-link',\n label: 'JSONata',\n },\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const ParserTypeBadge = memo(function ParserTypeBadge({ type, size = 'md' }: ParserTypeBadgeProps) {\n const sizeClass = SIZE_CLASSES[size];\n const config = TYPE_CONFIG[type];\n\n if (!config) {\n return (\n <span\n className={`\n inline-flex items-center\n ${sizeClass}\n bg-bg-sunken\n text-text-secondary\n rounded-md\n font-mono\n font-semibold\n `}\n >\n {type}\n </span>\n );\n }\n\n return (\n <span\n className={`\n inline-flex items-center\n ${sizeClass}\n ${config.bg}\n ${config.text}\n rounded-md\n font-mono\n font-semibold\n `}\n >\n {config.label}\n </span>\n );\n});\n\nexport default ParserTypeBadge;\n"],"mappings":";;;AAwBA,IAAM,IAAe;CACnB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAQK,IAA+E;CACnF,IAAI;EACF,IAAI;EACJ,MAAM;EACN,OAAO;EACR;CACD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,OAAO;EACR;CACF,EAMY,IAAkB,EAAK,SAAyB,EAAE,SAAM,UAAO,QAA8B;CACxG,IAAM,IAAY,EAAa,IACzB,IAAS,EAAY;AAoB3B,QAlBK,IAmBH,kBAAC,QAAD;EACE,WAAW;;UAEP,EAAU;UACV,EAAO,GAAG;UACV,EAAO,KAAK;;;;;YAMf,EAAO;EACH,CAAA,GA7BL,kBAAC,QAAD;EACE,WAAW;;YAEP,EAAU;;;;;;;YAQb;EACI,CAAA;EAmBX"}
@@ -1,159 +1,204 @@
1
- import e from "./PipelineStatusBadge.js";
2
- import { memo as t, useCallback as n } from "react";
3
- import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
- import { formatDistanceToNow as a } from "date-fns";
1
+ import { SECTION_FOCUS_RING as e } from "../common/sectionStyles.js";
2
+ import "../common/index.js";
3
+ import t from "./PipelineStatusBadge.js";
4
+ import { memo as n, useCallback as r } from "react";
5
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
+ import { formatDistanceToNow as o } from "date-fns";
5
7
  //#region src/bigconsole/components/pipeline/PipelineCard.tsx
6
- var o = ({ className: e }) => /* @__PURE__ */ r("svg", {
8
+ var s = `inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-button text-text-secondary motion-safe:transition-colors ${e}`, c = ({ className: e }) => /* @__PURE__ */ i("svg", {
7
9
  className: e,
8
10
  fill: "none",
9
11
  stroke: "currentColor",
10
12
  viewBox: "0 0 24 24",
11
- children: /* @__PURE__ */ r("path", {
13
+ children: /* @__PURE__ */ i("path", {
12
14
  strokeLinecap: "round",
13
15
  strokeLinejoin: "round",
14
16
  strokeWidth: 1.5,
15
17
  d: "M19.5 12c0-1.232-.046-2.453-.138-3.662a4.006 4.006 0 00-3.7-3.7 48.678 48.678 0 00-7.324 0 4.006 4.006 0 00-3.7 3.7c-.017.22-.032.441-.046.662M19.5 12l3-3m-3 3l-3-3m-12 3c0 1.232.046 2.453.138 3.662a4.006 4.006 0 003.7 3.7 48.656 48.656 0 007.324 0 4.006 4.006 0 003.7-3.7c.017-.22.032-.441.046-.662M4.5 12l3 3m-3-3l-3 3"
16
18
  })
17
- }), s = ({ className: e }) => /* @__PURE__ */ r("svg", {
19
+ }), l = ({ className: e }) => /* @__PURE__ */ i("svg", {
18
20
  className: e,
19
21
  fill: "none",
20
22
  stroke: "currentColor",
21
23
  viewBox: "0 0 24 24",
22
- children: /* @__PURE__ */ r("path", {
24
+ children: /* @__PURE__ */ i("path", {
23
25
  strokeLinecap: "round",
24
26
  strokeLinejoin: "round",
25
27
  strokeWidth: 2,
26
28
  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"
27
29
  })
28
- }), c = ({ className: e }) => /* @__PURE__ */ i("svg", {
30
+ }), u = ({ className: e }) => /* @__PURE__ */ a("svg", {
29
31
  className: e,
30
32
  fill: "none",
31
33
  stroke: "currentColor",
32
34
  viewBox: "0 0 24 24",
33
- children: [/* @__PURE__ */ r("path", {
35
+ children: [/* @__PURE__ */ i("path", {
34
36
  strokeLinecap: "round",
35
37
  strokeLinejoin: "round",
36
38
  strokeWidth: 2,
37
39
  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"
38
- }), /* @__PURE__ */ r("path", {
40
+ }), /* @__PURE__ */ i("path", {
39
41
  strokeLinecap: "round",
40
42
  strokeLinejoin: "round",
41
43
  strokeWidth: 2,
42
44
  d: "M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
43
45
  })]
44
- }), l = ({ className: e }) => /* @__PURE__ */ r("svg", {
46
+ }), d = ({ className: e }) => /* @__PURE__ */ i("svg", {
45
47
  className: e,
46
48
  fill: "none",
47
49
  stroke: "currentColor",
48
50
  viewBox: "0 0 24 24",
49
- children: /* @__PURE__ */ r("path", {
51
+ children: /* @__PURE__ */ i("path", {
50
52
  strokeLinecap: "round",
51
53
  strokeLinejoin: "round",
52
54
  strokeWidth: 2,
53
55
  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"
54
56
  })
55
- }), u = ({ className: e }) => /* @__PURE__ */ r("svg", {
57
+ }), f = ({ className: e }) => /* @__PURE__ */ i("svg", {
56
58
  className: e,
57
59
  fill: "none",
58
60
  stroke: "currentColor",
59
61
  viewBox: "0 0 24 24",
60
- children: /* @__PURE__ */ r("path", {
62
+ children: /* @__PURE__ */ i("path", {
61
63
  strokeLinecap: "round",
62
64
  strokeLinejoin: "round",
63
65
  strokeWidth: 2,
64
66
  d: "M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"
65
67
  })
66
- }), d = t(function({ pipeline: t, onView: d, onEdit: f, onTest: p, onDelete: m }) {
67
- let h = t.stages?.length ?? 0, g = n((e) => {
68
- if (!e) return "Never";
68
+ }), p = ({ className: e }) => /* @__PURE__ */ i("svg", {
69
+ className: e,
70
+ fill: "none",
71
+ stroke: "currentColor",
72
+ viewBox: "0 0 24 24",
73
+ children: /* @__PURE__ */ i("path", {
74
+ strokeLinecap: "round",
75
+ strokeLinejoin: "round",
76
+ strokeWidth: 2,
77
+ d: "M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
78
+ })
79
+ }), m = n(function({ pipeline: n, onView: m, onEdit: h, onTest: g, onDelete: _ }) {
80
+ let v = n.stages?.length ?? 0, y = r((e) => {
81
+ if (!e) return "Never run";
69
82
  try {
70
- return a(new Date(e), { addSuffix: !0 });
83
+ return o(new Date(e), { addSuffix: !0 });
71
84
  } catch {
72
85
  return "Unknown";
73
86
  }
74
- }, []), _ = n(() => {
75
- d?.(t.id);
76
- }, [d, t.id]), v = n((e) => {
77
- e.stopPropagation(), f?.(t.id);
78
- }, [f, t.id]), y = n((e) => {
79
- e.stopPropagation(), p?.(t.id);
80
- }, [p, t.id]), b = n((e) => {
81
- e.stopPropagation(), m?.(t.id);
82
- }, [m, t.id]);
83
- return /* @__PURE__ */ i("div", {
84
- onClick: _,
85
- className: "\n bg-bg-surface\n border border-border-default\n rounded-lg\n overflow-hidden\n cursor-pointer\n hover:border-action-primary-bg\n transition-colors\n ",
86
- children: [/* @__PURE__ */ i("div", {
87
- className: "h-24 bg-bg-sunken flex items-center justify-center relative",
88
- children: [/* @__PURE__ */ r(o, { className: "w-10 h-10 text-text-secondary/50" }), /* @__PURE__ */ r("div", {
89
- className: "absolute top-2 right-2",
90
- children: /* @__PURE__ */ r(e, {
91
- status: t.status,
87
+ }, []), b = r(() => {
88
+ m?.(n.id);
89
+ }, [m, n.id]), x = r((e) => {
90
+ e.stopPropagation(), m?.(n.id);
91
+ }, [m, n.id]), S = r((e) => {
92
+ e.stopPropagation(), h?.(n.id);
93
+ }, [h, n.id]), C = r((e) => {
94
+ e.stopPropagation(), g?.(n.id);
95
+ }, [g, n.id]), w = r((e) => {
96
+ e.stopPropagation(), _?.(n.id);
97
+ }, [_, n.id]);
98
+ return /* @__PURE__ */ a("article", {
99
+ onClick: b,
100
+ "data-testid": "pipeline-card",
101
+ className: "group flex min-w-0 cursor-pointer flex-col rounded-card border border-[var(--color-border-subtle)] bg-bg-surface shadow-[var(--shadow-elevation-1)] motion-safe:transition-[box-shadow,border-color] hover:border-[var(--color-border-strong)] hover:shadow-[var(--shadow-elevation-2)]",
102
+ children: [/* @__PURE__ */ a("div", {
103
+ className: "flex min-w-0 items-start gap-icon-gap border-b border-[var(--color-border-subtle)] p-4",
104
+ children: [
105
+ /* @__PURE__ */ i("span", {
106
+ "aria-hidden": "true",
107
+ className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-button bg-bg-sunken text-text-secondary",
108
+ children: /* @__PURE__ */ i(c, { className: "h-icon-md w-icon-md" })
109
+ }),
110
+ /* @__PURE__ */ a("div", {
111
+ className: "min-w-0 flex-1",
112
+ children: [/* @__PURE__ */ i("h3", {
113
+ className: "min-w-0 text-base font-semibold leading-tight text-text-primary",
114
+ children: /* @__PURE__ */ i("button", {
115
+ type: "button",
116
+ onClick: x,
117
+ title: n.name,
118
+ className: `block w-full truncate rounded-button text-left ${e}`,
119
+ children: n.name
120
+ })
121
+ }), n.description && /* @__PURE__ */ i("p", {
122
+ className: "mt-0.5 line-clamp-2 text-sm text-text-secondary",
123
+ children: n.description
124
+ })]
125
+ }),
126
+ /* @__PURE__ */ i(t, {
127
+ status: n.status,
92
128
  size: "sm"
93
129
  })
94
- })]
95
- }), /* @__PURE__ */ i("div", {
96
- className: "p-4",
97
- children: [/* @__PURE__ */ i("div", {
98
- className: "flex items-start justify-between mb-2",
99
- children: [/* @__PURE__ */ i("div", {
100
- className: "flex-1 min-w-0",
101
- children: [/* @__PURE__ */ r("h3", {
102
- className: "text-sm font-semibold text-text-primary truncate",
103
- children: t.name
104
- }), t.description && /* @__PURE__ */ r("p", {
105
- className: "text-xs text-text-secondary truncate mt-0.5",
106
- children: t.description
107
- })]
108
- }), /* @__PURE__ */ i("div", {
109
- className: "flex items-center gap-1 ml-2",
130
+ ]
131
+ }), /* @__PURE__ */ a("div", {
132
+ className: "flex flex-wrap items-center justify-between gap-control-gap p-4",
133
+ children: [/* @__PURE__ */ a("dl", {
134
+ className: "flex min-w-0 flex-wrap items-center gap-x-4 gap-y-1 text-xs text-text-secondary",
135
+ children: [/* @__PURE__ */ a("div", {
136
+ className: "flex items-center gap-1",
110
137
  children: [
111
- p && /* @__PURE__ */ r("button", {
112
- type: "button",
113
- onClick: y,
114
- className: "\n p-1 rounded-md\n text-text-secondary\n hover:text-status-success-text\n hover:bg-status-success-bg/10\n transition-colors\n ",
115
- title: "Test Pipeline",
116
- children: /* @__PURE__ */ r(c, { className: "w-4 h-4" })
138
+ /* @__PURE__ */ i("dt", {
139
+ className: "sr-only",
140
+ children: "Stages"
117
141
  }),
118
- f && /* @__PURE__ */ r("button", {
119
- type: "button",
120
- onClick: v,
121
- className: "\n p-1 rounded-md\n text-text-secondary\n hover:text-text-primary\n hover:bg-bg-sunken\n transition-colors\n ",
122
- title: "Edit Pipeline",
123
- children: /* @__PURE__ */ r(s, { className: "w-4 h-4" })
142
+ /* @__PURE__ */ i(f, {
143
+ className: "h-3.5 w-3.5 shrink-0",
144
+ "aria-hidden": "true"
124
145
  }),
125
- m && /* @__PURE__ */ r("button", {
126
- type: "button",
127
- onClick: b,
128
- className: "\n p-1 rounded-md\n text-text-secondary\n hover:text-status-error-text\n hover:bg-status-error-bg/10\n transition-colors\n ",
129
- title: "Delete Pipeline",
130
- children: /* @__PURE__ */ r(l, { className: "w-4 h-4" })
146
+ /* @__PURE__ */ a("dd", { children: [
147
+ v,
148
+ " stage",
149
+ v === 1 ? "" : "s"
150
+ ] })
151
+ ]
152
+ }), /* @__PURE__ */ a("div", {
153
+ className: "flex items-center gap-1",
154
+ children: [
155
+ /* @__PURE__ */ i("dt", {
156
+ className: "sr-only",
157
+ children: "Last run"
158
+ }),
159
+ /* @__PURE__ */ i(p, {
160
+ className: "h-3.5 w-3.5 shrink-0",
161
+ "aria-hidden": "true"
162
+ }),
163
+ /* @__PURE__ */ i("dd", {
164
+ title: n.lastExecutedAt ? `Last executed: ${new Date(n.lastExecutedAt).toLocaleString()}` : "Never executed",
165
+ children: y(n.lastExecutedAt)
131
166
  })
132
167
  ]
133
168
  })]
134
- }), /* @__PURE__ */ i("div", {
135
- className: "flex items-center justify-between text-xs text-text-secondary mt-3",
136
- children: [/* @__PURE__ */ r("div", {
137
- className: "flex items-center gap-3",
138
- children: /* @__PURE__ */ i("span", {
139
- className: "flex items-center gap-1",
140
- title: `${h} stages`,
141
- children: [
142
- /* @__PURE__ */ r(u, { className: "w-3.5 h-3.5" }),
143
- h,
144
- " stage",
145
- h === 1 ? "" : "s"
146
- ]
169
+ }), /* @__PURE__ */ a("div", {
170
+ className: "flex shrink-0 items-center gap-1",
171
+ children: [
172
+ g && /* @__PURE__ */ i("button", {
173
+ type: "button",
174
+ onClick: C,
175
+ className: `${s} hover:bg-[var(--color-status-success-bgSubtle)] hover:text-status-success-text`,
176
+ title: "Test Pipeline",
177
+ "aria-label": `Test ${n.name}`,
178
+ children: /* @__PURE__ */ i(u, { className: "h-icon-sm w-icon-sm" })
179
+ }),
180
+ h && /* @__PURE__ */ i("button", {
181
+ type: "button",
182
+ onClick: S,
183
+ className: `${s} hover:bg-bg-sunken hover:text-text-primary`,
184
+ title: "Edit Pipeline",
185
+ "aria-label": `Edit ${n.name}`,
186
+ children: /* @__PURE__ */ i(l, { className: "h-icon-sm w-icon-sm" })
187
+ }),
188
+ _ && /* @__PURE__ */ i("button", {
189
+ type: "button",
190
+ onClick: w,
191
+ className: `${s} hover:bg-[var(--color-status-error-bgSubtle)] hover:text-status-error-text`,
192
+ title: "Delete Pipeline",
193
+ "aria-label": `Delete ${n.name}`,
194
+ children: /* @__PURE__ */ i(d, { className: "h-icon-sm w-icon-sm" })
147
195
  })
148
- }), /* @__PURE__ */ r("span", {
149
- title: t.lastExecutedAt ? `Last executed: ${new Date(t.lastExecutedAt).toLocaleString()}` : "Never executed",
150
- children: g(t.lastExecutedAt)
151
- })]
196
+ ]
152
197
  })]
153
198
  })]
154
199
  });
155
200
  });
156
201
  //#endregion
157
- export { d as default };
202
+ export { m as default };
158
203
 
159
204
  //# sourceMappingURL=PipelineCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineCard.js","names":[],"sources":["../../../../src/bigconsole/components/pipeline/PipelineCard.tsx"],"sourcesContent":["/**\n * PipelineCard Component\n *\n * Card component displaying a Pipeline summary.\n * Shows name, status, stage count, and execution stats.\n */\n\nimport { memo, useCallback } from 'react';\nimport { formatDistanceToNow } from 'date-fns';\nimport { PipelineStatusBadge } from './PipelineStatusBadge';\nimport type { Pipeline } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface PipelineCardProps {\n pipeline: Pipeline;\n onView?: (id: string) => void;\n onEdit?: (id: string) => void;\n onTest?: (id: string) => void;\n onDelete?: (id: string) => void;\n}\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nconst PipelineIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={1.5}\n d=\"M19.5 12c0-1.232-.046-2.453-.138-3.662a4.006 4.006 0 00-3.7-3.7 48.678 48.678 0 00-7.324 0 4.006 4.006 0 00-3.7 3.7c-.017.22-.032.441-.046.662M19.5 12l3-3m-3 3l-3-3m-12 3c0 1.232.046 2.453.138 3.662a4.006 4.006 0 003.7 3.7 48.656 48.656 0 007.324 0 4.006 4.006 0 003.7-3.7c.017-.22.032-.441.046-.662M4.5 12l3 3m-3-3l-3 3\"\n />\n </svg>\n);\n\nconst EditIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n 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\"\n />\n </svg>\n);\n\nconst PlayIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n 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\"\n />\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n);\n\nconst DeleteIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n 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\"\n />\n </svg>\n);\n\nconst LayersIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10\"\n />\n </svg>\n);\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const PipelineCard = memo(function PipelineCard({\n pipeline,\n onView,\n onEdit,\n onTest,\n onDelete,\n}: PipelineCardProps) {\n // Calculate stage count\n const stageCount = pipeline.stages?.length ?? 0;\n\n // Format last executed time\n const formatLastExecuted = useCallback((dateStr: string | null): string => {\n if (!dateStr) return 'Never';\n try {\n const date = new Date(dateStr);\n return formatDistanceToNow(date, { addSuffix: true });\n } catch {\n return 'Unknown';\n }\n }, []);\n\n // Event handlers\n const handleCardClick = useCallback(() => {\n onView?.(pipeline.id);\n }, [onView, pipeline.id]);\n\n const handleEditClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onEdit?.(pipeline.id);\n },\n [onEdit, pipeline.id]\n );\n\n const handleTestClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onTest?.(pipeline.id);\n },\n [onTest, pipeline.id]\n );\n\n const handleDeleteClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onDelete?.(pipeline.id);\n },\n [onDelete, pipeline.id]\n );\n\n return (\n <div\n onClick={handleCardClick}\n className=\"\n bg-bg-surface\n border border-border-default\n rounded-lg\n overflow-hidden\n cursor-pointer\n hover:border-action-primary-bg\n transition-colors\n \"\n >\n {/* Header with Icon */}\n <div className=\"h-24 bg-bg-sunken flex items-center justify-center relative\">\n <PipelineIcon className=\"w-10 h-10 text-text-secondary/50\" />\n <div className=\"absolute top-2 right-2\">\n <PipelineStatusBadge status={pipeline.status} size=\"sm\" />\n </div>\n </div>\n\n {/* Content */}\n <div className=\"p-4\">\n {/* Title and Actions */}\n <div className=\"flex items-start justify-between mb-2\">\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"text-sm font-semibold text-text-primary truncate\">{pipeline.name}</h3>\n {pipeline.description && (\n <p className=\"text-xs text-text-secondary truncate mt-0.5\">{pipeline.description}</p>\n )}\n </div>\n\n <div className=\"flex items-center gap-1 ml-2\">\n {onTest && (\n <button\n type=\"button\"\n onClick={handleTestClick}\n className=\"\n p-1 rounded-md\n text-text-secondary\n hover:text-status-success-text\n hover:bg-status-success-bg/10\n transition-colors\n \"\n title=\"Test Pipeline\"\n >\n <PlayIcon className=\"w-4 h-4\" />\n </button>\n )}\n {onEdit && (\n <button\n type=\"button\"\n onClick={handleEditClick}\n className=\"\n p-1 rounded-md\n text-text-secondary\n hover:text-text-primary\n hover:bg-bg-sunken\n transition-colors\n \"\n title=\"Edit Pipeline\"\n >\n <EditIcon className=\"w-4 h-4\" />\n </button>\n )}\n {onDelete && (\n <button\n type=\"button\"\n onClick={handleDeleteClick}\n className=\"\n p-1 rounded-md\n text-text-secondary\n hover:text-status-error-text\n hover:bg-status-error-bg/10\n transition-colors\n \"\n title=\"Delete Pipeline\"\n >\n <DeleteIcon className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n </div>\n\n {/* Stats Footer */}\n <div className=\"flex items-center justify-between text-xs text-text-secondary mt-3\">\n <div className=\"flex items-center gap-3\">\n {/* Stage Count */}\n <span className=\"flex items-center gap-1\" title={`${stageCount} stages`}>\n <LayersIcon className=\"w-3.5 h-3.5\" />\n {stageCount} stage{stageCount !== 1 ? 's' : ''}\n </span>\n </div>\n\n {/* Last Executed */}\n <span\n title={\n pipeline.lastExecutedAt\n ? `Last executed: ${new Date(pipeline.lastExecutedAt).toLocaleString()}`\n : 'Never executed'\n }\n >\n {formatLastExecuted(pipeline.lastExecutedAt)}\n </span>\n </div>\n </div>\n </div>\n );\n});\n\nexport default PipelineCard;\n"],"mappings":"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"}
1
+ {"version":3,"file":"PipelineCard.js","names":[],"sources":["../../../../src/bigconsole/components/pipeline/PipelineCard.tsx"],"sourcesContent":["/**\n * PipelineCard Component\n *\n * Card component displaying a Pipeline summary.\n * Shows name, status, stage count, and execution stats.\n *\n * Hierarchy (BOFF-5635): the card is a tile inside the list page's `primary`\n * results section, so it carries a raised surface (border + elevation) and puts\n * its identity first. The old 96px decorative banner was the largest mass in the\n * card and carried no information — the icon is now a small puck on the identity\n * row, which roughly doubles the number of pipelines visible per screen.\n */\n\nimport { memo, useCallback } from 'react';\nimport { formatDistanceToNow } from 'date-fns';\nimport { PipelineStatusBadge } from './PipelineStatusBadge';\nimport { SECTION_FOCUS_RING } from '../common';\nimport type { Pipeline } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface PipelineCardProps {\n pipeline: Pipeline;\n onView?: (id: string) => void;\n onEdit?: (id: string) => void;\n onTest?: (id: string) => void;\n onDelete?: (id: string) => void;\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\n/** Icon action button: 40px touch target, visible focus ring, no colour of its own. */\nconst ICON_ACTION = `inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-button text-text-secondary motion-safe:transition-colors ${SECTION_FOCUS_RING}`;\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nconst PipelineIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={1.5}\n d=\"M19.5 12c0-1.232-.046-2.453-.138-3.662a4.006 4.006 0 00-3.7-3.7 48.678 48.678 0 00-7.324 0 4.006 4.006 0 00-3.7 3.7c-.017.22-.032.441-.046.662M19.5 12l3-3m-3 3l-3-3m-12 3c0 1.232.046 2.453.138 3.662a4.006 4.006 0 003.7 3.7 48.656 48.656 0 007.324 0 4.006 4.006 0 003.7-3.7c.017-.22.032-.441.046-.662M4.5 12l3 3m-3-3l-3 3\"\n />\n </svg>\n);\n\nconst EditIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n 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\"\n />\n </svg>\n);\n\nconst PlayIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n 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\"\n />\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n);\n\nconst DeleteIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n 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\"\n />\n </svg>\n);\n\nconst LayersIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10\"\n />\n </svg>\n);\n\nconst ClockIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n);\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const PipelineCard = memo(function PipelineCard({\n pipeline,\n onView,\n onEdit,\n onTest,\n onDelete,\n}: PipelineCardProps) {\n // Calculate stage count\n const stageCount = pipeline.stages?.length ?? 0;\n\n // Format last executed time\n const formatLastExecuted = useCallback((dateStr: string | null): string => {\n if (!dateStr) return 'Never run';\n try {\n const date = new Date(dateStr);\n return formatDistanceToNow(date, { addSuffix: true });\n } catch {\n return 'Unknown';\n }\n }, []);\n\n // Event handlers\n const handleCardClick = useCallback(() => {\n onView?.(pipeline.id);\n }, [onView, pipeline.id]);\n\n const handleTitleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onView?.(pipeline.id);\n },\n [onView, pipeline.id]\n );\n\n const handleEditClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onEdit?.(pipeline.id);\n },\n [onEdit, pipeline.id]\n );\n\n const handleTestClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onTest?.(pipeline.id);\n },\n [onTest, pipeline.id]\n );\n\n const handleDeleteClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onDelete?.(pipeline.id);\n },\n [onDelete, pipeline.id]\n );\n\n return (\n <article\n onClick={handleCardClick}\n data-testid=\"pipeline-card\"\n className=\"group flex min-w-0 cursor-pointer flex-col rounded-card border border-[var(--color-border-subtle)] bg-bg-surface shadow-[var(--shadow-elevation-1)] motion-safe:transition-[box-shadow,border-color] hover:border-[var(--color-border-strong)] hover:shadow-[var(--shadow-elevation-2)]\"\n >\n {/* Identity — name first, status right, icon reduced to a puck */}\n <div className=\"flex min-w-0 items-start gap-icon-gap border-b border-[var(--color-border-subtle)] p-4\">\n <span\n aria-hidden=\"true\"\n className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-button bg-bg-sunken text-text-secondary\"\n >\n <PipelineIcon className=\"h-icon-md w-icon-md\" />\n </span>\n\n <div className=\"min-w-0 flex-1\">\n <h3 className=\"min-w-0 text-base font-semibold leading-tight text-text-primary\">\n <button\n type=\"button\"\n onClick={handleTitleClick}\n title={pipeline.name}\n className={`block w-full truncate rounded-button text-left ${SECTION_FOCUS_RING}`}\n >\n {pipeline.name}\n </button>\n </h3>\n {pipeline.description && (\n <p className=\"mt-0.5 line-clamp-2 text-sm text-text-secondary\">{pipeline.description}</p>\n )}\n </div>\n\n <PipelineStatusBadge status={pipeline.status} size=\"sm\" />\n </div>\n\n {/* Supporting facts + row actions */}\n <div className=\"flex flex-wrap items-center justify-between gap-control-gap p-4\">\n <dl className=\"flex min-w-0 flex-wrap items-center gap-x-4 gap-y-1 text-xs text-text-secondary\">\n <div className=\"flex items-center gap-1\">\n <dt className=\"sr-only\">Stages</dt>\n <LayersIcon className=\"h-3.5 w-3.5 shrink-0\" aria-hidden=\"true\" />\n <dd>\n {stageCount} stage{stageCount !== 1 ? 's' : ''}\n </dd>\n </div>\n <div className=\"flex items-center gap-1\">\n <dt className=\"sr-only\">Last run</dt>\n <ClockIcon className=\"h-3.5 w-3.5 shrink-0\" aria-hidden=\"true\" />\n <dd\n title={\n pipeline.lastExecutedAt\n ? `Last executed: ${new Date(pipeline.lastExecutedAt).toLocaleString()}`\n : 'Never executed'\n }\n >\n {formatLastExecuted(pipeline.lastExecutedAt)}\n </dd>\n </div>\n </dl>\n\n <div className=\"flex shrink-0 items-center gap-1\">\n {onTest && (\n <button\n type=\"button\"\n onClick={handleTestClick}\n className={`${ICON_ACTION} hover:bg-[var(--color-status-success-bgSubtle)] hover:text-status-success-text`}\n title=\"Test Pipeline\"\n aria-label={`Test ${pipeline.name}`}\n >\n <PlayIcon className=\"h-icon-sm w-icon-sm\" />\n </button>\n )}\n {onEdit && (\n <button\n type=\"button\"\n onClick={handleEditClick}\n className={`${ICON_ACTION} hover:bg-bg-sunken hover:text-text-primary`}\n title=\"Edit Pipeline\"\n aria-label={`Edit ${pipeline.name}`}\n >\n <EditIcon className=\"h-icon-sm w-icon-sm\" />\n </button>\n )}\n {onDelete && (\n <button\n type=\"button\"\n onClick={handleDeleteClick}\n className={`${ICON_ACTION} hover:bg-[var(--color-status-error-bgSubtle)] hover:text-status-error-text`}\n title=\"Delete Pipeline\"\n aria-label={`Delete ${pipeline.name}`}\n >\n <DeleteIcon className=\"h-icon-sm w-icon-sm\" />\n </button>\n )}\n </div>\n </div>\n </article>\n );\n});\n\nexport default PipelineCard;\n"],"mappings":"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"}
@@ -1,86 +1,99 @@
1
- import { memo as e, useCallback as t } from "react";
2
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
1
+ import { Section as e } from "../common/Section.js";
2
+ import "../common/index.js";
3
+ import { useModalFocusTrap as t } from "../../hooks/useModalFocusTrap.js";
4
+ import { memo as n, useCallback as r, useId as i, useRef as a } from "react";
5
+ import { Button as o } from "@burdenoff/fe-libs/ui";
6
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
3
7
  //#region src/bigconsole/components/pipeline/PipelineDeleteDialog.tsx
4
- var i = ({ className: e }) => /* @__PURE__ */ n("svg", {
8
+ var l = ({ className: e }) => /* @__PURE__ */ s("svg", {
5
9
  className: e,
6
10
  fill: "none",
7
11
  stroke: "currentColor",
8
12
  viewBox: "0 0 24 24",
9
- children: /* @__PURE__ */ n("path", {
13
+ children: /* @__PURE__ */ s("path", {
10
14
  strokeLinecap: "round",
11
15
  strokeLinejoin: "round",
12
16
  strokeWidth: 2,
13
17
  d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
14
18
  })
15
- }), a = e(function({ pipeline: e, isOpen: a, onClose: o, onConfirm: s }) {
16
- let c = e.stages?.length ?? 0, l = t(() => {
17
- o();
18
- }, [o]), u = t(() => {
19
- s();
20
- }, [s]);
21
- return a ? /* @__PURE__ */ r("div", {
22
- className: "fixed inset-0 z-50 flex items-center justify-center",
23
- children: [/* @__PURE__ */ n("div", {
24
- className: "absolute inset-0 bg-black/50",
25
- onClick: l
26
- }), /* @__PURE__ */ r("div", {
27
- className: "relative bg-bg-surface rounded-lg shadow-xl max-w-md w-full mx-4 p-6",
19
+ }), u = n(function({ pipeline: n, isOpen: u, onClose: d, onConfirm: f }) {
20
+ let p = n.stages?.length ?? 0, m = i(), h = i(), g = a(null), _ = a(null), v = r(() => {
21
+ d();
22
+ }, [d]), y = r(() => {
23
+ f();
24
+ }, [f]);
25
+ return t({
26
+ isOpen: u,
27
+ panelRef: g,
28
+ onClose: d,
29
+ initialFocusRef: _
30
+ }), u ? /* @__PURE__ */ c("div", {
31
+ className: "fixed inset-0 z-50 flex items-center justify-center p-4",
32
+ children: [/* @__PURE__ */ s("div", {
33
+ "aria-hidden": "true",
34
+ className: "absolute inset-0 bg-[var(--color-bg-overlay)]",
35
+ onClick: v
36
+ }), /* @__PURE__ */ c("div", {
37
+ ref: g,
38
+ role: "dialog",
39
+ "aria-modal": "true",
40
+ "aria-labelledby": m,
41
+ "aria-describedby": h,
42
+ tabIndex: -1,
43
+ "data-testid": "pipeline-delete-dialog",
44
+ className: "relative flex max-h-[calc(100dvh-2rem)] w-full max-w-md min-w-0 flex-col gap-form-gap overflow-y-auto rounded-card border border-[var(--color-border-subtle)] bg-bg-surface p-card-padding shadow-[var(--shadow-elevation-4)] focus:outline-none",
28
45
  children: [
29
- /* @__PURE__ */ r("div", {
30
- className: "flex items-center gap-3 mb-4",
31
- children: [/* @__PURE__ */ n("div", {
32
- className: "p-2 rounded-full bg-status-error-bg/10",
33
- children: /* @__PURE__ */ n(i, { className: "w-6 h-6 text-status-error-text" })
34
- }), /* @__PURE__ */ n("h2", {
46
+ /* @__PURE__ */ c("div", {
47
+ className: "flex items-center gap-icon-gap",
48
+ children: [/* @__PURE__ */ s("span", {
49
+ "aria-hidden": "true",
50
+ className: "rounded-pill bg-[var(--color-status-error-bgSubtle)] p-2",
51
+ children: /* @__PURE__ */ s(l, { className: "h-icon-md w-icon-md text-status-error-text" })
52
+ }), /* @__PURE__ */ s("h2", {
53
+ id: m,
35
54
  className: "text-lg font-semibold text-text-primary",
36
55
  children: "Delete Pipeline"
37
56
  })]
38
57
  }),
39
- /* @__PURE__ */ r("div", {
40
- className: "mb-6",
41
- children: [
42
- /* @__PURE__ */ r("p", {
43
- className: "text-sm text-text-secondary mb-3",
44
- children: [
45
- "Are you sure you want to delete the pipeline",
46
- " ",
47
- /* @__PURE__ */ n("span", {
48
- className: "font-medium text-text-primary",
49
- children: e.name
50
- }),
51
- "?"
52
- ]
53
- }),
54
- c > 0 && /* @__PURE__ */ n("div", {
55
- className: "p-3 bg-status-warning-bg/10 rounded-md",
56
- children: /* @__PURE__ */ r("p", {
57
- className: "text-sm text-status-warning-text",
58
- children: [
59
- "This pipeline has ",
60
- c,
61
- " stage",
62
- c === 1 ? "" : "s",
63
- ". All stages will be permanently deleted."
64
- ]
65
- })
66
- }),
67
- /* @__PURE__ */ n("p", {
68
- className: "text-sm text-text-secondary mt-3",
69
- children: "This action cannot be undone."
58
+ /* @__PURE__ */ c("div", {
59
+ className: "flex min-w-0 flex-col gap-form-gap",
60
+ children: [/* @__PURE__ */ c("p", {
61
+ id: h,
62
+ className: "text-sm text-text-secondary",
63
+ children: [
64
+ "Are you sure you want to delete the pipeline",
65
+ " ",
66
+ /* @__PURE__ */ s("span", {
67
+ className: "font-medium text-text-primary",
68
+ children: n.name
69
+ }),
70
+ "? This action cannot be undone."
71
+ ]
72
+ }), p > 0 && /* @__PURE__ */ s(e, {
73
+ tone: "warning",
74
+ padding: "compact",
75
+ headingLevel: 3,
76
+ title: `${p} stage${p === 1 ? "" : "s"} will be deleted`,
77
+ icon: /* @__PURE__ */ s(l, { className: "h-icon-sm w-icon-sm" }),
78
+ "data-testid": "pipeline-delete-stage-warning",
79
+ children: /* @__PURE__ */ s("p", {
80
+ className: "text-sm text-text-secondary",
81
+ children: "Every stage in this pipeline is removed with it. The parsers themselves are not deleted."
70
82
  })
71
- ]
83
+ })]
72
84
  }),
73
- /* @__PURE__ */ r("div", {
74
- className: "flex justify-end gap-3",
75
- children: [/* @__PURE__ */ n("button", {
85
+ /* @__PURE__ */ c("div", {
86
+ className: "flex flex-wrap justify-end gap-control-gap border-t border-[var(--color-border-subtle)] pt-form-gap",
87
+ children: [/* @__PURE__ */ s(o, {
88
+ ref: _,
76
89
  type: "button",
77
- onClick: o,
78
- className: "\n px-4 py-2\n text-sm font-medium\n text-text-primary\n bg-bg-sunken\n hover:bg-border-default\n rounded-md\n transition-colors\n ",
90
+ variant: "secondary",
91
+ onClick: d,
79
92
  children: "Cancel"
80
- }), /* @__PURE__ */ n("button", {
93
+ }), /* @__PURE__ */ s(o, {
81
94
  type: "button",
82
- onClick: u,
83
- className: "\n px-4 py-2\n text-sm font-medium\n text-white\n bg-status-error-bg\n hover:bg-status-error-bg/90\n rounded-md\n transition-colors\n ",
95
+ variant: "destructive",
96
+ onClick: y,
84
97
  children: "Delete Pipeline"
85
98
  })]
86
99
  })
@@ -89,6 +102,6 @@ var i = ({ className: e }) => /* @__PURE__ */ n("svg", {
89
102
  }) : null;
90
103
  });
91
104
  //#endregion
92
- export { a as default };
105
+ export { u as default };
93
106
 
94
107
  //# sourceMappingURL=PipelineDeleteDialog.js.map