D·Camp UI

MetricCard

Dark Mode

데이터 지표(KPI)를 나열하는 카드 위젯입니다. Large(세로 배치)와 Small(가로 배치) 두 가지 크기를 제공하며, 항목별 트렌드(상승/하락) 색상과 아이콘을 지원합니다.

import { MetricCard } from "@/shared/ui/common"

인터랙티브 데모

1,240만+12.5%
매출
892-3.1%
주문 건수
156+24명
신규 가입
4.2%
이탈률
Size
Item Count
Options
tsx
const items = [
  { title: "매출", value: "1,240만", subValue: "+12.5%", trend: "increase" },
  { title: "주문 건수", value: "892", subValue: "-3.1%", trend: "decrease" },
  { title: "신규 가입", value: "156", subValue: "+24명", trend: "increase" },
  { title: "이탈률", value: "4.2%" },
];

<MetricCard
  items={items}
/>

Sizes

Large는 Value와 Title을 세로로 배치하고, Small은 한 줄로 가로 배치합니다.

Large
1,240만+12.5%
매출
892-3.1%
주문 건수
156+24명
신규 가입
4.2%
이탈률
Small
총 매출
1,240만
주문 건수
892
신규 가입
156
이탈률
4.2%

Item Counts

항목 개수별 레이아웃 비교입니다. Large는 4~6개, Small은 2~4개를 권장합니다.

Large
4 Items
1,240만+12.5%
매출
892-3.1%
주문 건수
156+24명
신규 가입
4.2%
이탈률
5 Items
3,200만+8.3%
총 매출
640만-2.1%
영업이익
1,580
주문 건수
2,340
활성 사용자
3.8%+0.4%
전환율
6 Items
1,240만+12.5%
매출
892-3.1%
주문 건수
156+24명
신규 가입
4.2%
이탈률
5,890+340
DAU
12:30
평균 체류
Small
2 Items
총 매출
1,240만
주문 건수
892
4 Items
총 매출
1,240만
주문 건수
892
신규 가입
156
이탈률
4.2%

Compact Mode

항목이 많거나 컨테이너가 좁을 때 compact prop으로 값 텍스트 크기를 줄일 수 있습니다. Large: 24px → 18px, Small: 18px → 16px.

Large (기본)
1,240만+12.5%
매출
892-3.1%
주문 건수
156+24명
신규 가입
4.2%
이탈률
5,890+340
DAU
12:30
평균 체류
Large + Compact
1,240만+12.5%
매출
892-3.1%
주문 건수
156+24명
신규 가입
4.2%
이탈률
5,890+340
DAU
12:30
평균 체류
Small (기본)
총 매출
1,240만
주문 건수
892
신규 가입
156
이탈률
4.2%
Small + Compact
총 매출
1,240만
주문 건수
892
신규 가입
156
이탈률
4.2%

Trend Colors

Large 사이즈에서 subValue의 트렌드 색상입니다. Increase(상승) / Decrease(하락) / None(기본) 3가지를 지원합니다.

Trend설명Preview
None기본 보조 텍스트. text-black-40
Increase상승 트렌드. text-green-dark+12.5%
Decrease하락 트렌드. text-red-dark-3.1%

With Icons

각 항목의 제목에 왼쪽/오른쪽 아이콘을 배치할 수 있습니다.

Large + Icons
1,240만+12.5%
매출 추이
892+8.3%
상승 지표
156-3.1%
하락 지표
30일
기간
Small + Icons
매출 추이
1,240만
상승 지표
892
하락 지표
156
기간
30일

Props

MetricCard

PropTypeRequiredDefault설명
itemsMetricCardItem[]표시할 데이터 항목 목록
size"large" | "small""large"크기 (large: 세로 배치 / small: 가로 배치)
compactbooleanfalse값 텍스트 크기를 줄이는 컴팩트 모드. 항목이 많거나 컨테이너가 좁을 때 사용
classNamestring추가 CSS 클래스

MetricCardItem

PropTypeRequiredDefault설명
titlestring항목 제목
valuestring메인 값 (숫자·텍스트)
subValuestring보조 텍스트 (단위, 변동률 등). Large에서만 표시
trend"none" | "increase" | "decrease""none"보조 텍스트 트렌드 색상
leftIconComponentType<{ className?: string }>제목 앞 아이콘
rightIconComponentType<{ className?: string }>제목 뒤 아이콘