basalt-ui 1.14.0 → 1.15.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 +1 -1
- package/CHANGELOG.md +8 -0
- package/README.md +38 -2
- package/agent/rules/basalt-charts.md +260 -108
- package/agent/rules/basalt-mantine.md +4 -2
- package/agent/skills/basalt-charts/SKILL.md +114 -64
- package/agent/skills/basalt-design/SKILL.md +4 -3
- package/configs/oxlint-plugin.js +152 -0
- package/configs/oxlint-plugin.test.ts +107 -0
- package/configs/oxlint.json +2 -0
- package/dist/charts/cursor/resolve.d.ts +33 -0
- package/dist/charts/cursor/resolve.d.ts.map +1 -0
- package/dist/charts/cursor/resolve.js +61 -0
- package/dist/charts/cursor/resolve.test.d.ts +2 -0
- package/dist/charts/cursor/resolve.test.d.ts.map +1 -0
- package/dist/charts/cursor/scope.d.ts +17 -0
- package/dist/charts/cursor/scope.d.ts.map +1 -0
- package/dist/charts/cursor/scope.js +20 -0
- package/dist/charts/cursor/store.d.ts +31 -0
- package/dist/charts/cursor/store.d.ts.map +1 -0
- package/dist/charts/cursor/store.js +25 -0
- package/dist/charts/cursor/store.test.d.ts +2 -0
- package/dist/charts/cursor/store.test.d.ts.map +1 -0
- package/dist/charts/hooks/useChartCursor.d.ts +39 -0
- package/dist/charts/hooks/useChartCursor.d.ts.map +1 -0
- package/dist/charts/hooks/useChartCursor.js +104 -0
- package/dist/charts/hooks/useChartSize.d.ts +8 -4
- package/dist/charts/hooks/useChartSize.d.ts.map +1 -1
- package/dist/charts/index.d.ts +16 -13
- package/dist/charts/index.d.ts.map +1 -1
- package/dist/charts/index.js +38 -19
- package/dist/charts/kinds/Bars.d.ts +25 -47
- package/dist/charts/kinds/Bars.d.ts.map +1 -1
- package/dist/charts/kinds/Bars.js +230 -390
- package/dist/charts/kinds/Donut.d.ts +5 -4
- package/dist/charts/kinds/Donut.d.ts.map +1 -1
- package/dist/charts/kinds/Donut.js +17 -14
- package/dist/charts/kinds/DualPanel.d.ts.map +1 -1
- package/dist/charts/kinds/DualPanel.js +136 -90
- package/dist/charts/kinds/Heatmap.d.ts +15 -11
- package/dist/charts/kinds/Heatmap.d.ts.map +1 -1
- package/dist/charts/kinds/Heatmap.js +38 -22
- package/dist/charts/kinds/MultiLine.d.ts +27 -35
- package/dist/charts/kinds/MultiLine.d.ts.map +1 -1
- package/dist/charts/kinds/MultiLine.js +114 -237
- package/dist/charts/kinds/StackedArea.d.ts +21 -10
- package/dist/charts/kinds/StackedArea.d.ts.map +1 -1
- package/dist/charts/kinds/StackedArea.js +74 -132
- package/dist/charts/kinds/ZonedLine.d.ts +24 -40
- package/dist/charts/kinds/ZonedLine.d.ts.map +1 -1
- package/dist/charts/kinds/ZonedLine.js +103 -184
- package/dist/charts/layout/auto-margin.d.ts +60 -0
- package/dist/charts/layout/auto-margin.d.ts.map +1 -0
- package/dist/charts/layout/auto-margin.js +37 -0
- package/dist/charts/layout/auto-margin.test.d.ts +2 -0
- package/dist/charts/layout/auto-margin.test.d.ts.map +1 -0
- package/dist/charts/primitives/CartesianChart.d.ts +143 -0
- package/dist/charts/primitives/CartesianChart.d.ts.map +1 -0
- package/dist/charts/primitives/CartesianChart.js +349 -0
- package/dist/charts/primitives/CartesianChart.test.d.ts +2 -0
- package/dist/charts/primitives/CartesianChart.test.d.ts.map +1 -0
- package/dist/charts/primitives/ChartFrame.d.ts +16 -5
- package/dist/charts/primitives/ChartFrame.d.ts.map +1 -1
- package/dist/charts/primitives/ChartFrame.js +17 -2
- package/dist/charts/primitives/ChartLegend.d.ts +12 -1
- package/dist/charts/primitives/ChartLegend.d.ts.map +1 -1
- package/dist/charts/primitives/ChartLegend.js +21 -3
- package/dist/charts/primitives/ChartLegend.test.d.ts +2 -0
- package/dist/charts/primitives/ChartLegend.test.d.ts.map +1 -0
- package/dist/charts/primitives/ChartTooltip.d.ts +16 -16
- package/dist/charts/primitives/ChartTooltip.d.ts.map +1 -1
- package/dist/charts/primitives/ChartTooltip.js +45 -19
- package/dist/charts/primitives/HoverOverlay.d.ts +19 -4
- package/dist/charts/primitives/HoverOverlay.d.ts.map +1 -1
- package/dist/charts/primitives/HoverOverlay.js +22 -1
- package/dist/charts/primitives/XZoneRects.d.ts +40 -0
- package/dist/charts/primitives/XZoneRects.d.ts.map +1 -0
- package/dist/charts/primitives/XZoneRects.js +28 -0
- package/dist/charts/primitives/XZoneRects.test.d.ts +2 -0
- package/dist/charts/primitives/XZoneRects.test.d.ts.map +1 -0
- package/dist/charts/series.d.ts +16 -1
- package/dist/charts/series.d.ts.map +1 -1
- package/dist/charts/series.js +3 -1
- package/dist/charts/series.test.d.ts +2 -0
- package/dist/charts/series.test.d.ts.map +1 -0
- package/dist/charts/utils/measure-text.d.ts +25 -0
- package/dist/charts/utils/measure-text.d.ts.map +1 -0
- package/dist/charts/utils/measure-text.js +64 -0
- package/dist/charts/utils/measure-text.test.d.ts +2 -0
- package/dist/charts/utils/measure-text.test.d.ts.map +1 -0
- package/dist/content/fence-block.d.ts.map +1 -1
- package/dist/surfaces.d.ts +1 -1
- package/dist/surfaces.d.ts.map +1 -1
- package/dist/surfaces.js +1 -1
- package/dist/tokens/chart-margin.test.d.ts +2 -0
- package/dist/tokens/chart-margin.test.d.ts.map +1 -0
- package/dist/tokens/index.d.ts +29 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +10 -0
- package/dist/tokens/palette.d.ts +4 -0
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +3 -0
- package/llms.txt +3 -3
- package/package.json +1 -1
- package/src/charts/cursor/resolve.test.ts +61 -0
- package/src/charts/cursor/resolve.ts +102 -0
- package/src/charts/cursor/scope.tsx +32 -0
- package/src/charts/cursor/store.test.ts +46 -0
- package/src/charts/cursor/store.ts +53 -0
- package/src/charts/hooks/useChartCursor.ts +163 -0
- package/src/charts/hooks/useChartSize.ts +8 -4
- package/src/charts/index.ts +34 -14
- package/src/charts/kinds/Bars.tsx +327 -460
- package/src/charts/kinds/Donut.tsx +31 -23
- package/src/charts/kinds/DualPanel.tsx +228 -134
- package/src/charts/kinds/Heatmap.tsx +72 -47
- package/src/charts/kinds/MultiLine.tsx +158 -294
- package/src/charts/kinds/StackedArea.tsx +116 -175
- package/src/charts/kinds/ZonedLine.tsx +148 -255
- package/src/charts/layout/auto-margin.test.ts +42 -0
- package/src/charts/layout/auto-margin.ts +110 -0
- package/src/charts/primitives/CartesianChart.test.ts +99 -0
- package/src/charts/primitives/CartesianChart.tsx +566 -0
- package/src/charts/primitives/ChartFrame.test.tsx +33 -0
- package/src/charts/primitives/ChartFrame.tsx +40 -4
- package/src/charts/primitives/ChartLegend.test.tsx +48 -0
- package/src/charts/primitives/ChartLegend.tsx +45 -2
- package/src/charts/primitives/ChartTooltip.tsx +67 -37
- package/src/charts/primitives/HoverOverlay.tsx +39 -3
- package/src/charts/primitives/XZoneRects.test.tsx +63 -0
- package/src/charts/primitives/XZoneRects.tsx +67 -0
- package/src/charts/series.test.ts +61 -0
- package/src/charts/series.ts +18 -1
- package/src/charts/utils/measure-text.test.ts +36 -0
- package/src/charts/utils/measure-text.ts +109 -0
- package/src/content/fence-block.tsx +2 -3
- package/src/surfaces.ts +2 -1
- package/src/theme/spacing.test.ts +2 -0
- package/src/tokens/chart-margin.test.ts +39 -0
- package/src/tokens/density.test.ts +1 -0
- package/src/tokens/index.ts +36 -0
- package/src/tokens/palette.ts +3 -0
- package/dist/charts/hooks/useChartTooltip.d.ts +0 -13
- package/dist/charts/hooks/useChartTooltip.d.ts.map +0 -1
- package/dist/charts/hooks/useChartTooltip.js +0 -26
- package/dist/charts/hooks/useHoverSync.d.ts +0 -46
- package/dist/charts/hooks/useHoverSync.d.ts.map +0 -1
- package/dist/charts/hooks/useHoverSync.js +0 -75
- package/dist/charts/hover-context.d.ts +0 -21
- package/dist/charts/hover-context.d.ts.map +0 -1
- package/dist/charts/hover-context.js +0 -12
- package/dist/charts/hover-sync.d.ts +0 -14
- package/dist/charts/hover-sync.d.ts.map +0 -1
- package/dist/charts/hover-sync.js +0 -17
- package/dist/charts/primitives/ResponsiveChart.d.ts +0 -45
- package/dist/charts/primitives/ResponsiveChart.d.ts.map +0 -1
- package/dist/charts/primitives/ResponsiveChart.js +0 -24
- package/src/charts/hooks/useChartTooltip.ts +0 -31
- package/src/charts/hooks/useHoverSync.ts +0 -152
- package/src/charts/hover-context.ts +0 -28
- package/src/charts/hover-sync.tsx +0 -37
- package/src/charts/primitives/ResponsiveChart.tsx +0 -64
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ChartMargin } from '../../tokens/index.js';
|
|
2
|
+
import type { AxisConfig, CartesianTooltipConfig } from '../primitives/CartesianChart.js';
|
|
2
3
|
import type { ZoneSpec } from '../primitives/ZoneRects.js';
|
|
3
4
|
import type { ChartLegendConfig } from '../series.js';
|
|
4
5
|
export type BarsBar = {
|
|
@@ -9,7 +10,7 @@ export type BarsBar = {
|
|
|
9
10
|
/** Fill color (a resolved CSS color / token ref). Per `docs/DESIGN-SPEC.md` §5, the primary bar
|
|
10
11
|
* series should typically resolve to `VX.accent`, a secondary companion to `VX.faint`. */
|
|
11
12
|
color: string;
|
|
12
|
-
/** Per-series tooltip value formatter — overrides
|
|
13
|
+
/** Per-series tooltip value formatter — overrides the left/right axis's own format. */
|
|
13
14
|
formatValue?: (v: number) => string;
|
|
14
15
|
/** Y axis to plot against. Honored only in grouped layout. Default 'left'. */
|
|
15
16
|
axisSide?: 'left' | 'right';
|
|
@@ -34,24 +35,9 @@ export type BarsRefLine = {
|
|
|
34
35
|
dashed?: boolean;
|
|
35
36
|
axisSide?: 'left' | 'right';
|
|
36
37
|
};
|
|
37
|
-
export type BarsAxisConfig = {
|
|
38
|
-
/** Fixed [min, max] or 'auto' (computed from bars + lines + zones + refLines on this axis). */
|
|
39
|
-
domain: [number, number] | 'auto';
|
|
40
|
-
/** Auto-domain padding multiplier. Default 1.1. The lower bound always pads DOWN from
|
|
41
|
-
* `min(dataMin, autoMinCeil)` (never up, which would clip data) — see {@link padAutoLower}. */
|
|
42
|
-
autoPad?: number;
|
|
43
|
-
/** Auto-domain lower bound ceiling — never above this. Default 0. */
|
|
44
|
-
autoMinCeil?: number;
|
|
45
|
-
/** Auto-domain upper bound floor — never below this. */
|
|
46
|
-
autoMaxFloor?: number;
|
|
47
|
-
/** Tick label formatter (e.g. (v) => `${v}h`). */
|
|
48
|
-
formatTick?: (v: number) => string;
|
|
49
|
-
/** Number of ticks. Default 5. */
|
|
50
|
-
numTicks?: number;
|
|
51
|
-
};
|
|
52
38
|
export type BarsProps<T> = {
|
|
53
39
|
data: T[];
|
|
54
|
-
/** Fixed height in pixels, forwarded to
|
|
40
|
+
/** Fixed height in pixels, forwarded to `CartesianChart`. Default 240. */
|
|
55
41
|
height?: number;
|
|
56
42
|
chartId: string;
|
|
57
43
|
getX: (d: T) => string;
|
|
@@ -67,10 +53,15 @@ export type BarsProps<T> = {
|
|
|
67
53
|
zones?: BarsZone[];
|
|
68
54
|
/** Dashed/solid horizontal reference lines. */
|
|
69
55
|
refLines?: BarsRefLine[];
|
|
70
|
-
/** Left axis config
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
56
|
+
/** Left axis config — bars always live here. In `barLayout: 'stacked'` (the default), `domain`
|
|
57
|
+
* defaults to the summed per-point stack total (bars + any left-axis lines), not a per-series
|
|
58
|
+
* max — the same function-domain seam `StackedArea` uses — unless overridden with a fixed tuple
|
|
59
|
+
* or a custom function. Optional, like every other kind's — omit it for a plain auto domain. */
|
|
60
|
+
y?: AxisConfig<T>;
|
|
61
|
+
/** Right axis config. Passing it is what makes the chart dual-axis: it draws the right axis and
|
|
62
|
+
* widens the right margin by measurement. Line overlays (and grouped-layout bars) opt in with
|
|
63
|
+
* `axisSide: 'right'`. */
|
|
64
|
+
y2?: AxisConfig<T>;
|
|
74
65
|
/** Bar width as fraction of slot width. Default 0.6. */
|
|
75
66
|
barWidthRatio?: number;
|
|
76
67
|
/**
|
|
@@ -82,30 +73,18 @@ export type BarsProps<T> = {
|
|
|
82
73
|
barLayout?: 'stacked' | 'grouped';
|
|
83
74
|
/** Per-bar opacity override. Receives the data point + bar key. Default 0.85. */
|
|
84
75
|
barOpacity?: (d: T, key: string) => number;
|
|
85
|
-
/**
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
/** Tooltip rows rendered AFTER the generated bar/line rows. */
|
|
93
|
-
renderExtraTooltipRows?: (d: T) => ReactNode;
|
|
94
|
-
/** Skip the auto-generated positive/negative bar rows in the tooltip (chart still renders them). */
|
|
95
|
-
hideBarTooltipRows?: boolean;
|
|
96
|
-
/** Default value formatter if a series doesn't define its own. */
|
|
97
|
-
formatValue?: (v: number) => string;
|
|
98
|
-
/** X-axis tick count override. */
|
|
99
|
-
numTicksX?: number;
|
|
100
|
-
/** Override the left margin (defaults to VX.margin.left = 44). Useful when
|
|
101
|
-
* y-axis labels are unusually wide (e.g. five-digit step counts). */
|
|
102
|
-
marginLeft?: number;
|
|
103
|
-
/** Legend config forwarded to `ChartFrame`; `false` disables the legend (sparkline escape).
|
|
76
|
+
/** X tick count override. Default: as many as fit. */
|
|
77
|
+
xTicks?: number;
|
|
78
|
+
/** `false` disables the tooltip entirely (and with it the crosshair dots). */
|
|
79
|
+
tooltip?: CartesianTooltipConfig<T> | false;
|
|
80
|
+
/** Per-side overrides of the measured margins — the escape hatch, applied last. */
|
|
81
|
+
margin?: Partial<ChartMargin>;
|
|
82
|
+
/** Legend config forwarded to `CartesianChart`; `false` disables the legend (sparkline escape).
|
|
104
83
|
* Default `{ placement: 'bottom' }`. */
|
|
105
84
|
legend?: ChartLegendConfig | false;
|
|
106
|
-
/** Accessible text alternative, forwarded
|
|
85
|
+
/** Accessible text alternative, forwarded as `aria-label` (+ `role="img"`). */
|
|
107
86
|
ariaLabel?: string;
|
|
108
|
-
/** Forwarded to `
|
|
87
|
+
/** Forwarded to `CartesianChart` — see `ChartPending`'s JSDoc for the three-state rationale. */
|
|
109
88
|
isPending?: boolean;
|
|
110
89
|
};
|
|
111
90
|
/**
|
|
@@ -113,10 +92,9 @@ export type BarsProps<T> = {
|
|
|
113
92
|
* overlays on left/right axes, horizontal zones, and reference lines. Covers
|
|
114
93
|
* diverging-stack + bar+line + any future stacked-bar preset.
|
|
115
94
|
*
|
|
116
|
-
* Composes `
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* `highlightedKey` prop).
|
|
95
|
+
* Composes `CartesianChart` (`docs/CHARTS-SPEC.md` §2) — margin, scales, grid, axes, the shared
|
|
96
|
+
* cursor, the crosshair + per-series dots, and the tooltip are ALL the primitive's job. This file
|
|
97
|
+
* draws only the bar rects, the line overlays, and (for a diverging stack) the zero baseline.
|
|
120
98
|
*
|
|
121
99
|
* X-axis is built from the full `data` array so the calendar is preserved even
|
|
122
100
|
* with per-bar nulls (nulls become visual gaps, not domain holes).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bars.d.ts","sourceRoot":"","sources":["../../../src/charts/kinds/Bars.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Bars.d.ts","sourceRoot":"","sources":["../../../src/charts/kinds/Bars.tsx"],"names":[],"mappings":"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"}
|