diff --git a/.changeset/brave-tooltips-expand.md b/.changeset/brave-tooltips-expand.md deleted file mode 100644 index 2c4629cb..00000000 --- a/.changeset/brave-tooltips-expand.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -'@tanstack/charts': minor -'@tanstack/react-charts-catalog': patch -'@tanstack/react-native-charts': patch ---- - -Expose pinned state to tooltip content and item callbacks so built-in and -framework-rendered tooltips can expand with additional detail when pinned. -Keep dismissing clicks owned by the tooltip when a framework body unmounts -during event propagation. - -Standardize public callback parameters as primary data plus a context bag. -Tooltip `format` and `formatGroup` now receive the same content context as -`content`; channel accessors use `(datum, { index, data })`; facet, focus, -legend, and spatial-index extension callbacks move their supporting values -into named context objects. Controlled signals now receive change reasons in -`{ reason }`; keyed-selection keys and focus-guide label formatters receive -their point in `{ point }`; interactive legend item labels receive -`{ visible }`. - -`ruleX` and `ruleY` now expose axis-specific presentation-only focus anchors, so -`whenFocused(..., { match: 'x' })` and `whenFocused(..., { match: 'y' })` can -reveal focused guide rules without making them interaction or tooltip targets. - -Update the published pinned-tooltip catalog case to show the energy overview, -compact hover summary, and animated pinned detail. - -Preserve distinct source rows in the linear-regression, framed-scatter, and -many-point-scatter catalog examples when car names and years repeat. - -Keep React Native chart-host focusability aligned with the shared definition -contract and toggle sticky activation exactly once per accessibility action. diff --git a/.changeset/bright-cursors-cross.md b/.changeset/bright-cursors-cross.md deleted file mode 100644 index fc35af5f..00000000 --- a/.changeset/bright-cursors-cross.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/charts': minor ---- - -Add renderer-native crosshair rules, categorical cursor bands, labels, and optional intersection markers plus shared focus/free cursor controllers across SVG, Canvas, motion, and React Native rendering. Focus-filtered rule marks now use non-interactive semantic anchors, built-in axis focus modes select the painted mark under the pointer before grouping or snapping, and keyed motion guides remain active through scene updates. diff --git a/.changeset/live-paths-shift.md b/.changeset/live-paths-shift.md deleted file mode 100644 index b2d40e31..00000000 --- a/.changeset/live-paths-shift.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@tanstack/charts': patch ---- - -Add validated rolling path transforms with dynamic y-domain reprojection, -continuous translated viewports with stationary guides, and a controlled focus -controller that follows presentation geometry. Default SVG rendering now -honors scene clips and gradients. diff --git a/.changeset/native-layout-marks.md b/.changeset/native-layout-marks.md deleted file mode 100644 index 275312a7..00000000 --- a/.changeset/native-layout-marks.md +++ /dev/null @@ -1,169 +0,0 @@ ---- -'@tanstack/charts': minor ---- - -Add native waffle, optional spatial hexbin, Delaunay link, Voronoi, -scalar-grid contour, density contour, responsive treemap and sunburst marks, -responsive Sankey composition, dot dodge layouts, typed wide-to-long fold and -polar pie transforms, and optional static force-layout and tidy-tree -transforms. Polar charts add radius- and angle-extending bar marks, responsive -radius scale ranges, post-scale text and rule offsets, and automatic outside -text anchors. These marks, layouts, and transforms own their data- or -plot-space geometry, so examples no longer need to copy scales, author D3 -paths, flip hierarchy coordinates, manually pivot metric fields, calculate -responsive label radii or bar rings, or hide hierarchy and settled network -coordinates in case utilities. The exact Sankey entry accepts semantic graph -rows and composes ordinary child marks over immutable final-pixel node and link -values without exposing D3 mutation cleanup. - -Resolved dot placement is also extensible through `createDotLayout`, which -receives final plot bounds, measured coordinates, and radii while Charts keeps -row identity, interaction, state, and motion ownership. Treemap tiling, Sankey -alignment, and named static-force factories accept D3-compatible callables in -addition to the built-in shorthands; all operate over private layout copies and -retain validation, immutability, and source lineage. - -Cartesian bars add an orientation-neutral `maxThickness` constraint that caps -their final painted categorical size after grouping and inset, without asking -definitions to estimate responsive chart bounds. Absolute inline-state inset -overrides retain their existing semantics without escaping the cap. - -Add eager `boxRows` preparation plus raw-row `boxX` and `boxY` marks with Tukey -quartiles, observed whiskers, outlier lineage, transposed orientation, and one -summary interaction target per category. The marks reuse the public semantic -rows without exposing presentation keys. Add `compositeMark` for namespaced -composition of ordinary child marks with preserved datum, channel, -interaction, and motion ownership. - -Stack layouts add inside-out series order and a zero-origin wiggle policy. -Areas, bars, and row transforms now share D3 inside-out ordering, dense sparse -cell handling, and a single global baseline translation, so streamgraphs can -consume tidy source rows without case-owned pivoting or interval generation. -Anchored stacks additionally translate ordered nonnegative series around a -named series fraction, so diverging Likert charts can keep counts in ordinary -bar definitions without manually materializing signed endpoints. - -Add an eager `waterfall` transform for ordered signed contributions, cumulative -start/end intervals, increase/decrease classification, optional grouped net -totals, and direct source lineage. - -Add eager `mosaicY` and `mosaicX` transforms for two-dimensional proportional -intervals over explicitly aggregated category pairs. They preserve semantic -categories, both normalization totals, stable source order, and direct lineage -for ordinary rectangle and text marks. Mosaic and pie share an overflow-safe -proportional interval allocator; waffle keeps its distinct rounded unit-fragment -and resolved packing policy. - -Add `lineX` as the strict transposed counterpart to `lineY`, sharing grouping, -keys, gaps, styling, interaction, motion, and renderer-neutral path output. - -Add eager `linearRegressionRowsY` and `linearRegressionRowsX` preparation plus -`linearRegressionY` and `linearRegressionX` composite marks with centered -least-squares fits, optional grouped Student-t confidence bands, semantic-domain -sampling, aggregate lineage, transposed geometry, and one interactive fitted -line per group. The marks reuse the public semantic rows without exposing -presentation keys. - -Add `differenceY` and `differenceX` composite marks that split two source-row -series at exact interpolated crossings, paint stable positive and negative -lobes, preserve derived lineage, and keep both raw boundary lines interactive. - -Add semantic `ridgelineY` / `ridgelineX` and `violinY` / `violinX` marks for -prepared normalized profiles. Both derive responsive displacement from complete -point or band category domains without numeric category surrogates. Ridgelines -own one-sided overlap and optional outlines; violins own mirrored envelopes -while binning, normalization, density estimation, and summaries remain explicit -definition concerns. Tick marks add an optional category-step-relative `span` -for responsive summary bars without authored endpoint coordinates. - -Add exact-subpath focus guide marks with renderer-neutral rules, markers, -measured labels, raw datum identity, and stable retargeting keys. Retargetable -`whenFocused` marks now enter at the active geometry, update through ordinary -mark motion, preserve interrupted spring velocity, and exit on focus clear -across SVG, Canvas, and React Native surfaces. Candidate ownership is -collision-safe for delimiter-containing keys, primitive rows match by value -and source position, and mark-state transitions no longer override another -mark's focus motion. - -Add an exact-subpath controlled signal and a controlled interactive categorical -legend. Applications retain the visible-series snapshot while Charts owns -domain-ordered toggling, post-domain geometry and focus filtering, responsive -top or bottom layout, stable native browser buttons, and static SVG fallback. -Static color and gradient legends also support top or bottom placement. - -Add exact-subpath controlled keyed selection with `keyedSelection` and -`whenSelected`. Host activation maps ordinary chart points to application keys -through a controlled signal. Selected marks keep their complete domain -contribution, then paint only matching point-owned geometry as a decorative -overlay without duplicate focus or activation targets. - -Add exact-subpath `decorative(mark)` composition. It keeps an ordinary or -resolved-layout mark's scale contribution, layout measurement, motion, -post-domain work, and painted geometry while removing interaction ownership and -exposing `never` point types. This lets one layer in a line-plus-dot composition -own focus, tooltips, and activation without changing pointer affinity. - -Add exact-subpath `brushX` as a controlled chart behavior. It resolves against -the final x scale and plot bounds, owns D3 pointer/touch lifecycle, semantic -snapping, reverse normalization, cancellation, keyboard slider handles, host -teardown, and a renderer-neutral static fallback. Applications retain the -accepted range, fixed-window policy, linked-view layout, and persistence. - -Add exact-subpath `continuousCursor` as a controlled chart behavior for an -unsnapped numeric or temporal x/y position. It resolves both final scales and -plot bounds, paints rules, a marker, and optional axis labels, owns transient -pointer/touch previews, click or tap pinning, leave/cancel cleanup, Escape and -toggle clearing, host teardown, and a renderer-neutral static fallback. -Applications retain semantic sliders, status text, formatting policy, and -persistence. - -Add exact-subpath `zoomX` as a controlled continuous horizontal-window -behavior. It owns focus-gated pointer-anchored wheel zoom, horizontal-wheel and -drag pan, touch and pinch gestures, keyboard zoom/pan/reset, final-scale -inversion, clamping, cancellation, accessibility, and host teardown while D3 -Zoom remains private to the optional subpath. Applications retain the accepted -semantic window, visible-row and y-domain policy, status, reset controls, and -persistence. - -Add exact-subpath `handleX` as a controlled, candidate-bound horizontal scale -handle. It owns final-scale track, rule and handle painting, nearest-candidate -snapping, pointer and touch capture, preview, commit and cancellation, keyboard -slider semantics, resize synchronization, and host teardown without a D3 -runtime. Applications retain playback or editing state, controls, validation, -status, and persistence. - -Tooltip definitions add `visibility: 'pinned'` for focusable charts whose rich -detail should mount only after activation. Pointer pinning now repaints inline -pinned mark states, and SVG and Canvas restore base paint when tooltip -dismissal clears focus completely. - -Facet definitions now preserve the datum type and identity emitted by their -child marks, type group rows as nonempty, and apply motion to the child datum. -Facets and the new exact-subpath `viewGrid` definition factory share one -full-chart scene adoption kernel with stable point and mark namespaces. -`viewGrid` arranges normal child definitions in named fixed/flexible tracks and -can align or strictly share resolved plot ranges without reserved-domain -coordinates or manual scene plotting. - -Add exact-subpath `composeViews` for heterogeneous complete chart definitions. -Opaque `fill`, `grid`, `layer`, and anchored `inset` utilities compose responsive -frames, while `shareX`, `shareY`, `alignX`, and `alignY` keep scale coordination -separate from layout. `viewGrid` remains as concise grid syntax over the same -composition engine. Child pointer and cursor settings now fail explicitly -instead of disappearing at the adoption boundary; the outer definition owns -that lifecycle. - -Controlled brush, cursor, and handle behaviors repaint the application-accepted -snapshot after a rejected terminal proposal. Continuous cursor axes invert the -resolved scale by default while retaining explicit value mapping and -coordinate-only overrides. Keyboard-disabled zoom no longer advertises or -enters focus for keyboard semantics it does not implement. - -Interrupted motion removes exact stale exit nodes and presentation state while -preserving live replacements. Composite motion inheritance retains authored -path timing, including rolling-path policy. - -Axis tick labels now accept per-candidate font size, font weight, opacity, -anchor, and x/y offset values. Accessors receive the semantic tick value, -stable pre-thinning index, resolved position, and bandwidth; resolved -presentation participates in thinning, automatic margins, facets, and motion. diff --git a/CHANGELOG.md b/CHANGELOG.md index a7a5be06..00334eb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,345 @@ # Changelog +## 0.7.0 + +### @tanstack/charts + +#### Minor Changes + +- [#60](https://github.com/TanStack/charts/pull/60) [`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9) - Expose pinned state to tooltip content and item callbacks so built-in and + framework-rendered tooltips can expand with additional detail when pinned. + Keep dismissing clicks owned by the tooltip when a framework body unmounts + during event propagation. + + Standardize public callback parameters as primary data plus a context bag. + Tooltip `format` and `formatGroup` now receive the same content context as + `content`; channel accessors use `(datum, { index, data })`; facet, focus, + legend, and spatial-index extension callbacks move their supporting values + into named context objects. Controlled signals now receive change reasons in + `{ reason }`; keyed-selection keys and focus-guide label formatters receive + their point in `{ point }`; interactive legend item labels receive + `{ visible }`. + + `ruleX` and `ruleY` now expose axis-specific presentation-only focus anchors, so + `whenFocused(..., { match: 'x' })` and `whenFocused(..., { match: 'y' })` can + reveal focused guide rules without making them interaction or tooltip targets. + + Update the published pinned-tooltip catalog case to show the energy overview, + compact hover summary, and animated pinned detail. + + Preserve distinct source rows in the linear-regression, framed-scatter, and + many-point-scatter catalog examples when car names and years repeat. + + Keep React Native chart-host focusability aligned with the shared definition + contract and toggle sticky activation exactly once per accessibility action. + +- [#55](https://github.com/TanStack/charts/pull/55) [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198) - Add renderer-native crosshair rules, categorical cursor bands, labels, and optional intersection markers plus shared focus/free cursor controllers across SVG, Canvas, motion, and React Native rendering. Focus-filtered rule marks now use non-interactive semantic anchors, built-in axis focus modes select the painted mark under the pointer before grouping or snapping, and keyed motion guides remain active through scene updates. + +- [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2) - Add native waffle, optional spatial hexbin, Delaunay link, Voronoi, + scalar-grid contour, density contour, responsive treemap and sunburst marks, + responsive Sankey composition, dot dodge layouts, typed wide-to-long fold and + polar pie transforms, and optional static force-layout and tidy-tree + transforms. Polar charts add radius- and angle-extending bar marks, responsive + radius scale ranges, post-scale text and rule offsets, and automatic outside + text anchors. These marks, layouts, and transforms own their data- or + plot-space geometry, so examples no longer need to copy scales, author D3 + paths, flip hierarchy coordinates, manually pivot metric fields, calculate + responsive label radii or bar rings, or hide hierarchy and settled network + coordinates in case utilities. The exact Sankey entry accepts semantic graph + rows and composes ordinary child marks over immutable final-pixel node and link + values without exposing D3 mutation cleanup. + + Resolved dot placement is also extensible through `createDotLayout`, which + receives final plot bounds, measured coordinates, and radii while Charts keeps + row identity, interaction, state, and motion ownership. Treemap tiling, Sankey + alignment, and named static-force factories accept D3-compatible callables in + addition to the built-in shorthands; all operate over private layout copies and + retain validation, immutability, and source lineage. + + Cartesian bars add an orientation-neutral `maxThickness` constraint that caps + their final painted categorical size after grouping and inset, without asking + definitions to estimate responsive chart bounds. Absolute inline-state inset + overrides retain their existing semantics without escaping the cap. + + Add eager `boxRows` preparation plus raw-row `boxX` and `boxY` marks with Tukey + quartiles, observed whiskers, outlier lineage, transposed orientation, and one + summary interaction target per category. The marks reuse the public semantic + rows without exposing presentation keys. Add `compositeMark` for namespaced + composition of ordinary child marks with preserved datum, channel, + interaction, and motion ownership. + + Stack layouts add inside-out series order and a zero-origin wiggle policy. + Areas, bars, and row transforms now share D3 inside-out ordering, dense sparse + cell handling, and a single global baseline translation, so streamgraphs can + consume tidy source rows without case-owned pivoting or interval generation. + Anchored stacks additionally translate ordered nonnegative series around a + named series fraction, so diverging Likert charts can keep counts in ordinary + bar definitions without manually materializing signed endpoints. + + Add an eager `waterfall` transform for ordered signed contributions, cumulative + start/end intervals, increase/decrease classification, optional grouped net + totals, and direct source lineage. + + Add eager `mosaicY` and `mosaicX` transforms for two-dimensional proportional + intervals over explicitly aggregated category pairs. They preserve semantic + categories, both normalization totals, stable source order, and direct lineage + for ordinary rectangle and text marks. Mosaic and pie share an overflow-safe + proportional interval allocator; waffle keeps its distinct rounded unit-fragment + and resolved packing policy. + + Add `lineX` as the strict transposed counterpart to `lineY`, sharing grouping, + keys, gaps, styling, interaction, motion, and renderer-neutral path output. + + Add eager `linearRegressionRowsY` and `linearRegressionRowsX` preparation plus + `linearRegressionY` and `linearRegressionX` composite marks with centered + least-squares fits, optional grouped Student-t confidence bands, semantic-domain + sampling, aggregate lineage, transposed geometry, and one interactive fitted + line per group. The marks reuse the public semantic rows without exposing + presentation keys. + + Add `differenceY` and `differenceX` composite marks that split two source-row + series at exact interpolated crossings, paint stable positive and negative + lobes, preserve derived lineage, and keep both raw boundary lines interactive. + + Add semantic `ridgelineY` / `ridgelineX` and `violinY` / `violinX` marks for + prepared normalized profiles. Both derive responsive displacement from complete + point or band category domains without numeric category surrogates. Ridgelines + own one-sided overlap and optional outlines; violins own mirrored envelopes + while binning, normalization, density estimation, and summaries remain explicit + definition concerns. Tick marks add an optional category-step-relative `span` + for responsive summary bars without authored endpoint coordinates. + + Add exact-subpath focus guide marks with renderer-neutral rules, markers, + measured labels, raw datum identity, and stable retargeting keys. Retargetable + `whenFocused` marks now enter at the active geometry, update through ordinary + mark motion, preserve interrupted spring velocity, and exit on focus clear + across SVG, Canvas, and React Native surfaces. Candidate ownership is + collision-safe for delimiter-containing keys, primitive rows match by value + and source position, and mark-state transitions no longer override another + mark's focus motion. + + Add an exact-subpath controlled signal and a controlled interactive categorical + legend. Applications retain the visible-series snapshot while Charts owns + domain-ordered toggling, post-domain geometry and focus filtering, responsive + top or bottom layout, stable native browser buttons, and static SVG fallback. + Static color and gradient legends also support top or bottom placement. + + Add exact-subpath controlled keyed selection with `keyedSelection` and + `whenSelected`. Host activation maps ordinary chart points to application keys + through a controlled signal. Selected marks keep their complete domain + contribution, then paint only matching point-owned geometry as a decorative + overlay without duplicate focus or activation targets. + + Add exact-subpath `decorative(mark)` composition. It keeps an ordinary or + resolved-layout mark's scale contribution, layout measurement, motion, + post-domain work, and painted geometry while removing interaction ownership and + exposing `never` point types. This lets one layer in a line-plus-dot composition + own focus, tooltips, and activation without changing pointer affinity. + + Add exact-subpath `brushX` as a controlled chart behavior. It resolves against + the final x scale and plot bounds, owns D3 pointer/touch lifecycle, semantic + snapping, reverse normalization, cancellation, keyboard slider handles, host + teardown, and a renderer-neutral static fallback. Applications retain the + accepted range, fixed-window policy, linked-view layout, and persistence. + + Add exact-subpath `continuousCursor` as a controlled chart behavior for an + unsnapped numeric or temporal x/y position. It resolves both final scales and + plot bounds, paints rules, a marker, and optional axis labels, owns transient + pointer/touch previews, click or tap pinning, leave/cancel cleanup, Escape and + toggle clearing, host teardown, and a renderer-neutral static fallback. + Applications retain semantic sliders, status text, formatting policy, and + persistence. + + Add exact-subpath `zoomX` as a controlled continuous horizontal-window + behavior. It owns focus-gated pointer-anchored wheel zoom, horizontal-wheel and + drag pan, touch and pinch gestures, keyboard zoom/pan/reset, final-scale + inversion, clamping, cancellation, accessibility, and host teardown while D3 + Zoom remains private to the optional subpath. Applications retain the accepted + semantic window, visible-row and y-domain policy, status, reset controls, and + persistence. + + Add exact-subpath `handleX` as a controlled, candidate-bound horizontal scale + handle. It owns final-scale track, rule and handle painting, nearest-candidate + snapping, pointer and touch capture, preview, commit and cancellation, keyboard + slider semantics, resize synchronization, and host teardown without a D3 + runtime. Applications retain playback or editing state, controls, validation, + status, and persistence. + + Tooltip definitions add `visibility: 'pinned'` for focusable charts whose rich + detail should mount only after activation. Pointer pinning now repaints inline + pinned mark states, and SVG and Canvas restore base paint when tooltip + dismissal clears focus completely. + + Facet definitions now preserve the datum type and identity emitted by their + child marks, type group rows as nonempty, and apply motion to the child datum. + Facets and the new exact-subpath `viewGrid` definition factory share one + full-chart scene adoption kernel with stable point and mark namespaces. + `viewGrid` arranges normal child definitions in named fixed/flexible tracks and + can align or strictly share resolved plot ranges without reserved-domain + coordinates or manual scene plotting. + + Add exact-subpath `composeViews` for heterogeneous complete chart definitions. + Opaque `fill`, `grid`, `layer`, and anchored `inset` utilities compose responsive + frames, while `shareX`, `shareY`, `alignX`, and `alignY` keep scale coordination + separate from layout. `viewGrid` remains as concise grid syntax over the same + composition engine. Child pointer and cursor settings now fail explicitly + instead of disappearing at the adoption boundary; the outer definition owns + that lifecycle. + + Controlled brush, cursor, and handle behaviors repaint the application-accepted + snapshot after a rejected terminal proposal. Continuous cursor axes invert the + resolved scale by default while retaining explicit value mapping and + coordinate-only overrides. Keyboard-disabled zoom no longer advertises or + enters focus for keyboard semantics it does not implement. + + Interrupted motion removes exact stale exit nodes and presentation state while + preserving live replacements. Composite motion inheritance retains authored + path timing, including rolling-path policy. + + Axis tick labels now accept per-candidate font size, font weight, opacity, + anchor, and x/y offset values. Accessors receive the semantic tick value, + stable pre-thinning index, resolved position, and bandwidth; resolved + presentation participates in thinning, automatic margins, facets, and motion. + +#### Patch Changes + +- [#58](https://github.com/TanStack/charts/pull/58) [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb) - Add validated rolling path transforms with dynamic y-domain reprojection, + continuous translated viewports with stationary guides, and a controlled focus + controller that follows presentation geometry. Default SVG rendering now + honors scene clips and gradients. + +### @tanstack/react-charts + +#### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + +### @tanstack/react-charts-catalog + +#### Patch Changes + +- [#60](https://github.com/TanStack/charts/pull/60) [`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9) - Expose pinned state to tooltip content and item callbacks so built-in and + framework-rendered tooltips can expand with additional detail when pinned. + Keep dismissing clicks owned by the tooltip when a framework body unmounts + during event propagation. + + Standardize public callback parameters as primary data plus a context bag. + Tooltip `format` and `formatGroup` now receive the same content context as + `content`; channel accessors use `(datum, { index, data })`; facet, focus, + legend, and spatial-index extension callbacks move their supporting values + into named context objects. Controlled signals now receive change reasons in + `{ reason }`; keyed-selection keys and focus-guide label formatters receive + their point in `{ point }`; interactive legend item labels receive + `{ visible }`. + + `ruleX` and `ruleY` now expose axis-specific presentation-only focus anchors, so + `whenFocused(..., { match: 'x' })` and `whenFocused(..., { match: 'y' })` can + reveal focused guide rules without making them interaction or tooltip targets. + + Update the published pinned-tooltip catalog case to show the energy overview, + compact hover summary, and animated pinned detail. + + Preserve distinct source rows in the linear-regression, framed-scatter, and + many-point-scatter catalog examples when car names and years repeat. + + Keep React Native chart-host focusability aligned with the shared definition + contract and toggle sticky activation exactly once per accessibility action. + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + - @tanstack/react-charts@0.7.0 + +### @tanstack/react-native-charts + +#### Patch Changes + +- [#60](https://github.com/TanStack/charts/pull/60) [`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9) - Expose pinned state to tooltip content and item callbacks so built-in and + framework-rendered tooltips can expand with additional detail when pinned. + Keep dismissing clicks owned by the tooltip when a framework body unmounts + during event propagation. + + Standardize public callback parameters as primary data plus a context bag. + Tooltip `format` and `formatGroup` now receive the same content context as + `content`; channel accessors use `(datum, { index, data })`; facet, focus, + legend, and spatial-index extension callbacks move their supporting values + into named context objects. Controlled signals now receive change reasons in + `{ reason }`; keyed-selection keys and focus-guide label formatters receive + their point in `{ point }`; interactive legend item labels receive + `{ visible }`. + + `ruleX` and `ruleY` now expose axis-specific presentation-only focus anchors, so + `whenFocused(..., { match: 'x' })` and `whenFocused(..., { match: 'y' })` can + reveal focused guide rules without making them interaction or tooltip targets. + + Update the published pinned-tooltip catalog case to show the energy overview, + compact hover summary, and animated pinned detail. + + Preserve distinct source rows in the linear-regression, framed-scatter, and + many-point-scatter catalog examples when car names and years repeat. + + Keep React Native chart-host focusability aligned with the shared definition + contract and toggle sticky activation exactly once per accessibility action. + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + +### @tanstack/octane-charts + +#### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + +### @tanstack/preact-charts + +#### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + +### @tanstack/vue-charts + +#### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + +### @tanstack/solid-charts + +#### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + +### @tanstack/svelte-charts + +#### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + +### @tanstack/angular-charts + +#### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + +### @tanstack/lit-charts + +#### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + +### @tanstack/alpine-charts + +#### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### @tanstack/charts diff --git a/MARKETING.md b/MARKETING.md index f4bfcea6..f8869d07 100644 --- a/MARKETING.md +++ b/MARKETING.md @@ -4,9 +4,9 @@ Last updated: 2026-08-06 ## Status -The latest public pre-alpha release is TanStack Charts `0.6.5`. Repository docs, +The latest public pre-alpha release is TanStack Charts `0.7.0`. Repository docs, examples, and the catalog follow unreleased `main` and may include contracts not -available in `0.6.5`; documentation at the verified release source revision is +available in `0.7.0`; documentation at the verified release source revision is the release record. Marketing must keep that distinction and the pre-alpha status visible until the gates in [`PLAN.md`](./PLAN.md) are complete. @@ -51,7 +51,7 @@ visual encodings. Compact TanStack primitives and native D3 callables compose inside the same definition. TanStack compiles it into a renderer-neutral keyed scene and owns the application runtime around it. -**Framework position:** The core is framework-independent. `0.6.5` ships thin +**Framework position:** The core is framework-independent. `0.7.0` ships thin adapters for React, Vue, Svelte, Solid, Angular, Preact, Lit, Alpine, and Octane. React and Octane also have Canvas components over the same runtime. @@ -458,7 +458,7 @@ about being "AI-native." | The chart catalog is smaller than AG Charts, ECharts, or Nivo | Also correct. The product thesis is a composable grammar with interoperable primitives, not first-party ownership of every specialized chart type. | | Why not use D3 or visx directly? | They provide the algorithms or primitives. TanStack supplies the application runtime: responsive layout, guides, scene compilation, lifecycle, interaction, accessibility, SSR, hydration, animation, and export. | | Why not use Observable Plot? | Plot is the closest API inspiration and remains an excellent choice for concise exploratory visualization. TanStack is an independent implementation focused on typed application integration, composable capability-level imports, framework lifecycle, and stable interactive scenes. | -| Is it ready for production? | Not yet. `0.6.5` is a public pre-alpha release. Marketing must keep the documented release gates visible until they close. | +| Is it ready for production? | Not yet. `0.7.0` is a public pre-alpha release. Marketing must keep the documented release gates visible until they close. | | Can it handle millions of live points? | Canvas is an explicit opt-in and keeps the same definition and interaction API while removing per-mark DOM cost. It still creates scene nodes and interaction points, default focus is linear without a spatial index, and overplotting does not become useful because the pixels are cheaper. Treat million-point streaming as a measured representation problem, not a renderer claim. | ## Anti-personas @@ -586,7 +586,7 @@ production case study. ### Current proof phase -- Conversion: Install `0.6.5`, read its release-source docs, explore the catalog, +- Conversion: Install `0.7.0`, read its release-source docs, explore the catalog, and report friction. - Publish architecture, benchmarks, and working examples with limitations. - Recruit a small number of chart-heavy TanStack users. @@ -623,7 +623,7 @@ tracked in [`PLAN.md`](./PLAN.md): foundation for data-rich TanStack applications and a credible choice for frontend teams whose visualizations need to grow beyond standard chart types. -**Primary conversion today:** Install `0.6.5` and complete the first chart. +**Primary conversion today:** Install `0.7.0` and complete the first chart. **Primary conversion after stable release:** Install the package and complete the first chart. diff --git a/README.md b/README.md index 1651b275..a73478e4 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ server-rendered application charts. > [!IMPORTANT] > This README follows unreleased `main`. The latest published release is -> TanStack Charts `0.6.5`; use its +> TanStack Charts `0.7.0`; use its > [release-source documentation](https://github.com/TanStack/charts/tree/4f5653e552ddf1d268b49da7046199f11b2be44c/docs). > It is pre-alpha and not ready for production use. diff --git a/docs/comparison.md b/docs/comparison.md index 7f22d6e4..cf1b8844 100644 --- a/docs/comparison.md +++ b/docs/comparison.md @@ -3,7 +3,7 @@ title: Compare Libraries description: Compare TanStack Charts with measured and documentation-reviewed charting libraries. --- -The latest published TanStack Charts release is `0.6.5`, while this page +The latest published TanStack Charts release is `0.7.0`, while this page measures unreleased workspace source against pinned competitor packages. This comparison records architectural differences and reproducible evidence without turning untested behavior into a checkmark. diff --git a/docs/installation.md b/docs/installation.md index be920992..14c7e079 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -4,7 +4,7 @@ description: Install TanStack Charts, compact scales, a framework adapter, and o --- These docs follow unreleased `main`. The latest published pre-alpha is TanStack -Charts `0.6.5`; use its +Charts `0.7.0`; use its [release-source docs](https://github.com/TanStack/charts/tree/4f5653e552ddf1d268b49da7046199f11b2be44c/docs) for the exact surface. Install the core and compact scales in each application that authors chart definitions: diff --git a/docs/overview.md b/docs/overview.md index ecb8e9b8..82eb02c3 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -4,7 +4,7 @@ description: Learn what TanStack Charts provides, how its grammar works, and whe --- These docs follow unreleased `main`. The latest published TanStack Charts -release is `0.6.5`; it is pre-alpha and its API may change between releases. +release is `0.7.0`; it is pre-alpha and its API may change between releases. TanStack Charts is a small, framework-agnostic chart grammar for TypeScript and JavaScript. Give each mark its natural data, map fields or accessors to visual diff --git a/packages/alpine-charts/CHANGELOG.md b/packages/alpine-charts/CHANGELOG.md index 1e0bf4f3..02e1dcde 100644 --- a/packages/alpine-charts/CHANGELOG.md +++ b/packages/alpine-charts/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/alpine-charts +## 0.7.0 + +### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/alpine-charts/package.json b/packages/alpine-charts/package.json index 4c3d8e8e..37ab4f0b 100644 --- a/packages/alpine-charts/package.json +++ b/packages/alpine-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/alpine-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/angular-charts/CHANGELOG.md b/packages/angular-charts/CHANGELOG.md index f3348557..2bb2c9ed 100644 --- a/packages/angular-charts/CHANGELOG.md +++ b/packages/angular-charts/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/angular-charts +## 0.7.0 + +### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/angular-charts/package.json b/packages/angular-charts/package.json index d545d941..bb428c0e 100644 --- a/packages/angular-charts/package.json +++ b/packages/angular-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/angular-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/charts-core/CHANGELOG.md b/packages/charts-core/CHANGELOG.md index a773ca6d..affda359 100644 --- a/packages/charts-core/CHANGELOG.md +++ b/packages/charts-core/CHANGELOG.md @@ -1,5 +1,211 @@ # @tanstack/charts +## 0.7.0 + +### Minor Changes + +- [#60](https://github.com/TanStack/charts/pull/60) [`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9) - Expose pinned state to tooltip content and item callbacks so built-in and + framework-rendered tooltips can expand with additional detail when pinned. + Keep dismissing clicks owned by the tooltip when a framework body unmounts + during event propagation. + + Standardize public callback parameters as primary data plus a context bag. + Tooltip `format` and `formatGroup` now receive the same content context as + `content`; channel accessors use `(datum, { index, data })`; facet, focus, + legend, and spatial-index extension callbacks move their supporting values + into named context objects. Controlled signals now receive change reasons in + `{ reason }`; keyed-selection keys and focus-guide label formatters receive + their point in `{ point }`; interactive legend item labels receive + `{ visible }`. + + `ruleX` and `ruleY` now expose axis-specific presentation-only focus anchors, so + `whenFocused(..., { match: 'x' })` and `whenFocused(..., { match: 'y' })` can + reveal focused guide rules without making them interaction or tooltip targets. + + Update the published pinned-tooltip catalog case to show the energy overview, + compact hover summary, and animated pinned detail. + + Preserve distinct source rows in the linear-regression, framed-scatter, and + many-point-scatter catalog examples when car names and years repeat. + + Keep React Native chart-host focusability aligned with the shared definition + contract and toggle sticky activation exactly once per accessibility action. + +- [#55](https://github.com/TanStack/charts/pull/55) [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198) - Add renderer-native crosshair rules, categorical cursor bands, labels, and optional intersection markers plus shared focus/free cursor controllers across SVG, Canvas, motion, and React Native rendering. Focus-filtered rule marks now use non-interactive semantic anchors, built-in axis focus modes select the painted mark under the pointer before grouping or snapping, and keyed motion guides remain active through scene updates. + +- [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2) - Add native waffle, optional spatial hexbin, Delaunay link, Voronoi, + scalar-grid contour, density contour, responsive treemap and sunburst marks, + responsive Sankey composition, dot dodge layouts, typed wide-to-long fold and + polar pie transforms, and optional static force-layout and tidy-tree + transforms. Polar charts add radius- and angle-extending bar marks, responsive + radius scale ranges, post-scale text and rule offsets, and automatic outside + text anchors. These marks, layouts, and transforms own their data- or + plot-space geometry, so examples no longer need to copy scales, author D3 + paths, flip hierarchy coordinates, manually pivot metric fields, calculate + responsive label radii or bar rings, or hide hierarchy and settled network + coordinates in case utilities. The exact Sankey entry accepts semantic graph + rows and composes ordinary child marks over immutable final-pixel node and link + values without exposing D3 mutation cleanup. + + Resolved dot placement is also extensible through `createDotLayout`, which + receives final plot bounds, measured coordinates, and radii while Charts keeps + row identity, interaction, state, and motion ownership. Treemap tiling, Sankey + alignment, and named static-force factories accept D3-compatible callables in + addition to the built-in shorthands; all operate over private layout copies and + retain validation, immutability, and source lineage. + + Cartesian bars add an orientation-neutral `maxThickness` constraint that caps + their final painted categorical size after grouping and inset, without asking + definitions to estimate responsive chart bounds. Absolute inline-state inset + overrides retain their existing semantics without escaping the cap. + + Add eager `boxRows` preparation plus raw-row `boxX` and `boxY` marks with Tukey + quartiles, observed whiskers, outlier lineage, transposed orientation, and one + summary interaction target per category. The marks reuse the public semantic + rows without exposing presentation keys. Add `compositeMark` for namespaced + composition of ordinary child marks with preserved datum, channel, + interaction, and motion ownership. + + Stack layouts add inside-out series order and a zero-origin wiggle policy. + Areas, bars, and row transforms now share D3 inside-out ordering, dense sparse + cell handling, and a single global baseline translation, so streamgraphs can + consume tidy source rows without case-owned pivoting or interval generation. + Anchored stacks additionally translate ordered nonnegative series around a + named series fraction, so diverging Likert charts can keep counts in ordinary + bar definitions without manually materializing signed endpoints. + + Add an eager `waterfall` transform for ordered signed contributions, cumulative + start/end intervals, increase/decrease classification, optional grouped net + totals, and direct source lineage. + + Add eager `mosaicY` and `mosaicX` transforms for two-dimensional proportional + intervals over explicitly aggregated category pairs. They preserve semantic + categories, both normalization totals, stable source order, and direct lineage + for ordinary rectangle and text marks. Mosaic and pie share an overflow-safe + proportional interval allocator; waffle keeps its distinct rounded unit-fragment + and resolved packing policy. + + Add `lineX` as the strict transposed counterpart to `lineY`, sharing grouping, + keys, gaps, styling, interaction, motion, and renderer-neutral path output. + + Add eager `linearRegressionRowsY` and `linearRegressionRowsX` preparation plus + `linearRegressionY` and `linearRegressionX` composite marks with centered + least-squares fits, optional grouped Student-t confidence bands, semantic-domain + sampling, aggregate lineage, transposed geometry, and one interactive fitted + line per group. The marks reuse the public semantic rows without exposing + presentation keys. + + Add `differenceY` and `differenceX` composite marks that split two source-row + series at exact interpolated crossings, paint stable positive and negative + lobes, preserve derived lineage, and keep both raw boundary lines interactive. + + Add semantic `ridgelineY` / `ridgelineX` and `violinY` / `violinX` marks for + prepared normalized profiles. Both derive responsive displacement from complete + point or band category domains without numeric category surrogates. Ridgelines + own one-sided overlap and optional outlines; violins own mirrored envelopes + while binning, normalization, density estimation, and summaries remain explicit + definition concerns. Tick marks add an optional category-step-relative `span` + for responsive summary bars without authored endpoint coordinates. + + Add exact-subpath focus guide marks with renderer-neutral rules, markers, + measured labels, raw datum identity, and stable retargeting keys. Retargetable + `whenFocused` marks now enter at the active geometry, update through ordinary + mark motion, preserve interrupted spring velocity, and exit on focus clear + across SVG, Canvas, and React Native surfaces. Candidate ownership is + collision-safe for delimiter-containing keys, primitive rows match by value + and source position, and mark-state transitions no longer override another + mark's focus motion. + + Add an exact-subpath controlled signal and a controlled interactive categorical + legend. Applications retain the visible-series snapshot while Charts owns + domain-ordered toggling, post-domain geometry and focus filtering, responsive + top or bottom layout, stable native browser buttons, and static SVG fallback. + Static color and gradient legends also support top or bottom placement. + + Add exact-subpath controlled keyed selection with `keyedSelection` and + `whenSelected`. Host activation maps ordinary chart points to application keys + through a controlled signal. Selected marks keep their complete domain + contribution, then paint only matching point-owned geometry as a decorative + overlay without duplicate focus or activation targets. + + Add exact-subpath `decorative(mark)` composition. It keeps an ordinary or + resolved-layout mark's scale contribution, layout measurement, motion, + post-domain work, and painted geometry while removing interaction ownership and + exposing `never` point types. This lets one layer in a line-plus-dot composition + own focus, tooltips, and activation without changing pointer affinity. + + Add exact-subpath `brushX` as a controlled chart behavior. It resolves against + the final x scale and plot bounds, owns D3 pointer/touch lifecycle, semantic + snapping, reverse normalization, cancellation, keyboard slider handles, host + teardown, and a renderer-neutral static fallback. Applications retain the + accepted range, fixed-window policy, linked-view layout, and persistence. + + Add exact-subpath `continuousCursor` as a controlled chart behavior for an + unsnapped numeric or temporal x/y position. It resolves both final scales and + plot bounds, paints rules, a marker, and optional axis labels, owns transient + pointer/touch previews, click or tap pinning, leave/cancel cleanup, Escape and + toggle clearing, host teardown, and a renderer-neutral static fallback. + Applications retain semantic sliders, status text, formatting policy, and + persistence. + + Add exact-subpath `zoomX` as a controlled continuous horizontal-window + behavior. It owns focus-gated pointer-anchored wheel zoom, horizontal-wheel and + drag pan, touch and pinch gestures, keyboard zoom/pan/reset, final-scale + inversion, clamping, cancellation, accessibility, and host teardown while D3 + Zoom remains private to the optional subpath. Applications retain the accepted + semantic window, visible-row and y-domain policy, status, reset controls, and + persistence. + + Add exact-subpath `handleX` as a controlled, candidate-bound horizontal scale + handle. It owns final-scale track, rule and handle painting, nearest-candidate + snapping, pointer and touch capture, preview, commit and cancellation, keyboard + slider semantics, resize synchronization, and host teardown without a D3 + runtime. Applications retain playback or editing state, controls, validation, + status, and persistence. + + Tooltip definitions add `visibility: 'pinned'` for focusable charts whose rich + detail should mount only after activation. Pointer pinning now repaints inline + pinned mark states, and SVG and Canvas restore base paint when tooltip + dismissal clears focus completely. + + Facet definitions now preserve the datum type and identity emitted by their + child marks, type group rows as nonempty, and apply motion to the child datum. + Facets and the new exact-subpath `viewGrid` definition factory share one + full-chart scene adoption kernel with stable point and mark namespaces. + `viewGrid` arranges normal child definitions in named fixed/flexible tracks and + can align or strictly share resolved plot ranges without reserved-domain + coordinates or manual scene plotting. + + Add exact-subpath `composeViews` for heterogeneous complete chart definitions. + Opaque `fill`, `grid`, `layer`, and anchored `inset` utilities compose responsive + frames, while `shareX`, `shareY`, `alignX`, and `alignY` keep scale coordination + separate from layout. `viewGrid` remains as concise grid syntax over the same + composition engine. Child pointer and cursor settings now fail explicitly + instead of disappearing at the adoption boundary; the outer definition owns + that lifecycle. + + Controlled brush, cursor, and handle behaviors repaint the application-accepted + snapshot after a rejected terminal proposal. Continuous cursor axes invert the + resolved scale by default while retaining explicit value mapping and + coordinate-only overrides. Keyboard-disabled zoom no longer advertises or + enters focus for keyboard semantics it does not implement. + + Interrupted motion removes exact stale exit nodes and presentation state while + preserving live replacements. Composite motion inheritance retains authored + path timing, including rolling-path policy. + + Axis tick labels now accept per-candidate font size, font weight, opacity, + anchor, and x/y offset values. Accessors receive the semantic tick value, + stable pre-thinning index, resolved position, and bandwidth; resolved + presentation participates in thinning, automatic margins, facets, and motion. + +### Patch Changes + +- [#58](https://github.com/TanStack/charts/pull/58) [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb) - Add validated rolling path transforms with dynamic y-domain reprojection, + continuous translated viewports with stationary guides, and a controlled focus + controller that follows presentation geometry. Default SVG rendering now + honors scene clips and gradients. + ## 0.6.5 ### Patch Changes diff --git a/packages/charts-core/docs/comparison.md b/packages/charts-core/docs/comparison.md index 7f22d6e4..cf1b8844 100644 --- a/packages/charts-core/docs/comparison.md +++ b/packages/charts-core/docs/comparison.md @@ -3,7 +3,7 @@ title: Compare Libraries description: Compare TanStack Charts with measured and documentation-reviewed charting libraries. --- -The latest published TanStack Charts release is `0.6.5`, while this page +The latest published TanStack Charts release is `0.7.0`, while this page measures unreleased workspace source against pinned competitor packages. This comparison records architectural differences and reproducible evidence without turning untested behavior into a checkmark. diff --git a/packages/charts-core/docs/installation.md b/packages/charts-core/docs/installation.md index be920992..14c7e079 100644 --- a/packages/charts-core/docs/installation.md +++ b/packages/charts-core/docs/installation.md @@ -4,7 +4,7 @@ description: Install TanStack Charts, compact scales, a framework adapter, and o --- These docs follow unreleased `main`. The latest published pre-alpha is TanStack -Charts `0.6.5`; use its +Charts `0.7.0`; use its [release-source docs](https://github.com/TanStack/charts/tree/4f5653e552ddf1d268b49da7046199f11b2be44c/docs) for the exact surface. Install the core and compact scales in each application that authors chart definitions: diff --git a/packages/charts-core/docs/overview.md b/packages/charts-core/docs/overview.md index ecb8e9b8..82eb02c3 100644 --- a/packages/charts-core/docs/overview.md +++ b/packages/charts-core/docs/overview.md @@ -4,7 +4,7 @@ description: Learn what TanStack Charts provides, how its grammar works, and whe --- These docs follow unreleased `main`. The latest published TanStack Charts -release is `0.6.5`; it is pre-alpha and its API may change between releases. +release is `0.7.0`; it is pre-alpha and its API may change between releases. TanStack Charts is a small, framework-agnostic chart grammar for TypeScript and JavaScript. Give each mark its natural data, map fields or accessors to visual diff --git a/packages/charts-core/package.json b/packages/charts-core/package.json index bf3d3a70..8378978b 100644 --- a/packages/charts-core/package.json +++ b/packages/charts-core/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/charts-scales/CHANGELOG.md b/packages/charts-scales/CHANGELOG.md index 4ea4d6ff..1a9e5ab2 100644 --- a/packages/charts-scales/CHANGELOG.md +++ b/packages/charts-scales/CHANGELOG.md @@ -1,5 +1,7 @@ # @tanstack/charts-scales +## 0.7.0 + ## 0.6.5 ## 0.6.4 diff --git a/packages/charts-scales/package.json b/packages/charts-scales/package.json index 1a6f88c8..28946d92 100644 --- a/packages/charts-scales/package.json +++ b/packages/charts-scales/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/charts-scales", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/lit-charts/CHANGELOG.md b/packages/lit-charts/CHANGELOG.md index 23011635..8384e04e 100644 --- a/packages/lit-charts/CHANGELOG.md +++ b/packages/lit-charts/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/lit-charts +## 0.7.0 + +### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/lit-charts/package.json b/packages/lit-charts/package.json index 367e4381..3b424db1 100644 --- a/packages/lit-charts/package.json +++ b/packages/lit-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/lit-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/octane-charts/CHANGELOG.md b/packages/octane-charts/CHANGELOG.md index 88c9a943..ae510ab1 100644 --- a/packages/octane-charts/CHANGELOG.md +++ b/packages/octane-charts/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/octane-charts +## 0.7.0 + +### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/octane-charts/package.json b/packages/octane-charts/package.json index 11bc73a8..0f54e77a 100644 --- a/packages/octane-charts/package.json +++ b/packages/octane-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/octane-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/preact-charts/CHANGELOG.md b/packages/preact-charts/CHANGELOG.md index 5a0d7c46..369bdfbf 100644 --- a/packages/preact-charts/CHANGELOG.md +++ b/packages/preact-charts/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/preact-charts +## 0.7.0 + +### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/preact-charts/package.json b/packages/preact-charts/package.json index 0f5d5d0e..a3991eb0 100644 --- a/packages/preact-charts/package.json +++ b/packages/preact-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/preact-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/react-charts-catalog/CHANGELOG.md b/packages/react-charts-catalog/CHANGELOG.md index e6ef0ef5..fa4a1898 100644 --- a/packages/react-charts-catalog/CHANGELOG.md +++ b/packages/react-charts-catalog/CHANGELOG.md @@ -1,5 +1,40 @@ # @tanstack/react-charts-catalog +## 0.7.0 + +### Patch Changes + +- [#60](https://github.com/TanStack/charts/pull/60) [`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9) - Expose pinned state to tooltip content and item callbacks so built-in and + framework-rendered tooltips can expand with additional detail when pinned. + Keep dismissing clicks owned by the tooltip when a framework body unmounts + during event propagation. + + Standardize public callback parameters as primary data plus a context bag. + Tooltip `format` and `formatGroup` now receive the same content context as + `content`; channel accessors use `(datum, { index, data })`; facet, focus, + legend, and spatial-index extension callbacks move their supporting values + into named context objects. Controlled signals now receive change reasons in + `{ reason }`; keyed-selection keys and focus-guide label formatters receive + their point in `{ point }`; interactive legend item labels receive + `{ visible }`. + + `ruleX` and `ruleY` now expose axis-specific presentation-only focus anchors, so + `whenFocused(..., { match: 'x' })` and `whenFocused(..., { match: 'y' })` can + reveal focused guide rules without making them interaction or tooltip targets. + + Update the published pinned-tooltip catalog case to show the energy overview, + compact hover summary, and animated pinned detail. + + Preserve distinct source rows in the linear-regression, framed-scatter, and + many-point-scatter catalog examples when car names and years repeat. + + Keep React Native chart-host focusability aligned with the shared definition + contract and toggle sticky activation exactly once per accessibility action. + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + - @tanstack/react-charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/react-charts-catalog/package.json b/packages/react-charts-catalog/package.json index 9e808c0f..19005ac3 100644 --- a/packages/react-charts-catalog/package.json +++ b/packages/react-charts-catalog/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-charts-catalog", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/react-charts/CHANGELOG.md b/packages/react-charts/CHANGELOG.md index 1d82795f..b4937bf4 100644 --- a/packages/react-charts/CHANGELOG.md +++ b/packages/react-charts/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/react-charts +## 0.7.0 + +### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/react-charts/package.json b/packages/react-charts/package.json index 3eca8eae..c6c3ca5a 100644 --- a/packages/react-charts/package.json +++ b/packages/react-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/react-native-charts/CHANGELOG.md b/packages/react-native-charts/CHANGELOG.md index 6ba5b074..faac9e67 100644 --- a/packages/react-native-charts/CHANGELOG.md +++ b/packages/react-native-charts/CHANGELOG.md @@ -1,5 +1,39 @@ # @tanstack/react-native-charts +## 0.7.0 + +### Patch Changes + +- [#60](https://github.com/TanStack/charts/pull/60) [`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9) - Expose pinned state to tooltip content and item callbacks so built-in and + framework-rendered tooltips can expand with additional detail when pinned. + Keep dismissing clicks owned by the tooltip when a framework body unmounts + during event propagation. + + Standardize public callback parameters as primary data plus a context bag. + Tooltip `format` and `formatGroup` now receive the same content context as + `content`; channel accessors use `(datum, { index, data })`; facet, focus, + legend, and spatial-index extension callbacks move their supporting values + into named context objects. Controlled signals now receive change reasons in + `{ reason }`; keyed-selection keys and focus-guide label formatters receive + their point in `{ point }`; interactive legend item labels receive + `{ visible }`. + + `ruleX` and `ruleY` now expose axis-specific presentation-only focus anchors, so + `whenFocused(..., { match: 'x' })` and `whenFocused(..., { match: 'y' })` can + reveal focused guide rules without making them interaction or tooltip targets. + + Update the published pinned-tooltip catalog case to show the energy overview, + compact hover summary, and animated pinned detail. + + Preserve distinct source rows in the linear-regression, framed-scatter, and + many-point-scatter catalog examples when car names and years repeat. + + Keep React Native chart-host focusability aligned with the shared definition + contract and toggle sticky activation exactly once per accessibility action. + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/react-native-charts/package.json b/packages/react-native-charts/package.json index 0db2437a..a155651c 100644 --- a/packages/react-native-charts/package.json +++ b/packages/react-native-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/react-native-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/solid-charts/CHANGELOG.md b/packages/solid-charts/CHANGELOG.md index e004d385..af43dacf 100644 --- a/packages/solid-charts/CHANGELOG.md +++ b/packages/solid-charts/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/solid-charts +## 0.7.0 + +### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/solid-charts/package.json b/packages/solid-charts/package.json index f8651764..d75536d4 100644 --- a/packages/solid-charts/package.json +++ b/packages/solid-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/solid-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/svelte-charts/CHANGELOG.md b/packages/svelte-charts/CHANGELOG.md index 49f4e1ea..d70e2597 100644 --- a/packages/svelte-charts/CHANGELOG.md +++ b/packages/svelte-charts/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/svelte-charts +## 0.7.0 + +### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/svelte-charts/package.json b/packages/svelte-charts/package.json index 0a3a0591..93b396f7 100644 --- a/packages/svelte-charts/package.json +++ b/packages/svelte-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/svelte-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": { diff --git a/packages/vue-charts/CHANGELOG.md b/packages/vue-charts/CHANGELOG.md index eabf1a66..19c95a04 100644 --- a/packages/vue-charts/CHANGELOG.md +++ b/packages/vue-charts/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/vue-charts +## 0.7.0 + +### Patch Changes + +- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]: + - @tanstack/charts@0.7.0 + ## 0.6.5 ### Patch Changes diff --git a/packages/vue-charts/package.json b/packages/vue-charts/package.json index f44ceb44..8847d07a 100644 --- a/packages/vue-charts/package.json +++ b/packages/vue-charts/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/vue-charts", - "version": "0.6.5", + "version": "0.7.0", "private": false, "license": "MIT", "repository": {