@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":"SetupStateBadge.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/SetupStateBadge.tsx"],"sourcesContent":["/**\n * Setup State Badge\n *\n * Badge component showing DataSink setup state.\n */\n\nimport { memo, type ComponentType } from 'react';\nimport type { DataSinkSetupState } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface SetupStateBadgeProps {\n /** Setup state */\n state: DataSinkSetupState;\n /** Whether to show abbreviated label */\n abbreviated?: boolean;\n /** Badge size */\n size?: 'sm' | 'md';\n}\n\ninterface StateConfig {\n label: string;\n shortLabel: string;\n bgColor: string;\n textColor: string;\n icon: 'pending' | 'running' | 'completed';\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst STATE_CONFIGS: Record<DataSinkSetupState, StateConfig> = {\n workflow_pending: {\n label: 'Workflow Pending',\n shortLabel: 'Draft',\n bgColor: 'bg-status-warning-bg/10',\n textColor: 'text-status-warning-text',\n icon: 'pending',\n },\n workflow_running: {\n label: 'Workflow Running',\n shortLabel: 'Running',\n bgColor: 'bg-action-primary-bg/10',\n textColor: 'text-action-primary-bg',\n icon: 'running',\n },\n workflow_completed: {\n label: 'Workflow Completed',\n shortLabel: 'Config Needed',\n bgColor: 'bg-status-warning-bg/10',\n textColor: 'text-status-warning-text',\n icon: 'pending',\n },\n configuration_pending: {\n label: 'Configuration Pending',\n shortLabel: 'In Progress',\n bgColor: 'bg-status-warning-bg/10',\n textColor: 'text-status-warning-text',\n icon: 'pending',\n },\n completed: {\n label: 'Ready',\n shortLabel: 'Ready',\n bgColor: 'bg-status-success-bg/10',\n textColor: 'text-status-success-text',\n icon: 'completed',\n },\n};\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nconst PendingIcon = ({ 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\nconst RunningIcon = ({ className }: { className?: string }) => (\n <svg className={`${className} animate-spin`} fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n 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\"\n />\n </svg>\n);\n\nconst CompletedIcon = ({ 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 ICON_MAP: Record<string, ComponentType<{ className?: string }>> = {\n pending: PendingIcon,\n running: RunningIcon,\n completed: CompletedIcon,\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const SetupStateBadge = memo(function SetupStateBadge({\n state,\n abbreviated = false,\n size = 'sm',\n}: SetupStateBadgeProps) {\n const config = STATE_CONFIGS[state];\n\n if (!config) {\n return null;\n }\n\n const sizeClasses = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n };\n\n const iconSizes = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n };\n\n const IconComponent = ICON_MAP[config.icon];\n\n return (\n <span\n className={`\n inline-flex items-center gap-1\n font-medium\n rounded-full\n ${sizeClasses[size]}\n ${config.bgColor}\n ${config.textColor}\n `}\n >\n <IconComponent className={iconSizes[size]} />\n <span>{abbreviated ? config.shortLabel : config.label}</span>\n </span>\n );\n});\n\nexport default SetupStateBadge;\n"],"mappings":";;;AAkCA,IAAM,IAAyD;CAC7D,kBAAkB;EAChB,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACD,kBAAkB;EAChB,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACD,oBAAoB;EAClB,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACD,uBAAuB;EACrB,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACD,WAAW;EACT,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACF,EAkCK,IAAkE;CACtE,UA7BmB,EAAE,mBACrB,kBAAC,OAAD;EAAgB;EAAW,MAAK;EAAO,QAAO;EAAe,SAAQ;YACnE,kBAAC,QAAD;GACE,eAAc;GACd,gBAAe;GACf,aAAa;GACb,GAAE;GACF,CAAA;EACE,CAAA;CAsBN,UAnBmB,EAAE,mBACrB,kBAAC,OAAD;EAAK,WAAW,GAAG,EAAU;EAAgB,MAAK;EAAO,SAAQ;YAAjE,CACE,kBAAC,UAAD;GAAQ,WAAU;GAAa,IAAG;GAAK,IAAG;GAAK,GAAE;GAAK,QAAO;GAAe,aAAY;GAAM,CAAA,EAC9F,kBAAC,QAAD;GACE,WAAU;GACV,MAAK;GACL,GAAE;GACF,CAAA,CACE;;CAYN,YATqB,EAAE,mBACvB,kBAAC,OAAD;EAAgB;EAAW,MAAK;EAAO,QAAO;EAAe,SAAQ;YACnE,kBAAC,QAAD;GAAM,eAAc;GAAQ,gBAAe;GAAQ,aAAa;GAAG,GAAE;GAAmB,CAAA;EACpF,CAAA;CAOP,EAMY,IAAkB,EAAK,SAAyB,EAC3D,UACA,iBAAc,IACd,UAAO,QACgB;CACvB,IAAM,IAAS,EAAc;AAE7B,KAAI,CAAC,EACH,QAAO;CAGT,IAAM,IAAc;EAClB,IAAI;EACJ,IAAI;EACL,EAEK,IAAY;EAChB,IAAI;EACJ,IAAI;EACL,EAEK,IAAgB,EAAS,EAAO;AAEtC,QACE,kBAAC,QAAD;EACE,WAAW;;;;UAIP,EAAY,GAAM;UAClB,EAAO,QAAQ;UACf,EAAO,UAAU;;YAPvB,CAUE,kBAAC,GAAD,EAAe,WAAW,EAAU,IAAS,CAAA,EAC7C,kBAAC,QAAD,EAAA,UAAO,IAAc,EAAO,aAAa,EAAO,OAAa,CAAA,CACxD;;EAET"}
1
+ {"version":3,"file":"SetupStateBadge.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/SetupStateBadge.tsx"],"sourcesContent":["/**\n * Setup State Badge\n *\n * Badge component showing DataSink setup state.\n */\n\nimport { memo, type ComponentType } from 'react';\nimport type { DataSinkSetupState } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface SetupStateBadgeProps {\n /** Setup state */\n state: DataSinkSetupState;\n /** Whether to show abbreviated label */\n abbreviated?: boolean;\n /** Badge size */\n size?: 'sm' | 'md';\n}\n\ninterface StateConfig {\n label: string;\n shortLabel: string;\n bgColor: string;\n textColor: string;\n icon: 'pending' | 'running' | 'completed';\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst STATE_CONFIGS: Record<DataSinkSetupState, StateConfig> = {\n workflow_pending: {\n label: 'Workflow Pending',\n shortLabel: 'Draft',\n bgColor: 'bg-status-warning-bg/10',\n textColor: 'text-[var(--color-status-warning-text)]',\n icon: 'pending',\n },\n workflow_running: {\n label: 'Workflow Running',\n shortLabel: 'Running',\n bgColor: 'bg-action-primary-bg/10',\n textColor: 'text-action-primary-bg',\n icon: 'running',\n },\n workflow_completed: {\n label: 'Workflow Completed',\n shortLabel: 'Config Needed',\n bgColor: 'bg-status-warning-bg/10',\n textColor: 'text-[var(--color-status-warning-text)]',\n icon: 'pending',\n },\n configuration_pending: {\n label: 'Configuration Pending',\n shortLabel: 'In Progress',\n bgColor: 'bg-status-warning-bg/10',\n textColor: 'text-[var(--color-status-warning-text)]',\n icon: 'pending',\n },\n completed: {\n label: 'Ready',\n shortLabel: 'Ready',\n bgColor: 'bg-status-success-bg/10',\n textColor: 'text-status-success-text',\n icon: 'completed',\n },\n};\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nconst PendingIcon = ({ 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\nconst RunningIcon = ({ className }: { className?: string }) => (\n <svg className={`${className} animate-spin`} fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n 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\"\n />\n </svg>\n);\n\nconst CompletedIcon = ({ 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 ICON_MAP: Record<string, ComponentType<{ className?: string }>> = {\n pending: PendingIcon,\n running: RunningIcon,\n completed: CompletedIcon,\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const SetupStateBadge = memo(function SetupStateBadge({\n state,\n abbreviated = false,\n size = 'sm',\n}: SetupStateBadgeProps) {\n const config = STATE_CONFIGS[state];\n\n if (!config) {\n return null;\n }\n\n const sizeClasses = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-sm',\n };\n\n const iconSizes = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n };\n\n const IconComponent = ICON_MAP[config.icon];\n\n return (\n <span\n className={`\n inline-flex items-center gap-1\n font-medium\n rounded-full\n ${sizeClasses[size]}\n ${config.bgColor}\n ${config.textColor}\n `}\n >\n <IconComponent className={iconSizes[size]} />\n <span>{abbreviated ? config.shortLabel : config.label}</span>\n </span>\n );\n});\n\nexport default SetupStateBadge;\n"],"mappings":";;;AAkCA,IAAM,IAAyD;CAC7D,kBAAkB;EAChB,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACD,kBAAkB;EAChB,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACD,oBAAoB;EAClB,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACD,uBAAuB;EACrB,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACD,WAAW;EACT,OAAO;EACP,YAAY;EACZ,SAAS;EACT,WAAW;EACX,MAAM;EACP;CACF,EAkCK,IAAkE;CACtE,UA7BmB,EAAE,mBACrB,kBAAC,OAAD;EAAgB;EAAW,MAAK;EAAO,QAAO;EAAe,SAAQ;YACnE,kBAAC,QAAD;GACE,eAAc;GACd,gBAAe;GACf,aAAa;GACb,GAAE;GACF,CAAA;EACE,CAAA;CAsBN,UAnBmB,EAAE,mBACrB,kBAAC,OAAD;EAAK,WAAW,GAAG,EAAU;EAAgB,MAAK;EAAO,SAAQ;YAAjE,CACE,kBAAC,UAAD;GAAQ,WAAU;GAAa,IAAG;GAAK,IAAG;GAAK,GAAE;GAAK,QAAO;GAAe,aAAY;GAAM,CAAA,EAC9F,kBAAC,QAAD;GACE,WAAU;GACV,MAAK;GACL,GAAE;GACF,CAAA,CACE;;CAYN,YATqB,EAAE,mBACvB,kBAAC,OAAD;EAAgB;EAAW,MAAK;EAAO,QAAO;EAAe,SAAQ;YACnE,kBAAC,QAAD;GAAM,eAAc;GAAQ,gBAAe;GAAQ,aAAa;GAAG,GAAE;GAAmB,CAAA;EACpF,CAAA;CAOP,EAMY,IAAkB,EAAK,SAAyB,EAC3D,UACA,iBAAc,IACd,UAAO,QACgB;CACvB,IAAM,IAAS,EAAc;AAE7B,KAAI,CAAC,EACH,QAAO;CAGT,IAAM,IAAc;EAClB,IAAI;EACJ,IAAI;EACL,EAEK,IAAY;EAChB,IAAI;EACJ,IAAI;EACL,EAEK,IAAgB,EAAS,EAAO;AAEtC,QACE,kBAAC,QAAD;EACE,WAAW;;;;UAIP,EAAY,GAAM;UAClB,EAAO,QAAQ;UACf,EAAO,UAAU;;YAPvB,CAUE,kBAAC,GAAD,EAAe,WAAW,EAAU,IAAS,CAAA,EAC7C,kBAAC,QAAD,EAAA,UAAO,IAAc,EAAO,aAAa,EAAO,OAAa,CAAA,CACxD;;EAET"}
@@ -1,8 +1,11 @@
1
- import { memo as e, useMemo as t } from "react";
2
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
- import { formatDistanceToNow as i } from "date-fns";
1
+ import "../common/sectionStyles.js";
2
+ import { Section as e } from "../common/Section.js";
3
+ import "../common/index.js";
4
+ import { memo as t, useMemo as n } from "react";
5
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
+ import { formatDistanceToNow as a } from "date-fns";
4
7
  //#region src/bigconsole/components/datasink/WorkflowStatusPanel.tsx
5
- function a(e, t) {
8
+ function o(e, t) {
6
9
  return t === "refreshing" || e === "workflow_running" ? {
7
10
  label: "Running",
8
11
  bgColor: "bg-action-primary-bg/10",
@@ -16,7 +19,7 @@ function a(e, t) {
16
19
  } : e === "workflow_pending" ? {
17
20
  label: "Pending",
18
21
  bgColor: "bg-status-warning-bg/10",
19
- textColor: "text-status-warning-text",
22
+ textColor: "text-[var(--color-status-warning-text)]",
20
23
  dotColor: "bg-status-warning-bg"
21
24
  } : {
22
25
  label: "Completed",
@@ -25,139 +28,136 @@ function a(e, t) {
25
28
  dotColor: "bg-status-success-bg"
26
29
  };
27
30
  }
28
- var o = ({ className: e }) => /* @__PURE__ */ n("svg", {
31
+ var s = ({ className: e }) => /* @__PURE__ */ r("svg", {
29
32
  className: e,
30
33
  fill: "none",
31
34
  stroke: "currentColor",
32
35
  viewBox: "0 0 24 24",
33
- children: /* @__PURE__ */ n("path", {
36
+ children: /* @__PURE__ */ r("path", {
34
37
  strokeLinecap: "round",
35
38
  strokeLinejoin: "round",
36
39
  strokeWidth: 1.5,
37
40
  d: "M13 10V3L4 14h7v7l9-11h-7z"
38
41
  })
39
- }), s = ({ className: e, spinning: t }) => /* @__PURE__ */ n("svg", {
42
+ }), c = ({ className: e, spinning: t }) => /* @__PURE__ */ r("svg", {
40
43
  className: `${e} ${t ? "animate-spin" : ""}`,
41
44
  fill: "none",
42
45
  stroke: "currentColor",
43
46
  viewBox: "0 0 24 24",
44
- children: /* @__PURE__ */ n("path", {
47
+ children: /* @__PURE__ */ r("path", {
45
48
  strokeLinecap: "round",
46
49
  strokeLinejoin: "round",
47
50
  strokeWidth: 2,
48
51
  d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"
49
52
  })
50
- }), c = ({ className: e }) => /* @__PURE__ */ n("svg", {
53
+ }), l = ({ className: e }) => /* @__PURE__ */ r("svg", {
51
54
  className: e,
52
55
  fill: "none",
53
56
  stroke: "currentColor",
54
57
  viewBox: "0 0 24 24",
55
- children: /* @__PURE__ */ n("path", {
58
+ children: /* @__PURE__ */ r("path", {
56
59
  strokeLinecap: "round",
57
60
  strokeLinejoin: "round",
58
61
  strokeWidth: 2,
59
62
  d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
60
63
  })
61
- }), l = ({ className: e }) => /* @__PURE__ */ n("svg", {
64
+ }), u = ({ className: e }) => /* @__PURE__ */ r("svg", {
62
65
  className: e,
63
66
  fill: "none",
64
67
  stroke: "currentColor",
65
68
  viewBox: "0 0 24 24",
66
- children: /* @__PURE__ */ n("path", {
69
+ children: /* @__PURE__ */ r("path", {
67
70
  strokeLinecap: "round",
68
71
  strokeLinejoin: "round",
69
72
  strokeWidth: 2,
70
73
  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"
71
74
  })
72
- }), u = e(function({ workflowId: e, executionId: u, lastRefreshedAt: d, setupState: f, status: p, errorMetadata: m, onRerunWorkflow: h, onViewWorkflow: g, disabled: _ = !1, isRerunning: v = !1 }) {
73
- let y = t(() => a(f, p), [f, p]), b = p === "refreshing" || f === "workflow_running" || v, x = d ? i(new Date(d), { addSuffix: !0 }) : "Never";
74
- return /* @__PURE__ */ r("div", {
75
- className: "border border-border-default rounded-lg bg-bg-surface overflow-hidden",
76
- children: [/* @__PURE__ */ r("div", {
77
- className: "px-4 py-3 border-b border-border-default bg-bg-sunken flex items-center justify-between",
78
- children: [/* @__PURE__ */ r("div", {
79
- className: "flex items-center gap-2",
80
- children: [/* @__PURE__ */ n(o, { className: "w-4 h-4 text-text-secondary" }), /* @__PURE__ */ n("h3", {
81
- className: "text-sm font-semibold text-text-primary",
82
- children: "FluidGrids Workflow"
83
- })]
84
- }), /* @__PURE__ */ r("div", {
85
- className: `flex items-center gap-1.5 px-2 py-0.5 rounded-full ${y.bgColor}`,
86
- children: [/* @__PURE__ */ n("span", { className: `w-1.5 h-1.5 rounded-full ${y.dotColor} ${b ? "animate-pulse" : ""}` }), /* @__PURE__ */ n("span", {
87
- className: `text-xs font-medium ${y.textColor}`,
88
- children: y.label
89
- })]
75
+ }), d = t(function({ workflowId: t, executionId: d, lastRefreshedAt: f, setupState: p, status: m, errorMetadata: h, onRerunWorkflow: g, onViewWorkflow: _, disabled: v = !1, isRerunning: y = !1 }) {
76
+ let b = n(() => o(p, m), [p, m]), x = m === "refreshing" || p === "workflow_running" || y, S = f ? a(new Date(f), { addSuffix: !0 }) : "Never";
77
+ return /* @__PURE__ */ i(e, {
78
+ headingLevel: 2,
79
+ title: "FluidGrids workflow",
80
+ description: "The workflow that populates this sink, and how its last run went.",
81
+ icon: /* @__PURE__ */ r(s, { className: "h-icon-sm w-icon-sm" }),
82
+ meta: /* @__PURE__ */ i("span", {
83
+ className: `flex items-center gap-1.5 rounded-pill px-2 py-0.5 ${b.bgColor}`,
84
+ children: [/* @__PURE__ */ r("span", { className: `h-1.5 w-1.5 rounded-pill ${b.dotColor} ${x ? "animate-pulse" : ""}` }), /* @__PURE__ */ r("span", {
85
+ className: `text-xs font-medium ${b.textColor}`,
86
+ children: b.label
90
87
  })]
91
- }), /* @__PURE__ */ r("div", {
92
- className: "p-4 space-y-4",
93
- children: [
94
- /* @__PURE__ */ r("div", {
95
- className: "grid grid-cols-2 gap-4 text-sm",
96
- children: [
97
- /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("p", {
98
- className: "text-text-secondary text-xs mb-1",
88
+ }),
89
+ bodyClassName: "space-y-form-gap",
90
+ children: [
91
+ /* @__PURE__ */ i("div", {
92
+ className: "grid grid-cols-1 gap-form-gap text-sm sm:grid-cols-2",
93
+ children: [
94
+ /* @__PURE__ */ i("div", {
95
+ className: "min-w-0",
96
+ children: [/* @__PURE__ */ r("p", {
97
+ className: "mb-1 text-xs text-text-secondary",
99
98
  children: "Workflow ID"
100
- }), /* @__PURE__ */ n("p", {
101
- className: "text-text-primary font-mono text-xs truncate",
102
- title: e,
103
- children: e || "Not linked"
104
- })] }),
105
- /* @__PURE__ */ r("div", { children: [/* @__PURE__ */ n("p", {
106
- className: "text-text-secondary text-xs mb-1",
107
- children: "Last Execution"
108
- }), /* @__PURE__ */ n("p", {
109
- className: "text-text-primary text-xs",
110
- children: x
111
- })] }),
112
- u && /* @__PURE__ */ r("div", {
113
- className: "col-span-2",
114
- children: [/* @__PURE__ */ n("p", {
115
- className: "text-text-secondary text-xs mb-1",
116
- children: "Execution ID"
117
- }), /* @__PURE__ */ n("p", {
118
- className: "text-text-primary font-mono text-xs truncate",
119
- title: u,
120
- children: u
121
- })]
122
- })
123
- ]
124
- }),
125
- p === "error" && m && /* @__PURE__ */ r("div", {
126
- className: "flex items-start gap-2 p-3 bg-status-error-bg/10 rounded-md",
127
- children: [/* @__PURE__ */ n(l, { className: "w-4 h-4 text-status-error-text flex-shrink-0 mt-0.5" }), /* @__PURE__ */ r("div", {
99
+ }), /* @__PURE__ */ r("p", {
100
+ className: "break-all font-mono text-xs text-text-primary",
101
+ title: t,
102
+ children: t || "Not linked"
103
+ })]
104
+ }),
105
+ /* @__PURE__ */ i("div", {
128
106
  className: "min-w-0",
129
- children: [m.code && /* @__PURE__ */ n("p", {
130
- className: "text-xs font-medium text-status-error-text",
131
- children: m.code
132
- }), /* @__PURE__ */ n("p", {
133
- className: "text-xs text-status-error-text/80 mt-0.5",
134
- children: m.message || "An error occurred during workflow execution"
107
+ children: [/* @__PURE__ */ r("p", {
108
+ className: "mb-1 text-xs text-text-secondary",
109
+ children: "Last execution"
110
+ }), /* @__PURE__ */ r("p", {
111
+ className: "text-xs text-text-primary",
112
+ children: S
113
+ })]
114
+ }),
115
+ d && /* @__PURE__ */ i("div", {
116
+ className: "min-w-0 sm:col-span-2",
117
+ children: [/* @__PURE__ */ r("p", {
118
+ className: "mb-1 text-xs text-text-secondary",
119
+ children: "Execution ID"
120
+ }), /* @__PURE__ */ r("p", {
121
+ className: "break-all font-mono text-xs text-text-primary",
122
+ title: d,
123
+ children: d
135
124
  })]
136
- })]
137
- }),
138
- /* @__PURE__ */ r("div", {
139
- className: "flex items-center gap-2 pt-2 border-t border-border-muted",
140
- children: [h && /* @__PURE__ */ r("button", {
141
- type: "button",
142
- onClick: h,
143
- disabled: _ || b,
144
- className: "\n flex items-center gap-1.5\n px-3 py-1.5\n text-xs font-medium\n bg-action-primary-bg\n text-action-primary-fg\n rounded-md\n hover:bg-action-primary-bgHover\n disabled:opacity-50\n disabled:cursor-not-allowed\n transition-colors\n ",
145
- children: [/* @__PURE__ */ n(s, {
146
- className: "w-3.5 h-3.5",
147
- spinning: b
148
- }), b ? "Running..." : "Re-run Workflow"]
149
- }), g && /* @__PURE__ */ r("button", {
150
- type: "button",
151
- onClick: g,
152
- className: "\n flex items-center gap-1.5\n px-3 py-1.5\n text-xs font-medium\n text-text-secondary\n rounded-md\n hover:bg-bg-sunken\n transition-colors\n ",
153
- children: [/* @__PURE__ */ n(c, { className: "w-3.5 h-3.5" }), "View in FluidGrids"]
154
- })]
125
+ })
126
+ ]
127
+ }),
128
+ m === "error" && h && /* @__PURE__ */ r(e, {
129
+ tone: "danger",
130
+ padding: "compact",
131
+ headingLevel: 3,
132
+ title: h.code || "Last run failed",
133
+ icon: /* @__PURE__ */ r(u, { className: "h-icon-sm w-icon-sm" }),
134
+ children: /* @__PURE__ */ r("p", {
135
+ className: "text-xs text-[var(--color-status-error-text)]",
136
+ children: h.message || "An error occurred during workflow execution"
155
137
  })
156
- ]
157
- })]
138
+ }),
139
+ /* @__PURE__ */ i("div", {
140
+ className: "flex flex-wrap items-center gap-control-gap border-t border-[var(--color-border-subtle)] pt-form-gap",
141
+ children: [g && /* @__PURE__ */ i("button", {
142
+ type: "button",
143
+ onClick: g,
144
+ disabled: v || x,
145
+ className: "flex min-h-[var(--size-controlHeight-md)] items-center gap-1.5 rounded-button bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bgHover disabled:cursor-not-allowed disabled:opacity-50 motion-safe:transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface",
146
+ children: [/* @__PURE__ */ r(c, {
147
+ className: "h-3.5 w-3.5",
148
+ spinning: x
149
+ }), x ? "Running..." : "Re-run workflow"]
150
+ }), _ && /* @__PURE__ */ i("button", {
151
+ type: "button",
152
+ onClick: _,
153
+ className: "flex min-h-[var(--size-controlHeight-md)] items-center gap-1.5 rounded-button px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-bg-sunken motion-safe:transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface",
154
+ children: [/* @__PURE__ */ r(l, { className: "h-3.5 w-3.5" }), "View in FluidGrids"]
155
+ })]
156
+ })
157
+ ]
158
158
  });
159
159
  });
160
160
  //#endregion
161
- export { u as default };
161
+ export { d as default };
162
162
 
163
163
  //# sourceMappingURL=WorkflowStatusPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowStatusPanel.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/WorkflowStatusPanel.tsx"],"sourcesContent":["/**\n * Workflow Status Panel\n *\n * Panel showing FluidGrids workflow status and execution details.\n */\n\nimport { memo, useMemo } from 'react';\nimport { formatDistanceToNow } from 'date-fns';\nimport type { DataSinkSetupState, DataSinkStatus } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface WorkflowStatusPanelProps {\n /** Workflow ID */\n workflowId?: string;\n /** Execution ID */\n executionId?: string;\n /** Last refreshed timestamp */\n lastRefreshedAt?: string;\n /** Setup state */\n setupState?: DataSinkSetupState;\n /** DataSink status */\n status?: DataSinkStatus;\n /** Error metadata */\n errorMetadata?: {\n code?: string;\n message?: string;\n };\n /** Callback to re-run workflow */\n onRerunWorkflow?: () => void;\n /** Callback to view workflow */\n onViewWorkflow?: () => void;\n /** Whether controls are disabled */\n disabled?: boolean;\n /** Whether re-run is in progress */\n isRerunning?: boolean;\n}\n\ninterface StatusConfig {\n label: string;\n bgColor: string;\n textColor: string;\n dotColor: string;\n}\n\n// ============================================================================\n// HELPERS\n// ============================================================================\n\n/**\n * Get status display configuration\n */\nfunction getStatusConfig(setupState?: DataSinkSetupState, status?: DataSinkStatus): StatusConfig {\n if (status === 'refreshing' || setupState === 'workflow_running') {\n return {\n label: 'Running',\n bgColor: 'bg-action-primary-bg/10',\n textColor: 'text-action-primary-bg',\n dotColor: 'bg-action-primary-bg',\n };\n }\n if (status === 'error') {\n return {\n label: 'Failed',\n bgColor: 'bg-status-error-bg/10',\n textColor: 'text-status-error-text',\n dotColor: 'bg-status-error-bg',\n };\n }\n if (setupState === 'workflow_pending') {\n return {\n label: 'Pending',\n bgColor: 'bg-status-warning-bg/10',\n textColor: 'text-status-warning-text',\n dotColor: 'bg-status-warning-bg',\n };\n }\n return {\n label: 'Completed',\n bgColor: 'bg-status-success-bg/10',\n textColor: 'text-status-success-text',\n dotColor: 'bg-status-success-bg',\n };\n}\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nconst WorkflowIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M13 10V3L4 14h7v7l9-11h-7z\" />\n </svg>\n);\n\nconst RefreshIcon = ({ className, spinning }: { className?: string; spinning?: boolean }) => (\n <svg\n className={`${className} ${spinning ? 'animate-spin' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"\n />\n </svg>\n);\n\nconst ExternalLinkIcon = ({ 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 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n);\n\nconst AlertIcon = ({ 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 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\"\n />\n </svg>\n);\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const WorkflowStatusPanel = memo(function WorkflowStatusPanel({\n workflowId,\n executionId,\n lastRefreshedAt,\n setupState,\n status,\n errorMetadata,\n onRerunWorkflow,\n onViewWorkflow,\n disabled = false,\n isRerunning = false,\n}: WorkflowStatusPanelProps) {\n // Get status config\n const statusConfig = useMemo(() => getStatusConfig(setupState, status), [setupState, status]);\n\n const isRunning = status === 'refreshing' || setupState === 'workflow_running' || isRerunning;\n\n const lastRefreshedText = lastRefreshedAt\n ? formatDistanceToNow(new Date(lastRefreshedAt), { addSuffix: true })\n : 'Never';\n\n return (\n <div className=\"border border-border-default rounded-lg bg-bg-surface overflow-hidden\">\n {/* Header */}\n <div className=\"px-4 py-3 border-b border-border-default bg-bg-sunken flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <WorkflowIcon className=\"w-4 h-4 text-text-secondary\" />\n <h3 className=\"text-sm font-semibold text-text-primary\">FluidGrids Workflow</h3>\n </div>\n <div className={`flex items-center gap-1.5 px-2 py-0.5 rounded-full ${statusConfig.bgColor}`}>\n <span className={`w-1.5 h-1.5 rounded-full ${statusConfig.dotColor} ${isRunning ? 'animate-pulse' : ''}`} />\n <span className={`text-xs font-medium ${statusConfig.textColor}`}>{statusConfig.label}</span>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"p-4 space-y-4\">\n {/* Details grid */}\n <div className=\"grid grid-cols-2 gap-4 text-sm\">\n <div>\n <p className=\"text-text-secondary text-xs mb-1\">Workflow ID</p>\n <p className=\"text-text-primary font-mono text-xs truncate\" title={workflowId}>\n {workflowId || 'Not linked'}\n </p>\n </div>\n <div>\n <p className=\"text-text-secondary text-xs mb-1\">Last Execution</p>\n <p className=\"text-text-primary text-xs\">{lastRefreshedText}</p>\n </div>\n {executionId && (\n <div className=\"col-span-2\">\n <p className=\"text-text-secondary text-xs mb-1\">Execution ID</p>\n <p className=\"text-text-primary font-mono text-xs truncate\" title={executionId}>\n {executionId}\n </p>\n </div>\n )}\n </div>\n\n {/* Error display */}\n {status === 'error' && errorMetadata && (\n <div className=\"flex items-start gap-2 p-3 bg-status-error-bg/10 rounded-md\">\n <AlertIcon className=\"w-4 h-4 text-status-error-text flex-shrink-0 mt-0.5\" />\n <div className=\"min-w-0\">\n {errorMetadata.code && <p className=\"text-xs font-medium text-status-error-text\">{errorMetadata.code}</p>}\n <p className=\"text-xs text-status-error-text/80 mt-0.5\">\n {errorMetadata.message || 'An error occurred during workflow execution'}\n </p>\n </div>\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex items-center gap-2 pt-2 border-t border-border-muted\">\n {onRerunWorkflow && (\n <button\n type=\"button\"\n onClick={onRerunWorkflow}\n disabled={disabled || isRunning}\n className={`\n flex items-center gap-1.5\n px-3 py-1.5\n text-xs font-medium\n bg-action-primary-bg\n text-action-primary-fg\n rounded-md\n hover:bg-action-primary-bgHover\n disabled:opacity-50\n disabled:cursor-not-allowed\n transition-colors\n `}\n >\n <RefreshIcon className=\"w-3.5 h-3.5\" spinning={isRunning} />\n {isRunning ? 'Running...' : 'Re-run Workflow'}\n </button>\n )}\n {onViewWorkflow && (\n <button\n type=\"button\"\n onClick={onViewWorkflow}\n className={`\n flex items-center gap-1.5\n px-3 py-1.5\n text-xs font-medium\n text-text-secondary\n rounded-md\n hover:bg-bg-sunken\n transition-colors\n `}\n >\n <ExternalLinkIcon className=\"w-3.5 h-3.5\" />\n View in FluidGrids\n </button>\n )}\n </div>\n </div>\n </div>\n );\n});\n\nexport default WorkflowStatusPanel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowStatusPanel.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/WorkflowStatusPanel.tsx"],"sourcesContent":["/**\n * Workflow Status Panel\n *\n * Panel showing FluidGrids workflow status and execution details.\n */\n\nimport { memo, useMemo } from 'react';\nimport { formatDistanceToNow } from 'date-fns';\nimport { Section, SECTION_FOCUS_RING } from '../common';\nimport type { DataSinkSetupState, DataSinkStatus } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface WorkflowStatusPanelProps {\n /** Workflow ID */\n workflowId?: string;\n /** Execution ID */\n executionId?: string;\n /** Last refreshed timestamp */\n lastRefreshedAt?: string;\n /** Setup state */\n setupState?: DataSinkSetupState;\n /** DataSink status */\n status?: DataSinkStatus;\n /** Error metadata */\n errorMetadata?: {\n code?: string;\n message?: string;\n };\n /** Callback to re-run workflow */\n onRerunWorkflow?: () => void;\n /** Callback to view workflow */\n onViewWorkflow?: () => void;\n /** Whether controls are disabled */\n disabled?: boolean;\n /** Whether re-run is in progress */\n isRerunning?: boolean;\n}\n\ninterface StatusConfig {\n label: string;\n bgColor: string;\n textColor: string;\n dotColor: string;\n}\n\n// ============================================================================\n// HELPERS\n// ============================================================================\n\n/**\n * Get status display configuration\n */\nfunction getStatusConfig(setupState?: DataSinkSetupState, status?: DataSinkStatus): StatusConfig {\n if (status === 'refreshing' || setupState === 'workflow_running') {\n return {\n label: 'Running',\n bgColor: 'bg-action-primary-bg/10',\n textColor: 'text-action-primary-bg',\n dotColor: 'bg-action-primary-bg',\n };\n }\n if (status === 'error') {\n return {\n label: 'Failed',\n bgColor: 'bg-status-error-bg/10',\n textColor: 'text-status-error-text',\n dotColor: 'bg-status-error-bg',\n };\n }\n if (setupState === 'workflow_pending') {\n return {\n label: 'Pending',\n bgColor: 'bg-status-warning-bg/10',\n textColor: 'text-[var(--color-status-warning-text)]',\n dotColor: 'bg-status-warning-bg',\n };\n }\n return {\n label: 'Completed',\n bgColor: 'bg-status-success-bg/10',\n textColor: 'text-status-success-text',\n dotColor: 'bg-status-success-bg',\n };\n}\n\n// ============================================================================\n// ICONS\n// ============================================================================\n\nconst WorkflowIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M13 10V3L4 14h7v7l9-11h-7z\" />\n </svg>\n);\n\nconst RefreshIcon = ({ className, spinning }: { className?: string; spinning?: boolean }) => (\n <svg\n className={`${className} ${spinning ? 'animate-spin' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"\n />\n </svg>\n);\n\nconst ExternalLinkIcon = ({ 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 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n);\n\nconst AlertIcon = ({ 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 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\"\n />\n </svg>\n);\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const WorkflowStatusPanel = memo(function WorkflowStatusPanel({\n workflowId,\n executionId,\n lastRefreshedAt,\n setupState,\n status,\n errorMetadata,\n onRerunWorkflow,\n onViewWorkflow,\n disabled = false,\n isRerunning = false,\n}: WorkflowStatusPanelProps) {\n // Get status config\n const statusConfig = useMemo(() => getStatusConfig(setupState, status), [setupState, status]);\n\n const isRunning = status === 'refreshing' || setupState === 'workflow_running' || isRerunning;\n\n const lastRefreshedText = lastRefreshedAt\n ? formatDistanceToNow(new Date(lastRefreshedAt), { addSuffix: true })\n : 'Never';\n\n return (\n <Section\n // Peer of the detail page's other level-2 panels (Details, Linked\n // workflows, Linked parsers) — they must share a heading level or the\n // outline implies this panel is nested inside the one before it.\n headingLevel={2}\n title=\"FluidGrids workflow\"\n description=\"The workflow that populates this sink, and how its last run went.\"\n icon={<WorkflowIcon className=\"h-icon-sm w-icon-sm\" />}\n meta={\n <span className={`flex items-center gap-1.5 rounded-pill px-2 py-0.5 ${statusConfig.bgColor}`}>\n <span className={`h-1.5 w-1.5 rounded-pill ${statusConfig.dotColor} ${isRunning ? 'animate-pulse' : ''}`} />\n <span className={`text-xs font-medium ${statusConfig.textColor}`}>{statusConfig.label}</span>\n </span>\n }\n bodyClassName=\"space-y-form-gap\"\n >\n {/* Identifiers — supporting reference detail, so it steps down to `muted`. */}\n <div className=\"grid grid-cols-1 gap-form-gap text-sm sm:grid-cols-2\">\n <div className=\"min-w-0\">\n <p className=\"mb-1 text-xs text-text-secondary\">Workflow ID</p>\n <p className=\"break-all font-mono text-xs text-text-primary\" title={workflowId}>\n {workflowId || 'Not linked'}\n </p>\n </div>\n <div className=\"min-w-0\">\n <p className=\"mb-1 text-xs text-text-secondary\">Last execution</p>\n <p className=\"text-xs text-text-primary\">{lastRefreshedText}</p>\n </div>\n {executionId && (\n <div className=\"min-w-0 sm:col-span-2\">\n <p className=\"mb-1 text-xs text-text-secondary\">Execution ID</p>\n <p className=\"break-all font-mono text-xs text-text-primary\" title={executionId}>\n {executionId}\n </p>\n </div>\n )}\n </div>\n\n {/* Error display — a real status section rather than a hand-rolled tint. */}\n {status === 'error' && errorMetadata && (\n <Section\n tone=\"danger\"\n padding=\"compact\"\n headingLevel={3}\n title={errorMetadata.code || 'Last run failed'}\n icon={<AlertIcon className=\"h-icon-sm w-icon-sm\" />}\n >\n <p className=\"text-xs text-[var(--color-status-error-text)]\">\n {errorMetadata.message || 'An error occurred during workflow execution'}\n </p>\n </Section>\n )}\n\n {/* Actions */}\n <div className=\"flex flex-wrap items-center gap-control-gap border-t border-[var(--color-border-subtle)] pt-form-gap\">\n {onRerunWorkflow && (\n <button\n type=\"button\"\n onClick={onRerunWorkflow}\n disabled={disabled || isRunning}\n className={`flex min-h-[var(--size-controlHeight-md)] items-center gap-1.5 rounded-button bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bgHover disabled:cursor-not-allowed disabled:opacity-50 motion-safe:transition-colors ${SECTION_FOCUS_RING}`}\n >\n <RefreshIcon className=\"h-3.5 w-3.5\" spinning={isRunning} />\n {isRunning ? 'Running...' : 'Re-run workflow'}\n </button>\n )}\n {onViewWorkflow && (\n <button\n type=\"button\"\n onClick={onViewWorkflow}\n className={`flex min-h-[var(--size-controlHeight-md)] items-center gap-1.5 rounded-button px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-bg-sunken motion-safe:transition-colors ${SECTION_FOCUS_RING}`}\n >\n <ExternalLinkIcon className=\"h-3.5 w-3.5\" />\n View in FluidGrids\n </button>\n )}\n </div>\n </Section>\n );\n});\n\nexport default WorkflowStatusPanel;\n"],"mappings":"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"}