Table

Data grid table primitives matching design system divider and hairline border visual token specifications.

// Plain markup
import { Table, TableBody, TableCell, TableColumnHeaderCell, TableHeader, TableRow } from "@shavin/ui";

Sample table

ItemAmountDueStatus
Enterprise API Tier$2,400.00Sep 30, 2026Paid
Edge Compute (120M ops)$480.00Oct 1, 2026Processing
Dedicated IPv4 Pool$120.00Oct 15, 2026Scheduled
Audit Log Storage (90d)$75.00Oct 15, 2026Scheduled
Component Source
<Table>
  <TableHeader>
    <TableRow>
      <TableColumnHeaderCell>Item</TableColumnHeaderCell>
      <TableColumnHeaderCell>Amount</TableColumnHeaderCell>
      <TableColumnHeaderCell>Due</TableColumnHeaderCell>
      <TableColumnHeaderCell>Status</TableColumnHeaderCell>
    </TableRow>
  </TableHeader>
  <TableBody>
    {ROWS.map((row) => (
      <TableRow key={row.name} onClick={() => {}}>
        <TableCell className="font-medium text-fg">{row.name}</TableCell>
        <TableCell>{row.amount}</TableCell>
        <TableCell>{row.due}</TableCell>
        <TableCell>{row.status}</TableCell>
      </TableRow>
    ))}
  </TableBody>
</Table>

Props

Table takes no props beyond className and the native element's attributes.

Configure Theme
Theme
Accent Color
Custom
Gray Family
Appearance
Radius
Scaling
Panel Style
Heading Font
Body Font