basalt-ui 1.41.0 → 2.0.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 +46 -43
- package/CHANGELOG.md +535 -518
- package/MIGRATING.md +945 -37
- package/README.md +171 -366
- package/agent/rules/basalt-batteries.md +19 -74
- package/agent/rules/basalt-charts.md +21 -95
- package/agent/rules/basalt-controls.md +23 -131
- package/agent/rules/basalt-mantine.md +26 -99
- package/agent/rules/basalt-state.md +21 -103
- package/agent/rules/basalt-tokens.md +33 -114
- package/agent/skills/basalt-app/SKILL.md +229 -72
- package/agent/skills/basalt-charts/SKILL.md +23 -57
- package/agent/skills/basalt-design/SKILL.md +12 -70
- package/agent/templates/AGENTS-block.md.tpl +16 -26
- package/agent/templates/DESIGN.md.tpl +1 -1
- package/agent/templates/__root.tpl +9 -16
- package/agent/templates/main.tpl +21 -0
- package/agent/templates/nav.tpl +18 -0
- package/configs/oxlint-basalt.json +4 -10
- package/configs/oxlint-plugin.js +465 -844
- package/configs/oxlint-plugin.test.ts +661 -709
- package/configs/oxlint.json +10 -2
- package/dist/agent/ai-sdk-transport.d.ts +19 -7
- package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
- package/dist/agent/ai-sdk-transport.js +10 -7
- package/dist/{agent-chat → agent/chat}/composer.d.ts +16 -16
- package/dist/agent/chat/composer.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/composer.js +10 -9
- package/dist/{agent-chat → agent/chat}/message-affordances.d.ts +7 -6
- package/dist/agent/chat/message-affordances.d.ts.map +1 -0
- package/dist/agent/chat/relative-time.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-feed-row.d.ts +18 -16
- package/dist/agent/chat/thread-feed-row.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-feed-row.js +12 -11
- package/dist/{agent-chat → agent/chat}/thread-feed.d.ts +8 -8
- package/dist/agent/chat/thread-feed.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-feed.js +12 -10
- package/dist/{agent-chat → agent/chat}/thread-message.d.ts +12 -9
- package/dist/agent/chat/thread-message.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-message.js +15 -13
- package/dist/{agent-chat → agent/chat}/thread-outcome-card.d.ts +2 -2
- package/dist/agent/chat/thread-outcome-card.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-outcome-card.js +3 -3
- package/dist/{agent-chat → agent/chat}/tool-chip.d.ts +5 -5
- package/dist/agent/chat/tool-chip.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/tool-chip.js +4 -4
- package/dist/agent/chat/use-keyboard-inset.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/use-keyboard-inset.js +1 -1
- package/dist/{agent-chat → agent/chat}/virtualize.d.ts +7 -7
- package/dist/agent/chat/virtualize.d.ts.map +1 -0
- package/dist/agent/error.d.ts +31 -0
- package/dist/agent/error.d.ts.map +1 -0
- package/dist/agent/error.js +18 -0
- package/dist/agent/history.d.ts +2 -36
- package/dist/agent/history.d.ts.map +1 -1
- package/dist/agent/history.js +0 -32
- package/dist/agent/id.d.ts +4 -5
- package/dist/agent/id.d.ts.map +1 -1
- package/dist/agent/index.d.ts +19 -52
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +10 -32
- package/dist/agent/outcome.d.ts +3 -14
- package/dist/agent/outcome.d.ts.map +1 -1
- package/dist/agent/outcome.js +0 -30
- package/dist/agent/part-list.d.ts +3 -3
- package/dist/agent/part-list.d.ts.map +1 -1
- package/dist/agent/parts.d.ts +23 -24
- package/dist/agent/parts.d.ts.map +1 -1
- package/dist/agent/run-committer.d.ts +23 -0
- package/dist/agent/run-committer.d.ts.map +1 -0
- package/dist/agent/run-committer.js +41 -0
- package/dist/agent/run-records.d.ts +77 -0
- package/dist/agent/run-records.d.ts.map +1 -0
- package/dist/agent/run-records.js +69 -0
- package/dist/agent/thread.d.ts +23 -47
- package/dist/agent/thread.d.ts.map +1 -1
- package/dist/agent/thread.js +3 -134
- package/dist/agent/transport.d.ts +6 -69
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/transport.js +0 -18
- package/dist/agent/use-agent-thread-runs.d.ts +63 -26
- package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
- package/dist/agent/use-agent-thread-runs.js +202 -66
- package/dist/charts/BandStrip.d.ts +46 -0
- package/dist/charts/BandStrip.d.ts.map +1 -0
- package/dist/charts/BandStrip.js +151 -0
- package/dist/charts/Bars.d.ts +19 -0
- package/dist/charts/Bars.d.ts.map +1 -0
- package/dist/charts/Bars.js +77 -0
- package/dist/charts/CartesianChart.d.ts +57 -0
- package/dist/charts/CartesianChart.d.ts.map +1 -0
- package/dist/charts/CartesianChart.js +121 -0
- package/dist/charts/ChartCard.d.ts +34 -0
- package/dist/charts/ChartCard.d.ts.map +1 -0
- package/dist/charts/ChartCard.js +115 -0
- package/dist/charts/Donut.d.ts +25 -0
- package/dist/charts/Donut.d.ts.map +1 -0
- package/dist/charts/Donut.js +191 -0
- package/dist/charts/DualPanel.d.ts +47 -0
- package/dist/charts/DualPanel.d.ts.map +1 -0
- package/dist/charts/DualPanel.js +214 -0
- package/dist/charts/Heatmap.d.ts +41 -0
- package/dist/charts/Heatmap.d.ts.map +1 -0
- package/dist/charts/Heatmap.js +216 -0
- package/dist/charts/Lines.d.ts +11 -0
- package/dist/charts/Lines.d.ts.map +1 -0
- package/dist/charts/Lines.js +114 -0
- package/dist/charts/MirroredBars.d.ts +44 -0
- package/dist/charts/MirroredBars.d.ts.map +1 -0
- package/dist/charts/MirroredBars.js +190 -0
- package/dist/charts/Sparkline.d.ts +22 -0
- package/dist/charts/Sparkline.d.ts.map +1 -0
- package/dist/charts/Sparkline.js +129 -0
- package/dist/charts/StackedArea.d.ts +15 -0
- package/dist/charts/StackedArea.d.ts.map +1 -0
- package/dist/charts/StackedArea.js +46 -0
- package/dist/charts/box.d.ts +38 -0
- package/dist/charts/box.d.ts.map +1 -0
- package/dist/charts/box.js +72 -0
- package/dist/charts/card-context.d.ts +3 -0
- package/dist/charts/card-context.d.ts.map +1 -0
- package/dist/charts/card-context.js +7 -0
- package/dist/charts/chart-box.module.css +64 -0
- package/{src/content/article-card.module.css.d.ts → dist/charts/chart-box.module.css.d.ts} +5 -9
- package/dist/charts/chart-card.module.css +25 -0
- package/dist/{dashboard/widget-grid.module.css.d.ts → charts/chart-card.module.css.d.ts} +1 -3
- package/dist/charts/chart-legend.module.css +38 -0
- package/{src/dashboard/widget-grid.module.css.d.ts → dist/charts/chart-legend.module.css.d.ts} +3 -3
- package/dist/charts/compile.d.ts +62 -0
- package/dist/charts/compile.d.ts.map +1 -0
- package/dist/charts/compile.js +386 -0
- package/dist/charts/cursor.d.ts +50 -0
- package/dist/charts/cursor.d.ts.map +1 -0
- package/dist/charts/cursor.js +157 -0
- package/dist/charts/curves.d.ts +12 -0
- package/dist/charts/curves.d.ts.map +1 -0
- package/dist/charts/curves.js +86 -0
- package/dist/charts/donut.module.css +54 -0
- package/dist/{content/article-card.module.css.d.ts → charts/donut.module.css.d.ts} +2 -9
- package/dist/charts/host.d.ts +17 -0
- package/dist/charts/host.d.ts.map +1 -0
- package/dist/charts/host.js +35 -0
- package/dist/charts/index.d.ts +18 -53
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/index.js +17 -189
- package/dist/charts/legend.d.ts +23 -0
- package/dist/charts/legend.d.ts.map +1 -0
- package/dist/charts/legend.js +160 -0
- package/dist/charts/marks.d.ts +25 -0
- package/dist/charts/marks.d.ts.map +1 -0
- package/dist/charts/marks.js +128 -0
- package/dist/charts/panel.d.ts +56 -0
- package/dist/charts/panel.d.ts.map +1 -0
- package/dist/charts/panel.js +123 -0
- package/dist/charts/scales.d.ts +44 -0
- package/dist/charts/scales.d.ts.map +1 -0
- package/dist/charts/scales.js +163 -0
- package/dist/charts/sizing.d.ts +12 -0
- package/dist/charts/sizing.d.ts.map +1 -0
- package/dist/charts/sizing.js +33 -0
- package/dist/charts/state.d.ts +17 -0
- package/dist/charts/state.d.ts.map +1 -0
- package/dist/charts/state.js +53 -0
- package/dist/charts/theme.d.ts +38 -19
- package/dist/charts/theme.d.ts.map +1 -1
- package/dist/charts/theme.js +48 -26
- package/dist/charts/types.d.ts +227 -0
- package/dist/charts/types.d.ts.map +1 -0
- package/dist/charts/types.js +4 -0
- package/dist/cli/audit-allows.d.ts +4 -17
- package/dist/cli/audit-allows.d.ts.map +1 -1
- package/dist/cli/config.d.ts +14 -43
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/doctor-upgrade.d.ts +31 -0
- package/dist/cli/doctor-upgrade.d.ts.map +1 -0
- package/dist/cli/doctor-upgrade.js +269 -0
- package/dist/cli/doctor.d.ts +13 -29
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +51 -9
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +2 -4
- package/dist/cli/index.d.ts +48 -172
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +39 -132
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +43 -37
- package/dist/cli/sync.d.ts +5 -21
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +4 -23
- package/dist/cli/tokens-css.d.ts +7 -28
- package/dist/cli/tokens-css.d.ts.map +1 -1
- package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
- package/dist/commands/ShortcutsHelp.js +4 -5
- package/dist/commands/define-commands.d.ts +15 -31
- package/dist/commands/define-commands.d.ts.map +1 -1
- package/dist/commands/define-commands.js +1 -11
- package/dist/commands/define-overlays.d.ts +5 -19
- package/dist/commands/define-overlays.d.ts.map +1 -1
- package/dist/commands/define-overlays.js +3 -11
- package/dist/commands/index.d.ts +10 -40
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +9 -46
- package/dist/{notifications → commands/notifications}/bell.d.ts +1 -1
- package/dist/commands/notifications/bell.d.ts.map +1 -0
- package/dist/{notifications → commands/notifications}/center.d.ts +2 -2
- package/dist/commands/notifications/center.d.ts.map +1 -0
- package/dist/{notifications → commands/notifications}/center.js +2 -2
- package/dist/{notifications → commands/notifications}/define-notifications.d.ts +3 -3
- package/dist/commands/notifications/define-notifications.d.ts.map +1 -0
- package/dist/commands/notifications/notify.d.ts +44 -0
- package/dist/commands/notifications/notify.d.ts.map +1 -0
- package/dist/commands/notifications/notify.js +79 -0
- package/dist/{notifications → commands/notifications}/store.d.ts +2 -0
- package/dist/commands/notifications/store.d.ts.map +1 -0
- package/dist/{notifications → commands/notifications}/store.js +4 -0
- package/dist/commands/projectors.d.ts +1 -131
- package/dist/commands/projectors.d.ts.map +1 -1
- package/dist/commands/projectors.js +2 -73
- package/dist/commands/shell-bridge.d.ts +3 -3
- package/dist/commands/shortcut-format.d.ts +5 -4
- package/dist/commands/shortcut-format.d.ts.map +1 -1
- package/dist/common/errors.d.ts +3 -3
- package/dist/common/use-measured-widths.d.ts.map +1 -1
- package/dist/common/use-measured-widths.js +5 -3
- package/dist/common/validate.d.ts +2 -2
- package/dist/content/article-layout.d.ts.map +1 -1
- package/dist/content/article-layout.js +3 -3
- package/dist/content/article-model.d.ts +1 -46
- package/dist/content/article-model.d.ts.map +1 -1
- package/dist/content/article-model.js +1 -29
- package/dist/content/index.d.ts +11 -41
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +3 -35
- package/dist/content/markdown.d.ts +1 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +1 -1
- package/dist/content/mermaid.d.ts.map +1 -1
- package/dist/content/mermaid.js +7 -7
- package/dist/content/slug.d.ts +1 -8
- package/dist/content/slug.d.ts.map +1 -1
- package/dist/content/slug.js +1 -8
- package/dist/content/url-hardening.d.ts +2 -2
- package/dist/content/url-hardening.d.ts.map +1 -1
- package/dist/content/url-hardening.js +2 -0
- package/dist/controls/actions.d.ts +16 -1
- package/dist/controls/actions.d.ts.map +1 -1
- package/dist/controls/enum-filter.d.ts +1 -1
- package/dist/controls/enum-filter.d.ts.map +1 -1
- package/dist/controls/filter-context.d.ts.map +1 -1
- package/dist/controls/filter-context.js +3 -1
- package/dist/controls/filter-set.js +4 -6
- package/dist/controls/form-layout.d.ts +1 -1
- package/dist/controls/form-layout.d.ts.map +1 -1
- package/dist/controls/form-layout.js +1 -1
- package/dist/controls/glyphs.d.ts +0 -2
- package/dist/controls/glyphs.d.ts.map +1 -1
- package/dist/controls/glyphs.js +0 -7
- package/dist/controls/index.d.ts +12 -17
- package/dist/controls/index.d.ts.map +1 -1
- package/dist/controls/index.js +5 -39
- package/dist/controls/multi-select-filter.d.ts +4 -3
- package/dist/controls/multi-select-filter.d.ts.map +1 -1
- package/dist/controls/number-filter.d.ts +4 -3
- package/dist/controls/number-filter.d.ts.map +1 -1
- package/dist/controls/number-filter.js +3 -1
- package/dist/controls/range-filter.d.ts +4 -3
- package/dist/controls/range-filter.d.ts.map +1 -1
- package/dist/controls/search-filter.d.ts +4 -3
- package/dist/controls/search-filter.d.ts.map +1 -1
- package/dist/controls/search-filter.js +19 -14
- package/dist/controls/select-filter.d.ts +4 -3
- package/dist/controls/select-filter.d.ts.map +1 -1
- package/dist/controls/sync-button.d.ts.map +1 -1
- package/dist/controls/sync-button.js +12 -15
- package/dist/controls/toggle-filter.d.ts +4 -3
- package/dist/controls/toggle-filter.d.ts.map +1 -1
- package/dist/controls/uncontrolled.d.ts +12 -0
- package/dist/controls/uncontrolled.d.ts.map +1 -0
- package/dist/controls/view-tabs.d.ts +2 -2
- package/dist/controls/view-tabs.d.ts.map +1 -1
- package/dist/controls-dates/index.d.ts +0 -1
- package/dist/controls-dates/index.d.ts.map +1 -1
- package/dist/dashboard/index.d.ts +7 -9
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +3 -23
- package/dist/dashboard/section.d.ts +4 -6
- package/dist/dashboard/section.d.ts.map +1 -1
- package/dist/dashboard/section.js +4 -10
- package/dist/dashboard/stat-card.d.ts +4 -4
- package/dist/dashboard/stat-card.d.ts.map +1 -1
- package/dist/dashboard/stat-card.js +3 -3
- package/dist/dashboard/widget-header.module.css +9 -7
- package/dist/dev-dock.d.ts.map +1 -1
- package/dist/dev-dock.js +6 -1
- package/dist/format/date.d.ts +0 -34
- package/dist/format/date.d.ts.map +1 -1
- package/dist/format/date.js +0 -54
- package/dist/format/index.d.ts +7 -22
- package/dist/format/index.d.ts.map +1 -1
- package/dist/format/index.js +2 -43
- package/dist/format/number.d.ts +3 -14
- package/dist/format/number.d.ts.map +1 -1
- package/dist/format/number.js +0 -13
- package/dist/format/shared.d.ts +2 -3
- package/dist/format/shared.d.ts.map +1 -1
- package/dist/forms/index.d.ts +0 -11
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +1 -14
- package/dist/guard/index.d.ts +6 -21
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +27 -115
- package/dist/guard/types.d.ts +7 -18
- package/dist/guard/types.d.ts.map +1 -1
- package/dist/index.d.ts +16 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -117
- package/dist/provider/create-router.d.ts +44 -0
- package/dist/provider/create-router.d.ts.map +1 -0
- package/dist/provider/create-router.js +62 -0
- package/dist/provider/hotkeys.d.ts +8 -0
- package/dist/provider/hotkeys.d.ts.map +1 -0
- package/dist/provider/hotkeys.js +50 -0
- package/dist/provider/index.d.ts +33 -110
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +182 -82
- package/dist/provider/lab-theme.d.ts.map +1 -1
- package/dist/provider/route-transition.d.ts +76 -0
- package/dist/provider/route-transition.d.ts.map +1 -0
- package/dist/provider/route-transition.js +98 -0
- package/dist/provider/spotlight-actions.d.ts +10 -0
- package/dist/provider/spotlight-actions.d.ts.map +1 -0
- package/dist/provider/spotlight-actions.js +55 -0
- package/dist/provider/test-router.d.ts +6 -0
- package/dist/provider/test-router.d.ts.map +1 -0
- package/dist/provider/test-router.js +18 -0
- package/dist/query-client.d.ts +4 -20
- package/dist/query-client.d.ts.map +1 -1
- package/dist/query-client.js +2 -2
- package/dist/router-tanstack/index.d.ts +18 -64
- package/dist/router-tanstack/index.d.ts.map +1 -1
- package/dist/router-tanstack/index.js +2 -16
- package/dist/router-tanstack/nav.d.ts +12 -1
- package/dist/router-tanstack/nav.d.ts.map +1 -1
- package/dist/router-tanstack/nav.js +8 -1
- package/dist/router-tanstack/search-store.d.ts +1 -1
- package/dist/router-tanstack/search-store.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.d.ts +8 -9
- package/dist/router-tanstack/use-nav.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.js +20 -1
- package/dist/shell/app-mobile-nav.d.ts.map +1 -1
- package/dist/shell/app-sidebar.js +1 -1
- package/dist/shell/index.d.ts +31 -10
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +14 -3
- package/dist/shell/page-aside.d.ts +2 -2
- package/dist/shell/page-aside.d.ts.map +1 -1
- package/dist/shell/page-aside.js +31 -12
- package/dist/shell/page-bar.d.ts +2 -2
- package/dist/shell/page-bar.d.ts.map +1 -1
- package/dist/shell/page-bar.js +1 -1
- package/dist/state.d.ts +10 -12
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -6
- package/dist/styles.css +107 -7
- package/dist/surfaces.d.ts +28 -103
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +54 -143
- package/dist/{data → table}/data-table-state.d.ts +1 -1
- package/dist/table/data-table-state.d.ts.map +1 -0
- package/dist/{data → table}/data-table-state.js +4 -3
- package/dist/{data → table}/data-table.d.ts +28 -49
- package/dist/table/data-table.d.ts.map +1 -0
- package/dist/{data → table}/data-table.js +74 -60
- package/dist/table/index.d.ts +18 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/{data/table.js → table/index.js} +1 -1
- package/dist/table/query-branch.d.ts.map +1 -0
- package/dist/table/table-features.d.ts +69 -0
- package/dist/table/table-features.d.ts.map +1 -0
- package/dist/table/table-features.js +49 -0
- package/dist/telemetry.d.ts +77 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +33 -0
- package/dist/theme/index.d.ts +10 -21
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +3 -14
- package/dist/theme/theme-toggle.d.ts.map +1 -1
- package/dist/theme/theme-toggle.js +7 -33
- package/dist/theme/theme-toggle.module.css +30 -0
- package/dist/theme/theme-toggle.module.css.d.ts +10 -0
- package/dist/theme-lab/derive-controls.d.ts.map +1 -1
- package/dist/theme-lab/derive-controls.js +5 -3
- package/dist/theme-lab/derive-state.d.ts.map +1 -1
- package/dist/theme-lab/derive-state.js +2 -1
- package/dist/tokens/core.d.ts +360 -0
- package/dist/tokens/core.d.ts.map +1 -0
- package/dist/tokens/core.js +708 -0
- package/dist/tokens/derive.d.ts +1 -1
- package/dist/tokens/derive.d.ts.map +1 -1
- package/dist/tokens/index.d.ts +5 -373
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +8 -700
- package/dist/tokens/palette.d.ts +2 -6
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +1 -4
- package/dist/vite.d.ts +4 -3
- package/dist/vite.d.ts.map +1 -1
- package/llms.txt +43 -85
- package/package.json +77 -170
- package/src/agent/ai-sdk-transport.ts +57 -37
- package/src/{agent-chat → agent/chat}/composer.tsx +29 -30
- package/src/{agent-chat → agent/chat}/message-affordances.ts +8 -5
- package/src/{agent-chat → agent/chat}/thread-feed-row.tsx +30 -35
- package/src/{agent-chat → agent/chat}/thread-feed.tsx +40 -35
- package/src/{agent-chat → agent/chat}/thread-message.tsx +37 -35
- package/src/{agent-chat → agent/chat}/thread-outcome-card.tsx +5 -5
- package/src/{agent-chat → agent/chat}/tool-chip.tsx +12 -12
- package/src/{agent-chat → agent/chat}/use-keyboard-inset.ts +1 -1
- package/src/{agent-chat → agent/chat}/virtualize.ts +5 -5
- package/src/agent/error.ts +43 -0
- package/src/agent/history.ts +2 -107
- package/src/agent/id.ts +4 -5
- package/src/agent/index.ts +23 -112
- package/src/agent/outcome.ts +3 -56
- package/src/agent/part-list.tsx +3 -3
- package/src/agent/parts.ts +23 -22
- package/src/agent/run-committer.ts +64 -0
- package/src/agent/run-records.ts +147 -0
- package/src/agent/thread.ts +24 -231
- package/src/agent/transport.ts +6 -96
- package/src/agent/use-agent-thread-runs.ts +364 -199
- package/src/charts/BandStrip.tsx +276 -0
- package/src/charts/Bars.tsx +141 -0
- package/src/charts/CartesianChart.tsx +206 -0
- package/src/charts/ChartCard.tsx +178 -0
- package/src/charts/Donut.tsx +256 -0
- package/src/charts/DualPanel.tsx +326 -0
- package/src/charts/Heatmap.tsx +282 -0
- package/src/charts/Lines.tsx +151 -0
- package/src/charts/MirroredBars.tsx +303 -0
- package/src/charts/Sparkline.tsx +176 -0
- package/src/charts/StackedArea.tsx +80 -0
- package/src/charts/box.tsx +96 -0
- package/src/charts/card-context.ts +11 -0
- package/src/charts/chart-box.module.css +64 -0
- package/src/charts/chart-box.module.css.d.ts +12 -0
- package/src/charts/chart-card.module.css +25 -0
- package/src/charts/chart-card.module.css.d.ts +8 -0
- package/src/charts/chart-legend.module.css +38 -0
- package/src/charts/chart-legend.module.css.d.ts +10 -0
- package/src/charts/compile.ts +585 -0
- package/src/charts/cursor.ts +282 -0
- package/src/charts/curves.ts +111 -0
- package/src/charts/donut.module.css +54 -0
- package/src/charts/donut.module.css.d.ts +9 -0
- package/src/charts/host.tsx +60 -0
- package/src/charts/index.ts +41 -178
- package/src/charts/legend.tsx +204 -0
- package/src/charts/marks.ts +201 -0
- package/src/charts/panel.tsx +227 -0
- package/src/charts/scales.ts +237 -0
- package/src/charts/sizing.ts +47 -0
- package/src/charts/state.tsx +80 -0
- package/src/charts/theme.ts +65 -0
- package/src/charts/types.ts +242 -0
- package/src/cli/audit-allows.ts +8 -30
- package/src/cli/config.ts +14 -43
- package/src/cli/doctor-upgrade.ts +392 -0
- package/src/cli/doctor.ts +81 -72
- package/src/cli/help.ts +2 -4
- package/src/cli/index.ts +100 -384
- package/src/cli/init.ts +60 -51
- package/src/cli/sync.ts +13 -68
- package/src/cli/tokens-css.ts +7 -28
- package/src/commands/ShortcutsHelp.tsx +8 -9
- package/src/commands/define-commands.ts +16 -43
- package/src/commands/define-overlays.ts +12 -36
- package/src/commands/index.ts +11 -94
- package/src/{notifications → commands/notifications}/bell.tsx +2 -2
- package/src/{notifications → commands/notifications}/center.tsx +7 -5
- package/src/{notifications → commands/notifications}/define-notifications.ts +3 -3
- package/src/commands/notifications/notify.tsx +158 -0
- package/src/{notifications → commands/notifications}/store.ts +10 -2
- package/src/commands/projectors.ts +5 -225
- package/src/commands/shell-bridge.ts +5 -5
- package/src/commands/shortcut-format.ts +5 -4
- package/src/common/errors.ts +3 -3
- package/src/common/use-measured-widths.ts +6 -3
- package/src/common/validate.ts +2 -2
- package/src/content/article-layout.tsx +37 -38
- package/src/content/article-model.ts +1 -84
- package/src/content/index.ts +12 -83
- package/src/content/markdown.tsx +4 -3
- package/src/content/mermaid.tsx +9 -7
- package/src/content/slug.ts +1 -16
- package/src/content/url-hardening.ts +8 -2
- package/src/controls/actions.tsx +24 -1
- package/src/controls/enum-filter.tsx +1 -1
- package/src/controls/filter-context.tsx +3 -1
- package/src/controls/filter-set.tsx +5 -7
- package/src/controls/form-layout.tsx +2 -2
- package/src/controls/glyphs.tsx +0 -10
- package/src/controls/index.ts +13 -64
- package/src/controls/multi-select-filter.tsx +5 -4
- package/src/controls/number-filter.tsx +8 -4
- package/src/controls/range-filter.tsx +5 -4
- package/src/controls/search-filter.tsx +25 -19
- package/src/controls/select-filter.tsx +5 -4
- package/src/controls/sync-button.tsx +18 -20
- package/src/controls/toggle-filter.tsx +5 -4
- package/src/controls/uncontrolled.ts +12 -0
- package/src/controls/view-tabs.tsx +3 -3
- package/src/controls-dates/date-range-picker.tsx +1 -1
- package/src/controls-dates/index.ts +0 -1
- package/src/dashboard/index.ts +7 -48
- package/src/dashboard/section.tsx +11 -40
- package/src/dashboard/stat-card.tsx +14 -16
- package/src/dashboard/widget-header.module.css +9 -7
- package/src/dev-dock.tsx +14 -27
- package/src/format/date.ts +2 -92
- package/src/format/index.ts +7 -53
- package/src/format/number.ts +3 -26
- package/src/format/shared.ts +2 -3
- package/src/forms/index.ts +0 -23
- package/src/guard/index.ts +36 -191
- package/src/guard/types.ts +6 -19
- package/src/index.ts +30 -282
- package/src/provider/create-router.tsx +138 -0
- package/src/provider/hotkeys.ts +70 -0
- package/src/provider/index.tsx +260 -230
- package/src/provider/lab-theme.ts +3 -2
- package/src/provider/route-transition.ts +199 -0
- package/src/provider/spotlight-actions.tsx +69 -0
- package/src/provider/test-router.tsx +25 -0
- package/src/query-client.ts +4 -22
- package/src/router-tanstack/index.ts +18 -112
- package/src/router-tanstack/nav.ts +28 -2
- package/src/router-tanstack/search-store.ts +9 -2
- package/src/router-tanstack/use-nav.ts +47 -13
- package/src/shell/app-mobile-nav.tsx +3 -2
- package/src/shell/app-sidebar.tsx +1 -1
- package/src/shell/aside-docking.ts +1 -1
- package/src/shell/index.tsx +61 -20
- package/src/shell/page-aside.tsx +47 -23
- package/src/shell/page-bar.tsx +3 -3
- package/src/shell/page-title.tsx +1 -1
- package/src/state.ts +11 -37
- package/src/styles.css +107 -7
- package/src/surfaces.ts +56 -151
- package/src/{data → table}/data-table-state.ts +5 -4
- package/src/{data → table}/data-table.tsx +170 -161
- package/src/table/index.ts +18 -0
- package/src/table/table-features.ts +102 -0
- package/src/telemetry.ts +110 -0
- package/src/theme/index.ts +22 -47
- package/src/theme/theme-toggle.module.css +30 -0
- package/src/theme/theme-toggle.module.css.d.ts +10 -0
- package/src/theme/theme-toggle.tsx +15 -43
- package/src/theme-lab/derive-controls.tsx +5 -3
- package/src/theme-lab/derive-state.ts +2 -1
- package/src/tokens/core.ts +1163 -0
- package/src/tokens/derive.ts +1 -1
- package/src/tokens/index.ts +14 -1181
- package/src/tokens/palette.ts +3 -7
- package/src/vite.ts +3 -3
- package/agent/templates/query-client.ts.tpl +0 -26
- package/dist/agent/adapter.d.ts +0 -150
- package/dist/agent/adapter.d.ts.map +0 -1
- package/dist/agent/adapter.js +0 -482
- package/dist/agent/use-agent-stream.d.ts +0 -35
- package/dist/agent/use-agent-stream.d.ts.map +0 -1
- package/dist/agent/use-agent-stream.js +0 -59
- package/dist/agent-chat/composer.d.ts.map +0 -1
- package/dist/agent-chat/index.d.ts +0 -31
- package/dist/agent-chat/index.d.ts.map +0 -1
- package/dist/agent-chat/index.js +0 -19
- package/dist/agent-chat/message-affordances.d.ts.map +0 -1
- package/dist/agent-chat/relative-time.d.ts.map +0 -1
- package/dist/agent-chat/thread-detail-panel.d.ts +0 -28
- package/dist/agent-chat/thread-detail-panel.d.ts.map +0 -1
- package/dist/agent-chat/thread-detail-panel.js +0 -115
- package/dist/agent-chat/thread-feed-row.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed.d.ts.map +0 -1
- package/dist/agent-chat/thread-message.d.ts.map +0 -1
- package/dist/agent-chat/thread-outcome-card.d.ts.map +0 -1
- package/dist/agent-chat/thread-workspace.d.ts +0 -44
- package/dist/agent-chat/thread-workspace.d.ts.map +0 -1
- package/dist/agent-chat/thread-workspace.js +0 -153
- package/dist/agent-chat/tool-chip.d.ts.map +0 -1
- package/dist/agent-chat/use-keyboard-inset.d.ts.map +0 -1
- package/dist/agent-chat/virtualize.d.ts.map +0 -1
- package/dist/charts/cursor/resolve.d.ts +0 -75
- package/dist/charts/cursor/resolve.d.ts.map +0 -1
- package/dist/charts/cursor/resolve.js +0 -91
- package/dist/charts/cursor/scope.d.ts +0 -20
- package/dist/charts/cursor/scope.d.ts.map +0 -1
- package/dist/charts/cursor/scope.js +0 -20
- package/dist/charts/cursor/store.d.ts +0 -35
- package/dist/charts/cursor/store.d.ts.map +0 -1
- package/dist/charts/cursor/store.js +0 -25
- package/dist/charts/cursor/touch-pin.d.ts +0 -45
- package/dist/charts/cursor/touch-pin.d.ts.map +0 -1
- package/dist/charts/cursor/touch-pin.js +0 -79
- package/dist/charts/hooks/use-discrete-cursor.d.ts +0 -66
- package/dist/charts/hooks/use-discrete-cursor.d.ts.map +0 -1
- package/dist/charts/hooks/use-discrete-cursor.js +0 -198
- package/dist/charts/hooks/use-hysteresis.d.ts +0 -18
- package/dist/charts/hooks/use-hysteresis.d.ts.map +0 -1
- package/dist/charts/hooks/use-hysteresis.js +0 -12
- package/dist/charts/hooks/useBandPlot.d.ts +0 -145
- package/dist/charts/hooks/useBandPlot.d.ts.map +0 -1
- package/dist/charts/hooks/useBandPlot.js +0 -178
- package/dist/charts/hooks/useChartCursor.d.ts +0 -75
- package/dist/charts/hooks/useChartCursor.d.ts.map +0 -1
- package/dist/charts/hooks/useChartCursor.js +0 -200
- package/dist/charts/hooks/useChartSize.d.ts +0 -29
- package/dist/charts/hooks/useChartSize.d.ts.map +0 -1
- package/dist/charts/hooks/useChartSize.js +0 -8
- package/dist/charts/kinds/BandStrip.d.ts +0 -132
- package/dist/charts/kinds/BandStrip.d.ts.map +0 -1
- package/dist/charts/kinds/BandStrip.js +0 -241
- package/dist/charts/kinds/Bars.d.ts +0 -141
- package/dist/charts/kinds/Bars.d.ts.map +0 -1
- package/dist/charts/kinds/Bars.js +0 -343
- package/dist/charts/kinds/Donut.d.ts +0 -77
- package/dist/charts/kinds/Donut.d.ts.map +0 -1
- package/dist/charts/kinds/Donut.js +0 -245
- package/dist/charts/kinds/DualPanel.d.ts +0 -111
- package/dist/charts/kinds/DualPanel.d.ts.map +0 -1
- package/dist/charts/kinds/DualPanel.js +0 -471
- package/dist/charts/kinds/Heatmap.d.ts +0 -85
- package/dist/charts/kinds/Heatmap.d.ts.map +0 -1
- package/dist/charts/kinds/Heatmap.js +0 -243
- package/dist/charts/kinds/MirroredBars.d.ts +0 -98
- package/dist/charts/kinds/MirroredBars.d.ts.map +0 -1
- package/dist/charts/kinds/MirroredBars.js +0 -292
- package/dist/charts/kinds/MultiLine.d.ts +0 -87
- package/dist/charts/kinds/MultiLine.d.ts.map +0 -1
- package/dist/charts/kinds/MultiLine.js +0 -176
- package/dist/charts/kinds/StackedArea.d.ts +0 -73
- package/dist/charts/kinds/StackedArea.d.ts.map +0 -1
- package/dist/charts/kinds/StackedArea.js +0 -135
- package/dist/charts/kinds/ZonedLine.d.ts +0 -97
- package/dist/charts/kinds/ZonedLine.d.ts.map +0 -1
- package/dist/charts/kinds/ZonedLine.js +0 -155
- package/dist/charts/kinds/band-chrome.d.ts +0 -31
- package/dist/charts/kinds/band-chrome.d.ts.map +0 -1
- package/dist/charts/kinds/band-chrome.js +0 -71
- package/dist/charts/kinds/donut-layout.d.ts +0 -47
- package/dist/charts/kinds/donut-layout.d.ts.map +0 -1
- package/dist/charts/kinds/donut-layout.js +0 -52
- package/dist/charts/layout/auto-margin.d.ts +0 -122
- package/dist/charts/layout/auto-margin.d.ts.map +0 -1
- package/dist/charts/layout/auto-margin.js +0 -81
- package/dist/charts/layout/end-labels.d.ts +0 -64
- package/dist/charts/layout/end-labels.d.ts.map +0 -1
- package/dist/charts/layout/end-labels.js +0 -76
- package/dist/charts/layout/log-ticks.d.ts +0 -27
- package/dist/charts/layout/log-ticks.d.ts.map +0 -1
- package/dist/charts/layout/log-ticks.js +0 -42
- package/dist/charts/primitives/AreaGradient.d.ts +0 -18
- package/dist/charts/primitives/AreaGradient.d.ts.map +0 -1
- package/dist/charts/primitives/AreaGradient.js +0 -13
- package/dist/charts/primitives/Axes.d.ts +0 -83
- package/dist/charts/primitives/Axes.d.ts.map +0 -1
- package/dist/charts/primitives/Axes.js +0 -168
- package/dist/charts/primitives/CartesianChart.d.ts +0 -257
- package/dist/charts/primitives/CartesianChart.d.ts.map +0 -1
- package/dist/charts/primitives/CartesianChart.js +0 -549
- package/dist/charts/primitives/ChartCard.d.ts +0 -66
- package/dist/charts/primitives/ChartCard.d.ts.map +0 -1
- package/dist/charts/primitives/ChartCard.js +0 -143
- package/dist/charts/primitives/ChartFrame.d.ts +0 -156
- package/dist/charts/primitives/ChartFrame.d.ts.map +0 -1
- package/dist/charts/primitives/ChartFrame.js +0 -241
- package/dist/charts/primitives/ChartLegend.d.ts +0 -67
- package/dist/charts/primitives/ChartLegend.d.ts.map +0 -1
- package/dist/charts/primitives/ChartLegend.js +0 -292
- package/dist/charts/primitives/ChartPending.d.ts +0 -113
- package/dist/charts/primitives/ChartPending.d.ts.map +0 -1
- package/dist/charts/primitives/ChartPending.js +0 -117
- package/dist/charts/primitives/ChartTooltip.d.ts +0 -59
- package/dist/charts/primitives/ChartTooltip.d.ts.map +0 -1
- package/dist/charts/primitives/ChartTooltip.js +0 -197
- package/dist/charts/primitives/Crosshair.d.ts +0 -26
- package/dist/charts/primitives/Crosshair.d.ts.map +0 -1
- package/dist/charts/primitives/Crosshair.js +0 -23
- package/dist/charts/primitives/HatchPattern.d.ts +0 -31
- package/dist/charts/primitives/HatchPattern.d.ts.map +0 -1
- package/dist/charts/primitives/HatchPattern.js +0 -31
- package/dist/charts/primitives/HoverOverlay.d.ts +0 -45
- package/dist/charts/primitives/HoverOverlay.d.ts.map +0 -1
- package/dist/charts/primitives/HoverOverlay.js +0 -72
- package/dist/charts/primitives/HoverOverlay.module.css +0 -13
- package/dist/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
- package/dist/charts/primitives/XZoneRects.d.ts +0 -54
- package/dist/charts/primitives/XZoneRects.d.ts.map +0 -1
- package/dist/charts/primitives/XZoneRects.js +0 -65
- package/dist/charts/primitives/ZoneRects.d.ts +0 -38
- package/dist/charts/primitives/ZoneRects.d.ts.map +0 -1
- package/dist/charts/primitives/ZoneRects.js +0 -30
- package/dist/charts/primitives/chart-card-context.d.ts +0 -33
- package/dist/charts/primitives/chart-card-context.d.ts.map +0 -1
- package/dist/charts/primitives/chart-card-context.js +0 -18
- package/dist/charts/primitives/chart-frame-layout.d.ts +0 -185
- package/dist/charts/primitives/chart-frame-layout.d.ts.map +0 -1
- package/dist/charts/primitives/chart-frame-layout.js +0 -175
- package/dist/charts/primitives/chart-layout.d.ts +0 -112
- package/dist/charts/primitives/chart-layout.d.ts.map +0 -1
- package/dist/charts/primitives/chart-layout.js +0 -175
- package/dist/charts/primitives/chart-tier.d.ts +0 -16
- package/dist/charts/primitives/chart-tier.d.ts.map +0 -1
- package/dist/charts/primitives/chart-tier.js +0 -44
- package/dist/charts/primitives/legend-disclosure.d.ts +0 -27
- package/dist/charts/primitives/legend-disclosure.d.ts.map +0 -1
- package/dist/charts/primitives/legend-disclosure.js +0 -153
- package/dist/charts/series.d.ts +0 -189
- package/dist/charts/series.d.ts.map +0 -1
- package/dist/charts/series.js +0 -84
- package/dist/charts/sparklines/BarSparkline.d.ts +0 -37
- package/dist/charts/sparklines/BarSparkline.d.ts.map +0 -1
- package/dist/charts/sparklines/BarSparkline.js +0 -53
- package/dist/charts/sparklines/LineSparkline.d.ts +0 -15
- package/dist/charts/sparklines/LineSparkline.d.ts.map +0 -1
- package/dist/charts/sparklines/LineSparkline.js +0 -51
- package/dist/charts/sparklines/index.d.ts +0 -3
- package/dist/charts/sparklines/index.d.ts.map +0 -1
- package/dist/charts/sparklines/index.js +0 -6
- package/dist/charts/utils/domain.d.ts +0 -35
- package/dist/charts/utils/domain.d.ts.map +0 -1
- package/dist/charts/utils/domain.js +0 -12
- package/dist/charts/utils/format.d.ts +0 -8
- package/dist/charts/utils/format.d.ts.map +0 -1
- package/dist/charts/utils/format.js +0 -20
- package/dist/charts/utils/measure-text.d.ts +0 -25
- package/dist/charts/utils/measure-text.d.ts.map +0 -1
- package/dist/charts/utils/measure-text.js +0 -64
- package/dist/charts/utils/ticks.d.ts +0 -103
- package/dist/charts/utils/ticks.d.ts.map +0 -1
- package/dist/charts/utils/ticks.js +0 -92
- package/dist/commands/overlays-mount.d.ts +0 -122
- package/dist/commands/overlays-mount.d.ts.map +0 -1
- package/dist/commands/overlays-mount.js +0 -125
- package/dist/commands/useCommandHotkeys.d.ts +0 -14
- package/dist/commands/useCommandHotkeys.d.ts.map +0 -1
- package/dist/commands/useCommandHotkeys.js +0 -45
- package/dist/content/article-actions.d.ts +0 -39
- package/dist/content/article-actions.d.ts.map +0 -1
- package/dist/content/article-actions.js +0 -28
- package/dist/content/article-card.d.ts +0 -58
- package/dist/content/article-card.d.ts.map +0 -1
- package/dist/content/article-card.js +0 -79
- package/dist/content/article-card.module.css +0 -111
- package/dist/content/mdx.d.ts +0 -20
- package/dist/content/mdx.d.ts.map +0 -1
- package/dist/content/mdx.js +0 -64
- package/dist/controls/compare-filter.d.ts +0 -42
- package/dist/controls/compare-filter.d.ts.map +0 -1
- package/dist/controls/compare-filter.js +0 -38
- package/dist/controls/slider-control.d.ts +0 -36
- package/dist/controls/slider-control.d.ts.map +0 -1
- package/dist/controls/slider-control.js +0 -64
- package/dist/dashboard/widget-grid.d.ts +0 -27
- package/dist/dashboard/widget-grid.d.ts.map +0 -1
- package/dist/dashboard/widget-grid.js +0 -40
- package/dist/dashboard/widget-grid.module.css +0 -69
- package/dist/data/data-table-state.d.ts.map +0 -1
- package/dist/data/data-table.d.ts.map +0 -1
- package/dist/data/query-branch.d.ts.map +0 -1
- package/dist/data/table.d.ts +0 -24
- package/dist/data/table.d.ts.map +0 -1
- package/dist/data/virtual-list.d.ts +0 -133
- package/dist/data/virtual-list.d.ts.map +0 -1
- package/dist/data/virtual-list.js +0 -157
- package/dist/data/virtual.d.ts +0 -21
- package/dist/data/virtual.d.ts.map +0 -1
- package/dist/data/virtual.js +0 -4
- package/dist/forms/FormErrorSummary.d.ts +0 -30
- package/dist/forms/FormErrorSummary.d.ts.map +0 -1
- package/dist/forms/FormErrorSummary.js +0 -30
- package/dist/forms/use-field-array.d.ts +0 -60
- package/dist/forms/use-field-array.d.ts.map +0 -1
- package/dist/forms/use-field-array.js +0 -20
- package/dist/forms/use-form-draft.d.ts +0 -76
- package/dist/forms/use-form-draft.d.ts.map +0 -1
- package/dist/forms/use-form-draft.js +0 -92
- package/dist/forms/use-form-submit.d.ts +0 -88
- package/dist/forms/use-form-submit.d.ts.map +0 -1
- package/dist/forms/use-form-submit.js +0 -63
- package/dist/notifications/bell.d.ts.map +0 -1
- package/dist/notifications/center.d.ts.map +0 -1
- package/dist/notifications/define-notifications.d.ts.map +0 -1
- package/dist/notifications/index.d.ts +0 -40
- package/dist/notifications/index.d.ts.map +0 -1
- package/dist/notifications/index.js +0 -54
- package/dist/notifications/mount-guard.d.ts +0 -8
- package/dist/notifications/mount-guard.d.ts.map +0 -1
- package/dist/notifications/mount-guard.js +0 -18
- package/dist/notifications/notify.d.ts +0 -149
- package/dist/notifications/notify.d.ts.map +0 -1
- package/dist/notifications/notify.js +0 -171
- package/dist/notifications/store.d.ts.map +0 -1
- package/dist/provider/connectivity-indicator.d.ts +0 -13
- package/dist/provider/connectivity-indicator.d.ts.map +0 -1
- package/dist/provider/connectivity-indicator.js +0 -205
- package/dist/provider/connectivity-provider.d.ts +0 -7
- package/dist/provider/connectivity-provider.d.ts.map +0 -1
- package/dist/provider/connectivity-provider.js +0 -128
- package/dist/provider/connectivity-types.d.ts +0 -36
- package/dist/provider/connectivity-types.d.ts.map +0 -1
- package/dist/provider/use-connectivity.d.ts +0 -3
- package/dist/provider/use-connectivity.d.ts.map +0 -1
- package/dist/provider/use-connectivity.js +0 -14
- package/dist/query-devtools.d.ts +0 -21
- package/dist/query-devtools.d.ts.map +0 -1
- package/dist/query-devtools.js +0 -13
- package/src/agent/adapter.ts +0 -945
- package/src/agent/use-agent-stream.ts +0 -154
- package/src/agent-chat/index.ts +0 -54
- package/src/agent-chat/thread-detail-panel.tsx +0 -201
- package/src/agent-chat/thread-workspace.tsx +0 -279
- package/src/charts/cursor/resolve.ts +0 -198
- package/src/charts/cursor/scope.tsx +0 -35
- package/src/charts/cursor/store.ts +0 -58
- package/src/charts/cursor/touch-pin.ts +0 -138
- package/src/charts/hooks/use-discrete-cursor.ts +0 -335
- package/src/charts/hooks/use-hysteresis.ts +0 -26
- package/src/charts/hooks/useBandPlot.ts +0 -383
- package/src/charts/hooks/useChartCursor.ts +0 -367
- package/src/charts/hooks/useChartSize.ts +0 -35
- package/src/charts/kinds/BandStrip.tsx +0 -449
- package/src/charts/kinds/Bars.tsx +0 -589
- package/src/charts/kinds/Donut.tsx +0 -368
- package/src/charts/kinds/DualPanel.tsx +0 -712
- package/src/charts/kinds/Heatmap.tsx +0 -396
- package/src/charts/kinds/MirroredBars.tsx +0 -469
- package/src/charts/kinds/MultiLine.tsx +0 -322
- package/src/charts/kinds/StackedArea.tsx +0 -267
- package/src/charts/kinds/ZonedLine.tsx +0 -301
- package/src/charts/kinds/band-chrome.tsx +0 -91
- package/src/charts/kinds/donut-layout.ts +0 -82
- package/src/charts/layout/auto-margin.ts +0 -242
- package/src/charts/layout/end-labels.ts +0 -135
- package/src/charts/layout/log-ticks.ts +0 -90
- package/src/charts/primitives/AreaGradient.tsx +0 -26
- package/src/charts/primitives/Axes.tsx +0 -271
- package/src/charts/primitives/CartesianChart.tsx +0 -1002
- package/src/charts/primitives/ChartCard.tsx +0 -280
- package/src/charts/primitives/ChartFrame.tsx +0 -493
- package/src/charts/primitives/ChartLegend.tsx +0 -422
- package/src/charts/primitives/ChartPending.tsx +0 -243
- package/src/charts/primitives/ChartTooltip.tsx +0 -265
- package/src/charts/primitives/Crosshair.tsx +0 -43
- package/src/charts/primitives/HatchPattern.tsx +0 -55
- package/src/charts/primitives/HoverOverlay.module.css +0 -13
- package/src/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
- package/src/charts/primitives/HoverOverlay.tsx +0 -109
- package/src/charts/primitives/XZoneRects.tsx +0 -132
- package/src/charts/primitives/ZoneRects.tsx +0 -67
- package/src/charts/primitives/chart-card-context.ts +0 -46
- package/src/charts/primitives/chart-frame-layout.ts +0 -430
- package/src/charts/primitives/chart-layout.ts +0 -318
- package/src/charts/primitives/chart-tier.tsx +0 -76
- package/src/charts/primitives/legend-disclosure.tsx +0 -178
- package/src/charts/series.ts +0 -276
- package/src/charts/sparklines/BarSparkline.tsx +0 -94
- package/src/charts/sparklines/LineSparkline.tsx +0 -71
- package/src/charts/sparklines/index.ts +0 -2
- package/src/charts/theme.tsx +0 -53
- package/src/charts/utils/domain.ts +0 -41
- package/src/charts/utils/format.ts +0 -19
- package/src/charts/utils/measure-text.ts +0 -109
- package/src/charts/utils/ticks.ts +0 -239
- package/src/commands/overlays-mount.tsx +0 -333
- package/src/commands/useCommandHotkeys.ts +0 -114
- package/src/content/article-actions.ts +0 -72
- package/src/content/article-card.module.css +0 -111
- package/src/content/article-card.tsx +0 -174
- package/src/content/mdx.tsx +0 -127
- package/src/controls/compare-filter.tsx +0 -81
- package/src/controls/slider-control.tsx +0 -159
- package/src/dashboard/widget-grid.module.css +0 -69
- package/src/dashboard/widget-grid.tsx +0 -146
- package/src/data/table.ts +0 -39
- package/src/data/virtual-list.tsx +0 -356
- package/src/data/virtual.ts +0 -26
- package/src/forms/FormErrorSummary.tsx +0 -71
- package/src/forms/use-field-array.ts +0 -94
- package/src/forms/use-form-draft.ts +0 -262
- package/src/forms/use-form-submit.ts +0 -199
- package/src/notifications/index.ts +0 -88
- package/src/notifications/mount-guard.ts +0 -38
- package/src/notifications/notify.tsx +0 -379
- package/src/provider/connectivity-indicator.tsx +0 -267
- package/src/provider/connectivity-provider.tsx +0 -189
- package/src/provider/connectivity-types.ts +0 -42
- package/src/provider/use-connectivity.ts +0 -26
- package/src/query-devtools.tsx +0 -40
- /package/dist/{agent-chat → agent/chat}/message-affordances.js +0 -0
- /package/dist/{agent-chat → agent/chat}/relative-time.d.ts +0 -0
- /package/dist/{agent-chat → agent/chat}/relative-time.js +0 -0
- /package/dist/{agent-chat → agent/chat}/use-keyboard-inset.d.ts +0 -0
- /package/dist/{agent-chat → agent/chat}/virtualize.js +0 -0
- /package/dist/{notifications → commands/notifications}/bell.js +0 -0
- /package/dist/{notifications → commands/notifications}/define-notifications.js +0 -0
- /package/dist/{provider/connectivity-types.js → controls/uncontrolled.js} +0 -0
- /package/dist/{data → table}/data-table.module.css +0 -0
- /package/dist/{data → table}/data-table.module.css.d.ts +0 -0
- /package/dist/{data → table}/query-branch.d.ts +0 -0
- /package/dist/{data → table}/query-branch.js +0 -0
- /package/src/{agent-chat → agent/chat}/relative-time.ts +0 -0
- /package/src/{data → table}/data-table.module.css +0 -0
- /package/src/{data → table}/data-table.module.css.d.ts +0 -0
- /package/src/{data → table}/query-branch.ts +0 -0
package/src/index.ts
CHANGED
|
@@ -1,308 +1,56 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* basalt-ui root barrel — the Mantine-coupled surface
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* basalt-ui root barrel — the Mantine-coupled surface: provider, theme, the app shell and the
|
|
3
|
+
* dashboard atoms. The Mantine-free token/chart layer is published under `basalt-ui/tokens` and
|
|
4
|
+
* `basalt-ui/charts`, NOT re-exported here, so a tokens/charts-only consumer never pulls in
|
|
5
|
+
* `@mantine/*`. One import path per symbol: `docs/V2-SPEC.md` § 1; the per-symbol verdicts are
|
|
6
|
+
* `docs/waves/v2-surface.md`.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
export {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
type
|
|
14
|
-
|
|
15
|
-
} from './
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
export {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
type SlotStylesProps,
|
|
28
|
-
type Tone,
|
|
29
|
-
type ToneWithNeutral,
|
|
30
|
-
type Tier,
|
|
31
|
-
cx,
|
|
32
|
-
scrollParentOf,
|
|
33
|
-
SCROLLPORT_ATTRIBUTE,
|
|
34
|
-
useCoarsePointer,
|
|
35
|
-
} from './common'
|
|
36
|
-
|
|
37
|
-
export { createBasaltTheme, baseTheme, cssVariablesResolver } from './theme'
|
|
38
|
-
export type { BasaltFontsConfig, CreateBasaltThemeOptions } from './theme'
|
|
39
|
-
export { CTL_THEME, CtlSlot } from './theme'
|
|
40
|
-
export type { CtlSlotProps } from './theme'
|
|
41
|
-
/**
|
|
42
|
-
* The ACTIVE resolved spacing off the running theme, not the frozen level-0 `SPACE`/`SPACE_STEP`
|
|
43
|
-
* snapshot on `basalt-ui/tokens`. Public because a consumer laying out ITS OWN chrome beside the
|
|
44
|
-
* shell's (a sticky sub-header under the app header, a fixed rail beside the navbar) has to hit the
|
|
45
|
-
* same rhythm the shell resolved, and every one of those numbers is JS-consumed — an AppShell
|
|
46
|
-
* dimension or a `<Menu width={…}>` — so there is no `--vx-*` var to read it from instead. See
|
|
47
|
-
* `theme/use-basalt-spacing.ts` for the level-0 fallback contract.
|
|
48
|
-
*/
|
|
49
|
-
export { useBasaltSpacing } from './theme'
|
|
50
|
-
export { ThemeToggle, type ThemeToggleProps } from './theme/theme-toggle'
|
|
51
|
-
/**
|
|
52
|
-
* The action vocabulary every home's `actions` slot takes (`docs/CONTROLS-SPEC.md` §2.1). The
|
|
53
|
-
* OTHER components that project it (`OverflowMenu`, `SyncButton`, and the filter family) live on
|
|
54
|
-
* `basalt-ui/controls`; `ActionGroup` is re-exported here alongside its own types so a typed
|
|
55
|
-
* `PageBar`/`BasaltShell` `actions` wrapper needs only this one subpath.
|
|
56
|
-
*/
|
|
57
|
-
export {
|
|
58
|
-
ActionGroup,
|
|
59
|
-
type BarAction,
|
|
60
|
-
type ActionGroupProps,
|
|
61
|
-
type GlobalAction,
|
|
62
|
-
} from './controls/actions'
|
|
63
|
-
export { MOTION_DURATION, MOTION_SPRING, MOTION_EASE_STANDARD } from './common/motion'
|
|
9
|
+
export { BasaltProvider } from './provider'
|
|
10
|
+
export {
|
|
11
|
+
createBasaltRouter,
|
|
12
|
+
type BasaltRouter,
|
|
13
|
+
type BasaltRouterContext,
|
|
14
|
+
} from './provider/create-router'
|
|
15
|
+
export type { BasaltEvent } from './telemetry'
|
|
16
|
+
export {
|
|
17
|
+
defineNav,
|
|
18
|
+
navGroup,
|
|
19
|
+
navTarget,
|
|
20
|
+
flattenNav,
|
|
21
|
+
useBasaltNav,
|
|
22
|
+
type NavItemId,
|
|
23
|
+
} from './router-tanstack'
|
|
24
|
+
export { scrollParentOf, useCoarsePointer } from './common'
|
|
25
|
+
export { createBasaltTheme } from './theme'
|
|
26
|
+
export { ThemeToggle } from './theme/theme-toggle'
|
|
64
27
|
export {
|
|
65
28
|
BasaltShell,
|
|
66
|
-
NavCountBadge,
|
|
67
|
-
type NavCountBadgeProps,
|
|
68
|
-
AppSidebar,
|
|
69
|
-
SidebarSearch,
|
|
70
|
-
type SidebarSearchProps,
|
|
71
|
-
type SidebarSearchConfig,
|
|
72
|
-
type SidebarSearchActions,
|
|
73
|
-
SidebarAccount,
|
|
74
|
-
MobileNav,
|
|
75
|
-
type MobileNavProps,
|
|
76
|
-
projectMobileNav,
|
|
77
|
-
type ProjectMobileNavOptions,
|
|
78
|
-
MOBILE_MAX_TABS_DEFAULT,
|
|
79
|
-
MOBILE_MENU_MAX_DEFAULT,
|
|
80
|
-
MOBILE_MORE_KEY,
|
|
81
|
-
AppBreadcrumbs,
|
|
82
|
-
type AppBreadcrumbsProps,
|
|
83
29
|
PageBar,
|
|
84
|
-
type PageBarProps,
|
|
85
|
-
type PageBarSlot,
|
|
86
30
|
PageAside,
|
|
87
|
-
type PageAsideProps,
|
|
88
|
-
type PageAsideSlot,
|
|
89
31
|
useSizeClass,
|
|
90
|
-
type SizeClass,
|
|
91
32
|
PageTitle,
|
|
92
|
-
type
|
|
93
|
-
type PageTitleSlot,
|
|
94
|
-
type SidebarSection,
|
|
95
|
-
type SidebarItem,
|
|
33
|
+
type ShellBaseProps,
|
|
96
34
|
type SidebarBlock,
|
|
97
|
-
type SidebarBlockItem,
|
|
98
|
-
type SidebarBlockTone,
|
|
99
|
-
type SidebarListBlock,
|
|
100
|
-
type SidebarProgressBlock,
|
|
101
|
-
type SidebarCustomBlock,
|
|
102
|
-
type NavAnchor,
|
|
103
|
-
type NavAnchorProps,
|
|
104
|
-
type NavMobilePlacement,
|
|
105
|
-
type NavSectionMobile,
|
|
106
|
-
type MobileNavConfig,
|
|
107
|
-
type MobileNavGroup,
|
|
108
|
-
type MobileNavModel,
|
|
109
|
-
type MobileNavSlot,
|
|
110
|
-
type MobileNavSurface,
|
|
111
|
-
type BasaltShellProps,
|
|
112
|
-
type BrandConfig,
|
|
113
35
|
type SettingsMenuItem,
|
|
114
|
-
type AppSidebarProps,
|
|
115
|
-
type AccountBadgeTone,
|
|
116
|
-
type BasaltIdentity,
|
|
117
|
-
type BasaltRole,
|
|
118
|
-
type BasaltPlan,
|
|
119
|
-
type AccountMenuItem,
|
|
120
|
-
type BasaltAccountState,
|
|
121
|
-
type BasaltAccountActions,
|
|
122
|
-
type BasaltAccountProps,
|
|
123
36
|
} from './shell'
|
|
124
|
-
|
|
125
|
-
// ── Design seam (register.ts) ─────────────────────────────────────────────────────────────────────
|
|
126
|
-
// BasaltRegister MUST be exported from the package main entry so `declare module 'basalt-ui'`
|
|
127
|
-
// augmentation works — a consumer cannot augment 'basalt-ui/charts'.
|
|
128
|
-
export {
|
|
129
|
-
type BasaltRegister,
|
|
130
|
-
type Slot,
|
|
131
|
-
type Series,
|
|
132
|
-
type SeriesKey,
|
|
133
|
-
type AsyncState,
|
|
134
|
-
assertNever,
|
|
135
|
-
type StandardSchemaV1,
|
|
136
|
-
} from './register'
|
|
137
|
-
|
|
138
|
-
// ── Persisted state + the headless store kernel (state.ts) ───────────────────────────────────────
|
|
139
|
-
// The `field.*` VALUE is deliberately not re-exported here. `basalt-ui/forms` used to own the
|
|
140
|
-
// name `field` too and collide with this one; that forms helper is `inputProps` now (the
|
|
141
|
-
// `@deprecated field` alias was removed in 1.29.0, C1 consolidation — see MIGRATING.md). Import
|
|
142
|
-
// `field.*` from `basalt-ui/router-tanstack` (beside `createSearchStore`) or from `basalt-ui/state`
|
|
143
|
-
// (beside `createLocalStore`).
|
|
144
|
-
export {
|
|
145
|
-
createPersistedState,
|
|
146
|
-
type PersistedStateOptions,
|
|
147
|
-
readPersistedValue,
|
|
148
|
-
createLocalStore,
|
|
149
|
-
type LocalStore,
|
|
150
|
-
type AnyField,
|
|
151
|
-
type BooleanField,
|
|
152
|
-
type EnumField,
|
|
153
|
-
type FieldFallback,
|
|
154
|
-
type FieldHandle,
|
|
155
|
-
type FieldLane,
|
|
156
|
-
type FieldOption,
|
|
157
|
-
type FieldSetOptions,
|
|
158
|
-
type FieldValue,
|
|
159
|
-
type MultiField,
|
|
160
|
-
type NumberField,
|
|
161
|
-
type RangeField,
|
|
162
|
-
type RangeParams,
|
|
163
|
-
type RangePresets,
|
|
164
|
-
type RangeValue,
|
|
165
|
-
type RangeWindow,
|
|
166
|
-
type RangeWindows,
|
|
167
|
-
type ResolvedLane,
|
|
168
|
-
type ResolveLane,
|
|
169
|
-
type SearchValues,
|
|
170
|
-
type StoredValues,
|
|
171
|
-
type StringField,
|
|
172
|
-
} from './state'
|
|
173
|
-
|
|
174
|
-
// ── Dashboard composites (WidgetHeader/Section heading family + KPI atoms + settings building
|
|
175
|
-
// blocks, docs/CONTROLS-SPEC.md §2.2) ──────────────────────────────────────────────────────────────
|
|
176
37
|
export {
|
|
177
38
|
WidgetHeader,
|
|
178
|
-
type WidgetHeaderDeltaProps,
|
|
179
|
-
type WidgetHeaderMetricProps,
|
|
180
|
-
type WidgetHeaderProps,
|
|
181
|
-
type WidgetHeaderSlot,
|
|
182
|
-
type WidgetHeaderTier,
|
|
183
|
-
type WidgetHeaderTitleProps,
|
|
184
39
|
DeltaBadge,
|
|
185
|
-
type DeltaBadgeProps,
|
|
186
|
-
type DeltaPolarity,
|
|
187
40
|
Section,
|
|
188
|
-
type SectionProps,
|
|
189
|
-
type SectionSlot,
|
|
190
41
|
StatCard,
|
|
191
42
|
type StatCardBreakdownRow,
|
|
192
|
-
type StatCardProps,
|
|
193
|
-
type StatCardSlot,
|
|
194
43
|
type StatCardTone,
|
|
195
|
-
WidgetGrid,
|
|
196
|
-
type WidgetGridCols,
|
|
197
|
-
type WidgetGridItemProps,
|
|
198
|
-
type WidgetGridProps,
|
|
199
44
|
StatGroup,
|
|
200
|
-
type StatGroupCols,
|
|
201
|
-
type StatGroupProps,
|
|
202
45
|
EmptyState,
|
|
203
|
-
type EmptyStateProps,
|
|
204
|
-
type EmptyStateSlot,
|
|
205
46
|
SettingsSection,
|
|
206
|
-
type SettingsSectionProps,
|
|
207
|
-
type SettingsSectionSlot,
|
|
208
47
|
SettingsRow,
|
|
209
|
-
type SettingsRowProps,
|
|
210
|
-
type SettingsRowSlot,
|
|
211
48
|
DangerZone,
|
|
212
|
-
type DangerZoneProps,
|
|
213
|
-
QueryState,
|
|
214
|
-
type QueryStateProps,
|
|
215
|
-
type QueryStateLike,
|
|
216
|
-
type QueryStateSlot,
|
|
217
|
-
type QueryStateTier,
|
|
218
|
-
type QueryEmptyCopy,
|
|
219
|
-
LoadingState,
|
|
220
|
-
type LoadingStateProps,
|
|
221
|
-
ErrorState,
|
|
222
|
-
type ErrorStateProps,
|
|
223
49
|
} from './dashboard'
|
|
50
|
+
export { unwrap } from './query-client'
|
|
224
51
|
|
|
225
|
-
//
|
|
226
|
-
//
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
export {
|
|
230
|
-
export type {
|
|
231
|
-
ConnectivityStatus,
|
|
232
|
-
ConnectivitySnapshot,
|
|
233
|
-
ConnectivityProviderProps,
|
|
234
|
-
ConnectivityOverride,
|
|
235
|
-
} from './provider/connectivity-types'
|
|
236
|
-
export type { ConnectivityIndicatorProps } from './provider/connectivity-indicator'
|
|
237
|
-
|
|
238
|
-
// ── Query (createBasaltQueryClient, unwrap, lazy devtools — dropped ./query subpath) ──────────────
|
|
239
|
-
export { createBasaltQueryClient, unwrap } from './query-client'
|
|
240
|
-
export { BasaltQueryDevtools } from './query-devtools'
|
|
241
|
-
export { toErrorMessage, errorStatus } from './common/errors'
|
|
242
|
-
|
|
243
|
-
// ── BasaltDevDock (C5 consolidation) ────────────────────────────────────────────────────────────
|
|
244
|
-
export { BasaltDevDock, type BasaltDevDockProps, type BasaltDevDockTool } from './dev-dock'
|
|
245
|
-
|
|
246
|
-
// ── Type-only re-exports for compile fixtures (H.4) ──────────────────────────────────────────────
|
|
247
|
-
// SurfaceSpec/RuleName/SkillName: the value SURFACES stays internal; types only for surfaces-broken
|
|
248
|
-
// fixture. GuardKind: type-only for fixture completeness. No ./surfaces subpath exposed.
|
|
249
|
-
export type { SurfaceSpec, RuleName, SkillName } from './surfaces'
|
|
250
|
-
export type { GuardKind } from './guard/types'
|
|
251
|
-
|
|
252
|
-
// ── Agent chat (thread feed + detail workspace) ──────────────────────────────────────────────────
|
|
253
|
-
// Everything from `./agent-chat` (Mantine-styled thread-chat components + the flagship
|
|
254
|
-
// ThreadWorkspace) belongs at the root. From the headless `./agent` layer, SELECTIVELY re-export
|
|
255
|
-
// only the pieces a ThreadWorkspace consumer needs — NOT an export-star — so the optional-peer
|
|
256
|
-
// BasaltStickToBottom and the rest of `./agent` stay off the root entry; `edenTransport` stays out
|
|
257
|
-
// too, sourced from `basalt-ui/agent` instead. `agent-chat/thread-message.tsx` DOES reach
|
|
258
|
-
// `./content`'s `Markdown` for its text renderer — root's markdown/shiki/mermaid optional peers
|
|
259
|
-
// come from that path, not from `./agent`.
|
|
260
|
-
export {
|
|
261
|
-
ThreadWorkspace,
|
|
262
|
-
ThreadFeed,
|
|
263
|
-
ThreadFeedRow,
|
|
264
|
-
ThreadOutcomeCard,
|
|
265
|
-
ThreadDetailPanel,
|
|
266
|
-
Composer,
|
|
267
|
-
threadPartRenderers,
|
|
268
|
-
ThreadTranscript,
|
|
269
|
-
ToolChip,
|
|
270
|
-
} from './agent-chat'
|
|
271
|
-
export type {
|
|
272
|
-
ThreadWorkspaceProps,
|
|
273
|
-
ThreadFeedProps,
|
|
274
|
-
ThreadFeedRowProps,
|
|
275
|
-
ThreadOutcomeCardProps,
|
|
276
|
-
ThreadDetailPanelProps,
|
|
277
|
-
ComposerProps,
|
|
278
|
-
ComposerSubmit,
|
|
279
|
-
ComposerAttachment,
|
|
280
|
-
ComposerHandle,
|
|
281
|
-
ThreadTranscriptProps,
|
|
282
|
-
MessageAffordances,
|
|
283
|
-
VirtualizeOptions,
|
|
284
|
-
VirtualizeProps,
|
|
285
|
-
RowHeightProps,
|
|
286
|
-
ToolChipProps,
|
|
287
|
-
} from './agent-chat'
|
|
288
|
-
export {
|
|
289
|
-
createAdapterThreadsStore,
|
|
290
|
-
createThreadsStore,
|
|
291
|
-
heuristicOutcome,
|
|
292
|
-
threadsStoreAdapterContract,
|
|
293
|
-
useAgentThreadRuns,
|
|
294
|
-
} from './agent'
|
|
295
|
-
export type {
|
|
296
|
-
AdapterThreadsStoreOptions,
|
|
297
|
-
AgentThread,
|
|
298
|
-
AgentOutcome,
|
|
299
|
-
ThreadStatus,
|
|
300
|
-
ThreadsStore,
|
|
301
|
-
ThreadsStoreAdapter,
|
|
302
|
-
ThreadsStoreAdapterContractCase,
|
|
303
|
-
ThreadsStoreOptions,
|
|
304
|
-
OutcomeResolver,
|
|
305
|
-
ChatMessage,
|
|
306
|
-
AgentPart,
|
|
307
|
-
AgentTransport,
|
|
308
|
-
} from './agent'
|
|
52
|
+
// The one augmentable seam: `declare module 'basalt-ui' { interface BasaltRegister { … } }` only
|
|
53
|
+
// merges when the entry exports the interface. `v2-surface.md` marks it `delete` (no consumer
|
|
54
|
+
// *names* it), but every typed registry (commands, overlays, notifications, series) resolves
|
|
55
|
+
// through it — augmentation is not an import, so the consumer count missed it.
|
|
56
|
+
export type { BasaltRegister, SeriesKey } from './register'
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `createBasaltRouter` — the router + QueryClient wiring (V2-SPEC § 2). One `QueryClient` per call
|
|
3
|
+
* (so an SSR entry gets one per request), carried on `context.queryClient`, plus the router
|
|
4
|
+
* defaults basalt owns: intent preloading with Query-owned freshness, scroll restoration, the
|
|
5
|
+
* pending / error / not-found components, and the route view transition (direction from the
|
|
6
|
+
* `BasaltShell` nav order, V2-SPEC § 5).
|
|
7
|
+
*/
|
|
8
|
+
import { Button, Center, Loader, Stack, Text } from '@mantine/core'
|
|
9
|
+
import type { QueryClient, QueryClientConfig } from '@tanstack/react-query'
|
|
10
|
+
import { Router, createRouter } from '@tanstack/react-router'
|
|
11
|
+
import type { AnyRoute, ErrorComponentProps, RouterHistory } from '@tanstack/react-router'
|
|
12
|
+
import { toErrorMessage } from '../common/errors'
|
|
13
|
+
import { makeQueryClient } from '../query-client'
|
|
14
|
+
import { errorName, now, routerTelemetry } from '../telemetry'
|
|
15
|
+
import {
|
|
16
|
+
guardViewTransitionRejections,
|
|
17
|
+
routeViewTransition,
|
|
18
|
+
supportsViewTransitionTypes,
|
|
19
|
+
} from './route-transition'
|
|
20
|
+
|
|
21
|
+
/** The root route's context: `createRootRouteWithContext<BasaltRouterContext>()`. */
|
|
22
|
+
export type BasaltRouterContext = {
|
|
23
|
+
queryClient: QueryClient
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
type BasaltRouterBase<TRouteTree extends AnyRoute> = Router<
|
|
27
|
+
TRouteTree,
|
|
28
|
+
'never',
|
|
29
|
+
false,
|
|
30
|
+
RouterHistory,
|
|
31
|
+
Record<string, any> // oxlint-disable-line typescript/no-explicit-any -- TanStack's own default
|
|
32
|
+
>
|
|
33
|
+
|
|
34
|
+
declare const basaltRouterBrand: unique symbol
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* What `createBasaltRouter` returns, and the only router `BasaltProvider` accepts. The brand is
|
|
38
|
+
* type-level only: a plain `createRouter(...)` has the same shape without it and fails to compile,
|
|
39
|
+
* because the provider needs the `queryClient` context and the defaults `createBasaltRouter` sets.
|
|
40
|
+
*
|
|
41
|
+
* The route-tree default is TanStack's own `AnyRouter` shape (`any`): a specific tree is not
|
|
42
|
+
* assignable to `AnyRoute`, and `BasaltProvider` accepts any tree.
|
|
43
|
+
*/
|
|
44
|
+
export type BasaltRouter<
|
|
45
|
+
TRouteTree extends AnyRoute = any, // oxlint-disable-line typescript/no-explicit-any -- see JSDoc
|
|
46
|
+
> = BasaltRouterBase<TRouteTree> & {
|
|
47
|
+
readonly [basaltRouterBrand]: true
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function PendingComponent() {
|
|
51
|
+
return (
|
|
52
|
+
<Center py="xl">
|
|
53
|
+
<Loader size="sm" />
|
|
54
|
+
</Center>
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function ErrorComponent({ error, reset }: ErrorComponentProps) {
|
|
59
|
+
return (
|
|
60
|
+
<Stack align="flex-start" gap="xs" p="md">
|
|
61
|
+
<Text fw={600}>Something went wrong</Text>
|
|
62
|
+
<Text c="dimmed" size="sm">
|
|
63
|
+
{toErrorMessage(error)}
|
|
64
|
+
</Text>
|
|
65
|
+
<Button size="compact-sm" variant="default" onClick={reset}>
|
|
66
|
+
Try again
|
|
67
|
+
</Button>
|
|
68
|
+
</Stack>
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function NotFoundComponent() {
|
|
73
|
+
return (
|
|
74
|
+
<Stack gap={4} p="md">
|
|
75
|
+
<Text fw={600}>Page not found</Text>
|
|
76
|
+
<Text c="dimmed" size="sm">
|
|
77
|
+
This address does not match any page.
|
|
78
|
+
</Text>
|
|
79
|
+
</Stack>
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Side effect, once per document: wraps `document.startViewTransition` so a skipped route
|
|
85
|
+
* transition (`AbortError`) never becomes an unhandled rejection (`guardViewTransitionRejections`).
|
|
86
|
+
* Nothing else global is touched.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* const router = createBasaltRouter({ routeTree })
|
|
90
|
+
* declare module '@tanstack/react-router' {
|
|
91
|
+
* interface Register { router: typeof router }
|
|
92
|
+
* }
|
|
93
|
+
* // extra context (argo's auth) extends BasaltRouterContext:
|
|
94
|
+
* const router = createBasaltRouter({ routeTree, context: { auth }, query: { queryCache } })
|
|
95
|
+
*/
|
|
96
|
+
export function createBasaltRouter<
|
|
97
|
+
TRouteTree extends AnyRoute,
|
|
98
|
+
TContext extends object = Record<never, never>,
|
|
99
|
+
>(options: {
|
|
100
|
+
routeTree: TRouteTree
|
|
101
|
+
/** Context beyond `queryClient`; the root route's context type extends `BasaltRouterContext`. */
|
|
102
|
+
context?: TContext
|
|
103
|
+
/** Merged over basalt's QueryClient defaults (`staleTime` 30 s, `gcTime` 5 min, `retry` 2, no refetch on focus). */
|
|
104
|
+
query?: QueryClientConfig
|
|
105
|
+
/** Route transitions are basalt's (V2-SPEC § 5): the router's would double them. */
|
|
106
|
+
defaultViewTransition?: never
|
|
107
|
+
}): BasaltRouter<TRouteTree> {
|
|
108
|
+
guardViewTransitionRejections()
|
|
109
|
+
const queryClient = makeQueryClient(options.query)
|
|
110
|
+
const router: BasaltRouterBase<TRouteTree> = createRouter({
|
|
111
|
+
routeTree: options.routeTree,
|
|
112
|
+
context: { ...options.context, queryClient },
|
|
113
|
+
defaultPreload: 'intent',
|
|
114
|
+
// Query owns freshness: a preload must not be cached a second time by the router.
|
|
115
|
+
defaultPreloadStaleTime: 0,
|
|
116
|
+
scrollRestoration: true,
|
|
117
|
+
// Route changes only; React's `<ViewTransition>` stays for in-page changes (the aside fold).
|
|
118
|
+
// Types-gated: without `:active-view-transition-type()` the router would crossfade the whole page.
|
|
119
|
+
defaultViewTransition: supportsViewTransitionTypes() ? routeViewTransition : false,
|
|
120
|
+
defaultPendingComponent: PendingComponent,
|
|
121
|
+
defaultErrorComponent: ErrorComponent,
|
|
122
|
+
defaultNotFoundComponent: NotFoundComponent,
|
|
123
|
+
defaultOnCatch: (error: unknown) => {
|
|
124
|
+
if (process.env.NODE_ENV !== 'production') console.error('[basalt] route error', error)
|
|
125
|
+
routerTelemetry(router)({
|
|
126
|
+
type: 'route.error',
|
|
127
|
+
failed: true,
|
|
128
|
+
start: now(),
|
|
129
|
+
attributes: {
|
|
130
|
+
'basalt.route.id': router.state.matches.at(-1)?.routeId ?? 'unknown',
|
|
131
|
+
'exception.type': errorName(error),
|
|
132
|
+
'basalt.error.kind': 'route',
|
|
133
|
+
},
|
|
134
|
+
})
|
|
135
|
+
},
|
|
136
|
+
})
|
|
137
|
+
return router as BasaltRouter<TRouteTree>
|
|
138
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command shortcuts from the `defineCommands` registry, bound only when the registry has a
|
|
3
|
+
* `shortcut`. `@tanstack/react-hotkeys` is subpath-required for `./commands`, so it is reached
|
|
4
|
+
* through `import()` only and its runtime stays off first paint (V2-SPEC § 2).
|
|
5
|
+
*
|
|
6
|
+
* `defineCommands` has no loader-registration seam yet; when `./commands` grows one (it calls this
|
|
7
|
+
* module's loader instead), this registry check is what goes away.
|
|
8
|
+
*/
|
|
9
|
+
import type { HotkeyRegistrationHandle } from '@tanstack/react-hotkeys'
|
|
10
|
+
import { useEffect } from 'react'
|
|
11
|
+
import { getActiveCommands } from '../commands/define-commands'
|
|
12
|
+
import type { Command } from '../commands/define-commands'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Runs a command, swallowing a sync throw or async rejection so a failing command never becomes an
|
|
16
|
+
* unhandled rejection (which the provider would report as a `window.error`). Dev logs it.
|
|
17
|
+
*/
|
|
18
|
+
export function runCommandSafely(cmd: Command): void {
|
|
19
|
+
const report = (error: unknown): void => {
|
|
20
|
+
if (process.env.NODE_ENV !== 'production') console.error('[basalt] command failed', error)
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
Promise.resolve(cmd.run()).catch(report)
|
|
24
|
+
} catch (error) {
|
|
25
|
+
report(error)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function useRegistryHotkeys(): void {
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
const commands = Object.values(getActiveCommands()).filter((c) => c.shortcut !== undefined)
|
|
32
|
+
if (commands.length === 0) return
|
|
33
|
+
|
|
34
|
+
let cancelled = false
|
|
35
|
+
const handles: HotkeyRegistrationHandle[] = []
|
|
36
|
+
|
|
37
|
+
// An absent peer is a silent no-op: shortcuts simply do not bind.
|
|
38
|
+
void import('@tanstack/react-hotkeys')
|
|
39
|
+
.catch(() => undefined)
|
|
40
|
+
.then((peer) => {
|
|
41
|
+
if (cancelled || peer === undefined) return
|
|
42
|
+
const manager = peer.getHotkeyManager()
|
|
43
|
+
for (const cmd of commands) {
|
|
44
|
+
if (cmd.shortcut === undefined) continue
|
|
45
|
+
handles.push(
|
|
46
|
+
manager.register(
|
|
47
|
+
cmd.shortcut,
|
|
48
|
+
(event) => {
|
|
49
|
+
// The `when` gate is read at press time, not at registration.
|
|
50
|
+
if (cmd.when !== undefined && !cmd.when()) return
|
|
51
|
+
event.preventDefault()
|
|
52
|
+
runCommandSafely(cmd)
|
|
53
|
+
},
|
|
54
|
+
{ preventDefault: false },
|
|
55
|
+
),
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
.catch((error: unknown) => {
|
|
60
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
61
|
+
console.error('[basalt] command hotkeys failed to bind', error)
|
|
62
|
+
}
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
return () => {
|
|
66
|
+
cancelled = true
|
|
67
|
+
for (const handle of handles) handle.unregister()
|
|
68
|
+
}
|
|
69
|
+
}, [])
|
|
70
|
+
}
|