@burdenoff/microfe-bigconsole 2026.1008.13 → 2026.1009.10
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/README.md +3 -0
- package/dist/bigconsole/AdminRoot.d.ts +0 -1
- package/dist/bigconsole/AdminRoot.js +0 -2
- package/dist/bigconsole/AdminRoutes.d.ts +0 -1
- package/dist/bigconsole/AdminRoutes.js +0 -2
- package/dist/bigconsole/BigConsoleRoot.d.ts +0 -1
- package/dist/bigconsole/BigConsoleRoot.js +0 -2
- package/dist/bigconsole/BigConsoleRoutes.d.ts +0 -1
- package/dist/bigconsole/BigConsoleRoutes.js +0 -2
- package/dist/bigconsole/assistant/assistantApi.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantApi.js +0 -2
- package/dist/bigconsole/assistant/assistantProduct.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantProduct.js +0 -2
- package/dist/bigconsole/assistant/assistantPrompt.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantPrompt.js +0 -2
- package/dist/bigconsole/assistant/assistantRunPersistence.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantRunPersistence.js +0 -2
- package/dist/bigconsole/assistant/assistantRunStore.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantRunStore.js +0 -2
- package/dist/bigconsole/assistant/assistantRuntime.d.ts +0 -1
- package/dist/bigconsole/assistant/assistantRuntime.js +0 -2
- package/dist/bigconsole/assistant/attachmentExtract.d.ts +0 -1
- package/dist/bigconsole/assistant/attachmentExtract.js +0 -2
- package/dist/bigconsole/assistant/conversationHistoryApi.d.ts +0 -1
- package/dist/bigconsole/assistant/conversationHistoryApi.js +0 -2
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.d.ts +0 -1
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.js +0 -2
- package/dist/bigconsole/assistant/displayCopy.d.ts +0 -1
- package/dist/bigconsole/assistant/index.d.ts +0 -1
- package/dist/bigconsole/assistant/modes.d.ts +0 -1
- package/dist/bigconsole/assistant/modes.js +0 -2
- package/dist/bigconsole/assistant/pageContext.d.ts +0 -1
- package/dist/bigconsole/assistant/pageContext.js +0 -2
- package/dist/bigconsole/assistant/pageControls.d.ts +81 -0
- package/dist/bigconsole/assistant/pageControls.js +169 -0
- package/dist/bigconsole/assistant/previewControl.d.ts +16 -0
- package/dist/bigconsole/assistant/previewControl.js +10 -0
- package/dist/bigconsole/assistant/previewController.d.ts +0 -1
- package/dist/bigconsole/assistant/previewController.js +0 -2
- package/dist/bigconsole/assistant/previewMutationResult.d.ts +0 -1
- package/dist/bigconsole/assistant/previewMutationResult.js +0 -2
- package/dist/bigconsole/assistant/previewRunAction.d.ts +0 -1
- package/dist/bigconsole/assistant/previewRunAction.js +0 -2
- package/dist/bigconsole/assistant/product.d.ts +0 -1
- package/dist/bigconsole/assistant/product.js +0 -2
- package/dist/bigconsole/assistant/recordAdapters.d.ts +0 -1
- package/dist/bigconsole/assistant/recordAdapters.js +0 -2
- package/dist/bigconsole/assistant/types.d.ts +0 -1
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.d.ts +0 -1
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.js +0 -2
- package/dist/bigconsole/assistant/usePreviewControl.d.ts +2 -0
- package/dist/bigconsole/assistant/usePreviewControl.js +20 -0
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.d.ts +0 -1
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.js +0 -2
- package/dist/bigconsole/components/DrilldownDashboardRenderer.d.ts +0 -1
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js +0 -2
- package/dist/bigconsole/components/DrilldownModal.d.ts +0 -1
- package/dist/bigconsole/components/DrilldownModal.js +0 -2
- package/dist/bigconsole/components/builder/BuilderCanvas.d.ts +0 -1
- package/dist/bigconsole/components/builder/BuilderCanvas.js +0 -2
- package/dist/bigconsole/components/builder/BuilderTopbar.d.ts +0 -1
- package/dist/bigconsole/components/builder/BuilderTopbar.js +0 -2
- package/dist/bigconsole/components/builder/DashboardEditorShell.d.ts +0 -1
- package/dist/bigconsole/components/builder/DashboardEditorShell.js +0 -2
- package/dist/bigconsole/components/builder/WidgetInspector.d.ts +0 -1
- package/dist/bigconsole/components/builder/WidgetInspector.js +0 -2
- package/dist/bigconsole/components/builder/index.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/GeneralSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/GeneralSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/LayoutSection.d.ts +0 -1
- package/dist/bigconsole/components/builder/inspector/LayoutSection.js +0 -2
- package/dist/bigconsole/components/builder/inspector/index.d.ts +0 -1
- package/dist/bigconsole/components/common/Section.d.ts +0 -1
- package/dist/bigconsole/components/common/Section.js +0 -2
- package/dist/bigconsole/components/common/SortBySelect.d.ts +11 -0
- package/dist/bigconsole/components/common/SortBySelect.js +29 -0
- package/dist/bigconsole/components/common/index.d.ts +1 -1
- package/dist/bigconsole/components/common/index.js +1 -0
- package/dist/bigconsole/components/common/sectionStyles.d.ts +0 -1
- package/dist/bigconsole/components/common/sectionStyles.js +0 -2
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js +0 -2
- package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.js +0 -2
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.js +0 -2
- package/dist/bigconsole/components/dashboard/DashboardToolbar.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DashboardToolbar.js +0 -2
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js +0 -2
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js +0 -2
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.js +0 -2
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.js +0 -2
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js +0 -2
- package/dist/bigconsole/components/dashboard/PageTabsManager/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js +0 -2
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js +0 -2
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js +0 -2
- package/dist/bigconsole/components/dashboard/ShareDialog/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js +0 -2
- package/dist/bigconsole/components/dashboard/TemplateInstallOptions.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js +0 -2
- package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js +0 -2
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplatePicker/index.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js +0 -2
- package/dist/bigconsole/components/dashboard/WidgetPalette.d.ts +0 -1
- package/dist/bigconsole/components/dashboard/WidgetPalette.js +0 -2
- package/dist/bigconsole/components/dashboard/index.d.ts +0 -1
- package/dist/bigconsole/components/datasink/AlertExecutionHistory.d.ts +0 -1
- package/dist/bigconsole/components/datasink/AlertExecutionHistory.js +0 -2
- package/dist/bigconsole/components/datasink/AlertRuleEditor.d.ts +0 -1
- package/dist/bigconsole/components/datasink/AlertRuleEditor.js +0 -2
- package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts +0 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js +0 -2
- package/dist/bigconsole/components/datasink/ConfigurationForm.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataPreviewPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkCard.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkCard.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkRefreshConfig.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js +0 -2
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.d.ts +0 -1
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.js +0 -2
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js +0 -2
- package/dist/bigconsole/components/datasink/FluidGridsPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js +0 -2
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.d.ts +0 -1
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js +0 -2
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.js +0 -2
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js +0 -2
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.d.ts +0 -1
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.js +0 -2
- package/dist/bigconsole/components/datasink/SetupStateBadge.d.ts +0 -1
- package/dist/bigconsole/components/datasink/SetupStateBadge.js +0 -2
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.d.ts +0 -1
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js +0 -2
- package/dist/bigconsole/components/datasink/index.d.ts +0 -1
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.d.ts +0 -1
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.js +0 -2
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.d.ts +0 -1
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.js +0 -2
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.d.ts +0 -1
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js +0 -2
- package/dist/bigconsole/components/embed/drilldown.d.ts +0 -1
- package/dist/bigconsole/components/embed/drilldown.js +0 -2
- package/dist/bigconsole/components/embed/index.d.ts +0 -1
- package/dist/bigconsole/components/embed/renderer-manifest.d.ts +0 -1
- package/dist/bigconsole/components/embed/renderer-manifest.js +0 -2
- package/dist/bigconsole/components/embed/types.d.ts +0 -1
- package/dist/bigconsole/components/embed/types.js +0 -2
- package/dist/bigconsole/components/embed/validate.d.ts +0 -1
- package/dist/bigconsole/components/embed/validate.js +0 -2
- package/dist/bigconsole/components/embed/widgetShim.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgetShim.js +0 -2
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.js +0 -2
- package/dist/bigconsole/components/embed/widgets/FormEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/FormEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/ListEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/ListEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/TableEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/TableEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/TextEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/TextEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.js +0 -2
- package/dist/bigconsole/components/embed/widgets/shared.d.ts +0 -1
- package/dist/bigconsole/components/embed/widgets/shared.js +0 -2
- package/dist/bigconsole/components/overview/DashboardGuide.d.ts +0 -1
- package/dist/bigconsole/components/overview/DashboardGuide.js +0 -2
- package/dist/bigconsole/components/overview/DataHealthCard.d.ts +0 -1
- package/dist/bigconsole/components/overview/DataHealthCard.js +0 -2
- package/dist/bigconsole/components/overview/OverviewQuickActions.d.ts +0 -1
- package/dist/bigconsole/components/overview/OverviewQuickActions.js +0 -2
- package/dist/bigconsole/components/overview/OverviewStatCard.d.ts +0 -1
- package/dist/bigconsole/components/overview/OverviewStatCard.js +0 -2
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.d.ts +0 -1
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.js +0 -2
- package/dist/bigconsole/components/overview/dashboardGuideSteps.d.ts +0 -1
- package/dist/bigconsole/components/overview/dashboardGuideSteps.js +0 -2
- package/dist/bigconsole/components/overview/index.d.ts +0 -1
- package/dist/bigconsole/components/overview/overviewModel.d.ts +0 -1
- package/dist/bigconsole/components/overview/overviewModel.js +0 -2
- package/dist/bigconsole/components/overview/useOverviewData.d.ts +0 -1
- package/dist/bigconsole/components/overview/useOverviewData.js +0 -2
- package/dist/bigconsole/components/parser/DataSinkSelector.d.ts +0 -1
- package/dist/bigconsole/components/parser/DataSinkSelector.js +0 -2
- package/dist/bigconsole/components/parser/ExportParserDialog.d.ts +0 -1
- package/dist/bigconsole/components/parser/ExportParserDialog.js +0 -2
- package/dist/bigconsole/components/parser/ExpressionEditor.d.ts +0 -1
- package/dist/bigconsole/components/parser/ExpressionEditor.js +0 -2
- package/dist/bigconsole/components/parser/ImportParserDialog.d.ts +0 -1
- package/dist/bigconsole/components/parser/ImportParserDialog.js +0 -2
- package/dist/bigconsole/components/parser/ParserBuilder.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserCard.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserCard.js +0 -2
- package/dist/bigconsole/components/parser/ParserFormDialog.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserSelector.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserSelector.js +0 -2
- package/dist/bigconsole/components/parser/ParserStatusBadge.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserStatusBadge.js +0 -2
- package/dist/bigconsole/components/parser/ParserTypeBadge.d.ts +0 -1
- package/dist/bigconsole/components/parser/ParserTypeBadge.js +0 -2
- package/dist/bigconsole/components/parser/TestPanel.d.ts +0 -1
- package/dist/bigconsole/components/parser/index.d.ts +0 -1
- package/dist/bigconsole/components/parser/parserFieldStyles.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.js +0 -2
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js +0 -2
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.js +0 -2
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.d.ts +0 -1
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js +0 -2
- package/dist/bigconsole/components/pipeline/index.d.ts +0 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.d.ts +0 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.js +0 -2
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.d.ts +0 -1
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js +77 -78
- package/dist/bigconsole/components/preview/AiPreviewPanel.d.ts +0 -1
- package/dist/bigconsole/components/preview/AiPreviewPanel.js +96 -97
- package/dist/bigconsole/components/preview/parserPreview.d.ts +0 -1
- package/dist/bigconsole/components/preview/parserPreview.js +0 -2
- package/dist/bigconsole/components/preview/previewShared.d.ts +0 -1
- package/dist/bigconsole/components/preview/previewShared.js +0 -2
- package/dist/bigconsole/components/widgets/ActionConfigDialog.d.ts +0 -1
- package/dist/bigconsole/components/widgets/ActionConfigDialog.js +0 -2
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.d.ts +0 -1
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js +0 -2
- package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts +0 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.js +0 -2
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js +0 -2
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.js +0 -2
- package/dist/bigconsole/components/widgets/WidgetMenu.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetMenu.js +0 -2
- package/dist/bigconsole/components/widgets/WidgetRegistry.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetRegistry.js +0 -2
- package/dist/bigconsole/components/widgets/WidgetTypeSelector.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts +0 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.js +0 -2
- package/dist/bigconsole/components/widgets/actionConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/actionConfig.js +0 -2
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js +0 -2
- package/dist/bigconsole/components/widgets/adaptive-card/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarView.d.ts +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarView.js +0 -2
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js +0 -2
- package/dist/bigconsole/components/widgets/calendar/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.js +0 -2
- package/dist/bigconsole/components/widgets/chart/ChartLegend.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartLegend.js +0 -2
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.js +0 -2
- package/dist/bigconsole/components/widgets/chart/ChartWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartWidget.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.js +0 -2
- package/dist/bigconsole/components/widgets/chart/charts/types.d.ts +0 -1
- package/dist/bigconsole/components/widgets/chart/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.d.ts +0 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.js +0 -2
- package/dist/bigconsole/components/widgets/custom/CustomWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/custom/CustomWidget.js +0 -2
- package/dist/bigconsole/components/widgets/custom/config.d.ts +0 -1
- package/dist/bigconsole/components/widgets/custom/config.js +0 -2
- package/dist/bigconsole/components/widgets/custom/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/custom/utils.d.ts +0 -1
- package/dist/bigconsole/components/widgets/custom/utils.js +0 -2
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.d.ts +0 -1
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js +0 -2
- package/dist/bigconsole/components/widgets/event-logs/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/form/FormWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/form/FormWidget.js +0 -2
- package/dist/bigconsole/components/widgets/form/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/funnel/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/funnel/index.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.d.ts +0 -1
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.d.ts +0 -1
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.js +0 -2
- package/dist/bigconsole/components/widgets/gauge/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +0 -2
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.js +0 -2
- package/dist/bigconsole/components/widgets/heatmap/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js +0 -2
- package/dist/bigconsole/components/widgets/iframe-widget/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanView.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanView.js +0 -2
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js +0 -2
- package/dist/bigconsole/components/widgets/kanban/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/model.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kanban/model.js +0 -2
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.js +0 -2
- package/dist/bigconsole/components/widgets/kpi/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js +0 -2
- package/dist/bigconsole/components/widgets/kpi-comparison/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.js +0 -2
- package/dist/bigconsole/components/widgets/list/ListItem.d.ts +0 -1
- package/dist/bigconsole/components/widgets/list/ListItem.js +0 -2
- package/dist/bigconsole/components/widgets/list/ListWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/list/ListWidget.js +0 -2
- package/dist/bigconsole/components/widgets/list/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.js +0 -2
- package/dist/bigconsole/components/widgets/map-widget/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.d.ts +0 -1
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js +0 -2
- package/dist/bigconsole/components/widgets/metric-card/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js +0 -2
- package/dist/bigconsole/components/widgets/pivot-table/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressBar.d.ts +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressBar.js +0 -2
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.js +0 -2
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.js +0 -2
- package/dist/bigconsole/components/widgets/progress/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.js +0 -2
- package/dist/bigconsole/components/widgets/retention/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts +0 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.js +0 -2
- package/dist/bigconsole/components/widgets/states/ErrorState.d.ts +0 -1
- package/dist/bigconsole/components/widgets/states/ErrorState.js +0 -2
- package/dist/bigconsole/components/widgets/states/LoadingState.d.ts +0 -1
- package/dist/bigconsole/components/widgets/states/LoadingState.js +0 -2
- package/dist/bigconsole/components/widgets/states/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableCell.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableCell.js +0 -2
- package/dist/bigconsole/components/widgets/table/TableConfig.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableConfig.js +0 -2
- package/dist/bigconsole/components/widgets/table/TableHeader.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableHeader.js +0 -2
- package/dist/bigconsole/components/widgets/table/TablePagination.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TablePagination.js +0 -2
- package/dist/bigconsole/components/widgets/table/TableWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/TableWidget.js +0 -2
- package/dist/bigconsole/components/widgets/table/cellLink.d.ts +0 -1
- package/dist/bigconsole/components/widgets/table/cellLink.js +0 -2
- package/dist/bigconsole/components/widgets/table/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.js +0 -2
- package/dist/bigconsole/components/widgets/text-widget/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/text-widget/textData.d.ts +0 -1
- package/dist/bigconsole/components/widgets/text-widget/textData.js +0 -2
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.d.ts +0 -1
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js +0 -2
- package/dist/bigconsole/components/widgets/timeline/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.js +0 -2
- package/dist/bigconsole/components/widgets/utils/inferFields.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/inferFields.js +0 -2
- package/dist/bigconsole/components/widgets/utils/targetProgress.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/targetProgress.js +0 -2
- package/dist/bigconsole/components/widgets/utils/translate.d.ts +0 -1
- package/dist/bigconsole/components/widgets/utils/translate.js +0 -2
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.d.ts +0 -1
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js +0 -2
- package/dist/bigconsole/components/widgets/webhook-config/index.d.ts +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.d.ts +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js +0 -2
- package/dist/bigconsole/components/widgets/widget-actions/index.d.ts +0 -1
- package/dist/bigconsole/components/workflow/DataSinkMultiSelector.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowCard.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowCard.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowOpenGuard.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js +0 -2
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.d.ts +0 -1
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js +0 -2
- package/dist/bigconsole/components/workflow/index.d.ts +0 -1
- package/dist/bigconsole/constants/backendErrors.d.ts +0 -1
- package/dist/bigconsole/constants/backendErrors.js +0 -2
- package/dist/bigconsole/constants.d.ts +0 -1
- package/dist/bigconsole/constants.js +0 -2
- package/dist/bigconsole/context/BigConsoleContext.d.ts +0 -1
- package/dist/bigconsole/context/BigConsoleContext.js +0 -2
- package/dist/bigconsole/context/index.d.ts +0 -1
- package/dist/bigconsole/contexts/CrossFilterContext.d.ts +0 -1
- package/dist/bigconsole/contexts/CrossFilterContext.js +0 -2
- package/dist/bigconsole/contexts/NavigationContext.d.ts +0 -1
- package/dist/bigconsole/contexts/NavigationContext.js +0 -2
- package/dist/bigconsole/contexts/index.d.ts +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.d.ts +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +0 -2
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.d.ts +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +0 -2
- package/dist/bigconsole/customWidget/index.d.ts +0 -1
- package/dist/bigconsole/customWidget/proposalContract.d.ts +0 -1
- package/dist/bigconsole/customWidget/proposalContract.js +0 -2
- package/dist/bigconsole/customWidget/proposalSource.d.ts +0 -1
- package/dist/bigconsole/customWidget/proposalSource.js +0 -2
- package/dist/bigconsole/graphql/apollo-compat.d.ts +0 -1
- package/dist/bigconsole/graphql/storeTemplates.d.ts +0 -1
- package/dist/bigconsole/graphql/storeTemplates.js +0 -2
- package/dist/bigconsole/hooks/index.d.ts +0 -1
- package/dist/bigconsole/hooks/useActivePage.d.ts +0 -1
- package/dist/bigconsole/hooks/useActivePage.js +0 -2
- package/dist/bigconsole/hooks/useAutoRefresh.d.ts +0 -1
- package/dist/bigconsole/hooks/useAutoRefresh.js +0 -2
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.d.ts +0 -1
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.js +0 -2
- package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts +0 -1
- package/dist/bigconsole/hooks/useBigConsoleSettings.js +0 -2
- package/dist/bigconsole/hooks/useCrossFilter.d.ts +0 -1
- package/dist/bigconsole/hooks/useCrossFilter.js +0 -2
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js +0 -2
- package/dist/bigconsole/hooks/useDashboardImageExport.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardImageExport.js +0 -2
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js +0 -2
- package/dist/bigconsole/hooks/useDashboardOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardOperations.js +0 -2
- package/dist/bigconsole/hooks/useDashboardSharing.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardSharing.js +0 -2
- package/dist/bigconsole/hooks/useDashboardTemplates.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardViews.d.ts +0 -1
- package/dist/bigconsole/hooks/useDashboardViews.js +0 -2
- package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts +0 -1
- package/dist/bigconsole/hooks/useDataSinkAlerts.js +0 -2
- package/dist/bigconsole/hooks/useDataSinkOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useDataSinkOperations.js +0 -2
- package/dist/bigconsole/hooks/useDataSinkSubscription.d.ts +0 -1
- package/dist/bigconsole/hooks/useDataSinkSubscription.js +0 -2
- package/dist/bigconsole/hooks/useDrilldown.d.ts +0 -1
- package/dist/bigconsole/hooks/useDrilldown.js +0 -2
- package/dist/bigconsole/hooks/useDrilldownOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useDrilldownOperations.js +0 -2
- package/dist/bigconsole/hooks/useEventLogs.d.ts +0 -1
- package/dist/bigconsole/hooks/useEventLogs.js +0 -2
- package/dist/bigconsole/hooks/useEventWebhooks.d.ts +0 -1
- package/dist/bigconsole/hooks/useEventWebhooks.js +0 -2
- package/dist/bigconsole/hooks/useExportDashboard.d.ts +0 -1
- package/dist/bigconsole/hooks/useExportDashboard.js +0 -2
- package/dist/bigconsole/hooks/useExportDataSink.d.ts +0 -1
- package/dist/bigconsole/hooks/useExportDataSink.js +0 -2
- package/dist/bigconsole/hooks/useExportParser.d.ts +0 -1
- package/dist/bigconsole/hooks/useExportParser.js +0 -2
- package/dist/bigconsole/hooks/useFilterPresets.d.ts +0 -1
- package/dist/bigconsole/hooks/useFilterPresets.js +0 -2
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts +0 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.js +0 -2
- package/dist/bigconsole/hooks/useGlobalFilters.d.ts +0 -1
- package/dist/bigconsole/hooks/useGlobalFilters.js +0 -2
- package/dist/bigconsole/hooks/useImportDashboard.d.ts +0 -1
- package/dist/bigconsole/hooks/useImportDashboard.js +0 -2
- package/dist/bigconsole/hooks/useImportDataSink.d.ts +0 -1
- package/dist/bigconsole/hooks/useImportDataSink.js +0 -2
- package/dist/bigconsole/hooks/useImportParser.d.ts +0 -1
- package/dist/bigconsole/hooks/useImportParser.js +0 -2
- package/dist/bigconsole/hooks/useInstalledWidgets.d.ts +0 -1
- package/dist/bigconsole/hooks/useInstalledWidgets.js +0 -2
- package/dist/bigconsole/hooks/useModalFocusTrap.d.ts +0 -1
- package/dist/bigconsole/hooks/useModalFocusTrap.js +0 -2
- package/dist/bigconsole/hooks/usePageOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/usePageOperations.js +0 -2
- package/dist/bigconsole/hooks/useParserOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useParserOperations.js +0 -2
- package/dist/bigconsole/hooks/usePipelineOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/usePipelineOperations.js +0 -2
- package/dist/bigconsole/hooks/useShareRecipients.d.ts +0 -1
- package/dist/bigconsole/hooks/useShareRecipients.js +0 -2
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.d.ts +0 -1
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.js +0 -2
- package/dist/bigconsole/hooks/useWidgetActions.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetActions.js +0 -2
- package/dist/bigconsole/hooks/useWidgetCatalog.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetCatalog.js +0 -2
- package/dist/bigconsole/hooks/useWidgetComments.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetComments.js +0 -2
- package/dist/bigconsole/hooks/useWidgetConfigPersist.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetConfigPersist.js +0 -2
- package/dist/bigconsole/hooks/useWidgetData.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetData.js +0 -2
- package/dist/bigconsole/hooks/useWidgetEvents.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetEvents.js +0 -2
- package/dist/bigconsole/hooks/useWidgetExport.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetExport.js +0 -2
- package/dist/bigconsole/hooks/useWidgetOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useWidgetOperations.js +0 -2
- package/dist/bigconsole/hooks/useWorkflowOperations.d.ts +0 -1
- package/dist/bigconsole/hooks/useWorkflowOperations.js +0 -2
- package/dist/bigconsole/index.d.ts +0 -1
- package/dist/bigconsole/modules/dashboard/index.d.ts +0 -1
- package/dist/bigconsole/modules/index.d.ts +0 -1
- package/dist/bigconsole/modules/renderer/index.d.ts +0 -1
- package/dist/bigconsole/modules/widget/index.d.ts +0 -1
- package/dist/bigconsole/pages/AdminPage.d.ts +0 -1
- package/dist/bigconsole/pages/AdminPage.js +0 -2
- package/dist/bigconsole/pages/DashboardBuilderPage.d.ts +0 -1
- package/dist/bigconsole/pages/DashboardBuilderPage.js +0 -2
- package/dist/bigconsole/pages/DashboardViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/DashboardViewPage.js +258 -237
- package/dist/bigconsole/pages/DashboardsPage.d.ts +0 -1
- package/dist/bigconsole/pages/DashboardsPage.js +269 -223
- package/dist/bigconsole/pages/DataParsersPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataParsersPage.js +180 -159
- package/dist/bigconsole/pages/DataSinkAlertsPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSinkAlertsPage.js +0 -2
- package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js +0 -2
- package/dist/bigconsole/pages/DataSinkViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSinkViewPage.js +0 -2
- package/dist/bigconsole/pages/DataSinksPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSinksPage.js +274 -240
- package/dist/bigconsole/pages/DataSourcesPage.d.ts +0 -1
- package/dist/bigconsole/pages/DataSourcesPage.js +0 -2
- package/dist/bigconsole/pages/InsightsPage.d.ts +0 -1
- package/dist/bigconsole/pages/InsightsPage.js +0 -2
- package/dist/bigconsole/pages/OverviewPage.d.ts +0 -1
- package/dist/bigconsole/pages/OverviewPage.js +0 -2
- package/dist/bigconsole/pages/ParserBuilderPage.d.ts +0 -1
- package/dist/bigconsole/pages/ParserBuilderPage.js +0 -2
- package/dist/bigconsole/pages/ParserViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/ParserViewPage.js +0 -2
- package/dist/bigconsole/pages/PipelineBuilderPage.d.ts +0 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.js +0 -2
- package/dist/bigconsole/pages/PipelineViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/PipelineViewPage.js +0 -2
- package/dist/bigconsole/pages/PipelinesPage.d.ts +0 -1
- package/dist/bigconsole/pages/PipelinesPage.js +93 -76
- package/dist/bigconsole/pages/SettingsPage.d.ts +0 -1
- package/dist/bigconsole/pages/SettingsPage.js +0 -2
- package/dist/bigconsole/pages/WidgetDemoPage.d.ts +0 -1
- package/dist/bigconsole/pages/WidgetDemoPage.js +0 -2
- package/dist/bigconsole/pages/WorkflowViewPage.d.ts +0 -1
- package/dist/bigconsole/pages/WorkflowViewPage.js +0 -2
- package/dist/bigconsole/pages/WorkflowsPage.d.ts +0 -1
- package/dist/bigconsole/pages/WorkflowsPage.js +0 -2
- package/dist/bigconsole/pages/index.d.ts +0 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.d.ts +0 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.js +0 -2
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.d.ts +0 -1
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js +0 -2
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.d.ts +0 -1
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.js +0 -2
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.d.ts +0 -1
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js +0 -2
- package/dist/bigconsole/renderers/adapters/CustomRenderer.d.ts +0 -1
- package/dist/bigconsole/renderers/adapters/CustomRenderer.js +0 -2
- package/dist/bigconsole/renderers/adapters/index.d.ts +0 -1
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.d.ts +0 -1
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.js +0 -2
- package/dist/bigconsole/renderers/index.d.ts +0 -1
- package/dist/bigconsole/renderers/registry/RendererRegistry.d.ts +0 -1
- package/dist/bigconsole/renderers/registry/RendererRegistry.js +0 -2
- package/dist/bigconsole/renderers/types/index.d.ts +0 -1
- package/dist/bigconsole/renderers/types/renderer.d.ts +0 -1
- package/dist/bigconsole/store/dashboardStore.d.ts +0 -1
- package/dist/bigconsole/store/dashboardStore.js +0 -2
- package/dist/bigconsole/store/dataSinkStore.d.ts +0 -1
- package/dist/bigconsole/store/dataSinkStore.js +0 -2
- package/dist/bigconsole/store/drilldownStore.d.ts +0 -1
- package/dist/bigconsole/store/drilldownStore.js +0 -2
- package/dist/bigconsole/store/index.d.ts +0 -1
- package/dist/bigconsole/store/parserStore.d.ts +0 -1
- package/dist/bigconsole/store/parserStore.js +0 -2
- package/dist/bigconsole/store/pipelineStore.d.ts +0 -1
- package/dist/bigconsole/store/pipelineStore.js +0 -2
- package/dist/bigconsole/store/widgetStore.d.ts +0 -1
- package/dist/bigconsole/store/widgetStore.js +0 -2
- package/dist/bigconsole/store/workflowStore.d.ts +0 -1
- package/dist/bigconsole/store/workflowStore.js +0 -2
- package/dist/bigconsole/types/index.d.ts +0 -1
- package/dist/bigconsole/utils/alertRules.d.ts +0 -1
- package/dist/bigconsole/utils/alertRules.js +0 -2
- package/dist/bigconsole/utils/backendError.d.ts +0 -1
- package/dist/bigconsole/utils/backendError.js +0 -2
- package/dist/bigconsole/utils/createDialogParam.d.ts +0 -1
- package/dist/bigconsole/utils/createDialogParam.js +0 -2
- package/dist/bigconsole/utils/csv.d.ts +0 -1
- package/dist/bigconsole/utils/csv.js +0 -2
- package/dist/bigconsole/utils/dashboardList.d.ts +28 -0
- package/dist/bigconsole/utils/dashboardList.js +15 -0
- package/dist/bigconsole/utils/dashboardTemplateContent.d.ts +0 -1
- package/dist/bigconsole/utils/dashboardTemplateContent.js +0 -2
- package/dist/bigconsole/utils/dataSinkList.d.ts +15 -0
- package/dist/bigconsole/utils/dataSinkList.js +15 -0
- package/dist/bigconsole/utils/drilldownParams.d.ts +0 -1
- package/dist/bigconsole/utils/drilldownParams.js +0 -2
- package/dist/bigconsole/utils/formDirty.d.ts +0 -1
- package/dist/bigconsole/utils/formDirty.js +0 -2
- package/dist/bigconsole/utils/format.d.ts +0 -1
- package/dist/bigconsole/utils/format.js +0 -2
- package/dist/bigconsole/utils/index.d.ts +0 -1
- package/dist/bigconsole/utils/insightsDraft.d.ts +0 -1
- package/dist/bigconsole/utils/insightsDraft.js +0 -2
- package/dist/bigconsole/utils/layoutBaseline.d.ts +0 -1
- package/dist/bigconsole/utils/layoutBaseline.js +0 -2
- package/dist/bigconsole/utils/listSort.d.ts +80 -0
- package/dist/bigconsole/utils/listSort.js +85 -0
- package/dist/bigconsole/utils/quota.d.ts +0 -1
- package/dist/bigconsole/utils/quota.js +0 -2
- package/dist/bigconsole/utils/semanticTokens.d.ts +0 -1
- package/dist/bigconsole/utils/semanticTokens.js +0 -2
- package/dist/bigconsole/utils/templateInstallInputs.d.ts +0 -1
- package/dist/bigconsole/utils/templateInstallInputs.js +0 -2
- package/dist/bigconsole/utils/widgetBinding.d.ts +0 -1
- package/dist/bigconsole/utils/widgetBinding.js +0 -2
- package/dist/bigconsole/utils/widgetFormDirty.d.ts +0 -1
- package/dist/bigconsole/utils/widgetFormDirty.js +0 -2
- package/dist/bigconsole/utils/widgetPositioning.d.ts +0 -1
- package/dist/bigconsole/utils/widgetPositioning.js +0 -2
- package/dist/bigconsole/utils/widgetTypeMapping.d.ts +0 -1
- package/dist/bigconsole/utils/widgetTypeMapping.js +0 -2
- package/dist/bigconsole/workflowOpen.d.ts +0 -1
- package/dist/bigconsole/workflowOpen.js +0 -2
- package/dist/constants/permissions.d.ts +0 -1
- package/dist/constants/permissions.js +0 -2
- package/dist/generated/global-operations.d.ts +0 -1
- package/dist/generated/global-operations.js +0 -2
- package/dist/generated/global-types.d.ts +0 -1
- package/dist/generated/wspace-operations.d.ts +0 -1
- package/dist/generated/wspace-operations.js +0 -2
- package/dist/generated/wspace-types.d.ts +0 -1
- package/dist/generated/wspace-types.js +0 -2
- package/dist/index.d.ts +0 -1
- package/dist/node_modules/@e965/xlsx/xlsx.js +0 -2
- package/dist/node_modules/pdfjs-dist/build/pdf.js +0 -2
- package/dist/shared/hooks/useTr.d.ts +0 -1
- package/dist/shared/hooks/useTr.js +0 -2
- package/dist/translations/en.d.ts +0 -1
- package/dist/utils/nativeBridge.d.ts +0 -1
- package/package.json +5 -4
- package/dist/bigconsole/AdminRoot.d.ts.map +0 -1
- package/dist/bigconsole/AdminRoot.js.map +0 -1
- package/dist/bigconsole/AdminRoutes.d.ts.map +0 -1
- package/dist/bigconsole/AdminRoutes.js.map +0 -1
- package/dist/bigconsole/BigConsoleRoot.d.ts.map +0 -1
- package/dist/bigconsole/BigConsoleRoot.js.map +0 -1
- package/dist/bigconsole/BigConsoleRoutes.d.ts.map +0 -1
- package/dist/bigconsole/BigConsoleRoutes.js.map +0 -1
- package/dist/bigconsole/assistant/assistantApi.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantApi.js.map +0 -1
- package/dist/bigconsole/assistant/assistantProduct.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantProduct.js.map +0 -1
- package/dist/bigconsole/assistant/assistantPrompt.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantPrompt.js.map +0 -1
- package/dist/bigconsole/assistant/assistantRunPersistence.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantRunPersistence.js.map +0 -1
- package/dist/bigconsole/assistant/assistantRunStore.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantRunStore.js.map +0 -1
- package/dist/bigconsole/assistant/assistantRuntime.d.ts.map +0 -1
- package/dist/bigconsole/assistant/assistantRuntime.js.map +0 -1
- package/dist/bigconsole/assistant/attachmentExtract.d.ts.map +0 -1
- package/dist/bigconsole/assistant/attachmentExtract.js.map +0 -1
- package/dist/bigconsole/assistant/conversationHistoryApi.d.ts.map +0 -1
- package/dist/bigconsole/assistant/conversationHistoryApi.js.map +0 -1
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.d.ts.map +0 -1
- package/dist/bigconsole/assistant/createSandboxAssistantTransport.js.map +0 -1
- package/dist/bigconsole/assistant/displayCopy.d.ts.map +0 -1
- package/dist/bigconsole/assistant/index.d.ts.map +0 -1
- package/dist/bigconsole/assistant/modes.d.ts.map +0 -1
- package/dist/bigconsole/assistant/modes.js.map +0 -1
- package/dist/bigconsole/assistant/pageContext.d.ts.map +0 -1
- package/dist/bigconsole/assistant/pageContext.js.map +0 -1
- package/dist/bigconsole/assistant/previewController.d.ts.map +0 -1
- package/dist/bigconsole/assistant/previewController.js.map +0 -1
- package/dist/bigconsole/assistant/previewMutationResult.d.ts.map +0 -1
- package/dist/bigconsole/assistant/previewMutationResult.js.map +0 -1
- package/dist/bigconsole/assistant/previewRunAction.d.ts.map +0 -1
- package/dist/bigconsole/assistant/previewRunAction.js.map +0 -1
- package/dist/bigconsole/assistant/product.d.ts.map +0 -1
- package/dist/bigconsole/assistant/product.js.map +0 -1
- package/dist/bigconsole/assistant/recordAdapters.d.ts.map +0 -1
- package/dist/bigconsole/assistant/recordAdapters.js.map +0 -1
- package/dist/bigconsole/assistant/types.d.ts.map +0 -1
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.d.ts.map +0 -1
- package/dist/bigconsole/assistant/useAssistantRunWorkspace.js.map +0 -1
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.d.ts.map +0 -1
- package/dist/bigconsole/assistant/useWorkspaceWriteAccess.js.map +0 -1
- package/dist/bigconsole/components/DrilldownDashboardRenderer.d.ts.map +0 -1
- package/dist/bigconsole/components/DrilldownDashboardRenderer.js.map +0 -1
- package/dist/bigconsole/components/DrilldownModal.d.ts.map +0 -1
- package/dist/bigconsole/components/DrilldownModal.js.map +0 -1
- package/dist/bigconsole/components/builder/BuilderCanvas.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/BuilderCanvas.js.map +0 -1
- package/dist/bigconsole/components/builder/BuilderTopbar.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/BuilderTopbar.js.map +0 -1
- package/dist/bigconsole/components/builder/DashboardEditorShell.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/DashboardEditorShell.js.map +0 -1
- package/dist/bigconsole/components/builder/WidgetInspector.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/WidgetInspector.js.map +0 -1
- package/dist/bigconsole/components/builder/index.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/AdvancedSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/AppearanceSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/DataBindingSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/GeneralSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/GeneralSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/LayoutSection.d.ts.map +0 -1
- package/dist/bigconsole/components/builder/inspector/LayoutSection.js.map +0 -1
- package/dist/bigconsole/components/builder/inspector/index.d.ts.map +0 -1
- package/dist/bigconsole/components/common/Section.d.ts.map +0 -1
- package/dist/bigconsole/components/common/Section.js.map +0 -1
- package/dist/bigconsole/components/common/index.d.ts.map +0 -1
- package/dist/bigconsole/components/common/sectionStyles.d.ts.map +0 -1
- package/dist/bigconsole/components/common/sectionStyles.js.map +0 -1
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardGrid.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardStatusPill.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardToolbar.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DashboardToolbar.js.map +0 -1
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/DrilldownBreadcrumb.js.map +0 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ExportDashboardDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterChip.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterEditor.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/FilterPresetSelector.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/GlobalFiltersBar.js.map +0 -1
- package/dist/bigconsole/components/dashboard/GlobalFiltersBar/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ImportDashboardDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/LiveBoardBanner.js.map +0 -1
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/LiveCanvasToggle.js.map +0 -1
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/PageTabsManager/PageTabsManager.js.map +0 -1
- package/dist/bigconsole/components/dashboard/PageTabsManager/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/PublishToStoreDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/SavedViewsDropdown.js.map +0 -1
- package/dist/bigconsole/components/dashboard/SavedViewsDropdown/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/EmbedTab.js.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/ShareDialog.js.map +0 -1
- package/dist/bigconsole/components/dashboard/ShareDialog/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateInstallOptions.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateInstallOptions.js.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateLayoutPreview.js.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplatePicker/index.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +0 -1
- package/dist/bigconsole/components/dashboard/WidgetPalette.d.ts.map +0 -1
- package/dist/bigconsole/components/dashboard/WidgetPalette.js.map +0 -1
- package/dist/bigconsole/components/dashboard/index.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/AlertExecutionHistory.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/AlertExecutionHistory.js.map +0 -1
- package/dist/bigconsole/components/datasink/AlertRuleEditor.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/AlertRuleEditor.js.map +0 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/CacheTTLSelector.js.map +0 -1
- package/dist/bigconsole/components/datasink/ConfigurationForm.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataPreviewPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkCard.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkCard.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDataViewer.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkDeleteDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkRefreshDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkStatusBadge.js.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/DataSinkTableViewer.js.map +0 -1
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/ExportDataSinkDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/FluidGridsPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/ImportDataGuideDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/ImportDataSinkDialog.js.map +0 -1
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/LinkedParsersPanel.js.map +0 -1
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/LinkedWorkflowsPanel.js.map +0 -1
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/RefreshTypeSelector.js.map +0 -1
- package/dist/bigconsole/components/datasink/SetupStateBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/SetupStateBadge.js.map +0 -1
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/datasink/WorkflowStatusPanel.js.map +0 -1
- package/dist/bigconsole/components/datasink/index.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/EmbedErrorBoundary.js.map +0 -1
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/EmbedWidgetRenderer.js.map +0 -1
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js.map +0 -1
- package/dist/bigconsole/components/embed/drilldown.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/drilldown.js.map +0 -1
- package/dist/bigconsole/components/embed/index.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/renderer-manifest.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/renderer-manifest.js.map +0 -1
- package/dist/bigconsole/components/embed/types.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/types.js.map +0 -1
- package/dist/bigconsole/components/embed/validate.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/validate.js.map +0 -1
- package/dist/bigconsole/components/embed/widgetShim.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgetShim.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/CalendarEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ChartEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/EmbedFrame.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/FormEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/FormEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/GaugeEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/HeatmapEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/KanbanEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ListEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ListEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/PivotEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/ProgressEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/RetentionEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TableEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TableEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TextEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TextEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/TimelineEmbed.js.map +0 -1
- package/dist/bigconsole/components/embed/widgets/shared.d.ts.map +0 -1
- package/dist/bigconsole/components/embed/widgets/shared.js.map +0 -1
- package/dist/bigconsole/components/overview/DashboardGuide.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/DashboardGuide.js.map +0 -1
- package/dist/bigconsole/components/overview/DataHealthCard.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/DataHealthCard.js.map +0 -1
- package/dist/bigconsole/components/overview/OverviewQuickActions.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/OverviewQuickActions.js.map +0 -1
- package/dist/bigconsole/components/overview/OverviewStatCard.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/OverviewStatCard.js.map +0 -1
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/RecentDashboardsPanel.js.map +0 -1
- package/dist/bigconsole/components/overview/dashboardGuideSteps.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/dashboardGuideSteps.js.map +0 -1
- package/dist/bigconsole/components/overview/index.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/overviewModel.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/overviewModel.js.map +0 -1
- package/dist/bigconsole/components/overview/useOverviewData.d.ts.map +0 -1
- package/dist/bigconsole/components/overview/useOverviewData.js.map +0 -1
- package/dist/bigconsole/components/parser/DataSinkSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/DataSinkSelector.js.map +0 -1
- package/dist/bigconsole/components/parser/ExportParserDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ExportParserDialog.js.map +0 -1
- package/dist/bigconsole/components/parser/ExpressionEditor.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ExpressionEditor.js.map +0 -1
- package/dist/bigconsole/components/parser/ImportParserDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ImportParserDialog.js.map +0 -1
- package/dist/bigconsole/components/parser/ParserBuilder.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserCard.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserCard.js.map +0 -1
- package/dist/bigconsole/components/parser/ParserFormDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserSelector.js.map +0 -1
- package/dist/bigconsole/components/parser/ParserStatusBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserStatusBadge.js.map +0 -1
- package/dist/bigconsole/components/parser/ParserTypeBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/ParserTypeBadge.js.map +0 -1
- package/dist/bigconsole/components/parser/TestPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/index.d.ts.map +0 -1
- package/dist/bigconsole/components/parser/parserFieldStyles.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineCard.js.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineDeleteDialog.js.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineScopePicker.js.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/pipeline/PipelineStatusBadge.js.map +0 -1
- package/dist/bigconsole/components/pipeline/index.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewContent.js.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewMiniPanel.js.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/AiPreviewPanel.js.map +0 -1
- package/dist/bigconsole/components/preview/parserPreview.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/parserPreview.js.map +0 -1
- package/dist/bigconsole/components/preview/previewShared.d.ts.map +0 -1
- package/dist/bigconsole/components/preview/previewShared.js.map +0 -1
- package/dist/bigconsole/components/widgets/ActionConfigDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/ActionConfigDialog.js.map +0 -1
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/DrilldownConfigPanel.js.map +0 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetErrorBoundary.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetHeader.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetMenu.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetMenu.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetRegistry.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetRegistry.js.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetTypeSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +0 -1
- package/dist/bigconsole/components/widgets/actionConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/actionConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/adaptive-card/AdaptiveCardWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/adaptive-card/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarView.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarView.js.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/CalendarWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/calendar/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartLegend.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartLegend.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartTooltip.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/ChartWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/BarChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ComboChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/FunnelChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/LineChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/PieChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/ScatterChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/WaterfallChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/referenceElements.js.map +0 -1
- package/dist/bigconsole/components/widgets/chart/charts/types.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/chart/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/comments/WidgetComments.js.map +0 -1
- package/dist/bigconsole/components/widgets/custom/CustomWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/custom/CustomWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/custom/config.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/custom/config.js.map +0 -1
- package/dist/bigconsole/components/widgets/custom/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/custom/utils.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/custom/utils.js.map +0 -1
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/event-logs/EventLogViewer.js.map +0 -1
- package/dist/bigconsole/components/widgets/event-logs/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/form/FormWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/form/FormWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/form/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/funnel/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/funnel/index.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/CircularGauge.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/GaugeWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/LinearGauge.js.map +0 -1
- package/dist/bigconsole/components/widgets/gauge/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/heatmap/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/IframeWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/iframe-widget/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanView.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanView.js.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/KanbanWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/model.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kanban/model.js.map +0 -1
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kpi/KPIWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/kpi/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/KPIComparisonWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/kpi-comparison/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListItem.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListItem.js.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/list/ListWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/list/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/map-widget/MapWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/map-widget/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/ComparisonBadge.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/MetricCardWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/SparklineChart.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/TrendIndicator.js.map +0 -1
- package/dist/bigconsole/components/widgets/metric-card/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/PivotTableWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/pivot-table/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressBar.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressBar.js.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/progress/ProgressWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/progress/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/retention/RetentionWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/retention/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.js.map +0 -1
- package/dist/bigconsole/components/widgets/states/ErrorState.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/states/ErrorState.js.map +0 -1
- package/dist/bigconsole/components/widgets/states/LoadingState.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/states/LoadingState.js.map +0 -1
- package/dist/bigconsole/components/widgets/states/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableCell.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableCell.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableConfig.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableConfig.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableHeader.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableHeader.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/TablePagination.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TablePagination.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/TableWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/cellLink.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/table/cellLink.js.map +0 -1
- package/dist/bigconsole/components/widgets/table/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/TextWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/textData.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/text-widget/textData.js.map +0 -1
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/timeline/TimelineWidget.js.map +0 -1
- package/dist/bigconsole/components/widgets/timeline/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/conditionalFormat.js.map +0 -1
- package/dist/bigconsole/components/widgets/utils/inferFields.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/inferFields.js.map +0 -1
- package/dist/bigconsole/components/widgets/utils/targetProgress.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/targetProgress.js.map +0 -1
- package/dist/bigconsole/components/widgets/utils/translate.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/utils/translate.js.map +0 -1
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/webhook-config/WebhookConfigPanel.js.map +0 -1
- package/dist/bigconsole/components/widgets/webhook-config/index.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.d.ts.map +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/WidgetActions.js.map +0 -1
- package/dist/bigconsole/components/widgets/widget-actions/index.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/DataSinkMultiSelector.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowCard.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowCard.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDeleteDialog.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowDesignPreview.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowOpenGuard.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowOpenGuard.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowSinkLinkForm.js.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.d.ts.map +0 -1
- package/dist/bigconsole/components/workflow/WorkflowStatusBadge.js.map +0 -1
- package/dist/bigconsole/components/workflow/index.d.ts.map +0 -1
- package/dist/bigconsole/constants/backendErrors.d.ts.map +0 -1
- package/dist/bigconsole/constants/backendErrors.js.map +0 -1
- package/dist/bigconsole/constants.d.ts.map +0 -1
- package/dist/bigconsole/constants.js.map +0 -1
- package/dist/bigconsole/context/BigConsoleContext.d.ts.map +0 -1
- package/dist/bigconsole/context/BigConsoleContext.js.map +0 -1
- package/dist/bigconsole/context/index.d.ts.map +0 -1
- package/dist/bigconsole/contexts/CrossFilterContext.d.ts.map +0 -1
- package/dist/bigconsole/contexts/CrossFilterContext.js.map +0 -1
- package/dist/bigconsole/contexts/NavigationContext.d.ts.map +0 -1
- package/dist/bigconsole/contexts/NavigationContext.js.map +0 -1
- package/dist/bigconsole/contexts/index.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +0 -1
- package/dist/bigconsole/customWidget/index.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/proposalContract.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/proposalContract.js.map +0 -1
- package/dist/bigconsole/customWidget/proposalSource.d.ts.map +0 -1
- package/dist/bigconsole/customWidget/proposalSource.js.map +0 -1
- package/dist/bigconsole/graphql/apollo-compat.d.ts.map +0 -1
- package/dist/bigconsole/graphql/storeTemplates.d.ts.map +0 -1
- package/dist/bigconsole/graphql/storeTemplates.js.map +0 -1
- package/dist/bigconsole/hooks/index.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useActivePage.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useActivePage.js.map +0 -1
- package/dist/bigconsole/hooks/useAutoRefresh.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useAutoRefresh.js.map +0 -1
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useBigConsoleAnalytics.js.map +0 -1
- package/dist/bigconsole/hooks/useBigConsoleSettings.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useBigConsoleSettings.js.map +0 -1
- package/dist/bigconsole/hooks/useCrossFilter.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useCrossFilter.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardEmbedPolicy.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardImageExport.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardImageExport.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardLayoutBaseline.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardSharing.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardSharing.js.map +0 -1
- package/dist/bigconsole/hooks/useDashboardTemplates.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardViews.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDashboardViews.js.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkAlerts.js.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkSubscription.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDataSinkSubscription.js.map +0 -1
- package/dist/bigconsole/hooks/useDrilldown.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDrilldown.js.map +0 -1
- package/dist/bigconsole/hooks/useDrilldownOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useDrilldownOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useEventLogs.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useEventLogs.js.map +0 -1
- package/dist/bigconsole/hooks/useEventWebhooks.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useEventWebhooks.js.map +0 -1
- package/dist/bigconsole/hooks/useExportDashboard.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useExportDashboard.js.map +0 -1
- package/dist/bigconsole/hooks/useExportDataSink.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useExportDataSink.js.map +0 -1
- package/dist/bigconsole/hooks/useExportParser.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useExportParser.js.map +0 -1
- package/dist/bigconsole/hooks/useFilterPresets.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useFilterPresets.js.map +0 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useFilterUrlSync.js.map +0 -1
- package/dist/bigconsole/hooks/useGlobalFilters.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useGlobalFilters.js.map +0 -1
- package/dist/bigconsole/hooks/useImportDashboard.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useImportDashboard.js.map +0 -1
- package/dist/bigconsole/hooks/useImportDataSink.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useImportDataSink.js.map +0 -1
- package/dist/bigconsole/hooks/useImportParser.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useImportParser.js.map +0 -1
- package/dist/bigconsole/hooks/useInstalledWidgets.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useInstalledWidgets.js.map +0 -1
- package/dist/bigconsole/hooks/useModalFocusTrap.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useModalFocusTrap.js.map +0 -1
- package/dist/bigconsole/hooks/usePageOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/usePageOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useParserOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useParserOperations.js.map +0 -1
- package/dist/bigconsole/hooks/usePipelineOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/usePipelineOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useShareRecipients.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useShareRecipients.js.map +0 -1
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetActions.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetActions.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetCatalog.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetCatalog.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetComments.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetComments.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetConfigPersist.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetConfigPersist.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetData.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetData.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetEvents.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetEvents.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetExport.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetExport.js.map +0 -1
- package/dist/bigconsole/hooks/useWidgetOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWidgetOperations.js.map +0 -1
- package/dist/bigconsole/hooks/useWorkflowOperations.d.ts.map +0 -1
- package/dist/bigconsole/hooks/useWorkflowOperations.js.map +0 -1
- package/dist/bigconsole/index.d.ts.map +0 -1
- package/dist/bigconsole/modules/dashboard/index.d.ts.map +0 -1
- package/dist/bigconsole/modules/index.d.ts.map +0 -1
- package/dist/bigconsole/modules/renderer/index.d.ts.map +0 -1
- package/dist/bigconsole/modules/widget/index.d.ts.map +0 -1
- package/dist/bigconsole/pages/AdminPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/AdminPage.js.map +0 -1
- package/dist/bigconsole/pages/DashboardBuilderPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DashboardBuilderPage.js.map +0 -1
- package/dist/bigconsole/pages/DashboardViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DashboardViewPage.js.map +0 -1
- package/dist/bigconsole/pages/DashboardsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DashboardsPage.js.map +0 -1
- package/dist/bigconsole/pages/DataParsersPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataParsersPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSinkAlertsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSinkAlertsPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSinkBuilderPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSinkViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSinkViewPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSinksPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSinksPage.js.map +0 -1
- package/dist/bigconsole/pages/DataSourcesPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/DataSourcesPage.js.map +0 -1
- package/dist/bigconsole/pages/InsightsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/InsightsPage.js.map +0 -1
- package/dist/bigconsole/pages/OverviewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/OverviewPage.js.map +0 -1
- package/dist/bigconsole/pages/ParserBuilderPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/ParserBuilderPage.js.map +0 -1
- package/dist/bigconsole/pages/ParserViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/ParserViewPage.js.map +0 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/PipelineBuilderPage.js.map +0 -1
- package/dist/bigconsole/pages/PipelineViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/PipelineViewPage.js.map +0 -1
- package/dist/bigconsole/pages/PipelinesPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/PipelinesPage.js.map +0 -1
- package/dist/bigconsole/pages/SettingsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/SettingsPage.js.map +0 -1
- package/dist/bigconsole/pages/WidgetDemoPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/WidgetDemoPage.js.map +0 -1
- package/dist/bigconsole/pages/WorkflowViewPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/WorkflowViewPage.js.map +0 -1
- package/dist/bigconsole/pages/WorkflowsPage.d.ts.map +0 -1
- package/dist/bigconsole/pages/WorkflowsPage.js.map +0 -1
- package/dist/bigconsole/pages/index.d.ts.map +0 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.d.ts.map +0 -1
- package/dist/bigconsole/providers/BigConsoleQuotaProvider.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.d.ts.map +0 -1
- package/dist/bigconsole/renderers/adapters/AdaptiveCardRenderer.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.d.ts.map +0 -1
- package/dist/bigconsole/renderers/adapters/BigConsoleRenderer.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.d.ts.map +0 -1
- package/dist/bigconsole/renderers/adapters/BlockKitRenderer.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/CustomRenderer.d.ts.map +0 -1
- package/dist/bigconsole/renderers/adapters/CustomRenderer.js.map +0 -1
- package/dist/bigconsole/renderers/adapters/index.d.ts.map +0 -1
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.d.ts.map +0 -1
- package/dist/bigconsole/renderers/factory/WidgetRendererFactory.js.map +0 -1
- package/dist/bigconsole/renderers/index.d.ts.map +0 -1
- package/dist/bigconsole/renderers/registry/RendererRegistry.d.ts.map +0 -1
- package/dist/bigconsole/renderers/registry/RendererRegistry.js.map +0 -1
- package/dist/bigconsole/renderers/types/index.d.ts.map +0 -1
- package/dist/bigconsole/renderers/types/renderer.d.ts.map +0 -1
- package/dist/bigconsole/store/dashboardStore.d.ts.map +0 -1
- package/dist/bigconsole/store/dashboardStore.js.map +0 -1
- package/dist/bigconsole/store/dataSinkStore.d.ts.map +0 -1
- package/dist/bigconsole/store/dataSinkStore.js.map +0 -1
- package/dist/bigconsole/store/drilldownStore.d.ts.map +0 -1
- package/dist/bigconsole/store/drilldownStore.js.map +0 -1
- package/dist/bigconsole/store/index.d.ts.map +0 -1
- package/dist/bigconsole/store/parserStore.d.ts.map +0 -1
- package/dist/bigconsole/store/parserStore.js.map +0 -1
- package/dist/bigconsole/store/pipelineStore.d.ts.map +0 -1
- package/dist/bigconsole/store/pipelineStore.js.map +0 -1
- package/dist/bigconsole/store/widgetStore.d.ts.map +0 -1
- package/dist/bigconsole/store/widgetStore.js.map +0 -1
- package/dist/bigconsole/store/workflowStore.d.ts.map +0 -1
- package/dist/bigconsole/store/workflowStore.js.map +0 -1
- package/dist/bigconsole/types/index.d.ts.map +0 -1
- package/dist/bigconsole/utils/alertRules.d.ts.map +0 -1
- package/dist/bigconsole/utils/alertRules.js.map +0 -1
- package/dist/bigconsole/utils/backendError.d.ts.map +0 -1
- package/dist/bigconsole/utils/backendError.js.map +0 -1
- package/dist/bigconsole/utils/createDialogParam.d.ts.map +0 -1
- package/dist/bigconsole/utils/createDialogParam.js.map +0 -1
- package/dist/bigconsole/utils/csv.d.ts.map +0 -1
- package/dist/bigconsole/utils/csv.js.map +0 -1
- package/dist/bigconsole/utils/dashboardTemplateContent.d.ts.map +0 -1
- package/dist/bigconsole/utils/dashboardTemplateContent.js.map +0 -1
- package/dist/bigconsole/utils/drilldownParams.d.ts.map +0 -1
- package/dist/bigconsole/utils/drilldownParams.js.map +0 -1
- package/dist/bigconsole/utils/formDirty.d.ts.map +0 -1
- package/dist/bigconsole/utils/formDirty.js.map +0 -1
- package/dist/bigconsole/utils/format.d.ts.map +0 -1
- package/dist/bigconsole/utils/format.js.map +0 -1
- package/dist/bigconsole/utils/index.d.ts.map +0 -1
- package/dist/bigconsole/utils/insightsDraft.d.ts.map +0 -1
- package/dist/bigconsole/utils/insightsDraft.js.map +0 -1
- package/dist/bigconsole/utils/layoutBaseline.d.ts.map +0 -1
- package/dist/bigconsole/utils/layoutBaseline.js.map +0 -1
- package/dist/bigconsole/utils/quota.d.ts.map +0 -1
- package/dist/bigconsole/utils/quota.js.map +0 -1
- package/dist/bigconsole/utils/semanticTokens.d.ts.map +0 -1
- package/dist/bigconsole/utils/semanticTokens.js.map +0 -1
- package/dist/bigconsole/utils/templateInstallInputs.d.ts.map +0 -1
- package/dist/bigconsole/utils/templateInstallInputs.js.map +0 -1
- package/dist/bigconsole/utils/widgetBinding.d.ts.map +0 -1
- package/dist/bigconsole/utils/widgetBinding.js.map +0 -1
- package/dist/bigconsole/utils/widgetFormDirty.d.ts.map +0 -1
- package/dist/bigconsole/utils/widgetFormDirty.js.map +0 -1
- package/dist/bigconsole/utils/widgetPositioning.d.ts.map +0 -1
- package/dist/bigconsole/utils/widgetPositioning.js.map +0 -1
- package/dist/bigconsole/utils/widgetTypeMapping.d.ts.map +0 -1
- package/dist/bigconsole/utils/widgetTypeMapping.js.map +0 -1
- package/dist/bigconsole/workflowOpen.d.ts.map +0 -1
- package/dist/bigconsole/workflowOpen.js.map +0 -1
- package/dist/constants/permissions.d.ts.map +0 -1
- package/dist/constants/permissions.js.map +0 -1
- package/dist/generated/global-operations.d.ts.map +0 -1
- package/dist/generated/global-operations.js.map +0 -1
- package/dist/generated/global-types.d.ts.map +0 -1
- package/dist/generated/wspace-operations.d.ts.map +0 -1
- package/dist/generated/wspace-operations.js.map +0 -1
- package/dist/generated/wspace-types.d.ts.map +0 -1
- package/dist/generated/wspace-types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/node_modules/@e965/xlsx/xlsx.js.map +0 -1
- package/dist/node_modules/pdfjs-dist/build/pdf.js.map +0 -1
- package/dist/shared/hooks/useTr.d.ts.map +0 -1
- package/dist/shared/hooks/useTr.js.map +0 -1
- package/dist/stories/DashboardGuide.stories.d.ts +0 -15
- package/dist/stories/DashboardGuide.stories.d.ts.map +0 -1
- package/dist/stories/DataSinkStatusBadge.stories.d.ts +0 -12
- package/dist/stories/DataSinkStatusBadge.stories.d.ts.map +0 -1
- package/dist/stories/GaugeWidget.stories.d.ts +0 -58
- package/dist/stories/GaugeWidget.stories.d.ts.map +0 -1
- package/dist/stories/KPIComparisonWidget.stories.d.ts +0 -76
- package/dist/stories/KPIComparisonWidget.stories.d.ts.map +0 -1
- package/dist/stories/LiveCanvasToggle.stories.d.ts +0 -9
- package/dist/stories/LiveCanvasToggle.stories.d.ts.map +0 -1
- package/dist/stories/MetricCardWidget.stories.d.ts +0 -88
- package/dist/stories/MetricCardWidget.stories.d.ts.map +0 -1
- package/dist/stories/ProgressWidget.stories.d.ts +0 -48
- package/dist/stories/ProgressWidget.stories.d.ts.map +0 -1
- package/dist/stories/SetupStateBadge.stories.d.ts +0 -12
- package/dist/stories/SetupStateBadge.stories.d.ts.map +0 -1
- package/dist/translations/en.d.ts.map +0 -1
- package/dist/utils/nativeBridge.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AdminPage.js","names":[],"sources":["../../../src/bigconsole/pages/AdminPage.tsx"],"sourcesContent":["/**\n * BigConsole Admin Page\n *\n * Product-specific admin surface mounted inside the platform admin-app.\n * Provides governance views for:\n * - Widget / Data-sink registry\n * - Org-level feature flags\n * - Audit log viewer\n *\n * Uses real GraphQL queries where they exist and documented placeholders\n * where backend support is still needed.\n */\n\nimport { type FC, memo, useCallback, useMemo, useState } from 'react';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n Button,\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n CardDescription,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Badge,\n Spinner,\n Input,\n} from '@burdenoff/fe-libs/ui';\nimport { LayoutDashboard, Database, Flag, ScrollText, Search, AlertCircle, RefreshCw } from 'lucide-react';\nimport { formatDistanceToNow } from 'date-fns';\nimport {\n ListDataSinksDocument,\n ListEventLogsDocument,\n type ListDataSinksQuery,\n type ListEventLogsQuery,\n} from '../../generated/wspace-operations';\nimport type { DataSink } from '../types';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ntype AdminTab = 'registry' | 'feature-flags' | 'audit-log';\n\ninterface EventLogNode {\n id: string;\n eventName: string;\n actionName?: string | null;\n status: string;\n widgetId?: string | null;\n dashboardId?: string | null;\n createdAt: string;\n errorMessage?: string | null;\n}\n\n// ============================================================================\n// PLACEHOLDER DATA\n// ============================================================================\n\ninterface FeatureFlag {\n id: string;\n key: string;\n name: string;\n description: string;\n enabled: boolean;\n scope: 'organization' | 'workspace' | 'global';\n}\n\nconst PLACEHOLDER_FEATURE_FLAGS: FeatureFlag[] = [\n {\n id: 'flag-1',\n key: 'bigconsole.ai-insights',\n name: 'AI Insights',\n description: 'Enable AI-generated insights across dashboards',\n enabled: true,\n scope: 'organization',\n },\n {\n id: 'flag-2',\n key: 'bigconsole.real-time-collaboration',\n name: 'Real-time Collaboration',\n description: 'Allow multiple users to edit dashboards simultaneously',\n enabled: false,\n scope: 'workspace',\n },\n {\n id: 'flag-3',\n key: 'bigconsole.advanced-drilldown',\n name: 'Advanced Drilldown',\n description: 'Enable cross-dashboard drilldown and parameter passing',\n enabled: true,\n scope: 'organization',\n },\n];\n\n// ============================================================================\n// HELPERS\n// ============================================================================\n\nfunction formatBytes(bytes: number | undefined | null): string {\n if (bytes === undefined || bytes === null || bytes === 0) return '0 B';\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n return `${(bytes / Math.pow(1024, i)).toFixed(2)} ${sizes[i]}`;\n}\n\nfunction formatDate(iso: string | undefined | null): string {\n if (!iso) return '—';\n try {\n return formatDistanceToNow(new Date(iso), { addSuffix: true });\n } catch {\n return iso;\n }\n}\n\n// ============================================================================\n// SECTIONS\n// ============================================================================\n\nconst RegistrySection: FC = memo(function RegistrySection() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string) => {\n const translated = t(key);\n return translated === key ? fallback : translated;\n },\n [t]\n );\n\n const [search, setSearch] = useState('');\n\n const {\n data: dataSinksData,\n loading: dataSinksLoading,\n error: dataSinksError,\n refetch: refetchDataSinks,\n } = useQuery<ListDataSinksQuery>(ListDataSinksDocument, {\n variables: { first: 50, search: search || undefined },\n notifyOnNetworkStatusChange: true,\n });\n\n const dataSinks = useMemo<DataSink[]>(() => {\n return (dataSinksData?.listDataSinks?.edges ?? []).map((edge) => edge.node as unknown as DataSink);\n }, [dataSinksData]);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {tr('bigconsole.admin.registry.title', 'Widget & Data-sink Registry')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'bigconsole.admin.registry.subtitle',\n 'Browse and govern dashboards, widgets, and data sinks across the organization.'\n )}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <div className=\"relative\">\n <Search className=\"absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-text-tertiary\" />\n <Input\n type=\"text\"\n placeholder={tr('bigconsole.admin.registry.search', 'Search data sinks...')}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9 w-full sm:w-64\"\n />\n </div>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => refetchDataSinks()}\n disabled={dataSinksLoading}\n aria-label={tr('bigconsole.admin.registry.refresh', 'Refresh')}\n >\n <RefreshCw className={`h-4 w-4 ${dataSinksLoading ? 'animate-spin' : ''}`} />\n </Button>\n </div>\n </div>\n\n {/* Widget registry placeholder — backend query needs cross-workspace support */}\n <Card className=\"border-dashed border-border-default bg-bg-surface/50\">\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base font-medium text-text-primary flex items-center gap-2\">\n <LayoutDashboard className=\"h-4 w-4 text-text-secondary\" />\n {tr('bigconsole.admin.registry.widgets', 'Widget Registry')}\n </CardTitle>\n <CardDescription className=\"text-sm text-text-secondary\">\n {tr(\n 'bigconsole.admin.registry.widgets.description',\n 'Cross-workspace widget listing requires a backend query that supports organization-scoped pagination (listWidgets currently requires pageId).'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex items-start gap-3 rounded-md bg-warning-bg/10 p-3 text-sm text-warning-fg\">\n <AlertCircle className=\"mt-0.5 h-4 w-4 shrink-0\" />\n <div>\n <p className=\"font-medium\">{tr('bigconsole.admin.registry.widgets.gap.title', 'Backend gap')}</p>\n <p className=\"mt-1 text-text-secondary\">\n {tr(\n 'bigconsole.admin.registry.widgets.gap.body',\n 'Add adminBigConsoleWidgets(organizationId, first, after) to global or workspace schema, then wire it here.'\n )}\n </p>\n </div>\n </div>\n </CardContent>\n </Card>\n\n {/* Data-sink registry — backed by listDataSinks */}\n <Card className=\"bg-bg-surface border-border-default\">\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"text-base font-medium text-text-primary flex items-center gap-2\">\n <Database className=\"h-4 w-4 text-text-secondary\" />\n {tr('bigconsole.admin.registry.datasinks', 'Data-sink Registry')}\n </CardTitle>\n <CardDescription className=\"text-sm text-text-secondary\">\n {tr('bigconsole.admin.registry.datasinks.description', 'Live view of data sinks across the organization.')}\n </CardDescription>\n </CardHeader>\n <CardContent>\n {dataSinksError ? (\n <div className=\"rounded-md bg-danger-bg/10 p-4 text-sm text-danger-fg\">{dataSinksError.message}</div>\n ) : dataSinksLoading && !dataSinksData ? (\n <div className=\"flex items-center justify-center py-12\">\n <Spinner className=\"h-8 w-8\" />\n </div>\n ) : dataSinks.length === 0 ? (\n <div className=\"text-center py-12 text-text-secondary text-sm\">\n {tr('bigconsole.admin.registry.datasinks.empty', 'No data sinks found.')}\n </div>\n ) : (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-default text-left text-text-secondary\">\n <th className=\"pb-3 pr-4 font-medium\">{tr('bigconsole.admin.registry.datasinks.name', 'Name')}</th>\n <th className=\"pb-3 pr-4 font-medium\">\n {tr('bigconsole.admin.registry.datasinks.status', 'Status')}\n </th>\n <th className=\"pb-3 pr-4 font-medium\">{tr('bigconsole.admin.registry.datasinks.size', 'Size')}</th>\n <th className=\"pb-3 pr-4 font-medium\">\n {tr('bigconsole.admin.registry.datasinks.links', 'Links')}\n </th>\n <th className=\"pb-3 pr-4 font-medium\">\n {tr('bigconsole.admin.registry.datasinks.refreshed', 'Refreshed')}\n </th>\n <th className=\"pb-3 font-medium\">{tr('bigconsole.admin.registry.datasinks.active', 'Active')}</th>\n </tr>\n </thead>\n <tbody className=\"text-text-primary\">\n {dataSinks.map((sink) => (\n <tr key={sink.id} className=\"border-b border-border-seam last:border-0\">\n <td className=\"py-3 pr-4\">\n <div className=\"font-medium\">{sink.name || sink.key}</div>\n <div className=\"text-xs text-text-tertiary\">{sink.key}</div>\n </td>\n <td className=\"py-3 pr-4\">\n <Badge variant={sink.status === 'ready' ? 'default' : 'secondary'}>{sink.status}</Badge>\n </td>\n <td className=\"py-3 pr-4 tabular-nums\">{formatBytes(sink.sizeBytes)}</td>\n <td className=\"py-3 pr-4 tabular-nums\">{sink.linkedWorkflowCount ?? 0}</td>\n <td className=\"py-3 pr-4 text-text-secondary\">{formatDate(sink.lastRefreshedAt)}</td>\n <td className=\"py-3\">\n <Badge variant={sink.isActive ? 'default' : 'outline'}>{sink.isActive ? 'Yes' : 'No'}</Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n );\n});\n\nconst FeatureFlagsSection: FC = memo(function FeatureFlagsSection() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string) => {\n const translated = t(key);\n return translated === key ? fallback : translated;\n },\n [t]\n );\n\n const [flags, setFlags] = useState<FeatureFlag[]>(PLACEHOLDER_FEATURE_FLAGS);\n\n const toggleFlag = useCallback((id: string) => {\n setFlags((prev) => prev.map((flag) => (flag.id === id ? { ...flag, enabled: !flag.enabled } : flag)));\n }, []);\n\n return (\n <div className=\"space-y-6\">\n <div>\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {tr('bigconsole.admin.featureFlags.title', 'Org-level Feature Flags')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'bigconsole.admin.featureFlags.subtitle',\n 'Manage BigConsole features across organizations and workspaces.'\n )}\n </p>\n </div>\n\n <div className=\"flex items-start gap-3 rounded-md bg-info-bg/10 p-3 text-sm text-info-fg\">\n <AlertCircle className=\"mt-0.5 h-4 w-4 shrink-0\" />\n <div>\n <p className=\"font-medium\">{tr('bigconsole.admin.featureFlags.placeholder.title', 'Placeholder data')}</p>\n <p className=\"mt-1 text-text-secondary\">\n {tr(\n 'bigconsole.admin.featureFlags.placeholder.body',\n 'Wire this to the feature-flag service admin API (list/upsert organization feature flags) when available.'\n )}\n </p>\n </div>\n </div>\n\n <div className=\"grid gap-4\">\n {flags.map((flag) => (\n <Card key={flag.id} className=\"bg-bg-surface border-border-default\">\n <CardContent className=\"p-4\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <Flag className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"font-medium text-text-primary\">{flag.name}</span>\n <Badge variant=\"outline\">{flag.scope}</Badge>\n </div>\n <p className=\"text-sm text-text-secondary\">{flag.description}</p>\n <code className=\"text-xs text-text-tertiary bg-bg-sunken px-1.5 py-0.5 rounded\">{flag.key}</code>\n </div>\n <Button\n variant={flag.enabled ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => toggleFlag(flag.id)}\n className=\"shrink-0\"\n >\n {flag.enabled\n ? tr('bigconsole.admin.featureFlags.enabled', 'Enabled')\n : tr('bigconsole.admin.featureFlags.disabled', 'Disabled')}\n </Button>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n );\n});\n\nconst AuditLogSection: FC = memo(function AuditLogSection() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string) => {\n const translated = t(key);\n return translated === key ? fallback : translated;\n },\n [t]\n );\n\n const [statusFilter, setStatusFilter] = useState<string>('all');\n\n const {\n data: logsData,\n loading: logsLoading,\n error: logsError,\n refetch: refetchLogs,\n } = useQuery<ListEventLogsQuery>(ListEventLogsDocument, {\n variables: {\n first: 50,\n status: statusFilter === 'all' ? undefined : (statusFilter as 'success' | 'failed'),\n },\n notifyOnNetworkStatusChange: true,\n });\n\n const logs = useMemo<EventLogNode[]>(() => {\n return (logsData?.listEventLogs?.edges ?? []).map((edge) => edge.node as unknown as EventLogNode);\n }, [logsData]);\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div>\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {tr('bigconsole.admin.auditLog.title', 'Audit Log Viewer')}\n </h2>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n 'bigconsole.admin.auditLog.subtitle',\n 'Widget event delivery log. Organization-level audit trail requires a dedicated admin audit query.'\n )}\n </p>\n </div>\n <div className=\"flex items-center gap-2\">\n <select\n value={statusFilter}\n onChange={(e) => setStatusFilter(e.target.value)}\n className=\"h-9 rounded-md border border-border-default bg-bg-surface px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-focus-ring\"\n >\n <option value=\"all\">{tr('bigconsole.admin.auditLog.filter.all', 'All statuses')}</option>\n <option value=\"success\">{tr('bigconsole.admin.auditLog.filter.success', 'Success')}</option>\n <option value=\"failed\">{tr('bigconsole.admin.auditLog.filter.failed', 'Failed')}</option>\n </select>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => refetchLogs()}\n disabled={logsLoading}\n aria-label={tr('bigconsole.admin.auditLog.refresh', 'Refresh')}\n >\n <RefreshCw className={`h-4 w-4 ${logsLoading ? 'animate-spin' : ''}`} />\n </Button>\n </div>\n </div>\n\n <Card className=\"bg-bg-surface border-border-default\">\n <CardContent className=\"p-0\">\n {logsError ? (\n <div className=\"rounded-md bg-danger-bg/10 p-4 text-sm text-danger-fg\">{logsError.message}</div>\n ) : logsLoading && !logsData ? (\n <div className=\"flex items-center justify-center py-12\">\n <Spinner className=\"h-8 w-8\" />\n </div>\n ) : logs.length === 0 ? (\n <div className=\"text-center py-12 text-text-secondary text-sm\">\n {tr('bigconsole.admin.auditLog.empty', 'No audit events found.')}\n </div>\n ) : (\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b border-border-default text-left text-text-secondary\">\n <th className=\"pb-3 pr-4 font-medium p-4\">{tr('bigconsole.admin.auditLog.event', 'Event')}</th>\n <th className=\"pb-3 pr-4 font-medium\">{tr('bigconsole.admin.auditLog.action', 'Action')}</th>\n <th className=\"pb-3 pr-4 font-medium\">{tr('bigconsole.admin.auditLog.status', 'Status')}</th>\n <th className=\"pb-3 pr-4 font-medium\">{tr('bigconsole.admin.auditLog.widget', 'Widget')}</th>\n <th className=\"pb-3 pr-4 font-medium\">{tr('bigconsole.admin.auditLog.dashboard', 'Dashboard')}</th>\n <th className=\"pb-3 font-medium\">{tr('bigconsole.admin.auditLog.time', 'Time')}</th>\n </tr>\n </thead>\n <tbody className=\"text-text-primary\">\n {logs.map((log) => (\n <tr key={log.id} className=\"border-b border-border-seam last:border-0\">\n <td className=\"py-3 pr-4 p-4\">\n <div className=\"font-medium\">{log.eventName}</div>\n {log.errorMessage && (\n <div className=\"text-xs text-danger-fg mt-1 max-w-xs truncate\">{log.errorMessage}</div>\n )}\n </td>\n <td className=\"py-3 pr-4\">{log.actionName || '—'}</td>\n <td className=\"py-3 pr-4\">\n <Badge\n variant={\n log.status === 'success' ? 'default' : log.status === 'failed' ? 'destructive' : 'secondary'\n }\n >\n {log.status}\n </Badge>\n </td>\n <td className=\"py-3 pr-4 font-mono text-xs text-text-tertiary\">{log.widgetId || '—'}</td>\n <td className=\"py-3 pr-4 font-mono text-xs text-text-tertiary\">{log.dashboardId || '—'}</td>\n <td className=\"py-3 text-text-secondary\">{formatDate(log.createdAt)}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n );\n});\n\n// ============================================================================\n// PAGE\n// ============================================================================\n\nexport const AdminPage: FC = memo(function AdminPage() {\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string) => {\n const translated = t(key);\n return translated === key ? fallback : translated;\n },\n [t]\n );\n\n const [activeTab, setActiveTab] = useState<AdminTab>('registry');\n\n return (\n <div className=\"min-h-screen bg-bg-base p-6\">\n <div className=\"mx-auto max-w-7xl space-y-6\">\n <div className=\"space-y-1\">\n <h1 className=\"text-2xl font-bold text-text-primary\">{tr('bigconsole.admin.title', 'BigConsole Admin')}</h1>\n <p className=\"text-sm text-text-secondary\">\n {tr('bigconsole.admin.description', 'Product-specific administration and governance for BigConsole.')}\n </p>\n </div>\n\n <Tabs value={activeTab} onValueChange={(value) => setActiveTab(value as AdminTab)}>\n <TabsList className=\"bg-bg-surface border border-border-default\">\n <TabsTrigger value=\"registry\" className=\"flex items-center gap-2\">\n <LayoutDashboard className=\"h-4 w-4\" />\n {tr('bigconsole.admin.tab.registry', 'Registry')}\n </TabsTrigger>\n <TabsTrigger value=\"feature-flags\" className=\"flex items-center gap-2\">\n <Flag className=\"h-4 w-4\" />\n {tr('bigconsole.admin.tab.featureFlags', 'Feature Flags')}\n </TabsTrigger>\n <TabsTrigger value=\"audit-log\" className=\"flex items-center gap-2\">\n <ScrollText className=\"h-4 w-4\" />\n {tr('bigconsole.admin.tab.auditLog', 'Audit Log')}\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"registry\" className=\"mt-6\">\n <RegistrySection />\n </TabsContent>\n <TabsContent value=\"feature-flags\" className=\"mt-6\">\n <FeatureFlagsSection />\n </TabsContent>\n <TabsContent value=\"audit-log\" className=\"mt-6\">\n <AuditLogSection />\n </TabsContent>\n </Tabs>\n </div>\n </div>\n );\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardBuilderPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/DashboardBuilderPage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,EAA0C,MAAM,OAAO,CAAC;AAqDxE,eAAO,MAAM,oBAAoB,EAAE,EAipBjC,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardBuilderPage.js","names":[],"sources":["../../../src/bigconsole/pages/DashboardBuilderPage.tsx"],"sourcesContent":["/**\n * DashboardBuilderPage\n *\n * Full dashboard builder experience with side panels.\n */\n\nimport { type FC, memo, useState, useEffect, useCallback } from 'react';\nimport { useParams } from 'react-router';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { useUnsavedChanges } from '@burdenoff/fe-libs/shared/hooks';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { AccessDenied } from '@burdenoff/fe-libs/shared/components';\nimport { BIGCONSOLE_PERMISSIONS } from '../../constants/permissions';\nimport { useBigConsoleNavigate } from '../context';\nimport { DashboardCanvas, ExportDashboardDialog } from '../components/dashboard';\nimport { BuilderCanvas, BuilderTopbar, DashboardEditorShell } from '../components/builder';\nimport { useDashboardStore, useWidgetStore } from '../store';\nimport { useDashboardOperations, useWidgetOperations, usePageOperations } from '../hooks';\nimport { useActivePage } from '../hooks/useActivePage';\nimport { useDashboardLayoutBaseline } from '../hooks/useDashboardLayoutBaseline';\nimport { CustomWidgetBuilderSheet } from '../customWidget';\nimport { SECTION_FOCUS_RING, Section } from '../components/common';\nimport type { Dashboard, DashboardPage } from '../types';\nimport { findNextAvailablePosition } from '../utils/widgetPositioning';\nimport { layoutItemsFromPositionUpdates, type LayoutItem } from '../utils/layoutBaseline';\nimport { loadBigConsoleSettings } from '../hooks/useBigConsoleSettings';\n\n// Breadcrumb name registration helpers (get from shell at call time to avoid timing issues)\nfunction getBreadcrumbRegistry() {\n try {\n return (\n window as unknown as {\n __breadcrumbRegistry?: { register: (id: string, name: string) => void; unregister: (id: string) => void };\n }\n ).__breadcrumbRegistry;\n } catch {\n return undefined;\n }\n}\n\nfunction registerBreadcrumbName(id: string, name: string) {\n const registry = getBreadcrumbRegistry();\n if (registry?.register) {\n registry.register(id, name);\n }\n}\n\nfunction unregisterBreadcrumbName(id: string) {\n const registry = getBreadcrumbRegistry();\n if (registry?.unregister) {\n registry.unregister(id);\n }\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const DashboardBuilderPage: FC = memo(function DashboardBuilderPage() {\n const { dashboardId } = useParams<{ dashboardId: string }>();\n const navigate = useBigConsoleNavigate();\n const { t } = useI18n();\n\n // RBAC gating. The builder is the edit surface: a read gate blocks it for\n // callers without dashboard read access, and action gates hide Save/Export and\n // the AI-widget (widget-create) control for callers lacking those permissions.\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const canRead = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_READ);\n const canUpdate = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_UPDATE);\n const canExport = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_EXPORT);\n const canCreateWidget = hasPermission(BIGCONSOLE_PERMISSIONS.WIDGET_CREATE);\n\n const [isSaving, setIsSaving] = useState(false);\n const [saveError, setSaveError] = useState<string | null>(null);\n const [isExportDialogOpen, setIsExportDialogOpen] = useState(false);\n // BOFF-5532: AI custom-widget authoring/review surface.\n const [isCustomWidgetBuilderOpen, setIsCustomWidgetBuilderOpen] = useState(false);\n\n // Dashboard operations from GraphQL\n const {\n fetchDashboard,\n updateDashboard,\n loading: dashboardLoading,\n error: dashboardError,\n } = useDashboardOperations();\n\n // Widget operations from GraphQL\n const {\n createWidget: createWidgetMutation,\n updateWidget: updateWidgetMutation,\n deleteWidget: deleteWidgetMutation,\n duplicateWidget: duplicateWidgetMutation,\n batchUpdatePositions,\n } = useWidgetOperations(undefined, dashboardId);\n\n // Page operations from GraphQL\n const {\n createPage: createPageMutation,\n updatePage: updatePageMutation,\n deletePage: deletePageMutation,\n reorderPages: reorderPagesMutation,\n } = usePageOperations();\n\n // Store actions\n const setCurrentDashboard = useDashboardStore((state) => state.setCurrentDashboard);\n const currentDashboard = useDashboardStore((state) => state.currentDashboard);\n // Active page lives in the URL (`?page=`), shared with the viewer route, so\n // page switches and in-builder drilldowns are Back-able (BOFF-7625).\n const { activePageId, setActivePage } = useActivePage(\n currentDashboard?.id === dashboardId ? currentDashboard?.pages : undefined\n );\n const setViewMode = useDashboardStore((state) => state.setViewMode);\n const selectWidget = useWidgetStore((state) => state.selectWidget);\n const widgets = useWidgetStore((state) => state.widgets);\n const clipboardWidgetId = useWidgetStore((state) => state.clipboardWidgetId);\n const clipboardAction = useWidgetStore((state) => state.clipboardAction);\n const clearClipboard = useWidgetStore((state) => state.clearClipboard);\n\n // N3/N4 (BOFF-8060): tell the assistant while moved or resized widgets are not saved, so it\n // never navigates away from them. The builder's own flags are dead (`dirtyWidgetIds` is never\n // marked, `dashboardStore.hasUnsavedChanges` is never cleared), so the layout is compared to a\n // baseline instead. Save is only offered with the update permission, so without it nothing here\n // can be saved and nothing is reported.\n const { dirty: layoutDirty, markSaved: markLayoutSaved } = useDashboardLayoutBaseline(dashboardId);\n useUnsavedChanges({\n id: 'dashboard-editor',\n label: t('bigconsole.assistant.unsaved.dashboardEditor', 'the dashboard editor'),\n dirty: canUpdate && layoutDirty,\n });\n\n // Set edit mode on mount\n useEffect(() => {\n setViewMode('edit');\n return () => setViewMode('view');\n }, [setViewMode]);\n\n // Load dashboard data from API\n useEffect(() => {\n if (!dashboardId) {\n navigate('/dashboards');\n return;\n }\n\n // Fetch dashboard from API\n fetchDashboard(dashboardId).then((dashboard) => {\n if (dashboard) {\n const builderDashboard: Dashboard = {\n ...dashboard,\n title: dashboard.name,\n description: dashboard.description ?? '',\n pages: dashboard.pages.map((page, index) => ({\n ...page,\n id: page.id,\n title: page.name ?? '',\n index,\n layoutConfig: page.layoutConfig ?? {},\n })),\n };\n setCurrentDashboard(builderDashboard);\n\n // Register dashboard name for breadcrumb display\n if (dashboard.name) {\n registerBreadcrumbName(dashboardId, dashboard.name);\n }\n } else {\n // Dashboard not found, redirect\n navigate('/dashboards');\n }\n });\n\n // Cleanup: unregister breadcrumb name on unmount\n return () => {\n if (dashboardId) {\n unregisterBreadcrumbName(dashboardId);\n }\n };\n }, [dashboardId, navigate, setCurrentDashboard, fetchDashboard]);\n\n // Handle paste widget from clipboard\n const handlePaste = useCallback(async () => {\n const pageId = activePageId ?? currentDashboard?.pages?.[0]?.id;\n if (!clipboardWidgetId || !dashboardId || !pageId) {\n return;\n }\n\n const sourceWidget = widgets.get(clipboardWidgetId);\n if (!sourceWidget) {\n clearClipboard();\n return;\n }\n\n // Use smart placement algorithm - horizontal first, then next row\n const widgetsArray = Array.from(widgets.values()).filter((widget) => widget.pageId === pageId);\n const gridColumns = currentDashboard?.pages.find((page) => page.id === pageId)?.gridColumns ?? 12;\n const widgetSize = {\n width: Math.min(sourceWidget.positionWidth ?? 4, gridColumns),\n height: sourceWidget.positionHeight ?? 4,\n };\n\n const { x, y } = findNextAvailablePosition(widgetsArray, widgetSize, { cols: gridColumns });\n\n const newPosition = {\n x,\n y,\n width: widgetSize.width,\n height: widgetSize.height,\n };\n\n const newTitle =\n clipboardAction === 'copy'\n ? t('bigconsole.dashboards.builder.actions.copySuffix', '{{title}} (Copy)', { title: sourceWidget.title })\n : sourceWidget.title;\n\n // Try duplicateWidget API first. A null result intentionally falls through\n // to the create mutation for older backends without duplicate support.\n let newWidget = await duplicateWidgetMutation(clipboardWidgetId, newPosition, newTitle).catch(() => null);\n\n // Fallback: Create new widget with source widget's data\n if (!newWidget) {\n newWidget = await createWidgetMutation({\n pageId,\n dashboardId,\n type: sourceWidget.type,\n title: newTitle,\n description: sourceWidget.description,\n // v2.0: Use dataSinkId and parserId instead of dataSourceId/dataPath\n dataSinkId: sourceWidget.dataSinkId ?? undefined,\n datasetId: sourceWidget.datasetId ?? undefined,\n parserId: sourceWidget.parserId ?? undefined,\n parserRules: sourceWidget.parserRules ?? undefined,\n config: sourceWidget.config || {},\n position: newPosition,\n refreshInterval: sourceWidget.refreshInterval ?? undefined,\n metadata: sourceWidget.metadata,\n });\n }\n\n if (newWidget) {\n selectWidget(newWidget.id);\n\n // If cut action, delete the original widget from backend\n if (clipboardAction === 'cut') {\n await deleteWidgetMutation(clipboardWidgetId);\n }\n }\n\n clearClipboard();\n }, [\n clipboardWidgetId,\n clipboardAction,\n dashboardId,\n activePageId,\n currentDashboard,\n widgets,\n duplicateWidgetMutation,\n createWidgetMutation,\n deleteWidgetMutation,\n selectWidget,\n clearClipboard,\n t,\n ]);\n\n // Keyboard shortcuts for canvas editing. Each shortcut is backed by the exact\n // same operation the on-screen controls use, so no new state path is\n // introduced — Delete/⌫ removes the selected widget, ⌘/Ctrl+C/X copy/cut it,\n // ⌘/Ctrl+V pastes, Esc deselects. State is read fresh from the stores at\n // event time (not via closure) so a keypress right after selecting is never\n // stale. Typing in form fields and dialog/sheet surfaces is never hijacked.\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (useDashboardStore.getState().viewMode !== 'edit') return;\n\n // Never hijack text entry (including fields inside the docked panel).\n const target = e.target as HTMLElement | null;\n if (target?.closest('input, textarea, select, [contenteditable=\"true\"]')) {\n return;\n }\n // Don't act while a modal dialog is open (e.g. the Add Widget wizard,\n // which renders an overlay). The properties panel is a non-modal Sheet\n // with no overlay, so canvas shortcuts stay live while it is focused.\n if (document.querySelector('[data-slot=\"dialog-overlay\"]')) {\n return;\n }\n\n const widgetStore = useWidgetStore.getState();\n const selectedId = widgetStore.selectedWidgetId;\n\n if (e.key === 'Escape') {\n widgetStore.selectWidget(null);\n return;\n }\n\n if ((e.key === 'Delete' || e.key === 'Backspace') && selectedId) {\n e.preventDefault();\n void deleteWidgetMutation(selectedId);\n widgetStore.selectWidget(null);\n return;\n }\n\n if (!(e.metaKey || e.ctrlKey)) return;\n\n if (e.key === 'c' && selectedId) {\n widgetStore.copyWidget(selectedId);\n } else if (e.key === 'x' && selectedId) {\n widgetStore.cutWidget(selectedId);\n } else if (e.key === 'v') {\n e.preventDefault();\n void handlePaste();\n }\n };\n\n // Capture phase: the app shell and Radix also register document keydown\n // listeners; intercepting here keeps the builder's editing keys reliable.\n // Only the keys we handle are preventDefault-ed, so global shortcuts\n // (e.g. \"g a\" navigation) are left untouched.\n document.addEventListener('keydown', handleKeyDown, true);\n return () => document.removeEventListener('keydown', handleKeyDown, true);\n }, [deleteWidgetMutation, handlePaste]);\n\n // Navigate back to the dashboards list\n const handleBack = useCallback(() => {\n navigate('/dashboards');\n }, [navigate]);\n\n // Handle save - save dirty widgets and batch update positions\n const handleSave = useCallback(async () => {\n if (!dashboardId) return;\n\n setIsSaving(true);\n setSaveError(null);\n try {\n // Get the LATEST state directly from store (avoid stale closure)\n const storeState = useWidgetStore.getState();\n const currentWidgets = Array.from(storeState.widgets.values());\n const currentDirtyIds = storeState.dirtyWidgetIds;\n // The placement counter as of the positions read above: a placement made while the\n // request is in flight must stay unsaved.\n const layoutRevisionAtSave = storeState.layoutEditRevision;\n // Set only when the positions really reached the server.\n let savedLayout: LayoutItem[] | null = currentWidgets.length === 0 ? [] : null;\n\n // Debug: Log dirty widget IDs\n\n // 1. Save dirty widgets (property changes like title, config, etc.)\n const dirtyWidgets = currentWidgets.filter((w) => currentDirtyIds.has(w.id));\n\n if (dirtyWidgets.length > 0) {\n // Save each dirty widget\n const updatePromises = dirtyWidgets.map((widget) => {\n const updateInput = {\n id: widget.id,\n title: widget.title,\n config: widget.config,\n refreshInterval: widget.refreshInterval ?? undefined,\n // v2.0: Use dataSinkId and parserId instead of dataSourceId/dataPath\n dataSinkId: widget.dataSinkId ?? undefined,\n datasetId: widget.datasetId ?? undefined,\n parserId: widget.parserId ?? undefined,\n parserRules: widget.parserRules ?? undefined,\n };\n\n return updateWidgetMutation(updateInput);\n });\n\n await Promise.all(updatePromises);\n\n // Clear dirty flags after successful save\n storeState.clearAllDirty();\n }\n\n // 2. Batch update widget positions\n if (currentWidgets.length > 0) {\n const positionUpdates = currentWidgets.map((widget) => ({\n id: widget.id,\n position: widget.position || {\n x: widget.positionX ?? 0,\n y: widget.positionY ?? 0,\n width: widget.positionWidth ?? 4,\n height: widget.positionHeight ?? 4,\n },\n }));\n\n // `batchUpdatePositions` never throws: it answers `false` when the server refused.\n if (await batchUpdatePositions(positionUpdates)) {\n savedLayout = layoutItemsFromPositionUpdates(positionUpdates);\n }\n }\n\n // 3. Update dashboard metadata if needed\n if (currentDashboard) {\n await updateDashboard({\n id: dashboardId,\n name: currentDashboard.title,\n description: currentDashboard.description,\n });\n }\n\n // Re-take the layout baseline on success only; a failed save stays unsaved.\n if (savedLayout) {\n markLayoutSaved(savedLayout, layoutRevisionAtSave);\n }\n } catch (error) {\n setSaveError(\n error instanceof Error\n ? error.message\n : t('bigconsole.dashboards.builder.errors.saveFailed', 'Failed to save dashboard')\n );\n } finally {\n setIsSaving(false);\n }\n }, [dashboardId, currentDashboard, updateWidgetMutation, batchUpdatePositions, updateDashboard, markLayoutSaved, t]);\n\n // Handle export\n const handleExport = useCallback(() => {\n setIsExportDialogOpen(true);\n }, []);\n\n const handleExportClose = useCallback(() => {\n setIsExportDialogOpen(false);\n }, []);\n\n // ============================================================================\n // Page Management Callbacks\n // ============================================================================\n\n // Handle page selection\n const handlePageChange = useCallback(\n (pageId: string) => {\n setActivePage(pageId);\n },\n [setActivePage]\n );\n\n // Handle adding a new page\n const handlePageAdd = useCallback(async () => {\n if (!currentDashboard || !dashboardId) return;\n\n const newPageCount = currentDashboard.pages.length + 1;\n const newPageName = t('bigconsole.dashboards.builder.actions.newPageName', 'Page {{count}}', {\n count: newPageCount,\n });\n\n // Call GraphQL mutation to create page\n // Note: 'order' is not available for create - backend auto-assigns order\n const newPage = await createPageMutation({\n dashboardId,\n name: newPageName,\n gridColumns: loadBigConsoleSettings().defaultGridColumns,\n });\n\n if (newPage) {\n // Update local state with the created page\n setCurrentDashboard({\n ...currentDashboard,\n pages: [\n ...currentDashboard.pages,\n {\n id: newPage.id,\n title: newPage.name,\n index: newPage.order,\n layoutConfig: newPage.layoutConfig || {},\n gridColumns: newPage.gridColumns,\n },\n ],\n });\n\n // Switch to the new page\n setActivePage(newPage.id);\n }\n }, [currentDashboard, dashboardId, setCurrentDashboard, createPageMutation, setActivePage, t]);\n\n // Handle renaming a page\n const handlePageRename = useCallback(\n async (pageId: string, newName: string) => {\n if (!currentDashboard) return;\n\n // Call GraphQL mutation to update page\n const updatedPage = await updatePageMutation({\n id: pageId,\n name: newName,\n });\n\n if (updatedPage) {\n setCurrentDashboard({\n ...currentDashboard,\n pages: currentDashboard.pages.map((page) => (page.id === pageId ? { ...page, title: newName } : page)),\n });\n }\n },\n [currentDashboard, setCurrentDashboard, updatePageMutation]\n );\n\n // Handle duplicating a page\n const handlePageDuplicate = useCallback(\n async (pageId: string) => {\n if (!currentDashboard || !dashboardId) return;\n\n const sourcePage = currentDashboard.pages.find((p) => p.id === pageId);\n if (!sourcePage) return;\n\n // Call GraphQL mutation to create a copy of the page\n // Note: 'order' is not available for create - backend auto-assigns order\n // Note: 'layout' should be PageLayout enum ('GRID', 'FLEX', 'FREEFORM'), not layoutConfig object\n const newPage = await createPageMutation({\n dashboardId,\n gridColumns: sourcePage.gridColumns,\n name: t('bigconsole.dashboards.builder.actions.copySuffix', '{{title}} (Copy)', {\n title: sourcePage.title ?? '',\n }),\n });\n\n if (newPage) {\n setCurrentDashboard({\n ...currentDashboard,\n pages: [\n ...currentDashboard.pages,\n {\n id: newPage.id,\n title: newPage.name,\n index: newPage.order,\n layoutConfig: newPage.layoutConfig || {},\n gridColumns: newPage.gridColumns,\n },\n ],\n });\n\n setActivePage(newPage.id);\n }\n },\n [currentDashboard, dashboardId, setCurrentDashboard, createPageMutation, setActivePage, t]\n );\n\n // Handle deleting a page\n const handlePageDelete = useCallback(\n async (pageId: string) => {\n if (!currentDashboard || currentDashboard.pages.length <= 1) return;\n\n // Call GraphQL mutation to delete page\n const success = await deletePageMutation(pageId);\n\n if (success) {\n const updatedPages = currentDashboard.pages.filter((p) => p.id !== pageId).map((p, index) => ({ ...p, index }));\n\n setCurrentDashboard({\n ...currentDashboard,\n pages: updatedPages,\n });\n\n // Switch to first page if current page was deleted (replace: Back must\n // not return to a page that no longer exists).\n const firstPageId = updatedPages[0]?.id;\n if (activePageId === pageId && firstPageId) {\n setActivePage(firstPageId, { replace: true });\n }\n }\n },\n [currentDashboard, setCurrentDashboard, activePageId, deletePageMutation, setActivePage]\n );\n\n // Handle reordering pages\n const handlePagesReorder = useCallback(\n async (reorderedPages: DashboardPage[]) => {\n if (!currentDashboard || !dashboardId) return;\n\n // Update local state optimistically\n setCurrentDashboard({\n ...currentDashboard,\n pages: reorderedPages.map((page, index) => ({\n ...page,\n index,\n })),\n });\n\n // Call GraphQL mutation to persist the reorder\n const pageIds = reorderedPages.map((p) => p.id);\n await reorderPagesMutation(dashboardId, pageIds);\n },\n [currentDashboard, dashboardId, setCurrentDashboard, reorderPagesMutation]\n );\n\n // Permission read gate — resolve the provider first, then block the builder\n // for callers without dashboard read access. Kept ahead of error/loading\n // returns so an unauthorized caller never reaches the edit surface.\n if (permissionsLoading) {\n return (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"animate-spin w-8 h-8 border-4 border-action-primary-bg border-t-transparent rounded-full\" />\n </div>\n );\n }\n\n if (!canRead) {\n return (\n <AccessDenied\n title={t('bigconsole.dashboards.builder.errors.accessDeniedTitle', 'Access Denied')}\n description={t(\n 'bigconsole.dashboards.builder.errors.accessDeniedDescription',\n \"You don't have permission to view this dashboard.\"\n )}\n />\n );\n }\n\n // Show error state\n if (dashboardError) {\n return (\n <div className=\"flex h-full flex-col items-center justify-center p-6\">\n <Section\n headingLevel={2}\n tone=\"danger\"\n title={t('bigconsole.dashboards.builder.errors.loadFailed', 'Failed to load dashboard')}\n description={<span className=\"break-words\">{dashboardError.message}</span>}\n className=\"w-full max-w-md\"\n data-testid=\"dashboard-builder-error\"\n actions={\n <Button size=\"sm\" onClick={() => navigate('/dashboards')}>\n {t('bigconsole.dashboards.builder.actions.backToDashboards', 'Back to Dashboards')}\n </Button>\n }\n />\n </div>\n );\n }\n\n // Show loading state\n if (dashboardLoading || !currentDashboard) {\n return (\n <div className=\"flex items-center justify-center h-full\" role=\"status\" aria-live=\"polite\">\n <div className=\"animate-spin w-8 h-8 border-4 border-action-primary-bg border-t-transparent rounded-full\" />\n <span className=\"sr-only\">Loading dashboard…</span>\n </div>\n );\n }\n\n return (\n <DashboardEditorShell\n topbar={\n <BuilderTopbar\n title={\n currentDashboard.title || t('bigconsole.dashboards.builder.header.untitledDashboard', 'Untitled dashboard')\n }\n onBack={handleBack}\n actions={\n <div className=\"flex items-center gap-2\">\n {saveError ? (\n <span className=\"text-xs font-medium text-status-error-text\" role=\"alert\">\n {saveError}\n </span>\n ) : null}\n {/* AI custom-widget authoring creates a widget → gate on WIDGET_CREATE. */}\n {canCreateWidget ? (\n <button\n type=\"button\"\n data-testid=\"open-custom-widget-builder\"\n onClick={() => setIsCustomWidgetBuilderOpen(true)}\n className={`inline-flex min-h-control-md items-center rounded-button border border-[var(--color-border-subtle)] px-2 py-1 text-xs font-medium text-text-primary motion-safe:transition-colors hover:bg-bg-sunken ${SECTION_FOCUS_RING}`}\n >\n {t('bigconsole.dashboards.builder.toolbar.aiWidget', 'AI widget')}\n </button>\n ) : null}\n </div>\n }\n />\n }\n >\n <BuilderCanvas\n canvas={\n <DashboardCanvas\n dashboardId={currentDashboard.id}\n pageId={activePageId || currentDashboard.pages?.[0]?.id}\n title={currentDashboard.title}\n onPaste={handlePaste}\n // Gate action controls: DashboardToolbar renders each button only\n // when its handler is defined, so passing undefined hides the\n // control for callers lacking the permission.\n onSave={canUpdate ? handleSave : undefined}\n isSaving={isSaving}\n onExport={canExport ? handleExport : undefined}\n // Page tabs props\n pages={currentDashboard.pages.map((page) => ({\n id: page.id,\n name:\n page.title ||\n t('bigconsole.dashboards.builder.actions.newPageName', 'Page {{count}}', {\n count: (page.index ?? 0) + 1,\n }),\n order: page.index ?? 0,\n }))}\n activePageId={activePageId || currentDashboard.pages?.[0]?.id}\n onPageChange={handlePageChange}\n onPageAdd={handlePageAdd}\n onPageRename={handlePageRename}\n onPageDuplicate={handlePageDuplicate}\n onPageDelete={handlePageDelete}\n onPagesReorder={handlePagesReorder}\n showPageTabs={true}\n />\n }\n />\n\n <ExportDashboardDialog\n isOpen={isExportDialogOpen}\n dashboardId={currentDashboard.id}\n dashboardName={currentDashboard.title}\n onClose={handleExportClose}\n />\n\n <CustomWidgetBuilderSheet\n isOpen={isCustomWidgetBuilderOpen}\n onClose={() => setIsCustomWidgetBuilderOpen(false)}\n dashboardId={currentDashboard.id}\n pageId={activePageId || currentDashboard.pages?.[0]?.id || ''}\n />\n </DashboardEditorShell>\n );\n});\n\nexport default DashboardBuilderPage;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardViewPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/DashboardViewPage.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAkD,MAAM,OAAO,CAAC;AA2BhF,eAAO,MAAM,iBAAiB,EAAE,EA6oB9B,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardViewPage.js","names":[],"sources":["../../../src/bigconsole/pages/DashboardViewPage.tsx"],"sourcesContent":["/**\n * DashboardViewPage\n *\n * View/edit a single dashboard - fetches data from real backend.\n * Supports drilldown context propagation via URL parameters.\n */\n\nimport { type FC, memo, useEffect, useCallback, useState, useRef } from 'react';\nimport { useLocation, useParams } from 'react-router';\nimport { ArrowLeft } from 'lucide-react';\nimport { Button, IllustratedEmptyState } from '@burdenoff/fe-libs/ui';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { AccessDenied } from '@burdenoff/fe-libs/shared/components';\nimport { BIGCONSOLE_PERMISSIONS } from '../../constants/permissions';\nimport { useBigConsoleNavigate } from '../context';\nimport {\n DashboardCanvas,\n ExportDashboardDialog,\n PublishToStoreDialog,\n DrilldownBreadcrumb,\n LiveCanvasToggle,\n} from '../components/dashboard';\nimport { Section } from '../components/common';\nimport { useDashboardStore, useWidgetStore } from '../store';\nimport { useDashboardOperations, useWidgetOperations, usePageOperations } from '../hooks';\nimport { useFilterUrlSync, parseUrlToGlobalFilterValues } from '../hooks/useFilterUrlSync';\nimport { useActivePage } from '../hooks/useActivePage';\nimport { loadBigConsoleSettings } from '../hooks/useBigConsoleSettings';\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const DashboardViewPage: FC = memo(function DashboardViewPage() {\n const { dashboardId } = useParams<{ dashboardId: string }>();\n const navigate = useBigConsoleNavigate();\n const { t } = useI18n();\n\n // RBAC gating. Read gate blocks the whole board; action gates hide the\n // corresponding toolbar controls (the toolbar renders each control only when\n // its handler is passed, so an undefined handler cleanly removes it).\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const canRead = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_READ);\n const canUpdate = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_UPDATE);\n const canExport = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_EXPORT);\n const canPublish = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_PUBLISH);\n\n const [isSaving, setIsSaving] = useState(false);\n const [notFound, setNotFound] = useState(false);\n const [isExportDialogOpen, setIsExportDialogOpen] = useState(false);\n // Live canvas: when on, poll the dashboard + widget STRUCTURE so server-side\n // pipeline builds (AI assistant agent or any other writer) appear without a reload.\n const [isLive, setIsLive] = useState(false);\n\n // Drilldown context from URL\n const { isInDrilldown, getContextFromUrl, getDrilldownMetadata } = useFilterUrlSync();\n\n // Store actions\n const currentDashboard = useDashboardStore((state) => state.currentDashboard);\n const setCurrentDashboard = useDashboardStore((state) => state.setCurrentDashboard);\n const setGlobalFilterValue = useDashboardStore((state) => state.setGlobalFilterValue);\n const clearAllGlobalFilters = useDashboardStore((state) => state.clearAllGlobalFilters);\n const setGlobalFilterValues = useDashboardStore((state) => state.setGlobalFilterValues);\n const widgets = useWidgetStore((state) => state.widgets);\n // The active page lives in the URL (`?page=`) so tab switches and drilldowns\n // are Back-able history entries (BOFF-7625).\n const location = useLocation();\n const { activePageId: currentPageId, setActivePage } = useActivePage(\n currentDashboard?.id === dashboardId ? currentDashboard?.pages : undefined\n );\n const clipboardWidgetId = useWidgetStore((state) => state.clipboardWidgetId);\n const clipboardAction = useWidgetStore((state) => state.clipboardAction);\n const clearClipboard = useWidgetStore((state) => state.clearClipboard);\n const selectWidget = useWidgetStore((state) => state.selectWidget);\n\n // Dashboard operations hook\n const { loading, error, fetchDashboard, updateDashboard } = useDashboardOperations();\n\n // Widget operations hook\n const {\n createWidget: createWidgetMutation,\n deleteWidget: deleteWidgetMutation,\n duplicateWidget: duplicateWidgetMutation,\n batchUpdatePositions,\n refetch: refetchWidgets,\n } = useWidgetOperations(currentPageId || undefined, dashboardId);\n\n // Page operations hook\n const {\n createPage: createPageMutation,\n updatePage: updatePageMutation,\n deletePage: deletePageMutation,\n reorderPages: reorderPagesMutation,\n } = usePageOperations();\n\n // Load dashboard data\n useEffect(() => {\n if (!dashboardId) {\n navigate('/dashboards');\n return;\n }\n\n // Replace stale values with this route's explicit filters. Loading can run\n // again when the workspace client refreshes; clearing here would discard a\n // shared filtered view before the URL hook gets another navigation event.\n setGlobalFilterValues(parseUrlToGlobalFilterValues(window.location.search, 'filter_'));\n\n setNotFound(false);\n\n // Fetch dashboard from backend. The page to show comes from the URL\n // (`?page=`), falling back to the first page (useActivePage).\n fetchDashboard(dashboardId).then((dashboard) => {\n if (!dashboard) {\n setNotFound(true);\n }\n });\n\n // Cleanup\n return () => {\n setCurrentDashboard(null);\n clearAllGlobalFilters();\n setNotFound(false);\n };\n }, [dashboardId, navigate, fetchDashboard, setCurrentDashboard, clearAllGlobalFilters, setGlobalFilterValues]);\n\n // Load drilldown context from URL and apply to global filters. Keyed on the\n // search string too: a drilldown into another page of THIS dashboard keeps\n // the component mounted and only changes the query (BOFF-7625).\n useEffect(() => {\n if (!isInDrilldown) return;\n\n // Get context params from URL (ctx_* params)\n const contextParams = getContextFromUrl();\n const drilldownMeta = getDrilldownMetadata();\n\n // Apply context to dashboard state (available for widgets to use)\n // Store as special filter values that widgets can reference\n Object.entries(contextParams).forEach(([key, value]) => {\n // Store context params as global filter values with ctx_ prefix for clarity\n setGlobalFilterValue(`ctx_${key}`, value);\n });\n\n // Store drilldown metadata as special values\n if (drilldownMeta.depth > 0) {\n setGlobalFilterValue('__drilldown_depth', drilldownMeta.depth);\n setGlobalFilterValue('__drilldown_parent', drilldownMeta.parent);\n setGlobalFilterValue('__drilldown_path', drilldownMeta.path);\n }\n\n // Log for debugging\n if (Object.keys(contextParams).length > 0) {\n console.debug('[DashboardViewPage] Loaded drilldown context:', {\n context: contextParams,\n metadata: drilldownMeta,\n });\n }\n }, [isInDrilldown, getContextFromUrl, getDrilldownMetadata, setGlobalFilterValue, location.search]);\n\n // ---------------------------------------------------------------------------\n // Live canvas: poll dashboard + widget STRUCTURE while live mode is on.\n //\n // The per-widget DATA poll (WidgetWrapper → refreshInterval) already keeps\n // numbers fresh, but nothing refetches the board's STRUCTURE, so a widget the\n // AI assistant's api-calls agent (DataSink → Parser → Widget) — or any other\n // server-side writer — adds would never appear without a manual reload. This\n // interval closes that gap: it silently refetches the dashboard (pages) and\n // the widget list, so new widgets/pages materialise on the canvas live.\n //\n // Efficiency: it runs ONLY while live mode is on AND the tab is visible, and\n // pauses while the board is in edit mode so a poll cannot clobber an in-flight\n // drag/resize. Polling, not subscriptions — the backend GraphQL server is\n // HTTP-only with no graphql-ws/PubSub transport (see LiveBoardBanner).\n //\n // Latency note: the floor on how quickly a change shows up is NOT this poll\n // interval but fe-libs' shared GraphQL read cache (RECENT_QUERY_CACHE_TTL_MS,\n // ~15s) — `network-only` is served from that short-lived client cache, so a\n // newly-created widget surfaces on the next poll AFTER its cache entry\n // expires. No manual reload is ever needed; worst-case freshness is ~15s.\n // ---------------------------------------------------------------------------\n const refetchWidgetsRef = useRef(refetchWidgets);\n refetchWidgetsRef.current = refetchWidgets;\n\n useEffect(() => {\n if (!isLive || !dashboardId) return;\n\n const LIVE_POLL_MS = 3500;\n\n const pollStructure = () => {\n // Skip work when the tab is backgrounded or the board is being edited.\n if (typeof document !== 'undefined' && document.visibilityState !== 'visible') return;\n if (useDashboardStore.getState().viewMode === 'edit') return;\n void fetchDashboard(dashboardId, { silent: true });\n void refetchWidgetsRef.current();\n };\n\n // Refetch immediately on enable so newly-built widgets show up at once,\n // then settle into the cadence.\n pollStructure();\n const intervalId = window.setInterval(pollStructure, LIVE_POLL_MS);\n\n // Catch up the moment the operator returns to the tab.\n const handleVisibility = () => {\n if (document.visibilityState === 'visible') pollStructure();\n };\n document.addEventListener('visibilitychange', handleVisibility);\n\n return () => {\n window.clearInterval(intervalId);\n document.removeEventListener('visibilitychange', handleVisibility);\n };\n }, [isLive, dashboardId, fetchDashboard]);\n\n // Handle save - batch update widget positions and dashboard metadata\n const handleSave = useCallback(async () => {\n if (!dashboardId) return;\n\n setIsSaving(true);\n try {\n // Get all widgets and their positions\n const widgetList = Array.from(widgets.values());\n if (widgetList.length > 0) {\n const positionUpdates = widgetList.map((widget) => ({\n id: widget.id,\n position: widget.position,\n }));\n\n await batchUpdatePositions(positionUpdates);\n }\n\n // Update dashboard metadata if needed\n if (currentDashboard) {\n await updateDashboard({\n id: dashboardId,\n name: currentDashboard.name,\n description: currentDashboard.description,\n });\n }\n } catch (error) {\n } finally {\n setIsSaving(false);\n }\n }, [dashboardId, widgets, currentDashboard, batchUpdatePositions, updateDashboard]);\n\n // Navigate back to the dashboards list\n const handleBack = useCallback(() => {\n navigate('/dashboards');\n }, [navigate]);\n\n // Handle page change\n const handlePageChange = useCallback(\n (pageId: string) => {\n setActivePage(pageId);\n },\n [setActivePage]\n );\n\n // Handle paste widget from clipboard\n const handlePaste = useCallback(async () => {\n const pageId = currentPageId || currentDashboard?.pages?.[0]?.id;\n if (!clipboardWidgetId || !dashboardId || !pageId) {\n return;\n }\n\n const sourceWidget = widgets.get(clipboardWidgetId);\n if (!sourceWidget) {\n clearClipboard();\n return;\n }\n\n // Calculate new position (place at bottom of existing widgets)\n const widgetsArray = Array.from(widgets.values());\n const maxY = widgetsArray.reduce((max, w) => {\n const widgetBottom = (w.positionY ?? 0) + (w.positionHeight ?? 4);\n return Math.max(max, widgetBottom);\n }, 0);\n\n const newPosition = {\n x: 0,\n y: maxY,\n width: Math.min(\n sourceWidget.positionWidth ?? 4,\n currentDashboard?.pages.find((page) => page.id === pageId)?.gridColumns ?? 12\n ),\n height: sourceWidget.positionHeight ?? 4,\n };\n\n const newTitle =\n clipboardAction === 'copy'\n ? t('bigconsole.dashboards.view.widgetCopyTitle', '{{title}} (Copy)', { title: sourceWidget.title })\n : sourceWidget.title;\n\n let newWidget = null;\n\n // Try duplicateWidget API first\n try {\n newWidget = await duplicateWidgetMutation(clipboardWidgetId, newPosition, newTitle);\n } catch (err) {}\n\n // Fallback: Create new widget with source widget's data\n if (!newWidget) {\n newWidget = await createWidgetMutation({\n pageId,\n dashboardId,\n type: sourceWidget.type,\n title: newTitle,\n description: sourceWidget.description,\n // v2.0: Data source fields (DataSink → Parser → Widget)\n dataSinkId: (sourceWidget as unknown as Record<string, string | undefined>).dataSinkId,\n datasetId: (sourceWidget as unknown as Record<string, string | undefined>).datasetId,\n parserId: (sourceWidget as unknown as Record<string, string | undefined>).parserId,\n parserRules: (sourceWidget as unknown as Record<string, string | undefined>).parserRules,\n config: sourceWidget.config || {},\n position: newPosition,\n refreshInterval: sourceWidget.refreshInterval ?? undefined,\n metadata: sourceWidget.metadata,\n });\n }\n\n if (newWidget) {\n selectWidget(newWidget.id);\n\n // If cut action, delete the original widget from backend\n if (clipboardAction === 'cut') {\n await deleteWidgetMutation(clipboardWidgetId);\n }\n }\n\n clearClipboard();\n }, [\n clipboardWidgetId,\n clipboardAction,\n dashboardId,\n currentPageId,\n currentDashboard,\n widgets,\n duplicateWidgetMutation,\n createWidgetMutation,\n deleteWidgetMutation,\n selectWidget,\n clearClipboard,\n t,\n ]);\n\n // Handle export\n const handleExport = useCallback(() => {\n setIsExportDialogOpen(true);\n }, []);\n\n // Publish this dashboard as a reusable store template\n const [isPublishDialogOpen, setIsPublishDialogOpen] = useState(false);\n const handlePublishTemplate = useCallback(() => {\n setIsPublishDialogOpen(true);\n }, []);\n const handlePublishClose = useCallback(() => {\n setIsPublishDialogOpen(false);\n }, []);\n\n const handleExportClose = useCallback(() => {\n setIsExportDialogOpen(false);\n }, []);\n\n // ============================================================================\n // Page Management Callbacks\n // ============================================================================\n\n // Handle adding a new page\n const handlePageAdd = useCallback(async () => {\n if (!currentDashboard || !dashboardId) return;\n\n const newPageCount = (currentDashboard.pages?.length || 0) + 1;\n const newPageName = t('bigconsole.dashboards.view.pageName', 'Page {{count}}', { count: newPageCount });\n\n // Call GraphQL mutation to create page\n // Note: 'order' is not available for create - backend auto-assigns order\n const newPage = await createPageMutation({\n dashboardId,\n name: newPageName,\n gridColumns: loadBigConsoleSettings().defaultGridColumns,\n });\n\n if (newPage) {\n // Update local state with the created page\n setCurrentDashboard({\n ...currentDashboard,\n pages: [...(currentDashboard.pages || []), newPage],\n });\n\n // Switch to the new page\n setActivePage(newPage.id);\n }\n }, [currentDashboard, dashboardId, setCurrentDashboard, createPageMutation, setActivePage, t]);\n\n // Handle renaming a page\n const handlePageRename = useCallback(\n async (pageId: string, newName: string) => {\n if (!currentDashboard) return;\n\n // Call GraphQL mutation to update page\n const updatedPage = await updatePageMutation({\n id: pageId,\n name: newName,\n });\n\n if (updatedPage) {\n setCurrentDashboard({\n ...currentDashboard,\n pages: currentDashboard.pages?.map((page) => (page.id === pageId ? { ...page, name: newName } : page)),\n });\n }\n },\n [currentDashboard, setCurrentDashboard, updatePageMutation]\n );\n\n // Handle duplicating a page\n const handlePageDuplicate = useCallback(\n async (pageId: string) => {\n if (!currentDashboard || !dashboardId) return;\n\n const sourcePage = currentDashboard.pages?.find((p) => p.id === pageId);\n if (!sourcePage) return;\n\n // Call GraphQL mutation to create a copy of the page\n // Note: 'order' is not available for create - backend auto-assigns order\n const newPage = await createPageMutation({\n dashboardId,\n gridColumns: sourcePage.gridColumns,\n name: t('bigconsole.dashboards.view.pageCopyName', '{{name}} (Copy)', {\n name: sourcePage.name ?? '',\n }),\n });\n\n if (newPage) {\n setCurrentDashboard({\n ...currentDashboard,\n pages: [...(currentDashboard.pages || []), newPage],\n });\n\n setActivePage(newPage.id);\n }\n // Note: Widget duplication would require additional backend support\n },\n [currentDashboard, dashboardId, setCurrentDashboard, createPageMutation, setActivePage, t]\n );\n\n // Handle deleting a page\n const handlePageDelete = useCallback(\n async (pageId: string) => {\n if (!currentDashboard || (currentDashboard.pages?.length || 0) <= 1) return;\n\n // Call GraphQL mutation to delete page\n const success = await deletePageMutation(pageId);\n\n if (success) {\n const updatedPages = currentDashboard.pages\n ?.filter((p) => p.id !== pageId)\n .map((p, index) => ({ ...p, order: index }));\n\n setCurrentDashboard({\n ...currentDashboard,\n pages: updatedPages,\n });\n\n // Switch to first page if current page was deleted. Replace, so Back\n // does not return to a page that no longer exists.\n const firstPageId = updatedPages?.[0]?.id;\n if (currentPageId === pageId && firstPageId) {\n setActivePage(firstPageId, { replace: true });\n }\n }\n },\n [currentDashboard, setCurrentDashboard, currentPageId, deletePageMutation, setActivePage]\n );\n\n // Handle reordering pages\n const handlePagesReorder = useCallback(\n async (reorderedPages: Array<{ id: string; name?: string; order?: number }>) => {\n if (!currentDashboard || !dashboardId) return;\n\n // Update local state optimistically\n setCurrentDashboard({\n ...currentDashboard,\n pages: reorderedPages.map((page, index) => ({\n ...page,\n order: index,\n })),\n });\n\n // Call GraphQL mutation to persist the reorder\n const pageIds = reorderedPages.map((p) => p.id);\n await reorderPagesMutation(dashboardId, pageIds);\n },\n [currentDashboard, dashboardId, setCurrentDashboard, reorderPagesMutation]\n );\n\n // Permission read gate — wait for the provider to resolve before deciding,\n // then block the board for callers without dashboard read access. Placed\n // ahead of error/not-found/loading returns so an unauthorized caller never\n // sees dashboard contents; those returns remain reachable once read is allowed.\n if (permissionsLoading) {\n return (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"animate-spin w-8 h-8 border-4 border-action-primary-bg border-t-transparent rounded-full\" />\n </div>\n );\n }\n\n if (!canRead) {\n return (\n <AccessDenied\n title={t('bigconsole.dashboards.view.accessDeniedTitle', 'Access Denied')}\n description={t(\n 'bigconsole.dashboards.view.accessDeniedDescription',\n \"You don't have permission to view this dashboard.\"\n )}\n />\n );\n }\n\n // Error state\n if (error) {\n return (\n <div className=\"flex h-full flex-col items-center justify-center\" style={{ padding: 'var(--space-pagePadding)' }}>\n <Section\n headingLevel={2}\n tone=\"danger\"\n title={t('bigconsole.dashboards.view.errorTitle', 'Error loading dashboard')}\n description={<span className=\"break-words\">{error.message}</span>}\n className=\"w-full max-w-md\"\n data-testid=\"dashboard-view-error\"\n actions={\n <>\n <Button size=\"sm\" onClick={() => fetchDashboard(dashboardId!)}>\n {t('bigconsole.dashboards.view.retry', 'Retry')}\n </Button>\n <Button size=\"sm\" variant=\"outline\" onClick={() => navigate('/dashboards')}>\n {t('bigconsole.dashboards.view.backToDashboards', 'Back to Dashboards')}\n </Button>\n </>\n }\n />\n </div>\n );\n }\n\n // Not found state\n if (notFound) {\n return (\n <div className=\"flex flex-col items-center justify-center h-full\" style={{ padding: 'var(--space-pagePadding)' }}>\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={t('bigconsole.dashboards.view.notFoundTitle', 'Dashboard not found')}\n description={\n <>\n {t(\n 'bigconsole.dashboards.view.notFoundDescription',\n \"The dashboard you're looking for doesn't exist or has been deleted.\"\n )}\n <span className=\"mt-2 block font-mono text-xs text-text-muted break-all\">\n {t('bigconsole.dashboards.view.idLabel', 'ID: {{id}}', { id: dashboardId ?? '' })}\n </span>\n </>\n }\n action={\n <Button onClick={() => navigate('/dashboards')}>\n {t('bigconsole.dashboards.view.backToDashboards', 'Back to Dashboards')}\n </Button>\n }\n />\n </div>\n );\n }\n\n // Loading state\n if (loading || !currentDashboard) {\n return (\n <div className=\"flex items-center justify-center h-full\" role=\"status\" aria-live=\"polite\">\n <div className=\"flex flex-col items-center gap-4\">\n <div className=\"animate-spin w-8 h-8 border-4 border-action-primary-bg border-t-transparent rounded-full\" />\n <p className=\"text-sm text-text-secondary\">\n {t('bigconsole.dashboards.view.loading', 'Loading dashboard...')}\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full flex flex-col overflow-hidden\">\n {/*\n Route identity strip. This is the ONLY place the board is named on this\n route — the toolbar below it deliberately carries no title, so the user\n never sees the same name twice in two stacked bands.\n */}\n <Section\n emphasis=\"bare\"\n padding=\"none\"\n data-testid=\"dashboard-route-header\"\n // Landmark name only; no catalog key exists for it yet.\n aria-label=\"Dashboard\"\n className=\"flex-shrink-0 border-b border-[var(--color-border-subtle)] bg-bg-surface px-3 py-2\"\n headerClassName=\"\"\n header={\n <div className=\"flex flex-wrap items-center gap-control-gap\">\n <Button\n onClick={handleBack}\n variant=\"ghost\"\n size=\"sm\"\n title={t('bigconsole.dashboards.view.backToDashboards', 'Back to Dashboards')}\n aria-label={t('bigconsole.dashboards.view.backToDashboards', 'Back to Dashboards')}\n className=\"flex-shrink-0\"\n >\n <ArrowLeft className=\"w-4 h-4 mr-2\" />\n {t('bigconsole.dashboards.view.back', 'Back')}\n </Button>\n <h1\n className=\"min-w-0 flex-1 truncate text-sm font-semibold text-text-primary\"\n title={currentDashboard.name}\n >\n {currentDashboard.name}\n </h1>\n {/* Live canvas toggle — watch server-side pipeline builds appear without a reload */}\n <div className=\"flex-shrink-0\">\n <LiveCanvasToggle isLive={isLive} onToggle={() => setIsLive((prev) => !prev)} />\n </div>\n </div>\n }\n />\n\n {/* Drilldown Breadcrumb - shown when navigating via drilldown */}\n {isInDrilldown && (\n <DrilldownBreadcrumb\n currentDashboardId={currentDashboard.id}\n currentDashboardName={currentDashboard.name}\n basePath=\"/bigconsole/dashboards\"\n />\n )}\n\n {/* Dashboard Canvas with Page Tabs */}\n <div className=\"flex-1 min-w-0 overflow-hidden\">\n <DashboardCanvas\n dashboardId={currentDashboard.id}\n pageId={currentPageId || currentDashboard.pages?.[0]?.id}\n title={currentDashboard.name}\n onPaste={handlePaste}\n // Gate editor/action controls: DashboardToolbar renders each button\n // only when its handler is defined, so passing undefined hides the\n // control for callers lacking the permission.\n onSave={canUpdate ? handleSave : undefined}\n isSaving={isSaving}\n onExport={canExport ? handleExport : undefined}\n onPublishTemplate={canPublish ? handlePublishTemplate : undefined}\n // Page tabs props\n pages={(currentDashboard.pages || []).map((page, index) => ({\n id: page.id,\n name: page.name || t('bigconsole.dashboards.view.pageName', 'Page {{count}}', { count: index + 1 }),\n order: page.order ?? 0,\n }))}\n activePageId={currentPageId || currentDashboard.pages?.[0]?.id}\n onPageChange={handlePageChange}\n onPageAdd={handlePageAdd}\n onPageRename={handlePageRename}\n onPageDuplicate={handlePageDuplicate}\n onPageDelete={handlePageDelete}\n onPagesReorder={handlePagesReorder}\n showPageTabs={true}\n />\n </div>\n\n {/* Export Dashboard Dialog */}\n <ExportDashboardDialog\n isOpen={isExportDialogOpen}\n dashboardId={currentDashboard.id}\n dashboardName={currentDashboard.name}\n onClose={handleExportClose}\n />\n\n {/* Publish as Template */}\n <PublishToStoreDialog\n isOpen={isPublishDialogOpen}\n dashboardId={currentDashboard.id}\n dashboardName={currentDashboard.name}\n dashboardDescription={currentDashboard.description}\n onClose={handlePublishClose}\n />\n </div>\n );\n});\n\nexport default DashboardViewPage;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardsPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/DashboardsPage.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,EAA0C,MAAM,OAAO,CAAC;AA2MxE,eAAO,MAAM,cAAc,EAAE,EAsrC3B,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardsPage.js","names":[],"sources":["../../../src/bigconsole/pages/DashboardsPage.tsx"],"sourcesContent":["/**\n * DashboardsPage\n *\n * List and manage dashboards - fetches data from real backend.\n * Uses fe-libs shared UI components and semantic tokens for consistent styling.\n */\n\nimport { type FC, memo, useState, useCallback, useEffect } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { AccessDenied, PermissionButton } from '@burdenoff/fe-libs/shared/components';\nimport { BIGCONSOLE_PERMISSIONS } from '../../constants/permissions';\nimport { useBigConsoleNavigate } from '../context';\nimport { isNative, nativeConfirm, nativeImpact, nativeNotify } from '../../utils/nativeBridge';\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { Input } from '@burdenoff/fe-libs/ui';\nimport { Card, CardContent } from '@burdenoff/fe-libs/ui';\nimport { Badge } from '@burdenoff/fe-libs/ui';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport {\n AuroraBackground,\n GradientText,\n GlassCard,\n IllustratedEmptyState,\n CTAOverflowMenu,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Plus,\n Upload,\n Search,\n LayoutDashboard,\n Calendar,\n Layers,\n FileText,\n Pencil,\n Trash2,\n Copy,\n LayoutGrid,\n List,\n ChevronLeft,\n ChevronRight,\n} from 'lucide-react';\nimport { useDashboardOperations } from '../hooks';\nimport { CreateDashboardDialog } from '../components/dashboard/CreateDashboardDialog';\nimport { DashboardStatusPill, useDashboardStatusLabel } from '../components/dashboard/DashboardStatusPill';\nimport { ImportDashboardDialog } from '../components/dashboard/ImportDashboardDialog';\nimport { Section, SectionStack } from '../components/common';\nimport { reportBigConsoleQuotaError } from '../utils/quota';\nimport { resolveCreateParam, withoutCreateParam } from '../utils/createDialogParam';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\nconst VIEW_MODE_STORAGE_KEY = 'bf-bigconsole-dashboards-view';\n\n/** Number of dashboards shown per page in the list/grid views. */\nconst PAGE_SIZE = 12;\n\n/** How many numbered page buttons to render before falling back to a window. */\nconst MAX_PAGE_BUTTONS = 7;\n\n/**\n * Numbered pages to render around the current one.\n *\n * Rendering one button per page turns a workspace with a hundred boards into a\n * multi-line wall of numbers — on a 390px viewport that block is taller than\n * the result it paginates. Windowing keeps the footer to a single row at every\n * breakpoint; `null` marks an elided run.\n */\nfunction getPageWindow(currentPage: number, totalPages: number): Array<number | null> {\n if (totalPages <= MAX_PAGE_BUTTONS) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const pages = new Set<number>([1, totalPages, currentPage]);\n if (currentPage - 1 > 1) pages.add(currentPage - 1);\n if (currentPage + 1 < totalPages) pages.add(currentPage + 1);\n\n const ordered = Array.from(pages).sort((a, b) => a - b);\n const windowed: Array<number | null> = [];\n ordered.forEach((page, index) => {\n if (index > 0 && page - ordered[index - 1] > 1) windowed.push(null);\n windowed.push(page);\n });\n return windowed;\n}\n\n// ============================================================================\n// Page header band\n// ============================================================================\n\ninterface DashboardsHeaderBandProps {\n title: string;\n subtitle: string;\n createLabel: string;\n importLabel: string;\n onCreate: () => void;\n onImport: () => void;\n /** RBAC: the CTA is rendered but disabled without dashboard:create. */\n canCreate: boolean;\n /** RBAC: the overflow import action is disabled without dashboard:import. */\n canImport: boolean;\n}\n\n/**\n * The route's identity strip. It is deliberately the only decorated band on the\n * page: everything below it steps down to plain sections, so the eye always\n * knows where the page starts and where the content starts. Shared with the\n * error state so a failed fetch never costs the user the page identity.\n */\nconst DashboardsHeaderBand: FC<DashboardsHeaderBandProps> = memo(function DashboardsHeaderBand({\n title,\n subtitle,\n createLabel,\n importLabel,\n onCreate,\n onImport,\n canCreate,\n canImport,\n}) {\n return (\n <div className=\"relative overflow-hidden border-b border-[var(--color-border-seam)] bg-[image:var(--gradient-gloss-card)]\">\n <AuroraBackground intensity=\"subtle\" />\n <div style={{ padding: 'var(--space-pagePadding)' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n gap: 'var(--space-formGap)',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-formGap)', minWidth: 0 }}>\n <div\n style={{\n display: 'flex',\n height: 'var(--size-controlHeight-lg)',\n width: 'var(--size-controlHeight-lg)',\n flexShrink: 0,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 'var(--radius-card)',\n backgroundColor: 'var(--color-action-primary-bg)',\n }}\n >\n <LayoutDashboard\n style={{\n height: 'var(--size-icon-lg)',\n width: 'var(--size-icon-lg)',\n color: 'var(--color-action-primary-text)',\n }}\n />\n </div>\n <div style={{ minWidth: 0 }}>\n <h1\n style={{\n fontSize: 'var(--font-size-heading-h4)',\n fontWeight: 'var(--font-weight-bold)',\n margin: 0,\n color: 'var(--color-text-primary)',\n }}\n >\n <GradientText>{title}</GradientText>\n </h1>\n <p style={{ fontSize: 'var(--font-size-body-sm)', color: 'var(--color-text-secondary)', margin: 0 }}>\n {subtitle}\n </p>\n </div>\n </div>\n\n <div data-tour=\"bigconsole-dashboard-create\">\n <CTAOverflowMenu\n primary={{\n label: createLabel,\n onSelect: onCreate,\n disabled: !canCreate,\n icon: (\n <Plus\n style={{\n marginRight: 'var(--space-iconGap)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n }}\n />\n ),\n }}\n actions={[\n {\n label: importLabel,\n onSelect: onImport,\n disabled: !canImport,\n icon: <Upload style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />,\n },\n ]}\n />\n </div>\n </div>\n </div>\n </div>\n );\n});\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const DashboardsPage: FC = memo(function DashboardsPage() {\n const navigate = useBigConsoleNavigate();\n const tr = useTr();\n const [searchQuery, setSearchQuery] = useState('');\n const [categoryFilter, setCategoryFilter] = useState('');\n const [statusFilter, setStatusFilter] = useState('');\n const [currentPage, setCurrentPage] = useState(1);\n const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false);\n const [isCreating, setIsCreating] = useState(false);\n const [isImportDialogOpen, setIsImportDialogOpen] = useState(false);\n\n // View mode (grid/list) persisted to localStorage so it survives reloads\n const [viewMode, setViewMode] = useState<'grid' | 'list'>(() => {\n try {\n const stored = window.localStorage.getItem(VIEW_MODE_STORAGE_KEY);\n return stored === 'list' ? 'list' : 'grid';\n } catch {\n return 'grid';\n }\n });\n\n const handleSetViewMode = useCallback((mode: 'grid' | 'list') => {\n setViewMode(mode);\n try {\n window.localStorage.setItem(VIEW_MODE_STORAGE_KEY, mode);\n } catch {\n // Ignore storage errors (e.g. private mode) - view mode still works in-session\n }\n }, []);\n\n const { loading, error, dashboards, createDashboard, deleteDashboard, cloneDashboard, refetch } =\n useDashboardOperations();\n\n // RBAC gating — permission set is resolved by the root PermissionProvider.\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const canRead = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_READ);\n const canCreate = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_CREATE);\n const canImport = hasPermission(BIGCONSOLE_PERMISSIONS.DASHBOARD_IMPORT);\n\n // `?create=1` (linked from the Overview) opens the Create Dashboard dialog.\n // Declared before the permission early-returns below; it waits for the\n // permission set so the deep link is not dropped on the first render, then\n // always removes the param so a reload or back-navigation doesn't reopen it.\n const [searchParams, setSearchParams] = useSearchParams();\n useEffect(() => {\n const decision = resolveCreateParam(searchParams, { permissionsLoading, canRead, canCreate });\n if (decision === 'none' || decision === 'wait') return;\n if (decision === 'open') setIsCreateDialogOpen(true);\n setSearchParams(withoutCreateParam(searchParams), { replace: true });\n }, [searchParams, setSearchParams, permissionsLoading, canRead, canCreate]);\n\n // Filter dashboards by search query\n const categories = Array.from(\n new Set(dashboards.flatMap((dashboard) => (dashboard.category ? [dashboard.category] : [])))\n ).sort();\n const filteredDashboards = dashboards.filter(\n (dashboard) =>\n (!categoryFilter || dashboard.category === categoryFilter) &&\n (!statusFilter || dashboard.status === statusFilter) &&\n (dashboard.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\n dashboard.description?.toLowerCase().includes(searchQuery.toLowerCase()))\n );\n\n // Client-side pagination over the filtered result set\n const totalPages = Math.max(1, Math.ceil(filteredDashboards.length / PAGE_SIZE));\n const pageStartIndex = (currentPage - 1) * PAGE_SIZE;\n const paginatedDashboards = filteredDashboards.slice(pageStartIndex, pageStartIndex + PAGE_SIZE);\n\n // Reset to the first page when the search query or view changes so the\n // visible slice always starts from the top of the (possibly new) result set.\n useEffect(() => {\n setCurrentPage(1);\n }, [searchQuery, viewMode, categoryFilter, statusFilter]);\n\n // Guard against the current page exceeding the available pages (e.g. after a\n // delete removes the last item on the final page).\n useEffect(() => {\n if (currentPage > totalPages) {\n setCurrentPage(totalPages);\n }\n }, [currentPage, totalPages]);\n\n const handlePrevPage = useCallback(() => {\n setCurrentPage((prev) => Math.max(1, prev - 1));\n }, []);\n\n const handleNextPage = useCallback(() => {\n setCurrentPage((prev) => Math.min(totalPages, prev + 1));\n }, [totalPages]);\n\n const handleGoToPage = useCallback((page: number) => {\n setCurrentPage(page);\n }, []);\n\n const handleOpenCreateDialog = useCallback(() => {\n setIsCreateDialogOpen(true);\n }, []);\n\n /**\n * A template install creates the dashboard inside the dialog rather than\n * through onCreate, so the list has no idea it happened. Refetch and open the\n * new board — landing on it is what makes the \"connect your data\" prompts\n * discoverable.\n */\n const handleTemplateInstalled = useCallback(\n ({ dashboardId }: { dashboardId: string; widgetsNeedingData: number }) => {\n refetch();\n navigate(`/dashboards/${dashboardId}`);\n },\n [refetch, navigate]\n );\n\n const handleCloseCreateDialog = useCallback(() => {\n if (!isCreating) {\n setIsCreateDialogOpen(false);\n }\n }, [isCreating]);\n\n const handleCreateDashboard = useCallback(\n async (data: { name: string; description: string; category: string; tags?: string[] }) => {\n setIsCreating(true);\n try {\n const newDashboard = await createDashboard({\n name: data.name,\n description: data.description,\n category: data.category,\n tags: data.tags,\n });\n\n if (newDashboard) {\n setIsCreateDialogOpen(false);\n navigate(`/dashboards/${newDashboard.id}/builder`);\n }\n } catch (err) {\n if (reportBigConsoleQuotaError(err, 'project')) {\n setIsCreateDialogOpen(false);\n return;\n }\n // Surface the failure instead of swallowing it: log for debugging,\n // notify on native, and rethrow so CreateDashboardDialog displays the error.\n console.error('Failed to create dashboard:', err);\n if (isNative()) void nativeNotify('error');\n throw err;\n } finally {\n setIsCreating(false);\n }\n },\n [createDashboard, navigate]\n );\n\n const handleOpenDashboard = useCallback(\n (dashboardId: string) => {\n navigate(`/dashboards/${dashboardId}`);\n },\n [navigate]\n );\n\n const handleEditDashboard = useCallback(\n (dashboardId: string, e: React.MouseEvent) => {\n e.stopPropagation();\n navigate(`/dashboards/${dashboardId}/builder`);\n },\n [navigate]\n );\n\n const handleDeleteDashboard = useCallback(\n async (dashboardId: string, e: React.MouseEvent) => {\n e.stopPropagation();\n const msg = tr('bigconsole.dashboards.confirmDelete', 'Are you sure you want to delete this dashboard?');\n const native = await nativeConfirm({\n title: 'Delete dashboard?',\n message: msg,\n okButtonTitle: 'Delete',\n cancelButtonTitle: 'Cancel',\n });\n const ok = native === null ? window.confirm(msg) : native;\n if (ok) {\n nativeImpact('medium');\n try {\n await deleteDashboard(dashboardId);\n if (isNative()) void nativeNotify('success');\n } catch (err) {\n if (isNative()) void nativeNotify('error');\n throw err;\n }\n }\n },\n [deleteDashboard, tr]\n );\n\n const handleCloneDashboard = useCallback(\n async (dashboardId: string, sourceName: string, e: React.MouseEvent) => {\n e.stopPropagation();\n const defaultName = tr('bigconsole.dashboards.clone.defaultSuffix', '{{sourceName}} (Copy)', {\n sourceName,\n });\n const name = window.prompt(\n tr('bigconsole.dashboards.clone.namePrompt', 'Name for the cloned dashboard:'),\n defaultName\n );\n if (!name || !name.trim()) return;\n nativeImpact('medium');\n try {\n const cloned = await cloneDashboard(dashboardId, name.trim());\n if (cloned) {\n if (isNative()) void nativeNotify('success');\n navigate(`/dashboards/${cloned.id}`);\n }\n } catch (err) {\n if (reportBigConsoleQuotaError(err, 'project')) {\n return;\n }\n if (isNative()) void nativeNotify('error');\n throw err;\n }\n },\n [cloneDashboard, navigate, tr]\n );\n\n const handleOpenImportDialog = useCallback(() => {\n setIsImportDialogOpen(true);\n }, []);\n\n const handleCloseImportDialog = useCallback(() => {\n setIsImportDialogOpen(false);\n }, []);\n\n const handleImportSuccess = useCallback(\n (_dashboardId: string, _dashboardName: string) => {\n refetch();\n },\n [refetch]\n );\n\n // Format relative date\n const formatRelativeDate = (dateStr: string) => {\n const date = new Date(dateStr);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n\n if (diffMins < 1) return tr('bigconsole.dashboards.time.justNow', 'Just now');\n if (diffMins < 60) return `${diffMins}${tr('bigconsole.dashboards.time.minutesAgoSuffix', 'm ago')}`;\n if (diffHours < 24) return `${diffHours}${tr('bigconsole.dashboards.time.hoursAgoSuffix', 'h ago')}`;\n if (diffDays < 7) return `${diffDays}${tr('bigconsole.dashboards.time.daysAgoSuffix', 'd ago')}`;\n\n return new Intl.DateTimeFormat('en-US', {\n month: 'short',\n day: 'numeric',\n year: date.getFullYear() !== now.getFullYear() ? 'numeric' : undefined,\n }).format(date);\n };\n\n // Human label for the dashboard lifecycle status.\n const getStatusLabel = useDashboardStatusLabel();\n\n // Get widget count - uses widgetCount field from backend\n const getWidgetCount = (dashboard: (typeof dashboards)[0]) => {\n return dashboard.widgetCount ?? 0;\n };\n\n // Get page count\n const getPageCount = (dashboard: (typeof dashboards)[0]) => {\n return dashboard.pageCount || 0;\n };\n\n const headerBand = (\n <DashboardsHeaderBand\n title={tr('bigconsole.dashboards.title', 'Dashboards')}\n subtitle={tr('bigconsole.dashboards.subtitle', 'Create and manage your analytics dashboards')}\n createLabel={tr('bigconsole.dashboards.actions.create', 'Create Dashboard')}\n importLabel={tr('bigconsole.dashboards.actions.import', 'Import')}\n onCreate={handleOpenCreateDialog}\n onImport={handleOpenImportDialog}\n canCreate={canCreate}\n canImport={canImport}\n />\n );\n\n // Permission read gate — wait for the provider to resolve before deciding,\n // then block the page body for callers without dashboard read access.\n if (permissionsLoading) {\n return (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '80px 0' }}>\n <Spinner\n style={{\n height: 'var(--size-icon-xl)',\n width: 'var(--size-icon-xl)',\n }}\n />\n </div>\n );\n }\n\n if (!canRead) {\n return (\n <AccessDenied\n title={tr('bigconsole.dashboards.accessDenied.title', 'Access Denied')}\n description={tr(\n 'bigconsole.dashboards.accessDenied.description',\n \"You don't have permission to view dashboards.\"\n )}\n />\n );\n }\n\n // Error state — keeps the page identity so the user still knows where they are.\n if (error) {\n return (\n <div\n data-tour=\"bigconsole-dashboards-list\"\n style={{ minHeight: '100vh', backgroundColor: 'var(--color-bg-canvas)' }}\n >\n {headerBand}\n <div style={{ padding: 'var(--space-pagePadding)' }}>\n <Section\n headingLevel={2}\n tone=\"danger\"\n title={tr('bigconsole.dashboards.error.title', 'Error loading dashboards')}\n description={error.message}\n data-testid=\"dashboards-error\"\n actions={\n <Button size=\"sm\" onClick={() => refetch()}>\n {tr('bigconsole.dashboards.error.retry', 'Retry')}\n </Button>\n }\n />\n </div>\n </div>\n );\n }\n\n const resultCount = filteredDashboards.length;\n\n return (\n <div\n data-tour=\"bigconsole-dashboards-list\"\n style={{ minHeight: '100vh', backgroundColor: 'var(--color-bg-canvas)' }}\n >\n {/* Header Section */}\n {headerBand}\n\n {/* Main Content */}\n <div style={{ padding: 'var(--space-pagePadding)' }}>\n <SectionStack>\n {/* Supporting context — deliberately recessed so it never competes\n with the results it introduces. */}\n <Section\n emphasis=\"muted\"\n padding=\"compact\"\n aria-label={tr('bigconsole.dashboards.about', 'About dashboards')}\n >\n <PagePurpose className=\"max-w-[80ch]\">\n Dashboards are live, shareable views built from widgets that query your data sinks — charts, tables,\n metrics, and drill-downs in one place. Compose a board to monitor a system, share KPIs with your team, or\n explore data interactively.\n </PagePurpose>\n </Section>\n\n {/* The point of this route: the boards themselves. */}\n <Section\n headingLevel={2}\n emphasis=\"primary\"\n data-testid=\"dashboards-results\"\n title={tr('bigconsole.dashboards.results.title', 'Your dashboards')}\n description={tr(\n 'bigconsole.dashboards.results.description',\n 'Open a board to view it, or use the card actions to edit, duplicate or delete.'\n )}\n meta={\n <Badge\n variant=\"secondary\"\n aria-label={tr('bigconsole.dashboards.results.count', `${resultCount} dashboards`)}\n >\n {resultCount}\n </Badge>\n }\n actions={\n <div\n role=\"group\"\n aria-label={tr('bigconsole.dashboards.view.label', 'Result layout')}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-iconGap)',\n padding: 'var(--space-iconGap)',\n borderRadius: 'var(--radius-button)',\n backgroundColor: 'var(--color-bg-sunken)',\n }}\n >\n <Button\n variant={viewMode === 'grid' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => handleSetViewMode('grid')}\n aria-label={tr('bigconsole.dashboards.view.grid', 'Grid view')}\n aria-pressed={viewMode === 'grid'}\n title={tr('bigconsole.dashboards.view.grid', 'Grid view')}\n style={{\n height: 'var(--size-controlHeight-md)',\n width: 'var(--size-controlHeight-md)',\n padding: 0,\n borderRadius: 'var(--radius-button)',\n }}\n >\n <LayoutGrid style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />\n </Button>\n <Button\n variant={viewMode === 'list' ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => handleSetViewMode('list')}\n aria-label={tr('bigconsole.dashboards.view.list', 'List view')}\n aria-pressed={viewMode === 'list'}\n title={tr('bigconsole.dashboards.view.list', 'List view')}\n style={{\n height: 'var(--size-controlHeight-md)',\n width: 'var(--size-controlHeight-md)',\n padding: 0,\n borderRadius: 'var(--radius-button)',\n }}\n >\n <List style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />\n </Button>\n </div>\n }\n bodyClassName=\"flex flex-col gap-form-gap\"\n >\n {/* Search — grouped with the results it filters, not floating above them */}\n <div style={{ position: 'relative', width: '100%', maxWidth: '420px' }}>\n <Search\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n left: 'var(--space-controlGap)',\n top: '50%',\n transform: 'translateY(-50%)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n color: 'var(--color-text-muted)',\n }}\n />\n <Input\n type=\"search\"\n aria-label={tr('bigconsole.dashboards.search.placeholder', 'Search dashboards...')}\n placeholder={tr('bigconsole.dashboards.search.placeholder', 'Search dashboards...')}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n style={{ paddingLeft: 'var(--size-controlHeight-md)', height: 'var(--size-controlHeight-md)' }}\n />\n </div>\n\n <div className=\"flex flex-wrap gap-control-gap\">\n <select\n aria-label={tr('bigconsole.dashboards.filters.category', 'Category')}\n value={categoryFilter}\n onChange={(event) => setCategoryFilter(event.target.value)}\n className=\"min-w-0 max-w-full rounded-button border border-border-subtle bg-bg-surface p-2 text-sm text-text-primary\"\n >\n <option value=\"\">{tr('bigconsole.dashboards.filters.allCategories', 'All categories')}</option>\n {categories.map((category) => (\n <option key={category} value={category}>\n {category}\n </option>\n ))}\n </select>\n <select\n aria-label={tr('bigconsole.dashboards.filters.status', 'Status')}\n value={statusFilter}\n onChange={(event) => setStatusFilter(event.target.value)}\n className=\"min-w-0 max-w-full rounded-button border border-border-subtle bg-bg-surface p-2 text-sm text-text-primary\"\n >\n <option value=\"\">{tr('bigconsole.dashboards.filters.allStatuses', 'All statuses')}</option>\n {Array.from(\n new Set(dashboards.map((dashboard) => dashboard.status).filter((status) => status !== undefined))\n )\n .sort()\n .map((status) => (\n <option key={status} value={status}>\n {getStatusLabel(status)}\n </option>\n ))}\n </select>\n </div>\n\n {/* Loading state */}\n {loading && dashboards.length === 0 && (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '80px 0' }}>\n <div style={{ textAlign: 'center' }}>\n <Spinner\n style={{\n height: 'var(--size-icon-xl)',\n width: 'var(--size-icon-xl)',\n margin: '0 auto var(--space-formGap)',\n }}\n />\n <p style={{ fontSize: 'var(--font-size-body-sm)', color: 'var(--color-text-muted)' }}>\n {tr('bigconsole.dashboards.loading', 'Loading dashboards...')}\n </p>\n </div>\n </div>\n )}\n\n {/* Dashboard Grid */}\n {!loading && viewMode === 'grid' && filteredDashboards.length > 0 && (\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(min(320px, 100%), 1fr))',\n gap: 'var(--space-formGap)',\n }}\n >\n {paginatedDashboards.map((dashboard) => (\n <Card\n key={dashboard.id}\n onClick={() => handleOpenDashboard(dashboard.id)}\n style={{ cursor: 'pointer' }}\n className=\"motion-safe:transition-[box-shadow,border-color] hover:border-[var(--color-border-hover)] hover:shadow-[var(--shadow-elevation-2)]\"\n >\n <CardContent style={{ padding: 'var(--space-cardPadding)' }}>\n {/* Card Header with Icon and Name */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-controlGap)',\n marginBottom: 'var(--space-formGap)',\n }}\n >\n <div\n style={{\n display: 'flex',\n height: 'var(--size-controlHeight-lg)',\n width: 'var(--size-controlHeight-lg)',\n flexShrink: 0,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 'var(--radius-button)',\n backgroundColor: 'var(--color-bg-accentSubtle)',\n }}\n >\n <LayoutDashboard\n aria-hidden=\"true\"\n style={{\n height: 'var(--size-icon-md)',\n width: 'var(--size-icon-md)',\n color: 'var(--color-action-primary-bg)',\n }}\n />\n </div>\n <div style={{ flex: 1, minWidth: 0 }}>\n <h3\n style={{\n fontWeight: 'var(--font-weight-bold)',\n fontSize: 'var(--font-size-body-md)',\n margin: 0,\n color: 'var(--color-text-primary)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n <button\n type=\"button\"\n className=\"max-w-full truncate text-left hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]\"\n onClick={(event) => {\n event.stopPropagation();\n handleOpenDashboard(dashboard.id);\n }}\n >\n {dashboard.name}\n </button>\n </h3>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-controlGap)',\n flexWrap: 'wrap',\n marginTop: 'var(--space-controlGap)',\n }}\n >\n {dashboard.category && (\n <Badge\n variant=\"secondary\"\n style={{\n fontSize: '10px',\n fontWeight: 'var(--font-weight-semibold)',\n textTransform: 'uppercase',\n }}\n >\n {dashboard.category}\n </Badge>\n )}\n {dashboard.status && (\n <DashboardStatusPill status={dashboard.status} label={getStatusLabel(dashboard.status)} />\n )}\n </div>\n </div>\n </div>\n\n {/* Description */}\n <p\n style={{\n fontSize: 'var(--font-size-body-sm)',\n lineHeight: 'var(--font-lineHeight-normal)',\n color: 'var(--color-text-secondary)',\n margin: '0 0 var(--space-formGap) 0',\n minHeight: '40px',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n }}\n >\n {dashboard.description ||\n tr('bigconsole.dashboards.card.noDescription', 'No description provided')}\n </p>\n\n {/* Stats Row */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-formGap)',\n marginBottom: 'var(--space-formGap)',\n padding: 'var(--space-controlGap) var(--space-cardPadding)',\n backgroundColor: 'var(--color-bg-sunken)',\n borderRadius: 'var(--radius-button)',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-iconGap)' }}>\n <Layers\n style={{\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n color: 'var(--color-action-primary-bg)',\n }}\n />\n <span\n style={{\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {getPageCount(dashboard)}\n </span>\n <span style={{ fontSize: 'var(--font-size-body-sm)', color: 'var(--color-text-muted)' }}>\n {tr('bigconsole.dashboards.card.pages', 'pages')}\n </span>\n </div>\n <div\n style={{\n width: '1px',\n height: 'var(--size-icon-sm)',\n backgroundColor: 'var(--color-border-subtle)',\n }}\n />\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-iconGap)' }}>\n <FileText\n style={{\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n color: 'var(--color-action-primary-bg)',\n }}\n />\n <span\n style={{\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {getWidgetCount(dashboard)}\n </span>\n <span style={{ fontSize: 'var(--font-size-body-sm)', color: 'var(--color-text-muted)' }}>\n {tr('bigconsole.dashboards.card.widgets', 'widgets')}\n </span>\n </div>\n </div>\n\n {/* Footer with Date and Actions */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n gap: 'var(--space-controlGap)',\n paddingTop: 'var(--space-controlGap)',\n borderTop: '1px solid var(--color-border-subtle)',\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-iconGap)',\n }}\n >\n <Calendar\n style={{\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n color: 'var(--color-text-muted)',\n }}\n />\n <span\n style={{\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-medium)',\n color: 'var(--color-text-muted)',\n }}\n >\n {formatRelativeDate(dashboard.updatedAt)}\n </span>\n </div>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-controlGap)' }}>\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.DASHBOARD_UPDATE} deniedBehavior=\"hide\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => handleEditDashboard(dashboard.id, e)}\n style={{\n height: 'var(--size-controlHeight-md)',\n width: 'var(--size-controlHeight-md)',\n padding: 0,\n borderRadius: 'var(--radius-button)',\n }}\n title={tr('bigconsole.dashboards.actions.editTitle', 'Edit Dashboard')}\n >\n <Pencil style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />\n </Button>\n </PermissionButton>\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.DASHBOARD_CREATE} deniedBehavior=\"hide\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => handleCloneDashboard(dashboard.id, dashboard.name, e)}\n style={{\n height: 'var(--size-controlHeight-md)',\n width: 'var(--size-controlHeight-md)',\n padding: 0,\n borderRadius: 'var(--radius-button)',\n }}\n title={tr('bigconsole.dashboards.actions.cloneTitle', 'Clone Dashboard')}\n >\n <Copy style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />\n </Button>\n </PermissionButton>\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.DASHBOARD_DELETE} deniedBehavior=\"hide\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => handleDeleteDashboard(dashboard.id, e)}\n style={{\n height: 'var(--size-controlHeight-md)',\n width: 'var(--size-controlHeight-md)',\n padding: 0,\n borderRadius: 'var(--radius-button)',\n }}\n className=\"hover:text-status-error-text hover:bg-status-error-bg/10\"\n title={tr('bigconsole.dashboards.actions.deleteTitle', 'Delete Dashboard')}\n >\n <Trash2 style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />\n </Button>\n </PermissionButton>\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n )}\n\n {/* Dashboard List */}\n {!loading && viewMode === 'list' && filteredDashboards.length > 0 && (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--space-controlGap)',\n }}\n >\n {paginatedDashboards.map((dashboard) => (\n <Card\n key={dashboard.id}\n onClick={() => handleOpenDashboard(dashboard.id)}\n style={{ cursor: 'pointer' }}\n className=\"motion-safe:transition-[box-shadow,border-color] hover:border-[var(--color-border-hover)] hover:shadow-[var(--shadow-elevation-2)]\"\n >\n <CardContent style={{ padding: 'var(--space-cardPadding)' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-formGap)',\n flexWrap: 'wrap',\n }}\n >\n {/* Icon */}\n <div\n style={{\n display: 'flex',\n height: 'var(--size-controlHeight-lg)',\n width: 'var(--size-controlHeight-lg)',\n flexShrink: 0,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 'var(--radius-button)',\n backgroundColor: 'var(--color-bg-accentSubtle)',\n }}\n >\n <LayoutDashboard\n aria-hidden=\"true\"\n style={{\n height: 'var(--size-icon-md)',\n width: 'var(--size-icon-md)',\n color: 'var(--color-action-primary-bg)',\n }}\n />\n </div>\n\n {/* Name + Description */}\n <div style={{ flex: '1 1 12rem', minWidth: 0 }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-controlGap)',\n flexWrap: 'wrap',\n }}\n >\n <h3\n style={{\n fontWeight: 'var(--font-weight-bold)',\n fontSize: 'var(--font-size-body-md)',\n margin: 0,\n color: 'var(--color-text-primary)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n maxWidth: '100%',\n }}\n >\n <button\n type=\"button\"\n className=\"max-w-full truncate text-left hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]\"\n onClick={(event) => {\n event.stopPropagation();\n handleOpenDashboard(dashboard.id);\n }}\n >\n {dashboard.name}\n </button>\n </h3>\n {dashboard.category && (\n <Badge\n variant=\"secondary\"\n style={{\n fontSize: '10px',\n fontWeight: 'var(--font-weight-semibold)',\n textTransform: 'uppercase',\n }}\n >\n {dashboard.category}\n </Badge>\n )}\n {dashboard.status && (\n <DashboardStatusPill status={dashboard.status} label={getStatusLabel(dashboard.status)} />\n )}\n </div>\n <p\n style={{\n fontSize: 'var(--font-size-body-sm)',\n lineHeight: 'var(--font-lineHeight-normal)',\n color: 'var(--color-text-secondary)',\n margin: 'var(--space-controlGap) 0 0 0',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {dashboard.description ||\n tr('bigconsole.dashboards.card.noDescription', 'No description provided')}\n </p>\n </div>\n\n {/* Stats + Date */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-formGap)',\n flexWrap: 'wrap',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-iconGap)' }}>\n <Layers\n style={{\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n color: 'var(--color-action-primary-bg)',\n }}\n />\n <span\n style={{\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {getPageCount(dashboard)}\n </span>\n <span style={{ fontSize: 'var(--font-size-body-sm)', color: 'var(--color-text-muted)' }}>\n {tr('bigconsole.dashboards.card.pages', 'pages')}\n </span>\n </div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-iconGap)' }}>\n <FileText\n style={{\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n color: 'var(--color-action-primary-bg)',\n }}\n />\n <span\n style={{\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {getWidgetCount(dashboard)}\n </span>\n <span style={{ fontSize: 'var(--font-size-body-sm)', color: 'var(--color-text-muted)' }}>\n {tr('bigconsole.dashboards.card.widgets', 'widgets')}\n </span>\n </div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-iconGap)' }}>\n <Calendar\n style={{\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n color: 'var(--color-text-muted)',\n }}\n />\n <span\n style={{\n fontSize: 'var(--font-size-body-sm)',\n fontWeight: 'var(--font-weight-medium)',\n color: 'var(--color-text-muted)',\n }}\n >\n {formatRelativeDate(dashboard.updatedAt)}\n </span>\n </div>\n </div>\n\n {/* Actions */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-controlGap)' }}>\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.DASHBOARD_UPDATE} deniedBehavior=\"hide\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => handleEditDashboard(dashboard.id, e)}\n style={{\n height: 'var(--size-controlHeight-md)',\n width: 'var(--size-controlHeight-md)',\n padding: 0,\n borderRadius: 'var(--radius-button)',\n }}\n title={tr('bigconsole.dashboards.actions.editTitle', 'Edit Dashboard')}\n >\n <Pencil style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />\n </Button>\n </PermissionButton>\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.DASHBOARD_CREATE} deniedBehavior=\"hide\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => handleCloneDashboard(dashboard.id, dashboard.name, e)}\n style={{\n height: 'var(--size-controlHeight-md)',\n width: 'var(--size-controlHeight-md)',\n padding: 0,\n borderRadius: 'var(--radius-button)',\n }}\n title={tr('bigconsole.dashboards.actions.cloneTitle', 'Clone Dashboard')}\n >\n <Copy style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />\n </Button>\n </PermissionButton>\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.DASHBOARD_DELETE} deniedBehavior=\"hide\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => handleDeleteDashboard(dashboard.id, e)}\n style={{\n height: 'var(--size-controlHeight-md)',\n width: 'var(--size-controlHeight-md)',\n padding: 0,\n borderRadius: 'var(--radius-button)',\n }}\n className=\"hover:text-status-error-text hover:bg-status-error-bg/10\"\n title={tr('bigconsole.dashboards.actions.deleteTitle', 'Delete Dashboard')}\n >\n <Trash2 style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />\n </Button>\n </PermissionButton>\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n )}\n\n {/* How much of the result set is on screen. Without it a paged list\n says nothing about how many boards there are in total — and the\n counts are already in hand, no extra query. */}\n {!loading && filteredDashboards.length > 0 && (\n <p\n data-testid=\"dashboards-range\"\n style={{\n margin: 0,\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-muted)',\n }}\n >\n {tr('bigconsole.dashboards.pagination.range', 'Showing {{from}}–{{to}} of {{total}} dashboards', {\n from: pageStartIndex + 1,\n to: pageStartIndex + paginatedDashboards.length,\n total: filteredDashboards.length,\n })}\n </p>\n )}\n\n {/* Pagination — a footer control, separated from the results it pages */}\n {!loading && filteredDashboards.length > PAGE_SIZE && (\n <nav\n aria-label={tr('bigconsole.dashboards.pagination.label', 'Dashboard pages')}\n className=\"flex flex-wrap items-center justify-center gap-control-gap border-t border-[var(--color-border-subtle)] pt-control-gap\"\n >\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handlePrevPage}\n disabled={currentPage <= 1}\n aria-label={tr('bigconsole.dashboards.pagination.previous', 'Previous')}\n style={{ minHeight: 'var(--size-controlHeight-md)' }}\n >\n <ChevronLeft\n style={{\n marginRight: 'var(--space-iconGap)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n }}\n />\n {tr('bigconsole.dashboards.pagination.previous', 'Previous')}\n </Button>\n\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-iconGap)', flexWrap: 'wrap' }}>\n {getPageWindow(currentPage, totalPages).map((page, index) =>\n page === null ? (\n <span\n key={`gap-${index}`}\n aria-hidden=\"true\"\n style={{ color: 'var(--color-text-muted)', padding: '0 var(--space-iconGap)' }}\n >\n …\n </span>\n ) : (\n <Button\n key={page}\n variant={page === currentPage ? 'default' : 'ghost'}\n size=\"sm\"\n onClick={() => handleGoToPage(page)}\n aria-current={page === currentPage ? 'page' : undefined}\n aria-label={tr('bigconsole.dashboards.pagination.page', `Page ${page}`)}\n style={{\n minWidth: 'var(--size-controlHeight-md)',\n height: 'var(--size-controlHeight-md)',\n padding: '0 var(--space-controlGap)',\n borderRadius: 'var(--radius-button)',\n }}\n >\n {page}\n </Button>\n )\n )}\n </div>\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={handleNextPage}\n disabled={currentPage >= totalPages}\n aria-label={tr('bigconsole.dashboards.pagination.next', 'Next')}\n style={{ minHeight: 'var(--size-controlHeight-md)' }}\n >\n {tr('bigconsole.dashboards.pagination.next', 'Next')}\n <ChevronRight\n style={{\n marginLeft: 'var(--space-iconGap)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n }}\n />\n </Button>\n\n <span\n style={{\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-muted)',\n }}\n >\n {tr('bigconsole.dashboards.pagination.pageOf', 'Page {{currentPage}} of {{totalPages}}', {\n currentPage,\n totalPages,\n })}\n </span>\n </nav>\n )}\n\n {/* Empty state */}\n {!loading && filteredDashboards.length === 0 && (\n <GlassCard treatment=\"insight\" className=\"border-[var(--color-border-seam)]\">\n <IllustratedEmptyState\n illustration={searchQuery ? 'empty-search' : 'empty-data'}\n title={\n searchQuery\n ? tr('bigconsole.dashboards.empty.filteredTitle', 'No dashboards found')\n : tr('bigconsole.dashboards.empty.title', 'No dashboards yet')\n }\n description={\n searchQuery\n ? tr('bigconsole.dashboards.empty.filteredDescription', 'Try adjusting your search terms')\n : tr(\n 'bigconsole.dashboards.empty.description',\n 'Get started by creating your first dashboard to visualize your data'\n )\n }\n action={\n !searchQuery ? (\n <div\n style={{\n display: 'flex',\n gap: 'var(--space-controlGap)',\n flexWrap: 'wrap',\n justifyContent: 'center',\n }}\n >\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.DASHBOARD_CREATE} deniedBehavior=\"hide\">\n <Button onClick={handleOpenCreateDialog}>\n <Plus\n style={{\n marginRight: 'var(--space-iconGap)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n }}\n />\n {tr('bigconsole.dashboards.actions.create', 'Create Dashboard')}\n </Button>\n </PermissionButton>\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.DASHBOARD_IMPORT} deniedBehavior=\"hide\">\n <Button variant=\"outline\" onClick={handleOpenImportDialog}>\n <Upload\n style={{\n marginRight: 'var(--space-iconGap)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n }}\n />\n {tr('bigconsole.dashboards.actions.importDashboard', 'Import Dashboard')}\n </Button>\n </PermissionButton>\n </div>\n ) : undefined\n }\n />\n </GlassCard>\n )}\n </Section>\n </SectionStack>\n </div>\n\n {/* Create Dashboard Dialog */}\n <CreateDashboardDialog\n isOpen={isCreateDialogOpen}\n isCreating={isCreating}\n onClose={handleCloseCreateDialog}\n onCreate={handleCreateDashboard}\n onTemplateInstalled={handleTemplateInstalled}\n />\n\n {/* Import Dashboard Dialog */}\n <ImportDashboardDialog\n isOpen={isImportDialogOpen}\n onClose={handleCloseImportDialog}\n onSuccess={handleImportSuccess}\n />\n </div>\n );\n});\n\nexport default DashboardsPage;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataParsersPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/DataParsersPage.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuDH,eAAO,MAAM,eAAe,8CAigB1B,CAAC;AAEH,eAAe,eAAe,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataParsersPage.js","names":[],"sources":["../../../src/bigconsole/pages/DataParsersPage.tsx"],"sourcesContent":["/**\n * Data Parsers Page\n *\n * Page for listing and managing parsers with filtering and search.\n * Uses fe-libs shared UI components and semantic tokens for consistent styling.\n */\n\nimport { memo, useState, useMemo, useCallback } from 'react';\nimport { useParams } from 'react-router';\nimport { useAppNavigate } from '../contexts';\nimport { isNative, nativeConfirm, nativeImpact, nativeNotify } from '../../utils/nativeBridge';\nimport { useParserStore } from '../store/parserStore';\nimport { useParserOperations } from '../hooks/useParserOperations';\nimport { useExportParser } from '../hooks/useExportParser';\nimport { ParserCard } from '../components/parser/ParserCard';\nimport { ImportParserDialog } from '../components/parser/ImportParserDialog';\nimport { Section, SectionStack } from '../components/common';\nimport type { Parser, ParserType, ParserStatus } from '../types';\n\n// fe-libs UI components\nimport { Button } from '@burdenoff/fe-libs/ui';\nimport { Input } from '@burdenoff/fe-libs/ui';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@burdenoff/fe-libs/ui';\nimport { Badge } from '@burdenoff/fe-libs/ui';\nimport { Spinner } from '@burdenoff/fe-libs/ui';\nimport {\n AuroraBackground,\n GradientText,\n IllustratedEmptyState,\n CTAOverflowMenu,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\n\n// Lucide icons\nimport { Plus, Search, AlertCircle, FileCode2, X, Upload } from 'lucide-react';\n\n// RBAC\nimport { usePermissions } from '@burdenoff/fe-libs/shared/providers/shell';\nimport { AccessDenied, PermissionButton } from '@burdenoff/fe-libs/shared/components';\nimport { BIGCONSOLE_PERMISSIONS } from '../../constants/permissions';\n\n// i18n\nimport { useTr } from '../../shared/hooks/useTr';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface ParserFilterOption<T> {\n value: T | 'all';\n label: string;\n}\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\n// Default console ID for standalone parser listing\nconst DEFAULT_CONSOLE_ID = 'default';\n\nexport const DataParsersPage = memo(function DataParsersPage() {\n const navigate = useAppNavigate();\n const { consoleId: urlConsoleId } = useParams<{ consoleId?: string }>();\n const tr = useTr();\n\n // Filter option labels are resolved via i18n inside the component.\n const TYPE_OPTIONS: ParserFilterOption<ParserType>[] = useMemo(\n () => [\n { value: 'all', label: tr('bigconsole.parsers.filters.allTypes', 'All Types') },\n { value: 'jq', label: tr('bigconsole.parsers.filters.jq', 'JQ') },\n { value: 'jsonata', label: tr('bigconsole.parsers.filters.jsonata', 'JSONata') },\n ],\n [tr]\n );\n\n const STATUS_OPTIONS: ParserFilterOption<ParserStatus>[] = useMemo(\n () => [\n { value: 'all', label: tr('bigconsole.parsers.filters.allStatus', 'All Status') },\n { value: 'active', label: tr('bigconsole.parsers.filters.active', 'Active') },\n { value: 'inactive', label: tr('bigconsole.parsers.filters.inactive', 'Inactive') },\n ],\n [tr]\n );\n\n // RBAC — gate the page and its actions on the seeded parser permissions.\n const { hasPermission, isLoading: permissionsLoading } = usePermissions();\n const canRead = hasPermission(BIGCONSOLE_PERMISSIONS.PARSER_READ);\n const canCreate = hasPermission(BIGCONSOLE_PERMISSIONS.PARSER_CREATE);\n const canUpdate = hasPermission(BIGCONSOLE_PERMISSIONS.PARSER_UPDATE);\n const canDelete = hasPermission(BIGCONSOLE_PERMISSIONS.PARSER_DELETE);\n\n // Use URL consoleId or fall back to default\n const consoleId = urlConsoleId || DEFAULT_CONSOLE_ID;\n\n // Store state\n const typeFilter = useParserStore((state) => state.typeFilter);\n const statusFilter = useParserStore((state) => state.statusFilter);\n const searchQuery = useParserStore((state) => state.searchQuery);\n const setTypeFilter = useParserStore((state) => state.setTypeFilter);\n const setStatusFilter = useParserStore((state) => state.setStatusFilter);\n const setSearchQuery = useParserStore((state) => state.setSearchQuery);\n\n // Local state\n const [isDeleting, setIsDeleting] = useState(false);\n const [deleteTargetId, setDeleteTargetId] = useState<string | null>(null);\n const [isImportDialogOpen, setIsImportDialogOpen] = useState(false);\n\n // Operations - use consoleId from URL or default\n const { loading, error, parsers, deleteParser, refetch } = useParserOperations({\n consoleId,\n skipFetch: false,\n });\n\n // Export hook\n const { downloadParser } = useExportParser();\n\n // Filter parsers\n const filteredParsers = useMemo(() => {\n if (!parsers) return [];\n\n return parsers.filter((parser: Parser) => {\n if (typeFilter && parser.type !== typeFilter) {\n return false;\n }\n if (statusFilter && parser.status !== statusFilter) {\n return false;\n }\n if (searchQuery) {\n const query = searchQuery.toLowerCase();\n const nameMatch = parser.name?.toLowerCase().includes(query);\n const descMatch = parser.description?.toLowerCase().includes(query);\n const inputKeyMatch = parser.inputSinkKey?.toLowerCase().includes(query);\n const outputKeyMatch = parser.outputKey?.toLowerCase().includes(query);\n if (!nameMatch && !descMatch && !inputKeyMatch && !outputKeyMatch) {\n return false;\n }\n }\n return true;\n });\n }, [parsers, typeFilter, statusFilter, searchQuery]);\n\n // Handlers\n const handleTypeFilterChange = useCallback(\n (value: string) => {\n setTypeFilter(value === 'all' ? null : (value as ParserType));\n },\n [setTypeFilter]\n );\n\n const handleStatusFilterChange = useCallback(\n (value: string) => {\n setStatusFilter(value === 'all' ? null : (value as ParserStatus));\n },\n [setStatusFilter]\n );\n\n const handleSearchChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value);\n },\n [setSearchQuery]\n );\n\n const handleCreateParser = useCallback(() => {\n // Navigate to dashboard-scoped parser creation if consoleId is provided\n if (urlConsoleId) {\n navigate(`/dashboards/${urlConsoleId}/parsers/new`);\n } else {\n navigate('/parsers/new');\n }\n }, [navigate, urlConsoleId]);\n\n const handleViewParser = useCallback(\n (id: string) => {\n // Navigate to dashboard-scoped parser view if consoleId is provided\n if (urlConsoleId) {\n navigate(`/dashboards/${urlConsoleId}/parsers/${id}`);\n } else {\n navigate(`/parsers/${id}`);\n }\n },\n [navigate, urlConsoleId]\n );\n\n const handleEditParser = useCallback(\n (id: string) => {\n // Navigate to dashboard-scoped parser edit if consoleId is provided\n if (urlConsoleId) {\n navigate(`/dashboards/${urlConsoleId}/parsers/${id}/edit`);\n } else {\n navigate(`/parsers/${id}/edit`);\n }\n },\n [navigate, urlConsoleId]\n );\n\n const handleDeleteParser = useCallback(\n async (id: string) => {\n const native = await nativeConfirm({\n title: tr('bigconsole.parsers.confirmDelete.title', 'Delete parser?'),\n message: tr('bigconsole.parsers.confirmDelete.message', 'Are you sure you want to delete this parser?'),\n okButtonTitle: tr('bigconsole.parsers.actions.delete', 'Delete'),\n cancelButtonTitle: tr('bigconsole.parsers.actions.cancel', 'Cancel'),\n });\n const ok =\n native === null\n ? window.confirm(\n tr('bigconsole.parsers.confirmDelete.message', 'Are you sure you want to delete this parser?')\n )\n : native;\n if (!ok) return;\n nativeImpact('medium');\n setIsDeleting(true);\n setDeleteTargetId(id);\n try {\n await deleteParser(id);\n if (isNative()) void nativeNotify('success');\n } catch {\n if (isNative()) void nativeNotify('error');\n } finally {\n setIsDeleting(false);\n setDeleteTargetId(null);\n }\n },\n [deleteParser, tr]\n );\n\n const handleClearFilters = useCallback(() => {\n setTypeFilter(null);\n setStatusFilter(null);\n setSearchQuery('');\n }, [setTypeFilter, setStatusFilter, setSearchQuery]);\n\n const handleExportParser = useCallback(\n async (id: string) => {\n const parser = parsers.find((p: Parser) => p.id === id);\n if (parser) {\n await downloadParser(id, parser.name);\n }\n },\n [parsers, downloadParser]\n );\n\n const handleImportParser = useCallback(() => {\n setIsImportDialogOpen(true);\n }, []);\n\n const handleImportSuccess = useCallback(\n (_parserId: string, _parserName: string, _wasUpdate: boolean) => {\n // Refetch parsers to show the newly imported one\n refetch();\n },\n [refetch]\n );\n\n const hasActiveFilters = typeFilter !== null || statusFilter !== null || (searchQuery?.length ?? 0) > 0;\n\n // Error state\n if (error) {\n return (\n <div style={{ padding: 'var(--space-pagePadding)' }}>\n <Section\n tone=\"danger\"\n headingLevel={2}\n title={tr('bigconsole.parsers.errors.loadFailed', 'Failed to load Parsers')}\n description=\"The parser list could not be fetched. Retry, or check that the BigConsole service is reachable.\"\n icon={<AlertCircle className=\"h-icon-md w-icon-md text-[var(--color-status-error-text)]\" />}\n actions={\n <Button size=\"sm\" onClick={() => refetch()}>\n {tr('bigconsole.parsers.actions.tryAgain', 'Try Again')}\n </Button>\n }\n data-testid=\"parsers-error\"\n >\n <p className=\"font-mono text-xs break-words text-text-secondary\">{error.message}</p>\n </Section>\n </div>\n );\n }\n\n // Read gate — once permissions have loaded, block users without parser:read.\n if (!permissionsLoading && !canRead) {\n return (\n <AccessDenied\n title={tr('bigconsole.parsers.accessDenied.title', 'Access Denied')}\n description={tr('bigconsole.parsers.accessDenied.list', \"You don't have permission to view parsers.\")}\n />\n );\n }\n\n return (\n <div style={{ minHeight: '100vh', backgroundColor: 'var(--color-bg-canvas)' }}>\n {/* Page header strip — structural only (no surface of its own beyond the gloss band) */}\n <div className=\"relative overflow-hidden border-b border-[var(--color-border-seam)] bg-[image:var(--gradient-gloss-card)]\">\n <AuroraBackground intensity=\"subtle\" />\n <div className=\"relative\" style={{ padding: 'var(--space-pagePadding)' }}>\n <div className=\"flex flex-wrap items-center justify-between gap-form-gap\">\n <div className=\"flex min-w-0 items-center gap-form-gap\">\n <div\n className=\"flex shrink-0 items-center justify-center\"\n style={{\n height: 'var(--size-controlHeight-lg)',\n width: 'var(--size-controlHeight-lg)',\n borderRadius: 'var(--radius-card)',\n backgroundColor: 'var(--color-action-primary-bg)',\n }}\n >\n <FileCode2\n style={{\n height: 'var(--size-icon-lg)',\n width: 'var(--size-icon-lg)',\n color: 'var(--color-action-primary-text)',\n }}\n />\n </div>\n <div className=\"min-w-0\">\n <h1 className=\"m-0 text-2xl font-bold text-text-primary sm:text-3xl\">\n <GradientText>{tr('bigconsole.parsers.list.title', 'Data Parsers')}</GradientText>\n </h1>\n <p className=\"m-0 text-sm text-text-secondary\">\n {tr('bigconsole.parsers.list.subtitle', 'Transform and process data with JQ or JSONata expressions')}\n </p>\n </div>\n </div>\n\n {/*\n Creating and importing a parser both require parser:create, so the\n entire CTA (primary + Import overflow action) is gated on canCreate.\n */}\n <CTAOverflowMenu\n primary={\n canCreate\n ? {\n label: tr('bigconsole.parsers.actions.create', 'Create Parser'),\n onSelect: handleCreateParser,\n icon: (\n <Plus\n style={{\n marginRight: 'var(--space-iconGap)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n }}\n />\n ),\n }\n : undefined\n }\n actions={\n canCreate\n ? [\n {\n label: tr('bigconsole.parsers.actions.import', 'Import'),\n onSelect: handleImportParser,\n icon: <Upload style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />,\n },\n ]\n : []\n }\n />\n </div>\n </div>\n </div>\n\n {/* Main Content */}\n <div style={{ padding: 'var(--space-pagePadding)' }}>\n <SectionStack>\n <PagePurpose className=\"max-w-[80ch]\">\n {tr(\n 'bigconsole.parsers.list.purpose',\n 'Parsers define how raw input — log lines, CSVs, JSON, or arbitrary text — is read and mapped into structured fields. Build a parser once, test it against a sample, then reuse it across pipelines so every source lands in a consistent, queryable shape.'\n )}\n </PagePurpose>\n\n {/* Controls — recessed so the eye separates filters from results */}\n <Section\n emphasis=\"muted\"\n padding=\"compact\"\n headingLevel={2}\n title={tr('bigconsole.parsers.list.findTitle', 'Find a parser')}\n headerClassName=\"mb-control-gap\"\n data-testid=\"parser-filters\"\n >\n <div className=\"flex flex-wrap items-center gap-control-gap\">\n {/* Search Bar */}\n <div className=\"relative w-full min-w-0 flex-1 sm:max-w-[400px]\">\n <Search\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n left: 'var(--space-controlGap)',\n top: '50%',\n transform: 'translateY(-50%)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n color: 'var(--color-text-muted)',\n }}\n />\n <Input\n type=\"text\"\n aria-label={tr('bigconsole.parsers.list.searchPlaceholder', 'Search parsers...')}\n placeholder={tr('bigconsole.parsers.list.searchPlaceholder', 'Search parsers...')}\n value={searchQuery || ''}\n onChange={handleSearchChange}\n className=\"min-h-control-md\"\n style={{ paddingLeft: 'var(--size-controlHeight-md)', height: 'var(--size-controlHeight-md)' }}\n />\n </div>\n\n {/* Type Filter */}\n <Select value={typeFilter || 'all'} onValueChange={handleTypeFilterChange}>\n <SelectTrigger\n aria-label={tr('bigconsole.parsers.filters.typeAriaLabel', 'Filter by parser type')}\n className=\"min-h-control-md w-full sm:w-[150px]\"\n >\n <SelectValue placeholder={tr('bigconsole.parsers.filters.allTypes', 'All Types')} />\n </SelectTrigger>\n <SelectContent>\n {TYPE_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Status Filter */}\n <Select value={statusFilter || 'all'} onValueChange={handleStatusFilterChange}>\n <SelectTrigger\n aria-label={tr('bigconsole.parsers.filters.statusAriaLabel', 'Filter by status')}\n className=\"min-h-control-md w-full sm:w-[150px]\"\n >\n <SelectValue placeholder={tr('bigconsole.parsers.filters.allStatus', 'All Status')} />\n </SelectTrigger>\n <SelectContent>\n {STATUS_OPTIONS.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Clear Filters */}\n {hasActiveFilters && (\n <Button variant=\"ghost\" size=\"sm\" onClick={handleClearFilters} className=\"min-h-control-md\">\n <X\n style={{\n marginRight: 'var(--space-iconGap)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n }}\n />\n {tr('bigconsole.parsers.filters.clear', 'Clear Filters')}\n </Button>\n )}\n </div>\n </Section>\n\n {/* Results — the block this route exists for */}\n <Section\n emphasis=\"primary\"\n padding=\"compact\"\n headingLevel={2}\n title={tr('bigconsole.parsers.list.resultsTitle', 'Parsers')}\n description={tr(\n 'bigconsole.parsers.list.resultsDescription',\n 'Open a parser to review its expression, or use the actions on a card to edit, export or delete it.'\n )}\n meta={\n <Badge variant=\"secondary\">\n {filteredParsers.length === 1\n ? tr('bigconsole.parsers.list.countSingular', '{{count}} Parser', {\n count: filteredParsers.length,\n })\n : tr('bigconsole.parsers.list.countPlural', '{{count}} Parsers', {\n count: filteredParsers.length,\n })}\n </Badge>\n }\n data-testid=\"parser-results\"\n >\n {/* Loading state — keeps the section frame so the layout does not collapse */}\n {loading && (\n <div className=\"flex items-center justify-center py-12 sm:py-16\">\n <div className=\"text-center\">\n <Spinner\n style={{\n height: 'var(--size-icon-xl)',\n width: 'var(--size-icon-xl)',\n margin: '0 auto var(--space-formGap)',\n }}\n />\n <p className=\"text-sm text-text-muted\">\n {tr('bigconsole.parsers.list.loading', 'Loading parsers...')}\n </p>\n </div>\n </div>\n )}\n\n {/* Empty state */}\n {!loading && filteredParsers.length === 0 && !hasActiveFilters && (\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={tr('bigconsole.parsers.list.emptyTitle', 'No Parsers yet')}\n description={tr(\n 'bigconsole.parsers.list.emptyDescription',\n 'Create your first parser to start transforming data with JQ or JSONata.'\n )}\n action={\n <PermissionButton permission={BIGCONSOLE_PERMISSIONS.PARSER_CREATE} deniedBehavior=\"disable\">\n <Button onClick={handleCreateParser}>\n <Plus\n style={{\n marginRight: 'var(--space-iconGap)',\n height: 'var(--size-icon-sm)',\n width: 'var(--size-icon-sm)',\n }}\n />\n {tr('bigconsole.parsers.actions.create', 'Create Parser')}\n </Button>\n </PermissionButton>\n }\n />\n )}\n\n {/* No results state */}\n {!loading && filteredParsers.length === 0 && hasActiveFilters && (\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title={tr('bigconsole.parsers.list.noMatchTitle', 'No matching parsers')}\n description={tr('bigconsole.parsers.list.noMatchDescription', 'No parsers match your filters')}\n action={\n <Button variant=\"ghost\" size=\"sm\" onClick={handleClearFilters}>\n {tr('bigconsole.parsers.filters.clear', 'Clear Filters')}\n </Button>\n }\n />\n )}\n\n {/* Parser Grid */}\n {!loading && filteredParsers.length > 0 && (\n <ul className=\"grid list-none grid-cols-[repeat(auto-fill,minmax(min(100%,18rem),1fr))] gap-form-gap p-0\">\n {filteredParsers.map((parser: Parser) => (\n <li key={parser.id} className=\"min-w-0\">\n <ParserCard\n parser={parser}\n onView={handleViewParser}\n // ParserCard renders each action icon only when its handler is\n // provided, so gate edit/delete by passing undefined when the\n // caller lacks the corresponding permission. Export is a\n // read-only download and stays available to any reader.\n onEdit={canUpdate ? handleEditParser : undefined}\n onExport={handleExportParser}\n onDelete={canDelete ? handleDeleteParser : undefined}\n isDeleting={isDeleting && deleteTargetId === parser.id}\n />\n </li>\n ))}\n </ul>\n )}\n </Section>\n </SectionStack>\n </div>\n\n {/* Import Parser Dialog */}\n <ImportParserDialog\n isOpen={isImportDialogOpen}\n onClose={() => setIsImportDialogOpen(false)}\n consoleId={consoleId}\n onSuccess={handleImportSuccess}\n />\n </div>\n );\n});\n\nexport default DataParsersPage;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataSinkAlertsPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/DataSinkAlertsPage.tsx"],"names":[],"mappings":"AA0CA,MAAM,CAAC,OAAO,UAAU,kBAAkB,gCASzC"}
|