For designers
The kit is the source of truth. Where it and a contract disagree, the kit wins.
Open the Figma KitPick a color. Graphite resolves eight ramps, thirty-two semantic roles and both themes from it, measures every pairing as it goes, and keeps the Figma kit and the code provably in step.
Accent
Secondary
Neutral
Neutral variant
Select any swatch to copy its hex. The outlined stop is where your source color landed.
Not a screenshot of a dashboard. These are the real component sets from the kit, rendering from the same tokens the rest of the page uses, so they repaint when the color above changes.
Title
Progress bar label
Optional helper textThe engine does the work Figma cannot: it derives, it measures, and it does both themes at once. Three checks in CI then keep the result honest.
Any hex. It is resolved in OKLab and sampled at fixed tone stops, so the steps read as evenly spaced at any hue.
1 / 6
#5e44aathe one input
The outlined stop is the source. Numbers are OKLab tones.
The builder derives a full theme from any color, shows you the contrast report as it goes, and hands you CSS variables, JSON tokens or Figma variables at the end.
Designers and developers consume the same system through different artefacts, and the site should not pretend otherwise.
The kit is the source of truth. Where it and a contract disagree, the kit wins.
Open the Figma KitContracts are the written spec the code is checked against, and they are versioned.
See the codeTwenty-two components carry a versioned contract and are checked against the kit on every build. The kit ships more than that, and anything without a contract is labelled ungoverned on its own page rather than left for you to find out.
No, but it is built on it today. The components style themselves from the --graphite-* tokens, and the engine also emits a Carbon compatibility layer so an existing Carbon build repaints without touching a component. Moving off Carbon is a tracked migration, not a rewrite.
That is the only input. Any hex is resolved in OKLab and sampled at fixed tone stops to build the ramps, the roles and both themes. One caveat worth knowing: a source that sits on a status hue collapses the two, so a red brand color resolves primary and danger to nearly the same value.
The kit is canonical: where it and a contract disagree, the kit wins and the contract is corrected. Three checks in CI enforce it, reading committed snapshots of the kit rather than the network, so they run offline. Re-extracting a snapshot is still a manual step.
Start with the contract, not the code. It declares the roles and variables the component may touch, and drift-check then holds the implementation to it. Main is protected, so everything lands through a pull request with the governance job green.