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
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
import { AreaClosed, LinePath } from '@visx/shape'
|
|
2
|
-
import { Threshold } from '@visx/threshold'
|
|
3
|
-
import { memo, useMemo } from 'react'
|
|
4
|
-
import { assertRequiredProps } from '../../common/validate'
|
|
5
|
-
import type { BasaltProps } from '../../common/props'
|
|
6
|
-
import type { CursorResolution } from '../cursor/resolve'
|
|
7
|
-
import { AreaGradient, areaFillUrl } from '../primitives/AreaGradient'
|
|
8
|
-
import type { CartesianTooltipConfig, AxisConfig, PlotContext } from '../primitives/CartesianChart'
|
|
9
|
-
import { CartesianChart } from '../primitives/CartesianChart'
|
|
10
|
-
import type { ResponsiveChartHeight } from '../primitives/ChartFrame'
|
|
11
|
-
import type { XZoneSpec } from '../primitives/XZoneRects'
|
|
12
|
-
import type { ZoneSpec } from '../primitives/ZoneRects'
|
|
13
|
-
import type { ChartState } from '../primitives/ChartPending'
|
|
14
|
-
import { curveFor, definedOn, LINE_OVERLAY_STROKE_WIDTH, toPlotPoint } from '../series'
|
|
15
|
-
import type { ChartLegendConfig, ChartSeries } from '../series'
|
|
16
|
-
import { VX } from '../../tokens'
|
|
17
|
-
|
|
18
|
-
/** Semi-transparent fill above (or below) a threshold value, tracking the line. */
|
|
19
|
-
export type ZonedLineThreshold = {
|
|
20
|
-
value: number
|
|
21
|
-
side: 'above' | 'below'
|
|
22
|
-
fill: string
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/** Dashed horizontal reference line — visual annotation only, no fill. */
|
|
26
|
-
export type ZonedLineRefLine = {
|
|
27
|
-
value: number
|
|
28
|
-
color: string
|
|
29
|
-
/** Solid by default; set true for a dashed line. */
|
|
30
|
-
dashed?: boolean
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export type ZonedLineProps<T> = BasaltProps & {
|
|
34
|
-
data: T[]
|
|
35
|
-
/** Height in px, or one per size step (`{ base, sm?, md?, lg? }`). Default 240. Forwarded
|
|
36
|
-
* unchanged; `ChartFrameProps.height` owns the law — steps resolve off the MEASURED width. */
|
|
37
|
-
height?: number | ResponsiveChartHeight
|
|
38
|
-
chartId: string
|
|
39
|
-
/** Extracts the x-axis category (date string) from a data point. */
|
|
40
|
-
getX: (d: T) => string
|
|
41
|
-
/** Single-series line — the sole source of truth for color, dash, legend, and tooltip row. Pass
|
|
42
|
-
* exactly one entry (kept as an array for parity with the other kinds and so `CartesianChart` /
|
|
43
|
-
* `deriveLegend` / `deriveTooltipRows` can consume it directly). */
|
|
44
|
-
series: ChartSeries<T>[]
|
|
45
|
-
/** Y-axis. Collapses the old `yDomain` / `yAutoMaxFloor` / `yAutoMinCeil` / `yAutoPad` /
|
|
46
|
-
* `numTicksY` / `formatYTick` prop soup into one object. */
|
|
47
|
-
y?: AxisConfig<T>
|
|
48
|
-
zones?: ZoneSpec[]
|
|
49
|
-
/** Vertical x-range overlays (time windows), rendered behind the line. Bounds are `getX`
|
|
50
|
-
* domain keys. */
|
|
51
|
-
xZones?: XZoneSpec[]
|
|
52
|
-
thresholds?: ZonedLineThreshold[]
|
|
53
|
-
refLines?: ZonedLineRefLine[]
|
|
54
|
-
/** Exact number of x ticks. Default: as many as fit. Ignored when `xTickValues` is set. */
|
|
55
|
-
xTicks?: number
|
|
56
|
-
/** Which domain keys get a tick, from the full key list and the resolved plot width. Takes
|
|
57
|
-
* precedence over `xTicks` — see `CartesianChartProps.xTickValues` for why a count is not
|
|
58
|
-
* always enough. */
|
|
59
|
-
xTickValues?: (keys: readonly string[], xMax: number) => readonly string[]
|
|
60
|
-
/** X tick label formatter. Default `fmtAxisDate` (DD.MM). */
|
|
61
|
-
formatX?: (key: string) => string
|
|
62
|
-
/** Tilt the x tick labels 45° or 90°, or `0` to opt out of the phone tier's auto-rotation —
|
|
63
|
-
* see `CartesianChartProps.xLabelRotate`. */
|
|
64
|
-
xLabelRotate?: 0 | 45 | 90
|
|
65
|
-
/**
|
|
66
|
-
* How a sibling chart's broadcast cursor key resolves against this chart's points. Default
|
|
67
|
-
* `'nearest'`. Pass `'leading'` when `getX` returns a bucket's leading edge (a weekly series
|
|
68
|
-
* keyed by its Monday) — see `CursorResolution`.
|
|
69
|
-
*/
|
|
70
|
-
cursorResolution?: CursorResolution
|
|
71
|
-
/** Tooltip config — `label` for a right-aligned header badge (e.g. zone name with zone color),
|
|
72
|
-
* `extraRows` for rows appended after the derived row. `false` disables the tooltip entirely. */
|
|
73
|
-
tooltip?: CartesianTooltipConfig<T> | false
|
|
74
|
-
/**
|
|
75
|
-
* Opt-in soft gradient fill under the line. Pass a color token to tint the area
|
|
76
|
-
* with that hue — the modern single-hue look. `true` falls back to the series color. Off by
|
|
77
|
-
* default (a neutral fill under the neutral line just reads as grey haze). Strength is global
|
|
78
|
-
* via `--vx-area-top` / `--vx-area-bottom` (tunable in the dev theme lab).
|
|
79
|
-
*/
|
|
80
|
-
areaFill?: string | boolean
|
|
81
|
-
/** Legend config forwarded to `CartesianChart`; `false` disables the legend (sparkline escape).
|
|
82
|
-
* Default `{ placement: 'bottom' }`. */
|
|
83
|
-
legend?: ChartLegendConfig | false
|
|
84
|
-
/** Accessible text alternative, forwarded to `CartesianChart` as `aria-label` (+ `role="group"`). */
|
|
85
|
-
ariaLabel?: string
|
|
86
|
-
/** Forwarded to `CartesianChart` — see `ChartPending`'s JSDoc for the three-state rationale. */
|
|
87
|
-
isPending?: boolean
|
|
88
|
-
/** The three "nothing to draw" states in one prop — pending → error → empty. See
|
|
89
|
-
* `ChartState`; `isPending` stays a supported alias for `state={{ pending: true }}`. */
|
|
90
|
-
state?: ChartState
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
type Pt<T> = T & { __y: number | null }
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Every row, in x order, with `__y: null` where the series reports no value. The null row STAYS in
|
|
97
|
-
* the array — see `MultiLine`'s `seriesPoints`: dropping it makes `LinePath`/`AreaClosed`/
|
|
98
|
-
* `Threshold` join straight across a coverage hole, drawing a measurement that was never taken.
|
|
99
|
-
* The shared `defined` guard below is what turns it back into a gap.
|
|
100
|
-
*/
|
|
101
|
-
function linePoints<T>(series: ChartSeries<T> | undefined, data: readonly T[]): Pt<T>[] {
|
|
102
|
-
if (!series) return []
|
|
103
|
-
return data.map((d) => Object.assign({}, d, { __y: toPlotPoint(series.getValue(d)) }) as Pt<T>)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Single-series line chart with zone backgrounds, threshold fills, an optional area gradient,
|
|
108
|
-
* reference lines, and a shared-cursor tooltip. Covers the line-with-zones pattern. Does NOT
|
|
109
|
-
* handle dual-panel charts (keep those bespoke).
|
|
110
|
-
*
|
|
111
|
-
* Composes `CartesianChart` for measuring, scales, grid, zones/x-zones, axes, the shared cursor,
|
|
112
|
-
* and the derived tooltip — this kind draws ONLY the marks (thresholds, area fill, and the line).
|
|
113
|
-
* Single-series, so the legend is optional in practice but present by default.
|
|
114
|
-
*
|
|
115
|
-
* X-axis is built from the full `data` array so the calendar is preserved even when the series has
|
|
116
|
-
* nulls; the line, the area fill and the threshold fills all BREAK at a null point, leaving a real
|
|
117
|
-
* gap rather than interpolating across it.
|
|
118
|
-
*/
|
|
119
|
-
function ZonedLineInner<T>(props: ZonedLineProps<T>) {
|
|
120
|
-
// F-ERR-1: name the component and the prop. Without this a missing accessor surfaces
|
|
121
|
-
// from inside visx as `undefined is not a function`, which `BasaltErrorBoundary`
|
|
122
|
-
// swallows into a blank subtree that names nothing.
|
|
123
|
-
assertRequiredProps('ZonedLine', props, ['data', 'getX', 'series'])
|
|
124
|
-
const {
|
|
125
|
-
data,
|
|
126
|
-
chartId,
|
|
127
|
-
getX,
|
|
128
|
-
series,
|
|
129
|
-
y,
|
|
130
|
-
zones,
|
|
131
|
-
xZones,
|
|
132
|
-
thresholds,
|
|
133
|
-
refLines,
|
|
134
|
-
xTicks,
|
|
135
|
-
xTickValues,
|
|
136
|
-
formatX,
|
|
137
|
-
xLabelRotate,
|
|
138
|
-
cursorResolution,
|
|
139
|
-
tooltip,
|
|
140
|
-
areaFill,
|
|
141
|
-
height,
|
|
142
|
-
legend,
|
|
143
|
-
ariaLabel,
|
|
144
|
-
isPending,
|
|
145
|
-
state,
|
|
146
|
-
className,
|
|
147
|
-
style,
|
|
148
|
-
} = props
|
|
149
|
-
|
|
150
|
-
// Default the line overlay to the redesign's 1.9px stroke (docs/DESIGN-SPEC.md §5) — applied
|
|
151
|
-
// once here so the plotted line, the derived legend swatch, and the derived tooltip row agree.
|
|
152
|
-
const styledSeries = useMemo<ChartSeries<T>[]>(
|
|
153
|
-
() =>
|
|
154
|
-
series.map((s) => ({
|
|
155
|
-
...s,
|
|
156
|
-
strokeWidth: s.strokeWidth ?? LINE_OVERLAY_STROKE_WIDTH,
|
|
157
|
-
})),
|
|
158
|
-
[series],
|
|
159
|
-
)
|
|
160
|
-
|
|
161
|
-
return (
|
|
162
|
-
<CartesianChart
|
|
163
|
-
data={data}
|
|
164
|
-
chartId={chartId}
|
|
165
|
-
getX={getX}
|
|
166
|
-
series={styledSeries}
|
|
167
|
-
{...(y !== undefined && { y })}
|
|
168
|
-
{...(zones !== undefined && { zones })}
|
|
169
|
-
{...(xZones !== undefined && { xZones })}
|
|
170
|
-
{...(refLines !== undefined && { refLines })}
|
|
171
|
-
{...(xTicks !== undefined && { xTicks })}
|
|
172
|
-
{...(xTickValues !== undefined && { xTickValues })}
|
|
173
|
-
{...(formatX !== undefined && { formatX })}
|
|
174
|
-
{...(xLabelRotate !== undefined && { xLabelRotate })}
|
|
175
|
-
{...(cursorResolution !== undefined && { cursorResolution })}
|
|
176
|
-
{...(tooltip !== undefined && { tooltip })}
|
|
177
|
-
{...(height !== undefined && { height })}
|
|
178
|
-
{...(legend !== undefined && { legend })}
|
|
179
|
-
{...(ariaLabel !== undefined && { ariaLabel })}
|
|
180
|
-
{...(isPending !== undefined && { isPending })}
|
|
181
|
-
{...(state !== undefined && { state })}
|
|
182
|
-
{...(className !== undefined && { className })}
|
|
183
|
-
{...(style !== undefined && { style })}
|
|
184
|
-
>
|
|
185
|
-
{(ctx: PlotContext<T>) => (
|
|
186
|
-
<ZonedLineMarks
|
|
187
|
-
getX={getX}
|
|
188
|
-
chartId={chartId}
|
|
189
|
-
thresholds={thresholds ?? []}
|
|
190
|
-
areaFill={areaFill}
|
|
191
|
-
ctx={ctx}
|
|
192
|
-
/>
|
|
193
|
-
)}
|
|
194
|
-
</CartesianChart>
|
|
195
|
-
)
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/** Draws the threshold fills, the optional area gradient, and the line for the (single) visible
|
|
199
|
-
* series. Hidden via the legend toggle draws nothing, same as every other kind. */
|
|
200
|
-
function ZonedLineMarks<T>({
|
|
201
|
-
getX,
|
|
202
|
-
chartId,
|
|
203
|
-
thresholds,
|
|
204
|
-
areaFill,
|
|
205
|
-
ctx,
|
|
206
|
-
}: {
|
|
207
|
-
getX: (d: T) => string
|
|
208
|
-
chartId: string
|
|
209
|
-
thresholds: ZonedLineThreshold[]
|
|
210
|
-
areaFill: string | boolean | undefined
|
|
211
|
-
ctx: PlotContext<T>
|
|
212
|
-
}) {
|
|
213
|
-
const { data, visible, xScale, yScale, yMax } = ctx
|
|
214
|
-
const primary = visible[0]
|
|
215
|
-
// Memoized: the shared cursor re-renders every chart on every pointer frame, and this both
|
|
216
|
-
// walks the full series and clones an object per point.
|
|
217
|
-
const pts = useMemo(() => linePoints(primary, data), [primary, data])
|
|
218
|
-
|
|
219
|
-
// ONE guard for all three shapes below, covering two absences. A null value is a documented GAP
|
|
220
|
-
// (`ChartSeries.getValue`), and a non-positive value on a log axis maps to NaN via `yScale` —
|
|
221
|
-
// without `defined` the first is drawn as an interpolated straight line across a coverage hole
|
|
222
|
-
// and the second emits a NaN path command, which per SVG error handling blanks the ENTIRE path
|
|
223
|
-
// from that point on.
|
|
224
|
-
const defined = definedOn(yScale)
|
|
225
|
-
// ONE curve for all three shapes: the threshold band, the area fill and the line are the SAME
|
|
226
|
-
// series drawn three ways, so a step line over a monotone fill would be two different readings
|
|
227
|
-
// of one measurement.
|
|
228
|
-
const curve = curveFor(primary?.curve)
|
|
229
|
-
// Never reached with a null `__y`: d3's line/area generators call the position accessors only
|
|
230
|
-
// for points `defined` accepted. The `NaN` floor is a type-level one, and it can never paint at
|
|
231
|
-
// zero the way a `?? 0` would.
|
|
232
|
-
const yOf = (d: Pt<T>) => yScale(d.__y ?? NaN)
|
|
233
|
-
|
|
234
|
-
// Area is opt-in: pass a color token to get a cohesive single-hue fill under the line.
|
|
235
|
-
// (A neutral fill under the neutral line just reads as grey haze, so there is no default-on.)
|
|
236
|
-
const showArea = areaFill !== undefined && areaFill !== false
|
|
237
|
-
const areaColor = typeof areaFill === 'string' ? areaFill : primary?.color
|
|
238
|
-
const areaId = `${chartId}-area`
|
|
239
|
-
|
|
240
|
-
return (
|
|
241
|
-
<>
|
|
242
|
-
{thresholds.map((t, i) => (
|
|
243
|
-
<Threshold<Pt<T>>
|
|
244
|
-
key={`thr-${i}`}
|
|
245
|
-
id={`${chartId}-thr-${i}`}
|
|
246
|
-
data={pts}
|
|
247
|
-
defined={defined}
|
|
248
|
-
x={(d) => xScale(getX(d)) ?? 0}
|
|
249
|
-
y0={() => yScale(t.value)}
|
|
250
|
-
y1={yOf}
|
|
251
|
-
clipAboveTo={0}
|
|
252
|
-
clipBelowTo={yMax}
|
|
253
|
-
curve={curve}
|
|
254
|
-
belowAreaProps={{ fill: t.side === 'above' ? t.fill : 'transparent' }}
|
|
255
|
-
aboveAreaProps={{ fill: t.side === 'below' ? t.fill : 'transparent' }}
|
|
256
|
-
/>
|
|
257
|
-
))}
|
|
258
|
-
|
|
259
|
-
{showArea && areaColor !== undefined && (
|
|
260
|
-
<>
|
|
261
|
-
<defs>
|
|
262
|
-
<AreaGradient id={areaId} color={areaColor} />
|
|
263
|
-
</defs>
|
|
264
|
-
<AreaClosed<Pt<T>>
|
|
265
|
-
data={pts}
|
|
266
|
-
defined={defined}
|
|
267
|
-
x={(d) => xScale(getX(d)) ?? 0}
|
|
268
|
-
y={yOf}
|
|
269
|
-
yScale={yScale}
|
|
270
|
-
curve={curve}
|
|
271
|
-
fill={areaFillUrl(areaId)}
|
|
272
|
-
/>
|
|
273
|
-
</>
|
|
274
|
-
)}
|
|
275
|
-
|
|
276
|
-
{primary && (
|
|
277
|
-
<LinePath<Pt<T>>
|
|
278
|
-
data={pts}
|
|
279
|
-
defined={defined}
|
|
280
|
-
x={(d) => xScale(getX(d)) ?? 0}
|
|
281
|
-
y={yOf}
|
|
282
|
-
stroke={primary.color}
|
|
283
|
-
strokeWidth={primary.strokeWidth ?? LINE_OVERLAY_STROKE_WIDTH}
|
|
284
|
-
strokeDasharray={primary.dash === 'dashed' ? VX.dashArray : undefined}
|
|
285
|
-
strokeOpacity={primary.strokeOpacity ?? 1}
|
|
286
|
-
curve={curve}
|
|
287
|
-
/>
|
|
288
|
-
)}
|
|
289
|
-
</>
|
|
290
|
-
)
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* Hand-memoized: React Compiler does not process the shipped dist, so the hot ZonedLine kind is
|
|
295
|
-
* wrapped in `React.memo` to retain the auto-memoization it had as source (parity with Bars).
|
|
296
|
-
*/
|
|
297
|
-
const ZonedLineMemo = memo(ZonedLineInner)
|
|
298
|
-
// Without it every kind reads as `Memo` in React DevTools (audit A16) — a profiler flame
|
|
299
|
-
// graph of nine identically-named nodes names nothing.
|
|
300
|
-
ZonedLineMemo.displayName = 'ZonedLine'
|
|
301
|
-
export const ZonedLine = ZonedLineMemo as typeof ZonedLineInner
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from 'react'
|
|
2
|
-
import type { BandPlot, BandTooltipConfig } from '../hooks/useBandPlot'
|
|
3
|
-
import { AxisBottomDate } from '../primitives/Axes'
|
|
4
|
-
import { ChartTooltipFloat, TooltipBody, TooltipHeader } from '../primitives/ChartTooltip'
|
|
5
|
-
import { cursorSliderProps, HoverOverlay } from '../primitives/HoverOverlay'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* The chrome `BandStrip` and `MirroredBars` share around their own marks — the slot axis, the
|
|
9
|
-
* keyboard/pointer overlay and the tooltip shell — so the two `useBandPlot` kinds cannot drift in
|
|
10
|
-
* any of them. Internal; neither is exported from a barrel.
|
|
11
|
-
*
|
|
12
|
-
* theme-allow-file hand-rolled-plot — the slot axis and overlay of the two declared banded
|
|
13
|
-
* exceptions (`BandStrip`, `MirroredBars`), which carry the same waiver for the same reason.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/** A 0..1 share. Non-finite (a 0/0 fold count) reads as "nothing is absent" — the conservative
|
|
17
|
-
* end, since the alternative is a band that does not render at all. */
|
|
18
|
-
export function clampFraction(value: number | undefined): number {
|
|
19
|
-
if (value === undefined || !Number.isFinite(value)) return 0
|
|
20
|
-
return Math.min(Math.max(value, 0), 1)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/** The slot axis under a `height`-tall band row, plus the hover/keyboard overlay over it. */
|
|
24
|
-
export function BandAxisOverlay<T>({
|
|
25
|
-
band,
|
|
26
|
-
height,
|
|
27
|
-
getX,
|
|
28
|
-
formatX,
|
|
29
|
-
ariaLabel,
|
|
30
|
-
}: {
|
|
31
|
-
band: BandPlot<T>
|
|
32
|
-
height: number
|
|
33
|
-
getX: (d: T) => string
|
|
34
|
-
formatX: (key: string) => string
|
|
35
|
-
ariaLabel: string | undefined
|
|
36
|
-
}) {
|
|
37
|
-
return (
|
|
38
|
-
<>
|
|
39
|
-
<AxisBottomDate
|
|
40
|
-
top={height}
|
|
41
|
-
scale={band.scale}
|
|
42
|
-
tickValues={band.tickValues}
|
|
43
|
-
tickFormat={(v) => formatX(String(v))}
|
|
44
|
-
anchorTerminals={band.xAnchorTerminals}
|
|
45
|
-
{...(band.xWrapWidth !== undefined && { wrapWidth: band.xWrapWidth })}
|
|
46
|
-
/>
|
|
47
|
-
<HoverOverlay
|
|
48
|
-
width={band.plotWidth}
|
|
49
|
-
height={height}
|
|
50
|
-
{...cursorSliderProps({ cursor: band.cursor, data: band.bands, getX, formatX, ariaLabel })}
|
|
51
|
-
/>
|
|
52
|
-
</>
|
|
53
|
-
)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/** The tooltip shell: header (+ badge), the consumer's prepended rows, the kind's own derived
|
|
57
|
-
* `children` rows, the consumer's extra rows. Renders nothing off-hover or with `tooltip: false`. */
|
|
58
|
-
export function BandTooltip<T>({
|
|
59
|
-
band,
|
|
60
|
-
tooltip,
|
|
61
|
-
getX,
|
|
62
|
-
hidden,
|
|
63
|
-
children,
|
|
64
|
-
}: {
|
|
65
|
-
band: BandPlot<T>
|
|
66
|
-
tooltip: BandTooltipConfig<T> | false | undefined
|
|
67
|
-
getX: (d: T) => string
|
|
68
|
-
hidden: ReadonlySet<string>
|
|
69
|
-
children: ReactNode
|
|
70
|
-
}) {
|
|
71
|
-
const { point } = band
|
|
72
|
-
if (!band.showTooltip || point === null) return null
|
|
73
|
-
const cfg = tooltip === false ? undefined : tooltip
|
|
74
|
-
const badge = cfg?.label === undefined ? null : cfg.label(point)
|
|
75
|
-
return (
|
|
76
|
-
<ChartTooltipFloat anchor={band.tooltipAnchor} ariaLive={band.ariaLive}>
|
|
77
|
-
<TooltipHeader
|
|
78
|
-
date={getX(point)}
|
|
79
|
-
{...(cfg?.formatHeader !== undefined && {
|
|
80
|
-
format: (key: string) => cfg.formatHeader?.(key, point) ?? key,
|
|
81
|
-
})}
|
|
82
|
-
{...(badge !== null && { label: badge.text, labelColor: badge.color })}
|
|
83
|
-
/>
|
|
84
|
-
<TooltipBody>
|
|
85
|
-
{cfg?.prependRows?.(point, { hidden })}
|
|
86
|
-
{children}
|
|
87
|
-
{cfg?.extraRows?.(point, { hidden })}
|
|
88
|
-
</TooltipBody>
|
|
89
|
-
</ChartTooltipFloat>
|
|
90
|
-
)
|
|
91
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import type { ContainerClass } from '../../tokens/size-classes'
|
|
2
|
-
|
|
3
|
-
/** Aspect (frame W/H) above which the legend moves beside the ring. */
|
|
4
|
-
export const SIDE_LEGEND_ASPECT = 1.5
|
|
5
|
-
/** Aspect a side layout must fall below before it stacks again — the gap stops a legend whose own
|
|
6
|
-
* placement changes the measured height from flipping the layout back and forth. */
|
|
7
|
-
export const STACK_LEGEND_ASPECT = 1.35
|
|
8
|
-
/** Most slices kept before the rest fold into "Other" (so 7 or more slices fold). */
|
|
9
|
-
export const DONUT_MAX_SLICES = 6
|
|
10
|
-
export const OTHER_KEY = '__other'
|
|
11
|
-
/** Side layout: the ring's diameter never exceeds this share of the frame width. */
|
|
12
|
-
export const SIDE_RING_MAX_WIDTH_SHARE = 0.55
|
|
13
|
-
/** Space kept between the ring's outer edge and the plot box. */
|
|
14
|
-
export const RING_PADDING = 4
|
|
15
|
-
|
|
16
|
-
export type DonutLayout = { side: boolean }
|
|
17
|
-
|
|
18
|
-
/** Side legend only on a wide-enough frame (`micro`/`compact` always stack under the ring).
|
|
19
|
-
* `wasSide` applies hysteresis: an already-side layout stays side until W/H falls below
|
|
20
|
-
* {@link STACK_LEGEND_ASPECT}. */
|
|
21
|
-
export function resolveDonutLayout(input: {
|
|
22
|
-
frameW: number
|
|
23
|
-
frameH: number
|
|
24
|
-
containerClass: ContainerClass
|
|
25
|
-
wasSide?: boolean
|
|
26
|
-
}): DonutLayout {
|
|
27
|
-
const { frameW, frameH, containerClass, wasSide = false } = input
|
|
28
|
-
const roomy = containerClass !== 'micro' && containerClass !== 'compact'
|
|
29
|
-
if (!roomy || frameH <= 0) return { side: false }
|
|
30
|
-
const aspect = frameW / frameH
|
|
31
|
-
return { side: wasSide ? aspect >= STACK_LEGEND_ASPECT : aspect > SIDE_LEGEND_ASPECT }
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/** Ring outer radius: never negative and never wider than the plot; the side layout also caps the
|
|
35
|
-
* diameter at {@link SIDE_RING_MAX_WIDTH_SHARE} of the frame width. */
|
|
36
|
-
export function resolveDonutRadius(input: {
|
|
37
|
-
plotW: number
|
|
38
|
-
plotH: number
|
|
39
|
-
frameW: number
|
|
40
|
-
side: boolean
|
|
41
|
-
}): number {
|
|
42
|
-
const { plotW, plotH, frameW, side } = input
|
|
43
|
-
const diameter = side
|
|
44
|
-
? Math.min(plotW, plotH, SIDE_RING_MAX_WIDTH_SHARE * frameW)
|
|
45
|
-
: Math.min(plotW, plotH)
|
|
46
|
-
return Math.max(0, diameter / 2 - RING_PADDING)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/** Share of `total` as a whole percent; an empty total is 0%. */
|
|
50
|
-
export function sharePercent(value: number, total: number): number {
|
|
51
|
-
return total > 0 ? Math.round((value / total) * 100) : 0
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/** A slice value a ring can draw: non-finite or negative counts as 0. */
|
|
55
|
-
const safeValue = (value: number): number => (Number.isFinite(value) && value > 0 ? value : 0)
|
|
56
|
-
|
|
57
|
-
/** The key for the synthesized "Other" bucket — {@link OTHER_KEY}, prefixed until no input key uses it. */
|
|
58
|
-
export function resolveOtherKey(keys: readonly string[]): string {
|
|
59
|
-
const taken = new Set(keys)
|
|
60
|
-
let key = OTHER_KEY
|
|
61
|
-
while (taken.has(key)) key = `_${key}`
|
|
62
|
-
return key
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** Keeps the top {@link DONUT_MAX_SLICES} by value (in original order) and sums the rest into one
|
|
66
|
-
* trailing "Other" entry. Non-finite and negative values count as 0. */
|
|
67
|
-
export function foldOther<T extends { key: string; value: number }>(
|
|
68
|
-
slices: readonly T[],
|
|
69
|
-
): { kept: T[]; other: number | null } {
|
|
70
|
-
const safe = slices.map((s) => ({ ...s, value: safeValue(s.value) }))
|
|
71
|
-
if (safe.length <= DONUT_MAX_SLICES) return { kept: safe, other: null }
|
|
72
|
-
const top = new Set(
|
|
73
|
-
safe
|
|
74
|
-
.toSorted((a, b) => b.value - a.value)
|
|
75
|
-
.slice(0, DONUT_MAX_SLICES)
|
|
76
|
-
.map((s) => s.key),
|
|
77
|
-
)
|
|
78
|
-
return {
|
|
79
|
-
kept: safe.filter((s) => top.has(s.key)),
|
|
80
|
-
other: safe.reduce((sum, s) => (top.has(s.key) ? sum : sum + s.value), 0),
|
|
81
|
-
}
|
|
82
|
-
}
|