basalt-ui 1.40.3 → 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 +50 -45
- package/CHANGELOG.md +543 -513
- package/MIGRATING.md +969 -37
- package/README.md +172 -367
- 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 +30 -0
- package/agent/templates/DESIGN.md.tpl +2 -2
- package/agent/templates/__root.tpl +9 -16
- package/agent/templates/main.tpl +21 -0
- package/agent/templates/nav.tpl +18 -0
- package/configs/check.yml +1 -1
- package/configs/oxlint-basalt.json +4 -10
- package/configs/oxlint-plugin.js +468 -847
- package/configs/oxlint-plugin.test.ts +662 -710
- 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/foreign.d.ts +3 -2
- package/dist/agent/foreign.d.ts.map +1 -1
- 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 -26
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +79 -8
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +2 -4
- package/dist/cli/index.d.ts +68 -135
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +89 -76
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +43 -27
- package/dist/cli/sync.d.ts +5 -21
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +4 -6
- 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/copy-action.d.ts +1 -1
- package/dist/content/glyphs.d.ts +1 -1
- 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/foreign.ts +3 -2
- 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 +120 -68
- package/src/cli/help.ts +2 -4
- package/src/cli/index.ts +161 -276
- package/src/cli/init.ts +60 -37
- package/src/cli/sync.ts +13 -45
- 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/copy-action.tsx +1 -1
- package/src/content/glyphs.tsx +1 -1
- 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 +37 -192
- 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/CLAUDE-block.md.tpl +0 -40
- 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/dist/cli/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
readFileSync,
|
|
8
8
|
rmdirSync,
|
|
9
9
|
statSync,
|
|
10
|
+
realpathSync,
|
|
10
11
|
unlinkSync,
|
|
11
12
|
writeFileSync
|
|
12
13
|
} from "node:fs";
|
|
@@ -33,9 +34,7 @@ const GUARD_PASSTHROUGH = {
|
|
|
33
34
|
rawHtmlLayout: true,
|
|
34
35
|
inlineSpacing: true,
|
|
35
36
|
inlineDisplay: true,
|
|
36
|
-
rawVisxAxis: true,
|
|
37
37
|
rawMotionValue: true,
|
|
38
|
-
chartMissingAriaLabel: true,
|
|
39
38
|
rawFormControl: true,
|
|
40
39
|
sub16InputFont: true,
|
|
41
40
|
severity: true
|
|
@@ -107,7 +106,7 @@ function readBasaltConfig(cwd) {
|
|
|
107
106
|
return {};
|
|
108
107
|
}
|
|
109
108
|
}
|
|
110
|
-
const SCANNABLE_EXT = /\.(?:tsx?|jsx|astro|vue|css|html?|webmanifest)$/;
|
|
109
|
+
const SCANNABLE_EXT = /\.(?:tsx?|jsx|[cm][jt]s|astro|vue|css|html?|webmanifest)$/;
|
|
111
110
|
function walkSourceFiles(dir, out = []) {
|
|
112
111
|
let entries;
|
|
113
112
|
try {
|
|
@@ -233,12 +232,17 @@ function waiverHintFor(relPath, profile) {
|
|
|
233
232
|
const BLOCK_BEGIN_PREFIX = "<!-- basalt:begin";
|
|
234
233
|
const BLOCK_END = "<!-- basalt:end -->";
|
|
235
234
|
const MANIFEST_PATH = ".basalt/manifest.json";
|
|
235
|
+
const AGENTS_MD = "AGENTS.md";
|
|
236
|
+
const LEGACY_BLOCK_HOST = "CLAUDE.md";
|
|
236
237
|
function sha256(text) {
|
|
237
238
|
return createHash("sha256").update(text, "utf8").digest("hex");
|
|
238
239
|
}
|
|
239
240
|
function readIfExists(abs) {
|
|
240
|
-
|
|
241
|
-
|
|
241
|
+
try {
|
|
242
|
+
return readFileSync(abs, "utf8");
|
|
243
|
+
} catch {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
242
246
|
}
|
|
243
247
|
function readSource(pkgRoot, source) {
|
|
244
248
|
return readIfExists(resolve(pkgRoot, source));
|
|
@@ -308,6 +312,45 @@ function applyBlock(host, block) {
|
|
|
308
312
|
${block.trim()}
|
|
309
313
|
`;
|
|
310
314
|
}
|
|
315
|
+
function sameFile(a, b) {
|
|
316
|
+
try {
|
|
317
|
+
return realpathSync(a) === realpathSync(b);
|
|
318
|
+
} catch (error) {
|
|
319
|
+
if (error.code === "ENOENT") return false;
|
|
320
|
+
throw error;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
function hasManagedBlock(host) {
|
|
324
|
+
return host !== null && host.includes(BLOCK_BEGIN_PREFIX);
|
|
325
|
+
}
|
|
326
|
+
function scanBlock(host) {
|
|
327
|
+
const begin = hasManagedBlock(host);
|
|
328
|
+
if (!begin && !host.includes(BLOCK_END)) return { region: null, problem: null };
|
|
329
|
+
const bad = (problem) => ({ region: null, problem });
|
|
330
|
+
if (!begin) return bad(`\`${BLOCK_END}\` with no \`${BLOCK_BEGIN_PREFIX}\``);
|
|
331
|
+
let region;
|
|
332
|
+
try {
|
|
333
|
+
region = findBlockRegion(host);
|
|
334
|
+
} catch (error) {
|
|
335
|
+
return bad(error.message);
|
|
336
|
+
}
|
|
337
|
+
if (region === null) return bad(`\`${BLOCK_BEGIN_PREFIX}\` has no matching \`${BLOCK_END}\``);
|
|
338
|
+
if (host.indexOf(BLOCK_END) < region.start || host.indexOf(BLOCK_END, region.end) !== -1) {
|
|
339
|
+
return bad(`an extra or misplaced \`${BLOCK_END}\` outside the basalt block`);
|
|
340
|
+
}
|
|
341
|
+
return { region, problem: null };
|
|
342
|
+
}
|
|
343
|
+
function isAgentsImportLine(line) {
|
|
344
|
+
return line.trim() === `@${AGENTS_MD}`;
|
|
345
|
+
}
|
|
346
|
+
function importsAgentsMd(text) {
|
|
347
|
+
return text.split(/\r?\n/).some(isAgentsImportLine);
|
|
348
|
+
}
|
|
349
|
+
const ROUTER_SEED_DESTS = {
|
|
350
|
+
nav: "src/lib/nav.tsx",
|
|
351
|
+
root: "src/routes/__root.tsx",
|
|
352
|
+
main: "src/main.tsx"
|
|
353
|
+
};
|
|
311
354
|
function hasDependency(cwd, pkgName) {
|
|
312
355
|
try {
|
|
313
356
|
const pkg = JSON.parse(readFileSync(resolve(cwd, "package.json"), "utf8"));
|
|
@@ -318,16 +361,9 @@ function hasDependency(cwd, pkgName) {
|
|
|
318
361
|
return false;
|
|
319
362
|
}
|
|
320
363
|
}
|
|
321
|
-
function resolvePeerFlags(cwd, flags) {
|
|
322
|
-
return {
|
|
323
|
-
hasRouter: flags.withRouter === true || hasDependency(cwd, "@tanstack/react-router"),
|
|
324
|
-
hasQuery: flags.withQuery === true || hasDependency(cwd, "@tanstack/react-query")
|
|
325
|
-
};
|
|
326
|
-
}
|
|
327
364
|
const ROOT_PLACEMENT = {
|
|
328
365
|
isPackageRepoRoot: true,
|
|
329
|
-
repoRoot: ""
|
|
330
|
-
relocatedQueryClient: null
|
|
366
|
+
repoRoot: ""
|
|
331
367
|
};
|
|
332
368
|
function findRepoRoot(dir) {
|
|
333
369
|
let current = dir;
|
|
@@ -346,45 +382,14 @@ function oxlintBinResolves(dir) {
|
|
|
346
382
|
if (d === root || dirname(d) === d) return false;
|
|
347
383
|
}
|
|
348
384
|
}
|
|
349
|
-
function findFileNamed(dir, filename) {
|
|
350
|
-
let entries;
|
|
351
|
-
try {
|
|
352
|
-
entries = readdirSync(dir);
|
|
353
|
-
} catch {
|
|
354
|
-
return null;
|
|
355
|
-
}
|
|
356
|
-
for (const name of entries) {
|
|
357
|
-
if (name === "node_modules" || name === ".git" || name === "dist") continue;
|
|
358
|
-
const abs = resolve(dir, name);
|
|
359
|
-
let isDir;
|
|
360
|
-
try {
|
|
361
|
-
isDir = statSync(abs).isDirectory();
|
|
362
|
-
} catch {
|
|
363
|
-
continue;
|
|
364
|
-
}
|
|
365
|
-
if (isDir) {
|
|
366
|
-
const found = findFileNamed(abs, filename);
|
|
367
|
-
if (found !== null) return found;
|
|
368
|
-
} else if (name === filename) {
|
|
369
|
-
return abs;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
return null;
|
|
373
|
-
}
|
|
374
|
-
function findRelocatedQueryClient(cwd) {
|
|
375
|
-
const seedAbs = resolve(cwd, "src/query-client.ts");
|
|
376
|
-
const found = findFileNamed(resolve(cwd, "src"), "query-client.ts");
|
|
377
|
-
return found !== null && found !== seedAbs ? found : null;
|
|
378
|
-
}
|
|
379
385
|
function resolvePlacement(cwd) {
|
|
380
386
|
const repoRoot = findRepoRoot(cwd);
|
|
381
387
|
return {
|
|
382
388
|
isPackageRepoRoot: repoRoot === cwd,
|
|
383
|
-
repoRoot
|
|
384
|
-
relocatedQueryClient: findRelocatedQueryClient(cwd)
|
|
389
|
+
repoRoot
|
|
385
390
|
};
|
|
386
391
|
}
|
|
387
|
-
function managedFiles(
|
|
392
|
+
function managedFiles(placement = ROOT_PLACEMENT) {
|
|
388
393
|
const rules = RULE_NAMES.map((name) => ({
|
|
389
394
|
dest: `.claude/rules/basalt-${name}.md`,
|
|
390
395
|
mode: "managed",
|
|
@@ -397,15 +402,15 @@ function managedFiles(peers, placement = ROOT_PLACEMENT) {
|
|
|
397
402
|
source: `agent/skills/${name}/SKILL.md`,
|
|
398
403
|
render: (ctx) => readSource(ctx.pkgRoot, `agent/skills/${name}/SKILL.md`)
|
|
399
404
|
}));
|
|
400
|
-
const
|
|
401
|
-
dest:
|
|
405
|
+
const agentsBlock = {
|
|
406
|
+
dest: AGENTS_MD,
|
|
402
407
|
mode: "managed",
|
|
403
408
|
markers: true,
|
|
404
|
-
source: "agent/templates/
|
|
409
|
+
source: "agent/templates/AGENTS-block.md.tpl",
|
|
405
410
|
// With markers, render() returns the fully-rendered region INCLUDING its begin/end markers.
|
|
406
|
-
// The writer splices it into the consumer's host
|
|
411
|
+
// The writer splices it into the consumer's host AGENTS.md at apply time.
|
|
407
412
|
render: (ctx) => {
|
|
408
|
-
const tpl = readSource(ctx.pkgRoot, "agent/templates/
|
|
413
|
+
const tpl = readSource(ctx.pkgRoot, "agent/templates/AGENTS-block.md.tpl");
|
|
409
414
|
if (tpl === null) return null;
|
|
410
415
|
return fillTemplate(tpl, ctx.vars).trim();
|
|
411
416
|
}
|
|
@@ -474,18 +479,8 @@ pre-commit:
|
|
|
474
479
|
}
|
|
475
480
|
`
|
|
476
481
|
};
|
|
477
|
-
const queryClient = {
|
|
478
|
-
dest: "src/query-client.ts",
|
|
479
|
-
mode: "seed",
|
|
480
|
-
source: "agent/templates/query-client.ts.tpl",
|
|
481
|
-
render: (ctx) => {
|
|
482
|
-
const tpl = readSource(ctx.pkgRoot, "agent/templates/query-client.ts.tpl");
|
|
483
|
-
if (tpl === null) return null;
|
|
484
|
-
return fillTemplate(tpl, ctx.vars);
|
|
485
|
-
}
|
|
486
|
-
};
|
|
487
482
|
const rootRoute = {
|
|
488
|
-
dest:
|
|
483
|
+
dest: ROUTER_SEED_DESTS.root,
|
|
489
484
|
mode: "seed",
|
|
490
485
|
source: "agent/templates/__root.tpl",
|
|
491
486
|
render: (ctx) => {
|
|
@@ -494,11 +489,21 @@ pre-commit:
|
|
|
494
489
|
return fillTemplate(tpl, ctx.vars);
|
|
495
490
|
}
|
|
496
491
|
};
|
|
497
|
-
const
|
|
498
|
-
|
|
499
|
-
|
|
492
|
+
const navModule = {
|
|
493
|
+
dest: ROUTER_SEED_DESTS.nav,
|
|
494
|
+
mode: "seed",
|
|
495
|
+
source: "agent/templates/nav.tpl",
|
|
496
|
+
render: (ctx) => readSource(ctx.pkgRoot, "agent/templates/nav.tpl")
|
|
497
|
+
};
|
|
498
|
+
const mainEntry = {
|
|
499
|
+
dest: ROUTER_SEED_DESTS.main,
|
|
500
|
+
mode: "seed",
|
|
501
|
+
source: "agent/templates/main.tpl",
|
|
502
|
+
render: (ctx) => readSource(ctx.pkgRoot, "agent/templates/main.tpl")
|
|
503
|
+
};
|
|
504
|
+
const scaffolds = [navModule, rootRoute, mainEntry];
|
|
500
505
|
const rootTooling = placement.isPackageRepoRoot ? [lefthook, ci] : [];
|
|
501
|
-
return [...rules, ...skills,
|
|
506
|
+
return [...rules, ...skills, agentsBlock, design, oxfmt, ...rootTooling, oxlintrc, ...scaffolds];
|
|
502
507
|
}
|
|
503
508
|
function placementNotices(cwd, placement) {
|
|
504
509
|
const out = [];
|
|
@@ -512,11 +517,6 @@ function placementNotices(cwd, placement) {
|
|
|
512
517
|
`skipped .github/workflows/check.yml ${notRoot} \u2014 GitHub Actions only reads .github/ at the repo root; copy the steps from ${asset("configs/check.yml")} into your root CI workflow instead, and give each one \`working-directory: ${pkg}\` \u2014 the same relocation \`root:\` performs for lefthook, and needed for the same reason.`
|
|
513
518
|
);
|
|
514
519
|
}
|
|
515
|
-
if (placement.relocatedQueryClient !== null) {
|
|
516
|
-
out.push(
|
|
517
|
-
`skipped src/query-client.ts (found an existing query client at ${relative(cwd, placement.relocatedQueryClient)}) \u2014 import it from there instead of re-seeding at the original path.`
|
|
518
|
-
);
|
|
519
|
-
}
|
|
520
520
|
return out;
|
|
521
521
|
}
|
|
522
522
|
function readManifest(cwd) {
|
|
@@ -749,7 +749,7 @@ function stripJsonc(text) {
|
|
|
749
749
|
}
|
|
750
750
|
function parseJsonc(text) {
|
|
751
751
|
try {
|
|
752
|
-
return JSON.parse(stripJsonc(text));
|
|
752
|
+
return JSON.parse(stripJsonc(text.replace(/^\uFEFF/, "")));
|
|
753
753
|
} catch {
|
|
754
754
|
return null;
|
|
755
755
|
}
|
|
@@ -802,6 +802,7 @@ function inspectLefthookGate(repoRoot) {
|
|
|
802
802
|
const wired = lefthookDumpRunLines(dump).some((run2) => /\bcheck-theme\b/.test(run2));
|
|
803
803
|
return wired ? { kind: "wired", file } : { kind: "absent", file };
|
|
804
804
|
}
|
|
805
|
+
const ONLY_EXPORT_COMPONENTS = "react/only-export-components";
|
|
805
806
|
function mergeOxlintExtends(cwd, presetPath) {
|
|
806
807
|
const abs = resolve(cwd, ".oxlintrc.json");
|
|
807
808
|
const raw = readIfExists(abs);
|
|
@@ -815,6 +816,13 @@ function mergeOxlintExtends(cwd, presetPath) {
|
|
|
815
816
|
for (const [key, value] of Object.entries(cfg)) {
|
|
816
817
|
merged[key] = key === "extends" ? [presetPath, ...existing] : value;
|
|
817
818
|
}
|
|
819
|
+
const rules = merged["rules"];
|
|
820
|
+
if (rules !== void 0 && ONLY_EXPORT_COMPONENTS in rules) {
|
|
821
|
+
const [level, options] = [rules[ONLY_EXPORT_COMPONENTS]].flat();
|
|
822
|
+
const opts = typeof options === "object" && options !== null ? options : {};
|
|
823
|
+
const allowExportNames = [.../* @__PURE__ */ new Set([...opts.allowExportNames ?? [], "Route"])];
|
|
824
|
+
rules[ONLY_EXPORT_COMPONENTS] = [level, { ...opts, allowExportNames }];
|
|
825
|
+
}
|
|
818
826
|
const indent = /\n([ \t]+)"/.exec(raw)?.[1] ?? " ";
|
|
819
827
|
writeFileSync(abs, JSON.stringify(merged, null, indent) + (raw.endsWith("\n") ? "\n" : ""));
|
|
820
828
|
return "added";
|
|
@@ -915,9 +923,7 @@ function run(argv, cwd = process.cwd()) {
|
|
|
915
923
|
switch (cmd) {
|
|
916
924
|
case "init":
|
|
917
925
|
return init(cwd, {
|
|
918
|
-
|
|
919
|
-
withQuery: flags.includes("--with-query"),
|
|
920
|
-
mergeLint: flags.includes("--merge-lint")
|
|
926
|
+
noMergeLint: flags.includes("--no-merge-lint")
|
|
921
927
|
});
|
|
922
928
|
case "sync":
|
|
923
929
|
return sync(
|
|
@@ -944,10 +950,13 @@ function run(argv, cwd = process.cwd()) {
|
|
|
944
950
|
}
|
|
945
951
|
}
|
|
946
952
|
export {
|
|
953
|
+
AGENTS_MD,
|
|
954
|
+
LEGACY_BLOCK_HOST,
|
|
947
955
|
MANIFEST_PATH,
|
|
948
956
|
OXLINT_FILES,
|
|
949
957
|
OXLINT_NO_BIN,
|
|
950
958
|
ROOT_PLACEMENT,
|
|
959
|
+
ROUTER_SEED_DESTS,
|
|
951
960
|
RULE_NAMES,
|
|
952
961
|
SERIES_MODULE_HINT_RE,
|
|
953
962
|
SKILL_NAMES,
|
|
@@ -966,8 +975,11 @@ export {
|
|
|
966
975
|
fontsCss,
|
|
967
976
|
guardHook,
|
|
968
977
|
hasBasaltKey,
|
|
978
|
+
hasManagedBlock,
|
|
979
|
+
importsAgentsMd,
|
|
969
980
|
init,
|
|
970
981
|
inspectLefthookGate,
|
|
982
|
+
isAgentsImportLine,
|
|
971
983
|
isStringArray,
|
|
972
984
|
managedFiles,
|
|
973
985
|
mergeOxlintExtends,
|
|
@@ -991,12 +1003,13 @@ export {
|
|
|
991
1003
|
renderContext,
|
|
992
1004
|
reportPrune,
|
|
993
1005
|
resolveGuardConfig,
|
|
994
|
-
resolvePeerFlags,
|
|
995
1006
|
resolvePlacement,
|
|
996
1007
|
resolveProjectDir,
|
|
997
1008
|
retiredManagedDests,
|
|
998
1009
|
rootsNotices,
|
|
999
1010
|
run,
|
|
1011
|
+
sameFile,
|
|
1012
|
+
scanBlock,
|
|
1000
1013
|
scannableFiles,
|
|
1001
1014
|
sha256,
|
|
1002
1015
|
shippedAssetPath,
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,SAAS,CAAA;AA4D7D,yGAAyG;AACzG,wBAAgB,IAAI,CAAC,GAAG,GAAE,MAAsB,EAAE,aAAa,GAAE,aAAkB,GAAG,MAAM,CAkL3F"}
|
package/dist/cli/init.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
|
-
import { deriveSpacing } from "../tokens/
|
|
3
|
+
import { deriveSpacing } from "../tokens/core.js";
|
|
4
4
|
import {
|
|
5
5
|
MANIFEST_PATH,
|
|
6
|
+
declaredProfile,
|
|
7
|
+
readBasaltConfig,
|
|
8
|
+
ROUTER_SEED_DESTS,
|
|
6
9
|
findBasaltInstall,
|
|
7
10
|
managedFiles,
|
|
8
11
|
mergeOxlintExtends,
|
|
@@ -14,7 +17,6 @@ import {
|
|
|
14
17
|
reconcileRoots,
|
|
15
18
|
renderContext,
|
|
16
19
|
reportPrune,
|
|
17
|
-
resolvePeerFlags,
|
|
18
20
|
resolvePlacement,
|
|
19
21
|
rootsNotices,
|
|
20
22
|
sha256,
|
|
@@ -22,14 +24,22 @@ import {
|
|
|
22
24
|
writeFileEnsuringDir,
|
|
23
25
|
writeUnit
|
|
24
26
|
} from "./index.js";
|
|
27
|
+
import { seedTsconfigExtends } from "./doctor-upgrade.js";
|
|
25
28
|
import { readOxlintPresetPlugins } from "./sync.js";
|
|
26
29
|
const KEPT_FILE_COST = {
|
|
27
|
-
".oxlintrc.json": "the shipped oxlint preset (the basalt/* design rules AND the jsx-a11y / import / promise / unicorn plugins) is NOT active \u2014 nothing else turns it on, and every gate stays green without it. Re-run with `--merge-lint` to splice the extends in, or add it by hand.",
|
|
28
30
|
"lefthook.yml": "the pre-commit oxlint / oxfmt / check-theme jobs are not wired \u2014 add `extends: [<preset>]` to your own file.",
|
|
29
31
|
".github/workflows/check.yml": "CI does not run check-theme or the sync drift gate \u2014 copy those steps into your own workflow.",
|
|
32
|
+
"src/main.tsx": "change it to match node_modules/basalt-ui/agent/templates/main.tpl: import 'basalt-ui/styles.css'; `const router = createBasaltRouter({ routeTree })`; declare `interface Register { router: typeof router }` in module '@tanstack/react-router'; render `<BasaltProvider router={router} />`. Without them the seeded src/lib/nav.tsx fails tsc.",
|
|
30
33
|
".oxfmtrc.json": "your existing formatter config stands; basalt formats nothing on its own.",
|
|
31
34
|
"DESIGN.md": "the design brief Claude reads is yours, not the seeded one."
|
|
32
35
|
};
|
|
36
|
+
function oxlintrcCost(merge) {
|
|
37
|
+
if (merge === "added" || merge === "already") {
|
|
38
|
+
return "now extends the shipped preset: the basalt/* design rules and the jsx-a11y / import / promise / unicorn plugins are on.";
|
|
39
|
+
}
|
|
40
|
+
const why = merge === null ? "init ran with --no-merge-lint" : "init could not splice the extends in";
|
|
41
|
+
return `the shipped oxlint preset (the basalt/* rules, jsx-a11y, import, promise, unicorn) is NOT active: ${why}, nothing else turns it on, and every gate stays green without it. Add the \`extends\` by hand.`;
|
|
42
|
+
}
|
|
33
43
|
function init(cwd = process.cwd(), scaffoldFlags = {}) {
|
|
34
44
|
const install = findBasaltInstall(cwd);
|
|
35
45
|
if (install.dir === null) {
|
|
@@ -46,10 +56,26 @@ function init(cwd = process.cwd(), scaffoldFlags = {}) {
|
|
|
46
56
|
pkg["scripts"] = { ...scripts, "lint:basalt": lintScript };
|
|
47
57
|
return true;
|
|
48
58
|
});
|
|
59
|
+
let buildNote = null;
|
|
60
|
+
patchPackageJson(cwd, (pkg) => {
|
|
61
|
+
const scripts = pkg["scripts"] ?? {};
|
|
62
|
+
const build = scripts["build"];
|
|
63
|
+
if (typeof build !== "string" || !/\btsc\b/.test(build) || build.startsWith("vite build")) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
if (build !== "tsc -b && vite build") {
|
|
67
|
+
buildNote = `"build" (${build}) left as is: run \`vite build\` before \`tsc\` (vite generates routeTree.gen.ts).`;
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
pkg["scripts"] = { ...scripts, build: "vite build && tsc -b" };
|
|
71
|
+
buildNote = 'rewrote "build" to `vite build && tsc -b` (vite generates routeTree.gen.ts).';
|
|
72
|
+
return true;
|
|
73
|
+
});
|
|
49
74
|
const manifest = readManifest(cwd);
|
|
50
|
-
const peers = resolvePeerFlags(cwd, scaffoldFlags);
|
|
51
75
|
const placement = resolvePlacement(cwd);
|
|
52
|
-
const
|
|
76
|
+
const tokensOnly = declaredProfile(readBasaltConfig(cwd), []) === "tokens-only";
|
|
77
|
+
const routerSeeds = Object.values(ROUTER_SEED_DESTS);
|
|
78
|
+
const files = managedFiles(placement).filter((f) => !(tokensOnly && routerSeeds.includes(f.dest)));
|
|
53
79
|
const writtenFiles = [];
|
|
54
80
|
const keptFiles = [];
|
|
55
81
|
const missingSources = [];
|
|
@@ -70,7 +96,7 @@ function init(cwd = process.cwd(), scaffoldFlags = {}) {
|
|
|
70
96
|
writtenFiles.push(file.dest);
|
|
71
97
|
}
|
|
72
98
|
const pruned = pruneRetiredManagedFiles(cwd, manifest, files);
|
|
73
|
-
const mergeLint = scaffoldFlags.
|
|
99
|
+
const mergeLint = scaffoldFlags.noMergeLint === true ? null : mergeOxlintExtends(cwd, ctx.vars.OXLINT_PRESET_PATH);
|
|
74
100
|
manifest.basaltVersion = ctx.vars.BASALT_VERSION;
|
|
75
101
|
manifest.spacingScale = { ...deriveSpacing(0).scale };
|
|
76
102
|
writeFileEnsuringDir(resolve(cwd, MANIFEST_PATH), `${JSON.stringify(manifest, null, 2)}
|
|
@@ -88,20 +114,20 @@ function init(cwd = process.cwd(), scaffoldFlags = {}) {
|
|
|
88
114
|
console.log(`
|
|
89
115
|
Kept (already present \u2014 basalt did not touch them):`);
|
|
90
116
|
for (const dest of keptFiles) {
|
|
91
|
-
const cost = KEPT_FILE_COST[dest];
|
|
117
|
+
const cost = dest === ".oxlintrc.json" ? oxlintrcCost(mergeLint) : KEPT_FILE_COST[dest];
|
|
92
118
|
console.log(cost === void 0 ? ` \xB7 ${dest}` : ` \xB7 ${dest} \u2014 ${cost}`);
|
|
93
119
|
}
|
|
94
120
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
121
|
+
const mergeMessage = {
|
|
122
|
+
added: `spliced "${ctx.vars.OXLINT_PRESET_PATH}" into the existing .oxlintrc.json extends`,
|
|
123
|
+
unreadable: ".oxlintrc.json is not valid JSON \u2014 merge the extends entry by hand",
|
|
124
|
+
"has-comments": `.oxlintrc.json carries comments; rewriting it would delete them (usually the reason each rule is off). Add "extends": ["${ctx.vars.OXLINT_PRESET_PATH}"] as the first entry by hand.`
|
|
125
|
+
};
|
|
126
|
+
const mergeLine = mergeLint === null ? void 0 : mergeMessage[mergeLint];
|
|
127
|
+
if (mergeLine !== void 0) console.log(`basalt-ui init: oxlint \u2014 ${mergeLine}`);
|
|
128
|
+
const tsconfigLine = tokensOnly ? null : seedTsconfigExtends(cwd);
|
|
129
|
+
if (tsconfigLine !== null) console.log(`basalt-ui init: ${tsconfigLine}`);
|
|
130
|
+
if (buildNote !== null) console.log(`basalt-ui init: ${buildNote}`);
|
|
105
131
|
const rootsMessages = rootsNotices(rootsState);
|
|
106
132
|
for (const line of rootsMessages.log) console.log(`basalt-ui init: ${line}`);
|
|
107
133
|
for (const line of rootsMessages.error) console.error(`\u26A0 basalt-ui init: ${line}`);
|
|
@@ -111,16 +137,6 @@ Kept (already present \u2014 basalt did not touch them):`);
|
|
|
111
137
|
for (const line of placementNotices(cwd, placement)) {
|
|
112
138
|
console.log(`basalt-ui init: ${line}`);
|
|
113
139
|
}
|
|
114
|
-
if (!peers.hasQuery) {
|
|
115
|
-
console.log(
|
|
116
|
-
"basalt-ui init: skipped src/query-client.ts (no @tanstack/react-query dependency detected) \u2014 install it, or re-run with --with-query, to scaffold it."
|
|
117
|
-
);
|
|
118
|
-
}
|
|
119
|
-
if (!peers.hasRouter || !peers.hasQuery) {
|
|
120
|
-
console.log(
|
|
121
|
-
"basalt-ui init: skipped src/routes/__root.tsx (needs both @tanstack/react-router and @tanstack/react-query) \u2014 install both, or re-run with --with-router --with-query, to scaffold it."
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
140
|
console.log(
|
|
125
141
|
`
|
|
126
142
|
Theme guard hook: add to .claude/settings.json \u2192 hooks.PreToolUse to catch violations before they land:
|
package/dist/cli/sync.d.ts
CHANGED
|
@@ -7,24 +7,11 @@ export type SyncOptions = {
|
|
|
7
7
|
flags?: readonly string[];
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
|
-
* The
|
|
11
|
-
*
|
|
12
|
-
* `resolveProjectDir` resolves to exactly one directory — `BASALT_CWD` when set, else the
|
|
13
|
-
* invocation cwd — and never walks. The shape that produced this function is the one that resolver
|
|
14
|
-
* doesn't cover: a consumer standing in `apps/dashboard`, the package that actually depends on
|
|
15
|
-
* basalt-ui, whose install lives at the repo root above it. With nothing walking up, `sync` read
|
|
16
|
-
* "no manifest here" as "nothing scaffolded yet" and wrote a complete second consumer beside the
|
|
17
|
-
* real one.
|
|
18
|
-
*/
|
|
19
|
-
/**
|
|
20
|
-
* The sentence `sync` prints when the cwd carries no install but an ancestor does.
|
|
21
|
-
*
|
|
22
|
-
* Shared with `doctor` deliberately. The two commands already share `resolveProjectDir`, but not
|
|
23
|
-
* the ADVICE: `sync` named the parent install (1.22.0's "stop scaffolding a second consumer" fix)
|
|
24
|
-
* while `doctor`, in the same directory, kept prescribing `basalt-ui init` — so following doctor
|
|
25
|
-
* literally performed the exact mistake that fix exists to prevent. One function, one sentence.
|
|
10
|
+
* The sentence `sync` and `doctor` both print when the cwd carries no install but an ancestor does
|
|
11
|
+
* (a package under a configured repo); one text, so neither prescribes a second `init`.
|
|
26
12
|
*/
|
|
27
13
|
export declare function parentInstallAdvice(cwd: string, parent: string, verb: string): string;
|
|
14
|
+
/** The nearest ANCESTOR of `dir` (exclusive) carrying a basalt manifest, or null. */
|
|
28
15
|
export declare function findManifestAbove(dir: string): string | null;
|
|
29
16
|
/**
|
|
30
17
|
* Reconcile managed files with the shipped versions via a sha256 three-way compare.
|
|
@@ -33,11 +20,8 @@ export declare function findManifestAbove(dir: string): string | null;
|
|
|
33
20
|
* (a CI freshness gate), exit 0 when all current.
|
|
34
21
|
* - `--force` overwrites locally-drifted files instead of skipping them.
|
|
35
22
|
*
|
|
36
|
-
* Runs against `resolveProjectDir(cwd)
|
|
37
|
-
*
|
|
38
|
-
* {@link findManifestAbove} for the failure that bought this: `sync` is the drift refresh and
|
|
39
|
-
* `init` is the scaffold, so placing twenty files on a cwd that was never a consumer is a decision
|
|
40
|
-
* `sync` does not get to make silently.
|
|
23
|
+
* Runs against `resolveProjectDir(cwd)` and REFUSES rather than scaffolding when that project has no
|
|
24
|
+
* manifest: `sync` refreshes, `init` scaffolds.
|
|
41
25
|
*/
|
|
42
26
|
export declare function sync(opts?: SyncOptions, invocationCwd?: string): number;
|
|
43
27
|
//# sourceMappingURL=sync.d.ts.map
|
package/dist/cli/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AAwCA,gGAAgG;AAChG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAGjE;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mGAAmG;IACnG,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1B,CAAA;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,IAAI,GAAE,WAAgB,EAAE,aAAa,GAAE,MAAsB,GAAG,MAAM,CA0L1F"}
|
package/dist/cli/sync.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
|
-
import { deriveSpacing } from "../tokens/
|
|
3
|
+
import { deriveSpacing } from "../tokens/core.js";
|
|
4
4
|
import {
|
|
5
5
|
MANIFEST_PATH,
|
|
6
6
|
basaltPresetEntry,
|
|
@@ -26,7 +26,6 @@ import {
|
|
|
26
26
|
relativePosix,
|
|
27
27
|
renderContext,
|
|
28
28
|
reportPrune,
|
|
29
|
-
resolvePeerFlags,
|
|
30
29
|
resolvePlacement,
|
|
31
30
|
resolveProjectDir,
|
|
32
31
|
rootsNotices,
|
|
@@ -66,7 +65,7 @@ function sync(opts = {}, invocationCwd = process.cwd()) {
|
|
|
66
65
|
}
|
|
67
66
|
if (!existsSync(resolve(cwd, MANIFEST_PATH))) {
|
|
68
67
|
const elsewhere = findManifestAbove(cwd);
|
|
69
|
-
const wouldWrite = managedFiles(
|
|
68
|
+
const wouldWrite = managedFiles(resolvePlacement(cwd)).length;
|
|
70
69
|
console.error(
|
|
71
70
|
`\u2716 basalt-ui sync: no ${MANIFEST_PATH} at ${cwd} \u2014 refusing to scaffold. \`sync\` refreshes an EXISTING basalt install; creating one is \`basalt-ui init\`'s decision, and continuing here would write ${wouldWrite} managed file(s) into this directory.` + (elsewhere === null ? " No manifest exists at any ancestor either \u2014 run `basalt-ui init` here if this package really is meant to be a consumer." : ` ${parentInstallAdvice(cwd, elsewhere, "sync")}`)
|
|
72
71
|
);
|
|
@@ -75,9 +74,8 @@ function sync(opts = {}, invocationCwd = process.cwd()) {
|
|
|
75
74
|
const rootsState = reconcileRoots(cwd, { write: opts.check !== true });
|
|
76
75
|
const ctx = renderContext(cwd);
|
|
77
76
|
const manifest = readManifest(cwd);
|
|
78
|
-
const peers = resolvePeerFlags(cwd, {});
|
|
79
77
|
const placement = resolvePlacement(cwd);
|
|
80
|
-
const files = managedFiles(
|
|
78
|
+
const files = managedFiles(placement);
|
|
81
79
|
let updated = 0;
|
|
82
80
|
let created = 0;
|
|
83
81
|
let recreated = 0;
|
|
@@ -157,8 +155,8 @@ function sync(opts = {}, invocationCwd = process.cwd()) {
|
|
|
157
155
|
}
|
|
158
156
|
if (staleForCheck > 0) {
|
|
159
157
|
console.error(`basalt-ui sync --check: ${staleForCheck} managed file(s) out of date.`);
|
|
160
|
-
return 1;
|
|
161
158
|
}
|
|
159
|
+
if (staleForCheck > 0) return 1;
|
|
162
160
|
const n = placementSkips.length;
|
|
163
161
|
const skips = n === 0 ? "" : ` (${n} permanent placement skip(s) \u2014 --verbose for detail)`;
|
|
164
162
|
console.log(`\u2713 basalt-ui sync --check: all managed files current.${skips}`);
|
package/dist/cli/tokens-css.d.ts
CHANGED
|
@@ -1,36 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Space- and number-normalize the argument list of a legacy color function so the emitted file
|
|
3
|
-
* survives a
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `buildPaletteCss` returned": `rgba(255,255,255,0.6)` and `rgba(255, 255, 255, 0.6)` are the same
|
|
7
|
-
* colour, the shipped palette emits the first form on the dark side and the second on the light
|
|
8
|
-
* side, and a consumer committing the output ate a lint-ignore entry for the difference. The token
|
|
9
|
-
* VALUES are untouched — nothing here can change what basalt's tokens are.
|
|
10
|
-
*
|
|
11
|
-
* Trailing zeros go the same way and for the same reason: prettier rewrites `0.10` → `0.1`, so the
|
|
12
|
-
* two `rgba(28, 25, 23, 0.10)` alphas in the light shadow tokens were the whole reason the one
|
|
13
|
-
* framework-free consumer still could not lint its committed sheet — `--fix` and `tokens:css
|
|
14
|
-
* --check` disagreed forever, and the lint-ignore entry survived two releases. Only a bare decimal
|
|
15
|
-
* literal is touched (never a `%`, a `var()` or a unit), and `0.10`/`0.1` are the same number.
|
|
16
|
-
*
|
|
17
|
-
* Exported for tests, so the expectation can be computed rather than restated.
|
|
3
|
+
* survives a repo's formatter (`rgba(255,255,255,0.6)` and `rgba(255, 255, 255, 0.6)` are the same
|
|
4
|
+
* colour; `0.10` becomes `0.1`). FORMATTING ONLY: token values are untouched, and only a bare decimal
|
|
5
|
+
* literal is touched (never a `%`, a `var()` or a unit). Exported for tests.
|
|
18
6
|
*/
|
|
19
7
|
export declare function normalizeColorFunctions(css: string): string;
|
|
20
8
|
/**
|
|
21
|
-
* tokens:css — emit the `--vx-*` stylesheet, optionally retargeted
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* system as plain CSS, with no package in its dependency tree at all. `basalt-ui/tokens.css` is the
|
|
26
|
-
* same artifact for a consumer that does install; this command exists for the ones that shouldn't
|
|
27
|
-
* have to just to change a selector.
|
|
28
|
-
*
|
|
29
|
-
* It parses flags and calls `buildPaletteCss` for the token VALUES — the CLI and the API must not
|
|
30
|
-
* be able to disagree about what basalt's tokens are. What it adds is strictly file framing for an
|
|
31
|
-
* artifact a consumer COMMITS: the `@generated` header (the guard's skip marker), a trailing
|
|
32
|
-
* newline, and `rgba()` argument spacing. All three were reported by the one framework-free
|
|
33
|
-
* consumer as the reasons the output could not simply be committed.
|
|
9
|
+
* tokens:css — emit the `--vx-*` stylesheet, optionally retargeted, for a static site that installs
|
|
10
|
+
* nothing (`bunx basalt-ui tokens:css --selector-attribute data-theme --out src/tokens.css`). Token
|
|
11
|
+
* VALUES come from `buildPaletteCss`, so the CLI and the API cannot disagree; the CLI adds only file
|
|
12
|
+
* framing for a committed artifact: the `@generated` header, a trailing newline, `rgba()` spacing.
|
|
34
13
|
*/
|
|
35
14
|
export declare function tokensCss(flags: string[], cwd?: string): number;
|
|
36
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens-css.d.ts","sourceRoot":"","sources":["../../src/cli/tokens-css.ts"],"names":[],"mappings":"AAkCA
|
|
1
|
+
{"version":3,"file":"tokens-css.d.ts","sourceRoot":"","sources":["../../src/cli/tokens-css.ts"],"names":[],"mappings":"AAkCA;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK3D;AA4DD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CA4E9E;AAgBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAa7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShortcutsHelp.d.ts","sourceRoot":"","sources":["../../src/commands/ShortcutsHelp.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"ShortcutsHelp.d.ts","sourceRoot":"","sources":["../../src/commands/ShortcutsHelp.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAUlD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC7C,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACtB,CAAA;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAA4B,EAC5B,GAAG,EACH,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,sCAsDpB"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useSyncExternalStore } from "react";
|
|
3
3
|
import { Box, Group, Kbd, Stack, Text, Title } from "@mantine/core";
|
|
4
4
|
import { cx } from "../common/props.js";
|
|
5
5
|
import { toShortcutList } from "./projectors.js";
|
|
6
6
|
import { detectMac, parseShortcut } from "./shortcut-format.js";
|
|
7
7
|
import { VX } from "../tokens/index.js";
|
|
8
|
+
const subscribeNever = () => () => {
|
|
9
|
+
};
|
|
8
10
|
function ShortcutRow({
|
|
9
11
|
label,
|
|
10
12
|
shortcut,
|
|
@@ -22,10 +24,7 @@ function ShortcutsHelp({
|
|
|
22
24
|
className,
|
|
23
25
|
style
|
|
24
26
|
}) {
|
|
25
|
-
const
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
setIsMac(detectMac());
|
|
28
|
-
}, []);
|
|
27
|
+
const isMac = useSyncExternalStore(subscribeNever, detectMac, () => false);
|
|
29
28
|
const shortcuts = toShortcutList();
|
|
30
29
|
if (shortcuts.length === 0) return null;
|
|
31
30
|
const grouped = /* @__PURE__ */ new Map();
|