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":"Grid.d.ts","sourceRoot":"","sources":["../../../src/react/components/Grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAO,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC/D;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../../src/react/components/Grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAO,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC/D;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,GAAG,CAAC;IACV;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAcD;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,EAAE,GAAa,EAAE,GAAO,EAAE,OAAe,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,+BAuB5G"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from '../lib/cn.js';
|
|
3
3
|
import { GAP } from './layout.js';
|
|
4
|
+
// The rule is each column's LEFT border, half a gutter out from its content. The inner
|
|
5
|
+
// grid is pulled out by half a gutter on both sides, so content still aligns with the
|
|
6
|
+
// edges, and the wrapper clips what hangs over — which is exactly the first column of
|
|
7
|
+
// every row's border, wherever the row wraps. The clip margin keeps a focus ring at the
|
|
8
|
+
// edge visible (it is far less than the half gutter the border sits out at).
|
|
9
|
+
const DIVIDED_WRAPPER = 'overflow-x-clip [overflow-clip-margin:calc(var(--spacing)*1)]';
|
|
10
|
+
// The extra 1px on the left is the clipped rule's own width: without it the first
|
|
11
|
+
// column's content would sit a pixel in from the edge every other block lines up on.
|
|
12
|
+
const DIVIDED_GRID = '-ml-[calc(var(--col-gap)/2+1px)] -mr-[calc(var(--col-gap)/2)] gap-x-0 gap-y-[var(--col-gap)] ' +
|
|
13
|
+
'*:border-l *:border-rule *:px-[calc(var(--col-gap)/2)]';
|
|
4
14
|
/**
|
|
5
15
|
* Responsive grid that reflows to its OWN width, not the viewport — so the same
|
|
6
16
|
* markup is 3-up in a wide page, 2-up in a 640px modal, 1-up on a phone, with no
|
|
@@ -9,7 +19,15 @@ import { GAP } from './layout.js';
|
|
|
9
19
|
* than `min`. Sets `@container` on itself so its children can use `@`-container
|
|
10
20
|
* queries keyed to the grid's width (e.g. `<Grid className="@xl:grid-cols-2">`).
|
|
11
21
|
*/
|
|
12
|
-
export function Grid({ min = '16rem', gap = 4, className, style, ...p }) {
|
|
13
|
-
|
|
22
|
+
export function Grid({ min = '16rem', gap = 4, divided = false, className, style, children, ...p }) {
|
|
23
|
+
const gridStyle = { '--cb-grid-min': min };
|
|
24
|
+
const gridClass = cn('@container',
|
|
25
|
+
// Columns in a row stretch to one height (grid's default `stretch`) and a shorter
|
|
26
|
+
// column's spare space sits at its bottom — never padded to fill (LAY-3).
|
|
27
|
+
'grid grid-cols-[repeat(auto-fit,minmax(min(var(--cb-grid-min),100%),1fr))]', divided ? DIVIDED_GRID : GAP[gap]);
|
|
28
|
+
if (divided) {
|
|
29
|
+
return (_jsx("div", { "data-cb-grid-divided": '', style: style, className: cn(DIVIDED_WRAPPER, className), ...p, children: _jsx("div", { style: gridStyle, className: gridClass, children: children }) }));
|
|
30
|
+
}
|
|
31
|
+
return (_jsx("div", { style: { ...style, ...gridStyle }, className: cn(gridClass, className), ...p, children: children }));
|
|
14
32
|
}
|
|
15
33
|
//# sourceMappingURL=Grid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../../src/react/components/Grid.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../../src/react/components/Grid.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,GAAG,EAAY,MAAM,aAAa,CAAC;AAmB5C,uFAAuF;AACvF,sFAAsF;AACtF,sFAAsF;AACtF,wFAAwF;AACxF,6EAA6E;AAC7E,MAAM,eAAe,GAAG,+DAA+D,CAAC;AACxF,kFAAkF;AAClF,qFAAqF;AACrF,MAAM,YAAY,GAChB,+FAA+F;IAC/F,wDAAwD,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAa;IAC3G,MAAM,SAAS,GAAG,EAAE,eAAe,EAAE,GAAG,EAAmB,CAAC;IAC5D,MAAM,SAAS,GAAG,EAAE,CAClB,YAAY;IACZ,kFAAkF;IAClF,0EAA0E;IAC1E,4EAA4E,EAC5E,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAClC,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,sCAA0B,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,KAAM,CAAC,YACzF,cAAK,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,YACxC,QAAQ,GACL,GACF,CACP,CAAC;IACJ,CAAC;IACD,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,KAAM,CAAC,YAC/E,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface GuideRouteProps {
|
|
3
|
+
/** What the guide explains — "How your Google connections work". */
|
|
4
|
+
title: ReactNode;
|
|
5
|
+
/** One line under the title. */
|
|
6
|
+
lede?: ReactNode;
|
|
7
|
+
/** Where "back" goes: the page this guide belongs to. */
|
|
8
|
+
backHref: string;
|
|
9
|
+
/** The name of that page, on the back button ("Connections"). */
|
|
10
|
+
backLabel: string;
|
|
11
|
+
/** Called on the back press — an app whose router is not a plain link navigates here. */
|
|
12
|
+
onBack?: () => void;
|
|
13
|
+
/** The guide: `GuideSection`s, alerts, live steps. */
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
className?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A guide as a page of its own: the back button, the title, then the sections in the reading
|
|
19
|
+
* column. Everything in it counts as prose for the design audit (CPY-1), because this is the
|
|
20
|
+
* place long text is supposed to go.
|
|
21
|
+
*/
|
|
22
|
+
export declare function GuideRoute({ title, lede, backHref, backLabel, onBack, children, className }: GuideRouteProps): import("react").JSX.Element;
|
|
23
|
+
export interface GuideSectionProps {
|
|
24
|
+
title: ReactNode;
|
|
25
|
+
/** One line under the section title. */
|
|
26
|
+
lede?: ReactNode;
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
}
|
|
29
|
+
/** One titled section of a {@link GuideRoute}. */
|
|
30
|
+
export declare function GuideSection({ title, lede, children }: GuideSectionProps): import("react").JSX.Element;
|
|
31
|
+
//# sourceMappingURL=Guide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Guide.d.ts","sourceRoot":"","sources":["../../../src/react/components/Guide.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAmBvC,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,KAAK,EAAE,SAAS,CAAC;IACjB,gCAAgC;IAChC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,sDAAsD;IACtD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,eAAe,+BAe5G;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,SAAS,CAAC;IACjB,wCAAwC;IACxC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,iBAAiB,+BAUxE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowLeft } from 'lucide-react';
|
|
3
|
+
import { cn } from '../lib/cn.js';
|
|
4
|
+
import { ButtonLink } from './ButtonLink.js';
|
|
5
|
+
import { PageHeader, ReadableColumn } from './Page.js';
|
|
6
|
+
/**
|
|
7
|
+
* A guide as a page of its own: the back button, the title, then the sections in the reading
|
|
8
|
+
* column. Everything in it counts as prose for the design audit (CPY-1), because this is the
|
|
9
|
+
* place long text is supposed to go.
|
|
10
|
+
*/
|
|
11
|
+
export function GuideRoute({ title, lede, backHref, backLabel, onBack, children, className }) {
|
|
12
|
+
return (_jsxs(ReadableColumn, { "data-cb-guide-route": '', className: cn('flex flex-col gap-8 px-4 py-6 sm:px-6', className), children: [_jsxs("div", { className: 'flex flex-col gap-3', children: [_jsx("div", { children: _jsxs(ButtonLink, { variant: 'ghost', size: 'sm', to: backHref, onClick: onBack, tooltip: `Back to ${backLabel}`, children: [_jsx(ArrowLeft, { "aria-hidden": true }), backLabel] }) }), _jsx(PageHeader, { title: title, subtitle: lede, className: 'border-b-0 pb-0' })] }), children] }));
|
|
13
|
+
}
|
|
14
|
+
/** One titled section of a {@link GuideRoute}. */
|
|
15
|
+
export function GuideSection({ title, lede, children }) {
|
|
16
|
+
return (_jsxs("section", { className: 'flex flex-col gap-3', children: [_jsxs("div", { children: [_jsx("h2", { className: 'text-h3 font-semibold tracking-tight text-foreground', children: title }), lede ? _jsx("p", { className: 'mt-0.5 text-sm text-muted-foreground', children: lede }) : null] }), _jsx("div", { className: 'flex flex-col gap-3 text-sm leading-relaxed text-foreground', children: children })] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=Guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Guide.js","sourceRoot":"","sources":["../../../src/react/components/Guide.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAgCvD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAmB;IAC3G,OAAO,CACL,MAAC,cAAc,2BAAqB,EAAE,EAAC,SAAS,EAAE,EAAE,CAAC,uCAAuC,EAAE,SAAS,CAAC,aACtG,eAAK,SAAS,EAAC,qBAAqB,aAClC,wBACE,MAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,SAAS,EAAE,aAClG,KAAC,SAAS,0BAAe,EACxB,SAAS,IACC,GACT,EACN,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAC,iBAAiB,GAAG,IACpE,EACL,QAAQ,IACM,CAClB,CAAC;AACJ,CAAC;AASD,kDAAkD;AAClD,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAqB;IACvE,OAAO,CACL,mBAAS,SAAS,EAAC,qBAAqB,aACtC,0BACE,aAAI,SAAS,EAAC,sDAAsD,YAAE,KAAK,GAAM,EAChF,IAAI,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,sCAAsC,YAAE,IAAI,GAAK,CAAC,CAAC,CAAC,IAAI,IACzE,EACN,cAAK,SAAS,EAAC,6DAA6D,YAAE,QAAQ,GAAO,IACrF,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,16 +1,3 @@
|
|
|
1
1
|
import { type InfoHintImplProps } from '../lib/infoHint.js';
|
|
2
|
-
/**
|
|
3
|
-
* "ⓘ" field-help — the bespoke anchored composite on @floating-ui/react (portaled,
|
|
4
|
-
* flips + shifts, never clipped by an overflow ancestor). The reference model for
|
|
5
|
-
* any future bespoke anchored composite (color picker on a swatch, date picker on an
|
|
6
|
-
* input); standard primitives (Tooltip/DropdownMenu/SelectField/Popover/HoverCard)
|
|
7
|
-
* use Radix instead.
|
|
8
|
-
*
|
|
9
|
-
* Opens on hover + focus on pointer devices, and on click/tap everywhere — so it is
|
|
10
|
-
* reachable on touch screens (which have no hover). `useHasHover` disables the hover
|
|
11
|
-
* interaction on touch devices so the panel isn't left stuck open after a tap.
|
|
12
|
-
*
|
|
13
|
-
* Loaded by `InfoHint.tsx` with a dynamic `import()` — see that file for why.
|
|
14
|
-
*/
|
|
15
2
|
export default function InfoHintImpl({ children, title, align, className, label, initialOpen, initialFocus, }: InfoHintImplProps): import("react").JSX.Element;
|
|
16
3
|
//# sourceMappingURL=InfoHintImpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfoHintImpl.d.ts","sourceRoot":"","sources":["../../../src/react/components/InfoHintImpl.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InfoHintImpl.d.ts","sourceRoot":"","sources":["../../../src/react/components/InfoHintImpl.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAkB/E,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,QAAQ,EACR,KAAK,EACL,KAAc,EACd,SAAS,EACT,KAAmB,EACnB,WAAmB,EACnB,YAAoB,GACrB,EAAE,iBAAiB,+BAyFnB"}
|
|
@@ -4,6 +4,7 @@ import { Info } from 'lucide-react';
|
|
|
4
4
|
import { useEffect, useState } from 'react';
|
|
5
5
|
import { useHasHover } from '../hooks/useHasHover.js';
|
|
6
6
|
import { cn } from '../lib/cn.js';
|
|
7
|
+
import { devWarnOnce } from '../lib/devWarn.js';
|
|
7
8
|
import { HOVER_HINT_DELAY_MS } from '../lib/hoverIntent.js';
|
|
8
9
|
import { INFO_HINT_TRIGGER } from '../lib/infoHint.js';
|
|
9
10
|
/**
|
|
@@ -19,6 +20,8 @@ import { INFO_HINT_TRIGGER } from '../lib/infoHint.js';
|
|
|
19
20
|
*
|
|
20
21
|
* Loaded by `InfoHint.tsx` with a dynamic `import()` — see that file for why.
|
|
21
22
|
*/
|
|
23
|
+
/** CPY-1's ceiling for a hint, with a little slack over "about 300". */
|
|
24
|
+
const INFO_HINT_MAX_CHARS = 320;
|
|
22
25
|
export default function InfoHintImpl({ children, title, align = 'left', className, label = 'More info', initialOpen = false, initialFocus = false, }) {
|
|
23
26
|
const [open, setOpen] = useState(initialOpen);
|
|
24
27
|
const hasHover = useHasHover();
|
|
@@ -59,12 +62,25 @@ export default function InfoHintImpl({ children, title, align = 'left', classNam
|
|
|
59
62
|
if (initialFocus)
|
|
60
63
|
refs.domReference.current?.focus();
|
|
61
64
|
}, []);
|
|
65
|
+
// CPY-1: a hint holds a definition or a rule — about 300 characters. Past that it is a
|
|
66
|
+
// procedure, and its home is a page's `guide` or a `GuideRoute`, not a bubble over the canvas.
|
|
67
|
+
// Measured when the panel attaches: `FloatingPortal` mounts its root a tick after `open`.
|
|
68
|
+
const measurePanel = (el) => {
|
|
69
|
+
const length = el?.textContent?.length ?? 0;
|
|
70
|
+
if (length > INFO_HINT_MAX_CHARS) {
|
|
71
|
+
devWarnOnce('InfoHint:too-long', `cursedbelt: an <InfoHint> holds ${length} characters; it is for a definition of about ${INFO_HINT_MAX_CHARS} (CPY-2). ` +
|
|
72
|
+
"Move a longer text to PageHeader's `guide` or a GuideRoute.");
|
|
73
|
+
}
|
|
74
|
+
};
|
|
62
75
|
return (_jsxs(_Fragment, { children: [_jsx("button", {
|
|
63
76
|
// guardrails-ignore no-raw-action-button: presentational hover/click disclosure
|
|
64
77
|
// trigger for the floating help panel — no destructive/mutating intent, and the
|
|
65
78
|
// floating-ui ref/interaction wiring here doesn't fit the Button primitive.
|
|
66
79
|
type: 'button', ref: refs.setReference, "aria-label": label, className: cn(INFO_HINT_TRIGGER, className), ...getReferenceProps(), children: _jsx(Info, { className: 'size-4', "aria-hidden": true }) }), open ? (_jsx(FloatingPortal, { children: _jsxs("div", {
|
|
67
80
|
// guardrails-ignore no-hand-rolled-surface: the hint's floating-ui bubble — a tooltip-class overlay with its own z-index and shadow, not a card
|
|
68
|
-
ref:
|
|
81
|
+
ref: (el) => {
|
|
82
|
+
refs.setFloating(el);
|
|
83
|
+
measurePanel(el);
|
|
84
|
+
}, "data-cb-prose": '', style: floatingStyles, ...getFloatingProps(), className: 'z-50 max-w-xs rounded-md border border-border bg-popover px-3 py-2 text-xs text-popover-foreground shadow-[var(--shadow-overlay)]', children: [title ? _jsx("p", { className: 'mb-1 font-semibold', children: title }) : null, children] }) })) : null] }));
|
|
69
85
|
}
|
|
70
86
|
//# sourceMappingURL=InfoHintImpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfoHintImpl.js","sourceRoot":"","sources":["../../../src/react/components/InfoHintImpl.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InfoHintImpl.js","sourceRoot":"","sources":["../../../src/react/components/InfoHintImpl.tsx"],"names":[],"mappings":"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"}
|
|
@@ -99,6 +99,6 @@ export function InlineEditableText({ value, onChange, canEdit = true, multiline
|
|
|
99
99
|
// measuring gate (and any tool that reasons about layout) still sees 24px.
|
|
100
100
|
// `DESIGN.md` §5's footprint is the floor and UX_STANDARDS §0 records that it
|
|
101
101
|
// wins over the band — so the box grows too, and the band stays as the extra.
|
|
102
|
-
TAP_TARGET_HEIGHT, 'pointer-coarse:before:absolute pointer-coarse:before:top-[-
|
|
102
|
+
TAP_TARGET_HEIGHT, 'pointer-coarse:before:absolute pointer-coarse:before:top-[calc(var(--hit-slop-y)*-1)] pointer-coarse:before:bottom-[calc(var(--hit-slop-y)*-1)] pointer-coarse:before:-left-1 pointer-coarse:before:-right-1 pointer-coarse:before:content-[""]', wrap ? 'whitespace-pre-wrap break-words' : 'block w-full truncate', !value && 'italic text-muted-foreground', className), children: value || placeholder }) }));
|
|
103
103
|
}
|
|
104
104
|
//# sourceMappingURL=InlineEditableText.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineEditableText.js","sourceRoot":"","sources":["../../../src/react/components/InlineEditableText.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InlineEditableText.js","sourceRoot":"","sources":["../../../src/react/components/InlineEditableText.tsx"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@ export function IsolatedFrame({ mode, src, srcDoc, title, error, onClose, sandbo
|
|
|
46
46
|
// The bezel: a rounded, overflow-hidden device frame at a fixed logical
|
|
47
47
|
// size, so the framed page sees a true phone viewport (its own media
|
|
48
48
|
// queries fire) rather than a squeezed desktop column.
|
|
49
|
-
className: 'shrink-0 overflow-hidden rounded-[
|
|
49
|
+
className: 'shrink-0 overflow-hidden rounded-[var(--radius-device)] border-8 border-border-strong bg-border-strong shadow-overlay', style: { width: MOBILE_WIDTH, height: MOBILE_HEIGHT }, children: frame }) }) }));
|
|
50
50
|
}
|
|
51
51
|
// desktop
|
|
52
52
|
return _jsx("div", { className: cn('h-full w-full', className), children: frame });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsolatedFrame.js","sourceRoot":"","sources":["../../../src/react/components/IsolatedFrame.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IsolatedFrame.js","sourceRoot":"","sources":["../../../src/react/components/IsolatedFrame.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListToolbar.d.ts","sourceRoot":"","sources":["../../../src/react/components/ListToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wFAAwF;IACxF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,SAAgB,EAChB,YAAY,EACZ,UAAkB,EAClB,aAAa,EACb,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,SAAS,GACV,EAAE,gBAAgB,+
|
|
1
|
+
{"version":3,"file":"ListToolbar.d.ts","sourceRoot":"","sources":["../../../src/react/components/ListToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,iEAAiE;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kFAAkF;IAClF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wFAAwF;IACxF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,SAAgB,EAChB,YAAY,EACZ,UAAkB,EAClB,aAAa,EACb,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,SAAS,GACV,EAAE,gBAAgB,+BA0ClB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from '../lib/cn.js';
|
|
3
3
|
import { ChipFilterStrip } from './ChipFilterStrip.js';
|
|
4
|
-
import {
|
|
4
|
+
import { SearchInput } from './SearchInput.js';
|
|
5
5
|
/**
|
|
6
6
|
* The toolbar above a list: ONE line, filters left, view controls and actions right.
|
|
7
7
|
*
|
|
@@ -57,7 +57,7 @@ export function ListToolbar({ search, onSearchChange, searchPlaceholder, searchL
|
|
|
57
57
|
const showSearch = search !== undefined && onSearchChange !== undefined;
|
|
58
58
|
const showChips = chips !== undefined && chips.length > 0 && onChipChange !== undefined;
|
|
59
59
|
const showRight = Boolean(sort) || Boolean(view) || Boolean(actions);
|
|
60
|
-
return (_jsxs("div", { className: cn('flex flex-wrap items-center gap-x-3 gap-y-2', className), children: [showSearch ? (_jsx(
|
|
60
|
+
return (_jsxs("div", { className: cn('flex flex-wrap items-center gap-x-3 gap-y-2', className), children: [showSearch ? (_jsx(SearchInput, { syntax: false, value: search, onChange: onSearchChange, placeholder: searchPlaceholder ?? 'Search', "aria-label": searchLabel ?? searchPlaceholder ?? 'Search',
|
|
61
61
|
// Full width on a phone (the chips then wrap beneath it, still tappable);
|
|
62
62
|
// a fixed, modest column from `sm:` so the chips share the line rather than
|
|
63
63
|
// being pushed off it by a box that grows with the container.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListToolbar.js","sourceRoot":"","sources":["../../../src/react/components/ListToolbar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,eAAe,EAAmB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ListToolbar.js","sourceRoot":"","sources":["../../../src/react/components/ListToolbar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,eAAe,EAAmB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA0C/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,KAAK,EACL,SAAS,GAAG,IAAI,EAChB,YAAY,EACZ,UAAU,GAAG,KAAK,EAClB,aAAa,EACb,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,SAAS,GACQ;IACjB,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,CAAC;IACxE,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,KAAK,SAAS,CAAC;IACxF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAErE,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,6CAA6C,EAAE,SAAS,CAAC,aACzE,UAAU,CAAC,CAAC,CAAC,CAIZ,KAAC,WAAW,IACV,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,iBAAiB,IAAI,QAAQ,gBAC9B,WAAW,IAAI,iBAAiB,IAAI,QAAQ;gBACxD,0EAA0E;gBAC1E,4EAA4E;gBAC5E,8DAA8D;gBAC9D,SAAS,EAAC,yBAAyB,GACnC,CACH,CAAC,CAAC,CAAC,IAAI,EACP,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,eAAe,IACd,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,EACnB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,UAAU,KACb,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,GACpE,CACH,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,EACP,SAAS,CAAC,CAAC,CAAC,CACX,gBAAM,SAAS,EAAC,2CAA2C,aACxD,IAAI,EACJ,IAAI,EACJ,OAAO,IACH,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ScrollAreaHeight } from './ScrollArea.js';
|
|
1
2
|
/**
|
|
2
3
|
* A log output pane — monospace, virtualization-free, and honest about what it
|
|
3
4
|
* is showing.
|
|
@@ -45,8 +46,31 @@ export interface LogViewerProps {
|
|
|
45
46
|
loading?: boolean;
|
|
46
47
|
/** Start with newest-at-the-bottom following. Default true. */
|
|
47
48
|
follow?: boolean;
|
|
48
|
-
/** Visible height in rows. Default 24. */
|
|
49
|
+
/** Visible height in rows. Default 24. Ignored when `height` is set. */
|
|
49
50
|
rows?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Bound the pane to a token height (DAT-13, LAY-8) — `sm` 12rem · `md` 20rem · `lg` 28rem,
|
|
53
|
+
* never more than 60dvh on a phone. A live log is a terminal viewport of a fixed size,
|
|
54
|
+
* not a box that grows with its output and pushes the page down. Prefer this to `rows`.
|
|
55
|
+
*/
|
|
56
|
+
height?: ScrollAreaHeight;
|
|
57
|
+
/**
|
|
58
|
+
* The terminal's header strip (DAT-13): the stream's name ("Batch B2026-10-01"), its age
|
|
59
|
+
* ("18m in flight") and a badge (a `StatusPill`). Any of them draws the strip, attached to
|
|
60
|
+
* the top of the pane, so the reader knows WHICH output this is before reading a line.
|
|
61
|
+
*/
|
|
62
|
+
stream?: React.ReactNode;
|
|
63
|
+
age?: React.ReactNode;
|
|
64
|
+
badge?: React.ReactNode;
|
|
65
|
+
/**
|
|
66
|
+
* "Open full log →" in the header strip — the way out of a bounded tail into the whole
|
|
67
|
+
* transcript. An `href` renders a link; `onClick` a button.
|
|
68
|
+
*/
|
|
69
|
+
openFullLog?: {
|
|
70
|
+
href?: string;
|
|
71
|
+
onClick?: () => void;
|
|
72
|
+
label?: string;
|
|
73
|
+
};
|
|
50
74
|
/** Hide the filter box for a short, fixed output (`df -h`). */
|
|
51
75
|
filterable?: boolean;
|
|
52
76
|
/**
|
|
@@ -67,5 +91,5 @@ export interface LogViewerProps {
|
|
|
67
91
|
export declare function severityOf(line: string): LogSeverity;
|
|
68
92
|
/** Split, dropping a single trailing newline so a log does not end in a blank row. */
|
|
69
93
|
export declare function toLines(text: string): string[];
|
|
70
|
-
export declare function LogViewer({ text, title, command, truncated, exitCode, stderr, durationMs, loading, follow: followDefault, rows, filterable, onSelectLine, selectedLine, className, }: LogViewerProps): import("react").JSX.Element;
|
|
94
|
+
export declare function LogViewer({ text, title, command, truncated, exitCode, stderr, durationMs, loading, follow: followDefault, rows, height, stream, age, badge, openFullLog, filterable, onSelectLine, selectedLine, className, }: LogViewerProps): import("react").JSX.Element;
|
|
71
95
|
//# sourceMappingURL=LogViewer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogViewer.d.ts","sourceRoot":"","sources":["../../../src/react/components/LogViewer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LogViewer.d.ts","sourceRoot":"","sources":["../../../src/react/components/LogViewer.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,+DAA+D;IAC/D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAKpD;AAUD,sFAAsF;AACtF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAI9C;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAiB,EACjB,QAAe,EACf,MAAW,EACX,UAAU,EACV,OAAe,EACf,MAAM,EAAE,aAAoB,EAC5B,IAAS,EACT,MAAM,EACN,MAAM,EACN,GAAG,EACH,KAAK,EACL,WAAW,EACX,UAAiB,EACjB,YAAY,EACZ,YAAmB,EACnB,SAAS,GACV,EAAE,cAAc,+BAmQhB"}
|
|
@@ -35,7 +35,7 @@ export function toLines(text) {
|
|
|
35
35
|
const trimmed = text.endsWith('\n') ? text.slice(0, -1) : text;
|
|
36
36
|
return trimmed.split('\n');
|
|
37
37
|
}
|
|
38
|
-
export function LogViewer({ text, title, command, truncated = false, exitCode = null, stderr = '', durationMs, loading = false, follow: followDefault = true, rows = 24, filterable = true, onSelectLine, selectedLine = null, className, }) {
|
|
38
|
+
export function LogViewer({ text, title, command, truncated = false, exitCode = null, stderr = '', durationMs, loading = false, follow: followDefault = true, rows = 24, height, stream, age, badge, openFullLog, filterable = true, onSelectLine, selectedLine = null, className, }) {
|
|
39
39
|
const [filter, setFilter] = useState('');
|
|
40
40
|
const [following, setFollowing] = useState(followDefault);
|
|
41
41
|
const paneRef = useRef(null);
|
|
@@ -74,31 +74,46 @@ export function LogViewer({ text, title, command, truncated = false, exitCode =
|
|
|
74
74
|
setFollowing(followDefault);
|
|
75
75
|
}, [followDefault]);
|
|
76
76
|
const hidden = lines.length - visible.length;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
:
|
|
77
|
+
const hasStrip = stream != null || age != null || badge != null || openFullLog != null;
|
|
78
|
+
const jumpToLive = useCallback(() => {
|
|
79
|
+
const el = paneRef.current;
|
|
80
|
+
if (el)
|
|
81
|
+
el.scrollTop = el.scrollHeight;
|
|
82
|
+
setFollowing(true);
|
|
83
|
+
}, []);
|
|
84
|
+
const followButton = (_jsx(Button, { variant: following ? 'primary' : 'secondary', size: "sm", onClick: () => setFollowing((f) => !f), "aria-pressed": following, tooltip: following
|
|
85
|
+
? 'Following the tail — scroll up to stop'
|
|
86
|
+
: 'Jump to the newest line and follow it', children: "Follow" }));
|
|
87
|
+
// With the strip drawn, Follow lives in it beside "Open full log" — the toolbar row above the
|
|
88
|
+
// pane is then only for what the strip does not carry, and is not drawn empty.
|
|
89
|
+
const toolbarRow = !hasStrip || title != null || (exitCode !== null && exitCode !== 0) || typeof durationMs === 'number' || filterable;
|
|
90
|
+
return (_jsxs("div", { className: cn('flex flex-col gap-2', className), children: [toolbarRow && (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [title && _jsx("span", { className: "cb-meta-label", children: title }), exitCode !== null && exitCode !== 0 && (_jsx(Badge, { tone: "error", children: `exit ${exitCode}` })), typeof durationMs === 'number' && (_jsx("span", { className: "text-xs tabular-nums text-muted-foreground", children: `${Math.round(durationMs)} ms` })), _jsx("span", { className: "flex-1" }), filterable && (_jsx(Input, { value: filter, onChange: (e) => setFilter(e.target.value), placeholder: "Filter lines\u2026", "aria-label": "Filter log lines", className: "w-48" })), !hasStrip && followButton] })), command && (_jsx(ScrollArea, { axis: "x", space: "none", safeArea: false, className: "rounded-md bg-muted px-3 py-2", children: _jsx("code", { className: "block whitespace-pre font-mono text-xs text-muted-foreground", children: command }) })), truncated && (_jsx("p", { className: "text-xs text-warning", children: "Output was truncated \u2014 this is not the whole log. Narrow the range or read it on the box." })), _jsxs("div", { className: "relative flex min-h-0 flex-col", style: height ? undefined : { maxHeight: `${rows * 1.5}rem` }, "data-cb-log-following": following ? 'true' : 'false', children: [hasStrip && (_jsxs("div", { "data-cb-log-header": "",
|
|
91
|
+
// Wraps as two groups — what the stream is, then its controls — so a phone gets two
|
|
92
|
+
// clean lines instead of a name squeezed to "B…" and a link broken over three.
|
|
93
|
+
className: "flex min-h-9 min-w-0 flex-wrap items-center gap-x-2 gap-y-1 rounded-t-md border border-b-0 border-border bg-muted px-3 py-1 text-xs", children: [_jsxs("span", { className: "flex min-w-0 max-w-full items-center gap-2", children: [stream != null && _jsx("span", { className: "min-w-0 truncate font-mono font-medium text-foreground", children: stream }), age != null && _jsx("span", { className: "shrink-0 whitespace-nowrap tabular-nums text-muted-foreground", children: age }), badge != null && _jsx("span", { className: "shrink-0", children: badge })] }), _jsxs("span", { className: "ml-auto flex shrink-0 items-center gap-1 whitespace-nowrap", children: [followButton, openFullLog &&
|
|
94
|
+
(openFullLog.href ? (_jsx(Button, { asChild: true, variant: "ghost", size: "sm", tooltip: "Open the whole log", tooltipMobile: "off", children: _jsx("a", { href: openFullLog.href, children: openFullLog.label ?? 'Open full log →' }) })) : (_jsx(Button, { variant: "ghost", size: "sm", tooltip: "Open the whole log", tooltipMobile: "off", onClick: openFullLog.onClick, children: openFullLog.label ?? 'Open full log →' })))] })] })), _jsx(ScrollArea, { scrollRef: paneRef, onScroll: onScroll, height: height,
|
|
95
|
+
// `both`: a log line is arbitrarily long and must scroll inside its own
|
|
96
|
+
// box, never widen the page. `space="none"` + no safe-area padding —
|
|
97
|
+
// the sticky-follow reads "am I at the bottom", and a comfort gap below
|
|
98
|
+
// the last line is exactly the thing that makes that read wrong.
|
|
99
|
+
axis: "both", space: "none", safeArea: false, className: cn('border border-border bg-background font-mono text-xs leading-relaxed', hasStrip ? 'rounded-b-md' : 'rounded-md'), role: "log", "aria-live": "off", "aria-busy": loading || undefined, children: visible.length === 0 ? (_jsx("p", { className: "p-6 text-center text-sm text-muted-foreground", children: loading
|
|
100
|
+
? 'Reading…'
|
|
101
|
+
: lines.length === 0
|
|
102
|
+
? 'No output.'
|
|
103
|
+
: `No line matches “${filter}”.` })) : (_jsx("ol", { className: "min-w-full", children: visible.map((line, i) => (_jsxs("li", { className: cn('flex gap-3 whitespace-pre px-3 hover:bg-muted/50', SEVERITY_CLASS[severityOf(line)], onSelectLine && 'cursor-pointer', selectedLine !== null && line === selectedLine && 'bg-accent/40'), ...(onSelectLine
|
|
104
|
+
? {
|
|
105
|
+
role: 'button',
|
|
106
|
+
tabIndex: 0,
|
|
107
|
+
'aria-pressed': line === selectedLine,
|
|
108
|
+
onClick: () => onSelectLine(line, i),
|
|
109
|
+
onKeyDown: (e) => {
|
|
110
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
111
|
+
e.preventDefault();
|
|
112
|
+
onSelectLine(line, i);
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
}
|
|
116
|
+
: {}), children: [_jsx("span", { className: "select-none tabular-nums text-muted-foreground/60", children: String(i + 1).padStart(4, ' ') }), _jsx("span", { children: line || ' ' })] }, `${i}-${line.slice(0, 24)}`))) })) }), followDefault && !following && visible.length > 0 && (_jsx("div", { className: "pointer-events-none absolute inset-x-0 bottom-3 flex justify-center", children: _jsx(Button, { variant: "secondary", size: "sm", className: "pointer-events-auto rounded-full shadow-md", tooltip: "Scroll to the newest line and follow it", tooltipMobile: "off", onClick: jumpToLive, "data-cb-log-jump": "", children: "Jump to live \u2193" }) }))] }), _jsx("p", { className: "text-xs tabular-nums text-muted-foreground", children: hidden > 0
|
|
102
117
|
? `${visible.length} of ${lines.length} lines (${hidden} filtered out)`
|
|
103
118
|
: `${lines.length} lines` }), stderr.trim() && (_jsxs("details", { className: "rounded-md border border-border", children: [_jsx("summary", { className: "cursor-pointer px-3 py-2 text-xs text-muted-foreground", children: "stderr" }), _jsx(ScrollArea, { axis: "x", space: "none", safeArea: false, className: "px-3 pb-3", children: _jsx("pre", { className: "font-mono text-xs text-destructive", children: stderr }) })] }))] }));
|
|
104
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogViewer.js","sourceRoot":"","sources":["../../../src/react/components/LogViewer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3F,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"LogViewer.js","sourceRoot":"","sources":["../../../src/react/components/LogViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
export { useDialogOpen } from '../lib/openDialogs.js';
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* OVL-1's three widths plus `full`. `xl` is the pre-2465 name for a wide modal, kept so the
|
|
5
|
+
* apps that pass it still compile; it renders `lg` (the old `xl` was 896px, `lg` is 900px).
|
|
6
|
+
*/
|
|
7
|
+
export type ModalSize = 'sm' | 'md' | 'lg' | 'full' | /** @deprecated use `lg` */ 'xl';
|
|
4
8
|
export interface ModalProps {
|
|
5
9
|
open: boolean;
|
|
6
10
|
onClose: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/react/components/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/react/components/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWvC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC;AA4CvF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,IAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAiB,EACjB,aAAoB,EACpB,KAAK,EACL,UAAiB,EACjB,SAAS,GACV,EAAE,UAAU,+BAgJZ"}
|
|
@@ -4,23 +4,33 @@ import { useDiscardGuard } from '../hooks/useDiscardGuard.js';
|
|
|
4
4
|
import { useMediaQuery } from '../hooks/useMediaQuery.js';
|
|
5
5
|
import { useSwipeToDismiss } from '../hooks/useSwipeToDismiss.js';
|
|
6
6
|
import { cn } from '../lib/cn.js';
|
|
7
|
+
import { devWarnOnce } from '../lib/devWarn.js';
|
|
7
8
|
import { FooterSlot } from './ActionBar.js';
|
|
8
9
|
import { Dialog, DialogContent, DialogTitle, focusPanelOnOpen } from './dialog.js';
|
|
9
10
|
import { IconButton } from './IconButton.js';
|
|
10
11
|
import { ScrollArea } from './ScrollArea.js';
|
|
11
12
|
export { useDialogOpen } from '../lib/openDialogs.js';
|
|
12
13
|
// ONE sizing scale replaces the ad-hoc `max-w-xl`/`max-w-2xl`/`max-h-[80vh]` classNames
|
|
13
|
-
// scattered across the apps' modals.
|
|
14
|
-
//
|
|
14
|
+
// scattered across the apps' modals. OVL-1: three widths, each a theme.css token —
|
|
15
|
+
// `sm` 400px (a confirmation, one field), `md` 600px (an ordinary form), `lg` 900px (heavy
|
|
16
|
+
// entry, a wizard, a form beside its preview). `full` is a near-fullscreen sheet with a 1rem
|
|
17
|
+
// margin on every side; `cn`'s twMerge dedupes its `max-h` against the base below (last wins).
|
|
15
18
|
// Every size is `sm:`-scoped: under `sm` a modal is a bottom sheet the width of the screen,
|
|
16
19
|
// whatever size it asked for on a desktop — see `SHEET` below.
|
|
17
20
|
const SIZE = {
|
|
18
|
-
sm: 'sm:max-w-sm',
|
|
19
|
-
md: 'sm:max-w-
|
|
20
|
-
lg: 'sm:max-w-
|
|
21
|
-
xl: 'sm:max-w-4xl',
|
|
21
|
+
sm: 'sm:max-w-[var(--modal-w-sm)]',
|
|
22
|
+
md: 'sm:max-w-[var(--modal-w-md)]',
|
|
23
|
+
lg: 'sm:max-w-[var(--modal-w-lg)]',
|
|
22
24
|
full: 'sm:max-w-[calc(100vw-2rem)] sm:max-h-[calc(100dvh-2rem)] max-sm:h-dvh max-sm:max-h-dvh max-sm:rounded-none',
|
|
23
25
|
};
|
|
26
|
+
/** The width a size renders — `xl` is `lg` under its old name. */
|
|
27
|
+
function sizeClass(size) {
|
|
28
|
+
if (size === 'xl') {
|
|
29
|
+
devWarnOnce('Modal:size-xl', "cursedbelt: <Modal size='xl'> is `lg` now (OVL-1 has three widths: sm 400, md 600, lg 900). Pass size='lg'.");
|
|
30
|
+
return SIZE.lg;
|
|
31
|
+
}
|
|
32
|
+
return SIZE[size];
|
|
33
|
+
}
|
|
24
34
|
/** Below `sm` (640px), where a centred card becomes a bottom sheet. */
|
|
25
35
|
const PHONE_QUERY = '(max-width: 639px)';
|
|
26
36
|
/**
|
|
@@ -32,7 +42,7 @@ const PHONE_QUERY = '(max-width: 639px)';
|
|
|
32
42
|
* puts the footer's actions where the thumb already is, and comes down with the same swipe
|
|
33
43
|
* every native sheet does.
|
|
34
44
|
*/
|
|
35
|
-
const SHEET = 'max-sm:inset-x-0 max-sm:bottom-0 max-sm:w-full max-sm:max-w-none max-sm:max-h-[
|
|
45
|
+
const SHEET = 'max-sm:inset-x-0 max-sm:bottom-0 max-sm:w-full max-sm:max-w-none max-sm:max-h-[var(--sheet-h-phone)] max-sm:rounded-t-2xl max-sm:rounded-b-none max-sm:border-x-0 max-sm:border-b-0 max-sm:data-[state=open]:slide-in-from-bottom max-sm:data-[state=closed]:slide-out-to-bottom';
|
|
36
46
|
/** From `sm` up: the centred card, capped to the viewport, zooming in. */
|
|
37
47
|
const CARD = 'sm:top-1/2 sm:left-1/2 sm:w-[calc(100vw-2rem)] sm:-translate-x-1/2 sm:-translate-y-1/2 sm:rounded-xl sm:max-h-[min(90dvh,calc(100dvh-2rem))] sm:data-[state=open]:zoom-in-95 sm:data-[state=closed]:zoom-out-95';
|
|
38
48
|
/**
|
|
@@ -68,7 +78,7 @@ export function Modal({ open, onClose, size = 'md', title, subtitle, children, f
|
|
|
68
78
|
'fixed flex flex-col gap-0 overflow-hidden',
|
|
69
79
|
// The body scrolls with `py-4`: a form kit preview pinned inside it sits flush with
|
|
70
80
|
// the body's top edge rather than a padding's height below it (formKit.css).
|
|
71
|
-
'[--cbfk-sticky-top:-1rem]', 'border border-border bg-popover text-popover-foreground shadow-overlay', 'data-[state=open]:animate-in data-[state=open]:fade-in-0', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0', SHEET, CARD,
|
|
81
|
+
'[--cbfk-sticky-top:-1rem]', 'border border-border bg-popover text-popover-foreground shadow-overlay', 'data-[state=open]:animate-in data-[state=open]:fade-in-0', 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0', SHEET, CARD, sizeClass(size), className),
|
|
72
82
|
// Intercept Radix's default close so a dirty form gets the discard prompt; while
|
|
73
83
|
// the prompt is up, Escape cancels it (keep editing) instead of re-prompting.
|
|
74
84
|
// backdropClose={false} turns the backdrop into a no-op — critical dialogs that
|