One engine.
Charts are the visualization layer on a visx + d3 engine — twenty-two chart types across five families, all built on one render-prop frame. Every chart paints through a single Lumos categorical palette and shares one set of internals, so axes, grid, legend, and tooltip read identically whether you reach for a line, a treemap, or a chord.
Cartesian
8 typesThe XY workhorses — time-series and categorical comparison on shared X/Y axes.
Radial
4 typesPolar geometry — share of a whole and cyclical or multi-axis comparison around a centre.
Statistical
3 typesDistribution and density — where the values cluster, spread, and concentrate.
Hierarchy
4 typesNested structure — parent-child trees and part-of-whole containment.
Network
3 typesRelationships and flow — nodes, links, and how volume moves between them.
ChartFrame is a pure-SVG render-prop frame — it resolves dimensions, hands an inner rect to each chart, and bakes in the a11y baseline (role="img" + an off-screen value table). It carries no 'use client', so charts render byte-deterministic SVG on the server.
Every chart paints through the per-scheme --chart-* tokens, so all ten color schemes reskin every chart for free. Series cycle the palette in order; axes, grid, and chrome stay neutral.
