basalt-ui 1.41.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +46 -43
- package/CHANGELOG.md +535 -518
- package/MIGRATING.md +945 -37
- package/README.md +171 -366
- package/agent/rules/basalt-batteries.md +19 -74
- package/agent/rules/basalt-charts.md +21 -95
- package/agent/rules/basalt-controls.md +23 -131
- package/agent/rules/basalt-mantine.md +26 -99
- package/agent/rules/basalt-state.md +21 -103
- package/agent/rules/basalt-tokens.md +33 -114
- package/agent/skills/basalt-app/SKILL.md +229 -72
- package/agent/skills/basalt-charts/SKILL.md +23 -57
- package/agent/skills/basalt-design/SKILL.md +12 -70
- package/agent/templates/AGENTS-block.md.tpl +16 -26
- package/agent/templates/DESIGN.md.tpl +1 -1
- package/agent/templates/__root.tpl +9 -16
- package/agent/templates/main.tpl +21 -0
- package/agent/templates/nav.tpl +18 -0
- package/configs/oxlint-basalt.json +4 -10
- package/configs/oxlint-plugin.js +465 -844
- package/configs/oxlint-plugin.test.ts +661 -709
- package/configs/oxlint.json +10 -2
- package/dist/agent/ai-sdk-transport.d.ts +19 -7
- package/dist/agent/ai-sdk-transport.d.ts.map +1 -1
- package/dist/agent/ai-sdk-transport.js +10 -7
- package/dist/{agent-chat → agent/chat}/composer.d.ts +16 -16
- package/dist/agent/chat/composer.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/composer.js +10 -9
- package/dist/{agent-chat → agent/chat}/message-affordances.d.ts +7 -6
- package/dist/agent/chat/message-affordances.d.ts.map +1 -0
- package/dist/agent/chat/relative-time.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-feed-row.d.ts +18 -16
- package/dist/agent/chat/thread-feed-row.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-feed-row.js +12 -11
- package/dist/{agent-chat → agent/chat}/thread-feed.d.ts +8 -8
- package/dist/agent/chat/thread-feed.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-feed.js +12 -10
- package/dist/{agent-chat → agent/chat}/thread-message.d.ts +12 -9
- package/dist/agent/chat/thread-message.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-message.js +15 -13
- package/dist/{agent-chat → agent/chat}/thread-outcome-card.d.ts +2 -2
- package/dist/agent/chat/thread-outcome-card.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/thread-outcome-card.js +3 -3
- package/dist/{agent-chat → agent/chat}/tool-chip.d.ts +5 -5
- package/dist/agent/chat/tool-chip.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/tool-chip.js +4 -4
- package/dist/agent/chat/use-keyboard-inset.d.ts.map +1 -0
- package/dist/{agent-chat → agent/chat}/use-keyboard-inset.js +1 -1
- package/dist/{agent-chat → agent/chat}/virtualize.d.ts +7 -7
- package/dist/agent/chat/virtualize.d.ts.map +1 -0
- package/dist/agent/error.d.ts +31 -0
- package/dist/agent/error.d.ts.map +1 -0
- package/dist/agent/error.js +18 -0
- package/dist/agent/history.d.ts +2 -36
- package/dist/agent/history.d.ts.map +1 -1
- package/dist/agent/history.js +0 -32
- package/dist/agent/id.d.ts +4 -5
- package/dist/agent/id.d.ts.map +1 -1
- package/dist/agent/index.d.ts +19 -52
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +10 -32
- package/dist/agent/outcome.d.ts +3 -14
- package/dist/agent/outcome.d.ts.map +1 -1
- package/dist/agent/outcome.js +0 -30
- package/dist/agent/part-list.d.ts +3 -3
- package/dist/agent/part-list.d.ts.map +1 -1
- package/dist/agent/parts.d.ts +23 -24
- package/dist/agent/parts.d.ts.map +1 -1
- package/dist/agent/run-committer.d.ts +23 -0
- package/dist/agent/run-committer.d.ts.map +1 -0
- package/dist/agent/run-committer.js +41 -0
- package/dist/agent/run-records.d.ts +77 -0
- package/dist/agent/run-records.d.ts.map +1 -0
- package/dist/agent/run-records.js +69 -0
- package/dist/agent/thread.d.ts +23 -47
- package/dist/agent/thread.d.ts.map +1 -1
- package/dist/agent/thread.js +3 -134
- package/dist/agent/transport.d.ts +6 -69
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/transport.js +0 -18
- package/dist/agent/use-agent-thread-runs.d.ts +63 -26
- package/dist/agent/use-agent-thread-runs.d.ts.map +1 -1
- package/dist/agent/use-agent-thread-runs.js +202 -66
- package/dist/charts/BandStrip.d.ts +46 -0
- package/dist/charts/BandStrip.d.ts.map +1 -0
- package/dist/charts/BandStrip.js +151 -0
- package/dist/charts/Bars.d.ts +19 -0
- package/dist/charts/Bars.d.ts.map +1 -0
- package/dist/charts/Bars.js +77 -0
- package/dist/charts/CartesianChart.d.ts +57 -0
- package/dist/charts/CartesianChart.d.ts.map +1 -0
- package/dist/charts/CartesianChart.js +121 -0
- package/dist/charts/ChartCard.d.ts +34 -0
- package/dist/charts/ChartCard.d.ts.map +1 -0
- package/dist/charts/ChartCard.js +115 -0
- package/dist/charts/Donut.d.ts +25 -0
- package/dist/charts/Donut.d.ts.map +1 -0
- package/dist/charts/Donut.js +191 -0
- package/dist/charts/DualPanel.d.ts +47 -0
- package/dist/charts/DualPanel.d.ts.map +1 -0
- package/dist/charts/DualPanel.js +214 -0
- package/dist/charts/Heatmap.d.ts +41 -0
- package/dist/charts/Heatmap.d.ts.map +1 -0
- package/dist/charts/Heatmap.js +216 -0
- package/dist/charts/Lines.d.ts +11 -0
- package/dist/charts/Lines.d.ts.map +1 -0
- package/dist/charts/Lines.js +114 -0
- package/dist/charts/MirroredBars.d.ts +44 -0
- package/dist/charts/MirroredBars.d.ts.map +1 -0
- package/dist/charts/MirroredBars.js +190 -0
- package/dist/charts/Sparkline.d.ts +22 -0
- package/dist/charts/Sparkline.d.ts.map +1 -0
- package/dist/charts/Sparkline.js +129 -0
- package/dist/charts/StackedArea.d.ts +15 -0
- package/dist/charts/StackedArea.d.ts.map +1 -0
- package/dist/charts/StackedArea.js +46 -0
- package/dist/charts/box.d.ts +38 -0
- package/dist/charts/box.d.ts.map +1 -0
- package/dist/charts/box.js +72 -0
- package/dist/charts/card-context.d.ts +3 -0
- package/dist/charts/card-context.d.ts.map +1 -0
- package/dist/charts/card-context.js +7 -0
- package/dist/charts/chart-box.module.css +64 -0
- package/{src/content/article-card.module.css.d.ts → dist/charts/chart-box.module.css.d.ts} +5 -9
- package/dist/charts/chart-card.module.css +25 -0
- package/dist/{dashboard/widget-grid.module.css.d.ts → charts/chart-card.module.css.d.ts} +1 -3
- package/dist/charts/chart-legend.module.css +38 -0
- package/{src/dashboard/widget-grid.module.css.d.ts → dist/charts/chart-legend.module.css.d.ts} +3 -3
- package/dist/charts/compile.d.ts +62 -0
- package/dist/charts/compile.d.ts.map +1 -0
- package/dist/charts/compile.js +386 -0
- package/dist/charts/cursor.d.ts +50 -0
- package/dist/charts/cursor.d.ts.map +1 -0
- package/dist/charts/cursor.js +157 -0
- package/dist/charts/curves.d.ts +12 -0
- package/dist/charts/curves.d.ts.map +1 -0
- package/dist/charts/curves.js +86 -0
- package/dist/charts/donut.module.css +54 -0
- package/dist/{content/article-card.module.css.d.ts → charts/donut.module.css.d.ts} +2 -9
- package/dist/charts/host.d.ts +17 -0
- package/dist/charts/host.d.ts.map +1 -0
- package/dist/charts/host.js +35 -0
- package/dist/charts/index.d.ts +18 -53
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/index.js +17 -189
- package/dist/charts/legend.d.ts +23 -0
- package/dist/charts/legend.d.ts.map +1 -0
- package/dist/charts/legend.js +160 -0
- package/dist/charts/marks.d.ts +25 -0
- package/dist/charts/marks.d.ts.map +1 -0
- package/dist/charts/marks.js +128 -0
- package/dist/charts/panel.d.ts +56 -0
- package/dist/charts/panel.d.ts.map +1 -0
- package/dist/charts/panel.js +123 -0
- package/dist/charts/scales.d.ts +44 -0
- package/dist/charts/scales.d.ts.map +1 -0
- package/dist/charts/scales.js +163 -0
- package/dist/charts/sizing.d.ts +12 -0
- package/dist/charts/sizing.d.ts.map +1 -0
- package/dist/charts/sizing.js +33 -0
- package/dist/charts/state.d.ts +17 -0
- package/dist/charts/state.d.ts.map +1 -0
- package/dist/charts/state.js +53 -0
- package/dist/charts/theme.d.ts +38 -19
- package/dist/charts/theme.d.ts.map +1 -1
- package/dist/charts/theme.js +48 -26
- package/dist/charts/types.d.ts +227 -0
- package/dist/charts/types.d.ts.map +1 -0
- package/dist/charts/types.js +4 -0
- package/dist/cli/audit-allows.d.ts +4 -17
- package/dist/cli/audit-allows.d.ts.map +1 -1
- package/dist/cli/config.d.ts +14 -43
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/doctor-upgrade.d.ts +31 -0
- package/dist/cli/doctor-upgrade.d.ts.map +1 -0
- package/dist/cli/doctor-upgrade.js +269 -0
- package/dist/cli/doctor.d.ts +13 -29
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +51 -9
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +2 -4
- package/dist/cli/index.d.ts +48 -172
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +39 -132
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +43 -37
- package/dist/cli/sync.d.ts +5 -21
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +4 -23
- package/dist/cli/tokens-css.d.ts +7 -28
- package/dist/cli/tokens-css.d.ts.map +1 -1
- package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
- package/dist/commands/ShortcutsHelp.js +4 -5
- package/dist/commands/define-commands.d.ts +15 -31
- package/dist/commands/define-commands.d.ts.map +1 -1
- package/dist/commands/define-commands.js +1 -11
- package/dist/commands/define-overlays.d.ts +5 -19
- package/dist/commands/define-overlays.d.ts.map +1 -1
- package/dist/commands/define-overlays.js +3 -11
- package/dist/commands/index.d.ts +10 -40
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +9 -46
- package/dist/{notifications → commands/notifications}/bell.d.ts +1 -1
- package/dist/commands/notifications/bell.d.ts.map +1 -0
- package/dist/{notifications → commands/notifications}/center.d.ts +2 -2
- package/dist/commands/notifications/center.d.ts.map +1 -0
- package/dist/{notifications → commands/notifications}/center.js +2 -2
- package/dist/{notifications → commands/notifications}/define-notifications.d.ts +3 -3
- package/dist/commands/notifications/define-notifications.d.ts.map +1 -0
- package/dist/commands/notifications/notify.d.ts +44 -0
- package/dist/commands/notifications/notify.d.ts.map +1 -0
- package/dist/commands/notifications/notify.js +79 -0
- package/dist/{notifications → commands/notifications}/store.d.ts +2 -0
- package/dist/commands/notifications/store.d.ts.map +1 -0
- package/dist/{notifications → commands/notifications}/store.js +4 -0
- package/dist/commands/projectors.d.ts +1 -131
- package/dist/commands/projectors.d.ts.map +1 -1
- package/dist/commands/projectors.js +2 -73
- package/dist/commands/shell-bridge.d.ts +3 -3
- package/dist/commands/shortcut-format.d.ts +5 -4
- package/dist/commands/shortcut-format.d.ts.map +1 -1
- package/dist/common/errors.d.ts +3 -3
- package/dist/common/use-measured-widths.d.ts.map +1 -1
- package/dist/common/use-measured-widths.js +5 -3
- package/dist/common/validate.d.ts +2 -2
- package/dist/content/article-layout.d.ts.map +1 -1
- package/dist/content/article-layout.js +3 -3
- package/dist/content/article-model.d.ts +1 -46
- package/dist/content/article-model.d.ts.map +1 -1
- package/dist/content/article-model.js +1 -29
- package/dist/content/index.d.ts +11 -41
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +3 -35
- package/dist/content/markdown.d.ts +1 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +1 -1
- package/dist/content/mermaid.d.ts.map +1 -1
- package/dist/content/mermaid.js +7 -7
- package/dist/content/slug.d.ts +1 -8
- package/dist/content/slug.d.ts.map +1 -1
- package/dist/content/slug.js +1 -8
- package/dist/content/url-hardening.d.ts +2 -2
- package/dist/content/url-hardening.d.ts.map +1 -1
- package/dist/content/url-hardening.js +2 -0
- package/dist/controls/actions.d.ts +16 -1
- package/dist/controls/actions.d.ts.map +1 -1
- package/dist/controls/enum-filter.d.ts +1 -1
- package/dist/controls/enum-filter.d.ts.map +1 -1
- package/dist/controls/filter-context.d.ts.map +1 -1
- package/dist/controls/filter-context.js +3 -1
- package/dist/controls/filter-set.js +4 -6
- package/dist/controls/form-layout.d.ts +1 -1
- package/dist/controls/form-layout.d.ts.map +1 -1
- package/dist/controls/form-layout.js +1 -1
- package/dist/controls/glyphs.d.ts +0 -2
- package/dist/controls/glyphs.d.ts.map +1 -1
- package/dist/controls/glyphs.js +0 -7
- package/dist/controls/index.d.ts +12 -17
- package/dist/controls/index.d.ts.map +1 -1
- package/dist/controls/index.js +5 -39
- package/dist/controls/multi-select-filter.d.ts +4 -3
- package/dist/controls/multi-select-filter.d.ts.map +1 -1
- package/dist/controls/number-filter.d.ts +4 -3
- package/dist/controls/number-filter.d.ts.map +1 -1
- package/dist/controls/number-filter.js +3 -1
- package/dist/controls/range-filter.d.ts +4 -3
- package/dist/controls/range-filter.d.ts.map +1 -1
- package/dist/controls/search-filter.d.ts +4 -3
- package/dist/controls/search-filter.d.ts.map +1 -1
- package/dist/controls/search-filter.js +19 -14
- package/dist/controls/select-filter.d.ts +4 -3
- package/dist/controls/select-filter.d.ts.map +1 -1
- package/dist/controls/sync-button.d.ts.map +1 -1
- package/dist/controls/sync-button.js +12 -15
- package/dist/controls/toggle-filter.d.ts +4 -3
- package/dist/controls/toggle-filter.d.ts.map +1 -1
- package/dist/controls/uncontrolled.d.ts +12 -0
- package/dist/controls/uncontrolled.d.ts.map +1 -0
- package/dist/controls/view-tabs.d.ts +2 -2
- package/dist/controls/view-tabs.d.ts.map +1 -1
- package/dist/controls-dates/index.d.ts +0 -1
- package/dist/controls-dates/index.d.ts.map +1 -1
- package/dist/dashboard/index.d.ts +7 -9
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +3 -23
- package/dist/dashboard/section.d.ts +4 -6
- package/dist/dashboard/section.d.ts.map +1 -1
- package/dist/dashboard/section.js +4 -10
- package/dist/dashboard/stat-card.d.ts +4 -4
- package/dist/dashboard/stat-card.d.ts.map +1 -1
- package/dist/dashboard/stat-card.js +3 -3
- package/dist/dashboard/widget-header.module.css +9 -7
- package/dist/dev-dock.d.ts.map +1 -1
- package/dist/dev-dock.js +6 -1
- package/dist/format/date.d.ts +0 -34
- package/dist/format/date.d.ts.map +1 -1
- package/dist/format/date.js +0 -54
- package/dist/format/index.d.ts +7 -22
- package/dist/format/index.d.ts.map +1 -1
- package/dist/format/index.js +2 -43
- package/dist/format/number.d.ts +3 -14
- package/dist/format/number.d.ts.map +1 -1
- package/dist/format/number.js +0 -13
- package/dist/format/shared.d.ts +2 -3
- package/dist/format/shared.d.ts.map +1 -1
- package/dist/forms/index.d.ts +0 -11
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +1 -14
- package/dist/guard/index.d.ts +6 -21
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +27 -115
- package/dist/guard/types.d.ts +7 -18
- package/dist/guard/types.d.ts.map +1 -1
- package/dist/index.d.ts +16 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -117
- package/dist/provider/create-router.d.ts +44 -0
- package/dist/provider/create-router.d.ts.map +1 -0
- package/dist/provider/create-router.js +62 -0
- package/dist/provider/hotkeys.d.ts +8 -0
- package/dist/provider/hotkeys.d.ts.map +1 -0
- package/dist/provider/hotkeys.js +50 -0
- package/dist/provider/index.d.ts +33 -110
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +182 -82
- package/dist/provider/lab-theme.d.ts.map +1 -1
- package/dist/provider/route-transition.d.ts +76 -0
- package/dist/provider/route-transition.d.ts.map +1 -0
- package/dist/provider/route-transition.js +98 -0
- package/dist/provider/spotlight-actions.d.ts +10 -0
- package/dist/provider/spotlight-actions.d.ts.map +1 -0
- package/dist/provider/spotlight-actions.js +55 -0
- package/dist/provider/test-router.d.ts +6 -0
- package/dist/provider/test-router.d.ts.map +1 -0
- package/dist/provider/test-router.js +18 -0
- package/dist/query-client.d.ts +4 -20
- package/dist/query-client.d.ts.map +1 -1
- package/dist/query-client.js +2 -2
- package/dist/router-tanstack/index.d.ts +18 -64
- package/dist/router-tanstack/index.d.ts.map +1 -1
- package/dist/router-tanstack/index.js +2 -16
- package/dist/router-tanstack/nav.d.ts +12 -1
- package/dist/router-tanstack/nav.d.ts.map +1 -1
- package/dist/router-tanstack/nav.js +8 -1
- package/dist/router-tanstack/search-store.d.ts +1 -1
- package/dist/router-tanstack/search-store.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.d.ts +8 -9
- package/dist/router-tanstack/use-nav.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.js +20 -1
- package/dist/shell/app-mobile-nav.d.ts.map +1 -1
- package/dist/shell/app-sidebar.js +1 -1
- package/dist/shell/index.d.ts +31 -10
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +14 -3
- package/dist/shell/page-aside.d.ts +2 -2
- package/dist/shell/page-aside.d.ts.map +1 -1
- package/dist/shell/page-aside.js +31 -12
- package/dist/shell/page-bar.d.ts +2 -2
- package/dist/shell/page-bar.d.ts.map +1 -1
- package/dist/shell/page-bar.js +1 -1
- package/dist/state.d.ts +10 -12
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -6
- package/dist/styles.css +107 -7
- package/dist/surfaces.d.ts +28 -103
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +54 -143
- package/dist/{data → table}/data-table-state.d.ts +1 -1
- package/dist/table/data-table-state.d.ts.map +1 -0
- package/dist/{data → table}/data-table-state.js +4 -3
- package/dist/{data → table}/data-table.d.ts +28 -49
- package/dist/table/data-table.d.ts.map +1 -0
- package/dist/{data → table}/data-table.js +74 -60
- package/dist/table/index.d.ts +18 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/{data/table.js → table/index.js} +1 -1
- package/dist/table/query-branch.d.ts.map +1 -0
- package/dist/table/table-features.d.ts +69 -0
- package/dist/table/table-features.d.ts.map +1 -0
- package/dist/table/table-features.js +49 -0
- package/dist/telemetry.d.ts +77 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +33 -0
- package/dist/theme/index.d.ts +10 -21
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +3 -14
- package/dist/theme/theme-toggle.d.ts.map +1 -1
- package/dist/theme/theme-toggle.js +7 -33
- package/dist/theme/theme-toggle.module.css +30 -0
- package/dist/theme/theme-toggle.module.css.d.ts +10 -0
- package/dist/theme-lab/derive-controls.d.ts.map +1 -1
- package/dist/theme-lab/derive-controls.js +5 -3
- package/dist/theme-lab/derive-state.d.ts.map +1 -1
- package/dist/theme-lab/derive-state.js +2 -1
- package/dist/tokens/core.d.ts +360 -0
- package/dist/tokens/core.d.ts.map +1 -0
- package/dist/tokens/core.js +708 -0
- package/dist/tokens/derive.d.ts +1 -1
- package/dist/tokens/derive.d.ts.map +1 -1
- package/dist/tokens/index.d.ts +5 -373
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +8 -700
- package/dist/tokens/palette.d.ts +2 -6
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +1 -4
- package/dist/vite.d.ts +4 -3
- package/dist/vite.d.ts.map +1 -1
- package/llms.txt +43 -85
- package/package.json +77 -170
- package/src/agent/ai-sdk-transport.ts +57 -37
- package/src/{agent-chat → agent/chat}/composer.tsx +29 -30
- package/src/{agent-chat → agent/chat}/message-affordances.ts +8 -5
- package/src/{agent-chat → agent/chat}/thread-feed-row.tsx +30 -35
- package/src/{agent-chat → agent/chat}/thread-feed.tsx +40 -35
- package/src/{agent-chat → agent/chat}/thread-message.tsx +37 -35
- package/src/{agent-chat → agent/chat}/thread-outcome-card.tsx +5 -5
- package/src/{agent-chat → agent/chat}/tool-chip.tsx +12 -12
- package/src/{agent-chat → agent/chat}/use-keyboard-inset.ts +1 -1
- package/src/{agent-chat → agent/chat}/virtualize.ts +5 -5
- package/src/agent/error.ts +43 -0
- package/src/agent/history.ts +2 -107
- package/src/agent/id.ts +4 -5
- package/src/agent/index.ts +23 -112
- package/src/agent/outcome.ts +3 -56
- package/src/agent/part-list.tsx +3 -3
- package/src/agent/parts.ts +23 -22
- package/src/agent/run-committer.ts +64 -0
- package/src/agent/run-records.ts +147 -0
- package/src/agent/thread.ts +24 -231
- package/src/agent/transport.ts +6 -96
- package/src/agent/use-agent-thread-runs.ts +364 -199
- package/src/charts/BandStrip.tsx +276 -0
- package/src/charts/Bars.tsx +141 -0
- package/src/charts/CartesianChart.tsx +206 -0
- package/src/charts/ChartCard.tsx +178 -0
- package/src/charts/Donut.tsx +256 -0
- package/src/charts/DualPanel.tsx +326 -0
- package/src/charts/Heatmap.tsx +282 -0
- package/src/charts/Lines.tsx +151 -0
- package/src/charts/MirroredBars.tsx +303 -0
- package/src/charts/Sparkline.tsx +176 -0
- package/src/charts/StackedArea.tsx +80 -0
- package/src/charts/box.tsx +96 -0
- package/src/charts/card-context.ts +11 -0
- package/src/charts/chart-box.module.css +64 -0
- package/src/charts/chart-box.module.css.d.ts +12 -0
- package/src/charts/chart-card.module.css +25 -0
- package/src/charts/chart-card.module.css.d.ts +8 -0
- package/src/charts/chart-legend.module.css +38 -0
- package/src/charts/chart-legend.module.css.d.ts +10 -0
- package/src/charts/compile.ts +585 -0
- package/src/charts/cursor.ts +282 -0
- package/src/charts/curves.ts +111 -0
- package/src/charts/donut.module.css +54 -0
- package/src/charts/donut.module.css.d.ts +9 -0
- package/src/charts/host.tsx +60 -0
- package/src/charts/index.ts +41 -178
- package/src/charts/legend.tsx +204 -0
- package/src/charts/marks.ts +201 -0
- package/src/charts/panel.tsx +227 -0
- package/src/charts/scales.ts +237 -0
- package/src/charts/sizing.ts +47 -0
- package/src/charts/state.tsx +80 -0
- package/src/charts/theme.ts +65 -0
- package/src/charts/types.ts +242 -0
- package/src/cli/audit-allows.ts +8 -30
- package/src/cli/config.ts +14 -43
- package/src/cli/doctor-upgrade.ts +392 -0
- package/src/cli/doctor.ts +81 -72
- package/src/cli/help.ts +2 -4
- package/src/cli/index.ts +100 -384
- package/src/cli/init.ts +60 -51
- package/src/cli/sync.ts +13 -68
- package/src/cli/tokens-css.ts +7 -28
- package/src/commands/ShortcutsHelp.tsx +8 -9
- package/src/commands/define-commands.ts +16 -43
- package/src/commands/define-overlays.ts +12 -36
- package/src/commands/index.ts +11 -94
- package/src/{notifications → commands/notifications}/bell.tsx +2 -2
- package/src/{notifications → commands/notifications}/center.tsx +7 -5
- package/src/{notifications → commands/notifications}/define-notifications.ts +3 -3
- package/src/commands/notifications/notify.tsx +158 -0
- package/src/{notifications → commands/notifications}/store.ts +10 -2
- package/src/commands/projectors.ts +5 -225
- package/src/commands/shell-bridge.ts +5 -5
- package/src/commands/shortcut-format.ts +5 -4
- package/src/common/errors.ts +3 -3
- package/src/common/use-measured-widths.ts +6 -3
- package/src/common/validate.ts +2 -2
- package/src/content/article-layout.tsx +37 -38
- package/src/content/article-model.ts +1 -84
- package/src/content/index.ts +12 -83
- package/src/content/markdown.tsx +4 -3
- package/src/content/mermaid.tsx +9 -7
- package/src/content/slug.ts +1 -16
- package/src/content/url-hardening.ts +8 -2
- package/src/controls/actions.tsx +24 -1
- package/src/controls/enum-filter.tsx +1 -1
- package/src/controls/filter-context.tsx +3 -1
- package/src/controls/filter-set.tsx +5 -7
- package/src/controls/form-layout.tsx +2 -2
- package/src/controls/glyphs.tsx +0 -10
- package/src/controls/index.ts +13 -64
- package/src/controls/multi-select-filter.tsx +5 -4
- package/src/controls/number-filter.tsx +8 -4
- package/src/controls/range-filter.tsx +5 -4
- package/src/controls/search-filter.tsx +25 -19
- package/src/controls/select-filter.tsx +5 -4
- package/src/controls/sync-button.tsx +18 -20
- package/src/controls/toggle-filter.tsx +5 -4
- package/src/controls/uncontrolled.ts +12 -0
- package/src/controls/view-tabs.tsx +3 -3
- package/src/controls-dates/date-range-picker.tsx +1 -1
- package/src/controls-dates/index.ts +0 -1
- package/src/dashboard/index.ts +7 -48
- package/src/dashboard/section.tsx +11 -40
- package/src/dashboard/stat-card.tsx +14 -16
- package/src/dashboard/widget-header.module.css +9 -7
- package/src/dev-dock.tsx +14 -27
- package/src/format/date.ts +2 -92
- package/src/format/index.ts +7 -53
- package/src/format/number.ts +3 -26
- package/src/format/shared.ts +2 -3
- package/src/forms/index.ts +0 -23
- package/src/guard/index.ts +36 -191
- package/src/guard/types.ts +6 -19
- package/src/index.ts +30 -282
- package/src/provider/create-router.tsx +138 -0
- package/src/provider/hotkeys.ts +70 -0
- package/src/provider/index.tsx +260 -230
- package/src/provider/lab-theme.ts +3 -2
- package/src/provider/route-transition.ts +199 -0
- package/src/provider/spotlight-actions.tsx +69 -0
- package/src/provider/test-router.tsx +25 -0
- package/src/query-client.ts +4 -22
- package/src/router-tanstack/index.ts +18 -112
- package/src/router-tanstack/nav.ts +28 -2
- package/src/router-tanstack/search-store.ts +9 -2
- package/src/router-tanstack/use-nav.ts +47 -13
- package/src/shell/app-mobile-nav.tsx +3 -2
- package/src/shell/app-sidebar.tsx +1 -1
- package/src/shell/aside-docking.ts +1 -1
- package/src/shell/index.tsx +61 -20
- package/src/shell/page-aside.tsx +47 -23
- package/src/shell/page-bar.tsx +3 -3
- package/src/shell/page-title.tsx +1 -1
- package/src/state.ts +11 -37
- package/src/styles.css +107 -7
- package/src/surfaces.ts +56 -151
- package/src/{data → table}/data-table-state.ts +5 -4
- package/src/{data → table}/data-table.tsx +170 -161
- package/src/table/index.ts +18 -0
- package/src/table/table-features.ts +102 -0
- package/src/telemetry.ts +110 -0
- package/src/theme/index.ts +22 -47
- package/src/theme/theme-toggle.module.css +30 -0
- package/src/theme/theme-toggle.module.css.d.ts +10 -0
- package/src/theme/theme-toggle.tsx +15 -43
- package/src/theme-lab/derive-controls.tsx +5 -3
- package/src/theme-lab/derive-state.ts +2 -1
- package/src/tokens/core.ts +1163 -0
- package/src/tokens/derive.ts +1 -1
- package/src/tokens/index.ts +14 -1181
- package/src/tokens/palette.ts +3 -7
- package/src/vite.ts +3 -3
- package/agent/templates/query-client.ts.tpl +0 -26
- package/dist/agent/adapter.d.ts +0 -150
- package/dist/agent/adapter.d.ts.map +0 -1
- package/dist/agent/adapter.js +0 -482
- package/dist/agent/use-agent-stream.d.ts +0 -35
- package/dist/agent/use-agent-stream.d.ts.map +0 -1
- package/dist/agent/use-agent-stream.js +0 -59
- package/dist/agent-chat/composer.d.ts.map +0 -1
- package/dist/agent-chat/index.d.ts +0 -31
- package/dist/agent-chat/index.d.ts.map +0 -1
- package/dist/agent-chat/index.js +0 -19
- package/dist/agent-chat/message-affordances.d.ts.map +0 -1
- package/dist/agent-chat/relative-time.d.ts.map +0 -1
- package/dist/agent-chat/thread-detail-panel.d.ts +0 -28
- package/dist/agent-chat/thread-detail-panel.d.ts.map +0 -1
- package/dist/agent-chat/thread-detail-panel.js +0 -115
- package/dist/agent-chat/thread-feed-row.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed.d.ts.map +0 -1
- package/dist/agent-chat/thread-message.d.ts.map +0 -1
- package/dist/agent-chat/thread-outcome-card.d.ts.map +0 -1
- package/dist/agent-chat/thread-workspace.d.ts +0 -44
- package/dist/agent-chat/thread-workspace.d.ts.map +0 -1
- package/dist/agent-chat/thread-workspace.js +0 -153
- package/dist/agent-chat/tool-chip.d.ts.map +0 -1
- package/dist/agent-chat/use-keyboard-inset.d.ts.map +0 -1
- package/dist/agent-chat/virtualize.d.ts.map +0 -1
- package/dist/charts/cursor/resolve.d.ts +0 -75
- package/dist/charts/cursor/resolve.d.ts.map +0 -1
- package/dist/charts/cursor/resolve.js +0 -91
- package/dist/charts/cursor/scope.d.ts +0 -20
- package/dist/charts/cursor/scope.d.ts.map +0 -1
- package/dist/charts/cursor/scope.js +0 -20
- package/dist/charts/cursor/store.d.ts +0 -35
- package/dist/charts/cursor/store.d.ts.map +0 -1
- package/dist/charts/cursor/store.js +0 -25
- package/dist/charts/cursor/touch-pin.d.ts +0 -45
- package/dist/charts/cursor/touch-pin.d.ts.map +0 -1
- package/dist/charts/cursor/touch-pin.js +0 -79
- package/dist/charts/hooks/use-discrete-cursor.d.ts +0 -66
- package/dist/charts/hooks/use-discrete-cursor.d.ts.map +0 -1
- package/dist/charts/hooks/use-discrete-cursor.js +0 -198
- package/dist/charts/hooks/use-hysteresis.d.ts +0 -18
- package/dist/charts/hooks/use-hysteresis.d.ts.map +0 -1
- package/dist/charts/hooks/use-hysteresis.js +0 -12
- package/dist/charts/hooks/useBandPlot.d.ts +0 -145
- package/dist/charts/hooks/useBandPlot.d.ts.map +0 -1
- package/dist/charts/hooks/useBandPlot.js +0 -178
- package/dist/charts/hooks/useChartCursor.d.ts +0 -75
- package/dist/charts/hooks/useChartCursor.d.ts.map +0 -1
- package/dist/charts/hooks/useChartCursor.js +0 -200
- package/dist/charts/hooks/useChartSize.d.ts +0 -29
- package/dist/charts/hooks/useChartSize.d.ts.map +0 -1
- package/dist/charts/hooks/useChartSize.js +0 -8
- package/dist/charts/kinds/BandStrip.d.ts +0 -132
- package/dist/charts/kinds/BandStrip.d.ts.map +0 -1
- package/dist/charts/kinds/BandStrip.js +0 -241
- package/dist/charts/kinds/Bars.d.ts +0 -141
- package/dist/charts/kinds/Bars.d.ts.map +0 -1
- package/dist/charts/kinds/Bars.js +0 -343
- package/dist/charts/kinds/Donut.d.ts +0 -77
- package/dist/charts/kinds/Donut.d.ts.map +0 -1
- package/dist/charts/kinds/Donut.js +0 -245
- package/dist/charts/kinds/DualPanel.d.ts +0 -111
- package/dist/charts/kinds/DualPanel.d.ts.map +0 -1
- package/dist/charts/kinds/DualPanel.js +0 -471
- package/dist/charts/kinds/Heatmap.d.ts +0 -85
- package/dist/charts/kinds/Heatmap.d.ts.map +0 -1
- package/dist/charts/kinds/Heatmap.js +0 -243
- package/dist/charts/kinds/MirroredBars.d.ts +0 -98
- package/dist/charts/kinds/MirroredBars.d.ts.map +0 -1
- package/dist/charts/kinds/MirroredBars.js +0 -292
- package/dist/charts/kinds/MultiLine.d.ts +0 -87
- package/dist/charts/kinds/MultiLine.d.ts.map +0 -1
- package/dist/charts/kinds/MultiLine.js +0 -176
- package/dist/charts/kinds/StackedArea.d.ts +0 -73
- package/dist/charts/kinds/StackedArea.d.ts.map +0 -1
- package/dist/charts/kinds/StackedArea.js +0 -135
- package/dist/charts/kinds/ZonedLine.d.ts +0 -97
- package/dist/charts/kinds/ZonedLine.d.ts.map +0 -1
- package/dist/charts/kinds/ZonedLine.js +0 -155
- package/dist/charts/kinds/band-chrome.d.ts +0 -31
- package/dist/charts/kinds/band-chrome.d.ts.map +0 -1
- package/dist/charts/kinds/band-chrome.js +0 -71
- package/dist/charts/kinds/donut-layout.d.ts +0 -47
- package/dist/charts/kinds/donut-layout.d.ts.map +0 -1
- package/dist/charts/kinds/donut-layout.js +0 -52
- package/dist/charts/layout/auto-margin.d.ts +0 -122
- package/dist/charts/layout/auto-margin.d.ts.map +0 -1
- package/dist/charts/layout/auto-margin.js +0 -81
- package/dist/charts/layout/end-labels.d.ts +0 -64
- package/dist/charts/layout/end-labels.d.ts.map +0 -1
- package/dist/charts/layout/end-labels.js +0 -76
- package/dist/charts/layout/log-ticks.d.ts +0 -27
- package/dist/charts/layout/log-ticks.d.ts.map +0 -1
- package/dist/charts/layout/log-ticks.js +0 -42
- package/dist/charts/primitives/AreaGradient.d.ts +0 -18
- package/dist/charts/primitives/AreaGradient.d.ts.map +0 -1
- package/dist/charts/primitives/AreaGradient.js +0 -13
- package/dist/charts/primitives/Axes.d.ts +0 -83
- package/dist/charts/primitives/Axes.d.ts.map +0 -1
- package/dist/charts/primitives/Axes.js +0 -168
- package/dist/charts/primitives/CartesianChart.d.ts +0 -257
- package/dist/charts/primitives/CartesianChart.d.ts.map +0 -1
- package/dist/charts/primitives/CartesianChart.js +0 -549
- package/dist/charts/primitives/ChartCard.d.ts +0 -66
- package/dist/charts/primitives/ChartCard.d.ts.map +0 -1
- package/dist/charts/primitives/ChartCard.js +0 -143
- package/dist/charts/primitives/ChartFrame.d.ts +0 -156
- package/dist/charts/primitives/ChartFrame.d.ts.map +0 -1
- package/dist/charts/primitives/ChartFrame.js +0 -241
- package/dist/charts/primitives/ChartLegend.d.ts +0 -67
- package/dist/charts/primitives/ChartLegend.d.ts.map +0 -1
- package/dist/charts/primitives/ChartLegend.js +0 -292
- package/dist/charts/primitives/ChartPending.d.ts +0 -113
- package/dist/charts/primitives/ChartPending.d.ts.map +0 -1
- package/dist/charts/primitives/ChartPending.js +0 -117
- package/dist/charts/primitives/ChartTooltip.d.ts +0 -59
- package/dist/charts/primitives/ChartTooltip.d.ts.map +0 -1
- package/dist/charts/primitives/ChartTooltip.js +0 -197
- package/dist/charts/primitives/Crosshair.d.ts +0 -26
- package/dist/charts/primitives/Crosshair.d.ts.map +0 -1
- package/dist/charts/primitives/Crosshair.js +0 -23
- package/dist/charts/primitives/HatchPattern.d.ts +0 -31
- package/dist/charts/primitives/HatchPattern.d.ts.map +0 -1
- package/dist/charts/primitives/HatchPattern.js +0 -31
- package/dist/charts/primitives/HoverOverlay.d.ts +0 -45
- package/dist/charts/primitives/HoverOverlay.d.ts.map +0 -1
- package/dist/charts/primitives/HoverOverlay.js +0 -72
- package/dist/charts/primitives/HoverOverlay.module.css +0 -13
- package/dist/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
- package/dist/charts/primitives/XZoneRects.d.ts +0 -54
- package/dist/charts/primitives/XZoneRects.d.ts.map +0 -1
- package/dist/charts/primitives/XZoneRects.js +0 -65
- package/dist/charts/primitives/ZoneRects.d.ts +0 -38
- package/dist/charts/primitives/ZoneRects.d.ts.map +0 -1
- package/dist/charts/primitives/ZoneRects.js +0 -30
- package/dist/charts/primitives/chart-card-context.d.ts +0 -33
- package/dist/charts/primitives/chart-card-context.d.ts.map +0 -1
- package/dist/charts/primitives/chart-card-context.js +0 -18
- package/dist/charts/primitives/chart-frame-layout.d.ts +0 -185
- package/dist/charts/primitives/chart-frame-layout.d.ts.map +0 -1
- package/dist/charts/primitives/chart-frame-layout.js +0 -175
- package/dist/charts/primitives/chart-layout.d.ts +0 -112
- package/dist/charts/primitives/chart-layout.d.ts.map +0 -1
- package/dist/charts/primitives/chart-layout.js +0 -175
- package/dist/charts/primitives/chart-tier.d.ts +0 -16
- package/dist/charts/primitives/chart-tier.d.ts.map +0 -1
- package/dist/charts/primitives/chart-tier.js +0 -44
- package/dist/charts/primitives/legend-disclosure.d.ts +0 -27
- package/dist/charts/primitives/legend-disclosure.d.ts.map +0 -1
- package/dist/charts/primitives/legend-disclosure.js +0 -153
- package/dist/charts/series.d.ts +0 -189
- package/dist/charts/series.d.ts.map +0 -1
- package/dist/charts/series.js +0 -84
- package/dist/charts/sparklines/BarSparkline.d.ts +0 -37
- package/dist/charts/sparklines/BarSparkline.d.ts.map +0 -1
- package/dist/charts/sparklines/BarSparkline.js +0 -53
- package/dist/charts/sparklines/LineSparkline.d.ts +0 -15
- package/dist/charts/sparklines/LineSparkline.d.ts.map +0 -1
- package/dist/charts/sparklines/LineSparkline.js +0 -51
- package/dist/charts/sparklines/index.d.ts +0 -3
- package/dist/charts/sparklines/index.d.ts.map +0 -1
- package/dist/charts/sparklines/index.js +0 -6
- package/dist/charts/utils/domain.d.ts +0 -35
- package/dist/charts/utils/domain.d.ts.map +0 -1
- package/dist/charts/utils/domain.js +0 -12
- package/dist/charts/utils/format.d.ts +0 -8
- package/dist/charts/utils/format.d.ts.map +0 -1
- package/dist/charts/utils/format.js +0 -20
- package/dist/charts/utils/measure-text.d.ts +0 -25
- package/dist/charts/utils/measure-text.d.ts.map +0 -1
- package/dist/charts/utils/measure-text.js +0 -64
- package/dist/charts/utils/ticks.d.ts +0 -103
- package/dist/charts/utils/ticks.d.ts.map +0 -1
- package/dist/charts/utils/ticks.js +0 -92
- package/dist/commands/overlays-mount.d.ts +0 -122
- package/dist/commands/overlays-mount.d.ts.map +0 -1
- package/dist/commands/overlays-mount.js +0 -125
- package/dist/commands/useCommandHotkeys.d.ts +0 -14
- package/dist/commands/useCommandHotkeys.d.ts.map +0 -1
- package/dist/commands/useCommandHotkeys.js +0 -45
- package/dist/content/article-actions.d.ts +0 -39
- package/dist/content/article-actions.d.ts.map +0 -1
- package/dist/content/article-actions.js +0 -28
- package/dist/content/article-card.d.ts +0 -58
- package/dist/content/article-card.d.ts.map +0 -1
- package/dist/content/article-card.js +0 -79
- package/dist/content/article-card.module.css +0 -111
- package/dist/content/mdx.d.ts +0 -20
- package/dist/content/mdx.d.ts.map +0 -1
- package/dist/content/mdx.js +0 -64
- package/dist/controls/compare-filter.d.ts +0 -42
- package/dist/controls/compare-filter.d.ts.map +0 -1
- package/dist/controls/compare-filter.js +0 -38
- package/dist/controls/slider-control.d.ts +0 -36
- package/dist/controls/slider-control.d.ts.map +0 -1
- package/dist/controls/slider-control.js +0 -64
- package/dist/dashboard/widget-grid.d.ts +0 -27
- package/dist/dashboard/widget-grid.d.ts.map +0 -1
- package/dist/dashboard/widget-grid.js +0 -40
- package/dist/dashboard/widget-grid.module.css +0 -69
- package/dist/data/data-table-state.d.ts.map +0 -1
- package/dist/data/data-table.d.ts.map +0 -1
- package/dist/data/query-branch.d.ts.map +0 -1
- package/dist/data/table.d.ts +0 -24
- package/dist/data/table.d.ts.map +0 -1
- package/dist/data/virtual-list.d.ts +0 -133
- package/dist/data/virtual-list.d.ts.map +0 -1
- package/dist/data/virtual-list.js +0 -157
- package/dist/data/virtual.d.ts +0 -21
- package/dist/data/virtual.d.ts.map +0 -1
- package/dist/data/virtual.js +0 -4
- package/dist/forms/FormErrorSummary.d.ts +0 -30
- package/dist/forms/FormErrorSummary.d.ts.map +0 -1
- package/dist/forms/FormErrorSummary.js +0 -30
- package/dist/forms/use-field-array.d.ts +0 -60
- package/dist/forms/use-field-array.d.ts.map +0 -1
- package/dist/forms/use-field-array.js +0 -20
- package/dist/forms/use-form-draft.d.ts +0 -76
- package/dist/forms/use-form-draft.d.ts.map +0 -1
- package/dist/forms/use-form-draft.js +0 -92
- package/dist/forms/use-form-submit.d.ts +0 -88
- package/dist/forms/use-form-submit.d.ts.map +0 -1
- package/dist/forms/use-form-submit.js +0 -63
- package/dist/notifications/bell.d.ts.map +0 -1
- package/dist/notifications/center.d.ts.map +0 -1
- package/dist/notifications/define-notifications.d.ts.map +0 -1
- package/dist/notifications/index.d.ts +0 -40
- package/dist/notifications/index.d.ts.map +0 -1
- package/dist/notifications/index.js +0 -54
- package/dist/notifications/mount-guard.d.ts +0 -8
- package/dist/notifications/mount-guard.d.ts.map +0 -1
- package/dist/notifications/mount-guard.js +0 -18
- package/dist/notifications/notify.d.ts +0 -149
- package/dist/notifications/notify.d.ts.map +0 -1
- package/dist/notifications/notify.js +0 -171
- package/dist/notifications/store.d.ts.map +0 -1
- package/dist/provider/connectivity-indicator.d.ts +0 -13
- package/dist/provider/connectivity-indicator.d.ts.map +0 -1
- package/dist/provider/connectivity-indicator.js +0 -205
- package/dist/provider/connectivity-provider.d.ts +0 -7
- package/dist/provider/connectivity-provider.d.ts.map +0 -1
- package/dist/provider/connectivity-provider.js +0 -128
- package/dist/provider/connectivity-types.d.ts +0 -36
- package/dist/provider/connectivity-types.d.ts.map +0 -1
- package/dist/provider/use-connectivity.d.ts +0 -3
- package/dist/provider/use-connectivity.d.ts.map +0 -1
- package/dist/provider/use-connectivity.js +0 -14
- package/dist/query-devtools.d.ts +0 -21
- package/dist/query-devtools.d.ts.map +0 -1
- package/dist/query-devtools.js +0 -13
- package/src/agent/adapter.ts +0 -945
- package/src/agent/use-agent-stream.ts +0 -154
- package/src/agent-chat/index.ts +0 -54
- package/src/agent-chat/thread-detail-panel.tsx +0 -201
- package/src/agent-chat/thread-workspace.tsx +0 -279
- package/src/charts/cursor/resolve.ts +0 -198
- package/src/charts/cursor/scope.tsx +0 -35
- package/src/charts/cursor/store.ts +0 -58
- package/src/charts/cursor/touch-pin.ts +0 -138
- package/src/charts/hooks/use-discrete-cursor.ts +0 -335
- package/src/charts/hooks/use-hysteresis.ts +0 -26
- package/src/charts/hooks/useBandPlot.ts +0 -383
- package/src/charts/hooks/useChartCursor.ts +0 -367
- package/src/charts/hooks/useChartSize.ts +0 -35
- package/src/charts/kinds/BandStrip.tsx +0 -449
- package/src/charts/kinds/Bars.tsx +0 -589
- package/src/charts/kinds/Donut.tsx +0 -368
- package/src/charts/kinds/DualPanel.tsx +0 -712
- package/src/charts/kinds/Heatmap.tsx +0 -396
- package/src/charts/kinds/MirroredBars.tsx +0 -469
- package/src/charts/kinds/MultiLine.tsx +0 -322
- package/src/charts/kinds/StackedArea.tsx +0 -267
- package/src/charts/kinds/ZonedLine.tsx +0 -301
- package/src/charts/kinds/band-chrome.tsx +0 -91
- package/src/charts/kinds/donut-layout.ts +0 -82
- package/src/charts/layout/auto-margin.ts +0 -242
- package/src/charts/layout/end-labels.ts +0 -135
- package/src/charts/layout/log-ticks.ts +0 -90
- package/src/charts/primitives/AreaGradient.tsx +0 -26
- package/src/charts/primitives/Axes.tsx +0 -271
- package/src/charts/primitives/CartesianChart.tsx +0 -1002
- package/src/charts/primitives/ChartCard.tsx +0 -280
- package/src/charts/primitives/ChartFrame.tsx +0 -493
- package/src/charts/primitives/ChartLegend.tsx +0 -422
- package/src/charts/primitives/ChartPending.tsx +0 -243
- package/src/charts/primitives/ChartTooltip.tsx +0 -265
- package/src/charts/primitives/Crosshair.tsx +0 -43
- package/src/charts/primitives/HatchPattern.tsx +0 -55
- package/src/charts/primitives/HoverOverlay.module.css +0 -13
- package/src/charts/primitives/HoverOverlay.module.css.d.ts +0 -8
- package/src/charts/primitives/HoverOverlay.tsx +0 -109
- package/src/charts/primitives/XZoneRects.tsx +0 -132
- package/src/charts/primitives/ZoneRects.tsx +0 -67
- package/src/charts/primitives/chart-card-context.ts +0 -46
- package/src/charts/primitives/chart-frame-layout.ts +0 -430
- package/src/charts/primitives/chart-layout.ts +0 -318
- package/src/charts/primitives/chart-tier.tsx +0 -76
- package/src/charts/primitives/legend-disclosure.tsx +0 -178
- package/src/charts/series.ts +0 -276
- package/src/charts/sparklines/BarSparkline.tsx +0 -94
- package/src/charts/sparklines/LineSparkline.tsx +0 -71
- package/src/charts/sparklines/index.ts +0 -2
- package/src/charts/theme.tsx +0 -53
- package/src/charts/utils/domain.ts +0 -41
- package/src/charts/utils/format.ts +0 -19
- package/src/charts/utils/measure-text.ts +0 -109
- package/src/charts/utils/ticks.ts +0 -239
- package/src/commands/overlays-mount.tsx +0 -333
- package/src/commands/useCommandHotkeys.ts +0 -114
- package/src/content/article-actions.ts +0 -72
- package/src/content/article-card.module.css +0 -111
- package/src/content/article-card.tsx +0 -174
- package/src/content/mdx.tsx +0 -127
- package/src/controls/compare-filter.tsx +0 -81
- package/src/controls/slider-control.tsx +0 -159
- package/src/dashboard/widget-grid.module.css +0 -69
- package/src/dashboard/widget-grid.tsx +0 -146
- package/src/data/table.ts +0 -39
- package/src/data/virtual-list.tsx +0 -356
- package/src/data/virtual.ts +0 -26
- package/src/forms/FormErrorSummary.tsx +0 -71
- package/src/forms/use-field-array.ts +0 -94
- package/src/forms/use-form-draft.ts +0 -262
- package/src/forms/use-form-submit.ts +0 -199
- package/src/notifications/index.ts +0 -88
- package/src/notifications/mount-guard.ts +0 -38
- package/src/notifications/notify.tsx +0 -379
- package/src/provider/connectivity-indicator.tsx +0 -267
- package/src/provider/connectivity-provider.tsx +0 -189
- package/src/provider/connectivity-types.ts +0 -42
- package/src/provider/use-connectivity.ts +0 -26
- package/src/query-devtools.tsx +0 -40
- /package/dist/{agent-chat → agent/chat}/message-affordances.js +0 -0
- /package/dist/{agent-chat → agent/chat}/relative-time.d.ts +0 -0
- /package/dist/{agent-chat → agent/chat}/relative-time.js +0 -0
- /package/dist/{agent-chat → agent/chat}/use-keyboard-inset.d.ts +0 -0
- /package/dist/{agent-chat → agent/chat}/virtualize.js +0 -0
- /package/dist/{notifications → commands/notifications}/bell.js +0 -0
- /package/dist/{notifications → commands/notifications}/define-notifications.js +0 -0
- /package/dist/{provider/connectivity-types.js → controls/uncontrolled.js} +0 -0
- /package/dist/{data → table}/data-table.module.css +0 -0
- /package/dist/{data → table}/data-table.module.css.d.ts +0 -0
- /package/dist/{data → table}/query-branch.d.ts +0 -0
- /package/dist/{data → table}/query-branch.js +0 -0
- /package/src/{agent-chat → agent/chat}/relative-time.ts +0 -0
- /package/src/{data → table}/data-table.module.css +0 -0
- /package/src/{data → table}/data-table.module.css.d.ts +0 -0
- /package/src/{data → table}/query-branch.ts +0 -0
package/dist/charts/series.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
curveLinear,
|
|
3
|
-
curveMonotoneX,
|
|
4
|
-
curveStep,
|
|
5
|
-
curveStepAfter,
|
|
6
|
-
curveStepBefore
|
|
7
|
-
} from "@visx/curve";
|
|
8
|
-
const LINE_OVERLAY_STROKE_WIDTH = 1.9;
|
|
9
|
-
const CURVES = {
|
|
10
|
-
monotone: curveMonotoneX,
|
|
11
|
-
linear: curveLinear,
|
|
12
|
-
step: curveStep,
|
|
13
|
-
stepAfter: curveStepAfter,
|
|
14
|
-
stepBefore: curveStepBefore
|
|
15
|
-
};
|
|
16
|
-
function curveFor(curve) {
|
|
17
|
-
return curve === void 0 ? curveMonotoneX : CURVES[curve];
|
|
18
|
-
}
|
|
19
|
-
const shapeFor = (mark) => mark === "line" ? "line" : "bar";
|
|
20
|
-
function legendEntryFor(s) {
|
|
21
|
-
return {
|
|
22
|
-
key: s.key,
|
|
23
|
-
label: s.label,
|
|
24
|
-
color: s.color,
|
|
25
|
-
shape: shapeFor(s.mark),
|
|
26
|
-
dashed: s.dash === "dashed",
|
|
27
|
-
...s.strokeWidth !== void 0 && { strokeWidth: s.strokeWidth },
|
|
28
|
-
...s.fillOpacity !== void 0 && { fillOpacity: s.fillOpacity },
|
|
29
|
-
...s.strokeOpacity !== void 0 && { strokeOpacity: s.strokeOpacity },
|
|
30
|
-
...s.role !== void 0 && { role: s.role },
|
|
31
|
-
...s.note !== void 0 && { note: s.note }
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
function deriveLegend(series) {
|
|
35
|
-
const entries = [];
|
|
36
|
-
const byKey = /* @__PURE__ */ new Map();
|
|
37
|
-
for (const s of series) {
|
|
38
|
-
if (s.legend === false) continue;
|
|
39
|
-
const entry = legendEntryFor(s);
|
|
40
|
-
entries.push(entry);
|
|
41
|
-
byKey.set(s.key, entry);
|
|
42
|
-
}
|
|
43
|
-
for (const s of series) {
|
|
44
|
-
if (s.legend !== false || s.parent === void 0) continue;
|
|
45
|
-
const parent = byKey.get(s.parent);
|
|
46
|
-
if (parent === void 0) continue;
|
|
47
|
-
parent.children ??= [];
|
|
48
|
-
parent.children.push(legendEntryFor(s));
|
|
49
|
-
}
|
|
50
|
-
return entries;
|
|
51
|
-
}
|
|
52
|
-
function deriveTooltipRows(series, datum, fallbackFormat) {
|
|
53
|
-
const rows = [];
|
|
54
|
-
for (const s of series) {
|
|
55
|
-
if (s.tooltip === false) continue;
|
|
56
|
-
const value = s.getValue(datum);
|
|
57
|
-
if (value === null) continue;
|
|
58
|
-
const format = s.formatValue ?? fallbackFormat;
|
|
59
|
-
rows.push({
|
|
60
|
-
key: s.key,
|
|
61
|
-
label: s.label,
|
|
62
|
-
color: s.color,
|
|
63
|
-
value: format(value, datum),
|
|
64
|
-
shape: shapeFor(s.mark),
|
|
65
|
-
dashed: s.dash === "dashed",
|
|
66
|
-
...s.strokeWidth !== void 0 && { strokeWidth: s.strokeWidth }
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
return rows;
|
|
70
|
-
}
|
|
71
|
-
function toPlotPoint(v) {
|
|
72
|
-
return v === null || v === void 0 || Number.isNaN(v) ? null : v;
|
|
73
|
-
}
|
|
74
|
-
function definedOn(scale) {
|
|
75
|
-
return (d) => d.__y !== null && Number.isFinite(scale(d.__y));
|
|
76
|
-
}
|
|
77
|
-
export {
|
|
78
|
-
LINE_OVERLAY_STROKE_WIDTH,
|
|
79
|
-
curveFor,
|
|
80
|
-
definedOn,
|
|
81
|
-
deriveLegend,
|
|
82
|
-
deriveTooltipRows,
|
|
83
|
-
toPlotPoint
|
|
84
|
-
};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { BasaltProps } from '../../common/props.js';
|
|
2
|
-
export type BarSparklineProps = BasaltProps & {
|
|
3
|
-
data: number[];
|
|
4
|
-
width: number;
|
|
5
|
-
height: number;
|
|
6
|
-
color?: string;
|
|
7
|
-
/**
|
|
8
|
-
* Gap between two bars, in px. `1` is the shipped look; `2` at ~10 bars reads as a discrete series
|
|
9
|
-
* rather than a histogram, which is the KPI-card treatment.
|
|
10
|
-
*
|
|
11
|
-
* @default 1
|
|
12
|
-
*/
|
|
13
|
-
barGap?: number;
|
|
14
|
-
/**
|
|
15
|
-
* Bar corner radius, in px. `0` is the shipped look.
|
|
16
|
-
*
|
|
17
|
-
* @default 0
|
|
18
|
-
*/
|
|
19
|
-
barRadius?: number;
|
|
20
|
-
/**
|
|
21
|
-
* Paints the LAST bar in `emphasisColor` at full opacity — "this is where the series ends", the
|
|
22
|
-
* one reading a trend beside a KPI value is actually for. Off by default: a chart that means
|
|
23
|
-
* something by its final point must say so.
|
|
24
|
-
*
|
|
25
|
-
* @default false
|
|
26
|
-
*/
|
|
27
|
-
emphasizeLast?: boolean;
|
|
28
|
-
/** The emphasised bar's fill. @default `VX.accent` */
|
|
29
|
-
emphasisColor?: string;
|
|
30
|
-
/** Accessible text alternative, applied as `aria-label` (+ `role="img"`) on the `<svg>`. */
|
|
31
|
-
ariaLabel?: string;
|
|
32
|
-
};
|
|
33
|
-
/** Quiet inline bar trend — defaults to `VX.faint`, matching the sparkline family's restrained
|
|
34
|
-
* identity (docs/DESIGN-SPEC.md §5). Every geometry option below defaults to the shipped look, so
|
|
35
|
-
* an existing call site renders byte-identically. */
|
|
36
|
-
export declare function BarSparkline({ data, width, height, color, barGap, barRadius, emphasizeLast, emphasisColor, ariaLabel, className, style, }: BarSparklineProps): import("react").JSX.Element;
|
|
37
|
-
//# sourceMappingURL=BarSparkline.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BarSparkline.d.ts","sourceRoot":"","sources":["../../../src/charts/sparklines/BarSparkline.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;qDAEqD;AACrD,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,EACL,MAAU,EACV,SAAa,EACb,aAAqB,EACrB,aAAa,EACb,SAAS,EACT,SAAS,EACT,KAAK,GACN,EAAE,iBAAiB,+BAyCnB"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { scaleLinear } from "@visx/scale";
|
|
3
|
-
import { useMemo } from "react";
|
|
4
|
-
import { VX } from "../../tokens/index.js";
|
|
5
|
-
function BarSparkline({
|
|
6
|
-
data,
|
|
7
|
-
width,
|
|
8
|
-
height,
|
|
9
|
-
color,
|
|
10
|
-
barGap = 1,
|
|
11
|
-
barRadius = 0,
|
|
12
|
-
emphasizeLast = false,
|
|
13
|
-
emphasisColor,
|
|
14
|
-
ariaLabel,
|
|
15
|
-
className,
|
|
16
|
-
style
|
|
17
|
-
}) {
|
|
18
|
-
const fillColor = color ?? VX.faint;
|
|
19
|
-
const lastColor = emphasisColor ?? VX.accent;
|
|
20
|
-
const a11yProps = ariaLabel !== void 0 ? { role: "img", "aria-label": ariaLabel } : {};
|
|
21
|
-
const yScale = useMemo(() => {
|
|
22
|
-
const max = Math.max(...data.filter((v) => isFinite(v)), 1);
|
|
23
|
-
return scaleLinear({ domain: [0, max], range: [0, height] });
|
|
24
|
-
}, [data, height]);
|
|
25
|
-
const rootProps = {
|
|
26
|
-
...className !== void 0 && { className },
|
|
27
|
-
...style !== void 0 && { style }
|
|
28
|
-
};
|
|
29
|
-
if (!data.length) return /* @__PURE__ */ jsx("svg", { width, height, ...rootProps, ...a11yProps });
|
|
30
|
-
const step = width / data.length;
|
|
31
|
-
const barWidth = Math.max(step - barGap, 1);
|
|
32
|
-
const lastIndex = data.length - 1;
|
|
33
|
-
return /* @__PURE__ */ jsx("svg", { width, height, ...rootProps, ...a11yProps, children: data.map((v, i) => {
|
|
34
|
-
const bh = Math.max(yScale(Math.max(v, 0)), 0);
|
|
35
|
-
const isLast = emphasizeLast && i === lastIndex;
|
|
36
|
-
return /* @__PURE__ */ jsx(
|
|
37
|
-
"rect",
|
|
38
|
-
{
|
|
39
|
-
x: i * step,
|
|
40
|
-
y: height - bh,
|
|
41
|
-
width: barWidth,
|
|
42
|
-
height: bh,
|
|
43
|
-
...barRadius > 0 && { rx: barRadius },
|
|
44
|
-
fill: isLast ? lastColor : fillColor,
|
|
45
|
-
fillOpacity: isLast ? 1 : 0.75
|
|
46
|
-
},
|
|
47
|
-
i
|
|
48
|
-
);
|
|
49
|
-
}) });
|
|
50
|
-
}
|
|
51
|
-
export {
|
|
52
|
-
BarSparkline
|
|
53
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { BasaltProps } from '../../common/props.js';
|
|
2
|
-
export type LineSparklineProps = BasaltProps & {
|
|
3
|
-
data: number[];
|
|
4
|
-
width: number;
|
|
5
|
-
height: number;
|
|
6
|
-
color?: string;
|
|
7
|
-
/** Accessible text alternative, applied as `aria-label` (+ `role="img"`) on the `<svg>`. */
|
|
8
|
-
ariaLabel?: string;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Quiet single-hue trend line (docs/DESIGN-SPEC.md §5: "single 1.6px faint line, no fill, no
|
|
12
|
-
* axes, no dots"). Sparklines default to `VX.faint`, not the bolder `VX.line` used by full charts.
|
|
13
|
-
*/
|
|
14
|
-
export declare function LineSparkline({ data, width, height, color, ariaLabel, className, style, }: LineSparklineProps): import("react").JSX.Element;
|
|
15
|
-
//# sourceMappingURL=LineSparkline.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LineSparkline.d.ts","sourceRoot":"","sources":["../../../src/charts/sparklines/LineSparkline.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC7C,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,EACL,SAAS,EACT,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,+BAyCpB"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { curveMonotoneX } from "@visx/curve";
|
|
3
|
-
import { Group } from "@visx/group";
|
|
4
|
-
import { scaleLinear } from "@visx/scale";
|
|
5
|
-
import { LinePath } from "@visx/shape";
|
|
6
|
-
import { useMemo } from "react";
|
|
7
|
-
import { VX } from "../../tokens/index.js";
|
|
8
|
-
function LineSparkline({
|
|
9
|
-
data,
|
|
10
|
-
width,
|
|
11
|
-
height,
|
|
12
|
-
color,
|
|
13
|
-
ariaLabel,
|
|
14
|
-
className,
|
|
15
|
-
style
|
|
16
|
-
}) {
|
|
17
|
-
const strokeColor = color ?? VX.faint;
|
|
18
|
-
const a11yProps = ariaLabel !== void 0 ? { role: "img", "aria-label": ariaLabel } : {};
|
|
19
|
-
const xScale = useMemo(
|
|
20
|
-
() => scaleLinear({ domain: [0, Math.max(data.length - 1, 1)], range: [0, width] }),
|
|
21
|
-
[data.length, width]
|
|
22
|
-
);
|
|
23
|
-
const yScale = useMemo(() => {
|
|
24
|
-
const vals = data.filter((v) => isFinite(v));
|
|
25
|
-
if (!vals.length) return scaleLinear({ domain: [0, 1], range: [height, 0] });
|
|
26
|
-
const min = Math.min(...vals);
|
|
27
|
-
const max = Math.max(...vals);
|
|
28
|
-
const pad = (max - min) * 0.1 || 1;
|
|
29
|
-
return scaleLinear({ domain: [min - pad, max + pad], range: [height, 0] });
|
|
30
|
-
}, [data, height]);
|
|
31
|
-
const rootProps = {
|
|
32
|
-
...className !== void 0 && { className },
|
|
33
|
-
...style !== void 0 && { style }
|
|
34
|
-
};
|
|
35
|
-
if (data.length < 2) return /* @__PURE__ */ jsx("svg", { width, height, ...rootProps, ...a11yProps });
|
|
36
|
-
const indexed = data.map((v, i) => ({ v, i }));
|
|
37
|
-
return /* @__PURE__ */ jsx("svg", { width, height, ...rootProps, ...a11yProps, children: /* @__PURE__ */ jsx(Group, { children: /* @__PURE__ */ jsx(
|
|
38
|
-
LinePath,
|
|
39
|
-
{
|
|
40
|
-
data: indexed,
|
|
41
|
-
x: (d) => xScale(d.i),
|
|
42
|
-
y: (d) => yScale(d.v),
|
|
43
|
-
stroke: strokeColor,
|
|
44
|
-
strokeWidth: 1.6,
|
|
45
|
-
curve: curveMonotoneX
|
|
46
|
-
}
|
|
47
|
-
) }) });
|
|
48
|
-
}
|
|
49
|
-
export {
|
|
50
|
-
LineSparkline
|
|
51
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/charts/sparklines/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto y-domain lower-bound padding — shared by every `yAutoMinCeil`/`autoMinCeil` idiom across
|
|
3
|
-
* the kinds (MultiLine, ZonedLine, Bars' left/right axes).
|
|
4
|
-
*
|
|
5
|
-
* The lower bound must always pad AWAY from the data (`lower <= candidate`), never toward it —
|
|
6
|
-
* a naive `candidate * pad` clips data whenever `candidate` is positive (padding a positive floor
|
|
7
|
-
* UP moves it toward, and past, the data minimum). This is exactly the `yAutoMinCeil={Infinity}`
|
|
8
|
-
* ("no forced zero baseline") idiom: `candidate` becomes the raw data minimum, which is usually
|
|
9
|
-
* positive (e.g. a body-weight series bottoming out at 78), and the old multiplicative pad shoved
|
|
10
|
-
* the axis floor above it.
|
|
11
|
-
*
|
|
12
|
-
* `candidate` is the caller's `Math.min(dataMin, ceil)` — the ceiling has already been applied.
|
|
13
|
-
* - `candidate === 0` (the common default-zero-baseline case: positive-only data with the
|
|
14
|
-
* default `ceil = 0`) stays exactly 0 — never pushed negative.
|
|
15
|
-
* - `candidate > 0` divides by `pad`, moving the floor DOWN toward (and below) the candidate.
|
|
16
|
-
* - `candidate < 0` multiplies by `pad`, moving the floor further DOWN (more negative) — the
|
|
17
|
-
* pre-existing, still-correct behavior for genuinely negative-swinging metrics.
|
|
18
|
-
*/
|
|
19
|
-
export declare function padAutoLower(candidate: number, pad: number): number;
|
|
20
|
-
/**
|
|
21
|
-
* Auto y-domain upper-bound padding — the exact mirror of {@link padAutoLower}, sharing its
|
|
22
|
-
* sign-safety: pad AWAY from zero (`upper >= candidate`), never toward it. `candidate` is the
|
|
23
|
-
* caller's `Math.max(dataMax, floor)` — the `autoMaxFloor` clamp has already been applied, so
|
|
24
|
-
* padding runs AFTER the floor, not before it. Applying the floor post-pad (the pre-existing bug)
|
|
25
|
-
* lands a floored axis top exactly on the floor value with zero headroom — a target line pinned to
|
|
26
|
-
* that floor then sits glued to the plot edge instead of getting the same breathing room every
|
|
27
|
-
* other bound gets.
|
|
28
|
-
*
|
|
29
|
-
* - `candidate === 0` stays exactly 0 — never pushed positive.
|
|
30
|
-
* - `candidate > 0` multiplies by `pad`, moving the ceiling further UP (away from zero).
|
|
31
|
-
* - `candidate < 0` divides by `pad`, moving the ceiling UP toward (and past) zero — the mirror of
|
|
32
|
-
* `padAutoLower`'s `candidate > 0` branch.
|
|
33
|
-
*/
|
|
34
|
-
export declare function padAutoUpper(candidate: number, pad: number): number;
|
|
35
|
-
//# sourceMappingURL=domain.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/charts/utils/domain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGnE"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
function padAutoLower(candidate, pad) {
|
|
2
|
-
if (candidate === 0) return 0;
|
|
3
|
-
return candidate > 0 ? candidate / pad : candidate * pad;
|
|
4
|
-
}
|
|
5
|
-
function padAutoUpper(candidate, pad) {
|
|
6
|
-
if (candidate === 0) return 0;
|
|
7
|
-
return candidate > 0 ? candidate * pad : candidate / pad;
|
|
8
|
-
}
|
|
9
|
-
export {
|
|
10
|
-
padAutoLower,
|
|
11
|
-
padAutoUpper
|
|
12
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Re-export shim. The implementation moved to `basalt-ui/format` (C5 consolidation, so
|
|
3
|
-
* `money`/`percent`/`duration`/`clock`/… and the chart formatters share one implementation
|
|
4
|
-
* instead of two). This file stays so every existing relative import inside `src/charts/**`
|
|
5
|
-
* (`../utils/format`) keeps resolving unchanged.
|
|
6
|
-
*/
|
|
7
|
-
export { fmtAxisDate, fmtTooltipDate, fmtCompact, type FmtCompactOptions, fmtPercent, type FmtPercentOptions, fmtCurrency, type FmtCurrencyOptions, fmtInt, formatters, NON_FINITE, } from '../../format/index.js';
|
|
8
|
-
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/charts/utils/format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,WAAW,EACX,cAAc,EACd,UAAU,EACV,KAAK,iBAAiB,EACtB,UAAU,EACV,KAAK,iBAAiB,EACtB,WAAW,EACX,KAAK,kBAAkB,EACvB,MAAM,EACN,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAA"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
fmtAxisDate,
|
|
3
|
-
fmtTooltipDate,
|
|
4
|
-
fmtCompact,
|
|
5
|
-
fmtPercent,
|
|
6
|
-
fmtCurrency,
|
|
7
|
-
fmtInt,
|
|
8
|
-
formatters,
|
|
9
|
-
NON_FINITE
|
|
10
|
-
} from "../../format/index.js";
|
|
11
|
-
export {
|
|
12
|
-
NON_FINITE,
|
|
13
|
-
fmtAxisDate,
|
|
14
|
-
fmtCompact,
|
|
15
|
-
fmtCurrency,
|
|
16
|
-
fmtInt,
|
|
17
|
-
fmtPercent,
|
|
18
|
-
fmtTooltipDate,
|
|
19
|
-
formatters
|
|
20
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Text measurement for chart layout — the input to {@link autoMargin}.
|
|
3
|
-
*
|
|
4
|
-
* A static margin token cannot know how wide a tick label is, which is why charts used to have to be
|
|
5
|
-
* hand-nudged whenever a label grew (`docs/CHARTS-SPEC.md` §1). This measures the strings that
|
|
6
|
-
* will actually be painted, via an OFFSCREEN canvas 2D context: no element is attached, so there
|
|
7
|
-
* is no layout thrash and no reflow — unlike an SVG `getBBox()` probe.
|
|
8
|
-
*
|
|
9
|
-
* Mantine-free and dependency-free by construction (`charts/**` boundary).
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* The resolved value of `--basalt-font-mono` — canvas needs a concrete family list, it cannot
|
|
13
|
-
* resolve a CSS custom property. Read once from the document element.
|
|
14
|
-
*/
|
|
15
|
-
export declare function monoFontFamily(): string;
|
|
16
|
-
/**
|
|
17
|
-
* Width in px of `text` at `fontPx` in the chart tick font. Memoized per `font|text` — a chart
|
|
18
|
-
* re-measures the same ~10 tick labels on every resize, and the cache turns that into a Map hit.
|
|
19
|
-
*/
|
|
20
|
-
export declare function measureText(text: string, fontPx: number, fontFamily?: string): number;
|
|
21
|
-
/** Widest of `texts` at `fontPx`. Returns 0 for an empty list. */
|
|
22
|
-
export declare function maxTextWidth(texts: readonly string[], fontPx: number, fontFamily?: string): number;
|
|
23
|
-
/** Test seam — drops the memo table (and the resolved family) so a test can change fonts. */
|
|
24
|
-
export declare function resetTextMetrics(): void;
|
|
25
|
-
//# sourceMappingURL=measure-text.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"measure-text.d.ts","sourceRoot":"","sources":["../../../src/charts/utils/measure-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAuCH;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAWvC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBrF;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAOR;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
const FALLBACK_CHAR_RATIO = 0.6;
|
|
2
|
-
const FALLBACK_MONO = "ui-monospace, SFMono-Regular, Menlo, monospace";
|
|
3
|
-
const CACHE_LIMIT = 2e3;
|
|
4
|
-
const cache = /* @__PURE__ */ new Map();
|
|
5
|
-
let ctx;
|
|
6
|
-
let monoFamily;
|
|
7
|
-
function canvasContext() {
|
|
8
|
-
if (ctx !== void 0) return ctx;
|
|
9
|
-
if (typeof document === "undefined") {
|
|
10
|
-
ctx = null;
|
|
11
|
-
return ctx;
|
|
12
|
-
}
|
|
13
|
-
ctx = document.createElement("canvas").getContext("2d");
|
|
14
|
-
document.fonts?.ready?.then?.(() => cache.clear()).catch(() => {
|
|
15
|
-
});
|
|
16
|
-
return ctx;
|
|
17
|
-
}
|
|
18
|
-
function monoFontFamily() {
|
|
19
|
-
if (monoFamily !== void 0) return monoFamily;
|
|
20
|
-
if (typeof document === "undefined" || typeof getComputedStyle !== "function") {
|
|
21
|
-
monoFamily = FALLBACK_MONO;
|
|
22
|
-
return monoFamily;
|
|
23
|
-
}
|
|
24
|
-
const value = getComputedStyle(document.documentElement).getPropertyValue("--basalt-font-mono").trim();
|
|
25
|
-
monoFamily = value.length > 0 ? value : FALLBACK_MONO;
|
|
26
|
-
return monoFamily;
|
|
27
|
-
}
|
|
28
|
-
function measureText(text, fontPx, fontFamily) {
|
|
29
|
-
const family = fontFamily ?? monoFontFamily();
|
|
30
|
-
const font = `${fontPx}px ${family}`;
|
|
31
|
-
const key = `${font}|${text}`;
|
|
32
|
-
const hit = cache.get(key);
|
|
33
|
-
if (hit !== void 0) return hit;
|
|
34
|
-
const c = canvasContext();
|
|
35
|
-
let width;
|
|
36
|
-
if (c === null) {
|
|
37
|
-
width = text.length * fontPx * FALLBACK_CHAR_RATIO;
|
|
38
|
-
} else {
|
|
39
|
-
c.font = font;
|
|
40
|
-
width = c.measureText(text).width;
|
|
41
|
-
}
|
|
42
|
-
if (cache.size >= CACHE_LIMIT) cache.clear();
|
|
43
|
-
cache.set(key, width);
|
|
44
|
-
return width;
|
|
45
|
-
}
|
|
46
|
-
function maxTextWidth(texts, fontPx, fontFamily) {
|
|
47
|
-
let max = 0;
|
|
48
|
-
for (const text of texts) {
|
|
49
|
-
const width = measureText(text, fontPx, fontFamily);
|
|
50
|
-
if (width > max) max = width;
|
|
51
|
-
}
|
|
52
|
-
return max;
|
|
53
|
-
}
|
|
54
|
-
function resetTextMetrics() {
|
|
55
|
-
cache.clear();
|
|
56
|
-
ctx = void 0;
|
|
57
|
-
monoFamily = void 0;
|
|
58
|
-
}
|
|
59
|
-
export {
|
|
60
|
-
maxTextWidth,
|
|
61
|
-
measureText,
|
|
62
|
-
monoFontFamily,
|
|
63
|
-
resetTextMetrics
|
|
64
|
-
};
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import type { ChartTier } from '../primitives/chart-frame-layout.js';
|
|
2
|
-
/**
|
|
3
|
-
* The horizontal room one x tick label needs: the widest string in `labels`, plus breathing space
|
|
4
|
-
* to its neighbour. Feeds `smartTicks`, which otherwise thinned the axis by a constant that knew
|
|
5
|
-
* nothing about what was actually painted (`docs/CHARTS-SPEC.md` §1). Shared by `CartesianChart`,
|
|
6
|
-
* `useBandPlot` and `DualPanel` — the three call sites that used to reimplement this formula.
|
|
7
|
-
*
|
|
8
|
-
* `fontPx` defaults to `VX.axisFont`; a phone-tier chart passes its own smaller tick font
|
|
9
|
-
* (`chartMetrics().axisFont`) so the spacing is derived from the size actually painted.
|
|
10
|
-
*/
|
|
11
|
-
export declare function xLabelPxFor(labels: string[], fontPx?: number): number;
|
|
12
|
-
/**
|
|
13
|
-
* The horizontal room one 45°-rotated x label takes: its projected box (`cos 45°` of the width plus
|
|
14
|
-
* one line box) plus the gap. A tilted label still competes with its neighbour for this much, so
|
|
15
|
-
* thinning by the bare `VX.minPxPerTick` floor let two of them touch as soon as the plot widened.
|
|
16
|
-
*/
|
|
17
|
-
export declare function rotatedXLabelPx(labels: string[], fontPx?: number): number;
|
|
18
|
-
/**
|
|
19
|
-
* Pick evenly-spaced tick values that fit the available width.
|
|
20
|
-
*
|
|
21
|
-
* `labelPx` is the width one formatted label actually needs (measured, plus the gap it wants from
|
|
22
|
-
* its neighbour) and REPLACES the `VX.minPxPerTick` constant whenever it is supplied, in either
|
|
23
|
-
* direction — a wide label needs more room than the constant assumed (a `formatX` returning
|
|
24
|
-
* `Mar 08 14:00` used to overlap at every width, the one side of the chart that did not follow
|
|
25
|
-
* §1's "measure what you paint" law), and a narrow one (single-digit band labels) can pack in
|
|
26
|
-
* MORE ticks than the constant would allow, which the floor used to suppress (R2C-11). Omit it and
|
|
27
|
-
* the constant is what governs, same as before.
|
|
28
|
-
*
|
|
29
|
-
* The final key is still appended when the step misses the last index — a thinned axis would
|
|
30
|
-
* otherwise paint no label at the right edge at all — but it no longer prints ON TOP of its
|
|
31
|
-
* neighbour. An appended tick lands a PARTIAL step from the last one on the grid, so at any tick
|
|
32
|
-
* count wide enough labels overlap there; measured at `/charts-stress` block (f1), `Mar 13 14:00`
|
|
33
|
-
* and `Mar 14 14:00` printed over each other at 1440px. When that gap is narrower than one label,
|
|
34
|
-
* the grid tick before it is dropped instead.
|
|
35
|
-
*
|
|
36
|
-
* `anchorTerminals` (default false) mirrors the SAME flag `autoMargin`/`Axes.tsx` take: when the
|
|
37
|
-
* axis anchors index 0 and the last index at their TEXT edge rather than their centre
|
|
38
|
-
* (`terminalAnchor`), each reaches a FULL label's width toward its neighbour instead of half, so
|
|
39
|
-
* the plain per-tick pitch above (sized for two centred labels) isn't enough at either boundary —
|
|
40
|
-
* `Bars` with 30 daily "Jan DD HH:MM" keys overlapped there at phone width even though the interior
|
|
41
|
-
* pitch was fine (R2C-6). The SAME rule then applies, symmetrically, to the tick right after
|
|
42
|
-
* index 0. 1.5× is a deliberately generous (cheap, simple) stand-in for "one label plus half a
|
|
43
|
-
* label" rather than measuring the split precisely; it's skipped when `labelPx` is only the bare
|
|
44
|
-
* `VX.minPxPerTick` floor, which has no relationship to how wide a label actually is. Index 0
|
|
45
|
-
* always survives (never the one dropped here) and `last` is always (re-)added below, so dropping
|
|
46
|
-
* any OTHER index never breaks the "at least 2 ticks" floor.
|
|
47
|
-
*/
|
|
48
|
-
export declare function smartTicks(dates: string[], xMax: number, labelPx?: number, anchorTerminals?: boolean): string[];
|
|
49
|
-
/**
|
|
50
|
-
* Which of a BAND axis's category labels may be painted so that no two neighbours overlap — the
|
|
51
|
-
* same measured law {@link smartTicks} applies to a point axis, for a chart that lays its labels
|
|
52
|
-
* out itself instead of through the `Axis*` primitives.
|
|
53
|
-
*
|
|
54
|
-
* `Heatmap` was the one kind rendering labels as plain `<text>`, and therefore the one kind exempt
|
|
55
|
-
* from §1's measured-margin law: it printed all 12 columns at 390px, ten of them overlapping. Here
|
|
56
|
-
* `bandPx` is the pitch between two neighbouring labels (a cell's width for columns, its height for
|
|
57
|
-
* rows) and `labelPx` the room one label needs ({@link xLabelPxFor} for a horizontal run, the line
|
|
58
|
-
* box for a vertical one); a label is kept every `ceil(labelPx / bandPx)` bands, so the gap between
|
|
59
|
-
* two painted labels is never narrower than one label.
|
|
60
|
-
*
|
|
61
|
-
* The first and last band always keep theirs — they are the two a reader orients from — and when
|
|
62
|
-
* the last one lands a partial step from the grid, the grid label before it is dropped rather than
|
|
63
|
-
* printed underneath, exactly as `smartTicks` does with its appended final tick.
|
|
64
|
-
*/
|
|
65
|
-
export declare function thinLabels(labels: readonly string[], bandPx: number, labelPx: number): Set<number>;
|
|
66
|
-
/** Variant of smartTicks that targets an exact tick count rather than deriving from width. */
|
|
67
|
-
export declare function smartTicksEvery(dates: string[], count: number): string[];
|
|
68
|
-
/**
|
|
69
|
-
* The phone tier's default x-label rotation: 45° when the labels are so wide that fewer than
|
|
70
|
-
* {@link MIN_HORIZONTAL_TICKS} of them fit side by side, else none.
|
|
71
|
-
*
|
|
72
|
-
* `xLabelRotate` already existed as the answer to a `formatX` too wide to repeat horizontally
|
|
73
|
-
* (`docs/CHARTS-SPEC.md` §1) — it just had to be reached for by hand, per chart, by someone who
|
|
74
|
-
* had already seen it collide on a phone. This makes it the DEFAULT at phone width and only there:
|
|
75
|
-
* rotating trades horizontal crowding for bottom-gutter depth, which is the cheap axis on a narrow
|
|
76
|
-
* viewport and the expensive one on a wide screen that had room all along. Opt out with an
|
|
77
|
-
* explicit `xLabelRotate: 0`.
|
|
78
|
-
*
|
|
79
|
-
* Deliberately measured against the same `labelPx` `smartTicks` thins by, so the decision and the
|
|
80
|
-
* thinning cannot disagree about how wide a label is.
|
|
81
|
-
*
|
|
82
|
-
* **Wanting to rotate is not the same as rotating fitting.** A rotated label reaches into the LEFT
|
|
83
|
-
* gutter (`rotatedLabelExtents`), so rotating BUYS bottom-gutter depth and SPENDS plot width — and
|
|
84
|
-
* at a narrow enough box it spends more than it buys. `/charts-stress` block (f1) is the case:
|
|
85
|
-
* three clean horizontal labels at 390, and at 320 an auto-rotation that reached off the left edge
|
|
86
|
-
* and bought not one extra label for it. So the trade is CHECKED, not assumed. Pass `rotatedXMax`
|
|
87
|
-
* (the width left once `autoMargin({ rotate: 45 })` has taken its deeper left gutter) and the
|
|
88
|
-
* rotation is taken only when the rotated axis paints MORE labels than the flat one at its
|
|
89
|
-
* projected pitch (`labelPx · cos 45°`), and at least two of them. Otherwise the axis stays flat
|
|
90
|
-
* and `smartTicks` thins further — two readable horizontal labels beat two tilted ones in a
|
|
91
|
-
* narrower plot. Omit `rotatedXMax` and the check is skipped.
|
|
92
|
-
*/
|
|
93
|
-
export declare function autoXLabelRotate(input: {
|
|
94
|
-
tier: ChartTier;
|
|
95
|
-
/** Plot width available to the x axis, from the UNROTATED margin. */
|
|
96
|
-
xMax: number;
|
|
97
|
-
/** What one x label needs horizontally ({@link xLabelPxFor}). */
|
|
98
|
-
labelPx: number;
|
|
99
|
-
/** Plot width that would REMAIN once the rotated margin takes its deeper left gutter
|
|
100
|
-
* (`autoMargin({ rotate: 45 })`). Omit to skip the fit check. */
|
|
101
|
-
rotatedXMax?: number;
|
|
102
|
-
}): 0 | 45;
|
|
103
|
-
//# sourceMappingURL=ticks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ticks.d.ts","sourceRoot":"","sources":["../../../src/charts/utils/ticks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAMjE;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,MAAoB,GAAG,MAAM,CAElF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,MAAoB,GAAG,MAAM,CAItF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,eAAe,UAAQ,GACtB,MAAM,EAAE,CAoEV;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,GAAG,CAAC,MAAM,CAAC,CAkBb;AAED,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAKxE;AAaD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,IAAI,EAAE,SAAS,CAAA;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAA;IACZ,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAA;IACf;qEACiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,CAAC,GAAG,EAAE,CAST"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { VX } from "../../tokens/index.js";
|
|
2
|
-
import { maxTextWidth } from "./measure-text.js";
|
|
3
|
-
const X_TICK_LABEL_GAP = 8;
|
|
4
|
-
function xLabelPxFor(labels, fontPx = VX.axisFont) {
|
|
5
|
-
return maxTextWidth(labels, fontPx) + X_TICK_LABEL_GAP;
|
|
6
|
-
}
|
|
7
|
-
function rotatedXLabelPx(labels, fontPx = VX.axisFont) {
|
|
8
|
-
return Math.ceil(COS_45 * (maxTextWidth(labels, fontPx) + Math.ceil(fontPx * 1.35))) + X_TICK_LABEL_GAP;
|
|
9
|
-
}
|
|
10
|
-
function smartTicks(dates, xMax, labelPx, anchorTerminals = false) {
|
|
11
|
-
if (dates.length === 0) return [];
|
|
12
|
-
const perTick = labelPx !== void 0 && labelPx > 0 ? labelPx : VX.minPxPerTick;
|
|
13
|
-
const maxTicks = Math.max(2, Math.floor(xMax / perTick));
|
|
14
|
-
const last = dates.length - 1;
|
|
15
|
-
const pxPerIndex = dates.length > 0 ? xMax / dates.length : 0;
|
|
16
|
-
const anchored = anchorTerminals && labelPx !== void 0 && labelPx > 0;
|
|
17
|
-
const keep = /* @__PURE__ */ new Set();
|
|
18
|
-
if (dates.length <= maxTicks) {
|
|
19
|
-
for (let i = 0; i <= last; i += 1) keep.add(i);
|
|
20
|
-
} else {
|
|
21
|
-
const step = Math.ceil(dates.length / maxTicks);
|
|
22
|
-
for (let i = 0; i <= last; i += step) keep.add(i);
|
|
23
|
-
const BOUNDARY_FACTOR = 1.5;
|
|
24
|
-
const boundaryPx = anchored ? perTick * BOUNDARY_FACTOR : perTick;
|
|
25
|
-
const lastOnGrid = Math.floor(last / step) * step;
|
|
26
|
-
if (lastOnGrid !== last) {
|
|
27
|
-
const gapPx = (last - lastOnGrid) * pxPerIndex;
|
|
28
|
-
if (lastOnGrid > 0 && gapPx > 0 && gapPx < boundaryPx) keep.delete(lastOnGrid);
|
|
29
|
-
keep.add(last);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
if (anchored && keep.size > 1) {
|
|
33
|
-
const BOUNDARY_FACTOR = 1.5;
|
|
34
|
-
const boundaryPx = perTick * BOUNDARY_FACTOR;
|
|
35
|
-
const sorted = [...keep].toSorted((a, b) => a - b);
|
|
36
|
-
const second = sorted[1];
|
|
37
|
-
if (second !== void 0 && second !== last && second * pxPerIndex < boundaryPx) {
|
|
38
|
-
keep.delete(second);
|
|
39
|
-
}
|
|
40
|
-
const afterHead = [...keep].toSorted((a, b) => a - b);
|
|
41
|
-
const secondLast = afterHead[afterHead.length - 2];
|
|
42
|
-
if (secondLast !== void 0 && secondLast !== 0 && (last - secondLast) * pxPerIndex < boundaryPx) {
|
|
43
|
-
keep.delete(secondLast);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return dates.filter((_, i) => keep.has(i));
|
|
47
|
-
}
|
|
48
|
-
function thinLabels(labels, bandPx, labelPx) {
|
|
49
|
-
const keep = /* @__PURE__ */ new Set();
|
|
50
|
-
const last = labels.length - 1;
|
|
51
|
-
if (last < 0) return keep;
|
|
52
|
-
keep.add(0);
|
|
53
|
-
if (last === 0) return keep;
|
|
54
|
-
if (bandPx <= 0 || labelPx <= 0) {
|
|
55
|
-
keep.add(last);
|
|
56
|
-
return keep;
|
|
57
|
-
}
|
|
58
|
-
const step = Math.max(1, Math.ceil(labelPx / bandPx));
|
|
59
|
-
for (let i = 0; i <= last; i += step) keep.add(i);
|
|
60
|
-
const lastOnGrid = Math.floor(last / step) * step;
|
|
61
|
-
if (lastOnGrid !== last && lastOnGrid > 0 && (last - lastOnGrid) * bandPx < labelPx) {
|
|
62
|
-
keep.delete(lastOnGrid);
|
|
63
|
-
}
|
|
64
|
-
keep.add(last);
|
|
65
|
-
return keep;
|
|
66
|
-
}
|
|
67
|
-
function smartTicksEvery(dates, count) {
|
|
68
|
-
if (dates.length === 0) return [];
|
|
69
|
-
if (dates.length <= count) return dates;
|
|
70
|
-
const step = Math.ceil(dates.length / count);
|
|
71
|
-
return dates.filter((_, i) => i % step === 0 || i === dates.length - 1);
|
|
72
|
-
}
|
|
73
|
-
const MIN_HORIZONTAL_TICKS = 3;
|
|
74
|
-
const COS_45 = Math.SQRT1_2;
|
|
75
|
-
function autoXLabelRotate(input) {
|
|
76
|
-
const { tier, xMax, labelPx, rotatedXMax } = input;
|
|
77
|
-
if (tier !== "phone") return 0;
|
|
78
|
-
if (labelPx <= 0 || xMax <= 0) return 0;
|
|
79
|
-
const flatLabels = Math.floor(xMax / labelPx);
|
|
80
|
-
if (flatLabels >= MIN_HORIZONTAL_TICKS) return 0;
|
|
81
|
-
if (rotatedXMax === void 0) return 45;
|
|
82
|
-
const rotatedLabels = Math.floor(rotatedXMax / (labelPx * COS_45));
|
|
83
|
-
return rotatedLabels >= 2 && rotatedLabels > flatLabels ? 45 : 0;
|
|
84
|
-
}
|
|
85
|
-
export {
|
|
86
|
-
autoXLabelRotate,
|
|
87
|
-
rotatedXLabelPx,
|
|
88
|
-
smartTicks,
|
|
89
|
-
smartTicksEvery,
|
|
90
|
-
thinLabels,
|
|
91
|
-
xLabelPxFor
|
|
92
|
-
};
|