MetricCard
KPI와 핵심 지표를 대시보드에서 명확하게 표시하는 컴포넌트입니다. 타이틀, 수치, 트렌드 인디케이터, 설명, 아이콘을 자유롭게 조합할 수 있습니다.
Playground
Revenue
$45,231
Increased+20.1%
vs last month
<MetricCard>
<MetricCard.Header>
<MetricCard.Title>Revenue</MetricCard.Title>
<MetricCard.Symbol><DollarSign /></MetricCard.Symbol>
</MetricCard.Header>
<MetricCard.Value>$45,231</MetricCard.Value>
<MetricCard.Trend direction="up">+20.1%</MetricCard.Trend>
<MetricCard.Description>vs last month</MetricCard.Description>
</MetricCard>Variants
Revenue
$3,500
Increased+8.1%
default
Revenue
$3,500
Increased+8.1%
elevated
Revenue
$3,500
Increased+8.1%
ghost
<MetricCard variant="default">...</MetricCard>
<MetricCard variant="elevated">...</MetricCard>
<MetricCard variant="ghost">...</MetricCard>Sizes
smdefaultlg| Size | 패딩 | 값 폰트 | 아이콘 | 미리보기 |
|---|---|---|---|---|
sm | p-4 | text-xl | icon-sm | Users 1,234 |
default | p-4 sm:p-5 | text-2xl | icon-md | Users 1,234 |
lg | p-4 sm:p-6 | text-3xl | icon-lg | Users 1,234 |
반응형: default, lg 사이즈는 모바일(640px 미만)에서 패딩이 한 단계 자동 축소됩니다. sm 사이즈는 고정값입니다.
Features
Grid Preview
대시보드 실제 표시 이미지, grid-cols-2 lg:grid-cols-4 레이아웃 사용 예시입니다.
Revenue
$45,231
Increased+20.1%
vs last month
Users
2,350
Increased+12.5%
new signups
Orders
1,234
Decreased-3.2%
vs last week
Conversion
3.24%
No change0.0%
no change
<div className="grid grid-cols-2 lg:grid-cols-4 gap-4">
<MetricCard>
<MetricCard.Header>
<MetricCard.Title>Revenue</MetricCard.Title>
<MetricCard.Symbol><DollarSign /></MetricCard.Symbol>
</MetricCard.Header>
<MetricCard.Value>$45,231</MetricCard.Value>
<MetricCard.Trend direction="up">+20.1%</MetricCard.Trend>
<MetricCard.Description>vs last month</MetricCard.Description>
</MetricCard>
...
</div>Trend
트렌드 인디케이터는 방향에 따라 아이콘과 색상이 자동 적용됩니다. 색각 다양성을 고려하여 아이콘 + 텍스트로 의미를 전달합니다.
Up
$3,500
Increased+8.1%
Down
$3,500
Decreased-3.2%
Neutral
$3,500
No change0.0%
<MetricCard.Trend direction="up">+8.1%</MetricCard.Trend>
<MetricCard.Trend direction="down">-3.2%</MetricCard.Trend>
<MetricCard.Trend direction="neutral">0.0%</MetricCard.Trend>Radius
Radius
0
Radius
8
Radius
12
Radius
16
Radius
24
<MetricCard radius="none" /> {/* 0px */}
<MetricCard radius="lg" /> {/* 8px */}
<MetricCard /> {/* 12px — default */}
<MetricCard radius="2xl" /> {/* 16px */}
<MetricCard radius="3xl" /> {/* 24px */}API
Component Structure
MetricCard— Pure React.Header헤더 영역(Title + Symbol 나란히).Title지표 레이블.Symbol아이콘 슬롯.Value수치 표시(animated 지원).TrendProps트렌드 인디케이터(direction).Description보조 텍스트Props
MetricCard
variant"default""default" | "elevated" | "ghost"카드 스타일 variant
size"default""sm" | "default" | "lg"카드 사이즈(패딩 및 폰트 크기에 영향)
radius"default""none" | "sm" | "base" | "default" | "lg" | "xl" | "2xl" | "3xl" | "full"카드 모서리 둥글기(디자인 토큰 기준)
animatedfalsebooleanMetricCard.Value의 수치를 카운트업 애니메이션으로 표시
| Name | Type | Default | Description |
|---|---|---|---|
variant | "default" | "elevated" | "ghost" | "default" | 카드 스타일 variant |
size | "sm" | "default" | "lg" | "default" | 카드 사이즈(패딩 및 폰트 크기에 영향) |
radius | "none" | "sm" | "base" | "default" | "lg" | "xl" | "2xl" | "3xl" | "full" | "default" | 카드 모서리 둥글기(디자인 토큰 기준) |
animated | boolean | false | MetricCard.Value의 수치를 카운트업 애니메이션으로 표시 |
MetricCard.Trend
direction—"up" | "down" | "neutral"트렌드 방향(필수): 아이콘과 색상이 자동 적용됨
| Name | Type | Default | Description |
|---|---|---|---|
direction | "up" | "down" | "neutral" | — | 트렌드 방향(필수): 아이콘과 색상이 자동 적용됨 |
Anatomy
December 2024 actual
Best Practices
권장
- ✓트렌드에 색상 + 아이콘 + 텍스트를 함께 사용
- ✓그리드 레이아웃으로 카드를 균등 배치
- ✓숫자는 읽기 쉬운 포맷으로 표시(쉼표 구분 등)
- ✓비교 기간을 설명 텍스트로 명시
지양
- ✗색상만으로 트렌드 방향을 전달하지 않기(색각 다양성 고려)
- ✗한 화면에 너무 많은 메트릭 카드 배치하지 않기
- ✗맥락 없이 숫자만 표시하지 않기
- ✗같은 그리드에 서로 다른 사이즈 카드 혼용하지 않기
Accessibility
키보드 조작
ARIA / WCAG
- 트렌드 아이콘은
aria-hidden+ sr-only 텍스트 사용 - 색상만이 아닌 아이콘 + 텍스트로 의미 전달
- 자연스러운 읽기 순서(타이틀 → 수치 → 트렌드 → 설명)
- WCAG AA 색채 대비 준수