본문으로 건너뛰기
데이터 / metric-card

MetricCard

운영자·에이전트 대시보드용 KPI 타일 — 값 + 증감(delta) + 미니 스파크라인.
데이터metric-cardStatic specimenmetricmetric cardkpi지표
01 · Specimen

먼저 보고, 그다음 계약을 읽습니다

운영자·에이전트 대시보드용 KPI 타일 — 값 + 증감(delta) + 미니 스파크라인.

Workbench 불러오는 중…
Component intent의도와 경계 읽기

label/value 를 큰 숫자로 세우고, 선택적으로 delta(방향+값+라벨)·미니 sparkline(inline SVG)·우상단 icon·회색 helperText 를 붙이는 KPI 타일. value 에는 항상 tabular-nums 가 적용돼 동적 갱신 시에도 자릿수가 흔들리지 않는다. loading=true 면 자체 skeleton 모드로 전환돼 별도 Skeleton 컴포넌트가 필요 없다. sparkline 은 축·툴팁 없는 6~24 point 추세선이며 데이터가 2점 미만이면 그려지지 않는다.

02 · Use

예제

SSOT에 등록된 실제 API 기준 snippet입니다. standalone 배지만 독립 실행 단위이며, fragment는 주변 state·handler 문맥을 생략합니다.

01delta + sparklinetsxfragment
delta + sparkline
import { MetricCard } from "@axe/ui";<MetricCard  label="활성 세션"  value="1,284"  delta={{ value: "+12.3%", direction: "up", label: "vs. 어제" }}  trend={[8, 11, 9, 14, 13, 18, 21]}  helperText="최근 30일"/>
02로딩 skeletontsxfragment
로딩 skeleton
import { MetricCard } from "@axe/ui";<MetricCard label="집계 중" value="—" loading />
03CSS-only (비-React)htmlfragment
CSS-only (비-React)
<div class="axe-metric-card">  <div class="axe-metric-card__head">    <span class="axe-metric-card__label">활성 세션</span>    <span class="axe-metric-card__icon">◇</span>  </div>  <div class="axe-metric-card__value">1,284</div>  <div class="axe-metric-card__meta">    <span class="axe-metric-card__delta axe-metric-card__delta--up">      <span class="axe-metric-card__delta-arrow" aria-hidden="true">▲</span>      <span class="axe-metric-card__delta-value">+12.3%</span>      <span class="axe-metric-card__delta-label">vs. 어제</span>    </span>    <span class="axe-metric-card__helper">최근 30일</span>  </div></div>
03 · React

Props

TSX 소스가 진실입니다. 주요 export 컴포넌트의 public API만 노출합니다.

이름타입필수기본값설명
labelReact.ReactNode필수지표 이름 — head 좌측에 작은 라벨로.
valueReact.ReactNode필수주 수치 — 큰 글씨 + tabular-nums 로 렌더.
deltaMetricDelta증감 배지. `{ value: ReactNode; direction: "up" | "down" | "flat"; label?: ReactNode }`. direction 이 색과 화살표(▲/▼/—)를 정한다 — up=success, down=danger, flat=muted. label 은 'vs. 어제' 같은 부가 맥락.
trendnumber[]미니 sparkline 데이터(6~24 point 권장). 2점 미만이면 미표시. currentColor 폴리라인만 그리는 무의존 inline SVG.
iconReact.ReactNode우상단 아이콘 슬롯(보통 16~18px).
helperTextReact.ReactNode값 아래 회색 부가 문장(예: '최근 30일'). delta 와 같은 meta 줄에 놓인다.
loadingbooleantrue 면 label/value/helper 자리에 skeleton 3줄을 대신 그리고 aria-busy="true" 를 세운다.
...restOmit<React.HTMLAttributes<HTMLDivElement>, "title">className 병합, 나머지는 루트 div 로 전파. ref 는 루트 div 로 forward.
04 · Any stack

.axe-* 클래스 계약

React 밖에서도 같은 표면을 그리는 공개 계약입니다. stable은 minor 버전 안에서 이름을 바꾸지 않습니다.

클래스안정성용도
.axe-metric-cardstable루트 div — border·radius·padding 카드.
.axe-metric-card__headstablelabel + icon 을 좌우로 배치하는 상단 줄.
.axe-metric-card__labelstable지표 이름 라벨.
.axe-metric-card__iconstable우상단 아이콘 박스.
.axe-metric-card__valuestable주 수치 — 큰 글씨 + tabular-nums.
.axe-metric-card__metastabledelta + helper 를 담는 값 아래 줄.
.axe-metric-card__deltastable증감 배지 컨테이너(화살표+값+라벨).
.axe-metric-card__delta--upstable상승 — success 색.
.axe-metric-card__delta--downstable하락 — danger 색.
.axe-metric-card__delta--flatstable변화 없음 — muted 색.
.axe-metric-card__delta-arrowstable방향 화살표 글리프(▲/▼/—). aria-hidden.
.axe-metric-card__delta-labelstabledelta 부가 라벨(예: 'vs. 어제').
.axe-metric-card__helperstable값 아래 회색 부가 문장.
.axe-metric-card__sparklinestable미니 추세 SVG(polyline, currentColor).
.axe-metric-card--loadinginternalskeleton 모드 마커.
.axe-metric-card__skelinternalskeleton 플레이스홀더 바(shimmer ::after).
.axe-metric-card__skel--labelinternallabel 자리 skeleton(폭 40%).
.axe-metric-card__skel--valueinternalvalue 자리 skeleton(폭 70%).
.axe-metric-card__skel--helperinternalhelper 자리 skeleton(폭 55%).
비-React 소비 노트
Radix 무의존·순수 CSS 라 마크업만 맞추면 CSS-only 로 동일 재현 가능. 단 sparkline 은 호스트가 polyline points 를 직접 계산해 axe-metric-card__sparkline SVG 로 넣어야 하고(컴포넌트는 viewBox 0 0 100 24 에 min/max 정규화), delta 화살표 글리프도 direction 에 맞춰 넣어야 한다. delta-value span 은 CSS 규칙이 없는 순수 마크업 훅.
05 · Inclusive

접근성

키보드, ARIA, 구현 노트를 함께 검토합니다.

ARIA

루트는 일반 div — 별도 role 없음. loading=true 동안 aria-busy="true". delta 화살표와 sparkline SVG 는 aria-hidden(focusable=false) 이라 보조기술은 값 텍스트만 읽는다.

Notes

방향(up/down)은 색과 화살표로만 시각 전달되므로, 스크린리더 사용자를 위해 delta.value 나 delta.label 에 부호·맥락(예: '+12.3%', '전주 대비 상승')을 담아 텍스트만으로 의미가 서게 할 것. value 의 tabular-nums 는 갱신 시 자릿수 정렬을 보장한다.

06 · Judgment

권장 · 지양

권장
  • delta.label 로 비교 기준을 명시(무엇 대비 증감인지).
  • sparkline 은 같은 축척의 시계열에만 — 절대값보다 추세를 보여줄 때.
  • 여러 타일을 나열할 땐 grid/cluster 로 폭을 맞춰 tabular-nums 정렬을 살릴 것.
지양
  • 방향 정보를 색·화살표에만 의존하지 말 것(색맹·스크린리더).
  • value 에 단위를 섞어 자릿수를 흔들지 말 것 — 단위는 helperText 나 label 로.
검색창을 열면 컴포넌트 인덱스를 불러옵니다.