@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.
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js +118 -106
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js.map +1 -1
- package/dist/bigconsole/components/DrilldownModal.js +54 -50
- package/dist/bigconsole/components/DrilldownModal.js.map +1 -1
- package/dist/bigconsole/components/builder/BuilderCanvas.js +2 -2
- package/dist/bigconsole/components/builder/BuilderCanvas.js.map +1 -1
- package/dist/bigconsole/components/builder/BuilderTopbar.js +3 -3
- package/dist/bigconsole/components/builder/BuilderTopbar.js.map +1 -1
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.js +24 -25
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.js.map +1 -1
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +40 -29
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.js.map +1 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +145 -111
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +1 -1
- package/dist/bigconsole/components/builder/inspector/GeneralSection.js +58 -44
- package/dist/bigconsole/components/builder/inspector/GeneralSection.js.map +1 -1
- package/dist/bigconsole/components/common/Section.js +70 -0
- package/dist/bigconsole/components/common/Section.js.map +1 -0
- package/dist/bigconsole/components/common/index.js +2 -0
- package/dist/bigconsole/components/common/sectionStyles.js +42 -0
- package/dist/bigconsole/components/common/sectionStyles.js.map +1 -0
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +269 -251
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js +214 -223
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.js +12 -18
- package/dist/bigconsole/components/dashboard/DashboardGrid.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardToolbar.js +110 -102
- package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +81 -68
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +125 -159
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +147 -144
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +154 -153
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +82 -79
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +171 -284
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +250 -273
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.js +45 -53
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.js.map +1 -1
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js +157 -148
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js.map +1 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +75 -83
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +167 -161
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +181 -190
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +101 -95
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js +20 -18
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js.map +1 -1
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +1 -0
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js +26 -58
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +1 -1
- package/dist/bigconsole/components/dashboard/WidgetPalette.js +307 -229
- package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +1 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js +128 -129
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +1 -1
- package/dist/bigconsole/components/datasink/DataSinkCard.js +78 -79
- package/dist/bigconsole/components/datasink/DataSinkCard.js.map +1 -1
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.js +33 -34
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.js.map +1 -1
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +79 -61
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +1 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +75 -64
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +1 -1
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js +1 -1
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js.map +1 -1
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.js +20 -19
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.js.map +1 -1
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js +127 -171
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js.map +1 -1
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +113 -117
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +1 -1
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +312 -307
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +1 -1
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.js +65 -66
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.js.map +1 -1
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js +121 -127
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js.map +1 -1
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +194 -189
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +1 -1
- package/dist/bigconsole/components/datasink/SetupStateBadge.js +3 -3
- package/dist/bigconsole/components/datasink/SetupStateBadge.js.map +1 -1
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js +95 -95
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js.map +1 -1
- package/dist/bigconsole/components/parser/DataSinkSelector.js +163 -131
- package/dist/bigconsole/components/parser/DataSinkSelector.js.map +1 -1
- package/dist/bigconsole/components/parser/ExpressionEditor.js +3 -3
- package/dist/bigconsole/components/parser/ExpressionEditor.js.map +1 -1
- package/dist/bigconsole/components/parser/ImportParserDialog.js +205 -260
- package/dist/bigconsole/components/parser/ImportParserDialog.js.map +1 -1
- package/dist/bigconsole/components/parser/ParserCard.js +133 -114
- package/dist/bigconsole/components/parser/ParserCard.js.map +1 -1
- package/dist/bigconsole/components/parser/ParserSelector.js +193 -174
- package/dist/bigconsole/components/parser/ParserSelector.js.map +1 -1
- package/dist/bigconsole/components/parser/ParserStatusBadge.js +2 -2
- package/dist/bigconsole/components/parser/ParserStatusBadge.js.map +1 -1
- package/dist/bigconsole/components/parser/ParserTypeBadge.js +4 -4
- package/dist/bigconsole/components/parser/ParserTypeBadge.js.map +1 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.js +134 -89
- package/dist/bigconsole/components/pipeline/PipelineCard.js.map +1 -1
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js +77 -64
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js.map +1 -1
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js +7 -10
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js.map +1 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.js +31 -32
- package/dist/bigconsole/components/preview/AiPreviewContent.js.map +1 -1
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +152 -103
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +1 -1
- package/dist/bigconsole/components/preview/AiPreviewPanel.js +193 -148
- package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +1 -1
- package/dist/bigconsole/components/preview/previewShared.js +41 -23
- package/dist/bigconsole/components/preview/previewShared.js.map +1 -1
- package/dist/bigconsole/components/widgets/ActionConfigDialog.js +405 -364
- package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +265 -237
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.js +764 -821
- package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js +7 -5
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.js +7 -8
- package/dist/bigconsole/components/widgets/WidgetHeader.js.map +1 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.js +8 -7
- package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +1 -1
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js +1 -1
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +46 -49
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.js +154 -147
- package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.js +118 -101
- package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +1 -1
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +244 -191
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +1 -1
- package/dist/bigconsole/components/widgets/form/FormWidget.js +167 -159
- package/dist/bigconsole/components/widgets/form/FormWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +92 -76
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js +1 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +89 -86
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js +2 -2
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +64 -63
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js +2 -2
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.js +65 -58
- package/dist/bigconsole/components/widgets/list/ListConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/list/ListItem.js +1 -1
- package/dist/bigconsole/components/widgets/list/ListItem.js.map +1 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +1 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +79 -72
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +35 -34
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +20 -19
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +1 -1
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +181 -180
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +100 -90
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.js +3 -3
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.js +6 -4
- package/dist/bigconsole/components/widgets/states/EmptyState.js.map +1 -1
- package/dist/bigconsole/components/widgets/states/ErrorState.js +7 -5
- package/dist/bigconsole/components/widgets/states/ErrorState.js.map +1 -1
- package/dist/bigconsole/components/widgets/states/LoadingState.js +5 -4
- package/dist/bigconsole/components/widgets/states/LoadingState.js.map +1 -1
- package/dist/bigconsole/components/widgets/table/TableConfig.js +193 -172
- package/dist/bigconsole/components/widgets/table/TableConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/table/TableHeader.js +1 -1
- package/dist/bigconsole/components/widgets/table/TableHeader.js.map +1 -1
- package/dist/bigconsole/components/widgets/table/TableWidget.js +1 -1
- package/dist/bigconsole/components/widgets/table/TableWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.js +1 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js +3 -3
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.js +2 -2
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.js.map +1 -1
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +283 -249
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +1 -1
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js +28 -20
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js.map +1 -1
- package/dist/bigconsole/components/workflow/WorkflowCard.js +92 -77
- package/dist/bigconsole/components/workflow/WorkflowCard.js.map +1 -1
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js +70 -51
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js.map +1 -1
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js +16 -17
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js.map +1 -1
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +46 -42
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -1
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +372 -348
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -1
- package/dist/bigconsole/hooks/useModalFocusTrap.js +53 -0
- package/dist/bigconsole/hooks/useModalFocusTrap.js.map +1 -0
- package/dist/bigconsole/pages/DashboardBuilderPage.js +153 -142
- package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DashboardViewPage.js +230 -220
- package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
- package/dist/bigconsole/pages/DashboardsPage.js +832 -790
- package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
- package/dist/bigconsole/pages/DataParsersPage.js +249 -304
- package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js +324 -349
- package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkViewPage.js +336 -323
- package/dist/bigconsole/pages/DataSinkViewPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinksPage.js +356 -458
- package/dist/bigconsole/pages/DataSinksPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSourcesPage.js +14 -8
- package/dist/bigconsole/pages/DataSourcesPage.js.map +1 -1
- package/dist/bigconsole/pages/HomePage.js +186 -193
- package/dist/bigconsole/pages/HomePage.js.map +1 -1
- package/dist/bigconsole/pages/InsightsPage.js +901 -724
- package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
- package/dist/bigconsole/pages/ParserBuilderPage.js +769 -675
- package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/ParserViewPage.js +382 -354
- package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.js +540 -420
- package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelineViewPage.js +416 -384
- package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelinesPage.js +260 -309
- package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
- package/dist/bigconsole/pages/SettingsPage.js +177 -172
- package/dist/bigconsole/pages/SettingsPage.js.map +1 -1
- package/dist/bigconsole/pages/WidgetDemoPage.js +278 -142
- package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
- package/dist/bigconsole/pages/WorkflowViewPage.js +382 -366
- package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
- package/dist/bigconsole/pages/WorkflowsPage.js +202 -316
- package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +111 -109
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +1 -1
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +127 -126
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +1 -1
- package/dist/bigconsole/renderers/adapters/CustomRenderer.js +103 -103
- package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,80 +1,98 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { SECTION_FOCUS_RING as e } from "../common/sectionStyles.js";
|
|
2
|
+
import { Section as t } from "../common/Section.js";
|
|
3
|
+
import "../common/index.js";
|
|
4
|
+
import { useModalFocusTrap as n } from "../../hooks/useModalFocusTrap.js";
|
|
5
|
+
import { memo as r, useCallback as i, useId as a, useRef as o } from "react";
|
|
6
|
+
import { useI18n as s } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
7
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
3
8
|
//#region src/bigconsole/components/datasink/DataSinkDeleteDialog.tsx
|
|
4
|
-
var
|
|
5
|
-
let
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
9
|
+
var u = `min-h-[var(--size-controlHeight-md)] rounded-button px-4 py-2 text-sm font-medium disabled:cursor-not-allowed disabled:opacity-50 motion-safe:transition-colors ${e}`, d = r(function({ dataSink: e, isOpen: r, onClose: d, onConfirm: f, isDeleting: p = !1 }) {
|
|
10
|
+
let { t: m } = s(), h = a(), g = a(), _ = o(null), v = o(null);
|
|
11
|
+
n({
|
|
12
|
+
isOpen: r,
|
|
13
|
+
panelRef: _,
|
|
14
|
+
onClose: i(() => {
|
|
15
|
+
p || d();
|
|
16
|
+
}, [p, d]),
|
|
17
|
+
initialFocusRef: v
|
|
18
|
+
});
|
|
19
|
+
let y = i((e) => {
|
|
20
|
+
e.target === e.currentTarget && !p && d();
|
|
21
|
+
}, [p, d]);
|
|
22
|
+
return r ? /* @__PURE__ */ c("div", {
|
|
23
|
+
className: "fixed inset-0 z-50 flex items-center justify-center bg-[var(--color-bg-overlay)] p-4",
|
|
24
|
+
onClick: y,
|
|
25
|
+
children: /* @__PURE__ */ l("div", {
|
|
26
|
+
ref: _,
|
|
27
|
+
role: "dialog",
|
|
28
|
+
"aria-modal": "true",
|
|
29
|
+
"aria-labelledby": h,
|
|
30
|
+
"aria-describedby": g,
|
|
31
|
+
tabIndex: -1,
|
|
32
|
+
className: "flex max-h-[90vh] w-full max-w-md flex-col rounded-card border border-[var(--color-border-subtle)] bg-bg-surface shadow-[var(--shadow-elevation-3)] focus:outline-none",
|
|
19
33
|
children: [
|
|
20
|
-
/* @__PURE__ */
|
|
21
|
-
className: "
|
|
22
|
-
children: /* @__PURE__ */
|
|
23
|
-
id:
|
|
34
|
+
/* @__PURE__ */ c("div", {
|
|
35
|
+
className: "border-b border-[var(--color-border-subtle)] p-form-gap sm:p-card-padding",
|
|
36
|
+
children: /* @__PURE__ */ c("h2", {
|
|
37
|
+
id: h,
|
|
24
38
|
className: "text-lg font-semibold text-text-primary",
|
|
25
|
-
children: "Delete DataSink"
|
|
39
|
+
children: m("bigconsole.dataSinks.deleteDialog.title", "Delete DataSink")
|
|
26
40
|
})
|
|
27
41
|
}),
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
-
className: "p-
|
|
42
|
+
/* @__PURE__ */ l("div", {
|
|
43
|
+
className: "min-w-0 flex-1 space-y-form-gap overflow-y-auto p-form-gap sm:p-card-padding",
|
|
30
44
|
children: [
|
|
31
|
-
/* @__PURE__ */
|
|
32
|
-
|
|
33
|
-
|
|
45
|
+
/* @__PURE__ */ c("p", {
|
|
46
|
+
id: g,
|
|
47
|
+
className: "text-sm text-text-primary",
|
|
48
|
+
children: m("bigconsole.dataSinks.deleteDialog.confirmMessage", "Are you sure you want to delete this DataSink?")
|
|
34
49
|
}),
|
|
35
|
-
/* @__PURE__ */
|
|
36
|
-
|
|
37
|
-
|
|
50
|
+
/* @__PURE__ */ l(t, {
|
|
51
|
+
emphasis: "muted",
|
|
52
|
+
padding: "compact",
|
|
53
|
+
headingLevel: 3,
|
|
54
|
+
title: "Data sink",
|
|
55
|
+
headerClassName: "mb-control-gap",
|
|
56
|
+
children: [/* @__PURE__ */ c("p", {
|
|
38
57
|
className: "text-sm font-medium text-text-primary",
|
|
39
|
-
children: e.name || "Untitled DataSink"
|
|
40
|
-
}), /* @__PURE__ */
|
|
41
|
-
className: "text-xs text-text-secondary
|
|
58
|
+
children: e.name || m("bigconsole.dataSinks.deleteDialog.untitledName", "Untitled DataSink")
|
|
59
|
+
}), /* @__PURE__ */ c("p", {
|
|
60
|
+
className: "mt-1 break-all font-mono text-xs text-text-secondary",
|
|
42
61
|
children: e.key
|
|
43
62
|
})]
|
|
44
63
|
}),
|
|
45
|
-
e.linkedWorkflowCount && e.linkedWorkflowCount > 0
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
". Deleting it will remove these links."
|
|
55
|
-
]
|
|
64
|
+
e.linkedWorkflowCount && e.linkedWorkflowCount > 0 ? /* @__PURE__ */ c(t, {
|
|
65
|
+
tone: "warning",
|
|
66
|
+
padding: "compact",
|
|
67
|
+
headingLevel: 3,
|
|
68
|
+
title: "Workflow links will be removed",
|
|
69
|
+
headerClassName: "mb-control-gap",
|
|
70
|
+
children: /* @__PURE__ */ c("p", {
|
|
71
|
+
className: "text-sm text-[var(--color-status-warning-text)]",
|
|
72
|
+
children: e.linkedWorkflowCount === 1 ? m("bigconsole.dataSinks.deleteDialog.linkedWorkflowWarningSingular", "This DataSink is linked to {{count}} workflow. Deleting it will remove these links.", { count: e.linkedWorkflowCount }) : m("bigconsole.dataSinks.deleteDialog.linkedWorkflowWarningPlural", "This DataSink is linked to {{count}} workflows. Deleting it will remove these links.", { count: e.linkedWorkflowCount })
|
|
56
73
|
})
|
|
57
|
-
}),
|
|
58
|
-
/* @__PURE__ */
|
|
59
|
-
className: "text-sm text-status-error-text
|
|
60
|
-
children: "This action cannot be undone."
|
|
74
|
+
}) : null,
|
|
75
|
+
/* @__PURE__ */ c("p", {
|
|
76
|
+
className: "text-sm text-status-error-text",
|
|
77
|
+
children: m("bigconsole.dataSinks.deleteDialog.cannotBeUndone", "This action cannot be undone.")
|
|
61
78
|
})
|
|
62
79
|
]
|
|
63
80
|
}),
|
|
64
|
-
/* @__PURE__ */
|
|
65
|
-
className: "
|
|
66
|
-
children: [/* @__PURE__ */
|
|
81
|
+
/* @__PURE__ */ l("div", {
|
|
82
|
+
className: "flex flex-wrap items-center justify-end gap-control-gap border-t border-[var(--color-border-subtle)] p-form-gap sm:p-card-padding",
|
|
83
|
+
children: [/* @__PURE__ */ c("button", {
|
|
84
|
+
ref: v,
|
|
67
85
|
type: "button",
|
|
68
|
-
onClick:
|
|
69
|
-
disabled:
|
|
70
|
-
className:
|
|
71
|
-
children: "Cancel"
|
|
72
|
-
}), /* @__PURE__ */
|
|
86
|
+
onClick: d,
|
|
87
|
+
disabled: p,
|
|
88
|
+
className: `${u} bg-bg-sunken text-text-primary hover:bg-bg-elevated`,
|
|
89
|
+
children: m("bigconsole.dataSinks.deleteDialog.cancelButton", "Cancel")
|
|
90
|
+
}), /* @__PURE__ */ c("button", {
|
|
73
91
|
type: "button",
|
|
74
|
-
onClick:
|
|
75
|
-
disabled:
|
|
76
|
-
className:
|
|
77
|
-
children:
|
|
92
|
+
onClick: f,
|
|
93
|
+
disabled: p,
|
|
94
|
+
className: `${u} bg-action-danger-bg text-[var(--color-action-danger-text)] hover:bg-[var(--color-action-danger-bgHover)]`,
|
|
95
|
+
children: p ? m("bigconsole.dataSinks.deleteDialog.deletingButton", "Deleting...") : m("bigconsole.dataSinks.deleteDialog.deleteButton", "Delete")
|
|
78
96
|
})]
|
|
79
97
|
})
|
|
80
98
|
]
|
|
@@ -82,6 +100,6 @@ var i = e(function({ dataSink: e, isOpen: i, onClose: a, onConfirm: o, isDeletin
|
|
|
82
100
|
}) : null;
|
|
83
101
|
});
|
|
84
102
|
//#endregion
|
|
85
|
-
export {
|
|
103
|
+
export { d as default };
|
|
86
104
|
|
|
87
105
|
//# sourceMappingURL=DataSinkDeleteDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSinkDeleteDialog.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkDeleteDialog.tsx"],"sourcesContent":["/**\n * DataSink Delete Dialog\n *\n * Confirmation dialog for deleting a DataSink.\n */\n\nimport { memo, useCallback } from 'react';\nimport type { DataSink } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkDeleteDialogProps {\n /** DataSink to delete */\n dataSink: DataSink;\n /** Whether dialog is open */\n isOpen: boolean;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when delete is confirmed */\n onConfirm: () => void;\n /** Whether delete is in progress */\n isDeleting?: boolean;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkDeleteDialog = memo(function DataSinkDeleteDialog({\n dataSink,\n isOpen,\n onClose,\n onConfirm,\n isDeleting = false,\n}: DataSinkDeleteDialogProps) {\n //
|
|
1
|
+
{"version":3,"file":"DataSinkDeleteDialog.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkDeleteDialog.tsx"],"sourcesContent":["/**\n * DataSink Delete Dialog\n *\n * Confirmation dialog for deleting a DataSink.\n */\n\nimport { memo, useCallback, useId, useRef } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useModalFocusTrap } from '../../hooks/useModalFocusTrap';\nimport { Section, SECTION_FOCUS_RING } from '../common';\nimport type { DataSink } from '../../types';\n\n/** Shared button recipe for the dialog footer. Keeps a visible focus ring. */\nconst DIALOG_BUTTON =\n `min-h-[var(--size-controlHeight-md)] rounded-button px-4 py-2 text-sm font-medium disabled:cursor-not-allowed disabled:opacity-50 motion-safe:transition-colors ${SECTION_FOCUS_RING}` as const;\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkDeleteDialogProps {\n /** DataSink to delete */\n dataSink: DataSink;\n /** Whether dialog is open */\n isOpen: boolean;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when delete is confirmed */\n onConfirm: () => void;\n /** Whether delete is in progress */\n isDeleting?: boolean;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkDeleteDialog = memo(function DataSinkDeleteDialog({\n dataSink,\n isOpen,\n onClose,\n onConfirm,\n isDeleting = false,\n}: DataSinkDeleteDialogProps) {\n const { t } = useI18n();\n const titleId = useId();\n const descriptionId = useId();\n const panelRef = useRef<HTMLDivElement | null>(null);\n const cancelRef = useRef<HTMLButtonElement | null>(null);\n\n // Escape must not yank the dialog away mid-delete — the request is already in\n // flight and the user would be left guessing whether it landed.\n const handleEscape = useCallback(() => {\n if (!isDeleting) onClose();\n }, [isDeleting, onClose]);\n\n // `aria-modal=\"true\"` promises assistive tech that focus is confined to the\n // panel, so it has to actually be confined. Cancel is the entry point: this is\n // a destructive confirmation, so the control under the keyboard is the safe\n // one. Same contract as the pipeline and workflow delete dialogs.\n useModalFocusTrap({ isOpen, panelRef, onClose: handleEscape, initialFocusRef: cancelRef });\n\n // Handle backdrop click\n const handleBackdropClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !isDeleting) {\n onClose();\n }\n },\n [isDeleting, onClose]\n );\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-[var(--color-bg-overlay)] p-4\"\n onClick={handleBackdropClick}\n >\n {/*\n `role=\"dialog\"` / `aria-modal` belong on the PANEL, not the scrim: on the\n scrim the dialog boundary screen readers announce is the whole viewport.\n */}\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n tabIndex={-1}\n className=\"flex max-h-[90vh] w-full max-w-md flex-col rounded-card border border-[var(--color-border-subtle)] bg-bg-surface shadow-[var(--shadow-elevation-3)] focus:outline-none\"\n >\n {/* Header strip — structural only. */}\n <div className=\"border-b border-[var(--color-border-subtle)] p-form-gap sm:p-card-padding\">\n <h2 id={titleId} className=\"text-lg font-semibold text-text-primary\">\n {t('bigconsole.dataSinks.deleteDialog.title', 'Delete DataSink')}\n </h2>\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1 space-y-form-gap overflow-y-auto p-form-gap sm:p-card-padding\">\n <p id={descriptionId} className=\"text-sm text-text-primary\">\n {t('bigconsole.dataSinks.deleteDialog.confirmMessage', 'Are you sure you want to delete this DataSink?')}\n </p>\n\n <Section\n emphasis=\"muted\"\n padding=\"compact\"\n headingLevel={3}\n title=\"Data sink\"\n headerClassName=\"mb-control-gap\"\n >\n <p className=\"text-sm font-medium text-text-primary\">\n {dataSink.name || t('bigconsole.dataSinks.deleteDialog.untitledName', 'Untitled DataSink')}\n </p>\n <p className=\"mt-1 break-all font-mono text-xs text-text-secondary\">{dataSink.key}</p>\n </Section>\n\n {dataSink.linkedWorkflowCount && dataSink.linkedWorkflowCount > 0 ? (\n <Section\n tone=\"warning\"\n padding=\"compact\"\n headingLevel={3}\n title=\"Workflow links will be removed\"\n headerClassName=\"mb-control-gap\"\n >\n <p className=\"text-sm text-[var(--color-status-warning-text)]\">\n {dataSink.linkedWorkflowCount === 1\n ? t(\n 'bigconsole.dataSinks.deleteDialog.linkedWorkflowWarningSingular',\n 'This DataSink is linked to {{count}} workflow. Deleting it will remove these links.',\n { count: dataSink.linkedWorkflowCount }\n )\n : t(\n 'bigconsole.dataSinks.deleteDialog.linkedWorkflowWarningPlural',\n 'This DataSink is linked to {{count}} workflows. Deleting it will remove these links.',\n { count: dataSink.linkedWorkflowCount }\n )}\n </p>\n </Section>\n ) : null}\n\n <p className=\"text-sm text-status-error-text\">\n {t('bigconsole.dataSinks.deleteDialog.cannotBeUndone', 'This action cannot be undone.')}\n </p>\n </div>\n\n {/* Footer strip */}\n <div className=\"flex flex-wrap items-center justify-end gap-control-gap border-t border-[var(--color-border-subtle)] p-form-gap sm:p-card-padding\">\n <button\n ref={cancelRef}\n type=\"button\"\n onClick={onClose}\n disabled={isDeleting}\n className={`${DIALOG_BUTTON} bg-bg-sunken text-text-primary hover:bg-bg-elevated`}\n >\n {t('bigconsole.dataSinks.deleteDialog.cancelButton', 'Cancel')}\n </button>\n <button\n type=\"button\"\n onClick={onConfirm}\n disabled={isDeleting}\n className={`${DIALOG_BUTTON} bg-action-danger-bg text-[var(--color-action-danger-text)] hover:bg-[var(--color-action-danger-bgHover)]`}\n >\n {isDeleting\n ? t('bigconsole.dataSinks.deleteDialog.deletingButton', 'Deleting...')\n : t('bigconsole.dataSinks.deleteDialog.deleteButton', 'Delete')}\n </button>\n </div>\n </div>\n </div>\n );\n});\n\nexport default DataSinkDeleteDialog;\n"],"mappings":";;;;;;;;AAaA,IAAM,IACJ,mKAAmK,KAuBxJ,IAAuB,EAAK,SAA8B,EACrE,aACA,WACA,YACA,cACA,gBAAa,MACe;CAC5B,IAAM,EAAE,SAAM,GAAS,EACjB,IAAU,GAAO,EACjB,IAAgB,GAAO,EACvB,IAAW,EAA8B,KAAK,EAC9C,IAAY,EAAiC,KAAK;AAYxD,GAAkB;EAAE;EAAQ;EAAU,SARjB,QAAkB;AACrC,GAAK,KAAY,GAAS;KACzB,CAAC,GAAY,EAAQ,CAAC;EAMoC,iBAAiB;EAAW,CAAC;CAG1F,IAAM,IAAsB,GACzB,MAAwB;AACvB,EAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,KACnC,GAAS;IAGb,CAAC,GAAY,EAAQ,CACtB;AAMD,QAJK,IAKH,kBAAC,OAAD;EACE,WAAU;EACV,SAAS;YAMT,kBAAC,OAAD;GACE,KAAK;GACL,MAAK;GACL,cAAW;GACX,mBAAiB;GACjB,oBAAkB;GAClB,UAAU;GACV,WAAU;aAPZ;IAUE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,MAAD;MAAI,IAAI;MAAS,WAAU;gBACxB,EAAE,2CAA2C,kBAAkB;MAC7D,CAAA;KACD,CAAA;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,KAAD;OAAG,IAAI;OAAe,WAAU;iBAC7B,EAAE,oDAAoD,iDAAiD;OACtG,CAAA;MAEJ,kBAAC,GAAD;OACE,UAAS;OACT,SAAQ;OACR,cAAc;OACd,OAAM;OACN,iBAAgB;iBALlB,CAOE,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAS,QAAQ,EAAE,kDAAkD,oBAAoB;QACxF,CAAA,EACJ,kBAAC,KAAD;QAAG,WAAU;kBAAwD,EAAS;QAAQ,CAAA,CAC9E;;MAET,EAAS,uBAAuB,EAAS,sBAAsB,IAC9D,kBAAC,GAAD;OACE,MAAK;OACL,SAAQ;OACR,cAAc;OACd,OAAM;OACN,iBAAgB;iBAEhB,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAS,wBAAwB,IAC9B,EACE,mEACA,uFACA,EAAE,OAAO,EAAS,qBAAqB,CACxC,GACD,EACE,iEACA,wFACA,EAAE,OAAO,EAAS,qBAAqB,CACxC;QACH,CAAA;OACI,CAAA,GACR;MAEJ,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAE,oDAAoD,gCAAgC;OACrF,CAAA;MACA;;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,UAAD;MACE,KAAK;MACL,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW,GAAG,EAAc;gBAE3B,EAAE,kDAAkD,SAAS;MACvD,CAAA,EACT,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW,GAAG,EAAc;gBAE3B,IACG,EAAE,oDAAoD,cAAc,GACpE,EAAE,kDAAkD,SAAS;MAC1D,CAAA,CACL;;IACF;;EACF,CAAA,GAnGC;EAqGT"}
|
|
@@ -1,81 +1,92 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { SECTION_FOCUS_RING as e } from "../common/sectionStyles.js";
|
|
2
|
+
import { Section as t } from "../common/Section.js";
|
|
3
|
+
import "../common/index.js";
|
|
4
|
+
import { memo as n, useCallback as r, useState as i } from "react";
|
|
5
|
+
import { useI18n as a } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
6
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
3
7
|
//#region src/bigconsole/components/datasink/DataSinkRefreshDialog.tsx
|
|
4
|
-
var
|
|
5
|
-
let [
|
|
6
|
-
e.target === e.currentTarget && !
|
|
7
|
-
}, [
|
|
8
|
-
|
|
9
|
-
}, [
|
|
10
|
-
return
|
|
11
|
-
className: "fixed inset-0 z-50 flex items-center justify-center p-4
|
|
12
|
-
onClick:
|
|
8
|
+
var c = `min-h-[var(--size-controlHeight-md)] rounded-button px-4 py-2 text-sm font-medium disabled:cursor-not-allowed disabled:opacity-50 motion-safe:transition-colors ${e}`, l = n(function({ dataSink: n, isOpen: l, onClose: u, onConfirm: d, isRefreshing: f = !1 }) {
|
|
9
|
+
let { t: p } = a(), [m, h] = i(!1), g = r((e) => {
|
|
10
|
+
e.target === e.currentTarget && !f && u();
|
|
11
|
+
}, [f, u]), _ = (e) => new Date(e).toLocaleString(), v = r(() => {
|
|
12
|
+
d(m);
|
|
13
|
+
}, [d, m]);
|
|
14
|
+
return l ? /* @__PURE__ */ o("div", {
|
|
15
|
+
className: "fixed inset-0 z-50 flex items-center justify-center bg-[var(--color-bg-overlay)] p-4",
|
|
16
|
+
onClick: g,
|
|
13
17
|
role: "dialog",
|
|
14
18
|
"aria-modal": "true",
|
|
15
19
|
"aria-labelledby": "refresh-dialog-title",
|
|
16
|
-
children: /* @__PURE__ */
|
|
17
|
-
className: "
|
|
20
|
+
children: /* @__PURE__ */ s("div", {
|
|
21
|
+
className: "flex max-h-[90vh] w-full max-w-md flex-col rounded-card border border-[var(--color-border-subtle)] bg-bg-surface shadow-[var(--shadow-elevation-3)]",
|
|
18
22
|
children: [
|
|
19
|
-
/* @__PURE__ */
|
|
20
|
-
className: "
|
|
21
|
-
children: /* @__PURE__ */
|
|
23
|
+
/* @__PURE__ */ o("div", {
|
|
24
|
+
className: "border-b border-[var(--color-border-subtle)] p-form-gap sm:p-card-padding",
|
|
25
|
+
children: /* @__PURE__ */ o("h2", {
|
|
22
26
|
id: "refresh-dialog-title",
|
|
23
27
|
className: "text-lg font-semibold text-text-primary",
|
|
24
|
-
children: "Refresh DataSink"
|
|
28
|
+
children: p("bigconsole.dataSinks.refreshDialog.title", "Refresh DataSink")
|
|
25
29
|
})
|
|
26
30
|
}),
|
|
27
|
-
/* @__PURE__ */
|
|
28
|
-
className: "p-
|
|
29
|
-
children: [
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
31
|
+
/* @__PURE__ */ s("div", {
|
|
32
|
+
className: "min-w-0 flex-1 space-y-form-gap overflow-y-auto p-form-gap sm:p-card-padding",
|
|
33
|
+
children: [/* @__PURE__ */ s(t, {
|
|
34
|
+
emphasis: "muted",
|
|
35
|
+
padding: "compact",
|
|
36
|
+
headingLevel: 3,
|
|
37
|
+
title: "Data sink",
|
|
38
|
+
headerClassName: "mb-control-gap",
|
|
39
|
+
children: [
|
|
40
|
+
/* @__PURE__ */ o("p", {
|
|
41
|
+
className: "text-sm font-medium text-text-primary",
|
|
42
|
+
children: n.name || p("bigconsole.dataSinks.refreshDialog.untitledName", "Untitled DataSink")
|
|
43
|
+
}),
|
|
44
|
+
/* @__PURE__ */ o("p", {
|
|
45
|
+
className: "mt-1 break-all font-mono text-xs text-text-secondary",
|
|
46
|
+
children: n.key
|
|
47
|
+
}),
|
|
48
|
+
n.lastRefreshedAt && /* @__PURE__ */ o("p", {
|
|
49
|
+
className: "mt-2 text-xs text-text-secondary",
|
|
50
|
+
children: p("bigconsole.dataSinks.refreshDialog.lastRefreshed", "Last refreshed: {{date}}", { date: _(n.lastRefreshedAt) })
|
|
51
|
+
})
|
|
52
|
+
]
|
|
53
|
+
}), /* @__PURE__ */ s(t, {
|
|
54
|
+
emphasis: "bare",
|
|
55
|
+
padding: "none",
|
|
56
|
+
headingLevel: 3,
|
|
57
|
+
title: "Options",
|
|
58
|
+
headerClassName: "mb-control-gap",
|
|
59
|
+
children: [/* @__PURE__ */ s("label", {
|
|
60
|
+
className: "flex min-h-[var(--size-controlHeight-md)] cursor-pointer items-center gap-2",
|
|
61
|
+
children: [/* @__PURE__ */ o("input", {
|
|
50
62
|
type: "checkbox",
|
|
51
|
-
checked:
|
|
52
|
-
onChange: (e) =>
|
|
53
|
-
className:
|
|
54
|
-
}), /* @__PURE__ */
|
|
63
|
+
checked: m,
|
|
64
|
+
onChange: (e) => h(e.target.checked),
|
|
65
|
+
className: `h-4 w-4 rounded ${e}`
|
|
66
|
+
}), /* @__PURE__ */ o("span", {
|
|
55
67
|
className: "text-sm text-text-primary",
|
|
56
|
-
children: "Force refresh (bypass cache)"
|
|
68
|
+
children: p("bigconsole.dataSinks.refreshDialog.forceRefreshLabel", "Force refresh (bypass cache)")
|
|
57
69
|
})]
|
|
58
|
-
}),
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
]
|
|
70
|
+
}), /* @__PURE__ */ o("p", {
|
|
71
|
+
className: "mt-1 text-xs text-text-secondary",
|
|
72
|
+
children: p("bigconsole.dataSinks.refreshDialog.forceRefreshDescription", "Force refresh will re-fetch all data from the source, ignoring any cached values.")
|
|
73
|
+
})]
|
|
74
|
+
})]
|
|
64
75
|
}),
|
|
65
|
-
/* @__PURE__ */
|
|
66
|
-
className: "
|
|
67
|
-
children: [/* @__PURE__ */
|
|
76
|
+
/* @__PURE__ */ s("div", {
|
|
77
|
+
className: "flex flex-wrap items-center justify-end gap-control-gap border-t border-[var(--color-border-subtle)] p-form-gap sm:p-card-padding",
|
|
78
|
+
children: [/* @__PURE__ */ o("button", {
|
|
68
79
|
type: "button",
|
|
69
|
-
onClick:
|
|
70
|
-
disabled:
|
|
71
|
-
className:
|
|
72
|
-
children: "Cancel"
|
|
73
|
-
}), /* @__PURE__ */
|
|
80
|
+
onClick: u,
|
|
81
|
+
disabled: f,
|
|
82
|
+
className: `${c} bg-bg-sunken text-text-primary hover:bg-bg-elevated`,
|
|
83
|
+
children: p("bigconsole.dataSinks.refreshDialog.cancelButton", "Cancel")
|
|
84
|
+
}), /* @__PURE__ */ o("button", {
|
|
74
85
|
type: "button",
|
|
75
|
-
onClick:
|
|
76
|
-
disabled:
|
|
77
|
-
className:
|
|
78
|
-
children:
|
|
86
|
+
onClick: v,
|
|
87
|
+
disabled: f,
|
|
88
|
+
className: `${c} bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bgHover`,
|
|
89
|
+
children: f ? p("bigconsole.dataSinks.refreshDialog.refreshingButton", "Refreshing...") : p("bigconsole.dataSinks.refreshDialog.refreshButton", "Refresh")
|
|
79
90
|
})]
|
|
80
91
|
})
|
|
81
92
|
]
|
|
@@ -83,6 +94,6 @@ var a = e(function({ dataSink: e, isOpen: a, onClose: o, onConfirm: s, isRefresh
|
|
|
83
94
|
}) : null;
|
|
84
95
|
});
|
|
85
96
|
//#endregion
|
|
86
|
-
export {
|
|
97
|
+
export { l as default };
|
|
87
98
|
|
|
88
99
|
//# sourceMappingURL=DataSinkRefreshDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSinkRefreshDialog.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkRefreshDialog.tsx"],"sourcesContent":["/**\n * DataSink Refresh Dialog\n *\n * Dialog for confirming DataSink refresh with force option.\n */\n\nimport { memo, useState, useCallback } from 'react';\nimport type { DataSink } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkRefreshDialogProps {\n /** DataSink to refresh */\n dataSink: DataSink;\n /** Whether dialog is open */\n isOpen: boolean;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when refresh is confirmed (with force flag) */\n onConfirm: (force: boolean) => void;\n /** Whether refresh is in progress */\n isRefreshing?: boolean;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkRefreshDialog = memo(function DataSinkRefreshDialog({\n dataSink,\n isOpen,\n onClose,\n onConfirm,\n isRefreshing = false,\n}: DataSinkRefreshDialogProps) {\n const [forceRefresh, setForceRefresh] = useState(false);\n\n // Handle backdrop click\n const handleBackdropClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !isRefreshing) {\n onClose();\n }\n },\n [isRefreshing, onClose]\n );\n\n // Format date\n const formatDate = (dateString: string) => {\n return new Date(dateString).toLocaleString();\n };\n\n // Handle confirm\n const handleConfirm = useCallback(() => {\n onConfirm(forceRefresh);\n }, [onConfirm, forceRefresh]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4
|
|
1
|
+
{"version":3,"file":"DataSinkRefreshDialog.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkRefreshDialog.tsx"],"sourcesContent":["/**\n * DataSink Refresh Dialog\n *\n * Dialog for confirming DataSink refresh with force option.\n */\n\nimport { memo, useState, useCallback } from 'react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { Section, SECTION_FOCUS_RING } from '../common';\nimport type { DataSink } from '../../types';\n\n/** Shared button recipe for the dialog footer. Keeps a visible focus ring. */\nconst DIALOG_BUTTON =\n `min-h-[var(--size-controlHeight-md)] rounded-button px-4 py-2 text-sm font-medium disabled:cursor-not-allowed disabled:opacity-50 motion-safe:transition-colors ${SECTION_FOCUS_RING}` as const;\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkRefreshDialogProps {\n /** DataSink to refresh */\n dataSink: DataSink;\n /** Whether dialog is open */\n isOpen: boolean;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when refresh is confirmed (with force flag) */\n onConfirm: (force: boolean) => void;\n /** Whether refresh is in progress */\n isRefreshing?: boolean;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkRefreshDialog = memo(function DataSinkRefreshDialog({\n dataSink,\n isOpen,\n onClose,\n onConfirm,\n isRefreshing = false,\n}: DataSinkRefreshDialogProps) {\n const { t } = useI18n();\n const [forceRefresh, setForceRefresh] = useState(false);\n\n // Handle backdrop click\n const handleBackdropClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !isRefreshing) {\n onClose();\n }\n },\n [isRefreshing, onClose]\n );\n\n // Format date\n const formatDate = (dateString: string) => {\n return new Date(dateString).toLocaleString();\n };\n\n // Handle confirm\n const handleConfirm = useCallback(() => {\n onConfirm(forceRefresh);\n }, [onConfirm, forceRefresh]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-[var(--color-bg-overlay)] p-4\"\n onClick={handleBackdropClick}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"refresh-dialog-title\"\n >\n <div className=\"flex max-h-[90vh] w-full max-w-md flex-col rounded-card border border-[var(--color-border-subtle)] bg-bg-surface shadow-[var(--shadow-elevation-3)]\">\n {/* Header strip — structural only. */}\n <div className=\"border-b border-[var(--color-border-subtle)] p-form-gap sm:p-card-padding\">\n <h2 id=\"refresh-dialog-title\" className=\"text-lg font-semibold text-text-primary\">\n {t('bigconsole.dataSinks.refreshDialog.title', 'Refresh DataSink')}\n </h2>\n </div>\n\n {/* Body */}\n <div className=\"min-w-0 flex-1 space-y-form-gap overflow-y-auto p-form-gap sm:p-card-padding\">\n <Section\n emphasis=\"muted\"\n padding=\"compact\"\n headingLevel={3}\n title=\"Data sink\"\n headerClassName=\"mb-control-gap\"\n >\n <p className=\"text-sm font-medium text-text-primary\">\n {dataSink.name || t('bigconsole.dataSinks.refreshDialog.untitledName', 'Untitled DataSink')}\n </p>\n <p className=\"mt-1 break-all font-mono text-xs text-text-secondary\">{dataSink.key}</p>\n {dataSink.lastRefreshedAt && (\n <p className=\"mt-2 text-xs text-text-secondary\">\n {t('bigconsole.dataSinks.refreshDialog.lastRefreshed', 'Last refreshed: {{date}}', {\n date: formatDate(dataSink.lastRefreshedAt),\n })}\n </p>\n )}\n </Section>\n\n <Section emphasis=\"bare\" padding=\"none\" headingLevel={3} title=\"Options\" headerClassName=\"mb-control-gap\">\n <label className=\"flex min-h-[var(--size-controlHeight-md)] cursor-pointer items-center gap-2\">\n <input\n type=\"checkbox\"\n checked={forceRefresh}\n onChange={(e) => setForceRefresh(e.target.checked)}\n className={`h-4 w-4 rounded ${SECTION_FOCUS_RING}`}\n />\n <span className=\"text-sm text-text-primary\">\n {t('bigconsole.dataSinks.refreshDialog.forceRefreshLabel', 'Force refresh (bypass cache)')}\n </span>\n </label>\n <p className=\"mt-1 text-xs text-text-secondary\">\n {t(\n 'bigconsole.dataSinks.refreshDialog.forceRefreshDescription',\n 'Force refresh will re-fetch all data from the source, ignoring any cached values.'\n )}\n </p>\n </Section>\n </div>\n\n {/* Footer strip */}\n <div className=\"flex flex-wrap items-center justify-end gap-control-gap border-t border-[var(--color-border-subtle)] p-form-gap sm:p-card-padding\">\n <button\n type=\"button\"\n onClick={onClose}\n disabled={isRefreshing}\n className={`${DIALOG_BUTTON} bg-bg-sunken text-text-primary hover:bg-bg-elevated`}\n >\n {t('bigconsole.dataSinks.refreshDialog.cancelButton', 'Cancel')}\n </button>\n <button\n type=\"button\"\n onClick={handleConfirm}\n disabled={isRefreshing}\n className={`${DIALOG_BUTTON} bg-action-primary-bg text-action-primary-text hover:bg-action-primary-bgHover`}\n >\n {isRefreshing\n ? t('bigconsole.dataSinks.refreshDialog.refreshingButton', 'Refreshing...')\n : t('bigconsole.dataSinks.refreshDialog.refreshButton', 'Refresh')}\n </button>\n </div>\n </div>\n </div>\n );\n});\n\nexport default DataSinkRefreshDialog;\n"],"mappings":";;;;;;;AAYA,IAAM,IACJ,mKAAmK,KAuBxJ,IAAwB,EAAK,SAA+B,EACvE,aACA,WACA,YACA,cACA,kBAAe,MACc;CAC7B,IAAM,EAAE,SAAM,GAAS,EACjB,CAAC,GAAc,KAAmB,EAAS,GAAM,EAGjD,IAAsB,GACzB,MAAwB;AACvB,EAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,KACnC,GAAS;IAGb,CAAC,GAAc,EAAQ,CACxB,EAGK,KAAc,MACX,IAAI,KAAK,EAAW,CAAC,gBAAgB,EAIxC,IAAgB,QAAkB;AACtC,IAAU,EAAa;IACtB,CAAC,GAAW,EAAa,CAAC;AAM7B,QAJK,IAKH,kBAAC,OAAD;EACE,WAAU;EACV,SAAS;EACT,MAAK;EACL,cAAW;EACX,mBAAgB;YAEhB,kBAAC,OAAD;GAAK,WAAU;aAAf;IAEE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,MAAD;MAAI,IAAG;MAAuB,WAAU;gBACrC,EAAE,4CAA4C,mBAAmB;MAC/D,CAAA;KACD,CAAA;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,GAAD;MACE,UAAS;MACT,SAAQ;MACR,cAAc;MACd,OAAM;MACN,iBAAgB;gBALlB;OAOE,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAS,QAAQ,EAAE,mDAAmD,oBAAoB;QACzF,CAAA;OACJ,kBAAC,KAAD;QAAG,WAAU;kBAAwD,EAAS;QAAQ,CAAA;OACrF,EAAS,mBACR,kBAAC,KAAD;QAAG,WAAU;kBACV,EAAE,oDAAoD,4BAA4B,EACjF,MAAM,EAAW,EAAS,gBAAgB,EAC3C,CAAC;QACA,CAAA;OAEE;SAEV,kBAAC,GAAD;MAAS,UAAS;MAAO,SAAQ;MAAO,cAAc;MAAG,OAAM;MAAU,iBAAgB;gBAAzF,CACE,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAgB,EAAE,OAAO,QAAQ;QAClD,WAAW,mBAAmB;QAC9B,CAAA,EACF,kBAAC,QAAD;QAAM,WAAU;kBACb,EAAE,wDAAwD,+BAA+B;QACrF,CAAA,CACD;UACR,kBAAC,KAAD;OAAG,WAAU;iBACV,EACC,8DACA,oFACD;OACC,CAAA,CACI;QACN;;IAGN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW,GAAG,EAAc;gBAE3B,EAAE,mDAAmD,SAAS;MACxD,CAAA,EACT,kBAAC,UAAD;MACE,MAAK;MACL,SAAS;MACT,UAAU;MACV,WAAW,GAAG,EAAc;gBAE3B,IACG,EAAE,uDAAuD,gBAAgB,GACzE,EAAE,oDAAoD,UAAU;MAC7D,CAAA,CACL;;IACF;;EACF,CAAA,GApFC;EAsFT"}
|
|
@@ -47,7 +47,7 @@ var r = e(function({ status: e, size: r = "md", showIcon: i = !0 }) {
|
|
|
47
47
|
},
|
|
48
48
|
stale: {
|
|
49
49
|
bg: "bg-status-warning-bg/10",
|
|
50
|
-
text: "text-status-warning-text",
|
|
50
|
+
text: "text-[var(--color-status-warning-text)]",
|
|
51
51
|
icon: /* @__PURE__ */ t("svg", {
|
|
52
52
|
className: o[r],
|
|
53
53
|
fill: "none",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSinkStatusBadge.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkStatusBadge.tsx"],"sourcesContent":["/**\n * DataSink Status Badge\n *\n * Display badge showing DataSink status with icon and color coding.\n */\n\nimport { memo, type ReactNode } from 'react';\nimport type { DataSinkStatus } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkStatusBadgeProps {\n /** DataSink status */\n status: DataSinkStatus;\n /** Badge size */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to show icon */\n showIcon?: boolean;\n}\n\ninterface StatusConfig {\n bg: string;\n text: string;\n icon: ReactNode;\n label: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkStatusBadge = memo(function DataSinkStatusBadge({\n status,\n size = 'md',\n showIcon = true,\n}: DataSinkStatusBadgeProps) {\n const sizeClasses: Record<string, string> = {\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 const iconSizes: Record<string, string> = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n };\n\n const statusConfigs: Record<DataSinkStatus, StatusConfig> = {\n ready: {\n bg: 'bg-status-success-bg/10',\n text: 'text-status-success-text',\n icon: (\n <svg className={iconSizes[size]} 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 label: 'Ready',\n },\n error: {\n bg: 'bg-status-error-bg/10',\n text: 'text-status-error-text',\n icon: (\n <svg className={iconSizes[size]} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n label: 'Error',\n },\n stale: {\n bg: 'bg-status-warning-bg/10',\n text: 'text-status-warning-text',\n icon: (\n <svg className={iconSizes[size]} 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 label: 'Stale',\n },\n refreshing: {\n bg: 'bg-action-primary-bg/10',\n text: 'text-action-primary-bg',\n icon: (\n <svg className={`${iconSizes[size]} animate-spin`} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\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 label: 'Refreshing',\n },\n };\n\n const config = statusConfigs[status];\n\n if (!config) {\n return null;\n }\n\n return (\n <span\n className={`\n inline-flex items-center gap-1.5\n ${sizeClasses[size]}\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 DataSinkStatusBadge;\n"],"mappings":";;;AAiCA,IAAa,IAAsB,EAAK,SAA6B,EACnE,WACA,UAAO,MACP,cAAW,MACgB;CAC3B,IAAM,IAAsC;EAC1C,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EAEK,IAAoC;EACxC,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EA4DK,IA1DsD;EAC1D,OAAO;GACL,IAAI;GACJ,MAAM;GACN,MACE,kBAAC,OAAD;IAAK,WAAW,EAAU;IAAO,MAAK;IAAO,QAAO;IAAe,SAAQ;cACzE,kBAAC,QAAD;KAAM,eAAc;KAAQ,gBAAe;KAAQ,aAAa;KAAG,GAAE;KAAmB,CAAA;IACpF,CAAA;GAER,OAAO;GACR;EACD,OAAO;GACL,IAAI;GACJ,MAAM;GACN,MACE,kBAAC,OAAD;IAAK,WAAW,EAAU;IAAO,MAAK;IAAO,QAAO;IAAe,SAAQ;cACzE,kBAAC,QAAD;KACE,eAAc;KACd,gBAAe;KACf,aAAa;KACb,GAAE;KACF,CAAA;IACE,CAAA;GAER,OAAO;GACR;EACD,OAAO;GACL,IAAI;GACJ,MAAM;GACN,MACE,kBAAC,OAAD;IAAK,WAAW,EAAU;IAAO,MAAK;IAAO,QAAO;IAAe,SAAQ;cACzE,kBAAC,QAAD;KACE,eAAc;KACd,gBAAe;KACf,aAAa;KACb,GAAE;KACF,CAAA;IACE,CAAA;GAER,OAAO;GACR;EACD,YAAY;GACV,IAAI;GACJ,MAAM;GACN,MACE,kBAAC,OAAD;IAAK,WAAW,GAAG,EAAU,GAAM;IAAgB,MAAK;IAAO,QAAO;IAAe,SAAQ;cAC3F,kBAAC,QAAD;KACE,eAAc;KACd,gBAAe;KACf,aAAa;KACb,GAAE;KACF,CAAA;IACE,CAAA;GAER,OAAO;GACR;EACF,CAE4B;AAM7B,QAJK,IAKH,kBAAC,QAAD;EACE,WAAW;;UAEP,EAAY,GAAM;UAClB,EAAO,GAAG;UACV,EAAO,KAAK;;;;YALlB,CAUG,KAAY,EAAO,MACpB,kBAAC,QAAD,EAAA,UAAO,EAAO,OAAa,CAAA,CACtB;MAhBA;EAkBT"}
|
|
1
|
+
{"version":3,"file":"DataSinkStatusBadge.js","names":[],"sources":["../../../../src/bigconsole/components/datasink/DataSinkStatusBadge.tsx"],"sourcesContent":["/**\n * DataSink Status Badge\n *\n * Display badge showing DataSink status with icon and color coding.\n */\n\nimport { memo, type ReactNode } from 'react';\nimport type { DataSinkStatus } from '../../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface DataSinkStatusBadgeProps {\n /** DataSink status */\n status: DataSinkStatus;\n /** Badge size */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to show icon */\n showIcon?: boolean;\n}\n\ninterface StatusConfig {\n bg: string;\n text: string;\n icon: ReactNode;\n label: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const DataSinkStatusBadge = memo(function DataSinkStatusBadge({\n status,\n size = 'md',\n showIcon = true,\n}: DataSinkStatusBadgeProps) {\n const sizeClasses: Record<string, string> = {\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 const iconSizes: Record<string, string> = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n };\n\n const statusConfigs: Record<DataSinkStatus, StatusConfig> = {\n ready: {\n bg: 'bg-status-success-bg/10',\n text: 'text-status-success-text',\n icon: (\n <svg className={iconSizes[size]} 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 label: 'Ready',\n },\n error: {\n bg: 'bg-status-error-bg/10',\n text: 'text-status-error-text',\n icon: (\n <svg className={iconSizes[size]} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n label: 'Error',\n },\n stale: {\n bg: 'bg-status-warning-bg/10',\n text: 'text-[var(--color-status-warning-text)]',\n icon: (\n <svg className={iconSizes[size]} 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 label: 'Stale',\n },\n refreshing: {\n bg: 'bg-action-primary-bg/10',\n text: 'text-action-primary-bg',\n icon: (\n <svg className={`${iconSizes[size]} animate-spin`} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\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 label: 'Refreshing',\n },\n };\n\n const config = statusConfigs[status];\n\n if (!config) {\n return null;\n }\n\n return (\n <span\n className={`\n inline-flex items-center gap-1.5\n ${sizeClasses[size]}\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 DataSinkStatusBadge;\n"],"mappings":";;;AAiCA,IAAa,IAAsB,EAAK,SAA6B,EACnE,WACA,UAAO,MACP,cAAW,MACgB;CAC3B,IAAM,IAAsC;EAC1C,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EAEK,IAAoC;EACxC,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EA4DK,IA1DsD;EAC1D,OAAO;GACL,IAAI;GACJ,MAAM;GACN,MACE,kBAAC,OAAD;IAAK,WAAW,EAAU;IAAO,MAAK;IAAO,QAAO;IAAe,SAAQ;cACzE,kBAAC,QAAD;KAAM,eAAc;KAAQ,gBAAe;KAAQ,aAAa;KAAG,GAAE;KAAmB,CAAA;IACpF,CAAA;GAER,OAAO;GACR;EACD,OAAO;GACL,IAAI;GACJ,MAAM;GACN,MACE,kBAAC,OAAD;IAAK,WAAW,EAAU;IAAO,MAAK;IAAO,QAAO;IAAe,SAAQ;cACzE,kBAAC,QAAD;KACE,eAAc;KACd,gBAAe;KACf,aAAa;KACb,GAAE;KACF,CAAA;IACE,CAAA;GAER,OAAO;GACR;EACD,OAAO;GACL,IAAI;GACJ,MAAM;GACN,MACE,kBAAC,OAAD;IAAK,WAAW,EAAU;IAAO,MAAK;IAAO,QAAO;IAAe,SAAQ;cACzE,kBAAC,QAAD;KACE,eAAc;KACd,gBAAe;KACf,aAAa;KACb,GAAE;KACF,CAAA;IACE,CAAA;GAER,OAAO;GACR;EACD,YAAY;GACV,IAAI;GACJ,MAAM;GACN,MACE,kBAAC,OAAD;IAAK,WAAW,GAAG,EAAU,GAAM;IAAgB,MAAK;IAAO,QAAO;IAAe,SAAQ;cAC3F,kBAAC,QAAD;KACE,eAAc;KACd,gBAAe;KACf,aAAa;KACb,GAAE;KACF,CAAA;IACE,CAAA;GAER,OAAO;GACR;EACF,CAE4B;AAM7B,QAJK,IAKH,kBAAC,QAAD;EACE,WAAW;;UAEP,EAAY,GAAM;UAClB,EAAO,GAAG;UACV,EAAO,KAAK;;;;YALlB,CAUG,KAAY,EAAO,MACpB,kBAAC,QAAD,EAAA,UAAO,EAAO,OAAa,CAAA,CACtB;MAhBA;EAkBT"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import "../common/sectionStyles.js";
|
|
2
|
+
import "../common/index.js";
|
|
1
3
|
import { memo as e, useCallback as t, useMemo as n, useState as r } from "react";
|
|
2
4
|
import { ChevronLeft as i, ChevronRight as a, ChevronsLeft as o, ChevronsRight as s, Settings2 as c, X as l } from "lucide-react";
|
|
3
5
|
import { Button as u } from "@burdenoff/fe-libs/ui";
|
|
@@ -58,13 +60,13 @@ var w = e(function({ data: e, maxHeight: w = "400px" }) {
|
|
|
58
60
|
O(null), A(!1);
|
|
59
61
|
}, []);
|
|
60
62
|
return j.length === 0 ? /* @__PURE__ */ d("div", {
|
|
61
|
-
className: "flex items-center justify-center p-8 text-text-
|
|
63
|
+
className: "flex items-center justify-center p-8 text-center text-sm text-text-secondary",
|
|
62
64
|
children: "No tabular data available. Data must be an array of objects for table view."
|
|
63
65
|
}) : /* @__PURE__ */ f("div", {
|
|
64
|
-
className: "relative",
|
|
66
|
+
className: "relative min-w-0",
|
|
65
67
|
children: [
|
|
66
68
|
/* @__PURE__ */ f("div", {
|
|
67
|
-
className: "flex items-center justify-between
|
|
69
|
+
className: "mb-control-gap flex flex-wrap items-center justify-between gap-control-gap",
|
|
68
70
|
children: [/* @__PURE__ */ f("span", {
|
|
69
71
|
className: "text-xs text-text-secondary",
|
|
70
72
|
children: [
|
|
@@ -73,38 +75,37 @@ var w = e(function({ data: e, maxHeight: w = "400px" }) {
|
|
|
73
75
|
N.length,
|
|
74
76
|
" columns"
|
|
75
77
|
]
|
|
76
|
-
}), /* @__PURE__ */ d(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
children: /* @__PURE__ */ d(c, { className: "w-4 h-4" })
|
|
83
|
-
})
|
|
78
|
+
}), /* @__PURE__ */ d(u, {
|
|
79
|
+
variant: "ghost",
|
|
80
|
+
size: "sm",
|
|
81
|
+
onClick: () => A((e) => !e),
|
|
82
|
+
"aria-label": "Select columns",
|
|
83
|
+
children: /* @__PURE__ */ d(c, { className: "w-4 h-4" })
|
|
84
84
|
})]
|
|
85
85
|
}),
|
|
86
86
|
k && /* @__PURE__ */ f("div", {
|
|
87
|
-
className: "absolute right-0 top-10 z-10
|
|
87
|
+
className: "absolute right-0 top-10 z-10 max-h-[300px] w-56 max-w-[calc(100vw-2rem)] overflow-auto rounded-card border border-[var(--color-border-subtle)] bg-bg-surface p-3 shadow-[var(--shadow-elevation-2)]",
|
|
88
88
|
children: [/* @__PURE__ */ f("div", {
|
|
89
|
-
className: "flex items-center justify-between
|
|
89
|
+
className: "mb-2 flex items-center justify-between gap-control-gap",
|
|
90
90
|
children: [/* @__PURE__ */ d("span", {
|
|
91
91
|
className: "text-xs font-medium text-text-primary",
|
|
92
|
-
children: "Select
|
|
92
|
+
children: "Select columns"
|
|
93
93
|
}), /* @__PURE__ */ d(u, {
|
|
94
94
|
variant: "ghost",
|
|
95
95
|
size: "sm",
|
|
96
96
|
onClick: L,
|
|
97
|
+
"aria-label": "Reset columns",
|
|
97
98
|
children: /* @__PURE__ */ d(l, { className: "w-3 h-3" })
|
|
98
99
|
})]
|
|
99
100
|
}), /* @__PURE__ */ d("div", {
|
|
100
101
|
className: "space-y-1",
|
|
101
102
|
children: M.map((e) => /* @__PURE__ */ f("label", {
|
|
102
|
-
className: "flex items-center gap-2 text-xs text-text-secondary hover:text-text-primary
|
|
103
|
+
className: "flex min-h-[var(--size-controlHeight-md)] cursor-pointer items-center gap-2 text-xs text-text-secondary hover:text-text-primary",
|
|
103
104
|
children: [/* @__PURE__ */ d("input", {
|
|
104
105
|
type: "checkbox",
|
|
105
106
|
checked: !D || D.includes(e.key),
|
|
106
107
|
onChange: () => I(e.key),
|
|
107
|
-
className: "rounded border-border-default"
|
|
108
|
+
className: "rounded border-[var(--color-border-default)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-bg-surface"
|
|
108
109
|
}), /* @__PURE__ */ d("span", {
|
|
109
110
|
className: "truncate",
|
|
110
111
|
title: e.key,
|
|
@@ -114,7 +115,7 @@ var w = e(function({ data: e, maxHeight: w = "400px" }) {
|
|
|
114
115
|
})]
|
|
115
116
|
}),
|
|
116
117
|
/* @__PURE__ */ d("div", {
|
|
117
|
-
className: "overflow-auto",
|
|
118
|
+
className: "min-w-0 overflow-auto rounded-input border border-[var(--color-border-subtle)]",
|
|
118
119
|
style: { maxHeight: w },
|
|
119
120
|
children: /* @__PURE__ */ f(p, { children: [/* @__PURE__ */ d(_, { children: /* @__PURE__ */ d(v, { children: N.map((e) => /* @__PURE__ */ d(g, {
|
|
120
121
|
title: e.path,
|
|
@@ -122,7 +123,7 @@ var w = e(function({ data: e, maxHeight: w = "400px" }) {
|
|
|
122
123
|
}, e.key)) }) }), /* @__PURE__ */ d(m, { children: P.map((e, t) => /* @__PURE__ */ d(v, { children: N.map((t) => /* @__PURE__ */ d(h, { children: C(S(e, t.path)) }, t.key)) }, t)) })] })
|
|
123
124
|
}),
|
|
124
125
|
F > 1 && /* @__PURE__ */ f("div", {
|
|
125
|
-
className: "flex items-center justify-between
|
|
126
|
+
className: "mt-control-gap flex flex-wrap items-center justify-between gap-control-gap",
|
|
126
127
|
children: [/* @__PURE__ */ f("span", {
|
|
127
128
|
className: "text-xs text-text-secondary",
|
|
128
129
|
children: [
|
|
@@ -132,7 +133,7 @@ var w = e(function({ data: e, maxHeight: w = "400px" }) {
|
|
|
132
133
|
F
|
|
133
134
|
]
|
|
134
135
|
}), /* @__PURE__ */ f("div", {
|
|
135
|
-
className: "flex items-center gap-1",
|
|
136
|
+
className: "flex flex-wrap items-center gap-1",
|
|
136
137
|
children: [
|
|
137
138
|
/* @__PURE__ */ d(u, {
|
|
138
139
|
variant: "ghost",
|