basalt-ui 1.27.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 +59 -0
- package/MIGRATING.md +613 -20
- package/README.md +33 -3
- package/agent/rules/basalt-batteries.md +25 -10
- package/agent/rules/basalt-controls.md +56 -31
- package/agent/rules/basalt-mantine.md +17 -6
- package/agent/rules/basalt-tokens.md +1 -1
- package/configs/oxlint-plugin.js +1056 -28
- package/configs/oxlint-plugin.test.ts +1066 -0
- package/configs/oxlint.json +7 -0
- 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 +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 +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 +7 -1
- 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 +44 -38
- package/dist/dashboard/stat-card.d.ts.map +1 -1
- package/dist/dashboard/stat-card.js +55 -42
- 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/data/data-table.d.ts +151 -12
- package/dist/data/data-table.d.ts.map +1 -1
- package/dist/data/data-table.js +384 -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.map +1 -1
- package/dist/guard/index.js +26 -6
- 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/search-store.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.js +1 -1
- 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 +23 -3
- package/dist/state/fields.d.ts.map +1 -1
- package/dist/state/fields.js +13 -2
- 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/surfaces.d.ts +12 -11
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +42 -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 +69 -4
- package/dist/widget-header/widget-header.d.ts.map +1 -1
- package/dist/widget-header/widget-header.js +42 -27
- package/dist/widget-header/widget-header.module.css +72 -7
- 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 +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 +5 -1
- package/src/dashboard/empty-state.tsx +72 -25
- package/src/dashboard/index.ts +13 -1
- package/src/dashboard/query-state.tsx +154 -84
- package/src/dashboard/settings-section.tsx +87 -31
- 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 +185 -127
- 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 +919 -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 +73 -18
- package/src/index.ts +74 -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 +1 -0
- package/src/router-tanstack/search-store.ts +3 -10
- 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 +43 -10
- package/src/state/persisted-or-local.ts +50 -0
- package/src/state.ts +0 -9
- package/src/surfaces.ts +42 -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 +72 -7
- package/src/widget-header/widget-header.tsx +150 -71
- 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/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/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/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/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 -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/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/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 -882
- package/src/router-tanstack/search-store.test.ts +0 -578
- 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 -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/no-mantine.test.ts +0 -33
- package/src/widget-header/widget-header.test.tsx +0 -187
|
@@ -1,60 +1,71 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Active nav row = heavier weight
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* tint
|
|
2
|
+
* Active nav row = an ACCENT-tinted fill plus heavier weight, so the row reads unambiguously as
|
|
3
|
+
* SELECTED rather than merely hovered (docs/DESIGN-SPEC.md §5). The fill was previously the ink
|
|
4
|
+
* tint `--nl-bg` carries (theme/index.ts) at 9% — visually indistinguishable from the 6% ink hover
|
|
5
|
+
* tint on a dark surface, which is what let a hovered row read as a second active item. NO depth:
|
|
6
|
+
* an active row is a SELECTED ROW, not a raised control.
|
|
7
|
+
*
|
|
8
|
+
* `[data-active]` is the ONLY style hook here — `use-nav.ts` already resolves exactly one winner
|
|
9
|
+
* per route and stamps `data-active` on it, so keying these selectors on `aria-current="page"` too
|
|
10
|
+
* only risked a second, looser router-native match repainting a row basalt's own model disagreed
|
|
11
|
+
* with. `aria-current` stays on the DOM (React Router/TanStack Router set it) for a11y; it is just
|
|
12
|
+
* not a CSS hook.
|
|
6
13
|
*
|
|
7
14
|
* Applied at the THEME level via `classNames` so it reaches EVERY NavLink render path — including a
|
|
8
|
-
* consumer's router `<Link>` mounted through `SidebarItem.Anchor`, which a shell-scoped CSS
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* throws a React warning), so the state selectors live here. React Router's NavLink marks the
|
|
12
|
-
* active item via `aria-current` rather than the `active` prop's `data-active`, so both states are
|
|
13
|
-
* matched.
|
|
15
|
+
* consumer's router `<Link>` mounted through `SidebarItem.Anchor`, which a shell-scoped CSS module
|
|
16
|
+
* never sees. Mantine's `styles` prop only takes flat inline properties (a nested `&[data-active]`
|
|
17
|
+
* there throws a React warning), so the state selectors live here.
|
|
14
18
|
*/
|
|
15
|
-
.root[data-active]
|
|
16
|
-
|
|
19
|
+
.root[data-active] {
|
|
20
|
+
background-color: color-mix(in srgb, var(--vx-accent) 12%, transparent);
|
|
17
21
|
font-weight: 600;
|
|
18
22
|
}
|
|
19
23
|
|
|
24
|
+
/* Active + hover — one step stronger than the resting active fill, so a pointer over the active row
|
|
25
|
+
* still reads as feedback rather than as a flat, unresponsive selection. */
|
|
26
|
+
@media (hover: hover) {
|
|
27
|
+
.root[data-active]:hover {
|
|
28
|
+
background-color: color-mix(in srgb, var(--vx-accent) 16%, transparent);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
20
32
|
/*
|
|
21
33
|
* Active-icon accent: only the leftSection (the icon, `data-position="left"`) turns accent-colored
|
|
22
34
|
* — the label stays ink (via `--nl-color`). Targets Mantine's own `data-position` attribute rather
|
|
23
35
|
* than a custom class, so the rightSection (child-expand chevron) is untouched.
|
|
24
36
|
*/
|
|
25
|
-
.root[data-active] [data-position='left']
|
|
26
|
-
.root[aria-current='page'] [data-position='left'] {
|
|
37
|
+
.root[data-active] [data-position='left'] {
|
|
27
38
|
color: var(--vx-accent);
|
|
28
39
|
}
|
|
29
40
|
|
|
30
41
|
/*
|
|
31
42
|
* Inactive rows: muted text, faint icon (docs/DESIGN-SPEC.md §5 Sidebar — "inactive = muted text,
|
|
32
43
|
* faint icon"). Mantine's own NavLink.css never sets a color on the base rule — it only colors the
|
|
33
|
-
* label under `[data-active]
|
|
34
|
-
*
|
|
44
|
+
* label under `[data-active]` — so an inactive row otherwise falls through to the ambient
|
|
45
|
+
* `--mantine-color-text` (ink), same reasoning as the active-icon rule above.
|
|
35
46
|
*/
|
|
36
|
-
.root:not([data-active])
|
|
47
|
+
.root:not([data-active]) {
|
|
37
48
|
color: var(--vx-muted);
|
|
38
49
|
}
|
|
39
50
|
|
|
40
|
-
.root:not([data-active])
|
|
51
|
+
.root:not([data-active]) [data-position='left'] {
|
|
41
52
|
color: var(--vx-faint);
|
|
42
53
|
}
|
|
43
54
|
|
|
44
55
|
/*
|
|
45
|
-
* Inactive hover — the ink-
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* hover fill uses `:where(scheme) .m_*:hover` (gray-0/dark-6),
|
|
49
|
-
* Active rows keep their
|
|
56
|
+
* Inactive hover — the ink-5% ghost tint + ink text/icon (docs/DESIGN-SPEC.md §5; dropped from 6%
|
|
57
|
+
* so it reads clearly below the active row's 12% accent fill instead of nearly matching its old 9%
|
|
58
|
+
* ink fill). Lives here (not only in the shell module) so a consumer's `SidebarItem.Anchor` path
|
|
59
|
+
* gets the same hover; Mantine's own hover fill uses `:where(scheme) .m_*:hover` (gray-0/dark-6),
|
|
60
|
+
* which this outranks on specificity. Active rows keep their accent fill above, untouched here.
|
|
50
61
|
*/
|
|
51
62
|
@media (hover: hover) {
|
|
52
|
-
.root:not([data-active]):
|
|
53
|
-
background-color: color-mix(in srgb, var(--vx-ink)
|
|
63
|
+
.root:not([data-active]):hover {
|
|
64
|
+
background-color: color-mix(in srgb, var(--vx-ink) 5%, transparent);
|
|
54
65
|
color: var(--vx-ink);
|
|
55
66
|
}
|
|
56
67
|
|
|
57
|
-
.root:not([data-active]):
|
|
68
|
+
.root:not([data-active]):hover [data-position='left'] {
|
|
58
69
|
color: var(--vx-ink);
|
|
59
70
|
}
|
|
60
71
|
}
|
|
@@ -13,6 +13,28 @@
|
|
|
13
13
|
font-weight: 600;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/*
|
|
17
|
+
* Mantine's own `.control` ships `flex: 1` with no `min-width` override, so its initial value
|
|
18
|
+
* (`auto`) floors every option at its min-content width — a `fullWidth` track therefore still
|
|
19
|
+
* splits UNEVENLY (a long label's column stays wider than its siblings) instead of dividing the
|
|
20
|
+
* track equally, which is what `fullWidth` promises. `min-width: 0` lets flex-basis (not content)
|
|
21
|
+
* decide each column's share; Mantine's own `.label` already carries `overflow: hidden` +
|
|
22
|
+
* `text-overflow: ellipsis`, so a label that no longer fits its equal share truncates instead of
|
|
23
|
+
* forcing the column wide.
|
|
24
|
+
*
|
|
25
|
+
* Scoped to `[data-full-width]` — the same attribute Mantine's own CSS keys `display: flex` off
|
|
26
|
+
* (`SegmentedControl.css`) — because a bare `.control { min-width: 0 }` regressed the OTHER shape:
|
|
27
|
+
* a non-`fullWidth` track (two or three options in a `Section`/`StatCard` header's `actions` slot)
|
|
28
|
+
* is shrink-to-fit by design, and stripping every segment's min-content floor let a squeezing
|
|
29
|
+
* ancestor collapse it below its own labels' natural width with no ellipsis at all ("Absolute"
|
|
30
|
+
* clipped to "Absolut"). Outside `fullWidth`, `.control` keeps the browser's own `min-width: auto`
|
|
31
|
+
* — the ordinary flex-item protection — and the root's own `min-width: max-content`
|
|
32
|
+
* (`theme/index.ts`'s `SegmentedControl.extend`) is the backstop above it.
|
|
33
|
+
*/
|
|
34
|
+
[data-full-width] .control {
|
|
35
|
+
min-width: 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
16
38
|
/*
|
|
17
39
|
* Numeric segment labels read mono `VX.text.xs` (`docs/CONTROLS-SPEC.md` §3 last paragraph, C7) —
|
|
18
40
|
* a consumer opts in with a bare `data-numeric` attribute on the `SegmentedControl` itself (an
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme-lab boot — the production-entry half of the theme lab, split out of `index.tsx` on purpose.
|
|
3
|
+
*
|
|
4
|
+
* `applyOverrides(loadOverrides())` is called at PRODUCTION module scope by every consumer's
|
|
5
|
+
* `main.tsx` (see `README.md`'s "Wire the runtime" section) to re-apply a persisted tuning session
|
|
6
|
+
* on load — but `index.tsx` also hosts `ThemeLabControls` (11 `@mantine/core` imports) and
|
|
7
|
+
* re-exports `DeriveControls`, which is DEV-tool UI. None of the three boot functions should assume
|
|
8
|
+
* a browser: `readVar` in particular used to append a probe `<span>` to `document.body` with no
|
|
9
|
+
* guard at all, which threw outright under SSR.
|
|
10
|
+
*
|
|
11
|
+
* What is actually enforced (`boot.test.ts`): every DOM-touching export is a no-op / empty-result
|
|
12
|
+
* with no `document`, never a throw, and this module statically imports nothing from `@mantine/*` or
|
|
13
|
+
* React. There is no `basalt-ui/theme-lab/boot` subpath and no dist-layering check on it — a prod
|
|
14
|
+
* entry still imports `basalt-ui/theme-lab` and gets `index.tsx`, which re-exports this module
|
|
15
|
+
* alongside `ThemeLabControls`. Whether a bundler actually tree-shakes the unused Mantine UI back out
|
|
16
|
+
* of a prod build that only calls `applyOverrides`/`loadOverrides`/`readVar` is bundler-dependent,
|
|
17
|
+
* not something this split guarantees on its own.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export type ColorTunable = { var: string; label: string }
|
|
21
|
+
export type ColorGroup = { title: string; items: ColorTunable[] }
|
|
22
|
+
export type Overrides = Record<string, string>
|
|
23
|
+
|
|
24
|
+
/** Gradient strength knobs (percent values, theme-independent). */
|
|
25
|
+
export const AREA_TOP_VAR = '--vx-area-top'
|
|
26
|
+
export const AREA_BOTTOM_VAR = '--vx-area-bottom'
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Structural `--vx-*` vars worth tuning by eye — the ones `tokens/palette.ts` hand-authors and
|
|
30
|
+
* that never move with the derive config (ColorInput is hex-only, so `rgba()`/`color-mix()` chrome
|
|
31
|
+
* vars like `--vx-axis` / `--vx-grid` are intentionally omitted regardless).
|
|
32
|
+
*
|
|
33
|
+
* Identity/color tuning lives exclusively in `DeriveControls` (one accent seed + bounded knobs,
|
|
34
|
+
* `tokens/derive.ts`) — every `--vx-*` var GENERATED from that config (the accent family, the 12
|
|
35
|
+
* categorical fills, the ink ramp, most of the surface stops, the `good`/`warn`/`bad`
|
|
36
|
+
* status/semantic hues) has been pruned from here on purpose: hand-tuning a hex the derive engine
|
|
37
|
+
* regenerates on every render is a dead knob. What remains is a low-level inspector for the
|
|
38
|
+
* genuinely NON-derived structural tokens only.
|
|
39
|
+
*
|
|
40
|
+
* Generic by design: argo's domain series (Health / Strength / Walking) are NOT shipped — a
|
|
41
|
+
* consumer passes its own series groups to `ThemeLabControls` via the `groups` prop.
|
|
42
|
+
*/
|
|
43
|
+
export const COLOR_GROUPS: ColorGroup[] = [
|
|
44
|
+
{
|
|
45
|
+
// `excellent` (top-of-scale grade) and `neutral` (mid-scale) keep their own hand-authored BP
|
|
46
|
+
// families — unlike `good`/`warn`/`bad`, which are the SAME derived hues as `Semantic` and are
|
|
47
|
+
// not independently tunable here.
|
|
48
|
+
title: 'Status (chart-only)',
|
|
49
|
+
items: [
|
|
50
|
+
{ var: '--vx-status-excellent', label: 'Excellent' },
|
|
51
|
+
{ var: '--vx-status-neutral', label: 'Neutral' },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
// Chart line/dot chrome — hand-authored off the zinc `BP.gray`/`BP.white`/`BP.darkGray`
|
|
56
|
+
// families, independent of the derive config.
|
|
57
|
+
title: 'Chart chrome',
|
|
58
|
+
items: [
|
|
59
|
+
{ var: '--vx-line', label: 'Line' },
|
|
60
|
+
{ var: '--vx-line2', label: 'Line 2' },
|
|
61
|
+
{ var: '--vx-dot-stroke', label: 'Dot stroke' },
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
// The floating-layer surface (menus, popovers, tooltips, modals, drawers) — the one SURFACE
|
|
66
|
+
// stop the derive engine has no law for, so it stays a hand-picked hex/color-mix().
|
|
67
|
+
title: 'Surface',
|
|
68
|
+
items: [{ var: '--vx-surface-overlay', label: 'Overlay' }],
|
|
69
|
+
},
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
const COLOR_VARS = COLOR_GROUPS.flatMap((g) => g.items.map((i) => i.var))
|
|
73
|
+
const MANAGED_VARS = [...COLOR_VARS, AREA_TOP_VAR, AREA_BOTTOM_VAR]
|
|
74
|
+
|
|
75
|
+
const KEY = 'basalt-theme-lab'
|
|
76
|
+
|
|
77
|
+
/** SSR-safe: with no `document` (and so no `localStorage`), returns an empty overrides map. */
|
|
78
|
+
export function loadOverrides(): Overrides {
|
|
79
|
+
if (typeof document === 'undefined') return {}
|
|
80
|
+
try {
|
|
81
|
+
const raw = localStorage.getItem(KEY)
|
|
82
|
+
return raw ? (JSON.parse(raw) as Overrides) : {}
|
|
83
|
+
} catch {
|
|
84
|
+
return {}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function saveOverrides(o: Overrides): void {
|
|
89
|
+
if (typeof document === 'undefined') return
|
|
90
|
+
try {
|
|
91
|
+
localStorage.setItem(KEY, JSON.stringify(o))
|
|
92
|
+
} catch {
|
|
93
|
+
// private mode / quota — tuning just won't persist
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Clears every managed var, then re-applies the given overrides. The single mutation point.
|
|
99
|
+
* SSR-safe: with no `document`, this is a no-op.
|
|
100
|
+
*/
|
|
101
|
+
export function applyOverrides(o: Overrides): void {
|
|
102
|
+
if (typeof document === 'undefined') return
|
|
103
|
+
const el = document.documentElement
|
|
104
|
+
for (const v of MANAGED_VARS) el.style.removeProperty(v)
|
|
105
|
+
for (const [k, val] of Object.entries(o)) {
|
|
106
|
+
if (val) el.style.setProperty(k, val)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Current value of a color var as a hex `ColorInput` can display (reflects any active override or
|
|
112
|
+
* the stylesheet default). SSR-safe: with no `document`, returns `''`.
|
|
113
|
+
*
|
|
114
|
+
* Reading the custom property directly is not enough: an UNREGISTERED custom property computes to
|
|
115
|
+
* its literal source text, so a `color-mix()`-derived token (every surface — see `SURFACE` in
|
|
116
|
+
* tokens/palette.ts) comes back as the string `"color-mix(in srgb, #3f3f46 50%, #27272a)"`, which
|
|
117
|
+
* ColorInput cannot parse — it renders an empty swatch. Painting the var onto a probe element and
|
|
118
|
+
* reading a real COLOR property instead forces the browser to resolve it to an rgb triple.
|
|
119
|
+
*/
|
|
120
|
+
export function readVar(name: string): string {
|
|
121
|
+
if (typeof document === 'undefined') return ''
|
|
122
|
+
const raw = getComputedStyle(document.documentElement).getPropertyValue(name).trim()
|
|
123
|
+
if (raw.startsWith('#')) return raw
|
|
124
|
+
if (!raw) return ''
|
|
125
|
+
|
|
126
|
+
const probe = document.createElement('span')
|
|
127
|
+
probe.style.display = 'none'
|
|
128
|
+
probe.style.color = `var(${name})`
|
|
129
|
+
document.body.appendChild(probe)
|
|
130
|
+
const computed = getComputedStyle(probe).color
|
|
131
|
+
probe.remove()
|
|
132
|
+
|
|
133
|
+
const channels = computed.match(/[\d.]+/g)
|
|
134
|
+
if (!channels || channels.length < 3) return raw
|
|
135
|
+
const hex = channels
|
|
136
|
+
.slice(0, 3)
|
|
137
|
+
.map((c) => Math.round(Number(c)).toString(16).padStart(2, '0'))
|
|
138
|
+
.join('')
|
|
139
|
+
return `#${hex}`
|
|
140
|
+
}
|
package/src/theme-lab/index.tsx
CHANGED
|
@@ -42,123 +42,32 @@ import { useState } from 'react'
|
|
|
42
42
|
import type { ReactNode } from 'react'
|
|
43
43
|
import { BP } from '../tokens/palette'
|
|
44
44
|
import { VX } from '../tokens'
|
|
45
|
+
import {
|
|
46
|
+
applyOverrides,
|
|
47
|
+
AREA_BOTTOM_VAR,
|
|
48
|
+
AREA_TOP_VAR,
|
|
49
|
+
COLOR_GROUPS,
|
|
50
|
+
loadOverrides,
|
|
51
|
+
readVar,
|
|
52
|
+
saveOverrides,
|
|
53
|
+
} from './boot'
|
|
54
|
+
import type { ColorGroup, ColorTunable, Overrides } from './boot'
|
|
45
55
|
|
|
46
56
|
export { DeriveControls } from './derive-controls'
|
|
47
57
|
export type { DeriveControlsProps } from './derive-controls'
|
|
48
58
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
export
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
* that never move with the derive config (ColorInput is hex-only, so `rgba()`/`color-mix()` chrome
|
|
60
|
-
* vars like `--vx-axis` / `--vx-grid` are intentionally omitted regardless).
|
|
61
|
-
*
|
|
62
|
-
* Identity/color tuning lives exclusively in {@link DeriveControls} (one accent seed + bounded
|
|
63
|
-
* knobs, `tokens/derive.ts`) — every `--vx-*` var GENERATED from that config (the accent family,
|
|
64
|
-
* the 12 categorical fills, the ink ramp, most of the surface stops, the `good`/`warn`/`bad`
|
|
65
|
-
* status/semantic hues) has been pruned from here on purpose: hand-tuning a hex the derive engine
|
|
66
|
-
* regenerates on every render is a dead knob. What remains is a low-level inspector for the
|
|
67
|
-
* genuinely NON-derived structural tokens only.
|
|
68
|
-
*
|
|
69
|
-
* Generic by design: argo's domain series (Health / Strength / Walking) are NOT shipped — a
|
|
70
|
-
* consumer passes its own series groups to {@link ThemeLabControls} via the `groups` prop.
|
|
71
|
-
*/
|
|
72
|
-
export const COLOR_GROUPS: ColorGroup[] = [
|
|
73
|
-
{
|
|
74
|
-
// `excellent` (top-of-scale grade) and `neutral` (mid-scale) keep their own hand-authored BP
|
|
75
|
-
// families (`p(BP.forest)` / `p(BP.gray, 1, 2)`) — unlike `good`/`warn`/`bad`, which are the
|
|
76
|
-
// SAME derived hues as `Semantic` and are not independently tunable here.
|
|
77
|
-
title: 'Status (chart-only)',
|
|
78
|
-
items: [
|
|
79
|
-
{ var: '--vx-status-excellent', label: 'Excellent' },
|
|
80
|
-
{ var: '--vx-status-neutral', label: 'Neutral' },
|
|
81
|
-
],
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
// Chart line/dot chrome — hand-authored off the zinc `BP.gray`/`BP.white`/`BP.darkGray`
|
|
85
|
-
// families, independent of the derive config.
|
|
86
|
-
title: 'Chart chrome',
|
|
87
|
-
items: [
|
|
88
|
-
{ var: '--vx-line', label: 'Line' },
|
|
89
|
-
{ var: '--vx-line2', label: 'Line 2' },
|
|
90
|
-
{ var: '--vx-dot-stroke', label: 'Dot stroke' },
|
|
91
|
-
],
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
// The floating-layer surface (menus, popovers, tooltips, modals, drawers) — the one SURFACE
|
|
95
|
-
// stop the derive engine has no law for, so it stays a hand-picked hex/color-mix().
|
|
96
|
-
title: 'Surface',
|
|
97
|
-
items: [{ var: '--vx-surface-overlay', label: 'Overlay' }],
|
|
98
|
-
},
|
|
99
|
-
]
|
|
100
|
-
|
|
101
|
-
const COLOR_VARS = COLOR_GROUPS.flatMap((g) => g.items.map((i) => i.var))
|
|
102
|
-
const MANAGED_VARS = [...COLOR_VARS, AREA_TOP_VAR, AREA_BOTTOM_VAR]
|
|
103
|
-
|
|
104
|
-
const KEY = 'basalt-theme-lab'
|
|
105
|
-
|
|
106
|
-
export function loadOverrides(): Overrides {
|
|
107
|
-
try {
|
|
108
|
-
const raw = localStorage.getItem(KEY)
|
|
109
|
-
return raw ? (JSON.parse(raw) as Overrides) : {}
|
|
110
|
-
} catch {
|
|
111
|
-
return {}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export function saveOverrides(o: Overrides): void {
|
|
116
|
-
try {
|
|
117
|
-
localStorage.setItem(KEY, JSON.stringify(o))
|
|
118
|
-
} catch {
|
|
119
|
-
// private mode / quota — tuning just won't persist
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/** Clears every managed var, then re-applies the given overrides. The single mutation point. */
|
|
124
|
-
export function applyOverrides(o: Overrides): void {
|
|
125
|
-
const el = document.documentElement
|
|
126
|
-
for (const v of MANAGED_VARS) el.style.removeProperty(v)
|
|
127
|
-
for (const [k, val] of Object.entries(o)) {
|
|
128
|
-
if (val) el.style.setProperty(k, val)
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Current value of a color var as a hex `ColorInput` can display (reflects any active override or
|
|
134
|
-
* the stylesheet default).
|
|
135
|
-
*
|
|
136
|
-
* Reading the custom property directly is not enough: an UNREGISTERED custom property computes to
|
|
137
|
-
* its literal source text, so a `color-mix()`-derived token (every surface — see `SURFACE` in
|
|
138
|
-
* tokens/palette.ts) comes back as the string `"color-mix(in srgb, #3f3f46 50%, #27272a)"`, which
|
|
139
|
-
* ColorInput cannot parse — it renders an empty swatch. Painting the var onto a probe element and
|
|
140
|
-
* reading a real COLOR property instead forces the browser to resolve it to an rgb triple.
|
|
141
|
-
*/
|
|
142
|
-
export function readVar(name: string): string {
|
|
143
|
-
const raw = getComputedStyle(document.documentElement).getPropertyValue(name).trim()
|
|
144
|
-
if (raw.startsWith('#')) return raw
|
|
145
|
-
if (!raw) return ''
|
|
146
|
-
|
|
147
|
-
const probe = document.createElement('span')
|
|
148
|
-
probe.style.display = 'none'
|
|
149
|
-
probe.style.color = `var(${name})`
|
|
150
|
-
document.body.appendChild(probe)
|
|
151
|
-
const computed = getComputedStyle(probe).color
|
|
152
|
-
probe.remove()
|
|
153
|
-
|
|
154
|
-
const channels = computed.match(/[\d.]+/g)
|
|
155
|
-
if (!channels || channels.length < 3) return raw
|
|
156
|
-
const hex = channels
|
|
157
|
-
.slice(0, 3)
|
|
158
|
-
.map((c) => Math.round(Number(c)).toString(16).padStart(2, '0'))
|
|
159
|
-
.join('')
|
|
160
|
-
return `#${hex}`
|
|
59
|
+
// Re-exported from `./boot` — SSR-safe, Mantine-free. `basalt-ui/theme-lab` keeps resolving both
|
|
60
|
+
// halves through this one barrel; see `boot.ts`'s module doc for why they were split out.
|
|
61
|
+
export {
|
|
62
|
+
applyOverrides,
|
|
63
|
+
AREA_BOTTOM_VAR,
|
|
64
|
+
AREA_TOP_VAR,
|
|
65
|
+
COLOR_GROUPS,
|
|
66
|
+
loadOverrides,
|
|
67
|
+
readVar,
|
|
68
|
+
saveOverrides,
|
|
161
69
|
}
|
|
70
|
+
export type { ColorGroup, ColorTunable, Overrides }
|
|
162
71
|
|
|
163
72
|
/** Quick-pick Blueprint swatches (mid stop of each family) for the color inputs. */
|
|
164
73
|
const SWATCHES: string[] = [
|
|
@@ -24,6 +24,7 @@ import { useReducedMotion } from '@mantine/hooks'
|
|
|
24
24
|
import { AnimatePresence, motion } from 'motion/react'
|
|
25
25
|
import { useRef, useState } from 'react'
|
|
26
26
|
import { MOTION_SPRING } from '../motion'
|
|
27
|
+
import type { BasaltProps } from '../common/props'
|
|
27
28
|
|
|
28
29
|
type Scheme = 'light' | 'dark' | 'auto'
|
|
29
30
|
|
|
@@ -108,7 +109,7 @@ function SchemeGlyph({ dark, reduceMotion }: { dark: boolean; reduceMotion: bool
|
|
|
108
109
|
)
|
|
109
110
|
}
|
|
110
111
|
|
|
111
|
-
export type ThemeToggleProps = {
|
|
112
|
+
export type ThemeToggleProps = BasaltProps & {
|
|
112
113
|
/** Delay (ms) before the direct-select popover opens on hover/focus. Default 150. */
|
|
113
114
|
openDelay?: number
|
|
114
115
|
/** Delay (ms) before it closes after the pointer/focus leaves. Default 200. */
|
|
@@ -120,7 +121,12 @@ function nextScheme(current: Scheme): Scheme {
|
|
|
120
121
|
return CYCLE[(CYCLE.indexOf(current) + 1) % CYCLE.length]!
|
|
121
122
|
}
|
|
122
123
|
|
|
123
|
-
export function ThemeToggle({
|
|
124
|
+
export function ThemeToggle({
|
|
125
|
+
openDelay = 150,
|
|
126
|
+
closeDelay = 200,
|
|
127
|
+
className,
|
|
128
|
+
style,
|
|
129
|
+
}: ThemeToggleProps = {}) {
|
|
124
130
|
const { colorScheme, setColorScheme } = useMantineColorScheme()
|
|
125
131
|
const resolved = useComputedColorScheme('dark')
|
|
126
132
|
const reduceMotion = useReducedMotion()
|
|
@@ -151,7 +157,8 @@ export function ThemeToggle({ openDelay = 150, closeDelay = 200 }: ThemeTogglePr
|
|
|
151
157
|
<ActionIcon
|
|
152
158
|
variant="subtle"
|
|
153
159
|
color="gray"
|
|
154
|
-
|
|
160
|
+
{...(className !== undefined && { className })}
|
|
161
|
+
style={{ borderRadius: 'var(--vx-radius-ctrl)', ...style }}
|
|
155
162
|
aria-label={`Theme: ${LABEL[colorScheme]}. Click to cycle, hover to pick directly.`}
|
|
156
163
|
onClick={() => setColorScheme(nextScheme(colorScheme))}
|
|
157
164
|
onMouseEnter={scheduleOpen}
|
package/src/tokens/index.ts
CHANGED
|
@@ -279,6 +279,49 @@ export const VX = {
|
|
|
279
279
|
left: SPACE_STEP.chartMarginLeft,
|
|
280
280
|
},
|
|
281
281
|
minPxPerTick: 55,
|
|
282
|
+
/**
|
|
283
|
+
* Floor on a chart's plot rect height, in px (`ChartFrame`). A legend wrapping to five rows at
|
|
284
|
+
* phone width used to eat a fixed `height={240}` toward zero and the plot simply stopped
|
|
285
|
+
* rendering — the plot never shrinks past this, the frame grows instead (or, under `fill`, the
|
|
286
|
+
* legend rolls up).
|
|
287
|
+
*/
|
|
288
|
+
minPlotHeight: 120,
|
|
289
|
+
/**
|
|
290
|
+
* The measured CONTAINER width, in px, below which a chart resolves to its phone tier
|
|
291
|
+
* (`resolveChartTier`, `docs/CHARTS-SPEC.md` §8): one step smaller legend and tick fonts,
|
|
292
|
+
* tightened margin floors, a smaller crosshair dot, a narrower tooltip, and a two-entry legend
|
|
293
|
+
* rollup.
|
|
294
|
+
*
|
|
295
|
+
* Deliberately NOT a media query and NOT a `theme.breakpoints` value. A chart in a two-column
|
|
296
|
+
* grid cell on a 1440px desktop is as narrow as one on a phone, and only the element's own
|
|
297
|
+
* measured box knows that — the viewport does not. It also keeps the chart layer Mantine-free:
|
|
298
|
+
* `theme.breakpoints` lives on the coupled side of the boundary.
|
|
299
|
+
*/
|
|
300
|
+
phoneChartWidth: 480,
|
|
301
|
+
} as const
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Layout breakpoints, in px, for the places CSS cannot read a custom property.
|
|
305
|
+
*
|
|
306
|
+
* A `@media` query's condition is resolved before custom properties exist, so
|
|
307
|
+
* `@media (max-width: var(--x))` is invalid CSS — a stylesheet with a responsive rule has no
|
|
308
|
+
* choice but to write the number. This constant is the other half of that literal: the CSS states
|
|
309
|
+
* the number and names the token beside it, and a test asserts the two agree
|
|
310
|
+
* (`content/article-layout.breakpoint.test.ts`, the same "literal must match the token" idiom as
|
|
311
|
+
* `styles.floor.test.ts`).
|
|
312
|
+
*
|
|
313
|
+
* Only breakpoints that are genuinely a CSS-authored `@media` belong here. A component that can
|
|
314
|
+
* measure its own box uses the measurement instead (`VX.phoneChartWidth`), and Mantine chrome uses
|
|
315
|
+
* `theme.breakpoints`.
|
|
316
|
+
*/
|
|
317
|
+
export const BREAKPOINTS = {
|
|
318
|
+
/**
|
|
319
|
+
* `content/article-layout.module.css` — below this the TOC rail is dropped and the article
|
|
320
|
+
* collapses to a single centred column. Well above the `sm` (48em/768px) shell breakpoint on
|
|
321
|
+
* purpose: the rail needs the prose measure PLUS its own width plus the column gap, which runs
|
|
322
|
+
* out long before the shell goes mobile.
|
|
323
|
+
*/
|
|
324
|
+
article: 1200,
|
|
282
325
|
} as const
|
|
283
326
|
|
|
284
327
|
/** Resolved chart plot-area margins — the return shape of {@link chartMargin}. */
|
|
@@ -454,7 +497,8 @@ function frameworkPrimitives(side: Side, data: PaletteData, legacyAliases: boole
|
|
|
454
497
|
* resolved `SpaceValues` as a JS NUMBER instead, in one of three ways:
|
|
455
498
|
* `{timelineBullet,progressBarSize}` are Mantine `defaultProps` (`theme/index.ts`'s Timeline/
|
|
456
499
|
* Progress); `{sidebarAccountMenuWidth,sidebarSettingsMenuWidth,mobileNavMenuWidth,
|
|
457
|
-
* appShellHeaderHeight,appShellNavbarWidth,appShellNavbarRailWidth,
|
|
500
|
+
* appShellHeaderHeight,appShellNavbarWidth,appShellNavbarRailWidth,appShellAsideWidth,
|
|
501
|
+
* appShellAsideRailWidth,
|
|
458
502
|
* mobileNavBarHeight}` are numeric Mantine component props (Menu `width`, AppShell `header`/
|
|
459
503
|
* `navbar`/`footer`); and `{chartLegendGap,chartMarginTop,chartMarginRight,chartMarginRightAxis,
|
|
460
504
|
* chartMarginBottom,chartMarginLeft,chartDotR}` are visx SVG props via
|
|
@@ -572,7 +616,6 @@ function spaceDecls(space: SpaceValues): string[] {
|
|
|
572
616
|
decl('space-settings-row-inset-y', `${space.step.settingsRowInsetY}px`),
|
|
573
617
|
decl('space-settings-row-gap', `${space.step.settingsRowGap}px`),
|
|
574
618
|
decl('space-mermaid-container-inset', `${space.step.mermaidContainerInset}px`),
|
|
575
|
-
decl('space-sidebar-brand-inset-top', `${space.step.sidebarBrandInsetTop}px`),
|
|
576
619
|
decl('space-sidebar-brand-inset-x', `${space.step.sidebarBrandInsetX}px`),
|
|
577
620
|
decl('space-sidebar-section-gap', `${space.step.sidebarSectionGap}px`),
|
|
578
621
|
decl('space-sidebar-account-inset-top', `${space.step.sidebarAccountInsetTop}px`),
|
|
@@ -616,10 +659,11 @@ function spaceDecls(space: SpaceValues): string[] {
|
|
|
616
659
|
// `chartLegendGap`/`chartMarginTop`/`chartMarginRight`/`chartMarginBottom`/`chartMarginLeft`/
|
|
617
660
|
// `chartDotR`/`progressBarSize`/`timelineBullet` are DELIBERATELY absent — see this function's
|
|
618
661
|
// doc for why (JS-number-only consumers, zero `var()` reads). `appShellHeaderHeight`/
|
|
619
|
-
// `appShellNavbarWidth`/`appShellNavbarRailWidth`
|
|
620
|
-
//
|
|
621
|
-
// `
|
|
622
|
-
//
|
|
662
|
+
// `appShellNavbarWidth`/`appShellNavbarRailWidth`/`appShellAsideWidth`/`appShellAsideRailWidth`
|
|
663
|
+
// join that list —
|
|
664
|
+
// `shell/index.tsx` reads all five as JS numbers via `useBasaltSpacing()` (Mantine's `AppShell`
|
|
665
|
+
// `header`/`navbar`/`aside` props take numbers, not `var()` strings), so a `--vx-space-app-shell-*`
|
|
666
|
+
// decl here would have had zero consumers, framework-wide, the same dead-weight shape this function's
|
|
623
667
|
// doc already calls out for the chart/Progress/Timeline group. `sidebarAccountMenuWidth`/
|
|
624
668
|
// `sidebarSettingsMenuWidth` join it too — `app-sidebar-account.tsx`/`app-sidebar.tsx` read both
|
|
625
669
|
// as JS numbers via `useBasaltSpacing()` (Mantine's `<Menu width={…}>` also takes a number).
|