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,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Outside-tap / Escape / scroll (optionally resize) dismissal for a pinned/open floating element.
|
|
3
|
-
* Capture-phase `pointerdown` so a descendant that stops propagation on its own handler can't leave
|
|
4
|
-
* the dismissal stuck.
|
|
5
|
-
*/
|
|
6
|
-
export declare function useDismissOnOutside({ enabled, isInside, onDismiss, dismissOnResize, scrollExemptInside, }: {
|
|
7
|
-
enabled: boolean;
|
|
8
|
-
/** A tap (or, with `scrollExemptInside`, a scroll) landing where this returns true doesn't
|
|
9
|
-
* dismiss. Omit to treat every tap as outside. */
|
|
10
|
-
isInside?: (target: Node) => boolean;
|
|
11
|
-
onDismiss: () => void;
|
|
12
|
-
/** Also dismiss on a window `resize` — `ChartLegend`'s disclosure needs this, the touch-pinned
|
|
13
|
-
* cursors don't (their host doesn't reflow independently of the chart it's pinned to). */
|
|
14
|
-
dismissOnResize?: boolean;
|
|
15
|
-
/** Exempts a scroll whose target is `isInside` — `ChartLegend`'s own scrollable panel needs this
|
|
16
|
-
* (`overflowY: auto`), the cursor hooks don't (a chart has no internal scroller to protect). */
|
|
17
|
-
scrollExemptInside?: boolean;
|
|
18
|
-
}): void;
|
|
19
|
-
export type TouchPin = {
|
|
20
|
-
/** `onPointerDown` for a coarse press: snapshots whatever is currently committed (via
|
|
21
|
-
* `getCommitted`) so a later `cancel` can restore exactly that, then tracks `pointerId`. */
|
|
22
|
-
begin: (pointerId: number) => void;
|
|
23
|
-
/** `onPointerUp` for the tracked pointer: the press is now committed — nothing left to revert. */
|
|
24
|
-
commit: (pointerId: number) => boolean;
|
|
25
|
-
/** `onPointerCancel`/`onPointerLeave` for the tracked pointer: the browser took the gesture (a
|
|
26
|
-
* scroll) before the press committed — restores the pre-press value via `setCommitted`, or
|
|
27
|
-
* leaves it clear when nothing was committed before. Returns whether this pointer was tracked. */
|
|
28
|
-
cancel: (pointerId: number) => boolean;
|
|
29
|
-
/** Hard reset — no restore, just drop any in-flight press bookkeeping (an explicit `clear()`, e.g.
|
|
30
|
-
* Escape or an outside tap, is about to overwrite the value directly anyway). */
|
|
31
|
-
reset: () => void;
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Provisional-press state machine shared by `useChartCursor`/`useDiscreteCursor`: a coarse press
|
|
35
|
-
* shows a value immediately (PROVISIONAL, not yet committed) — `commit` on `pointerup` leaves it in
|
|
36
|
-
* place, `cancel` on `pointercancel`/`pointerleave` (a scroll winning the gesture) restores whatever
|
|
37
|
-
* was committed before this press started, rather than dropping it. This is what keeps a previously
|
|
38
|
-
* COMMITTED pin alive through a second tap that gets cancelled instead of completed.
|
|
39
|
-
*/
|
|
40
|
-
export declare function useTouchPin<V>({ getCommitted, setCommitted, }: {
|
|
41
|
-
/** Reads the value currently committed — snapshotted on `begin`, restored on `cancel`. */
|
|
42
|
-
getCommitted: () => V;
|
|
43
|
-
setCommitted: (value: V) => void;
|
|
44
|
-
}): TouchPin;
|
|
45
|
-
//# sourceMappingURL=touch-pin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"touch-pin.d.ts","sourceRoot":"","sources":["../../../src/charts/cursor/touch-pin.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,QAAQ,EACR,SAAS,EACT,eAAuB,EACvB,kBAA0B,GAC3B,EAAE;IACD,OAAO,EAAE,OAAO,CAAA;IAChB;sDACkD;IAClD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,OAAO,CAAA;IACpC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB;8FAC0F;IAC1F,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;oGACgG;IAChG,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,GAAG,IAAI,CA2BP;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB;gGAC4F;IAC5F,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,kGAAkG;IAClG,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IACtC;;sGAEkG;IAClG,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;IACtC;qFACiF;IACjF,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAC7B,YAAY,EACZ,YAAY,GACb,EAAE;IACD,0FAA0F;IAC1F,YAAY,EAAE,MAAM,CAAC,CAAA;IACrB,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;CACjC,GAAG,QAAQ,CAiDX"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useMemo, useRef } from "react";
|
|
2
|
-
function useDismissOnOutside({
|
|
3
|
-
enabled,
|
|
4
|
-
isInside,
|
|
5
|
-
onDismiss,
|
|
6
|
-
dismissOnResize = false,
|
|
7
|
-
scrollExemptInside = false
|
|
8
|
-
}) {
|
|
9
|
-
useEffect(() => {
|
|
10
|
-
if (!enabled) return;
|
|
11
|
-
const onPointerDown = (event) => {
|
|
12
|
-
if (event.target instanceof Node && isInside?.(event.target) === true) return;
|
|
13
|
-
onDismiss();
|
|
14
|
-
};
|
|
15
|
-
const onKeyDown = (event) => {
|
|
16
|
-
if (event.key === "Escape") onDismiss();
|
|
17
|
-
};
|
|
18
|
-
const onScroll = (event) => {
|
|
19
|
-
if (scrollExemptInside && event.target instanceof Node && isInside?.(event.target) === true) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
onDismiss();
|
|
23
|
-
};
|
|
24
|
-
document.addEventListener("pointerdown", onPointerDown, true);
|
|
25
|
-
document.addEventListener("keydown", onKeyDown);
|
|
26
|
-
document.addEventListener("scroll", onScroll, true);
|
|
27
|
-
if (dismissOnResize) window.addEventListener("resize", onDismiss);
|
|
28
|
-
return () => {
|
|
29
|
-
document.removeEventListener("pointerdown", onPointerDown, true);
|
|
30
|
-
document.removeEventListener("keydown", onKeyDown);
|
|
31
|
-
document.removeEventListener("scroll", onScroll, true);
|
|
32
|
-
if (dismissOnResize) window.removeEventListener("resize", onDismiss);
|
|
33
|
-
};
|
|
34
|
-
}, [enabled, isInside, onDismiss, dismissOnResize, scrollExemptInside]);
|
|
35
|
-
}
|
|
36
|
-
function useTouchPin({
|
|
37
|
-
getCommitted,
|
|
38
|
-
setCommitted
|
|
39
|
-
}) {
|
|
40
|
-
const pressRef = useRef(null);
|
|
41
|
-
const backupRef = useRef(void 0);
|
|
42
|
-
const hasBackupRef = useRef(false);
|
|
43
|
-
const getCommittedRef = useRef(getCommitted);
|
|
44
|
-
getCommittedRef.current = getCommitted;
|
|
45
|
-
const setCommittedRef = useRef(setCommitted);
|
|
46
|
-
setCommittedRef.current = setCommitted;
|
|
47
|
-
const begin = useCallback((pointerId) => {
|
|
48
|
-
backupRef.current = getCommittedRef.current();
|
|
49
|
-
hasBackupRef.current = true;
|
|
50
|
-
pressRef.current = pointerId;
|
|
51
|
-
}, []);
|
|
52
|
-
const commit = useCallback((pointerId) => {
|
|
53
|
-
if (pressRef.current !== pointerId) return false;
|
|
54
|
-
pressRef.current = null;
|
|
55
|
-
backupRef.current = void 0;
|
|
56
|
-
hasBackupRef.current = false;
|
|
57
|
-
return true;
|
|
58
|
-
}, []);
|
|
59
|
-
const cancel = useCallback((pointerId) => {
|
|
60
|
-
if (pressRef.current !== pointerId) return false;
|
|
61
|
-
pressRef.current = null;
|
|
62
|
-
const backup = backupRef.current;
|
|
63
|
-
const hasBackup = hasBackupRef.current;
|
|
64
|
-
backupRef.current = void 0;
|
|
65
|
-
hasBackupRef.current = false;
|
|
66
|
-
if (hasBackup) setCommittedRef.current(backup);
|
|
67
|
-
return true;
|
|
68
|
-
}, []);
|
|
69
|
-
const reset = useCallback(() => {
|
|
70
|
-
pressRef.current = null;
|
|
71
|
-
backupRef.current = void 0;
|
|
72
|
-
hasBackupRef.current = false;
|
|
73
|
-
}, []);
|
|
74
|
-
return useMemo(() => ({ begin, commit, cancel, reset }), [begin, commit, cancel, reset]);
|
|
75
|
-
}
|
|
76
|
-
export {
|
|
77
|
-
useDismissOnOutside,
|
|
78
|
-
useTouchPin
|
|
79
|
-
};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import type { KeyboardEventHandler, PointerEventHandler } from 'react';
|
|
2
|
-
/** A discrete target plus the viewport-space point its tooltip anchors to. */
|
|
3
|
-
export type DiscreteCursorTip<T> = {
|
|
4
|
-
target: T;
|
|
5
|
-
anchor: {
|
|
6
|
-
x: number;
|
|
7
|
-
y: number;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
export type UseDiscreteCursorResult<T> = {
|
|
11
|
-
/** The target whose tooltip should render, resolved from whichever mode last set it (hover, a
|
|
12
|
-
* touch pin, or keyboard focus). `null` when nothing is active. */
|
|
13
|
-
tip: DiscreteCursorTip<T> | null;
|
|
14
|
-
/** True once a coarse-pointer tap has PINNED `tip` open (survives pointer lift). */
|
|
15
|
-
isPinned: boolean;
|
|
16
|
-
/** Pointer handlers for one target's shape — spread onto its `<g>`/`<rect>`. Fine pointers
|
|
17
|
-
* (mouse/pen) hover; a coarse pointer (touch) pins on `pointerdown` instead. */
|
|
18
|
-
pointerProps: (t: T) => {
|
|
19
|
-
onPointerEnter: PointerEventHandler<Element>;
|
|
20
|
-
onPointerMove: PointerEventHandler<Element>;
|
|
21
|
-
onPointerDown: PointerEventHandler<Element>;
|
|
22
|
-
onPointerUp: PointerEventHandler<Element>;
|
|
23
|
-
onPointerLeave: PointerEventHandler<Element>;
|
|
24
|
-
onPointerCancel: PointerEventHandler<Element>;
|
|
25
|
-
};
|
|
26
|
-
/** DOM id for a target's `role="option"` element — also `aria-activedescendant`'s value while
|
|
27
|
-
* that target is active. Spread `id={optionId(t)}` on the same node that gets `pointerProps`. */
|
|
28
|
-
optionId: (t: T) => string;
|
|
29
|
-
/** Dismisses a pin and clears keyboard focus. Already wired to Escape and an outside tap while
|
|
30
|
-
* pinned; call it directly for anything else that should close the tooltip (e.g. data changing
|
|
31
|
-
* out from under the focused key). */
|
|
32
|
-
clear: () => void;
|
|
33
|
-
/** Spread on the ONE shared, focusable host (the chart's `<svg>`). */
|
|
34
|
-
hostProps: {
|
|
35
|
-
ref: (node: Element | null) => void;
|
|
36
|
-
tabIndex: 0;
|
|
37
|
-
role: 'listbox';
|
|
38
|
-
'aria-label': string;
|
|
39
|
-
'aria-activedescendant': string | undefined;
|
|
40
|
-
onKeyDown: KeyboardEventHandler<Element>;
|
|
41
|
-
onBlur: () => void;
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* Keyboard + focus + tap parity for a DISCRETE set of targets (donut slices, heatmap cells) — the
|
|
46
|
-
* counterpart `HoverOverlay` gives a continuous cartesian domain (`docs/CHARTS-SPEC.md` §4).
|
|
47
|
-
*
|
|
48
|
-
* **Role choice**: `listbox`/`option` (WAI-ARIA APG "Listbox"), not `slider`. A cartesian domain is
|
|
49
|
-
* one continuous value; a donut slice or heatmap cell is a named choice among discrete siblings.
|
|
50
|
-
* `aria-activedescendant` announces the focused option's id while DOM focus stays on the one host.
|
|
51
|
-
*
|
|
52
|
-
* Three input modes converge on one `tip`: hover (fine pointer, ephemeral), a provisional tap that
|
|
53
|
-
* `pointerup` commits into a pin (a `pointercancel` first — a scroll — clears it), and keyboard
|
|
54
|
-
* stepping on the one focusable host (`columns` maps Up/Down to a full-row jump for a 2D grid;
|
|
55
|
-
* Left/Right always step by one). Keyboard focus anchors the tooltip to the host's center — an
|
|
56
|
-
* accepted simplification; the value still reaches a screen reader via the option's text.
|
|
57
|
-
*/
|
|
58
|
-
export declare function useDiscreteCursor<T>({ targets, getKey, columns, ariaLabel, }: {
|
|
59
|
-
targets: readonly T[];
|
|
60
|
-
getKey: (t: T) => string;
|
|
61
|
-
/** Row width for a 2D grid — see the Up/Down mapping above. Omit for a 1D ring. */
|
|
62
|
-
columns?: number;
|
|
63
|
-
/** Accessible name for the shared listbox host. */
|
|
64
|
-
ariaLabel?: string;
|
|
65
|
-
}): UseDiscreteCursorResult<T>;
|
|
66
|
-
//# sourceMappingURL=use-discrete-cursor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-discrete-cursor.d.ts","sourceRoot":"","sources":["../../../src/charts/hooks/use-discrete-cursor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EAEpB,mBAAmB,EACpB,MAAM,OAAO,CAAA;AAGd,8EAA8E;AAC9E,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAIlF,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI;IACvC;uEACmE;IACnE,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAChC,oFAAoF;IACpF,QAAQ,EAAE,OAAO,CAAA;IACjB;oFACgF;IAChF,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;QACtB,cAAc,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAC5C,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAC3C,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAC3C,WAAW,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;QACzC,cAAc,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAC5C,eAAe,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;KAC9C,CAAA;IACD;qGACiG;IACjG,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAA;IAC1B;;0CAEsC;IACtC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,sEAAsE;IACtE,SAAS,EAAE;QACT,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAA;QACnC,QAAQ,EAAE,CAAC,CAAA;QACX,IAAI,EAAE,SAAS,CAAA;QACf,YAAY,EAAE,MAAM,CAAA;QACpB,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3C,SAAS,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,EAAE,MAAM,IAAI,CAAA;KACnB,CAAA;CACF,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,EACnC,OAAO,EACP,MAAM,EACN,OAAO,EACP,SAAwE,GACzE,EAAE;IACD,OAAO,EAAE,SAAS,CAAC,EAAE,CAAA;IACrB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAA;IACxB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAoQ7B"}
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
2
|
-
import { useDismissOnOutside, useTouchPin } from "../cursor/touch-pin.js";
|
|
3
|
-
function useDiscreteCursor({
|
|
4
|
-
targets,
|
|
5
|
-
getKey,
|
|
6
|
-
columns,
|
|
7
|
-
ariaLabel = "Chart data \u2014 use arrow keys to navigate, Escape to dismiss"
|
|
8
|
-
}) {
|
|
9
|
-
const [active, setActive] = useState(null);
|
|
10
|
-
const [pinned, setPinned] = useState(false);
|
|
11
|
-
const hostElRef = useRef(null);
|
|
12
|
-
const idPrefix = useId();
|
|
13
|
-
const activeRef = useRef(active);
|
|
14
|
-
activeRef.current = active;
|
|
15
|
-
const pinnedRef = useRef(pinned);
|
|
16
|
-
pinnedRef.current = pinned;
|
|
17
|
-
const targetsRef = useRef(targets);
|
|
18
|
-
targetsRef.current = targets;
|
|
19
|
-
const getKeyRef = useRef(getKey);
|
|
20
|
-
getKeyRef.current = getKey;
|
|
21
|
-
const columnsRef = useRef(columns);
|
|
22
|
-
columnsRef.current = columns;
|
|
23
|
-
const moveFrameRef = useRef(null);
|
|
24
|
-
const pendingActiveRef = useRef(null);
|
|
25
|
-
useEffect(
|
|
26
|
-
() => () => {
|
|
27
|
-
if (moveFrameRef.current !== null) cancelAnimationFrame(moveFrameRef.current);
|
|
28
|
-
},
|
|
29
|
-
[]
|
|
30
|
-
);
|
|
31
|
-
const scheduleActive = useCallback((next) => {
|
|
32
|
-
pendingActiveRef.current = next;
|
|
33
|
-
if (moveFrameRef.current !== null) return;
|
|
34
|
-
moveFrameRef.current = requestAnimationFrame(() => {
|
|
35
|
-
moveFrameRef.current = null;
|
|
36
|
-
setActive(pendingActiveRef.current);
|
|
37
|
-
});
|
|
38
|
-
}, []);
|
|
39
|
-
const cancelPendingFrame = useCallback(() => {
|
|
40
|
-
if (moveFrameRef.current !== null) {
|
|
41
|
-
cancelAnimationFrame(moveFrameRef.current);
|
|
42
|
-
moveFrameRef.current = null;
|
|
43
|
-
}
|
|
44
|
-
pendingActiveRef.current = null;
|
|
45
|
-
}, []);
|
|
46
|
-
const touchPin = useTouchPin({
|
|
47
|
-
getCommitted: () => pinnedRef.current ? activeRef.current : null,
|
|
48
|
-
setCommitted: (value) => {
|
|
49
|
-
setActive(value);
|
|
50
|
-
setPinned(value !== null);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
const clear = useCallback(() => {
|
|
54
|
-
cancelPendingFrame();
|
|
55
|
-
touchPin.reset();
|
|
56
|
-
setActive(null);
|
|
57
|
-
setPinned(false);
|
|
58
|
-
}, [touchPin, cancelPendingFrame]);
|
|
59
|
-
const isInsideHost = useCallback(
|
|
60
|
-
(target) => hostElRef.current?.contains(target) === true,
|
|
61
|
-
[]
|
|
62
|
-
);
|
|
63
|
-
useDismissOnOutside({ enabled: pinned, isInside: isInsideHost, onDismiss: clear });
|
|
64
|
-
const indexByKey = useMemo(() => {
|
|
65
|
-
const map = /* @__PURE__ */ new Map();
|
|
66
|
-
targets.forEach((t, i) => map.set(getKeyRef.current(t), i));
|
|
67
|
-
return map;
|
|
68
|
-
}, [targets]);
|
|
69
|
-
const optionId = useCallback(
|
|
70
|
-
(t) => `${idPrefix}-${indexByKey.get(getKeyRef.current(t)) ?? -1}`,
|
|
71
|
-
[idPrefix, indexByKey]
|
|
72
|
-
);
|
|
73
|
-
const findTarget = (key) => {
|
|
74
|
-
const index = indexByKey.get(key);
|
|
75
|
-
return index === void 0 ? void 0 : targetsRef.current[index];
|
|
76
|
-
};
|
|
77
|
-
const pointerProps = (t) => {
|
|
78
|
-
const key = getKeyRef.current(t);
|
|
79
|
-
const showAt = (event) => {
|
|
80
|
-
scheduleActive({ key, anchor: { x: event.clientX, y: event.clientY } });
|
|
81
|
-
};
|
|
82
|
-
const cancelIfUncommitted = (event) => touchPin.cancel(event.pointerId);
|
|
83
|
-
return {
|
|
84
|
-
onPointerEnter: (event) => {
|
|
85
|
-
if (event.pointerType !== "mouse" || pinned) return;
|
|
86
|
-
showAt(event);
|
|
87
|
-
},
|
|
88
|
-
onPointerMove: (event) => {
|
|
89
|
-
if (event.pointerType !== "mouse" || pinned) return;
|
|
90
|
-
showAt(event);
|
|
91
|
-
},
|
|
92
|
-
// Only a coarse pointer presses — a fine pointer's `down` is a no-op, it already shows via
|
|
93
|
-
// enter/move above. The press is PROVISIONAL: it snapshots whatever is committed now (so a
|
|
94
|
-
// cancel can restore it) BEFORE showing the readout, which only `onPointerUp` commits. On
|
|
95
|
-
// touch the readout anchors to the HOST's top edge rather than the finger, which would cover
|
|
96
|
-
// it; a missing host falls back to the pointer.
|
|
97
|
-
onPointerDown: (event) => {
|
|
98
|
-
if (event.pointerType === "mouse") return;
|
|
99
|
-
touchPin.begin(event.pointerId);
|
|
100
|
-
cancelPendingFrame();
|
|
101
|
-
const rect = hostElRef.current?.getBoundingClientRect();
|
|
102
|
-
setActive({
|
|
103
|
-
key,
|
|
104
|
-
anchor: rect === void 0 ? { x: event.clientX, y: event.clientY } : { x: rect.left + rect.width / 2, y: rect.top }
|
|
105
|
-
});
|
|
106
|
-
},
|
|
107
|
-
// A completed tap commits the pin. Only the tracked pointer commits — and only a coarse one:
|
|
108
|
-
// some browsers assign a touch's `pointerId` the same value (1) mouse pointers use, so a
|
|
109
|
-
// `pointerType` check keeps an unrelated mouse `pointerup` reusing that id from committing an
|
|
110
|
-
// abandoned touch press.
|
|
111
|
-
onPointerUp: (event) => {
|
|
112
|
-
if (event.pointerType === "mouse") return;
|
|
113
|
-
if (!touchPin.commit(event.pointerId)) return;
|
|
114
|
-
setPinned(true);
|
|
115
|
-
},
|
|
116
|
-
// A still-uncommitted press ending here is the browser taking the gesture (a scroll); clear it
|
|
117
|
-
// regardless of `pinned`. Otherwise keep the fine-pointer/pinned guard. Routes through the
|
|
118
|
-
// same `clear()` the outside-tap/Escape dismissal uses (mirrors `useChartCursor`'s own
|
|
119
|
-
// `onPointerLeave`) rather than a bare `setActive(null)` — a `pointermove` scheduled just
|
|
120
|
-
// before this event fires is still in flight (coalesced onto `moveFrameRef`/
|
|
121
|
-
// `pendingActiveRef`), and only `clear()` cancels it. A bare `setActive(null)` left that frame
|
|
122
|
-
// free to land a tick later and resurrect the tooltip this leave/cancel was meant to dismiss.
|
|
123
|
-
onPointerLeave: (event) => {
|
|
124
|
-
if (cancelIfUncommitted(event)) return;
|
|
125
|
-
if (event.pointerType !== "mouse" || pinned) return;
|
|
126
|
-
clear();
|
|
127
|
-
},
|
|
128
|
-
onPointerCancel: (event) => {
|
|
129
|
-
if (cancelIfUncommitted(event)) return;
|
|
130
|
-
if (event.pointerType !== "mouse" || pinned) return;
|
|
131
|
-
clear();
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
};
|
|
135
|
-
const onKeyDown = (event) => {
|
|
136
|
-
const list = targetsRef.current;
|
|
137
|
-
if (list.length === 0) return;
|
|
138
|
-
if (event.key === "Escape") {
|
|
139
|
-
clear();
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
const cols = columnsRef.current;
|
|
143
|
-
let delta = 0;
|
|
144
|
-
switch (event.key) {
|
|
145
|
-
case "ArrowRight":
|
|
146
|
-
delta = 1;
|
|
147
|
-
break;
|
|
148
|
-
case "ArrowLeft":
|
|
149
|
-
delta = -1;
|
|
150
|
-
break;
|
|
151
|
-
case "ArrowDown":
|
|
152
|
-
delta = cols ?? 1;
|
|
153
|
-
break;
|
|
154
|
-
case "ArrowUp":
|
|
155
|
-
delta = -(cols ?? 1);
|
|
156
|
-
break;
|
|
157
|
-
default:
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
event.preventDefault();
|
|
161
|
-
const currentIndex = active === null ? -1 : list.findIndex((t) => getKeyRef.current(t) === active.key);
|
|
162
|
-
const base = currentIndex === -1 ? delta > 0 ? -1 : list.length : currentIndex;
|
|
163
|
-
const nextIndex = Math.min(Math.max(base + delta, 0), list.length - 1);
|
|
164
|
-
const next = list[nextIndex];
|
|
165
|
-
const rect = hostElRef.current?.getBoundingClientRect();
|
|
166
|
-
const anchor = rect === void 0 ? { x: 0, y: 0 } : { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 };
|
|
167
|
-
cancelPendingFrame();
|
|
168
|
-
setActive({ key: getKeyRef.current(next), anchor });
|
|
169
|
-
};
|
|
170
|
-
const tip = (() => {
|
|
171
|
-
if (active === null) return null;
|
|
172
|
-
const target = findTarget(active.key);
|
|
173
|
-
return target === void 0 ? null : { target, anchor: active.anchor };
|
|
174
|
-
})();
|
|
175
|
-
return {
|
|
176
|
-
tip,
|
|
177
|
-
isPinned: pinned,
|
|
178
|
-
pointerProps,
|
|
179
|
-
optionId,
|
|
180
|
-
clear,
|
|
181
|
-
hostProps: {
|
|
182
|
-
ref: (node) => {
|
|
183
|
-
hostElRef.current = node;
|
|
184
|
-
},
|
|
185
|
-
tabIndex: 0,
|
|
186
|
-
role: "listbox",
|
|
187
|
-
"aria-label": ariaLabel,
|
|
188
|
-
"aria-activedescendant": tip === null ? void 0 : optionId(tip.target),
|
|
189
|
-
onKeyDown,
|
|
190
|
-
onBlur: () => {
|
|
191
|
-
if (!pinned) clear();
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
export {
|
|
197
|
-
useDiscreteCursor
|
|
198
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A derived value that feeds back into its own next computation — hysteresis, "was X last frame" —
|
|
3
|
-
* without the anti-pattern of mutating a ref during render (`ChartCard`'s short-card flag, P0-1;
|
|
4
|
-
* `Donut`'s side/stacked layout, P2-10, both hit the SAME bug independently: a render a concurrent
|
|
5
|
-
* commit discards must not still poison the next real one's input).
|
|
6
|
-
*
|
|
7
|
-
* `compute` is called with the PREVIOUS committed value (never mutated here) and returns this
|
|
8
|
-
* render's value; the ref only updates in a `useLayoutEffect`, after the value has actually
|
|
9
|
-
* committed. Internal only — not on any public barrel.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* const short = useHysteresis(
|
|
13
|
-
* (wasShort) => measuredHeight > 0 && measuredHeight < (wasShort ? EXIT : ENTER),
|
|
14
|
-
* false,
|
|
15
|
-
* )
|
|
16
|
-
*/
|
|
17
|
-
export declare function useHysteresis<T>(compute: (previous: T) => T, initial: T): T;
|
|
18
|
-
//# sourceMappingURL=use-hysteresis.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-hysteresis.d.ts","sourceRoot":"","sources":["../../../src/charts/hooks/use-hysteresis.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAO3E"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { useLayoutEffect, useRef } from "react";
|
|
2
|
-
function useHysteresis(compute, initial) {
|
|
3
|
-
const ref = useRef(initial);
|
|
4
|
-
const value = compute(ref.current);
|
|
5
|
-
useLayoutEffect(() => {
|
|
6
|
-
ref.current = value;
|
|
7
|
-
}, [value]);
|
|
8
|
-
return value;
|
|
9
|
-
}
|
|
10
|
-
export {
|
|
11
|
-
useHysteresis
|
|
12
|
-
};
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The choreography shared by every BANDED x plot — one slot per datum, drawn as a rect, with no
|
|
3
|
-
* point in between.
|
|
4
|
-
*
|
|
5
|
-
* `CartesianChart` cannot host these: its x scale is `scalePoint` (positions, no width) and it
|
|
6
|
-
* renders `AxisLeftNumeric` unconditionally. `BandStrip` has no numeric y axis at all and
|
|
7
|
-
* `MirroredBars` has two, in two independent scales. Both are therefore
|
|
8
|
-
* `basalt/hand-rolled-plot` shapes — and this module is what stops the second one from being a
|
|
9
|
-
* copy of the first, per `DualPanel`'s own instruction to "promote the shared choreography rather
|
|
10
|
-
* than copying this file".
|
|
11
|
-
*
|
|
12
|
-
* What lives here: width-driven folding, the measured gutters, the band scale and its
|
|
13
|
-
* half-bandwidth cursor correction, the shared cursor itself, and the source/follower tooltip
|
|
14
|
-
* anchor arithmetic. What does NOT: any mark. See `docs/CHARTS-SPEC.md` § "The contract".
|
|
15
|
-
*/
|
|
16
|
-
import { scaleBand } from '@visx/scale';
|
|
17
|
-
import type { ReactNode, RefObject } from 'react';
|
|
18
|
-
import type { ChartMargin } from '../../tokens/index.js';
|
|
19
|
-
import type { CursorResolution } from '../cursor/resolve.js';
|
|
20
|
-
import type { ChartCursor, CursorAnchor } from './useChartCursor.js';
|
|
21
|
-
type BandScale = ReturnType<typeof scaleBand<string>>;
|
|
22
|
-
/**
|
|
23
|
-
* Collapse adjacent data into one drawn band at widths where one-band-per-datum sub-pixels.
|
|
24
|
-
*
|
|
25
|
-
* 288 buckets over a 234px plot is a 0.81px pitch: every band draws at a flat 1px and a single
|
|
26
|
-
* catastrophic slot can be overdrawn by its neighbour. Folding is the only honest answer — the
|
|
27
|
-
* alternative is a chart that silently loses its worst column.
|
|
28
|
-
*/
|
|
29
|
-
export type BandFold<T> = {
|
|
30
|
-
/**
|
|
31
|
-
* Floor on the px pitch of a drawn band. Default 3 — not 2, because a band also has to be wide
|
|
32
|
-
* enough for a partial-absence split (`absentFraction`) to render as two visibly distinct
|
|
33
|
-
* pieces, and at 2px the fill and the hatch antialias into one smudge.
|
|
34
|
-
*/
|
|
35
|
-
minBandPx?: number;
|
|
36
|
-
/**
|
|
37
|
-
* Collapse a group of adjacent source data into the one datum drawn in its place.
|
|
38
|
-
*
|
|
39
|
-
* The merge is the CONSUMER's, deliberately: whether a folded slot's value is a max, a sum, or
|
|
40
|
-
* a rate recomputed from summed parts is a question about the measurement, not about the
|
|
41
|
-
* chart — and averaging a fully-down bucket into its clean neighbours describes a bucket that
|
|
42
|
-
* never happened. The kind owns only the arithmetic of how many groups there are.
|
|
43
|
-
*
|
|
44
|
-
* Identity (`getX`) MUST come from `group[0]`, or the axis stops being monotone and the cursor
|
|
45
|
-
* key stops naming a real slot start.
|
|
46
|
-
*/
|
|
47
|
-
merge: (group: T[]) => T;
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* The grouping half of {@link BandFold}, exported so a consumer can test their `merge` against the
|
|
51
|
-
* arithmetic that will actually run rather than re-implementing it in the test file — the merge is
|
|
52
|
-
* where the honesty rules live (max vs mean vs a rate recomputed from summed parts), and a test
|
|
53
|
-
* that groups differently from the kind is testing the wrong function.
|
|
54
|
-
*/
|
|
55
|
-
export declare function foldBands<T>(data: readonly T[], cap: number, merge: (group: T[]) => T): T[];
|
|
56
|
-
/** Tooltip seams shared by `BandStrip` and `MirroredBars` — the `CartesianTooltipConfig` subset
|
|
57
|
-
* that means anything on a banded plot (there is no per-point `follow` distinction to make that
|
|
58
|
-
* `CartesianChart` doesn't already document identically). */
|
|
59
|
-
export type BandTooltipConfig<T> = {
|
|
60
|
-
/** Default true — the tooltip tracks the pointer. `false` anchors it to the crosshair at the
|
|
61
|
-
* plot's top edge, so a column of charts sharing one cursor lines every tooltip up on one x. */
|
|
62
|
-
follow?: boolean;
|
|
63
|
-
/** Right-aligned badge in the tooltip header. */
|
|
64
|
-
label?: (d: T) => {
|
|
65
|
-
text: string;
|
|
66
|
-
color: string;
|
|
67
|
-
} | null;
|
|
68
|
-
/** Overrides the header's date text — same seam, same reason, as
|
|
69
|
-
* `CartesianTooltipConfig.formatHeader`. */
|
|
70
|
-
formatHeader?: (key: string, d: T) => string;
|
|
71
|
-
/** Rows rendered BEFORE the derived rows. `hidden` is the same legend-toggle set the marks
|
|
72
|
-
* draw from, so a hand-authored row cannot desync from it. */
|
|
73
|
-
prependRows?: (d: T, ctx: BandTooltipRowContext) => ReactNode;
|
|
74
|
-
/** Rows appended after the derived rows. Same `ctx` as {@link prependRows}. */
|
|
75
|
-
extraRows?: (d: T, ctx: BandTooltipRowContext) => ReactNode;
|
|
76
|
-
/**
|
|
77
|
-
* Render this chart's tooltip when it is a cursor FOLLOWER, not only when it is the SOURCE.
|
|
78
|
-
* Default false. A follower has no pointer under it, so it always anchors to the crosshair
|
|
79
|
-
* regardless of `follow`; only the SOURCE is `aria-live`. Costs one `getBoundingClientRect`
|
|
80
|
-
* per hovered frame per opted-in chart — see `CartesianTooltipConfig.onFollow`.
|
|
81
|
-
*/
|
|
82
|
-
onFollow?: boolean;
|
|
83
|
-
};
|
|
84
|
-
export type BandTooltipRowContext = {
|
|
85
|
-
hidden: ReadonlySet<string>;
|
|
86
|
-
};
|
|
87
|
-
export type UseBandPlotInput<T> = {
|
|
88
|
-
data: readonly T[];
|
|
89
|
-
chartId: string;
|
|
90
|
-
getX: (d: T) => string;
|
|
91
|
-
formatX: (key: string) => string;
|
|
92
|
-
/** The plot rect's width, as handed down by `ChartFrame`. */
|
|
93
|
-
width: number;
|
|
94
|
-
fold?: BandFold<T>;
|
|
95
|
-
cursorResolution?: CursorResolution;
|
|
96
|
-
/**
|
|
97
|
-
* Which of the (possibly folded) keys get a tick. Default `smartTicks`. The seam exists because
|
|
98
|
-
* `smartTicks` appends the final value unconditionally, which on a dense time axis puts the last
|
|
99
|
-
* two labels on top of each other — a chart whose x labels are richer than `DD.MM` needs its own
|
|
100
|
-
* rule.
|
|
101
|
-
*/
|
|
102
|
-
xTickValues?: (keys: readonly string[], plotWidth: number) => readonly string[];
|
|
103
|
-
/** Left-axis tick labels, already formatted. Empty for a plot with no left axis. */
|
|
104
|
-
leftLabels?: readonly string[];
|
|
105
|
-
/** Per-side margin overrides — applied last, so the escape hatch always wins. */
|
|
106
|
-
margin?: Partial<ChartMargin>;
|
|
107
|
-
tooltip?: BandTooltipConfig<T> | false;
|
|
108
|
-
};
|
|
109
|
-
export type BandPlot<T> = {
|
|
110
|
-
/** The data actually drawn — `data` when it fits, the folded slots when it does not. */
|
|
111
|
-
bands: T[];
|
|
112
|
-
keys: string[];
|
|
113
|
-
margin: ChartMargin;
|
|
114
|
-
plotWidth: number;
|
|
115
|
-
scale: BandScale;
|
|
116
|
-
cursor: ChartCursor<T>;
|
|
117
|
-
point: T | null;
|
|
118
|
-
/** Plot-local x of the crosshair, or null when no point resolves. */
|
|
119
|
-
crosshairX: number | null;
|
|
120
|
-
/** Pitch between adjacent band origins. */
|
|
121
|
-
step: number;
|
|
122
|
-
/** Drawn width of one band — the pitch minus a 1px separator, floored at 1. */
|
|
123
|
-
bandWidth: number;
|
|
124
|
-
tickValues: string[];
|
|
125
|
-
/** Where the left axis paints: inside the plot (compact), not at all (micro), else outside. An
|
|
126
|
-
* explicit `margin.left` keeps it outside. Same law as `CartesianChart`. */
|
|
127
|
-
yPlacement: 'outside' | 'inside' | 'none';
|
|
128
|
-
/** Terminal x labels anchor inward (compact/micro). */
|
|
129
|
-
xAnchorTerminals: boolean;
|
|
130
|
-
/** Width to wrap x labels to; undefined when they do not wrap. */
|
|
131
|
-
xWrapWidth: number | undefined;
|
|
132
|
-
svgRef: RefObject<SVGSVGElement | null>;
|
|
133
|
-
tooltipAnchor: CursorAnchor | null;
|
|
134
|
-
showTooltip: boolean;
|
|
135
|
-
/** Only the cursor SOURCE announces — N followers on one page would fire N live-region updates
|
|
136
|
-
* per pointer move. */
|
|
137
|
-
ariaLive: boolean;
|
|
138
|
-
};
|
|
139
|
-
/**
|
|
140
|
-
* Wire a banded plot into the framework's measured margins, band scale, shared cursor and tooltip
|
|
141
|
-
* positioning. Returns everything except the marks.
|
|
142
|
-
*/
|
|
143
|
-
export declare function useBandPlot<T>(input: UseBandPlotInput<T>): BandPlot<T>;
|
|
144
|
-
export {};
|
|
145
|
-
//# sourceMappingURL=useBandPlot.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useBandPlot.d.ts","sourceRoot":"","sources":["../../../src/charts/hooks/useBandPlot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAYzD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEjE,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;;;OAUG;IACH,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;CACzB,CAAA;AAcD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAO3F;AAED;;6DAE6D;AAC7D,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC;oGACgG;IAChG,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACxD;gDAC4C;IAC5C,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAA;IAC5C;kEAC8D;IAC9D,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,qBAAqB,KAAK,SAAS,CAAA;IAC7D,+EAA+E;IAC/E,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,qBAAqB,KAAK,SAAS,CAAA;IAC3D;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAEnE,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAChC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAA;IACtB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IAChC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAA;IAC/E,oFAAoF;IACpF,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB,wFAAwF;IACxF,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,EAAE,WAAW,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACtB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IACf,qEAAqE;IACrE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB;gFAC4E;IAC5E,UAAU,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;IACzC,uDAAuD;IACvD,gBAAgB,EAAE,OAAO,CAAA;IACzB,kEAAkE;IAClE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,MAAM,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IACvC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,WAAW,EAAE,OAAO,CAAA;IACpB;2BACuB;IACvB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAwMtE"}
|