Stats
Single value, grouped row, with sparkline, with comparison. Used for dashboards and overview pages.
Under the value each tile can draw one strip: its trend (spark) or its composition (share). Both reserve the same height, so a row that mixes them keeps one card height and no tile is left half empty. framed puts every strip on a muted track, which is what makes a ROW of them scan evenly.
Active users
71,897
+12.3% vs. last 30 days
iOS
Android
Active users
71,897
+12.3% vs. last 30 days
Web
tsx
Default
Group
Plain
Per-tile icon, control and accent
Sparkline
Composition strip
Framed strips
Mixed strips in one row
Tappable
Props
Do & Don’t
Single
Don’t
A bare delta with no baseline leaves the reader asking: up against what, and over what window?
Do
Active users
71,897
+12.3% vs. last 30 days
Name the comparison and the period so the delta is unambiguous.
Group
Don’t
A fixed flex row of full-precision numbers overflows on narrow viewports and crowds the cards.
Do
Revenue
$48.2k
+12.5%
Orders
842
+3.2%
Conversion
3.6%
+0.4%
Use the auto-fit grid and round headline numbers so cards wrap and stay scannable.
Plain (no border)
Don’t
Bordered cards inside a card surface double the chrome: a box drawn around boxes.
Do
Revenue
$48.2k
Orders
842
On a parent surface drop the border and radius; let the number stacks stand on their own.
With sparkline
Don’t
A trend line with no current delta makes you eyeball the slope to guess the direction.
Do
Requests
24.5k
+8.2%
Pair the sparkline with an explicit delta so the headline reads without decoding the curve.
A strip on every tile in a row
Don’t
Give one tile a strip and leave its neighbour without: cards stretch to the tallest sibling, so the bare tile ends up with a band of blank space that reads as unfinished.
Do
Requests
24.5k
+8.2%
Cache hit rate
94.1%
23.5k of 25k served warm
Give every tile in a row a strip: the trend where one exists, the composition where it does not, and frame them so the row reads as one finished set.