Table · Docs

스토리북 개발자들을 위한 내부 문서

Components

Table

Docs

Table API 사용가이드입니다. 조합 예시는 Overview를 참고하세요.

API

Table · TableHeader · TableBody · TableFooter · TableRow · TableHead · TableCell · TableCaption을 조합합니다. 데이터 배열은 Root prop이 아니라 호출측에서 map해 Row/Cell로 렌더합니다.

import {
  Table,
  TableBody,
  TableCaption,
  TableCell,
  TableHead,
  TableHeader,
  TableRow,
} from "@/components/table";

const invoices = [
  { id: "INV001", status: "Paid", method: "Credit Card", amount: "$250.00" },
  { id: "INV002", status: "Pending", method: "PayPal", amount: "$150.00" },
];

<Table>
  <TableCaption>최근 인보이스 목록</TableCaption>
  <TableHeader>
    <TableRow>
      <TableHead className="w-[100px]">Invoice</TableHead>
      <TableHead>Status</TableHead>
      <TableHead>Method</TableHead>
      <TableHead className="text-right">Amount</TableHead>
    </TableRow>
  </TableHeader>
  <TableBody>
    {invoices.map((row) => (
      <TableRow key={row.id}>
        <TableCell className="font-medium">{row.id}</TableCell>
        <TableCell>{row.status}</TableCell>
        <TableCell>{row.method}</TableCell>
        <TableCell className="text-right">{row.amount}</TableCell>
      </TableRow>
    ))}
  </TableBody>
</Table>

Props

NameTypeDefaultDescription
Table.containerClassName
string가로 스크롤 래퍼(div) className. Table.className은 <table>에 적용됩니다.
Table.* / Header.* / …
native HTML attributes각 파트는 대응 native 요소 props를 받습니다. 예: TableCell.colSpan, TableHead.scope, TableRow.data-state.
TableRow.data-state
"selected" | stringdata-state="selected"면 기본 selected 배경(bg-action-secondary-pressed)이 적용됩니다. className으로 덮을 수 있습니다.
className
string각 파트의 추가 클래스. Header/Footer/Row에 bg-* · hover:bg-* 등을 주면 기본 색보다 우선합니다. Head/Cell 패딩도 동일.

Events

NameSignatureDescription
onClick 등native event handlersRow · Cell 등에 onClick · onKeyDown 등 native 핸들러를 그대로 전달할 수 있습니다.

Notes

  • 소비 앱 필수: React 19, Tailwind CSS v4, ClaBi tokens.css(+ @theme 매핑), clsx.
  • clsx 패키지가 필수입니다. className 병합에 import { clsx } from "clsx" 를 사용합니다.
  • 옵션 목록/데이터는 Root prop이 아닙니다. 호출측에서 map해 children으로 전달하세요.
  • 셀 패딩은 반응형입니다. 모바일 compact(px-12/py-8) · md+ medium(p-16). Head는 h-9/px-12 · md:h-12/px-16.
  • Head/Cell className에 패딩(또는 Head의 height) 유틸이 있으면 기본 패딩을 적용하지 않습니다.
  • 가로 스크롤은 Table 래퍼(overflow-x-auto)가 담당합니다.
  • 기본 색: Header/Footer bg-surface-neutral-subtle, Row bg-surface-default, hover:bg-action-secondary-hover, selected:bg-action-secondary-pressed.
  • 색상 커스텀은 TableHeader · TableRow 등 className으로 전달합니다 (다른 UI 컴포넌트와 동일).
  • selected 스타일은 data-state="selected"가 있는 행에만 적용됩니다.