cursedbelt 5.40.0 → 5.45.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/Toast.d.ts +12 -2
- package/dist/react/Toast.d.ts.map +1 -1
- package/dist/react/Toast.js +32 -3
- package/dist/react/Toast.js.map +1 -1
- package/dist/react/analytics/MetricDrilldown.js +1 -1
- package/dist/react/charts/AreaChart.d.ts.map +1 -1
- package/dist/react/charts/AreaChart.js +5 -5
- package/dist/react/charts/AreaChart.js.map +1 -1
- package/dist/react/charts/BarChart.d.ts.map +1 -1
- package/dist/react/charts/BarChart.js +3 -3
- package/dist/react/charts/BarChart.js.map +1 -1
- package/dist/react/charts/ChartCard.d.ts +53 -0
- package/dist/react/charts/ChartCard.d.ts.map +1 -0
- package/dist/react/charts/ChartCard.js +46 -0
- package/dist/react/charts/ChartCard.js.map +1 -0
- package/dist/react/charts/ChartFrame.d.ts +12 -5
- package/dist/react/charts/ChartFrame.d.ts.map +1 -1
- package/dist/react/charts/ChartFrame.js +12 -5
- package/dist/react/charts/ChartFrame.js.map +1 -1
- package/dist/react/charts/ChartLegend.js +1 -1
- package/dist/react/charts/ChartLegend.js.map +1 -1
- package/dist/react/charts/HeatmapChart.js +3 -3
- package/dist/react/charts/HeatmapChart.js.map +1 -1
- package/dist/react/charts/IntervalTimeline.js +1 -1
- package/dist/react/charts/IntervalTimeline.js.map +1 -1
- package/dist/react/charts/LineChart.d.ts.map +1 -1
- package/dist/react/charts/LineChart.js +3 -3
- package/dist/react/charts/LineChart.js.map +1 -1
- package/dist/react/charts/TimeSeriesChart.d.ts.map +1 -1
- package/dist/react/charts/TimeSeriesChart.js +6 -6
- package/dist/react/charts/TimeSeriesChart.js.map +1 -1
- package/dist/react/charts/chartBox.d.ts +46 -0
- package/dist/react/charts/chartBox.d.ts.map +1 -0
- package/dist/react/charts/chartBox.js +45 -0
- package/dist/react/charts/chartBox.js.map +1 -0
- package/dist/react/charts/index.d.ts +2 -0
- package/dist/react/charts/index.d.ts.map +1 -1
- package/dist/react/charts/index.js +2 -0
- package/dist/react/charts/index.js.map +1 -1
- package/dist/react/charts/shared.d.ts +13 -2
- package/dist/react/charts/shared.d.ts.map +1 -1
- package/dist/react/charts/shared.js +14 -3
- package/dist/react/charts/shared.js.map +1 -1
- package/dist/react/chat/Bubble.js +4 -4
- package/dist/react/chat/Bubble.js.map +1 -1
- package/dist/react/chat/MessageScroller.js +1 -1
- package/dist/react/chat/MessageScroller.js.map +1 -1
- package/dist/react/components/ActionBar.d.ts.map +1 -1
- package/dist/react/components/ActionBar.js +63 -1
- package/dist/react/components/ActionBar.js.map +1 -1
- package/dist/react/components/AddItemsMenu.js +1 -1
- package/dist/react/components/AddItemsMenu.js.map +1 -1
- package/dist/react/components/Alert.d.ts +16 -2
- package/dist/react/components/Alert.d.ts.map +1 -1
- package/dist/react/components/Alert.js +35 -2
- package/dist/react/components/Alert.js.map +1 -1
- package/dist/react/components/AppShell.d.ts +55 -33
- package/dist/react/components/AppShell.d.ts.map +1 -1
- package/dist/react/components/AppShell.js +121 -31
- package/dist/react/components/AppShell.js.map +1 -1
- package/dist/react/components/AsyncPanel.d.ts +21 -3
- package/dist/react/components/AsyncPanel.d.ts.map +1 -1
- package/dist/react/components/AsyncPanel.js +49 -5
- package/dist/react/components/AsyncPanel.js.map +1 -1
- package/dist/react/components/BannerLane.d.ts +32 -0
- package/dist/react/components/BannerLane.d.ts.map +1 -0
- package/dist/react/components/BannerLane.js +41 -0
- package/dist/react/components/BannerLane.js.map +1 -0
- package/dist/react/components/Button.d.ts.map +1 -1
- package/dist/react/components/Button.js +2 -1
- package/dist/react/components/Button.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/ComboboxField.d.ts.map +1 -1
- package/dist/react/components/ComboboxField.js +14 -4
- package/dist/react/components/ComboboxField.js.map +1 -1
- package/dist/react/components/CommentThread.js +2 -2
- package/dist/react/components/CommentThread.js.map +1 -1
- package/dist/react/components/ConfirmDialog.js +1 -1
- package/dist/react/components/ConfirmDialog.js.map +1 -1
- package/dist/react/components/DataTable/DataTable.d.ts +18 -2
- package/dist/react/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/react/components/DataTable/DataTable.js +51 -12
- package/dist/react/components/DataTable/DataTable.js.map +1 -1
- package/dist/react/components/DataTable/Pagination.js +1 -1
- package/dist/react/components/DataTable/Pagination.js.map +1 -1
- package/dist/react/components/DataTable/RowActions.d.ts +7 -1
- package/dist/react/components/DataTable/RowActions.d.ts.map +1 -1
- package/dist/react/components/DataTable/RowActions.js +10 -3
- package/dist/react/components/DataTable/RowActions.js.map +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.js +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -1
- package/dist/react/components/DataTable/cells/CodeCell.js +1 -1
- package/dist/react/components/DataTable/cells/CodeCell.js.map +1 -1
- package/dist/react/components/DataTable/cells/LinkCell.js +1 -1
- package/dist/react/components/DataTable/cells/LinkCell.js.map +1 -1
- package/dist/react/components/DataTable/index.d.ts +1 -1
- package/dist/react/components/DataTable/index.d.ts.map +1 -1
- package/dist/react/components/DataTable/index.js.map +1 -1
- package/dist/react/components/DataTable/types.d.ts +20 -0
- package/dist/react/components/DataTable/types.d.ts.map +1 -1
- package/dist/react/components/DataTable/types.js +22 -0
- package/dist/react/components/DataTable/types.js.map +1 -1
- package/dist/react/components/DateTimeField.d.ts.map +1 -1
- package/dist/react/components/DateTimeField.js +4 -1
- package/dist/react/components/DateTimeField.js.map +1 -1
- package/dist/react/components/DeleteButton.js +2 -0
- package/dist/react/components/DeleteButton.js.map +1 -1
- package/dist/react/components/Drawer.js +3 -3
- package/dist/react/components/Drawer.js.map +1 -1
- package/dist/react/components/DropdownMenu.d.ts +16 -0
- package/dist/react/components/DropdownMenu.d.ts.map +1 -1
- package/dist/react/components/DropdownMenu.js +22 -6
- package/dist/react/components/DropdownMenu.js.map +1 -1
- package/dist/react/components/EmptyState.d.ts +10 -2
- package/dist/react/components/EmptyState.d.ts.map +1 -1
- package/dist/react/components/EmptyState.js +10 -5
- package/dist/react/components/EmptyState.js.map +1 -1
- package/dist/react/components/EventTimeline.js +1 -1
- package/dist/react/components/EventTimeline.js.map +1 -1
- package/dist/react/components/FileDropZone.js +1 -1
- package/dist/react/components/FileDropZone.js.map +1 -1
- package/dist/react/components/Grid.d.ts +9 -1
- package/dist/react/components/Grid.d.ts.map +1 -1
- package/dist/react/components/Grid.js +20 -2
- package/dist/react/components/Grid.js.map +1 -1
- package/dist/react/components/Guide.d.ts +31 -0
- package/dist/react/components/Guide.d.ts.map +1 -0
- package/dist/react/components/Guide.js +18 -0
- package/dist/react/components/Guide.js.map +1 -0
- package/dist/react/components/InfoHintImpl.d.ts +0 -13
- package/dist/react/components/InfoHintImpl.d.ts.map +1 -1
- package/dist/react/components/InfoHintImpl.js +17 -1
- package/dist/react/components/InfoHintImpl.js.map +1 -1
- package/dist/react/components/InlineEditableText.js +1 -1
- package/dist/react/components/InlineEditableText.js.map +1 -1
- package/dist/react/components/IsolatedFrame.js +1 -1
- package/dist/react/components/IsolatedFrame.js.map +1 -1
- package/dist/react/components/ListToolbar.d.ts.map +1 -1
- package/dist/react/components/ListToolbar.js +2 -2
- package/dist/react/components/ListToolbar.js.map +1 -1
- package/dist/react/components/LogViewer.d.ts +26 -2
- package/dist/react/components/LogViewer.d.ts.map +1 -1
- package/dist/react/components/LogViewer.js +41 -26
- package/dist/react/components/LogViewer.js.map +1 -1
- package/dist/react/components/Modal.d.ts +5 -1
- package/dist/react/components/Modal.d.ts.map +1 -1
- package/dist/react/components/Modal.js +18 -8
- package/dist/react/components/Modal.js.map +1 -1
- package/dist/react/components/Page.d.ts +51 -7
- package/dist/react/components/Page.d.ts.map +1 -1
- package/dist/react/components/Page.js +53 -8
- package/dist/react/components/Page.js.map +1 -1
- package/dist/react/components/PageGuideButton.d.ts +11 -0
- package/dist/react/components/PageGuideButton.d.ts.map +1 -0
- package/dist/react/components/PageGuideButton.js +13 -0
- package/dist/react/components/PageGuideButton.js.map +1 -0
- 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 +2 -1
- package/dist/react/components/Popover.js.map +1 -1
- package/dist/react/components/PromptDialog.js +1 -1
- package/dist/react/components/PromptDialog.js.map +1 -1
- package/dist/react/components/ScrollArea.d.ts +9 -1
- package/dist/react/components/ScrollArea.d.ts.map +1 -1
- package/dist/react/components/ScrollArea.js +9 -3
- package/dist/react/components/ScrollArea.js.map +1 -1
- package/dist/react/components/Section.d.ts +5 -2
- package/dist/react/components/Section.d.ts.map +1 -1
- package/dist/react/components/Section.js +5 -2
- package/dist/react/components/Section.js.map +1 -1
- package/dist/react/components/Skeleton.d.ts +19 -1
- package/dist/react/components/Skeleton.d.ts.map +1 -1
- package/dist/react/components/Skeleton.js +24 -2
- package/dist/react/components/Skeleton.js.map +1 -1
- package/dist/react/components/StatStrip.js +1 -1
- package/dist/react/components/StatStrip.js.map +1 -1
- package/dist/react/components/StatTile.d.ts +30 -3
- package/dist/react/components/StatTile.d.ts.map +1 -1
- package/dist/react/components/StatTile.js +35 -9
- package/dist/react/components/StatTile.js.map +1 -1
- package/dist/react/components/StatTileGrid.d.ts +10 -1
- package/dist/react/components/StatTileGrid.d.ts.map +1 -1
- package/dist/react/components/StatTileGrid.js +50 -33
- package/dist/react/components/StatTileGrid.js.map +1 -1
- package/dist/react/components/StatusPill.d.ts.map +1 -1
- package/dist/react/components/StatusPill.js +26 -1
- package/dist/react/components/StatusPill.js.map +1 -1
- package/dist/react/components/Surface.d.ts +1 -1
- package/dist/react/components/Surface.d.ts.map +1 -1
- package/dist/react/components/Surface.js +20 -11
- package/dist/react/components/Surface.js.map +1 -1
- package/dist/react/components/SwatchPicker.d.ts.map +1 -1
- package/dist/react/components/SwatchPicker.js +5 -1
- package/dist/react/components/SwatchPicker.js.map +1 -1
- package/dist/react/components/Switch.js +1 -1
- package/dist/react/components/Switch.js.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/CalendarLegend.js +1 -1
- package/dist/react/components/calendar/CalendarLegend.js.map +1 -1
- package/dist/react/components/calendar/DayAgenda.js +1 -1
- package/dist/react/components/calendar/DayAgenda.js.map +1 -1
- package/dist/react/components/calendar/EventChip.js +1 -1
- package/dist/react/components/calendar/EventChip.js.map +1 -1
- package/dist/react/components/calendar/MonthGrid.js +1 -1
- package/dist/react/components/calendar/MonthGrid.js.map +1 -1
- package/dist/react/components/calendar/WeekView.js +2 -2
- package/dist/react/components/calendar/WeekView.js.map +1 -1
- package/dist/react/components/cardFrame.d.ts +16 -0
- package/dist/react/components/cardFrame.d.ts.map +1 -0
- package/dist/react/components/cardFrame.js +24 -0
- package/dist/react/components/cardFrame.js.map +1 -0
- package/dist/react/components/dialog.d.ts.map +1 -1
- package/dist/react/components/dialog.js +2 -1
- package/dist/react/components/dialog.js.map +1 -1
- package/dist/react/dashboard-grid/WidgetFrame.js +2 -2
- package/dist/react/dashboard-grid/WidgetFrame.js.map +1 -1
- package/dist/react/emoji/EmojiPicker.js +1 -1
- package/dist/react/emoji/EmojiPicker.js.map +1 -1
- package/dist/react/file-tree/FileTree.d.ts +8 -1
- package/dist/react/file-tree/FileTree.d.ts.map +1 -1
- package/dist/react/file-tree/FileTree.js +29 -4
- package/dist/react/file-tree/FileTree.js.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/icons.js +1 -1
- package/dist/react/icons.js.map +1 -1
- package/dist/react/index.d.ts +8 -5
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +5 -2
- package/dist/react/index.js.map +1 -1
- package/dist/react/lib/menuSections.d.ts +8 -0
- package/dist/react/lib/menuSections.d.ts.map +1 -0
- package/dist/react/lib/menuSections.js +37 -0
- package/dist/react/lib/menuSections.js.map +1 -0
- package/dist/react/markdown/Markdown.js +2 -2
- package/dist/react/markdown/Markdown.js.map +1 -1
- package/dist/react/media/HoverScrubVideoThumb.js +1 -1
- package/dist/react/media/HoverScrubVideoThumb.js.map +1 -1
- package/dist/react/media/MaskPainter.js +1 -1
- package/dist/react/media/MediaUploadControl.js +1 -1
- package/dist/react/media/MediaUploadControl.js.map +1 -1
- package/dist/react/media/VideoTrimmer.js +1 -1
- package/dist/react/media/VideoTrimmer.js.map +1 -1
- package/dist/react/media/denseGallery.css +5 -1
- package/dist/react/namespace/NamespaceTargetCapsule.js +1 -1
- package/dist/react/namespace/NamespaceTargetCapsule.js.map +1 -1
- package/dist/react/nav/BreadcrumbTrail.js +1 -1
- package/dist/react/nav/BreadcrumbTrail.js.map +1 -1
- package/dist/react/nav/CommandBar.d.ts +7 -1
- package/dist/react/nav/CommandBar.d.ts.map +1 -1
- package/dist/react/nav/CommandBar.js +5 -3
- package/dist/react/nav/CommandBar.js.map +1 -1
- package/dist/react/nav/PlaceBar.d.ts.map +1 -1
- package/dist/react/nav/PlaceBar.js +7 -9
- package/dist/react/nav/PlaceBar.js.map +1 -1
- package/dist/react/nav/SideNav.d.ts +12 -2
- package/dist/react/nav/SideNav.d.ts.map +1 -1
- package/dist/react/nav/SideNav.js +42 -22
- package/dist/react/nav/SideNav.js.map +1 -1
- package/dist/react/nav/TopBar.d.ts +65 -31
- package/dist/react/nav/TopBar.d.ts.map +1 -1
- package/dist/react/nav/TopBar.js +59 -24
- package/dist/react/nav/TopBar.js.map +1 -1
- package/dist/react/nav/index.d.ts +1 -1
- package/dist/react/nav/index.d.ts.map +1 -1
- package/dist/react/nav/index.js +1 -1
- package/dist/react/nav/index.js.map +1 -1
- package/dist/react/nav/navShared.d.ts +10 -1
- package/dist/react/nav/navShared.d.ts.map +1 -1
- package/dist/react/nav/navShared.js +23 -0
- package/dist/react/nav/navShared.js.map +1 -1
- package/dist/react/notifications/NotificationFeed.js +2 -2
- package/dist/react/notifications/NotificationFeed.js.map +1 -1
- package/dist/react/palette/Command.d.ts.map +1 -1
- package/dist/react/palette/Command.js +1 -1
- package/dist/react/palette/Command.js.map +1 -1
- package/dist/react/palette/CommandPalette.d.ts +13 -1
- package/dist/react/palette/CommandPalette.d.ts.map +1 -1
- package/dist/react/palette/CommandPalette.js +44 -8
- package/dist/react/palette/CommandPalette.js.map +1 -1
- package/dist/react/palette/commandSources.d.ts +57 -0
- package/dist/react/palette/commandSources.d.ts.map +1 -0
- package/dist/react/palette/commandSources.js +129 -0
- package/dist/react/palette/commandSources.js.map +1 -0
- package/dist/react/palette/index.d.ts +1 -0
- package/dist/react/palette/index.d.ts.map +1 -1
- package/dist/react/palette/index.js +1 -0
- package/dist/react/palette/index.js.map +1 -1
- package/dist/react/rich-text/RichTextEditor.js +1 -1
- package/dist/react/rich-text/RichTextEditor.js.map +1 -1
- package/dist/react/rich-text/RichTextToolbar.js +1 -1
- package/dist/react/rich-text/RichTextToolbar.js.map +1 -1
- package/dist/scripts/guardrailsEnforce.d.ts.map +1 -1
- package/dist/styles-areas/analytics.css +16 -16
- package/dist/styles-areas/auth.css +3 -3
- package/dist/styles-areas/calendar.css +6 -6
- package/dist/styles-areas/chart-table.css +1 -1
- package/dist/styles-areas/charts.css +3 -3
- package/dist/styles-areas/chat.css +7 -6
- package/dist/styles-areas/companion-link.css +2 -2
- package/dist/styles-areas/core.css +98 -89
- package/dist/styles-areas/dashboard-grid.css +4 -4
- package/dist/styles-areas/data-table.css +16 -16
- package/dist/styles-areas/disk-usage.css +5 -5
- package/dist/styles-areas/emoji.css +2 -2
- package/dist/styles-areas/fields.css +13 -14
- package/dist/styles-areas/filter-rail.css +4 -4
- package/dist/styles-areas/folder-tree.css +3 -3
- package/dist/styles-areas/markdown.css +2 -1
- package/dist/styles-areas/master-detail.css +3 -3
- package/dist/styles-areas/media-gallery.css +8 -8
- package/dist/styles-areas/media.css +12 -13
- package/dist/styles-areas/nav.css +28 -14
- package/dist/styles-areas/notifications.css +4 -4
- package/dist/styles-areas/overlays.css +4 -4
- package/dist/styles-areas/palette.css +4 -3
- package/dist/styles-areas/rich-text.css +3 -3
- package/dist/styles-areas/sharing.css +4 -3
- package/dist/styles-areas/stats.css +9 -8
- package/dist/styles-areas/test-report.css +3 -3
- package/dist/styles-areas/wizard.css +6 -5
- package/dist/styles-areas/workbench.css +10 -9
- package/dist/styles-areas/workbook-viewer.css +2 -2
- package/dist/styles-utilities.css +272 -187
- package/dist/testing/designAudit.d.ts.map +1 -1
- package/dist/testing/designAudit.js +4 -0
- package/dist/testing/designAudit.js.map +1 -1
- package/dist/testing/designBaseline.d.ts.map +1 -1
- package/dist/testing/designBaseline.js +4 -0
- package/dist/testing/designBaseline.js.map +1 -1
- package/dist/theme.css +103 -2
- package/package.json +3 -2
- package/scripts/guardrails-baseline.json +2 -1
- package/scripts/guardrailsEnforce.spec.ts +64 -0
- package/scripts/guardrailsEnforce.ts +65 -8
- package/scripts/styleAreas.ts +1 -0
- package/src/nodeTypesDeclared.spec.ts +47 -0
- package/src/react/Toast.spec.tsx +43 -0
- package/src/react/Toast.tsx +45 -2
- package/src/react/analytics/MetricDrilldown.tsx +1 -1
- package/src/react/charts/AreaChart.tsx +9 -8
- package/src/react/charts/BarChart.tsx +11 -10
- package/src/react/charts/ChartCard.tsx +146 -0
- package/src/react/charts/ChartFrame.tsx +28 -10
- package/src/react/charts/ChartLegend.tsx +1 -1
- package/src/react/charts/HeatmapChart.tsx +5 -5
- package/src/react/charts/IntervalTimeline.tsx +2 -2
- package/src/react/charts/LineChart.tsx +9 -8
- package/src/react/charts/TimeSeriesChart.tsx +11 -10
- package/src/react/charts/chartBox.spec.ts +40 -0
- package/src/react/charts/chartBox.ts +75 -0
- package/src/react/charts/index.ts +2 -0
- package/src/react/charts/shared.ts +16 -3
- package/src/react/chat/Bubble.tsx +5 -5
- package/src/react/chat/MessageScroller.tsx +1 -1
- package/src/react/components/ActionBar.spec.tsx +90 -0
- package/src/react/components/ActionBar.tsx +82 -2
- package/src/react/components/AddItemsMenu.tsx +1 -1
- package/src/react/components/Alert.spec.tsx +32 -2
- package/src/react/components/Alert.tsx +47 -3
- package/src/react/components/AppShell.spec.tsx +199 -13
- package/src/react/components/AppShell.tsx +235 -92
- package/src/react/components/AsyncPanel.spec.tsx +7 -1
- package/src/react/components/AsyncPanel.tsx +85 -5
- package/src/react/components/BannerLane.tsx +128 -0
- package/src/react/components/Button.tsx +2 -0
- package/src/react/components/ChipFilterStrip.tsx +1 -1
- package/src/react/components/ComboboxField.tsx +20 -3
- package/src/react/components/CommentThread.tsx +2 -2
- package/src/react/components/ConfirmDialog.tsx +1 -1
- package/src/react/components/DataTable/DataTable.tsx +80 -8
- package/src/react/components/DataTable/Pagination.tsx +1 -1
- package/src/react/components/DataTable/RowActions.tsx +55 -2
- package/src/react/components/DataTable/TableFilterBuilder.tsx +1 -1
- package/src/react/components/DataTable/cells/CodeCell.tsx +1 -1
- package/src/react/components/DataTable/cells/LinkCell.tsx +1 -1
- package/src/react/components/DataTable/index.ts +1 -0
- package/src/react/components/DataTable/numericColumn.spec.ts +19 -0
- package/src/react/components/DataTable/types.ts +36 -0
- package/src/react/components/DateTimeField.tsx +3 -1
- package/src/react/components/DeleteButton.tsx +3 -0
- package/src/react/components/Drawer.tsx +3 -3
- package/src/react/components/DropdownMenu.spec.tsx +55 -0
- package/src/react/components/DropdownMenu.tsx +73 -20
- package/src/react/components/EmptyState.tsx +26 -7
- package/src/react/components/EventTimeline.tsx +1 -1
- package/src/react/components/Field.width.spec.tsx +11 -0
- package/src/react/components/FileDropZone.tsx +1 -1
- package/src/react/components/Grid.spec.tsx +44 -0
- package/src/react/components/Grid.tsx +41 -11
- package/src/react/components/Guide.tsx +77 -0
- package/src/react/components/InfoHint.spec.tsx +21 -0
- package/src/react/components/InfoHintImpl.tsx +22 -1
- package/src/react/components/InlineEditableText.tsx +1 -1
- package/src/react/components/IsolatedFrame.tsx +1 -1
- package/src/react/components/ListToolbar.spec.tsx +12 -0
- package/src/react/components/ListToolbar.tsx +8 -5
- package/src/react/components/LogViewer.tsx +118 -18
- package/src/react/components/Modal.spec.tsx +17 -2
- package/src/react/components/Modal.tsx +25 -10
- package/src/react/components/MultiSelectField.spec.tsx +6 -0
- package/src/react/components/Page.spec.tsx +89 -5
- package/src/react/components/Page.tsx +100 -16
- package/src/react/components/PageGuideButton.tsx +42 -0
- package/src/react/components/PanelSeparator.tsx +1 -1
- package/src/react/components/Popover.tsx +3 -1
- package/src/react/components/PromptDialog.tsx +1 -1
- package/src/react/components/ScrollArea.spec.tsx +20 -0
- package/src/react/components/ScrollArea.tsx +19 -0
- package/src/react/components/Section.spec.tsx +82 -1
- package/src/react/components/Section.tsx +10 -4
- package/src/react/components/Skeleton.tsx +50 -2
- package/src/react/components/StatStrip.tsx +1 -1
- package/src/react/components/StatTile.tsx +84 -11
- package/src/react/components/StatTileGrid.spec.tsx +6 -1
- package/src/react/components/StatTileGrid.tsx +25 -0
- package/src/react/components/StatusPill.tsx +26 -1
- package/src/react/components/Surface.tsx +22 -14
- package/src/react/components/SwatchPicker.tsx +4 -0
- package/src/react/components/Switch.tsx +1 -1
- package/src/react/components/WidgetHeader.tsx +1 -1
- package/src/react/components/calendar/CalendarLegend.tsx +1 -1
- package/src/react/components/calendar/DayAgenda.tsx +1 -1
- package/src/react/components/calendar/EventChip.tsx +1 -1
- package/src/react/components/calendar/MonthGrid.tsx +1 -1
- package/src/react/components/calendar/WeekView.tsx +2 -2
- package/src/react/components/cardFrame.ts +28 -0
- package/src/react/components/dataDisplay.spec.tsx +176 -0
- package/src/react/components/dialog.tsx +4 -1
- package/src/react/dashboard-grid/WidgetFrame.tsx +2 -2
- package/src/react/emoji/EmojiPicker.tsx +1 -1
- package/src/react/file-tree/FileTree.spec.tsx +49 -0
- package/src/react/file-tree/FileTree.tsx +37 -4
- package/src/react/filter-rail/FilterRail.tsx +1 -1
- package/src/react/icons.tsx +1 -1
- package/src/react/index.ts +28 -3
- package/src/react/lib/menuSections.ts +33 -0
- package/src/react/markdown/Markdown.tsx +2 -2
- package/src/react/media/HoverScrubVideoThumb.tsx +2 -2
- package/src/react/media/MaskPainter.tsx +1 -1
- package/src/react/media/MediaUploadControl.tsx +1 -1
- package/src/react/media/VideoTrimmer.tsx +1 -1
- package/src/react/media/denseGallery.css +5 -1
- package/src/react/namespace/NamespaceTargetCapsule.tsx +1 -1
- package/src/react/nav/BreadcrumbTrail.tsx +2 -2
- package/src/react/nav/CommandBar.tsx +14 -3
- package/src/react/nav/PlaceBar.tsx +18 -8
- package/src/react/nav/SideNav.tsx +99 -17
- package/src/react/nav/TopBar.spec.tsx +78 -21
- package/src/react/nav/TopBar.tsx +270 -98
- package/src/react/nav/index.ts +8 -1
- package/src/react/nav/nav.spec.tsx +46 -2
- package/src/react/nav/navShared.tsx +23 -2
- package/src/react/notifications/NotificationFeed.tsx +2 -2
- package/src/react/palette/Command.tsx +1 -1
- package/src/react/palette/CommandPalette.spec.tsx +31 -0
- package/src/react/palette/CommandPalette.tsx +108 -11
- package/src/react/palette/commandSources.tsx +186 -0
- package/src/react/palette/index.ts +7 -0
- package/src/react/rich-text/RichTextEditor.tsx +1 -1
- package/src/react/rich-text/RichTextToolbar.tsx +1 -1
- package/src/styles-areas/analytics.css +16 -16
- package/src/styles-areas/auth.css +3 -3
- package/src/styles-areas/calendar.css +6 -6
- package/src/styles-areas/chart-table.css +1 -1
- package/src/styles-areas/charts.css +3 -3
- package/src/styles-areas/chat.css +7 -6
- package/src/styles-areas/companion-link.css +2 -2
- package/src/styles-areas/core.css +98 -89
- package/src/styles-areas/dashboard-grid.css +4 -4
- package/src/styles-areas/data-table.css +16 -16
- package/src/styles-areas/disk-usage.css +5 -5
- package/src/styles-areas/emoji.css +2 -2
- package/src/styles-areas/fields.css +13 -14
- package/src/styles-areas/filter-rail.css +4 -4
- package/src/styles-areas/folder-tree.css +3 -3
- package/src/styles-areas/markdown.css +2 -1
- package/src/styles-areas/master-detail.css +3 -3
- package/src/styles-areas/media-gallery.css +8 -8
- package/src/styles-areas/media.css +12 -13
- package/src/styles-areas/nav.css +28 -14
- package/src/styles-areas/notifications.css +4 -4
- package/src/styles-areas/overlays.css +4 -4
- package/src/styles-areas/palette.css +4 -3
- package/src/styles-areas/rich-text.css +3 -3
- package/src/styles-areas/sharing.css +4 -3
- package/src/styles-areas/stats.css +9 -8
- package/src/styles-areas/test-report.css +3 -3
- package/src/styles-areas/wizard.css +6 -5
- package/src/styles-areas/workbench.css +10 -9
- package/src/styles-areas/workbook-viewer.css +2 -2
- package/src/styles-utilities.css +272 -187
- package/src/testing/designAudit.ts +3 -0
- package/src/testing/designBaseline.ts +4 -0
- package/src/theme.css +103 -2
- package/src/themeDarkScopeAliases.spec.ts +65 -0
package/dist/react/Toast.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
import { Toaster as SonnerToaster, toast } from 'sonner';
|
|
2
|
-
|
|
1
|
+
import { type ExternalToast, Toaster as SonnerToaster, toast as sonnerToast } from 'sonner';
|
|
2
|
+
type ToastMessage = Parameters<typeof sonnerToast.error>[0];
|
|
3
|
+
/**
|
|
4
|
+
* "Moved 3 files to trash" with an Undo — the shape OVL-9 asks every reversible action to take.
|
|
5
|
+
* `onUndo` runs when Undo is pressed; the toast stays for 6s, long enough to reach the button.
|
|
6
|
+
*/
|
|
7
|
+
declare function undoToast(message: ToastMessage, onUndo: () => void, data?: ExternalToast): string | number;
|
|
8
|
+
/** sonner's `toast`, with OVL-9's rules on `error` and an `undo` helper. */
|
|
9
|
+
export declare const toast: typeof sonnerToast & {
|
|
10
|
+
undo: typeof undoToast;
|
|
11
|
+
};
|
|
3
12
|
export type ToasterProps = React.ComponentProps<typeof SonnerToaster>;
|
|
4
13
|
export declare function Toaster({ style, ...props }: ToasterProps): import("react").JSX.Element;
|
|
14
|
+
export {};
|
|
5
15
|
//# sourceMappingURL=Toast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG5F,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAmB5D;;;GAGG;AACH,iBAAS,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE,aAAa,mBAEjF;AAED,4EAA4E;AAC5E,eAAO,MAAM,KAAK,EAAE,OAAO,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,SAAS,CAAA;CAIhE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC;AAwBtE,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,+BA2BxD"}
|
package/dist/react/Toast.js
CHANGED
|
@@ -12,8 +12,30 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
12
12
|
* light/dark exactly like every other primitive (no sonner `richColors` — that
|
|
13
13
|
* would inject sonner's own hardcoded palette instead of our tokens).
|
|
14
14
|
*/
|
|
15
|
-
import { Toaster as SonnerToaster, toast } from 'sonner';
|
|
16
|
-
|
|
15
|
+
import { Toaster as SonnerToaster, toast as sonnerToast } from 'sonner';
|
|
16
|
+
import { devWarnOnce } from './lib/devWarn.js';
|
|
17
|
+
/**
|
|
18
|
+
* OVL-9: a toast confirms what happened ("Moved to trash") and offers Undo; it never carries an
|
|
19
|
+
* error the reader must act on — that is an inline `Alert` where the problem is, because a toast
|
|
20
|
+
* leaves in four seconds and takes the problem with it. An error toast is allowed only with an
|
|
21
|
+
* `action` (Retry, Undo), so the error is something the toast itself lets you resolve.
|
|
22
|
+
*/
|
|
23
|
+
function errorToast(message, data) {
|
|
24
|
+
if (!data?.action) {
|
|
25
|
+
devWarnOnce('toast:error-without-action', 'cursedbelt: toast.error() with no `action` — an error the reader must act on belongs in an inline <Alert tone="error"> ' +
|
|
26
|
+
"where the problem is (OVL-9). Give the toast an action (Retry) if it can resolve it itself.");
|
|
27
|
+
}
|
|
28
|
+
return sonnerToast.error(message, data);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* "Moved 3 files to trash" with an Undo — the shape OVL-9 asks every reversible action to take.
|
|
32
|
+
* `onUndo` runs when Undo is pressed; the toast stays for 6s, long enough to reach the button.
|
|
33
|
+
*/
|
|
34
|
+
function undoToast(message, onUndo, data) {
|
|
35
|
+
return sonnerToast(message, { duration: 6000, ...data, action: { label: 'Undo', onClick: onUndo } });
|
|
36
|
+
}
|
|
37
|
+
/** sonner's `toast`, with OVL-9's rules on `error` and an `undo` helper. */
|
|
38
|
+
export const toast = Object.assign((...args) => sonnerToast(...args), sonnerToast, { error: errorToast, undo: undoToast });
|
|
17
39
|
/**
|
|
18
40
|
* 🔴 sonner paints a toast from its OWN variables (`--normal-bg`, `--normal-border`,
|
|
19
41
|
* `--normal-text`), set per `data-sonner-theme` on the toaster — and its rule outranks the
|
|
@@ -27,8 +49,15 @@ const TOKEN_VARS = {
|
|
|
27
49
|
'--normal-border': 'var(--border)',
|
|
28
50
|
'--normal-text': 'var(--popover-foreground)',
|
|
29
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* OVL-9: on a phone the stack sits ABOVE the `PlaceBar` (and any bottom dock), not on top of
|
|
54
|
+
* the navigation. `AppShell` publishes its bottom chrome's height as `--cb-bottom-chrome-h`;
|
|
55
|
+
* outside a shell it is 0 and this is sonner's own gap.
|
|
56
|
+
*/
|
|
57
|
+
const BOTTOM_OFFSET = { bottom: 'calc(var(--cb-bottom-chrome-h, 0px) + 16px)', right: '16px' };
|
|
58
|
+
const DESKTOP_OFFSET = { bottom: 'calc(var(--cb-bottom-chrome-h, 0px) + 24px)', right: '24px' };
|
|
30
59
|
export function Toaster({ style, ...props }) {
|
|
31
|
-
return (_jsx(SonnerToaster, { style: { ...TOKEN_VARS, ...style }, position: 'bottom-right', closeButton: true, toastOptions: {
|
|
60
|
+
return (_jsx(SonnerToaster, { style: { ...TOKEN_VARS, ...style }, position: 'bottom-right', offset: DESKTOP_OFFSET, mobileOffset: BOTTOM_OFFSET, closeButton: true, toastOptions: {
|
|
32
61
|
classNames: {
|
|
33
62
|
toast: 'rounded-lg border border-border bg-popover text-foreground shadow-overlay',
|
|
34
63
|
title: 'text-sm font-medium',
|
package/dist/react/Toast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/react/Toast.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAsB,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C;;;;;GAKG;AACH,SAAS,UAAU,CAAC,OAAqB,EAAE,IAAoB;IAC7D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAClB,WAAW,CACT,4BAA4B,EAC5B,yHAAyH;YACvH,6FAA6F,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,OAAqB,EAAE,MAAkB,EAAE,IAAoB;IAChF,OAAO,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACvG,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,KAAK,GAAoD,MAAM,CAAC,MAAM,CACjF,CAAC,GAAG,IAAoC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,EACjE,WAAW,EACX,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CACvC,CAAC;AAIF;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG;IACjB,aAAa,EAAE,gBAAgB;IAC/B,iBAAiB,EAAE,eAAe;IAClC,eAAe,EAAE,2BAA2B;CACtB,CAAC;AAEzB;;;;GAIG;AACH,MAAM,aAAa,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC/F,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAEhG,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAgB;IACvD,OAAO,CACL,KAAC,aAAa,IACZ,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,EAAE,EAClC,QAAQ,EAAC,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,aAAa,EAC3B,WAAW,QACX,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,KAAK,EAAE,2EAA2E;gBAClF,KAAK,EAAE,qBAAqB;gBAC5B,sFAAsF;gBACtF,8EAA8E;gBAC9E,WAAW,EAAE,gCAAgC;gBAC7C,YAAY,EAAE,yDAAyD;gBACvE,YAAY,EAAE,uDAAuD;gBACrE,WAAW,EAAE,0EAA0E;gBACvF,KAAK,EAAE,wDAAwD;gBAC/D,OAAO,EAAE,gDAAgD;gBACzD,OAAO,EAAE,gDAAgD;gBACzD,IAAI,EAAE,8CAA8C;aACrD;SACF,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -29,7 +29,7 @@ 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: '
|
|
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, ...(caveat === undefined ? {} : { caveat }), ...(range === undefined ? {} : { range }),
|
|
33
33
|
// No chart means the reader came for the list: open on the table. The
|
|
34
34
|
// Chart tab still exists (the toggle is the panel's, not ours) so it
|
|
35
35
|
// must SAY there is nothing to draw — an empty pane reads as a broken
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":"
|
|
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,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,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,MAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,GACf,EAAE,cAAc,+BAmEhB"}
|
|
@@ -3,17 +3,17 @@ import { Area, CartesianGrid, Legend, AreaChart as RAreaChart, Tooltip, XAxis, Y
|
|
|
3
3
|
import { ChartFrame } from './ChartFrame.js';
|
|
4
4
|
import { legendContent } from './ChartLegend.js';
|
|
5
5
|
import { tooltipContent } from './ChartTooltip.js';
|
|
6
|
-
import { axisProps, seriesColor, useGradientId } from './shared.js';
|
|
6
|
+
import { axisProps, valueAxisProps, seriesColor, useGradientId } from './shared.js';
|
|
7
7
|
/** Multi-series area chart with token-colored gradient fills (per-instance ids). */
|
|
8
8
|
export function AreaChart({ data, xKey, series, ariaLabel, height, smooth = true, legend, grid = true, stacked = false, yWidth = 44, xTickFormatter, valueFormatter, labelFormatter, }) {
|
|
9
9
|
const gradId = useGradientId();
|
|
10
|
-
const showLegend = legend ?? series.length > 1;
|
|
11
|
-
return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t) => (_jsxs(RAreaChart, { data: data, margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [_jsx("defs", { children: series.map((s, i) => {
|
|
10
|
+
const showLegend = (box) => legend ?? (!box.legendInHeader && series.length > 1);
|
|
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), tickFormatter: xTickFormatter, interval: 'preserveStartEnd', minTickGap: 24 }), _jsx(YAxis, { ...axisProps(t),
|
|
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) => {
|
|
15
15
|
const c = seriesColor(t, s, i);
|
|
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:
|
|
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
|
})] })) }));
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=AreaChart.js.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"AreaChart.js","sourceRoot":"","sources":["../../../src/react/charts/AreaChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":"
|
|
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,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,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,MAAW,EACX,qBAAqB,EACrB,cAAc,EACd,cAAc,GACf,EAAE,aAAa,+BA8Ef"}
|
|
@@ -3,11 +3,11 @@ import { Bar, CartesianGrid, Legend, BarChart as RBarChart, Tooltip, XAxis, YAxi
|
|
|
3
3
|
import { ChartFrame } from './ChartFrame.js';
|
|
4
4
|
import { legendContent } from './ChartLegend.js';
|
|
5
5
|
import { tooltipContent } from './ChartTooltip.js';
|
|
6
|
-
import { axisProps, seriesColor } from './shared.js';
|
|
6
|
+
import { axisProps, valueAxisProps, seriesColor } from './shared.js';
|
|
7
7
|
/** Vertical/horizontal, grouped/stacked bar chart with rounded corners. */
|
|
8
8
|
export function BarChart({ data, xKey, series, ariaLabel, height, orientation = 'vertical', stacked = false, legend, grid = true, yWidth = 44, categoryTickFormatter, valueFormatter, labelFormatter, }) {
|
|
9
9
|
const horizontal = orientation === 'horizontal';
|
|
10
|
-
const showLegend = legend ?? series.length > 1;
|
|
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.
|
|
12
12
|
const cornersFor = (i) => {
|
|
13
13
|
const outer = !stacked || i === series.length - 1;
|
|
@@ -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) => (_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),
|
|
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)))] })) }));
|
|
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;
|
|
1
|
+
{"version":3,"file":"BarChart.js","sourceRoot":"","sources":["../../../src/react/charts/BarChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { ChartTone } from './tokens.js';
|
|
3
|
+
/** One entry of the header legend — a dot and its label (CHT-2). */
|
|
4
|
+
export interface ChartCardLegendItem {
|
|
5
|
+
label: string;
|
|
6
|
+
/** A semantic color instead of the positional one — the same `tone` its series carries. */
|
|
7
|
+
tone?: ChartTone;
|
|
8
|
+
}
|
|
9
|
+
export interface ChartCardProps {
|
|
10
|
+
/** What is measured — "Daily volume". */
|
|
11
|
+
title: ReactNode;
|
|
12
|
+
/** The range, in one line — "Sep 13 → Oct 1" (CHT-2). */
|
|
13
|
+
subtitle?: ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* The legend, drawn inline in the header instead of under the plot, in SERIES ORDER: item
|
|
16
|
+
* `i` takes `--chart-{i+1}`, the color the chart gives its series `i` (CHT-7), unless a
|
|
17
|
+
* `tone` says otherwise. When set, a chart inside the card leaves its own legend off.
|
|
18
|
+
* Long legends wrap; on a phone-width card they fold into a "Legend" button.
|
|
19
|
+
*/
|
|
20
|
+
legend?: ChartCardLegendItem[];
|
|
21
|
+
/** Header controls on the right — a range picker, a chart/table toggle. */
|
|
22
|
+
actions?: ReactNode;
|
|
23
|
+
/** First load: a skeleton of the frame at the frame's own size (CHT-9, STA-1). */
|
|
24
|
+
loading?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* No data: an empty state INSIDE the frame at the same size (CHT-9). `true` uses a generic
|
|
27
|
+
* title; pass `{ title, description, action }` to say what is missing and what fills it.
|
|
28
|
+
*/
|
|
29
|
+
empty?: boolean | {
|
|
30
|
+
title: ReactNode;
|
|
31
|
+
description?: ReactNode;
|
|
32
|
+
action?: ReactNode;
|
|
33
|
+
};
|
|
34
|
+
/** Fix the plot height. Leave unset — the card takes the aspect for its width (CHT-1). */
|
|
35
|
+
height?: number;
|
|
36
|
+
/** The chart — any `cursedbelt/react/charts` chart, with its `height` left unset. */
|
|
37
|
+
children: ReactNode;
|
|
38
|
+
className?: string;
|
|
39
|
+
}
|
|
40
|
+
/** CHT-7: one color order across every chart — the same `--chart-*` the chart's series take. */
|
|
41
|
+
export declare function legendColor(item: ChartCardLegendItem, index: number): string;
|
|
42
|
+
/**
|
|
43
|
+
* The chart's frame (CHT-1, CHT-2, CHT-9): a card whose header holds the title, the range and
|
|
44
|
+
* an inline legend, and whose body owns the plot's SHAPE — the chart inside measures the same
|
|
45
|
+
* width and takes the same aspect, so the loading skeleton, the empty state and the chart are
|
|
46
|
+
* one size and nothing moves when the data lands. Collapse a sidebar beside it and the chart
|
|
47
|
+
* re-measures; it never clips.
|
|
48
|
+
*
|
|
49
|
+
* Build an operations-console Trends section from this and a `DataTable` with no app-local
|
|
50
|
+
* styling (`docs/design/blueprints/operations-console.md`).
|
|
51
|
+
*/
|
|
52
|
+
export declare function ChartCard({ title, subtitle, legend, actions, loading, empty, height, children, className, }: ChartCardProps): import("react").JSX.Element;
|
|
53
|
+
//# sourceMappingURL=ChartCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartCard.d.ts","sourceRoot":"","sources":["../../../src/react/charts/ChartCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAS/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,KAAK,EAAE,SAAS,CAAC;IACjB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC/B,2EAA2E;IAC3E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IACpF,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5E;AAkBD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAe,EACf,KAAa,EACb,MAAM,EACN,QAAQ,EACR,SAAS,GACV,EAAE,cAAc,+BAkDhB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import { Button } from '../components/Button.js';
|
|
4
|
+
import { EmptyState } from '../components/EmptyState.js';
|
|
5
|
+
import { Popover } from '../components/Popover.js';
|
|
6
|
+
import { Skeleton } from '../components/Skeleton.js';
|
|
7
|
+
import { Surface } from '../components/Surface.js';
|
|
8
|
+
import { useElementSize } from '../hooks/useResizeObserver.js';
|
|
9
|
+
import { cn } from '../lib/cn.js';
|
|
10
|
+
import { CHART_PHONE_MAX, ChartCardContext, chartHeight } from './chartBox.js';
|
|
11
|
+
const TONE_VAR = {
|
|
12
|
+
accent: 'var(--accent)',
|
|
13
|
+
success: 'var(--success)',
|
|
14
|
+
warning: 'var(--warning)',
|
|
15
|
+
danger: 'var(--destructive)',
|
|
16
|
+
neutral: 'var(--muted-foreground)',
|
|
17
|
+
};
|
|
18
|
+
/** CHT-7: one color order across every chart — the same `--chart-*` the chart's series take. */
|
|
19
|
+
export function legendColor(item, index) {
|
|
20
|
+
return item.tone ? TONE_VAR[item.tone] : `var(--chart-${(index % 8) + 1})`;
|
|
21
|
+
}
|
|
22
|
+
function LegendList({ items, className }) {
|
|
23
|
+
return (_jsx("ul", { "data-cb-chart-legend": '', className: cn('m-0 flex list-none flex-wrap items-center gap-x-3 gap-y-1 p-0 text-xs', className), children: items.map((item, i) => (_jsxs("li", { className: 'flex min-w-0 items-center gap-1.5 text-muted-foreground', children: [_jsx("svg", { "aria-hidden": true, className: 'size-2 shrink-0', viewBox: '0 0 8 8', children: _jsx("circle", { cx: '4', cy: '4', r: '4', fill: legendColor(item, i) }) }), _jsx("span", { className: 'truncate', children: item.label })] }, item.label))) }));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The chart's frame (CHT-1, CHT-2, CHT-9): a card whose header holds the title, the range and
|
|
27
|
+
* an inline legend, and whose body owns the plot's SHAPE — the chart inside measures the same
|
|
28
|
+
* width and takes the same aspect, so the loading skeleton, the empty state and the chart are
|
|
29
|
+
* one size and nothing moves when the data lands. Collapse a sidebar beside it and the chart
|
|
30
|
+
* re-measures; it never clips.
|
|
31
|
+
*
|
|
32
|
+
* Build an operations-console Trends section from this and a `DataTable` with no app-local
|
|
33
|
+
* styling (`docs/design/blueprints/operations-console.md`).
|
|
34
|
+
*/
|
|
35
|
+
export function ChartCard({ title, subtitle, legend, actions, loading = false, empty = false, height, children, className, }) {
|
|
36
|
+
const bodyRef = useRef(null);
|
|
37
|
+
const { width } = useElementSize(bodyRef, { layout: true });
|
|
38
|
+
const plotHeight = height ?? chartHeight(width);
|
|
39
|
+
const phone = width > 0 && width < CHART_PHONE_MAX;
|
|
40
|
+
// A phone header has room for two or three dots; past that the legend folds (CHT-2) rather
|
|
41
|
+
// than push the plot down the screen.
|
|
42
|
+
const foldLegend = phone && legend != null && legend.length > 3;
|
|
43
|
+
const emptyContent = empty === true ? { title: 'No data for this range' } : empty || null;
|
|
44
|
+
return (_jsxs(Surface, { level: 'flat', pad: 'md', radius: 'lg', className: cn('flex min-w-0 flex-col gap-3', className), "data-cb-chart-card": '', children: [_jsxs("div", { className: 'flex min-w-0 flex-wrap items-start justify-between gap-x-4 gap-y-2', children: [_jsxs("div", { className: 'flex min-w-0 flex-col gap-0.5', children: [_jsx("h3", { className: 'truncate text-sm font-semibold text-foreground', children: title }), subtitle != null && _jsx("p", { className: 'truncate text-xs tabular-nums text-muted-foreground', children: subtitle })] }), _jsxs("div", { className: 'flex min-w-0 flex-wrap items-center justify-end gap-x-3 gap-y-2', children: [legend && legend.length > 0 && !foldLegend && _jsx(LegendList, { items: legend, className: 'justify-end' }), foldLegend && legend && (_jsx(Popover, { trigger: _jsx(Button, { variant: 'ghost', size: 'sm', tooltip: 'Show what each color is', tooltipMobile: 'off', children: `Legend · ${legend.length}` }), align: 'end', label: 'Chart legend', children: _jsx(LegendList, { items: legend, className: 'flex-col items-start' }) })), actions] })] }), _jsx("div", { ref: bodyRef, className: 'min-w-0', "data-cb-chart-body": '', children: loading ? (_jsx(Skeleton, { className: 'w-full rounded-md', style: { height: plotHeight }, "data-cb-chart-skeleton": '' })) : emptyContent ? (_jsx("div", { className: 'flex w-full items-center justify-center rounded-md border border-dashed border-border', style: { height: plotHeight }, children: _jsx(EmptyState, { compact: true, title: emptyContent.title, description: emptyContent.description, action: emptyContent.action }) })) : (_jsx(ChartCardContext.Provider, { value: { legendInHeader: legend != null && legend.length > 0, height }, children: children })) })] }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ChartCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartCard.js","sourceRoot":"","sources":["../../../src/react/charts/ChartCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import { type ReactElement } from 'react';
|
|
2
|
+
import { type ChartBox } from './chartBox.js';
|
|
2
3
|
import { type ChartTokens } from './tokens.js';
|
|
3
4
|
export type ChartFrameProps = {
|
|
4
5
|
/** Human label for the chart's `role="img"` wrapper (SVG a11y). */
|
|
5
6
|
ariaLabel: string;
|
|
6
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Pixel height of the plot. Leave it unset: the frame takes its shape from its own width
|
|
9
|
+
* (CHT-1 — 4:3 on a phone, 2:1 on a desktop, 3:1 on a very wide screen, clamped to
|
|
10
|
+
* 160–480px) and re-measures when its container resizes. Width is always 100%.
|
|
11
|
+
*/
|
|
7
12
|
height?: number;
|
|
8
13
|
className?: string;
|
|
9
|
-
/** Render the recharts chart from the live tokens. */
|
|
10
|
-
children: (tokens: ChartTokens) => ReactElement;
|
|
14
|
+
/** Render the recharts chart from the live tokens and the measured box. */
|
|
15
|
+
children: (tokens: ChartTokens, box: ChartBox) => ReactElement;
|
|
11
16
|
};
|
|
12
17
|
/**
|
|
13
18
|
* The shared chart wrapper. Its `role="img"` element is the cascade anchor
|
|
14
19
|
* useChartTokens reads from (so a `.dark`/accent ancestor themes the chart), and it
|
|
15
|
-
* hosts a recharts <ResponsiveContainer> that owns
|
|
16
|
-
* and never overflows its column.
|
|
20
|
+
* hosts a recharts <ResponsiveContainer> that owns the width — every chart is 100% wide
|
|
21
|
+
* and never overflows its column. The HEIGHT is the frame's: it measures its own width
|
|
22
|
+
* (a sidebar folding re-measures it) and derives the plot's shape and its marks' weight
|
|
23
|
+
* from it — see `chartBox`. All wrappers below build on it.
|
|
17
24
|
*/
|
|
18
25
|
export declare function ChartFrame({ ariaLabel, height, className, children }: ChartFrameProps): import("react").JSX.Element;
|
|
19
26
|
//# sourceMappingURL=ChartFrame.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartFrame.d.ts","sourceRoot":"","sources":["../../../src/react/charts/ChartFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"ChartFrame.d.ts","sourceRoot":"","sources":["../../../src/react/charts/ChartFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,OAAO,CAAC;AAI9D,OAAO,EAAE,KAAK,QAAQ,EAA8B,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG;IAC5B,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,KAAK,YAAY,CAAC;CAChE,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe,+BAoBrF"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useRef } from 'react';
|
|
2
|
+
import { useContext, useRef } from 'react';
|
|
3
3
|
import { ResponsiveContainer } from 'recharts';
|
|
4
|
+
import { useElementSize } from '../hooks/useResizeObserver.js';
|
|
4
5
|
import { cn } from '../lib/cn.js';
|
|
6
|
+
import { ChartCardContext, chartBox } from './chartBox.js';
|
|
5
7
|
import { useChartTokens } from './tokens.js';
|
|
6
8
|
/**
|
|
7
9
|
* The shared chart wrapper. Its `role="img"` element is the cascade anchor
|
|
8
10
|
* useChartTokens reads from (so a `.dark`/accent ancestor themes the chart), and it
|
|
9
|
-
* hosts a recharts <ResponsiveContainer> that owns
|
|
10
|
-
* and never overflows its column.
|
|
11
|
+
* hosts a recharts <ResponsiveContainer> that owns the width — every chart is 100% wide
|
|
12
|
+
* and never overflows its column. The HEIGHT is the frame's: it measures its own width
|
|
13
|
+
* (a sidebar folding re-measures it) and derives the plot's shape and its marks' weight
|
|
14
|
+
* from it — see `chartBox`. All wrappers below build on it.
|
|
11
15
|
*/
|
|
12
|
-
export function ChartFrame({ ariaLabel, height
|
|
16
|
+
export function ChartFrame({ ariaLabel, height, className, children }) {
|
|
13
17
|
const ref = useRef(null);
|
|
14
18
|
const tokens = useChartTokens(ref);
|
|
15
|
-
|
|
19
|
+
const { width } = useElementSize(ref, { layout: true });
|
|
20
|
+
const card = useContext(ChartCardContext);
|
|
21
|
+
const box = chartBox(width, { height: height ?? card?.height, legendInHeader: card?.legendInHeader ?? false });
|
|
22
|
+
return (_jsx("div", { ref: ref, role: 'img', "aria-label": ariaLabel, "data-cb-chart": '', "data-cb-chart-tier": box.tier, className: cn('w-full min-w-0', className), children: _jsx(ResponsiveContainer, { width: '100%', height: box.height, children: children(tokens, box) }) }));
|
|
16
23
|
}
|
|
17
24
|
//# sourceMappingURL=ChartFrame.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartFrame.js","sourceRoot":"","sources":["../../../src/react/charts/ChartFrame.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAqB,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChartFrame.js","sourceRoot":"","sources":["../../../src/react/charts/ChartFrame.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAqB,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAiB,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAoB,cAAc,EAAE,MAAM,aAAa,CAAC;AAgB/D;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAmB;IACpF,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,IAAI,KAAK,EAAE,CAAC,CAAC;IAC/G,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,KAAK,gBACE,SAAS,mBACP,EAAE,wBACI,GAAG,CAAC,IAAI,EAC5B,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,YAE1C,KAAC,mBAAmB,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,CAAC,MAAM,YACjD,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,GACF,GAClB,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { FALLBACK_TOKENS } from './tokens.js';
|
|
|
4
4
|
export function ChartLegend({ payload, tokens = FALLBACK_TOKENS }) {
|
|
5
5
|
if (!payload?.length)
|
|
6
6
|
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: payload.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-
|
|
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: payload.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
8
|
? String(entry.value)
|
|
9
9
|
: String(entry.dataKey ?? i)))) }));
|
|
10
10
|
}
|
|
@@ -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,OAAO,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,CACL,aACE,SAAS,EAAC,2FAA2F,EACrG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,YAElC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAIzB,cAME,SAAS,EAAC,2BAA2B,aAErC,eACE,SAAS,EAAC,
|
|
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,OAAO,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,CACL,aACE,SAAS,EAAC,2FAA2F,EACrG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,YAElC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAIzB,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,gFAAgF;AAChF,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"}
|
|
@@ -50,20 +50,20 @@ export function HeatmapChart({ cells, rows, columns, ariaLabel, tone = 'accent',
|
|
|
50
50
|
const bottom = observed.length > 0 ? Math.min(...observed) : 0;
|
|
51
51
|
const title = (cell) => cellTitle?.(cell) ??
|
|
52
52
|
`${rowLabel(cell.row)} · ${cell.column}: ${cell.value === null ? 'no data' : valueFormatter(cell.value)}`;
|
|
53
|
-
return (_jsxs("div", { ref: ref, "data-cb-chart": '', className: cn('flex w-full min-w-0 flex-col gap-2', className), children: [_jsxs("div", { role: 'img', "aria-label": ariaLabel, className: 'grid min-w-0 gap-
|
|
53
|
+
return (_jsxs("div", { ref: ref, "data-cb-chart": '', className: cn('flex w-full min-w-0 flex-col gap-2', className), children: [_jsxs("div", { role: 'img', "aria-label": ariaLabel, className: 'grid min-w-0 gap-0.5',
|
|
54
54
|
// The row-label column is sized to its content; every data column shares
|
|
55
55
|
// the remainder equally, so the grid fits its container at any width.
|
|
56
56
|
style: { gridTemplateColumns: `auto repeat(${columns.length}, minmax(0, 1fr))` }, children: [_jsx("div", { "aria-hidden": true }), columns.map((column, i) => (_jsx("div", { "aria-hidden": true, className: 'cb-meta-label truncate text-center text-caption leading-none', children: columnLabel(column, i) }, column))), rows.map((row) => (_jsx(Row, { label: rowLabel(row), children: columns.map((column) => {
|
|
57
57
|
const cell = byKey.get(cellKey(row, column)) ?? { row, column, value: null };
|
|
58
58
|
const empty = cell.value === null;
|
|
59
59
|
const text = title(cell);
|
|
60
|
-
return (_jsx(CellChrome, { label: text, className: cn('rounded-
|
|
60
|
+
return (_jsx(CellChrome, { label: text, className: cn('rounded-xs transition-opacity', empty && 'border border-border border-dashed', onCellClick && 'cursor-pointer hover:opacity-80 focus-visible:cb-ring'), style: {
|
|
61
61
|
height: cellHeight,
|
|
62
62
|
...(empty
|
|
63
63
|
? {}
|
|
64
64
|
: { background: sequentialStep(hue, heatFraction(cell.value ?? 0, top)) }),
|
|
65
65
|
}, onActivate: onCellClick ? () => onCellClick(cell) : undefined }, column));
|
|
66
|
-
}) }, row)))] }), legend && (_jsxs("div", { className: 'flex items-center gap-2 text-caption text-muted-foreground', children: [_jsx("span", { children: valueFormatter(bottom) }), _jsx("div", { className: 'flex h-2 flex-1 gap-
|
|
66
|
+
}) }, row)))] }), legend && (_jsxs("div", { className: 'flex items-center gap-2 text-caption text-muted-foreground', children: [_jsx("span", { children: valueFormatter(bottom) }), _jsx("div", { className: 'flex h-2 flex-1 gap-0.5', children: [0, 0.25, 0.5, 0.75, 1].map((f) => (_jsx("div", { className: 'flex-1 rounded-xs', style: { background: sequentialStep(hue, f) } }, f))) }), _jsx("span", { children: valueFormatter(top) }), _jsxs("span", { className: 'ml-2 inline-flex items-center gap-1', children: [_jsx("span", { className: 'inline-block h-2 w-3 rounded-xs border border-border border-dashed' }), "no data"] })] })), footnote && _jsx("div", { className: 'text-caption text-muted-foreground', children: footnote })] }));
|
|
67
67
|
}
|
|
68
68
|
/** A label cell plus its row of data cells — a fragment, so the grid stays flat. */
|
|
69
69
|
function Row({ label, children }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeatmapChart.js","sourceRoot":"","sources":["../../../src/react/charts/HeatmapChart.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAsC,MAAM,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAoC,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAyCnD,0EAA0E;AAC1E,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,MAAM,EAAE,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,GAAW;IACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,QAAQ,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EACnB,WAAW,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EACtB,SAAS,EACT,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EACjC,GAAG,EACH,UAAU,GAAG,EAAE,EACf,MAAM,GAAG,IAAI,EACb,QAAQ,EACR,WAAW,EACX,SAAS,GACS;IAClB,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAgB,cAAc,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAe,CAAC,CAAC;IACrF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAG,CAAC,IAAiB,EAAE,EAAE,CAClC,SAAS,EAAE,CAAC,IAAI,CAAC;QACjB,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,KACpC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAC7D,EAAE,CAAC;IAEL,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,mBAAgB,EAAE,EAAC,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,aAC5F,eACE,IAAI,EAAC,KAAK,gBACE,SAAS,EACrB,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"HeatmapChart.js","sourceRoot":"","sources":["../../../src/react/charts/HeatmapChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ export function IntervalTimeline({ intervals, window: windowProp, bands = [], ma
|
|
|
77
77
|
// subtly wrong. A bar carries no text, so nothing is lost.
|
|
78
78
|
return (_jsx(Tooltip, { content: hint, multiline: true, maxWidth: 340, children: onSelect ? (_jsx("button", {
|
|
79
79
|
// guardrails-ignore no-raw-action-button: a chart MARK, not an action — cursedbelt's Button carries height, padding and a label slot, none of which a positioned interval bar can have. The native element is used precisely so Enter/Space, focus and disabled semantics are the browser's rather than a hand-rolled keydown handler's.
|
|
80
|
-
type: 'button', "aria-label": label, onClick: () => onSelect(interval), className: 'absolute cursor-pointer rounded-
|
|
80
|
+
type: 'button', "aria-label": label, onClick: () => onSelect(interval), className: 'absolute cursor-pointer rounded-xs p-0 outline-none focus-visible:ring-2 focus-visible:ring-ring', style: style })) : (_jsx("span", { role: 'img', "aria-label": label, className: 'absolute rounded-xs', style: style })) }, interval.id));
|
|
81
81
|
}), markers.map((m) => (_jsx("span", { "aria-hidden": true, className: 'absolute inset-y-0 w-px', style: { left: `${clampedPct(m.at)}%`, background: toneColor(tokens, m.tone ?? 'danger') } }, `${ref}-mark-${m.at}`)))] }), showConcurrency && peak > 0 && (_jsxs("div", {
|
|
82
82
|
// guardrails-ignore no-hand-rolled-surface: the concurrency strip's plot well — an instrument surface, not a card
|
|
83
83
|
className: 'relative h-8 w-full overflow-hidden rounded-md border border-border bg-surface-sunken', role: 'img', "aria-label": `How many ran at once, peaking at ${peak}`, children: [profile.map((p, i) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntervalTimeline.js","sourceRoot":"","sources":["../../../src/react/charts/IntervalTimeline.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IntervalTimeline.js","sourceRoot":"","sources":["../../../src/react/charts/IntervalTimeline.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../src/react/charts/LineChart.tsx"],"names":[],"mappings":"
|
|
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,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,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,MAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,GACf,EAAE,cAAc,+BA6ChB"}
|
|
@@ -3,10 +3,10 @@ import { CartesianGrid, Legend, Line, LineChart as RLineChart, Tooltip, XAxis, Y
|
|
|
3
3
|
import { ChartFrame } from './ChartFrame.js';
|
|
4
4
|
import { legendContent } from './ChartLegend.js';
|
|
5
5
|
import { tooltipContent } from './ChartTooltip.js';
|
|
6
|
-
import { axisProps, seriesColor } from './shared.js';
|
|
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
8
|
export function LineChart({ data, xKey, series, ariaLabel, height, smooth = true, legend, grid = true, yWidth = 44, xTickFormatter, valueFormatter, labelFormatter, }) {
|
|
9
|
-
const showLegend = legend ?? series.length > 1;
|
|
10
|
-
return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t) => (_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), tickFormatter: xTickFormatter, interval: 'preserveStartEnd', minTickGap: 24 }), _jsx(YAxis, { ...axisProps(t),
|
|
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)))] })) }));
|
|
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;
|
|
1
|
+
{"version":3,"file":"LineChart.js","sourceRoot":"","sources":["../../../src/react/charts/LineChart.tsx"],"names":[],"mappings":"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"}
|