basalt-ui 1.27.0 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +28 -35
- package/CHANGELOG.md +72 -0
- package/MIGRATING.md +759 -22
- package/README.md +56 -69
- package/agent/rules/basalt-batteries.md +60 -168
- package/agent/rules/basalt-charts.md +56 -75
- package/agent/rules/basalt-controls.md +81 -87
- package/agent/rules/basalt-mantine.md +64 -98
- package/agent/rules/basalt-state.md +42 -60
- package/agent/rules/basalt-tokens.md +46 -67
- package/agent/skills/basalt-app/SKILL.md +2 -0
- package/agent/templates/CLAUDE-block.md.tpl +14 -14
- package/configs/oxlint-plugin.js +964 -33
- package/configs/oxlint-plugin.test.ts +902 -2
- package/configs/oxlint.json +6 -0
- package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
- package/dist/agent/ai-sdk-transport.js +7 -4
- package/dist/agent/coalesce.d.ts.map +1 -1
- package/dist/agent/coalesce.js +2 -1
- package/dist/agent/merge.d.ts.map +1 -1
- package/dist/agent/merge.js +2 -1
- package/dist/agent/part-list.d.ts.map +1 -1
- package/dist/agent/part-list.js +2 -0
- package/dist/agent/stick-to-bottom.d.ts +3 -6
- package/dist/agent/stick-to-bottom.d.ts.map +1 -1
- package/dist/agent/stick-to-bottom.js +6 -3
- package/dist/agent/transport.d.ts +13 -2
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/use-agent-thread-runs.d.ts +12 -1
- package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
- package/dist/agent/use-agent-thread-runs.js +20 -6
- package/dist/agent-chat/composer.d.ts +6 -2
- package/dist/agent-chat/composer.d.ts.map +1 -1
- package/dist/agent-chat/composer.js +49 -33
- package/dist/agent-chat/index.d.ts +1 -1
- package/dist/agent-chat/index.d.ts.map +1 -1
- package/dist/agent-chat/relative-time.d.ts +0 -9
- package/dist/agent-chat/relative-time.d.ts.map +1 -1
- package/dist/agent-chat/relative-time.js +2 -1
- package/dist/agent-chat/thread-detail-panel.d.ts +3 -2
- package/dist/agent-chat/thread-detail-panel.d.ts.map +1 -1
- package/dist/agent-chat/thread-detail-panel.js +9 -6
- package/dist/agent-chat/thread-feed-row.d.ts +32 -6
- package/dist/agent-chat/thread-feed-row.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed-row.js +61 -26
- package/dist/agent-chat/thread-feed.d.ts +13 -2
- package/dist/agent-chat/thread-feed.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed.js +16 -7
- package/dist/agent-chat/thread-message.d.ts +4 -3
- package/dist/agent-chat/thread-message.d.ts.map +1 -1
- package/dist/agent-chat/thread-message.js +70 -31
- package/dist/agent-chat/thread-outcome-card.d.ts +3 -2
- package/dist/agent-chat/thread-outcome-card.d.ts.map +1 -1
- package/dist/agent-chat/thread-outcome-card.js +9 -2
- package/dist/agent-chat/thread-workspace.d.ts +7 -2
- package/dist/agent-chat/thread-workspace.d.ts.map +1 -1
- package/dist/agent-chat/thread-workspace.js +62 -29
- package/dist/agent-chat/tool-chip.d.ts +3 -2
- package/dist/agent-chat/tool-chip.d.ts.map +1 -1
- package/dist/agent-chat/tool-chip.js +7 -2
- package/dist/agent-chat/virtualize.d.ts +39 -0
- package/dist/agent-chat/virtualize.d.ts.map +1 -1
- package/dist/agent-chat/virtualize.js +15 -0
- package/dist/charts/hooks/useBandPlot.d.ts.map +1 -1
- package/dist/charts/hooks/useBandPlot.js +15 -8
- package/dist/charts/index.d.ts +11 -10
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/index.js +53 -9
- package/dist/charts/kinds/BandStrip.d.ts +10 -7
- package/dist/charts/kinds/BandStrip.d.ts.map +1 -1
- package/dist/charts/kinds/BandStrip.js +12 -7
- package/dist/charts/kinds/Bars.d.ts +13 -9
- package/dist/charts/kinds/Bars.d.ts.map +1 -1
- package/dist/charts/kinds/Bars.js +37 -11
- package/dist/charts/kinds/Donut.d.ts +6 -5
- package/dist/charts/kinds/Donut.d.ts.map +1 -1
- package/dist/charts/kinds/Donut.js +19 -2
- package/dist/charts/kinds/DualPanel.d.ts +9 -6
- package/dist/charts/kinds/DualPanel.d.ts.map +1 -1
- package/dist/charts/kinds/DualPanel.js +37 -9
- package/dist/charts/kinds/Heatmap.d.ts +10 -6
- package/dist/charts/kinds/Heatmap.d.ts.map +1 -1
- package/dist/charts/kinds/Heatmap.js +58 -31
- package/dist/charts/kinds/MirroredBars.d.ts +6 -5
- package/dist/charts/kinds/MirroredBars.d.ts.map +1 -1
- package/dist/charts/kinds/MirroredBars.js +9 -2
- package/dist/charts/kinds/MultiLine.d.ts +11 -6
- package/dist/charts/kinds/MultiLine.d.ts.map +1 -1
- package/dist/charts/kinds/MultiLine.js +24 -15
- package/dist/charts/kinds/StackedArea.d.ts +18 -8
- package/dist/charts/kinds/StackedArea.d.ts.map +1 -1
- package/dist/charts/kinds/StackedArea.js +29 -4
- package/dist/charts/kinds/ZonedLine.d.ts +13 -11
- package/dist/charts/kinds/ZonedLine.d.ts.map +1 -1
- package/dist/charts/kinds/ZonedLine.js +33 -23
- package/dist/charts/layout/auto-margin.d.ts +65 -8
- package/dist/charts/layout/auto-margin.d.ts.map +1 -1
- package/dist/charts/layout/auto-margin.js +45 -10
- package/dist/charts/layout/log-ticks.d.ts +27 -0
- package/dist/charts/layout/log-ticks.d.ts.map +1 -0
- package/dist/charts/layout/log-ticks.js +42 -0
- package/dist/charts/primitives/Axes.d.ts +32 -4
- package/dist/charts/primitives/Axes.d.ts.map +1 -1
- package/dist/charts/primitives/Axes.js +49 -7
- package/dist/charts/primitives/CartesianChart.d.ts +45 -7
- package/dist/charts/primitives/CartesianChart.d.ts.map +1 -1
- package/dist/charts/primitives/CartesianChart.js +86 -28
- package/dist/charts/primitives/ChartCard.d.ts +45 -4
- package/dist/charts/primitives/ChartCard.d.ts.map +1 -1
- package/dist/charts/primitives/ChartCard.js +70 -21
- package/dist/charts/primitives/ChartFrame.d.ts +30 -4
- package/dist/charts/primitives/ChartFrame.d.ts.map +1 -1
- package/dist/charts/primitives/ChartFrame.js +52 -15
- package/dist/charts/primitives/ChartLegend.d.ts +13 -2
- package/dist/charts/primitives/ChartLegend.d.ts.map +1 -1
- package/dist/charts/primitives/ChartLegend.js +33 -13
- package/dist/charts/primitives/ChartPending.d.ts +85 -6
- package/dist/charts/primitives/ChartPending.d.ts.map +1 -1
- package/dist/charts/primitives/ChartPending.js +100 -6
- package/dist/charts/primitives/ChartTooltip.d.ts +7 -0
- package/dist/charts/primitives/ChartTooltip.d.ts.map +1 -1
- package/dist/charts/primitives/ChartTooltip.js +18 -5
- package/dist/charts/primitives/Crosshair.d.ts +3 -0
- package/dist/charts/primitives/Crosshair.d.ts.map +1 -1
- package/dist/charts/primitives/Crosshair.js +3 -1
- package/dist/charts/primitives/chart-frame-layout.d.ts +95 -0
- package/dist/charts/primitives/chart-frame-layout.d.ts.map +1 -0
- package/dist/charts/primitives/chart-frame-layout.js +89 -0
- package/dist/charts/primitives/chart-tier.d.ts +16 -0
- package/dist/charts/primitives/chart-tier.d.ts.map +1 -0
- package/dist/charts/primitives/chart-tier.js +20 -0
- package/dist/charts/series.d.ts +55 -1
- package/dist/charts/series.d.ts.map +1 -1
- package/dist/charts/series.js +27 -1
- package/dist/charts/sparklines/BarSparkline.d.ts +3 -3
- package/dist/charts/sparklines/BarSparkline.d.ts.map +1 -1
- package/dist/charts/sparklines/BarSparkline.js +9 -3
- package/dist/charts/sparklines/LineSparkline.d.ts +3 -3
- package/dist/charts/sparklines/LineSparkline.d.ts.map +1 -1
- package/dist/charts/sparklines/LineSparkline.js +15 -3
- package/dist/charts/sparklines/index.d.ts +2 -2
- package/dist/charts/sparklines/index.d.ts.map +1 -1
- package/dist/charts/utils/format.d.ts +7 -4
- package/dist/charts/utils/format.d.ts.map +1 -1
- package/dist/charts/utils/format.js +17 -24
- package/dist/charts/utils/ticks.d.ts +81 -2
- package/dist/charts/utils/ticks.d.ts.map +1 -1
- package/dist/charts/utils/ticks.js +54 -4
- package/dist/cli/audit-allows.d.ts +24 -0
- package/dist/cli/audit-allows.d.ts.map +1 -0
- package/dist/cli/audit-allows.js +240 -0
- package/dist/cli/check-theme.d.ts +10 -0
- package/dist/cli/check-theme.d.ts.map +1 -0
- package/dist/cli/check-theme.js +139 -0
- package/dist/cli/doctor.d.ts +47 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +197 -0
- package/dist/cli/guard-hook.d.ts +9 -0
- package/dist/cli/guard-hook.d.ts.map +1 -0
- package/dist/cli/guard-hook.js +93 -0
- package/dist/cli/help.d.ts +9 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +53 -0
- package/dist/cli/index.d.ts +360 -270
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +85 -1901
- package/dist/cli/init.d.ts +4 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +165 -0
- package/dist/cli/sync.d.ts +43 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +206 -0
- package/dist/cli/tokens-css.d.ts +51 -0
- package/dist/cli/tokens-css.d.ts.map +1 -0
- package/dist/cli/tokens-css.js +165 -0
- package/dist/commands/ShortcutsHelp.d.ts +3 -2
- package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
- package/dist/commands/ShortcutsHelp.js +8 -2
- package/dist/commands/define-commands.d.ts.map +1 -1
- package/dist/commands/define-commands.js +2 -2
- package/dist/commands/define-overlays.d.ts +102 -0
- package/dist/commands/define-overlays.d.ts.map +1 -1
- package/dist/commands/define-overlays.js +102 -2
- package/dist/commands/index.d.ts +12 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +9 -1
- package/dist/commands/overlays-mount.d.ts +16 -11
- package/dist/commands/overlays-mount.d.ts.map +1 -1
- package/dist/commands/overlays-mount.js +23 -14
- package/dist/commands/shell-bridge.d.ts +57 -0
- package/dist/commands/shell-bridge.d.ts.map +1 -0
- package/dist/commands/shell-bridge.js +32 -0
- package/dist/common/errors.d.ts +69 -0
- package/dist/common/errors.d.ts.map +1 -0
- package/dist/common/errors.js +64 -0
- package/dist/common/index.d.ts +17 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +35 -0
- package/dist/common/is-dev.d.ts +3 -0
- package/dist/common/is-dev.d.ts.map +1 -0
- package/dist/common/is-dev.js +6 -0
- package/dist/{motion/index.d.ts → common/motion.d.ts} +1 -1
- package/dist/common/motion.d.ts.map +1 -0
- package/dist/common/props.d.ts +63 -0
- package/dist/common/props.d.ts.map +1 -0
- package/dist/common/props.js +6 -0
- package/dist/common/query-state-like.d.ts +43 -0
- package/dist/common/query-state-like.d.ts.map +1 -0
- package/dist/common/query-state-like.js +20 -0
- package/dist/common/refs.d.ts +29 -0
- package/dist/common/refs.d.ts.map +1 -0
- package/dist/common/refs.js +29 -0
- package/dist/common/scroll-parent.d.ts +23 -0
- package/dist/common/scroll-parent.d.ts.map +1 -0
- package/dist/common/scroll-parent.js +21 -0
- package/dist/common/validate.d.ts +38 -0
- package/dist/common/validate.d.ts.map +1 -0
- package/dist/common/validate.js +36 -0
- package/dist/content/article-layout.module.css +11 -4
- package/dist/content/callout.d.ts +8 -4
- package/dist/content/callout.d.ts.map +1 -1
- package/dist/content/callout.js +15 -8
- package/dist/content/guide.d.ts +5 -4
- package/dist/content/guide.d.ts.map +1 -1
- package/dist/content/guide.js +13 -4
- package/dist/content/heading-anchor.d.ts +24 -2
- package/dist/content/heading-anchor.d.ts.map +1 -1
- package/dist/content/heading-anchor.js +23 -9
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/markdown.d.ts +3 -4
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +3 -4
- package/dist/content/prose.module.css +9 -7
- package/dist/content/reading-progress.d.ts +10 -4
- package/dist/content/reading-progress.d.ts.map +1 -1
- package/dist/content/reading-progress.js +26 -10
- package/dist/content/slug.d.ts +4 -0
- package/dist/content/slug.d.ts.map +1 -1
- package/dist/content/toc.d.ts +11 -0
- package/dist/content/toc.d.ts.map +1 -1
- package/dist/content/toc.js +23 -10
- package/dist/controls/actions.d.ts +50 -7
- package/dist/controls/actions.d.ts.map +1 -1
- package/dist/controls/actions.js +39 -8
- package/dist/controls/compare-filter.d.ts +3 -2
- package/dist/controls/compare-filter.d.ts.map +1 -1
- package/dist/controls/compare-filter.js +17 -2
- package/dist/controls/control-group.d.ts +3 -3
- package/dist/controls/control-group.d.ts.map +1 -1
- package/dist/controls/control-group.js +9 -2
- package/dist/controls/controls.module.css +169 -186
- package/dist/controls/controls.module.css.d.ts +9 -11
- package/dist/controls/enum-filter.d.ts +3 -2
- package/dist/controls/enum-filter.d.ts.map +1 -1
- package/dist/controls/enum-filter.js +28 -13
- package/dist/controls/filter-context.d.ts +8 -4
- package/dist/controls/filter-context.d.ts.map +1 -1
- package/dist/controls/filter-pill.d.ts +3 -3
- package/dist/controls/filter-pill.d.ts.map +1 -1
- package/dist/controls/filter-pill.js +4 -1
- package/dist/controls/filter-set.d.ts +3 -2
- package/dist/controls/filter-set.d.ts.map +1 -1
- package/dist/controls/filter-set.js +66 -41
- package/dist/controls/filter-sheet.d.ts +20 -80
- package/dist/controls/filter-sheet.d.ts.map +1 -1
- package/dist/controls/filter-sheet.js +9 -95
- package/dist/controls/index.d.ts +2 -0
- package/dist/controls/index.d.ts.map +1 -1
- package/dist/controls/index.js +4 -0
- package/dist/controls/multi-select-filter.d.ts +18 -2
- package/dist/controls/multi-select-filter.d.ts.map +1 -1
- package/dist/controls/multi-select-filter.js +122 -20
- package/dist/controls/number-filter.d.ts +7 -5
- package/dist/controls/number-filter.d.ts.map +1 -1
- package/dist/controls/number-filter.js +40 -11
- package/dist/controls/panel-row.d.ts +132 -0
- package/dist/controls/panel-row.d.ts.map +1 -0
- package/dist/controls/panel-row.js +173 -0
- package/dist/controls/panel-row.module.css +86 -0
- package/dist/controls/panel-row.module.css.d.ts +13 -0
- package/dist/controls/range-filter.d.ts +2 -1
- package/dist/controls/range-filter.d.ts.map +1 -1
- package/dist/controls/range-filter.js +57 -35
- package/dist/controls/search-filter.d.ts +3 -2
- package/dist/controls/search-filter.d.ts.map +1 -1
- package/dist/controls/search-filter.js +25 -10
- package/dist/controls/select-filter.d.ts +2 -1
- package/dist/controls/select-filter.d.ts.map +1 -1
- package/dist/controls/select-filter.js +4 -0
- package/dist/controls/slider-control.d.ts +36 -0
- package/dist/controls/slider-control.d.ts.map +1 -0
- package/dist/controls/slider-control.js +64 -0
- package/dist/controls/sync-button.d.ts +3 -2
- package/dist/controls/sync-button.d.ts.map +1 -1
- package/dist/controls/sync-button.js +16 -3
- package/dist/controls/toggle-filter.d.ts +3 -2
- package/dist/controls/toggle-filter.d.ts.map +1 -1
- package/dist/controls/toggle-filter.js +28 -11
- package/dist/controls/view-tabs.d.ts +3 -2
- package/dist/controls/view-tabs.d.ts.map +1 -1
- package/dist/controls/view-tabs.js +43 -11
- package/dist/controls-dates/date-range-picker.d.ts +1 -1
- package/dist/controls-dates/date-range-picker.d.ts.map +1 -1
- package/dist/controls-dates/date-range-picker.js +6 -1
- package/dist/dashboard/delta-badge.d.ts +18 -6
- package/dist/dashboard/delta-badge.d.ts.map +1 -1
- package/dist/dashboard/delta-badge.js +33 -1
- package/dist/dashboard/empty-state.d.ts +8 -4
- package/dist/dashboard/empty-state.d.ts.map +1 -1
- package/dist/dashboard/empty-state.js +36 -6
- package/dist/dashboard/index.d.ts +9 -5
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +13 -1
- package/dist/dashboard/query-state.d.ts +39 -27
- package/dist/dashboard/query-state.d.ts.map +1 -1
- package/dist/dashboard/query-state.js +109 -58
- package/dist/dashboard/section.d.ts +58 -0
- package/dist/dashboard/section.d.ts.map +1 -0
- package/dist/dashboard/section.js +118 -0
- package/dist/{section → dashboard}/section.module.css +11 -0
- package/dist/dashboard/settings-section.d.ts +19 -9
- package/dist/dashboard/settings-section.d.ts.map +1 -1
- package/dist/dashboard/settings-section.js +75 -26
- package/dist/dashboard/stat-card.d.ts +44 -38
- package/dist/dashboard/stat-card.d.ts.map +1 -1
- package/dist/dashboard/stat-card.js +56 -43
- package/dist/dashboard/stat-card.module.css +46 -31
- package/dist/dashboard/stat-card.module.css.d.ts +1 -0
- package/dist/dashboard/stat-group.d.ts +41 -0
- package/dist/dashboard/stat-group.d.ts.map +1 -0
- package/dist/dashboard/stat-group.js +30 -0
- package/dist/dashboard/stat-group.module.css +66 -0
- package/dist/dashboard/stat-group.module.css.d.ts +8 -0
- package/dist/dashboard/widget-grid.d.ts +27 -0
- package/dist/dashboard/widget-grid.d.ts.map +1 -0
- package/dist/dashboard/widget-grid.js +41 -0
- package/dist/dashboard/widget-grid.module.css +53 -0
- package/dist/dashboard/widget-grid.module.css.d.ts +9 -0
- package/dist/dashboard/widget-header.d.ts +132 -0
- package/dist/dashboard/widget-header.d.ts.map +1 -0
- package/dist/{widget-header → dashboard}/widget-header.js +42 -27
- package/dist/{widget-header → dashboard}/widget-header.module.css +72 -7
- package/dist/data/data-table.d.ts +151 -12
- package/dist/data/data-table.d.ts.map +1 -1
- package/dist/data/data-table.js +385 -139
- package/dist/data/data-table.module.css +64 -0
- package/dist/data/data-table.module.css.d.ts +11 -0
- package/dist/data/query-branch.d.ts +28 -0
- package/dist/data/query-branch.d.ts.map +1 -0
- package/dist/data/query-branch.js +10 -0
- package/dist/data/table.d.ts +2 -2
- package/dist/data/table.d.ts.map +1 -1
- package/dist/data/table.js +2 -16
- package/dist/data/virtual-list.d.ts +65 -6
- package/dist/data/virtual-list.d.ts.map +1 -1
- package/dist/data/virtual-list.js +89 -38
- package/dist/data/virtual.d.ts +4 -4
- package/dist/data/virtual.d.ts.map +1 -1
- package/dist/dev-dock.d.ts +28 -0
- package/dist/dev-dock.d.ts.map +1 -0
- package/dist/dev-dock.js +85 -0
- package/dist/format/date.d.ts +62 -0
- package/dist/format/date.d.ts.map +1 -0
- package/dist/format/date.js +106 -0
- package/dist/format/index.d.ts +39 -0
- package/dist/format/index.d.ts.map +1 -0
- package/dist/format/index.js +54 -0
- package/dist/format/measure.d.ts +15 -0
- package/dist/format/measure.d.ts.map +1 -0
- package/dist/format/measure.js +16 -0
- package/dist/format/number.d.ts +69 -0
- package/dist/format/number.d.ts.map +1 -0
- package/dist/format/number.js +62 -0
- package/dist/format/shared.d.ts +27 -0
- package/dist/format/shared.d.ts.map +1 -0
- package/dist/format/shared.js +29 -0
- package/dist/forms/FormErrorSummary.d.ts +4 -3
- package/dist/forms/FormErrorSummary.d.ts.map +1 -1
- package/dist/forms/FormErrorSummary.js +6 -4
- package/dist/forms/create-form.d.ts +2 -2
- package/dist/forms/field.d.ts +33 -9
- package/dist/forms/field.d.ts.map +1 -1
- package/dist/forms/field.js +7 -6
- package/dist/forms/form-layout.d.ts +142 -0
- package/dist/forms/form-layout.d.ts.map +1 -0
- package/dist/forms/form-layout.js +110 -0
- package/dist/forms/form-layout.module.css +145 -0
- package/dist/forms/form-layout.module.css.d.ts +20 -0
- package/dist/forms/form-state.d.ts +42 -0
- package/dist/forms/form-state.d.ts.map +1 -0
- package/dist/forms/form-state.js +26 -0
- package/dist/forms/index.d.ts +22 -6
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +19 -4
- package/dist/forms/use-field-array.d.ts +60 -0
- package/dist/forms/use-field-array.d.ts.map +1 -0
- package/dist/forms/use-field-array.js +20 -0
- package/dist/forms/use-form-draft.d.ts +25 -10
- package/dist/forms/use-form-draft.d.ts.map +1 -1
- package/dist/forms/use-form-draft.js +55 -18
- package/dist/forms/use-form-submit.d.ts +88 -0
- package/dist/forms/use-form-submit.d.ts.map +1 -0
- package/dist/forms/use-form-submit.js +63 -0
- package/dist/guard/index.d.ts +2 -9
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +38 -28
- package/dist/guard/types.d.ts +8 -10
- package/dist/guard/types.d.ts.map +1 -1
- package/dist/index.d.ts +21 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -6
- package/dist/notifications/bell.d.ts +3 -2
- package/dist/notifications/bell.d.ts.map +1 -1
- package/dist/notifications/bell.js +73 -56
- package/dist/notifications/center.d.ts +15 -4
- package/dist/notifications/center.d.ts.map +1 -1
- package/dist/notifications/center.js +5 -2
- package/dist/notifications/define-notifications.d.ts +56 -14
- package/dist/notifications/define-notifications.d.ts.map +1 -1
- package/dist/notifications/define-notifications.js +2 -1
- package/dist/notifications/index.d.ts +11 -7
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +5 -3
- package/dist/notifications/mount-guard.d.ts +8 -0
- package/dist/notifications/mount-guard.d.ts.map +1 -0
- package/dist/notifications/mount-guard.js +19 -0
- package/dist/notifications/notify.d.ts +58 -1
- package/dist/notifications/notify.d.ts.map +1 -1
- package/dist/notifications/notify.js +46 -2
- package/dist/notifications/store.d.ts +7 -0
- package/dist/notifications/store.d.ts.map +1 -1
- package/dist/provider/connectivity-indicator.d.ts +13 -0
- package/dist/provider/connectivity-indicator.d.ts.map +1 -0
- package/dist/{connectivity → provider}/connectivity-indicator.js +3 -1
- package/dist/{connectivity → provider}/connectivity-provider.d.ts +1 -1
- package/dist/provider/connectivity-provider.d.ts.map +1 -0
- package/dist/{connectivity → provider}/connectivity-provider.js +4 -1
- package/dist/{connectivity/types.d.ts → provider/connectivity-types.d.ts} +3 -3
- package/dist/provider/connectivity-types.d.ts.map +1 -0
- package/dist/provider/error-fallback.module.css +21 -0
- package/dist/provider/error-fallback.module.css.d.ts +9 -0
- package/dist/provider/index.d.ts +29 -13
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +82 -34
- package/dist/provider/lab-theme.d.ts.map +1 -1
- package/dist/provider/lab-theme.js +2 -1
- package/dist/provider/use-connectivity.d.ts +3 -0
- package/dist/provider/use-connectivity.d.ts.map +1 -0
- package/dist/query-client.d.ts +63 -0
- package/dist/query-client.d.ts.map +1 -0
- package/dist/query-client.js +33 -0
- package/dist/{query/devtools.d.ts → query-devtools.d.ts} +2 -2
- package/dist/query-devtools.d.ts.map +1 -0
- package/dist/{query/devtools.js → query-devtools.js} +1 -0
- package/dist/register.d.ts +17 -3
- package/dist/register.d.ts.map +1 -1
- package/dist/router-tanstack/index.d.ts +4 -7
- package/dist/router-tanstack/index.d.ts.map +1 -1
- package/dist/router-tanstack/index.js +1 -9
- package/dist/router-tanstack/nav.d.ts +1 -1
- package/dist/router-tanstack/nav.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.d.ts +3 -6
- package/dist/router-tanstack/search-store.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.js +1 -1
- package/dist/router-tanstack/use-nav.d.ts +1 -1
- package/dist/router-tanstack/use-nav.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.js +1 -1
- package/dist/shell/account-types.d.ts +5 -2
- package/dist/shell/account-types.d.ts.map +1 -1
- package/dist/shell/app-brand.d.ts +13 -0
- package/dist/shell/app-brand.d.ts.map +1 -0
- package/dist/shell/app-brand.js +94 -0
- package/dist/shell/app-brand.module.css +109 -0
- package/dist/shell/app-brand.module.css.d.ts +14 -0
- package/dist/shell/app-breadcrumbs.d.ts +5 -3
- package/dist/shell/app-breadcrumbs.d.ts.map +1 -1
- package/dist/shell/app-breadcrumbs.js +33 -22
- package/dist/shell/app-header.module.css +10 -5
- package/dist/shell/app-main.module.css +118 -0
- package/dist/shell/app-main.module.css.d.ts +11 -0
- package/dist/shell/app-mobile-nav.d.ts +4 -3
- package/dist/shell/app-mobile-nav.d.ts.map +1 -1
- package/dist/shell/app-mobile-nav.js +53 -17
- package/dist/shell/app-mobile-nav.module.css +48 -27
- package/dist/shell/app-mobile-nav.module.css.d.ts +0 -1
- package/dist/shell/app-sidebar-account.d.ts +2 -1
- package/dist/shell/app-sidebar-account.d.ts.map +1 -1
- package/dist/shell/app-sidebar-account.js +57 -22
- package/dist/shell/app-sidebar.d.ts +10 -4
- package/dist/shell/app-sidebar.d.ts.map +1 -1
- package/dist/shell/app-sidebar.js +78 -103
- package/dist/shell/app-sidebar.module.css +63 -96
- package/dist/shell/app-sidebar.module.css.d.ts +0 -5
- package/dist/shell/index.d.ts +24 -10
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +60 -29
- package/dist/shell/isomorphic-layout-effect.d.ts +14 -0
- package/dist/shell/isomorphic-layout-effect.d.ts.map +1 -0
- package/dist/shell/isomorphic-layout-effect.js +5 -0
- package/dist/shell/mobile-nav-model.d.ts +1 -1
- package/dist/shell/mobile-nav-model.d.ts.map +1 -1
- package/dist/shell/mobile-nav-model.js +27 -6
- package/dist/shell/nav-count-badge.d.ts +5 -3
- package/dist/shell/nav-count-badge.d.ts.map +1 -1
- package/dist/shell/nav-count-badge.js +3 -1
- package/dist/{nav/types.d.ts → shell/nav-types.d.ts} +16 -7
- package/dist/shell/nav-types.d.ts.map +1 -0
- package/dist/shell/page-aside.d.ts +43 -0
- package/dist/shell/page-aside.d.ts.map +1 -0
- package/dist/shell/page-aside.js +175 -0
- package/dist/shell/page-aside.module.css +174 -0
- package/dist/shell/page-aside.module.css.d.ts +14 -0
- package/dist/shell/page-bar.d.ts +55 -15
- package/dist/shell/page-bar.d.ts.map +1 -1
- package/dist/shell/page-bar.js +130 -41
- package/dist/shell/page-bar.module.css +107 -13
- package/dist/shell/page-bar.module.css.d.ts +4 -1
- package/dist/shell/page-title.d.ts +14 -0
- package/dist/shell/page-title.d.ts.map +1 -0
- package/dist/shell/page-title.js +25 -0
- package/dist/shell/page-title.module.css +33 -0
- package/dist/shell/page-title.module.css.d.ts +11 -0
- package/dist/shell/sidebar-block-model.d.ts +1 -1
- package/dist/shell/sidebar-block-model.d.ts.map +1 -1
- package/dist/shell/sidebar-blocks.d.ts +1 -1
- package/dist/shell/sidebar-blocks.d.ts.map +1 -1
- package/dist/shell/sidebar-search.d.ts +4 -2
- package/dist/shell/sidebar-search.d.ts.map +1 -1
- package/dist/shell/sidebar-search.js +9 -4
- package/dist/shell/sidebar-search.module.css +1 -1
- package/dist/shell/use-breakpoint.d.ts +11 -0
- package/dist/shell/use-breakpoint.d.ts.map +1 -0
- package/dist/shell/use-breakpoint.js +33 -0
- package/dist/state/fields.d.ts +26 -22
- package/dist/state/fields.d.ts.map +1 -1
- package/dist/state/fields.js +19 -18
- package/dist/state/persisted-or-local.d.ts +9 -0
- package/dist/state/persisted-or-local.d.ts.map +1 -0
- package/dist/state/persisted-or-local.js +24 -0
- package/dist/state.d.ts +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +2 -6
- package/dist/styles.css +36 -0
- package/dist/surfaces.d.ts +25 -47
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +72 -55
- package/dist/theme/ctl-theme.d.ts.map +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +102 -17
- package/dist/theme/nav-link.module.css +37 -26
- package/dist/theme/segmented-control.module.css +22 -0
- package/dist/theme/segmented-control.module.css.d.ts +1 -0
- package/dist/theme/theme-toggle.d.ts +9 -0
- package/dist/theme/theme-toggle.d.ts.map +1 -0
- package/dist/{theme-toggle/index.js → theme/theme-toggle.js} +9 -3
- package/dist/theme-lab/boot.d.ts +66 -0
- package/dist/theme-lab/boot.d.ts.map +1 -0
- package/dist/theme-lab/boot.js +82 -0
- package/dist/theme-lab/index.d.ts +4 -43
- package/dist/theme-lab/index.d.ts.map +1 -1
- package/dist/theme-lab/index.js +9 -69
- package/dist/tokens/index.d.ts +43 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +45 -6
- package/dist/tokens/palette.d.ts +57 -25
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +44 -15
- package/dist/tokens.css +5 -5
- package/llms.txt +11 -26
- package/package.json +54 -34
- package/src/agent/ai-sdk-transport.ts +11 -4
- package/src/agent/coalesce.ts +2 -1
- package/src/agent/merge.ts +2 -1
- package/src/agent/part-list.tsx +2 -0
- package/src/agent/stick-to-bottom.tsx +9 -11
- package/src/agent/transport.ts +15 -2
- package/src/agent/use-agent-thread-runs.ts +65 -15
- package/src/agent-chat/composer.tsx +124 -103
- package/src/agent-chat/index.ts +6 -4
- package/src/agent-chat/relative-time.ts +2 -1
- package/src/agent-chat/thread-detail-panel.tsx +10 -6
- package/src/agent-chat/thread-feed-row.tsx +117 -34
- package/src/agent-chat/thread-feed.tsx +59 -27
- package/src/agent-chat/thread-message.tsx +48 -13
- package/src/agent-chat/thread-outcome-card.tsx +9 -1
- package/src/agent-chat/thread-workspace.tsx +72 -33
- package/src/agent-chat/tool-chip.tsx +8 -2
- package/src/agent-chat/virtualize.ts +48 -0
- package/src/charts/hooks/useBandPlot.ts +26 -8
- package/src/charts/index.ts +46 -14
- package/src/charts/kinds/BandStrip.tsx +36 -14
- package/src/charts/kinds/Bars.tsx +68 -20
- package/src/charts/kinds/Donut.tsx +30 -3
- package/src/charts/kinds/DualPanel.tsx +60 -13
- package/src/charts/kinds/Heatmap.tsx +90 -33
- package/src/charts/kinds/MirroredBars.tsx +21 -3
- package/src/charts/kinds/MultiLine.tsx +61 -18
- package/src/charts/kinds/StackedArea.tsx +77 -6
- package/src/charts/kinds/ZonedLine.tsx +72 -35
- package/src/charts/layout/auto-margin.ts +134 -21
- package/src/charts/layout/log-ticks.ts +90 -0
- package/src/charts/primitives/Axes.tsx +82 -5
- package/src/charts/primitives/CartesianChart.tsx +194 -41
- package/src/charts/primitives/ChartCard.tsx +111 -27
- package/src/charts/primitives/ChartFrame.tsx +111 -26
- package/src/charts/primitives/ChartLegend.tsx +43 -13
- package/src/charts/primitives/ChartPending.tsx +194 -10
- package/src/charts/primitives/ChartTooltip.tsx +37 -5
- package/src/charts/primitives/Crosshair.tsx +6 -3
- package/src/charts/primitives/chart-frame-layout.ts +212 -0
- package/src/charts/primitives/chart-tier.tsx +37 -0
- package/src/charts/series.ts +77 -1
- package/src/charts/sparklines/BarSparkline.tsx +11 -3
- package/src/charts/sparklines/LineSparkline.tsx +18 -4
- package/src/charts/sparklines/index.ts +2 -2
- package/src/charts/utils/format.ts +19 -27
- package/src/charts/utils/ticks.ts +149 -4
- package/src/cli/audit-allows.ts +371 -0
- package/src/cli/check-theme.ts +197 -0
- package/src/cli/doctor.ts +331 -0
- package/src/cli/guard-hook.ts +115 -0
- package/src/cli/help.ts +101 -0
- package/src/cli/index.ts +269 -3434
- package/src/cli/init.ts +247 -0
- package/src/cli/sync.ts +324 -0
- package/src/cli/tokens-css.ts +252 -0
- package/src/commands/ShortcutsHelp.tsx +10 -3
- package/src/commands/define-commands.ts +2 -2
- package/src/commands/define-overlays.ts +216 -1
- package/src/commands/index.ts +22 -1
- package/src/commands/overlays-mount.tsx +63 -31
- package/src/commands/shell-bridge.ts +86 -0
- package/src/common/errors.ts +143 -0
- package/src/common/index.ts +23 -0
- package/src/common/is-dev.ts +4 -0
- package/src/common/props.ts +71 -0
- package/src/common/query-state-like.ts +64 -0
- package/src/common/refs.ts +58 -0
- package/src/common/scroll-parent.ts +42 -0
- package/src/common/validate.ts +94 -0
- package/src/content/article-layout.module.css +11 -4
- package/src/content/callout.tsx +13 -7
- package/src/content/guide.tsx +14 -4
- package/src/content/heading-anchor.tsx +14 -3
- package/src/content/index.ts +2 -0
- package/src/content/markdown.tsx +6 -8
- package/src/content/prose.module.css +9 -7
- package/src/content/reading-progress.tsx +40 -15
- package/src/content/slug.ts +4 -0
- package/src/content/toc.tsx +47 -10
- package/src/controls/actions.tsx +90 -10
- package/src/controls/compare-filter.tsx +20 -3
- package/src/controls/control-group.tsx +11 -4
- package/src/controls/controls.module.css +169 -186
- package/src/controls/controls.module.css.d.ts +9 -11
- package/src/controls/enum-filter.tsx +32 -16
- package/src/controls/filter-context.tsx +14 -6
- package/src/controls/filter-pill.tsx +6 -3
- package/src/controls/filter-set.tsx +32 -13
- package/src/controls/filter-sheet.tsx +44 -194
- package/src/controls/index.ts +7 -0
- package/src/controls/multi-select-filter.tsx +177 -27
- package/src/controls/number-filter.tsx +61 -23
- package/src/controls/panel-row.module.css +86 -0
- package/src/controls/panel-row.module.css.d.ts +13 -0
- package/src/controls/panel-row.tsx +392 -0
- package/src/controls/range-filter.tsx +76 -39
- package/src/controls/search-filter.tsx +30 -12
- package/src/controls/select-filter.tsx +11 -1
- package/src/controls/slider-control.tsx +159 -0
- package/src/controls/sync-button.tsx +13 -3
- package/src/controls/toggle-filter.tsx +36 -16
- package/src/controls/view-tabs.tsx +63 -11
- package/src/controls-dates/date-range-picker.tsx +8 -1
- package/src/dashboard/delta-badge.tsx +75 -4
- package/src/dashboard/empty-state.tsx +67 -24
- package/src/dashboard/index.ts +24 -3
- package/src/dashboard/query-state.tsx +142 -85
- package/src/{section → dashboard}/section.module.css +11 -0
- package/src/dashboard/section.tsx +287 -0
- package/src/dashboard/settings-section.tsx +88 -32
- package/src/dashboard/stat-card.module.css +46 -31
- package/src/dashboard/stat-card.module.css.d.ts +1 -0
- package/src/dashboard/stat-card.tsx +186 -128
- package/src/dashboard/stat-group.module.css +66 -0
- package/src/dashboard/stat-group.module.css.d.ts +8 -0
- package/src/dashboard/stat-group.tsx +74 -0
- package/src/dashboard/widget-grid.module.css +53 -0
- package/src/dashboard/widget-grid.module.css.d.ts +9 -0
- package/src/dashboard/widget-grid.tsx +127 -0
- package/src/{widget-header → dashboard}/widget-header.module.css +72 -7
- package/src/dashboard/widget-header.tsx +292 -0
- package/src/data/data-table.module.css +64 -0
- package/src/data/data-table.module.css.d.ts +11 -0
- package/src/data/data-table.tsx +921 -348
- package/src/data/query-branch.ts +53 -0
- package/src/data/table.ts +9 -23
- package/src/data/virtual-list.tsx +190 -56
- package/src/data/virtual.ts +8 -4
- package/src/dev-dock.tsx +159 -0
- package/src/format/date.ts +184 -0
- package/src/format/index.ts +69 -0
- package/src/format/measure.ts +31 -0
- package/src/format/number.ts +129 -0
- package/src/format/shared.ts +63 -0
- package/src/forms/FormErrorSummary.tsx +13 -6
- package/src/forms/create-form.ts +2 -2
- package/src/forms/field.ts +42 -13
- package/src/forms/form-layout.module.css +145 -0
- package/src/forms/form-layout.module.css.d.ts +20 -0
- package/src/forms/form-layout.tsx +305 -0
- package/src/forms/form-state.tsx +94 -0
- package/src/forms/index.ts +37 -7
- package/src/forms/use-field-array.ts +94 -0
- package/src/forms/use-form-draft.ts +145 -53
- package/src/forms/use-form-submit.ts +199 -0
- package/src/guard/index.ts +99 -70
- package/src/guard/types.ts +7 -10
- package/src/index.ts +92 -19
- package/src/notifications/bell.tsx +18 -4
- package/src/notifications/center.tsx +18 -5
- package/src/notifications/define-notifications.ts +64 -18
- package/src/notifications/index.ts +17 -8
- package/src/notifications/mount-guard.ts +39 -0
- package/src/notifications/notify.tsx +122 -3
- package/src/notifications/store.ts +7 -0
- package/src/{connectivity → provider}/connectivity-indicator.tsx +7 -2
- package/src/{connectivity → provider}/connectivity-provider.tsx +5 -2
- package/src/{connectivity/types.ts → provider/connectivity-types.ts} +5 -2
- package/src/provider/error-fallback.module.css +21 -0
- package/src/provider/error-fallback.module.css.d.ts +9 -0
- package/src/provider/index.tsx +116 -28
- package/src/provider/lab-theme.ts +2 -1
- package/src/{connectivity → provider}/use-connectivity.ts +4 -3
- package/src/query-client.ts +100 -0
- package/src/{query/devtools.tsx → query-devtools.tsx} +6 -4
- package/src/register.ts +20 -4
- package/src/router-tanstack/index.ts +4 -15
- package/src/router-tanstack/nav.ts +1 -1
- package/src/router-tanstack/search-store.ts +6 -14
- package/src/router-tanstack/use-nav.ts +19 -14
- package/src/shell/account-types.ts +5 -2
- package/src/shell/app-brand.module.css +109 -0
- package/src/shell/app-brand.module.css.d.ts +14 -0
- package/src/shell/app-brand.tsx +140 -0
- package/src/shell/app-breadcrumbs.tsx +20 -10
- package/src/shell/app-header.module.css +10 -5
- package/src/shell/app-main.module.css +118 -0
- package/src/shell/app-main.module.css.d.ts +11 -0
- package/src/shell/app-mobile-nav.module.css +48 -27
- package/src/shell/app-mobile-nav.module.css.d.ts +0 -1
- package/src/shell/app-mobile-nav.tsx +71 -12
- package/src/shell/app-sidebar-account.tsx +29 -6
- package/src/shell/app-sidebar.module.css +63 -96
- package/src/shell/app-sidebar.module.css.d.ts +0 -5
- package/src/shell/app-sidebar.tsx +61 -105
- package/src/shell/index.tsx +179 -93
- package/src/shell/isomorphic-layout-effect.ts +14 -0
- package/src/shell/mobile-nav-model.ts +67 -11
- package/src/shell/nav-count-badge.tsx +6 -1
- package/src/{nav/types.ts → shell/nav-types.ts} +15 -6
- package/src/shell/page-aside.module.css +174 -0
- package/src/shell/page-aside.module.css.d.ts +14 -0
- package/src/shell/page-aside.tsx +327 -0
- package/src/shell/page-bar.module.css +107 -13
- package/src/shell/page-bar.module.css.d.ts +4 -1
- package/src/shell/page-bar.tsx +294 -94
- package/src/shell/page-title.module.css +33 -0
- package/src/shell/page-title.module.css.d.ts +11 -0
- package/src/shell/page-title.tsx +57 -0
- package/src/shell/sidebar-block-model.ts +1 -1
- package/src/shell/sidebar-blocks.tsx +1 -1
- package/src/shell/sidebar-search.module.css +1 -1
- package/src/shell/sidebar-search.tsx +13 -4
- package/src/shell/use-breakpoint.ts +73 -0
- package/src/state/fields.ts +50 -53
- package/src/state/persisted-or-local.ts +50 -0
- package/src/state.ts +0 -9
- package/src/styles.css +36 -0
- package/src/surfaces.ts +72 -57
- package/src/theme/ctl-theme.tsx +10 -0
- package/src/theme/index.ts +136 -16
- package/src/theme/nav-link.module.css +37 -26
- package/src/theme/segmented-control.module.css +22 -0
- package/src/theme/segmented-control.module.css.d.ts +1 -0
- package/src/{theme-toggle/index.tsx → theme/theme-toggle.tsx} +11 -4
- package/src/theme-lab/boot.ts +140 -0
- package/src/theme-lab/index.tsx +21 -112
- package/src/tokens/index.ts +60 -6
- package/src/tokens/palette.ts +70 -30
- package/dist/agent/adapter.test.d.ts +0 -2
- package/dist/agent/adapter.test.d.ts.map +0 -1
- package/dist/agent/ai-sdk-transport.test.d.ts +0 -2
- package/dist/agent/ai-sdk-transport.test.d.ts.map +0 -1
- package/dist/agent/coalesce.test.d.ts +0 -2
- package/dist/agent/coalesce.test.d.ts.map +0 -1
- package/dist/agent/foreign.test.d.ts +0 -2
- package/dist/agent/foreign.test.d.ts.map +0 -1
- package/dist/agent/id.test.d.ts +0 -2
- package/dist/agent/id.test.d.ts.map +0 -1
- package/dist/agent/merge.test.d.ts +0 -2
- package/dist/agent/merge.test.d.ts.map +0 -1
- package/dist/agent/part-list.test.d.ts +0 -2
- package/dist/agent/part-list.test.d.ts.map +0 -1
- package/dist/agent/parts.test.d.ts +0 -2
- package/dist/agent/parts.test.d.ts.map +0 -1
- package/dist/agent/thread.test.d.ts +0 -2
- package/dist/agent/thread.test.d.ts.map +0 -1
- package/dist/agent/transport.test.d.ts +0 -2
- package/dist/agent/transport.test.d.ts.map +0 -1
- package/dist/agent/use-agent-stream.test.d.ts +0 -2
- package/dist/agent/use-agent-stream.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.foreign.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.foreign.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.resume.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.resume.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.wedge.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.wedge.test.d.ts.map +0 -1
- package/dist/agent-chat/composer.test.d.ts +0 -2
- package/dist/agent-chat/composer.test.d.ts.map +0 -1
- package/dist/agent-chat/relative-time.test.d.ts +0 -2
- package/dist/agent-chat/relative-time.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed-row.test.d.ts +0 -2
- package/dist/agent-chat/thread-feed-row.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed.test.d.ts +0 -2
- package/dist/agent-chat/thread-feed.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-message.test.d.ts +0 -2
- package/dist/agent-chat/thread-message.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-workspace.test.d.ts +0 -2
- package/dist/agent-chat/thread-workspace.test.d.ts.map +0 -1
- package/dist/agent-chat/tool-chip.test.d.ts +0 -2
- package/dist/agent-chat/tool-chip.test.d.ts.map +0 -1
- package/dist/agent-chat/virtualize.type-guard.test.d.ts +0 -2
- package/dist/agent-chat/virtualize.type-guard.test.d.ts.map +0 -1
- package/dist/charts/cursor/resolve.test.d.ts +0 -2
- package/dist/charts/cursor/resolve.test.d.ts.map +0 -1
- package/dist/charts/cursor/store.test.d.ts +0 -2
- package/dist/charts/cursor/store.test.d.ts.map +0 -1
- package/dist/charts/kinds/BandStrip.test.d.ts +0 -2
- package/dist/charts/kinds/BandStrip.test.d.ts.map +0 -1
- package/dist/charts/kinds/Bars.test.d.ts +0 -2
- package/dist/charts/kinds/Bars.test.d.ts.map +0 -1
- package/dist/charts/kinds/DualPanel.test.d.ts +0 -2
- package/dist/charts/kinds/DualPanel.test.d.ts.map +0 -1
- package/dist/charts/kinds/MirroredBars.test.d.ts +0 -2
- package/dist/charts/kinds/MirroredBars.test.d.ts.map +0 -1
- package/dist/charts/kinds/MultiLine.test.d.ts +0 -2
- package/dist/charts/kinds/MultiLine.test.d.ts.map +0 -1
- package/dist/charts/kinds/StackedArea.test.d.ts +0 -2
- package/dist/charts/kinds/StackedArea.test.d.ts.map +0 -1
- package/dist/charts/kinds/ZonedLine.test.d.ts +0 -2
- package/dist/charts/kinds/ZonedLine.test.d.ts.map +0 -1
- package/dist/charts/layout/auto-margin.test.d.ts +0 -2
- package/dist/charts/layout/auto-margin.test.d.ts.map +0 -1
- package/dist/charts/primitives/CartesianChart.test.d.ts +0 -2
- package/dist/charts/primitives/CartesianChart.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartCard.test.d.ts +0 -2
- package/dist/charts/primitives/ChartCard.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartFrame.test.d.ts +0 -2
- package/dist/charts/primitives/ChartFrame.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartLegend.test.d.ts +0 -2
- package/dist/charts/primitives/ChartLegend.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartTooltip.test.d.ts +0 -2
- package/dist/charts/primitives/ChartTooltip.test.d.ts.map +0 -1
- package/dist/charts/primitives/XZoneRects.test.d.ts +0 -2
- package/dist/charts/primitives/XZoneRects.test.d.ts.map +0 -1
- package/dist/charts/series.test.d.ts +0 -2
- package/dist/charts/series.test.d.ts.map +0 -1
- package/dist/charts/utils/domain.test.d.ts +0 -2
- package/dist/charts/utils/domain.test.d.ts.map +0 -1
- package/dist/charts/utils/measure-text.test.d.ts +0 -2
- package/dist/charts/utils/measure-text.test.d.ts.map +0 -1
- package/dist/cli/check-coverage.test.d.ts +0 -2
- package/dist/cli/check-coverage.test.d.ts.map +0 -1
- package/dist/cli/check-theme.test.d.ts +0 -2
- package/dist/cli/check-theme.test.d.ts.map +0 -1
- package/dist/cli/help.test.d.ts +0 -2
- package/dist/cli/help.test.d.ts.map +0 -1
- package/dist/cli/init-sync.test.d.ts +0 -2
- package/dist/cli/init-sync.test.d.ts.map +0 -1
- package/dist/cli/placement-engine.test.d.ts +0 -2
- package/dist/cli/placement-engine.test.d.ts.map +0 -1
- package/dist/cli/shipped-versions.test.d.ts +0 -2
- package/dist/cli/shipped-versions.test.d.ts.map +0 -1
- package/dist/cli/tarball-parity.test.d.ts +0 -2
- package/dist/cli/tarball-parity.test.d.ts.map +0 -1
- package/dist/cli/template-format.test.d.ts +0 -2
- package/dist/cli/template-format.test.d.ts.map +0 -1
- package/dist/cli/template-ledger.test.d.ts +0 -2
- package/dist/cli/template-ledger.test.d.ts.map +0 -1
- package/dist/cli/tokens-css.test.d.ts +0 -2
- package/dist/cli/tokens-css.test.d.ts.map +0 -1
- package/dist/cli/toolchain-wiring.test.d.ts +0 -2
- package/dist/cli/toolchain-wiring.test.d.ts.map +0 -1
- package/dist/cli/waiver-audit.test.d.ts +0 -2
- package/dist/cli/waiver-audit.test.d.ts.map +0 -1
- package/dist/connectivity/connectivity-indicator.d.ts +0 -11
- package/dist/connectivity/connectivity-indicator.d.ts.map +0 -1
- package/dist/connectivity/connectivity-provider.d.ts.map +0 -1
- package/dist/connectivity/index.d.ts +0 -13
- package/dist/connectivity/index.d.ts.map +0 -1
- package/dist/connectivity/index.js +0 -8
- package/dist/connectivity/types.d.ts.map +0 -1
- package/dist/connectivity/use-connectivity.d.ts +0 -3
- package/dist/connectivity/use-connectivity.d.ts.map +0 -1
- package/dist/content/article-actions.test.d.ts +0 -2
- package/dist/content/article-actions.test.d.ts.map +0 -1
- package/dist/content/article-model.test.d.ts +0 -2
- package/dist/content/article-model.test.d.ts.map +0 -1
- package/dist/content/block-split.test.d.ts +0 -2
- package/dist/content/block-split.test.d.ts.map +0 -1
- package/dist/content/heading-components.test.d.ts +0 -2
- package/dist/content/heading-components.test.d.ts.map +0 -1
- package/dist/content/markdown.test.d.ts +0 -2
- package/dist/content/markdown.test.d.ts.map +0 -1
- package/dist/content/prose.module.css.test.d.ts +0 -2
- package/dist/content/prose.module.css.test.d.ts.map +0 -1
- package/dist/content/sanitize.test.d.ts +0 -2
- package/dist/content/sanitize.test.d.ts.map +0 -1
- package/dist/content/slug.test.d.ts +0 -2
- package/dist/content/slug.test.d.ts.map +0 -1
- package/dist/controls/actions.test.d.ts +0 -2
- package/dist/controls/actions.test.d.ts.map +0 -1
- package/dist/controls/actions.type-guard.test.d.ts +0 -2
- package/dist/controls/actions.type-guard.test.d.ts.map +0 -1
- package/dist/controls/control-group.test.d.ts +0 -2
- package/dist/controls/control-group.test.d.ts.map +0 -1
- package/dist/controls/controls.router.test.d.ts +0 -2
- package/dist/controls/controls.router.test.d.ts.map +0 -1
- package/dist/controls/filter-set.test.d.ts +0 -2
- package/dist/controls/filter-set.test.d.ts.map +0 -1
- package/dist/controls/peer-boundary.test.d.ts +0 -2
- package/dist/controls/peer-boundary.test.d.ts.map +0 -1
- package/dist/controls/props-contract.test.d.ts +0 -2
- package/dist/controls/props-contract.test.d.ts.map +0 -1
- package/dist/controls/range-filter.type-guard.test.d.ts +0 -2
- package/dist/controls/range-filter.type-guard.test.d.ts.map +0 -1
- package/dist/controls/sync-button.test.d.ts +0 -2
- package/dist/controls/sync-button.test.d.ts.map +0 -1
- package/dist/dashboard/query-state.test.d.ts +0 -2
- package/dist/dashboard/query-state.test.d.ts.map +0 -1
- package/dist/dashboard/settings-section.test.d.ts +0 -2
- package/dist/dashboard/settings-section.test.d.ts.map +0 -1
- package/dist/dashboard/stat-card.test.d.ts +0 -2
- package/dist/dashboard/stat-card.test.d.ts.map +0 -1
- package/dist/data/data-table.test.d.ts +0 -2
- package/dist/data/data-table.test.d.ts.map +0 -1
- package/dist/data/index.d.ts +0 -38
- package/dist/data/index.d.ts.map +0 -1
- package/dist/data/index.js +0 -2
- package/dist/guard/check-source.test.d.ts +0 -2
- package/dist/guard/check-source.test.d.ts.map +0 -1
- package/dist/guard/grace.test.d.ts +0 -20
- package/dist/guard/grace.test.d.ts.map +0 -1
- package/dist/guard/guard-hook.test.d.ts +0 -2
- package/dist/guard/guard-hook.test.d.ts.map +0 -1
- package/dist/motion/index.d.ts.map +0 -1
- package/dist/nav/types.d.ts.map +0 -1
- package/dist/notifications/overlay.d.ts +0 -20
- package/dist/notifications/overlay.d.ts.map +0 -1
- package/dist/notifications/overlay.js +0 -12
- package/dist/provider/index.test.d.ts +0 -2
- package/dist/provider/index.test.d.ts.map +0 -1
- package/dist/provider/lab-theme.test.d.ts +0 -2
- package/dist/provider/lab-theme.test.d.ts.map +0 -1
- package/dist/query/devtools.d.ts.map +0 -1
- package/dist/query/error-message.d.ts +0 -41
- package/dist/query/error-message.d.ts.map +0 -1
- package/dist/query/error-message.js +0 -30
- package/dist/query/error-message.test.d.ts +0 -2
- package/dist/query/error-message.test.d.ts.map +0 -1
- package/dist/query/index.d.ts +0 -47
- package/dist/query/index.d.ts.map +0 -1
- package/dist/query/index.js +0 -56
- package/dist/router-tanstack/field.d.ts +0 -14
- package/dist/router-tanstack/field.d.ts.map +0 -1
- package/dist/router-tanstack/field.js +0 -4
- package/dist/router-tanstack/multi-search-param-store.d.ts +0 -43
- package/dist/router-tanstack/multi-search-param-store.d.ts.map +0 -1
- package/dist/router-tanstack/multi-search-param-store.js +0 -30
- package/dist/router-tanstack/multi-search-param-store.test.d.ts +0 -2
- package/dist/router-tanstack/multi-search-param-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/nav.test.d.ts +0 -2
- package/dist/router-tanstack/nav.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-param-store.d.ts +0 -42
- package/dist/router-tanstack/search-param-store.d.ts.map +0 -1
- package/dist/router-tanstack/search-param-store.js +0 -25
- package/dist/router-tanstack/search-param-store.test.d.ts +0 -2
- package/dist/router-tanstack/search-param-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-store.router.test.d.ts +0 -2
- package/dist/router-tanstack/search-store.router.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-store.test.d.ts +0 -2
- package/dist/router-tanstack/search-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/use-nav.test.d.ts +0 -2
- package/dist/router-tanstack/use-nav.test.d.ts.map +0 -1
- package/dist/section/index.d.ts +0 -2
- package/dist/section/index.d.ts.map +0 -1
- package/dist/section/index.js +0 -4
- package/dist/section/section.d.ts +0 -24
- package/dist/section/section.d.ts.map +0 -1
- package/dist/section/section.js +0 -126
- package/dist/section/section.test.d.ts +0 -2
- package/dist/section/section.test.d.ts.map +0 -1
- package/dist/shell/app-mobile-nav.test.d.ts +0 -2
- package/dist/shell/app-mobile-nav.test.d.ts.map +0 -1
- package/dist/shell/app-sidebar.test.d.ts +0 -2
- package/dist/shell/app-sidebar.test.d.ts.map +0 -1
- package/dist/shell/index.test.d.ts +0 -2
- package/dist/shell/index.test.d.ts.map +0 -1
- package/dist/shell/mobile-nav-model.test.d.ts +0 -2
- package/dist/shell/mobile-nav-model.test.d.ts.map +0 -1
- package/dist/shell/page-bar.test.d.ts +0 -2
- package/dist/shell/page-bar.test.d.ts.map +0 -1
- package/dist/state/fields.test.d.ts +0 -2
- package/dist/state/fields.test.d.ts.map +0 -1
- package/dist/state/persisted.test.d.ts +0 -2
- package/dist/state/persisted.test.d.ts.map +0 -1
- package/dist/styles.floor.test.d.ts +0 -2
- package/dist/styles.floor.test.d.ts.map +0 -1
- package/dist/theme/border-coverage.test.d.ts +0 -18
- package/dist/theme/border-coverage.test.d.ts.map +0 -1
- package/dist/theme/contrast.test.d.ts +0 -2
- package/dist/theme/contrast.test.d.ts.map +0 -1
- package/dist/theme/ctl-theme.test.d.ts +0 -2
- package/dist/theme/ctl-theme.test.d.ts.map +0 -1
- package/dist/theme/ctl-tier-coverage.test.d.ts +0 -2
- package/dist/theme/ctl-tier-coverage.test.d.ts.map +0 -1
- package/dist/theme/density-option.test.d.ts +0 -2
- package/dist/theme/density-option.test.d.ts.map +0 -1
- package/dist/theme/density-relations.test.d.ts +0 -2
- package/dist/theme/density-relations.test.d.ts.map +0 -1
- package/dist/theme/derive-theme.test.d.ts +0 -2
- package/dist/theme/derive-theme.test.d.ts.map +0 -1
- package/dist/theme/divider-law.test.d.ts +0 -2
- package/dist/theme/divider-law.test.d.ts.map +0 -1
- package/dist/theme/fonts-option.test.d.ts +0 -2
- package/dist/theme/fonts-option.test.d.ts.map +0 -1
- package/dist/theme/icon-slot.test.d.ts +0 -2
- package/dist/theme/icon-slot.test.d.ts.map +0 -1
- package/dist/theme/layout-rhythm-css.test.d.ts +0 -2
- package/dist/theme/layout-rhythm-css.test.d.ts.map +0 -1
- package/dist/theme/radius-option.test.d.ts +0 -2
- package/dist/theme/radius-option.test.d.ts.map +0 -1
- package/dist/theme/radius.test.d.ts +0 -2
- package/dist/theme/radius.test.d.ts.map +0 -1
- package/dist/theme/shadow-surfaces.test.d.ts +0 -26
- package/dist/theme/shadow-surfaces.test.d.ts.map +0 -1
- package/dist/theme/spacing.test.d.ts +0 -2
- package/dist/theme/spacing.test.d.ts.map +0 -1
- package/dist/theme/use-basalt-spacing.test.d.ts +0 -2
- package/dist/theme/use-basalt-spacing.test.d.ts.map +0 -1
- package/dist/theme-lab/derive-controls.test.d.ts +0 -2
- package/dist/theme-lab/derive-controls.test.d.ts.map +0 -1
- package/dist/theme-lab/derive-state.test.d.ts +0 -2
- package/dist/theme-lab/derive-state.test.d.ts.map +0 -1
- package/dist/theme-lab/theme-lab.test.d.ts +0 -2
- package/dist/theme-lab/theme-lab.test.d.ts.map +0 -1
- package/dist/theme-toggle/index.d.ts +0 -8
- package/dist/theme-toggle/index.d.ts.map +0 -1
- package/dist/tokens/build-fonts-css.test.d.ts +0 -2
- package/dist/tokens/build-fonts-css.test.d.ts.map +0 -1
- package/dist/tokens/build-radius-css.test.d.ts +0 -2
- package/dist/tokens/build-radius-css.test.d.ts.map +0 -1
- package/dist/tokens/chart-margin.test.d.ts +0 -2
- package/dist/tokens/chart-margin.test.d.ts.map +0 -1
- package/dist/tokens/density.test.d.ts +0 -2
- package/dist/tokens/density.test.d.ts.map +0 -1
- package/dist/tokens/derive-radius.test.d.ts +0 -2
- package/dist/tokens/derive-radius.test.d.ts.map +0 -1
- package/dist/tokens/derive.test.d.ts +0 -2
- package/dist/tokens/derive.test.d.ts.map +0 -1
- package/dist/tokens/palette.test.d.ts +0 -2
- package/dist/tokens/palette.test.d.ts.map +0 -1
- package/dist/tokens/text-scale.test.d.ts +0 -2
- package/dist/tokens/text-scale.test.d.ts.map +0 -1
- package/dist/vite-color-mix.test.d.ts +0 -2
- package/dist/vite-color-mix.test.d.ts.map +0 -1
- package/dist/vite.test.d.ts +0 -2
- package/dist/vite.test.d.ts.map +0 -1
- package/dist/widget-header/delta-badge.d.ts +0 -13
- package/dist/widget-header/delta-badge.d.ts.map +0 -1
- package/dist/widget-header/delta-badge.js +0 -29
- package/dist/widget-header/delta-badge.test.d.ts +0 -2
- package/dist/widget-header/delta-badge.test.d.ts.map +0 -1
- package/dist/widget-header/index.d.ts +0 -3
- package/dist/widget-header/index.d.ts.map +0 -1
- package/dist/widget-header/index.js +0 -6
- package/dist/widget-header/no-mantine.test.d.ts +0 -2
- package/dist/widget-header/no-mantine.test.d.ts.map +0 -1
- package/dist/widget-header/widget-header.d.ts +0 -67
- package/dist/widget-header/widget-header.d.ts.map +0 -1
- package/dist/widget-header/widget-header.test.d.ts +0 -2
- package/dist/widget-header/widget-header.test.d.ts.map +0 -1
- package/src/agent/adapter.test.ts +0 -1640
- package/src/agent/ai-sdk-transport.test.ts +0 -658
- package/src/agent/coalesce.test.ts +0 -387
- package/src/agent/foreign.test.ts +0 -51
- package/src/agent/id.test.ts +0 -169
- package/src/agent/merge.test.ts +0 -206
- package/src/agent/part-list.test.tsx +0 -112
- package/src/agent/parts.test.ts +0 -720
- package/src/agent/thread.test.ts +0 -220
- package/src/agent/transport.test.ts +0 -70
- package/src/agent/use-agent-stream.test.tsx +0 -287
- package/src/agent/use-agent-thread-runs.foreign.test.tsx +0 -138
- package/src/agent/use-agent-thread-runs.resume.test.tsx +0 -294
- package/src/agent/use-agent-thread-runs.test.tsx +0 -1120
- package/src/agent/use-agent-thread-runs.wedge.test.tsx +0 -387
- package/src/agent-chat/composer.test.tsx +0 -924
- package/src/agent-chat/relative-time.test.ts +0 -95
- package/src/agent-chat/thread-feed-row.test.tsx +0 -510
- package/src/agent-chat/thread-feed.test.tsx +0 -241
- package/src/agent-chat/thread-message.test.tsx +0 -1285
- package/src/agent-chat/thread-workspace.test.tsx +0 -169
- package/src/agent-chat/tool-chip.test.tsx +0 -139
- package/src/agent-chat/virtualize.type-guard.test.ts +0 -49
- package/src/charts/cursor/resolve.test.ts +0 -151
- package/src/charts/cursor/store.test.ts +0 -64
- package/src/charts/kinds/BandStrip.test.tsx +0 -282
- package/src/charts/kinds/Bars.test.tsx +0 -183
- package/src/charts/kinds/DualPanel.test.tsx +0 -527
- package/src/charts/kinds/MirroredBars.test.tsx +0 -232
- package/src/charts/kinds/MultiLine.test.tsx +0 -218
- package/src/charts/kinds/StackedArea.test.tsx +0 -114
- package/src/charts/kinds/ZonedLine.test.tsx +0 -147
- package/src/charts/layout/auto-margin.test.ts +0 -42
- package/src/charts/primitives/CartesianChart.test.tsx +0 -647
- package/src/charts/primitives/ChartCard.test.tsx +0 -66
- package/src/charts/primitives/ChartFrame.test.tsx +0 -142
- package/src/charts/primitives/ChartLegend.test.tsx +0 -78
- package/src/charts/primitives/ChartTooltip.test.tsx +0 -44
- package/src/charts/primitives/XZoneRects.test.tsx +0 -123
- package/src/charts/series.test.ts +0 -112
- package/src/charts/utils/domain.test.ts +0 -54
- package/src/charts/utils/measure-text.test.ts +0 -36
- package/src/cli/check-coverage.test.ts +0 -297
- package/src/cli/check-theme.test.ts +0 -837
- package/src/cli/help.test.ts +0 -170
- package/src/cli/init-sync.test.ts +0 -343
- package/src/cli/placement-engine.test.ts +0 -298
- package/src/cli/shipped-versions.test.ts +0 -83
- package/src/cli/tarball-parity.test.ts +0 -44
- package/src/cli/template-format.test.ts +0 -64
- package/src/cli/template-ledger.test.ts +0 -219
- package/src/cli/tokens-css.test.ts +0 -249
- package/src/cli/toolchain-wiring.test.ts +0 -1358
- package/src/cli/waiver-audit.test.ts +0 -215
- package/src/connectivity/index.ts +0 -18
- package/src/content/article-actions.test.ts +0 -78
- package/src/content/article-model.test.ts +0 -119
- package/src/content/block-split.test.ts +0 -75
- package/src/content/heading-components.test.tsx +0 -65
- package/src/content/markdown.test.tsx +0 -603
- package/src/content/prose.module.css.test.ts +0 -39
- package/src/content/sanitize.test.ts +0 -659
- package/src/content/slug.test.ts +0 -62
- package/src/controls/actions.test.tsx +0 -252
- package/src/controls/actions.type-guard.test.ts +0 -63
- package/src/controls/control-group.test.tsx +0 -229
- package/src/controls/controls.router.test.tsx +0 -1053
- package/src/controls/filter-set.test.tsx +0 -472
- package/src/controls/peer-boundary.test.ts +0 -85
- package/src/controls/props-contract.test.tsx +0 -137
- package/src/controls/range-filter.type-guard.test.tsx +0 -122
- package/src/controls/sync-button.test.tsx +0 -183
- package/src/dashboard/query-state.test.tsx +0 -152
- package/src/dashboard/settings-section.test.tsx +0 -56
- package/src/dashboard/stat-card.test.tsx +0 -385
- package/src/data/data-table.test.tsx +0 -434
- package/src/data/index.ts +0 -41
- package/src/guard/check-source.test.ts +0 -3388
- package/src/guard/grace.test.ts +0 -158
- package/src/guard/guard-hook.test.ts +0 -203
- package/src/notifications/overlay.tsx +0 -64
- package/src/provider/index.test.tsx +0 -101
- package/src/provider/lab-theme.test.ts +0 -147
- package/src/query/error-message.test.ts +0 -67
- package/src/query/error-message.ts +0 -70
- package/src/query/index.ts +0 -97
- package/src/router-tanstack/field.ts +0 -35
- package/src/router-tanstack/multi-search-param-store.test.ts +0 -124
- package/src/router-tanstack/multi-search-param-store.ts +0 -106
- package/src/router-tanstack/nav.test.ts +0 -111
- package/src/router-tanstack/search-param-store.test.ts +0 -135
- package/src/router-tanstack/search-param-store.ts +0 -100
- package/src/router-tanstack/search-store.router.test.tsx +0 -882
- package/src/router-tanstack/search-store.test.ts +0 -578
- package/src/router-tanstack/use-nav.test.tsx +0 -187
- package/src/section/index.ts +0 -1
- package/src/section/section.test.tsx +0 -204
- package/src/section/section.tsx +0 -220
- package/src/shell/app-mobile-nav.test.tsx +0 -403
- package/src/shell/app-sidebar.test.tsx +0 -509
- package/src/shell/index.test.tsx +0 -428
- package/src/shell/mobile-nav-model.test.ts +0 -517
- package/src/shell/page-bar.test.tsx +0 -316
- package/src/state/fields.test.tsx +0 -512
- package/src/state/persisted.test.ts +0 -91
- package/src/styles.floor.test.ts +0 -36
- package/src/theme/border-coverage.test.ts +0 -272
- package/src/theme/contrast.test.ts +0 -354
- package/src/theme/ctl-theme.test.tsx +0 -275
- package/src/theme/ctl-tier-coverage.test.ts +0 -170
- package/src/theme/density-option.test.ts +0 -96
- package/src/theme/density-relations.test.ts +0 -506
- package/src/theme/derive-theme.test.ts +0 -101
- package/src/theme/divider-law.test.ts +0 -259
- package/src/theme/fonts-option.test.ts +0 -75
- package/src/theme/icon-slot.test.tsx +0 -275
- package/src/theme/layout-rhythm-css.test.ts +0 -72
- package/src/theme/radius-option.test.ts +0 -86
- package/src/theme/radius.test.ts +0 -142
- package/src/theme/shadow-surfaces.test.ts +0 -488
- package/src/theme/spacing.test.ts +0 -495
- package/src/theme/use-basalt-spacing.test.tsx +0 -55
- package/src/theme-lab/derive-controls.test.ts +0 -94
- package/src/theme-lab/derive-state.test.ts +0 -71
- package/src/theme-lab/theme-lab.test.ts +0 -46
- package/src/tokens/build-fonts-css.test.ts +0 -52
- package/src/tokens/build-radius-css.test.ts +0 -25
- package/src/tokens/chart-margin.test.ts +0 -39
- package/src/tokens/density.test.ts +0 -259
- package/src/tokens/derive-radius.test.ts +0 -62
- package/src/tokens/derive.test.ts +0 -30
- package/src/tokens/palette.test.ts +0 -114
- package/src/tokens/text-scale.test.ts +0 -51
- package/src/vite-color-mix.test.ts +0 -46
- package/src/vite.test.ts +0 -423
- package/src/widget-header/delta-badge.test.tsx +0 -60
- package/src/widget-header/delta-badge.tsx +0 -57
- package/src/widget-header/index.ts +0 -2
- package/src/widget-header/no-mantine.test.ts +0 -33
- package/src/widget-header/widget-header.test.tsx +0 -187
- package/src/widget-header/widget-header.tsx +0 -213
- /package/dist/{motion/index.js → common/motion.js} +0 -0
- /package/dist/{section → dashboard}/section.module.css.d.ts +0 -0
- /package/dist/{widget-header → dashboard}/widget-header.module.css.d.ts +0 -0
- /package/dist/{connectivity/types.js → provider/connectivity-types.js} +0 -0
- /package/dist/{connectivity → provider}/use-connectivity.js +0 -0
- /package/dist/{nav/types.js → shell/nav-types.js} +0 -0
- /package/src/{motion/index.ts → common/motion.ts} +0 -0
- /package/src/{section → dashboard}/section.module.css.d.ts +0 -0
- /package/src/{widget-header → dashboard}/widget-header.module.css.d.ts +0 -0
package/src/provider/index.tsx
CHANGED
|
@@ -15,18 +15,28 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Mantine usage is allowed in this `./` root layer (unlike `src/charts/**` and `src/tokens/**`).
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
MantineProvider,
|
|
20
|
+
useComputedColorScheme,
|
|
21
|
+
useMantineColorScheme,
|
|
22
|
+
useMantineTheme,
|
|
23
|
+
} from '@mantine/core'
|
|
19
24
|
import type { MantineProviderProps } from '@mantine/core'
|
|
20
25
|
import { Component, useEffect, useMemo } from 'react'
|
|
21
26
|
import type { ErrorInfo, ReactNode } from 'react'
|
|
22
27
|
import { VxThemeProvider } from '../charts/theme'
|
|
23
|
-
import
|
|
28
|
+
import fallbackClasses from './error-fallback.module.css'
|
|
29
|
+
import { ConnectivityProvider } from './connectivity-provider'
|
|
30
|
+
import type { ConnectivityProviderProps } from './connectivity-types'
|
|
24
31
|
import { cssVariablesResolver } from '../theme'
|
|
25
32
|
import { useLabTheme } from './lab-theme'
|
|
26
33
|
import { buildDensityCss, buildFontsCss, buildPaletteCss, buildRadiusCss } from '../tokens'
|
|
27
34
|
import type { BuildPaletteOpts } from '../tokens'
|
|
28
35
|
import { isDefaultDeriveConfig } from '../tokens/derive'
|
|
29
36
|
import { buildPaletteData } from '../tokens/palette'
|
|
37
|
+
import { isDev } from '../common/is-dev'
|
|
38
|
+
import { registerColorSchemeSetter } from '../commands/shell-bridge'
|
|
39
|
+
import { PageTitle } from '../shell/page-title'
|
|
30
40
|
|
|
31
41
|
/**
|
|
32
42
|
* Where an error surfaced — drives consumer routing (a render error vs a global rejection differ).
|
|
@@ -91,18 +101,19 @@ export type BasaltProviderProps = {
|
|
|
91
101
|
* prop; its nonce mechanism is `getStyleNonce: () => string`, which flows through `...rest`.
|
|
92
102
|
*/
|
|
93
103
|
nonce?: string
|
|
94
|
-
/**
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
104
|
+
/**
|
|
105
|
+
* Options threaded through to the auto-mounted `ConnectivityProvider` (everything except
|
|
106
|
+
* `children`) — `sseUrl`, `healthUrl`, `healthIntervalMs`, and `override` (previously
|
|
107
|
+
* unreachable through `BasaltProvider`: the only way to reach it was a second, shadowing
|
|
108
|
+
* `ConnectivityProvider`).
|
|
109
|
+
*/
|
|
110
|
+
connectivity?: Omit<ConnectivityProviderProps, 'children'>
|
|
111
|
+
} & Omit<MantineProviderProps, 'children' | 'theme' | 'defaultColorScheme' | 'cssVariablesResolver'>
|
|
101
112
|
|
|
102
113
|
// ── Default error handler ─────────────────────────────────────────────────────────────────────────
|
|
103
114
|
|
|
104
115
|
function defaultOnError(error: unknown, ctx: BasaltErrorContext): void {
|
|
105
|
-
if (
|
|
116
|
+
if (isDev()) {
|
|
106
117
|
// eslint-disable-next-line no-console -- intentional dev-only diagnostic when no onError is supplied
|
|
107
118
|
console.error('[BasaltProvider] unhandled error', ctx.kind, error)
|
|
108
119
|
}
|
|
@@ -111,15 +122,54 @@ function defaultOnError(error: unknown, ctx: BasaltErrorContext): void {
|
|
|
111
122
|
|
|
112
123
|
// ── Error boundary ────────────────────────────────────────────────────────────────────────────────
|
|
113
124
|
|
|
114
|
-
|
|
125
|
+
/**
|
|
126
|
+
* `BasaltErrorBoundary`'s props — exported (C5 consolidation) so a consumer mounting a nested
|
|
127
|
+
* boundary can name the type, e.g. for a wrapper component's own prop forwarding.
|
|
128
|
+
*/
|
|
129
|
+
export type BasaltErrorBoundaryProps = {
|
|
115
130
|
children: ReactNode
|
|
116
|
-
|
|
117
|
-
|
|
131
|
+
/**
|
|
132
|
+
* Report the caught render error. Unset → `defaultOnError` (console.error in dev, no-op in
|
|
133
|
+
* prod — the same fallback `BasaltProvider`'s own top-level `onError` uses), so a NESTED
|
|
134
|
+
* boundary mounted with no `onError` still surfaces something in dev instead of silently
|
|
135
|
+
* swallowing it.
|
|
136
|
+
*/
|
|
137
|
+
onError?: (error: unknown, ctx: BasaltErrorContext) => void
|
|
138
|
+
/**
|
|
139
|
+
* UI to render when a render error is caught. If a function, called with the error. Unset →
|
|
140
|
+
* {@link DefaultErrorFallback} — a minimal `PageTitle` + reload button, never a silent `null`;
|
|
141
|
+
* pass `fallback={null}` explicitly for the old swallow-it behaviour.
|
|
142
|
+
*/
|
|
118
143
|
fallback?: ReactNode | ((error: unknown) => ReactNode)
|
|
119
144
|
}
|
|
120
145
|
|
|
121
146
|
type BoundaryState = { hasError: boolean; error: unknown }
|
|
122
147
|
|
|
148
|
+
/**
|
|
149
|
+
* The boundary's own default fallback — a `PageTitle` (C5's shell-less page-title primitive, so
|
|
150
|
+
* this needs no `in-body-page-title` waiver) plus a plain reload affordance. Deliberately minimal:
|
|
151
|
+
* a consumer wanting session ids, a stack trace or a "try to recover" reset (argo's own
|
|
152
|
+
* `lib/error-boundary.tsx`) still passes its own `fallback` render function — this default exists
|
|
153
|
+
* so an app that mounts `BasaltErrorBoundary` and does nothing else shows a page, not a blank one.
|
|
154
|
+
*/
|
|
155
|
+
function DefaultErrorFallback(): ReactNode {
|
|
156
|
+
return (
|
|
157
|
+
<div className={fallbackClasses.root}>
|
|
158
|
+
<PageTitle
|
|
159
|
+
title="Something went wrong"
|
|
160
|
+
subtitle="The page hit an unexpected error and was unloaded to keep the app stable."
|
|
161
|
+
/>
|
|
162
|
+
<button
|
|
163
|
+
type="button"
|
|
164
|
+
className={fallbackClasses.reload}
|
|
165
|
+
onClick={() => window.location.reload()}
|
|
166
|
+
>
|
|
167
|
+
Reload page
|
|
168
|
+
</button>
|
|
169
|
+
</div>
|
|
170
|
+
)
|
|
171
|
+
}
|
|
172
|
+
|
|
123
173
|
/**
|
|
124
174
|
* Error boundary that catches render-phase errors inside `BasaltProvider`. Wraps `BasaltBridge` +
|
|
125
175
|
* children INSIDE `MantineProvider` so a thrown render error still has theme context for a fallback.
|
|
@@ -130,8 +180,8 @@ type BoundaryState = { hasError: boolean; error: unknown }
|
|
|
130
180
|
* <MyFeature />
|
|
131
181
|
* </BasaltErrorBoundary>
|
|
132
182
|
*/
|
|
133
|
-
export class BasaltErrorBoundary extends Component<
|
|
134
|
-
constructor(props:
|
|
183
|
+
export class BasaltErrorBoundary extends Component<BasaltErrorBoundaryProps, BoundaryState> {
|
|
184
|
+
constructor(props: BasaltErrorBoundaryProps) {
|
|
135
185
|
super(props)
|
|
136
186
|
this.state = { hasError: false, error: undefined }
|
|
137
187
|
}
|
|
@@ -141,13 +191,15 @@ export class BasaltErrorBoundary extends Component<BoundaryProps, BoundaryState>
|
|
|
141
191
|
}
|
|
142
192
|
|
|
143
193
|
override componentDidCatch(error: unknown, info: ErrorInfo): void {
|
|
144
|
-
this.props.onError
|
|
194
|
+
const onError = this.props.onError ?? defaultOnError
|
|
195
|
+
onError(error, { kind: 'render', info })
|
|
145
196
|
}
|
|
146
197
|
|
|
147
198
|
override render(): ReactNode {
|
|
148
199
|
if (this.state.hasError) {
|
|
149
200
|
const { fallback } = this.props
|
|
150
|
-
if (fallback === undefined) return
|
|
201
|
+
if (fallback === undefined) return <DefaultErrorFallback />
|
|
202
|
+
if (fallback === null) return null
|
|
151
203
|
return typeof fallback === 'function' ? fallback(this.state.error) : fallback
|
|
152
204
|
}
|
|
153
205
|
return this.props.children
|
|
@@ -200,6 +252,15 @@ function BasaltBridge({
|
|
|
200
252
|
// (fallback 'dark' before hydration, matching the provider's defaultColorScheme).
|
|
201
253
|
const resolved = useComputedColorScheme('dark')
|
|
202
254
|
|
|
255
|
+
// `commands/shell-bridge.ts`'s `setColorScheme` handle — registered here (already inside
|
|
256
|
+
// `MantineProvider`) so a consumer's `commands.tsx` calls it with ZERO `__root.tsx` wiring,
|
|
257
|
+
// unlike argo's hand-rolled `color-scheme-bridge.ts` this seeds from (see that file's own doc).
|
|
258
|
+
const { setColorScheme: setMantineColorScheme } = useMantineColorScheme()
|
|
259
|
+
useEffect(() => {
|
|
260
|
+
registerColorSchemeSetter(setMantineColorScheme)
|
|
261
|
+
return () => registerColorSchemeSetter(null)
|
|
262
|
+
}, [setMantineColorScheme])
|
|
263
|
+
|
|
203
264
|
// `createBasaltTheme`'s non-default `{ derive }` / `{ fonts }` / `{ radius }` / `{ density }`
|
|
204
265
|
// paths stash the resolved values on `theme.other.basaltDerive` / `theme.other.basaltFonts` /
|
|
205
266
|
// `theme.other.basaltRadius` / `theme.other.basaltDensity` — read them here (INSIDE
|
|
@@ -255,6 +316,34 @@ function BasaltBridge({
|
|
|
255
316
|
)
|
|
256
317
|
}
|
|
257
318
|
|
|
319
|
+
// ── Duplicate-mount guard (F14) ───────────────────────────────────────────────────────────────────
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Module-level (deliberately NOT a per-instance ref, unlike `fence-block.tsx`'s warn-once gate) —
|
|
323
|
+
* the whole point is detecting a SECOND, unrelated `BasaltProvider` mounted anywhere else in the
|
|
324
|
+
* tree, which a per-instance gate could never see. Nested/duplicate providers double-mount
|
|
325
|
+
* `MantineProvider`, the palette `<style>` and `ConnectivityProvider`'s signal listeners — real
|
|
326
|
+
* misuse, not a false positive from React 18 StrictMode's double-invoke (that mounts/unmounts the
|
|
327
|
+
* SAME instance in sequence, so the count returns to 0 before a second instance could ever exist).
|
|
328
|
+
*/
|
|
329
|
+
let mountedProviderCount = 0
|
|
330
|
+
|
|
331
|
+
function useDuplicateProviderGuard(): void {
|
|
332
|
+
useEffect(() => {
|
|
333
|
+
mountedProviderCount++
|
|
334
|
+
if (mountedProviderCount > 1 && isDev()) {
|
|
335
|
+
console.warn(
|
|
336
|
+
'[basalt] BasaltProvider: more than one instance is mounted at once — nested/duplicate ' +
|
|
337
|
+
'BasaltProviders double-mount MantineProvider, the palette <style> and ' +
|
|
338
|
+
'ConnectivityProvider. Mount exactly one, at the app root.',
|
|
339
|
+
)
|
|
340
|
+
}
|
|
341
|
+
return () => {
|
|
342
|
+
mountedProviderCount--
|
|
343
|
+
}
|
|
344
|
+
}, [])
|
|
345
|
+
}
|
|
346
|
+
|
|
258
347
|
// ── Public provider ───────────────────────────────────────────────────────────────────────────────
|
|
259
348
|
|
|
260
349
|
export function BasaltProvider({
|
|
@@ -265,11 +354,10 @@ export function BasaltProvider({
|
|
|
265
354
|
defaultColorScheme = 'dark',
|
|
266
355
|
onError,
|
|
267
356
|
nonce,
|
|
268
|
-
|
|
269
|
-
healthUrl,
|
|
270
|
-
healthIntervalMs,
|
|
357
|
+
connectivity,
|
|
271
358
|
...rest
|
|
272
359
|
}: BasaltProviderProps) {
|
|
360
|
+
useDuplicateProviderGuard()
|
|
273
361
|
const errorHandler = onError ?? defaultOnError
|
|
274
362
|
|
|
275
363
|
// `createBasaltTheme(theme)` — plus, when the theme lab's "Apply" switch is on, the delta of its
|
|
@@ -278,12 +366,18 @@ export function BasaltProvider({
|
|
|
278
366
|
// Basalt base and nothing else. See `./lab-theme.ts`.
|
|
279
367
|
const resolvedTheme = useLabTheme(theme)
|
|
280
368
|
|
|
369
|
+
const resolvedConnectivity = connectivity ?? {}
|
|
370
|
+
|
|
281
371
|
return (
|
|
372
|
+
// `...rest` spreads FIRST so a consumer's `MantineProviderProps` can never shadow the three
|
|
373
|
+
// values that follow it — `cssVariablesResolver` in particular is the resolver the package
|
|
374
|
+
// exists to install (F24); `theme`/`defaultColorScheme` are excluded from `rest`'s type too,
|
|
375
|
+
// this is belt-and-braces against a widened rest at the call site.
|
|
282
376
|
<MantineProvider
|
|
377
|
+
{...rest}
|
|
283
378
|
theme={resolvedTheme}
|
|
284
379
|
cssVariablesResolver={cssVariablesResolver}
|
|
285
380
|
defaultColorScheme={defaultColorScheme}
|
|
286
|
-
{...rest}
|
|
287
381
|
>
|
|
288
382
|
<BasaltErrorBoundary onError={errorHandler}>
|
|
289
383
|
<BasaltBridge
|
|
@@ -292,13 +386,7 @@ export function BasaltProvider({
|
|
|
292
386
|
nonce={nonce}
|
|
293
387
|
onError={errorHandler}
|
|
294
388
|
>
|
|
295
|
-
<ConnectivityProvider
|
|
296
|
-
{...(sseUrl !== undefined ? { sseUrl } : {})}
|
|
297
|
-
{...(healthUrl !== undefined ? { healthUrl } : {})}
|
|
298
|
-
{...(healthIntervalMs !== undefined ? { healthIntervalMs } : {})}
|
|
299
|
-
>
|
|
300
|
-
{children}
|
|
301
|
-
</ConnectivityProvider>
|
|
389
|
+
<ConnectivityProvider {...resolvedConnectivity}>{children}</ConnectivityProvider>
|
|
302
390
|
</BasaltBridge>
|
|
303
391
|
</BasaltErrorBoundary>
|
|
304
392
|
</MantineProvider>
|
|
@@ -44,6 +44,7 @@ import { useMemo } from 'react'
|
|
|
44
44
|
import { useDeriveControlsState, toDeriveOverride } from '../theme-lab/derive-state'
|
|
45
45
|
import type { DeriveOverride } from '../theme-lab/derive-state'
|
|
46
46
|
import { baseTheme, createBasaltTheme } from '../theme'
|
|
47
|
+
import { isDev } from '../common/is-dev'
|
|
47
48
|
|
|
48
49
|
type Plain = Record<string, unknown>
|
|
49
50
|
|
|
@@ -135,7 +136,7 @@ export function applyLabOverride(
|
|
|
135
136
|
* through a dev server (`bun run dev`), so that is the right side of the trade — but if you ever
|
|
136
137
|
* preview the playground via `vite build && vite preview`, the sliders will be inert there.
|
|
137
138
|
*/
|
|
138
|
-
const LAB_ENABLED =
|
|
139
|
+
const LAB_ENABLED = isDev()
|
|
139
140
|
|
|
140
141
|
/**
|
|
141
142
|
* Dev build: subscribed to the lab store.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* useConnectivity — reads the aggregated connectivity status from ConnectivityContext.
|
|
3
3
|
*
|
|
4
|
-
* Throws if used outside a ConnectivityProvider.
|
|
5
|
-
*
|
|
4
|
+
* Throws if used outside a ConnectivityProvider. `BasaltProvider` auto-mounts
|
|
5
|
+
* `ConnectivityProvider`, so this hook works with zero setup in the common case. It replaced the
|
|
6
|
+
* former online-status hook that lived on `basalt-ui/state` (see MIGRATING.md).
|
|
6
7
|
*
|
|
7
8
|
* @example
|
|
8
9
|
* const { status, details } = useConnectivity()
|
|
@@ -10,7 +11,7 @@
|
|
|
10
11
|
*/
|
|
11
12
|
import { useContext } from 'react'
|
|
12
13
|
import { ConnectivityContext } from './connectivity-provider'
|
|
13
|
-
import type { ConnectivitySnapshot } from './types'
|
|
14
|
+
import type { ConnectivitySnapshot } from './connectivity-types'
|
|
14
15
|
|
|
15
16
|
export function useConnectivity(): ConnectivitySnapshot {
|
|
16
17
|
const snapshot = useContext(ConnectivityContext)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `createBasaltQueryClient` + `unwrap` — the two TanStack Query primitives basalt ships. Folded
|
|
3
|
+
* onto the root barrel (C1 consolidation, dropping the `./query` subpath): the root already
|
|
4
|
+
* requires `@tanstack/react-query` as a peer, so a dedicated Mantine-free subpath bought nothing —
|
|
5
|
+
* and it re-exported 10 raw TanStack symbols no consumer imported through it.
|
|
6
|
+
* Optional peer: @tanstack/react-query.
|
|
7
|
+
*/
|
|
8
|
+
import { QueryClient } from '@tanstack/react-query'
|
|
9
|
+
import type { QueryClientConfig } from '@tanstack/react-query'
|
|
10
|
+
|
|
11
|
+
// ── createBasaltQueryClient ───────────────────────────────────────────────────────────────────────
|
|
12
|
+
|
|
13
|
+
const BASALT_QUERY_DEFAULTS = {
|
|
14
|
+
staleTime: 30_000,
|
|
15
|
+
gcTime: 5 * 60 * 1000,
|
|
16
|
+
retry: 2,
|
|
17
|
+
refetchOnWindowFocus: false,
|
|
18
|
+
} as const
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Wraps QueryClient with basalt dashboard defaults. All options are mergeable — consumer
|
|
22
|
+
* overrides win per-query, framework defaults are the fallback.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* import { createBasaltQueryClient } from 'basalt-ui'
|
|
26
|
+
* import { QueryClientProvider } from '@tanstack/react-query'
|
|
27
|
+
* import { useState } from 'react'
|
|
28
|
+
*
|
|
29
|
+
* function Root({ children }: { children: React.ReactNode }) {
|
|
30
|
+
* const [client] = useState(() => createBasaltQueryClient())
|
|
31
|
+
* return <QueryClientProvider client={client}>{children}</QueryClientProvider>
|
|
32
|
+
* }
|
|
33
|
+
*/
|
|
34
|
+
export function createBasaltQueryClient(config?: QueryClientConfig): QueryClient {
|
|
35
|
+
return new QueryClient({
|
|
36
|
+
...config,
|
|
37
|
+
defaultOptions: {
|
|
38
|
+
...config?.defaultOptions,
|
|
39
|
+
queries: { ...BASALT_QUERY_DEFAULTS, ...config?.defaultOptions?.queries },
|
|
40
|
+
},
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// ── unwrap ────────────────────────────────────────────────────────────────────────────────────────
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Transport-agnostic unwrap for any `{ data, error }` envelope (Eden Treaty, raw fetch wrappers,
|
|
48
|
+
* etc.). TData is inferred from the data field. Throws on the error branch so failures surface
|
|
49
|
+
* to the nearest error boundary or TanStack Query's error state.
|
|
50
|
+
*
|
|
51
|
+
* Absence guard: if `error` is falsy but `data` is `null` OR `undefined`, unwrap throws with a
|
|
52
|
+
* descriptive message. This catches 204 No Content responses and silent transport failures that
|
|
53
|
+
* return `{ data: null, error: null }` — both signal an unexpected absence of data and should not
|
|
54
|
+
* silently resolve. `undefined` joined `null` here (C5 consolidation) so a hand-rolled fetch
|
|
55
|
+
* wrapper that leaves `data` unset on a miss — rather than explicitly `null` — is caught the same
|
|
56
|
+
* way; the two envelope shapes argo's own pre-basalt `unwrap` and basalt's ONLY differed on.
|
|
57
|
+
*
|
|
58
|
+
* **Two overloads, one name** — a Promise of the envelope (basalt's original shape,
|
|
59
|
+
* `queryFn: () => unwrap(api.x.get())`), or the ALREADY-RESOLVED envelope itself
|
|
60
|
+
* (`unwrap(await api.x.get())`, or passed directly as a `.then(unwrap)` callback — both argo's
|
|
61
|
+
* 97 call sites' shapes). Never a generic argument to disambiguate: TS infers the right overload
|
|
62
|
+
* from whether the argument IS a `Promise`.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* import { unwrap } from 'basalt-ui'
|
|
66
|
+
*
|
|
67
|
+
* // Promise-of-envelope — queryFn:
|
|
68
|
+
* queryFn: () => unwrap(api.users.get({ query: params }))
|
|
69
|
+
* // mutation:
|
|
70
|
+
* mutationFn: (body) => unwrap(api.resource.post({ body }))
|
|
71
|
+
*
|
|
72
|
+
* // resolved-envelope — either shape:
|
|
73
|
+
* const rows = unwrap(await api.users.get())
|
|
74
|
+
* const rows2 = await api.users.get().then(unwrap)
|
|
75
|
+
*/
|
|
76
|
+
export function unwrap<TData>(
|
|
77
|
+
response: Promise<{ data: TData | null | undefined; error: unknown }>,
|
|
78
|
+
): Promise<TData>
|
|
79
|
+
export function unwrap<TData>(response: { data: TData | null | undefined; error: unknown }): TData
|
|
80
|
+
export function unwrap<TData>(
|
|
81
|
+
response:
|
|
82
|
+
| Promise<{ data: TData | null | undefined; error: unknown }>
|
|
83
|
+
| { data: TData | null | undefined; error: unknown },
|
|
84
|
+
): TData | Promise<TData> {
|
|
85
|
+
if (response instanceof Promise) return response.then((envelope) => unwrapEnvelope(envelope))
|
|
86
|
+
return unwrapEnvelope(response)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function unwrapEnvelope<TData>(envelope: {
|
|
90
|
+
data: TData | null | undefined
|
|
91
|
+
error: unknown
|
|
92
|
+
}): TData {
|
|
93
|
+
const { data, error } = envelope
|
|
94
|
+
if (error) throw error
|
|
95
|
+
if (data === null || data === undefined)
|
|
96
|
+
throw new Error(
|
|
97
|
+
'unwrap: null/undefined data with no error — check for a 204 response or a transport failure',
|
|
98
|
+
)
|
|
99
|
+
return data
|
|
100
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* The
|
|
2
|
+
* `BasaltQueryDevtools` — prod-safe lazy wrapper for @tanstack/react-query-devtools. Folded onto
|
|
3
|
+
* the root barrel alongside `query-client.ts` (C1 consolidation, dropping the `./query` subpath).
|
|
4
|
+
* The devtools package is an OPTIONAL peer — never imported at module evaluation time. The dynamic
|
|
5
|
+
* import() resolves only when rendered in non-production.
|
|
5
6
|
*/
|
|
6
7
|
import { lazy, Suspense } from 'react'
|
|
7
8
|
import type { ComponentProps } from 'react'
|
|
@@ -10,6 +11,7 @@ import type { ReactQueryDevtools } from '@tanstack/react-query-devtools'
|
|
|
10
11
|
const LazyDevtools = lazy(() =>
|
|
11
12
|
import('@tanstack/react-query-devtools').then((m) => ({ default: m.ReactQueryDevtools })),
|
|
12
13
|
)
|
|
14
|
+
Object.assign(LazyDevtools, { displayName: 'LazyDevtools' })
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* Lazy, production-excluded wrapper for ReactQueryDevtools. Safe to import unconditionally —
|
|
@@ -17,7 +19,7 @@ const LazyDevtools = lazy(() =>
|
|
|
17
19
|
* import fires. In production this returns null immediately.
|
|
18
20
|
*
|
|
19
21
|
* @example
|
|
20
|
-
* import { BasaltQueryDevtools } from 'basalt-ui
|
|
22
|
+
* import { BasaltQueryDevtools } from 'basalt-ui'
|
|
21
23
|
*
|
|
22
24
|
* function Root() {
|
|
23
25
|
* return (
|
package/src/register.ts
CHANGED
|
@@ -37,11 +37,27 @@ export interface BasaltRegister {}
|
|
|
37
37
|
* slot instantiates against. At 1.0 the `series`, `commands`, `overlays`, and `notifications`
|
|
38
38
|
* slots ship and have concrete instantiations (define-commands.ts, define-overlays.ts,
|
|
39
39
|
* define-notifications.ts); `router`, `query`, and `state` remain advisory.
|
|
40
|
+
*
|
|
41
|
+
* **Indexed-access form, not a mapped-type structural match (C5 consolidation)** — this used to
|
|
42
|
+
* read `BasaltRegister extends { [P in K]: infer S extends Constraint } ? S : {}`, which forces
|
|
43
|
+
* TS to structurally match the WHOLE `BasaltRegister` interface (every augmented slot's VALUE
|
|
44
|
+
* type, not just `K`'s) before it can answer "does slot `K` exist". That is the commands↔overlays
|
|
45
|
+
* cycle argo's `lib/overlays.tsx` documents: `defineCommands`'s inferred type has to type-check a
|
|
46
|
+
* command `run` body calling `overlays.open(…)`, which resolves `Slot<'overlays', …>` — and the
|
|
47
|
+
* OLD form's whole-interface match ALSO had to resolve `BasaltRegister['commands']`
|
|
48
|
+
* (`typeof COMMANDS`, the very type still being computed) to complete the match, because a
|
|
49
|
+
* mapped-type pattern binds every property simultaneously. `K extends keyof BasaltRegister` only
|
|
50
|
+
* needs the augmented KEY NAMES (available from declaration merging with no value-type checking
|
|
51
|
+
* at all), and `BasaltRegister[K]` then touches ONLY that one slot's value — so resolving
|
|
52
|
+
* `overlays` never has to resolve `commands` first, and a consumer can define both registries,
|
|
53
|
+
* with one calling the other's imperative controller, in a SINGLE file. Behaviourally identical to
|
|
54
|
+
* the old form for every existing augmentation (fixture J.1/J.2 pin both the `{}` fallback and the
|
|
55
|
+
* `Extract<keyof, string>` guard below); ONLY the internal resolution path changed.
|
|
40
56
|
*/
|
|
41
|
-
export type Slot<K extends string, Constraint> =
|
|
42
|
-
[
|
|
43
|
-
|
|
44
|
-
|
|
57
|
+
export type Slot<K extends string, Constraint> = K extends keyof BasaltRegister
|
|
58
|
+
? BasaltRegister[K] extends Constraint
|
|
59
|
+
? BasaltRegister[K]
|
|
60
|
+
: {}
|
|
45
61
|
: {}
|
|
46
62
|
|
|
47
63
|
/** The consumer's registered series map, or `{}` when un-augmented. */
|
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
* Carries the typed navigation definition (`defineNav`/`navGroup`/`navTarget`/`flattenNav`) and
|
|
5
5
|
* `useNav`, which resolves it into `BasaltShell`'s `sections` + `mobileNav` props; plus the
|
|
6
6
|
* StaticDataRouteOption augmentation (title/icon/navSection) for router-derived breadcrumbs, plus
|
|
7
|
-
* `createSearchStore` + the `field.*` vocabulary
|
|
8
|
-
* replaced) — no Mantine, no JSX.
|
|
7
|
+
* `createSearchStore` + the `field.*` vocabulary — no Mantine, no JSX.
|
|
9
8
|
*/
|
|
10
9
|
|
|
11
10
|
export { createSearchStore, type CreateSearchStoreOptions, type SearchStore } from './search-store'
|
|
12
|
-
export { field } from '
|
|
11
|
+
export { field } from '../state'
|
|
13
12
|
export type {
|
|
14
13
|
AnyField,
|
|
15
14
|
BooleanField,
|
|
@@ -32,17 +31,7 @@ export type {
|
|
|
32
31
|
SearchValues,
|
|
33
32
|
StoredValues,
|
|
34
33
|
StringField,
|
|
35
|
-
} from '
|
|
36
|
-
export {
|
|
37
|
-
createSearchParamStore,
|
|
38
|
-
type SearchParamStore,
|
|
39
|
-
type SearchParamStoreOptions,
|
|
40
|
-
} from './search-param-store'
|
|
41
|
-
export {
|
|
42
|
-
createMultiSearchParamStore,
|
|
43
|
-
type MultiSearchParamStore,
|
|
44
|
-
type MultiSearchParamStoreOptions,
|
|
45
|
-
} from './multi-search-param-store'
|
|
34
|
+
} from '../state'
|
|
46
35
|
export { defineNav, navGroup, navTarget, flattenNav } from './nav'
|
|
47
36
|
export type {
|
|
48
37
|
NavItemMeta,
|
|
@@ -59,7 +48,7 @@ export type {
|
|
|
59
48
|
} from './nav'
|
|
60
49
|
export { useNav } from './use-nav'
|
|
61
50
|
export type { UseNavOptions, NavBinding } from './use-nav'
|
|
62
|
-
export type { NavAnchor, NavAnchorProps, NavMobilePlacement } from '../nav
|
|
51
|
+
export type { NavAnchor, NavAnchorProps, NavMobilePlacement } from '../shell/nav-types'
|
|
63
52
|
import type { ReactNode } from 'react'
|
|
64
53
|
import { useLocation, useMatches } from '@tanstack/react-router'
|
|
65
54
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* No JSX and no Mantine in this module — `./router-tanstack` is a headless barrel by contract.
|
|
13
13
|
*/
|
|
14
14
|
import type { ReactNode } from 'react'
|
|
15
|
-
import type { NavMobilePlacement, NavSectionMobile } from '../nav
|
|
15
|
+
import type { NavMobilePlacement, NavSectionMobile } from '../shell/nav-types'
|
|
16
16
|
|
|
17
17
|
// ── authoring shapes ─────────────────────────────────────────────────────────────────────────────
|
|
18
18
|
|
|
@@ -30,16 +30,9 @@
|
|
|
30
30
|
* Headless — no Mantine, no JSX. Same tier as `useBasaltNav` and `useRouterBreadcrumbs`.
|
|
31
31
|
*/
|
|
32
32
|
import { useNavigate, useSearch } from '@tanstack/react-router'
|
|
33
|
-
import { createStoreCore } from '../state'
|
|
34
|
-
import type {
|
|
35
|
-
|
|
36
|
-
FieldHandle,
|
|
37
|
-
FieldSetOptions,
|
|
38
|
-
FieldWrite,
|
|
39
|
-
SearchValues,
|
|
40
|
-
StoreEntry,
|
|
41
|
-
StoredValues,
|
|
42
|
-
} from '../state'
|
|
33
|
+
import { createStoreCore } from '../state/fields'
|
|
34
|
+
import type { FieldWrite, StoreEntry } from '../state/fields'
|
|
35
|
+
import type { AnyField, FieldHandle, FieldSetOptions, SearchValues, StoredValues } from '../state'
|
|
43
36
|
|
|
44
37
|
// ── Types ──────────────────────────────────────────────────────────────────
|
|
45
38
|
|
|
@@ -219,12 +212,11 @@ function isMemoryLane(entry: StoreEntry): boolean {
|
|
|
219
212
|
}
|
|
220
213
|
|
|
221
214
|
/**
|
|
222
|
-
* The store
|
|
223
|
-
*
|
|
224
|
-
* Not exported from the barrel — `createSearchStore` is the public door.
|
|
215
|
+
* The store's implementation. Not exported from the barrel — `createSearchStore` is the public
|
|
216
|
+
* door.
|
|
225
217
|
*/
|
|
226
218
|
export function buildSearchStore<const S extends Record<string, AnyField>>(
|
|
227
|
-
o: CreateSearchStoreOptions<S
|
|
219
|
+
o: CreateSearchStoreOptions<S>,
|
|
228
220
|
): InternalSearchStore<S> {
|
|
229
221
|
assertNoLazyUrlFallback(o.key, o.fields)
|
|
230
222
|
const core = createStoreCore(o)
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import { createElement, useMemo } from 'react'
|
|
13
13
|
import type { ElementType, ReactNode } from 'react'
|
|
14
14
|
import { Link, useMatchRoute, useRouterState } from '@tanstack/react-router'
|
|
15
|
-
import type { MobileNavConfig, NavAnchor, SidebarItem, SidebarSection } from '../nav
|
|
15
|
+
import type { MobileNavConfig, NavAnchor, SidebarItem, SidebarSection } from '../shell/nav-types'
|
|
16
16
|
import { flattenNav } from './nav'
|
|
17
17
|
import type { AnyNavGroup, AnyNavItem, NavConfig, NavItemId, NavTabId } from './nav'
|
|
18
18
|
|
|
@@ -113,26 +113,31 @@ export function useNav<
|
|
|
113
113
|
// chain: the widened `AnyNavLink['search']` is `unknown`, which `LinkComponentProps` rejects.
|
|
114
114
|
// The consumer gets zero casts, which is the point.
|
|
115
115
|
//
|
|
116
|
-
// `activeOptions: { exact: true }` is what makes `resolveState` above
|
|
117
|
-
// active, and it is not a preference — a `Link` computes its own
|
|
118
|
-
// `activeOptions.exact: false`, i.e. prefix) and spreads
|
|
119
|
-
// 'aria-current': 'page' }` LAST, after `activeProps` and after
|
|
120
|
-
// (`@tanstack/react-router/dist/esm/link.js` — `...isActive &&
|
|
121
|
-
// final entry of the returned object). So `aria-current` cannot
|
|
122
|
-
// the only lever is `isActive` itself. Left at its default, the
|
|
123
|
-
// fuzzy match this resolver exists to replace, and at
|
|
124
|
-
// and the child anchor carried `aria-current="page"`
|
|
125
|
-
// of them an ancestor — verified in Chrome, and the
|
|
126
|
-
// measured as no fix at all.
|
|
116
|
+
// `activeOptions: { exact: true, includeSearch: true }` is what makes `resolveState` above
|
|
117
|
+
// the ONLY authority on active, and it is not a preference — a `Link` computes its own
|
|
118
|
+
// `isActive` (default `activeOptions.exact: false`, i.e. prefix) and spreads
|
|
119
|
+
// `{ 'data-status': 'active', 'aria-current': 'page' }` LAST, after `activeProps` and after
|
|
120
|
+
// every caller prop (`@tanstack/react-router/dist/esm/link.js` — `...isActive &&
|
|
121
|
+
// STATIC_ACTIVE_PROPS` is the final entry of the returned object). So `aria-current` cannot
|
|
122
|
+
// be overridden from outside; the only lever is `isActive` itself. Left at its default, the
|
|
123
|
+
// router re-derived the exact fuzzy match this resolver exists to replace, and at
|
|
124
|
+
// `/dashboard/sessions` BOTH the parent and the child anchor carried `aria-current="page"`
|
|
125
|
+
// even with basalt's own model marking one of them an ancestor — verified in Chrome, and the
|
|
126
|
+
// reason the first attempt at this fix measured as no fix at all. `includeSearch` already
|
|
127
|
+
// defaults to `true` upstream; naming it here is belt-and-braces so a future default change
|
|
128
|
+
// cannot silently reopen the gap.
|
|
127
129
|
//
|
|
128
130
|
// Exact here does NOT narrow basalt's own law. `resolveState` still matches fuzzily and still
|
|
129
131
|
// lights an item whose exact route is never visited; that item is simply named by the
|
|
130
132
|
// `aria-current` `app-sidebar.tsx` stamps itself, which survives because the router's spread
|
|
131
|
-
// is conditional on ITS `isActive` being true.
|
|
133
|
+
// is conditional on ITS `isActive` being true. The CSS side no longer treats `aria-current`
|
|
134
|
+
// as a style hook either (`theme/nav-link.module.css`, `shell/app-sidebar.module.css`), so
|
|
135
|
+
// `use-nav`'s single `data-active` winner is the one visual authority even if the router's
|
|
136
|
+
// own `isActive` ever disagreed.
|
|
132
137
|
const Anchor: NavAnchor = (props) =>
|
|
133
138
|
createElement(Link as ElementType, {
|
|
134
139
|
...item.link,
|
|
135
|
-
activeOptions: { exact: true },
|
|
140
|
+
activeOptions: { exact: true, includeSearch: true },
|
|
136
141
|
...props,
|
|
137
142
|
})
|
|
138
143
|
|
|
@@ -6,8 +6,11 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { ReactNode } from 'react'
|
|
8
8
|
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
9
|
+
/**
|
|
10
|
+
* Badge tone for a role/plan chip. A different member set from `common`'s `Tone` (`common/props.ts`,
|
|
11
|
+
* audit A13) — `'neutral' | 'brand'` have no `Tone` equivalent — so this stays its own type rather
|
|
12
|
+
* than an alias; see `Tone` for the base three-tone vocabulary the rest of the framework shares.
|
|
13
|
+
*/
|
|
11
14
|
export type AccountBadgeTone = 'neutral' | 'brand' | 'success' | 'warn'
|
|
12
15
|
|
|
13
16
|
/** The signed-in user's identity. `image` is nullable and currently unused by `SidebarAccount`
|