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
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Box, Skeleton } from "@mantine/core";
|
|
3
|
-
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
4
|
-
import { useImperativeHandle, useRef } from "react";
|
|
5
|
-
import { cx } from "../common/props.js";
|
|
6
|
-
import { BASALT_PREFIX } from "../common/errors.js";
|
|
7
|
-
import { HIT_COARSE } from "../common/hit-floor.js";
|
|
8
|
-
import { assertRequiredProps, useValidateProps } from "../common/validate.js";
|
|
9
|
-
import { readMediaQuery } from "../common/use-media-query.js";
|
|
10
|
-
import { ErrorState } from "../dashboard/query-state.js";
|
|
11
|
-
import { dataQueryBranch } from "./query-branch.js";
|
|
12
|
-
function shortRowHeightMessage(estimateSize) {
|
|
13
|
-
return `${BASALT_PREFIX} BasaltVirtualList: "estimateSize" is ${estimateSize}px under a coarse (touch) pointer \u2014 every row renders at this height, below the \`--vx-hit\` floor (44px, WCAG 2.5.5). Raise "estimateSize" to at least 44, or pad the row content so it clears the floor.`;
|
|
14
|
-
}
|
|
15
|
-
function BasaltVirtualList(props) {
|
|
16
|
-
assertRequiredProps("BasaltVirtualList", props, ["items", "renderItem", "getItemKey"]);
|
|
17
|
-
const {
|
|
18
|
-
items,
|
|
19
|
-
height,
|
|
20
|
-
estimateSize = 40,
|
|
21
|
-
overscan = 5,
|
|
22
|
-
renderItem,
|
|
23
|
-
getItemKey,
|
|
24
|
-
isLoading = false,
|
|
25
|
-
query,
|
|
26
|
-
emptyState,
|
|
27
|
-
skeletonRows = 5,
|
|
28
|
-
ref,
|
|
29
|
-
className,
|
|
30
|
-
style,
|
|
31
|
-
classNames
|
|
32
|
-
} = props;
|
|
33
|
-
useValidateProps(
|
|
34
|
-
"BasaltVirtualList",
|
|
35
|
-
() => query === void 0 || props.isLoading === void 0 ? null : `${BASALT_PREFIX} BasaltVirtualList: props "query" and "isLoading" are both set \u2014 "query" wins and "isLoading" is ignored. Drop "isLoading".`,
|
|
36
|
-
[query === void 0, props.isLoading === void 0]
|
|
37
|
-
);
|
|
38
|
-
useValidateProps(
|
|
39
|
-
"BasaltVirtualList",
|
|
40
|
-
() => props.estimateSize !== void 0 && props.estimateSize < HIT_COARSE && readMediaQuery("(pointer: coarse)", false) ? shortRowHeightMessage(props.estimateSize) : null,
|
|
41
|
-
[props.estimateSize]
|
|
42
|
-
);
|
|
43
|
-
const parentRef = useRef(null);
|
|
44
|
-
const rowVirtualizer = useVirtualizer({
|
|
45
|
-
count: items.length,
|
|
46
|
-
getScrollElement: () => parentRef.current,
|
|
47
|
-
estimateSize: () => estimateSize,
|
|
48
|
-
overscan,
|
|
49
|
-
// Silences a React 19 deprecation warning: TanStack Virtual calls flushSync on scroll;
|
|
50
|
-
// setting this to false opts out of that path entirely.
|
|
51
|
-
useFlushSync: false,
|
|
52
|
-
getItemKey: (index) => {
|
|
53
|
-
const item = items[index];
|
|
54
|
-
return item !== void 0 ? getItemKey(item, index) : index;
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
useImperativeHandle(
|
|
58
|
-
ref,
|
|
59
|
-
() => ({
|
|
60
|
-
scrollToIndex: (index, opts) => rowVirtualizer.scrollToIndex(index, opts),
|
|
61
|
-
scrollToOffset: (offset, opts) => rowVirtualizer.scrollToOffset(offset, opts),
|
|
62
|
-
scrollToEnd: (opts) => rowVirtualizer.scrollToEnd(opts),
|
|
63
|
-
getVirtualizer: () => rowVirtualizer
|
|
64
|
-
}),
|
|
65
|
-
[rowVirtualizer]
|
|
66
|
-
);
|
|
67
|
-
const branch = query === void 0 ? void 0 : dataQueryBranch("BasaltVirtualList", query);
|
|
68
|
-
const showSkeleton = branch === void 0 ? isLoading : branch === "pending";
|
|
69
|
-
const boxProps = {
|
|
70
|
-
className: cx(classNames?.root, className),
|
|
71
|
-
style: {
|
|
72
|
-
height,
|
|
73
|
-
// theme-allow raw-scroll-container — matches the virtualizer's own scroll box below, so a
|
|
74
|
-
// placeholder branch doesn't reflow.
|
|
75
|
-
overflow: "auto",
|
|
76
|
-
...style
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
if (branch === "error" && query !== void 0) {
|
|
80
|
-
return /* @__PURE__ */ jsx(Box, { ...boxProps, children: /* @__PURE__ */ jsx(
|
|
81
|
-
ErrorState,
|
|
82
|
-
{
|
|
83
|
-
error: query.error,
|
|
84
|
-
title: "Could not load",
|
|
85
|
-
tier: "section",
|
|
86
|
-
retrying: query.fetchStatus === "fetching",
|
|
87
|
-
onRetry: () => void query.refetch()
|
|
88
|
-
}
|
|
89
|
-
) });
|
|
90
|
-
}
|
|
91
|
-
if (showSkeleton) {
|
|
92
|
-
return /* @__PURE__ */ jsx(Box, { ...boxProps, children: Array.from({ length: skeletonRows }, (_, i) => /* @__PURE__ */ jsx(
|
|
93
|
-
Box,
|
|
94
|
-
{
|
|
95
|
-
style: {
|
|
96
|
-
height: estimateSize,
|
|
97
|
-
padding: "var(--vx-space-virtual-row-inset-y) var(--vx-space-virtual-row-inset-x)",
|
|
98
|
-
boxSizing: "border-box"
|
|
99
|
-
},
|
|
100
|
-
children: /* @__PURE__ */ jsx(
|
|
101
|
-
Skeleton,
|
|
102
|
-
{
|
|
103
|
-
height: `calc(${estimateSize}px - 2 * var(--vx-space-virtual-row-inset-y))`,
|
|
104
|
-
radius: "sm"
|
|
105
|
-
}
|
|
106
|
-
)
|
|
107
|
-
},
|
|
108
|
-
`skeleton-${i}`
|
|
109
|
-
)) });
|
|
110
|
-
}
|
|
111
|
-
if (items.length === 0 && emptyState !== void 0) return /* @__PURE__ */ jsx(Box, { ...boxProps, children: emptyState });
|
|
112
|
-
return /* @__PURE__ */ jsx(
|
|
113
|
-
Box,
|
|
114
|
-
{
|
|
115
|
-
ref: parentRef,
|
|
116
|
-
className: cx(classNames?.root, className),
|
|
117
|
-
style: {
|
|
118
|
-
height,
|
|
119
|
-
// theme-allow raw-scroll-container — TanStack Virtual measures this element as the scroll container.
|
|
120
|
-
overflow: "auto",
|
|
121
|
-
...style
|
|
122
|
-
},
|
|
123
|
-
children: /* @__PURE__ */ jsx(
|
|
124
|
-
Box,
|
|
125
|
-
{
|
|
126
|
-
style: {
|
|
127
|
-
height: rowVirtualizer.getTotalSize(),
|
|
128
|
-
position: "relative"
|
|
129
|
-
},
|
|
130
|
-
children: rowVirtualizer.getVirtualItems().map((virtualItem) => {
|
|
131
|
-
const item = items[virtualItem.index];
|
|
132
|
-
if (item === void 0) return null;
|
|
133
|
-
return /* @__PURE__ */ jsx(
|
|
134
|
-
Box,
|
|
135
|
-
{
|
|
136
|
-
className: cx(classNames?.row),
|
|
137
|
-
style: {
|
|
138
|
-
position: "absolute",
|
|
139
|
-
top: 0,
|
|
140
|
-
left: 0,
|
|
141
|
-
width: "100%",
|
|
142
|
-
height: virtualItem.size,
|
|
143
|
-
transform: `translateY(${virtualItem.start}px)`
|
|
144
|
-
},
|
|
145
|
-
children: renderItem(item, virtualItem.index)
|
|
146
|
-
},
|
|
147
|
-
virtualItem.key
|
|
148
|
-
);
|
|
149
|
-
})
|
|
150
|
-
}
|
|
151
|
-
)
|
|
152
|
-
}
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
export {
|
|
156
|
-
BasaltVirtualList
|
|
157
|
-
};
|
package/dist/data/virtual.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./data/virtual — BasaltVirtualList: a windowed virtual list over @tanstack/react-virtual,
|
|
3
|
-
* rendered with a Mantine Box scroll container.
|
|
4
|
-
*
|
|
5
|
-
* Optional peer: @tanstack/react-virtual >=3.13.26 <4. This list works on any 3.x — the floor is
|
|
6
|
-
* set by ./agent-chat's virtualize mode, so do not lower it.
|
|
7
|
-
*
|
|
8
|
-
* This subpath does NOT value-import @tanstack/react-table, so the data-table peer is never
|
|
9
|
-
* required — use `./data/table` when your app only needs the table.
|
|
10
|
-
*
|
|
11
|
-
* Install with:
|
|
12
|
-
* bun add @tanstack/react-virtual
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* import { BasaltVirtualList } from 'basalt-ui/data/virtual'
|
|
16
|
-
* const items = Array.from({ length: 10_000 }, (_, i) => ({ id: i, label: `Row ${i}` }))
|
|
17
|
-
* <BasaltVirtualList items={items} height={400} renderItem={(item) => <div>{item.label}</div>} />
|
|
18
|
-
*/
|
|
19
|
-
export { BasaltVirtualList } from './virtual-list.js';
|
|
20
|
-
export type { BasaltVirtualListHandle, BasaltVirtualListProps, BasaltVirtualListSlot, } from './virtual-list.js';
|
|
21
|
-
//# sourceMappingURL=virtual.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"virtual.d.ts","sourceRoot":"","sources":["../../src/data/virtual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA"}
|
package/dist/data/virtual.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { UseFormReturnType } from '@mantine/form';
|
|
2
|
-
import type { BasaltProps } from '../common/props.js';
|
|
3
|
-
/** Props for FormErrorSummary. */
|
|
4
|
-
export type FormErrorSummaryProps<Values extends Record<string, unknown>> = BasaltProps & {
|
|
5
|
-
form: UseFormReturnType<Values>;
|
|
6
|
-
/** Accessible heading shown above the error list. Defaults to "Please fix the following errors". */
|
|
7
|
-
title?: string;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Renders an accessible error summary list for long forms and screen readers.
|
|
11
|
-
* Follows the WCAG error-summary pattern — a single `role="alert"` container that
|
|
12
|
-
* lists all field errors, placed at the top of the form so AT announces it on submit.
|
|
13
|
-
*
|
|
14
|
-
* Returns `null` when the form has no errors (renders nothing when the form is clean).
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* import { FormErrorSummary, useBasaltForm } from 'basalt-ui/forms'
|
|
18
|
-
*
|
|
19
|
-
* function MyForm() {
|
|
20
|
-
* const form = useBasaltForm({ initialValues: { email: '' } })
|
|
21
|
-
* return (
|
|
22
|
-
* <form onSubmit={form.onSubmit(console.log)}>
|
|
23
|
-
* <FormErrorSummary form={form} title="Fix these before submitting" />
|
|
24
|
-
* <TextInput key={fieldKey(form, 'email')} {...inputProps(form, 'email')} label="Email" />
|
|
25
|
-
* </form>
|
|
26
|
-
* )
|
|
27
|
-
* }
|
|
28
|
-
*/
|
|
29
|
-
export declare function FormErrorSummary<Values extends Record<string, unknown>>(props: FormErrorSummaryProps<Values>): import("react").JSX.Element | null;
|
|
30
|
-
//# sourceMappingURL=FormErrorSummary.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormErrorSummary.d.ts","sourceRoot":"","sources":["../../src/forms/FormErrorSummary.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAMlD,kCAAkC;AAClC,MAAM,MAAM,qBAAqB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,WAAW,GAAG;IACxF,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC/B,oGAAoG;IACpG,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,sCA8BrC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Alert, List, Text } from "@mantine/core";
|
|
3
|
-
import { assertRequiredProps } from "../common/validate.js";
|
|
4
|
-
import { alpha, VX } from "../tokens/index.js";
|
|
5
|
-
function FormErrorSummary(props) {
|
|
6
|
-
assertRequiredProps("FormErrorSummary", props, ["form"]);
|
|
7
|
-
const { form, title = "Please fix the following errors", className, style } = props;
|
|
8
|
-
const errorEntries = Object.entries(form.errors);
|
|
9
|
-
if (errorEntries.length === 0) return null;
|
|
10
|
-
return /* @__PURE__ */ jsx(
|
|
11
|
-
Alert,
|
|
12
|
-
{
|
|
13
|
-
role: "alert",
|
|
14
|
-
title: /* @__PURE__ */ jsx(Text, { fw: 600, children: title }),
|
|
15
|
-
...className !== void 0 && { className },
|
|
16
|
-
...style !== void 0 && { style },
|
|
17
|
-
styles: {
|
|
18
|
-
root: {
|
|
19
|
-
backgroundColor: alpha(VX.status.bad, 0.13),
|
|
20
|
-
color: VX.status.bad,
|
|
21
|
-
borderRadius: "var(--vx-radius-ctrl)"
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
children: /* @__PURE__ */ jsx(List, { size: "sm", mt: 4, children: errorEntries.map(([path, message]) => /* @__PURE__ */ jsx(List.Item, { children: String(message) }, path)) })
|
|
25
|
-
}
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
export {
|
|
29
|
-
FormErrorSummary
|
|
30
|
-
};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./forms — useFieldArray: the list-field surface over Mantine's four list actions.
|
|
3
|
-
* Mantine-coupled. Optional peer: @mantine/form.
|
|
4
|
-
*
|
|
5
|
-
* The gap (audit B §4): `insertListItem` / `removeListItem` / `reorderListItem` are all reachable
|
|
6
|
-
* off the raw form object, but they are unexported by name, undocumented in the forms doctrine, and
|
|
7
|
-
* each takes a different argument shape (`(path, item, index?)`, `(path, index)`,
|
|
8
|
-
* `(path, { from, to })`). The list ALSO has to be read back out of the values by dotted path, and
|
|
9
|
-
* every row needs `form.key(\`${path}.${i}\`)` or the uncontrolled reconciler reuses the wrong DOM
|
|
10
|
-
* node when a row is removed from the middle — which is the defect this hook exists to make
|
|
11
|
-
* unwritable.
|
|
12
|
-
*/
|
|
13
|
-
import type { FormArrayElement, LooseKeys, UseFormReturnType } from '@mantine/form';
|
|
14
|
-
export type UseFieldArrayReturn<Item> = {
|
|
15
|
-
/** The live list. `[]` when the path holds nothing, so a call site never guards before mapping. */
|
|
16
|
-
items: Item[];
|
|
17
|
-
/** Push one item onto the end. */
|
|
18
|
-
append: (value: Item) => void;
|
|
19
|
-
/** Drop the item at `index`. Mantine re-indexes the field errors with it. */
|
|
20
|
-
remove: (index: number) => void;
|
|
21
|
-
/** Move one item, e.g. from a drag handle or a pair of arrow buttons. */
|
|
22
|
-
move: (from: number, to: number) => void;
|
|
23
|
-
/**
|
|
24
|
-
* Mantine's reconciler key for row `index` (`form.key('<path>.<index>')`) — pass it as the row's
|
|
25
|
-
* JSX `key`, never spread it.
|
|
26
|
-
*
|
|
27
|
-
* **Positional, and that is a real limit worth stating**: it identifies the SLOT, not the item.
|
|
28
|
-
* Mantine's list actions write values through `$values` directly and never bump the form-level
|
|
29
|
-
* key generation (verified in 9.3.2's use-form-list), so removing row 0 does not change row 0's
|
|
30
|
-
* key — it changes which item sits there. That is correct for an append/remove list, where the
|
|
31
|
-
* uncontrolled inputs below re-read their `defaultValue` from the new values anyway. A list the
|
|
32
|
-
* USER reorders wants an identity key instead: put a `randomId()` on the item and key the row on
|
|
33
|
-
* that.
|
|
34
|
-
*/
|
|
35
|
-
key: (index: number) => string;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Reads and edits a list field as one object.
|
|
39
|
-
*
|
|
40
|
-
* **`items` is read from `form.getValues()`, not from `form.values`**, so it is correct under the
|
|
41
|
-
* `mode: 'uncontrolled'` default `useBasaltForm` sets: the list actions all re-render the form
|
|
42
|
-
* (they call `setValues` with `updateState: true`), so the snapshot this returns is the one the
|
|
43
|
-
* caller just produced.
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* const items = useFieldArray(form, 'contacts')
|
|
47
|
-
*
|
|
48
|
-
* {items.items.map((_, index) => (
|
|
49
|
-
* <FormRow key={items.key(index)} label={`Contact ${index + 1}`}>
|
|
50
|
-
* <TextInput
|
|
51
|
-
* key={fieldKey(form, `contacts.${index}.email`)}
|
|
52
|
-
* {...inputProps(form, `contacts.${index}.email`)}
|
|
53
|
-
* />
|
|
54
|
-
* <Button onClick={() => items.remove(index)}>Remove</Button>
|
|
55
|
-
* </FormRow>
|
|
56
|
-
* ))}
|
|
57
|
-
* <Button onClick={() => items.append({ email: '' })}>Add contact</Button>
|
|
58
|
-
*/
|
|
59
|
-
export declare function useFieldArray<Values extends Record<string, unknown>, Path extends LooseKeys<Values>>(form: UseFormReturnType<Values>, path: Path): UseFieldArrayReturn<FormArrayElement<Values, Path & string>>;
|
|
60
|
-
//# sourceMappingURL=use-field-array.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-field-array.d.ts","sourceRoot":"","sources":["../../src/forms/use-field-array.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEnF,MAAM,MAAM,mBAAmB,CAAC,IAAI,IAAI;IACtC,mGAAmG;IACnG,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,kCAAkC;IAClC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAA;IAC7B,6EAA6E;IAC7E,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,yEAAyE;IACzE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC;;;;;;;;;;;OAWG;IACH,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAC3B,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,IAAI,SAAS,SAAS,CAAC,MAAM,CAAC,EAE9B,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAC/B,IAAI,EAAE,IAAI,GACT,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAU9D"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
function useFieldArray(form, path) {
|
|
2
|
-
return {
|
|
3
|
-
items: readList(form.getValues(), String(path)),
|
|
4
|
-
append: (value) => form.insertListItem(path, value),
|
|
5
|
-
remove: (index) => form.removeListItem(path, index),
|
|
6
|
-
move: (from, to) => form.reorderListItem(path, { from, to }),
|
|
7
|
-
key: (index) => form.key(`${String(path)}.${index}`)
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
function readList(values, path) {
|
|
11
|
-
let current = values;
|
|
12
|
-
for (const segment of path.split(".")) {
|
|
13
|
-
if (current === null || typeof current !== "object") return [];
|
|
14
|
-
current = current[segment];
|
|
15
|
-
}
|
|
16
|
-
return Array.isArray(current) ? current : [];
|
|
17
|
-
}
|
|
18
|
-
export {
|
|
19
|
-
useFieldArray
|
|
20
|
-
};
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import type { UseFormReturnType } from '@mantine/form';
|
|
2
|
-
import type { StandardSchemaV1 } from '../register.js';
|
|
3
|
-
/** Options for useFormDraft. */
|
|
4
|
-
export type UseFormDraftOptions<Values> = {
|
|
5
|
-
/**
|
|
6
|
-
* Stable localStorage key for the draft. Must not change between renders —
|
|
7
|
-
* changing the key recreates the storage instance and loses the draft.
|
|
8
|
-
* Will be stored under `basalt:form:<key>`.
|
|
9
|
-
*/
|
|
10
|
-
key: string;
|
|
11
|
-
/** Envelope version — increment when the values shape changes to discard stale drafts. */
|
|
12
|
-
version: number;
|
|
13
|
-
/** Optional Standard Schema to validate the persisted draft before restoring. */
|
|
14
|
-
schema?: StandardSchemaV1<unknown, Values>;
|
|
15
|
-
/**
|
|
16
|
-
* Persist on every value change, debounced. `true` uses {@link DEFAULT_AUTOSAVE_DEBOUNCE_MS};
|
|
17
|
-
* pass `{ debounceMs }` to tune it (`0` saves on the next macrotask).
|
|
18
|
-
*
|
|
19
|
-
* **The on/off decision and the watched key set are read ONCE, on mount.** The subscription is
|
|
20
|
-
* `form.watch` per top-level key, and `watch` calls `useEffect` internally, so both are a hook
|
|
21
|
-
* count and neither may move between renders. Flipping this prop later therefore neither starts
|
|
22
|
-
* nor stops autosaving; a form whose top-level SHAPE changes after mount needs `saveDraft` called
|
|
23
|
-
* by hand for the new keys. `debounceMs` is the exception — it is read at FIRE time, so a form
|
|
24
|
-
* that widens its window mid-edit gets the new one.
|
|
25
|
-
*
|
|
26
|
-
* Nested edits are covered: Mantine notifies a parent-path subscriber for a `a.b.c` change, so
|
|
27
|
-
* watching the top level watches the whole tree.
|
|
28
|
-
*/
|
|
29
|
-
autosave?: boolean | {
|
|
30
|
-
debounceMs?: number;
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
/** Long enough that a typed word is one write, short enough that a closed tab keeps the sentence. */
|
|
34
|
-
export declare const DEFAULT_AUTOSAVE_DEBOUNCE_MS = 500;
|
|
35
|
-
/** Return value of useFormDraft. */
|
|
36
|
-
export type UseFormDraftReturn = {
|
|
37
|
-
/** True when a draft different from the initial values is persisted. */
|
|
38
|
-
hasDraft: boolean;
|
|
39
|
-
/** Persist the current form values to localStorage. Call on blur, onValuesChange, or submit failure. */
|
|
40
|
-
saveDraft: () => void;
|
|
41
|
-
/** Clear the persisted draft (call in onSubmit success). */
|
|
42
|
-
clearDraft: () => void;
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* Autosave/restore/clear-on-submit draft persistence for Mantine forms.
|
|
46
|
-
* Backed by `createPersistedState` (versioned, SSR-safe, cross-tab).
|
|
47
|
-
*
|
|
48
|
-
* MUST-HAVES:
|
|
49
|
-
* - Restores the draft once on mount if a draft is persisted.
|
|
50
|
-
* - `clearDraft()` removes the persisted draft (call in onSubmit success).
|
|
51
|
-
* - `saveDraft()` snapshots current form values (call onBlur, or leave it to `autosave`).
|
|
52
|
-
* - `autosave: true` subscribes for you — see {@link UseFormDraftOptions.autosave} for the two
|
|
53
|
-
* properties that are frozen at mount, and why.
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* import * as v from 'valibot'
|
|
57
|
-
* import { useBasaltForm, inputProps, fieldKey, FormErrorSummary, useFormDraft } from 'basalt-ui/forms'
|
|
58
|
-
*
|
|
59
|
-
* const Schema = v.object({ name: v.pipe(v.string(), v.minLength(2)), amount: v.number() })
|
|
60
|
-
* type Values = v.InferOutput<typeof Schema>
|
|
61
|
-
* const INITIAL: Values = { name: '', amount: 0 }
|
|
62
|
-
*
|
|
63
|
-
* function MyForm() {
|
|
64
|
-
* const form = useBasaltForm({ initialValues: INITIAL, schema: Schema, mode: 'uncontrolled' })
|
|
65
|
-
* const { clearDraft, hasDraft } = useFormDraft(form, { key: 'my-form', version: 1, autosave: true })
|
|
66
|
-
* return (
|
|
67
|
-
* <form onSubmit={form.onSubmit((values) => { submit(values); clearDraft() })}>
|
|
68
|
-
* <FormErrorSummary form={form} />
|
|
69
|
-
* <TextInput key={fieldKey(form, 'name')} {...inputProps(form, 'name')} />
|
|
70
|
-
* {hasDraft && <Button onClick={clearDraft}>Clear draft</Button>}
|
|
71
|
-
* </form>
|
|
72
|
-
* )
|
|
73
|
-
* }
|
|
74
|
-
*/
|
|
75
|
-
export declare function useFormDraft<Values extends Record<string, unknown>>(form: UseFormReturnType<Values>, opts: UseFormDraftOptions<Values>): UseFormDraftReturn;
|
|
76
|
-
//# sourceMappingURL=use-form-draft.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-form-draft.d.ts","sourceRoot":"","sources":["../../src/forms/use-form-draft.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAInD,gCAAgC;AAChC,MAAM,MAAM,mBAAmB,CAAC,MAAM,IAAI;IACxC;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAA;IACX,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAA;IACf,iFAAiF;IACjF,MAAM,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1C;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC7C,CAAA;AAED,qGAAqG;AACrG,eAAO,MAAM,4BAA4B,MAAM,CAAA;AAE/C,oCAAoC;AACpC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAA;IACjB,wGAAwG;IACxG,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAC/B,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAChC,kBAAkB,CAwDpB"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useRef } from "react";
|
|
2
|
-
import { createPersistedState } from "../state.js";
|
|
3
|
-
const DEFAULT_AUTOSAVE_DEBOUNCE_MS = 500;
|
|
4
|
-
function useFormDraft(form, opts) {
|
|
5
|
-
const { key, version, schema, autosave } = opts;
|
|
6
|
-
const storeRef = useRef(
|
|
7
|
-
null
|
|
8
|
-
);
|
|
9
|
-
if (storeRef.current === null) {
|
|
10
|
-
const envelopeSchema = wrapEnvelopeSchema(schema);
|
|
11
|
-
storeRef.current = createPersistedState({
|
|
12
|
-
key: `form:${key}`,
|
|
13
|
-
version,
|
|
14
|
-
initial: null,
|
|
15
|
-
// exactOptionalPropertyTypes forbids `schema: undefined`, so it is spread or omitted.
|
|
16
|
-
...envelopeSchema !== void 0 && { schema: envelopeSchema }
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
const useDraft = storeRef.current;
|
|
20
|
-
const [draft, setDraft] = useDraft();
|
|
21
|
-
const hasDraft = draft !== null;
|
|
22
|
-
const restoredRef = useRef(false);
|
|
23
|
-
const formRef = useRef(form);
|
|
24
|
-
formRef.current = form;
|
|
25
|
-
const draftOnMountRef = useRef(draft);
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
if (restoredRef.current) return;
|
|
28
|
-
restoredRef.current = true;
|
|
29
|
-
const mountDraft = draftOnMountRef.current;
|
|
30
|
-
if (mountDraft !== null) {
|
|
31
|
-
formRef.current.setValues(mountDraft.values);
|
|
32
|
-
}
|
|
33
|
-
}, []);
|
|
34
|
-
const saveDraft = () => {
|
|
35
|
-
const values = formRef.current.getValues();
|
|
36
|
-
setDraft({ values });
|
|
37
|
-
};
|
|
38
|
-
const clearDraft = () => {
|
|
39
|
-
setDraft(null);
|
|
40
|
-
};
|
|
41
|
-
useAutosave(form, autosave, saveDraft);
|
|
42
|
-
return { hasDraft, saveDraft, clearDraft };
|
|
43
|
-
}
|
|
44
|
-
function wrapEnvelopeSchema(schema) {
|
|
45
|
-
if (schema === void 0) return void 0;
|
|
46
|
-
return {
|
|
47
|
-
"~standard": {
|
|
48
|
-
version: 1,
|
|
49
|
-
vendor: "basalt-form-draft",
|
|
50
|
-
validate: (raw) => {
|
|
51
|
-
if (typeof raw !== "object" || raw === null || !("values" in raw)) return { value: null };
|
|
52
|
-
const result = schema["~standard"].validate(raw.values);
|
|
53
|
-
if (result instanceof Promise) return { value: null };
|
|
54
|
-
if (result.issues !== void 0) return { value: null };
|
|
55
|
-
return { value: { values: result.value } };
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
function useAutosave(form, autosave, saveDraft) {
|
|
61
|
-
const watchedPathsRef = useRef(null);
|
|
62
|
-
if (watchedPathsRef.current === null) {
|
|
63
|
-
watchedPathsRef.current = autosave === void 0 || autosave === false ? [] : Object.keys(form.getValues());
|
|
64
|
-
}
|
|
65
|
-
const debounceRef = useRef(DEFAULT_AUTOSAVE_DEBOUNCE_MS);
|
|
66
|
-
debounceRef.current = typeof autosave === "object" ? autosave.debounceMs ?? DEFAULT_AUTOSAVE_DEBOUNCE_MS : DEFAULT_AUTOSAVE_DEBOUNCE_MS;
|
|
67
|
-
const saveRef = useRef(saveDraft);
|
|
68
|
-
saveRef.current = saveDraft;
|
|
69
|
-
const timerRef = useRef(null);
|
|
70
|
-
const scheduleSave = useCallback(() => {
|
|
71
|
-
if (timerRef.current !== null) clearTimeout(timerRef.current);
|
|
72
|
-
timerRef.current = setTimeout(() => {
|
|
73
|
-
timerRef.current = null;
|
|
74
|
-
saveRef.current();
|
|
75
|
-
}, debounceRef.current);
|
|
76
|
-
}, []);
|
|
77
|
-
useEffect(
|
|
78
|
-
() => () => {
|
|
79
|
-
if (timerRef.current !== null) {
|
|
80
|
-
clearTimeout(timerRef.current);
|
|
81
|
-
timerRef.current = null;
|
|
82
|
-
saveRef.current();
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
[]
|
|
86
|
-
);
|
|
87
|
-
for (const path of watchedPathsRef.current) form.watch(path, scheduleSave);
|
|
88
|
-
}
|
|
89
|
-
export {
|
|
90
|
-
DEFAULT_AUTOSAVE_DEBOUNCE_MS,
|
|
91
|
-
useFormDraft
|
|
92
|
-
};
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type { SyntheticEvent } from 'react';
|
|
2
|
-
import type { UseFormReturnType } from '@mantine/form';
|
|
3
|
-
/**
|
|
4
|
-
* Per-field messages keyed by the same dotted paths `inputProps(form, path)` uses
|
|
5
|
-
* (`'email'`, `'addresses.0.city'`). The shape a server returns for a 422, and the shape
|
|
6
|
-
* `validateAsync` returns for a uniqueness check.
|
|
7
|
-
*/
|
|
8
|
-
export type FormFieldErrors = Record<string, string>;
|
|
9
|
-
/**
|
|
10
|
-
* Whether a thrown value carries `{ fieldErrors }` — the envelope `useFormSubmit` routes back onto
|
|
11
|
-
* the fields instead of into one form-level message.
|
|
12
|
-
*
|
|
13
|
-
* Structural, not `instanceof`: the throw crosses a transport (Eden, `fetch`, a mutation wrapper)
|
|
14
|
-
* and arrives as a plain object, so an `Error` subclass would only match the one shape basalt
|
|
15
|
-
* itself constructed. The keys are checked to be STRINGS — a `{ fieldErrors: { email: 422 } }`
|
|
16
|
-
* would otherwise reach `form.setErrors` and render a number under an input.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* throw Object.assign(new Error('Validation failed'), { fieldErrors: { email: 'Already taken' } })
|
|
20
|
-
*/
|
|
21
|
-
export declare function isFieldErrorEnvelope(err: unknown): err is {
|
|
22
|
-
fieldErrors: FormFieldErrors;
|
|
23
|
-
};
|
|
24
|
-
export type UseFormSubmitOptions<Values extends Record<string, unknown>> = {
|
|
25
|
-
/** Ran after the handler resolves. The success path — close the modal, clear the draft, navigate. */
|
|
26
|
-
onSuccess?: (values: Values) => void;
|
|
27
|
-
/** Ran on any throw, after `submitError` is set. For telemetry or a toast; not required for either. */
|
|
28
|
-
onError?: (err: unknown) => void;
|
|
29
|
-
/**
|
|
30
|
-
* Turns a thrown value into the message `submitError` carries. Defaults to `toErrorMessage`
|
|
31
|
-
* (root barrel), which already unwraps `Error`, `{ message }` and Eden's `{ status, value }`.
|
|
32
|
-
* Override it to brand the copy or to branch on `errorStatus(err)`.
|
|
33
|
-
*/
|
|
34
|
-
mapError?: (err: unknown) => string;
|
|
35
|
-
/**
|
|
36
|
-
* The async half of validation, run AFTER the schema passes and BEFORE the handler — a uniqueness
|
|
37
|
-
* check, a server-side cross-field rule, anything that needs the network.
|
|
38
|
-
*
|
|
39
|
-
* It lives here rather than on `useBasaltForm` because that hook hard-codes
|
|
40
|
-
* `schemaResolver(schema, { sync: true })` so `validate()`/`isValid()` stay synchronous for every
|
|
41
|
-
* field-level read. Moving the async rule to submit time keeps that property AND gives the rule a
|
|
42
|
-
* home; the cost, stated plainly, is that it does not run on blur.
|
|
43
|
-
*
|
|
44
|
-
* Return `null` (or an empty record) for "valid". Anything else is set on the fields, the first
|
|
45
|
-
* one is focused, and the handler never runs.
|
|
46
|
-
*/
|
|
47
|
-
validateAsync?: (values: Values) => Promise<FormFieldErrors | null>;
|
|
48
|
-
};
|
|
49
|
-
export type UseFormSubmitReturn = {
|
|
50
|
-
/** Hand straight to `<form onSubmit={submit}>`, or call it from a button's `onClick`. */
|
|
51
|
-
submit: (event?: SyntheticEvent<HTMLFormElement>) => void;
|
|
52
|
-
/** True from the moment a submit starts until the handler settles. Mantine's own `form.submitting`. */
|
|
53
|
-
isSubmitting: boolean;
|
|
54
|
-
/** The form-level failure message, or `null`. Cleared at the start of every submit. */
|
|
55
|
-
submitError: string | null;
|
|
56
|
-
/** Clears `submitError` without submitting — for a "dismiss" on the error banner. */
|
|
57
|
-
reset: () => void;
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Wraps `form.onSubmit` with the four things a real submit needs: a busy flag, a caught and decoded
|
|
61
|
-
* error, a server field-error envelope routed back onto the fields, and focus on the first thing
|
|
62
|
-
* that is wrong.
|
|
63
|
-
*
|
|
64
|
-
* **`isSubmitting` IS `form.submitting`**, not a second piece of state beside it. Mantine already
|
|
65
|
-
* flips that flag around a handler returning a promise, and this handler always does; duplicating it
|
|
66
|
-
* would give a form two busy flags that can disagree, which is the failure a `FormStateProvider`
|
|
67
|
-
* reading the wrong one produces.
|
|
68
|
-
*
|
|
69
|
-
* **Focus moves on BOTH failure paths** — a schema failure (through `onSubmit`'s own
|
|
70
|
-
* `handleValidationFailure`) and a thrown `{ fieldErrors }` envelope. A server's 422 lands exactly
|
|
71
|
-
* where a client-side error does.
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* const { submit, isSubmitting, submitError } = useFormSubmit(
|
|
75
|
-
* form,
|
|
76
|
-
* async (values) => { await unwrap(api.users.post({ body: values })) },
|
|
77
|
-
* { onSuccess: () => { clearDraft(); close() }, validateAsync: checkHandleFree },
|
|
78
|
-
* )
|
|
79
|
-
*
|
|
80
|
-
* <form onSubmit={submit}>
|
|
81
|
-
* <FormStateProvider submitting={isSubmitting}>
|
|
82
|
-
* {submitError !== null && <Alert color="red">{submitError}</Alert>}
|
|
83
|
-
* …
|
|
84
|
-
* </FormStateProvider>
|
|
85
|
-
* </form>
|
|
86
|
-
*/
|
|
87
|
-
export declare function useFormSubmit<Values extends Record<string, unknown>>(form: UseFormReturnType<Values>, handler: (values: Values) => void | Promise<void>, options?: UseFormSubmitOptions<Values>): UseFormSubmitReturn;
|
|
88
|
-
//# sourceMappingURL=use-form-submit.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-form-submit.d.ts","sourceRoot":"","sources":["../../src/forms/use-form-submit.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAKtD;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEpD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE,CAO1F;AAmCD,MAAM,MAAM,oBAAoB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACzE,qGAAqG;IACrG,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,uGAAuG;IACvG,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAA;IACnC;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAA;CACpE,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,yFAAyF;IACzF,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,KAAK,IAAI,CAAA;IACzD,uGAAuG;IACvG,YAAY,EAAE,OAAO,CAAA;IACrB,uFAAuF;IACvF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,qFAAqF;IACrF,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACjD,OAAO,GAAE,oBAAoB,CAAC,MAAM,CAAM,GACzC,mBAAmB,CAwCrB"}
|