basalt-ui 1.26.0 → 1.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +23 -23
- package/CHANGELOG.md +67 -0
- package/MIGRATING.md +896 -37
- package/README.md +33 -3
- package/agent/rules/basalt-batteries.md +25 -10
- package/agent/rules/basalt-controls.md +73 -43
- package/agent/rules/basalt-mantine.md +17 -6
- package/agent/rules/basalt-state.md +5 -0
- package/agent/rules/basalt-tokens.md +1 -1
- package/configs/oxlint-plugin.js +1286 -73
- package/configs/oxlint-plugin.test.ts +1338 -29
- package/configs/oxlint.json +12 -5
- package/dist/agent/coalesce.d.ts.map +1 -1
- package/dist/agent/coalesce.js +2 -1
- package/dist/agent/merge.d.ts.map +1 -1
- package/dist/agent/merge.js +2 -1
- package/dist/agent/part-list.d.ts.map +1 -1
- package/dist/agent/part-list.js +2 -0
- package/dist/agent/stick-to-bottom.d.ts +3 -6
- package/dist/agent/stick-to-bottom.d.ts.map +1 -1
- package/dist/agent/stick-to-bottom.js +6 -3
- package/dist/agent-chat/composer.d.ts +6 -2
- package/dist/agent-chat/composer.d.ts.map +1 -1
- package/dist/agent-chat/composer.js +49 -33
- package/dist/agent-chat/relative-time.d.ts +0 -9
- package/dist/agent-chat/relative-time.d.ts.map +1 -1
- package/dist/agent-chat/relative-time.js +2 -1
- package/dist/agent-chat/thread-detail-panel.d.ts +3 -2
- package/dist/agent-chat/thread-detail-panel.d.ts.map +1 -1
- package/dist/agent-chat/thread-detail-panel.js +8 -5
- package/dist/agent-chat/thread-feed-row.d.ts +2 -1
- package/dist/agent-chat/thread-feed-row.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed-row.js +92 -92
- package/dist/agent-chat/thread-feed.d.ts +3 -2
- package/dist/agent-chat/thread-feed.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed.js +8 -3
- package/dist/agent-chat/thread-message.d.ts +4 -3
- package/dist/agent-chat/thread-message.d.ts.map +1 -1
- package/dist/agent-chat/thread-message.js +70 -31
- package/dist/agent-chat/thread-outcome-card.d.ts +3 -2
- package/dist/agent-chat/thread-outcome-card.d.ts.map +1 -1
- package/dist/agent-chat/thread-outcome-card.js +9 -2
- package/dist/agent-chat/thread-workspace.d.ts +7 -2
- package/dist/agent-chat/thread-workspace.d.ts.map +1 -1
- package/dist/agent-chat/thread-workspace.js +62 -29
- package/dist/agent-chat/tool-chip.d.ts +3 -2
- package/dist/agent-chat/tool-chip.d.ts.map +1 -1
- package/dist/agent-chat/tool-chip.js +7 -2
- package/dist/charts/hooks/useBandPlot.d.ts.map +1 -1
- package/dist/charts/hooks/useBandPlot.js +15 -8
- package/dist/charts/index.d.ts +8 -7
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/index.js +45 -5
- package/dist/charts/kinds/BandStrip.d.ts +10 -7
- package/dist/charts/kinds/BandStrip.d.ts.map +1 -1
- package/dist/charts/kinds/BandStrip.js +12 -7
- package/dist/charts/kinds/Bars.d.ts +12 -6
- package/dist/charts/kinds/Bars.d.ts.map +1 -1
- package/dist/charts/kinds/Bars.js +37 -11
- package/dist/charts/kinds/Donut.d.ts +6 -5
- package/dist/charts/kinds/Donut.d.ts.map +1 -1
- package/dist/charts/kinds/Donut.js +19 -2
- package/dist/charts/kinds/DualPanel.d.ts +6 -5
- package/dist/charts/kinds/DualPanel.d.ts.map +1 -1
- package/dist/charts/kinds/DualPanel.js +36 -8
- package/dist/charts/kinds/Heatmap.d.ts +10 -6
- package/dist/charts/kinds/Heatmap.d.ts.map +1 -1
- package/dist/charts/kinds/Heatmap.js +58 -31
- package/dist/charts/kinds/MirroredBars.d.ts +6 -5
- package/dist/charts/kinds/MirroredBars.d.ts.map +1 -1
- package/dist/charts/kinds/MirroredBars.js +9 -2
- package/dist/charts/kinds/MultiLine.d.ts +11 -6
- package/dist/charts/kinds/MultiLine.d.ts.map +1 -1
- package/dist/charts/kinds/MultiLine.js +24 -15
- package/dist/charts/kinds/StackedArea.d.ts +18 -8
- package/dist/charts/kinds/StackedArea.d.ts.map +1 -1
- package/dist/charts/kinds/StackedArea.js +29 -4
- package/dist/charts/kinds/ZonedLine.d.ts +12 -8
- package/dist/charts/kinds/ZonedLine.d.ts.map +1 -1
- package/dist/charts/kinds/ZonedLine.js +33 -23
- package/dist/charts/layout/auto-margin.d.ts +65 -8
- package/dist/charts/layout/auto-margin.d.ts.map +1 -1
- package/dist/charts/layout/auto-margin.js +45 -10
- package/dist/charts/layout/log-ticks.d.ts +27 -0
- package/dist/charts/layout/log-ticks.d.ts.map +1 -0
- package/dist/charts/layout/log-ticks.js +42 -0
- package/dist/charts/primitives/Axes.d.ts +11 -2
- package/dist/charts/primitives/Axes.d.ts.map +1 -1
- package/dist/charts/primitives/Axes.js +15 -5
- package/dist/charts/primitives/CartesianChart.d.ts +45 -7
- package/dist/charts/primitives/CartesianChart.d.ts.map +1 -1
- package/dist/charts/primitives/CartesianChart.js +86 -28
- package/dist/charts/primitives/ChartCard.d.ts +27 -2
- package/dist/charts/primitives/ChartCard.d.ts.map +1 -1
- package/dist/charts/primitives/ChartCard.js +37 -17
- package/dist/charts/primitives/ChartFrame.d.ts +30 -4
- package/dist/charts/primitives/ChartFrame.d.ts.map +1 -1
- package/dist/charts/primitives/ChartFrame.js +45 -15
- package/dist/charts/primitives/ChartLegend.d.ts +13 -2
- package/dist/charts/primitives/ChartLegend.d.ts.map +1 -1
- package/dist/charts/primitives/ChartLegend.js +33 -13
- package/dist/charts/primitives/ChartPending.d.ts +77 -4
- package/dist/charts/primitives/ChartPending.d.ts.map +1 -1
- package/dist/charts/primitives/ChartPending.js +100 -6
- package/dist/charts/primitives/ChartTooltip.d.ts +7 -0
- package/dist/charts/primitives/ChartTooltip.d.ts.map +1 -1
- package/dist/charts/primitives/ChartTooltip.js +18 -5
- package/dist/charts/primitives/Crosshair.d.ts +3 -0
- package/dist/charts/primitives/Crosshair.d.ts.map +1 -1
- package/dist/charts/primitives/Crosshair.js +3 -1
- package/dist/charts/primitives/chart-frame-layout.d.ts +95 -0
- package/dist/charts/primitives/chart-frame-layout.d.ts.map +1 -0
- package/dist/charts/primitives/chart-frame-layout.js +89 -0
- package/dist/charts/primitives/chart-tier.d.ts +16 -0
- package/dist/charts/primitives/chart-tier.d.ts.map +1 -0
- package/dist/charts/primitives/chart-tier.js +20 -0
- package/dist/charts/series.d.ts +55 -1
- package/dist/charts/series.d.ts.map +1 -1
- package/dist/charts/series.js +27 -1
- package/dist/charts/sparklines/BarSparkline.d.ts +3 -3
- package/dist/charts/sparklines/BarSparkline.d.ts.map +1 -1
- package/dist/charts/sparklines/BarSparkline.js +9 -3
- package/dist/charts/sparklines/LineSparkline.d.ts +3 -3
- package/dist/charts/sparklines/LineSparkline.d.ts.map +1 -1
- package/dist/charts/sparklines/LineSparkline.js +15 -3
- package/dist/charts/sparklines/index.d.ts +2 -2
- package/dist/charts/sparklines/index.d.ts.map +1 -1
- package/dist/charts/utils/format.d.ts +92 -2
- package/dist/charts/utils/format.d.ts.map +1 -1
- package/dist/charts/utils/format.js +64 -1
- package/dist/charts/utils/ticks.d.ts +81 -2
- package/dist/charts/utils/ticks.d.ts.map +1 -1
- package/dist/charts/utils/ticks.js +54 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/commands/ShortcutsHelp.d.ts +3 -2
- package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
- package/dist/commands/ShortcutsHelp.js +8 -2
- package/dist/commands/define-commands.d.ts.map +1 -1
- package/dist/commands/define-commands.js +2 -2
- package/dist/commands/define-overlays.d.ts +102 -0
- package/dist/commands/define-overlays.d.ts.map +1 -1
- package/dist/commands/define-overlays.js +102 -2
- package/dist/commands/index.d.ts +10 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -1
- package/dist/commands/overlays-mount.d.ts +13 -6
- package/dist/commands/overlays-mount.d.ts.map +1 -1
- package/dist/commands/overlays-mount.js +23 -14
- package/dist/common/errors.d.ts +34 -0
- package/dist/common/errors.d.ts.map +1 -0
- package/dist/common/errors.js +36 -0
- package/dist/common/index.d.ts +15 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +29 -0
- package/dist/common/props.d.ts +63 -0
- package/dist/common/props.d.ts.map +1 -0
- package/dist/common/props.js +6 -0
- package/dist/common/query-state-like.d.ts +43 -0
- package/dist/common/query-state-like.d.ts.map +1 -0
- package/dist/common/query-state-like.js +20 -0
- package/dist/common/refs.d.ts +29 -0
- package/dist/common/refs.d.ts.map +1 -0
- package/dist/common/refs.js +29 -0
- package/dist/common/scroll-parent.d.ts +23 -0
- package/dist/common/scroll-parent.d.ts.map +1 -0
- package/dist/common/scroll-parent.js +21 -0
- package/dist/common/validate.d.ts +38 -0
- package/dist/common/validate.d.ts.map +1 -0
- package/dist/common/validate.js +36 -0
- package/dist/connectivity/connectivity-indicator.d.ts +3 -1
- package/dist/connectivity/connectivity-indicator.d.ts.map +1 -1
- package/dist/connectivity/connectivity-indicator.js +3 -1
- package/dist/connectivity/connectivity-provider.d.ts.map +1 -1
- package/dist/connectivity/connectivity-provider.js +4 -1
- package/dist/connectivity/index.d.ts +1 -0
- package/dist/connectivity/index.d.ts.map +1 -1
- package/dist/connectivity/types.d.ts +2 -2
- package/dist/connectivity/types.d.ts.map +1 -1
- package/dist/connectivity/use-connectivity.d.ts.map +1 -1
- package/dist/content/article-layout.module.css +11 -4
- package/dist/content/callout.d.ts +8 -4
- package/dist/content/callout.d.ts.map +1 -1
- package/dist/content/callout.js +15 -8
- package/dist/content/guide.d.ts +5 -4
- package/dist/content/guide.d.ts.map +1 -1
- package/dist/content/guide.js +13 -4
- package/dist/content/heading-anchor.d.ts +24 -2
- package/dist/content/heading-anchor.d.ts.map +1 -1
- package/dist/content/heading-anchor.js +23 -9
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +2 -0
- package/dist/content/prose.module.css +9 -7
- package/dist/content/reading-progress.d.ts +10 -4
- package/dist/content/reading-progress.d.ts.map +1 -1
- package/dist/content/reading-progress.js +26 -10
- package/dist/content/slug.d.ts +4 -0
- package/dist/content/slug.d.ts.map +1 -1
- package/dist/content/toc.d.ts +11 -0
- package/dist/content/toc.d.ts.map +1 -1
- package/dist/content/toc.js +23 -10
- package/dist/controls/actions.d.ts +49 -6
- package/dist/controls/actions.d.ts.map +1 -1
- package/dist/controls/actions.js +39 -8
- package/dist/controls/compare-filter.d.ts +3 -2
- package/dist/controls/compare-filter.d.ts.map +1 -1
- package/dist/controls/compare-filter.js +17 -2
- package/dist/controls/control-group.d.ts +3 -3
- package/dist/controls/control-group.d.ts.map +1 -1
- package/dist/controls/control-group.js +9 -2
- package/dist/controls/controls.module.css +169 -186
- package/dist/controls/controls.module.css.d.ts +9 -11
- package/dist/controls/enum-filter.d.ts +13 -3
- package/dist/controls/enum-filter.d.ts.map +1 -1
- package/dist/controls/enum-filter.js +32 -15
- package/dist/controls/filter-context.d.ts +15 -6
- package/dist/controls/filter-context.d.ts.map +1 -1
- package/dist/controls/filter-pill.d.ts +3 -3
- package/dist/controls/filter-pill.d.ts.map +1 -1
- package/dist/controls/filter-pill.js +4 -1
- package/dist/controls/filter-set.d.ts +3 -2
- package/dist/controls/filter-set.d.ts.map +1 -1
- package/dist/controls/filter-set.js +66 -41
- package/dist/controls/filter-sheet.d.ts +20 -80
- package/dist/controls/filter-sheet.d.ts.map +1 -1
- package/dist/controls/filter-sheet.js +9 -95
- package/dist/controls/index.d.ts +3 -0
- package/dist/controls/index.d.ts.map +1 -1
- package/dist/controls/index.js +6 -0
- package/dist/controls/multi-select-filter.d.ts +18 -2
- package/dist/controls/multi-select-filter.d.ts.map +1 -1
- package/dist/controls/multi-select-filter.js +124 -22
- package/dist/controls/number-filter.d.ts +28 -0
- package/dist/controls/number-filter.d.ts.map +1 -0
- package/dist/controls/number-filter.js +172 -0
- package/dist/controls/panel-row.d.ts +132 -0
- package/dist/controls/panel-row.d.ts.map +1 -0
- package/dist/controls/panel-row.js +173 -0
- package/dist/controls/panel-row.module.css +86 -0
- package/dist/controls/panel-row.module.css.d.ts +13 -0
- package/dist/controls/range-filter.d.ts +20 -5
- package/dist/controls/range-filter.d.ts.map +1 -1
- package/dist/controls/range-filter.js +75 -38
- package/dist/controls/search-filter.d.ts +3 -2
- package/dist/controls/search-filter.d.ts.map +1 -1
- package/dist/controls/search-filter.js +26 -11
- package/dist/controls/select-filter.d.ts +2 -1
- package/dist/controls/select-filter.d.ts.map +1 -1
- package/dist/controls/select-filter.js +4 -0
- package/dist/controls/slider-control.d.ts +36 -0
- package/dist/controls/slider-control.d.ts.map +1 -0
- package/dist/controls/slider-control.js +64 -0
- package/dist/controls/sync-button.d.ts +3 -2
- package/dist/controls/sync-button.d.ts.map +1 -1
- package/dist/controls/sync-button.js +16 -3
- package/dist/controls/toggle-filter.d.ts +3 -2
- package/dist/controls/toggle-filter.d.ts.map +1 -1
- package/dist/controls/toggle-filter.js +29 -12
- package/dist/controls/view-tabs.d.ts +3 -2
- package/dist/controls/view-tabs.d.ts.map +1 -1
- package/dist/controls/view-tabs.js +43 -11
- package/dist/controls-dates/date-range-picker.d.ts +1 -1
- package/dist/controls-dates/date-range-picker.d.ts.map +1 -1
- package/dist/controls-dates/date-range-picker.js +6 -1
- package/dist/dashboard/delta-badge.d.ts +5 -1
- package/dist/dashboard/delta-badge.d.ts.map +1 -1
- package/dist/dashboard/empty-state.d.ts +10 -3
- package/dist/dashboard/empty-state.d.ts.map +1 -1
- package/dist/dashboard/empty-state.js +37 -6
- package/dist/dashboard/index.d.ts +6 -4
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +10 -2
- package/dist/dashboard/query-state.d.ts +48 -27
- package/dist/dashboard/query-state.d.ts.map +1 -1
- package/dist/dashboard/query-state.js +111 -57
- package/dist/dashboard/settings-section.d.ts +19 -9
- package/dist/dashboard/settings-section.d.ts.map +1 -1
- package/dist/dashboard/settings-section.js +74 -25
- package/dist/dashboard/stat-card.d.ts +76 -19
- package/dist/dashboard/stat-card.d.ts.map +1 -1
- package/dist/dashboard/stat-card.js +78 -38
- package/dist/dashboard/stat-card.module.css +112 -26
- package/dist/dashboard/stat-card.module.css.d.ts +5 -0
- package/dist/dashboard/stat-group.d.ts +41 -0
- package/dist/dashboard/stat-group.d.ts.map +1 -0
- package/dist/dashboard/stat-group.js +30 -0
- package/dist/dashboard/stat-group.module.css +66 -0
- package/dist/dashboard/stat-group.module.css.d.ts +8 -0
- package/dist/dashboard/widget-grid.d.ts +27 -0
- package/dist/dashboard/widget-grid.d.ts.map +1 -0
- package/dist/dashboard/widget-grid.js +41 -0
- package/dist/dashboard/widget-grid.module.css +53 -0
- package/dist/dashboard/widget-grid.module.css.d.ts +9 -0
- package/dist/data/data-table.d.ts +151 -12
- package/dist/data/data-table.d.ts.map +1 -1
- package/dist/data/data-table.js +392 -138
- package/dist/data/data-table.module.css +64 -0
- package/dist/data/data-table.module.css.d.ts +11 -0
- package/dist/data/index.d.ts +2 -2
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +24 -2
- package/dist/data/query-branch.d.ts +28 -0
- package/dist/data/query-branch.d.ts.map +1 -0
- package/dist/data/query-branch.js +10 -0
- package/dist/data/table.d.ts +2 -2
- package/dist/data/table.d.ts.map +1 -1
- package/dist/data/virtual-list.d.ts +65 -6
- package/dist/data/virtual-list.d.ts.map +1 -1
- package/dist/data/virtual-list.js +89 -38
- package/dist/data/virtual.d.ts +1 -1
- package/dist/data/virtual.d.ts.map +1 -1
- package/dist/forms/FormErrorSummary.d.ts +4 -3
- package/dist/forms/FormErrorSummary.d.ts.map +1 -1
- package/dist/forms/FormErrorSummary.js +6 -4
- package/dist/forms/create-form.d.ts +2 -2
- package/dist/forms/field.d.ts +46 -6
- package/dist/forms/field.d.ts.map +1 -1
- package/dist/forms/field.js +10 -5
- package/dist/forms/form-layout.d.ts +142 -0
- package/dist/forms/form-layout.d.ts.map +1 -0
- package/dist/forms/form-layout.js +110 -0
- package/dist/forms/form-layout.module.css +145 -0
- package/dist/forms/form-layout.module.css.d.ts +20 -0
- package/dist/forms/form-state.d.ts +42 -0
- package/dist/forms/form-state.d.ts.map +1 -0
- package/dist/forms/form-state.js +26 -0
- package/dist/forms/index.d.ts +22 -6
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +19 -3
- package/dist/forms/use-field-array.d.ts +60 -0
- package/dist/forms/use-field-array.d.ts.map +1 -0
- package/dist/forms/use-field-array.js +20 -0
- package/dist/forms/use-form-draft.d.ts +25 -10
- package/dist/forms/use-form-draft.d.ts.map +1 -1
- package/dist/forms/use-form-draft.js +55 -18
- package/dist/forms/use-form-submit.d.ts +88 -0
- package/dist/forms/use-form-submit.d.ts.map +1 -0
- package/dist/forms/use-form-submit.js +63 -0
- package/dist/guard/index.d.ts +1 -1
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +27 -11
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -4
- package/dist/nav/types.d.ts +15 -6
- package/dist/nav/types.d.ts.map +1 -1
- package/dist/notifications/bell.d.ts +3 -2
- package/dist/notifications/bell.d.ts.map +1 -1
- package/dist/notifications/bell.js +73 -56
- package/dist/notifications/center.d.ts +15 -4
- package/dist/notifications/center.d.ts.map +1 -1
- package/dist/notifications/center.js +5 -2
- package/dist/notifications/define-notifications.d.ts +56 -14
- package/dist/notifications/define-notifications.d.ts.map +1 -1
- package/dist/notifications/define-notifications.js +2 -1
- package/dist/notifications/index.d.ts +6 -2
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +5 -1
- package/dist/notifications/mount-guard.d.ts +8 -0
- package/dist/notifications/mount-guard.d.ts.map +1 -0
- package/dist/notifications/mount-guard.js +19 -0
- package/dist/notifications/notify.d.ts +58 -1
- package/dist/notifications/notify.d.ts.map +1 -1
- package/dist/notifications/notify.js +46 -2
- package/dist/notifications/overlay.d.ts.map +1 -1
- package/dist/notifications/overlay.js +2 -0
- package/dist/notifications/store.d.ts +7 -0
- package/dist/notifications/store.d.ts.map +1 -1
- package/dist/provider/index.d.ts +37 -5
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +66 -28
- package/dist/provider/lab-theme.d.ts.map +1 -1
- package/dist/provider/lab-theme.js +2 -1
- package/dist/query/devtools.d.ts.map +1 -1
- package/dist/query/devtools.js +1 -0
- package/dist/router-tanstack/field.d.ts +1 -1
- package/dist/router-tanstack/field.d.ts.map +1 -1
- package/dist/router-tanstack/index.d.ts +1 -1
- package/dist/router-tanstack/index.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.d.ts +4 -1
- package/dist/router-tanstack/search-store.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.js +92 -8
- package/dist/router-tanstack/use-nav.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.js +1 -1
- package/dist/section/index.d.ts +1 -1
- package/dist/section/index.d.ts.map +1 -1
- package/dist/section/section.d.ts +36 -2
- package/dist/section/section.d.ts.map +1 -1
- package/dist/section/section.js +49 -57
- package/dist/section/section.module.css +11 -0
- package/dist/shell/account-types.d.ts +5 -2
- package/dist/shell/account-types.d.ts.map +1 -1
- package/dist/shell/app-brand.d.ts +13 -0
- package/dist/shell/app-brand.d.ts.map +1 -0
- package/dist/shell/app-brand.js +94 -0
- package/dist/shell/app-brand.module.css +109 -0
- package/dist/shell/app-brand.module.css.d.ts +14 -0
- package/dist/shell/app-breadcrumbs.d.ts +4 -2
- package/dist/shell/app-breadcrumbs.d.ts.map +1 -1
- package/dist/shell/app-breadcrumbs.js +33 -22
- package/dist/shell/app-header.module.css +10 -5
- package/dist/shell/app-main.module.css +107 -0
- package/dist/shell/app-main.module.css.d.ts +11 -0
- package/dist/shell/app-mobile-nav.d.ts +3 -2
- package/dist/shell/app-mobile-nav.d.ts.map +1 -1
- package/dist/shell/app-mobile-nav.js +29 -15
- package/dist/shell/app-mobile-nav.module.css +48 -27
- package/dist/shell/app-mobile-nav.module.css.d.ts +0 -1
- package/dist/shell/app-sidebar-account.d.ts +2 -1
- package/dist/shell/app-sidebar-account.d.ts.map +1 -1
- package/dist/shell/app-sidebar-account.js +57 -22
- package/dist/shell/app-sidebar.d.ts +9 -3
- package/dist/shell/app-sidebar.d.ts.map +1 -1
- package/dist/shell/app-sidebar.js +55 -109
- package/dist/shell/app-sidebar.module.css +53 -96
- package/dist/shell/app-sidebar.module.css.d.ts +0 -5
- package/dist/shell/index.d.ts +14 -6
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +47 -12
- package/dist/shell/isomorphic-layout-effect.d.ts +14 -0
- package/dist/shell/isomorphic-layout-effect.d.ts.map +1 -0
- package/dist/shell/isomorphic-layout-effect.js +5 -0
- package/dist/shell/mobile-nav-model.d.ts.map +1 -1
- package/dist/shell/mobile-nav-model.js +27 -6
- package/dist/shell/nav-count-badge.d.ts +5 -3
- package/dist/shell/nav-count-badge.d.ts.map +1 -1
- package/dist/shell/nav-count-badge.js +3 -1
- package/dist/shell/page-aside.d.ts +43 -0
- package/dist/shell/page-aside.d.ts.map +1 -0
- package/dist/shell/page-aside.js +202 -0
- package/dist/shell/page-aside.module.css +174 -0
- package/dist/shell/page-aside.module.css.d.ts +14 -0
- package/dist/shell/page-bar.d.ts +55 -15
- package/dist/shell/page-bar.d.ts.map +1 -1
- package/dist/shell/page-bar.js +130 -41
- package/dist/shell/page-bar.module.css +107 -13
- package/dist/shell/page-bar.module.css.d.ts +4 -1
- package/dist/shell/sidebar-search.d.ts +4 -2
- package/dist/shell/sidebar-search.d.ts.map +1 -1
- package/dist/shell/sidebar-search.js +9 -4
- package/dist/shell/sidebar-search.module.css +1 -1
- package/dist/state/fields.d.ts +227 -34
- package/dist/state/fields.d.ts.map +1 -1
- package/dist/state/fields.js +77 -30
- package/dist/state/persisted-or-local.d.ts +9 -0
- package/dist/state/persisted-or-local.d.ts.map +1 -0
- package/dist/state/persisted-or-local.js +24 -0
- package/dist/state/persisted.d.ts +12 -0
- package/dist/state/persisted.d.ts.map +1 -1
- package/dist/state/persisted.js +36 -18
- package/dist/state.d.ts +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +2 -6
- package/dist/surfaces.d.ts +12 -11
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +43 -12
- package/dist/theme/ctl-theme.d.ts.map +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +102 -17
- package/dist/theme/nav-link.module.css +37 -26
- package/dist/theme/segmented-control.module.css +22 -0
- package/dist/theme/segmented-control.module.css.d.ts +1 -0
- package/dist/theme-lab/boot.d.ts +66 -0
- package/dist/theme-lab/boot.d.ts.map +1 -0
- package/dist/theme-lab/boot.js +82 -0
- package/dist/theme-lab/index.d.ts +4 -43
- package/dist/theme-lab/index.d.ts.map +1 -1
- package/dist/theme-lab/index.js +9 -69
- package/dist/theme-toggle/index.d.ts +3 -2
- package/dist/theme-toggle/index.d.ts.map +1 -1
- package/dist/theme-toggle/index.js +8 -2
- package/dist/tokens/index.d.ts +42 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +35 -6
- package/dist/tokens/palette.d.ts +45 -25
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +31 -14
- package/dist/tokens.css +4 -5
- package/dist/utils/is-dev.d.ts +3 -0
- package/dist/utils/is-dev.d.ts.map +1 -0
- package/dist/utils/is-dev.js +6 -0
- package/dist/widget-header/delta-badge.d.ts +7 -1
- package/dist/widget-header/delta-badge.d.ts.map +1 -1
- package/dist/widget-header/delta-badge.js +8 -1
- package/dist/widget-header/index.d.ts +2 -2
- package/dist/widget-header/index.d.ts.map +1 -1
- package/dist/widget-header/index.js +3 -1
- package/dist/widget-header/widget-header.d.ts +99 -4
- package/dist/widget-header/widget-header.d.ts.map +1 -1
- package/dist/widget-header/widget-header.js +45 -18
- package/dist/widget-header/widget-header.module.css +87 -7
- package/dist/widget-header/widget-header.module.css.d.ts +1 -0
- package/llms.txt +6 -6
- package/package.json +49 -25
- package/src/agent/coalesce.ts +2 -1
- package/src/agent/merge.ts +2 -1
- package/src/agent/part-list.tsx +2 -0
- package/src/agent/stick-to-bottom.tsx +9 -11
- package/src/agent-chat/composer.tsx +124 -103
- package/src/agent-chat/relative-time.ts +2 -1
- package/src/agent-chat/thread-detail-panel.tsx +9 -5
- package/src/agent-chat/thread-feed-row.tsx +17 -9
- package/src/agent-chat/thread-feed.tsx +9 -3
- package/src/agent-chat/thread-message.tsx +48 -13
- package/src/agent-chat/thread-outcome-card.tsx +9 -1
- package/src/agent-chat/thread-workspace.tsx +72 -33
- package/src/agent-chat/tool-chip.tsx +8 -2
- package/src/charts/hooks/useBandPlot.ts +26 -8
- package/src/charts/index.ts +39 -4
- package/src/charts/kinds/BandStrip.tsx +36 -14
- package/src/charts/kinds/Bars.tsx +67 -16
- package/src/charts/kinds/Donut.tsx +30 -3
- package/src/charts/kinds/DualPanel.tsx +56 -10
- package/src/charts/kinds/Heatmap.tsx +90 -33
- package/src/charts/kinds/MirroredBars.tsx +21 -3
- package/src/charts/kinds/MultiLine.tsx +61 -18
- package/src/charts/kinds/StackedArea.tsx +77 -6
- package/src/charts/kinds/ZonedLine.tsx +71 -31
- package/src/charts/layout/auto-margin.ts +134 -21
- package/src/charts/layout/log-ticks.ts +90 -0
- package/src/charts/primitives/Axes.tsx +33 -5
- package/src/charts/primitives/CartesianChart.tsx +194 -41
- package/src/charts/primitives/ChartCard.tsx +66 -25
- package/src/charts/primitives/ChartFrame.tsx +107 -26
- package/src/charts/primitives/ChartLegend.tsx +43 -13
- package/src/charts/primitives/ChartPending.tsx +185 -7
- package/src/charts/primitives/ChartTooltip.tsx +37 -5
- package/src/charts/primitives/Crosshair.tsx +6 -3
- package/src/charts/primitives/chart-frame-layout.ts +212 -0
- package/src/charts/primitives/chart-tier.tsx +37 -0
- package/src/charts/series.ts +77 -1
- package/src/charts/sparklines/BarSparkline.tsx +11 -3
- package/src/charts/sparklines/LineSparkline.tsx +18 -4
- package/src/charts/sparklines/index.ts +2 -2
- package/src/charts/utils/format.ts +163 -2
- package/src/charts/utils/ticks.ts +149 -4
- package/src/cli/index.ts +8 -3
- package/src/commands/ShortcutsHelp.tsx +10 -3
- package/src/commands/define-commands.ts +2 -2
- package/src/commands/define-overlays.ts +216 -1
- package/src/commands/index.ts +12 -0
- package/src/commands/overlays-mount.tsx +60 -26
- package/src/common/errors.ts +73 -0
- package/src/common/index.ts +21 -0
- package/src/common/props.ts +71 -0
- package/src/common/query-state-like.ts +64 -0
- package/src/common/refs.ts +58 -0
- package/src/common/scroll-parent.ts +42 -0
- package/src/common/validate.ts +94 -0
- package/src/connectivity/connectivity-indicator.tsx +6 -1
- package/src/connectivity/connectivity-provider.tsx +4 -1
- package/src/connectivity/index.ts +1 -0
- package/src/connectivity/types.ts +5 -2
- package/src/connectivity/use-connectivity.ts +3 -2
- package/src/content/article-layout.module.css +11 -4
- package/src/content/callout.tsx +13 -7
- package/src/content/guide.tsx +14 -4
- package/src/content/heading-anchor.tsx +14 -3
- package/src/content/index.ts +2 -0
- package/src/content/markdown.tsx +2 -0
- package/src/content/prose.module.css +9 -7
- package/src/content/reading-progress.tsx +40 -15
- package/src/content/slug.ts +4 -0
- package/src/content/toc.tsx +47 -10
- package/src/controls/actions.tsx +89 -9
- package/src/controls/compare-filter.tsx +20 -3
- package/src/controls/control-group.tsx +11 -4
- package/src/controls/controls.module.css +169 -186
- package/src/controls/controls.module.css.d.ts +9 -11
- package/src/controls/enum-filter.tsx +46 -19
- package/src/controls/filter-context.tsx +21 -8
- package/src/controls/filter-pill.tsx +6 -3
- package/src/controls/filter-set.tsx +32 -13
- package/src/controls/filter-sheet.tsx +44 -194
- package/src/controls/index.ts +8 -0
- package/src/controls/multi-select-filter.tsx +179 -29
- package/src/controls/number-filter.tsx +329 -0
- package/src/controls/panel-row.module.css +86 -0
- package/src/controls/panel-row.module.css.d.ts +13 -0
- package/src/controls/panel-row.tsx +392 -0
- package/src/controls/range-filter.tsx +133 -43
- package/src/controls/search-filter.tsx +31 -13
- package/src/controls/select-filter.tsx +11 -1
- package/src/controls/slider-control.tsx +159 -0
- package/src/controls/sync-button.tsx +13 -3
- package/src/controls/toggle-filter.tsx +37 -17
- package/src/controls/view-tabs.tsx +63 -11
- package/src/controls-dates/date-range-picker.tsx +8 -1
- package/src/dashboard/delta-badge.tsx +5 -1
- package/src/dashboard/empty-state.tsx +72 -25
- package/src/dashboard/index.ts +19 -2
- package/src/dashboard/query-state.tsx +154 -84
- package/src/dashboard/settings-section.tsx +87 -31
- package/src/dashboard/stat-card.module.css +112 -26
- package/src/dashboard/stat-card.module.css.d.ts +5 -0
- package/src/dashboard/stat-card.tsx +207 -68
- package/src/dashboard/stat-group.module.css +66 -0
- package/src/dashboard/stat-group.module.css.d.ts +8 -0
- package/src/dashboard/stat-group.tsx +74 -0
- package/src/dashboard/widget-grid.module.css +53 -0
- package/src/dashboard/widget-grid.module.css.d.ts +9 -0
- package/src/dashboard/widget-grid.tsx +127 -0
- package/src/data/data-table.module.css +64 -0
- package/src/data/data-table.module.css.d.ts +11 -0
- package/src/data/data-table.tsx +927 -346
- package/src/data/index.ts +30 -2
- package/src/data/query-branch.ts +53 -0
- package/src/data/table.ts +5 -0
- package/src/data/virtual-list.tsx +189 -55
- package/src/data/virtual.ts +5 -1
- package/src/forms/FormErrorSummary.tsx +13 -6
- package/src/forms/create-form.ts +2 -2
- package/src/forms/field.ts +60 -11
- package/src/forms/form-layout.module.css +145 -0
- package/src/forms/form-layout.module.css.d.ts +20 -0
- package/src/forms/form-layout.tsx +305 -0
- package/src/forms/form-state.tsx +94 -0
- package/src/forms/index.ts +38 -7
- package/src/forms/use-field-array.ts +94 -0
- package/src/forms/use-form-draft.ts +145 -53
- package/src/forms/use-form-submit.ts +199 -0
- package/src/guard/index.ts +91 -23
- package/src/index.ts +79 -10
- package/src/nav/types.ts +15 -6
- package/src/notifications/bell.tsx +18 -4
- package/src/notifications/center.tsx +18 -5
- package/src/notifications/define-notifications.ts +64 -18
- package/src/notifications/index.ts +12 -1
- package/src/notifications/mount-guard.ts +41 -0
- package/src/notifications/notify.tsx +122 -3
- package/src/notifications/overlay.tsx +2 -0
- package/src/notifications/store.ts +7 -0
- package/src/provider/index.tsx +101 -13
- package/src/provider/lab-theme.ts +2 -1
- package/src/query/devtools.tsx +1 -0
- package/src/router-tanstack/field.ts +5 -0
- package/src/router-tanstack/index.ts +4 -0
- package/src/router-tanstack/search-store.ts +171 -12
- package/src/router-tanstack/use-nav.ts +18 -13
- package/src/section/index.ts +1 -1
- package/src/section/section.module.css +11 -0
- package/src/section/section.tsx +163 -96
- package/src/shell/account-types.ts +5 -2
- package/src/shell/app-brand.module.css +109 -0
- package/src/shell/app-brand.module.css.d.ts +14 -0
- package/src/shell/app-brand.tsx +140 -0
- package/src/shell/app-breadcrumbs.tsx +19 -9
- package/src/shell/app-header.module.css +10 -5
- package/src/shell/app-main.module.css +107 -0
- package/src/shell/app-main.module.css.d.ts +11 -0
- package/src/shell/app-mobile-nav.module.css +48 -27
- package/src/shell/app-mobile-nav.module.css.d.ts +0 -1
- package/src/shell/app-mobile-nav.tsx +43 -11
- package/src/shell/app-sidebar-account.tsx +29 -6
- package/src/shell/app-sidebar.module.css +53 -96
- package/src/shell/app-sidebar.module.css.d.ts +0 -5
- package/src/shell/app-sidebar.tsx +40 -113
- package/src/shell/index.tsx +156 -65
- package/src/shell/isomorphic-layout-effect.ts +14 -0
- package/src/shell/mobile-nav-model.ts +66 -10
- package/src/shell/nav-count-badge.tsx +6 -1
- package/src/shell/page-aside.module.css +174 -0
- package/src/shell/page-aside.module.css.d.ts +14 -0
- package/src/shell/page-aside.tsx +377 -0
- package/src/shell/page-bar.module.css +107 -13
- package/src/shell/page-bar.module.css.d.ts +4 -1
- package/src/shell/page-bar.tsx +294 -94
- package/src/shell/sidebar-search.module.css +1 -1
- package/src/shell/sidebar-search.tsx +13 -4
- package/src/state/fields.ts +360 -69
- package/src/state/persisted-or-local.ts +50 -0
- package/src/state/persisted.ts +76 -26
- package/src/state.ts +4 -7
- package/src/surfaces.ts +43 -12
- package/src/theme/ctl-theme.tsx +10 -0
- package/src/theme/index.ts +129 -16
- package/src/theme/nav-link.module.css +37 -26
- package/src/theme/segmented-control.module.css +22 -0
- package/src/theme/segmented-control.module.css.d.ts +1 -0
- package/src/theme-lab/boot.ts +140 -0
- package/src/theme-lab/index.tsx +21 -112
- package/src/theme-toggle/index.tsx +10 -3
- package/src/tokens/index.ts +50 -6
- package/src/tokens/palette.ts +58 -30
- package/src/utils/is-dev.ts +4 -0
- package/src/widget-header/delta-badge.tsx +25 -5
- package/src/widget-header/index.ts +10 -2
- package/src/widget-header/widget-header.module.css +87 -7
- package/src/widget-header/widget-header.module.css.d.ts +1 -0
- package/src/widget-header/widget-header.tsx +166 -42
- package/dist/agent/adapter.test.d.ts +0 -2
- package/dist/agent/adapter.test.d.ts.map +0 -1
- package/dist/agent/ai-sdk-transport.test.d.ts +0 -2
- package/dist/agent/ai-sdk-transport.test.d.ts.map +0 -1
- package/dist/agent/coalesce.test.d.ts +0 -2
- package/dist/agent/coalesce.test.d.ts.map +0 -1
- package/dist/agent/foreign.test.d.ts +0 -2
- package/dist/agent/foreign.test.d.ts.map +0 -1
- package/dist/agent/id.test.d.ts +0 -2
- package/dist/agent/id.test.d.ts.map +0 -1
- package/dist/agent/merge.test.d.ts +0 -2
- package/dist/agent/merge.test.d.ts.map +0 -1
- package/dist/agent/part-list.test.d.ts +0 -2
- package/dist/agent/part-list.test.d.ts.map +0 -1
- package/dist/agent/parts.test.d.ts +0 -2
- package/dist/agent/parts.test.d.ts.map +0 -1
- package/dist/agent/thread.test.d.ts +0 -2
- package/dist/agent/thread.test.d.ts.map +0 -1
- package/dist/agent/transport.test.d.ts +0 -2
- package/dist/agent/transport.test.d.ts.map +0 -1
- package/dist/agent/use-agent-stream.test.d.ts +0 -2
- package/dist/agent/use-agent-stream.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.foreign.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.foreign.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.resume.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.resume.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.wedge.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.wedge.test.d.ts.map +0 -1
- package/dist/agent-chat/composer.test.d.ts +0 -2
- package/dist/agent-chat/composer.test.d.ts.map +0 -1
- package/dist/agent-chat/relative-time.test.d.ts +0 -2
- package/dist/agent-chat/relative-time.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed-row.test.d.ts +0 -2
- package/dist/agent-chat/thread-feed-row.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed.test.d.ts +0 -2
- package/dist/agent-chat/thread-feed.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-message.test.d.ts +0 -2
- package/dist/agent-chat/thread-message.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-workspace.test.d.ts +0 -2
- package/dist/agent-chat/thread-workspace.test.d.ts.map +0 -1
- package/dist/agent-chat/tool-chip.test.d.ts +0 -2
- package/dist/agent-chat/tool-chip.test.d.ts.map +0 -1
- package/dist/agent-chat/virtualize.type-guard.test.d.ts +0 -2
- package/dist/agent-chat/virtualize.type-guard.test.d.ts.map +0 -1
- package/dist/charts/cursor/resolve.test.d.ts +0 -2
- package/dist/charts/cursor/resolve.test.d.ts.map +0 -1
- package/dist/charts/cursor/store.test.d.ts +0 -2
- package/dist/charts/cursor/store.test.d.ts.map +0 -1
- package/dist/charts/kinds/BandStrip.test.d.ts +0 -2
- package/dist/charts/kinds/BandStrip.test.d.ts.map +0 -1
- package/dist/charts/kinds/Bars.test.d.ts +0 -2
- package/dist/charts/kinds/Bars.test.d.ts.map +0 -1
- package/dist/charts/kinds/DualPanel.test.d.ts +0 -2
- package/dist/charts/kinds/DualPanel.test.d.ts.map +0 -1
- package/dist/charts/kinds/MirroredBars.test.d.ts +0 -2
- package/dist/charts/kinds/MirroredBars.test.d.ts.map +0 -1
- package/dist/charts/kinds/MultiLine.test.d.ts +0 -2
- package/dist/charts/kinds/MultiLine.test.d.ts.map +0 -1
- package/dist/charts/kinds/StackedArea.test.d.ts +0 -2
- package/dist/charts/kinds/StackedArea.test.d.ts.map +0 -1
- package/dist/charts/kinds/ZonedLine.test.d.ts +0 -2
- package/dist/charts/kinds/ZonedLine.test.d.ts.map +0 -1
- package/dist/charts/layout/auto-margin.test.d.ts +0 -2
- package/dist/charts/layout/auto-margin.test.d.ts.map +0 -1
- package/dist/charts/primitives/CartesianChart.test.d.ts +0 -2
- package/dist/charts/primitives/CartesianChart.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartCard.test.d.ts +0 -2
- package/dist/charts/primitives/ChartCard.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartFrame.test.d.ts +0 -2
- package/dist/charts/primitives/ChartFrame.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartLegend.test.d.ts +0 -2
- package/dist/charts/primitives/ChartLegend.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartTooltip.test.d.ts +0 -2
- package/dist/charts/primitives/ChartTooltip.test.d.ts.map +0 -1
- package/dist/charts/primitives/XZoneRects.test.d.ts +0 -2
- package/dist/charts/primitives/XZoneRects.test.d.ts.map +0 -1
- package/dist/charts/series.test.d.ts +0 -2
- package/dist/charts/series.test.d.ts.map +0 -1
- package/dist/charts/utils/domain.test.d.ts +0 -2
- package/dist/charts/utils/domain.test.d.ts.map +0 -1
- package/dist/charts/utils/measure-text.test.d.ts +0 -2
- package/dist/charts/utils/measure-text.test.d.ts.map +0 -1
- package/dist/cli/check-coverage.test.d.ts +0 -2
- package/dist/cli/check-coverage.test.d.ts.map +0 -1
- package/dist/cli/check-theme.test.d.ts +0 -2
- package/dist/cli/check-theme.test.d.ts.map +0 -1
- package/dist/cli/help.test.d.ts +0 -2
- package/dist/cli/help.test.d.ts.map +0 -1
- package/dist/cli/init-sync.test.d.ts +0 -2
- package/dist/cli/init-sync.test.d.ts.map +0 -1
- package/dist/cli/placement-engine.test.d.ts +0 -2
- package/dist/cli/placement-engine.test.d.ts.map +0 -1
- package/dist/cli/shipped-versions.test.d.ts +0 -2
- package/dist/cli/shipped-versions.test.d.ts.map +0 -1
- package/dist/cli/tarball-parity.test.d.ts +0 -2
- package/dist/cli/tarball-parity.test.d.ts.map +0 -1
- package/dist/cli/template-format.test.d.ts +0 -2
- package/dist/cli/template-format.test.d.ts.map +0 -1
- package/dist/cli/template-ledger.test.d.ts +0 -2
- package/dist/cli/template-ledger.test.d.ts.map +0 -1
- package/dist/cli/tokens-css.test.d.ts +0 -2
- package/dist/cli/tokens-css.test.d.ts.map +0 -1
- package/dist/cli/toolchain-wiring.test.d.ts +0 -2
- package/dist/cli/toolchain-wiring.test.d.ts.map +0 -1
- package/dist/cli/waiver-audit.test.d.ts +0 -2
- package/dist/cli/waiver-audit.test.d.ts.map +0 -1
- package/dist/content/article-actions.test.d.ts +0 -2
- package/dist/content/article-actions.test.d.ts.map +0 -1
- package/dist/content/article-model.test.d.ts +0 -2
- package/dist/content/article-model.test.d.ts.map +0 -1
- package/dist/content/block-split.test.d.ts +0 -2
- package/dist/content/block-split.test.d.ts.map +0 -1
- package/dist/content/heading-components.test.d.ts +0 -2
- package/dist/content/heading-components.test.d.ts.map +0 -1
- package/dist/content/markdown.test.d.ts +0 -2
- package/dist/content/markdown.test.d.ts.map +0 -1
- package/dist/content/prose.module.css.test.d.ts +0 -2
- package/dist/content/prose.module.css.test.d.ts.map +0 -1
- package/dist/content/sanitize.test.d.ts +0 -2
- package/dist/content/sanitize.test.d.ts.map +0 -1
- package/dist/content/slug.test.d.ts +0 -2
- package/dist/content/slug.test.d.ts.map +0 -1
- package/dist/controls/actions.test.d.ts +0 -2
- package/dist/controls/actions.test.d.ts.map +0 -1
- package/dist/controls/actions.type-guard.test.d.ts +0 -2
- package/dist/controls/actions.type-guard.test.d.ts.map +0 -1
- package/dist/controls/control-group.test.d.ts +0 -2
- package/dist/controls/control-group.test.d.ts.map +0 -1
- package/dist/controls/controls.router.test.d.ts +0 -2
- package/dist/controls/controls.router.test.d.ts.map +0 -1
- package/dist/controls/filter-set.test.d.ts +0 -2
- package/dist/controls/filter-set.test.d.ts.map +0 -1
- package/dist/controls/peer-boundary.test.d.ts +0 -2
- package/dist/controls/peer-boundary.test.d.ts.map +0 -1
- package/dist/controls/props-contract.test.d.ts +0 -2
- package/dist/controls/props-contract.test.d.ts.map +0 -1
- package/dist/controls/sync-button.test.d.ts +0 -2
- package/dist/controls/sync-button.test.d.ts.map +0 -1
- package/dist/dashboard/query-state.test.d.ts +0 -2
- package/dist/dashboard/query-state.test.d.ts.map +0 -1
- package/dist/dashboard/settings-section.test.d.ts +0 -2
- package/dist/dashboard/settings-section.test.d.ts.map +0 -1
- package/dist/dashboard/stat-card.test.d.ts +0 -2
- package/dist/dashboard/stat-card.test.d.ts.map +0 -1
- package/dist/data/data-table.test.d.ts +0 -2
- package/dist/data/data-table.test.d.ts.map +0 -1
- package/dist/guard/check-source.test.d.ts +0 -2
- package/dist/guard/check-source.test.d.ts.map +0 -1
- package/dist/guard/grace.test.d.ts +0 -20
- package/dist/guard/grace.test.d.ts.map +0 -1
- package/dist/guard/guard-hook.test.d.ts +0 -2
- package/dist/guard/guard-hook.test.d.ts.map +0 -1
- package/dist/provider/index.test.d.ts +0 -2
- package/dist/provider/index.test.d.ts.map +0 -1
- package/dist/provider/lab-theme.test.d.ts +0 -2
- package/dist/provider/lab-theme.test.d.ts.map +0 -1
- package/dist/query/error-message.test.d.ts +0 -2
- package/dist/query/error-message.test.d.ts.map +0 -1
- package/dist/router-tanstack/multi-search-param-store.test.d.ts +0 -2
- package/dist/router-tanstack/multi-search-param-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/nav.test.d.ts +0 -2
- package/dist/router-tanstack/nav.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-param-store.test.d.ts +0 -2
- package/dist/router-tanstack/search-param-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-store.router.test.d.ts +0 -2
- package/dist/router-tanstack/search-store.router.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-store.test.d.ts +0 -2
- package/dist/router-tanstack/search-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/use-nav.test.d.ts +0 -2
- package/dist/router-tanstack/use-nav.test.d.ts.map +0 -1
- package/dist/section/section.test.d.ts +0 -2
- package/dist/section/section.test.d.ts.map +0 -1
- package/dist/shell/app-mobile-nav.test.d.ts +0 -2
- package/dist/shell/app-mobile-nav.test.d.ts.map +0 -1
- package/dist/shell/app-sidebar.test.d.ts +0 -2
- package/dist/shell/app-sidebar.test.d.ts.map +0 -1
- package/dist/shell/index.test.d.ts +0 -2
- package/dist/shell/index.test.d.ts.map +0 -1
- package/dist/shell/mobile-nav-model.test.d.ts +0 -2
- package/dist/shell/mobile-nav-model.test.d.ts.map +0 -1
- package/dist/shell/page-bar.test.d.ts +0 -2
- package/dist/shell/page-bar.test.d.ts.map +0 -1
- package/dist/state/fields.test.d.ts +0 -2
- package/dist/state/fields.test.d.ts.map +0 -1
- package/dist/styles.floor.test.d.ts +0 -2
- package/dist/styles.floor.test.d.ts.map +0 -1
- package/dist/theme/border-coverage.test.d.ts +0 -18
- package/dist/theme/border-coverage.test.d.ts.map +0 -1
- package/dist/theme/contrast.test.d.ts +0 -2
- package/dist/theme/contrast.test.d.ts.map +0 -1
- package/dist/theme/ctl-theme.test.d.ts +0 -2
- package/dist/theme/ctl-theme.test.d.ts.map +0 -1
- package/dist/theme/ctl-tier-coverage.test.d.ts +0 -2
- package/dist/theme/ctl-tier-coverage.test.d.ts.map +0 -1
- package/dist/theme/density-option.test.d.ts +0 -2
- package/dist/theme/density-option.test.d.ts.map +0 -1
- package/dist/theme/density-relations.test.d.ts +0 -2
- package/dist/theme/density-relations.test.d.ts.map +0 -1
- package/dist/theme/derive-theme.test.d.ts +0 -2
- package/dist/theme/derive-theme.test.d.ts.map +0 -1
- package/dist/theme/divider-law.test.d.ts +0 -2
- package/dist/theme/divider-law.test.d.ts.map +0 -1
- package/dist/theme/fonts-option.test.d.ts +0 -2
- package/dist/theme/fonts-option.test.d.ts.map +0 -1
- package/dist/theme/icon-slot.test.d.ts +0 -2
- package/dist/theme/icon-slot.test.d.ts.map +0 -1
- package/dist/theme/layout-rhythm-css.test.d.ts +0 -2
- package/dist/theme/layout-rhythm-css.test.d.ts.map +0 -1
- package/dist/theme/radius-option.test.d.ts +0 -2
- package/dist/theme/radius-option.test.d.ts.map +0 -1
- package/dist/theme/radius.test.d.ts +0 -2
- package/dist/theme/radius.test.d.ts.map +0 -1
- package/dist/theme/shadow-surfaces.test.d.ts +0 -26
- package/dist/theme/shadow-surfaces.test.d.ts.map +0 -1
- package/dist/theme/spacing.test.d.ts +0 -2
- package/dist/theme/spacing.test.d.ts.map +0 -1
- package/dist/theme/use-basalt-spacing.test.d.ts +0 -2
- package/dist/theme/use-basalt-spacing.test.d.ts.map +0 -1
- package/dist/theme-lab/derive-controls.test.d.ts +0 -2
- package/dist/theme-lab/derive-controls.test.d.ts.map +0 -1
- package/dist/theme-lab/derive-state.test.d.ts +0 -2
- package/dist/theme-lab/derive-state.test.d.ts.map +0 -1
- package/dist/theme-lab/theme-lab.test.d.ts +0 -2
- package/dist/theme-lab/theme-lab.test.d.ts.map +0 -1
- package/dist/tokens/build-fonts-css.test.d.ts +0 -2
- package/dist/tokens/build-fonts-css.test.d.ts.map +0 -1
- package/dist/tokens/build-radius-css.test.d.ts +0 -2
- package/dist/tokens/build-radius-css.test.d.ts.map +0 -1
- package/dist/tokens/chart-margin.test.d.ts +0 -2
- package/dist/tokens/chart-margin.test.d.ts.map +0 -1
- package/dist/tokens/density.test.d.ts +0 -2
- package/dist/tokens/density.test.d.ts.map +0 -1
- package/dist/tokens/derive-radius.test.d.ts +0 -2
- package/dist/tokens/derive-radius.test.d.ts.map +0 -1
- package/dist/tokens/derive.test.d.ts +0 -2
- package/dist/tokens/derive.test.d.ts.map +0 -1
- package/dist/tokens/palette.test.d.ts +0 -2
- package/dist/tokens/palette.test.d.ts.map +0 -1
- package/dist/tokens/text-scale.test.d.ts +0 -2
- package/dist/tokens/text-scale.test.d.ts.map +0 -1
- package/dist/vite-color-mix.test.d.ts +0 -2
- package/dist/vite-color-mix.test.d.ts.map +0 -1
- package/dist/vite.test.d.ts +0 -2
- package/dist/vite.test.d.ts.map +0 -1
- package/dist/widget-header/delta-badge.test.d.ts +0 -2
- package/dist/widget-header/delta-badge.test.d.ts.map +0 -1
- package/dist/widget-header/no-mantine.test.d.ts +0 -2
- package/dist/widget-header/no-mantine.test.d.ts.map +0 -1
- package/dist/widget-header/widget-header.test.d.ts +0 -2
- package/dist/widget-header/widget-header.test.d.ts.map +0 -1
- package/src/agent/adapter.test.ts +0 -1640
- package/src/agent/ai-sdk-transport.test.ts +0 -658
- package/src/agent/coalesce.test.ts +0 -387
- package/src/agent/foreign.test.ts +0 -51
- package/src/agent/id.test.ts +0 -169
- package/src/agent/merge.test.ts +0 -206
- package/src/agent/part-list.test.tsx +0 -112
- package/src/agent/parts.test.ts +0 -720
- package/src/agent/thread.test.ts +0 -220
- package/src/agent/transport.test.ts +0 -70
- package/src/agent/use-agent-stream.test.tsx +0 -287
- package/src/agent/use-agent-thread-runs.foreign.test.tsx +0 -138
- package/src/agent/use-agent-thread-runs.resume.test.tsx +0 -294
- package/src/agent/use-agent-thread-runs.test.tsx +0 -1120
- package/src/agent/use-agent-thread-runs.wedge.test.tsx +0 -387
- package/src/agent-chat/composer.test.tsx +0 -924
- package/src/agent-chat/relative-time.test.ts +0 -95
- package/src/agent-chat/thread-feed-row.test.tsx +0 -510
- package/src/agent-chat/thread-feed.test.tsx +0 -241
- package/src/agent-chat/thread-message.test.tsx +0 -1285
- package/src/agent-chat/thread-workspace.test.tsx +0 -169
- package/src/agent-chat/tool-chip.test.tsx +0 -139
- package/src/agent-chat/virtualize.type-guard.test.ts +0 -49
- package/src/charts/cursor/resolve.test.ts +0 -151
- package/src/charts/cursor/store.test.ts +0 -64
- package/src/charts/kinds/BandStrip.test.tsx +0 -282
- package/src/charts/kinds/Bars.test.tsx +0 -183
- package/src/charts/kinds/DualPanel.test.tsx +0 -527
- package/src/charts/kinds/MirroredBars.test.tsx +0 -232
- package/src/charts/kinds/MultiLine.test.tsx +0 -218
- package/src/charts/kinds/StackedArea.test.tsx +0 -114
- package/src/charts/kinds/ZonedLine.test.tsx +0 -147
- package/src/charts/layout/auto-margin.test.ts +0 -42
- package/src/charts/primitives/CartesianChart.test.tsx +0 -647
- package/src/charts/primitives/ChartCard.test.tsx +0 -66
- package/src/charts/primitives/ChartFrame.test.tsx +0 -142
- package/src/charts/primitives/ChartLegend.test.tsx +0 -78
- package/src/charts/primitives/ChartTooltip.test.tsx +0 -44
- package/src/charts/primitives/XZoneRects.test.tsx +0 -123
- package/src/charts/series.test.ts +0 -112
- package/src/charts/utils/domain.test.ts +0 -54
- package/src/charts/utils/measure-text.test.ts +0 -36
- package/src/cli/check-coverage.test.ts +0 -297
- package/src/cli/check-theme.test.ts +0 -837
- package/src/cli/help.test.ts +0 -170
- package/src/cli/init-sync.test.ts +0 -343
- package/src/cli/placement-engine.test.ts +0 -298
- package/src/cli/shipped-versions.test.ts +0 -83
- package/src/cli/tarball-parity.test.ts +0 -44
- package/src/cli/template-format.test.ts +0 -64
- package/src/cli/template-ledger.test.ts +0 -219
- package/src/cli/tokens-css.test.ts +0 -249
- package/src/cli/toolchain-wiring.test.ts +0 -1358
- package/src/cli/waiver-audit.test.ts +0 -215
- package/src/content/article-actions.test.ts +0 -78
- package/src/content/article-model.test.ts +0 -119
- package/src/content/block-split.test.ts +0 -75
- package/src/content/heading-components.test.tsx +0 -65
- package/src/content/markdown.test.tsx +0 -603
- package/src/content/prose.module.css.test.ts +0 -39
- package/src/content/sanitize.test.ts +0 -659
- package/src/content/slug.test.ts +0 -62
- package/src/controls/actions.test.tsx +0 -252
- package/src/controls/actions.type-guard.test.ts +0 -63
- package/src/controls/control-group.test.tsx +0 -229
- package/src/controls/controls.router.test.tsx +0 -637
- package/src/controls/filter-set.test.tsx +0 -472
- package/src/controls/peer-boundary.test.ts +0 -85
- package/src/controls/props-contract.test.tsx +0 -106
- package/src/controls/sync-button.test.tsx +0 -183
- package/src/dashboard/query-state.test.tsx +0 -152
- package/src/dashboard/settings-section.test.tsx +0 -56
- package/src/dashboard/stat-card.test.tsx +0 -154
- package/src/data/data-table.test.tsx +0 -434
- package/src/guard/check-source.test.ts +0 -3355
- package/src/guard/grace.test.ts +0 -149
- package/src/guard/guard-hook.test.ts +0 -203
- package/src/provider/index.test.tsx +0 -101
- package/src/provider/lab-theme.test.ts +0 -147
- package/src/query/error-message.test.ts +0 -67
- package/src/router-tanstack/multi-search-param-store.test.ts +0 -124
- package/src/router-tanstack/nav.test.ts +0 -111
- package/src/router-tanstack/search-param-store.test.ts +0 -135
- package/src/router-tanstack/search-store.router.test.tsx +0 -661
- package/src/router-tanstack/search-store.test.ts +0 -418
- package/src/router-tanstack/use-nav.test.tsx +0 -187
- package/src/section/section.test.tsx +0 -204
- package/src/shell/app-mobile-nav.test.tsx +0 -403
- package/src/shell/app-sidebar.test.tsx +0 -509
- package/src/shell/index.test.tsx +0 -428
- package/src/shell/mobile-nav-model.test.ts +0 -517
- package/src/shell/page-bar.test.tsx +0 -316
- package/src/state/fields.test.tsx +0 -258
- package/src/styles.floor.test.ts +0 -36
- package/src/theme/border-coverage.test.ts +0 -272
- package/src/theme/contrast.test.ts +0 -354
- package/src/theme/ctl-theme.test.tsx +0 -275
- package/src/theme/ctl-tier-coverage.test.ts +0 -170
- package/src/theme/density-option.test.ts +0 -96
- package/src/theme/density-relations.test.ts +0 -506
- package/src/theme/derive-theme.test.ts +0 -101
- package/src/theme/divider-law.test.ts +0 -259
- package/src/theme/fonts-option.test.ts +0 -75
- package/src/theme/icon-slot.test.tsx +0 -275
- package/src/theme/layout-rhythm-css.test.ts +0 -72
- package/src/theme/radius-option.test.ts +0 -86
- package/src/theme/radius.test.ts +0 -142
- package/src/theme/shadow-surfaces.test.ts +0 -488
- package/src/theme/spacing.test.ts +0 -495
- package/src/theme/use-basalt-spacing.test.tsx +0 -55
- package/src/theme-lab/derive-controls.test.ts +0 -94
- package/src/theme-lab/derive-state.test.ts +0 -71
- package/src/theme-lab/theme-lab.test.ts +0 -46
- package/src/tokens/build-fonts-css.test.ts +0 -52
- package/src/tokens/build-radius-css.test.ts +0 -25
- package/src/tokens/chart-margin.test.ts +0 -39
- package/src/tokens/density.test.ts +0 -259
- package/src/tokens/derive-radius.test.ts +0 -62
- package/src/tokens/derive.test.ts +0 -30
- package/src/tokens/palette.test.ts +0 -114
- package/src/tokens/text-scale.test.ts +0 -51
- package/src/vite-color-mix.test.ts +0 -46
- package/src/vite.test.ts +0 -423
- package/src/widget-header/delta-badge.test.tsx +0 -60
- package/src/widget-header/no-mantine.test.ts +0 -33
- package/src/widget-header/widget-header.test.tsx +0 -187
package/dist/theme/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
Accordion,
|
|
3
3
|
ActionIcon,
|
|
4
4
|
Alert,
|
|
5
|
+
AppShell,
|
|
5
6
|
Badge,
|
|
6
7
|
Breadcrumbs,
|
|
7
8
|
Button,
|
|
@@ -299,6 +300,18 @@ function buildTheme(data, options = {}) {
|
|
|
299
300
|
}
|
|
300
301
|
}
|
|
301
302
|
}),
|
|
303
|
+
// Region seams (docs/DESIGN-SPEC.md §5, §8 #12): the ONE lever for every AppShell edge —
|
|
304
|
+
// Mantine declares `--app-shell-border-color` on the shell element per scheme, which beats
|
|
305
|
+
// an inherited `:root` value, so a theme-level `vars` override (merged into the root's
|
|
306
|
+
// inline style) wins. Sections keep their default `withBorder: true`; the color is this.
|
|
307
|
+
// `styles` would also land on the same root style attribute, just through Mantine's own
|
|
308
|
+
// `[key: string]: any` index rather than a typed field.
|
|
309
|
+
// Cast: `AppShellCssVariables` declares only `--app-shell-transition-duration` /
|
|
310
|
+
// `-timing-function`, yet Mantine's OWN AppShell.css sets `--app-shell-border-color` on the
|
|
311
|
+
// same root.
|
|
312
|
+
AppShell: AppShell.extend({
|
|
313
|
+
vars: () => ({ root: { "--app-shell-border-color": "var(--vx-divider)" } })
|
|
314
|
+
}),
|
|
302
315
|
// "Ink earns its color" — a nav selection is UI state, not the identity accent on the LABEL.
|
|
303
316
|
// The active item is a SELECTED ROW, not a raised control: the same ink-tint idiom as the
|
|
304
317
|
// hover state (one step stronger, ink-9%), no panel fill and no `shadow-card` — a raised,
|
|
@@ -475,13 +488,32 @@ function buildTheme(data, options = {}) {
|
|
|
475
488
|
Chip: Chip.extend({
|
|
476
489
|
classNames: (_theme, props) => (props.variant ?? "filled") === "filled" ? { label: controlsClasses.chipLabel } : {}
|
|
477
490
|
}),
|
|
478
|
-
// Track = ink-6% tint, radius 7, 2px padding; active segment = panel
|
|
479
|
-
// radius 5. `--sc-radius`/`--sc-color` don't reach the root track background
|
|
480
|
-
// hardcodes that to a raw gray step), so it's forced via `styles.root` same as
|
|
481
|
-
// The active-only ink label color + weight can't live in the flat `styles.label`
|
|
482
|
-
// (applies to every option regardless of state), so it's in segmented-control.module.css
|
|
491
|
+
// Track = ink-6% tint, radius 7, 2px padding; active segment = an ink-mixed panel fill +
|
|
492
|
+
// `shadow-ctrl`, radius 5. `--sc-radius`/`--sc-color` don't reach the root track background
|
|
493
|
+
// (Mantine hardcodes that to a raw gray step), so it's forced via `styles.root` same as
|
|
494
|
+
// Card/Paper. The active-only ink label color + weight can't live in the flat `styles.label`
|
|
495
|
+
// object (applies to every option regardless of state), so it's in segmented-control.module.css
|
|
483
496
|
// instead — same pattern as NavLink's active-icon accent.
|
|
484
497
|
//
|
|
498
|
+
// The indicator's fill is `color-mix(in srgb, var(--vx-ink) 12%, var(--vx-surface-panel))`,
|
|
499
|
+
// not a flat `--vx-surface-panel` — a flat panel fill is indistinguishable from the track's
|
|
500
|
+
// OWN parent on the one surface that IS `--vx-surface-panel` (the aside's `panel` filter
|
|
501
|
+
// surface, `docs/CONTROLS-SPEC.md` §3): the track (ink-6% over panel) and the indicator (panel,
|
|
502
|
+
// flat) then differ by 6% ink with no other cue, and `shadow-ctrl` alone (a bare
|
|
503
|
+
// `0 1px 2px` drop, no ring) reads as "barely there". This is NOT the `raised`-token doctrine
|
|
504
|
+
// in `tokens/palette.ts` (`SHADOW.raised`'s "a default control nested in a Card has no boundary
|
|
505
|
+
// but the drop — raise the drop, do not reintroduce an edge") — that doctrine is scoped to the
|
|
506
|
+
// shared Button/ActionIcon/Input depth token, whose fill is a real surface color a border would
|
|
507
|
+
// outline. The indicator's own fill has no such constraint, so a second ink-mix step (12%, double
|
|
508
|
+
// the track's) is the fix: it holds up on every surface the control mounts on, not only the
|
|
509
|
+
// panel-nested one.
|
|
510
|
+
//
|
|
511
|
+
// `.control`'s `min-width: 0` (`segmented-control.module.css`) is the other half of an even
|
|
512
|
+
// `fullWidth` split — Mantine's own `.control` ships `flex: 1` with no `min-width` override, so
|
|
513
|
+
// the initial `auto` floors every option at its min-content width and a `fullWidth` track splits
|
|
514
|
+
// UNEVENLY. The label already carries `overflow: hidden` + `text-overflow: ellipsis`, so a
|
|
515
|
+
// label that no longer fits its equal share truncates instead of forcing the column wide.
|
|
516
|
+
//
|
|
485
517
|
// The track's padding is `SPACE_FIXED.segmentedTrackInset`, a plain literal — NOT a
|
|
486
518
|
// `--vx-space-*` var — because it is density-EXEMPT: it is load-bearing for the nested-corner
|
|
487
519
|
// law (`RADIUS.card === RADIUS_STEP.tight + segmentedTrackInset`, see that constant's doc in
|
|
@@ -490,7 +522,10 @@ function buildTheme(data, options = {}) {
|
|
|
490
522
|
// density.
|
|
491
523
|
SegmentedControl: SegmentedControl.extend({
|
|
492
524
|
defaultProps: { radius: radius.card },
|
|
493
|
-
classNames: {
|
|
525
|
+
classNames: {
|
|
526
|
+
label: segmentedControlClasses.label,
|
|
527
|
+
control: segmentedControlClasses.control
|
|
528
|
+
},
|
|
494
529
|
// `label` gets a `ctl`-only min-height (function-form `styles`, same `props.size === …` gate
|
|
495
530
|
// as Button/ActionIcon/Input's `vars` overrides above) so a `size="ctl"` SegmentedControl
|
|
496
531
|
// matches the ctl Button/Input box exactly instead of following its own fixed padding — see
|
|
@@ -499,21 +534,57 @@ function buildTheme(data, options = {}) {
|
|
|
499
534
|
styles: (_theme, props) => ({
|
|
500
535
|
root: {
|
|
501
536
|
backgroundColor: "color-mix(in srgb, var(--vx-ink) 6%, transparent)",
|
|
502
|
-
padding: `${SPACE_FIXED.segmentedTrackInset}px
|
|
537
|
+
padding: `${SPACE_FIXED.segmentedTrackInset}px`,
|
|
538
|
+
// The OUTER safety net a `.control`'s own `min-width: 0` (`segmented-control.module.css`)
|
|
539
|
+
// cannot provide by itself: that rule only lets each SEGMENT shrink below its own label's
|
|
540
|
+
// content width so `fullWidth` can split evenly — it does nothing to stop the WHOLE TRACK
|
|
541
|
+
// from being squeezed by an ANCESTOR flex row with room to spare (a `Section`/`StatCard`
|
|
542
|
+
// header's `actions` slot), which silently clipped "Absolute" to "Absolut" with no
|
|
543
|
+
// ellipsis at all. `min-width: max-content` pins the root to the sum of its labels'
|
|
544
|
+
// natural widths — it now OVERFLOWS a too-narrow ancestor instead of shrinking into it,
|
|
545
|
+
// which is also what makes the overflow MEASURABLE (`panel-row.tsx`'s `useTrackFits`
|
|
546
|
+
// compares the root's rendered width against its parent's available space). Inside that
|
|
547
|
+
// floor, `fullWidth` with room to spare still splits its segments evenly exactly as
|
|
548
|
+
// before — the floor only ever raises the STARTING point flex-grow distributes surplus
|
|
549
|
+
// from, never removes the segments' own equal-share arithmetic.
|
|
550
|
+
minWidth: "max-content"
|
|
503
551
|
},
|
|
504
552
|
indicator: {
|
|
505
|
-
backgroundColor: "var(--vx-surface-panel)",
|
|
553
|
+
backgroundColor: "color-mix(in srgb, var(--vx-ink) 12%, var(--vx-surface-panel))",
|
|
506
554
|
boxShadow: "var(--vx-shadow-ctrl)",
|
|
507
555
|
borderRadius: "var(--vx-radius-tight)"
|
|
508
556
|
},
|
|
509
557
|
// Conditionally spread the WHOLE key (never a present `label: undefined`) — the package
|
|
510
558
|
// builds under `exactOptionalPropertyTypes`, which treats a key present-but-`undefined` as
|
|
511
559
|
// a type error distinct from the key being absent.
|
|
560
|
+
//
|
|
561
|
+
// `width: '100%'` + `minWidth: 0` are load-bearing, not cosmetic: `inline-flex` is a
|
|
562
|
+
// shrink-to-fit box by default (like `inline-block`), so switching `.label` to it for
|
|
563
|
+
// vertical centering ALSO switched its width from "fills `.control`'s box" (a plain
|
|
564
|
+
// `display: block`'s default) to "sized to its own content" — which is invisible until
|
|
565
|
+
// `fullWidth` forces every `.control` to an EQUAL share (`segmented-control.module.css`'s
|
|
566
|
+
// `min-width: 0`): a label wider than that equal share then rendered at its own full
|
|
567
|
+
// content width, overflowing its column and getting hard-clipped by the track's own
|
|
568
|
+
// `overflow: hidden` instead of ellipsizing inside it ("Same period last year" cut off
|
|
569
|
+
// mid-word). `width: 100%` makes the inline-flex box fill `.control` again, and `minWidth:
|
|
570
|
+
// 0` is the same flex-item footgun `.control` itself needed — `.label` is ALSO a flex
|
|
571
|
+
// container's item once `fullWidth`'s `.root { display: flex }` applies, so it inherits an
|
|
572
|
+
// `auto` (content-based) minimum unless told otherwise.
|
|
512
573
|
...props.size === "ctl" ? {
|
|
513
574
|
label: {
|
|
514
575
|
display: "inline-flex",
|
|
515
576
|
alignItems: "center",
|
|
516
|
-
minHeight: `calc(var(--vx-space-control-height-ctl) * var(--mantine-scale) - ${2 * SPACE_FIXED.segmentedTrackInset}px)
|
|
577
|
+
minHeight: `calc(var(--vx-space-control-height-ctl) * var(--mantine-scale) - ${2 * SPACE_FIXED.segmentedTrackInset}px)`,
|
|
578
|
+
// `width: '100%'` only when `fullWidth` — it is what makes an EQUAL-SPLIT
|
|
579
|
+
// segment's label fill its column instead of shrink-to-fit around its own text
|
|
580
|
+
// (the "Same period last year" clipped-with-no-ellipsis case). A NON-`fullWidth`
|
|
581
|
+
// track (a header's `actions` slot, two or three options) wants the opposite: its
|
|
582
|
+
// label sized to its OWN content, so the root's `min-width: max-content` (below)
|
|
583
|
+
// measures the label's true natural width rather than an equal 1/2 or 1/3 share
|
|
584
|
+
// computed through `.control`'s `flex-basis: 0%` — forcing `width: 100%` there
|
|
585
|
+
// too under-computed the shrink-to-fit root by a few px ("Absolute" clipped to
|
|
586
|
+
// "Absolut" even with the floor in place).
|
|
587
|
+
...props.fullWidth === true ? { width: "100%", minWidth: 0 } : {}
|
|
517
588
|
}
|
|
518
589
|
} : {}
|
|
519
590
|
})
|
|
@@ -635,9 +706,13 @@ function buildTheme(data, options = {}) {
|
|
|
635
706
|
}
|
|
636
707
|
}
|
|
637
708
|
}),
|
|
638
|
-
// Modal/Drawer: overlay surface + overlay shadow on the content
|
|
639
|
-
// Mantine
|
|
640
|
-
//
|
|
709
|
+
// Modal/Drawer: overlay surface + overlay shadow on the content, the SAME surface on the
|
|
710
|
+
// header. Mantine's header is `position: sticky` by default, painted `--mantine-color-body` —
|
|
711
|
+
// basalt used to drop that to `transparent`, which reads fine over a body that never scrolls
|
|
712
|
+
// under it but shows every scrolled row straight through the title once one does (the mobile
|
|
713
|
+
// filter sheet, the shell's "More" nav sheet). The header stays sticky; only its own
|
|
714
|
+
// background moves back to opaque, matching the content box it sits above rather than the page
|
|
715
|
+
// behind it. Title = head font; close button = the ghost idiom (floating.module.css).
|
|
641
716
|
Modal: Modal.extend({
|
|
642
717
|
defaultProps: { radius: radius.floating },
|
|
643
718
|
classNames: { close: floatingClasses.closeButton },
|
|
@@ -646,7 +721,7 @@ function buildTheme(data, options = {}) {
|
|
|
646
721
|
backgroundColor: "var(--vx-surface-overlay)",
|
|
647
722
|
boxShadow: "var(--vx-shadow-overlay)"
|
|
648
723
|
},
|
|
649
|
-
header: { backgroundColor: "
|
|
724
|
+
header: { backgroundColor: "var(--vx-surface-overlay)" },
|
|
650
725
|
title: {
|
|
651
726
|
fontFamily: "var(--basalt-font-head)",
|
|
652
727
|
fontWeight: 550,
|
|
@@ -661,7 +736,7 @@ function buildTheme(data, options = {}) {
|
|
|
661
736
|
backgroundColor: "var(--vx-surface-overlay)",
|
|
662
737
|
boxShadow: "var(--vx-shadow-overlay)"
|
|
663
738
|
},
|
|
664
|
-
header: { backgroundColor: "
|
|
739
|
+
header: { backgroundColor: "var(--vx-surface-overlay)" },
|
|
665
740
|
title: {
|
|
666
741
|
fontFamily: "var(--basalt-font-head)",
|
|
667
742
|
fontWeight: 550,
|
|
@@ -812,6 +887,8 @@ const CTL_PADDING_X = 10;
|
|
|
812
887
|
const CTL_INPUT_PADDING_Y = 4;
|
|
813
888
|
const CTL_SEGMENT_PADDING_Y = 2.5;
|
|
814
889
|
const CTL_CHEVRON_SIZE = 14;
|
|
890
|
+
const CTL_NUMBER_CHEVRON_SIZE = 10;
|
|
891
|
+
const CTL_NUMBER_RIGHT_SECTION_WIDTH = 17;
|
|
815
892
|
const CTL_TOGGLE_SIZE = 16;
|
|
816
893
|
const CTL_RADIO_DOT_SIZE = CTL_TOGGLE_SIZE * 0.4;
|
|
817
894
|
const CTL_SWITCH_HEIGHT = 18;
|
|
@@ -819,6 +896,7 @@ const CTL_SWITCH_WIDTH = 30;
|
|
|
819
896
|
const CTL_SWITCH_THUMB_SIZE = 12;
|
|
820
897
|
const CTL_SWITCH_TRACK_LABEL_SIZE = 5;
|
|
821
898
|
const CTL_SWITCH_TRACK_LABEL_PADDING = 2;
|
|
899
|
+
const CTL_SLIDER_TRACK_SIZE = 6;
|
|
822
900
|
function ctlSizeVars() {
|
|
823
901
|
const ctlHeight = "calc(var(--vx-space-control-height-ctl) * var(--mantine-scale))";
|
|
824
902
|
return {
|
|
@@ -835,6 +913,8 @@ function ctlSizeVars() {
|
|
|
835
913
|
"--sc-padding-ctl": `${pxRem(CTL_SEGMENT_PADDING_Y)} calc(${pxRem(CTL_PADDING_X)} * var(--mantine-scale))`,
|
|
836
914
|
"--combobox-option-padding-ctl": `${pxRem(CTL_SEGMENT_PADDING_Y)} ${pxRem(CTL_PADDING_X)}`,
|
|
837
915
|
"--combobox-chevron-size-ctl": pxRem(CTL_CHEVRON_SIZE),
|
|
916
|
+
"--ni-chevron-size-ctl": pxRem(CTL_NUMBER_CHEVRON_SIZE),
|
|
917
|
+
"--ni-right-section-width-ctl": `calc(${pxRem(CTL_NUMBER_RIGHT_SECTION_WIDTH)} * var(--mantine-scale))`,
|
|
838
918
|
"--badge-height-ctl": ctlHeight,
|
|
839
919
|
"--badge-padding-x-ctl": `calc(${pxRem(CTL_PADDING_X)} * var(--mantine-scale))`,
|
|
840
920
|
"--badge-fz-ctl": `calc(${pxRem(VX.text.xs)} * var(--mantine-scale))`,
|
|
@@ -855,7 +935,11 @@ function ctlSizeVars() {
|
|
|
855
935
|
"--switch-width-ctl": `calc(${pxRem(CTL_SWITCH_WIDTH)} * var(--mantine-scale))`,
|
|
856
936
|
"--switch-thumb-size-ctl": `calc(${pxRem(CTL_SWITCH_THUMB_SIZE)} * var(--mantine-scale))`,
|
|
857
937
|
"--switch-label-font-size-ctl": pxRem(CTL_SWITCH_TRACK_LABEL_SIZE),
|
|
858
|
-
"--switch-track-label-padding-ctl": pxRem(CTL_SWITCH_TRACK_LABEL_PADDING)
|
|
938
|
+
"--switch-track-label-padding-ctl": pxRem(CTL_SWITCH_TRACK_LABEL_PADDING),
|
|
939
|
+
// Slider — the inspector row's control (`SliderControl`, `docs/ASIDE-SPEC.md` §1). One prefix
|
|
940
|
+
// only: `slider-size` is the track, and every other dimension (the thumb, the root's inline
|
|
941
|
+
// padding, the vertical hit box) is derived from it in `Slider.css`.
|
|
942
|
+
"--slider-size-ctl": `calc(${pxRem(CTL_SLIDER_TRACK_SIZE)} * var(--mantine-scale))`
|
|
859
943
|
};
|
|
860
944
|
}
|
|
861
945
|
function buildCssVariablesResolver(data) {
|
|
@@ -885,7 +969,8 @@ function buildCssVariablesResolver(data) {
|
|
|
885
969
|
// secondary / muted text
|
|
886
970
|
"--mantine-color-text": `var(--vx-ink, ${INK.ink.light})`,
|
|
887
971
|
// primary body/heading text
|
|
888
|
-
|
|
972
|
+
// `--app-shell-border-color` is set by `components.AppShell.extend({ vars })` above — this
|
|
973
|
+
// entry was dead (an element-level declaration always beats an inherited `:root` value).
|
|
889
974
|
// THE strict-surface lever. Mantine components do NOT chain border/surface colors through
|
|
890
975
|
// `--mantine-color-default-*`; each hardcodes a RAW ramp step (`--mantine-color-gray-{2,3,4}`
|
|
891
976
|
// on light) directly — which is why AppShell/Table/Input/Divider/Tabs/Popover/Accordion borders
|
|
@@ -912,7 +997,7 @@ function buildCssVariablesResolver(data) {
|
|
|
912
997
|
"--mantine-color-default-border": "transparent",
|
|
913
998
|
"--mantine-color-dimmed": `var(--vx-neutral, ${NEUTRAL.neutral.dark})`,
|
|
914
999
|
"--mantine-color-text": `var(--vx-ink, ${INK.ink.dark})`,
|
|
915
|
-
|
|
1000
|
+
// See the light block above — `--app-shell-border-color` is set by `AppShell.extend` now.
|
|
916
1001
|
// Dark components read `--mantine-color-dark-4` (border) raw. `buildDarkTuple` already sets
|
|
917
1002
|
// dark-4, but to a slightly lighter step than the hairline token, so layout borders read
|
|
918
1003
|
// marginally heavier than card borders. Pin dark-4 to the SAME "line" token for parity.
|
|
@@ -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,66 @@
|
|
|
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
|
+
export type ColorTunable = {
|
|
20
|
+
var: string;
|
|
21
|
+
label: string;
|
|
22
|
+
};
|
|
23
|
+
export type ColorGroup = {
|
|
24
|
+
title: string;
|
|
25
|
+
items: ColorTunable[];
|
|
26
|
+
};
|
|
27
|
+
export type Overrides = Record<string, string>;
|
|
28
|
+
/** Gradient strength knobs (percent values, theme-independent). */
|
|
29
|
+
export declare const AREA_TOP_VAR = "--vx-area-top";
|
|
30
|
+
export declare const AREA_BOTTOM_VAR = "--vx-area-bottom";
|
|
31
|
+
/**
|
|
32
|
+
* Structural `--vx-*` vars worth tuning by eye — the ones `tokens/palette.ts` hand-authors and
|
|
33
|
+
* that never move with the derive config (ColorInput is hex-only, so `rgba()`/`color-mix()` chrome
|
|
34
|
+
* vars like `--vx-axis` / `--vx-grid` are intentionally omitted regardless).
|
|
35
|
+
*
|
|
36
|
+
* Identity/color tuning lives exclusively in `DeriveControls` (one accent seed + bounded knobs,
|
|
37
|
+
* `tokens/derive.ts`) — every `--vx-*` var GENERATED from that config (the accent family, the 12
|
|
38
|
+
* categorical fills, the ink ramp, most of the surface stops, the `good`/`warn`/`bad`
|
|
39
|
+
* status/semantic hues) has been pruned from here on purpose: hand-tuning a hex the derive engine
|
|
40
|
+
* regenerates on every render is a dead knob. What remains is a low-level inspector for the
|
|
41
|
+
* genuinely NON-derived structural tokens only.
|
|
42
|
+
*
|
|
43
|
+
* Generic by design: argo's domain series (Health / Strength / Walking) are NOT shipped — a
|
|
44
|
+
* consumer passes its own series groups to `ThemeLabControls` via the `groups` prop.
|
|
45
|
+
*/
|
|
46
|
+
export declare const COLOR_GROUPS: ColorGroup[];
|
|
47
|
+
/** SSR-safe: with no `document` (and so no `localStorage`), returns an empty overrides map. */
|
|
48
|
+
export declare function loadOverrides(): Overrides;
|
|
49
|
+
export declare function saveOverrides(o: Overrides): void;
|
|
50
|
+
/**
|
|
51
|
+
* Clears every managed var, then re-applies the given overrides. The single mutation point.
|
|
52
|
+
* SSR-safe: with no `document`, this is a no-op.
|
|
53
|
+
*/
|
|
54
|
+
export declare function applyOverrides(o: Overrides): void;
|
|
55
|
+
/**
|
|
56
|
+
* Current value of a color var as a hex `ColorInput` can display (reflects any active override or
|
|
57
|
+
* the stylesheet default). SSR-safe: with no `document`, returns `''`.
|
|
58
|
+
*
|
|
59
|
+
* Reading the custom property directly is not enough: an UNREGISTERED custom property computes to
|
|
60
|
+
* its literal source text, so a `color-mix()`-derived token (every surface — see `SURFACE` in
|
|
61
|
+
* tokens/palette.ts) comes back as the string `"color-mix(in srgb, #3f3f46 50%, #27272a)"`, which
|
|
62
|
+
* ColorInput cannot parse — it renders an empty swatch. Painting the var onto a probe element and
|
|
63
|
+
* reading a real COLOR property instead forces the browser to resolve it to an rgb triple.
|
|
64
|
+
*/
|
|
65
|
+
export declare function readVar(name: string): string;
|
|
66
|
+
//# sourceMappingURL=boot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../../src/theme-lab/boot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AACzD,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,CAAA;AACjE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE9C,mEAAmE;AACnE,eAAO,MAAM,YAAY,kBAAkB,CAAA;AAC3C,eAAO,MAAM,eAAe,qBAAqB,CAAA;AAEjD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,EAAE,UAAU,EA2BpC,CAAA;AAOD,+FAA+F;AAC/F,wBAAgB,aAAa,IAAI,SAAS,CAQzC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAOhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAOjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoB5C"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
const AREA_TOP_VAR = "--vx-area-top";
|
|
2
|
+
const AREA_BOTTOM_VAR = "--vx-area-bottom";
|
|
3
|
+
const COLOR_GROUPS = [
|
|
4
|
+
{
|
|
5
|
+
// `excellent` (top-of-scale grade) and `neutral` (mid-scale) keep their own hand-authored BP
|
|
6
|
+
// families — unlike `good`/`warn`/`bad`, which are the SAME derived hues as `Semantic` and are
|
|
7
|
+
// not independently tunable here.
|
|
8
|
+
title: "Status (chart-only)",
|
|
9
|
+
items: [
|
|
10
|
+
{ var: "--vx-status-excellent", label: "Excellent" },
|
|
11
|
+
{ var: "--vx-status-neutral", label: "Neutral" }
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
// Chart line/dot chrome — hand-authored off the zinc `BP.gray`/`BP.white`/`BP.darkGray`
|
|
16
|
+
// families, independent of the derive config.
|
|
17
|
+
title: "Chart chrome",
|
|
18
|
+
items: [
|
|
19
|
+
{ var: "--vx-line", label: "Line" },
|
|
20
|
+
{ var: "--vx-line2", label: "Line 2" },
|
|
21
|
+
{ var: "--vx-dot-stroke", label: "Dot stroke" }
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
// The floating-layer surface (menus, popovers, tooltips, modals, drawers) — the one SURFACE
|
|
26
|
+
// stop the derive engine has no law for, so it stays a hand-picked hex/color-mix().
|
|
27
|
+
title: "Surface",
|
|
28
|
+
items: [{ var: "--vx-surface-overlay", label: "Overlay" }]
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
const COLOR_VARS = COLOR_GROUPS.flatMap((g) => g.items.map((i) => i.var));
|
|
32
|
+
const MANAGED_VARS = [...COLOR_VARS, AREA_TOP_VAR, AREA_BOTTOM_VAR];
|
|
33
|
+
const KEY = "basalt-theme-lab";
|
|
34
|
+
function loadOverrides() {
|
|
35
|
+
if (typeof document === "undefined") return {};
|
|
36
|
+
try {
|
|
37
|
+
const raw = localStorage.getItem(KEY);
|
|
38
|
+
return raw ? JSON.parse(raw) : {};
|
|
39
|
+
} catch {
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function saveOverrides(o) {
|
|
44
|
+
if (typeof document === "undefined") return;
|
|
45
|
+
try {
|
|
46
|
+
localStorage.setItem(KEY, JSON.stringify(o));
|
|
47
|
+
} catch {
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function applyOverrides(o) {
|
|
51
|
+
if (typeof document === "undefined") return;
|
|
52
|
+
const el = document.documentElement;
|
|
53
|
+
for (const v of MANAGED_VARS) el.style.removeProperty(v);
|
|
54
|
+
for (const [k, val] of Object.entries(o)) {
|
|
55
|
+
if (val) el.style.setProperty(k, val);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function readVar(name) {
|
|
59
|
+
if (typeof document === "undefined") return "";
|
|
60
|
+
const raw = getComputedStyle(document.documentElement).getPropertyValue(name).trim();
|
|
61
|
+
if (raw.startsWith("#")) return raw;
|
|
62
|
+
if (!raw) return "";
|
|
63
|
+
const probe = document.createElement("span");
|
|
64
|
+
probe.style.display = "none";
|
|
65
|
+
probe.style.color = `var(${name})`;
|
|
66
|
+
document.body.appendChild(probe);
|
|
67
|
+
const computed = getComputedStyle(probe).color;
|
|
68
|
+
probe.remove();
|
|
69
|
+
const channels = computed.match(/[\d.]+/g);
|
|
70
|
+
if (!channels || channels.length < 3) return raw;
|
|
71
|
+
const hex = channels.slice(0, 3).map((c) => Math.round(Number(c)).toString(16).padStart(2, "0")).join("");
|
|
72
|
+
return `#${hex}`;
|
|
73
|
+
}
|
|
74
|
+
export {
|
|
75
|
+
AREA_BOTTOM_VAR,
|
|
76
|
+
AREA_TOP_VAR,
|
|
77
|
+
COLOR_GROUPS,
|
|
78
|
+
applyOverrides,
|
|
79
|
+
loadOverrides,
|
|
80
|
+
readVar,
|
|
81
|
+
saveOverrides
|
|
82
|
+
};
|
|
@@ -1,49 +1,10 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
+
import { applyOverrides, AREA_BOTTOM_VAR, AREA_TOP_VAR, COLOR_GROUPS, loadOverrides, readVar, saveOverrides } from './boot.js';
|
|
3
|
+
import type { ColorGroup, ColorTunable, Overrides } from './boot.js';
|
|
2
4
|
export { DeriveControls } from './derive-controls.js';
|
|
3
5
|
export type { DeriveControlsProps } from './derive-controls.js';
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
label: string;
|
|
7
|
-
};
|
|
8
|
-
export type ColorGroup = {
|
|
9
|
-
title: string;
|
|
10
|
-
items: ColorTunable[];
|
|
11
|
-
};
|
|
12
|
-
export type Overrides = Record<string, string>;
|
|
13
|
-
/** Gradient strength knobs (percent values, theme-independent). */
|
|
14
|
-
export declare const AREA_TOP_VAR = "--vx-area-top";
|
|
15
|
-
export declare const AREA_BOTTOM_VAR = "--vx-area-bottom";
|
|
16
|
-
/**
|
|
17
|
-
* Structural `--vx-*` vars worth tuning by eye — the ones `tokens/palette.ts` hand-authors and
|
|
18
|
-
* that never move with the derive config (ColorInput is hex-only, so `rgba()`/`color-mix()` chrome
|
|
19
|
-
* vars like `--vx-axis` / `--vx-grid` are intentionally omitted regardless).
|
|
20
|
-
*
|
|
21
|
-
* Identity/color tuning lives exclusively in {@link DeriveControls} (one accent seed + bounded
|
|
22
|
-
* knobs, `tokens/derive.ts`) — every `--vx-*` var GENERATED from that config (the accent family,
|
|
23
|
-
* the 12 categorical fills, the ink ramp, most of the surface stops, the `good`/`warn`/`bad`
|
|
24
|
-
* status/semantic hues) has been pruned from here on purpose: hand-tuning a hex the derive engine
|
|
25
|
-
* regenerates on every render is a dead knob. What remains is a low-level inspector for the
|
|
26
|
-
* genuinely NON-derived structural tokens only.
|
|
27
|
-
*
|
|
28
|
-
* Generic by design: argo's domain series (Health / Strength / Walking) are NOT shipped — a
|
|
29
|
-
* consumer passes its own series groups to {@link ThemeLabControls} via the `groups` prop.
|
|
30
|
-
*/
|
|
31
|
-
export declare const COLOR_GROUPS: ColorGroup[];
|
|
32
|
-
export declare function loadOverrides(): Overrides;
|
|
33
|
-
export declare function saveOverrides(o: Overrides): void;
|
|
34
|
-
/** Clears every managed var, then re-applies the given overrides. The single mutation point. */
|
|
35
|
-
export declare function applyOverrides(o: Overrides): void;
|
|
36
|
-
/**
|
|
37
|
-
* Current value of a color var as a hex `ColorInput` can display (reflects any active override or
|
|
38
|
-
* the stylesheet default).
|
|
39
|
-
*
|
|
40
|
-
* Reading the custom property directly is not enough: an UNREGISTERED custom property computes to
|
|
41
|
-
* its literal source text, so a `color-mix()`-derived token (every surface — see `SURFACE` in
|
|
42
|
-
* tokens/palette.ts) comes back as the string `"color-mix(in srgb, #3f3f46 50%, #27272a)"`, which
|
|
43
|
-
* ColorInput cannot parse — it renders an empty swatch. Painting the var onto a probe element and
|
|
44
|
-
* reading a real COLOR property instead forces the browser to resolve it to an rgb triple.
|
|
45
|
-
*/
|
|
46
|
-
export declare function readVar(name: string): string;
|
|
6
|
+
export { applyOverrides, AREA_BOTTOM_VAR, AREA_TOP_VAR, COLOR_GROUPS, loadOverrides, readVar, saveOverrides, };
|
|
7
|
+
export type { ColorGroup, ColorTunable, Overrides };
|
|
47
8
|
export type ThemeLabControlsProps = {
|
|
48
9
|
/** Color groups to render as tunable swatches. Defaults to the framework {@link COLOR_GROUPS}. */
|
|
49
10
|
groups?: ColorGroup[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme-lab/index.tsx"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme-lab/index.tsx"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,EACL,cAAc,EACd,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,OAAO,EACP,aAAa,EACd,MAAM,QAAQ,CAAA;AACf,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAI5D,OAAO,EACL,cAAc,EACd,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,OAAO,EACP,aAAa,GACd,CAAA;AACD,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,CAAA;AAsBnD,MAAM,MAAM,qBAAqB,GAAG;IAClC,kGAAkG;IAClG,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,yFAAyF;IACzF,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,MAAqB,EACrB,MAAM,EACN,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,+BA8GvB"}
|