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
|
@@ -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":"AAMA,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,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,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,MAAW,EACX,YAAmB,GACpB,EAAE,oBAAoB,+BAmItB"}
|
|
@@ -4,7 +4,7 @@ import { ChartFrame } from './ChartFrame.js';
|
|
|
4
4
|
import { legendContent } from './ChartLegend.js';
|
|
5
5
|
import { tooltipContent } from './ChartTooltip.js';
|
|
6
6
|
import { formatTimeFull, formatTimeTick } from './format.js';
|
|
7
|
-
import { axisProps, seriesColor, useGradientId } from './shared.js';
|
|
7
|
+
import { axisProps, valueAxisProps, seriesColor, useGradientId } from './shared.js';
|
|
8
8
|
import { toneColor } from './tokens.js';
|
|
9
9
|
/**
|
|
10
10
|
* The workhorse time-series: multiple series over an epoch-ms x-axis, mixing
|
|
@@ -17,24 +17,24 @@ import { toneColor } from './tokens.js';
|
|
|
17
17
|
* reference line" is one chart, and composing it from three would not share an
|
|
18
18
|
* axis.
|
|
19
19
|
*/
|
|
20
|
-
export function TimeSeriesChart({ data, series, ariaLabel, xKey = 'ts', height
|
|
20
|
+
export function TimeSeriesChart({ data, series, ariaLabel, xKey = 'ts', height, includeDate = false, valueFormatter, references, bands, band, legend, yWidth = 52, zeroBaseline = true, }) {
|
|
21
21
|
const gradId = useGradientId();
|
|
22
|
-
const showLegend = legend ?? series.length > 1;
|
|
23
|
-
return (_jsx(ChartFrame, { ariaLabel: ariaLabel, height: height, children: (t) => (_jsxs(ComposedChart, { data: data, margin: { top: 8, right: 12, bottom: 0, left: 0 }, children: [_jsx("defs", { children: series.map((s, i) => {
|
|
22
|
+
const showLegend = (box) => legend ?? (!box.legendInHeader && series.length > 1);
|
|
23
|
+
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
24
|
const c = seriesColor(t, s, i);
|
|
25
25
|
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));
|
|
26
26
|
}) }), _jsx(CartesianGrid, { strokeDasharray: '3 3', stroke: t.foregroundMuted, strokeOpacity: 0.3, vertical: false }), _jsx(XAxis, { dataKey: xKey, type: 'number',
|
|
27
27
|
// An epoch-ms axis must be scaled by TIME, not by index: with gaps
|
|
28
28
|
// (a sleeping host, a paused collector) an index axis draws unequal
|
|
29
29
|
// intervals as equal and silently flattens the hole.
|
|
30
|
-
domain: ['dataMin', 'dataMax'], scale: 'time', ...axisProps(t), tickFormatter: (v) => formatTimeTick(Number(v), includeDate), minTickGap: 32 }), _jsx(YAxis, { ...axisProps(t),
|
|
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 && (_jsxs(_Fragment, { children: [_jsx(Area, { dataKey: band.lowerKey, stackId: 'cb-band', stroke: 'none', fill: 'none', isAnimationActive: false, legendType: 'none', tooltipType: 'none' }), _jsx(Area, { dataKey: band.upperKey, stackId: 'cb-band', 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) }), references?.map((r) => (_jsx(ReferenceLine, { y: r.y, stroke: toneColor(t, r.tone ?? 'warning'), strokeDasharray: '4 4', label: r.label ? { value: r.label, fill: t.foregroundMuted, fontSize: 12, position: 'right' } : undefined }, `${r.y}-${r.label ?? ''}`))), series.map((s, i) => {
|
|
31
31
|
const c = seriesColor(t, s, i);
|
|
32
32
|
const common = {
|
|
33
33
|
type: 'monotone',
|
|
34
34
|
dataKey: s.dataKey,
|
|
35
35
|
name: s.name ?? s.dataKey,
|
|
36
36
|
stroke: c,
|
|
37
|
-
strokeWidth:
|
|
37
|
+
strokeWidth: box.stroke,
|
|
38
38
|
isAnimationActive: false,
|
|
39
39
|
...(s.dashed ? { strokeDasharray: '5 4' } : {}),
|
|
40
40
|
// A gap in the data must render as a gap. Without this recharts
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"TimeSeriesChart.js","sourceRoot":"","sources":["../../../src/react/charts/TimeSeriesChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Width tiers of the chart's CONTAINER (not the viewport — a chart in a narrow pane on a
|
|
2
|
+
* wide screen is a phone-sized chart). */
|
|
3
|
+
export type ChartTier = 'phone' | 'desktop' | 'wide';
|
|
4
|
+
export interface ChartBox {
|
|
5
|
+
tier: ChartTier;
|
|
6
|
+
/** The container's measured width in px (0 before the first measure). */
|
|
7
|
+
width: number;
|
|
8
|
+
/** The plot height the frame claims. */
|
|
9
|
+
height: number;
|
|
10
|
+
/** Series stroke width: heavier on a wide screen, lighter on a phone (CHT-6). */
|
|
11
|
+
stroke: number;
|
|
12
|
+
/** How many y ticks to aim for — fewer gridlines on a phone (CHT-6). */
|
|
13
|
+
tickCount: number;
|
|
14
|
+
/** Axis tick font size in px. */
|
|
15
|
+
tickFontSize: number;
|
|
16
|
+
/** Scale a chart's own `minTickGap` for the tier — x labels thin out on a phone. */
|
|
17
|
+
gap: (base: number) => number;
|
|
18
|
+
/** True inside a `ChartCard` that draws the legend in its header (CHT-2) — the chart then
|
|
19
|
+
* leaves its own legend off, so the plot keeps its height. */
|
|
20
|
+
legendInHeader: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** Below this container width a chart is phone-shaped. */
|
|
23
|
+
export declare const CHART_PHONE_MAX = 560;
|
|
24
|
+
/** At or above this container width a chart is wide-screen-shaped (a `wide` 1536px page on a
|
|
25
|
+
* 2,560px monitor lands here; a `dashboard` 1152px page does not). */
|
|
26
|
+
export declare const CHART_WIDE_MIN = 1280;
|
|
27
|
+
/** The frame never gets shorter or taller than these, whatever the aspect says. */
|
|
28
|
+
export declare const CHART_MIN_HEIGHT = 160;
|
|
29
|
+
export declare const CHART_MAX_HEIGHT = 400;
|
|
30
|
+
/** Before the first measure — the height every chart used to hard-code. */
|
|
31
|
+
export declare const CHART_FALLBACK_HEIGHT = 240;
|
|
32
|
+
export declare function chartTier(width: number): ChartTier;
|
|
33
|
+
/** CHT-1: 4:3 on a phone, about 2:1 on a desktop, about 3:1 on a very wide screen. */
|
|
34
|
+
export declare function chartAspect(tier: ChartTier): number;
|
|
35
|
+
/** The frame's height at a width — the aspect, clamped so a chart is never a sliver or a wall. */
|
|
36
|
+
export declare function chartHeight(width: number): number;
|
|
37
|
+
export declare function chartBox(width: number, options?: {
|
|
38
|
+
height?: number;
|
|
39
|
+
legendInHeader?: boolean;
|
|
40
|
+
}): ChartBox;
|
|
41
|
+
/** Set by `ChartCard` around its body — read by `ChartFrame`. */
|
|
42
|
+
export declare const ChartCardContext: import("react").Context<{
|
|
43
|
+
legendInHeader: boolean;
|
|
44
|
+
height?: number;
|
|
45
|
+
} | null>;
|
|
46
|
+
//# sourceMappingURL=chartBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartBox.d.ts","sourceRoot":"","sources":["../../../src/react/charts/chartBox.ts"],"names":[],"mappings":"AAOA;2CAC2C;AAC3C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B;mEAC+D;IAC/D,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,0DAA0D;AAC1D,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC;uEACuE;AACvE,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAIlD;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEnD;AAED,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,QAAQ,CAY7G;AAED,iEAAiE;AACjE,eAAO,MAAM,gBAAgB;oBAAmC,OAAO;aAAW,MAAM;SAAgB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createContext } from 'react';
|
|
2
|
+
/** Below this container width a chart is phone-shaped. */
|
|
3
|
+
export const CHART_PHONE_MAX = 560;
|
|
4
|
+
/** At or above this container width a chart is wide-screen-shaped (a `wide` 1536px page on a
|
|
5
|
+
* 2,560px monitor lands here; a `dashboard` 1152px page does not). */
|
|
6
|
+
export const CHART_WIDE_MIN = 1280;
|
|
7
|
+
/** The frame never gets shorter or taller than these, whatever the aspect says. */
|
|
8
|
+
export const CHART_MIN_HEIGHT = 160;
|
|
9
|
+
export const CHART_MAX_HEIGHT = 400;
|
|
10
|
+
/** Before the first measure — the height every chart used to hard-code. */
|
|
11
|
+
export const CHART_FALLBACK_HEIGHT = 240;
|
|
12
|
+
export function chartTier(width) {
|
|
13
|
+
if (width > 0 && width < CHART_PHONE_MAX)
|
|
14
|
+
return 'phone';
|
|
15
|
+
if (width >= CHART_WIDE_MIN)
|
|
16
|
+
return 'wide';
|
|
17
|
+
return 'desktop';
|
|
18
|
+
}
|
|
19
|
+
/** CHT-1: 4:3 on a phone, about 2:1 on a desktop, about 3:1 on a very wide screen. */
|
|
20
|
+
export function chartAspect(tier) {
|
|
21
|
+
return tier === 'phone' ? 4 / 3 : tier === 'wide' ? 3 : 2;
|
|
22
|
+
}
|
|
23
|
+
/** The frame's height at a width — the aspect, clamped so a chart is never a sliver or a wall. */
|
|
24
|
+
export function chartHeight(width) {
|
|
25
|
+
if (width <= 0)
|
|
26
|
+
return CHART_FALLBACK_HEIGHT;
|
|
27
|
+
const h = Math.round(width / chartAspect(chartTier(width)));
|
|
28
|
+
return Math.min(CHART_MAX_HEIGHT, Math.max(CHART_MIN_HEIGHT, h));
|
|
29
|
+
}
|
|
30
|
+
export function chartBox(width, options = {}) {
|
|
31
|
+
const tier = chartTier(width);
|
|
32
|
+
return {
|
|
33
|
+
tier,
|
|
34
|
+
width,
|
|
35
|
+
height: options.height ?? chartHeight(width),
|
|
36
|
+
stroke: tier === 'phone' ? 1.5 : tier === 'wide' ? 2.5 : 2,
|
|
37
|
+
tickCount: tier === 'phone' ? 3 : 5,
|
|
38
|
+
tickFontSize: tier === 'wide' ? 13 : 12,
|
|
39
|
+
gap: (base) => (tier === 'phone' ? base * 2 : base),
|
|
40
|
+
legendInHeader: options.legendInHeader ?? false,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** Set by `ChartCard` around its body — read by `ChartFrame`. */
|
|
44
|
+
export const ChartCardContext = createContext(null);
|
|
45
|
+
//# sourceMappingURL=chartBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartBox.js","sourceRoot":"","sources":["../../../src/react/charts/chartBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA8BtC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC;uEACuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AACnC,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AACpC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,eAAe;QAAE,OAAO,OAAO,CAAC;IACzD,IAAI,KAAK,IAAI,cAAc;QAAE,OAAO,MAAM,CAAC;IAC3C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,IAAe;IACzC,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,qBAAqB,CAAC;IAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,UAAyD,EAAE;IACjG,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO;QACL,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC;QAC5C,MAAM,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,SAAS,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,YAAY,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACvC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK;KAChD,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAsD,IAAI,CAAC,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { AreaChart, type AreaChartProps } from './AreaChart.js';
|
|
2
2
|
export { BarChart, type BarChartProps } from './BarChart.js';
|
|
3
3
|
export { CATEGORICAL_CEILING, CATEGORICAL_ORDER, categoricalColor, foldToOther, hexToRgb, sequentialStep, } from './categorical.js';
|
|
4
|
+
export { ChartCard, type ChartCardLegendItem, type ChartCardProps } from './ChartCard.js';
|
|
5
|
+
export { type ChartBox, type ChartTier, chartHeight } from './chartBox.js';
|
|
4
6
|
export { ChartFrame, type ChartFrameProps } from './ChartFrame.js';
|
|
5
7
|
export { ChartLegend, type ChartLegendProps, legendContent } from './ChartLegend.js';
|
|
6
8
|
export { ChartTooltip, type ChartTooltipProps, tooltipContent } from './ChartTooltip.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/charts/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzF,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,QAAQ,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/charts/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzF,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,SAAS,EACT,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,QAAQ,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
export { AreaChart } from './AreaChart.js';
|
|
12
12
|
export { BarChart } from './BarChart.js';
|
|
13
13
|
export { CATEGORICAL_CEILING, CATEGORICAL_ORDER, categoricalColor, foldToOther, hexToRgb, sequentialStep, } from './categorical.js';
|
|
14
|
+
export { ChartCard } from './ChartCard.js';
|
|
15
|
+
export { chartHeight } from './chartBox.js';
|
|
14
16
|
export { ChartFrame } from './ChartFrame.js';
|
|
15
17
|
export { ChartLegend, legendContent } from './ChartLegend.js';
|
|
16
18
|
export { ChartTooltip, tooltipContent } from './ChartTooltip.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/charts/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,gFAAgF;AAChF,sFAAsF;AACtF,mFAAmF;AACnF,sFAAsF;AACtF,gFAAgF;AAChF,yDAAyD;AACzD,sEAAsE;AACtE,sFAAsF;AACtF,6DAA6D;AAE7D,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAyB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,YAAY,EAA0B,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzF,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,YAAY,EAGZ,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAEhB,SAAS,GAGV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,UAAU,EAEV,QAAQ,GAGT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAA8C,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAIL,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAwC,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAqC,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAGL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/charts/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,gFAAgF;AAChF,sFAAsF;AACtF,mFAAmF;AACnF,sFAAsF;AACtF,gFAAgF;AAChF,yDAAyD;AACzD,sEAAsE;AACtE,sFAAsF;AACtF,6DAA6D;AAE7D,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAiD,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAiC,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAyB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,YAAY,EAA0B,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzF,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,YAAY,EAGZ,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAEhB,SAAS,GAGV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,UAAU,EAEV,QAAQ,GAGT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAA8C,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAIL,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAwC,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAqC,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAGL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ChartBox } from './chartBox.js';
|
|
1
2
|
import { type ChartTokens, type ChartTone } from './tokens.js';
|
|
2
3
|
/** A row of chart data — string/number cells keyed by the x-axis + series dataKeys. */
|
|
3
4
|
export type ChartDatum = Record<string, string | number | null | undefined>;
|
|
@@ -16,8 +17,9 @@ export type ChartSeries = {
|
|
|
16
17
|
export declare const seriesColor: (t: ChartTokens, item: {
|
|
17
18
|
tone?: ChartTone;
|
|
18
19
|
}, i: number) => string;
|
|
19
|
-
/** Shared cartesian-axis styling so every chart's ticks/lines read identically
|
|
20
|
-
|
|
20
|
+
/** Shared cartesian-axis styling so every chart's ticks/lines read identically — scaled to the
|
|
21
|
+
* frame's box when one is given (CHT-6: a larger tick on a wide screen). */
|
|
22
|
+
export declare const axisProps: (t: ChartTokens, box?: ChartBox) => {
|
|
21
23
|
stroke: string;
|
|
22
24
|
tick: {
|
|
23
25
|
fill: string;
|
|
@@ -25,6 +27,15 @@ export declare const axisProps: (t: ChartTokens) => {
|
|
|
25
27
|
};
|
|
26
28
|
tickLine: boolean;
|
|
27
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* The value axis's tick formatter and density for the box (CHT-6): fewer ticks on a phone,
|
|
32
|
+
* and an abbreviated number there ("12.4k") when the caller gave no formatter of its own — a
|
|
33
|
+
* phone-width y axis has no room for "12,400".
|
|
34
|
+
*/
|
|
35
|
+
export declare const valueAxisProps: (box: ChartBox, valueFormatter?: (value: number) => string) => {
|
|
36
|
+
tickCount: number;
|
|
37
|
+
tickFormatter: ((n: number) => string) | undefined;
|
|
38
|
+
};
|
|
28
39
|
/** A stable, collision-free SVG id for a chart's per-instance `<linearGradient>`. */
|
|
29
40
|
export declare const useGradientId: () => string;
|
|
30
41
|
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/react/charts/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAa,MAAM,aAAa,CAAC;AAE1E,uFAAuF;AACvF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE5E,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG;IACxB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,WAAW,GAAI,GAAG,WAAW,EAAE,MAAM;IAAE,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,GAAG,MAAM,KAAG,MACf,CAAC;AAEtE
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/react/charts/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAa,MAAM,aAAa,CAAC;AAE1E,uFAAuF;AACvF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE5E,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG;IACxB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,WAAW,GAAI,GAAG,WAAW,EAAE,MAAM;IAAE,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,GAAG,MAAM,KAAG,MACf,CAAC;AAEtE;6EAC6E;AAC7E,eAAO,MAAM,SAAS,GAAI,GAAG,WAAW,EAAE,MAAM,QAAQ;;;;;;;CAItD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM;;;CAGtF,CAAC;AAEH,qFAAqF;AACrF,eAAO,MAAM,aAAa,QAAO,MAA2C,CAAC"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import { useId } from 'react';
|
|
2
|
+
import { formatNumber } from './format.js';
|
|
2
3
|
import { toneColor } from './tokens.js';
|
|
3
4
|
/** Positional categorical color, or the item's explicit semantic tone. */
|
|
4
5
|
export const seriesColor = (t, item, i) => item.tone ? toneColor(t, item.tone) : t.series[i % t.series.length];
|
|
5
|
-
/** Shared cartesian-axis styling so every chart's ticks/lines read identically
|
|
6
|
-
|
|
6
|
+
/** Shared cartesian-axis styling so every chart's ticks/lines read identically — scaled to the
|
|
7
|
+
* frame's box when one is given (CHT-6: a larger tick on a wide screen). */
|
|
8
|
+
export const axisProps = (t, box) => ({
|
|
7
9
|
stroke: t.border,
|
|
8
|
-
tick: { fill: t.foregroundMuted, fontSize: 12 },
|
|
10
|
+
tick: { fill: t.foregroundMuted, fontSize: box?.tickFontSize ?? 12 },
|
|
9
11
|
tickLine: false,
|
|
10
12
|
});
|
|
13
|
+
/**
|
|
14
|
+
* The value axis's tick formatter and density for the box (CHT-6): fewer ticks on a phone,
|
|
15
|
+
* and an abbreviated number there ("12.4k") when the caller gave no formatter of its own — a
|
|
16
|
+
* phone-width y axis has no room for "12,400".
|
|
17
|
+
*/
|
|
18
|
+
export const valueAxisProps = (box, valueFormatter) => ({
|
|
19
|
+
tickCount: box.tickCount,
|
|
20
|
+
tickFormatter: valueFormatter ?? (box.tier === 'phone' ? formatNumber : undefined),
|
|
21
|
+
});
|
|
11
22
|
/** A stable, collision-free SVG id for a chart's per-instance `<linearGradient>`. */
|
|
12
23
|
export const useGradientId = () => `cb-${useId().replace(/:/g, '')}`;
|
|
13
24
|
//# sourceMappingURL=shared.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/react/charts/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/react/charts/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAoC,SAAS,EAAE,MAAM,aAAa,CAAC;AAiB1E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAc,EAAE,IAA0B,EAAE,CAAS,EAAU,EAAE,CAC3F,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEtE;6EAC6E;AAC7E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAc,EAAE,GAAc,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM;IAChB,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,IAAI,EAAE,EAAE;IACpE,QAAQ,EAAE,KAAK;CAChB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAa,EAAE,cAA0C,EAAE,EAAE,CAAC,CAAC;IAC5F,SAAS,EAAE,GAAG,CAAC,SAAS;IACxB,aAAa,EAAE,cAAc,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;CACnF,CAAC,CAAC;AAEH,qFAAqF;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAW,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC"}
|
|
@@ -26,10 +26,10 @@ function AttachmentChip({ attachment, onDelete, }) {
|
|
|
26
26
|
// way there's nothing to link/preview, so render a flat placeholder rather than a
|
|
27
27
|
// broken image or a dead link (orchai-19).
|
|
28
28
|
if (attachment.deleted || !attachment.url) {
|
|
29
|
-
return (_jsxs("div", { className: cn('flex min-h-
|
|
29
|
+
return (_jsxs("div", { className: cn('flex min-h-11 items-center gap-2 rounded-md border border-border/40', 'bg-background/30 px-3 py-2 text-sm text-muted-foreground italic backdrop-blur-sm'), children: [_jsx(FileX, { className: 'h-4 w-4 shrink-0', "aria-hidden": 'true' }), _jsx("span", { className: 'min-w-0 truncate', children: attachment.deleted ? 'File deleted' : attachment.name })] }));
|
|
30
30
|
}
|
|
31
31
|
const isImage = attachment.mimeType?.startsWith('image/');
|
|
32
|
-
return (_jsxs("div", { className: cn('group flex min-h-
|
|
32
|
+
return (_jsxs("div", { className: cn('group flex min-h-11 items-center gap-2 rounded-md border border-border/40', 'bg-background/30 px-3 py-2 text-sm backdrop-blur-sm hover:bg-background/50'), children: [_jsxs("a", { href: attachment.url, target: '_blank', rel: 'noopener noreferrer', className: cn('flex min-w-0 flex-1 items-center gap-2', 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring'), children: [isImage ? (_jsx("img", { src: attachment.url, alt: attachment.name, className: 'h-8 w-8 rounded object-cover' })) : (_jsx(FileText, { className: 'h-4 w-4 shrink-0', "aria-hidden": 'true' })), _jsxs("span", { className: 'min-w-0', children: [_jsx("span", { className: 'block truncate font-medium', children: attachment.name }), attachment.sizeBytes != null && (_jsx("span", { className: 'block text-xs opacity-70', children: formatBytes(attachment.sizeBytes) }))] }), _jsx(Paperclip, { className: 'ml-1 h-3 w-3 shrink-0 opacity-50', "aria-hidden": 'true' })] }), _jsx(FileActions, { url: attachment.url, filename: attachment.name, mimeType: attachment.mimeType }), onDelete && (_jsx(DeleteButton, { iconOnly: true, size: 'sm', itemLabel: 'file', tooltip: 'Delete this file', onDelete: () => onDelete(attachment) }))] }));
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* A single chat message bubble.
|
|
@@ -47,9 +47,9 @@ export function Bubble({ message, variant = 'other', format = 'plain', grouped =
|
|
|
47
47
|
if (isSystem) {
|
|
48
48
|
return (_jsx("div", { className: cn('px-4 py-0.5 text-center text-xs italic text-muted-foreground', className), children: message.deleted ? _jsx("span", { className: 'opacity-60', children: "Message deleted" }) : message.body }));
|
|
49
49
|
}
|
|
50
|
-
const bubbleClasses = cn('relative max-w-
|
|
50
|
+
const bubbleClasses = cn('relative max-w-4/5 rounded-2xl px-3.5 py-2.5 text-sm leading-relaxed', isOwn
|
|
51
51
|
? ['bg-accent-solid text-white', grouped ? 'rounded-br-md' : 'rounded-br-sm']
|
|
52
52
|
: ['bg-muted text-foreground', grouped ? 'rounded-bl-md' : 'rounded-bl-sm']);
|
|
53
|
-
return (_jsxs("div", { className: cn('flex max-w-full flex-col gap-1', isOwn ? 'items-end' : 'items-start', className), children: [_jsxs("div", { className: bubbleClasses, children: [message.deleted ? (_jsx("span", { className: 'italic opacity-60', children: "This message was deleted" })) : message.streaming && !message.body ? (_jsx(StreamingDots, {})) : format === 'markdown' ? (_jsxs(_Fragment, { children: [_jsx(Markdown, { text: message.body }), message.streaming && _jsx(StreamingDots, {})] })) : (_jsxs("span", { className: 'whitespace-pre-wrap break-words', children: [message.body, message.streaming && _jsx(StreamingDots, {})] })), message.edited && !message.deleted && (_jsx("span", { className: 'ml-1 text-xs opacity-60', children: "(edited)" })), isOwn && message.status && !message.streaming && (_jsx("span", { className: 'ml-1.5 inline-flex items-center opacity-70', children: STATUS_ICON[message.status] }))] }), (copyable || meta) && !message.streaming && !message.deleted && (_jsxs("div", { className: cn('flex items-center gap-1 px-1', isOwn ? 'flex-row-reverse' : 'flex-row'), children: [copyable && (_jsx(CopyButton, { value: message.body, label: 'Copy full response', confirmToast: false, iconSize: 13, className: '-mx-0.5' })), meta && (_jsx("div", { "data-cb-bubble-meta": '', className: cn('text-caption leading-tight text-muted-foreground', isOwn ? 'text-right' : 'text-left'), children: meta }))] })), message.attachments && message.attachments.length > 0 && (_jsx("div", { className: cn('flex w-full max-w-
|
|
53
|
+
return (_jsxs("div", { className: cn('flex max-w-full flex-col gap-1', isOwn ? 'items-end' : 'items-start', className), children: [_jsxs("div", { className: bubbleClasses, children: [message.deleted ? (_jsx("span", { className: 'italic opacity-60', children: "This message was deleted" })) : message.streaming && !message.body ? (_jsx(StreamingDots, {})) : format === 'markdown' ? (_jsxs(_Fragment, { children: [_jsx(Markdown, { text: message.body }), message.streaming && _jsx(StreamingDots, {})] })) : (_jsxs("span", { className: 'whitespace-pre-wrap break-words', children: [message.body, message.streaming && _jsx(StreamingDots, {})] })), message.edited && !message.deleted && (_jsx("span", { className: 'ml-1 text-xs opacity-60', children: "(edited)" })), isOwn && message.status && !message.streaming && (_jsx("span", { className: 'ml-1.5 inline-flex items-center opacity-70', children: STATUS_ICON[message.status] }))] }), (copyable || meta) && !message.streaming && !message.deleted && (_jsxs("div", { className: cn('flex items-center gap-1 px-1', isOwn ? 'flex-row-reverse' : 'flex-row'), children: [copyable && (_jsx(CopyButton, { value: message.body, label: 'Copy full response', confirmToast: false, iconSize: 13, className: '-mx-0.5' })), meta && (_jsx("div", { "data-cb-bubble-meta": '', className: cn('text-caption leading-tight text-muted-foreground', isOwn ? 'text-right' : 'text-left'), children: meta }))] })), message.attachments && message.attachments.length > 0 && (_jsx("div", { className: cn('flex w-full max-w-4/5 flex-col gap-1.5', isOwn ? 'items-end' : 'items-start'), children: message.attachments.map((a) => (_jsx("div", { className: 'w-full max-w-xs', children: _jsx(AttachmentChip, { attachment: a, onDelete: onDeleteAttachment }) }, a.id))) })), message.reactions && (_jsx(ReactionBar, { emojis: message.reactions.emojis, myReaction: message.reactions.myReaction, onReact: (emoji) => onReact?.(emoji), className: 'mt-0.5' })), isOwn && message.status === 'failed' && onRetry && (_jsx(Button, { variant: 'link', size: 'sm', tooltip: 'Retry sending this message', onClick: onRetry, leftIcon: _jsx(RefreshCw, { className: 'h-3 w-3', "aria-hidden": 'true' }), className: 'min-h-11 text-xs text-destructive', children: "Tap to retry" }))] }));
|
|
54
54
|
}
|
|
55
55
|
//# sourceMappingURL=Bubble.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bubble.js","sourceRoot":"","sources":["../../../src/react/chat/Bubble.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAElG,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,iFAAiF;AAEjF,MAAM,WAAW,GAAqC;IACpD,OAAO,EAAE,KAAC,KAAK,IAAC,SAAS,EAAC,SAAS,gBAAY,SAAS,GAAG;IAC3D,IAAI,EAAE,KAAC,KAAK,IAAC,SAAS,EAAC,SAAS,gBAAY,MAAM,GAAG;IACrD,SAAS,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,gBAAY,WAAW,GAAG;IACpE,IAAI,EAAE,KAAC,UAAU,IAAC,SAAS,EAAC,qBAAqB,gBAAY,MAAM,GAAG;IACtE,MAAM,EAAE,KAAC,CAAC,IAAC,SAAS,EAAC,0BAA0B,gBAAY,gBAAgB,GAAG;CAC/E,CAAC;AAEF,iFAAiF;AAEjF,SAAS,aAAa;IACpB,OAAO,CACL,eAAM,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,sCAAsC,gBAAY,QAAQ,YAClF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB,eAEE,SAAS,EAAC,iEAAiE,EAC3E,KAAK,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,IAFpC,CAAC,CAGN,CACH,CAAC,GACG,CACR,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,cAAc,CAAC,EACtB,UAAU,EACV,QAAQ,GAIT;IACC,uFAAuF;IACvF,kFAAkF;IAClF,2CAA2C;IAC3C,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAC1C,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,
|
|
1
|
+
{"version":3,"file":"Bubble.js","sourceRoot":"","sources":["../../../src/react/chat/Bubble.tsx"],"names":[],"mappings":"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"}
|
|
@@ -91,6 +91,6 @@ export function MessageScroller({ children, onLoadMore, loadingMore = false, loa
|
|
|
91
91
|
}
|
|
92
92
|
prevScrollHeightRef.current = newHeight;
|
|
93
93
|
});
|
|
94
|
-
return (_jsxs("div", { className: cn('relative flex min-h-0 flex-1 flex-col', className), children: [_jsxs(ScrollArea, { scrollRef: scrollRef, space: 'none', safeArea: false, onScroll: handleScroll, className: 'flex-1', children: [loadingMore && (_jsxs("div", { role: 'status', className: 'flex justify-center py-3', "aria-live": 'polite', children: [_jsx(Spinner, { size: 'sm' }), _jsx("span", { className: 'sr-only', children: "Loading older messages" })] })), children, _jsx("div", { className: cn('shrink-0', showScrollBtn ? 'h-16' : 'h-2'), "aria-hidden": 'true' })] }), showScrollBtn && (_jsxs(_Fragment, { children: [_jsx("div", { "aria-hidden": 'true', className: 'pointer-events-none absolute inset-x-0 bottom-0 z-[9] h-16 bg-gradient-to-t from-surface to-transparent' }), _jsx(Button, { variant: 'secondary', onClick: () => scrollToBottom(), "aria-label": 'Jump to latest message', tooltip: 'Jump to the latest message', leftIcon: _jsx(ChevronDown, { className: 'h-3.5 w-3.5', "aria-hidden": 'true' }), className: cn('absolute bottom-3 left-1/2 z-10 -translate-x-1/2', 'min-h-
|
|
94
|
+
return (_jsxs("div", { className: cn('relative flex min-h-0 flex-1 flex-col', className), children: [_jsxs(ScrollArea, { scrollRef: scrollRef, space: 'none', safeArea: false, onScroll: handleScroll, className: 'flex-1', children: [loadingMore && (_jsxs("div", { role: 'status', className: 'flex justify-center py-3', "aria-live": 'polite', children: [_jsx(Spinner, { size: 'sm' }), _jsx("span", { className: 'sr-only', children: "Loading older messages" })] })), children, _jsx("div", { className: cn('shrink-0', showScrollBtn ? 'h-16' : 'h-2'), "aria-hidden": 'true' })] }), showScrollBtn && (_jsxs(_Fragment, { children: [_jsx("div", { "aria-hidden": 'true', className: 'pointer-events-none absolute inset-x-0 bottom-0 z-[9] h-16 bg-gradient-to-t from-surface to-transparent' }), _jsx(Button, { variant: 'secondary', onClick: () => scrollToBottom(), "aria-label": 'Jump to latest message', tooltip: 'Jump to the latest message', leftIcon: _jsx(ChevronDown, { className: 'h-3.5 w-3.5', "aria-hidden": 'true' }), className: cn('absolute bottom-3 left-1/2 z-10 -translate-x-1/2', 'min-h-11 rounded-full border-border bg-surface px-4 py-2 text-xs font-medium text-foreground shadow-overlay'), children: "Jump to latest" })] }))] }));
|
|
95
95
|
}
|
|
96
96
|
//# sourceMappingURL=MessageScroller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageScroller.js","sourceRoot":"","sources":["../../../src/react/chat/MessageScroller.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MessageScroller.js","sourceRoot":"","sources":["../../../src/react/chat/MessageScroller.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBar.d.ts","sourceRoot":"","sources":["../../../src/react/components/ActionBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ActionBar.d.ts","sourceRoot":"","sources":["../../../src/react/components/ActionBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK3E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,iBAAiB,+BAetE;AAED,MAAM,WAAW,cAAc;IAC7B;+EAC2E;IAC3E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,qBAAqB;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gFAAgF;IAChF,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,cAAc,+BA6ChB;AAmBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,sCAe3D"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Children, Fragment, isValidElement } from 'react';
|
|
3
3
|
import { useMediaQuery } from '../hooks/useMediaQuery.js';
|
|
4
4
|
import { cn } from '../lib/cn.js';
|
|
5
|
+
import { devWarnOnce } from '../lib/devWarn.js';
|
|
5
6
|
const MOBILE_QUERY = '(max-width: 639px)';
|
|
6
7
|
const MOBILE_CHROME = 'sticky bottom-0 z-40 flex flex-col gap-2 border-t border-border bg-background/95 px-4 pt-3 backdrop-blur';
|
|
7
8
|
// Home-indicator clearance (fixed CSS expression, needs the env() literal).
|
|
@@ -49,6 +50,10 @@ export function FooterChrome({ children, className }) {
|
|
|
49
50
|
*/
|
|
50
51
|
export function ActionBar({ primary, secondary, destructive, children, className, }) {
|
|
51
52
|
const isMobile = useMediaQuery(MOBILE_QUERY);
|
|
53
|
+
if (hasPrimaryChild(children)) {
|
|
54
|
+
devWarnOnce('ActionBar:primary-child', 'cursedbelt: <ActionBar> was given a variant="primary" Button as a CHILD — children sit on the left, ' +
|
|
55
|
+
'so the hero action lands far from the bottom-right (FRM-13). Pass it as `primary={…}`.');
|
|
56
|
+
}
|
|
52
57
|
if (isMobile) {
|
|
53
58
|
return (_jsxs("div", { "data-cb-action-bar": 'mobile', className: cn(MOBILE_CHROME, MOBILE_SAFE_AREA, className),
|
|
54
59
|
// Rides above the soft keyboard. Inline because it's a live custom-property value
|
|
@@ -83,6 +88,63 @@ function ownsFooterChrome(node) {
|
|
|
83
88
|
export function FooterSlot({ footer }) {
|
|
84
89
|
if (footer === null || footer === undefined || footer === false)
|
|
85
90
|
return null;
|
|
86
|
-
|
|
91
|
+
if (ownsFooterChrome(footer)) {
|
|
92
|
+
return (_jsx("div", { className: 'flex-none', "data-cb-footer-slot": 'action-bar', children: footer }));
|
|
93
|
+
}
|
|
94
|
+
const ordered = orderFooterButtons(footer);
|
|
95
|
+
return (_jsx("div", { className: 'flex-none', "data-cb-footer-slot": ordered ? 'ordered' : 'wrapped', children: ordered ?? _jsx(FooterChrome, { children: footer }) }));
|
|
96
|
+
}
|
|
97
|
+
/** What a footer button is, by its variant — or, for `DeleteButton`, by its static `footerRole`. */
|
|
98
|
+
function footerRole(node) {
|
|
99
|
+
if (!isValidElement(node))
|
|
100
|
+
return null;
|
|
101
|
+
const marked = node.type.footerRole;
|
|
102
|
+
if (marked)
|
|
103
|
+
return marked;
|
|
104
|
+
const variant = node.props.variant;
|
|
105
|
+
if (variant === 'primary' || variant === 'success-solid')
|
|
106
|
+
return 'primary';
|
|
107
|
+
if (typeof variant === 'string' && variant.startsWith('destructive'))
|
|
108
|
+
return 'destructive';
|
|
109
|
+
return 'other';
|
|
110
|
+
}
|
|
111
|
+
function flattenFooter(node) {
|
|
112
|
+
return Children.toArray(node).flatMap((child) => isValidElement(child) && child.type === Fragment ? flattenFooter(child.props.children) : [child]);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* OVL-2 orders a footer by VARIANT, not by the order the caller wrote it: a destructive action
|
|
116
|
+
* alone on the far left, the primary on the far right, everything else (Cancel) beside the
|
|
117
|
+
* primary. A footer of bare buttons — `<><Button variant='primary'>Save</Button><Button>Cancel
|
|
118
|
+
* </Button></>`, which put Save on the left in vault and desk — is laid out as the
|
|
119
|
+
* {@link ActionBar} it should have been, so it also gets the phone's stacked thumb targets.
|
|
120
|
+
*
|
|
121
|
+
* Only a footer made wholly of elements is reordered, and only when it names a primary or a
|
|
122
|
+
* destructive action; text, or a row with neither, keeps its order inside the plain chrome.
|
|
123
|
+
*/
|
|
124
|
+
function orderFooterButtons(footer) {
|
|
125
|
+
const items = flattenFooter(footer);
|
|
126
|
+
const roles = items.map(footerRole);
|
|
127
|
+
if (items.length < 2 || roles.some((r) => r === null))
|
|
128
|
+
return null;
|
|
129
|
+
if (!roles.some((r) => r === 'primary' || r === 'destructive'))
|
|
130
|
+
return null;
|
|
131
|
+
const pick = (role) => items.filter((_, i) => roles[i] === role);
|
|
132
|
+
const primary = pick('primary');
|
|
133
|
+
const destructive = pick('destructive');
|
|
134
|
+
const others = pick('other');
|
|
135
|
+
// Two primaries is a caller's mistake; the last one written stays the hero, the other
|
|
136
|
+
// waits beside Cancel rather than vanishing.
|
|
137
|
+
const hero = primary.at(-1);
|
|
138
|
+
const secondary = [...others, ...primary.slice(0, -1)];
|
|
139
|
+
return (_jsx(ActionBar, { primary: hero, secondary: secondary.length ? secondary : undefined, destructive: destructive.length ? destructive : undefined }));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* FRM-13 places the primary far right by its SLOT. Children are the left-hand misc group, so a
|
|
143
|
+
* primary passed there would sit beside the destructive action. No caller did on 2026-10-02
|
|
144
|
+
* (forge task 2514); the slot stays the one way, and this keeps it so.
|
|
145
|
+
*/
|
|
146
|
+
function hasPrimaryChild(node) {
|
|
147
|
+
return Children.toArray(node).some((child) => isValidElement(child) &&
|
|
148
|
+
(child.props.variant === 'primary' || (child.type === Fragment && hasPrimaryChild(child.props.children))));
|
|
87
149
|
}
|
|
88
150
|
//# sourceMappingURL=ActionBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBar.js","sourceRoot":"","sources":["../../../src/react/components/ActionBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAkB,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ActionBar.js","sourceRoot":"","sources":["../../../src/react/components/ActionBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export function AddItemsMenu({ items, groups, onAdd, itemKey, itemLabel, itemDes
|
|
|
19
19
|
// panel is outside the page's ScrollArea and has no keyboard-inset concern); the
|
|
20
20
|
// height cap comes from Radix's reported available height.
|
|
21
21
|
// guardrails-ignore no-raw-overflow: floating popover panel outside the page's ScrollArea, height-capped by Radix — no keyboard-inset concern.
|
|
22
|
-
className: cn('max-h-[var(--radix-popover-content-available-height)] w-64 max-w-[
|
|
22
|
+
className: cn('max-h-[var(--radix-popover-content-available-height)] w-64 max-w-[var(--overlay-max-w)] overflow-y-auto p-0'), trigger: _jsx(Button, { variant: buttonVariant, size: buttonSize, leftIcon: icon, disabled: disabled, tooltip: label, className: cn('inline-flex', className), children: showCount ? `${label} (${count})` : label }), children: _jsx("div", { className: 'py-1 text-sm', children: count === 0 ? (_jsx("p", { className: 'px-3 py-2 text-muted-foreground', children: emptyLabel })) : (resolvedGroups.map((group, gi) => (_jsxs("div", { children: [group.label ? (_jsx("p", { className: 'cb-meta-label px-3 pt-2 pb-1', children: group.label })) : null, group.items.map((item) => (_jsxs("button", {
|
|
23
23
|
// guardrails-ignore no-raw-action-button: selects an item to add — a
|
|
24
24
|
// menu-row list item (mirrors the "selects X — navigation" idiom), not
|
|
25
25
|
// a destructive/mutating action; Button's centered/rounded chrome
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddItemsMenu.js","sourceRoot":"","sources":["../../../src/react/components/AddItemsMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAuC,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAkCvC;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAI,EAC9B,KAAK,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACP,SAAS,EACT,eAAe,EACf,KAAK,GAAG,KAAK,EACb,SAAS,GAAG,KAAK,EACjB,IAAI,GAAG,GAAG,EACV,aAAa,GAAG,WAAW,EAC3B,UAAU,GAAG,IAAI,EACjB,KAAK,GAAG,OAAO,EACf,SAAS,EACT,UAAU,GAAG,gBAAgB,EAC7B,QAAQ,EACR,SAAS,GACY;IACrB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,cAAc,GAAuB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAErE,OAAO,CACL,KAAC,OAAO,IACN,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,OAAO,EACrB,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EACzC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAC3C,UAAU,EAAE,CAAC,EACb,KAAK,EAAE,KAAK;QACZ,+EAA+E;QAC/E,iFAAiF;QACjF,2DAA2D;QAC3D,+IAA+I;QAC/I,SAAS,EAAE,EAAE,CACX,
|
|
1
|
+
{"version":3,"file":"AddItemsMenu.js","sourceRoot":"","sources":["../../../src/react/components/AddItemsMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
2
|
declare const TONE: {
|
|
3
3
|
readonly info: "border-accent/40 bg-accent/5 [&_.alert-icon]:text-accent";
|
|
4
4
|
readonly success: "border-success/40 bg-success/5 [&_.alert-icon]:text-success";
|
|
@@ -20,9 +20,23 @@ export interface AlertProps {
|
|
|
20
20
|
onDismiss?: () => void;
|
|
21
21
|
/** Accessible name for the dismiss ✕ (default "Dismiss"). */
|
|
22
22
|
dismissLabel?: string;
|
|
23
|
+
/**
|
|
24
|
+
* A caveat the reader needs to see ONCE (CPY-2): show a ✕, and once pressed the alert stays
|
|
25
|
+
* gone. With `dismissKey` it stays gone across reloads on this device; without one, until
|
|
26
|
+
* the component unmounts. `onDismiss`, when given too, is still called.
|
|
27
|
+
*/
|
|
28
|
+
dismissible?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Where a `dismissible` alert remembers it was dismissed — one stable name per caveat
|
|
31
|
+
* (`'station:limits-window'`). Change the key when the caveat's text changes enough to be
|
|
32
|
+
* worth reading again.
|
|
33
|
+
*/
|
|
34
|
+
dismissKey?: string;
|
|
23
35
|
className?: string;
|
|
24
36
|
children?: ReactNode;
|
|
25
37
|
}
|
|
26
|
-
|
|
38
|
+
/** The localStorage namespace for a dismissed `Alert`'s `dismissKey`. */
|
|
39
|
+
export declare const ALERT_DISMISS_STORAGE_PREFIX = "cb:alert-dismissed:";
|
|
40
|
+
export declare function Alert({ tone, title, icon, actions, onDismiss, dismissLabel, dismissible, dismissKey, className, children, }: AlertProps): import("react").JSX.Element | null;
|
|
27
41
|
export {};
|
|
28
42
|
//# sourceMappingURL=Alert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/react/components/Alert.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/react/components/Alert.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAUjD,QAAA,MAAM,IAAI;;;;;;CAMA,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,IAAI,CAAC;AAU1C,MAAM,WAAW,UAAU;IACzB,qFAAqF;IACrF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IACzB,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,yEAAyE;AACzE,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAoBlE,wBAAgB,KAAK,CAAC,EACpB,IAAa,EACb,KAAK,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,YAAwB,EACxB,WAAmB,EACnB,UAAU,EACV,SAAS,EACT,QAAQ,GACT,EAAE,UAAU,sCAqCZ"}
|