basalt-ui 1.27.0 → 1.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +23 -23
- package/CHANGELOG.md +59 -0
- package/MIGRATING.md +613 -20
- package/README.md +33 -3
- package/agent/rules/basalt-batteries.md +25 -10
- package/agent/rules/basalt-controls.md +56 -31
- package/agent/rules/basalt-mantine.md +17 -6
- package/agent/rules/basalt-tokens.md +1 -1
- package/configs/oxlint-plugin.js +1056 -28
- package/configs/oxlint-plugin.test.ts +1066 -0
- package/configs/oxlint.json +7 -0
- package/dist/agent/coalesce.d.ts.map +1 -1
- package/dist/agent/coalesce.js +2 -1
- package/dist/agent/merge.d.ts.map +1 -1
- package/dist/agent/merge.js +2 -1
- package/dist/agent/part-list.d.ts.map +1 -1
- package/dist/agent/part-list.js +2 -0
- package/dist/agent/stick-to-bottom.d.ts +3 -6
- package/dist/agent/stick-to-bottom.d.ts.map +1 -1
- package/dist/agent/stick-to-bottom.js +6 -3
- package/dist/agent-chat/composer.d.ts +6 -2
- package/dist/agent-chat/composer.d.ts.map +1 -1
- package/dist/agent-chat/composer.js +49 -33
- package/dist/agent-chat/relative-time.d.ts +0 -9
- package/dist/agent-chat/relative-time.d.ts.map +1 -1
- package/dist/agent-chat/relative-time.js +2 -1
- package/dist/agent-chat/thread-detail-panel.d.ts +3 -2
- package/dist/agent-chat/thread-detail-panel.d.ts.map +1 -1
- package/dist/agent-chat/thread-detail-panel.js +8 -5
- package/dist/agent-chat/thread-feed-row.d.ts +2 -1
- package/dist/agent-chat/thread-feed-row.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed-row.js +92 -92
- package/dist/agent-chat/thread-feed.d.ts +3 -2
- package/dist/agent-chat/thread-feed.d.ts.map +1 -1
- package/dist/agent-chat/thread-feed.js +8 -3
- package/dist/agent-chat/thread-message.d.ts +4 -3
- package/dist/agent-chat/thread-message.d.ts.map +1 -1
- package/dist/agent-chat/thread-message.js +70 -31
- package/dist/agent-chat/thread-outcome-card.d.ts +3 -2
- package/dist/agent-chat/thread-outcome-card.d.ts.map +1 -1
- package/dist/agent-chat/thread-outcome-card.js +9 -2
- package/dist/agent-chat/thread-workspace.d.ts +7 -2
- package/dist/agent-chat/thread-workspace.d.ts.map +1 -1
- package/dist/agent-chat/thread-workspace.js +62 -29
- package/dist/agent-chat/tool-chip.d.ts +3 -2
- package/dist/agent-chat/tool-chip.d.ts.map +1 -1
- package/dist/agent-chat/tool-chip.js +7 -2
- package/dist/charts/hooks/useBandPlot.d.ts.map +1 -1
- package/dist/charts/hooks/useBandPlot.js +15 -8
- package/dist/charts/index.d.ts +8 -7
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/index.js +45 -5
- package/dist/charts/kinds/BandStrip.d.ts +10 -7
- package/dist/charts/kinds/BandStrip.d.ts.map +1 -1
- package/dist/charts/kinds/BandStrip.js +12 -7
- package/dist/charts/kinds/Bars.d.ts +12 -6
- package/dist/charts/kinds/Bars.d.ts.map +1 -1
- package/dist/charts/kinds/Bars.js +37 -11
- package/dist/charts/kinds/Donut.d.ts +6 -5
- package/dist/charts/kinds/Donut.d.ts.map +1 -1
- package/dist/charts/kinds/Donut.js +19 -2
- package/dist/charts/kinds/DualPanel.d.ts +6 -5
- package/dist/charts/kinds/DualPanel.d.ts.map +1 -1
- package/dist/charts/kinds/DualPanel.js +36 -8
- package/dist/charts/kinds/Heatmap.d.ts +10 -6
- package/dist/charts/kinds/Heatmap.d.ts.map +1 -1
- package/dist/charts/kinds/Heatmap.js +58 -31
- package/dist/charts/kinds/MirroredBars.d.ts +6 -5
- package/dist/charts/kinds/MirroredBars.d.ts.map +1 -1
- package/dist/charts/kinds/MirroredBars.js +9 -2
- package/dist/charts/kinds/MultiLine.d.ts +11 -6
- package/dist/charts/kinds/MultiLine.d.ts.map +1 -1
- package/dist/charts/kinds/MultiLine.js +24 -15
- package/dist/charts/kinds/StackedArea.d.ts +18 -8
- package/dist/charts/kinds/StackedArea.d.ts.map +1 -1
- package/dist/charts/kinds/StackedArea.js +29 -4
- package/dist/charts/kinds/ZonedLine.d.ts +12 -8
- package/dist/charts/kinds/ZonedLine.d.ts.map +1 -1
- package/dist/charts/kinds/ZonedLine.js +33 -23
- package/dist/charts/layout/auto-margin.d.ts +65 -8
- package/dist/charts/layout/auto-margin.d.ts.map +1 -1
- package/dist/charts/layout/auto-margin.js +45 -10
- package/dist/charts/layout/log-ticks.d.ts +27 -0
- package/dist/charts/layout/log-ticks.d.ts.map +1 -0
- package/dist/charts/layout/log-ticks.js +42 -0
- package/dist/charts/primitives/Axes.d.ts +11 -2
- package/dist/charts/primitives/Axes.d.ts.map +1 -1
- package/dist/charts/primitives/Axes.js +15 -5
- package/dist/charts/primitives/CartesianChart.d.ts +45 -7
- package/dist/charts/primitives/CartesianChart.d.ts.map +1 -1
- package/dist/charts/primitives/CartesianChart.js +86 -28
- package/dist/charts/primitives/ChartCard.d.ts +27 -2
- package/dist/charts/primitives/ChartCard.d.ts.map +1 -1
- package/dist/charts/primitives/ChartCard.js +37 -17
- package/dist/charts/primitives/ChartFrame.d.ts +30 -4
- package/dist/charts/primitives/ChartFrame.d.ts.map +1 -1
- package/dist/charts/primitives/ChartFrame.js +45 -15
- package/dist/charts/primitives/ChartLegend.d.ts +13 -2
- package/dist/charts/primitives/ChartLegend.d.ts.map +1 -1
- package/dist/charts/primitives/ChartLegend.js +33 -13
- package/dist/charts/primitives/ChartPending.d.ts +77 -4
- package/dist/charts/primitives/ChartPending.d.ts.map +1 -1
- package/dist/charts/primitives/ChartPending.js +100 -6
- package/dist/charts/primitives/ChartTooltip.d.ts +7 -0
- package/dist/charts/primitives/ChartTooltip.d.ts.map +1 -1
- package/dist/charts/primitives/ChartTooltip.js +18 -5
- package/dist/charts/primitives/Crosshair.d.ts +3 -0
- package/dist/charts/primitives/Crosshair.d.ts.map +1 -1
- package/dist/charts/primitives/Crosshair.js +3 -1
- package/dist/charts/primitives/chart-frame-layout.d.ts +95 -0
- package/dist/charts/primitives/chart-frame-layout.d.ts.map +1 -0
- package/dist/charts/primitives/chart-frame-layout.js +89 -0
- package/dist/charts/primitives/chart-tier.d.ts +16 -0
- package/dist/charts/primitives/chart-tier.d.ts.map +1 -0
- package/dist/charts/primitives/chart-tier.js +20 -0
- package/dist/charts/series.d.ts +55 -1
- package/dist/charts/series.d.ts.map +1 -1
- package/dist/charts/series.js +27 -1
- package/dist/charts/sparklines/BarSparkline.d.ts +3 -3
- package/dist/charts/sparklines/BarSparkline.d.ts.map +1 -1
- package/dist/charts/sparklines/BarSparkline.js +9 -3
- package/dist/charts/sparklines/LineSparkline.d.ts +3 -3
- package/dist/charts/sparklines/LineSparkline.d.ts.map +1 -1
- package/dist/charts/sparklines/LineSparkline.js +15 -3
- package/dist/charts/sparklines/index.d.ts +2 -2
- package/dist/charts/sparklines/index.d.ts.map +1 -1
- package/dist/charts/utils/format.d.ts +92 -2
- package/dist/charts/utils/format.d.ts.map +1 -1
- package/dist/charts/utils/format.js +64 -1
- package/dist/charts/utils/ticks.d.ts +81 -2
- package/dist/charts/utils/ticks.d.ts.map +1 -1
- package/dist/charts/utils/ticks.js +54 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/commands/ShortcutsHelp.d.ts +3 -2
- package/dist/commands/ShortcutsHelp.d.ts.map +1 -1
- package/dist/commands/ShortcutsHelp.js +8 -2
- package/dist/commands/define-commands.d.ts.map +1 -1
- package/dist/commands/define-commands.js +2 -2
- package/dist/commands/define-overlays.d.ts +102 -0
- package/dist/commands/define-overlays.d.ts.map +1 -1
- package/dist/commands/define-overlays.js +102 -2
- package/dist/commands/index.d.ts +10 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -1
- package/dist/commands/overlays-mount.d.ts +13 -6
- package/dist/commands/overlays-mount.d.ts.map +1 -1
- package/dist/commands/overlays-mount.js +23 -14
- package/dist/common/errors.d.ts +34 -0
- package/dist/common/errors.d.ts.map +1 -0
- package/dist/common/errors.js +36 -0
- package/dist/common/index.d.ts +15 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +29 -0
- package/dist/common/props.d.ts +63 -0
- package/dist/common/props.d.ts.map +1 -0
- package/dist/common/props.js +6 -0
- package/dist/common/query-state-like.d.ts +43 -0
- package/dist/common/query-state-like.d.ts.map +1 -0
- package/dist/common/query-state-like.js +20 -0
- package/dist/common/refs.d.ts +29 -0
- package/dist/common/refs.d.ts.map +1 -0
- package/dist/common/refs.js +29 -0
- package/dist/common/scroll-parent.d.ts +23 -0
- package/dist/common/scroll-parent.d.ts.map +1 -0
- package/dist/common/scroll-parent.js +21 -0
- package/dist/common/validate.d.ts +38 -0
- package/dist/common/validate.d.ts.map +1 -0
- package/dist/common/validate.js +36 -0
- package/dist/connectivity/connectivity-indicator.d.ts +3 -1
- package/dist/connectivity/connectivity-indicator.d.ts.map +1 -1
- package/dist/connectivity/connectivity-indicator.js +3 -1
- package/dist/connectivity/connectivity-provider.d.ts.map +1 -1
- package/dist/connectivity/connectivity-provider.js +4 -1
- package/dist/connectivity/index.d.ts +1 -0
- package/dist/connectivity/index.d.ts.map +1 -1
- package/dist/connectivity/types.d.ts +2 -2
- package/dist/connectivity/types.d.ts.map +1 -1
- package/dist/connectivity/use-connectivity.d.ts.map +1 -1
- package/dist/content/article-layout.module.css +11 -4
- package/dist/content/callout.d.ts +8 -4
- package/dist/content/callout.d.ts.map +1 -1
- package/dist/content/callout.js +15 -8
- package/dist/content/guide.d.ts +5 -4
- package/dist/content/guide.d.ts.map +1 -1
- package/dist/content/guide.js +13 -4
- package/dist/content/heading-anchor.d.ts +24 -2
- package/dist/content/heading-anchor.d.ts.map +1 -1
- package/dist/content/heading-anchor.js +23 -9
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +2 -0
- package/dist/content/prose.module.css +9 -7
- package/dist/content/reading-progress.d.ts +10 -4
- package/dist/content/reading-progress.d.ts.map +1 -1
- package/dist/content/reading-progress.js +26 -10
- package/dist/content/slug.d.ts +4 -0
- package/dist/content/slug.d.ts.map +1 -1
- package/dist/content/toc.d.ts +11 -0
- package/dist/content/toc.d.ts.map +1 -1
- package/dist/content/toc.js +23 -10
- package/dist/controls/actions.d.ts +49 -6
- package/dist/controls/actions.d.ts.map +1 -1
- package/dist/controls/actions.js +39 -8
- package/dist/controls/compare-filter.d.ts +3 -2
- package/dist/controls/compare-filter.d.ts.map +1 -1
- package/dist/controls/compare-filter.js +17 -2
- package/dist/controls/control-group.d.ts +3 -3
- package/dist/controls/control-group.d.ts.map +1 -1
- package/dist/controls/control-group.js +9 -2
- package/dist/controls/controls.module.css +169 -186
- package/dist/controls/controls.module.css.d.ts +9 -11
- package/dist/controls/enum-filter.d.ts +3 -2
- package/dist/controls/enum-filter.d.ts.map +1 -1
- package/dist/controls/enum-filter.js +28 -13
- package/dist/controls/filter-context.d.ts +8 -4
- package/dist/controls/filter-context.d.ts.map +1 -1
- package/dist/controls/filter-pill.d.ts +3 -3
- package/dist/controls/filter-pill.d.ts.map +1 -1
- package/dist/controls/filter-pill.js +4 -1
- package/dist/controls/filter-set.d.ts +3 -2
- package/dist/controls/filter-set.d.ts.map +1 -1
- package/dist/controls/filter-set.js +66 -41
- package/dist/controls/filter-sheet.d.ts +20 -80
- package/dist/controls/filter-sheet.d.ts.map +1 -1
- package/dist/controls/filter-sheet.js +9 -95
- package/dist/controls/index.d.ts +2 -0
- package/dist/controls/index.d.ts.map +1 -1
- package/dist/controls/index.js +4 -0
- package/dist/controls/multi-select-filter.d.ts +18 -2
- package/dist/controls/multi-select-filter.d.ts.map +1 -1
- package/dist/controls/multi-select-filter.js +122 -20
- package/dist/controls/number-filter.d.ts +7 -5
- package/dist/controls/number-filter.d.ts.map +1 -1
- package/dist/controls/number-filter.js +40 -11
- package/dist/controls/panel-row.d.ts +132 -0
- package/dist/controls/panel-row.d.ts.map +1 -0
- package/dist/controls/panel-row.js +173 -0
- package/dist/controls/panel-row.module.css +86 -0
- package/dist/controls/panel-row.module.css.d.ts +13 -0
- package/dist/controls/range-filter.d.ts +2 -1
- package/dist/controls/range-filter.d.ts.map +1 -1
- package/dist/controls/range-filter.js +57 -35
- package/dist/controls/search-filter.d.ts +3 -2
- package/dist/controls/search-filter.d.ts.map +1 -1
- package/dist/controls/search-filter.js +25 -10
- package/dist/controls/select-filter.d.ts +2 -1
- package/dist/controls/select-filter.d.ts.map +1 -1
- package/dist/controls/select-filter.js +4 -0
- package/dist/controls/slider-control.d.ts +36 -0
- package/dist/controls/slider-control.d.ts.map +1 -0
- package/dist/controls/slider-control.js +64 -0
- package/dist/controls/sync-button.d.ts +3 -2
- package/dist/controls/sync-button.d.ts.map +1 -1
- package/dist/controls/sync-button.js +16 -3
- package/dist/controls/toggle-filter.d.ts +3 -2
- package/dist/controls/toggle-filter.d.ts.map +1 -1
- package/dist/controls/toggle-filter.js +28 -11
- package/dist/controls/view-tabs.d.ts +3 -2
- package/dist/controls/view-tabs.d.ts.map +1 -1
- package/dist/controls/view-tabs.js +43 -11
- package/dist/controls-dates/date-range-picker.d.ts +1 -1
- package/dist/controls-dates/date-range-picker.d.ts.map +1 -1
- package/dist/controls-dates/date-range-picker.js +6 -1
- package/dist/dashboard/delta-badge.d.ts +5 -1
- package/dist/dashboard/delta-badge.d.ts.map +1 -1
- package/dist/dashboard/empty-state.d.ts +10 -3
- package/dist/dashboard/empty-state.d.ts.map +1 -1
- package/dist/dashboard/empty-state.js +37 -6
- package/dist/dashboard/index.d.ts +6 -4
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +7 -1
- package/dist/dashboard/query-state.d.ts +48 -27
- package/dist/dashboard/query-state.d.ts.map +1 -1
- package/dist/dashboard/query-state.js +111 -57
- package/dist/dashboard/settings-section.d.ts +19 -9
- package/dist/dashboard/settings-section.d.ts.map +1 -1
- package/dist/dashboard/settings-section.js +74 -25
- package/dist/dashboard/stat-card.d.ts +44 -38
- package/dist/dashboard/stat-card.d.ts.map +1 -1
- package/dist/dashboard/stat-card.js +55 -42
- package/dist/dashboard/stat-card.module.css +46 -31
- package/dist/dashboard/stat-card.module.css.d.ts +1 -0
- package/dist/dashboard/stat-group.d.ts +41 -0
- package/dist/dashboard/stat-group.d.ts.map +1 -0
- package/dist/dashboard/stat-group.js +30 -0
- package/dist/dashboard/stat-group.module.css +66 -0
- package/dist/dashboard/stat-group.module.css.d.ts +8 -0
- package/dist/dashboard/widget-grid.d.ts +27 -0
- package/dist/dashboard/widget-grid.d.ts.map +1 -0
- package/dist/dashboard/widget-grid.js +41 -0
- package/dist/dashboard/widget-grid.module.css +53 -0
- package/dist/dashboard/widget-grid.module.css.d.ts +9 -0
- package/dist/data/data-table.d.ts +151 -12
- package/dist/data/data-table.d.ts.map +1 -1
- package/dist/data/data-table.js +384 -138
- package/dist/data/data-table.module.css +64 -0
- package/dist/data/data-table.module.css.d.ts +11 -0
- package/dist/data/index.d.ts +2 -2
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +24 -2
- package/dist/data/query-branch.d.ts +28 -0
- package/dist/data/query-branch.d.ts.map +1 -0
- package/dist/data/query-branch.js +10 -0
- package/dist/data/table.d.ts +2 -2
- package/dist/data/table.d.ts.map +1 -1
- package/dist/data/virtual-list.d.ts +65 -6
- package/dist/data/virtual-list.d.ts.map +1 -1
- package/dist/data/virtual-list.js +89 -38
- package/dist/data/virtual.d.ts +1 -1
- package/dist/data/virtual.d.ts.map +1 -1
- package/dist/forms/FormErrorSummary.d.ts +4 -3
- package/dist/forms/FormErrorSummary.d.ts.map +1 -1
- package/dist/forms/FormErrorSummary.js +6 -4
- package/dist/forms/create-form.d.ts +2 -2
- package/dist/forms/field.d.ts +46 -6
- package/dist/forms/field.d.ts.map +1 -1
- package/dist/forms/field.js +10 -5
- package/dist/forms/form-layout.d.ts +142 -0
- package/dist/forms/form-layout.d.ts.map +1 -0
- package/dist/forms/form-layout.js +110 -0
- package/dist/forms/form-layout.module.css +145 -0
- package/dist/forms/form-layout.module.css.d.ts +20 -0
- package/dist/forms/form-state.d.ts +42 -0
- package/dist/forms/form-state.d.ts.map +1 -0
- package/dist/forms/form-state.js +26 -0
- package/dist/forms/index.d.ts +22 -6
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +19 -3
- package/dist/forms/use-field-array.d.ts +60 -0
- package/dist/forms/use-field-array.d.ts.map +1 -0
- package/dist/forms/use-field-array.js +20 -0
- package/dist/forms/use-form-draft.d.ts +25 -10
- package/dist/forms/use-form-draft.d.ts.map +1 -1
- package/dist/forms/use-form-draft.js +55 -18
- package/dist/forms/use-form-submit.d.ts +88 -0
- package/dist/forms/use-form-submit.d.ts.map +1 -0
- package/dist/forms/use-form-submit.js +63 -0
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +26 -6
- package/dist/index.d.ts +10 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -4
- package/dist/nav/types.d.ts +15 -6
- package/dist/nav/types.d.ts.map +1 -1
- package/dist/notifications/bell.d.ts +3 -2
- package/dist/notifications/bell.d.ts.map +1 -1
- package/dist/notifications/bell.js +73 -56
- package/dist/notifications/center.d.ts +15 -4
- package/dist/notifications/center.d.ts.map +1 -1
- package/dist/notifications/center.js +5 -2
- package/dist/notifications/define-notifications.d.ts +56 -14
- package/dist/notifications/define-notifications.d.ts.map +1 -1
- package/dist/notifications/define-notifications.js +2 -1
- package/dist/notifications/index.d.ts +6 -2
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +5 -1
- package/dist/notifications/mount-guard.d.ts +8 -0
- package/dist/notifications/mount-guard.d.ts.map +1 -0
- package/dist/notifications/mount-guard.js +19 -0
- package/dist/notifications/notify.d.ts +58 -1
- package/dist/notifications/notify.d.ts.map +1 -1
- package/dist/notifications/notify.js +46 -2
- package/dist/notifications/overlay.d.ts.map +1 -1
- package/dist/notifications/overlay.js +2 -0
- package/dist/notifications/store.d.ts +7 -0
- package/dist/notifications/store.d.ts.map +1 -1
- package/dist/provider/index.d.ts +37 -5
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +66 -28
- package/dist/provider/lab-theme.d.ts.map +1 -1
- package/dist/provider/lab-theme.js +2 -1
- package/dist/query/devtools.d.ts.map +1 -1
- package/dist/query/devtools.js +1 -0
- package/dist/router-tanstack/field.d.ts +1 -1
- package/dist/router-tanstack/field.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.d.ts.map +1 -1
- package/dist/router-tanstack/search-store.js +1 -1
- package/dist/router-tanstack/use-nav.d.ts.map +1 -1
- package/dist/router-tanstack/use-nav.js +1 -1
- package/dist/section/index.d.ts +1 -1
- package/dist/section/index.d.ts.map +1 -1
- package/dist/section/section.d.ts +36 -2
- package/dist/section/section.d.ts.map +1 -1
- package/dist/section/section.js +49 -57
- package/dist/section/section.module.css +11 -0
- package/dist/shell/account-types.d.ts +5 -2
- package/dist/shell/account-types.d.ts.map +1 -1
- package/dist/shell/app-brand.d.ts +13 -0
- package/dist/shell/app-brand.d.ts.map +1 -0
- package/dist/shell/app-brand.js +94 -0
- package/dist/shell/app-brand.module.css +109 -0
- package/dist/shell/app-brand.module.css.d.ts +14 -0
- package/dist/shell/app-breadcrumbs.d.ts +4 -2
- package/dist/shell/app-breadcrumbs.d.ts.map +1 -1
- package/dist/shell/app-breadcrumbs.js +33 -22
- package/dist/shell/app-header.module.css +10 -5
- package/dist/shell/app-main.module.css +107 -0
- package/dist/shell/app-main.module.css.d.ts +11 -0
- package/dist/shell/app-mobile-nav.d.ts +3 -2
- package/dist/shell/app-mobile-nav.d.ts.map +1 -1
- package/dist/shell/app-mobile-nav.js +29 -15
- package/dist/shell/app-mobile-nav.module.css +48 -27
- package/dist/shell/app-mobile-nav.module.css.d.ts +0 -1
- package/dist/shell/app-sidebar-account.d.ts +2 -1
- package/dist/shell/app-sidebar-account.d.ts.map +1 -1
- package/dist/shell/app-sidebar-account.js +57 -22
- package/dist/shell/app-sidebar.d.ts +9 -3
- package/dist/shell/app-sidebar.d.ts.map +1 -1
- package/dist/shell/app-sidebar.js +55 -109
- package/dist/shell/app-sidebar.module.css +53 -96
- package/dist/shell/app-sidebar.module.css.d.ts +0 -5
- package/dist/shell/index.d.ts +14 -6
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +47 -12
- package/dist/shell/isomorphic-layout-effect.d.ts +14 -0
- package/dist/shell/isomorphic-layout-effect.d.ts.map +1 -0
- package/dist/shell/isomorphic-layout-effect.js +5 -0
- package/dist/shell/mobile-nav-model.d.ts.map +1 -1
- package/dist/shell/mobile-nav-model.js +27 -6
- package/dist/shell/nav-count-badge.d.ts +5 -3
- package/dist/shell/nav-count-badge.d.ts.map +1 -1
- package/dist/shell/nav-count-badge.js +3 -1
- package/dist/shell/page-aside.d.ts +43 -0
- package/dist/shell/page-aside.d.ts.map +1 -0
- package/dist/shell/page-aside.js +202 -0
- package/dist/shell/page-aside.module.css +174 -0
- package/dist/shell/page-aside.module.css.d.ts +14 -0
- package/dist/shell/page-bar.d.ts +55 -15
- package/dist/shell/page-bar.d.ts.map +1 -1
- package/dist/shell/page-bar.js +130 -41
- package/dist/shell/page-bar.module.css +107 -13
- package/dist/shell/page-bar.module.css.d.ts +4 -1
- package/dist/shell/sidebar-search.d.ts +4 -2
- package/dist/shell/sidebar-search.d.ts.map +1 -1
- package/dist/shell/sidebar-search.js +9 -4
- package/dist/shell/sidebar-search.module.css +1 -1
- package/dist/state/fields.d.ts +23 -3
- package/dist/state/fields.d.ts.map +1 -1
- package/dist/state/fields.js +13 -2
- package/dist/state/persisted-or-local.d.ts +9 -0
- package/dist/state/persisted-or-local.d.ts.map +1 -0
- package/dist/state/persisted-or-local.js +24 -0
- package/dist/state.d.ts +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +2 -6
- package/dist/surfaces.d.ts +12 -11
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +42 -12
- package/dist/theme/ctl-theme.d.ts.map +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +102 -17
- package/dist/theme/nav-link.module.css +37 -26
- package/dist/theme/segmented-control.module.css +22 -0
- package/dist/theme/segmented-control.module.css.d.ts +1 -0
- package/dist/theme-lab/boot.d.ts +66 -0
- package/dist/theme-lab/boot.d.ts.map +1 -0
- package/dist/theme-lab/boot.js +82 -0
- package/dist/theme-lab/index.d.ts +4 -43
- package/dist/theme-lab/index.d.ts.map +1 -1
- package/dist/theme-lab/index.js +9 -69
- package/dist/theme-toggle/index.d.ts +3 -2
- package/dist/theme-toggle/index.d.ts.map +1 -1
- package/dist/theme-toggle/index.js +8 -2
- package/dist/tokens/index.d.ts +42 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +35 -6
- package/dist/tokens/palette.d.ts +45 -25
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +31 -14
- package/dist/tokens.css +4 -5
- package/dist/utils/is-dev.d.ts +3 -0
- package/dist/utils/is-dev.d.ts.map +1 -0
- package/dist/utils/is-dev.js +6 -0
- package/dist/widget-header/delta-badge.d.ts +7 -1
- package/dist/widget-header/delta-badge.d.ts.map +1 -1
- package/dist/widget-header/delta-badge.js +8 -1
- package/dist/widget-header/index.d.ts +2 -2
- package/dist/widget-header/index.d.ts.map +1 -1
- package/dist/widget-header/index.js +3 -1
- package/dist/widget-header/widget-header.d.ts +69 -4
- package/dist/widget-header/widget-header.d.ts.map +1 -1
- package/dist/widget-header/widget-header.js +42 -27
- package/dist/widget-header/widget-header.module.css +72 -7
- package/llms.txt +6 -6
- package/package.json +49 -25
- package/src/agent/coalesce.ts +2 -1
- package/src/agent/merge.ts +2 -1
- package/src/agent/part-list.tsx +2 -0
- package/src/agent/stick-to-bottom.tsx +9 -11
- package/src/agent-chat/composer.tsx +124 -103
- package/src/agent-chat/relative-time.ts +2 -1
- package/src/agent-chat/thread-detail-panel.tsx +9 -5
- package/src/agent-chat/thread-feed-row.tsx +17 -9
- package/src/agent-chat/thread-feed.tsx +9 -3
- package/src/agent-chat/thread-message.tsx +48 -13
- package/src/agent-chat/thread-outcome-card.tsx +9 -1
- package/src/agent-chat/thread-workspace.tsx +72 -33
- package/src/agent-chat/tool-chip.tsx +8 -2
- package/src/charts/hooks/useBandPlot.ts +26 -8
- package/src/charts/index.ts +39 -4
- package/src/charts/kinds/BandStrip.tsx +36 -14
- package/src/charts/kinds/Bars.tsx +67 -16
- package/src/charts/kinds/Donut.tsx +30 -3
- package/src/charts/kinds/DualPanel.tsx +56 -10
- package/src/charts/kinds/Heatmap.tsx +90 -33
- package/src/charts/kinds/MirroredBars.tsx +21 -3
- package/src/charts/kinds/MultiLine.tsx +61 -18
- package/src/charts/kinds/StackedArea.tsx +77 -6
- package/src/charts/kinds/ZonedLine.tsx +71 -31
- package/src/charts/layout/auto-margin.ts +134 -21
- package/src/charts/layout/log-ticks.ts +90 -0
- package/src/charts/primitives/Axes.tsx +33 -5
- package/src/charts/primitives/CartesianChart.tsx +194 -41
- package/src/charts/primitives/ChartCard.tsx +66 -25
- package/src/charts/primitives/ChartFrame.tsx +107 -26
- package/src/charts/primitives/ChartLegend.tsx +43 -13
- package/src/charts/primitives/ChartPending.tsx +185 -7
- package/src/charts/primitives/ChartTooltip.tsx +37 -5
- package/src/charts/primitives/Crosshair.tsx +6 -3
- package/src/charts/primitives/chart-frame-layout.ts +212 -0
- package/src/charts/primitives/chart-tier.tsx +37 -0
- package/src/charts/series.ts +77 -1
- package/src/charts/sparklines/BarSparkline.tsx +11 -3
- package/src/charts/sparklines/LineSparkline.tsx +18 -4
- package/src/charts/sparklines/index.ts +2 -2
- package/src/charts/utils/format.ts +163 -2
- package/src/charts/utils/ticks.ts +149 -4
- package/src/cli/index.ts +8 -3
- package/src/commands/ShortcutsHelp.tsx +10 -3
- package/src/commands/define-commands.ts +2 -2
- package/src/commands/define-overlays.ts +216 -1
- package/src/commands/index.ts +12 -0
- package/src/commands/overlays-mount.tsx +60 -26
- package/src/common/errors.ts +73 -0
- package/src/common/index.ts +21 -0
- package/src/common/props.ts +71 -0
- package/src/common/query-state-like.ts +64 -0
- package/src/common/refs.ts +58 -0
- package/src/common/scroll-parent.ts +42 -0
- package/src/common/validate.ts +94 -0
- package/src/connectivity/connectivity-indicator.tsx +6 -1
- package/src/connectivity/connectivity-provider.tsx +4 -1
- package/src/connectivity/index.ts +1 -0
- package/src/connectivity/types.ts +5 -2
- package/src/connectivity/use-connectivity.ts +3 -2
- package/src/content/article-layout.module.css +11 -4
- package/src/content/callout.tsx +13 -7
- package/src/content/guide.tsx +14 -4
- package/src/content/heading-anchor.tsx +14 -3
- package/src/content/index.ts +2 -0
- package/src/content/markdown.tsx +2 -0
- package/src/content/prose.module.css +9 -7
- package/src/content/reading-progress.tsx +40 -15
- package/src/content/slug.ts +4 -0
- package/src/content/toc.tsx +47 -10
- package/src/controls/actions.tsx +89 -9
- package/src/controls/compare-filter.tsx +20 -3
- package/src/controls/control-group.tsx +11 -4
- package/src/controls/controls.module.css +169 -186
- package/src/controls/controls.module.css.d.ts +9 -11
- package/src/controls/enum-filter.tsx +32 -16
- package/src/controls/filter-context.tsx +14 -6
- package/src/controls/filter-pill.tsx +6 -3
- package/src/controls/filter-set.tsx +32 -13
- package/src/controls/filter-sheet.tsx +44 -194
- package/src/controls/index.ts +7 -0
- package/src/controls/multi-select-filter.tsx +177 -27
- package/src/controls/number-filter.tsx +61 -23
- package/src/controls/panel-row.module.css +86 -0
- package/src/controls/panel-row.module.css.d.ts +13 -0
- package/src/controls/panel-row.tsx +392 -0
- package/src/controls/range-filter.tsx +76 -39
- package/src/controls/search-filter.tsx +30 -12
- package/src/controls/select-filter.tsx +11 -1
- package/src/controls/slider-control.tsx +159 -0
- package/src/controls/sync-button.tsx +13 -3
- package/src/controls/toggle-filter.tsx +36 -16
- package/src/controls/view-tabs.tsx +63 -11
- package/src/controls-dates/date-range-picker.tsx +8 -1
- package/src/dashboard/delta-badge.tsx +5 -1
- package/src/dashboard/empty-state.tsx +72 -25
- package/src/dashboard/index.ts +13 -1
- package/src/dashboard/query-state.tsx +154 -84
- package/src/dashboard/settings-section.tsx +87 -31
- package/src/dashboard/stat-card.module.css +46 -31
- package/src/dashboard/stat-card.module.css.d.ts +1 -0
- package/src/dashboard/stat-card.tsx +185 -127
- package/src/dashboard/stat-group.module.css +66 -0
- package/src/dashboard/stat-group.module.css.d.ts +8 -0
- package/src/dashboard/stat-group.tsx +74 -0
- package/src/dashboard/widget-grid.module.css +53 -0
- package/src/dashboard/widget-grid.module.css.d.ts +9 -0
- package/src/dashboard/widget-grid.tsx +127 -0
- package/src/data/data-table.module.css +64 -0
- package/src/data/data-table.module.css.d.ts +11 -0
- package/src/data/data-table.tsx +919 -346
- package/src/data/index.ts +30 -2
- package/src/data/query-branch.ts +53 -0
- package/src/data/table.ts +5 -0
- package/src/data/virtual-list.tsx +189 -55
- package/src/data/virtual.ts +5 -1
- package/src/forms/FormErrorSummary.tsx +13 -6
- package/src/forms/create-form.ts +2 -2
- package/src/forms/field.ts +60 -11
- package/src/forms/form-layout.module.css +145 -0
- package/src/forms/form-layout.module.css.d.ts +20 -0
- package/src/forms/form-layout.tsx +305 -0
- package/src/forms/form-state.tsx +94 -0
- package/src/forms/index.ts +38 -7
- package/src/forms/use-field-array.ts +94 -0
- package/src/forms/use-form-draft.ts +145 -53
- package/src/forms/use-form-submit.ts +199 -0
- package/src/guard/index.ts +73 -18
- package/src/index.ts +74 -10
- package/src/nav/types.ts +15 -6
- package/src/notifications/bell.tsx +18 -4
- package/src/notifications/center.tsx +18 -5
- package/src/notifications/define-notifications.ts +64 -18
- package/src/notifications/index.ts +12 -1
- package/src/notifications/mount-guard.ts +41 -0
- package/src/notifications/notify.tsx +122 -3
- package/src/notifications/overlay.tsx +2 -0
- package/src/notifications/store.ts +7 -0
- package/src/provider/index.tsx +101 -13
- package/src/provider/lab-theme.ts +2 -1
- package/src/query/devtools.tsx +1 -0
- package/src/router-tanstack/field.ts +1 -0
- package/src/router-tanstack/search-store.ts +3 -10
- package/src/router-tanstack/use-nav.ts +18 -13
- package/src/section/index.ts +1 -1
- package/src/section/section.module.css +11 -0
- package/src/section/section.tsx +163 -96
- package/src/shell/account-types.ts +5 -2
- package/src/shell/app-brand.module.css +109 -0
- package/src/shell/app-brand.module.css.d.ts +14 -0
- package/src/shell/app-brand.tsx +140 -0
- package/src/shell/app-breadcrumbs.tsx +19 -9
- package/src/shell/app-header.module.css +10 -5
- package/src/shell/app-main.module.css +107 -0
- package/src/shell/app-main.module.css.d.ts +11 -0
- package/src/shell/app-mobile-nav.module.css +48 -27
- package/src/shell/app-mobile-nav.module.css.d.ts +0 -1
- package/src/shell/app-mobile-nav.tsx +43 -11
- package/src/shell/app-sidebar-account.tsx +29 -6
- package/src/shell/app-sidebar.module.css +53 -96
- package/src/shell/app-sidebar.module.css.d.ts +0 -5
- package/src/shell/app-sidebar.tsx +40 -113
- package/src/shell/index.tsx +156 -65
- package/src/shell/isomorphic-layout-effect.ts +14 -0
- package/src/shell/mobile-nav-model.ts +66 -10
- package/src/shell/nav-count-badge.tsx +6 -1
- package/src/shell/page-aside.module.css +174 -0
- package/src/shell/page-aside.module.css.d.ts +14 -0
- package/src/shell/page-aside.tsx +377 -0
- package/src/shell/page-bar.module.css +107 -13
- package/src/shell/page-bar.module.css.d.ts +4 -1
- package/src/shell/page-bar.tsx +294 -94
- package/src/shell/sidebar-search.module.css +1 -1
- package/src/shell/sidebar-search.tsx +13 -4
- package/src/state/fields.ts +43 -10
- package/src/state/persisted-or-local.ts +50 -0
- package/src/state.ts +0 -9
- package/src/surfaces.ts +42 -12
- package/src/theme/ctl-theme.tsx +10 -0
- package/src/theme/index.ts +129 -16
- package/src/theme/nav-link.module.css +37 -26
- package/src/theme/segmented-control.module.css +22 -0
- package/src/theme/segmented-control.module.css.d.ts +1 -0
- package/src/theme-lab/boot.ts +140 -0
- package/src/theme-lab/index.tsx +21 -112
- package/src/theme-toggle/index.tsx +10 -3
- package/src/tokens/index.ts +50 -6
- package/src/tokens/palette.ts +58 -30
- package/src/utils/is-dev.ts +4 -0
- package/src/widget-header/delta-badge.tsx +25 -5
- package/src/widget-header/index.ts +10 -2
- package/src/widget-header/widget-header.module.css +72 -7
- package/src/widget-header/widget-header.tsx +150 -71
- package/dist/agent/adapter.test.d.ts +0 -2
- package/dist/agent/adapter.test.d.ts.map +0 -1
- package/dist/agent/ai-sdk-transport.test.d.ts +0 -2
- package/dist/agent/ai-sdk-transport.test.d.ts.map +0 -1
- package/dist/agent/coalesce.test.d.ts +0 -2
- package/dist/agent/coalesce.test.d.ts.map +0 -1
- package/dist/agent/foreign.test.d.ts +0 -2
- package/dist/agent/foreign.test.d.ts.map +0 -1
- package/dist/agent/id.test.d.ts +0 -2
- package/dist/agent/id.test.d.ts.map +0 -1
- package/dist/agent/merge.test.d.ts +0 -2
- package/dist/agent/merge.test.d.ts.map +0 -1
- package/dist/agent/part-list.test.d.ts +0 -2
- package/dist/agent/part-list.test.d.ts.map +0 -1
- package/dist/agent/parts.test.d.ts +0 -2
- package/dist/agent/parts.test.d.ts.map +0 -1
- package/dist/agent/thread.test.d.ts +0 -2
- package/dist/agent/thread.test.d.ts.map +0 -1
- package/dist/agent/transport.test.d.ts +0 -2
- package/dist/agent/transport.test.d.ts.map +0 -1
- package/dist/agent/use-agent-stream.test.d.ts +0 -2
- package/dist/agent/use-agent-stream.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.foreign.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.foreign.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.resume.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.resume.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.test.d.ts.map +0 -1
- package/dist/agent/use-agent-thread-runs.wedge.test.d.ts +0 -2
- package/dist/agent/use-agent-thread-runs.wedge.test.d.ts.map +0 -1
- package/dist/agent-chat/composer.test.d.ts +0 -2
- package/dist/agent-chat/composer.test.d.ts.map +0 -1
- package/dist/agent-chat/relative-time.test.d.ts +0 -2
- package/dist/agent-chat/relative-time.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed-row.test.d.ts +0 -2
- package/dist/agent-chat/thread-feed-row.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-feed.test.d.ts +0 -2
- package/dist/agent-chat/thread-feed.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-message.test.d.ts +0 -2
- package/dist/agent-chat/thread-message.test.d.ts.map +0 -1
- package/dist/agent-chat/thread-workspace.test.d.ts +0 -2
- package/dist/agent-chat/thread-workspace.test.d.ts.map +0 -1
- package/dist/agent-chat/tool-chip.test.d.ts +0 -2
- package/dist/agent-chat/tool-chip.test.d.ts.map +0 -1
- package/dist/agent-chat/virtualize.type-guard.test.d.ts +0 -2
- package/dist/agent-chat/virtualize.type-guard.test.d.ts.map +0 -1
- package/dist/charts/cursor/resolve.test.d.ts +0 -2
- package/dist/charts/cursor/resolve.test.d.ts.map +0 -1
- package/dist/charts/cursor/store.test.d.ts +0 -2
- package/dist/charts/cursor/store.test.d.ts.map +0 -1
- package/dist/charts/kinds/BandStrip.test.d.ts +0 -2
- package/dist/charts/kinds/BandStrip.test.d.ts.map +0 -1
- package/dist/charts/kinds/Bars.test.d.ts +0 -2
- package/dist/charts/kinds/Bars.test.d.ts.map +0 -1
- package/dist/charts/kinds/DualPanel.test.d.ts +0 -2
- package/dist/charts/kinds/DualPanel.test.d.ts.map +0 -1
- package/dist/charts/kinds/MirroredBars.test.d.ts +0 -2
- package/dist/charts/kinds/MirroredBars.test.d.ts.map +0 -1
- package/dist/charts/kinds/MultiLine.test.d.ts +0 -2
- package/dist/charts/kinds/MultiLine.test.d.ts.map +0 -1
- package/dist/charts/kinds/StackedArea.test.d.ts +0 -2
- package/dist/charts/kinds/StackedArea.test.d.ts.map +0 -1
- package/dist/charts/kinds/ZonedLine.test.d.ts +0 -2
- package/dist/charts/kinds/ZonedLine.test.d.ts.map +0 -1
- package/dist/charts/layout/auto-margin.test.d.ts +0 -2
- package/dist/charts/layout/auto-margin.test.d.ts.map +0 -1
- package/dist/charts/primitives/CartesianChart.test.d.ts +0 -2
- package/dist/charts/primitives/CartesianChart.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartCard.test.d.ts +0 -2
- package/dist/charts/primitives/ChartCard.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartFrame.test.d.ts +0 -2
- package/dist/charts/primitives/ChartFrame.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartLegend.test.d.ts +0 -2
- package/dist/charts/primitives/ChartLegend.test.d.ts.map +0 -1
- package/dist/charts/primitives/ChartTooltip.test.d.ts +0 -2
- package/dist/charts/primitives/ChartTooltip.test.d.ts.map +0 -1
- package/dist/charts/primitives/XZoneRects.test.d.ts +0 -2
- package/dist/charts/primitives/XZoneRects.test.d.ts.map +0 -1
- package/dist/charts/series.test.d.ts +0 -2
- package/dist/charts/series.test.d.ts.map +0 -1
- package/dist/charts/utils/domain.test.d.ts +0 -2
- package/dist/charts/utils/domain.test.d.ts.map +0 -1
- package/dist/charts/utils/measure-text.test.d.ts +0 -2
- package/dist/charts/utils/measure-text.test.d.ts.map +0 -1
- package/dist/cli/check-coverage.test.d.ts +0 -2
- package/dist/cli/check-coverage.test.d.ts.map +0 -1
- package/dist/cli/check-theme.test.d.ts +0 -2
- package/dist/cli/check-theme.test.d.ts.map +0 -1
- package/dist/cli/help.test.d.ts +0 -2
- package/dist/cli/help.test.d.ts.map +0 -1
- package/dist/cli/init-sync.test.d.ts +0 -2
- package/dist/cli/init-sync.test.d.ts.map +0 -1
- package/dist/cli/placement-engine.test.d.ts +0 -2
- package/dist/cli/placement-engine.test.d.ts.map +0 -1
- package/dist/cli/shipped-versions.test.d.ts +0 -2
- package/dist/cli/shipped-versions.test.d.ts.map +0 -1
- package/dist/cli/tarball-parity.test.d.ts +0 -2
- package/dist/cli/tarball-parity.test.d.ts.map +0 -1
- package/dist/cli/template-format.test.d.ts +0 -2
- package/dist/cli/template-format.test.d.ts.map +0 -1
- package/dist/cli/template-ledger.test.d.ts +0 -2
- package/dist/cli/template-ledger.test.d.ts.map +0 -1
- package/dist/cli/tokens-css.test.d.ts +0 -2
- package/dist/cli/tokens-css.test.d.ts.map +0 -1
- package/dist/cli/toolchain-wiring.test.d.ts +0 -2
- package/dist/cli/toolchain-wiring.test.d.ts.map +0 -1
- package/dist/cli/waiver-audit.test.d.ts +0 -2
- package/dist/cli/waiver-audit.test.d.ts.map +0 -1
- package/dist/content/article-actions.test.d.ts +0 -2
- package/dist/content/article-actions.test.d.ts.map +0 -1
- package/dist/content/article-model.test.d.ts +0 -2
- package/dist/content/article-model.test.d.ts.map +0 -1
- package/dist/content/block-split.test.d.ts +0 -2
- package/dist/content/block-split.test.d.ts.map +0 -1
- package/dist/content/heading-components.test.d.ts +0 -2
- package/dist/content/heading-components.test.d.ts.map +0 -1
- package/dist/content/markdown.test.d.ts +0 -2
- package/dist/content/markdown.test.d.ts.map +0 -1
- package/dist/content/prose.module.css.test.d.ts +0 -2
- package/dist/content/prose.module.css.test.d.ts.map +0 -1
- package/dist/content/sanitize.test.d.ts +0 -2
- package/dist/content/sanitize.test.d.ts.map +0 -1
- package/dist/content/slug.test.d.ts +0 -2
- package/dist/content/slug.test.d.ts.map +0 -1
- package/dist/controls/actions.test.d.ts +0 -2
- package/dist/controls/actions.test.d.ts.map +0 -1
- package/dist/controls/actions.type-guard.test.d.ts +0 -2
- package/dist/controls/actions.type-guard.test.d.ts.map +0 -1
- package/dist/controls/control-group.test.d.ts +0 -2
- package/dist/controls/control-group.test.d.ts.map +0 -1
- package/dist/controls/controls.router.test.d.ts +0 -2
- package/dist/controls/controls.router.test.d.ts.map +0 -1
- package/dist/controls/filter-set.test.d.ts +0 -2
- package/dist/controls/filter-set.test.d.ts.map +0 -1
- package/dist/controls/peer-boundary.test.d.ts +0 -2
- package/dist/controls/peer-boundary.test.d.ts.map +0 -1
- package/dist/controls/props-contract.test.d.ts +0 -2
- package/dist/controls/props-contract.test.d.ts.map +0 -1
- package/dist/controls/range-filter.type-guard.test.d.ts +0 -2
- package/dist/controls/range-filter.type-guard.test.d.ts.map +0 -1
- package/dist/controls/sync-button.test.d.ts +0 -2
- package/dist/controls/sync-button.test.d.ts.map +0 -1
- package/dist/dashboard/query-state.test.d.ts +0 -2
- package/dist/dashboard/query-state.test.d.ts.map +0 -1
- package/dist/dashboard/settings-section.test.d.ts +0 -2
- package/dist/dashboard/settings-section.test.d.ts.map +0 -1
- package/dist/dashboard/stat-card.test.d.ts +0 -2
- package/dist/dashboard/stat-card.test.d.ts.map +0 -1
- package/dist/data/data-table.test.d.ts +0 -2
- package/dist/data/data-table.test.d.ts.map +0 -1
- package/dist/guard/check-source.test.d.ts +0 -2
- package/dist/guard/check-source.test.d.ts.map +0 -1
- package/dist/guard/grace.test.d.ts +0 -20
- package/dist/guard/grace.test.d.ts.map +0 -1
- package/dist/guard/guard-hook.test.d.ts +0 -2
- package/dist/guard/guard-hook.test.d.ts.map +0 -1
- package/dist/provider/index.test.d.ts +0 -2
- package/dist/provider/index.test.d.ts.map +0 -1
- package/dist/provider/lab-theme.test.d.ts +0 -2
- package/dist/provider/lab-theme.test.d.ts.map +0 -1
- package/dist/query/error-message.test.d.ts +0 -2
- package/dist/query/error-message.test.d.ts.map +0 -1
- package/dist/router-tanstack/multi-search-param-store.test.d.ts +0 -2
- package/dist/router-tanstack/multi-search-param-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/nav.test.d.ts +0 -2
- package/dist/router-tanstack/nav.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-param-store.test.d.ts +0 -2
- package/dist/router-tanstack/search-param-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-store.router.test.d.ts +0 -2
- package/dist/router-tanstack/search-store.router.test.d.ts.map +0 -1
- package/dist/router-tanstack/search-store.test.d.ts +0 -2
- package/dist/router-tanstack/search-store.test.d.ts.map +0 -1
- package/dist/router-tanstack/use-nav.test.d.ts +0 -2
- package/dist/router-tanstack/use-nav.test.d.ts.map +0 -1
- package/dist/section/section.test.d.ts +0 -2
- package/dist/section/section.test.d.ts.map +0 -1
- package/dist/shell/app-mobile-nav.test.d.ts +0 -2
- package/dist/shell/app-mobile-nav.test.d.ts.map +0 -1
- package/dist/shell/app-sidebar.test.d.ts +0 -2
- package/dist/shell/app-sidebar.test.d.ts.map +0 -1
- package/dist/shell/index.test.d.ts +0 -2
- package/dist/shell/index.test.d.ts.map +0 -1
- package/dist/shell/mobile-nav-model.test.d.ts +0 -2
- package/dist/shell/mobile-nav-model.test.d.ts.map +0 -1
- package/dist/shell/page-bar.test.d.ts +0 -2
- package/dist/shell/page-bar.test.d.ts.map +0 -1
- package/dist/state/fields.test.d.ts +0 -2
- package/dist/state/fields.test.d.ts.map +0 -1
- package/dist/state/persisted.test.d.ts +0 -2
- package/dist/state/persisted.test.d.ts.map +0 -1
- package/dist/styles.floor.test.d.ts +0 -2
- package/dist/styles.floor.test.d.ts.map +0 -1
- package/dist/theme/border-coverage.test.d.ts +0 -18
- package/dist/theme/border-coverage.test.d.ts.map +0 -1
- package/dist/theme/contrast.test.d.ts +0 -2
- package/dist/theme/contrast.test.d.ts.map +0 -1
- package/dist/theme/ctl-theme.test.d.ts +0 -2
- package/dist/theme/ctl-theme.test.d.ts.map +0 -1
- package/dist/theme/ctl-tier-coverage.test.d.ts +0 -2
- package/dist/theme/ctl-tier-coverage.test.d.ts.map +0 -1
- package/dist/theme/density-option.test.d.ts +0 -2
- package/dist/theme/density-option.test.d.ts.map +0 -1
- package/dist/theme/density-relations.test.d.ts +0 -2
- package/dist/theme/density-relations.test.d.ts.map +0 -1
- package/dist/theme/derive-theme.test.d.ts +0 -2
- package/dist/theme/derive-theme.test.d.ts.map +0 -1
- package/dist/theme/divider-law.test.d.ts +0 -2
- package/dist/theme/divider-law.test.d.ts.map +0 -1
- package/dist/theme/fonts-option.test.d.ts +0 -2
- package/dist/theme/fonts-option.test.d.ts.map +0 -1
- package/dist/theme/icon-slot.test.d.ts +0 -2
- package/dist/theme/icon-slot.test.d.ts.map +0 -1
- package/dist/theme/layout-rhythm-css.test.d.ts +0 -2
- package/dist/theme/layout-rhythm-css.test.d.ts.map +0 -1
- package/dist/theme/radius-option.test.d.ts +0 -2
- package/dist/theme/radius-option.test.d.ts.map +0 -1
- package/dist/theme/radius.test.d.ts +0 -2
- package/dist/theme/radius.test.d.ts.map +0 -1
- package/dist/theme/shadow-surfaces.test.d.ts +0 -26
- package/dist/theme/shadow-surfaces.test.d.ts.map +0 -1
- package/dist/theme/spacing.test.d.ts +0 -2
- package/dist/theme/spacing.test.d.ts.map +0 -1
- package/dist/theme/use-basalt-spacing.test.d.ts +0 -2
- package/dist/theme/use-basalt-spacing.test.d.ts.map +0 -1
- package/dist/theme-lab/derive-controls.test.d.ts +0 -2
- package/dist/theme-lab/derive-controls.test.d.ts.map +0 -1
- package/dist/theme-lab/derive-state.test.d.ts +0 -2
- package/dist/theme-lab/derive-state.test.d.ts.map +0 -1
- package/dist/theme-lab/theme-lab.test.d.ts +0 -2
- package/dist/theme-lab/theme-lab.test.d.ts.map +0 -1
- package/dist/tokens/build-fonts-css.test.d.ts +0 -2
- package/dist/tokens/build-fonts-css.test.d.ts.map +0 -1
- package/dist/tokens/build-radius-css.test.d.ts +0 -2
- package/dist/tokens/build-radius-css.test.d.ts.map +0 -1
- package/dist/tokens/chart-margin.test.d.ts +0 -2
- package/dist/tokens/chart-margin.test.d.ts.map +0 -1
- package/dist/tokens/density.test.d.ts +0 -2
- package/dist/tokens/density.test.d.ts.map +0 -1
- package/dist/tokens/derive-radius.test.d.ts +0 -2
- package/dist/tokens/derive-radius.test.d.ts.map +0 -1
- package/dist/tokens/derive.test.d.ts +0 -2
- package/dist/tokens/derive.test.d.ts.map +0 -1
- package/dist/tokens/palette.test.d.ts +0 -2
- package/dist/tokens/palette.test.d.ts.map +0 -1
- package/dist/tokens/text-scale.test.d.ts +0 -2
- package/dist/tokens/text-scale.test.d.ts.map +0 -1
- package/dist/vite-color-mix.test.d.ts +0 -2
- package/dist/vite-color-mix.test.d.ts.map +0 -1
- package/dist/vite.test.d.ts +0 -2
- package/dist/vite.test.d.ts.map +0 -1
- package/dist/widget-header/delta-badge.test.d.ts +0 -2
- package/dist/widget-header/delta-badge.test.d.ts.map +0 -1
- package/dist/widget-header/no-mantine.test.d.ts +0 -2
- package/dist/widget-header/no-mantine.test.d.ts.map +0 -1
- package/dist/widget-header/widget-header.test.d.ts +0 -2
- package/dist/widget-header/widget-header.test.d.ts.map +0 -1
- package/src/agent/adapter.test.ts +0 -1640
- package/src/agent/ai-sdk-transport.test.ts +0 -658
- package/src/agent/coalesce.test.ts +0 -387
- package/src/agent/foreign.test.ts +0 -51
- package/src/agent/id.test.ts +0 -169
- package/src/agent/merge.test.ts +0 -206
- package/src/agent/part-list.test.tsx +0 -112
- package/src/agent/parts.test.ts +0 -720
- package/src/agent/thread.test.ts +0 -220
- package/src/agent/transport.test.ts +0 -70
- package/src/agent/use-agent-stream.test.tsx +0 -287
- package/src/agent/use-agent-thread-runs.foreign.test.tsx +0 -138
- package/src/agent/use-agent-thread-runs.resume.test.tsx +0 -294
- package/src/agent/use-agent-thread-runs.test.tsx +0 -1120
- package/src/agent/use-agent-thread-runs.wedge.test.tsx +0 -387
- package/src/agent-chat/composer.test.tsx +0 -924
- package/src/agent-chat/relative-time.test.ts +0 -95
- package/src/agent-chat/thread-feed-row.test.tsx +0 -510
- package/src/agent-chat/thread-feed.test.tsx +0 -241
- package/src/agent-chat/thread-message.test.tsx +0 -1285
- package/src/agent-chat/thread-workspace.test.tsx +0 -169
- package/src/agent-chat/tool-chip.test.tsx +0 -139
- package/src/agent-chat/virtualize.type-guard.test.ts +0 -49
- package/src/charts/cursor/resolve.test.ts +0 -151
- package/src/charts/cursor/store.test.ts +0 -64
- package/src/charts/kinds/BandStrip.test.tsx +0 -282
- package/src/charts/kinds/Bars.test.tsx +0 -183
- package/src/charts/kinds/DualPanel.test.tsx +0 -527
- package/src/charts/kinds/MirroredBars.test.tsx +0 -232
- package/src/charts/kinds/MultiLine.test.tsx +0 -218
- package/src/charts/kinds/StackedArea.test.tsx +0 -114
- package/src/charts/kinds/ZonedLine.test.tsx +0 -147
- package/src/charts/layout/auto-margin.test.ts +0 -42
- package/src/charts/primitives/CartesianChart.test.tsx +0 -647
- package/src/charts/primitives/ChartCard.test.tsx +0 -66
- package/src/charts/primitives/ChartFrame.test.tsx +0 -142
- package/src/charts/primitives/ChartLegend.test.tsx +0 -78
- package/src/charts/primitives/ChartTooltip.test.tsx +0 -44
- package/src/charts/primitives/XZoneRects.test.tsx +0 -123
- package/src/charts/series.test.ts +0 -112
- package/src/charts/utils/domain.test.ts +0 -54
- package/src/charts/utils/measure-text.test.ts +0 -36
- package/src/cli/check-coverage.test.ts +0 -297
- package/src/cli/check-theme.test.ts +0 -837
- package/src/cli/help.test.ts +0 -170
- package/src/cli/init-sync.test.ts +0 -343
- package/src/cli/placement-engine.test.ts +0 -298
- package/src/cli/shipped-versions.test.ts +0 -83
- package/src/cli/tarball-parity.test.ts +0 -44
- package/src/cli/template-format.test.ts +0 -64
- package/src/cli/template-ledger.test.ts +0 -219
- package/src/cli/tokens-css.test.ts +0 -249
- package/src/cli/toolchain-wiring.test.ts +0 -1358
- package/src/cli/waiver-audit.test.ts +0 -215
- package/src/content/article-actions.test.ts +0 -78
- package/src/content/article-model.test.ts +0 -119
- package/src/content/block-split.test.ts +0 -75
- package/src/content/heading-components.test.tsx +0 -65
- package/src/content/markdown.test.tsx +0 -603
- package/src/content/prose.module.css.test.ts +0 -39
- package/src/content/sanitize.test.ts +0 -659
- package/src/content/slug.test.ts +0 -62
- package/src/controls/actions.test.tsx +0 -252
- package/src/controls/actions.type-guard.test.ts +0 -63
- package/src/controls/control-group.test.tsx +0 -229
- package/src/controls/controls.router.test.tsx +0 -1053
- package/src/controls/filter-set.test.tsx +0 -472
- package/src/controls/peer-boundary.test.ts +0 -85
- package/src/controls/props-contract.test.tsx +0 -137
- package/src/controls/range-filter.type-guard.test.tsx +0 -122
- package/src/controls/sync-button.test.tsx +0 -183
- package/src/dashboard/query-state.test.tsx +0 -152
- package/src/dashboard/settings-section.test.tsx +0 -56
- package/src/dashboard/stat-card.test.tsx +0 -385
- package/src/data/data-table.test.tsx +0 -434
- package/src/guard/check-source.test.ts +0 -3388
- package/src/guard/grace.test.ts +0 -158
- package/src/guard/guard-hook.test.ts +0 -203
- package/src/provider/index.test.tsx +0 -101
- package/src/provider/lab-theme.test.ts +0 -147
- package/src/query/error-message.test.ts +0 -67
- package/src/router-tanstack/multi-search-param-store.test.ts +0 -124
- package/src/router-tanstack/nav.test.ts +0 -111
- package/src/router-tanstack/search-param-store.test.ts +0 -135
- package/src/router-tanstack/search-store.router.test.tsx +0 -882
- package/src/router-tanstack/search-store.test.ts +0 -578
- package/src/router-tanstack/use-nav.test.tsx +0 -187
- package/src/section/section.test.tsx +0 -204
- package/src/shell/app-mobile-nav.test.tsx +0 -403
- package/src/shell/app-sidebar.test.tsx +0 -509
- package/src/shell/index.test.tsx +0 -428
- package/src/shell/mobile-nav-model.test.ts +0 -517
- package/src/shell/page-bar.test.tsx +0 -316
- package/src/state/fields.test.tsx +0 -512
- package/src/state/persisted.test.ts +0 -91
- package/src/styles.floor.test.ts +0 -36
- package/src/theme/border-coverage.test.ts +0 -272
- package/src/theme/contrast.test.ts +0 -354
- package/src/theme/ctl-theme.test.tsx +0 -275
- package/src/theme/ctl-tier-coverage.test.ts +0 -170
- package/src/theme/density-option.test.ts +0 -96
- package/src/theme/density-relations.test.ts +0 -506
- package/src/theme/derive-theme.test.ts +0 -101
- package/src/theme/divider-law.test.ts +0 -259
- package/src/theme/fonts-option.test.ts +0 -75
- package/src/theme/icon-slot.test.tsx +0 -275
- package/src/theme/layout-rhythm-css.test.ts +0 -72
- package/src/theme/radius-option.test.ts +0 -86
- package/src/theme/radius.test.ts +0 -142
- package/src/theme/shadow-surfaces.test.ts +0 -488
- package/src/theme/spacing.test.ts +0 -495
- package/src/theme/use-basalt-spacing.test.tsx +0 -55
- package/src/theme-lab/derive-controls.test.ts +0 -94
- package/src/theme-lab/derive-state.test.ts +0 -71
- package/src/theme-lab/theme-lab.test.ts +0 -46
- package/src/tokens/build-fonts-css.test.ts +0 -52
- package/src/tokens/build-radius-css.test.ts +0 -25
- package/src/tokens/chart-margin.test.ts +0 -39
- package/src/tokens/density.test.ts +0 -259
- package/src/tokens/derive-radius.test.ts +0 -62
- package/src/tokens/derive.test.ts +0 -30
- package/src/tokens/palette.test.ts +0 -114
- package/src/tokens/text-scale.test.ts +0 -51
- package/src/vite-color-mix.test.ts +0 -46
- package/src/vite.test.ts +0 -423
- package/src/widget-header/delta-badge.test.tsx +0 -60
- package/src/widget-header/no-mantine.test.ts +0 -33
- package/src/widget-header/widget-header.test.tsx +0 -187
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Crosshair.d.ts","sourceRoot":"","sources":["../../../src/charts/primitives/Crosshair.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Crosshair.d.ts","sourceRoot":"","sources":["../../../src/charts/primitives/Crosshair.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,CAAC,EACD,GAAG,EACH,MAAM,GACP,EAAE;IACD,CAAC,EAAE,MAAM,CAAA;IACT,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,SAAS,CAEZ;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EACxB,EAAE,EACF,EAAE,EACF,KAAK,EACL,CAAC,GACF,EAAE;IACD,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,CAAC,CAAC,EAAE,MAAM,CAAA;CACX,GAAG,SAAS,CAGZ"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { VX } from "../../tokens/index.js";
|
|
3
|
+
import { useChartTierMetrics } from "./chart-tier.js";
|
|
3
4
|
function Crosshair({
|
|
4
5
|
x,
|
|
5
6
|
top,
|
|
@@ -13,7 +14,8 @@ function SeriesDot({
|
|
|
13
14
|
color,
|
|
14
15
|
r
|
|
15
16
|
}) {
|
|
16
|
-
|
|
17
|
+
const { dotR } = useChartTierMetrics();
|
|
18
|
+
return /* @__PURE__ */ jsx("circle", { cx, cy, r: r ?? dotR, fill: color, stroke: VX.dotStroke, strokeWidth: 2 });
|
|
17
19
|
}
|
|
18
20
|
export {
|
|
19
21
|
Crosshair,
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, DOM-free layout math behind `ChartFrame`'s plot/legend split — extracted so the arithmetic
|
|
3
|
+
* is testable without a `ResizeObserver` and `ChartFrame.tsx` stays the measuring/rendering shell.
|
|
4
|
+
*/
|
|
5
|
+
import type { ChartMargin } from '../../tokens/index.js';
|
|
6
|
+
import type { LegendEntry } from './ChartLegend.js';
|
|
7
|
+
/**
|
|
8
|
+
* The two size tiers a chart resolves to. There are exactly two, and there is no `tablet`: the
|
|
9
|
+
* tier exists to answer "is there room for full-size chrome around the plot", which is a yes/no
|
|
10
|
+
* question, and a third rung would need a third calibrated metric set nothing has asked for.
|
|
11
|
+
*/
|
|
12
|
+
export type ChartTier = 'phone' | 'desktop';
|
|
13
|
+
/**
|
|
14
|
+
* The tier a chart's chrome resolves to, from the width of the box it was MEASURED in — never
|
|
15
|
+
* from a media query.
|
|
16
|
+
*
|
|
17
|
+
* A viewport breakpoint answers the wrong question. A chart in a 2-column grid cell on a 1440px
|
|
18
|
+
* desktop is exactly as narrow as one filling a phone, and `@media` cannot see that; the
|
|
19
|
+
* `ResizeObserver` `ChartFrame` already runs can. It also keeps this file (and the whole chart
|
|
20
|
+
* layer) Mantine-free — `theme.breakpoints` is on the coupled side of the boundary.
|
|
21
|
+
*
|
|
22
|
+
* An UNMEASURED box (`containerW <= 0` — SSR, or before the observer's first callback) resolves
|
|
23
|
+
* to `'desktop'`: the first frame must not paint phone chrome that then re-lays-out one frame
|
|
24
|
+
* later, and `resolvePlotRect` already treats an unmeasured width as the first-frame case.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveChartTier(containerW: number): ChartTier;
|
|
27
|
+
/** Every size a chart's chrome resolves per tier. One object so a new tier-sensitive size is added
|
|
28
|
+
* in one place and read by name, rather than each primitive branching on the tier itself. */
|
|
29
|
+
export type ChartTierMetrics = {
|
|
30
|
+
/** Which tier these are, so a consumer of the metrics never needs both values threaded. */
|
|
31
|
+
tier: ChartTier;
|
|
32
|
+
/** Axis tick label font size, px. Threaded into BOTH `autoMargin`'s measurement and the painted
|
|
33
|
+
* axis — measured labels must be the painted labels (`docs/CHARTS-SPEC.md` §1). */
|
|
34
|
+
axisFont: number;
|
|
35
|
+
/** Legend label font size, px. */
|
|
36
|
+
legendFontSize: number;
|
|
37
|
+
/** Crosshair dot radius, px. */
|
|
38
|
+
dotR: number;
|
|
39
|
+
/** Floating tooltip `minWidth`, px. */
|
|
40
|
+
tooltipMinWidth: number;
|
|
41
|
+
/** Default entry cap on the legend, or `undefined` for no default cap. An explicit
|
|
42
|
+
* `legend.maxRows` still wins as the upper bound. */
|
|
43
|
+
legendMaxRows: number | undefined;
|
|
44
|
+
/** Per-side margin FLOORS (`VX.margin` is a floor, never a ceiling — §1). */
|
|
45
|
+
margin: ChartMargin;
|
|
46
|
+
};
|
|
47
|
+
/** The resolved sizes for one tier. Frozen module constants — never a new object per render. */
|
|
48
|
+
export declare function chartTierMetrics(tier: ChartTier): ChartTierMetrics;
|
|
49
|
+
/**
|
|
50
|
+
* Resolve the plot rect from the measured box and the measured legend band. Pure and exported so
|
|
51
|
+
* the two floors below are testable without a `ResizeObserver`.
|
|
52
|
+
*
|
|
53
|
+
* Two floors, and each is only a floor while it is honest:
|
|
54
|
+
* - **width** — `minWidth` is a FIRST-FRAME guard, applied only while `containerW` is still 0
|
|
55
|
+
* (unmeasured, or SSR, where the observer never fires). Once measured the plot tracks the box
|
|
56
|
+
* exactly, floored at 1 so no scale divides by zero: applying a 200px floor forever drew an SVG
|
|
57
|
+
* wider than its own container inside any narrower grid cell.
|
|
58
|
+
* - **height** — the legend band is subtracted first (it always was), but the remainder can no
|
|
59
|
+
* longer collapse: eight entries wrapping to five rows at phone width ate a fixed
|
|
60
|
+
* `height={240}` toward zero and the body stopped rendering entirely. The plot stops at
|
|
61
|
+
* `VX.minPlotHeight` and the frame's own box grows by the difference instead — it is a flex
|
|
62
|
+
* column with `height: auto`, so that growth is automatic. Under `fill` the box CANNOT grow, so
|
|
63
|
+
* the legend is capped instead ({@link legendEntryCap}). An unmeasured box (`resolvedHeight <=
|
|
64
|
+
* 0`, i.e. a `fill` frame before its first measurement) stays at 0 and renders nothing, exactly
|
|
65
|
+
* as before — the floor must never invent a height for a box nobody has measured.
|
|
66
|
+
*/
|
|
67
|
+
export declare function resolvePlotRect(input: {
|
|
68
|
+
containerW: number;
|
|
69
|
+
resolvedHeight: number;
|
|
70
|
+
minWidth: number;
|
|
71
|
+
sideLegendWidth: number;
|
|
72
|
+
topBottomLegendHeight: number;
|
|
73
|
+
}): {
|
|
74
|
+
width: number;
|
|
75
|
+
height: number;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* The entry cap a `fill` frame's legend must respect so the plot keeps `VX.minPlotHeight`.
|
|
79
|
+
*
|
|
80
|
+
* A fixed-height frame grows to fit its legend; a `fill` frame is pinned to its cell, so the only
|
|
81
|
+
* remaining lever is `ChartLegend`'s `maxRows` rollup (an ENTRY cap — see its JSDoc). The rows the
|
|
82
|
+
* legend may take follow from the height left over; how many entries that is follows from
|
|
83
|
+
* MEASURING the labels, not from assuming one entry per row — otherwise a five-entry legend that
|
|
84
|
+
* fits on one line would roll up to `+2 more` in every 240px cell, moving rendering for charts
|
|
85
|
+
* that never had the bug. Returns `undefined` when the whole legend already fits.
|
|
86
|
+
*/
|
|
87
|
+
export declare function legendEntryCap(input: {
|
|
88
|
+
items: readonly LegendEntry[];
|
|
89
|
+
containerW: number;
|
|
90
|
+
/** Frame height the legend may consume — `resolvedHeight - VX.minPlotHeight`. */
|
|
91
|
+
available: number;
|
|
92
|
+
/** An explicit caller cap always wins as the upper bound. */
|
|
93
|
+
callerMaxRows?: number;
|
|
94
|
+
}): number | undefined;
|
|
95
|
+
//# sourceMappingURL=chart-frame-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-frame-layout.d.ts","sourceRoot":"","sources":["../../../src/charts/primitives/chart-frame-layout.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAUhD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;AAE3C;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAE9D;AAqBD;6FAC6F;AAC7F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2FAA2F;IAC3F,IAAI,EAAE,SAAS,CAAA;IACf;uFACmF;IACnF,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAA;IACvB;yDACqD;IACrD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,6EAA6E;IAC7E,MAAM,EAAE,WAAW,CAAA;CACpB,CAAA;AA6BD,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAElE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAOpC;AAmCD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GAAG,MAAM,GAAG,SAAS,CAerB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { VX } from "../../tokens/index.js";
|
|
2
|
+
import { measureText } from "../utils/measure-text.js";
|
|
3
|
+
const LEGEND_LINE_H = Math.ceil(VX.legendFontSize * 1.35);
|
|
4
|
+
const LEGEND_PAD_Y = 10;
|
|
5
|
+
const LEGEND_SWATCH_W = 24;
|
|
6
|
+
function resolveChartTier(containerW) {
|
|
7
|
+
return containerW > 0 && containerW < VX.phoneChartWidth ? "phone" : "desktop";
|
|
8
|
+
}
|
|
9
|
+
const PHONE_MARGIN_SCALE = 0.75;
|
|
10
|
+
const PHONE_DOT_R = Math.max(VX.dotR - 1, 2);
|
|
11
|
+
const PHONE_LEGEND_MAX_ROWS = 2;
|
|
12
|
+
const TOOLTIP_MIN_WIDTH = { desktop: 140, phone: 110 };
|
|
13
|
+
const DESKTOP_METRICS = {
|
|
14
|
+
tier: "desktop",
|
|
15
|
+
axisFont: VX.axisFont,
|
|
16
|
+
legendFontSize: VX.legendFontSize,
|
|
17
|
+
dotR: VX.dotR,
|
|
18
|
+
tooltipMinWidth: TOOLTIP_MIN_WIDTH.desktop,
|
|
19
|
+
legendMaxRows: void 0,
|
|
20
|
+
margin: VX.margin
|
|
21
|
+
};
|
|
22
|
+
const PHONE_METRICS = {
|
|
23
|
+
tier: "phone",
|
|
24
|
+
// One step DOWN the shared type ladder, never an arbitrary px value: micro → nano for ticks,
|
|
25
|
+
// sm → xs for the legend (`TEXT` in tokens/index.ts).
|
|
26
|
+
axisFont: VX.text.nano,
|
|
27
|
+
legendFontSize: VX.text.xs,
|
|
28
|
+
dotR: PHONE_DOT_R,
|
|
29
|
+
tooltipMinWidth: TOOLTIP_MIN_WIDTH.phone,
|
|
30
|
+
legendMaxRows: PHONE_LEGEND_MAX_ROWS,
|
|
31
|
+
margin: {
|
|
32
|
+
top: Math.round(VX.margin.top * PHONE_MARGIN_SCALE),
|
|
33
|
+
right: Math.round(VX.margin.right * PHONE_MARGIN_SCALE),
|
|
34
|
+
bottom: Math.round(VX.margin.bottom * PHONE_MARGIN_SCALE),
|
|
35
|
+
left: Math.round(VX.margin.left * PHONE_MARGIN_SCALE)
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
function chartTierMetrics(tier) {
|
|
39
|
+
return tier === "phone" ? PHONE_METRICS : DESKTOP_METRICS;
|
|
40
|
+
}
|
|
41
|
+
function resolvePlotRect(input) {
|
|
42
|
+
const { containerW, resolvedHeight, minWidth, sideLegendWidth, topBottomLegendHeight } = input;
|
|
43
|
+
return {
|
|
44
|
+
width: containerW === 0 ? minWidth : Math.max(containerW - sideLegendWidth, 1),
|
|
45
|
+
height: resolvedHeight <= 0 ? 0 : Math.max(resolvedHeight - topBottomLegendHeight, VX.minPlotHeight)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const legendBandHeight = (rows) => LEGEND_PAD_Y + rows * LEGEND_LINE_H + Math.max(rows - 1, 0) * VX.legendGap;
|
|
49
|
+
const legendEntryWidth = (item) => LEGEND_SWATCH_W + measureText(
|
|
50
|
+
item.note === void 0 ? item.label : `${item.label} ${item.note}`,
|
|
51
|
+
VX.legendFontSize
|
|
52
|
+
);
|
|
53
|
+
function entriesWithinRows(items, width, rows) {
|
|
54
|
+
let row = 1;
|
|
55
|
+
let x = 0;
|
|
56
|
+
let fitted = 0;
|
|
57
|
+
for (const item of items) {
|
|
58
|
+
const w = legendEntryWidth(item);
|
|
59
|
+
const next = x === 0 ? w : x + VX.legendGap + w;
|
|
60
|
+
if (next > width && x > 0) {
|
|
61
|
+
row += 1;
|
|
62
|
+
if (row > rows) return fitted;
|
|
63
|
+
x = w;
|
|
64
|
+
} else {
|
|
65
|
+
x = next;
|
|
66
|
+
}
|
|
67
|
+
fitted += 1;
|
|
68
|
+
}
|
|
69
|
+
return fitted;
|
|
70
|
+
}
|
|
71
|
+
function legendEntryCap(input) {
|
|
72
|
+
const { items, containerW, available, callerMaxRows } = input;
|
|
73
|
+
if (containerW <= 0 || items.length === 0) return callerMaxRows;
|
|
74
|
+
const rows = Math.max(
|
|
75
|
+
1,
|
|
76
|
+
Math.floor((available - LEGEND_PAD_Y + VX.legendGap) / (LEGEND_LINE_H + VX.legendGap))
|
|
77
|
+
);
|
|
78
|
+
if (legendBandHeight(rows) <= available && entriesWithinRows(items, containerW, rows) >= items.length) {
|
|
79
|
+
return callerMaxRows;
|
|
80
|
+
}
|
|
81
|
+
const fitted = Math.max(1, entriesWithinRows(items, containerW, rows));
|
|
82
|
+
return callerMaxRows === void 0 ? fitted : Math.min(fitted, callerMaxRows);
|
|
83
|
+
}
|
|
84
|
+
export {
|
|
85
|
+
chartTierMetrics,
|
|
86
|
+
legendEntryCap,
|
|
87
|
+
resolveChartTier,
|
|
88
|
+
resolvePlotRect
|
|
89
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { chartTierMetrics, resolveChartTier } from './chart-frame-layout.js';
|
|
3
|
+
import type { ChartTier, ChartTierMetrics } from './chart-frame-layout.js';
|
|
4
|
+
export type ChartTierProviderProps = {
|
|
5
|
+
tier: ChartTier;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
/** Publishes a resolved tier to the subtree. Mounted once, by `ChartFrame`. */
|
|
9
|
+
export declare function ChartTierProvider({ tier, children }: ChartTierProviderProps): ReactNode;
|
|
10
|
+
/** The tier of the nearest measured `ChartFrame`, or `'desktop'` outside one. */
|
|
11
|
+
export declare function useChartTier(): ChartTier;
|
|
12
|
+
/** The resolved sizes for the ambient tier — the form every primitive actually wants. */
|
|
13
|
+
export declare function useChartTierMetrics(): ChartTierMetrics;
|
|
14
|
+
export { chartTierMetrics, resolveChartTier };
|
|
15
|
+
export type { ChartTier, ChartTierMetrics };
|
|
16
|
+
//# sourceMappingURL=chart-tier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-tier.d.ts","sourceRoot":"","sources":["../../../src/charts/primitives/chart-tier.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAYvE,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,sBAAsB,GAAG,SAAS,CAEvF;AAED,iFAAiF;AACjF,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED,yFAAyF;AACzF,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD;AAED,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA;AAC7C,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
import { chartTierMetrics, resolveChartTier } from "./chart-frame-layout.js";
|
|
4
|
+
const ChartTierContext = createContext("desktop");
|
|
5
|
+
function ChartTierProvider({ tier, children }) {
|
|
6
|
+
return /* @__PURE__ */ jsx(ChartTierContext.Provider, { value: tier, children });
|
|
7
|
+
}
|
|
8
|
+
function useChartTier() {
|
|
9
|
+
return useContext(ChartTierContext);
|
|
10
|
+
}
|
|
11
|
+
function useChartTierMetrics() {
|
|
12
|
+
return chartTierMetrics(useContext(ChartTierContext));
|
|
13
|
+
}
|
|
14
|
+
export {
|
|
15
|
+
ChartTierProvider,
|
|
16
|
+
chartTierMetrics,
|
|
17
|
+
resolveChartTier,
|
|
18
|
+
useChartTier,
|
|
19
|
+
useChartTierMetrics
|
|
20
|
+
};
|
package/dist/charts/series.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* every kind. `LegendPlacement` also lives here so `ChartLegend` and the future `ChartFrame`
|
|
7
7
|
* share one definition.
|
|
8
8
|
*/
|
|
9
|
+
import { curveMonotoneX } from '@visx/curve';
|
|
9
10
|
import type { LegendEntry } from './primitives/ChartLegend.js';
|
|
10
11
|
/**
|
|
11
12
|
* Default stroke width for plotted line overlays in `DualPanel` / `MultiLine` / `ZonedLine` —
|
|
@@ -19,6 +20,30 @@ export declare const LINE_OVERLAY_STROKE_WIDTH = 1.9;
|
|
|
19
20
|
export type SeriesMark = 'line' | 'bar' | 'area';
|
|
20
21
|
/** Only meaningful for `mark: 'line'`. */
|
|
21
22
|
export type SeriesDash = 'solid' | 'dashed';
|
|
23
|
+
/**
|
|
24
|
+
* The interpolation between two plotted points. Named rather than a raw d3 `CurveFactory` so the
|
|
25
|
+
* set is closed, serializable, and identical across every kind — a chart cannot pick a curve the
|
|
26
|
+
* legend swatch and the sibling chart next to it do not also understand.
|
|
27
|
+
*
|
|
28
|
+
* - `monotone` (default, today's behaviour everywhere) — smoothed, overshoot-free.
|
|
29
|
+
* - `linear` — straight segments. The honest choice when the points are samples, not a signal.
|
|
30
|
+
* - `step` / `stepAfter` / `stepBefore` — the value HOLDS between samples and changes at one x.
|
|
31
|
+
* Reach for these when the quantity is piecewise-constant (a price tier, a config value, a
|
|
32
|
+
* discrete state): a smoothed curve through them draws intermediate values that never existed.
|
|
33
|
+
* `stepAfter` holds the value forward from its own x, `stepBefore` holds it back from the next,
|
|
34
|
+
* `step` changes at the midpoint.
|
|
35
|
+
*/
|
|
36
|
+
export type SeriesCurve = 'monotone' | 'linear' | 'step' | 'stepAfter' | 'stepBefore';
|
|
37
|
+
/** d3's curve-factory shape, taken from a curve we already import rather than from
|
|
38
|
+
* `@visx/vendor/d3-shape` — that package is a transitive of `@visx/curve`, not one of the nine
|
|
39
|
+
* exact-pinned peers, so naming it in an import would add an undeclared dependency. */
|
|
40
|
+
type CurveFactory = typeof curveMonotoneX;
|
|
41
|
+
/**
|
|
42
|
+
* The d3 curve factory for a {@link SeriesCurve}. `undefined` resolves to `curveMonotoneX` — the
|
|
43
|
+
* value every kind hard-coded before this seam existed, so an omitted `curve` moves nothing.
|
|
44
|
+
* Exported for a hand-composed plot that draws its own `LinePath` from the same `series` array.
|
|
45
|
+
*/
|
|
46
|
+
export declare function curveFor(curve?: SeriesCurve): CurveFactory;
|
|
22
47
|
/** Drives legend grouping/dividers. */
|
|
23
48
|
export type SeriesRole = 'series' | 'overlay' | 'reference';
|
|
24
49
|
/** Where the derived legend renders relative to the plot. */
|
|
@@ -48,6 +73,12 @@ export type SeriesStyle = {
|
|
|
48
73
|
mark: SeriesMark;
|
|
49
74
|
/** Default 'solid'. */
|
|
50
75
|
dash?: SeriesDash;
|
|
76
|
+
/**
|
|
77
|
+
* Interpolation between points for the line/area shapes this series draws. Default `'monotone'`
|
|
78
|
+
* — today's behaviour, unchanged, everywhere. See {@link SeriesCurve} for when a step curve is
|
|
79
|
+
* the honest one. Silently no-ops on `mark: 'bar'`, which has nothing to interpolate.
|
|
80
|
+
*/
|
|
81
|
+
curve?: SeriesCurve;
|
|
51
82
|
/** Default VX.lineWidth (one width, everywhere). */
|
|
52
83
|
strokeWidth?: number;
|
|
53
84
|
/** bar/area: the swatch honors this so it cannot lie. */
|
|
@@ -86,7 +117,12 @@ export type SeriesStyle = {
|
|
|
86
117
|
};
|
|
87
118
|
/** Full descriptor = visual identity + data accessors. Generic over the point type. */
|
|
88
119
|
export type ChartSeries<T> = SeriesStyle & {
|
|
89
|
-
/**
|
|
120
|
+
/**
|
|
121
|
+
* null = an ABSENCE, never a zero: a real gap in the line/area (`defined`, not a straight
|
|
122
|
+
* interpolation across the hole) plus a skipped tooltip row and no crosshair dot. In a STACKED
|
|
123
|
+
* kind the absence is contagious — a band with no value leaves no cumulative total, so the whole
|
|
124
|
+
* stack gaps at that x (`StackedArea`'s JSDoc has the accounting).
|
|
125
|
+
*/
|
|
90
126
|
getValue: (d: T) => number | null;
|
|
91
127
|
/** Per-series override of the shared tooltip/value formatter. Receives the hovered datum
|
|
92
128
|
* alongside the value so a row can read fields beyond the plotted number (e.g. `97.5 kg (92.5 ×
|
|
@@ -129,4 +165,22 @@ export declare function deriveLegend(series: readonly SeriesStyle[]): LegendEntr
|
|
|
129
165
|
* Kinds pass `series.toReversed()` for stacked charts so the tooltip stack matches the visual stack.
|
|
130
166
|
*/
|
|
131
167
|
export declare function deriveTooltipRows<T>(series: readonly ChartSeries<T>[], datum: T, fallbackFormat: (v: number) => string): TooltipRowData[];
|
|
168
|
+
/**
|
|
169
|
+
* Coerces a `ChartSeries.getValue` result into what a plotted point stores as its y: `null`,
|
|
170
|
+
* `undefined` and `NaN` all collapse to `null`, which downstream `definedOn` reads as a
|
|
171
|
+
* documented gap rather than a value to plot. Shared by `MultiLine`'s `seriesPoints` and
|
|
172
|
+
* `ZonedLine`'s `linePoints` — both used to reimplement this coercion independently.
|
|
173
|
+
*/
|
|
174
|
+
export declare function toPlotPoint(v: number | null | undefined): number | null;
|
|
175
|
+
/**
|
|
176
|
+
* A `defined` predicate for `LinePath`/`AreaClosed`/`Threshold`, bound to one y-scale. A null
|
|
177
|
+
* `__y` is a documented gap (`ChartSeries.getValue`), and a non-positive value on a log scale maps
|
|
178
|
+
* to `NaN` via the scale itself — without excluding both, d3's generators either draw an
|
|
179
|
+
* interpolated straight line across the hole or blank the entire path from that point on (SVG's
|
|
180
|
+
* `NaN` path-command handling). Shared by `MultiLine` and `ZonedLine`.
|
|
181
|
+
*/
|
|
182
|
+
export declare function definedOn(scale: (y: number) => number): (d: {
|
|
183
|
+
__y: number | null;
|
|
184
|
+
}) => boolean;
|
|
185
|
+
export {};
|
|
132
186
|
//# sourceMappingURL=series.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../../src/charts/series.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;AAEhD,0CAA0C;AAC1C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE3C,uCAAuC;AACvC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;AAE3D,6DAA6D;AAC7D,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wBAAwB;IACxB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,uGAAuG;AACvG,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB,uBAAuB;IACvB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;6FACyF;IACzF,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,wBAAwB;IACxB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;gCAC4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,uFAAuF;AACvF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,WAAW,GAAG;IACzC
|
|
1
|
+
{"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../../src/charts/series.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,cAAc,EAIf,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;AAEhD,0CAA0C;AAC1C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,YAAY,CAAA;AAErF;;uFAEuF;AACvF,KAAK,YAAY,GAAG,OAAO,cAAc,CAAA;AAUzC;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,YAAY,CAE1D;AAED,uCAAuC;AACvC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;AAE3D,6DAA6D;AAC7D,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wBAAwB;IACxB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,uGAAuG;AACvG,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB,uBAAuB;IACvB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;6FACyF;IACzF,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,wBAAwB;IACxB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;gCAC4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,uFAAuF;AACvF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,WAAW,GAAG;IACzC;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,CAAA;IACjC;;eAEW;IACX,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,CAAA;IACzC;sGACkG;IAClG,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;CAClG,CAAA;AAED,4DAA4D;AAC5D,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,KAAK,CAAA;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAmBD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,CAoB1E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,EACjC,KAAK,EAAE,CAAC,EACR,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GACpC,cAAc,EAAE,CAkBlB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAEvE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,KAAK,OAAO,CAE9F"}
|
package/dist/charts/series.js
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
curveLinear,
|
|
3
|
+
curveMonotoneX,
|
|
4
|
+
curveStep,
|
|
5
|
+
curveStepAfter,
|
|
6
|
+
curveStepBefore
|
|
7
|
+
} from "@visx/curve";
|
|
1
8
|
const LINE_OVERLAY_STROKE_WIDTH = 1.9;
|
|
9
|
+
const CURVES = {
|
|
10
|
+
monotone: curveMonotoneX,
|
|
11
|
+
linear: curveLinear,
|
|
12
|
+
step: curveStep,
|
|
13
|
+
stepAfter: curveStepAfter,
|
|
14
|
+
stepBefore: curveStepBefore
|
|
15
|
+
};
|
|
16
|
+
function curveFor(curve) {
|
|
17
|
+
return curve === void 0 ? curveMonotoneX : CURVES[curve];
|
|
18
|
+
}
|
|
2
19
|
const shapeFor = (mark) => mark === "line" ? "line" : "bar";
|
|
3
20
|
function legendEntryFor(s) {
|
|
4
21
|
return {
|
|
@@ -51,8 +68,17 @@ function deriveTooltipRows(series, datum, fallbackFormat) {
|
|
|
51
68
|
}
|
|
52
69
|
return rows;
|
|
53
70
|
}
|
|
71
|
+
function toPlotPoint(v) {
|
|
72
|
+
return v === null || v === void 0 || Number.isNaN(v) ? null : v;
|
|
73
|
+
}
|
|
74
|
+
function definedOn(scale) {
|
|
75
|
+
return (d) => d.__y !== null && Number.isFinite(scale(d.__y));
|
|
76
|
+
}
|
|
54
77
|
export {
|
|
55
78
|
LINE_OVERLAY_STROKE_WIDTH,
|
|
79
|
+
curveFor,
|
|
80
|
+
definedOn,
|
|
56
81
|
deriveLegend,
|
|
57
|
-
deriveTooltipRows
|
|
82
|
+
deriveTooltipRows,
|
|
83
|
+
toPlotPoint
|
|
58
84
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
type
|
|
1
|
+
import type { BasaltProps } from '../../common/props.js';
|
|
2
|
+
export type BarSparklineProps = BasaltProps & {
|
|
2
3
|
data: number[];
|
|
3
4
|
width: number;
|
|
4
5
|
height: number;
|
|
@@ -32,6 +33,5 @@ type BarSparklineProps = {
|
|
|
32
33
|
/** Quiet inline bar trend — defaults to `VX.faint`, matching the sparkline family's restrained
|
|
33
34
|
* identity (docs/DESIGN-SPEC.md §5). Every geometry option below defaults to the shipped look, so
|
|
34
35
|
* an existing call site renders byte-identically. */
|
|
35
|
-
export declare function BarSparkline({ data, width, height, color, barGap, barRadius, emphasizeLast, emphasisColor, ariaLabel, }: BarSparklineProps): import("react").JSX.Element;
|
|
36
|
-
export {};
|
|
36
|
+
export declare function BarSparkline({ data, width, height, color, barGap, barRadius, emphasizeLast, emphasisColor, ariaLabel, className, style, }: BarSparklineProps): import("react").JSX.Element;
|
|
37
37
|
//# sourceMappingURL=BarSparkline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarSparkline.d.ts","sourceRoot":"","sources":["../../../src/charts/sparklines/BarSparkline.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BarSparkline.d.ts","sourceRoot":"","sources":["../../../src/charts/sparklines/BarSparkline.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;qDAEqD;AACrD,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,EACL,MAAU,EACV,SAAa,EACb,aAAqB,EACrB,aAAa,EACb,SAAS,EACT,SAAS,EACT,KAAK,GACN,EAAE,iBAAiB,+BAyCnB"}
|
|
@@ -11,7 +11,9 @@ function BarSparkline({
|
|
|
11
11
|
barRadius = 0,
|
|
12
12
|
emphasizeLast = false,
|
|
13
13
|
emphasisColor,
|
|
14
|
-
ariaLabel
|
|
14
|
+
ariaLabel,
|
|
15
|
+
className,
|
|
16
|
+
style
|
|
15
17
|
}) {
|
|
16
18
|
const fillColor = color ?? VX.faint;
|
|
17
19
|
const lastColor = emphasisColor ?? VX.accent;
|
|
@@ -20,11 +22,15 @@ function BarSparkline({
|
|
|
20
22
|
const max = Math.max(...data.filter((v) => isFinite(v)), 1);
|
|
21
23
|
return scaleLinear({ domain: [0, max], range: [0, height] });
|
|
22
24
|
}, [data, height]);
|
|
23
|
-
|
|
25
|
+
const rootProps = {
|
|
26
|
+
...className !== void 0 && { className },
|
|
27
|
+
...style !== void 0 && { style }
|
|
28
|
+
};
|
|
29
|
+
if (!data.length) return /* @__PURE__ */ jsx("svg", { width, height, ...rootProps, ...a11yProps });
|
|
24
30
|
const step = width / data.length;
|
|
25
31
|
const barWidth = Math.max(step - barGap, 1);
|
|
26
32
|
const lastIndex = data.length - 1;
|
|
27
|
-
return /* @__PURE__ */ jsx("svg", { width, height, ...a11yProps, children: data.map((v, i) => {
|
|
33
|
+
return /* @__PURE__ */ jsx("svg", { width, height, ...rootProps, ...a11yProps, children: data.map((v, i) => {
|
|
28
34
|
const bh = Math.max(yScale(Math.max(v, 0)), 0);
|
|
29
35
|
const isLast = emphasizeLast && i === lastIndex;
|
|
30
36
|
return /* @__PURE__ */ jsx(
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
type
|
|
1
|
+
import type { BasaltProps } from '../../common/props.js';
|
|
2
|
+
export type LineSparklineProps = BasaltProps & {
|
|
2
3
|
data: number[];
|
|
3
4
|
width: number;
|
|
4
5
|
height: number;
|
|
@@ -10,6 +11,5 @@ type LineSparklineProps = {
|
|
|
10
11
|
* Quiet single-hue trend line (docs/DESIGN-SPEC.md §5: "single 1.6px faint line, no fill, no
|
|
11
12
|
* axes, no dots"). Sparklines default to `VX.faint`, not the bolder `VX.line` used by full charts.
|
|
12
13
|
*/
|
|
13
|
-
export declare function LineSparkline({ data, width, height, color, ariaLabel }: LineSparklineProps): import("react").JSX.Element;
|
|
14
|
-
export {};
|
|
14
|
+
export declare function LineSparkline({ data, width, height, color, ariaLabel, className, style, }: LineSparklineProps): import("react").JSX.Element;
|
|
15
15
|
//# sourceMappingURL=LineSparkline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineSparkline.d.ts","sourceRoot":"","sources":["../../../src/charts/sparklines/LineSparkline.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LineSparkline.d.ts","sourceRoot":"","sources":["../../../src/charts/sparklines/LineSparkline.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGrD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG;IAC7C,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,EACL,SAAS,EACT,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,+BAyCpB"}
|
|
@@ -5,7 +5,15 @@ import { scaleLinear } from "@visx/scale";
|
|
|
5
5
|
import { LinePath } from "@visx/shape";
|
|
6
6
|
import { useMemo } from "react";
|
|
7
7
|
import { VX } from "../../tokens/index.js";
|
|
8
|
-
function LineSparkline({
|
|
8
|
+
function LineSparkline({
|
|
9
|
+
data,
|
|
10
|
+
width,
|
|
11
|
+
height,
|
|
12
|
+
color,
|
|
13
|
+
ariaLabel,
|
|
14
|
+
className,
|
|
15
|
+
style
|
|
16
|
+
}) {
|
|
9
17
|
const strokeColor = color ?? VX.faint;
|
|
10
18
|
const a11yProps = ariaLabel !== void 0 ? { role: "img", "aria-label": ariaLabel } : {};
|
|
11
19
|
const xScale = useMemo(
|
|
@@ -20,9 +28,13 @@ function LineSparkline({ data, width, height, color, ariaLabel }) {
|
|
|
20
28
|
const pad = (max - min) * 0.1 || 1;
|
|
21
29
|
return scaleLinear({ domain: [min - pad, max + pad], range: [height, 0] });
|
|
22
30
|
}, [data, height]);
|
|
23
|
-
|
|
31
|
+
const rootProps = {
|
|
32
|
+
...className !== void 0 && { className },
|
|
33
|
+
...style !== void 0 && { style }
|
|
34
|
+
};
|
|
35
|
+
if (data.length < 2) return /* @__PURE__ */ jsx("svg", { width, height, ...rootProps, ...a11yProps });
|
|
24
36
|
const indexed = data.map((v, i) => ({ v, i }));
|
|
25
|
-
return /* @__PURE__ */ jsx("svg", { width, height, ...a11yProps, children: /* @__PURE__ */ jsx(Group, { children: /* @__PURE__ */ jsx(
|
|
37
|
+
return /* @__PURE__ */ jsx("svg", { width, height, ...rootProps, ...a11yProps, children: /* @__PURE__ */ jsx(Group, { children: /* @__PURE__ */ jsx(
|
|
26
38
|
LinePath,
|
|
27
39
|
{
|
|
28
40
|
data: indexed,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { LineSparkline } from './LineSparkline.js';
|
|
2
|
-
export { BarSparkline } from './BarSparkline.js';
|
|
1
|
+
export { LineSparkline, type LineSparklineProps } from './LineSparkline.js';
|
|
2
|
+
export { BarSparkline, type BarSparklineProps } from './BarSparkline.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/charts/sparklines/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/charts/sparklines/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -1,5 +1,95 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* What EVERY formatter here prints for input it cannot represent — `NaN`, `±Infinity`, an
|
|
3
|
+
* `Invalid Date`. An em dash (U+2014), the same glyph the tooltip already uses for a missing value.
|
|
4
|
+
*
|
|
5
|
+
* The rule is one rule on purpose. `Intl.NumberFormat` renders `NaN` as the literal string `"NaN"`
|
|
6
|
+
* and `Infinity` as `"∞"`, so a y axis whose domain collapsed (an empty series, a 0/0 rate, a log
|
|
7
|
+
* scale reaching zero) painted its own arithmetic accident as a tick label and a tooltip read
|
|
8
|
+
* `NaN%`. A chart may say it does not know; it may not print a number that is not one.
|
|
9
|
+
*/
|
|
10
|
+
export declare const NON_FINITE = "\u2014";
|
|
11
|
+
/** Axis-friendly short date: DD.MM. A non-finite or invalid date prints {@link NON_FINITE}. */
|
|
2
12
|
export declare function fmtAxisDate(value: unknown): string;
|
|
3
|
-
/** Tooltip-friendly long date: "Mon Apr 21 2026"
|
|
13
|
+
/** Tooltip-friendly long date: "Mon Apr 21 2026". A non-finite or invalid date prints
|
|
14
|
+
* {@link NON_FINITE}. */
|
|
4
15
|
export declare function fmtTooltipDate(date: unknown): string;
|
|
16
|
+
/**
|
|
17
|
+
* The number-format law.
|
|
18
|
+
*
|
|
19
|
+
* `format.ts` shipped two date formatters and nothing else, so every axis and every tooltip in
|
|
20
|
+
* every demo and consumer hand-rolled its own `` `$${v}k` `` — a template literal that is not
|
|
21
|
+
* locale-aware, not compact-aware, and different in each of the places it was written. These four
|
|
22
|
+
* are `Intl.NumberFormat` with the arguments already decided, so a chart states WHAT a number is
|
|
23
|
+
* rather than how to punctuate it.
|
|
24
|
+
*
|
|
25
|
+
* `locale` defaults to `undefined`, which is `Intl`'s own "use the runtime's locale" — the correct
|
|
26
|
+
* default for an app whose reader is the person looking at it. Pass it explicitly (`'en-US'`) when
|
|
27
|
+
* the output must be stable regardless of where it runs, which is what the tests here do.
|
|
28
|
+
*
|
|
29
|
+
* Every one of them returns {@link NON_FINITE} for input that is not a finite number — see its
|
|
30
|
+
* JSDoc for why that is a law of this module rather than a per-call-site guard.
|
|
31
|
+
*/
|
|
32
|
+
/** Options every formatter here accepts. */
|
|
33
|
+
type LocaleOption = {
|
|
34
|
+
/** BCP-47 tag. Default `undefined` — the runtime's own locale. */
|
|
35
|
+
locale?: string;
|
|
36
|
+
};
|
|
37
|
+
export type FmtCompactOptions = LocaleOption & {
|
|
38
|
+
/** Significant-ish fraction digits on the compacted number. Default 1 (`1.2k`, `3.4M`). */
|
|
39
|
+
digits?: number;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Compact notation: `1.2k`, `3.4M`, `-820`. The axis formatter for any count whose range spans
|
|
43
|
+
* more than three digits — a y axis reading `1,200,000` spends a third of the plot width on a
|
|
44
|
+
* gutter. A non-finite value prints {@link NON_FINITE}.
|
|
45
|
+
*
|
|
46
|
+
* Note `Intl`'s compact notation is LOCALE text, not a suffix table: `en` gives `1.2K`, and this
|
|
47
|
+
* lowercases the `K` to match the package's own numeral style while leaving every other locale's
|
|
48
|
+
* word (`1,2 Mio.`) untouched. Only a `K` attached to the DIGITS is touched — `HK$1.2K` must keep
|
|
49
|
+
* its currency prefix, which a bare `replace('K', 'k')` ate.
|
|
50
|
+
*/
|
|
51
|
+
export declare function fmtCompact(value: number, options?: FmtCompactOptions): string;
|
|
52
|
+
export type FmtPercentOptions = LocaleOption & {
|
|
53
|
+
/** Fraction digits. Default 0 (`42%`). */
|
|
54
|
+
digits?: number;
|
|
55
|
+
/**
|
|
56
|
+
* What the incoming number MEANS. `'ratio'` (default) is `0.42 → 42%`; `'percent'` is
|
|
57
|
+
* `42 → 42%`. Required as an explicit option rather than guessed from magnitude: a ratio of 1.2
|
|
58
|
+
* and a percentage of 1.2 are both perfectly ordinary numbers, and a heuristic would silently
|
|
59
|
+
* render one of them 100× wrong.
|
|
60
|
+
*/
|
|
61
|
+
input?: 'ratio' | 'percent';
|
|
62
|
+
};
|
|
63
|
+
/** Percentages, from either a ratio or an already-scaled percentage. A non-finite value prints
|
|
64
|
+
* {@link NON_FINITE} — a rate is the commonest source of a 0/0. */
|
|
65
|
+
export declare function fmtPercent(value: number, options?: FmtPercentOptions): string;
|
|
66
|
+
export type FmtCurrencyOptions = LocaleOption & {
|
|
67
|
+
/** ISO 4217 code — required. There is no default currency; a wrong symbol is worse than a
|
|
68
|
+
* verbose call site. */
|
|
69
|
+
currency: string;
|
|
70
|
+
/** Compact notation for the amount (`$1.2k`). Default false. */
|
|
71
|
+
compact?: boolean;
|
|
72
|
+
/** Fraction digits. Default 0 compacted, else the currency's own default (`undefined`). */
|
|
73
|
+
digits?: number;
|
|
74
|
+
};
|
|
75
|
+
/** Money. `fmtCurrency(1234, { currency: 'USD' })` → `$1,234`. A non-finite amount prints
|
|
76
|
+
* {@link NON_FINITE}. */
|
|
77
|
+
export declare function fmtCurrency(value: number, options: FmtCurrencyOptions): string;
|
|
78
|
+
/** Grouped integer: `12,480`. Rounds — an integer formatter that printed `12,480.4` would be
|
|
79
|
+
* lying about its own name. A non-finite value prints {@link NON_FINITE}. */
|
|
80
|
+
export declare function fmtInt(value: number, options?: LocaleOption): string;
|
|
81
|
+
/**
|
|
82
|
+
* Every shipped formatter under one name, so a chart can be handed the whole set
|
|
83
|
+
* (`format={formatters.compact}`) and a consumer has one import to reach for instead of four.
|
|
84
|
+
* Same members as the named exports — this is a convenience, never a second implementation.
|
|
85
|
+
*/
|
|
86
|
+
export declare const formatters: {
|
|
87
|
+
readonly compact: typeof fmtCompact;
|
|
88
|
+
readonly percent: typeof fmtPercent;
|
|
89
|
+
readonly currency: typeof fmtCurrency;
|
|
90
|
+
readonly int: typeof fmtInt;
|
|
91
|
+
readonly axisDate: typeof fmtAxisDate;
|
|
92
|
+
readonly tooltipDate: typeof fmtTooltipDate;
|
|
93
|
+
};
|
|
94
|
+
export {};
|
|
5
95
|
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/charts/utils/format.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/charts/utils/format.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,WAAW,CAAA;AAElC,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYlD;AAED;yBACyB;AACzB,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAWpD;AAED;;;;;;;;;;;;;;;GAeG;AAEH,4CAA4C;AAC5C,KAAK,YAAY,GAAG;IAClB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAyBD,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAUjF;AAED,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC5B,CAAA;AAED;mEACmE;AACnE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAQjF;AAED,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C;4BACwB;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;yBACyB;AACzB,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAa9E;AAED;6EAC6E;AAC7E,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAGxE;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;CAOb,CAAA"}
|