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..5 straight from public/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.
  1. 01 Chart palette 5 theme-aware slots
  2. 02 Stat tiles Tone-aware deltas
  3. 03 Line chart Snapping month bands
  4. 04 Bar chart Single-measure bars
  5. 05 Stacked bar Always-on labels
  6. 06 Donut Total plus keyed slices

Palette contract

Chart palette

5 fixed slots / light and dark

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-1 from --color-chart-dark-1
  • --lead-site-chart-2 from --color-chart-dark-2
  • --lead-site-chart-3 from --color-chart-dark-3
  • --lead-site-chart-4 from --color-chart-dark-4
  • --lead-site-chart-5 from --color-chart-dark-5

Metric tile

Stat tiles

Text-first KPI / tone-led delta

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

12 month bands / 2 series

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.

0 40 80 120 160 JanMarMayJulSepNov Leads captured Booked calls
Leads by month (sample data)
View data table
MonthLeads capturedBooked calls
Jan6214
Feb7418
Mar6817
Apr8522
May9225
Jun8824
Jul10329
Aug11733
Sep11031
Oct12637
Nov13841
Dec15246

Category magnitude

Bar chart — magnitude by category

One measure / one hue

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.

0 80 160 240 320 312 Google Ads Meta Ads SEO Referrals Email Events
Leads by channel (sample data)
View data table
ChannelLeads
Google Ads312
Meta Ads264
SEO188
Referrals142
Email96
Events58

Part to whole

Stacked bar — composition

Inline labels / hatch fallback

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.

Solar HVAC Roofing
Pipeline mix by niche (sample data, % of pipeline)
View data table
NicheLaunch KitGrowth engagementCustom build
Solar46%34%20%
HVAC38%42%20%
Roofing52%28%20%

Share of total

Donut — share of a total

Center total / keyed legend

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.

$8,400 per month
  • Google Ads $3,400 · 40%
  • Meta Ads $2,600 · 31%
  • SEO content $1,400 · 17%
  • Email $1,000 · 12%
Ad-spend mix (sample data)
View data table
ChannelSpendShare
Google Ads$3,40040%
Meta Ads$2,60031%
SEO content$1,40017%
Email$1,00012%