Skip to content

Add expanding pinned tooltips and consistent callback contexts - #60

Merged
tannerlinsley merged 11 commits into
mainfrom
taren/expanding-pinned-tooltip
Aug 5, 2026
Merged

Add expanding pinned tooltips and consistent callback contexts#60
tannerlinsley merged 11 commits into
mainfrom
taren/expanding-pinned-tooltip

Conversation

@tannerlinsley

@tannerlinsley tannerlinsley commented Aug 5, 2026

Copy link
Copy Markdown
Member

What changed

  • Expose pinned tooltip state to built-in tooltip customization and framework-rendered tooltip content, including React Native.
  • Standardize public callbacks around at most two arguments: primary data or purpose first, then a named context options bag. Tooltip callbacks now share format(point, context), formatGroup(points, context), and content(points, context).
  • Add a recursive public-callable inventory gate covering 527 reachable callback surfaces.
  • Match the source energy example with the annual overview, consumption area, split solid/hatched solar bars, focused-month guide, exact June detail, and animated compact-to-pinned tooltip.
  • Add presentation-only focus candidates so focused guide rules do not become interaction or tooltip targets.
  • Cover click, keyboard, Escape, close-button, accessibility, responsive, callback-context, packed-consumer, framework-adapter, and paired Recharts behavior.
  • Update canonical and generated docs, migration guidance, API friction evidence, bundle baselines, and the pending changeset for the core, React Native, and catalog packages.

Why

Built-in tooltip formatting and custom renderer content now receive the same pinned-state context. Callback contracts across the library use a consistent primary-value-plus-context shape.

Validation

  • pnpm validate — all 19 targets pass; 144 test files and 846 tests
  • documentation contract — 83 pages, 83 catalog embeds, and 17 executable examples
  • packed exports, declarations, runtime, React Native bare/Expo Metro, and seven framework adapters
  • bundle-size policy and locked universal baseline checks
  • pnpm benchmark:check — all 60 comparison bundles pass
  • pnpm conformance:quick -- --case=84-pinned-nested-chart-tooltip — visual, behavior, geometry, and type gates pass at both sizes and themes; 99.6% geometry similarity

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This change adds expanding pinned energy-tooltip coverage, standardizes public callback context parameters, adds presentation-only focus points and dismissal handling, updates callback validation, and refreshes related documentation, examples, catalog metadata, and benchmark baselines.

Changes

Chart behavior and conformance

Layer / File(s) Summary
Expanding energy tooltip
benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/*, packages/react-charts-catalog/src/index.ts
Replaces the penguin case with an energy chart. Hover shows compact content. Click or keyboard activation pins and expands the tooltip with detailed rows and a nested chart. Escape and close controls dismiss it.
Tooltip and focus runtime
packages/charts-core/src/tooltip.ts, packages/charts-core/src/renderer.ts, packages/charts-core/src/rule.ts, packages/charts-core/src/scene.ts, packages/charts-core/src/runtime.test.ts, packages/charts-core/src/renderer.test.ts
Adds pinned tooltip context, composed-path dismissal detection, presentation-only rule focus points, and regression coverage for focus cleanup and pinned formatting.
Public callback contracts
packages/charts-core/src/types.ts, packages/charts-core/src/facet.ts, packages/charts-core/src/focus.ts, packages/charts-core/src/legend.ts, packages/charts-core/src/mark.ts, packages/charts-core/src/index.ts, packages/charts-core/src/universal-types.ts, packages/react-native-charts/src/*
Changes callbacks to use a primary value plus a named context object. The contexts cover accessors, facets, focus, spatial indexes, legends, and tooltip formatting.
Validation and documentation
scripts/public-callback-contract.*, scripts/check-packed-consumers.mjs, docs/**, packages/charts-core/docs/**, CONTRIBUTING.md, PLAN.md, API-FRICTION.md
Adds public callback inventory and validation. Updates migration guidance, API references, tooltip behavior documentation, and callback contract tests.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant ChartRenderer
  participant Tooltip
  participant Callback
  User->>ChartRenderer: hover or focus point
  ChartRenderer->>Tooltip: render transient tooltip with pinned=false
  User->>ChartRenderer: click or press Enter
  ChartRenderer->>Tooltip: render expanded tooltip with pinned=true
  Tooltip->>Callback: provide shared tooltip context
  User->>ChartRenderer: press Escape or click close
  ChartRenderer->>Tooltip: dismiss and clear focus
Loading

Possibly related PRs

  • TanStack/charts#29: Both changes update focus, renderer, scene, and spatial-index callback infrastructure.
  • TanStack/charts#39: Both changes update bundle baselines and comparison metadata.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the pull request's two main changes: expanding pinned tooltips and standardized callback contexts.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch taren/expanding-pinned-tooltip

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@tannerlinsley tannerlinsley changed the title Add expanding pinned tooltip support Add expanding pinned tooltips and consistent callback contexts Aug 5, 2026
@tannerlinsley tannerlinsley added the full-conformance Run the complete standard conformance matrix for this pull request label Aug 5, 2026
@tannerlinsley
tannerlinsley marked this pull request as ready for review August 5, 2026 16:25
@nx-cloud

nx-cloud Bot commented Aug 5, 2026

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit f58bdb3

Command Status Duration Result
nx run charts-workspace:ci ✅ Succeeded 3m 6s View ↗

☁️ Nx Cloud last updated this comment at 2026-08-05 17:03:40 UTC

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 10

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/charts-core/docs/reference/focus-and-interaction.md (1)

139-353: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Move these documentation changes to the root docs/ tree.

Direct edits under packages/charts-core/docs will be overwritten by documentation synchronization. Update the matching root documentation files, then run pnpm docs:sync.

  • packages/charts-core/docs/reference/focus-and-interaction.md#L139-L353: remove the direct changes and regenerate this file from its root docs/ source.
  • packages/charts-core/docs/reference/marks/geo.md#L65-L65: remove the direct change and regenerate this file from its root docs/ source.
  • packages/charts-core/docs/reference/marks/text-frame-and-facet.md#L123-L134: remove the direct changes and regenerate this file from its root docs/ source.

As per coding guidelines, author public documentation only in the root docs/ tree and do not directly edit packages/charts-core/docs; use pnpm docs:sync.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/charts-core/docs/reference/focus-and-interaction.md` around lines
139 - 353, Move the documentation updates from
packages/charts-core/docs/reference/focus-and-interaction.md lines 139-353,
packages/charts-core/docs/reference/marks/geo.md line 65, and
packages/charts-core/docs/reference/marks/text-frame-and-facet.md lines 123-134
into their corresponding source files under the root docs/ tree; remove the
direct generated-file edits and run pnpm docs:sync to regenerate all three
package documentation files.

Source: Coding guidelines

🧹 Nitpick comments (6)
benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/tooltip-body.tsx (1)

59-78: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Reuse consumptionBreakdown for the four consumption detail rows.

consumptionBreakdown(month) in model.ts already returns label, color, and value for the same four segments, and view.tsx uses it for the nested chart. These four DetailRow elements repeat those labels and colors. A future label or color change must then be applied in two places.

♻️ Proposed refactor
-              <DetailRow
-                color={energyColors.household}
-                label="Household"
-                value={formatEnergy(month.household)}
-              />
-              <DetailRow
-                color={energyColors.heatPump}
-                label="Heat pump"
-                value={formatEnergy(month.heatPump)}
-              />
-              <DetailRow
-                color={energyColors.hotWater}
-                label="Hot water"
-                value={formatEnergy(month.hotWater)}
-              />
-              <DetailRow
-                color={energyColors.evCharging}
-                label="EV charging"
-                value={formatEnergy(month.evCharging)}
-              />
+              {consumptionBreakdown(month).map((part) => (
+                <DetailRow
+                  key={part.id}
+                  color={part.color}
+                  label={part.label}
+                  value={formatEnergy(part.value)}
+                />
+              ))}

Add the import:

import { consumptionBreakdown, energyColors, formatEnergy, formatPercent } from './model'
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/tooltip-body.tsx`
around lines 59 - 78, Update the tooltip component’s four consumption DetailRow
elements to render by mapping over consumptionBreakdown(month), using each
returned label, color, and value while preserving the existing DetailRow and
formatting behavior. Reuse the existing consumptionBreakdown and related model
imports instead of duplicating segment labels and colors.
benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/view.tsx (1)

449-453: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Move monthFromTarget into the shared model.ts module. Both renderers define the identical helper, which parses the month:<id> conformance anchor. The shared root cause is that anchor parsing lives in each renderer instead of the shared model that already exports isEnergyMonthId.

  • benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/view.tsx#L449-L453: remove the local monthFromTarget definition and import it from ./model.
  • benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/recharts.ts#L782-L786: remove the duplicate definition and import the same helper from ./model.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/view.tsx` around
lines 449 - 453, Move monthFromTarget into the shared model.ts module, alongside
isEnergyMonthId, and export it for both renderers. In
benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/view.tsx lines
449-453, remove the local definition and import the shared helper; make the same
removal and import change in recharts.ts lines 782-786, preserving the existing
anchor parsing behavior.
scripts/public-callback-contract.mjs (1)

782-812: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Move the category exemption out of the signature loop.

The upstreamProtocol and serviceMethod test at Lines 783 to 788 does not depend on parameters. It re-evaluates for every signature of the surface. Hoist it above the loop so the exemption reads as a surface-level rule.

♻️ Proposed refactor
+    if (
+      category === callbackCategories.upstreamProtocol ||
+      category === callbackCategories.serviceMethod
+    ) {
+      continue
+    }
+
     for (const parameters of surface.signatures) {
-      if (
-        category === callbackCategories.upstreamProtocol ||
-        category === callbackCategories.serviceMethod
-      ) {
-        continue
-      }
       if (parameters.length > 2) {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/public-callback-contract.mjs` around lines 782 - 812, Move the
upstreamProtocol/serviceMethod exemption from inside the signature loop to a
surface-level conditional before iterating over surface.signatures, so those
categories skip the entire signature validation once. Keep the existing
positional-argument and second-argument checks unchanged for all other
categories.
.changeset/brave-tooltips-expand.md (1)

7-22: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider recording the focused-rule change in this changeset.

The friction log entry F-213 states that ruleX and ruleY now expose presentation-only focus points, so whenFocused(ruleX(...), { match: "x" }) renders. That is a user-visible behavior change in @tanstack/charts, but this changeset does not mention it. Add a short paragraph so the release notes describe it.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.changeset/brave-tooltips-expand.md around lines 7 - 22, Add a short
paragraph to the changeset documenting the user-visible focused-rule behavior:
presentation-only focus points exposed by ruleX and ruleY now allow
whenFocused(ruleX(...), { match: "x" }) to render. Keep the wording concise and
scoped to this `@tanstack/charts` behavior.
scripts/compare-plot-catalog.mjs (1)

1961-1979: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Hoist the shared paint lookup and rename patternId.

patternId now holds either a pattern id or a gradient id, and element.ownerDocument.getElementById(patternId) runs twice on the gradient path. Resolve the referenced element once and rename the identifier to match its new meaning. Behavior stays the same.

♻️ Proposed refactor
           if (style.fill && style.fill !== 'none') {
-            const patternId = style.fill.match(
+            const paintId = style.fill.match(
               /url\((?:["'])?#([^"')]+)(?:["'])?\)/,
             )?.[1]
-            const patternPaint = patternId
-              ? element.ownerDocument
-                  .getElementById(patternId)
-                  ?.querySelector('rect, path')
-              : undefined
+            const paintElement = paintId
+              ? element.ownerDocument.getElementById(paintId)
+              : undefined
+            const patternPaint = paintElement?.querySelector('rect, path')
             if (patternPaint) return getComputedStyle(patternPaint).fill
-            const gradientStop = patternId
-              ? element.ownerDocument
-                  .getElementById(patternId)
-                  ?.querySelector('stop')
-              : undefined
+            const gradientStop = paintElement?.querySelector('stop')
             return gradientStop
               ? getComputedStyle(gradientStop).getPropertyValue('stop-color')
               : style.fill
           }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/compare-plot-catalog.mjs` around lines 1961 - 1979, In the
fill-handling logic, rename patternId to a neutral reference identifier and
resolve element.ownerDocument.getElementById(...) once into a shared
referenced-element variable. Reuse that lookup for both the patternPaint and
gradientStop queries, preserving the existing fallback and paint-resolution
behavior.
scripts/check-packed-consumers.mjs (1)

1092-1104: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add a formatGroup assertion to the packed tooltip contract.

This fixture proves that packed declarations expose the shared context to format. The changeset also changes formatGroup(points, context), but no fixture exercises it. Add a formatGroup callback here so the packed-export gate covers both migrated tooltip formatters.

♻️ Proposed addition
         format(point, context) {
           point.datum.id.toUpperCase()
           point.xValue.toUpperCase()
           point.yValue.toFixed(0)
           context.pinned.valueOf()
           context.formatX(point.xValue)
           context.formatY(point.yValue)
           return point.datum.category
         },
+        formatGroup(points, context) {
+          context.pinned.valueOf()
+          return points
+            .map((groupPoint) => context.formatY(groupPoint.yValue))
+            .join(', ')
+        },
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/check-packed-consumers.mjs` around lines 1092 - 1104, Add a
formatGroup callback alongside the existing tooltip.format fixture to exercise
the packed tooltip contract, using the callback’s points and shared context to
assert the migrated formatGroup signature and return a valid group result. Keep
the existing format callback unchanged and ensure the fixture covers context
access through formatGroup as well.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/view.tsx`:
- Around line 196-201: Update the interactive chart’s TooltipChart invocation to
pass chartWidth instead of input.width as initialWidth. Keep the existing
height, definition, and renderSvg wiring unchanged so the initial chart width
matches its container and energyDefinition’s tooltipPlacement calculation.

In `@docs/guides/migrating.md`:
- Around line 66-79: Update the breaking-change list in the migration guide to
include the tooltip content signature change from content(points) to
content(points, context). Explain that implementations should use the provided
context, including its pinned-state information when applicable, alongside the
existing format and formatGroup migration guidance.

In `@docs/reference/scales-guides-and-color.md`:
- Around line 453-460: Update the documentation sentence following the
ChartColorLegendContext callback signatures to distinguish the return values:
height returns a number, while only render returns one keyed SceneNode.

In `@packages/charts-core/docs/comparison.md`:
- Around line 15-22: Move the measured-revision table changes from
packages/charts-core/docs/comparison.md#L15-L22, the bundle-range change from
packages/charts-core/docs/comparison.md#L109, and the accessor documentation
from packages/charts-core/docs/concepts/data-and-channels.md#L45-L50 into the
corresponding root docs/comparison.md and docs/concepts/data-and-channels.md
sources, then run pnpm docs:sync to regenerate all copies; do not edit the
generated packages/charts-core/docs files directly.

In `@packages/charts-core/docs/guides/migrating.md`:
- Around line 77-79: Update the source migration guide under the root docs/ tree
to document that content receives ChartTooltipContentContext as its second
argument, alongside format and formatGroup; then run pnpm docs:sync to
regenerate this packages/charts-core/docs copy. Do not edit generated
documentation directly.

In `@packages/charts-core/docs/reference/scales-guides-and-color.md`:
- Around line 453-460: Move the legend contract text from
packages/charts-core/docs/reference/scales-guides-and-color.md lines 453-460
into its matching root docs/ source, and move the callback-contract text plus
remaining changes from packages/charts-core/docs/reference/types.md lines 16-22
into its matching root docs/ source. Regenerate both generated copies with pnpm
docs:sync; do not edit either generated file directly.

In `@packages/charts-core/src/tooltip.ts`:
- Around line 100-114: Update the native tooltip path’s
createTooltipContentContext call to pass the same options argument used by the
core renderer, ensuring callbacks receive consistent item-derived axis labels
across renderers. Add a native regression test covering the callback context
labels.

In `@packages/charts-core/src/types.ts`:
- Around line 790-791: Update the enclosing mark type and its focusPoints
declaration so focusPoints preserves the mark’s TDatum, TXValue, and TYValue
parameters instead of using the default ChartPoint type parameters; ensure the
renderer receives ChartPoint<TDatum, TXValue, TYValue>[] compatible with the
wrapped mark.

In `@scripts/public-callback-contract.mjs`:
- Around line 929-940: Guard the `checker.getTypeOfSymbolAtLocation` call inside
the `signature.parameters.map` callback with the same try/catch behavior used at
the other call sites, such as the logic around lines 607–611 and 650–657. When
type resolution throws for a synthetic or merged parameter symbol, treat that
parameter as a non-object bag or skip it so contract validation continues
instead of aborting.

In `@scripts/public-callback-contract.test.mjs`:
- Around line 17-37: Update the tests around inspectPublicCallableSurfaces so
the TypeScript inventory is computed once in shared beforeAll setup and reused
by this test and the existing test that uses the explicit 20-second timeout. Add
beforeAll to the Vitest import, store the resulting surfaces for both tests, and
remove the duplicate inspection call so the default-timeout test does not
rebuild the full program.

---

Outside diff comments:
In `@packages/charts-core/docs/reference/focus-and-interaction.md`:
- Around line 139-353: Move the documentation updates from
packages/charts-core/docs/reference/focus-and-interaction.md lines 139-353,
packages/charts-core/docs/reference/marks/geo.md line 65, and
packages/charts-core/docs/reference/marks/text-frame-and-facet.md lines 123-134
into their corresponding source files under the root docs/ tree; remove the
direct generated-file edits and run pnpm docs:sync to regenerate all three
package documentation files.

---

Nitpick comments:
In @.changeset/brave-tooltips-expand.md:
- Around line 7-22: Add a short paragraph to the changeset documenting the
user-visible focused-rule behavior: presentation-only focus points exposed by
ruleX and ruleY now allow whenFocused(ruleX(...), { match: "x" }) to render.
Keep the wording concise and scoped to this `@tanstack/charts` behavior.

In
`@benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/tooltip-body.tsx`:
- Around line 59-78: Update the tooltip component’s four consumption DetailRow
elements to render by mapping over consumptionBreakdown(month), using each
returned label, color, and value while preserving the existing DetailRow and
formatting behavior. Reuse the existing consumptionBreakdown and related model
imports instead of duplicating segment labels and colors.

In `@benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/view.tsx`:
- Around line 449-453: Move monthFromTarget into the shared model.ts module,
alongside isEnergyMonthId, and export it for both renderers. In
benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/view.tsx lines
449-453, remove the local definition and import the shared helper; make the same
removal and import change in recharts.ts lines 782-786, preserving the existing
anchor parsing behavior.

In `@scripts/check-packed-consumers.mjs`:
- Around line 1092-1104: Add a formatGroup callback alongside the existing
tooltip.format fixture to exercise the packed tooltip contract, using the
callback’s points and shared context to assert the migrated formatGroup
signature and return a valid group result. Keep the existing format callback
unchanged and ensure the fixture covers context access through formatGroup as
well.

In `@scripts/compare-plot-catalog.mjs`:
- Around line 1961-1979: In the fill-handling logic, rename patternId to a
neutral reference identifier and resolve
element.ownerDocument.getElementById(...) once into a shared referenced-element
variable. Reuse that lookup for both the patternPaint and gradientStop queries,
preserving the existing fallback and paint-resolution behavior.

In `@scripts/public-callback-contract.mjs`:
- Around line 782-812: Move the upstreamProtocol/serviceMethod exemption from
inside the signature loop to a surface-level conditional before iterating over
surface.signatures, so those categories skip the entire signature validation
once. Keep the existing positional-argument and second-argument checks unchanged
for all other categories.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f6aae123-443d-4752-bee0-cf89cbc71086

📥 Commits

Reviewing files that changed from the base of the PR and between d18064d and dbfa1d6.

📒 Files selected for processing (84)
  • .changeset/brave-tooltips-expand.md
  • API-FRICTION.md
  • CONTRIBUTING.md
  • PLAN.md
  • benchmarks/bundle-size/universal-baseline.json
  • benchmarks/comparison/bundle-baseline.json
  • benchmarks/conformance/cases/31-linear-regression/tanstack.ts
  • benchmarks/conformance/cases/44-framed-scatter/tanstack.ts
  • benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/case.json
  • benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/model.test.ts
  • benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/model.ts
  • benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/recharts.ts
  • benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/tooltip-body.tsx
  • benchmarks/conformance/cases/84-pinned-nested-chart-tooltip/view.tsx
  • docs/comparison.md
  • docs/concepts/data-and-channels.md
  • docs/concepts/grammar-of-graphics.md
  • docs/examples/interactive-charts.md
  • docs/guides/custom-marks-and-renderers.md
  • docs/guides/migrating.md
  • docs/guides/tooltips-and-focus.md
  • docs/reference/custom-extensions.md
  • docs/reference/focus-and-interaction.md
  • docs/reference/marks/geo.md
  • docs/reference/marks/text-frame-and-facet.md
  • docs/reference/scales-guides-and-color.md
  • docs/reference/types.md
  • examples/sandbox/src/InteractionGeometryLab.test.ts
  • examples/sandbox/src/InteractionGeometryLab.tsx
  • packages/charts-core/docs/comparison.md
  • packages/charts-core/docs/concepts/data-and-channels.md
  • packages/charts-core/docs/concepts/grammar-of-graphics.md
  • packages/charts-core/docs/examples/interactive-charts.md
  • packages/charts-core/docs/guides/custom-marks-and-renderers.md
  • packages/charts-core/docs/guides/migrating.md
  • packages/charts-core/docs/guides/tooltips-and-focus.md
  • packages/charts-core/docs/reference/custom-extensions.md
  • packages/charts-core/docs/reference/focus-and-interaction.md
  • packages/charts-core/docs/reference/marks/geo.md
  • packages/charts-core/docs/reference/marks/text-frame-and-facet.md
  • packages/charts-core/docs/reference/scales-guides-and-color.md
  • packages/charts-core/docs/reference/types.md
  • packages/charts-core/src/area-x.ts
  • packages/charts-core/src/area.ts
  • packages/charts-core/src/band.ts
  • packages/charts-core/src/bar.ts
  • packages/charts-core/src/dot.ts
  • packages/charts-core/src/facet.test.ts
  • packages/charts-core/src/facet.ts
  • packages/charts-core/src/focus-disabled.ts
  • packages/charts-core/src/focus-mark.test.ts
  • packages/charts-core/src/focus.test.ts
  • packages/charts-core/src/focus.ts
  • packages/charts-core/src/geo.test.ts
  • packages/charts-core/src/geo.ts
  • packages/charts-core/src/hexagon.ts
  • packages/charts-core/src/index.ts
  • packages/charts-core/src/legend.ts
  • packages/charts-core/src/line.ts
  • packages/charts-core/src/link.test.ts
  • packages/charts-core/src/mark.ts
  • packages/charts-core/src/polar.ts
  • packages/charts-core/src/rect.ts
  • packages/charts-core/src/renderer.test.ts
  • packages/charts-core/src/renderer.ts
  • packages/charts-core/src/rule.ts
  • packages/charts-core/src/runtime.test.ts
  • packages/charts-core/src/scene.ts
  • packages/charts-core/src/text.ts
  • packages/charts-core/src/tooltip.ts
  • packages/charts-core/src/type-contract.test.ts
  • packages/charts-core/src/types.ts
  • packages/charts-core/src/universal-types.ts
  • packages/octane-charts/src/types.type-test.ts
  • packages/react-charts-catalog/src/index.ts
  • packages/react-charts/src/Chart.test.tsx
  • packages/react-native-charts/src/Tooltip.test.ts
  • packages/react-native-charts/src/Tooltip.tsx
  • packages/react-native-charts/src/interaction.ts
  • scripts/check-packed-consumers.mjs
  • scripts/compare-plot-catalog.mjs
  • scripts/measure-bundles.mjs
  • scripts/public-callback-contract.mjs
  • scripts/public-callback-contract.test.mjs

Comment thread docs/guides/migrating.md
Comment thread docs/reference/scales-guides-and-color.md Outdated
Comment thread packages/charts-core/docs/comparison.md
Comment thread packages/charts-core/docs/guides/migrating.md
Comment thread packages/charts-core/docs/reference/scales-guides-and-color.md Outdated
Comment thread packages/charts-core/src/tooltip.ts
Comment thread packages/charts-core/src/types.ts
Comment thread scripts/public-callback-contract.mjs
Comment thread scripts/public-callback-contract.test.mjs Outdated
@tannerlinsley
tannerlinsley merged commit 4b6c1f6 into main Aug 5, 2026
26 checks passed
@github-actions github-actions Bot mentioned this pull request Aug 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

full-conformance Run the complete standard conformance matrix for this pull request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant