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,7 +1,8 @@
|
|
|
1
1
|
import { afterEach, describe, expect, test } from 'bun:test';
|
|
2
|
-
import { cleanup, fireEvent, render } from '@testing-library/react';
|
|
2
|
+
import { act, cleanup, fireEvent, render, waitFor } from '@testing-library/react';
|
|
3
3
|
import { createRef } from 'react';
|
|
4
4
|
import type { NavigationModel } from 'cursedbelt-core/navigation';
|
|
5
|
+
import { useCommandSource } from '../palette/commandSources.js';
|
|
5
6
|
import { AppShell } from './AppShell.js';
|
|
6
7
|
|
|
7
8
|
afterEach(cleanup);
|
|
@@ -19,6 +20,21 @@ const nav: NavigationModel = {
|
|
|
19
20
|
],
|
|
20
21
|
};
|
|
21
22
|
|
|
23
|
+
// Station's real places (task 2462 — the scenario NAV-3 was written for), in five sections.
|
|
24
|
+
const SECTIONED: [string, string][] = [
|
|
25
|
+
['Console', 'Operate'], ['Requests', 'Operate'], ['Backup', 'Operate'],
|
|
26
|
+
['Connections', 'Limits'], ['Domains', 'Limits'], ['Offline', 'Limits'],
|
|
27
|
+
['How it is doing', 'Insight'], ['Metrics', 'Insight'], ['Openclaw', 'Insight'],
|
|
28
|
+
['Did we?', 'Records'], ['Data', 'Records'],
|
|
29
|
+
['Vault', 'Settings'], ['Settings', 'Settings'],
|
|
30
|
+
];
|
|
31
|
+
const station: NavigationModel = {
|
|
32
|
+
domains: SECTIONED.map(([label, section]) => {
|
|
33
|
+
const id = label.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
34
|
+
return { id, label, section, icon: 'x', path: `/${id}`, groups: [] };
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
|
|
22
38
|
describe('AppShell', () => {
|
|
23
39
|
test('marks the root and renders routed children inside the ScrollArea', () => {
|
|
24
40
|
const { container } = render(<AppShell>page content</AppShell>);
|
|
@@ -42,18 +58,188 @@ describe('AppShell', () => {
|
|
|
42
58
|
expect(q(container, '[data-cb-nav-backdrop]')).toBeNull();
|
|
43
59
|
});
|
|
44
60
|
|
|
45
|
-
test('
|
|
46
|
-
const { container } = render(<AppShell nav={
|
|
47
|
-
|
|
61
|
+
test('NAV-3 · 6+ places: the sectioned SideNav rail AND the mobile PlaceBar, from one model', () => {
|
|
62
|
+
const { container } = render(<AppShell nav={station}>x</AppShell>);
|
|
63
|
+
expect(q(container, '[data-cb-appshell]')?.dataset.cbNavPattern).toBe('side');
|
|
64
|
+
const rails = qa(container, '[data-cb-nav-rail]');
|
|
65
|
+
expect(rails).toHaveLength(2);
|
|
66
|
+
// The icon rail at md–lg (marked collapsed, so NAV-2 excuses its bare icons), the 240px rail at lg.
|
|
67
|
+
expect(rails[0]?.hasAttribute('data-cb-nav-collapsed')).toBe(true);
|
|
68
|
+
expect(rails[0]?.className).toContain('w-[var(--rail-w-collapsed)]');
|
|
69
|
+
expect(rails[0]?.className).toContain('lg:hidden');
|
|
70
|
+
expect(rails[1]?.className).toContain('w-[var(--rail-w)]');
|
|
71
|
+
expect(rails[1]?.className).toContain('lg:flex');
|
|
72
|
+
// The lg rail renders the sections as labeled headings.
|
|
73
|
+
expect(rails[1]?.textContent).toContain('Operate');
|
|
74
|
+
expect(rails[1]?.textContent).toContain('Records');
|
|
48
75
|
const placebar = q(container, '[data-cb-placebar]');
|
|
49
|
-
expect(rail).not.toBeNull();
|
|
50
|
-
expect(placebar).not.toBeNull();
|
|
51
|
-
// Rail is md+ only (display:none below); PlaceBar is the mobile counterpart.
|
|
52
|
-
expect(rail?.className).toContain('md:flex');
|
|
53
|
-
expect(rail?.className).toContain('hidden');
|
|
54
76
|
expect(placebar?.className).toContain('md:hidden');
|
|
55
|
-
//
|
|
56
|
-
expect(q(
|
|
77
|
+
// Top 4 + More on a phone.
|
|
78
|
+
expect(q(placebar as HTMLElement, '[aria-label^="More places"]')).not.toBeNull();
|
|
79
|
+
// No places in the header — they live in the sidebar.
|
|
80
|
+
expect(q(container, '[data-cb-appheader] [data-cb-topbar-nav]')).toBeNull();
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test('NAV-3 · 2–5 places: labeled places in the header center, no sidebar, every place on the PlaceBar', () => {
|
|
84
|
+
const { container, getAllByRole } = render(
|
|
85
|
+
<AppShell nav={nav} activeHref='/library' onNavigate={() => {}}>
|
|
86
|
+
x
|
|
87
|
+
</AppShell>,
|
|
88
|
+
);
|
|
89
|
+
expect(q(container, '[data-cb-appshell]')?.dataset.cbNavPattern).toBe('top');
|
|
90
|
+
expect(q(container, '[data-cb-nav-rail]')).toBeNull();
|
|
91
|
+
const places = q(container, '[data-cb-header-zone="center"] [data-cb-topbar-nav]');
|
|
92
|
+
expect(places).not.toBeNull();
|
|
93
|
+
expect(places?.hasAttribute('data-cb-primary-nav')).toBe(true);
|
|
94
|
+
// Below 768px the PlaceBar has them, so the header strip hides.
|
|
95
|
+
expect(places?.className).toContain('max-md:hidden');
|
|
96
|
+
const labels = qa(places as HTMLElement, '[data-cb-nav-item] span.md\\:inline').map((s) => s.textContent);
|
|
97
|
+
expect(labels).toEqual(['Today', 'Library', 'People']);
|
|
98
|
+
// Every place on the phone bar — three fit, so no More.
|
|
99
|
+
const placebar = q(container, '[data-cb-placebar]') as HTMLElement;
|
|
100
|
+
expect(q(placebar, '[aria-label^="More places"]')).toBeNull();
|
|
101
|
+
expect(getAllByRole('link', { name: 'Library' }).every((a) => a.getAttribute('aria-current') === 'page')).toBe(true);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
test('a header place routes through onNavigate on a plain click, and leaves a modifier click alone', () => {
|
|
105
|
+
const went: string[] = [];
|
|
106
|
+
const { container } = render(
|
|
107
|
+
<AppShell nav={nav} onNavigate={(p) => went.push(p)}>
|
|
108
|
+
x
|
|
109
|
+
</AppShell>,
|
|
110
|
+
);
|
|
111
|
+
const link = q(container, '[data-cb-topbar-nav] a[href="/people"]') as HTMLElement;
|
|
112
|
+
fireEvent.click(link);
|
|
113
|
+
fireEvent.click(link, { metaKey: true });
|
|
114
|
+
expect(went).toEqual(['/people']);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
test('NAV-1 · the header is --header-h tall with three zones, a 1px bottom border and no shadow', () => {
|
|
118
|
+
const { container } = render(
|
|
119
|
+
<AppShell nav={nav} navHeader={<b>brand</b>} account={<i>me</i>}>
|
|
120
|
+
x
|
|
121
|
+
</AppShell>,
|
|
122
|
+
);
|
|
123
|
+
const header = q(container, '[data-cb-appheader]') as HTMLElement;
|
|
124
|
+
expect(header.className).toContain('h-[var(--header-h)]');
|
|
125
|
+
expect(header.className).toContain('border-b');
|
|
126
|
+
expect(header.className).not.toContain('shadow');
|
|
127
|
+
expect(qa(header, ':scope > [data-cb-header-zone]').map((z) => z.dataset.cbHeaderZone)).toEqual([
|
|
128
|
+
'left',
|
|
129
|
+
'center',
|
|
130
|
+
'right',
|
|
131
|
+
]);
|
|
132
|
+
expect(q(header, '[data-cb-header-zone="right"]')?.className).toContain('shrink-0');
|
|
133
|
+
cleanup();
|
|
134
|
+
const dense = render(
|
|
135
|
+
<AppShell nav={nav} density='dense'>
|
|
136
|
+
x
|
|
137
|
+
</AppShell>,
|
|
138
|
+
);
|
|
139
|
+
expect(q(dense.container, '[data-cb-appheader]')?.className).toContain('h-[var(--header-h-dense)]');
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
test('8+ places with no sections warn in dev; sections silence it', () => {
|
|
143
|
+
const warn = console.warn;
|
|
144
|
+
const said: string[] = [];
|
|
145
|
+
console.warn = (m: string) => said.push(m);
|
|
146
|
+
try {
|
|
147
|
+
const flat: NavigationModel = { domains: station.domains.map(({ section: _s, ...d }) => d) };
|
|
148
|
+
render(<AppShell nav={flat}>x</AppShell>);
|
|
149
|
+
} finally {
|
|
150
|
+
console.warn = warn;
|
|
151
|
+
}
|
|
152
|
+
expect(said.some((m) => m.includes('no sections'))).toBe(true);
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
test('NAV-10 · one banner is one line; two collapse into "N problems · View"', () => {
|
|
156
|
+
const one = render(
|
|
157
|
+
<AppShell nav={nav} banners={[{ id: 'a', message: 'The Mac is asleep.', action: { label: 'Wake it', onClick: () => {} } }]}>
|
|
158
|
+
x
|
|
159
|
+
</AppShell>,
|
|
160
|
+
);
|
|
161
|
+
expect(qa(one.container, '[data-cb-banner]')).toHaveLength(1);
|
|
162
|
+
expect(q(one.container, '[data-cb-banner]')?.textContent).toContain('The Mac is asleep.');
|
|
163
|
+
expect(q(one.container, '[data-cb-banner]')?.textContent).toContain('Wake it');
|
|
164
|
+
cleanup();
|
|
165
|
+
const two = render(
|
|
166
|
+
<AppShell
|
|
167
|
+
nav={nav}
|
|
168
|
+
banners={[
|
|
169
|
+
{ id: 'a', message: 'The Mac is asleep.' },
|
|
170
|
+
{ id: 'b', message: 'A Google sign-in broke.', tone: 'error' },
|
|
171
|
+
]}
|
|
172
|
+
>
|
|
173
|
+
x
|
|
174
|
+
</AppShell>,
|
|
175
|
+
);
|
|
176
|
+
const lane = q(two.container, '[data-cb-banner-lane]') as HTMLElement;
|
|
177
|
+
expect(lane.textContent).toContain('2 problems');
|
|
178
|
+
expect(lane.textContent).not.toContain('The Mac is asleep.');
|
|
179
|
+
fireEvent.click(two.getByRole('button', { name: 'View' }));
|
|
180
|
+
expect(lane.textContent).toContain('The Mac is asleep.');
|
|
181
|
+
expect(lane.textContent).toContain('A Google sign-in broke.');
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
test('NAV-9 · 6+ places mount the palette on ⌘K, preloaded with every place', async () => {
|
|
185
|
+
const went: string[] = [];
|
|
186
|
+
render(
|
|
187
|
+
<AppShell nav={station} onNavigate={(p) => went.push(p)}>
|
|
188
|
+
x
|
|
189
|
+
</AppShell>,
|
|
190
|
+
);
|
|
191
|
+
act(() => {
|
|
192
|
+
fireEvent.keyDown(document.body, { key: 'k', ctrlKey: true });
|
|
193
|
+
});
|
|
194
|
+
const palette = await waitFor(() => {
|
|
195
|
+
const el = document.querySelector<HTMLElement>('[data-cb-command-palette]');
|
|
196
|
+
if (!el) throw new Error('palette not open');
|
|
197
|
+
return el;
|
|
198
|
+
});
|
|
199
|
+
for (const [label] of SECTIONED) expect(palette.textContent).toContain(label);
|
|
200
|
+
// The visible trigger is in the header too: the palette is an accelerator, never the only way.
|
|
201
|
+
expect(document.querySelector('[data-cb-command-trigger]')).not.toBeNull();
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
test('2–5 places mount no palette unless asked', () => {
|
|
205
|
+
const { container } = render(<AppShell nav={nav}>x</AppShell>);
|
|
206
|
+
expect(q(container, '[data-cb-command-trigger]')).toBeNull();
|
|
207
|
+
cleanup();
|
|
208
|
+
const asked = render(
|
|
209
|
+
<AppShell nav={nav} commandPalette>
|
|
210
|
+
x
|
|
211
|
+
</AppShell>,
|
|
212
|
+
);
|
|
213
|
+
// Asked for, its trigger is the square ⌘K button in the locked right zone.
|
|
214
|
+
const trigger = q(asked.container, '[data-cb-header-zone="right"] [data-cb-command-trigger]');
|
|
215
|
+
expect(trigger?.getAttribute('aria-label')).toBe('Search or run a command…');
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
test('a page contributes records to the palette while mounted, and they leave with it', async () => {
|
|
219
|
+
function Page() {
|
|
220
|
+
useCommandSource({ group: 'Requests', items: [{ id: 'r1', label: 'Fix the backup drive', path: '/requests/r1' }] });
|
|
221
|
+
return <p>page</p>;
|
|
222
|
+
}
|
|
223
|
+
function Harness({ show }: { show: boolean }) {
|
|
224
|
+
return (
|
|
225
|
+
<AppShell nav={station} onNavigate={() => {}}>
|
|
226
|
+
{show ? <Page /> : null}
|
|
227
|
+
</AppShell>
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
const view = render(<Harness show />);
|
|
231
|
+
act(() => {
|
|
232
|
+
fireEvent.keyDown(document.body, { key: 'k', ctrlKey: true });
|
|
233
|
+
});
|
|
234
|
+
await waitFor(() => {
|
|
235
|
+
if (!document.querySelector('[data-cb-command-palette]')?.textContent?.includes('Fix the backup drive'))
|
|
236
|
+
throw new Error('source not shown');
|
|
237
|
+
});
|
|
238
|
+
view.rerender(<Harness show={false} />);
|
|
239
|
+
await waitFor(() => {
|
|
240
|
+
if (document.querySelector('[data-cb-command-palette]')?.textContent?.includes('Fix the backup drive'))
|
|
241
|
+
throw new Error('source outlived its page');
|
|
242
|
+
});
|
|
57
243
|
});
|
|
58
244
|
|
|
59
245
|
test('the command spine renders a visible command trigger wired to onOpenCommand', () => {
|
|
@@ -100,7 +286,7 @@ describe('AppShell', () => {
|
|
|
100
286
|
|
|
101
287
|
test('the active place carries aria-current=page in every rail variant and the PlaceBar', () => {
|
|
102
288
|
const { container } = render(
|
|
103
|
-
<AppShell nav={
|
|
289
|
+
<AppShell nav={station} activeHref='/console' onNavigate={() => {}}>
|
|
104
290
|
x
|
|
105
291
|
</AppShell>,
|
|
106
292
|
);
|
|
@@ -108,7 +294,7 @@ describe('AppShell', () => {
|
|
|
108
294
|
const current = qa(container, '[aria-current="page"]');
|
|
109
295
|
expect(current.length).toBe(3);
|
|
110
296
|
const named = (b: HTMLElement) =>
|
|
111
|
-
b.textContent?.includes('
|
|
297
|
+
b.textContent?.includes('Console') || b.getAttribute('aria-label') === 'Console' || b.getAttribute('title') === 'Console';
|
|
112
298
|
expect(current.every(named)).toBe(true);
|
|
113
299
|
});
|
|
114
300
|
|