Design reference
Lead Caravan chart reference, rendered with the live site tokens.
The token palette, stat tiles, and line, bar, stacked bar, and donut specimens in one place. Every chart resolves through the site's own colors, responds to the theme toggle, and keeps its sample numbers available as text.
- Real tokens, not mockup swatches. Every fill reads
--lead-site-chart-1..5straight frompublic/tokens.css, so every figure re-resolves under the light/dark theme toggle. - A data table behind every figure. Each chart ships a
<details>table with the same numbers, so nothing here rests on seeing color or hovering. - Tooltips are live, not decoration. Hover or tab to a point to read it out. The line chart's crosshair snaps to the nearest month and stays inside the screen.
- 01 Chart palette 5 theme-aware slots
- 02 Stat tiles Tone-aware deltas
- 03 Line chart Snapping month bands
- 04 Bar chart Single-measure bars
- 05 Stacked bar Always-on labels
- 06 Donut Total plus keyed slices
Palette contract
Chart palette
Five color slots, given out in this set order and never reused. Taken from the design set's --chart-1..5 into public/tokens.css, with out-of-band slots snapped in
OKLCH so every slot passes the lightness-band, chroma-floor, color-vision ΔE, and 3:1-contrast checks
against the card surfaces the figures actually sit on, in both themes. Each slot pairs with a
--lead-site-chart-on-1..5 cut-out text, white or black, whichever stands out more on that fill, for labels sitting inside a colored slice.
-
--lead-site-chart-1from --color-chart-dark-1 -
--lead-site-chart-2from --color-chart-dark-2 -
--lead-site-chart-3from --color-chart-dark-3 -
--lead-site-chart-4from --color-chart-dark-4 -
--lead-site-chart-5from --color-chart-dark-5
Metric tile
Stat tiles
One big number is a stat tile, not a chart. The number uses plain text colors, never a chart color. And the change pairs an arrow with color, so up or down never rests on color alone. Delta color follows the tone of the change, not the arrow: a falling cost is green, a rising no-show rate is red.
Leads captured
1,284
+18% vs last quarter
Booked calls
312
+9% vs last quarter
Cost per lead
$23
−12% vs last quarter
No-show rate
6.8%
+1.4 pts vs last quarter
Time series
Line chart — change over time
Two lines, 2px thick, labelled at the ends with a key, over a faint grid. A cross-hair snaps to the nearest month and one note reads out both lines at that point. Aim at a date, never at a 2px line.
View data table
| Month | Leads captured | Booked calls |
|---|---|---|
| Jan | 62 | 14 |
| Feb | 74 | 18 |
| Mar | 68 | 17 |
| Apr | 85 | 22 |
| May | 92 | 25 |
| Jun | 88 | 24 |
| Jul | 103 | 29 |
| Aug | 117 | 33 |
| Sep | 110 | 31 |
| Oct | 126 | 37 |
| Nov | 138 | 41 |
| Dec | 152 | 46 |
Category magnitude
Bar chart — magnitude by category
One thing measured across groups gets one color, not a color per bar. Only the top value is always labelled. The rest show when you hover. Bar ends are rounded 4px and pinned to the baseline.
View data table
| Channel | Leads |
|---|---|
| Google Ads | 312 |
| Meta Ads | 264 |
| SEO | 188 |
| Referrals | 142 |
| 96 | |
| Events | 58 |
Part to whole
Stacked bar — composition
Part-to-whole per row: categorical slots follow the engagement type — never the segment's size or rank — and a 2px surface gap separates adjacent fills. Every segment carries an always-on % label in knockout ink (white or black per slot, whichever clears more contrast on that fill). Under forced-colors and print, a 45°/135° hatch overlay carries identity where hue can't.
View data table
| Niche | Launch Kit | Growth engagement | Custom build |
|---|---|---|---|
| Solar | 46% | 34% | 20% |
| HVAC | 38% | 42% | 20% |
| Roofing | 52% | 28% | 20% |
Share of total
Donut — share of a total
A few slices, a 2px gap between them, and the total in the middle. The key lists every slice with its number, so you never have to go by color alone.
- Google Ads $3,400 · 40%
- Meta Ads $2,600 · 31%
- SEO content $1,400 · 17%
- Email $1,000 · 12%
View data table
| Channel | Spend | Share |
|---|---|---|
| Google Ads | $3,400 | 40% |
| Meta Ads | $2,600 | 31% |
| SEO content | $1,400 | 17% |
| $1,000 | 12% |