CHARTS & MAPS · CHARTS
Sparklines
Word-sized trends for KPI cards, table rows and sentences — line, area, bars, win/loss, bullet and progress sparks with markers, references and trend colour.THEME
01
Playground
KPI card — type, size, markers, reference, colour, period, hoverRevenuelast 30 days
$61k▲ 56%
Settings
TYPE
SIZE
MARKERS
REFERENCE
COLOUR
PERIOD
HOVER
NOW SPEAKING
IMAGE“Revenue, last 30 days, up 56%, from $1.6k to $2.5k”
POINT“Focus the sparkline and press → to read each day”
KpiCard.tsx
1<Sparkline
2 data={revenue.last30Days}
3 type="area" size="card"
4 markers="last" reference="none"
5 color="trend" tooltip={true}
6 aria-label="Revenue, last 30 days, up 56%"
7/>
02
Variants
KPI row, table, inline, win/loss, bullet, progress, compareRevenue12 weeks
$64k▲ 43%
Active projects12 weeks
23▲ 29%
Overdue invoices12 weeks
5▼ 64%
Utilization12 weeks
78%▲ 8%
In a tableone column, shared or own scale
| Client | 12-week trend | This week | Change |
|---|---|---|---|
| Juniper Hotel | $5.5k | ▲ 17% | |
| Lume Goods | $3.5k | ▲ 13% | |
| Orbit Labs | $2.2k | ▼ 15% | |
| Atelier Rive | $2.3k | ▲ 35% | |
| Halo Clinic | $0.9k | ▼ 40% | |
| Nova Studio | $2.5k | ▲ 47% |
Inline in texta word-sized trend
Revenue grew ▲ 12% this month, while late payments fell ▼ 3 invoices and studio hours stayed flat ± 0%.
Win / lossmonths above and below plan
Revenue vs plan8 / 12
Margin vs 30%8 / 12
Hours vs 160 h9 / 12
Bullet sparksvalue, target and range in one line
Revenue$64k
Margin27%
NPS61
Progress to targetquarter to date
Q4 revenue$132k / $180k
Billable hours1420 h / 2100 h
New clients4 / 5
This year vs lasttwo lines, one tiny scale
Revenue+24% YoY
Hours+13% YoY
New leads+18% YoY
03
States
Loading, too few points, no data, errorLoadinghold the space
Loading……Too few pointsone value is not a trend
Not enough data$3.2kNo datashow a dash, not a flat line
——Errorsay it in words
Couldn’t loadRetry04
Behavior
When, scale, labelsWhen to usecontext, not detail
UseNext to a number, to show its direction
UseIn a table column, one per row
AvoidWhen people need exact values or axes
AvoidMore than one trend per sparkline (except YoY)
Scaleshared or own
SharedRows are comparable by height
OwnShows shape only — say so
ZeroBars from zero; lines may zoom
PeriodSame period for every row
Labelsnever alone
NumberAlways show the current value next to it
Delta▲ / ▼ + % — not colour alone
PeriodSay the period: “last 30 days”
Good downFor costs and delays, down is green
05
In Avava
Dashboard KPIs, clients, projectsRevenueQ4 to date
$132k▲ 41%
MarginQ4 to date
27%▲ 16%
Days to get paid12 weeks
18 d▼ 31%
Billable hours12 weeks
624 h▲ 15%
Clientsrevenue trend per client · shared scale
| Client | 12-week trend | This week | Change |
|---|---|---|---|
| Juniper Hotel | $5.5k | ▲ 17% | |
| Lume Goods | $3.5k | ▲ 13% | |
| Orbit Labs | $2.2k | ▼ 15% | |
| Atelier Rive | $2.3k | ▲ 35% | |
| Halo Clinic | $0.9k | ▼ 40% | |
| Nova Studio | $2.5k | ▲ 47% |
Projectshours per week · budget used
Lume rebrandOlivia · due 6 Nov · 72% of budget
Spring campaignAlex · due 21 Oct · 94% of budget
Brand bookMara · overdue · 108% of budget
App onboardingJon · due 1 Dec · 41% of budget
06
Rules & a11y
Sparkline vs chart, screen readersSparkline or chart?pick by the job
Sparkline
Direction next to a numberKPI cards, table rows
Mini chart
Shape plus a few valuesCard with 1 tooltip
Full chart
Exact values, axes, comparisonReports
Screen readersa trend in one sentence
✓role="img" + aria-label“Revenue, last 30 days, up 12%, from $1.8k to $2.4k”
✓Focusable only with a tooltip← → read each point in a live region
✓▲ ▼ and a sign next to colourGreen and coral are never the only cue
✓Decorative inline sparksStill labelled; the sentence repeats the number
DO✓Always put the number next to the sparkline✓Use the same period in a column✓Mark the last point✓Colour by meaning: down is good for costs✓Share one scale when rows are compared
DON’T✕Add axes, grids or legends✕Use a sparkline without a value✕Mix periods in one table✕Rely on colour alone for the trend✕Draw a flat line for missing data