Table
컬럼 정의 기반 정적 데이터 테이블 — 빈 상태 내장, 정렬·페이지네이션은 소비자 책임(YAGNI)입니다.
마지막 업데이트 2026-06-11
한눈에#
컬럼 정의 + 데이터 + rowKey만으로 가볍게 렌더하는 읽기 전용 정적 테이블입니다 — 빈 상태가 내장돼 있고, 정렬·페이징은 소비자 책임(YAGNI)입니다.
| 에이전트 | 역할 | 작업 수 |
|---|---|---|
| 플래너 | 작업 분해 | 12 |
| 코더 | 구현 | 34 |
| 리뷰어 | 코드 리뷰 | 21 |
- 컬럼 정의 기반 정적 표
- 빈 상태 내장
- 정렬·페이징은 소비자
- 시맨틱 table
좁은 화면은 가로 스크롤 래퍼가 표 구조를 깨지 않고 보호 — 인터랙션이 필요하면 DataGrid
사용 시점#
읽기 전용으로 데이터를 정적으로 표시하면 Table — 정렬·선택·편집·페이징 중 하나라도 필요하면 DataGrid입니다.
쓴다
| 에이전트 | 작업 |
|---|---|
| 플래너 | 12 |
| 코더 | 34 |
정렬·선택·편집·페이징이 필요 없는 읽기 전용 표(가벼운 마크업·작은 번들)
플레이그라운드#
컨트롤로 props를 조작하면 미리보기와 코드가 실시간 갱신됩니다.
| 이름 | 역할 |
|---|---|
| 김위즈 | 플래너 |
| 이코드 | 코더 |
| 박리뷰 | 리뷰어 |
import { Table } from '@wds/ui-web';
<Table columns={columns} data={members} rowKey={(row) => row.id} />해부#
셀(td)의 패딩이 표의 측정 단위입니다 — 1열 표본 위에 실측을 핀으로 얹습니다.
| 에이전트 |
|---|
| 플래너 |
- padding-block
- 12px
space-3 - padding-inline
- 16px
space-4 - font
- 14px
body-2 - border-bottom
- 1px
color.border
변형 — 커스텀 셀#
render로 셀 내용을 자유 구성합니다 — 기본 렌더는 row[key]의 문자/숫자만 표시합니다.
| 에이전트 | 상태 |
|---|---|
| 플래너 | 실행 중 |
| 리뷰어 | 대기 |
크기#
폭은 부모 100%, 좁은 화면에서는 래퍼가 가로 스크롤로 보호합니다.
셀 패딩은 space.3×space.4 단일 밀도 — compact 밀도는 수요 시 추가.
상태#
| 에이전트 | 작업 수 |
|---|---|
| 아직 실행된 에이전트가 없습니다 | |
행 hover는 surface-hover 배경 — 의사클래스로 처리됩니다.
Props#
| Prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
columns | TableColumn<T>[] | — | 컬럼 정의 배열 (아래 표) |
data | T[] | — | 행 데이터 — 비어 있으면 emptyContent 표시 |
rowKey | (row, index) => string | — | 행 고유 키 — index 키 금지라 명시 강제 |
caption | ReactNode | — | 표 설명 — 접근 가능한 이름이 됨 |
emptyContent | ReactNode | '데이터가 없습니다' | 0건 표시 내용 |
TableColumn<T>:
| Prop | 타입 | 기본값 | 설명 |
|---|---|---|---|
key | string | — | 데이터 키 또는 컬럼 id — render 미지정 시 row[key] 표시 |
header | ReactNode | — | 헤더 셀 내용 |
align | 'left' | 'center' | 'right' | 'left' | 정렬 — 숫자는 right 권장 |
width | string | — | 컬럼 폭 (CSS 값) |
render | (row, rowIndex) => ReactNode | — | 커스텀 셀 렌더 |
접근성#
- 시맨틱
<table>렌더 —<th scope="col">헤더,caption이 표 이름 - 좁은 화면 가로 스크롤 래퍼 — 표 구조를 깨지 않고 유지
- 정렬/선택 같은 인터랙션을 더할 때는
aria-sort·행 선택 ARIA를 소비자가 함께 설계
토큰#
component 토큰 없이 semantic을 직접 소비합니다(신설 기준 §4 미충족).
| 속성 | 토큰 |
|---|---|
| 헤더 배경/글자 | color.surface-muted · color.text-muted |
| 구분선 | color.border (헤더 하단은 border-strong) |
| 행 hover | color.surface-hover |
| 셀 패딩 | space.3 × space.4 |