basalt-ui 1.27.0 → 1.29.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 +28 -35
- package/CHANGELOG.md +72 -0
- package/MIGRATING.md +759 -22
- package/README.md +56 -69
- package/agent/rules/basalt-batteries.md +60 -168
- package/agent/rules/basalt-charts.md +56 -75
- package/agent/rules/basalt-controls.md +81 -87
- package/agent/rules/basalt-mantine.md +64 -98
- package/agent/rules/basalt-state.md +42 -60
- package/agent/rules/basalt-tokens.md +46 -67
- package/agent/skills/basalt-app/SKILL.md +2 -0
- package/agent/templates/CLAUDE-block.md.tpl +14 -14
- package/configs/oxlint-plugin.js +964 -33
- package/configs/oxlint-plugin.test.ts +902 -2
- package/configs/oxlint.json +6 -0
- package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
- package/dist/agent/ai-sdk-transport.js +7 -4
- 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/transport.d.ts +13 -2
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/use-agent-thread-runs.d.ts +12 -1
- package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
- package/dist/agent/use-agent-thread-runs.js +20 -6
- 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/index.d.ts +1 -1
- package/dist/agent-chat/index.d.ts.map +1 -1
- 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 +9 -6
- package/dist/agent-chat/thread-feed-row.d.ts +32 -6
- package/dist/agent-chat/thread-feed-row.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed-row.js +61 -26
- package/dist/agent-chat/thread-feed.d.ts +13 -2
- package/dist/agent-chat/thread-feed.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed.js +16 -7
- 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/agent-chat/virtualize.d.ts +39 -0
- package/dist/agent-chat/virtualize.d.ts.map +1 -1
- package/dist/agent-chat/virtualize.js +15 -0
- package/dist/charts/hooks/useBandPlot.d.ts.map +1 -1
- package/dist/charts/hooks/useBandPlot.js +15 -8
- package/dist/charts/index.d.ts +11 -10
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/index.js +53 -9
- 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 +13 -9
- 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 +9 -6
- package/dist/charts/kinds/DualPanel.d.ts.map +1 -1
- package/dist/charts/kinds/DualPanel.js +37 -9
- 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 +13 -11
- 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 +32 -4
- package/dist/charts/primitives/Axes.d.ts.map +1 -1
- package/dist/charts/primitives/Axes.js +49 -7
- 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 +45 -4
- package/dist/charts/primitives/ChartCard.d.ts.map +1 -1
- package/dist/charts/primitives/ChartCard.js +70 -21
- 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 +52 -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 +85 -6
- 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 +7 -4
- package/dist/charts/utils/format.d.ts.map +1 -1
- package/dist/charts/utils/format.js +17 -24
- 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/audit-allows.d.ts +24 -0
- package/dist/cli/audit-allows.d.ts.map +1 -0
- package/dist/cli/audit-allows.js +240 -0
- package/dist/cli/check-theme.d.ts +10 -0
- package/dist/cli/check-theme.d.ts.map +1 -0
- package/dist/cli/check-theme.js +139 -0
- package/dist/cli/doctor.d.ts +47 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +197 -0
- package/dist/cli/guard-hook.d.ts +9 -0
- package/dist/cli/guard-hook.d.ts.map +1 -0
- package/dist/cli/guard-hook.js +93 -0
- package/dist/cli/help.d.ts +9 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +53 -0
- package/dist/cli/index.d.ts +360 -270
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +85 -1901
- package/dist/cli/init.d.ts +4 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +165 -0
- package/dist/cli/sync.d.ts +43 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +206 -0
- package/dist/cli/tokens-css.d.ts +51 -0
- package/dist/cli/tokens-css.d.ts.map +1 -0
- package/dist/cli/tokens-css.js +165 -0
- 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 +12 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +9 -1
- package/dist/commands/overlays-mount.d.ts +16 -11
- package/dist/commands/overlays-mount.d.ts.map +1 -1
- package/dist/commands/overlays-mount.js +23 -14
- package/dist/commands/shell-bridge.d.ts +57 -0
- package/dist/commands/shell-bridge.d.ts.map +1 -0
- package/dist/commands/shell-bridge.js +32 -0
- package/dist/common/errors.d.ts +69 -0
- package/dist/common/errors.d.ts.map +1 -0
- package/dist/common/errors.js +64 -0
- package/dist/common/index.d.ts +17 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +35 -0
- package/dist/common/is-dev.d.ts +3 -0
- package/dist/common/is-dev.d.ts.map +1 -0
- package/dist/common/is-dev.js +6 -0
- package/dist/{motion/index.d.ts → common/motion.d.ts} +1 -1
- package/dist/common/motion.d.ts.map +1 -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/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 +3 -4
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +3 -4
- 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 +50 -7
- 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 +3 -2
- package/dist/controls/enum-filter.d.ts.map +1 -1
- package/dist/controls/enum-filter.js +28 -13
- package/dist/controls/filter-context.d.ts +8 -4
- 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 +2 -0
- package/dist/controls/index.d.ts.map +1 -1
- package/dist/controls/index.js +4 -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 +122 -20
- package/dist/controls/number-filter.d.ts +7 -5
- package/dist/controls/number-filter.d.ts.map +1 -1
- package/dist/controls/number-filter.js +40 -11
- 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 +2 -1
- package/dist/controls/range-filter.d.ts.map +1 -1
- package/dist/controls/range-filter.js +57 -35
- 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 +25 -10
- 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 +28 -11
- 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 +18 -6
- package/dist/dashboard/delta-badge.d.ts.map +1 -1
- package/dist/dashboard/delta-badge.js +33 -1
- package/dist/dashboard/empty-state.d.ts +8 -4
- package/dist/dashboard/empty-state.d.ts.map +1 -1
- package/dist/dashboard/empty-state.js +36 -6
- package/dist/dashboard/index.d.ts +9 -5
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +13 -1
- package/dist/dashboard/query-state.d.ts +39 -27
- package/dist/dashboard/query-state.d.ts.map +1 -1
- package/dist/dashboard/query-state.js +109 -58
- package/dist/dashboard/section.d.ts +58 -0
- package/dist/dashboard/section.d.ts.map +1 -0
- package/dist/dashboard/section.js +118 -0
- package/dist/{section → dashboard}/section.module.css +11 -0
- 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 +75 -26
- package/dist/dashboard/stat-card.d.ts +44 -38
- package/dist/dashboard/stat-card.d.ts.map +1 -1
- package/dist/dashboard/stat-card.js +56 -43
- package/dist/dashboard/stat-card.module.css +46 -31
- package/dist/dashboard/stat-card.module.css.d.ts +1 -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/dashboard/widget-header.d.ts +132 -0
- package/dist/dashboard/widget-header.d.ts.map +1 -0
- package/dist/{widget-header → dashboard}/widget-header.js +42 -27
- package/dist/{widget-header → dashboard}/widget-header.module.css +72 -7
- 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 +385 -139
- package/dist/data/data-table.module.css +64 -0
- package/dist/data/data-table.module.css.d.ts +11 -0
- 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/table.js +2 -16
- 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 +4 -4
- package/dist/data/virtual.d.ts.map +1 -1
- package/dist/dev-dock.d.ts +28 -0
- package/dist/dev-dock.d.ts.map +1 -0
- package/dist/dev-dock.js +85 -0
- package/dist/format/date.d.ts +62 -0
- package/dist/format/date.d.ts.map +1 -0
- package/dist/format/date.js +106 -0
- package/dist/format/index.d.ts +39 -0
- package/dist/format/index.d.ts.map +1 -0
- package/dist/format/index.js +54 -0
- package/dist/format/measure.d.ts +15 -0
- package/dist/format/measure.d.ts.map +1 -0
- package/dist/format/measure.js +16 -0
- package/dist/format/number.d.ts +69 -0
- package/dist/format/number.d.ts.map +1 -0
- package/dist/format/number.js +62 -0
- package/dist/format/shared.d.ts +27 -0
- package/dist/format/shared.d.ts.map +1 -0
- package/dist/format/shared.js +29 -0
- 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 +33 -9
- package/dist/forms/field.d.ts.map +1 -1
- package/dist/forms/field.js +7 -6
- 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 -4
- 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 +2 -9
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +38 -28
- package/dist/guard/types.d.ts +8 -10
- package/dist/guard/types.d.ts.map +1 -1
- package/dist/index.d.ts +21 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -6
- 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 +11 -7
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +5 -3
- 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/store.d.ts +7 -0
- package/dist/notifications/store.d.ts.map +1 -1
- package/dist/provider/connectivity-indicator.d.ts +13 -0
- package/dist/provider/connectivity-indicator.d.ts.map +1 -0
- package/dist/{connectivity → provider}/connectivity-indicator.js +3 -1
- package/dist/{connectivity → provider}/connectivity-provider.d.ts +1 -1
- package/dist/provider/connectivity-provider.d.ts.map +1 -0
- package/dist/{connectivity → provider}/connectivity-provider.js +4 -1
- package/dist/{connectivity/types.d.ts → provider/connectivity-types.d.ts} +3 -3
- package/dist/provider/connectivity-types.d.ts.map +1 -0
- package/dist/provider/error-fallback.module.css +21 -0
- package/dist/provider/error-fallback.module.css.d.ts +9 -0
- package/dist/provider/index.d.ts +29 -13
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +82 -34
- package/dist/provider/lab-theme.d.ts.map +1 -1
- package/dist/provider/lab-theme.js +2 -1
- package/dist/provider/use-connectivity.d.ts +3 -0
- package/dist/provider/use-connectivity.d.ts.map +1 -0
- package/dist/query-client.d.ts +63 -0
- package/dist/query-client.d.ts.map +1 -0
- package/dist/query-client.js +33 -0
- package/dist/{query/devtools.d.ts → query-devtools.d.ts} +2 -2
- package/dist/query-devtools.d.ts.map +1 -0
- package/dist/{query/devtools.js → query-devtools.js} +1 -0
- package/dist/register.d.ts +17 -3
- package/dist/register.d.ts.map +1 -1
- package/dist/router-tanstack/index.d.ts +4 -7
- package/dist/router-tanstack/index.d.ts.map +1 -1
- package/dist/router-tanstack/index.js +1 -9
- package/dist/router-tanstack/nav.d.ts +1 -1
- package/dist/router-tanstack/nav.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.d.ts +3 -6
- package/dist/router-tanstack/search-store.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.js +1 -1
- package/dist/router-tanstack/use-nav.d.ts +1 -1
- package/dist/router-tanstack/use-nav.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.js +1 -1
- 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 +5 -3
- 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 +118 -0
- package/dist/shell/app-main.module.css.d.ts +11 -0
- package/dist/shell/app-mobile-nav.d.ts +4 -3
- package/dist/shell/app-mobile-nav.d.ts.map +1 -1
- package/dist/shell/app-mobile-nav.js +53 -17
- 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 +10 -4
- package/dist/shell/app-sidebar.d.ts.map +1 -1
- package/dist/shell/app-sidebar.js +78 -103
- package/dist/shell/app-sidebar.module.css +63 -96
- package/dist/shell/app-sidebar.module.css.d.ts +0 -5
- package/dist/shell/index.d.ts +24 -10
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +60 -29
- 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 +1 -1
- 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/{nav/types.d.ts → shell/nav-types.d.ts} +16 -7
- package/dist/shell/nav-types.d.ts.map +1 -0
- 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 +175 -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/page-title.d.ts +14 -0
- package/dist/shell/page-title.d.ts.map +1 -0
- package/dist/shell/page-title.js +25 -0
- package/dist/shell/page-title.module.css +33 -0
- package/dist/shell/page-title.module.css.d.ts +11 -0
- package/dist/shell/sidebar-block-model.d.ts +1 -1
- package/dist/shell/sidebar-block-model.d.ts.map +1 -1
- package/dist/shell/sidebar-blocks.d.ts +1 -1
- package/dist/shell/sidebar-blocks.d.ts.map +1 -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/shell/use-breakpoint.d.ts +11 -0
- package/dist/shell/use-breakpoint.d.ts.map +1 -0
- package/dist/shell/use-breakpoint.js +33 -0
- package/dist/state/fields.d.ts +26 -22
- package/dist/state/fields.d.ts.map +1 -1
- package/dist/state/fields.js +19 -18
- 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.d.ts +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +2 -6
- package/dist/styles.css +36 -0
- package/dist/surfaces.d.ts +25 -47
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +72 -55
- 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/theme-toggle.d.ts +9 -0
- package/dist/theme/theme-toggle.d.ts.map +1 -0
- package/dist/{theme-toggle/index.js → theme/theme-toggle.js} +9 -3
- 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/tokens/index.d.ts +43 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +45 -6
- package/dist/tokens/palette.d.ts +57 -25
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +44 -15
- package/dist/tokens.css +5 -5
- package/llms.txt +11 -26
- package/package.json +54 -34
- package/src/agent/ai-sdk-transport.ts +11 -4
- 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/transport.ts +15 -2
- package/src/agent/use-agent-thread-runs.ts +65 -15
- package/src/agent-chat/composer.tsx +124 -103
- package/src/agent-chat/index.ts +6 -4
- package/src/agent-chat/relative-time.ts +2 -1
- package/src/agent-chat/thread-detail-panel.tsx +10 -6
- package/src/agent-chat/thread-feed-row.tsx +117 -34
- package/src/agent-chat/thread-feed.tsx +59 -27
- 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/agent-chat/virtualize.ts +48 -0
- package/src/charts/hooks/useBandPlot.ts +26 -8
- package/src/charts/index.ts +46 -14
- package/src/charts/kinds/BandStrip.tsx +36 -14
- package/src/charts/kinds/Bars.tsx +68 -20
- package/src/charts/kinds/Donut.tsx +30 -3
- package/src/charts/kinds/DualPanel.tsx +60 -13
- 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 +72 -35
- package/src/charts/layout/auto-margin.ts +134 -21
- package/src/charts/layout/log-ticks.ts +90 -0
- package/src/charts/primitives/Axes.tsx +82 -5
- package/src/charts/primitives/CartesianChart.tsx +194 -41
- package/src/charts/primitives/ChartCard.tsx +111 -27
- package/src/charts/primitives/ChartFrame.tsx +111 -26
- package/src/charts/primitives/ChartLegend.tsx +43 -13
- package/src/charts/primitives/ChartPending.tsx +194 -10
- 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 +19 -27
- package/src/charts/utils/ticks.ts +149 -4
- package/src/cli/audit-allows.ts +371 -0
- package/src/cli/check-theme.ts +197 -0
- package/src/cli/doctor.ts +331 -0
- package/src/cli/guard-hook.ts +115 -0
- package/src/cli/help.ts +101 -0
- package/src/cli/index.ts +269 -3434
- package/src/cli/init.ts +247 -0
- package/src/cli/sync.ts +324 -0
- package/src/cli/tokens-css.ts +252 -0
- 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 +22 -1
- package/src/commands/overlays-mount.tsx +63 -31
- package/src/commands/shell-bridge.ts +86 -0
- package/src/common/errors.ts +143 -0
- package/src/common/index.ts +23 -0
- package/src/common/is-dev.ts +4 -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/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 +6 -8
- 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 +90 -10
- 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 +32 -16
- package/src/controls/filter-context.tsx +14 -6
- 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 +7 -0
- package/src/controls/multi-select-filter.tsx +177 -27
- package/src/controls/number-filter.tsx +61 -23
- 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 +76 -39
- package/src/controls/search-filter.tsx +30 -12
- 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 +36 -16
- package/src/controls/view-tabs.tsx +63 -11
- package/src/controls-dates/date-range-picker.tsx +8 -1
- package/src/dashboard/delta-badge.tsx +75 -4
- package/src/dashboard/empty-state.tsx +67 -24
- package/src/dashboard/index.ts +24 -3
- package/src/dashboard/query-state.tsx +142 -85
- package/src/{section → dashboard}/section.module.css +11 -0
- package/src/dashboard/section.tsx +287 -0
- package/src/dashboard/settings-section.tsx +88 -32
- package/src/dashboard/stat-card.module.css +46 -31
- package/src/dashboard/stat-card.module.css.d.ts +1 -0
- package/src/dashboard/stat-card.tsx +186 -128
- 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/{widget-header → dashboard}/widget-header.module.css +72 -7
- package/src/dashboard/widget-header.tsx +292 -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 +921 -348
- package/src/data/query-branch.ts +53 -0
- package/src/data/table.ts +9 -23
- package/src/data/virtual-list.tsx +190 -56
- package/src/data/virtual.ts +8 -4
- package/src/dev-dock.tsx +159 -0
- package/src/format/date.ts +184 -0
- package/src/format/index.ts +69 -0
- package/src/format/measure.ts +31 -0
- package/src/format/number.ts +129 -0
- package/src/format/shared.ts +63 -0
- package/src/forms/FormErrorSummary.tsx +13 -6
- package/src/forms/create-form.ts +2 -2
- package/src/forms/field.ts +42 -13
- 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 +37 -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 +99 -70
- package/src/guard/types.ts +7 -10
- package/src/index.ts +92 -19
- 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 +17 -8
- package/src/notifications/mount-guard.ts +39 -0
- package/src/notifications/notify.tsx +122 -3
- package/src/notifications/store.ts +7 -0
- package/src/{connectivity → provider}/connectivity-indicator.tsx +7 -2
- package/src/{connectivity → provider}/connectivity-provider.tsx +5 -2
- package/src/{connectivity/types.ts → provider/connectivity-types.ts} +5 -2
- package/src/provider/error-fallback.module.css +21 -0
- package/src/provider/error-fallback.module.css.d.ts +9 -0
- package/src/provider/index.tsx +116 -28
- package/src/provider/lab-theme.ts +2 -1
- package/src/{connectivity → provider}/use-connectivity.ts +4 -3
- package/src/query-client.ts +100 -0
- package/src/{query/devtools.tsx → query-devtools.tsx} +6 -4
- package/src/register.ts +20 -4
- package/src/router-tanstack/index.ts +4 -15
- package/src/router-tanstack/nav.ts +1 -1
- package/src/router-tanstack/search-store.ts +6 -14
- package/src/router-tanstack/use-nav.ts +19 -14
- 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 +20 -10
- package/src/shell/app-header.module.css +10 -5
- package/src/shell/app-main.module.css +118 -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 +71 -12
- package/src/shell/app-sidebar-account.tsx +29 -6
- package/src/shell/app-sidebar.module.css +63 -96
- package/src/shell/app-sidebar.module.css.d.ts +0 -5
- package/src/shell/app-sidebar.tsx +61 -105
- package/src/shell/index.tsx +179 -93
- package/src/shell/isomorphic-layout-effect.ts +14 -0
- package/src/shell/mobile-nav-model.ts +67 -11
- package/src/shell/nav-count-badge.tsx +6 -1
- package/src/{nav/types.ts → shell/nav-types.ts} +15 -6
- 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 +327 -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/page-title.module.css +33 -0
- package/src/shell/page-title.module.css.d.ts +11 -0
- package/src/shell/page-title.tsx +57 -0
- package/src/shell/sidebar-block-model.ts +1 -1
- package/src/shell/sidebar-blocks.tsx +1 -1
- package/src/shell/sidebar-search.module.css +1 -1
- package/src/shell/sidebar-search.tsx +13 -4
- package/src/shell/use-breakpoint.ts +73 -0
- package/src/state/fields.ts +50 -53
- package/src/state/persisted-or-local.ts +50 -0
- package/src/state.ts +0 -9
- package/src/styles.css +36 -0
- package/src/surfaces.ts +72 -57
- package/src/theme/ctl-theme.tsx +10 -0
- package/src/theme/index.ts +136 -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-toggle/index.tsx → theme/theme-toggle.tsx} +11 -4
- package/src/theme-lab/boot.ts +140 -0
- package/src/theme-lab/index.tsx +21 -112
- package/src/tokens/index.ts +60 -6
- package/src/tokens/palette.ts +70 -30
- 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/connectivity/connectivity-indicator.d.ts +0 -11
- package/dist/connectivity/connectivity-indicator.d.ts.map +0 -1
- package/dist/connectivity/connectivity-provider.d.ts.map +0 -1
- package/dist/connectivity/index.d.ts +0 -13
- package/dist/connectivity/index.d.ts.map +0 -1
- package/dist/connectivity/index.js +0 -8
- package/dist/connectivity/types.d.ts.map +0 -1
- package/dist/connectivity/use-connectivity.d.ts +0 -3
- package/dist/connectivity/use-connectivity.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/range-filter.type-guard.test.d.ts +0 -2
- package/dist/controls/range-filter.type-guard.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/data/index.d.ts +0 -38
- package/dist/data/index.d.ts.map +0 -1
- package/dist/data/index.js +0 -2
- 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/motion/index.d.ts.map +0 -1
- package/dist/nav/types.d.ts.map +0 -1
- package/dist/notifications/overlay.d.ts +0 -20
- package/dist/notifications/overlay.d.ts.map +0 -1
- package/dist/notifications/overlay.js +0 -12
- 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/devtools.d.ts.map +0 -1
- package/dist/query/error-message.d.ts +0 -41
- package/dist/query/error-message.d.ts.map +0 -1
- package/dist/query/error-message.js +0 -30
- package/dist/query/error-message.test.d.ts +0 -2
- package/dist/query/error-message.test.d.ts.map +0 -1
- package/dist/query/index.d.ts +0 -47
- package/dist/query/index.d.ts.map +0 -1
- package/dist/query/index.js +0 -56
- package/dist/router-tanstack/field.d.ts +0 -14
- package/dist/router-tanstack/field.d.ts.map +0 -1
- package/dist/router-tanstack/field.js +0 -4
- package/dist/router-tanstack/multi-search-param-store.d.ts +0 -43
- package/dist/router-tanstack/multi-search-param-store.d.ts.map +0 -1
- package/dist/router-tanstack/multi-search-param-store.js +0 -30
- 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.d.ts +0 -42
- package/dist/router-tanstack/search-param-store.d.ts.map +0 -1
- package/dist/router-tanstack/search-param-store.js +0 -25
- 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/index.d.ts +0 -2
- package/dist/section/index.d.ts.map +0 -1
- package/dist/section/index.js +0 -4
- package/dist/section/section.d.ts +0 -24
- package/dist/section/section.d.ts.map +0 -1
- package/dist/section/section.js +0 -126
- 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/state/persisted.test.d.ts +0 -2
- package/dist/state/persisted.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/theme-toggle/index.d.ts +0 -8
- package/dist/theme-toggle/index.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.d.ts +0 -13
- package/dist/widget-header/delta-badge.d.ts.map +0 -1
- package/dist/widget-header/delta-badge.js +0 -29
- 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/index.d.ts +0 -3
- package/dist/widget-header/index.d.ts.map +0 -1
- package/dist/widget-header/index.js +0 -6
- 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.d.ts +0 -67
- package/dist/widget-header/widget-header.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/connectivity/index.ts +0 -18
- 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 -1053
- 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 -137
- package/src/controls/range-filter.type-guard.test.tsx +0 -122
- 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 -385
- package/src/data/data-table.test.tsx +0 -434
- package/src/data/index.ts +0 -41
- package/src/guard/check-source.test.ts +0 -3388
- package/src/guard/grace.test.ts +0 -158
- package/src/guard/guard-hook.test.ts +0 -203
- package/src/notifications/overlay.tsx +0 -64
- 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/query/error-message.ts +0 -70
- package/src/query/index.ts +0 -97
- package/src/router-tanstack/field.ts +0 -35
- package/src/router-tanstack/multi-search-param-store.test.ts +0 -124
- package/src/router-tanstack/multi-search-param-store.ts +0 -106
- 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-param-store.ts +0 -100
- package/src/router-tanstack/search-store.router.test.tsx +0 -882
- package/src/router-tanstack/search-store.test.ts +0 -578
- package/src/router-tanstack/use-nav.test.tsx +0 -187
- package/src/section/index.ts +0 -1
- package/src/section/section.test.tsx +0 -204
- package/src/section/section.tsx +0 -220
- 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 -512
- package/src/state/persisted.test.ts +0 -91
- 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/delta-badge.tsx +0 -57
- package/src/widget-header/index.ts +0 -2
- package/src/widget-header/no-mantine.test.ts +0 -33
- package/src/widget-header/widget-header.test.tsx +0 -187
- package/src/widget-header/widget-header.tsx +0 -213
- /package/dist/{motion/index.js → common/motion.js} +0 -0
- /package/dist/{section → dashboard}/section.module.css.d.ts +0 -0
- /package/dist/{widget-header → dashboard}/widget-header.module.css.d.ts +0 -0
- /package/dist/{connectivity/types.js → provider/connectivity-types.js} +0 -0
- /package/dist/{connectivity → provider}/use-connectivity.js +0 -0
- /package/dist/{nav/types.js → shell/nav-types.js} +0 -0
- /package/src/{motion/index.ts → common/motion.ts} +0 -0
- /package/src/{section → dashboard}/section.module.css.d.ts +0 -0
- /package/src/{widget-header → dashboard}/widget-header.module.css.d.ts +0 -0
|
@@ -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">
|
|
@@ -112,6 +112,54 @@ export type ResolvedVirtualize = {
|
|
|
112
112
|
readonly height: number | string
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
/**
|
|
116
|
+
* `ThreadFeedRow`'s OWN height contract (B3) — a strict superset of {@link VirtualizeProps} that
|
|
117
|
+
* additionally allows `height` WITHOUT `virtualize`. This is deliberately NOT a widening of
|
|
118
|
+
* `VirtualizeProps` itself (see `virtualize.type-guard.test.ts`, which pins that union rejecting
|
|
119
|
+
* `{ height }` with no `virtualize`): the two `height` modes mean different things and route to
|
|
120
|
+
* different DOM. `virtualize: true|VirtualizeOptions` + `height` still hands the row's transcript a
|
|
121
|
+
* fixed-size scroll container `@tanstack/react-virtual` owns and measures (unchanged, forwarded to
|
|
122
|
+
* `ThreadTranscript` via `resolveVirtualize`). `height` ALONE — no `virtualize` — wraps the row's
|
|
123
|
+
* TRANSCRIPT in a fixed-height `BasaltStickToBottom` (the same auto-follow-the-live-turn container
|
|
124
|
+
* `ThreadDetailPanel` already uses), leaving the composer outside/below it: a bounded, scrolling
|
|
125
|
+
* row for a thread the caller does not want to virtualize (argo's hermes-chat S7 — a 480px
|
|
126
|
+
* transcript body with inner scroll, no `@tanstack/react-virtual` peer installed).
|
|
127
|
+
*/
|
|
128
|
+
export type RowHeightProps =
|
|
129
|
+
| { readonly virtualize?: false; readonly height?: number | string }
|
|
130
|
+
| { readonly virtualize: true | VirtualizeOptions; readonly height: number | string }
|
|
131
|
+
|
|
132
|
+
/** The resolved shape of {@link RowHeightProps} — exactly one of the three row body layouts. */
|
|
133
|
+
export type ResolvedRowHeight =
|
|
134
|
+
| { readonly kind: 'virtualized'; readonly virtualize: ResolvedVirtualize }
|
|
135
|
+
| { readonly kind: 'bounded'; readonly height: number | string }
|
|
136
|
+
| { readonly kind: 'content-sized' }
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* The single narrowing point `ThreadFeedRow` resolves {@link RowHeightProps} through — mirrors
|
|
140
|
+
* {@link resolveVirtualize}'s role for `VirtualizeProps`, extended with the `'bounded'` branch B3
|
|
141
|
+
* adds. Runtime-checked rather than routed through `resolveVirtualize` itself: `RowHeightProps`'
|
|
142
|
+
* inactive branch relaxes `height` from `never` to `number | string | undefined`, which is NOT
|
|
143
|
+
* structurally assignable to `VirtualizeProps` (by design — see this type's own doc), so the two
|
|
144
|
+
* resolvers stay independent rather than one calling the other with a cast.
|
|
145
|
+
*/
|
|
146
|
+
export function resolveRowHeight(props: RowHeightProps): ResolvedRowHeight {
|
|
147
|
+
const { virtualize, height } = props
|
|
148
|
+
if (virtualize === true || (typeof virtualize === 'object' && virtualize !== null)) {
|
|
149
|
+
// The union guarantees `height` is present on this branch — see resolveVirtualize's own doc
|
|
150
|
+
// for why the pairing is re-stated here instead of narrowed automatically.
|
|
151
|
+
return {
|
|
152
|
+
kind: 'virtualized',
|
|
153
|
+
virtualize: {
|
|
154
|
+
options: virtualize === true ? {} : virtualize,
|
|
155
|
+
height: height as number | string,
|
|
156
|
+
},
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (height !== undefined) return { kind: 'bounded', height }
|
|
160
|
+
return { kind: 'content-sized' }
|
|
161
|
+
}
|
|
162
|
+
|
|
115
163
|
/**
|
|
116
164
|
* Narrows a `VirtualizeProps` pair once, centrally: `null` when virtualization is off, otherwise
|
|
117
165
|
* the options object (normalizing the bare `virtualize: true` shorthand to `{}`) alongside the
|
|
@@ -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,
|
|
@@ -84,7 +101,12 @@ export {
|
|
|
84
101
|
TooltipRow,
|
|
85
102
|
TooltipBody,
|
|
86
103
|
} from './primitives/ChartTooltip'
|
|
87
|
-
export {
|
|
104
|
+
export {
|
|
105
|
+
AxisBottomDate,
|
|
106
|
+
AxisBottomNumeric,
|
|
107
|
+
AxisLeftNumeric,
|
|
108
|
+
AxisRightNumeric,
|
|
109
|
+
} from './primitives/Axes'
|
|
88
110
|
export { HoverOverlay } from './primitives/HoverOverlay'
|
|
89
111
|
export { ZoneRects, type ZoneSpec } from './primitives/ZoneRects'
|
|
90
112
|
export { XZoneRects, type XZoneSpec } from './primitives/XZoneRects'
|
|
@@ -102,8 +124,19 @@ export type { CursorResolution, DomainKind } from './cursor/resolve'
|
|
|
102
124
|
export { useChartSize, type UseChartSizeResult, type ChartSize } from './hooks/useChartSize'
|
|
103
125
|
|
|
104
126
|
// ── Utils ────────────────────────────────────────────────────────────────
|
|
105
|
-
export {
|
|
106
|
-
|
|
127
|
+
export {
|
|
128
|
+
fmtAxisDate,
|
|
129
|
+
fmtTooltipDate,
|
|
130
|
+
fmtCompact,
|
|
131
|
+
type FmtCompactOptions,
|
|
132
|
+
fmtPercent,
|
|
133
|
+
type FmtPercentOptions,
|
|
134
|
+
fmtCurrency,
|
|
135
|
+
type FmtCurrencyOptions,
|
|
136
|
+
fmtInt,
|
|
137
|
+
formatters,
|
|
138
|
+
} from './utils/format'
|
|
139
|
+
export { smartTicks, smartTicksEvery, xLabelPxFor, autoXLabelRotate } from './utils/ticks'
|
|
107
140
|
export { autoMargin, probeAxisLabels, type AutoMarginInput } from './layout/auto-margin'
|
|
108
141
|
export { measureText, maxTextWidth } from './utils/measure-text'
|
|
109
142
|
|
|
@@ -111,19 +144,11 @@ export { measureText, maxTextWidth } from './utils/measure-text'
|
|
|
111
144
|
export {
|
|
112
145
|
ZonedLine,
|
|
113
146
|
type ZonedLineProps,
|
|
114
|
-
type ZonedLineZone,
|
|
115
147
|
type ZonedLineThreshold,
|
|
116
148
|
type ZonedLineRefLine,
|
|
117
149
|
} from './kinds/ZonedLine'
|
|
118
150
|
|
|
119
|
-
export {
|
|
120
|
-
Bars,
|
|
121
|
-
type BarsProps,
|
|
122
|
-
type BarsBar,
|
|
123
|
-
type BarsLine,
|
|
124
|
-
type BarsZone,
|
|
125
|
-
type BarsRefLine,
|
|
126
|
-
} from './kinds/Bars'
|
|
151
|
+
export { Bars, type BarsProps, type BarsBar, type BarsLine, type BarsRefLine } from './kinds/Bars'
|
|
127
152
|
|
|
128
153
|
export { StackedArea, type StackedAreaProps } from './kinds/StackedArea'
|
|
129
154
|
export { Donut, type DonutProps, type DonutDatum } from './kinds/Donut'
|
|
@@ -140,7 +165,12 @@ export {
|
|
|
140
165
|
export { MirroredBars, type MirroredBarsProps, type MirroredBarPane } from './kinds/MirroredBars'
|
|
141
166
|
|
|
142
167
|
// ── Sparklines ───────────────────────────────────────────────────────────
|
|
143
|
-
export {
|
|
168
|
+
export {
|
|
169
|
+
LineSparkline,
|
|
170
|
+
type LineSparklineProps,
|
|
171
|
+
BarSparkline,
|
|
172
|
+
type BarSparklineProps,
|
|
173
|
+
} from './sparklines'
|
|
144
174
|
|
|
145
175
|
// ── Re-exported visx primitives ──────────────────────────────────────────
|
|
146
176
|
// Bespoke charts (genuinely unique compositions per CLAUDE.md) need raw
|
|
@@ -155,6 +185,8 @@ export {
|
|
|
155
185
|
curveMonotoneX,
|
|
156
186
|
curveLinear,
|
|
157
187
|
curveCatmullRom,
|
|
188
|
+
curveStep,
|
|
158
189
|
curveStepAfter,
|
|
190
|
+
curveStepBefore,
|
|
159
191
|
curveBasis,
|
|
160
192
|
} from '@visx/curve'
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Group } from '@visx/group'
|
|
2
2
|
import { memo, useMemo } from 'react'
|
|
3
3
|
import type { ReactNode } from 'react'
|
|
4
|
+
import { assertRequiredProps } from '../../common/validate'
|
|
5
|
+
import type { BasaltProps } from '../../common/props'
|
|
4
6
|
import { VX, alpha } from '../../tokens'
|
|
5
7
|
import type { ChartMargin } from '../../tokens'
|
|
6
8
|
import type { CursorResolution } from '../cursor/resolve'
|
|
@@ -17,8 +19,10 @@ import {
|
|
|
17
19
|
import { Crosshair } from '../primitives/Crosshair'
|
|
18
20
|
import { HatchPattern, hatchFill, hatchSizeFor } from '../primitives/HatchPattern'
|
|
19
21
|
import { HoverOverlay } from '../primitives/HoverOverlay'
|
|
22
|
+
import type { ChartState } from '../primitives/ChartPending'
|
|
20
23
|
import type { ChartLegendConfig, SeriesStyle } from '../series'
|
|
21
24
|
import { fmtAxisDate } from '../utils/format'
|
|
25
|
+
import { isDev } from '../../common/is-dev'
|
|
22
26
|
|
|
23
27
|
/**
|
|
24
28
|
* A state a strip can draw. Extends `SeriesStyle` rather than `ChartSeries` because a band has no
|
|
@@ -78,7 +82,7 @@ export type BandSpan = {
|
|
|
78
82
|
}
|
|
79
83
|
}
|
|
80
84
|
|
|
81
|
-
export type BandStripProps<T> = {
|
|
85
|
+
export type BandStripProps<T> = BasaltProps & {
|
|
82
86
|
data: readonly T[]
|
|
83
87
|
/** Stable id — identifies this chart as the cursor's source. */
|
|
84
88
|
chartId: string
|
|
@@ -110,8 +114,10 @@ export type BandStripProps<T> = {
|
|
|
110
114
|
cursorResolution?: CursorResolution
|
|
111
115
|
tooltip?: BandTooltipConfig<T> | false
|
|
112
116
|
legend?: ChartLegendConfig | false
|
|
113
|
-
/** Colour of the absence hatch. Names a `series` entry, so absence
|
|
114
|
-
* state — a hatched band is the one mark a reader cannot decode from
|
|
117
|
+
/** Colour of the absence hatch, AND the state that is absent. Names a `series` entry, so absence
|
|
118
|
+
* is legended like any other state — a hatched band is the one mark a reader cannot decode from
|
|
119
|
+
* an axis. A slot in this state hatches across its whole width unless its own `absentFraction`
|
|
120
|
+
* says otherwise; a slot in any other state hatches only its `absentFraction`. Default
|
|
115
121
|
* `VX.neutral`, unnamed. A key naming no `series` entry throws (a PROP, so a typo can only be a
|
|
116
122
|
* wiring error) rather than falling back to the unnamed default. */
|
|
117
123
|
absentState?: string
|
|
@@ -122,6 +128,9 @@ export type BandStripProps<T> = {
|
|
|
122
128
|
ariaLabel?: string
|
|
123
129
|
/** Forwarded to `ChartFrame` — see `ChartPending`'s JSDoc. */
|
|
124
130
|
isPending?: boolean
|
|
131
|
+
/** The three "nothing to draw" states in one prop — pending → error → empty. See
|
|
132
|
+
* `ChartState`; `isPending` stays a supported alias for `state={{ pending: true }}`. */
|
|
133
|
+
state?: ChartState
|
|
125
134
|
}
|
|
126
135
|
|
|
127
136
|
const DEFAULT_MARKER_INSET = 6
|
|
@@ -142,13 +151,6 @@ const UNKNOWN_MARK = {
|
|
|
142
151
|
strokeDasharray: '3 2',
|
|
143
152
|
} as const
|
|
144
153
|
|
|
145
|
-
/** The house dev gate (`src/provider`, `src/agent-chat` use the same expression): `basaltViteConfig`
|
|
146
|
-
* defines `process.env.NODE_ENV`, so a production bundle constant-folds this to `false` and drops
|
|
147
|
-
* the throw. Read per call, never hoisted to a module const, so a test can flip it. */
|
|
148
|
-
function isDev(): boolean {
|
|
149
|
-
return process.env['NODE_ENV'] !== 'production'
|
|
150
|
-
}
|
|
151
|
-
|
|
152
154
|
/**
|
|
153
155
|
* A `state` (or `marker.state`) naming no `series` entry.
|
|
154
156
|
*
|
|
@@ -187,7 +189,12 @@ function formatBandValue<T>(style: BandStripSeries<T>, datum: T): string {
|
|
|
187
189
|
* nothing measured, and a fact that must not be read off the ramp.
|
|
188
190
|
*/
|
|
189
191
|
function BandStripInner<T>(props: BandStripProps<T>) {
|
|
190
|
-
|
|
192
|
+
// F-ERR-1: name the component and the prop. Without this a missing accessor surfaces
|
|
193
|
+
// from inside visx as `undefined is not a function`, which `BasaltErrorBoundary`
|
|
194
|
+
// swallows into a blank subtree that names nothing.
|
|
195
|
+
assertRequiredProps('BandStrip', props, ['data', 'getX', 'series', 'getBand'])
|
|
196
|
+
const { series, chartId, height, fill, legend, ariaLabel, isPending, state, className, style } =
|
|
197
|
+
props
|
|
191
198
|
|
|
192
199
|
return (
|
|
193
200
|
<ChartFrame
|
|
@@ -197,6 +204,9 @@ function BandStripInner<T>(props: BandStripProps<T>) {
|
|
|
197
204
|
{...(fill !== undefined && { fill })}
|
|
198
205
|
{...(ariaLabel !== undefined && { ariaLabel })}
|
|
199
206
|
{...(isPending !== undefined && { isPending })}
|
|
207
|
+
{...(state !== undefined && { state })}
|
|
208
|
+
{...(className !== undefined && { className })}
|
|
209
|
+
{...(style !== undefined && { style })}
|
|
200
210
|
legend={resolveLegend(legend)}
|
|
201
211
|
>
|
|
202
212
|
{(plot) => <BandStripPlot {...props} plot={plot} />}
|
|
@@ -279,7 +289,15 @@ function BandStripPlot<T>(props: BandStripPlotProps<T>) {
|
|
|
279
289
|
// Clamped AND finite-checked. `foldedFrom` is carried by the consumer's datum, so a
|
|
280
290
|
// 0/0 on an un-folded slot arrives here as NaN — which `Math.min`/`Math.max` propagate
|
|
281
291
|
// straight into `width="NaN"`, a band that silently fails to paint.
|
|
282
|
-
|
|
292
|
+
// A slot whose STATE is the absent one is absent in whole — `absentState` and
|
|
293
|
+
// `absentFraction` are two ways of saying the same thing, and gating the hatch on the
|
|
294
|
+
// fraction alone meant a strip declaring `absentState` painted a flat fill while the docs,
|
|
295
|
+
// the demo and its own `<pattern>` all promised hatching. An explicit `absentFraction` still
|
|
296
|
+
// wins: a partially-covered slot in the absent state says so itself.
|
|
297
|
+
const absent =
|
|
298
|
+
span.state === absentState
|
|
299
|
+
? clampFraction(span.absentFraction ?? 1)
|
|
300
|
+
: clampFraction(span.absentFraction)
|
|
283
301
|
const measuredWidth = bandWidth * (1 - absent)
|
|
284
302
|
const hatchWidth = bandWidth - measuredWidth
|
|
285
303
|
const markerKey = span.marker?.state ?? span.state
|
|
@@ -327,7 +345,7 @@ function BandStripPlot<T>(props: BandStripPlotProps<T>) {
|
|
|
327
345
|
)
|
|
328
346
|
})
|
|
329
347
|
return out
|
|
330
|
-
}, [bands, getBand, getX, styleByKey, hidden, bandWidth, step, stripHeight, hatchId])
|
|
348
|
+
}, [bands, getBand, getX, styleByKey, hidden, bandWidth, step, stripHeight, hatchId, absentState])
|
|
331
349
|
|
|
332
350
|
if (plotWidth <= 0 || bands.length === 0) return null
|
|
333
351
|
|
|
@@ -454,4 +472,8 @@ function deriveBandRow<T>(
|
|
|
454
472
|
* Hand-memoized: React Compiler does not process the shipped dist, so the hot kind is wrapped in
|
|
455
473
|
* `React.memo` to retain the auto-memoization it had as source (parity with `DualPanel`).
|
|
456
474
|
*/
|
|
457
|
-
|
|
475
|
+
const BandStripMemo = memo(BandStripInner)
|
|
476
|
+
// Without it every kind reads as `Memo` in React DevTools (audit A16) — a profiler flame
|
|
477
|
+
// graph of nine identically-named nodes names nothing.
|
|
478
|
+
BandStripMemo.displayName = 'BandStrip'
|
|
479
|
+
export const BandStrip = BandStripMemo as typeof BandStripInner
|