basalt-ui 1.26.0 → 1.28.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/AGENTS.md +23 -23
- package/CHANGELOG.md +67 -0
- package/MIGRATING.md +896 -37
- package/README.md +33 -3
- package/agent/rules/basalt-batteries.md +25 -10
- package/agent/rules/basalt-controls.md +73 -43
- package/agent/rules/basalt-mantine.md +17 -6
- package/agent/rules/basalt-state.md +5 -0
- package/agent/rules/basalt-tokens.md +1 -1
- package/configs/oxlint-plugin.js +1286 -73
- package/configs/oxlint-plugin.test.ts +1338 -29
- package/configs/oxlint.json +12 -5
- package/dist/agent/coalesce.d.ts.map +1 -1
- package/dist/agent/coalesce.js +2 -1
- package/dist/agent/merge.d.ts.map +1 -1
- package/dist/agent/merge.js +2 -1
- package/dist/agent/part-list.d.ts.map +1 -1
- package/dist/agent/part-list.js +2 -0
- package/dist/agent/stick-to-bottom.d.ts +3 -6
- package/dist/agent/stick-to-bottom.d.ts.map +1 -1
- package/dist/agent/stick-to-bottom.js +6 -3
- package/dist/agent-chat/composer.d.ts +6 -2
- package/dist/agent-chat/composer.d.ts.map +1 -1
- package/dist/agent-chat/composer.js +49 -33
- package/dist/agent-chat/relative-time.d.ts +0 -9
- package/dist/agent-chat/relative-time.d.ts.map +1 -1
- package/dist/agent-chat/relative-time.js +2 -1
- package/dist/agent-chat/thread-detail-panel.d.ts +3 -2
- package/dist/agent-chat/thread-detail-panel.d.ts.map +1 -1
- package/dist/agent-chat/thread-detail-panel.js +8 -5
- package/dist/agent-chat/thread-feed-row.d.ts +2 -1
- package/dist/agent-chat/thread-feed-row.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed-row.js +92 -92
- package/dist/agent-chat/thread-feed.d.ts +3 -2
- package/dist/agent-chat/thread-feed.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed.js +8 -3
- package/dist/agent-chat/thread-message.d.ts +4 -3
- package/dist/agent-chat/thread-message.d.ts.map +1 -1
- package/dist/agent-chat/thread-message.js +70 -31
- package/dist/agent-chat/thread-outcome-card.d.ts +3 -2
- package/dist/agent-chat/thread-outcome-card.d.ts.map +1 -1
- package/dist/agent-chat/thread-outcome-card.js +9 -2
- package/dist/agent-chat/thread-workspace.d.ts +7 -2
- package/dist/agent-chat/thread-workspace.d.ts.map +1 -1
- package/dist/agent-chat/thread-workspace.js +62 -29
- package/dist/agent-chat/tool-chip.d.ts +3 -2
- package/dist/agent-chat/tool-chip.d.ts.map +1 -1
- package/dist/agent-chat/tool-chip.js +7 -2
- package/dist/charts/hooks/useBandPlot.d.ts.map +1 -1
- package/dist/charts/hooks/useBandPlot.js +15 -8
- package/dist/charts/index.d.ts +8 -7
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/index.js +45 -5
- package/dist/charts/kinds/BandStrip.d.ts +10 -7
- package/dist/charts/kinds/BandStrip.d.ts.map +1 -1
- package/dist/charts/kinds/BandStrip.js +12 -7
- package/dist/charts/kinds/Bars.d.ts +12 -6
- package/dist/charts/kinds/Bars.d.ts.map +1 -1
- package/dist/charts/kinds/Bars.js +37 -11
- package/dist/charts/kinds/Donut.d.ts +6 -5
- package/dist/charts/kinds/Donut.d.ts.map +1 -1
- package/dist/charts/kinds/Donut.js +19 -2
- package/dist/charts/kinds/DualPanel.d.ts +6 -5
- package/dist/charts/kinds/DualPanel.d.ts.map +1 -1
- package/dist/charts/kinds/DualPanel.js +36 -8
- package/dist/charts/kinds/Heatmap.d.ts +10 -6
- package/dist/charts/kinds/Heatmap.d.ts.map +1 -1
- package/dist/charts/kinds/Heatmap.js +58 -31
- package/dist/charts/kinds/MirroredBars.d.ts +6 -5
- package/dist/charts/kinds/MirroredBars.d.ts.map +1 -1
- package/dist/charts/kinds/MirroredBars.js +9 -2
- package/dist/charts/kinds/MultiLine.d.ts +11 -6
- package/dist/charts/kinds/MultiLine.d.ts.map +1 -1
- package/dist/charts/kinds/MultiLine.js +24 -15
- package/dist/charts/kinds/StackedArea.d.ts +18 -8
- package/dist/charts/kinds/StackedArea.d.ts.map +1 -1
- package/dist/charts/kinds/StackedArea.js +29 -4
- package/dist/charts/kinds/ZonedLine.d.ts +12 -8
- package/dist/charts/kinds/ZonedLine.d.ts.map +1 -1
- package/dist/charts/kinds/ZonedLine.js +33 -23
- package/dist/charts/layout/auto-margin.d.ts +65 -8
- package/dist/charts/layout/auto-margin.d.ts.map +1 -1
- package/dist/charts/layout/auto-margin.js +45 -10
- package/dist/charts/layout/log-ticks.d.ts +27 -0
- package/dist/charts/layout/log-ticks.d.ts.map +1 -0
- package/dist/charts/layout/log-ticks.js +42 -0
- package/dist/charts/primitives/Axes.d.ts +11 -2
- package/dist/charts/primitives/Axes.d.ts.map +1 -1
- package/dist/charts/primitives/Axes.js +15 -5
- package/dist/charts/primitives/CartesianChart.d.ts +45 -7
- package/dist/charts/primitives/CartesianChart.d.ts.map +1 -1
- package/dist/charts/primitives/CartesianChart.js +86 -28
- package/dist/charts/primitives/ChartCard.d.ts +27 -2
- package/dist/charts/primitives/ChartCard.d.ts.map +1 -1
- package/dist/charts/primitives/ChartCard.js +37 -17
- package/dist/charts/primitives/ChartFrame.d.ts +30 -4
- package/dist/charts/primitives/ChartFrame.d.ts.map +1 -1
- package/dist/charts/primitives/ChartFrame.js +45 -15
- package/dist/charts/primitives/ChartLegend.d.ts +13 -2
- package/dist/charts/primitives/ChartLegend.d.ts.map +1 -1
- package/dist/charts/primitives/ChartLegend.js +33 -13
- package/dist/charts/primitives/ChartPending.d.ts +77 -4
- package/dist/charts/primitives/ChartPending.d.ts.map +1 -1
- package/dist/charts/primitives/ChartPending.js +100 -6
- package/dist/charts/primitives/ChartTooltip.d.ts +7 -0
- package/dist/charts/primitives/ChartTooltip.d.ts.map +1 -1
- package/dist/charts/primitives/ChartTooltip.js +18 -5
- package/dist/charts/primitives/Crosshair.d.ts +3 -0
- package/dist/charts/primitives/Crosshair.d.ts.map +1 -1
- package/dist/charts/primitives/Crosshair.js +3 -1
- package/dist/charts/primitives/chart-frame-layout.d.ts +95 -0
- package/dist/charts/primitives/chart-frame-layout.d.ts.map +1 -0
- package/dist/charts/primitives/chart-frame-layout.js +89 -0
- package/dist/charts/primitives/chart-tier.d.ts +16 -0
- package/dist/charts/primitives/chart-tier.d.ts.map +1 -0
- package/dist/charts/primitives/chart-tier.js +20 -0
- package/dist/charts/series.d.ts +55 -1
- package/dist/charts/series.d.ts.map +1 -1
- package/dist/charts/series.js +27 -1
- package/dist/charts/sparklines/BarSparkline.d.ts +3 -3
- package/dist/charts/sparklines/BarSparkline.d.ts.map +1 -1
- package/dist/charts/sparklines/BarSparkline.js +9 -3
- package/dist/charts/sparklines/LineSparkline.d.ts +3 -3
- package/dist/charts/sparklines/LineSparkline.d.ts.map +1 -1
- package/dist/charts/sparklines/LineSparkline.js +15 -3
- package/dist/charts/sparklines/index.d.ts +2 -2
- package/dist/charts/sparklines/index.d.ts.map +1 -1
- package/dist/charts/utils/format.d.ts +92 -2
- package/dist/charts/utils/format.d.ts.map +1 -1
- package/dist/charts/utils/format.js +64 -1
- package/dist/charts/utils/ticks.d.ts +81 -2
- package/dist/charts/utils/ticks.d.ts.map +1 -1
- package/dist/charts/utils/ticks.js +54 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/commands/ShortcutsHelp.d.ts +3 -2
- package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
- package/dist/commands/ShortcutsHelp.js +8 -2
- package/dist/commands/define-commands.d.ts.map +1 -1
- package/dist/commands/define-commands.js +2 -2
- package/dist/commands/define-overlays.d.ts +102 -0
- package/dist/commands/define-overlays.d.ts.map +1 -1
- package/dist/commands/define-overlays.js +102 -2
- package/dist/commands/index.d.ts +10 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -1
- package/dist/commands/overlays-mount.d.ts +13 -6
- package/dist/commands/overlays-mount.d.ts.map +1 -1
- package/dist/commands/overlays-mount.js +23 -14
- package/dist/common/errors.d.ts +34 -0
- package/dist/common/errors.d.ts.map +1 -0
- package/dist/common/errors.js +36 -0
- package/dist/common/index.d.ts +15 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +29 -0
- package/dist/common/props.d.ts +63 -0
- package/dist/common/props.d.ts.map +1 -0
- package/dist/common/props.js +6 -0
- package/dist/common/query-state-like.d.ts +43 -0
- package/dist/common/query-state-like.d.ts.map +1 -0
- package/dist/common/query-state-like.js +20 -0
- package/dist/common/refs.d.ts +29 -0
- package/dist/common/refs.d.ts.map +1 -0
- package/dist/common/refs.js +29 -0
- package/dist/common/scroll-parent.d.ts +23 -0
- package/dist/common/scroll-parent.d.ts.map +1 -0
- package/dist/common/scroll-parent.js +21 -0
- package/dist/common/validate.d.ts +38 -0
- package/dist/common/validate.d.ts.map +1 -0
- package/dist/common/validate.js +36 -0
- package/dist/connectivity/connectivity-indicator.d.ts +3 -1
- package/dist/connectivity/connectivity-indicator.d.ts.map +1 -1
- package/dist/connectivity/connectivity-indicator.js +3 -1
- package/dist/connectivity/connectivity-provider.d.ts.map +1 -1
- package/dist/connectivity/connectivity-provider.js +4 -1
- package/dist/connectivity/index.d.ts +1 -0
- package/dist/connectivity/index.d.ts.map +1 -1
- package/dist/connectivity/types.d.ts +2 -2
- package/dist/connectivity/types.d.ts.map +1 -1
- package/dist/connectivity/use-connectivity.d.ts.map +1 -1
- package/dist/content/article-layout.module.css +11 -4
- package/dist/content/callout.d.ts +8 -4
- package/dist/content/callout.d.ts.map +1 -1
- package/dist/content/callout.js +15 -8
- package/dist/content/guide.d.ts +5 -4
- package/dist/content/guide.d.ts.map +1 -1
- package/dist/content/guide.js +13 -4
- package/dist/content/heading-anchor.d.ts +24 -2
- package/dist/content/heading-anchor.d.ts.map +1 -1
- package/dist/content/heading-anchor.js +23 -9
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +2 -0
- package/dist/content/prose.module.css +9 -7
- package/dist/content/reading-progress.d.ts +10 -4
- package/dist/content/reading-progress.d.ts.map +1 -1
- package/dist/content/reading-progress.js +26 -10
- package/dist/content/slug.d.ts +4 -0
- package/dist/content/slug.d.ts.map +1 -1
- package/dist/content/toc.d.ts +11 -0
- package/dist/content/toc.d.ts.map +1 -1
- package/dist/content/toc.js +23 -10
- package/dist/controls/actions.d.ts +49 -6
- package/dist/controls/actions.d.ts.map +1 -1
- package/dist/controls/actions.js +39 -8
- package/dist/controls/compare-filter.d.ts +3 -2
- package/dist/controls/compare-filter.d.ts.map +1 -1
- package/dist/controls/compare-filter.js +17 -2
- package/dist/controls/control-group.d.ts +3 -3
- package/dist/controls/control-group.d.ts.map +1 -1
- package/dist/controls/control-group.js +9 -2
- package/dist/controls/controls.module.css +169 -186
- package/dist/controls/controls.module.css.d.ts +9 -11
- package/dist/controls/enum-filter.d.ts +13 -3
- package/dist/controls/enum-filter.d.ts.map +1 -1
- package/dist/controls/enum-filter.js +32 -15
- package/dist/controls/filter-context.d.ts +15 -6
- package/dist/controls/filter-context.d.ts.map +1 -1
- package/dist/controls/filter-pill.d.ts +3 -3
- package/dist/controls/filter-pill.d.ts.map +1 -1
- package/dist/controls/filter-pill.js +4 -1
- package/dist/controls/filter-set.d.ts +3 -2
- package/dist/controls/filter-set.d.ts.map +1 -1
- package/dist/controls/filter-set.js +66 -41
- package/dist/controls/filter-sheet.d.ts +20 -80
- package/dist/controls/filter-sheet.d.ts.map +1 -1
- package/dist/controls/filter-sheet.js +9 -95
- package/dist/controls/index.d.ts +3 -0
- package/dist/controls/index.d.ts.map +1 -1
- package/dist/controls/index.js +6 -0
- package/dist/controls/multi-select-filter.d.ts +18 -2
- package/dist/controls/multi-select-filter.d.ts.map +1 -1
- package/dist/controls/multi-select-filter.js +124 -22
- package/dist/controls/number-filter.d.ts +28 -0
- package/dist/controls/number-filter.d.ts.map +1 -0
- package/dist/controls/number-filter.js +172 -0
- package/dist/controls/panel-row.d.ts +132 -0
- package/dist/controls/panel-row.d.ts.map +1 -0
- package/dist/controls/panel-row.js +173 -0
- package/dist/controls/panel-row.module.css +86 -0
- package/dist/controls/panel-row.module.css.d.ts +13 -0
- package/dist/controls/range-filter.d.ts +20 -5
- package/dist/controls/range-filter.d.ts.map +1 -1
- package/dist/controls/range-filter.js +75 -38
- package/dist/controls/search-filter.d.ts +3 -2
- package/dist/controls/search-filter.d.ts.map +1 -1
- package/dist/controls/search-filter.js +26 -11
- package/dist/controls/select-filter.d.ts +2 -1
- package/dist/controls/select-filter.d.ts.map +1 -1
- package/dist/controls/select-filter.js +4 -0
- package/dist/controls/slider-control.d.ts +36 -0
- package/dist/controls/slider-control.d.ts.map +1 -0
- package/dist/controls/slider-control.js +64 -0
- package/dist/controls/sync-button.d.ts +3 -2
- package/dist/controls/sync-button.d.ts.map +1 -1
- package/dist/controls/sync-button.js +16 -3
- package/dist/controls/toggle-filter.d.ts +3 -2
- package/dist/controls/toggle-filter.d.ts.map +1 -1
- package/dist/controls/toggle-filter.js +29 -12
- package/dist/controls/view-tabs.d.ts +3 -2
- package/dist/controls/view-tabs.d.ts.map +1 -1
- package/dist/controls/view-tabs.js +43 -11
- package/dist/controls-dates/date-range-picker.d.ts +1 -1
- package/dist/controls-dates/date-range-picker.d.ts.map +1 -1
- package/dist/controls-dates/date-range-picker.js +6 -1
- package/dist/dashboard/delta-badge.d.ts +5 -1
- package/dist/dashboard/delta-badge.d.ts.map +1 -1
- package/dist/dashboard/empty-state.d.ts +10 -3
- package/dist/dashboard/empty-state.d.ts.map +1 -1
- package/dist/dashboard/empty-state.js +37 -6
- package/dist/dashboard/index.d.ts +6 -4
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +10 -2
- package/dist/dashboard/query-state.d.ts +48 -27
- package/dist/dashboard/query-state.d.ts.map +1 -1
- package/dist/dashboard/query-state.js +111 -57
- package/dist/dashboard/settings-section.d.ts +19 -9
- package/dist/dashboard/settings-section.d.ts.map +1 -1
- package/dist/dashboard/settings-section.js +74 -25
- package/dist/dashboard/stat-card.d.ts +76 -19
- package/dist/dashboard/stat-card.d.ts.map +1 -1
- package/dist/dashboard/stat-card.js +78 -38
- package/dist/dashboard/stat-card.module.css +112 -26
- package/dist/dashboard/stat-card.module.css.d.ts +5 -0
- package/dist/dashboard/stat-group.d.ts +41 -0
- package/dist/dashboard/stat-group.d.ts.map +1 -0
- package/dist/dashboard/stat-group.js +30 -0
- package/dist/dashboard/stat-group.module.css +66 -0
- package/dist/dashboard/stat-group.module.css.d.ts +8 -0
- package/dist/dashboard/widget-grid.d.ts +27 -0
- package/dist/dashboard/widget-grid.d.ts.map +1 -0
- package/dist/dashboard/widget-grid.js +41 -0
- package/dist/dashboard/widget-grid.module.css +53 -0
- package/dist/dashboard/widget-grid.module.css.d.ts +9 -0
- package/dist/data/data-table.d.ts +151 -12
- package/dist/data/data-table.d.ts.map +1 -1
- package/dist/data/data-table.js +392 -138
- package/dist/data/data-table.module.css +64 -0
- package/dist/data/data-table.module.css.d.ts +11 -0
- package/dist/data/index.d.ts +2 -2
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +24 -2
- package/dist/data/query-branch.d.ts +28 -0
- package/dist/data/query-branch.d.ts.map +1 -0
- package/dist/data/query-branch.js +10 -0
- package/dist/data/table.d.ts +2 -2
- package/dist/data/table.d.ts.map +1 -1
- package/dist/data/virtual-list.d.ts +65 -6
- package/dist/data/virtual-list.d.ts.map +1 -1
- package/dist/data/virtual-list.js +89 -38
- package/dist/data/virtual.d.ts +1 -1
- package/dist/data/virtual.d.ts.map +1 -1
- package/dist/forms/FormErrorSummary.d.ts +4 -3
- package/dist/forms/FormErrorSummary.d.ts.map +1 -1
- package/dist/forms/FormErrorSummary.js +6 -4
- package/dist/forms/create-form.d.ts +2 -2
- package/dist/forms/field.d.ts +46 -6
- package/dist/forms/field.d.ts.map +1 -1
- package/dist/forms/field.js +10 -5
- package/dist/forms/form-layout.d.ts +142 -0
- package/dist/forms/form-layout.d.ts.map +1 -0
- package/dist/forms/form-layout.js +110 -0
- package/dist/forms/form-layout.module.css +145 -0
- package/dist/forms/form-layout.module.css.d.ts +20 -0
- package/dist/forms/form-state.d.ts +42 -0
- package/dist/forms/form-state.d.ts.map +1 -0
- package/dist/forms/form-state.js +26 -0
- package/dist/forms/index.d.ts +22 -6
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +19 -3
- package/dist/forms/use-field-array.d.ts +60 -0
- package/dist/forms/use-field-array.d.ts.map +1 -0
- package/dist/forms/use-field-array.js +20 -0
- package/dist/forms/use-form-draft.d.ts +25 -10
- package/dist/forms/use-form-draft.d.ts.map +1 -1
- package/dist/forms/use-form-draft.js +55 -18
- package/dist/forms/use-form-submit.d.ts +88 -0
- package/dist/forms/use-form-submit.d.ts.map +1 -0
- package/dist/forms/use-form-submit.js +63 -0
- package/dist/guard/index.d.ts +1 -1
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +27 -11
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -4
- package/dist/nav/types.d.ts +15 -6
- package/dist/nav/types.d.ts.map +1 -1
- package/dist/notifications/bell.d.ts +3 -2
- package/dist/notifications/bell.d.ts.map +1 -1
- package/dist/notifications/bell.js +73 -56
- package/dist/notifications/center.d.ts +15 -4
- package/dist/notifications/center.d.ts.map +1 -1
- package/dist/notifications/center.js +5 -2
- package/dist/notifications/define-notifications.d.ts +56 -14
- package/dist/notifications/define-notifications.d.ts.map +1 -1
- package/dist/notifications/define-notifications.js +2 -1
- package/dist/notifications/index.d.ts +6 -2
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +5 -1
- package/dist/notifications/mount-guard.d.ts +8 -0
- package/dist/notifications/mount-guard.d.ts.map +1 -0
- package/dist/notifications/mount-guard.js +19 -0
- package/dist/notifications/notify.d.ts +58 -1
- package/dist/notifications/notify.d.ts.map +1 -1
- package/dist/notifications/notify.js +46 -2
- package/dist/notifications/overlay.d.ts.map +1 -1
- package/dist/notifications/overlay.js +2 -0
- package/dist/notifications/store.d.ts +7 -0
- package/dist/notifications/store.d.ts.map +1 -1
- package/dist/provider/index.d.ts +37 -5
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +66 -28
- package/dist/provider/lab-theme.d.ts.map +1 -1
- package/dist/provider/lab-theme.js +2 -1
- package/dist/query/devtools.d.ts.map +1 -1
- package/dist/query/devtools.js +1 -0
- package/dist/router-tanstack/field.d.ts +1 -1
- package/dist/router-tanstack/field.d.ts.map +1 -1
- package/dist/router-tanstack/index.d.ts +1 -1
- package/dist/router-tanstack/index.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.d.ts +4 -1
- package/dist/router-tanstack/search-store.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.js +92 -8
- package/dist/router-tanstack/use-nav.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.js +1 -1
- package/dist/section/index.d.ts +1 -1
- package/dist/section/index.d.ts.map +1 -1
- package/dist/section/section.d.ts +36 -2
- package/dist/section/section.d.ts.map +1 -1
- package/dist/section/section.js +49 -57
- package/dist/section/section.module.css +11 -0
- package/dist/shell/account-types.d.ts +5 -2
- package/dist/shell/account-types.d.ts.map +1 -1
- package/dist/shell/app-brand.d.ts +13 -0
- package/dist/shell/app-brand.d.ts.map +1 -0
- package/dist/shell/app-brand.js +94 -0
- package/dist/shell/app-brand.module.css +109 -0
- package/dist/shell/app-brand.module.css.d.ts +14 -0
- package/dist/shell/app-breadcrumbs.d.ts +4 -2
- package/dist/shell/app-breadcrumbs.d.ts.map +1 -1
- package/dist/shell/app-breadcrumbs.js +33 -22
- package/dist/shell/app-header.module.css +10 -5
- package/dist/shell/app-main.module.css +107 -0
- package/dist/shell/app-main.module.css.d.ts +11 -0
- package/dist/shell/app-mobile-nav.d.ts +3 -2
- package/dist/shell/app-mobile-nav.d.ts.map +1 -1
- package/dist/shell/app-mobile-nav.js +29 -15
- package/dist/shell/app-mobile-nav.module.css +48 -27
- package/dist/shell/app-mobile-nav.module.css.d.ts +0 -1
- package/dist/shell/app-sidebar-account.d.ts +2 -1
- package/dist/shell/app-sidebar-account.d.ts.map +1 -1
- package/dist/shell/app-sidebar-account.js +57 -22
- package/dist/shell/app-sidebar.d.ts +9 -3
- package/dist/shell/app-sidebar.d.ts.map +1 -1
- package/dist/shell/app-sidebar.js +55 -109
- package/dist/shell/app-sidebar.module.css +53 -96
- package/dist/shell/app-sidebar.module.css.d.ts +0 -5
- package/dist/shell/index.d.ts +14 -6
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +47 -12
- package/dist/shell/isomorphic-layout-effect.d.ts +14 -0
- package/dist/shell/isomorphic-layout-effect.d.ts.map +1 -0
- package/dist/shell/isomorphic-layout-effect.js +5 -0
- package/dist/shell/mobile-nav-model.d.ts.map +1 -1
- package/dist/shell/mobile-nav-model.js +27 -6
- package/dist/shell/nav-count-badge.d.ts +5 -3
- package/dist/shell/nav-count-badge.d.ts.map +1 -1
- package/dist/shell/nav-count-badge.js +3 -1
- package/dist/shell/page-aside.d.ts +43 -0
- package/dist/shell/page-aside.d.ts.map +1 -0
- package/dist/shell/page-aside.js +202 -0
- package/dist/shell/page-aside.module.css +174 -0
- package/dist/shell/page-aside.module.css.d.ts +14 -0
- package/dist/shell/page-bar.d.ts +55 -15
- package/dist/shell/page-bar.d.ts.map +1 -1
- package/dist/shell/page-bar.js +130 -41
- package/dist/shell/page-bar.module.css +107 -13
- package/dist/shell/page-bar.module.css.d.ts +4 -1
- package/dist/shell/sidebar-search.d.ts +4 -2
- package/dist/shell/sidebar-search.d.ts.map +1 -1
- package/dist/shell/sidebar-search.js +9 -4
- package/dist/shell/sidebar-search.module.css +1 -1
- package/dist/state/fields.d.ts +227 -34
- package/dist/state/fields.d.ts.map +1 -1
- package/dist/state/fields.js +77 -30
- package/dist/state/persisted-or-local.d.ts +9 -0
- package/dist/state/persisted-or-local.d.ts.map +1 -0
- package/dist/state/persisted-or-local.js +24 -0
- package/dist/state/persisted.d.ts +12 -0
- package/dist/state/persisted.d.ts.map +1 -1
- package/dist/state/persisted.js +36 -18
- package/dist/state.d.ts +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +2 -6
- package/dist/surfaces.d.ts +12 -11
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +43 -12
- package/dist/theme/ctl-theme.d.ts.map +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +102 -17
- package/dist/theme/nav-link.module.css +37 -26
- package/dist/theme/segmented-control.module.css +22 -0
- package/dist/theme/segmented-control.module.css.d.ts +1 -0
- package/dist/theme-lab/boot.d.ts +66 -0
- package/dist/theme-lab/boot.d.ts.map +1 -0
- package/dist/theme-lab/boot.js +82 -0
- package/dist/theme-lab/index.d.ts +4 -43
- package/dist/theme-lab/index.d.ts.map +1 -1
- package/dist/theme-lab/index.js +9 -69
- package/dist/theme-toggle/index.d.ts +3 -2
- package/dist/theme-toggle/index.d.ts.map +1 -1
- package/dist/theme-toggle/index.js +8 -2
- package/dist/tokens/index.d.ts +42 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +35 -6
- package/dist/tokens/palette.d.ts +45 -25
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +31 -14
- package/dist/tokens.css +4 -5
- package/dist/utils/is-dev.d.ts +3 -0
- package/dist/utils/is-dev.d.ts.map +1 -0
- package/dist/utils/is-dev.js +6 -0
- package/dist/widget-header/delta-badge.d.ts +7 -1
- package/dist/widget-header/delta-badge.d.ts.map +1 -1
- package/dist/widget-header/delta-badge.js +8 -1
- package/dist/widget-header/index.d.ts +2 -2
- package/dist/widget-header/index.d.ts.map +1 -1
- package/dist/widget-header/index.js +3 -1
- package/dist/widget-header/widget-header.d.ts +99 -4
- package/dist/widget-header/widget-header.d.ts.map +1 -1
- package/dist/widget-header/widget-header.js +45 -18
- package/dist/widget-header/widget-header.module.css +87 -7
- package/dist/widget-header/widget-header.module.css.d.ts +1 -0
- package/llms.txt +6 -6
- package/package.json +49 -25
- package/src/agent/coalesce.ts +2 -1
- package/src/agent/merge.ts +2 -1
- package/src/agent/part-list.tsx +2 -0
- package/src/agent/stick-to-bottom.tsx +9 -11
- package/src/agent-chat/composer.tsx +124 -103
- package/src/agent-chat/relative-time.ts +2 -1
- package/src/agent-chat/thread-detail-panel.tsx +9 -5
- package/src/agent-chat/thread-feed-row.tsx +17 -9
- package/src/agent-chat/thread-feed.tsx +9 -3
- package/src/agent-chat/thread-message.tsx +48 -13
- package/src/agent-chat/thread-outcome-card.tsx +9 -1
- package/src/agent-chat/thread-workspace.tsx +72 -33
- package/src/agent-chat/tool-chip.tsx +8 -2
- package/src/charts/hooks/useBandPlot.ts +26 -8
- package/src/charts/index.ts +39 -4
- package/src/charts/kinds/BandStrip.tsx +36 -14
- package/src/charts/kinds/Bars.tsx +67 -16
- package/src/charts/kinds/Donut.tsx +30 -3
- package/src/charts/kinds/DualPanel.tsx +56 -10
- package/src/charts/kinds/Heatmap.tsx +90 -33
- package/src/charts/kinds/MirroredBars.tsx +21 -3
- package/src/charts/kinds/MultiLine.tsx +61 -18
- package/src/charts/kinds/StackedArea.tsx +77 -6
- package/src/charts/kinds/ZonedLine.tsx +71 -31
- package/src/charts/layout/auto-margin.ts +134 -21
- package/src/charts/layout/log-ticks.ts +90 -0
- package/src/charts/primitives/Axes.tsx +33 -5
- package/src/charts/primitives/CartesianChart.tsx +194 -41
- package/src/charts/primitives/ChartCard.tsx +66 -25
- package/src/charts/primitives/ChartFrame.tsx +107 -26
- package/src/charts/primitives/ChartLegend.tsx +43 -13
- package/src/charts/primitives/ChartPending.tsx +185 -7
- package/src/charts/primitives/ChartTooltip.tsx +37 -5
- package/src/charts/primitives/Crosshair.tsx +6 -3
- package/src/charts/primitives/chart-frame-layout.ts +212 -0
- package/src/charts/primitives/chart-tier.tsx +37 -0
- package/src/charts/series.ts +77 -1
- package/src/charts/sparklines/BarSparkline.tsx +11 -3
- package/src/charts/sparklines/LineSparkline.tsx +18 -4
- package/src/charts/sparklines/index.ts +2 -2
- package/src/charts/utils/format.ts +163 -2
- package/src/charts/utils/ticks.ts +149 -4
- package/src/cli/index.ts +8 -3
- package/src/commands/ShortcutsHelp.tsx +10 -3
- package/src/commands/define-commands.ts +2 -2
- package/src/commands/define-overlays.ts +216 -1
- package/src/commands/index.ts +12 -0
- package/src/commands/overlays-mount.tsx +60 -26
- package/src/common/errors.ts +73 -0
- package/src/common/index.ts +21 -0
- package/src/common/props.ts +71 -0
- package/src/common/query-state-like.ts +64 -0
- package/src/common/refs.ts +58 -0
- package/src/common/scroll-parent.ts +42 -0
- package/src/common/validate.ts +94 -0
- package/src/connectivity/connectivity-indicator.tsx +6 -1
- package/src/connectivity/connectivity-provider.tsx +4 -1
- package/src/connectivity/index.ts +1 -0
- package/src/connectivity/types.ts +5 -2
- package/src/connectivity/use-connectivity.ts +3 -2
- package/src/content/article-layout.module.css +11 -4
- package/src/content/callout.tsx +13 -7
- package/src/content/guide.tsx +14 -4
- package/src/content/heading-anchor.tsx +14 -3
- package/src/content/index.ts +2 -0
- package/src/content/markdown.tsx +2 -0
- package/src/content/prose.module.css +9 -7
- package/src/content/reading-progress.tsx +40 -15
- package/src/content/slug.ts +4 -0
- package/src/content/toc.tsx +47 -10
- package/src/controls/actions.tsx +89 -9
- package/src/controls/compare-filter.tsx +20 -3
- package/src/controls/control-group.tsx +11 -4
- package/src/controls/controls.module.css +169 -186
- package/src/controls/controls.module.css.d.ts +9 -11
- package/src/controls/enum-filter.tsx +46 -19
- package/src/controls/filter-context.tsx +21 -8
- package/src/controls/filter-pill.tsx +6 -3
- package/src/controls/filter-set.tsx +32 -13
- package/src/controls/filter-sheet.tsx +44 -194
- package/src/controls/index.ts +8 -0
- package/src/controls/multi-select-filter.tsx +179 -29
- package/src/controls/number-filter.tsx +329 -0
- package/src/controls/panel-row.module.css +86 -0
- package/src/controls/panel-row.module.css.d.ts +13 -0
- package/src/controls/panel-row.tsx +392 -0
- package/src/controls/range-filter.tsx +133 -43
- package/src/controls/search-filter.tsx +31 -13
- package/src/controls/select-filter.tsx +11 -1
- package/src/controls/slider-control.tsx +159 -0
- package/src/controls/sync-button.tsx +13 -3
- package/src/controls/toggle-filter.tsx +37 -17
- package/src/controls/view-tabs.tsx +63 -11
- package/src/controls-dates/date-range-picker.tsx +8 -1
- package/src/dashboard/delta-badge.tsx +5 -1
- package/src/dashboard/empty-state.tsx +72 -25
- package/src/dashboard/index.ts +19 -2
- package/src/dashboard/query-state.tsx +154 -84
- package/src/dashboard/settings-section.tsx +87 -31
- package/src/dashboard/stat-card.module.css +112 -26
- package/src/dashboard/stat-card.module.css.d.ts +5 -0
- package/src/dashboard/stat-card.tsx +207 -68
- package/src/dashboard/stat-group.module.css +66 -0
- package/src/dashboard/stat-group.module.css.d.ts +8 -0
- package/src/dashboard/stat-group.tsx +74 -0
- package/src/dashboard/widget-grid.module.css +53 -0
- package/src/dashboard/widget-grid.module.css.d.ts +9 -0
- package/src/dashboard/widget-grid.tsx +127 -0
- package/src/data/data-table.module.css +64 -0
- package/src/data/data-table.module.css.d.ts +11 -0
- package/src/data/data-table.tsx +927 -346
- package/src/data/index.ts +30 -2
- package/src/data/query-branch.ts +53 -0
- package/src/data/table.ts +5 -0
- package/src/data/virtual-list.tsx +189 -55
- package/src/data/virtual.ts +5 -1
- package/src/forms/FormErrorSummary.tsx +13 -6
- package/src/forms/create-form.ts +2 -2
- package/src/forms/field.ts +60 -11
- package/src/forms/form-layout.module.css +145 -0
- package/src/forms/form-layout.module.css.d.ts +20 -0
- package/src/forms/form-layout.tsx +305 -0
- package/src/forms/form-state.tsx +94 -0
- package/src/forms/index.ts +38 -7
- package/src/forms/use-field-array.ts +94 -0
- package/src/forms/use-form-draft.ts +145 -53
- package/src/forms/use-form-submit.ts +199 -0
- package/src/guard/index.ts +91 -23
- package/src/index.ts +79 -10
- package/src/nav/types.ts +15 -6
- package/src/notifications/bell.tsx +18 -4
- package/src/notifications/center.tsx +18 -5
- package/src/notifications/define-notifications.ts +64 -18
- package/src/notifications/index.ts +12 -1
- package/src/notifications/mount-guard.ts +41 -0
- package/src/notifications/notify.tsx +122 -3
- package/src/notifications/overlay.tsx +2 -0
- package/src/notifications/store.ts +7 -0
- package/src/provider/index.tsx +101 -13
- package/src/provider/lab-theme.ts +2 -1
- package/src/query/devtools.tsx +1 -0
- package/src/router-tanstack/field.ts +5 -0
- package/src/router-tanstack/index.ts +4 -0
- package/src/router-tanstack/search-store.ts +171 -12
- package/src/router-tanstack/use-nav.ts +18 -13
- package/src/section/index.ts +1 -1
- package/src/section/section.module.css +11 -0
- package/src/section/section.tsx +163 -96
- package/src/shell/account-types.ts +5 -2
- package/src/shell/app-brand.module.css +109 -0
- package/src/shell/app-brand.module.css.d.ts +14 -0
- package/src/shell/app-brand.tsx +140 -0
- package/src/shell/app-breadcrumbs.tsx +19 -9
- package/src/shell/app-header.module.css +10 -5
- package/src/shell/app-main.module.css +107 -0
- package/src/shell/app-main.module.css.d.ts +11 -0
- package/src/shell/app-mobile-nav.module.css +48 -27
- package/src/shell/app-mobile-nav.module.css.d.ts +0 -1
- package/src/shell/app-mobile-nav.tsx +43 -11
- package/src/shell/app-sidebar-account.tsx +29 -6
- package/src/shell/app-sidebar.module.css +53 -96
- package/src/shell/app-sidebar.module.css.d.ts +0 -5
- package/src/shell/app-sidebar.tsx +40 -113
- package/src/shell/index.tsx +156 -65
- package/src/shell/isomorphic-layout-effect.ts +14 -0
- package/src/shell/mobile-nav-model.ts +66 -10
- package/src/shell/nav-count-badge.tsx +6 -1
- package/src/shell/page-aside.module.css +174 -0
- package/src/shell/page-aside.module.css.d.ts +14 -0
- package/src/shell/page-aside.tsx +377 -0
- package/src/shell/page-bar.module.css +107 -13
- package/src/shell/page-bar.module.css.d.ts +4 -1
- package/src/shell/page-bar.tsx +294 -94
- package/src/shell/sidebar-search.module.css +1 -1
- package/src/shell/sidebar-search.tsx +13 -4
- package/src/state/fields.ts +360 -69
- package/src/state/persisted-or-local.ts +50 -0
- package/src/state/persisted.ts +76 -26
- package/src/state.ts +4 -7
- package/src/surfaces.ts +43 -12
- package/src/theme/ctl-theme.tsx +10 -0
- package/src/theme/index.ts +129 -16
- package/src/theme/nav-link.module.css +37 -26
- package/src/theme/segmented-control.module.css +22 -0
- package/src/theme/segmented-control.module.css.d.ts +1 -0
- package/src/theme-lab/boot.ts +140 -0
- package/src/theme-lab/index.tsx +21 -112
- package/src/theme-toggle/index.tsx +10 -3
- package/src/tokens/index.ts +50 -6
- package/src/tokens/palette.ts +58 -30
- package/src/utils/is-dev.ts +4 -0
- package/src/widget-header/delta-badge.tsx +25 -5
- package/src/widget-header/index.ts +10 -2
- package/src/widget-header/widget-header.module.css +87 -7
- package/src/widget-header/widget-header.module.css.d.ts +1 -0
- package/src/widget-header/widget-header.tsx +166 -42
- package/dist/agent/adapter.test.d.ts +0 -2
- package/dist/agent/adapter.test.d.ts.map +0 -1
- package/dist/agent/ai-sdk-transport.test.d.ts +0 -2
- package/dist/agent/ai-sdk-transport.test.d.ts.map +0 -1
- package/dist/agent/coalesce.test.d.ts +0 -2
- package/dist/agent/coalesce.test.d.ts.map +0 -1
- package/dist/agent/foreign.test.d.ts +0 -2
- package/dist/agent/foreign.test.d.ts.map +0 -1
- package/dist/agent/id.test.d.ts +0 -2
- package/dist/agent/id.test.d.ts.map +0 -1
- package/dist/agent/merge.test.d.ts +0 -2
- package/dist/agent/merge.test.d.ts.map +0 -1
- package/dist/agent/part-list.test.d.ts +0 -2
- package/dist/agent/part-list.test.d.ts.map +0 -1
- package/dist/agent/parts.test.d.ts +0 -2
- package/dist/agent/parts.test.d.ts.map +0 -1
- package/dist/agent/thread.test.d.ts +0 -2
- package/dist/agent/thread.test.d.ts.map +0 -1
- package/dist/agent/transport.test.d.ts +0 -2
- package/dist/agent/transport.test.d.ts.map +0 -1
- package/dist/agent/use-agent-stream.test.d.ts +0 -2
- package/dist/agent/use-agent-stream.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.foreign.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.foreign.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.resume.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.resume.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.wedge.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.wedge.test.d.ts.map +0 -1
- package/dist/agent-chat/composer.test.d.ts +0 -2
- package/dist/agent-chat/composer.test.d.ts.map +0 -1
- package/dist/agent-chat/relative-time.test.d.ts +0 -2
- package/dist/agent-chat/relative-time.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed-row.test.d.ts +0 -2
- package/dist/agent-chat/thread-feed-row.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed.test.d.ts +0 -2
- package/dist/agent-chat/thread-feed.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-message.test.d.ts +0 -2
- package/dist/agent-chat/thread-message.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-workspace.test.d.ts +0 -2
- package/dist/agent-chat/thread-workspace.test.d.ts.map +0 -1
- package/dist/agent-chat/tool-chip.test.d.ts +0 -2
- package/dist/agent-chat/tool-chip.test.d.ts.map +0 -1
- package/dist/agent-chat/virtualize.type-guard.test.d.ts +0 -2
- package/dist/agent-chat/virtualize.type-guard.test.d.ts.map +0 -1
- package/dist/charts/cursor/resolve.test.d.ts +0 -2
- package/dist/charts/cursor/resolve.test.d.ts.map +0 -1
- package/dist/charts/cursor/store.test.d.ts +0 -2
- package/dist/charts/cursor/store.test.d.ts.map +0 -1
- package/dist/charts/kinds/BandStrip.test.d.ts +0 -2
- package/dist/charts/kinds/BandStrip.test.d.ts.map +0 -1
- package/dist/charts/kinds/Bars.test.d.ts +0 -2
- package/dist/charts/kinds/Bars.test.d.ts.map +0 -1
- package/dist/charts/kinds/DualPanel.test.d.ts +0 -2
- package/dist/charts/kinds/DualPanel.test.d.ts.map +0 -1
- package/dist/charts/kinds/MirroredBars.test.d.ts +0 -2
- package/dist/charts/kinds/MirroredBars.test.d.ts.map +0 -1
- package/dist/charts/kinds/MultiLine.test.d.ts +0 -2
- package/dist/charts/kinds/MultiLine.test.d.ts.map +0 -1
- package/dist/charts/kinds/StackedArea.test.d.ts +0 -2
- package/dist/charts/kinds/StackedArea.test.d.ts.map +0 -1
- package/dist/charts/kinds/ZonedLine.test.d.ts +0 -2
- package/dist/charts/kinds/ZonedLine.test.d.ts.map +0 -1
- package/dist/charts/layout/auto-margin.test.d.ts +0 -2
- package/dist/charts/layout/auto-margin.test.d.ts.map +0 -1
- package/dist/charts/primitives/CartesianChart.test.d.ts +0 -2
- package/dist/charts/primitives/CartesianChart.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartCard.test.d.ts +0 -2
- package/dist/charts/primitives/ChartCard.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartFrame.test.d.ts +0 -2
- package/dist/charts/primitives/ChartFrame.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartLegend.test.d.ts +0 -2
- package/dist/charts/primitives/ChartLegend.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartTooltip.test.d.ts +0 -2
- package/dist/charts/primitives/ChartTooltip.test.d.ts.map +0 -1
- package/dist/charts/primitives/XZoneRects.test.d.ts +0 -2
- package/dist/charts/primitives/XZoneRects.test.d.ts.map +0 -1
- package/dist/charts/series.test.d.ts +0 -2
- package/dist/charts/series.test.d.ts.map +0 -1
- package/dist/charts/utils/domain.test.d.ts +0 -2
- package/dist/charts/utils/domain.test.d.ts.map +0 -1
- package/dist/charts/utils/measure-text.test.d.ts +0 -2
- package/dist/charts/utils/measure-text.test.d.ts.map +0 -1
- package/dist/cli/check-coverage.test.d.ts +0 -2
- package/dist/cli/check-coverage.test.d.ts.map +0 -1
- package/dist/cli/check-theme.test.d.ts +0 -2
- package/dist/cli/check-theme.test.d.ts.map +0 -1
- package/dist/cli/help.test.d.ts +0 -2
- package/dist/cli/help.test.d.ts.map +0 -1
- package/dist/cli/init-sync.test.d.ts +0 -2
- package/dist/cli/init-sync.test.d.ts.map +0 -1
- package/dist/cli/placement-engine.test.d.ts +0 -2
- package/dist/cli/placement-engine.test.d.ts.map +0 -1
- package/dist/cli/shipped-versions.test.d.ts +0 -2
- package/dist/cli/shipped-versions.test.d.ts.map +0 -1
- package/dist/cli/tarball-parity.test.d.ts +0 -2
- package/dist/cli/tarball-parity.test.d.ts.map +0 -1
- package/dist/cli/template-format.test.d.ts +0 -2
- package/dist/cli/template-format.test.d.ts.map +0 -1
- package/dist/cli/template-ledger.test.d.ts +0 -2
- package/dist/cli/template-ledger.test.d.ts.map +0 -1
- package/dist/cli/tokens-css.test.d.ts +0 -2
- package/dist/cli/tokens-css.test.d.ts.map +0 -1
- package/dist/cli/toolchain-wiring.test.d.ts +0 -2
- package/dist/cli/toolchain-wiring.test.d.ts.map +0 -1
- package/dist/cli/waiver-audit.test.d.ts +0 -2
- package/dist/cli/waiver-audit.test.d.ts.map +0 -1
- package/dist/content/article-actions.test.d.ts +0 -2
- package/dist/content/article-actions.test.d.ts.map +0 -1
- package/dist/content/article-model.test.d.ts +0 -2
- package/dist/content/article-model.test.d.ts.map +0 -1
- package/dist/content/block-split.test.d.ts +0 -2
- package/dist/content/block-split.test.d.ts.map +0 -1
- package/dist/content/heading-components.test.d.ts +0 -2
- package/dist/content/heading-components.test.d.ts.map +0 -1
- package/dist/content/markdown.test.d.ts +0 -2
- package/dist/content/markdown.test.d.ts.map +0 -1
- package/dist/content/prose.module.css.test.d.ts +0 -2
- package/dist/content/prose.module.css.test.d.ts.map +0 -1
- package/dist/content/sanitize.test.d.ts +0 -2
- package/dist/content/sanitize.test.d.ts.map +0 -1
- package/dist/content/slug.test.d.ts +0 -2
- package/dist/content/slug.test.d.ts.map +0 -1
- package/dist/controls/actions.test.d.ts +0 -2
- package/dist/controls/actions.test.d.ts.map +0 -1
- package/dist/controls/actions.type-guard.test.d.ts +0 -2
- package/dist/controls/actions.type-guard.test.d.ts.map +0 -1
- package/dist/controls/control-group.test.d.ts +0 -2
- package/dist/controls/control-group.test.d.ts.map +0 -1
- package/dist/controls/controls.router.test.d.ts +0 -2
- package/dist/controls/controls.router.test.d.ts.map +0 -1
- package/dist/controls/filter-set.test.d.ts +0 -2
- package/dist/controls/filter-set.test.d.ts.map +0 -1
- package/dist/controls/peer-boundary.test.d.ts +0 -2
- package/dist/controls/peer-boundary.test.d.ts.map +0 -1
- package/dist/controls/props-contract.test.d.ts +0 -2
- package/dist/controls/props-contract.test.d.ts.map +0 -1
- package/dist/controls/sync-button.test.d.ts +0 -2
- package/dist/controls/sync-button.test.d.ts.map +0 -1
- package/dist/dashboard/query-state.test.d.ts +0 -2
- package/dist/dashboard/query-state.test.d.ts.map +0 -1
- package/dist/dashboard/settings-section.test.d.ts +0 -2
- package/dist/dashboard/settings-section.test.d.ts.map +0 -1
- package/dist/dashboard/stat-card.test.d.ts +0 -2
- package/dist/dashboard/stat-card.test.d.ts.map +0 -1
- package/dist/data/data-table.test.d.ts +0 -2
- package/dist/data/data-table.test.d.ts.map +0 -1
- package/dist/guard/check-source.test.d.ts +0 -2
- package/dist/guard/check-source.test.d.ts.map +0 -1
- package/dist/guard/grace.test.d.ts +0 -20
- package/dist/guard/grace.test.d.ts.map +0 -1
- package/dist/guard/guard-hook.test.d.ts +0 -2
- package/dist/guard/guard-hook.test.d.ts.map +0 -1
- package/dist/provider/index.test.d.ts +0 -2
- package/dist/provider/index.test.d.ts.map +0 -1
- package/dist/provider/lab-theme.test.d.ts +0 -2
- package/dist/provider/lab-theme.test.d.ts.map +0 -1
- package/dist/query/error-message.test.d.ts +0 -2
- package/dist/query/error-message.test.d.ts.map +0 -1
- package/dist/router-tanstack/multi-search-param-store.test.d.ts +0 -2
- package/dist/router-tanstack/multi-search-param-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/nav.test.d.ts +0 -2
- package/dist/router-tanstack/nav.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-param-store.test.d.ts +0 -2
- package/dist/router-tanstack/search-param-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-store.router.test.d.ts +0 -2
- package/dist/router-tanstack/search-store.router.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-store.test.d.ts +0 -2
- package/dist/router-tanstack/search-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/use-nav.test.d.ts +0 -2
- package/dist/router-tanstack/use-nav.test.d.ts.map +0 -1
- package/dist/section/section.test.d.ts +0 -2
- package/dist/section/section.test.d.ts.map +0 -1
- package/dist/shell/app-mobile-nav.test.d.ts +0 -2
- package/dist/shell/app-mobile-nav.test.d.ts.map +0 -1
- package/dist/shell/app-sidebar.test.d.ts +0 -2
- package/dist/shell/app-sidebar.test.d.ts.map +0 -1
- package/dist/shell/index.test.d.ts +0 -2
- package/dist/shell/index.test.d.ts.map +0 -1
- package/dist/shell/mobile-nav-model.test.d.ts +0 -2
- package/dist/shell/mobile-nav-model.test.d.ts.map +0 -1
- package/dist/shell/page-bar.test.d.ts +0 -2
- package/dist/shell/page-bar.test.d.ts.map +0 -1
- package/dist/state/fields.test.d.ts +0 -2
- package/dist/state/fields.test.d.ts.map +0 -1
- package/dist/styles.floor.test.d.ts +0 -2
- package/dist/styles.floor.test.d.ts.map +0 -1
- package/dist/theme/border-coverage.test.d.ts +0 -18
- package/dist/theme/border-coverage.test.d.ts.map +0 -1
- package/dist/theme/contrast.test.d.ts +0 -2
- package/dist/theme/contrast.test.d.ts.map +0 -1
- package/dist/theme/ctl-theme.test.d.ts +0 -2
- package/dist/theme/ctl-theme.test.d.ts.map +0 -1
- package/dist/theme/ctl-tier-coverage.test.d.ts +0 -2
- package/dist/theme/ctl-tier-coverage.test.d.ts.map +0 -1
- package/dist/theme/density-option.test.d.ts +0 -2
- package/dist/theme/density-option.test.d.ts.map +0 -1
- package/dist/theme/density-relations.test.d.ts +0 -2
- package/dist/theme/density-relations.test.d.ts.map +0 -1
- package/dist/theme/derive-theme.test.d.ts +0 -2
- package/dist/theme/derive-theme.test.d.ts.map +0 -1
- package/dist/theme/divider-law.test.d.ts +0 -2
- package/dist/theme/divider-law.test.d.ts.map +0 -1
- package/dist/theme/fonts-option.test.d.ts +0 -2
- package/dist/theme/fonts-option.test.d.ts.map +0 -1
- package/dist/theme/icon-slot.test.d.ts +0 -2
- package/dist/theme/icon-slot.test.d.ts.map +0 -1
- package/dist/theme/layout-rhythm-css.test.d.ts +0 -2
- package/dist/theme/layout-rhythm-css.test.d.ts.map +0 -1
- package/dist/theme/radius-option.test.d.ts +0 -2
- package/dist/theme/radius-option.test.d.ts.map +0 -1
- package/dist/theme/radius.test.d.ts +0 -2
- package/dist/theme/radius.test.d.ts.map +0 -1
- package/dist/theme/shadow-surfaces.test.d.ts +0 -26
- package/dist/theme/shadow-surfaces.test.d.ts.map +0 -1
- package/dist/theme/spacing.test.d.ts +0 -2
- package/dist/theme/spacing.test.d.ts.map +0 -1
- package/dist/theme/use-basalt-spacing.test.d.ts +0 -2
- package/dist/theme/use-basalt-spacing.test.d.ts.map +0 -1
- package/dist/theme-lab/derive-controls.test.d.ts +0 -2
- package/dist/theme-lab/derive-controls.test.d.ts.map +0 -1
- package/dist/theme-lab/derive-state.test.d.ts +0 -2
- package/dist/theme-lab/derive-state.test.d.ts.map +0 -1
- package/dist/theme-lab/theme-lab.test.d.ts +0 -2
- package/dist/theme-lab/theme-lab.test.d.ts.map +0 -1
- package/dist/tokens/build-fonts-css.test.d.ts +0 -2
- package/dist/tokens/build-fonts-css.test.d.ts.map +0 -1
- package/dist/tokens/build-radius-css.test.d.ts +0 -2
- package/dist/tokens/build-radius-css.test.d.ts.map +0 -1
- package/dist/tokens/chart-margin.test.d.ts +0 -2
- package/dist/tokens/chart-margin.test.d.ts.map +0 -1
- package/dist/tokens/density.test.d.ts +0 -2
- package/dist/tokens/density.test.d.ts.map +0 -1
- package/dist/tokens/derive-radius.test.d.ts +0 -2
- package/dist/tokens/derive-radius.test.d.ts.map +0 -1
- package/dist/tokens/derive.test.d.ts +0 -2
- package/dist/tokens/derive.test.d.ts.map +0 -1
- package/dist/tokens/palette.test.d.ts +0 -2
- package/dist/tokens/palette.test.d.ts.map +0 -1
- package/dist/tokens/text-scale.test.d.ts +0 -2
- package/dist/tokens/text-scale.test.d.ts.map +0 -1
- package/dist/vite-color-mix.test.d.ts +0 -2
- package/dist/vite-color-mix.test.d.ts.map +0 -1
- package/dist/vite.test.d.ts +0 -2
- package/dist/vite.test.d.ts.map +0 -1
- package/dist/widget-header/delta-badge.test.d.ts +0 -2
- package/dist/widget-header/delta-badge.test.d.ts.map +0 -1
- package/dist/widget-header/no-mantine.test.d.ts +0 -2
- package/dist/widget-header/no-mantine.test.d.ts.map +0 -1
- package/dist/widget-header/widget-header.test.d.ts +0 -2
- package/dist/widget-header/widget-header.test.d.ts.map +0 -1
- package/src/agent/adapter.test.ts +0 -1640
- package/src/agent/ai-sdk-transport.test.ts +0 -658
- package/src/agent/coalesce.test.ts +0 -387
- package/src/agent/foreign.test.ts +0 -51
- package/src/agent/id.test.ts +0 -169
- package/src/agent/merge.test.ts +0 -206
- package/src/agent/part-list.test.tsx +0 -112
- package/src/agent/parts.test.ts +0 -720
- package/src/agent/thread.test.ts +0 -220
- package/src/agent/transport.test.ts +0 -70
- package/src/agent/use-agent-stream.test.tsx +0 -287
- package/src/agent/use-agent-thread-runs.foreign.test.tsx +0 -138
- package/src/agent/use-agent-thread-runs.resume.test.tsx +0 -294
- package/src/agent/use-agent-thread-runs.test.tsx +0 -1120
- package/src/agent/use-agent-thread-runs.wedge.test.tsx +0 -387
- package/src/agent-chat/composer.test.tsx +0 -924
- package/src/agent-chat/relative-time.test.ts +0 -95
- package/src/agent-chat/thread-feed-row.test.tsx +0 -510
- package/src/agent-chat/thread-feed.test.tsx +0 -241
- package/src/agent-chat/thread-message.test.tsx +0 -1285
- package/src/agent-chat/thread-workspace.test.tsx +0 -169
- package/src/agent-chat/tool-chip.test.tsx +0 -139
- package/src/agent-chat/virtualize.type-guard.test.ts +0 -49
- package/src/charts/cursor/resolve.test.ts +0 -151
- package/src/charts/cursor/store.test.ts +0 -64
- package/src/charts/kinds/BandStrip.test.tsx +0 -282
- package/src/charts/kinds/Bars.test.tsx +0 -183
- package/src/charts/kinds/DualPanel.test.tsx +0 -527
- package/src/charts/kinds/MirroredBars.test.tsx +0 -232
- package/src/charts/kinds/MultiLine.test.tsx +0 -218
- package/src/charts/kinds/StackedArea.test.tsx +0 -114
- package/src/charts/kinds/ZonedLine.test.tsx +0 -147
- package/src/charts/layout/auto-margin.test.ts +0 -42
- package/src/charts/primitives/CartesianChart.test.tsx +0 -647
- package/src/charts/primitives/ChartCard.test.tsx +0 -66
- package/src/charts/primitives/ChartFrame.test.tsx +0 -142
- package/src/charts/primitives/ChartLegend.test.tsx +0 -78
- package/src/charts/primitives/ChartTooltip.test.tsx +0 -44
- package/src/charts/primitives/XZoneRects.test.tsx +0 -123
- package/src/charts/series.test.ts +0 -112
- package/src/charts/utils/domain.test.ts +0 -54
- package/src/charts/utils/measure-text.test.ts +0 -36
- package/src/cli/check-coverage.test.ts +0 -297
- package/src/cli/check-theme.test.ts +0 -837
- package/src/cli/help.test.ts +0 -170
- package/src/cli/init-sync.test.ts +0 -343
- package/src/cli/placement-engine.test.ts +0 -298
- package/src/cli/shipped-versions.test.ts +0 -83
- package/src/cli/tarball-parity.test.ts +0 -44
- package/src/cli/template-format.test.ts +0 -64
- package/src/cli/template-ledger.test.ts +0 -219
- package/src/cli/tokens-css.test.ts +0 -249
- package/src/cli/toolchain-wiring.test.ts +0 -1358
- package/src/cli/waiver-audit.test.ts +0 -215
- package/src/content/article-actions.test.ts +0 -78
- package/src/content/article-model.test.ts +0 -119
- package/src/content/block-split.test.ts +0 -75
- package/src/content/heading-components.test.tsx +0 -65
- package/src/content/markdown.test.tsx +0 -603
- package/src/content/prose.module.css.test.ts +0 -39
- package/src/content/sanitize.test.ts +0 -659
- package/src/content/slug.test.ts +0 -62
- package/src/controls/actions.test.tsx +0 -252
- package/src/controls/actions.type-guard.test.ts +0 -63
- package/src/controls/control-group.test.tsx +0 -229
- package/src/controls/controls.router.test.tsx +0 -637
- package/src/controls/filter-set.test.tsx +0 -472
- package/src/controls/peer-boundary.test.ts +0 -85
- package/src/controls/props-contract.test.tsx +0 -106
- package/src/controls/sync-button.test.tsx +0 -183
- package/src/dashboard/query-state.test.tsx +0 -152
- package/src/dashboard/settings-section.test.tsx +0 -56
- package/src/dashboard/stat-card.test.tsx +0 -154
- package/src/data/data-table.test.tsx +0 -434
- package/src/guard/check-source.test.ts +0 -3355
- package/src/guard/grace.test.ts +0 -149
- package/src/guard/guard-hook.test.ts +0 -203
- package/src/provider/index.test.tsx +0 -101
- package/src/provider/lab-theme.test.ts +0 -147
- package/src/query/error-message.test.ts +0 -67
- package/src/router-tanstack/multi-search-param-store.test.ts +0 -124
- package/src/router-tanstack/nav.test.ts +0 -111
- package/src/router-tanstack/search-param-store.test.ts +0 -135
- package/src/router-tanstack/search-store.router.test.tsx +0 -661
- package/src/router-tanstack/search-store.test.ts +0 -418
- package/src/router-tanstack/use-nav.test.tsx +0 -187
- package/src/section/section.test.tsx +0 -204
- package/src/shell/app-mobile-nav.test.tsx +0 -403
- package/src/shell/app-sidebar.test.tsx +0 -509
- package/src/shell/index.test.tsx +0 -428
- package/src/shell/mobile-nav-model.test.ts +0 -517
- package/src/shell/page-bar.test.tsx +0 -316
- package/src/state/fields.test.tsx +0 -258
- package/src/styles.floor.test.ts +0 -36
- package/src/theme/border-coverage.test.ts +0 -272
- package/src/theme/contrast.test.ts +0 -354
- package/src/theme/ctl-theme.test.tsx +0 -275
- package/src/theme/ctl-tier-coverage.test.ts +0 -170
- package/src/theme/density-option.test.ts +0 -96
- package/src/theme/density-relations.test.ts +0 -506
- package/src/theme/derive-theme.test.ts +0 -101
- package/src/theme/divider-law.test.ts +0 -259
- package/src/theme/fonts-option.test.ts +0 -75
- package/src/theme/icon-slot.test.tsx +0 -275
- package/src/theme/layout-rhythm-css.test.ts +0 -72
- package/src/theme/radius-option.test.ts +0 -86
- package/src/theme/radius.test.ts +0 -142
- package/src/theme/shadow-surfaces.test.ts +0 -488
- package/src/theme/spacing.test.ts +0 -495
- package/src/theme/use-basalt-spacing.test.tsx +0 -55
- package/src/theme-lab/derive-controls.test.ts +0 -94
- package/src/theme-lab/derive-state.test.ts +0 -71
- package/src/theme-lab/theme-lab.test.ts +0 -46
- package/src/tokens/build-fonts-css.test.ts +0 -52
- package/src/tokens/build-radius-css.test.ts +0 -25
- package/src/tokens/chart-margin.test.ts +0 -39
- package/src/tokens/density.test.ts +0 -259
- package/src/tokens/derive-radius.test.ts +0 -62
- package/src/tokens/derive.test.ts +0 -30
- package/src/tokens/palette.test.ts +0 -114
- package/src/tokens/text-scale.test.ts +0 -51
- package/src/vite-color-mix.test.ts +0 -46
- package/src/vite.test.ts +0 -423
- package/src/widget-header/delta-badge.test.tsx +0 -60
- package/src/widget-header/no-mantine.test.ts +0 -33
- package/src/widget-header/widget-header.test.tsx +0 -187
|
@@ -48,6 +48,9 @@ import type {
|
|
|
48
48
|
TranscriptPart,
|
|
49
49
|
} from '../agent'
|
|
50
50
|
import { coalesceParts, narrowAgentPart, PartList } from '../agent'
|
|
51
|
+
import { cx } from '../common/props'
|
|
52
|
+
import type { BasaltProps } from '../common/props'
|
|
53
|
+
import { assertRequiredProps } from '../common/validate'
|
|
51
54
|
import { Markdown } from '../content/markdown'
|
|
52
55
|
import { CopyAction } from '../content/copy-action'
|
|
53
56
|
import { VX } from '../tokens'
|
|
@@ -57,6 +60,7 @@ import { formatRelativeTime } from './relative-time'
|
|
|
57
60
|
import { ToolChip } from './tool-chip'
|
|
58
61
|
import { resolveVirtualize } from './virtualize'
|
|
59
62
|
import type { VirtualizeOptions, VirtualizeProps } from './virtualize'
|
|
63
|
+
import { isDev } from '../utils/is-dev'
|
|
60
64
|
|
|
61
65
|
/** The mono, uppercase, letter-spaced micro-label idiom (docs/DESIGN-SPEC.md §3) — shared by the
|
|
62
66
|
* transcript's role labels and the reasoning/tool-call headers below. */
|
|
@@ -185,10 +189,11 @@ function UnknownPartChip({ part }: { part: ForeignPart }): JSX.Element {
|
|
|
185
189
|
)
|
|
186
190
|
}
|
|
187
191
|
|
|
188
|
-
/** Consulted only when `ThreadTranscript` gets no `fallbackRenderer` prop. `
|
|
189
|
-
* (not `import.meta.env` — basalt-ui bans it)
|
|
192
|
+
/** Consulted only when `ThreadTranscript` gets no `fallbackRenderer` prop. `isDev()` reads
|
|
193
|
+
* `process.env.NODE_ENV` (not `import.meta.env` — basalt-ui bans it) INSIDE the render so tests can
|
|
194
|
+
* flip it. */
|
|
190
195
|
const DEFAULT_FALLBACK_RENDERER: PartRenderer<ForeignPart> = ({ part }) =>
|
|
191
|
-
|
|
196
|
+
isDev() ? <UnknownPartChip part={part} /> : null
|
|
192
197
|
|
|
193
198
|
// ── Part resolution — the three-step order that is the whole design ───────────
|
|
194
199
|
//
|
|
@@ -544,6 +549,7 @@ function areMessageBlockPropsEqual(prev: MessageBlockProps, next: MessageBlockPr
|
|
|
544
549
|
}
|
|
545
550
|
|
|
546
551
|
const MessageBlock = memo(MessageBlockImpl, areMessageBlockPropsEqual)
|
|
552
|
+
MessageBlock.displayName = 'MessageBlock'
|
|
547
553
|
|
|
548
554
|
// ── Virtualization (AGENT-CHAT-SPEC.md §9) ─────────────────────────────────────
|
|
549
555
|
//
|
|
@@ -594,7 +600,7 @@ type TranscriptRow = {
|
|
|
594
600
|
readonly node: JSX.Element
|
|
595
601
|
}
|
|
596
602
|
|
|
597
|
-
type VirtualizedTranscriptProps = {
|
|
603
|
+
type VirtualizedTranscriptProps = BasaltProps & {
|
|
598
604
|
readonly rows: readonly TranscriptRow[]
|
|
599
605
|
readonly height: number | string
|
|
600
606
|
readonly overscan: number
|
|
@@ -613,10 +619,15 @@ type VirtualizedTranscriptProps = {
|
|
|
613
619
|
* settle a genuine unmount/remount of every rendered row, re-firing each row's effects once and
|
|
614
620
|
* risking hitting a message mid-stream during the resolve window.
|
|
615
621
|
*/
|
|
616
|
-
function NonVirtualizedRows({
|
|
622
|
+
function NonVirtualizedRows({
|
|
623
|
+
rows,
|
|
624
|
+
height,
|
|
625
|
+
className,
|
|
626
|
+
style,
|
|
627
|
+
}: VirtualizedTranscriptProps): JSX.Element {
|
|
617
628
|
return (
|
|
618
629
|
// theme-allow raw-scroll-container — degrade target owns its own scroll node, same as the real virtualizer below.
|
|
619
|
-
<Box style={{ height, overflow: 'auto' }}>
|
|
630
|
+
<Box className={cx(className)} style={{ height, overflow: 'auto', ...style }}>
|
|
620
631
|
<Stack gap="sm">
|
|
621
632
|
{rows.map((row) => (
|
|
622
633
|
<Fragment key={row.key}>{row.node}</Fragment>
|
|
@@ -834,6 +845,8 @@ const LazyVirtualizedRows = lazy(() =>
|
|
|
834
845
|
overscan,
|
|
835
846
|
estimateSize,
|
|
836
847
|
initialScroll,
|
|
848
|
+
className,
|
|
849
|
+
style,
|
|
837
850
|
}: VirtualizedTranscriptProps): JSX.Element {
|
|
838
851
|
const parentRef = useRef<HTMLDivElement>(null)
|
|
839
852
|
const initialScrollStateRef = useRef<InitialScrollState>({
|
|
@@ -895,8 +908,12 @@ const LazyVirtualizedRows = lazy(() =>
|
|
|
895
908
|
})
|
|
896
909
|
|
|
897
910
|
return (
|
|
898
|
-
|
|
899
|
-
|
|
911
|
+
<Box
|
|
912
|
+
ref={parentRef}
|
|
913
|
+
className={cx(className)}
|
|
914
|
+
// theme-allow raw-scroll-container — TanStack Virtual measures/scrolls this element (never nest in BasaltStickToBottom, see ./virtualize).
|
|
915
|
+
style={{ height, overflow: 'auto', ...style }}
|
|
916
|
+
>
|
|
900
917
|
<Box style={{ height: virtualizer.getTotalSize(), position: 'relative' }}>
|
|
901
918
|
{virtualizer.getVirtualItems().map((virtualItem) => {
|
|
902
919
|
const row = rows[virtualItem.index]
|
|
@@ -929,6 +946,7 @@ const LazyVirtualizedRows = lazy(() =>
|
|
|
929
946
|
})
|
|
930
947
|
.catch(() => ({ default: NonVirtualizedRows })),
|
|
931
948
|
)
|
|
949
|
+
Object.assign(LazyVirtualizedRows, { displayName: 'LazyVirtualizedRows' })
|
|
932
950
|
|
|
933
951
|
/**
|
|
934
952
|
* Lightweight `Suspense` fallback for `VirtualizedTranscript` — shown only for the one tick the
|
|
@@ -937,14 +955,26 @@ const LazyVirtualizedRows = lazy(() =>
|
|
|
937
955
|
* unmount/remount of the whole transcript. An empty, correctly-sized scroll pane avoids a layout
|
|
938
956
|
* flash without paying that cost — it settles state before any row has meaningfully mounted.
|
|
939
957
|
*/
|
|
940
|
-
function VirtualizeSuspenseFallback({
|
|
958
|
+
function VirtualizeSuspenseFallback({
|
|
959
|
+
height,
|
|
960
|
+
className,
|
|
961
|
+
style,
|
|
962
|
+
}: BasaltProps & { readonly height: number | string }): JSX.Element {
|
|
941
963
|
// theme-allow raw-scroll-container — placeholder owns its own scroll node, matching the real virtualizer's shape.
|
|
942
|
-
return <Box style={{ height, overflow: 'auto' }} />
|
|
964
|
+
return <Box className={cx(className)} style={{ height, overflow: 'auto', ...style }} />
|
|
943
965
|
}
|
|
944
966
|
|
|
945
967
|
function VirtualizedTranscript(props: VirtualizedTranscriptProps): JSX.Element {
|
|
946
968
|
return (
|
|
947
|
-
<Suspense
|
|
969
|
+
<Suspense
|
|
970
|
+
fallback={
|
|
971
|
+
<VirtualizeSuspenseFallback
|
|
972
|
+
height={props.height}
|
|
973
|
+
{...(props.className !== undefined && { className: props.className })}
|
|
974
|
+
{...(props.style !== undefined && { style: props.style })}
|
|
975
|
+
/>
|
|
976
|
+
}
|
|
977
|
+
>
|
|
948
978
|
<LazyVirtualizedRows {...props} />
|
|
949
979
|
</Suspense>
|
|
950
980
|
)
|
|
@@ -954,7 +984,7 @@ function VirtualizedTranscript(props: VirtualizedTranscriptProps): JSX.Element {
|
|
|
954
984
|
|
|
955
985
|
const EMPTY_RENDERERS: PartRenderers = {}
|
|
956
986
|
|
|
957
|
-
type ThreadTranscriptBase = {
|
|
987
|
+
type ThreadTranscriptBase = BasaltProps & {
|
|
958
988
|
/** Settled messages for the thread, oldest first. */
|
|
959
989
|
readonly messages: readonly ChatMessage<TranscriptPart>[]
|
|
960
990
|
/** The live (in-flight) assistant turn's parts, when a run is streaming for this thread. */
|
|
@@ -1050,7 +1080,10 @@ export function ThreadTranscript(props: ThreadTranscriptProps): JSX.Element {
|
|
|
1050
1080
|
fallbackRenderer = DEFAULT_FALLBACK_RENDERER,
|
|
1051
1081
|
affordances: affordancesProp,
|
|
1052
1082
|
groupConsecutive = true,
|
|
1083
|
+
className,
|
|
1084
|
+
style,
|
|
1053
1085
|
} = props
|
|
1086
|
+
assertRequiredProps('ThreadTranscript', { messages }, ['messages'])
|
|
1054
1087
|
const virtualized = resolveVirtualize(props)
|
|
1055
1088
|
|
|
1056
1089
|
// Mirrors PartList's own `useMemo` (part-list.tsx:290) — avoids rebuilding the renderer
|
|
@@ -1166,12 +1199,14 @@ export function ThreadTranscript(props: ThreadTranscriptProps): JSX.Element {
|
|
|
1166
1199
|
overscan={virtualized.options.overscan ?? DEFAULT_VIRTUALIZE_OVERSCAN}
|
|
1167
1200
|
estimateSize={virtualized.options.estimateSize ?? DEFAULT_VIRTUALIZE_ESTIMATE_SIZE}
|
|
1168
1201
|
initialScroll={virtualized.options.initialScroll ?? DEFAULT_VIRTUALIZE_INITIAL_SCROLL}
|
|
1202
|
+
{...(className !== undefined && { className })}
|
|
1203
|
+
{...(style !== undefined && { style })}
|
|
1169
1204
|
/>
|
|
1170
1205
|
)
|
|
1171
1206
|
}
|
|
1172
1207
|
|
|
1173
1208
|
return (
|
|
1174
|
-
<Stack gap="sm">
|
|
1209
|
+
<Stack gap="sm" className={cx(className)} {...(style !== undefined && { style })}>
|
|
1175
1210
|
{rows.map((row) => (
|
|
1176
1211
|
<Fragment key={row.key}>{row.node}</Fragment>
|
|
1177
1212
|
))}
|
|
@@ -22,6 +22,9 @@ import { Badge, Group, Skeleton, Stack, Text, UnstyledButton } from '@mantine/co
|
|
|
22
22
|
import { useHover } from '@mantine/hooks'
|
|
23
23
|
import type { JSX } from 'react'
|
|
24
24
|
import type { AgentThread, ThreadStatus } from '../agent'
|
|
25
|
+
import { assertRequiredProps } from '../common/validate'
|
|
26
|
+
import { cx } from '../common/props'
|
|
27
|
+
import type { BasaltProps } from '../common/props'
|
|
25
28
|
import { alpha, VX } from '../tokens'
|
|
26
29
|
import { formatRelativeTime } from './relative-time'
|
|
27
30
|
|
|
@@ -118,7 +121,7 @@ function OutcomeBody({ thread }: { thread: AgentThread }): JSX.Element {
|
|
|
118
121
|
|
|
119
122
|
// ── ThreadOutcomeCard ─────────────────────────────────────────────────────────
|
|
120
123
|
|
|
121
|
-
export type ThreadOutcomeCardProps = {
|
|
124
|
+
export type ThreadOutcomeCardProps = BasaltProps & {
|
|
122
125
|
readonly thread: AgentThread
|
|
123
126
|
/** Whether this row is the active/open thread — applies a subtle highlight. */
|
|
124
127
|
readonly selected: boolean
|
|
@@ -138,7 +141,10 @@ export function ThreadOutcomeCard({
|
|
|
138
141
|
thread,
|
|
139
142
|
selected,
|
|
140
143
|
onSelect,
|
|
144
|
+
className,
|
|
145
|
+
style,
|
|
141
146
|
}: ThreadOutcomeCardProps): JSX.Element {
|
|
147
|
+
assertRequiredProps('ThreadOutcomeCard', { thread }, ['thread'])
|
|
142
148
|
const { hovered, ref } = useHover<HTMLButtonElement>()
|
|
143
149
|
const isPreviewing =
|
|
144
150
|
thread.outcome === null && (thread.status === 'pending' || thread.status === 'streaming')
|
|
@@ -157,6 +163,7 @@ export function ThreadOutcomeCard({
|
|
|
157
163
|
ref={ref}
|
|
158
164
|
onClick={onSelect}
|
|
159
165
|
w="100%"
|
|
166
|
+
className={cx(className)}
|
|
160
167
|
style={{
|
|
161
168
|
display: 'block',
|
|
162
169
|
padding: 'var(--mantine-spacing-xs) var(--mantine-spacing-sm)',
|
|
@@ -164,6 +171,7 @@ export function ThreadOutcomeCard({
|
|
|
164
171
|
boxShadow: VX.shadowCard,
|
|
165
172
|
backgroundColor: background,
|
|
166
173
|
transition: 'background-color 120ms ease',
|
|
174
|
+
...style,
|
|
167
175
|
}}
|
|
168
176
|
>
|
|
169
177
|
{isPreviewing ? <OutcomeSkeleton /> : <OutcomeBody thread={thread} />}
|
|
@@ -32,46 +32,58 @@
|
|
|
32
32
|
* )
|
|
33
33
|
* }
|
|
34
34
|
*/
|
|
35
|
-
import { Box, Divider, Flex, Skeleton, Stack, Text } from '@mantine/core'
|
|
35
|
+
import { Box, Divider, Flex, Skeleton, Stack, Text, useMantineTheme } from '@mantine/core'
|
|
36
36
|
import { useMediaQuery } from '@mantine/hooks'
|
|
37
37
|
import type { JSX, ReactNode } from 'react'
|
|
38
38
|
import type { AgentPart, AgentTransport, OutcomeResolver, ThreadsStore } from '../agent'
|
|
39
39
|
import { useAgentThreadRuns } from '../agent'
|
|
40
|
+
import { cx } from '../common/props'
|
|
41
|
+
import type { BasaltProps, SlotStylesProps } from '../common/props'
|
|
42
|
+
import { assertRequiredProps } from '../common/validate'
|
|
40
43
|
import { VX } from '../tokens'
|
|
41
44
|
import { Composer } from './composer'
|
|
42
45
|
import { ThreadDetailPanel } from './thread-detail-panel'
|
|
43
46
|
import { ThreadFeed } from './thread-feed'
|
|
44
47
|
|
|
45
|
-
const NARROW_BREAKPOINT = '(max-width: 768px)'
|
|
46
48
|
const DETAIL_PANEL_WIDTH = 'clamp(440px, 40%, 520px)'
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
50
|
+
// Static across every instance, so it stays a module-level constant rather than a per-render
|
|
51
|
+
// literal, letting the no-override case keep a stable reference.
|
|
52
|
+
const FULL_HEIGHT_STYLE = { height: '100%' } as const
|
|
53
|
+
|
|
54
|
+
/** The four boxes `ThreadWorkspace` paints: `root` is the outermost pane split, `feed` is the
|
|
55
|
+
* thread-list pane, `composer` is the new-thread composer pinned under the feed, `detail` is the
|
|
56
|
+
* right-hand (or, below 768px, full-screen) open-thread pane. */
|
|
57
|
+
export type ThreadWorkspaceSlot = 'root' | 'feed' | 'composer' | 'detail'
|
|
58
|
+
|
|
59
|
+
export type ThreadWorkspaceProps = BasaltProps &
|
|
60
|
+
SlotStylesProps<ThreadWorkspaceSlot> & {
|
|
61
|
+
/**
|
|
62
|
+
* The thread-store hook, created ONCE at module scope via `createThreadsStore` and passed in —
|
|
63
|
+
* ThreadWorkspace must not call `createThreadsStore` itself.
|
|
64
|
+
*/
|
|
65
|
+
readonly useThreads: () => ThreadsStore
|
|
66
|
+
/** The injected transport seam — one stream per `start()` call. */
|
|
67
|
+
readonly transport: AgentTransport<AgentPart, string>
|
|
68
|
+
/** Distills a finished thread into a feed-ready `AgentOutcome`. */
|
|
69
|
+
readonly resolveOutcome: OutcomeResolver<AgentPart>
|
|
70
|
+
/** Placeholder for the new-thread composer pinned under the feed. */
|
|
71
|
+
readonly newThreadPlaceholder?: string
|
|
72
|
+
/**
|
|
73
|
+
* Rendered in place of the feed once the store is hydrated and there really are no threads.
|
|
74
|
+
* Shown ONLY when `store.hydrated` is true — while an async store's initial load is still in
|
|
75
|
+
* flight, `ThreadWorkspace` holds a neutral loading state instead (see `FeedHydratingState`),
|
|
76
|
+
* so a server-backed workspace never asserts "no threads yet" before it actually knows that.
|
|
77
|
+
*/
|
|
78
|
+
readonly emptyState?: ReactNode
|
|
79
|
+
/**
|
|
80
|
+
* Rendered in place of the feed when the store's initial load has failed — `!store.hydrated &&
|
|
81
|
+
* store.error !== undefined` (see `ThreadsStore.hydrated`'s doc for the discriminant). Shown
|
|
82
|
+
* instead of `FeedHydratingState`, so a rejected `listThreads` surfaces a legible failure rather
|
|
83
|
+
* than an endless skeleton.
|
|
84
|
+
*/
|
|
85
|
+
readonly errorState?: ReactNode
|
|
86
|
+
}
|
|
75
87
|
|
|
76
88
|
/** Default hint shown in the feed pane once hydrated with no threads (overridable via `emptyState`). */
|
|
77
89
|
function FeedEmptyState(): JSX.Element {
|
|
@@ -146,10 +158,19 @@ export function ThreadWorkspace({
|
|
|
146
158
|
newThreadPlaceholder,
|
|
147
159
|
emptyState,
|
|
148
160
|
errorState,
|
|
161
|
+
className,
|
|
162
|
+
style,
|
|
163
|
+
classNames,
|
|
149
164
|
}: ThreadWorkspaceProps): JSX.Element {
|
|
165
|
+
assertRequiredProps('ThreadWorkspace', { useThreads }, ['useThreads'])
|
|
150
166
|
const store = useThreads()
|
|
151
167
|
const runs = useAgentThreadRuns({ transport, store, resolveOutcome })
|
|
152
|
-
|
|
168
|
+
// Matches `shell/page-aside.tsx`'s own `theme.breakpoints.sm` desktop check — read off the theme,
|
|
169
|
+
// not hardcoded, so a consumer that retunes `breakpoints.sm` moves the aside and this workspace
|
|
170
|
+
// together. `max-width` is the min-width complement: `sm − 0.00625em` (the same 0.1px offset
|
|
171
|
+
// Mantine's own CSS breakpoints use), so the two checks never straddle the same pixel.
|
|
172
|
+
const theme = useMantineTheme()
|
|
173
|
+
const narrow = useMediaQuery(`(max-width: calc(${theme.breakpoints.sm} - 0.00625em))`)
|
|
153
174
|
|
|
154
175
|
const threads = store.threads
|
|
155
176
|
const activeThread = threads.find((thread) => thread.id === store.activeId) ?? null
|
|
@@ -186,7 +207,12 @@ export function ThreadWorkspace({
|
|
|
186
207
|
// A plain pane, NOT a card — the feed's own rows carry the card idiom (docs/DESIGN-SPEC.md §5),
|
|
187
208
|
// so this pane stays flush with the page and the feed/detail split reads via the divider token.
|
|
188
209
|
const feed = (
|
|
189
|
-
<Flex
|
|
210
|
+
<Flex
|
|
211
|
+
direction="column"
|
|
212
|
+
h="100%"
|
|
213
|
+
className={cx(classNames?.feed)}
|
|
214
|
+
style={{ overflow: 'hidden' }}
|
|
215
|
+
>
|
|
190
216
|
<Box style={{ flex: 1, minHeight: 0 }}>
|
|
191
217
|
{threads.length === 0 ? (
|
|
192
218
|
store.hydrated ? (
|
|
@@ -205,6 +231,7 @@ export function ThreadWorkspace({
|
|
|
205
231
|
<Composer
|
|
206
232
|
onSubmit={({ text }) => handleNewThread(text)}
|
|
207
233
|
{...(newThreadPlaceholder !== undefined ? { placeholder: newThreadPlaceholder } : {})}
|
|
234
|
+
{...(classNames?.composer !== undefined && { className: classNames.composer })}
|
|
208
235
|
/>
|
|
209
236
|
</Box>
|
|
210
237
|
</Flex>
|
|
@@ -219,15 +246,27 @@ export function ThreadWorkspace({
|
|
|
219
246
|
onStop={handleStop}
|
|
220
247
|
onRetry={handleRetry}
|
|
221
248
|
onClose={() => store.select(null)}
|
|
249
|
+
{...(classNames?.detail !== undefined && { className: classNames.detail })}
|
|
222
250
|
/>
|
|
223
251
|
)
|
|
224
252
|
|
|
225
253
|
if (narrow) {
|
|
226
|
-
return
|
|
254
|
+
return (
|
|
255
|
+
<Box
|
|
256
|
+
className={cx(classNames?.root, className)}
|
|
257
|
+
style={style ? { ...FULL_HEIGHT_STYLE, ...style } : FULL_HEIGHT_STYLE}
|
|
258
|
+
>
|
|
259
|
+
{store.activeId !== null ? detail : feed}
|
|
260
|
+
</Box>
|
|
261
|
+
)
|
|
227
262
|
}
|
|
228
263
|
|
|
229
264
|
return (
|
|
230
|
-
<Flex
|
|
265
|
+
<Flex
|
|
266
|
+
className={cx(classNames?.root, className)}
|
|
267
|
+
style={style ? { ...FULL_HEIGHT_STYLE, ...style } : FULL_HEIGHT_STYLE}
|
|
268
|
+
gap="md"
|
|
269
|
+
>
|
|
231
270
|
<Box
|
|
232
271
|
style={{
|
|
233
272
|
flex: 1,
|
|
@@ -21,6 +21,9 @@ import { useDisclosure } from '@mantine/hooks'
|
|
|
21
21
|
import type { JSX } from 'react'
|
|
22
22
|
import { isToolCallSettled } from '../agent'
|
|
23
23
|
import type { ToolCallPart } from '../agent'
|
|
24
|
+
import { cx } from '../common/props'
|
|
25
|
+
import type { BasaltProps } from '../common/props'
|
|
26
|
+
import { assertRequiredProps } from '../common/validate'
|
|
24
27
|
import { alpha, VX } from '../tokens'
|
|
25
28
|
|
|
26
29
|
// Mirrors thread-message.tsx's micro-label/rail/code-block idiom (docs/DESIGN-SPEC.md §3/§5) —
|
|
@@ -96,7 +99,7 @@ function formatDuration(ms: number): string {
|
|
|
96
99
|
return ms >= 1000 ? `${(ms / 1000).toFixed(1)}s` : `${Math.round(ms)}ms`
|
|
97
100
|
}
|
|
98
101
|
|
|
99
|
-
export type ToolChipProps = {
|
|
102
|
+
export type ToolChipProps = BasaltProps & {
|
|
100
103
|
readonly part: ToolCallPart
|
|
101
104
|
readonly defaultExpanded?: boolean
|
|
102
105
|
/** Rendered only in 'approval-requested'. Omit both to render a read-only chip. */
|
|
@@ -119,7 +122,10 @@ export function ToolChip({
|
|
|
119
122
|
defaultExpanded = false,
|
|
120
123
|
onApprove,
|
|
121
124
|
onDeny,
|
|
125
|
+
className,
|
|
126
|
+
style,
|
|
122
127
|
}: ToolChipProps): JSX.Element {
|
|
128
|
+
assertRequiredProps('ToolChip', { part }, ['part'])
|
|
123
129
|
const [expanded, { toggle }] = useDisclosure(defaultExpanded)
|
|
124
130
|
const { label, dotToken } = stateMeta(part)
|
|
125
131
|
const settled = isToolCallSettled(part)
|
|
@@ -128,7 +134,7 @@ export function ToolChip({
|
|
|
128
134
|
const rawInput = part.state === 'output-error' ? part.rawInput : undefined
|
|
129
135
|
|
|
130
136
|
return (
|
|
131
|
-
<Box style={RAIL_STYLE}>
|
|
137
|
+
<Box className={cx(className)} style={style ? { ...RAIL_STYLE, ...style } : RAIL_STYLE}>
|
|
132
138
|
<Stack gap={4}>
|
|
133
139
|
<UnstyledButton onClick={toggle}>
|
|
134
140
|
<Group gap={6} align="center" wrap="nowrap">
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
import { scaleBand } from '@visx/scale'
|
|
18
18
|
import { useCallback, useMemo, useRef } from 'react'
|
|
19
19
|
import type { ReactNode, RefObject } from 'react'
|
|
20
|
-
import { VX } from '../../tokens'
|
|
21
20
|
import type { ChartMargin } from '../../tokens'
|
|
22
21
|
import type { CursorResolution } from '../cursor/resolve'
|
|
23
22
|
import { autoMargin } from '../layout/auto-margin'
|
|
23
|
+
import { useChartTierMetrics } from '../primitives/chart-tier'
|
|
24
24
|
import { maxTextWidth } from '../utils/measure-text'
|
|
25
|
-
import { smartTicks } from '../utils/ticks'
|
|
25
|
+
import { smartTicks, xLabelPxFor } from '../utils/ticks'
|
|
26
26
|
import { useChartCursor } from './useChartCursor'
|
|
27
27
|
import type { ChartCursor, CursorAnchor } from './useChartCursor'
|
|
28
28
|
|
|
@@ -177,6 +177,12 @@ export function useBandPlot<T>(input: UseBandPlotInput<T>): BandPlot<T> {
|
|
|
177
177
|
tooltip,
|
|
178
178
|
} = input
|
|
179
179
|
|
|
180
|
+
// The tier `ChartFrame` resolved from its own MEASURED width. A banded plot needs exactly the
|
|
181
|
+
// two things `CartesianChart` reads off it: the tick font its gutters are MEASURED at (the same
|
|
182
|
+
// one `AxisBottomDate` paints — measured labels must be the painted labels, §1) and the tightened
|
|
183
|
+
// margin FLOORS (`docs/CHARTS-SPEC.md` §8).
|
|
184
|
+
const tier = useChartTierMetrics()
|
|
185
|
+
|
|
180
186
|
const hasLeftAxis = leftLabels !== undefined && leftLabels.length > 0
|
|
181
187
|
const xLabelsAll = useMemo(() => data.map((d) => formatX(getX(d))), [data, getX, formatX])
|
|
182
188
|
|
|
@@ -185,11 +191,13 @@ export function useBandPlot<T>(input: UseBandPlotInput<T>): BandPlot<T> {
|
|
|
185
191
|
const measured = autoMargin({
|
|
186
192
|
...(leftLabels !== undefined && { left: leftLabels }),
|
|
187
193
|
bottom: xLabelsAll,
|
|
194
|
+
fontPx: tier.axisFont,
|
|
195
|
+
floor: tier.margin,
|
|
188
196
|
...(marginOverride !== undefined && { override: marginOverride }),
|
|
189
197
|
})
|
|
190
198
|
if (marginOverride?.left !== undefined && marginOverride.right !== undefined) return measured
|
|
191
199
|
|
|
192
|
-
const halfXLabel = Math.ceil(maxTextWidth(xLabelsAll,
|
|
200
|
+
const halfXLabel = Math.ceil(maxTextWidth(xLabelsAll, tier.axisFont) / 2)
|
|
193
201
|
// A band axis puts its FIRST tick on the plot's left edge, so the left gutter needs the same
|
|
194
202
|
// half-label law `autoMargin` already applies on the right. `autoMargin` cannot know that —
|
|
195
203
|
// its left law measures a left AXIS, which a band plot may not have.
|
|
@@ -199,18 +207,18 @@ export function useBandPlot<T>(input: UseBandPlotInput<T>): BandPlot<T> {
|
|
|
199
207
|
...(marginOverride?.left === undefined && {
|
|
200
208
|
left: hasLeftAxis
|
|
201
209
|
? left
|
|
202
|
-
: capTerminalGutter(left, width, TERMINAL_GUTTER_MAX_FRACTION.left,
|
|
210
|
+
: capTerminalGutter(left, width, TERMINAL_GUTTER_MAX_FRACTION.left, tier.margin.left),
|
|
203
211
|
}),
|
|
204
212
|
...(marginOverride?.right === undefined && {
|
|
205
213
|
right: capTerminalGutter(
|
|
206
214
|
measured.right,
|
|
207
215
|
width,
|
|
208
216
|
TERMINAL_GUTTER_MAX_FRACTION.right,
|
|
209
|
-
|
|
217
|
+
tier.margin.right,
|
|
210
218
|
),
|
|
211
219
|
}),
|
|
212
220
|
}
|
|
213
|
-
}, [leftLabels, xLabelsAll, marginOverride, hasLeftAxis, width])
|
|
221
|
+
}, [leftLabels, xLabelsAll, marginOverride, hasLeftAxis, width, tier.axisFont, tier.margin])
|
|
214
222
|
|
|
215
223
|
const plotWidth = Math.max(width - margin.left - margin.right, 0)
|
|
216
224
|
|
|
@@ -250,11 +258,21 @@ export function useBandPlot<T>(input: UseBandPlotInput<T>): BandPlot<T> {
|
|
|
250
258
|
...(cursorResolution !== undefined && { resolution: cursorResolution }),
|
|
251
259
|
})
|
|
252
260
|
|
|
261
|
+
// The horizontal room one x tick label needs, from the labels `smartTicks` could actually pick —
|
|
262
|
+
// same measured-spacing law `CartesianChart` applies (`docs/CHARTS-SPEC.md` §1). `keys` (not
|
|
263
|
+
// `xLabelsAll`) because ticks are chosen from the post-fold key list.
|
|
264
|
+
const xLabelPx = useMemo(
|
|
265
|
+
() => xLabelPxFor(keys.map(formatX), tier.axisFont),
|
|
266
|
+
[keys, formatX, tier.axisFont],
|
|
267
|
+
)
|
|
268
|
+
|
|
253
269
|
const tickValues = useMemo(
|
|
254
270
|
() => [
|
|
255
|
-
...(xTickValues === undefined
|
|
271
|
+
...(xTickValues === undefined
|
|
272
|
+
? smartTicks(keys, plotWidth, xLabelPx)
|
|
273
|
+
: xTickValues(keys, plotWidth)),
|
|
256
274
|
],
|
|
257
|
-
[keys, plotWidth, xTickValues],
|
|
275
|
+
[keys, plotWidth, xTickValues, xLabelPx],
|
|
258
276
|
)
|
|
259
277
|
|
|
260
278
|
const svgRef = useRef<SVGSVGElement>(null)
|
package/src/charts/index.ts
CHANGED
|
@@ -42,6 +42,8 @@ export {
|
|
|
42
42
|
export {
|
|
43
43
|
type SeriesMark,
|
|
44
44
|
type SeriesDash,
|
|
45
|
+
type SeriesCurve,
|
|
46
|
+
curveFor,
|
|
45
47
|
type SeriesRole,
|
|
46
48
|
type LegendPlacement,
|
|
47
49
|
type ChartLegendConfig,
|
|
@@ -73,10 +75,25 @@ export {
|
|
|
73
75
|
type ChartCenterProps,
|
|
74
76
|
ChartPending,
|
|
75
77
|
type ChartPendingProps,
|
|
78
|
+
ChartEmpty,
|
|
79
|
+
type ChartEmptyProps,
|
|
80
|
+
ChartError,
|
|
81
|
+
type ChartErrorProps,
|
|
82
|
+
type ChartState,
|
|
83
|
+
type ResolvedChartState,
|
|
84
|
+
resolveChartState,
|
|
76
85
|
} from './primitives/ChartPending'
|
|
86
|
+
export {
|
|
87
|
+
useChartTier,
|
|
88
|
+
useChartTierMetrics,
|
|
89
|
+
chartTierMetrics,
|
|
90
|
+
resolveChartTier,
|
|
91
|
+
type ChartTier,
|
|
92
|
+
type ChartTierMetrics,
|
|
93
|
+
} from './primitives/chart-tier'
|
|
77
94
|
export { Crosshair, SeriesDot } from './primitives/Crosshair'
|
|
78
95
|
export { HatchPattern, hatchFill, hatchSizeFor } from './primitives/HatchPattern'
|
|
79
|
-
export { ChartCard, type ChartCardProps } from './primitives/ChartCard'
|
|
96
|
+
export { ChartCard, type ChartCardProps, type ChartCardSlot } from './primitives/ChartCard'
|
|
80
97
|
export { ChartLegend, type LegendEntry } from './primitives/ChartLegend'
|
|
81
98
|
export {
|
|
82
99
|
ChartTooltipFloat,
|
|
@@ -102,8 +119,19 @@ export type { CursorResolution, DomainKind } from './cursor/resolve'
|
|
|
102
119
|
export { useChartSize, type UseChartSizeResult, type ChartSize } from './hooks/useChartSize'
|
|
103
120
|
|
|
104
121
|
// ── Utils ────────────────────────────────────────────────────────────────
|
|
105
|
-
export {
|
|
106
|
-
|
|
122
|
+
export {
|
|
123
|
+
fmtAxisDate,
|
|
124
|
+
fmtTooltipDate,
|
|
125
|
+
fmtCompact,
|
|
126
|
+
type FmtCompactOptions,
|
|
127
|
+
fmtPercent,
|
|
128
|
+
type FmtPercentOptions,
|
|
129
|
+
fmtCurrency,
|
|
130
|
+
type FmtCurrencyOptions,
|
|
131
|
+
fmtInt,
|
|
132
|
+
formatters,
|
|
133
|
+
} from './utils/format'
|
|
134
|
+
export { smartTicks, smartTicksEvery, xLabelPxFor, autoXLabelRotate } from './utils/ticks'
|
|
107
135
|
export { autoMargin, probeAxisLabels, type AutoMarginInput } from './layout/auto-margin'
|
|
108
136
|
export { measureText, maxTextWidth } from './utils/measure-text'
|
|
109
137
|
|
|
@@ -140,7 +168,12 @@ export {
|
|
|
140
168
|
export { MirroredBars, type MirroredBarsProps, type MirroredBarPane } from './kinds/MirroredBars'
|
|
141
169
|
|
|
142
170
|
// ── Sparklines ───────────────────────────────────────────────────────────
|
|
143
|
-
export {
|
|
171
|
+
export {
|
|
172
|
+
LineSparkline,
|
|
173
|
+
type LineSparklineProps,
|
|
174
|
+
BarSparkline,
|
|
175
|
+
type BarSparklineProps,
|
|
176
|
+
} from './sparklines'
|
|
144
177
|
|
|
145
178
|
// ── Re-exported visx primitives ──────────────────────────────────────────
|
|
146
179
|
// Bespoke charts (genuinely unique compositions per CLAUDE.md) need raw
|
|
@@ -155,6 +188,8 @@ export {
|
|
|
155
188
|
curveMonotoneX,
|
|
156
189
|
curveLinear,
|
|
157
190
|
curveCatmullRom,
|
|
191
|
+
curveStep,
|
|
158
192
|
curveStepAfter,
|
|
193
|
+
curveStepBefore,
|
|
159
194
|
curveBasis,
|
|
160
195
|
} from '@visx/curve'
|