@burdenoff/microfe-bigconsole 2026.805.3 → 2026.812.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +135 -97
- 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 +209 -193
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js +213 -231
- 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 +109 -102
- package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +81 -70
- 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 +25 -23
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +3 -3
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +5 -3
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +1 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +170 -284
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +1 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +147 -151
- 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/SavedViewsDropdown/SavedViewsDropdown.js +17 -8
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.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/TemplateSetupBanner.js +26 -58
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +1 -1
- package/dist/bigconsole/components/dashboard/WidgetPalette.js +307 -231
- package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +1 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js +29 -29
- 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 -56
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +1 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +75 -65
- 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/ImportDataSinkDialog.js +263 -243
- 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 +33 -26
- 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 +154 -123
- 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 +235 -275
- 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 +191 -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 -106
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +1 -1
- package/dist/bigconsole/components/preview/AiPreviewPanel.js +193 -152
- 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 +342 -308
- package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +1 -1
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +262 -238
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +1 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.js +783 -867
- 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/WidgetRegistry.js +4 -4
- package/dist/bigconsole/components/widgets/WidgetRegistry.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 +2 -2
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.js +11 -5
- package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.js +19 -15
- package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +1 -1
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +154 -102
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +1 -1
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.js +36 -32
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.js.map +1 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +85 -60
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js +64 -35
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.js +46 -45
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.js.map +1 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +35 -24
- 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 +4 -4
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js +153 -90
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.js +8 -2
- 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 +14 -4
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js +112 -89
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +21 -13
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +1 -1
- package/dist/bigconsole/components/widgets/metric-card/index.js +4 -4
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +3 -3
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +1 -1
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +34 -25
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +1 -1
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.js +129 -114
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.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 +10 -4
- 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/utils/targetProgress.js +13 -0
- package/dist/bigconsole/components/widgets/utils/targetProgress.js.map +1 -0
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +112 -85
- 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 +6 -4
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -1
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +360 -338
- 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 +209 -203
- package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DashboardViewPage.js +126 -120
- package/dist/bigconsole/pages/DashboardViewPage.js.map +1 -1
- package/dist/bigconsole/pages/DashboardsPage.js +838 -800
- package/dist/bigconsole/pages/DashboardsPage.js.map +1 -1
- package/dist/bigconsole/pages/DataParsersPage.js +263 -315
- package/dist/bigconsole/pages/DataParsersPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js +301 -341
- package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/DataSinkViewPage.js +346 -339
- 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 +7 -2
- 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 +887 -740
- package/dist/bigconsole/pages/InsightsPage.js.map +1 -1
- package/dist/bigconsole/pages/ParserBuilderPage.js +679 -637
- package/dist/bigconsole/pages/ParserBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/ParserViewPage.js +368 -342
- package/dist/bigconsole/pages/ParserViewPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.js +537 -444
- package/dist/bigconsole/pages/PipelineBuilderPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelineViewPage.js +412 -377
- package/dist/bigconsole/pages/PipelineViewPage.js.map +1 -1
- package/dist/bigconsole/pages/PipelinesPage.js +248 -298
- package/dist/bigconsole/pages/PipelinesPage.js.map +1 -1
- package/dist/bigconsole/pages/WidgetDemoPage.js +251 -153
- package/dist/bigconsole/pages/WidgetDemoPage.js.map +1 -1
- package/dist/bigconsole/pages/WorkflowViewPage.js +381 -371
- package/dist/bigconsole/pages/WorkflowViewPage.js.map +1 -1
- package/dist/bigconsole/pages/WorkflowsPage.js +171 -286
- package/dist/bigconsole/pages/WorkflowsPage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import e from "
|
|
1
|
+
import { Section as e, SectionStack as t } from "../common/Section.js";
|
|
2
|
+
import "../common/index.js";
|
|
3
|
+
import n from "../../hooks/useExportDashboard.js";
|
|
2
4
|
import "../../hooks/index.js";
|
|
3
|
-
import { memo as
|
|
4
|
-
import { Check as
|
|
5
|
-
import { Dialog as
|
|
6
|
-
import { Fragment as
|
|
5
|
+
import { memo as r, useCallback as i, useEffect as a, useState as o } from "react";
|
|
6
|
+
import { Check as s, Download as c, FileJson as l } from "lucide-react";
|
|
7
|
+
import { Dialog as u, DialogContent as d, DialogDescription as f, DialogTitle as p, Spinner as m } from "@burdenoff/fe-libs/ui";
|
|
8
|
+
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
7
9
|
//#region src/bigconsole/components/dashboard/ExportDashboardDialog.tsx
|
|
8
|
-
var
|
|
10
|
+
var v = {
|
|
9
11
|
dialogContent: {
|
|
10
12
|
maxWidth: "450px",
|
|
11
13
|
width: "95vw",
|
|
@@ -18,7 +20,7 @@ var g = {
|
|
|
18
20
|
alignItems: "center",
|
|
19
21
|
gap: "12px",
|
|
20
22
|
padding: "20px 24px",
|
|
21
|
-
borderBottom: "1px solid var(--color-border)",
|
|
23
|
+
borderBottom: "1px solid var(--color-border-subtle)",
|
|
22
24
|
backgroundColor: "var(--color-bg-sunken)"
|
|
23
25
|
},
|
|
24
26
|
iconWrapper: {
|
|
@@ -45,34 +47,6 @@ var g = {
|
|
|
45
47
|
margin: "4px 0 0 0"
|
|
46
48
|
},
|
|
47
49
|
content: { padding: "20px 24px" },
|
|
48
|
-
dashboardInfo: {
|
|
49
|
-
padding: "12px 16px",
|
|
50
|
-
backgroundColor: "var(--color-bg-muted)",
|
|
51
|
-
borderRadius: "8px",
|
|
52
|
-
marginBottom: "20px"
|
|
53
|
-
},
|
|
54
|
-
dashboardLabel: {
|
|
55
|
-
fontSize: "12px",
|
|
56
|
-
color: "var(--color-text-secondary)",
|
|
57
|
-
margin: 0
|
|
58
|
-
},
|
|
59
|
-
dashboardName: {
|
|
60
|
-
fontSize: "14px",
|
|
61
|
-
fontWeight: 500,
|
|
62
|
-
color: "var(--color-text-primary)",
|
|
63
|
-
margin: "4px 0 0 0",
|
|
64
|
-
overflow: "hidden",
|
|
65
|
-
textOverflow: "ellipsis",
|
|
66
|
-
whiteSpace: "nowrap"
|
|
67
|
-
},
|
|
68
|
-
optionsTitle: {
|
|
69
|
-
fontSize: "13px",
|
|
70
|
-
fontWeight: 600,
|
|
71
|
-
color: "var(--color-text-secondary)",
|
|
72
|
-
marginBottom: "16px",
|
|
73
|
-
textTransform: "uppercase",
|
|
74
|
-
letterSpacing: "0.05em"
|
|
75
|
-
},
|
|
76
50
|
optionItem: {
|
|
77
51
|
display: "flex",
|
|
78
52
|
alignItems: "flex-start",
|
|
@@ -81,7 +55,7 @@ var g = {
|
|
|
81
55
|
borderRadius: "8px",
|
|
82
56
|
marginBottom: "8px",
|
|
83
57
|
backgroundColor: "var(--color-bg-sunken)",
|
|
84
|
-
border: "1px solid var(--color-border)",
|
|
58
|
+
border: "1px solid var(--color-border-subtle)",
|
|
85
59
|
cursor: "pointer",
|
|
86
60
|
transition: "all 0.15s ease"
|
|
87
61
|
},
|
|
@@ -93,7 +67,7 @@ var g = {
|
|
|
93
67
|
width: "20px",
|
|
94
68
|
height: "20px",
|
|
95
69
|
borderRadius: "4px",
|
|
96
|
-
border: "2px solid var(--color-border)",
|
|
70
|
+
border: "2px solid var(--color-border-subtle)",
|
|
97
71
|
display: "flex",
|
|
98
72
|
alignItems: "center",
|
|
99
73
|
justifyContent: "center",
|
|
@@ -118,24 +92,12 @@ var g = {
|
|
|
118
92
|
color: "var(--color-text-secondary)",
|
|
119
93
|
margin: "4px 0 0 0"
|
|
120
94
|
},
|
|
121
|
-
error: {
|
|
122
|
-
padding: "12px 16px",
|
|
123
|
-
backgroundColor: "var(--color-status-error-bgSubtle)",
|
|
124
|
-
border: "1px solid var(--color-status-error-border)",
|
|
125
|
-
borderRadius: "8px",
|
|
126
|
-
marginTop: "16px"
|
|
127
|
-
},
|
|
128
|
-
errorText: {
|
|
129
|
-
fontSize: "13px",
|
|
130
|
-
color: "var(--color-status-error-text)",
|
|
131
|
-
margin: 0
|
|
132
|
-
},
|
|
133
95
|
footer: {
|
|
134
96
|
display: "flex",
|
|
135
97
|
justifyContent: "flex-end",
|
|
136
98
|
gap: "12px",
|
|
137
99
|
padding: "16px 24px",
|
|
138
|
-
borderTop: "1px solid var(--color-border)",
|
|
100
|
+
borderTop: "1px solid var(--color-border-subtle)",
|
|
139
101
|
backgroundColor: "var(--color-bg-sunken)"
|
|
140
102
|
},
|
|
141
103
|
cancelButton: {
|
|
@@ -143,7 +105,7 @@ var g = {
|
|
|
143
105
|
fontSize: "14px",
|
|
144
106
|
fontWeight: 500,
|
|
145
107
|
borderRadius: "8px",
|
|
146
|
-
border: "1px solid var(--color-border)",
|
|
108
|
+
border: "1px solid var(--color-border-subtle)",
|
|
147
109
|
backgroundColor: "var(--color-bg-surface)",
|
|
148
110
|
color: "var(--color-text-secondary)",
|
|
149
111
|
cursor: "pointer",
|
|
@@ -168,141 +130,145 @@ var g = {
|
|
|
168
130
|
opacity: .5,
|
|
169
131
|
cursor: "not-allowed"
|
|
170
132
|
}
|
|
171
|
-
},
|
|
172
|
-
return /* @__PURE__ */
|
|
133
|
+
}, y = r(function({ checked: e, onChange: t, disabled: n, label: r, description: i }) {
|
|
134
|
+
return /* @__PURE__ */ _("div", {
|
|
173
135
|
style: {
|
|
174
|
-
...
|
|
175
|
-
...e ?
|
|
136
|
+
...v.optionItem,
|
|
137
|
+
...e ? v.optionItemActive : {},
|
|
176
138
|
opacity: n ? .6 : 1,
|
|
177
139
|
cursor: n ? "not-allowed" : "pointer"
|
|
178
140
|
},
|
|
179
141
|
onClick: () => !n && t(!e),
|
|
180
|
-
children: [/* @__PURE__ */
|
|
142
|
+
children: [/* @__PURE__ */ g("div", {
|
|
181
143
|
style: {
|
|
182
|
-
...
|
|
183
|
-
...e ?
|
|
144
|
+
...v.checkbox,
|
|
145
|
+
...e ? v.checkboxChecked : {}
|
|
184
146
|
},
|
|
185
|
-
children: e && /* @__PURE__ */
|
|
147
|
+
children: e && /* @__PURE__ */ g(s, { style: {
|
|
186
148
|
width: "14px",
|
|
187
149
|
height: "14px",
|
|
188
150
|
color: "var(--color-action-primary-text)"
|
|
189
151
|
} })
|
|
190
|
-
}), /* @__PURE__ */
|
|
191
|
-
style:
|
|
192
|
-
children: [/* @__PURE__ */
|
|
193
|
-
style:
|
|
152
|
+
}), /* @__PURE__ */ _("div", {
|
|
153
|
+
style: v.optionText,
|
|
154
|
+
children: [/* @__PURE__ */ g("p", {
|
|
155
|
+
style: v.optionLabel,
|
|
194
156
|
children: r
|
|
195
|
-
}), /* @__PURE__ */
|
|
196
|
-
style:
|
|
157
|
+
}), /* @__PURE__ */ g("p", {
|
|
158
|
+
style: v.optionDescription,
|
|
197
159
|
children: i
|
|
198
160
|
})]
|
|
199
161
|
})]
|
|
200
162
|
});
|
|
201
|
-
}),
|
|
202
|
-
let [
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}, [
|
|
206
|
-
let
|
|
207
|
-
|
|
208
|
-
includeDataSourceRefs:
|
|
209
|
-
includeWebhookMappings:
|
|
210
|
-
prettyPrint:
|
|
211
|
-
}) && (
|
|
163
|
+
}), b = r(function({ isOpen: r, dashboardId: s, dashboardName: b, onClose: x, onSuccess: S }) {
|
|
164
|
+
let [C, w] = o(!0), [T, E] = o(!1), [D, O] = o(!0), { loading: k, error: A, downloadDashboard: j, clearError: M } = n();
|
|
165
|
+
a(() => {
|
|
166
|
+
r && (w(!0), E(!1), O(!0), M());
|
|
167
|
+
}, [r, M]);
|
|
168
|
+
let N = i(async () => {
|
|
169
|
+
s && await j(s, b, {
|
|
170
|
+
includeDataSourceRefs: C,
|
|
171
|
+
includeWebhookMappings: T,
|
|
172
|
+
prettyPrint: D
|
|
173
|
+
}) && (S?.(), x());
|
|
212
174
|
}, [
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
x,
|
|
175
|
+
s,
|
|
176
|
+
b,
|
|
216
177
|
C,
|
|
217
178
|
T,
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
179
|
+
D,
|
|
180
|
+
j,
|
|
181
|
+
S,
|
|
182
|
+
x
|
|
221
183
|
]);
|
|
222
|
-
return
|
|
223
|
-
open:
|
|
224
|
-
onOpenChange: (e) => !e && !
|
|
225
|
-
children: /* @__PURE__ */
|
|
226
|
-
style:
|
|
184
|
+
return s ? /* @__PURE__ */ g(u, {
|
|
185
|
+
open: r,
|
|
186
|
+
onOpenChange: (e) => !e && !k && x(),
|
|
187
|
+
children: /* @__PURE__ */ _(d, {
|
|
188
|
+
style: v.dialogContent,
|
|
227
189
|
children: [
|
|
228
|
-
/* @__PURE__ */
|
|
229
|
-
style:
|
|
230
|
-
children: [/* @__PURE__ */
|
|
231
|
-
style:
|
|
232
|
-
children: /* @__PURE__ */
|
|
190
|
+
/* @__PURE__ */ _("div", {
|
|
191
|
+
style: v.header,
|
|
192
|
+
children: [/* @__PURE__ */ g("div", {
|
|
193
|
+
style: v.iconWrapper,
|
|
194
|
+
children: /* @__PURE__ */ g(l, { style: {
|
|
233
195
|
width: "22px",
|
|
234
196
|
height: "22px"
|
|
235
197
|
} })
|
|
236
|
-
}), /* @__PURE__ */
|
|
237
|
-
style:
|
|
238
|
-
children: [/* @__PURE__ */
|
|
198
|
+
}), /* @__PURE__ */ _("div", {
|
|
199
|
+
style: v.headerText,
|
|
200
|
+
children: [/* @__PURE__ */ g(p, {
|
|
239
201
|
asChild: !0,
|
|
240
|
-
children: /* @__PURE__ */
|
|
241
|
-
style:
|
|
202
|
+
children: /* @__PURE__ */ g("h2", {
|
|
203
|
+
style: v.title,
|
|
242
204
|
children: "Export Dashboard"
|
|
243
205
|
})
|
|
244
|
-
}), /* @__PURE__ */
|
|
206
|
+
}), /* @__PURE__ */ g(f, {
|
|
245
207
|
asChild: !0,
|
|
246
|
-
children: /* @__PURE__ */
|
|
247
|
-
style:
|
|
208
|
+
children: /* @__PURE__ */ g("p", {
|
|
209
|
+
style: v.description,
|
|
248
210
|
children: "Export your dashboard configuration to a JSON file."
|
|
249
211
|
})
|
|
250
212
|
})]
|
|
251
213
|
})]
|
|
252
214
|
}),
|
|
253
|
-
/* @__PURE__ */
|
|
254
|
-
style:
|
|
255
|
-
children: [
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
children: v
|
|
264
|
-
})]
|
|
265
|
-
}),
|
|
266
|
-
/* @__PURE__ */ m("p", {
|
|
267
|
-
style: g.optionsTitle,
|
|
268
|
-
children: "Export Options"
|
|
215
|
+
/* @__PURE__ */ g("div", {
|
|
216
|
+
style: v.content,
|
|
217
|
+
children: /* @__PURE__ */ _(t, { children: [
|
|
218
|
+
b && /* @__PURE__ */ g(e, {
|
|
219
|
+
headingLevel: 3,
|
|
220
|
+
emphasis: "muted",
|
|
221
|
+
padding: "compact",
|
|
222
|
+
title: "Exporting",
|
|
223
|
+
description: b,
|
|
224
|
+
"data-testid": "export-target"
|
|
269
225
|
}),
|
|
270
|
-
/* @__PURE__ */
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
226
|
+
/* @__PURE__ */ _(e, {
|
|
227
|
+
headingLevel: 3,
|
|
228
|
+
title: "Export options",
|
|
229
|
+
description: "What to include in the JSON file.",
|
|
230
|
+
"data-testid": "export-options",
|
|
231
|
+
bodyClassName: "flex flex-col gap-form-gap",
|
|
232
|
+
children: [
|
|
233
|
+
/* @__PURE__ */ g(y, {
|
|
234
|
+
checked: C,
|
|
235
|
+
onChange: w,
|
|
236
|
+
disabled: k,
|
|
237
|
+
label: "Include Data Source References",
|
|
238
|
+
description: "Store data source names for reference (IDs are not transferred)"
|
|
239
|
+
}),
|
|
240
|
+
/* @__PURE__ */ g(y, {
|
|
241
|
+
checked: T,
|
|
242
|
+
onChange: E,
|
|
243
|
+
disabled: k,
|
|
244
|
+
label: "Include Webhook Mappings",
|
|
245
|
+
description: "Export webhook configurations (URLs will need to be reconfigured)"
|
|
246
|
+
}),
|
|
247
|
+
/* @__PURE__ */ g(y, {
|
|
248
|
+
checked: D,
|
|
249
|
+
onChange: O,
|
|
250
|
+
disabled: k,
|
|
251
|
+
label: "Format JSON (Pretty Print)",
|
|
252
|
+
description: "Makes the export file human-readable (larger file size)"
|
|
253
|
+
})
|
|
254
|
+
]
|
|
276
255
|
}),
|
|
277
|
-
/* @__PURE__ */
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
description:
|
|
283
|
-
|
|
284
|
-
/* @__PURE__ */ m(_, {
|
|
285
|
-
checked: T,
|
|
286
|
-
onChange: E,
|
|
287
|
-
disabled: D,
|
|
288
|
-
label: "Format JSON (Pretty Print)",
|
|
289
|
-
description: "Makes the export file human-readable (larger file size)"
|
|
290
|
-
}),
|
|
291
|
-
O && /* @__PURE__ */ m("div", {
|
|
292
|
-
style: g.error,
|
|
293
|
-
children: /* @__PURE__ */ m("p", {
|
|
294
|
-
style: g.errorText,
|
|
295
|
-
children: O.message
|
|
296
|
-
})
|
|
256
|
+
A && /* @__PURE__ */ g(e, {
|
|
257
|
+
headingLevel: 3,
|
|
258
|
+
tone: "danger",
|
|
259
|
+
padding: "compact",
|
|
260
|
+
title: "Export failed",
|
|
261
|
+
description: A.message,
|
|
262
|
+
"data-testid": "export-error"
|
|
297
263
|
})
|
|
298
|
-
]
|
|
264
|
+
] })
|
|
299
265
|
}),
|
|
300
|
-
/* @__PURE__ */
|
|
301
|
-
style:
|
|
302
|
-
children: [/* @__PURE__ */
|
|
303
|
-
style:
|
|
304
|
-
onClick:
|
|
305
|
-
disabled:
|
|
266
|
+
/* @__PURE__ */ _("div", {
|
|
267
|
+
style: v.footer,
|
|
268
|
+
children: [/* @__PURE__ */ g("button", {
|
|
269
|
+
style: v.cancelButton,
|
|
270
|
+
onClick: x,
|
|
271
|
+
disabled: k,
|
|
306
272
|
onMouseEnter: (e) => {
|
|
307
273
|
e.currentTarget.style.backgroundColor = "var(--color-bg-muted)";
|
|
308
274
|
},
|
|
@@ -310,23 +276,23 @@ var g = {
|
|
|
310
276
|
e.currentTarget.style.backgroundColor = "var(--color-bg-surface)";
|
|
311
277
|
},
|
|
312
278
|
children: "Cancel"
|
|
313
|
-
}), /* @__PURE__ */
|
|
279
|
+
}), /* @__PURE__ */ g("button", {
|
|
314
280
|
style: {
|
|
315
|
-
...
|
|
316
|
-
...
|
|
281
|
+
...v.exportButton,
|
|
282
|
+
...k ? v.exportButtonDisabled : {}
|
|
317
283
|
},
|
|
318
|
-
onClick:
|
|
319
|
-
disabled:
|
|
284
|
+
onClick: N,
|
|
285
|
+
disabled: k,
|
|
320
286
|
onMouseEnter: (e) => {
|
|
321
|
-
|
|
287
|
+
k || (e.currentTarget.style.opacity = "0.9");
|
|
322
288
|
},
|
|
323
289
|
onMouseLeave: (e) => {
|
|
324
|
-
|
|
290
|
+
k || (e.currentTarget.style.opacity = "1");
|
|
325
291
|
},
|
|
326
|
-
children:
|
|
292
|
+
children: k ? /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(m, { style: {
|
|
327
293
|
width: "16px",
|
|
328
294
|
height: "16px"
|
|
329
|
-
} }), "Exporting..."] }) : /* @__PURE__ */ h
|
|
295
|
+
} }), "Exporting..."] }) : /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(c, { style: {
|
|
330
296
|
width: "16px",
|
|
331
297
|
height: "16px"
|
|
332
298
|
} }), "Download Export"] })
|
|
@@ -337,6 +303,6 @@ var g = {
|
|
|
337
303
|
}) : null;
|
|
338
304
|
});
|
|
339
305
|
//#endregion
|
|
340
|
-
export {
|
|
306
|
+
export { b as default };
|
|
341
307
|
|
|
342
308
|
//# sourceMappingURL=ExportDashboardDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportDashboardDialog.js","names":[],"sources":["../../../../src/bigconsole/components/dashboard/ExportDashboardDialog.tsx"],"sourcesContent":["/**\n * ExportDashboardDialog Component\n *\n * Modal dialog for exporting a dashboard to JSON.\n * Uses inline styles for consistent styling across environments.\n */\n\nimport { type FC, memo, useState, useCallback, useEffect } from 'react';\nimport { Dialog, DialogContent, DialogTitle, DialogDescription } from '@burdenoff/fe-libs/ui';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { Download, FileJson, Check } from 'lucide-react';\nimport { useExportDashboard, type ExportDashboardOptions } from '../../hooks';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ExportDashboardDialogProps {\n /** Whether dialog is open */\n isOpen: boolean;\n /** Dashboard ID to export */\n dashboardId: string | null;\n /** Dashboard name for filename */\n dashboardName?: string;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when export succeeds */\n onSuccess?: () => void;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst styles = {\n dialogContent: {\n maxWidth: '450px',\n width: '95vw',\n padding: 0,\n borderRadius: '12px',\n overflow: 'hidden',\n } as React.CSSProperties,\n header: {\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '20px 24px',\n borderBottom: '1px solid var(--color-border)',\n backgroundColor: 'var(--color-bg-sunken)',\n } as React.CSSProperties,\n iconWrapper: {\n width: '44px',\n height: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '10px',\n backgroundColor: 'var(--color-action-primary-bg)',\n color: 'var(--color-action-primary-text)',\n flexShrink: 0,\n } as React.CSSProperties,\n headerText: {\n flex: 1,\n } as React.CSSProperties,\n title: {\n fontSize: '16px',\n fontWeight: 600,\n color: 'var(--color-text-primary)',\n margin: 0,\n } as React.CSSProperties,\n description: {\n fontSize: '13px',\n color: 'var(--color-text-secondary)',\n margin: '4px 0 0 0',\n } as React.CSSProperties,\n content: {\n padding: '20px 24px',\n } as React.CSSProperties,\n dashboardInfo: {\n padding: '12px 16px',\n backgroundColor: 'var(--color-bg-muted)',\n borderRadius: '8px',\n marginBottom: '20px',\n } as React.CSSProperties,\n dashboardLabel: {\n fontSize: '12px',\n color: 'var(--color-text-secondary)',\n margin: 0,\n } as React.CSSProperties,\n dashboardName: {\n fontSize: '14px',\n fontWeight: 500,\n color: 'var(--color-text-primary)',\n margin: '4px 0 0 0',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n } as React.CSSProperties,\n optionsTitle: {\n fontSize: '13px',\n fontWeight: 600,\n color: 'var(--color-text-secondary)',\n marginBottom: '16px',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n } as React.CSSProperties,\n optionItem: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: '12px',\n padding: '12px',\n borderRadius: '8px',\n marginBottom: '8px',\n backgroundColor: 'var(--color-bg-sunken)',\n border: '1px solid var(--color-border)',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n } as React.CSSProperties,\n optionItemActive: {\n backgroundColor: 'var(--color-action-primary-bg)',\n borderColor: 'var(--color-action-primary-bg)',\n } as React.CSSProperties,\n checkbox: {\n width: '20px',\n height: '20px',\n borderRadius: '4px',\n border: '2px solid var(--color-border)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n marginTop: '2px',\n transition: 'all 0.15s ease',\n cursor: 'pointer',\n } as React.CSSProperties,\n checkboxChecked: {\n backgroundColor: 'var(--color-action-primary-bg)',\n borderColor: 'var(--color-action-primary-bg)',\n } as React.CSSProperties,\n optionText: {\n flex: 1,\n } as React.CSSProperties,\n optionLabel: {\n fontSize: '14px',\n fontWeight: 500,\n color: 'var(--color-text-primary)',\n margin: 0,\n } as React.CSSProperties,\n optionDescription: {\n fontSize: '12px',\n color: 'var(--color-text-secondary)',\n margin: '4px 0 0 0',\n } as React.CSSProperties,\n error: {\n padding: '12px 16px',\n backgroundColor: 'var(--color-status-error-bgSubtle)',\n border: '1px solid var(--color-status-error-border)',\n borderRadius: '8px',\n marginTop: '16px',\n } as React.CSSProperties,\n errorText: {\n fontSize: '13px',\n color: 'var(--color-status-error-text)',\n margin: 0,\n } as React.CSSProperties,\n footer: {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '12px',\n padding: '16px 24px',\n borderTop: '1px solid var(--color-border)',\n backgroundColor: 'var(--color-bg-sunken)',\n } as React.CSSProperties,\n cancelButton: {\n padding: '10px 20px',\n fontSize: '14px',\n fontWeight: 500,\n borderRadius: '8px',\n border: '1px solid var(--color-border)',\n backgroundColor: 'var(--color-bg-surface)',\n color: 'var(--color-text-secondary)',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n } as React.CSSProperties,\n exportButton: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n fontSize: '14px',\n fontWeight: 500,\n borderRadius: '8px',\n border: 'none',\n backgroundColor: 'var(--color-action-primary-bg)',\n color: 'var(--color-action-primary-text)',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n } as React.CSSProperties,\n exportButtonDisabled: {\n backgroundColor: 'var(--color-action-primary-bg)',\n opacity: 0.5,\n cursor: 'not-allowed',\n } as React.CSSProperties,\n};\n\n// ============================================================================\n// Custom Checkbox Component\n// ============================================================================\n\ninterface CustomCheckboxProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n disabled?: boolean;\n label: string;\n description: string;\n}\n\nconst CustomCheckbox: FC<CustomCheckboxProps> = memo(function CustomCheckbox({\n checked,\n onChange,\n disabled,\n label,\n description,\n}) {\n return (\n <div\n style={{\n ...styles.optionItem,\n ...(checked ? styles.optionItemActive : {}),\n opacity: disabled ? 0.6 : 1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n onClick={() => !disabled && onChange(!checked)}\n >\n <div\n style={{\n ...styles.checkbox,\n ...(checked ? styles.checkboxChecked : {}),\n }}\n >\n {checked && <Check style={{ width: '14px', height: '14px', color: 'var(--color-action-primary-text)' }} />}\n </div>\n <div style={styles.optionText}>\n <p style={styles.optionLabel}>{label}</p>\n <p style={styles.optionDescription}>{description}</p>\n </div>\n </div>\n );\n});\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const ExportDashboardDialog: FC<ExportDashboardDialogProps> = memo(function ExportDashboardDialog({\n isOpen,\n dashboardId,\n dashboardName,\n onClose,\n onSuccess,\n}) {\n const [includeDataSources, setIncludeDataSources] = useState(true);\n const [includeWebhooks, setIncludeWebhooks] = useState(false);\n const [prettyPrint, setPrettyPrint] = useState(true);\n\n const { loading, error, downloadDashboard, clearError } = useExportDashboard();\n\n // Reset state when dialog opens\n useEffect(() => {\n if (isOpen) {\n setIncludeDataSources(true);\n setIncludeWebhooks(false);\n setPrettyPrint(true);\n clearError();\n }\n }, [isOpen, clearError]);\n\n // Handle export\n const handleExport = useCallback(async () => {\n if (!dashboardId) return;\n\n const options: ExportDashboardOptions = {\n includeDataSourceRefs: includeDataSources,\n includeWebhookMappings: includeWebhooks,\n prettyPrint,\n };\n\n const success = await downloadDashboard(dashboardId, dashboardName, options);\n\n if (success) {\n onSuccess?.();\n onClose();\n }\n }, [\n dashboardId,\n dashboardName,\n includeDataSources,\n includeWebhooks,\n prettyPrint,\n downloadDashboard,\n onSuccess,\n onClose,\n ]);\n\n // Don't render if no dashboard\n if (!dashboardId) return null;\n\n return (\n <Dialog open={isOpen} onOpenChange={(open) => !open && !loading && onClose()}>\n <DialogContent style={styles.dialogContent}>\n {/* Header */}\n <div style={styles.header}>\n <div style={styles.iconWrapper}>\n <FileJson style={{ width: '22px', height: '22px' }} />\n </div>\n <div style={styles.headerText}>\n <DialogTitle asChild>\n <h2 style={styles.title}>Export Dashboard</h2>\n </DialogTitle>\n <DialogDescription asChild>\n <p style={styles.description}>Export your dashboard configuration to a JSON file.</p>\n </DialogDescription>\n </div>\n </div>\n\n {/* Content */}\n <div style={styles.content}>\n {/* Dashboard Info */}\n {dashboardName && (\n <div style={styles.dashboardInfo}>\n <p style={styles.dashboardLabel}>Exporting:</p>\n <p style={styles.dashboardName}>{dashboardName}</p>\n </div>\n )}\n\n {/* Options */}\n <p style={styles.optionsTitle}>Export Options</p>\n\n <CustomCheckbox\n checked={includeDataSources}\n onChange={setIncludeDataSources}\n disabled={loading}\n label=\"Include Data Source References\"\n description=\"Store data source names for reference (IDs are not transferred)\"\n />\n\n <CustomCheckbox\n checked={includeWebhooks}\n onChange={setIncludeWebhooks}\n disabled={loading}\n label=\"Include Webhook Mappings\"\n description=\"Export webhook configurations (URLs will need to be reconfigured)\"\n />\n\n <CustomCheckbox\n checked={prettyPrint}\n onChange={setPrettyPrint}\n disabled={loading}\n label=\"Format JSON (Pretty Print)\"\n description=\"Makes the export file human-readable (larger file size)\"\n />\n\n {/* Error */}\n {error && (\n <div style={styles.error}>\n <p style={styles.errorText}>{error.message}</p>\n </div>\n )}\n </div>\n\n {/* Footer */}\n <div style={styles.footer}>\n <button\n style={styles.cancelButton}\n onClick={onClose}\n disabled={loading}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-bg-muted)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-bg-surface)';\n }}\n >\n Cancel\n </button>\n <button\n style={{\n ...styles.exportButton,\n ...(loading ? styles.exportButtonDisabled : {}),\n }}\n onClick={handleExport}\n disabled={loading}\n onMouseEnter={(e) => {\n if (!loading) e.currentTarget.style.opacity = '0.9';\n }}\n onMouseLeave={(e) => {\n if (!loading) e.currentTarget.style.opacity = '1';\n }}\n >\n {loading ? (\n <>\n <Spinner style={{ width: '16px', height: '16px' }} />\n Exporting...\n </>\n ) : (\n <>\n <Download style={{ width: '16px', height: '16px' }} />\n Download Export\n </>\n )}\n </button>\n </div>\n </DialogContent>\n </Dialog>\n );\n});\n\nexport default ExportDashboardDialog;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExportDashboardDialog.js","names":[],"sources":["../../../../src/bigconsole/components/dashboard/ExportDashboardDialog.tsx"],"sourcesContent":["/**\n * ExportDashboardDialog Component\n *\n * Modal dialog for exporting a dashboard to JSON.\n * Uses inline styles for consistent styling across environments.\n */\n\nimport { type FC, memo, useState, useCallback, useEffect } from 'react';\nimport { Dialog, DialogContent, DialogTitle, DialogDescription } from '@burdenoff/fe-libs/ui';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport { Download, FileJson, Check } from 'lucide-react';\nimport { Section, SectionStack } from '../common';\nimport { useExportDashboard, type ExportDashboardOptions } from '../../hooks';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface ExportDashboardDialogProps {\n /** Whether dialog is open */\n isOpen: boolean;\n /** Dashboard ID to export */\n dashboardId: string | null;\n /** Dashboard name for filename */\n dashboardName?: string;\n /** Callback when dialog is closed */\n onClose: () => void;\n /** Callback when export succeeds */\n onSuccess?: () => void;\n}\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst styles = {\n dialogContent: {\n maxWidth: '450px',\n width: '95vw',\n padding: 0,\n borderRadius: '12px',\n overflow: 'hidden',\n } as React.CSSProperties,\n header: {\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '20px 24px',\n borderBottom: '1px solid var(--color-border-subtle)',\n backgroundColor: 'var(--color-bg-sunken)',\n } as React.CSSProperties,\n iconWrapper: {\n width: '44px',\n height: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '10px',\n backgroundColor: 'var(--color-action-primary-bg)',\n color: 'var(--color-action-primary-text)',\n flexShrink: 0,\n } as React.CSSProperties,\n headerText: {\n flex: 1,\n } as React.CSSProperties,\n title: {\n fontSize: '16px',\n fontWeight: 600,\n color: 'var(--color-text-primary)',\n margin: 0,\n } as React.CSSProperties,\n description: {\n fontSize: '13px',\n color: 'var(--color-text-secondary)',\n margin: '4px 0 0 0',\n } as React.CSSProperties,\n content: {\n padding: '20px 24px',\n } as React.CSSProperties,\n optionItem: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: '12px',\n padding: '12px',\n borderRadius: '8px',\n marginBottom: '8px',\n backgroundColor: 'var(--color-bg-sunken)',\n border: '1px solid var(--color-border-subtle)',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n } as React.CSSProperties,\n optionItemActive: {\n backgroundColor: 'var(--color-action-primary-bg)',\n borderColor: 'var(--color-action-primary-bg)',\n } as React.CSSProperties,\n checkbox: {\n width: '20px',\n height: '20px',\n borderRadius: '4px',\n border: '2px solid var(--color-border-subtle)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n marginTop: '2px',\n transition: 'all 0.15s ease',\n cursor: 'pointer',\n } as React.CSSProperties,\n checkboxChecked: {\n backgroundColor: 'var(--color-action-primary-bg)',\n borderColor: 'var(--color-action-primary-bg)',\n } as React.CSSProperties,\n optionText: {\n flex: 1,\n } as React.CSSProperties,\n optionLabel: {\n fontSize: '14px',\n fontWeight: 500,\n color: 'var(--color-text-primary)',\n margin: 0,\n } as React.CSSProperties,\n optionDescription: {\n fontSize: '12px',\n color: 'var(--color-text-secondary)',\n margin: '4px 0 0 0',\n } as React.CSSProperties,\n footer: {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '12px',\n padding: '16px 24px',\n borderTop: '1px solid var(--color-border-subtle)',\n backgroundColor: 'var(--color-bg-sunken)',\n } as React.CSSProperties,\n cancelButton: {\n padding: '10px 20px',\n fontSize: '14px',\n fontWeight: 500,\n borderRadius: '8px',\n border: '1px solid var(--color-border-subtle)',\n backgroundColor: 'var(--color-bg-surface)',\n color: 'var(--color-text-secondary)',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n } as React.CSSProperties,\n exportButton: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n padding: '10px 20px',\n fontSize: '14px',\n fontWeight: 500,\n borderRadius: '8px',\n border: 'none',\n backgroundColor: 'var(--color-action-primary-bg)',\n color: 'var(--color-action-primary-text)',\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n } as React.CSSProperties,\n exportButtonDisabled: {\n backgroundColor: 'var(--color-action-primary-bg)',\n opacity: 0.5,\n cursor: 'not-allowed',\n } as React.CSSProperties,\n};\n\n// ============================================================================\n// Custom Checkbox Component\n// ============================================================================\n\ninterface CustomCheckboxProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n disabled?: boolean;\n label: string;\n description: string;\n}\n\nconst CustomCheckbox: FC<CustomCheckboxProps> = memo(function CustomCheckbox({\n checked,\n onChange,\n disabled,\n label,\n description,\n}) {\n return (\n <div\n style={{\n ...styles.optionItem,\n ...(checked ? styles.optionItemActive : {}),\n opacity: disabled ? 0.6 : 1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n onClick={() => !disabled && onChange(!checked)}\n >\n <div\n style={{\n ...styles.checkbox,\n ...(checked ? styles.checkboxChecked : {}),\n }}\n >\n {checked && <Check style={{ width: '14px', height: '14px', color: 'var(--color-action-primary-text)' }} />}\n </div>\n <div style={styles.optionText}>\n <p style={styles.optionLabel}>{label}</p>\n <p style={styles.optionDescription}>{description}</p>\n </div>\n </div>\n );\n});\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const ExportDashboardDialog: FC<ExportDashboardDialogProps> = memo(function ExportDashboardDialog({\n isOpen,\n dashboardId,\n dashboardName,\n onClose,\n onSuccess,\n}) {\n const [includeDataSources, setIncludeDataSources] = useState(true);\n const [includeWebhooks, setIncludeWebhooks] = useState(false);\n const [prettyPrint, setPrettyPrint] = useState(true);\n\n const { loading, error, downloadDashboard, clearError } = useExportDashboard();\n\n // Reset state when dialog opens\n useEffect(() => {\n if (isOpen) {\n setIncludeDataSources(true);\n setIncludeWebhooks(false);\n setPrettyPrint(true);\n clearError();\n }\n }, [isOpen, clearError]);\n\n // Handle export\n const handleExport = useCallback(async () => {\n if (!dashboardId) return;\n\n const options: ExportDashboardOptions = {\n includeDataSourceRefs: includeDataSources,\n includeWebhookMappings: includeWebhooks,\n prettyPrint,\n };\n\n const success = await downloadDashboard(dashboardId, dashboardName, options);\n\n if (success) {\n onSuccess?.();\n onClose();\n }\n }, [\n dashboardId,\n dashboardName,\n includeDataSources,\n includeWebhooks,\n prettyPrint,\n downloadDashboard,\n onSuccess,\n onClose,\n ]);\n\n // Don't render if no dashboard\n if (!dashboardId) return null;\n\n return (\n <Dialog open={isOpen} onOpenChange={(open) => !open && !loading && onClose()}>\n <DialogContent style={styles.dialogContent}>\n {/* Header */}\n <div style={styles.header}>\n <div style={styles.iconWrapper}>\n <FileJson style={{ width: '22px', height: '22px' }} />\n </div>\n <div style={styles.headerText}>\n <DialogTitle asChild>\n <h2 style={styles.title}>Export Dashboard</h2>\n </DialogTitle>\n <DialogDescription asChild>\n <p style={styles.description}>Export your dashboard configuration to a JSON file.</p>\n </DialogDescription>\n </div>\n </div>\n\n {/* Content */}\n <div style={styles.content}>\n <SectionStack>\n {/* What is being exported — supporting context, recessed. */}\n {dashboardName && (\n <Section\n headingLevel={3}\n emphasis=\"muted\"\n padding=\"compact\"\n title=\"Exporting\"\n description={dashboardName}\n data-testid=\"export-target\"\n />\n )}\n\n {/* The choices you actually make here — one bounded group instead of\n a floating label above three unbounded rows. */}\n <Section\n headingLevel={3}\n title=\"Export options\"\n description=\"What to include in the JSON file.\"\n data-testid=\"export-options\"\n bodyClassName=\"flex flex-col gap-form-gap\"\n >\n <CustomCheckbox\n checked={includeDataSources}\n onChange={setIncludeDataSources}\n disabled={loading}\n label=\"Include Data Source References\"\n description=\"Store data source names for reference (IDs are not transferred)\"\n />\n\n <CustomCheckbox\n checked={includeWebhooks}\n onChange={setIncludeWebhooks}\n disabled={loading}\n label=\"Include Webhook Mappings\"\n description=\"Export webhook configurations (URLs will need to be reconfigured)\"\n />\n\n <CustomCheckbox\n checked={prettyPrint}\n onChange={setPrettyPrint}\n disabled={loading}\n label=\"Format JSON (Pretty Print)\"\n description=\"Makes the export file human-readable (larger file size)\"\n />\n </Section>\n\n {/* Error */}\n {error && (\n <Section\n headingLevel={3}\n tone=\"danger\"\n padding=\"compact\"\n title=\"Export failed\"\n description={error.message}\n data-testid=\"export-error\"\n />\n )}\n </SectionStack>\n </div>\n\n {/* Footer */}\n <div style={styles.footer}>\n <button\n style={styles.cancelButton}\n onClick={onClose}\n disabled={loading}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-bg-muted)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'var(--color-bg-surface)';\n }}\n >\n Cancel\n </button>\n <button\n style={{\n ...styles.exportButton,\n ...(loading ? styles.exportButtonDisabled : {}),\n }}\n onClick={handleExport}\n disabled={loading}\n onMouseEnter={(e) => {\n if (!loading) e.currentTarget.style.opacity = '0.9';\n }}\n onMouseLeave={(e) => {\n if (!loading) e.currentTarget.style.opacity = '1';\n }}\n >\n {loading ? (\n <>\n <Spinner style={{ width: '16px', height: '16px' }} />\n Exporting...\n </>\n ) : (\n <>\n <Download style={{ width: '16px', height: '16px' }} />\n Download Export\n </>\n )}\n </button>\n </div>\n </DialogContent>\n </Dialog>\n );\n});\n\nexport default ExportDashboardDialog;\n"],"mappings":"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"}
|
|
@@ -76,37 +76,37 @@ function d({ filter: u, value: d, onChange: p, onEdit: m, onDelete: h }) {
|
|
|
76
76
|
position: "relative",
|
|
77
77
|
display: "inline-flex",
|
|
78
78
|
alignItems: "center",
|
|
79
|
-
gap: "
|
|
80
|
-
padding: "
|
|
81
|
-
backgroundColor: w ?
|
|
82
|
-
border: `
|
|
83
|
-
borderRadius: "
|
|
84
|
-
fontSize: "
|
|
79
|
+
gap: "var(--space-iconGap)",
|
|
80
|
+
padding: "0 var(--space-controlGap)",
|
|
81
|
+
backgroundColor: w ? "var(--color-bg-accentSubtle)" : "var(--color-bg-surface)",
|
|
82
|
+
border: `1px solid ${w ? "var(--color-action-primary-border)" : "var(--color-border-subtle)"}`,
|
|
83
|
+
borderRadius: "var(--radius-pill)",
|
|
84
|
+
fontSize: "var(--font-size-body-sm)",
|
|
85
85
|
cursor: "pointer",
|
|
86
86
|
userSelect: "none",
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
transition: "background-color 0.15s ease, border-color 0.15s ease",
|
|
88
|
+
minHeight: "var(--size-controlHeight-md)",
|
|
89
|
+
maxWidth: "100%"
|
|
90
90
|
},
|
|
91
91
|
children: [
|
|
92
92
|
/* @__PURE__ */ o("span", {
|
|
93
93
|
style: {
|
|
94
|
-
fontWeight:
|
|
95
|
-
color:
|
|
96
|
-
fontSize: "
|
|
94
|
+
fontWeight: "var(--font-weight-semibold)",
|
|
95
|
+
color: "var(--color-text-primary)",
|
|
96
|
+
fontSize: "var(--font-size-body-sm)"
|
|
97
97
|
},
|
|
98
98
|
onClick: () => v(!_),
|
|
99
99
|
children: [u.name, ":"]
|
|
100
100
|
}),
|
|
101
101
|
/* @__PURE__ */ a("span", {
|
|
102
102
|
style: {
|
|
103
|
-
color: w ?
|
|
104
|
-
maxWidth: "200px",
|
|
103
|
+
color: w ? "var(--color-text-primary)" : "var(--color-text-secondary)",
|
|
104
|
+
maxWidth: "min(200px, 45vw)",
|
|
105
105
|
overflow: "hidden",
|
|
106
106
|
textOverflow: "ellipsis",
|
|
107
107
|
whiteSpace: "nowrap",
|
|
108
|
-
fontWeight:
|
|
109
|
-
fontSize: "
|
|
108
|
+
fontWeight: "var(--font-weight-medium)",
|
|
109
|
+
fontSize: "var(--font-size-body-sm)"
|
|
110
110
|
},
|
|
111
111
|
onClick: () => v(!_),
|
|
112
112
|
children: T
|
|
@@ -130,7 +130,7 @@ function d({ filter: u, value: d, onChange: p, onEdit: m, onDelete: h }) {
|
|
|
130
130
|
fontSize: "14px",
|
|
131
131
|
fontWeight: "bold",
|
|
132
132
|
marginLeft: "4px",
|
|
133
|
-
boxShadow: "
|
|
133
|
+
boxShadow: "var(--shadow-elevation-1)"
|
|
134
134
|
},
|
|
135
135
|
title: g("bigconsole.filters.chip.action.clear", "Clear filter"),
|
|
136
136
|
children: "×"
|
|
@@ -154,7 +154,7 @@ function d({ filter: u, value: d, onChange: p, onEdit: m, onDelete: h }) {
|
|
|
154
154
|
fontSize: "16px",
|
|
155
155
|
fontWeight: "bold",
|
|
156
156
|
marginLeft: "4px",
|
|
157
|
-
boxShadow: "
|
|
157
|
+
boxShadow: "var(--shadow-elevation-1)"
|
|
158
158
|
},
|
|
159
159
|
title: g("bigconsole.filters.chip.action.options", "Filter options"),
|
|
160
160
|
children: "⋮"
|
|
@@ -186,11 +186,12 @@ function d({ filter: u, value: d, onChange: p, onEdit: m, onDelete: h }) {
|
|
|
186
186
|
top: "100%",
|
|
187
187
|
right: 0,
|
|
188
188
|
marginTop: "8px",
|
|
189
|
-
minWidth: "150px",
|
|
189
|
+
minWidth: "min(150px, calc(100vw - 2rem))",
|
|
190
|
+
maxWidth: "calc(100vw - 2rem)",
|
|
190
191
|
backgroundColor: C.bgPrimary,
|
|
191
192
|
border: `1px solid ${C.borderDefault}`,
|
|
192
193
|
borderRadius: "8px",
|
|
193
|
-
boxShadow: "
|
|
194
|
+
boxShadow: "var(--shadow-elevation-3)",
|
|
194
195
|
zIndex: 99999,
|
|
195
196
|
overflow: "hidden"
|
|
196
197
|
},
|
|
@@ -256,12 +257,13 @@ function f({ filter: e, value: t, onChange: l, onClose: u }) {
|
|
|
256
257
|
top: "100%",
|
|
257
258
|
left: 0,
|
|
258
259
|
marginTop: "8px",
|
|
259
|
-
minWidth: "280px",
|
|
260
|
+
minWidth: "min(280px, calc(100vw - 2rem))",
|
|
261
|
+
maxWidth: "calc(100vw - 2rem)",
|
|
260
262
|
padding: "16px",
|
|
261
263
|
backgroundColor: m.bgPrimary,
|
|
262
264
|
border: `1px solid ${m.borderDefault}`,
|
|
263
265
|
borderRadius: "12px",
|
|
264
|
-
boxShadow: "
|
|
266
|
+
boxShadow: "var(--shadow-elevation-3)",
|
|
265
267
|
zIndex: 99999
|
|
266
268
|
},
|
|
267
269
|
onClick: (e) => e.stopPropagation(),
|
|
@@ -436,7 +438,7 @@ function f({ filter: e, value: t, onChange: l, onClose: u }) {
|
|
|
436
438
|
borderRadius: "6px",
|
|
437
439
|
cursor: "pointer",
|
|
438
440
|
fontWeight: 500,
|
|
439
|
-
boxShadow: "
|
|
441
|
+
boxShadow: "var(--shadow-elevation-1)"
|
|
440
442
|
},
|
|
441
443
|
children: d("bigconsole.filters.chip.editor.apply", "Apply")
|
|
442
444
|
})]
|