Skip to content
KPI / Metric CardPro

Metric Card

One number with its trend and, per variant, a sparkline, progress, breakdown, comparison, distribution, status, action or AI insight.

Usage

Revenue
$85,250
12.4%

Installation

bash
npm install @wunderui/react

Then import what you need:

tsx
import { MetricCard } from "@wunderui/react"

Examples

Simple

Label, value and the trend chip — the card every dashboard starts with.

Revenue
$85,250
12.4%

Icon

A 32 px tile before the label, the glyph via the icon prop.

Revenue
$85,250
12.4%vs last month

Icon Button

The same slot as a bordered 32 px icon button; give it onIconClick to make it do something.

Revenue
$85,250
12.4%vs last month

The ⋯ opens View details, Customize, Export data and Remove; onMenuSelect tells you which.

Revenue
$85,250
12.4%

Show icon puts a tile before the label, Show menu the ⋯ button: label only, icon + label, label + menu.

Revenue
$85,250
12.4%
Revenue
$85,250
12.4%
Revenue
$85,250
12.4%

Trend

None, positive, negative or neutral — the Trend Chip decides the colour and the glyph.

Revenue
$85,250
Revenue
$85,250
12.4%
Churn
2.1%
0.4%
Seats
1,204
0.0%

Comparison · Period

The change against the last period, with the previous value spelled out.

Revenue
$85,250
12.4%vs last month
Previous period $75,900

Trend · Line

A sparkline under the value.

Revenue
$85,250
12.4%

Trend · Area

The same series with a soft fill.

Revenue
$85,250
12.4%

Trend · Bar

Mini bars, the latest one solid.

Activity
85,250
12.4%

Trend · Area right

The area chart beside the value, on the baseline.

Revenue
$85,250
12.4%

Trend · Bar right

Green bars beside the value, the current one solid.

Revenue
$85,250
12.4%

Progress · Linear

A goal: the bar plus the target line.

Revenue
$85,250
12.4%
x
$72K of $100K target72%

Progress · Segmented

Milestones or budget steps as segments.

Roadmap
Q3 launch
3 of 5 milestones60%

Progress · Radial

The ring sits beside the value.

Health score
72
12.4%

Breakdown · Two rows

The total split in two.

Hours
1,240
12.4%
Billable
$61,400
Non-billable
$23,850

Breakdown · List

More rows: plans, regions, top items.

Revenue
$85,250
12.4%
Enterprise
$41,200
Growth
$24,800
Starter
$12,650
Add-ons
$6,600

Comparison · Bar

Two periods as two bars.

Revenue
$85,250
12.4%
This month$85,250
Last month$75,900

Distribution · Segments

A stacked bar with its legend.

Traffic
85,250
12.4%
  • Direct 46%
  • Organic 28%
  • Referral 16%
  • Other 10%

Distribution · Donut

The donut beside the value, the legend below.

Traffic
85,250
12.4%
  • Direct 46%
  • Organic 28%
  • Referral 16%
  • Other 10%

Status

A badge with a note — systems, projects, SLAs.

Uptime
99.98%
12.4%
HealthyAll systems operational

Action

A call to action under the number.

Open invoices
$85,250
12.4%

Insight · AI

A generated sentence on the indigo tint.

Revenue
$85,250
12.4%

Up 12% on last month, driven by enterprise upgrades. Renewals are on track.

Avatars

Who is behind the number — teams, users, assignees.

Active members
1,204
12.4%
AL
MK
JW
+12 members active today

In context

How the component is used inside real screens — the same compositions as the Usage section of the Figma page.

Dashboard KPI group

The same row as one Metric Group: four cards in one frame, divided by hairlines.

Total revenue
$48,200
12.4%
Active users
1,204
12.4%
Conversion rate
3.8%
12.4%
Average order
$86
12.4%

Dashboard KPI row

Four simple cards across the top of a dashboard.

Total revenue
$48,200
12.4%
Active users
1,204
12.4%
Conversion rate
3.8%
12.4%
Average order
$86
12.4%

Sales report header

Two report cards: the chart under the value, or beside it.

Total sales
19,842
14.6%
Total product sales
56,300
9.2%

Billing usage card

Seats used against the plan, with settings and the report.

Monthly plan usage
780 / 1,000 seats
2.0%
x
780 / 1,000 seats78%

Mobile stack

On a phone the cards stack full width.

Total revenue
$48,200
12.4%
Weekly orders
3,910
9.7%
Storage used
56,000 / 120 GB
x
56,000 / 120,00047%

API Reference

PropTypeDefault
labelstring—
valuestring—
iconReactNode—
iconVariant"tile" | "button""tile"
onIconClick() => void—
infoReactNode—
menuboolean | ReactNode—
onMenuSelect(action: "view" | "customize" | "export" | "remove") => void—
trend{ value; direction?: "up" | "down" | "neutral"; icon? }—
captionReactNode—
previousReactNode—
asideReactNode—
asideAlign"center" | "end""end" for a MetricSparkline, else "center"
childrenReactNode—