Stats Card
Displays key metrics and statistics in a compact card format.
Default
Stat cards with label, value, and change indicator.
Total Revenue
$45,231
Total Users
2,350
Bounce Rate
24.3%
<div class="vt-rounded-2xl vt-border vt-p-6">
<p class="vt-text-sm vt-text-mains-quaternary">Total Revenue</p>
<p class="vt-text-2xl vt-font-bold vt-mt-1">$45,231</p>
<span class="vt-text-xs vt-text-info-primary">+12.5%</span>
</div>
With Icons
Stat cards with a decorative icon in a colored background.
Revenue
$45,231
Users
2,350
Engagement
68.7%
<div class="vt-rounded-2xl vt-border vt-p-6">
<div class="vt-flex vt-items-start vt-justify-between">
<div>
<p class="vt-text-sm vt-text-mains-quaternary">Revenue</p>
<p class="vt-text-2xl vt-font-bold vt-mt-1">$45,231</p>
</div>
<div class="vt-rounded-lg vt-bg-info-primary/10 vt-p-3">
<svg class="vt-w-5 vt-h-5 vt-text-info-primary">...</svg>
</div>
</div>
<div class="vt-flex vt-items-center vt-gap-1 vt-mt-3">
<svg class="vt-w-3.5 vt-h-3.5 vt-text-info-primary">...</svg>
<span class="vt-text-xs vt-font-medium vt-text-info-primary">+20.1%</span>
</div>
</div>
Compact
Smaller stat cards in a 4-column layout for dashboards.
Revenue
$12.4k
+12.5%Orders
1,463
+8.2%Customers
894
-3.1%Avg. Value
$84.50
+4.6%<div class="vt-grid vt-grid-cols-2 vt-sm:grid-cols-4 vt-gap-3">
<div class="vt-rounded-2xl vt-border vt-p-4">
<p class="vt-text-xs vt-text-mains-quaternary">Revenue</p>
<p class="vt-text-lg vt-font-bold vt-mt-0.5">$12.4k</p>
<span class="vt-text-xs vt-font-medium vt-text-info-primary">+12.5%</span>
</div>
<div class="vt-rounded-2xl vt-border vt-p-4">
<p class="vt-text-xs vt-text-mains-quaternary">Orders</p>
<p class="vt-text-lg vt-font-bold vt-mt-0.5">1,463</p>
<span class="vt-text-xs vt-font-medium vt-text-info-primary">+8.2%</span>
</div>
</div>
With Sparkline
Stat cards with a small inline SVG sparkline chart.
Revenue
$45,231
Users
2,350
Bounce Rate
24.3%
<div class="vt-rounded-2xl vt-border vt-p-6">
<p class="vt-text-sm vt-text-mains-quaternary">Revenue</p>
<p class="vt-text-2xl vt-font-bold vt-mt-1">$45,231</p>
<div class="vt-mt-3">
<svg class="vt-w-full vt-h-10" viewBox="0 0 120 40">
<polyline points="0,35 30,25 60,22 90,10 120,8"
stroke="hsl(var(--info-primary))" stroke-width="2"
fill="none" />
</svg>
</div>
<div class="vt-flex vt-items-center vt-gap-1 vt-mt-2">
<svg class="vt-w-3.5 vt-h-3.5 vt-text-info-primary">...</svg>
<span class="vt-text-xs vt-font-medium vt-text-info-primary">+20.1%</span>
</div>
</div>
With Progress
Stat cards with a progress bar showing completion.
Storage Used
75%
7.5 GB of 10 GB
Tasks Complete
42%
21 of 50 tasks
Monthly Goal
92%
$46k of $50k
<div class="vt-rounded-2xl vt-border vt-p-6">
<p class="vt-text-sm vt-text-mains-quaternary">Storage Used</p>
<p class="vt-text-2xl vt-font-bold vt-mt-1">75%</p>
<p class="vt-text-xs vt-text-mains-quaternary vt-mt-1">7.5 GB of 10 GB</p>
<div class="vt-mt-3">
<div class="vt-w-full vt-bg-surfaces-subtle vt-rounded-full vt-h-1.5">
<div class="vt-bg-info-primary vt-h-1.5 vt-rounded-full vt-inline-c311217ce1"></div>
</div>
</div>
</div>
Colored
Stat cards with colored left borders for visual categorization.
Revenue
$45,231
Growth
+12.5%
Engagement
68.7%
Churn Rate
2.4%
<div class="vt-rounded-2xl vt-border vt-p-6 vt-border-l-4 vt-border-l-info-primary">
<p class="vt-text-sm vt-text-mains-quaternary">Revenue</p>
<p class="vt-text-2xl vt-font-bold vt-mt-1">$45,231</p>
<div class="vt-flex vt-items-center vt-gap-1 vt-mt-2">
<svg class="vt-w-3.5 vt-h-3.5 vt-text-info-primary">...</svg>
<span class="vt-text-xs vt-font-medium vt-text-info-primary">+20.1%</span>
<span class="vt-text-xs vt-text-mains-quaternary vt-ml-1">from last month</span>
</div>
</div>
API Reference
All CSS classes available for the Stats Card component.
| Class | Type | Description |
|---|---|---|
vt-rounded-2xl |
Base | Card border radius for stat cards |
vt-border vt-border-border-default |
Base | Default card border |
vt-p-6 |
Base | Standard card padding |
vt-p-4 |
Size | Compact card padding for smaller variants |
vt-text-2xl vt-font-bold |
Typography | Main stat value styling |
vt-text-lg vt-font-bold |
Typography | Compact stat value styling |
vt-text-sm vt-text-mains-quaternary |
Typography | Stat label text styling |
vt-text-xs vt-font-medium vt-text-info-primary |
Indicator | Positive trend indicator text |
vt-text-xs vt-font-medium vt-text-error-primary |
Indicator | Negative trend indicator text |
vt-bg-info-primary/10 |
Modifier | Tinted icon background container |
vt-border-l-4 vt-border-l-info-primary |
Modifier | Colored left border accent for categorization |
vt-bg-info-primary vt-h-1.5 vt-rounded-full |
Progress | Progress bar fill styling |
vt-bg-surfaces-subtle vt-rounded-full vt-h-1.5 |
Progress | Progress bar track styling |
Accessibility
Keyboard and screen reader support.
| Feature | Details |
|---|---|
| Semantics | Use dl/dt/dd elements for label-value pairs in stat cards |
| Updates | Dynamic stat values should use aria-live="polite" for announcements |
| Icons | Decorative trend icons should have aria-hidden="true" |
| Context | Trend indicators need sr-only text like "Increased by 12%" |