cursedbelt 5.50.0 → 5.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react/analytics/AnalyticsPanel.d.ts +6 -1
- package/dist/react/analytics/AnalyticsPanel.d.ts.map +1 -1
- package/dist/react/analytics/AnalyticsPanel.js +2 -2
- package/dist/react/analytics/AnalyticsPanel.js.map +1 -1
- package/dist/react/analytics/MetricDrilldown.d.ts.map +1 -1
- package/dist/react/analytics/MetricDrilldown.js +3 -1
- package/dist/react/analytics/MetricDrilldown.js.map +1 -1
- package/dist/react/analytics/RangeTabs.d.ts.map +1 -1
- package/dist/react/analytics/RangeTabs.js +2 -1
- package/dist/react/analytics/RangeTabs.js.map +1 -1
- package/dist/react/charts/AreaChart.d.ts +2 -2
- package/dist/react/charts/AreaChart.d.ts.map +1 -1
- package/dist/react/charts/AreaChart.js +2 -2
- package/dist/react/charts/AreaChart.js.map +1 -1
- package/dist/react/charts/BarChart.d.ts +5 -2
- package/dist/react/charts/BarChart.d.ts.map +1 -1
- package/dist/react/charts/BarChart.js +2 -2
- package/dist/react/charts/BarChart.js.map +1 -1
- package/dist/react/charts/ChartLegend.d.ts +7 -1
- package/dist/react/charts/ChartLegend.d.ts.map +1 -1
- package/dist/react/charts/ChartLegend.js +12 -3
- package/dist/react/charts/ChartLegend.js.map +1 -1
- package/dist/react/charts/LineChart.d.ts +2 -2
- package/dist/react/charts/LineChart.d.ts.map +1 -1
- package/dist/react/charts/LineChart.js +2 -2
- package/dist/react/charts/LineChart.js.map +1 -1
- package/dist/react/charts/PieChart.js +1 -1
- package/dist/react/charts/PieChart.js.map +1 -1
- package/dist/react/charts/TimeSeriesChart.d.ts +13 -3
- package/dist/react/charts/TimeSeriesChart.d.ts.map +1 -1
- package/dist/react/charts/TimeSeriesChart.js +9 -3
- package/dist/react/charts/TimeSeriesChart.js.map +1 -1
- package/dist/react/charts/Treemap.d.ts.map +1 -1
- package/dist/react/charts/Treemap.js +22 -5
- package/dist/react/charts/Treemap.js.map +1 -1
- package/dist/react/charts/ink.d.ts +14 -0
- package/dist/react/charts/ink.d.ts.map +1 -0
- package/dist/react/charts/ink.js +43 -0
- package/dist/react/charts/ink.js.map +1 -0
- package/dist/react/chat/Bubble.d.ts.map +1 -1
- package/dist/react/chat/Bubble.js +11 -6
- package/dist/react/chat/Bubble.js.map +1 -1
- package/dist/react/chat/MessageComposer.d.ts.map +1 -1
- package/dist/react/chat/MessageComposer.js +1 -1
- package/dist/react/chat/MessageComposer.js.map +1 -1
- package/dist/react/chat/MessageScroller.d.ts.map +1 -1
- package/dist/react/chat/MessageScroller.js +1 -1
- package/dist/react/chat/MessageScroller.js.map +1 -1
- package/dist/react/chat/PresenceRoster.d.ts.map +1 -1
- package/dist/react/chat/PresenceRoster.js +1 -1
- package/dist/react/chat/PresenceRoster.js.map +1 -1
- package/dist/react/code-editor/CodeEditor.d.ts.map +1 -1
- package/dist/react/code-editor/CodeEditor.js +2 -0
- package/dist/react/code-editor/CodeEditor.js.map +1 -1
- package/dist/react/code-editor/theme.d.ts.map +1 -1
- package/dist/react/code-editor/theme.js +34 -24
- package/dist/react/code-editor/theme.js.map +1 -1
- package/dist/react/colorScheme/ThemeToggle.d.ts +6 -0
- package/dist/react/colorScheme/ThemeToggle.d.ts.map +1 -1
- package/dist/react/colorScheme/ThemeToggle.js +7 -1
- package/dist/react/colorScheme/ThemeToggle.js.map +1 -1
- package/dist/react/companion-link/CompanionLinkBar.d.ts.map +1 -1
- package/dist/react/companion-link/CompanionLinkBar.js +1 -1
- package/dist/react/companion-link/CompanionLinkBar.js.map +1 -1
- package/dist/react/components/Accordion.d.ts.map +1 -1
- package/dist/react/components/Accordion.js +1 -1
- package/dist/react/components/Accordion.js.map +1 -1
- package/dist/react/components/AddItemsMenu.d.ts +1 -1
- package/dist/react/components/AddItemsMenu.d.ts.map +1 -1
- package/dist/react/components/AddItemsMenu.js +7 -2
- package/dist/react/components/AddItemsMenu.js.map +1 -1
- package/dist/react/components/AvatarStack.d.ts +0 -5
- package/dist/react/components/AvatarStack.d.ts.map +1 -1
- package/dist/react/components/AvatarStack.js +23 -4
- package/dist/react/components/AvatarStack.js.map +1 -1
- package/dist/react/components/ChartTablePanel.d.ts.map +1 -1
- package/dist/react/components/ChartTablePanel.js +7 -1
- package/dist/react/components/ChartTablePanel.js.map +1 -1
- package/dist/react/components/ChipFilterStrip.js +1 -1
- package/dist/react/components/ChipFilterStrip.js.map +1 -1
- package/dist/react/components/CommentThread.d.ts.map +1 -1
- package/dist/react/components/CommentThread.js +10 -3
- package/dist/react/components/CommentThread.js.map +1 -1
- package/dist/react/components/ConnectionHealer.d.ts.map +1 -1
- package/dist/react/components/ConnectionHealer.js +2 -2
- package/dist/react/components/ConnectionHealer.js.map +1 -1
- package/dist/react/components/DataTable/DataTable.d.ts +2 -0
- package/dist/react/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/react/components/DataTable/DataTable.js +14 -2
- package/dist/react/components/DataTable/DataTable.js.map +1 -1
- package/dist/react/components/DataTable/SortStack.d.ts.map +1 -1
- package/dist/react/components/DataTable/SortStack.js +5 -2
- package/dist/react/components/DataTable/SortStack.js.map +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.d.ts +3 -1
- package/dist/react/components/DataTable/TableFilterBuilder.d.ts.map +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.js +7 -3
- package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -1
- package/dist/react/components/DataTable/Toolbar.d.ts +2 -1
- package/dist/react/components/DataTable/Toolbar.d.ts.map +1 -1
- package/dist/react/components/DataTable/Toolbar.js +3 -2
- package/dist/react/components/DataTable/Toolbar.js.map +1 -1
- package/dist/react/components/DataTable/cells/CellRenderer.js +1 -1
- package/dist/react/components/DataTable/cells/CellRenderer.js.map +1 -1
- package/dist/react/components/DataTable/types.d.ts +8 -0
- package/dist/react/components/DataTable/types.d.ts.map +1 -1
- package/dist/react/components/DataTable/types.js.map +1 -1
- package/dist/react/components/DisclosureButton.d.ts.map +1 -1
- package/dist/react/components/DisclosureButton.js +4 -1
- package/dist/react/components/DisclosureButton.js.map +1 -1
- package/dist/react/components/DropIndicator.d.ts +6 -1
- package/dist/react/components/DropIndicator.d.ts.map +1 -1
- package/dist/react/components/DropIndicator.js +9 -8
- package/dist/react/components/DropIndicator.js.map +1 -1
- package/dist/react/components/DropSlot.d.ts +3 -1
- package/dist/react/components/DropSlot.d.ts.map +1 -1
- package/dist/react/components/DropSlot.js +4 -2
- package/dist/react/components/DropSlot.js.map +1 -1
- package/dist/react/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/react/components/ErrorBoundary.js +2 -2
- package/dist/react/components/ErrorBoundary.js.map +1 -1
- package/dist/react/components/ExternalLink.d.ts.map +1 -1
- package/dist/react/components/ExternalLink.js +8 -1
- package/dist/react/components/ExternalLink.js.map +1 -1
- package/dist/react/components/FileDropZone.d.ts.map +1 -1
- package/dist/react/components/FileDropZone.js +6 -2
- package/dist/react/components/FileDropZone.js.map +1 -1
- package/dist/react/components/FindingsList.d.ts +6 -2
- package/dist/react/components/FindingsList.d.ts.map +1 -1
- package/dist/react/components/FindingsList.js +9 -1
- package/dist/react/components/FindingsList.js.map +1 -1
- package/dist/react/components/Guide.d.ts.map +1 -1
- package/dist/react/components/Guide.js +2 -2
- package/dist/react/components/Guide.js.map +1 -1
- package/dist/react/components/ImpactDialog.d.ts.map +1 -1
- package/dist/react/components/ImpactDialog.js +5 -2
- package/dist/react/components/ImpactDialog.js.map +1 -1
- package/dist/react/components/InheritBadge.d.ts.map +1 -1
- package/dist/react/components/InheritBadge.js +4 -1
- package/dist/react/components/InheritBadge.js.map +1 -1
- package/dist/react/components/IsolatedFrame.d.ts.map +1 -1
- package/dist/react/components/IsolatedFrame.js +9 -3
- package/dist/react/components/IsolatedFrame.js.map +1 -1
- package/dist/react/components/LogViewer.js +1 -1
- package/dist/react/components/LogViewer.js.map +1 -1
- package/dist/react/components/MeterList.d.ts.map +1 -1
- package/dist/react/components/MeterList.js +11 -1
- package/dist/react/components/MeterList.js.map +1 -1
- package/dist/react/components/Page.d.ts +5 -0
- package/dist/react/components/Page.d.ts.map +1 -1
- package/dist/react/components/Page.js +4 -3
- package/dist/react/components/Page.js.map +1 -1
- package/dist/react/components/PanelSeparator.d.ts.map +1 -1
- package/dist/react/components/PanelSeparator.js +1 -1
- package/dist/react/components/PanelSeparator.js.map +1 -1
- package/dist/react/components/Popover.d.ts.map +1 -1
- package/dist/react/components/Popover.js +4 -1
- package/dist/react/components/Popover.js.map +1 -1
- package/dist/react/components/ReactionBar.d.ts.map +1 -1
- package/dist/react/components/ReactionBar.js +4 -1
- package/dist/react/components/ReactionBar.js.map +1 -1
- package/dist/react/components/ReactionPicker.d.ts.map +1 -1
- package/dist/react/components/ReactionPicker.js +2 -1
- package/dist/react/components/ReactionPicker.js.map +1 -1
- package/dist/react/components/ResponsiveWorkbench.d.ts.map +1 -1
- package/dist/react/components/ResponsiveWorkbench.js +1 -1
- package/dist/react/components/ResponsiveWorkbench.js.map +1 -1
- package/dist/react/components/ScrollToTopButton.d.ts.map +1 -1
- package/dist/react/components/ScrollToTopButton.js +4 -1
- package/dist/react/components/ScrollToTopButton.js.map +1 -1
- package/dist/react/components/SegmentedControl.d.ts +1 -1
- package/dist/react/components/SegmentedControl.d.ts.map +1 -1
- package/dist/react/components/SegmentedControl.js +5 -1
- package/dist/react/components/SegmentedControl.js.map +1 -1
- package/dist/react/components/SelectField.d.ts.map +1 -1
- package/dist/react/components/SelectField.js +1 -1
- package/dist/react/components/SelectField.js.map +1 -1
- package/dist/react/components/SelectableRow.d.ts.map +1 -1
- package/dist/react/components/SelectableRow.js +5 -2
- package/dist/react/components/SelectableRow.js.map +1 -1
- package/dist/react/components/SheetTabStrip.d.ts +122 -0
- package/dist/react/components/SheetTabStrip.d.ts.map +1 -0
- package/dist/react/components/SheetTabStrip.js +390 -0
- package/dist/react/components/SheetTabStrip.js.map +1 -0
- package/dist/react/components/Slider.d.ts +3 -1
- package/dist/react/components/Slider.d.ts.map +1 -1
- package/dist/react/components/Slider.js +7 -2
- package/dist/react/components/Slider.js.map +1 -1
- package/dist/react/components/SliderField.d.ts +42 -1
- package/dist/react/components/SliderField.d.ts.map +1 -1
- package/dist/react/components/SliderField.js +94 -5
- package/dist/react/components/SliderField.js.map +1 -1
- package/dist/react/components/Tabs.d.ts.map +1 -1
- package/dist/react/components/Tabs.js +4 -34
- package/dist/react/components/Tabs.js.map +1 -1
- package/dist/react/components/TreeView.js +7 -1
- package/dist/react/components/TreeView.js.map +1 -1
- package/dist/react/components/WidgetHeader.d.ts.map +1 -1
- package/dist/react/components/WidgetHeader.js +1 -1
- package/dist/react/components/WidgetHeader.js.map +1 -1
- package/dist/react/components/calendar/MonthGrid.d.ts.map +1 -1
- package/dist/react/components/calendar/MonthGrid.js +4 -2
- package/dist/react/components/calendar/MonthGrid.js.map +1 -1
- package/dist/react/components/sharing/ShareEditor.d.ts.map +1 -1
- package/dist/react/components/sharing/ShareEditor.js +11 -3
- package/dist/react/components/sharing/ShareEditor.js.map +1 -1
- package/dist/react/components/sheetTabStrip.css +274 -0
- package/dist/react/components/sheetTabStripLogic.d.ts +95 -0
- package/dist/react/components/sheetTabStripLogic.d.ts.map +1 -0
- package/dist/react/components/sheetTabStripLogic.js +113 -0
- package/dist/react/components/sheetTabStripLogic.js.map +1 -0
- package/dist/react/components/sliderField.css +98 -0
- package/dist/react/dashboard-grid/DashboardGrid.d.ts.map +1 -1
- package/dist/react/dashboard-grid/DashboardGrid.js +13 -5
- package/dist/react/dashboard-grid/DashboardGrid.js.map +1 -1
- package/dist/react/dashboard-grid/WidgetFrame.d.ts.map +1 -1
- package/dist/react/dashboard-grid/WidgetFrame.js +4 -1
- package/dist/react/dashboard-grid/WidgetFrame.js.map +1 -1
- package/dist/react/diff-viewer/DiffViewer.css +60 -2
- package/dist/react/diff-viewer/DiffViewer.d.ts +16 -0
- package/dist/react/diff-viewer/DiffViewer.d.ts.map +1 -1
- package/dist/react/diff-viewer/DiffViewer.js +29 -1
- package/dist/react/diff-viewer/DiffViewer.js.map +1 -1
- package/dist/react/disk-usage/DiskUsageRulesEditor.d.ts.map +1 -1
- package/dist/react/disk-usage/DiskUsageRulesEditor.js +3 -1
- package/dist/react/disk-usage/DiskUsageRulesEditor.js.map +1 -1
- package/dist/react/disk-usage/DiskUsageScanControls.d.ts.map +1 -1
- package/dist/react/disk-usage/DiskUsageScanControls.js +5 -3
- package/dist/react/disk-usage/DiskUsageScanControls.js.map +1 -1
- package/dist/react/disk-usage/DiskUsageSummaryTiles.d.ts.map +1 -1
- package/dist/react/disk-usage/DiskUsageSummaryTiles.js +10 -2
- package/dist/react/disk-usage/DiskUsageSummaryTiles.js.map +1 -1
- package/dist/react/disk-usage/DiskUsageTree.d.ts +1 -1
- package/dist/react/disk-usage/DiskUsageTree.d.ts.map +1 -1
- package/dist/react/disk-usage/DiskUsageTree.js +4 -3
- package/dist/react/disk-usage/DiskUsageTree.js.map +1 -1
- package/dist/react/file-tree/fileTree.css +4 -3
- package/dist/react/filter-rail/FilterRail.d.ts +5 -4
- package/dist/react/filter-rail/FilterRail.d.ts.map +1 -1
- package/dist/react/filter-rail/FilterRail.js +1 -1
- package/dist/react/filter-rail/FilterRail.js.map +1 -1
- package/dist/react/folder-tree/FolderPicker.d.ts.map +1 -1
- package/dist/react/folder-tree/FolderPicker.js +12 -5
- package/dist/react/folder-tree/FolderPicker.js.map +1 -1
- package/dist/react/folder-tree/FolderTreeRail.d.ts.map +1 -1
- package/dist/react/folder-tree/FolderTreeRail.js +9 -5
- package/dist/react/folder-tree/FolderTreeRail.js.map +1 -1
- package/dist/react/folder-tree/NewFolderControl.d.ts +0 -31
- package/dist/react/folder-tree/NewFolderControl.d.ts.map +1 -1
- package/dist/react/folder-tree/NewFolderControl.js +26 -17
- package/dist/react/folder-tree/NewFolderControl.js.map +1 -1
- package/dist/react/hooks/useScrollFade.d.ts +18 -0
- package/dist/react/hooks/useScrollFade.d.ts.map +1 -0
- package/dist/react/hooks/useScrollFade.js +50 -0
- package/dist/react/hooks/useScrollFade.js.map +1 -0
- package/dist/react/index.d.ts +0 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +0 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/layoutEngine/LayoutCanvas.d.ts.map +1 -1
- package/dist/react/layoutEngine/LayoutCanvas.js +13 -2
- package/dist/react/layoutEngine/LayoutCanvas.js.map +1 -1
- package/dist/react/layoutEngine/LayoutConfigDialog.d.ts.map +1 -1
- package/dist/react/layoutEngine/LayoutConfigDialog.js +17 -4
- package/dist/react/layoutEngine/LayoutConfigDialog.js.map +1 -1
- package/dist/react/layoutEngine/LayoutRenderer.d.ts.map +1 -1
- package/dist/react/layoutEngine/LayoutRenderer.js +24 -0
- package/dist/react/layoutEngine/LayoutRenderer.js.map +1 -1
- package/dist/react/layoutEngine/SuggestPanel.d.ts.map +1 -1
- package/dist/react/layoutEngine/SuggestPanel.js +4 -1
- package/dist/react/layoutEngine/SuggestPanel.js.map +1 -1
- package/dist/react/markdown/Markdown.d.ts.map +1 -1
- package/dist/react/markdown/Markdown.js +2 -2
- package/dist/react/markdown/Markdown.js.map +1 -1
- package/dist/react/master-detail/DetailPane.d.ts.map +1 -1
- package/dist/react/master-detail/DetailPane.js +1 -1
- package/dist/react/master-detail/DetailPane.js.map +1 -1
- package/dist/react/master-detail/MasterDetail.d.ts +0 -28
- package/dist/react/master-detail/MasterDetail.d.ts.map +1 -1
- package/dist/react/master-detail/MasterDetail.js +34 -2
- package/dist/react/master-detail/MasterDetail.js.map +1 -1
- package/dist/react/master-lock/MasterLockDialog.d.ts.map +1 -1
- package/dist/react/master-lock/MasterLockDialog.js +1 -1
- package/dist/react/master-lock/MasterLockDialog.js.map +1 -1
- package/dist/react/master-lock/MasterLockProvider.d.ts.map +1 -1
- package/dist/react/master-lock/MasterLockProvider.js +1 -1
- package/dist/react/master-lock/MasterLockProvider.js.map +1 -1
- package/dist/react/media/DenseGalleryShell.d.ts +7 -1
- package/dist/react/media/DenseGalleryShell.d.ts.map +1 -1
- package/dist/react/media/DenseGalleryShell.js +2 -2
- package/dist/react/media/DenseGalleryShell.js.map +1 -1
- package/dist/react/media/PictureControls.d.ts +27 -0
- package/dist/react/media/PictureControls.d.ts.map +1 -1
- package/dist/react/media/PictureControls.js +1 -0
- package/dist/react/media/PictureControls.js.map +1 -1
- package/dist/react/media/denseGallery.css +3 -0
- package/dist/react/media/focusViewer.css +2 -33
- package/dist/react/media/pictureControls.css +36 -0
- package/dist/react/media/playerStrip.css +5 -2
- package/dist/react/namespace/NamespaceTargetCapsule.d.ts +6 -3
- package/dist/react/namespace/NamespaceTargetCapsule.d.ts.map +1 -1
- package/dist/react/namespace/NamespaceTargetCapsule.js +7 -4
- package/dist/react/namespace/NamespaceTargetCapsule.js.map +1 -1
- package/dist/react/nav/BreadcrumbTrail.d.ts.map +1 -1
- package/dist/react/nav/BreadcrumbTrail.js +6 -2
- package/dist/react/nav/BreadcrumbTrail.js.map +1 -1
- package/dist/react/nav/colors.d.ts.map +1 -1
- package/dist/react/nav/colors.js +6 -1
- package/dist/react/nav/colors.js.map +1 -1
- package/dist/react/notifications/NotificationInbox.d.ts.map +1 -1
- package/dist/react/notifications/NotificationInbox.js +4 -1
- package/dist/react/notifications/NotificationInbox.js.map +1 -1
- package/dist/react/pdf-viewer/PdfPage.d.ts +1 -0
- package/dist/react/pdf-viewer/PdfPage.d.ts.map +1 -1
- package/dist/react/pdf-viewer/PdfPage.js +27 -11
- package/dist/react/pdf-viewer/PdfPage.js.map +1 -1
- package/dist/react/rich-text/RichTextToolbar.d.ts.map +1 -1
- package/dist/react/rich-text/RichTextToolbar.js +1 -1
- package/dist/react/rich-text/RichTextToolbar.js.map +1 -1
- package/dist/react/rich-text/prose.css +12 -5
- package/dist/react/spreadsheet/useGlideTheme.js +1 -1
- package/dist/styles-areas/analytics.css +22 -20
- package/dist/styles-areas/calendar.css +6 -5
- package/dist/styles-areas/chart-table.css +2 -2
- package/dist/styles-areas/charts.css +2 -2
- package/dist/styles-areas/chat.css +6 -6
- package/dist/styles-areas/core.css +43 -41
- package/dist/styles-areas/dashboard-grid.css +1 -2
- package/dist/styles-areas/data-table.css +16 -14
- package/dist/styles-areas/disk-usage.css +5 -6
- package/dist/styles-areas/emoji.css +2 -2
- package/dist/styles-areas/folder-tree.css +5 -6
- package/dist/styles-areas/layout-engine.css +12 -5
- package/dist/styles-areas/markdown.css +4 -4
- package/dist/styles-areas/media.css +2 -2
- package/dist/styles-areas/notifications.css +7 -4
- package/dist/styles-areas/overlays.css +3 -3
- package/dist/styles-areas/rich-text.css +3 -3
- package/dist/styles-areas/sharing.css +3 -3
- package/dist/styles-areas/stats.css +5 -5
- package/dist/styles-areas/workbench.css +17 -17
- package/dist/styles-static.css +18 -40
- package/dist/styles-utilities.css +220 -17
- package/dist/styles.css +18 -40
- package/dist/testing/designAudit.d.ts +3 -1
- package/dist/testing/designAudit.d.ts.map +1 -1
- package/dist/testing/designAudit.js +131 -3
- package/dist/testing/designAudit.js.map +1 -1
- package/dist/testing/designBaseline.d.ts +2 -0
- package/dist/testing/designBaseline.d.ts.map +1 -1
- package/dist/testing/designBaseline.js +86 -36
- package/dist/testing/designBaseline.js.map +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/theme.css +16 -8
- package/package.json +15 -1
- package/scripts/demoCoverage.spec.ts +18 -1
- package/scripts/demoCoverage.ts +17 -8
- package/scripts/guardrails-baseline.json +2 -2
- package/scripts/styleAreas.ts +3 -1
- package/src/demoFixture.spec.ts +3 -0
- package/src/react/analytics/AnalyticsPanel.tsx +9 -1
- package/src/react/analytics/MetricDrilldown.tsx +2 -0
- package/src/react/analytics/RangeTabs.tsx +5 -1
- package/src/react/charts/AreaChart.tsx +4 -4
- package/src/react/charts/BarChart.tsx +9 -6
- package/src/react/charts/ChartLegend.tsx +13 -4
- package/src/react/charts/LineChart.tsx +4 -4
- package/src/react/charts/PieChart.tsx +1 -1
- package/src/react/charts/TimeSeriesChart.tsx +39 -29
- package/src/react/charts/Treemap.tsx +33 -9
- package/src/react/charts/ink.spec.ts +22 -0
- package/src/react/charts/ink.ts +42 -0
- package/src/react/chat/Bubble.tsx +20 -8
- package/src/react/chat/MessageComposer.tsx +3 -1
- package/src/react/chat/MessageScroller.tsx +4 -1
- package/src/react/chat/PresenceRoster.tsx +5 -2
- package/src/react/code-editor/CodeEditor.tsx +2 -0
- package/src/react/code-editor/theme.ts +34 -24
- package/src/react/colorScheme/ThemeToggle.spec.tsx +3 -4
- package/src/react/colorScheme/ThemeToggle.tsx +6 -1
- package/src/react/companion-link/CompanionLinkBar.tsx +3 -1
- package/src/react/components/Accordion.tsx +3 -1
- package/src/react/components/AddItemsMenu.tsx +7 -3
- package/src/react/components/AvatarStack.spec.tsx +17 -2
- package/src/react/components/AvatarStack.tsx +40 -11
- package/src/react/components/ChartTablePanel.tsx +16 -1
- package/src/react/components/ChipFilterStrip.tsx +1 -1
- package/src/react/components/CommentThread.spec.tsx +6 -0
- package/src/react/components/CommentThread.tsx +26 -4
- package/src/react/components/ConnectionHealer.tsx +4 -2
- package/src/react/components/DataTable/DataTable.spec.tsx +23 -0
- package/src/react/components/DataTable/DataTable.tsx +52 -0
- package/src/react/components/DataTable/SortStack.tsx +4 -2
- package/src/react/components/DataTable/TableFilterBuilder.tsx +16 -7
- package/src/react/components/DataTable/Toolbar.tsx +11 -3
- package/src/react/components/DataTable/cells/CellRenderer.tsx +1 -1
- package/src/react/components/DataTable/types.ts +8 -0
- package/src/react/components/DisclosureButton.tsx +6 -1
- package/src/react/components/DropIndicator.tsx +9 -8
- package/src/react/components/DropSlot.tsx +4 -2
- package/src/react/components/ErrorBoundary.tsx +3 -2
- package/src/react/components/ExternalLink.tsx +15 -4
- package/src/react/components/FileDropZone.tsx +5 -2
- package/src/react/components/FindingsList.tsx +21 -4
- package/src/react/components/Guide.tsx +10 -3
- package/src/react/components/ImpactDialog.tsx +9 -2
- package/src/react/components/InheritBadge.spec.tsx +27 -1
- package/src/react/components/InheritBadge.tsx +17 -1
- package/src/react/components/IsolatedFrame.spec.tsx +14 -2
- package/src/react/components/IsolatedFrame.tsx +13 -3
- package/src/react/components/LogViewer.tsx +1 -1
- package/src/react/components/MeterList.tsx +11 -1
- package/src/react/components/Page.tsx +6 -2
- package/src/react/components/PanelSeparator.tsx +3 -1
- package/src/react/components/Popover.tsx +3 -0
- package/src/react/components/ReactionBar.tsx +3 -1
- package/src/react/components/ReactionPicker.tsx +3 -2
- package/src/react/components/ResponsiveWorkbench.tsx +3 -1
- package/src/react/components/ScrollToTopButton.tsx +3 -0
- package/src/react/components/SegmentedControl.tsx +7 -1
- package/src/react/components/SelectField.tsx +7 -1
- package/src/react/components/SelectableRow.tsx +3 -1
- package/src/react/components/SheetTabStrip.spec.tsx +214 -0
- package/src/react/components/SheetTabStrip.tsx +711 -0
- package/src/react/components/Slider.tsx +16 -0
- package/src/react/components/SliderField.render.spec.tsx +106 -0
- package/src/react/components/SliderField.tsx +148 -4
- package/src/react/components/Tabs.tsx +5 -36
- package/src/react/components/TreeView.tsx +8 -4
- package/src/react/components/WidgetHeader.tsx +6 -2
- package/src/react/components/calendar/MonthGrid.spec.tsx +2 -2
- package/src/react/components/calendar/MonthGrid.tsx +4 -2
- package/src/react/components/sharing/ShareEditor.spec.tsx +14 -0
- package/src/react/components/sharing/ShareEditor.tsx +18 -6
- package/src/react/components/sheetTabStrip.css +274 -0
- package/src/react/components/sheetTabStripLogic.ts +127 -0
- package/src/react/components/sliderField.css +98 -0
- package/src/react/dashboard-grid/DashboardGrid.tsx +13 -5
- package/src/react/dashboard-grid/WidgetFrame.tsx +3 -1
- package/src/react/diff-viewer/DiffViewer.css +60 -2
- package/src/react/diff-viewer/DiffViewer.spec.tsx +22 -0
- package/src/react/diff-viewer/DiffViewer.tsx +30 -1
- package/src/react/disk-usage/DiskUsage.spec.tsx +16 -4
- package/src/react/disk-usage/DiskUsageRulesEditor.tsx +3 -1
- package/src/react/disk-usage/DiskUsageScanControls.tsx +25 -8
- package/src/react/disk-usage/DiskUsageSummaryTiles.tsx +17 -1
- package/src/react/disk-usage/DiskUsageTree.tsx +11 -12
- package/src/react/file-tree/fileTree.css +4 -3
- package/src/react/filter-rail/FilterRail.spec.tsx +6 -5
- package/src/react/filter-rail/FilterRail.tsx +6 -5
- package/src/react/folder-tree/FolderPicker.tsx +33 -21
- package/src/react/folder-tree/FolderTreeRail.tsx +20 -5
- package/src/react/folder-tree/NewFolderControl.spec.tsx +1 -1
- package/src/react/folder-tree/NewFolderControl.tsx +42 -32
- package/src/react/hooks/useScrollFade.ts +56 -0
- package/src/react/index.ts +0 -1
- package/src/react/layoutEngine/LayoutCanvas.spec.tsx +73 -0
- package/src/react/layoutEngine/LayoutCanvas.tsx +12 -2
- package/src/react/layoutEngine/LayoutConfigDialog.tsx +27 -32
- package/src/react/layoutEngine/LayoutRenderer.tsx +25 -0
- package/src/react/layoutEngine/SuggestPanel.tsx +8 -1
- package/src/react/layoutEngine/gridClasses.spec.ts +84 -0
- package/src/react/markdown/Markdown.tsx +6 -2
- package/src/react/master-detail/DetailPane.tsx +3 -1
- package/src/react/master-detail/MasterDetail.tsx +12 -4
- package/src/react/master-lock/MasterLockDialog.tsx +3 -1
- package/src/react/master-lock/MasterLockProvider.tsx +3 -1
- package/src/react/media/DenseGalleryShell.tsx +8 -1
- package/src/react/media/PictureControls.tsx +1 -0
- package/src/react/media/denseGallery.css +3 -0
- package/src/react/media/focusViewer.css +2 -33
- package/src/react/media/pictureControls.css +36 -0
- package/src/react/media/playerStrip.css +5 -2
- package/src/react/namespace/NamespaceTargetCapsule.spec.tsx +5 -2
- package/src/react/namespace/NamespaceTargetCapsule.tsx +13 -5
- package/src/react/nav/BreadcrumbTrail.tsx +5 -1
- package/src/react/nav/colors.spec.ts +32 -0
- package/src/react/nav/colors.ts +6 -1
- package/src/react/notifications/NotificationInbox.tsx +15 -2
- package/src/react/pdf-viewer/PdfPage.tsx +39 -12
- package/src/react/pdf-viewer/PdfViewer.spec.tsx +20 -0
- package/src/react/rich-text/RichTextToolbar.tsx +4 -1
- package/src/react/rich-text/prose.css +12 -5
- package/src/react/spreadsheet/useGlideTheme.ts +1 -1
- package/src/styles-areas/analytics.css +22 -20
- package/src/styles-areas/calendar.css +6 -5
- package/src/styles-areas/chart-table.css +2 -2
- package/src/styles-areas/charts.css +2 -2
- package/src/styles-areas/chat.css +6 -6
- package/src/styles-areas/core.css +43 -41
- package/src/styles-areas/dashboard-grid.css +1 -2
- package/src/styles-areas/data-table.css +16 -14
- package/src/styles-areas/disk-usage.css +5 -6
- package/src/styles-areas/emoji.css +2 -2
- package/src/styles-areas/folder-tree.css +5 -6
- package/src/styles-areas/layout-engine.css +12 -5
- package/src/styles-areas/markdown.css +4 -4
- package/src/styles-areas/media.css +2 -2
- package/src/styles-areas/notifications.css +7 -4
- package/src/styles-areas/overlays.css +3 -3
- package/src/styles-areas/rich-text.css +3 -3
- package/src/styles-areas/sharing.css +3 -3
- package/src/styles-areas/stats.css +5 -5
- package/src/styles-areas/workbench.css +17 -17
- package/src/styles-static.css +18 -40
- package/src/styles-utilities.css +220 -17
- package/src/styles.css +18 -40
- package/src/testing/designAudit.ts +136 -4
- package/src/testing/designBaseline.ts +102 -42
- package/src/testing/index.ts +1 -0
- package/src/theme.css +16 -8
- package/dist/react/compat.d.ts +0 -8
- package/dist/react/compat.d.ts.map +0 -1
- package/dist/react/compat.js +0 -31
- package/dist/react/compat.js.map +0 -1
- package/src/react/compat.ts +0 -36
|
@@ -30,6 +30,11 @@ export interface AnalyticsPanelProps<TRow extends Record<string, unknown>> exten
|
|
|
30
30
|
* from the aggregation, which a hand-written subtitle always eventually does.
|
|
31
31
|
*/
|
|
32
32
|
range?: RangeWindow;
|
|
33
|
+
/**
|
|
34
|
+
* The container already states {@link question} — a drilldown's modal subtitle — so the
|
|
35
|
+
* panel does not say it a second line below (forge task 2593). The range chip still shows.
|
|
36
|
+
*/
|
|
37
|
+
questionStated?: boolean;
|
|
33
38
|
}
|
|
34
39
|
/**
|
|
35
40
|
* One analytics panel: a question, its chart, and the numbers behind it.
|
|
@@ -48,7 +53,7 @@ export interface AnalyticsPanelProps<TRow extends Record<string, unknown>> exten
|
|
|
48
53
|
* time, an app with no attribution, a retention horizon. Silence there is how a
|
|
49
54
|
* dashboard becomes confidently wrong.
|
|
50
55
|
*/
|
|
51
|
-
export declare function AnalyticsPanel<TRow extends Record<string, unknown>>({ title, question, caveat, range, chart, ...rest }: AnalyticsPanelProps<TRow>): import("react").JSX.Element;
|
|
56
|
+
export declare function AnalyticsPanel<TRow extends Record<string, unknown>>({ title, question, caveat, range, chart, questionStated, ...rest }: AnalyticsPanelProps<TRow>): import("react").JSX.Element;
|
|
52
57
|
/** Re-exported so a caller building `columns` needs one import, not two. */
|
|
53
58
|
export type { ColDef };
|
|
54
59
|
//# sourceMappingURL=AnalyticsPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsPanel.d.ts","sourceRoot":"","sources":["../../../src/react/analytics/AnalyticsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,MAAM,WAAW,mBAAmB,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACvE,SAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;OASG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;0EACsE;IACtE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"AnalyticsPanel.d.ts","sourceRoot":"","sources":["../../../src/react/analytics/AnalyticsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,MAAM,WAAW,mBAAmB,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACvE,SAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;;OASG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;0EACsE;IACtE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnE,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,cAAsB,EACtB,GAAG,IAAI,EACR,EAAE,mBAAmB,CAAC,IAAI,CAAC,+BA0B3B;AAED,4EAA4E;AAC5E,YAAY,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -18,7 +18,7 @@ import { ChartTablePanel } from '../components/ChartTablePanel.js';
|
|
|
18
18
|
* time, an app with no attribution, a retention horizon. Silence there is how a
|
|
19
19
|
* dashboard becomes confidently wrong.
|
|
20
20
|
*/
|
|
21
|
-
export function AnalyticsPanel({ title, question, caveat, range, chart, ...rest }) {
|
|
22
|
-
return (_jsx(ChartTablePanel, { ...rest, title: title, chart: _jsxs("div", { className: 'flex min-w-0 flex-col gap-2', children: [_jsxs("div", { className: 'flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1', children: [_jsx("p", { className: 'm-0 text-muted-foreground text-xs', children: question }), range && (_jsx("span", { className: 'shrink-0 whitespace-nowrap rounded-full bg-muted px-2 py-0.5 text-caption text-muted-foreground tabular-nums', "data-testid": 'analytics-panel-range', children: rangeLabel(range) }))] }), chart, caveat && _jsx("p", { className: 'text-caption text-muted-foreground italic', children: caveat })] }) }));
|
|
21
|
+
export function AnalyticsPanel({ title, question, caveat, range, chart, questionStated = false, ...rest }) {
|
|
22
|
+
return (_jsx(ChartTablePanel, { ...rest, title: title, chart: _jsxs("div", { className: 'flex min-w-0 flex-col gap-2', children: [(!questionStated || range) && (_jsxs("div", { className: 'flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1', children: [questionStated ? _jsx("span", {}) : _jsx("p", { className: 'm-0 text-muted-foreground text-xs', children: question }), range && (_jsx("span", { className: 'shrink-0 whitespace-nowrap rounded-full bg-muted px-2 py-0.5 text-caption text-muted-foreground tabular-nums', "data-testid": 'analytics-panel-range', children: rangeLabel(range) }))] })), chart, caveat && _jsx("p", { className: 'text-caption text-muted-foreground italic', children: caveat })] }) }));
|
|
23
23
|
}
|
|
24
24
|
//# sourceMappingURL=AnalyticsPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyticsPanel.js","sourceRoot":"","sources":["../../../src/react/analytics/AnalyticsPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAoB,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAA6B,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"AnalyticsPanel.js","sourceRoot":"","sources":["../../../src/react/analytics/AnalyticsPanel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAoB,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAA6B,MAAM,kCAAkC,CAAC;AAuC9F;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAuC,EACnE,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,cAAc,GAAG,KAAK,EACtB,GAAG,IAAI,EACmB;IAC1B,OAAO,CACL,KAAC,eAAe,OACV,IAAI,EACR,KAAK,EAAE,KAAK,EACZ,KAAK,EACH,eAAK,SAAS,EAAC,6BAA6B,aACzC,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,CAC/B,eAAK,SAAS,EAAC,+DAA+D,aAC3E,cAAc,CAAC,CAAC,CAAC,gBAAQ,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,mCAAmC,YAAE,QAAQ,GAAK,EAC3F,KAAK,IAAI,CACR,eACE,SAAS,EAAC,8GAA8G,iBAC5G,uBAAuB,YAElC,UAAU,CAAC,KAAK,CAAC,GACb,CACR,IACG,CACL,EACA,KAAK,EACL,MAAM,IAAI,YAAG,SAAS,EAAC,2CAA2C,YAAE,MAAM,GAAK,IAC5E,GAER,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricDrilldown.d.ts","sourceRoot":"","sources":["../../../src/react/analytics/MetricDrilldown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,WAAW,oBAAoB,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxE,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,sEAAsE;IACtE,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IACjC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACpE,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,QAAQ,GACT,EAAE,oBAAoB,CAAC,IAAI,CAAC,+
|
|
1
|
+
{"version":3,"file":"MetricDrilldown.d.ts","sourceRoot":"","sources":["../../../src/react/analytics/MetricDrilldown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,WAAW,oBAAoB,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxE,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,sEAAsE;IACtE,IAAI,EAAE,IAAI,EAAE,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IACjC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACpE,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,QAAQ,GACT,EAAE,oBAAoB,CAAC,IAAI,CAAC,+BAkD5B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,KAAK;IAChD,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAClB,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAMA"}
|
|
@@ -29,7 +29,9 @@ import { AnalyticsPanel } from './AnalyticsPanel.js';
|
|
|
29
29
|
* (retention, a pruned event log, nothing broke) rather than a blank table.
|
|
30
30
|
*/
|
|
31
31
|
export function MetricDrilldown({ open, onClose, title, value, question, caveat, range, chart, data, columns, getRowId, onRowClick, downloadName, emptyState, children, }) {
|
|
32
|
-
return (_jsx(Modal, { open: open, onClose: onClose, size: 'lg', title: value === undefined ? (title) : (_jsxs("span", { className: 'flex items-baseline gap-2', children: [_jsx("span", { children: title }), _jsx("span", { className: 'font-semibold text-muted-foreground tabular-nums', children: value })] })), subtitle: question, children: _jsxs("div", { className: 'flex min-w-0 flex-col gap-3', children: [children, _jsx(AnalyticsPanel, { title: `${data.length} ${data.length === 1 ? 'row' : 'rows'}`, question: question,
|
|
32
|
+
return (_jsx(Modal, { open: open, onClose: onClose, size: 'lg', title: value === undefined ? (title) : (_jsxs("span", { className: 'flex items-baseline gap-2', children: [_jsx("span", { children: title }), _jsx("span", { className: 'font-semibold text-muted-foreground tabular-nums', children: value })] })), subtitle: question, children: _jsxs("div", { className: 'flex min-w-0 flex-col gap-3', children: [children, _jsx(AnalyticsPanel, { title: `${data.length} ${data.length === 1 ? 'row' : 'rows'}`, question: question,
|
|
33
|
+
// The modal's subtitle is the question; the panel saying it again read as a stutter.
|
|
34
|
+
questionStated: true, ...(caveat === undefined ? {} : { caveat }), ...(range === undefined ? {} : { range }),
|
|
33
35
|
// No chart means the reader came for the list: open on the table. The
|
|
34
36
|
// Chart tab still exists (the toggle is the panel's, not ours) so it
|
|
35
37
|
// must SAY there is nothing to draw — an empty pane reads as a broken
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricDrilldown.js","sourceRoot":"","sources":["../../../src/react/analytics/MetricDrilldown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA6BrD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,eAAe,CAAuC,EACpE,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,EACV,QAAQ,GACmB;IAC3B,OAAO,CACL,KAAC,KAAK,IACJ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,IAAI,EACT,KAAK,EACH,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CACpB,KAAK,CACN,CAAC,CAAC,CAAC,CACF,gBAAM,SAAS,EAAC,2BAA2B,aACzC,yBAAO,KAAK,GAAQ,EACpB,eAAM,SAAS,EAAC,kDAAkD,YAAE,KAAK,GAAQ,IAC5E,CACR,EAEH,QAAQ,EAAE,QAAQ,YAElB,eAAK,SAAS,EAAC,6BAA6B,aACzC,QAAQ,EACT,KAAC,cAAc,IACb,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAC7D,QAAQ,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"MetricDrilldown.js","sourceRoot":"","sources":["../../../src/react/analytics/MetricDrilldown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeTabs.d.ts","sourceRoot":"","sources":["../../../src/react/analytics/RangeTabs.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EAGtB,KAAK,QAAQ,EAGd,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"RangeTabs.d.ts","sourceRoot":"","sources":["../../../src/react/analytics/RangeTabs.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,iBAAiB,EAGtB,KAAK,QAAQ,EAGd,MAAM,iCAAiC,CAAC;AAKzC,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClC,8EAA8E;IAC9E,IAAI,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,cAAc,EACd,SAAS,EACT,YAAY,EAAE,SAAwB,GACvC,EAAE,cAAc,+BAkDhB;AAED,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,GAAI,KAAK,QAAQ,KAAG,MAAsC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { useMemo } from 'react';
|
|
|
3
3
|
import { FIXED_RANGE_KEYS, RANGE_PRESETS, rangePreset, startOfDay, } from 'cursedbelt-core/analytics/range';
|
|
4
4
|
import { DateRangePicker } from '../components/DateRangePicker.js';
|
|
5
5
|
import { SegmentedControl } from '../components/SegmentedControl.js';
|
|
6
|
+
import { cn } from '../lib/cn.js';
|
|
6
7
|
/** ISO `YYYY-MM-DD` in LOCAL time — the picker's vocabulary. Never `toISOString`, which is UTC. */
|
|
7
8
|
function toIso(t) {
|
|
8
9
|
const d = new Date(t);
|
|
@@ -60,7 +61,7 @@ export function RangeTabs({ value, onChange, keys, disabled, custom, onCustomCha
|
|
|
60
61
|
// Back to the INCLUSIVE last day the reader picked (see the header note).
|
|
61
62
|
return { from: toIso(custom.from), to: toIso(custom.to - 1) };
|
|
62
63
|
}, [custom]);
|
|
63
|
-
return (_jsx("div", { className: className, children: _jsxs("div", { className: 'flex flex-wrap items-center gap-2', children: [_jsx(SegmentedControl, { "aria-label": ariaLabel, size: 'sm', value: value, onChange: onChange, options: presets.map((p) => ({
|
|
64
|
+
return (_jsx("div", { className: cn('min-w-0 max-w-full', className), children: _jsxs("div", { className: 'flex flex-wrap items-center gap-2', children: [_jsx(SegmentedControl, { "aria-label": ariaLabel, size: 'sm', value: value, onChange: onChange, options: presets.map((p) => ({
|
|
64
65
|
value: p.key,
|
|
65
66
|
label: p.label,
|
|
66
67
|
...(disabled?.[p.key]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangeTabs.js","sourceRoot":"","sources":["../../../src/react/analytics/RangeTabs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAEL,gBAAgB,EAChB,aAAa,EAEb,WAAW,EACX,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,eAAe,EAAuB,MAAM,kCAAkC,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"RangeTabs.js","sourceRoot":"","sources":["../../../src/react/analytics/RangeTabs.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,8 @@ export type AreaChartProps = {
|
|
|
15
15
|
grid?: boolean;
|
|
16
16
|
/** Stack the series into cumulative areas. */
|
|
17
17
|
stacked?: boolean;
|
|
18
|
-
/** Reserved width for the y-axis labels. */
|
|
19
|
-
yWidth?: number;
|
|
18
|
+
/** Reserved width for the y-axis labels. Default `'auto'`: the axis measures its ticks, so none wraps. */
|
|
19
|
+
yWidth?: number | 'auto';
|
|
20
20
|
xTickFormatter?: (value: string | number) => string;
|
|
21
21
|
valueFormatter?: (value: number) => string;
|
|
22
22
|
/** Format the tooltip header. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":"AAaA,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,WAAW,EAA8B,MAAM,aAAa,CAAC;AAEvH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":"AAaA,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,WAAW,EAA8B,MAAM,aAAa,CAAC;AAEvH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0GAA0G;IAC1G,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACpD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,iCAAiC;IACjC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;CACrD,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAa,EACb,MAAM,EACN,IAAW,EACX,OAAe,EACf,MAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,GACf,EAAE,cAAc,+BAmEhB"}
|
|
@@ -5,13 +5,13 @@ import { legendContent } from './ChartLegend.js';
|
|
|
5
5
|
import { tooltipContent } from './ChartTooltip.js';
|
|
6
6
|
import { axisProps, valueAxisProps, seriesColor, useGradientId } from './shared.js';
|
|
7
7
|
/** Multi-series area chart with token-colored gradient fills (per-instance ids). */
|
|
8
|
-
export function AreaChart({ data, xKey, series, ariaLabel, height, smooth = true, legend, grid = true, stacked = false, yWidth =
|
|
8
|
+
export function AreaChart({ data, xKey, series, ariaLabel, height, smooth = true, legend, grid = true, stacked = false, yWidth = 'auto', xTickFormatter, valueFormatter, labelFormatter, }) {
|
|
9
9
|
const gradId = useGradientId();
|
|
10
10
|
const showLegend = (box) => legend ?? (!box.legendInHeader && series.length > 1);
|
|
11
11
|
return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t, box) => (_jsxs(RAreaChart, { data: data, margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [_jsx("defs", { children: series.map((s, i) => {
|
|
12
12
|
const c = seriesColor(t, s, i);
|
|
13
13
|
return (_jsxs("linearGradient", { id: `${gradId}-${s.dataKey}`, x1: '0', y1: '0', x2: '0', y2: '1', children: [_jsx("stop", { offset: '0%', stopColor: c, stopOpacity: 0.2 }), _jsx("stop", { offset: '100%', stopColor: c, stopOpacity: 0.02 })] }, s.dataKey));
|
|
14
|
-
}) }), grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, vertical: false })), _jsx(XAxis, { dataKey: xKey, ...axisProps(t, box), tickFormatter: xTickFormatter, interval: 'preserveStartEnd', minTickGap: box.gap(24) }), _jsx(YAxis, { ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth, axisLine: false }), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { stroke: t.foregroundMuted, strokeWidth: 1, strokeOpacity: 0.5 }, isAnimationActive: false }), showLegend(box) && _jsx(Legend, { content: legendContent(t) }), series.map((s, i) => {
|
|
14
|
+
}) }), grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, vertical: false })), _jsx(XAxis, { dataKey: xKey, ...axisProps(t, box), tickFormatter: xTickFormatter, interval: 'preserveStartEnd', minTickGap: box.gap(24) }), _jsx(YAxis, { ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth, axisLine: false }), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { stroke: t.foregroundMuted, strokeWidth: 1, strokeOpacity: 0.5 }, isAnimationActive: false }), showLegend(box) && _jsx(Legend, { content: legendContent(t), itemSorter: null }), series.map((s, i) => {
|
|
15
15
|
const c = seriesColor(t, s, i);
|
|
16
16
|
return (_jsx(Area, { type: smooth ? 'monotone' : 'linear', dataKey: s.dataKey, name: s.name ?? s.dataKey, stackId: stacked ? (s.stackId ?? 'stack') : s.stackId, stroke: c, strokeWidth: box.stroke, fill: `url(#${gradId}-${s.dataKey})`, isAnimationActive: false }, s.dataKey));
|
|
17
17
|
})] })) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AreaChart.js","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,IAAI,EACJ,aAAa,EACb,MAAM,EACN,SAAS,IAAI,UAAU,EACvB,OAAO,EACP,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAqC,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0BvH,oFAAoF;AACpF,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,GAAG,IAAI,EACb,MAAM,EACN,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,KAAK,EACf,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"AreaChart.js","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,11 @@ export type BarChartProps = {
|
|
|
15
15
|
legend?: boolean;
|
|
16
16
|
/** Show the cartesian grid. Default true. */
|
|
17
17
|
grid?: boolean;
|
|
18
|
-
/**
|
|
19
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Reserved width for the y-axis labels. Default: `'auto'` for a value axis (it measures its
|
|
20
|
+
* ticks, so none wraps) and 44px for a horizontal chart's category axis.
|
|
21
|
+
*/
|
|
22
|
+
yWidth?: number | 'auto';
|
|
20
23
|
categoryTickFormatter?: (value: string | number) => string;
|
|
21
24
|
valueFormatter?: (value: number) => string;
|
|
22
25
|
/** Format the tooltip header. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":"AAKA,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,WAAW,EAAe,MAAM,aAAa,CAAC;AAIxG,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf
|
|
1
|
+
{"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":"AAKA,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,WAAW,EAAe,MAAM,aAAa,CAAC;AAIxG,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IAC3D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,iCAAiC;IACjC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;CACrD,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,WAAwB,EACxB,OAAe,EACf,MAAM,EACN,IAAW,EACX,MAAM,EACN,qBAAqB,EACrB,cAAc,EACd,cAAc,GACf,EAAE,aAAa,+BA8Ef"}
|
|
@@ -5,7 +5,7 @@ import { legendContent } from './ChartLegend.js';
|
|
|
5
5
|
import { tooltipContent } from './ChartTooltip.js';
|
|
6
6
|
import { axisProps, valueAxisProps, seriesColor } from './shared.js';
|
|
7
7
|
/** Vertical/horizontal, grouped/stacked bar chart with rounded corners. */
|
|
8
|
-
export function BarChart({ data, xKey, series, ariaLabel, height, orientation = 'vertical', stacked = false, legend, grid = true, yWidth
|
|
8
|
+
export function BarChart({ data, xKey, series, ariaLabel, height, orientation = 'vertical', stacked = false, legend, grid = true, yWidth, categoryTickFormatter, valueFormatter, labelFormatter, }) {
|
|
9
9
|
const horizontal = orientation === 'horizontal';
|
|
10
10
|
const showLegend = (box) => legend ?? (!box.legendInHeader && series.length > 1);
|
|
11
11
|
// Round only the outer end of each bar; for a stack, only the last (outer) series.
|
|
@@ -15,6 +15,6 @@ export function BarChart({ data, xKey, series, ariaLabel, height, orientation =
|
|
|
15
15
|
return [0, 0, 0, 0];
|
|
16
16
|
return horizontal ? [0, 4, 4, 0] : [4, 4, 0, 0];
|
|
17
17
|
};
|
|
18
|
-
return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t, box) => (_jsxs(RBarChart, { data: data, layout: horizontal ? 'vertical' : 'horizontal', margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, horizontal: !horizontal, vertical: horizontal })), horizontal ? (_jsxs(_Fragment, { children: [_jsx(XAxis, { type: 'number', ...axisProps(t, box), ...valueAxisProps(box, valueFormatter) }), _jsx(YAxis, { type: 'category', dataKey: xKey, ...axisProps(t, box), tickFormatter: categoryTickFormatter, width: yWidth, axisLine: false })] })) : (_jsxs(_Fragment, { children: [_jsx(XAxis, { type: 'category', dataKey: xKey, ...axisProps(t, box), tickFormatter: categoryTickFormatter, interval: 'preserveStartEnd', minTickGap: box.gap(8) }), _jsx(YAxis, { type: 'number', ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth, axisLine: false })] })), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { fill: t.foregroundMuted, fillOpacity: 0.08 }, isAnimationActive: false }), showLegend(box) && _jsx(Legend, { content: legendContent(t) }), series.map((s, i) => (_jsx(Bar, { dataKey: s.dataKey, name: s.name ?? s.dataKey, stackId: stacked ? (s.stackId ?? 'stack') : s.stackId, fill: seriesColor(t, s, i), radius: cornersFor(i), isAnimationActive: false }, s.dataKey)))] })) }));
|
|
18
|
+
return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t, box) => (_jsxs(RBarChart, { data: data, layout: horizontal ? 'vertical' : 'horizontal', margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, horizontal: !horizontal, vertical: horizontal })), horizontal ? (_jsxs(_Fragment, { children: [_jsx(XAxis, { type: 'number', ...axisProps(t, box), ...valueAxisProps(box, valueFormatter) }), _jsx(YAxis, { type: 'category', dataKey: xKey, ...axisProps(t, box), tickFormatter: categoryTickFormatter, width: yWidth ?? 44, axisLine: false })] })) : (_jsxs(_Fragment, { children: [_jsx(XAxis, { type: 'category', dataKey: xKey, ...axisProps(t, box), tickFormatter: categoryTickFormatter, interval: 'preserveStartEnd', minTickGap: box.gap(8) }), _jsx(YAxis, { type: 'number', ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth ?? 'auto', axisLine: false })] })), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { fill: t.foregroundMuted, fillOpacity: 0.08 }, isAnimationActive: false }), showLegend(box) && _jsx(Legend, { content: legendContent(t), itemSorter: null }), series.map((s, i) => (_jsx(Bar, { dataKey: s.dataKey, name: s.name ?? s.dataKey, stackId: stacked ? (s.stackId ?? 'stack') : s.stackId, fill: seriesColor(t, s, i), radius: cornersFor(i), isAnimationActive: false }, s.dataKey)))] })) }));
|
|
19
19
|
}
|
|
20
20
|
//# sourceMappingURL=BarChart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarChart.js","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,IAAI,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEpG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAqC,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"BarChart.js","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ type LegendItem = {
|
|
|
4
4
|
value?: ReactNode;
|
|
5
5
|
color?: string;
|
|
6
6
|
dataKey?: string | number;
|
|
7
|
+
type?: string;
|
|
7
8
|
};
|
|
8
9
|
export type ChartLegendProps = {
|
|
9
10
|
payload?: ReadonlyArray<LegendItem>;
|
|
@@ -11,7 +12,12 @@ export type ChartLegendProps = {
|
|
|
11
12
|
};
|
|
12
13
|
/** A themed recharts legend: horizontal color chips that wrap on narrow widths. */
|
|
13
14
|
export declare function ChartLegend({ payload, tokens }: ChartLegendProps): import("react").JSX.Element | null;
|
|
14
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Build a `<Legend content={…}>` renderer bound to the chart's live tokens. Pair it with
|
|
17
|
+
* `itemSorter={null}`: recharts 3 sorts legend items by name unless told not to, so a chart
|
|
18
|
+
* given [Requests, Errors] listed "Errors, Requests" (forge task 2593). Series order is the
|
|
19
|
+
* caller's.
|
|
20
|
+
*/
|
|
15
21
|
export declare const legendContent: (tokens: ChartTokens) => (p: {
|
|
16
22
|
payload?: unknown;
|
|
17
23
|
}) => import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartLegend.d.ts","sourceRoot":"","sources":["../../../src/react/charts/ChartLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,aAAa,CAAC;AAEhE,KAAK,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ChartLegend.d.ts","sourceRoot":"","sources":["../../../src/react/charts/ChartLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,aAAa,CAAC;AAEhE,KAAK,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElG,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,MAAwB,EAAE,EAAE,gBAAgB,sCAgClF;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,WAAW,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,gCAE9E,CAAC"}
|
|
@@ -2,12 +2,21 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { FALLBACK_TOKENS } from './tokens.js';
|
|
3
3
|
/** A themed recharts legend: horizontal color chips that wrap on narrow widths. */
|
|
4
4
|
export function ChartLegend({ payload, tokens = FALLBACK_TOKENS }) {
|
|
5
|
-
|
|
5
|
+
// A series drawn with `legendType='none'` (a band, a helper area) still arrives in recharts'
|
|
6
|
+
// payload, marked `type: 'none'`; the default legend drops it and so must this one — the
|
|
7
|
+
// time series listed its band's "hi" and a swatchless "lo" as series (forge task 2593).
|
|
8
|
+
const items = payload?.filter((entry) => entry.type !== 'none') ?? [];
|
|
9
|
+
if (!items.length)
|
|
6
10
|
return null;
|
|
7
|
-
return (_jsx("ul", { className: 'm-0 flex list-none flex-wrap items-center justify-center gap-x-4 gap-y-1 p-0 pt-2 text-xs', style: { color: tokens.foreground }, children:
|
|
11
|
+
return (_jsx("ul", { className: 'm-0 flex list-none flex-wrap items-center justify-center gap-x-4 gap-y-1 p-0 pt-2 text-xs', style: { color: tokens.foreground }, children: items.map((entry, i) => (_jsxs("li", { className: 'flex items-center gap-1.5', children: [_jsx("span", { className: 'inline-block h-2.5 w-2.5 shrink-0 rounded-xs', style: { backgroundColor: entry.color } }), _jsx("span", { children: entry.value })] }, typeof entry.value === 'string' || typeof entry.value === 'number'
|
|
8
12
|
? String(entry.value)
|
|
9
13
|
: String(entry.dataKey ?? i)))) }));
|
|
10
14
|
}
|
|
11
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Build a `<Legend content={…}>` renderer bound to the chart's live tokens. Pair it with
|
|
17
|
+
* `itemSorter={null}`: recharts 3 sorts legend items by name unless told not to, so a chart
|
|
18
|
+
* given [Requests, Errors] listed "Errors, Requests" (forge task 2593). Series order is the
|
|
19
|
+
* caller's.
|
|
20
|
+
*/
|
|
12
21
|
export const legendContent = (tokens) => (p) => (_jsx(ChartLegend, { payload: p.payload, tokens: tokens }));
|
|
13
22
|
//# sourceMappingURL=ChartLegend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartLegend.js","sourceRoot":"","sources":["../../../src/react/charts/ChartLegend.tsx"],"names":[],"mappings":";AACA,OAAO,EAAoB,eAAe,EAAE,MAAM,aAAa,CAAC;AAShE,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,EAAoB;IACjF,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"ChartLegend.js","sourceRoot":"","sources":["../../../src/react/charts/ChartLegend.tsx"],"names":[],"mappings":";AACA,OAAO,EAAoB,eAAe,EAAE,MAAM,aAAa,CAAC;AAShE,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,EAAoB;IACjF,6FAA6F;IAC7F,yFAAyF;IACzF,wFAAwF;IACxF,MAAM,KAAK,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,CACL,aACE,SAAS,EAAC,2FAA2F,EACrG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,YAElC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAIvB,cAME,SAAS,EAAC,2BAA2B,aAErC,eACE,SAAS,EAAC,8CAA8C,EACxD,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,EAAE,GACvC,EACF,yBAAO,KAAK,CAAC,KAAK,GAAQ,KAVxB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAChE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACrB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAS7B,CACN,CAAC,GACC,CACN,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC,CAAwB,EAAE,EAAE,CAAC,CAClF,KAAC,WAAW,IAAC,OAAO,EAAE,CAAC,CAAC,OAAsC,EAAE,MAAM,EAAE,MAAM,GAAI,CACnF,CAAC"}
|
|
@@ -13,8 +13,8 @@ export type LineChartProps = {
|
|
|
13
13
|
legend?: boolean;
|
|
14
14
|
/** Show the cartesian grid. Default true. */
|
|
15
15
|
grid?: boolean;
|
|
16
|
-
/** Reserved width for the y-axis labels. */
|
|
17
|
-
yWidth?: number;
|
|
16
|
+
/** Reserved width for the y-axis labels. Default `'auto'`: the axis measures its ticks, so none wraps. */
|
|
17
|
+
yWidth?: number | 'auto';
|
|
18
18
|
xTickFormatter?: (value: string | number) => string;
|
|
19
19
|
valueFormatter?: (value: number) => string;
|
|
20
20
|
/** Format the tooltip header. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/LineChart.tsx"],"names":[],"mappings":"AAaA,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,WAAW,EAAe,MAAM,aAAa,CAAC;AAExG,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/LineChart.tsx"],"names":[],"mappings":"AAaA,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,WAAW,EAAe,MAAM,aAAa,CAAC;AAExG,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0GAA0G;IAC1G,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACpD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,iCAAiC;IACjC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;CACrD,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAa,EACb,MAAM,EACN,IAAW,EACX,MAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,GACf,EAAE,cAAc,+BA6ChB"}
|
|
@@ -5,8 +5,8 @@ import { legendContent } from './ChartLegend.js';
|
|
|
5
5
|
import { tooltipContent } from './ChartTooltip.js';
|
|
6
6
|
import { axisProps, valueAxisProps, seriesColor } from './shared.js';
|
|
7
7
|
/** Multi-series line chart. Colors come from the tokens; callers pass no color props. */
|
|
8
|
-
export function LineChart({ data, xKey, series, ariaLabel, height, smooth = true, legend, grid = true, yWidth =
|
|
8
|
+
export function LineChart({ data, xKey, series, ariaLabel, height, smooth = true, legend, grid = true, yWidth = 'auto', xTickFormatter, valueFormatter, labelFormatter, }) {
|
|
9
9
|
const showLegend = (box) => legend ?? (!box.legendInHeader && series.length > 1);
|
|
10
|
-
return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t, box) => (_jsxs(RLineChart, { data: data, margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, vertical: false })), _jsx(XAxis, { dataKey: xKey, ...axisProps(t, box), tickFormatter: xTickFormatter, interval: 'preserveStartEnd', minTickGap: box.gap(24) }), _jsx(YAxis, { ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth, axisLine: false }), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { stroke: t.foregroundMuted, strokeWidth: 1, strokeOpacity: 0.5 }, isAnimationActive: false }), showLegend(box) && _jsx(Legend, { content: legendContent(t) }), series.map((s, i) => (_jsx(Line, { type: smooth ? 'monotone' : 'linear', dataKey: s.dataKey, name: s.name ?? s.dataKey, stroke: seriesColor(t, s, i), strokeWidth: box.stroke, dot: false, activeDot: { r: 3 }, isAnimationActive: false }, s.dataKey)))] })) }));
|
|
10
|
+
return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t, box) => (_jsxs(RLineChart, { data: data, margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [grid && (_jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, vertical: false })), _jsx(XAxis, { dataKey: xKey, ...axisProps(t, box), tickFormatter: xTickFormatter, interval: 'preserveStartEnd', minTickGap: box.gap(24) }), _jsx(YAxis, { ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth, axisLine: false }), _jsx(Tooltip, { content: tooltipContent(t, labelFormatter, valueFormatter), cursor: { stroke: t.foregroundMuted, strokeWidth: 1, strokeOpacity: 0.5 }, isAnimationActive: false }), showLegend(box) && _jsx(Legend, { content: legendContent(t), itemSorter: null }), series.map((s, i) => (_jsx(Line, { type: smooth ? 'monotone' : 'linear', dataKey: s.dataKey, name: s.name ?? s.dataKey, stroke: seriesColor(t, s, i), strokeWidth: box.stroke, dot: false, activeDot: { r: 3 }, isAnimationActive: false }, s.dataKey)))] })) }));
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=LineChart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart.js","sourceRoot":"","sources":["../../../src/react/charts/LineChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,MAAM,EACN,IAAI,EACJ,SAAS,IAAI,UAAU,EACvB,OAAO,EACP,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAqC,WAAW,EAAE,MAAM,aAAa,CAAC;AAwBxG,yFAAyF;AACzF,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,GAAG,IAAI,EACb,MAAM,EACN,IAAI,GAAG,IAAI,EACX,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"LineChart.js","sourceRoot":"","sources":["../../../src/react/charts/LineChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,MAAM,EACN,IAAI,EACJ,SAAS,IAAI,UAAU,EACvB,OAAO,EACP,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAqC,WAAW,EAAE,MAAM,aAAa,CAAC;AAwBxG,yFAAyF;AACzF,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,GAAG,IAAI,EACb,MAAM,EACN,IAAI,GAAG,IAAI,EACX,MAAM,GAAG,MAAM,EACf,cAAc,EACd,cAAc,EACd,cAAc,GACC;IACf,MAAM,UAAU,GAAG,CAAC,GAAa,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3F,OAAO,CACL,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAC7C,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CACX,MAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aACtE,IAAI,IAAI,CACP,KAAC,aAAa,IACZ,eAAe,EAAC,KAAK,EACrB,MAAM,EAAE,CAAC,CAAC,eAAe,EACzB,aAAa,EAAE,GAAG,EAClB,QAAQ,EAAE,KAAK,GACf,CACH,EACD,KAAC,KAAK,IACJ,OAAO,EAAE,IAAI,KACT,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EACrB,aAAa,EAAE,cAAc,EAC7B,QAAQ,EAAC,kBAAkB,EAC3B,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GACvB,EACF,KAAC,KAAK,OAAK,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAM,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAI,EACzG,KAAC,OAAO,IACN,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,EAC1D,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,EACzE,iBAAiB,EAAE,KAAK,GACxB,EACD,UAAU,CAAC,GAAG,CAAC,IAAI,KAAC,MAAM,IAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,GAAI,EAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACpB,KAAC,IAAI,IAEH,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EACpC,OAAO,EAAE,CAAC,CAAC,OAAO,EAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EACzB,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EACvB,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EACnB,iBAAiB,EAAE,KAAK,IARnB,CAAC,CAAC,OAAO,CASd,CACH,CAAC,IACS,CACd,GACU,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -38,7 +38,7 @@ export function PieChart({ data, ariaLabel, height = 240, donut = false, legend
|
|
|
38
38
|
// (2026-08-12).
|
|
39
39
|
isAnimationActive: false, innerRadius: donut ? '58%' : 0, outerRadius: '80%', paddingAngle: sliceGapDegrees(data, donut), stroke: t.background, strokeWidth: 2, labelLine: labels, label: labels
|
|
40
40
|
? (p) => `${p.name ?? ''} · ${valueFormatter ? valueFormatter(p.value ?? 0) : (p.value ?? 0)}`
|
|
41
|
-
: false, children: data.map((d, i) => (_jsx(Cell, { fill: seriesColor(t, d, i) }, d.name))) }), _jsx(Tooltip, { content: tooltipContent(t, undefined, valueFormatter), isAnimationActive: false }), legend && _jsx(Legend, { content: legendContent(t) })] })) }));
|
|
41
|
+
: false, children: data.map((d, i) => (_jsx(Cell, { fill: seriesColor(t, d, i) }, d.name))) }), _jsx(Tooltip, { content: tooltipContent(t, undefined, valueFormatter), isAnimationActive: false }), legend && _jsx(Legend, { content: legendContent(t), itemSorter: null })] })) }));
|
|
42
42
|
}
|
|
43
43
|
/** A donut is a Pie with the center cut out — the dashboard default for part-of-whole. */
|
|
44
44
|
export function DonutChart(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PieChart.js","sourceRoot":"","sources":["../../../src/react/charts/PieChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,IAAI,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,sCAAsC;AACtC,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,IAAyB,EAAE,KAAc;IACvE,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAgBD,yFAAyF;AACzF,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,SAAS,EACT,MAAM,GAAG,GAAG,EACZ,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,IAAI,EACb,MAAM,GAAG,KAAK,EACd,cAAc,GACA;IACd,OAAO,CACL,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CACN,MAAC,SAAS,IAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aACzD,KAAC,GAAG,IACF,IAAI,EAAE,IAAI,EACV,OAAO,EAAC,OAAO,EACf,OAAO,EAAC,MAAM;oBACd,kEAAkE;oBAClE,6DAA6D;oBAC7D,gEAAgE;oBAChE,mEAAmE;oBACnE,sEAAsE;oBACtE,kEAAkE;oBAClE,oEAAoE;oBACpE,6DAA6D;oBAC7D,gBAAgB;oBAChB,iBAAiB,EAAE,KAAK,EACxB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC9B,WAAW,EAAC,KAAK,EACjB,YAAY,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1C,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EACH,MAAM;wBACJ,CAAC,CAAC,CAAC,CAA6C,EAAE,EAAE,CAChD,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE;wBACzF,CAAC,CAAC,KAAK,YAGV,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAClB,KAAC,IAAI,IAAc,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAlC,CAAC,CAAC,IAAI,CAAgC,CAClD,CAAC,GACE,EACN,KAAC,OAAO,IACN,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,EACrD,iBAAiB,EAAE,KAAK,GACxB,EACD,MAAM,IAAI,KAAC,MAAM,IAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAI,
|
|
1
|
+
{"version":3,"file":"PieChart.js","sourceRoot":"","sources":["../../../src/react/charts/PieChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,IAAI,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,sCAAsC;AACtC,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,IAAyB,EAAE,KAAc;IACvE,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAgBD,yFAAyF;AACzF,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,SAAS,EACT,MAAM,GAAG,GAAG,EACZ,KAAK,GAAG,KAAK,EACb,MAAM,GAAG,IAAI,EACb,MAAM,GAAG,KAAK,EACd,cAAc,GACA;IACd,OAAO,CACL,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CACN,MAAC,SAAS,IAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aACzD,KAAC,GAAG,IACF,IAAI,EAAE,IAAI,EACV,OAAO,EAAC,OAAO,EACf,OAAO,EAAC,MAAM;oBACd,kEAAkE;oBAClE,6DAA6D;oBAC7D,gEAAgE;oBAChE,mEAAmE;oBACnE,sEAAsE;oBACtE,kEAAkE;oBAClE,oEAAoE;oBACpE,6DAA6D;oBAC7D,gBAAgB;oBAChB,iBAAiB,EAAE,KAAK,EACxB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC9B,WAAW,EAAC,KAAK,EACjB,YAAY,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1C,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EACH,MAAM;wBACJ,CAAC,CAAC,CAAC,CAA6C,EAAE,EAAE,CAChD,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE;wBACzF,CAAC,CAAC,KAAK,YAGV,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAClB,KAAC,IAAI,IAAc,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAlC,CAAC,CAAC,IAAI,CAAgC,CAClD,CAAC,GACE,EACN,KAAC,OAAO,IACN,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,EACrD,iBAAiB,EAAE,KAAK,GACxB,EACD,MAAM,IAAI,KAAC,MAAM,IAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,GAAI,IACxD,CACb,GACU,CACd,CAAC;AACJ,CAAC;AAID,0FAA0F;AAC1F,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,OAAO,KAAC,QAAQ,OAAK,KAAK,EAAE,KAAK,SAAG,CAAC;AACvC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
1
2
|
import { type ChartDatum, type ChartSeries } from './shared.js';
|
|
2
3
|
import { type ChartTone } from './tokens.js';
|
|
3
4
|
/** A series on a time axis. Extends the shared shape with a render kind. */
|
|
@@ -50,8 +51,11 @@ export type TimeSeriesChartProps = {
|
|
|
50
51
|
};
|
|
51
52
|
/** Show the legend. Default: true when more than one series. */
|
|
52
53
|
legend?: boolean;
|
|
53
|
-
/**
|
|
54
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Reserved width for the y-axis labels. Default `'auto'`: the axis measures its own ticks, so a
|
|
56
|
+
* formatted value ("165 ms") never wraps onto two lines the way it did at a fixed 52px.
|
|
57
|
+
*/
|
|
58
|
+
yWidth?: number | 'auto';
|
|
55
59
|
/**
|
|
56
60
|
* Start the y-axis at zero. Default TRUE, and you should think hard before
|
|
57
61
|
* unsetting it: on a size or count series a truncated axis turns a 2% rise
|
|
@@ -59,6 +63,12 @@ export type TimeSeriesChartProps = {
|
|
|
59
63
|
* percentage) where the interesting variation is far off zero.
|
|
60
64
|
*/
|
|
61
65
|
zeroBaseline?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Shown instead of the plot when `data` is empty. With no rows the chart drew bare axes
|
|
68
|
+
* ("0 ms, 1 ms, 2 ms") and a legend for nothing, which reads as "every value is zero"
|
|
69
|
+
* (forge task 2593). A string becomes the title of a compact `EmptyState`.
|
|
70
|
+
*/
|
|
71
|
+
emptyState?: ReactNode;
|
|
62
72
|
};
|
|
63
73
|
/**
|
|
64
74
|
* The workhorse time-series: multiple series over an epoch-ms x-axis, mixing
|
|
@@ -71,5 +81,5 @@ export type TimeSeriesChartProps = {
|
|
|
71
81
|
* reference line" is one chart, and composing it from three would not share an
|
|
72
82
|
* axis.
|
|
73
83
|
*/
|
|
74
|
-
export declare function TimeSeriesChart({ data, series, ariaLabel, xKey, height, includeDate, valueFormatter, references, bands, band, legend, yWidth, zeroBaseline, }: TimeSeriesChartProps): import("react").JSX.Element;
|
|
84
|
+
export declare function TimeSeriesChart({ data, series, ariaLabel, xKey, height, includeDate, valueFormatter, references, bands, band, legend, yWidth, zeroBaseline, emptyState, }: TimeSeriesChartProps): import("react").JSX.Element;
|
|
75
85
|
//# sourceMappingURL=TimeSeriesChart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeSeriesChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/TimeSeriesChart.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TimeSeriesChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/TimeSeriesChart.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,OAAO,EAA6B,KAAK,UAAU,EAAE,KAAK,WAAW,EAA8B,MAAM,aAAa,CAAC;AACvH,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,aAAa,CAAC;AAExD,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG;IACrC,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,kCAAkC;IAClC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IAChE,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,MAAM,EACN,SAAS,EACT,IAAW,EACX,MAAM,EACN,WAAmB,EACnB,cAAc,EACd,UAAU,EACV,KAAK,EACL,IAAI,EACJ,MAAM,EACN,MAAe,EACf,YAAmB,EACnB,UAAU,GACX,EAAE,oBAAoB,+BAiItB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Area, CartesianGrid, ComposedChart, Legend, Line, ReferenceArea, ReferenceLine, Tooltip, XAxis, YAxis } from 'recharts';
|
|
3
|
+
import { EmptyState } from '../components/EmptyState.js';
|
|
3
4
|
import { ChartFrame } from './ChartFrame.js';
|
|
4
5
|
import { legendContent } from './ChartLegend.js';
|
|
5
6
|
import { tooltipContent } from './ChartTooltip.js';
|
|
@@ -17,9 +18,11 @@ import { toneColor } from './tokens.js';
|
|
|
17
18
|
* reference line" is one chart, and composing it from three would not share an
|
|
18
19
|
* axis.
|
|
19
20
|
*/
|
|
20
|
-
export function TimeSeriesChart({ data, series, ariaLabel, xKey = 'ts', height, includeDate = false, valueFormatter, references, bands, band, legend, yWidth =
|
|
21
|
+
export function TimeSeriesChart({ data, series, ariaLabel, xKey = 'ts', height, includeDate = false, valueFormatter, references, bands, band, legend, yWidth = 'auto', zeroBaseline = true, emptyState, }) {
|
|
21
22
|
const gradId = useGradientId();
|
|
22
23
|
const showLegend = (box) => legend ?? (!box.legendInHeader && series.length > 1);
|
|
24
|
+
if (data.length === 0)
|
|
25
|
+
return typeof emptyState === 'string' || emptyState == null ? (_jsx(EmptyState, { compact: true, title: emptyState ?? 'No data in this window' })) : (_jsx(_Fragment, { children: emptyState }));
|
|
23
26
|
return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t, box) => (_jsxs(ComposedChart, { data: data, margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [_jsx("defs", { children: series.map((s, i) => {
|
|
24
27
|
const c = seriesColor(t, s, i);
|
|
25
28
|
return (_jsxs("linearGradient", { id: `${gradId}-${s.dataKey}`, x1: '0', y1: '0', x2: '0', y2: '1', children: [_jsx("stop", { offset: '0%', stopColor: c, stopOpacity: 0.24 }), _jsx("stop", { offset: '100%', stopColor: c, stopOpacity: 0.02 })] }, s.dataKey));
|
|
@@ -27,7 +30,10 @@ export function TimeSeriesChart({ data, series, ariaLabel, xKey = 'ts', height,
|
|
|
27
30
|
// An epoch-ms axis must be scaled by TIME, not by index: with gaps
|
|
28
31
|
// (a sleeping host, a paused collector) an index axis draws unequal
|
|
29
32
|
// intervals as equal and silently flattens the hole.
|
|
30
|
-
domain: ['dataMin', 'dataMax'], scale: 'time', ...axisProps(t, box), tickFormatter: (v) => formatTimeTick(Number(v), includeDate), minTickGap: box.gap(32) }), _jsx(YAxis, { ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth, axisLine: false, domain: zeroBaseline ? [0, 'auto'] : ['auto', 'auto'] }), bands?.map((b) => (_jsx(ReferenceArea, { x1: b.from, x2: b.to, fill: toneColor(t, b.tone ?? 'neutral'), fillOpacity: 0.12, strokeOpacity: 0, label: b.label ? { value: b.label, fill: t.foregroundMuted, fontSize: 12 } : undefined }, `${b.from}-${b.to}`))), band && (
|
|
33
|
+
domain: ['dataMin', 'dataMax'], scale: 'time', ...axisProps(t, box), tickFormatter: (v) => formatTimeTick(Number(v), includeDate), minTickGap: box.gap(32) }), _jsx(YAxis, { ...axisProps(t, box), ...valueAxisProps(box, valueFormatter), width: yWidth, axisLine: false, domain: zeroBaseline ? [0, 'auto'] : ['auto', 'auto'] }), bands?.map((b) => (_jsx(ReferenceArea, { x1: b.from, x2: b.to, fill: toneColor(t, b.tone ?? 'neutral'), fillOpacity: 0.12, strokeOpacity: 0, label: b.label ? { value: b.label, fill: t.foregroundMuted, fontSize: 12 } : undefined }, `${b.from}-${b.to}`))), band && (_jsx(Area, { dataKey: (d) => [d[band.lowerKey], d[band.upperKey]], stroke: 'none', fill: toneColor(t, band.tone ?? 'neutral'), fillOpacity: 0.14, isAnimationActive: false, legendType: 'none', tooltipType: 'none' })), _jsx(Tooltip, { content: tooltipContent(t, (l) => formatTimeFull(Number(l)), valueFormatter), cursor: { stroke: t.foregroundMuted, strokeWidth: 1, strokeOpacity: 0.5 }, isAnimationActive: false }), showLegend(box) && _jsx(Legend, { content: legendContent(t), itemSorter: null }), references?.map((r) => (_jsx(ReferenceLine, { y: r.y, stroke: toneColor(t, r.tone ?? 'warning'), strokeDasharray: '4 4',
|
|
34
|
+
// Inside, above the line at its right end: `right` put the label in the 12px
|
|
35
|
+
// margin past the plot, where "Target" was clipped to "T" (forge task 2593).
|
|
36
|
+
label: r.label ? { value: r.label, fill: t.foregroundMuted, fontSize: 12, position: 'insideTopRight' } : undefined }, `${r.y}-${r.label ?? ''}`))), series.map((s, i) => {
|
|
31
37
|
const c = seriesColor(t, s, i);
|
|
32
38
|
const common = {
|
|
33
39
|
type: 'monotone',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeSeriesChart.js","sourceRoot":"","sources":["../../../src/react/charts/TimeSeriesChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjI,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAqC,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvH,OAAO,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TimeSeriesChart.js","sourceRoot":"","sources":["../../../src/react/charts/TimeSeriesChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Treemap.d.ts","sourceRoot":"","sources":["../../../src/react/charts/Treemap.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Treemap.d.ts","sourceRoot":"","sources":["../../../src/react/charts/Treemap.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAoB,KAAK,SAAS,EAAa,MAAM,aAAa,CAAC;AAE1E,wEAAwE;AACxE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,yEAAyE;IACzE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAqCF;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,SAAS,EACT,MAAY,EACZ,cAAc,EACd,QAAQ,EACR,aAAkB,EAClB,cAAmB,GACpB,EAAE,YAAY,+BAkHd"}
|