basalt-ui 1.41.0 → 2.0.1
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 +542 -518
- package/MIGRATING.md +964 -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 +18 -43
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +6 -0
- package/dist/cli/doctor-upgrade.d.ts +43 -0
- package/dist/cli/doctor-upgrade.d.ts.map +1 -0
- package/dist/cli/doctor-upgrade.js +314 -0
- package/dist/cli/doctor.d.ts +14 -29
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +58 -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 +80 -173
- 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 +26 -43
- package/src/cli/doctor-upgrade.ts +457 -0
- package/src/cli/doctor.ts +89 -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
|
@@ -12,15 +12,9 @@ import {
|
|
|
12
12
|
Text,
|
|
13
13
|
TextInput
|
|
14
14
|
} from "@mantine/core";
|
|
15
|
-
import {
|
|
16
|
-
flexRender,
|
|
17
|
-
getCoreRowModel,
|
|
18
|
-
getFilteredRowModel,
|
|
19
|
-
getPaginationRowModel,
|
|
20
|
-
getSortedRowModel,
|
|
21
|
-
useReactTable
|
|
22
|
-
} from "@tanstack/react-table";
|
|
15
|
+
import { constructFilterFn, FlexRender, useTable } from "@tanstack/react-table";
|
|
23
16
|
import { Fragment, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
17
|
+
import { useDebouncedCallback } from "@mantine/hooks";
|
|
24
18
|
import { cx } from "../common/props.js";
|
|
25
19
|
import { BASALT_PREFIX } from "../common/errors.js";
|
|
26
20
|
import { HIT_COARSE } from "../common/hit-floor.js";
|
|
@@ -42,6 +36,7 @@ import {
|
|
|
42
36
|
useRowDisclosure
|
|
43
37
|
} from "./data-table-state.js";
|
|
44
38
|
import { dataQueryBranch } from "./query-branch.js";
|
|
39
|
+
import { basaltTableFeatures } from "./table-features.js";
|
|
45
40
|
import classes from "./data-table.module.css";
|
|
46
41
|
const ALIGNMENTS = /* @__PURE__ */ new Set(["left", "center", "right"]);
|
|
47
42
|
function resolveAlign(column) {
|
|
@@ -111,6 +106,15 @@ function resolveFacetColumn(table, facet) {
|
|
|
111
106
|
}
|
|
112
107
|
return void 0;
|
|
113
108
|
}
|
|
109
|
+
const facetAutoRemove = (value) => value === null || value === void 0 || value === "" || Array.isArray(value) && value.length === 0;
|
|
110
|
+
const facetExact = constructFilterFn({
|
|
111
|
+
filter: (dataValue, filterValue) => filterValue === null || filterValue === void 0 || filterValue === "" ? true : String(dataValue) === filterValue,
|
|
112
|
+
autoRemove: facetAutoRemove
|
|
113
|
+
});
|
|
114
|
+
const facetAnyOf = constructFilterFn({
|
|
115
|
+
filter: (dataValue, filterValue) => !Array.isArray(filterValue) || filterValue.length === 0 ? true : filterValue.includes(String(dataValue)),
|
|
116
|
+
autoRemove: facetAutoRemove
|
|
117
|
+
});
|
|
114
118
|
const SELECT_COLUMN_ID = "__basalt_select__";
|
|
115
119
|
function selectionColumn() {
|
|
116
120
|
return {
|
|
@@ -175,6 +179,7 @@ const DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];
|
|
|
175
179
|
const TABLE_HEADER_LEAD_STYLE = { flex: "1 1 auto", minWidth: 0 };
|
|
176
180
|
const TABLE_TOOLBAR_STYLE = { flex: "0 1 auto", minWidth: 0 };
|
|
177
181
|
const SEARCH_WIDTH = 220;
|
|
182
|
+
const SEARCH_DEBOUNCE_MS = 250;
|
|
178
183
|
const TABLE_SEARCH_STYLE = {
|
|
179
184
|
flex: `0 1 ${SEARCH_WIDTH}px`,
|
|
180
185
|
minWidth: "12ch",
|
|
@@ -182,12 +187,12 @@ const TABLE_SEARCH_STYLE = {
|
|
|
182
187
|
};
|
|
183
188
|
const PAGE_SIZE_WIDTH = 116;
|
|
184
189
|
function getOrderedHeaderGroups(table) {
|
|
185
|
-
const
|
|
190
|
+
const start = table.getStartHeaderGroups();
|
|
186
191
|
const center = table.getCenterHeaderGroups();
|
|
187
|
-
const
|
|
192
|
+
const end = table.getEndHeaderGroups();
|
|
188
193
|
return center.map((group, index) => ({
|
|
189
194
|
...group,
|
|
190
|
-
headers: [...
|
|
195
|
+
headers: [...start[index]?.headers ?? [], ...group.headers, ...end[index]?.headers ?? []]
|
|
191
196
|
}));
|
|
192
197
|
}
|
|
193
198
|
function getPinnedCellStyle(table, column) {
|
|
@@ -202,18 +207,18 @@ function getPinnedCellStyle(table, column) {
|
|
|
202
207
|
maxWidth: size,
|
|
203
208
|
backgroundColor: VX.surface.panel
|
|
204
209
|
};
|
|
205
|
-
if (pinned === "
|
|
206
|
-
const isEdge2 = column.getPinnedIndex() === table.
|
|
210
|
+
if (pinned === "start") {
|
|
211
|
+
const isEdge2 = column.getPinnedIndex() === table.getStartLeafColumns().length - 1;
|
|
207
212
|
return {
|
|
208
213
|
...shared,
|
|
209
|
-
|
|
214
|
+
insetInlineStart: column.getStart("start"),
|
|
210
215
|
boxShadow: isEdge2 ? `4px 0 6px -4px ${alpha(VX.ink, 0.18)}` : void 0
|
|
211
216
|
};
|
|
212
217
|
}
|
|
213
218
|
const isEdge = column.getPinnedIndex() === 0;
|
|
214
219
|
return {
|
|
215
220
|
...shared,
|
|
216
|
-
|
|
221
|
+
insetInlineEnd: column.getAfter("end"),
|
|
217
222
|
boxShadow: isEdge ? `-4px 0 6px -4px ${alpha(VX.ink, 0.18)}` : void 0
|
|
218
223
|
};
|
|
219
224
|
}
|
|
@@ -232,14 +237,15 @@ function foldOrder(columns) {
|
|
|
232
237
|
}
|
|
233
238
|
const FOLD_ID_ATTR = "data-basalt-fold-id";
|
|
234
239
|
function planColumnFold(input) {
|
|
235
|
-
const { room, toggleWidth, overhead, order, widths } = input;
|
|
240
|
+
const { room, toggleWidth, overhead, fixedCount = 0, order, widths } = input;
|
|
236
241
|
const known = order.filter((id) => widths.has(id));
|
|
242
|
+
const roundingSlack = (known.length + fixedCount + 1) / 2;
|
|
237
243
|
let unfolded = overhead + known.reduce((sum, id) => sum + (widths.get(id) ?? 0), 0);
|
|
238
244
|
const folded = /* @__PURE__ */ new Set();
|
|
239
245
|
for (const id of known) {
|
|
240
246
|
if (folded.size >= known.length - 1) break;
|
|
241
247
|
const withToggle = unfolded + (folded.size > 0 ? toggleWidth : 0);
|
|
242
|
-
if (withToggle <= room) break;
|
|
248
|
+
if (withToggle <= room + roundingSlack) break;
|
|
243
249
|
folded.add(id);
|
|
244
250
|
unfolded -= widths.get(id) ?? 0;
|
|
245
251
|
}
|
|
@@ -250,14 +256,12 @@ function useColumnFold(input) {
|
|
|
250
256
|
const wrapperRef = useRef(null);
|
|
251
257
|
const [folded, setFolded] = useState(EMPTY_FOLD_SET);
|
|
252
258
|
const orderRef = useRef(order);
|
|
253
|
-
orderRef.current = order;
|
|
254
259
|
const fixedIdsRef = useRef(fixedIds);
|
|
255
|
-
fixedIdsRef.current = fixedIds;
|
|
256
260
|
useLayoutEffect(() => {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
+
orderRef.current = order;
|
|
262
|
+
fixedIdsRef.current = fixedIds;
|
|
263
|
+
});
|
|
264
|
+
if ((!active || order.length === 0) && folded.size > 0) setFolded(EMPTY_FOLD_SET);
|
|
261
265
|
useMeasuredWidths({
|
|
262
266
|
resolveRoot: () => wrapperRef.current,
|
|
263
267
|
signature: `${order.join("|")}::${fixedIds.join("|")}`,
|
|
@@ -282,6 +286,7 @@ function useColumnFold(input) {
|
|
|
282
286
|
// reads as one more `--vx-hit` control rather than a narrower afterthought.
|
|
283
287
|
toggleWidth: HIT_COARSE,
|
|
284
288
|
overhead,
|
|
289
|
+
fixedCount: fixedIdsRef.current.length,
|
|
285
290
|
order: orderRef.current,
|
|
286
291
|
widths
|
|
287
292
|
});
|
|
@@ -303,7 +308,7 @@ function RowDisclosure({
|
|
|
303
308
|
const cells = row.getAllCells().filter((cell) => folded.has(cell.column.id));
|
|
304
309
|
return /* @__PURE__ */ jsx("div", { className: classes.foldDisclosure, children: cells.map((cell) => /* @__PURE__ */ jsxs("div", { className: classes.foldDisclosureRow, children: [
|
|
305
310
|
/* @__PURE__ */ jsx(Text, { className: classes.foldDisclosureLabel, children: columnLabel(cell.column) }),
|
|
306
|
-
/* @__PURE__ */ jsx("div", { className: classes.foldDisclosureValue, children:
|
|
311
|
+
/* @__PURE__ */ jsx("div", { className: classes.foldDisclosureValue, children: /* @__PURE__ */ jsx(FlexRender, { cell }) })
|
|
307
312
|
] }, cell.id)) });
|
|
308
313
|
}
|
|
309
314
|
function FoldToggle({
|
|
@@ -424,6 +429,11 @@ function BasaltDataTable(props) {
|
|
|
424
429
|
} = props;
|
|
425
430
|
const tableState = useDataTableState(props, pageSizeOptions[0] ?? 10);
|
|
426
431
|
const { globalFilter, columnPinning, onGlobalFilterChange: handleGlobalFilterChange } = tableState;
|
|
432
|
+
const [searchDraft, setSearchDraft] = useState(globalFilter);
|
|
433
|
+
const commitSearch = useDebouncedCallback(handleGlobalFilterChange, {
|
|
434
|
+
delay: SEARCH_DEBOUNCE_MS,
|
|
435
|
+
flushOnUnmount: true
|
|
436
|
+
});
|
|
427
437
|
useValidateProps(
|
|
428
438
|
"BasaltDataTable",
|
|
429
439
|
() => [
|
|
@@ -447,8 +457,7 @@ function BasaltDataTable(props) {
|
|
|
447
457
|
const id = columnDefId(column);
|
|
448
458
|
const facet = id === void 0 ? void 0 : facetById.get(id);
|
|
449
459
|
if (!facet) return column;
|
|
450
|
-
const filterFn = facet.multiple ?
|
|
451
|
-
filterFn.autoRemove = (value) => value === null || value === void 0 || value === "" || Array.isArray(value) && value.length === 0;
|
|
460
|
+
const filterFn = facet.multiple ? facetAnyOf : facetExact;
|
|
452
461
|
return { ...column, filterFn };
|
|
453
462
|
});
|
|
454
463
|
}, [columns, facets]);
|
|
@@ -476,7 +485,7 @@ function BasaltDataTable(props) {
|
|
|
476
485
|
const scrolls = maxHeight !== void 0 || minWidth !== void 0;
|
|
477
486
|
const foldEligible = minWidth === void 0;
|
|
478
487
|
const { columnFoldOrder, columnFoldFixedIds } = useMemo(() => {
|
|
479
|
-
const pinnedIds = /* @__PURE__ */ new Set([...columnPinning.
|
|
488
|
+
const pinnedIds = /* @__PURE__ */ new Set([...columnPinning.start, ...columnPinning.end]);
|
|
480
489
|
const excluded = new Set(
|
|
481
490
|
columns.flatMap((column) => {
|
|
482
491
|
const id = columnDefId(column);
|
|
@@ -489,19 +498,22 @@ function BasaltDataTable(props) {
|
|
|
489
498
|
columnFoldFixedIds: [...excluded]
|
|
490
499
|
};
|
|
491
500
|
}, [columns, columnPinning]);
|
|
492
|
-
const
|
|
493
|
-
|
|
494
|
-
|
|
501
|
+
const { cards: showCards, rootRef: projectionRootRef } = useCardProjection(
|
|
502
|
+
renderCard !== void 0
|
|
503
|
+
);
|
|
504
|
+
const { folded: foldedColumns, wrapperRef: foldWrapperRef } = useColumnFold({
|
|
505
|
+
active: foldEligible && !showCards,
|
|
495
506
|
order: columnFoldOrder,
|
|
496
507
|
fixedIds: columnFoldFixedIds
|
|
497
508
|
});
|
|
498
509
|
const columnVisibility = useMemo(
|
|
499
|
-
() => Object.fromEntries([...
|
|
500
|
-
[
|
|
510
|
+
() => Object.fromEntries([...foldedColumns].map((id) => [id, false])),
|
|
511
|
+
[foldedColumns]
|
|
501
512
|
);
|
|
502
|
-
const hasFolded =
|
|
513
|
+
const hasFolded = foldedColumns.size > 0;
|
|
503
514
|
const foldRows = useRowDisclosure({ data, getRowId });
|
|
504
|
-
const table =
|
|
515
|
+
const table = useTable({
|
|
516
|
+
features: basaltTableFeatures,
|
|
505
517
|
data,
|
|
506
518
|
columns: tableColumns,
|
|
507
519
|
state: {
|
|
@@ -523,19 +535,16 @@ function BasaltDataTable(props) {
|
|
|
523
535
|
onRowSelectionChange: tableState.onRowSelectionChange
|
|
524
536
|
},
|
|
525
537
|
...getRowId !== void 0 && { getRowId },
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
//
|
|
530
|
-
//
|
|
531
|
-
//
|
|
532
|
-
// an `initialSorting` today (it disables the header control, not the row model) and a table
|
|
533
|
-
// that is not misreporting has no business losing it.
|
|
538
|
+
// Every row model is registered on the feature set (v9 has no per-render switch) and BYPASSED by
|
|
539
|
+
// these flags, which is TanStack's own seam — so a degraded table renders `data` in the order
|
|
540
|
+
// and completeness the server sent it. Sorting/filtering are forced only by a BREACH, never by
|
|
541
|
+
// `enableSorting={false}` on its own: that pair still applies an `initialSorting` today (it
|
|
542
|
+
// disables the header control, not the row model) and a table that is not misreporting has no
|
|
543
|
+
// business losing it. Pagination is bypassed whenever it is not enabled, or is server-driven.
|
|
534
544
|
manualSorting: manualSorting || breaches.includes("sorting"),
|
|
535
545
|
manualFiltering: manualFiltering || breaches.includes("filtering"),
|
|
546
|
+
manualPagination: !enablePagination || manualPagination,
|
|
536
547
|
...enablePagination && {
|
|
537
|
-
getPaginationRowModel: getPaginationRowModel(),
|
|
538
|
-
manualPagination,
|
|
539
548
|
...manualPagination && rowCount !== void 0 && { rowCount },
|
|
540
549
|
...manualPagination && pageCount !== void 0 && { pageCount }
|
|
541
550
|
},
|
|
@@ -548,7 +557,7 @@ function BasaltDataTable(props) {
|
|
|
548
557
|
const branch = query === void 0 ? void 0 : dataQueryBranch("BasaltDataTable", query);
|
|
549
558
|
const showSkeleton = branch === void 0 ? isLoading : branch === "pending";
|
|
550
559
|
const queryError = branch === "error" && query !== void 0 ? query : void 0;
|
|
551
|
-
const columnCount = columns.length + (enableRowSelection ? 1 : 0) + (hasFolded ? 1 : 0) -
|
|
560
|
+
const columnCount = columns.length + (enableRowSelection ? 1 : 0) + (hasFolded ? 1 : 0) - foldedColumns.size;
|
|
552
561
|
const selectedModelRows = enableRowSelection ? table.getSelectedRowModel().rows : void 0;
|
|
553
562
|
const selectedRows = useMemo(
|
|
554
563
|
() => selectedModelRows?.map((row) => row.original) ?? [],
|
|
@@ -561,7 +570,9 @@ function BasaltDataTable(props) {
|
|
|
561
570
|
const headerGroups = enablePinning ? getOrderedHeaderGroups(table) : table.getHeaderGroups();
|
|
562
571
|
const rows = table.getRowModel().rows;
|
|
563
572
|
const pageStickyHeader = !scrolls && stickyHeader === true;
|
|
564
|
-
const
|
|
573
|
+
const { wrapperRef: containmentRef, contained } = useMeasuredContainment(
|
|
574
|
+
pageStickyHeader && !showCards
|
|
575
|
+
);
|
|
565
576
|
const resolvedStickyHeaderOffset = scrolls ? void 0 : stickyHeaderOffset;
|
|
566
577
|
const errorNode = queryError !== void 0 && /* @__PURE__ */ jsx(
|
|
567
578
|
ErrorState,
|
|
@@ -617,7 +628,7 @@ function BasaltDataTable(props) {
|
|
|
617
628
|
...pinnedStyle
|
|
618
629
|
},
|
|
619
630
|
children: [
|
|
620
|
-
header.isPlaceholder ? null :
|
|
631
|
+
header.isPlaceholder ? null : /* @__PURE__ */ jsx(FlexRender, { header }),
|
|
621
632
|
canSort && /* @__PURE__ */ jsx(SortIndicator, { direction: sorted })
|
|
622
633
|
]
|
|
623
634
|
},
|
|
@@ -627,9 +638,9 @@ function BasaltDataTable(props) {
|
|
|
627
638
|
] }, headerGroup.id)) }),
|
|
628
639
|
/* @__PURE__ */ jsx(Table.Tbody, { children: queryError !== void 0 ? /* @__PURE__ */ jsx(Table.Tr, { children: /* @__PURE__ */ jsx(Table.Td, { colSpan: columnCount, children: errorNode }) }) : showSkeleton ? Array.from({ length: skeletonRows }, (_, rowIndex) => /* @__PURE__ */ jsx(Table.Tr, { children: Array.from({ length: columnCount }, (__, colIndex) => /* @__PURE__ */ jsx(Table.Td, { children: /* @__PURE__ */ jsx(Skeleton, { height: 16, radius: "sm" }) }, `skeleton-${rowIndex}-${colIndex}`)) }, `skeleton-${rowIndex}`)) : rows.length === 0 ? /* @__PURE__ */ jsx(Table.Tr, { children: /* @__PURE__ */ jsx(Table.Td, { colSpan: columnCount, children: emptyNode }) }) : rows.map((row) => {
|
|
629
640
|
const cells = enablePinning ? [
|
|
630
|
-
...row.
|
|
641
|
+
...row.getStartVisibleCells(),
|
|
631
642
|
...row.getCenterVisibleCells(),
|
|
632
|
-
...row.
|
|
643
|
+
...row.getEndVisibleCells()
|
|
633
644
|
] : row.getVisibleCells();
|
|
634
645
|
const rowExpanded = hasFolded && foldRows.expanded.has(row.id);
|
|
635
646
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -666,7 +677,7 @@ function BasaltDataTable(props) {
|
|
|
666
677
|
...align !== void 0 && { textAlign: align },
|
|
667
678
|
...pinnedStyle
|
|
668
679
|
},
|
|
669
|
-
children:
|
|
680
|
+
children: /* @__PURE__ */ jsx(FlexRender, { cell })
|
|
670
681
|
},
|
|
671
682
|
cell.id
|
|
672
683
|
);
|
|
@@ -674,14 +685,14 @@ function BasaltDataTable(props) {
|
|
|
674
685
|
]
|
|
675
686
|
}
|
|
676
687
|
),
|
|
677
|
-
rowExpanded && /* @__PURE__ */ jsx(Table.Tr, { id: `${row.id}-fold`, className: classes.foldDisclosureRowTr, children: /* @__PURE__ */ jsx(Table.Td, { colSpan: columnCount, className: classes.foldDisclosureCell, children: /* @__PURE__ */ jsx(RowDisclosure, { row, folded:
|
|
688
|
+
rowExpanded && /* @__PURE__ */ jsx(Table.Tr, { id: `${row.id}-fold`, className: classes.foldDisclosureRowTr, children: /* @__PURE__ */ jsx(Table.Td, { colSpan: columnCount, className: classes.foldDisclosureCell, children: /* @__PURE__ */ jsx(RowDisclosure, { row, folded: foldedColumns }) }) })
|
|
678
689
|
] }, row.id);
|
|
679
690
|
}) })
|
|
680
691
|
]
|
|
681
692
|
}
|
|
682
693
|
);
|
|
683
694
|
const renderCardList = () => /* @__PURE__ */ jsx(Stack, { gap: "xs", className: cx(classNames?.table), children: queryError !== void 0 ? errorNode : showSkeleton ? Array.from({ length: skeletonRows }, (_, index) => /* @__PURE__ */ jsx(Skeleton, { height: 48, radius: "md" }, `skeleton-${index}`)) : rows.length === 0 ? emptyNode : rows.map((row) => /* @__PURE__ */ jsx(Box, { ...activationProps(onRowActivate, row.original), children: renderCard?.(row.original) }, row.id)) });
|
|
684
|
-
const paginationState = table.
|
|
695
|
+
const paginationState = table.state.pagination;
|
|
685
696
|
const pageSizeRows = [.../* @__PURE__ */ new Set([...pageSizeOptions, paginationState.pageSize])].sort((a, b) => a - b).map((size) => ({ value: String(size), label: `${size} / page` }));
|
|
686
697
|
const total = table.getRowCount();
|
|
687
698
|
const rangeStart = total === 0 ? 0 : paginationState.pageIndex * paginationState.pageSize + 1;
|
|
@@ -689,7 +700,7 @@ function BasaltDataTable(props) {
|
|
|
689
700
|
return /* @__PURE__ */ jsxs(
|
|
690
701
|
"div",
|
|
691
702
|
{
|
|
692
|
-
ref:
|
|
703
|
+
ref: projectionRootRef,
|
|
693
704
|
className: cx(classNames?.root, className),
|
|
694
705
|
...style !== void 0 && { style },
|
|
695
706
|
children: [
|
|
@@ -720,8 +731,11 @@ function BasaltDataTable(props) {
|
|
|
720
731
|
style: TABLE_SEARCH_STYLE,
|
|
721
732
|
placeholder: globalFilterPlaceholder,
|
|
722
733
|
leftSection: searchIcon,
|
|
723
|
-
value:
|
|
724
|
-
onChange: (event) =>
|
|
734
|
+
value: searchDraft,
|
|
735
|
+
onChange: (event) => {
|
|
736
|
+
setSearchDraft(event.currentTarget.value);
|
|
737
|
+
commitSearch(event.currentTarget.value);
|
|
738
|
+
}
|
|
725
739
|
}
|
|
726
740
|
),
|
|
727
741
|
showFacets && /* @__PURE__ */ jsx(FilterSet, { children: facets?.map((facet) => {
|
|
@@ -749,7 +763,7 @@ function BasaltDataTable(props) {
|
|
|
749
763
|
) })
|
|
750
764
|
] }),
|
|
751
765
|
bulkBarActions !== void 0 && /* @__PURE__ */ jsx(BulkActionBar, { count: selectedRows.length, actions: bulkBarActions }),
|
|
752
|
-
|
|
766
|
+
showCards ? maxHeight === void 0 ? renderCardList() : /* @__PURE__ */ jsx(ScrollArea.Autosize, { mah: maxHeight, type: "hover", scrollbars: "y", children: renderCardList() }) : !foldEligible ? (
|
|
753
767
|
// An explicit `minWidth` is the one genuinely DECLARED horizontal floor — the column fold
|
|
754
768
|
// never engages here (see `foldEligible`, above), so this shape keeps its exact
|
|
755
769
|
// pre-existing DOM: no extra measuring wrapper for a table nothing folds.
|
|
@@ -759,17 +773,17 @@ function BasaltDataTable(props) {
|
|
|
759
773
|
// `maxHeight`-only included: a vertical cap is orthogonal to column width, so a
|
|
760
774
|
// `stickyHeader` + `maxHeight` table (the pairing this package's own docs recommend) still
|
|
761
775
|
// folds instead of silently regressing to horizontal scroll. A plain block box, so it
|
|
762
|
-
// constrains nothing on its own; `
|
|
763
|
-
/* @__PURE__ */ jsx("div", { ref:
|
|
776
|
+
// constrains nothing on its own; `foldWrapperRef` only reads it.
|
|
777
|
+
/* @__PURE__ */ jsx("div", { ref: foldWrapperRef, className: classes.foldWrapper, children: pageStickyHeader ? (
|
|
764
778
|
// Pinning takes this wrapper too — a pinned column's offsets are `position: sticky` on
|
|
765
779
|
// the cells and need no overflow box of their own, so the `overflow-x: auto` Box that
|
|
766
780
|
// used to sit here was the exact inert-sticky defect this shape exists to avoid.
|
|
767
781
|
/* @__PURE__ */ jsx(
|
|
768
782
|
"div",
|
|
769
783
|
{
|
|
770
|
-
ref:
|
|
784
|
+
ref: containmentRef,
|
|
771
785
|
className: classes.containment,
|
|
772
|
-
"data-contained":
|
|
786
|
+
"data-contained": contained ? "true" : "false",
|
|
773
787
|
children: tableNode
|
|
774
788
|
}
|
|
775
789
|
)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ./table — BasaltDataTable: a sortable data table over @tanstack/react-table v9, rendered with
|
|
3
|
+
* Mantine primitives. Opt-in chrome: a search/facet toolbar, a pagination bar (client-side or
|
|
4
|
+
* server-driven) and sticky column pinning. `createColumnHelper` is basalt's own, bound to the
|
|
5
|
+
* table's feature set — no TanStack hook, feature or row-model symbol leaves this subpath.
|
|
6
|
+
*
|
|
7
|
+
* Optional peer: @tanstack/react-table 9.2.8 (exact).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* import { BasaltDataTable, createColumnHelper } from 'basalt-ui/table'
|
|
11
|
+
* type Row = { name: string; score: number }
|
|
12
|
+
* const col = createColumnHelper<Row>()
|
|
13
|
+
* const columns = [col.accessor('name', { header: 'Name' }), col.accessor('score', { header: 'Score' })]
|
|
14
|
+
* <BasaltDataTable data={rows} columns={columns} enableGlobalFilter enablePagination />
|
|
15
|
+
*/
|
|
16
|
+
export { BasaltDataTable } from './data-table.js';
|
|
17
|
+
export { createColumnHelper } from './table-features.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-branch.d.ts","sourceRoot":"","sources":["../../src/table/query-branch.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAEhE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;AAE3D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAC7B,eAAe,CAOjB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ColumnDef, ColumnHelper, RowData } from '@tanstack/react-table';
|
|
2
|
+
/** Horizontal alignment of a column's header AND its cells. */
|
|
3
|
+
export type DataTableAlign = 'left' | 'center' | 'right';
|
|
4
|
+
/**
|
|
5
|
+
* What a column def's `meta` may carry. Registered per table through `columnMeta: metaHelper<…>()`
|
|
6
|
+
* rather than a global `declare module '@tanstack/react-table'`, so `meta: { aling: 'right' }` is a
|
|
7
|
+
* compile error (excess-property check on the literal) and nothing leaks into a consumer's own
|
|
8
|
+
* TanStack types. A wrong align VALUE that reaches runtime still throws at render.
|
|
9
|
+
*/
|
|
10
|
+
export type BasaltColumnMeta = {
|
|
11
|
+
align?: DataTableAlign;
|
|
12
|
+
/**
|
|
13
|
+
* Opt OUT of the automatic mono-numeral cell style. The table applies it whenever the cell's
|
|
14
|
+
* raw value is a number — which is right for a plain figure and wrong for a numeric accessor
|
|
15
|
+
* whose `cell` renders its own chrome (a coloured `Text`, a `Badge`, a sparkline), because the
|
|
16
|
+
* `<td>`'s mono font then overrides what the cell asked for.
|
|
17
|
+
*/
|
|
18
|
+
numeral?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Fold priority for the measured column fold (`docs/CONTROLS-SPEC.md` §2): once the
|
|
21
|
+
* table no longer fits its wrapper, the HIGHEST-numbered priority column folds first, moving
|
|
22
|
+
* into a per-row disclosure instead of forcing the table into horizontal scroll. Unset columns
|
|
23
|
+
* fall back to their declared position, so a bare `<BasaltDataTable data columns />` folds its
|
|
24
|
+
* LAST column first — nothing regresses with no `meta.priority` set anywhere. See `foldOrder`.
|
|
25
|
+
*/
|
|
26
|
+
priority?: number;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Every row model is registered (v9 has no per-render `getXRowModel` switch); the table bypasses the
|
|
30
|
+
* ones a prop turns off through TanStack's `manual*` flags. `sortFns` is load-bearing: v9 falls back
|
|
31
|
+
* to `basic` for an unregistered sort function with only a dev warning, which sorts `Project 10`
|
|
32
|
+
* before `Project 2`. `columnSizingFeature` is too — `column.getStart`/`getAfter` live there, and
|
|
33
|
+
* sticky pinning reads them.
|
|
34
|
+
*/
|
|
35
|
+
export declare const basaltTableFeatures: {
|
|
36
|
+
rowSortingFeature: import("@tanstack/react-table").TableFeature;
|
|
37
|
+
columnFilteringFeature: import("@tanstack/react-table").TableFeature;
|
|
38
|
+
globalFilteringFeature: import("@tanstack/react-table").TableFeature;
|
|
39
|
+
rowPaginationFeature: import("@tanstack/react-table").TableFeature;
|
|
40
|
+
rowSelectionFeature: import("@tanstack/react-table").TableFeature;
|
|
41
|
+
columnSizingFeature: import("@tanstack/react-table").TableFeature;
|
|
42
|
+
columnPinningFeature: import("@tanstack/react-table").TableFeature;
|
|
43
|
+
columnVisibilityFeature: import("@tanstack/react-table").TableFeature;
|
|
44
|
+
sortedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
|
|
45
|
+
filteredRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
|
|
46
|
+
paginatedRowModel: (table: import("@tanstack/react-table").Table<any, any>) => () => import("@tanstack/react-table").RowModel<any, any>;
|
|
47
|
+
sortFns: {
|
|
48
|
+
alphanumeric: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
49
|
+
text: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
50
|
+
datetime: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
51
|
+
basic: import("@tanstack/react-table").CreatedSortFn<any, any>;
|
|
52
|
+
};
|
|
53
|
+
filterFns: {
|
|
54
|
+
includesString: import("@tanstack/react-table").CreatedFilterFn<any, any>;
|
|
55
|
+
};
|
|
56
|
+
columnMeta: BasaltColumnMeta;
|
|
57
|
+
};
|
|
58
|
+
export type BasaltTableFeatures = typeof basaltTableFeatures;
|
|
59
|
+
/**
|
|
60
|
+
* A column def of `BasaltDataTable`'s feature set; the cell value varies per column, hence the `any`.
|
|
61
|
+
* Build columns with `createColumnHelper` below — hand-typing this is not the supported path.
|
|
62
|
+
*/
|
|
63
|
+
export type BasaltColumnDef<T extends RowData> = ColumnDef<BasaltTableFeatures, T, any>;
|
|
64
|
+
/**
|
|
65
|
+
* Typed accessor builder for `BasaltDataTable` columns: `col.accessor('field', …)` columns sort by
|
|
66
|
+
* value. One generic, the row type — the feature set is basalt's.
|
|
67
|
+
*/
|
|
68
|
+
export declare function createColumnHelper<T extends RowData>(): ColumnHelper<BasaltTableFeatures, T>;
|
|
69
|
+
//# sourceMappingURL=table-features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-features.d.ts","sourceRoot":"","sources":["../../src/table/table-features.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE7E,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;AAExD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;CAoB9B,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAA;AAE5D;;;GAGG;AAEH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,IAAI,SAAS,CAAC,mBAAmB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;AAEvF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,OAAO,KAAK,YAAY,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAE5F"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import {
|
|
2
|
+
columnFilteringFeature,
|
|
3
|
+
columnPinningFeature,
|
|
4
|
+
columnSizingFeature,
|
|
5
|
+
columnVisibilityFeature,
|
|
6
|
+
createColumnHelper as tanstackColumnHelper,
|
|
7
|
+
createFilteredRowModel,
|
|
8
|
+
createPaginatedRowModel,
|
|
9
|
+
createSortedRowModel,
|
|
10
|
+
filterFn_includesString,
|
|
11
|
+
globalFilteringFeature,
|
|
12
|
+
metaHelper,
|
|
13
|
+
rowPaginationFeature,
|
|
14
|
+
rowSelectionFeature,
|
|
15
|
+
rowSortingFeature,
|
|
16
|
+
sortFn_alphanumeric,
|
|
17
|
+
sortFn_basic,
|
|
18
|
+
sortFn_datetime,
|
|
19
|
+
sortFn_text,
|
|
20
|
+
tableFeatures
|
|
21
|
+
} from "@tanstack/react-table";
|
|
22
|
+
const basaltTableFeatures = tableFeatures({
|
|
23
|
+
rowSortingFeature,
|
|
24
|
+
columnFilteringFeature,
|
|
25
|
+
globalFilteringFeature,
|
|
26
|
+
rowPaginationFeature,
|
|
27
|
+
rowSelectionFeature,
|
|
28
|
+
columnSizingFeature,
|
|
29
|
+
columnPinningFeature,
|
|
30
|
+
columnVisibilityFeature,
|
|
31
|
+
sortedRowModel: createSortedRowModel(),
|
|
32
|
+
filteredRowModel: createFilteredRowModel(),
|
|
33
|
+
paginatedRowModel: createPaginatedRowModel(),
|
|
34
|
+
sortFns: {
|
|
35
|
+
alphanumeric: sortFn_alphanumeric,
|
|
36
|
+
text: sortFn_text,
|
|
37
|
+
datetime: sortFn_datetime,
|
|
38
|
+
basic: sortFn_basic
|
|
39
|
+
},
|
|
40
|
+
filterFns: { includesString: filterFn_includesString },
|
|
41
|
+
columnMeta: metaHelper()
|
|
42
|
+
});
|
|
43
|
+
function createColumnHelper() {
|
|
44
|
+
return tanstackColumnHelper();
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
basaltTableFeatures,
|
|
48
|
+
createColumnHelper
|
|
49
|
+
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { ThreadStatus } from './agent/thread.js';
|
|
2
|
+
/** Epoch ms (`performance.timeOrigin + performance.now()`). */
|
|
3
|
+
type At = {
|
|
4
|
+
start: number;
|
|
5
|
+
};
|
|
6
|
+
/** `start` plus a duration in ms. */
|
|
7
|
+
type Span = At & {
|
|
8
|
+
duration: number;
|
|
9
|
+
};
|
|
10
|
+
/** The error family, or an `AgentError` kind (W8) — closed. */
|
|
11
|
+
type ErrorKind = 'route' | 'query' | 'mutation' | 'render' | 'window' | 'unhandledrejection' | 'http' | 'stream' | 'server' | 'aborted';
|
|
12
|
+
type Failure = {
|
|
13
|
+
'exception.type': string;
|
|
14
|
+
'basalt.error.kind': ErrorKind;
|
|
15
|
+
};
|
|
16
|
+
type Ok<T, A> = Span & {
|
|
17
|
+
type: T;
|
|
18
|
+
failed: false;
|
|
19
|
+
attributes: A;
|
|
20
|
+
};
|
|
21
|
+
type Err<T, A, S = At> = S & {
|
|
22
|
+
type: T;
|
|
23
|
+
failed: true;
|
|
24
|
+
attributes: A & Failure;
|
|
25
|
+
};
|
|
26
|
+
type RouteAttrs = {
|
|
27
|
+
'basalt.route.id': string;
|
|
28
|
+
'basalt.route.from': string;
|
|
29
|
+
/** Pathname, never search. */
|
|
30
|
+
'url.path': string;
|
|
31
|
+
};
|
|
32
|
+
type ChatAttrs = {
|
|
33
|
+
'basalt.chat.thread_id': string;
|
|
34
|
+
'basalt.chat.ttft_ms': number;
|
|
35
|
+
'basalt.chat.parts': number;
|
|
36
|
+
'basalt.chat.status': ThreadStatus;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Closed union: switch on `type`/`failed` and end with `default: return event satisfies never`.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* export function telemetry(e: BasaltEvent): void {
|
|
43
|
+
* const span = tracer.startSpan(e.type, { startTime: e.start, attributes: { ...e.attributes } })
|
|
44
|
+
* if (e.failed) span.setStatus({ code: SpanStatusCode.ERROR })
|
|
45
|
+
* span.end('duration' in e ? e.start + e.duration : e.start)
|
|
46
|
+
* }
|
|
47
|
+
*/
|
|
48
|
+
export type BasaltEvent = Ok<'route.navigate', RouteAttrs> | Err<'route.error', {
|
|
49
|
+
'basalt.route.id': string;
|
|
50
|
+
}> | Err<'query.error', {
|
|
51
|
+
'basalt.query.hash': string;
|
|
52
|
+
'basalt.query.failure_count': number;
|
|
53
|
+
}> | Err<'mutation.error', {
|
|
54
|
+
'basalt.mutation.key': string;
|
|
55
|
+
}> | Err<'render.error', {
|
|
56
|
+
'basalt.error.boundary': 'root';
|
|
57
|
+
}> | Err<'window.error', {
|
|
58
|
+
'basalt.error.source': 'error' | 'unhandledrejection';
|
|
59
|
+
}> | Ok<'chat.turn', ChatAttrs> | Err<'chat.turn', ChatAttrs, Span>;
|
|
60
|
+
export type Telemetry = (event: BasaltEvent) => void;
|
|
61
|
+
export declare const now: () => number;
|
|
62
|
+
/** `error.name`, `'Error'` for a non-`Error` throw. */
|
|
63
|
+
export declare const errorName: (error: unknown) => string;
|
|
64
|
+
/**
|
|
65
|
+
* Wrap a sink so it is called synchronously and a throwing sink never breaks a render. No sink, no
|
|
66
|
+
* events.
|
|
67
|
+
*/
|
|
68
|
+
export declare function createEmitter(sink: Telemetry | undefined): Telemetry;
|
|
69
|
+
/**
|
|
70
|
+
* The provider's wrapped emitter, for hooks that emit their own events (`useAgentThreadRuns`'
|
|
71
|
+
* `chat.turn`). `undefined` outside a `BasaltProvider`, where such a hook emits nothing.
|
|
72
|
+
*/
|
|
73
|
+
export declare const TelemetryContext: import("react").Context<Telemetry | undefined>;
|
|
74
|
+
export declare function bindRouterTelemetry(router: object, emit: Telemetry): () => void;
|
|
75
|
+
export declare function routerTelemetry(router: object): Telemetry;
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,+DAA+D;AAC/D,KAAK,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAC3B,qCAAqC;AACrC,KAAK,IAAI,GAAG,EAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAErC,+DAA+D;AAC/D,KAAK,SAAS,GACV,OAAO,GACP,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,oBAAoB,GACpB,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,SAAS,CAAA;AAEb,KAAK,OAAO,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,SAAS,CAAA;CAAE,CAAA;AAC3E,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,CAAC,CAAA;CAAE,CAAA;AAChE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,CAAC,GAAG,OAAO,CAAA;CAAE,CAAA;AAE/E,KAAK,UAAU,GAAG;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,SAAS,GAAG;IACf,uBAAuB,EAAE,MAAM,CAAA;IAC/B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,YAAY,CAAA;CACnC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GACnB,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAChC,GAAG,CAAC,aAAa,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC,GACjD,GAAG,CAAC,aAAa,EAAE;IAAE,mBAAmB,EAAE,MAAM,CAAC;IAAC,4BAA4B,EAAE,MAAM,CAAA;CAAE,CAAC,GACzF,GAAG,CAAC,gBAAgB,EAAE;IAAE,qBAAqB,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,GAAG,CAAC,cAAc,EAAE;IAAE,uBAAuB,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,GAAG,CAAC,cAAc,EAAE;IAAE,qBAAqB,EAAE,OAAO,GAAG,oBAAoB,CAAA;CAAE,CAAC,GAC9E,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,GAC1B,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AAErC,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;AAEpD,eAAO,MAAM,GAAG,QAAO,MAAoD,CAAA;AAE3E,uDAAuD;AACvD,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,MAAyD,CAAA;AAEpG;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CASpE;AAID;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gDAAkD,CAAA;AAK/E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,IAAI,CAK/E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAEzD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createContext } from "react";
|
|
2
|
+
const now = () => performance.timeOrigin + performance.now();
|
|
3
|
+
const errorName = (error) => error instanceof Error ? error.name : "Error";
|
|
4
|
+
function createEmitter(sink) {
|
|
5
|
+
if (sink === void 0) return noop;
|
|
6
|
+
return (event) => {
|
|
7
|
+
try {
|
|
8
|
+
sink(event);
|
|
9
|
+
} catch {
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function noop() {
|
|
14
|
+
}
|
|
15
|
+
const TelemetryContext = createContext(void 0);
|
|
16
|
+
const routerSinks = /* @__PURE__ */ new WeakMap();
|
|
17
|
+
function bindRouterTelemetry(router, emit) {
|
|
18
|
+
routerSinks.set(router, emit);
|
|
19
|
+
return () => {
|
|
20
|
+
if (routerSinks.get(router) === emit) routerSinks.delete(router);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function routerTelemetry(router) {
|
|
24
|
+
return routerSinks.get(router) ?? noop;
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
TelemetryContext,
|
|
28
|
+
bindRouterTelemetry,
|
|
29
|
+
createEmitter,
|
|
30
|
+
errorName,
|
|
31
|
+
now,
|
|
32
|
+
routerTelemetry
|
|
33
|
+
};
|