Table

Usage

Compose Table, TableHeader, TableBody, TableRow, TableHead, TableCell, and TableCaption for fully semantic tables.

Recent meetings processed by Jamie.
DateMeetingDurationAction Items
Feb 10Q3 Earnings Review45 min8
Feb 11Budget Planning Sync30 min5
Feb 12Investor Call Prep60 min12
Feb 13Revenue Forecast Review25 min3
Feb 14Month-End Close Debrief40 min7
import {
  Table,
  TableBody,
  TableCaption,
  TableCell,
  TableHead,
  TableHeader,
  TableRow
} from '@jamie/ui/table'
 
const meetings = [
  { date: 'Feb 10', title: 'Q3 Earnings Review', duration: '45 min', actionItems: 8 },
  { date: 'Feb 11', title: 'Budget Planning Sync', duration: '30 min', actionItems: 5 },
  { date: 'Feb 12', title: 'Investor Call Prep', duration: '60 min', actionItems: 12 },
  { date: 'Feb 13', title: 'Revenue Forecast Review', duration: '25 min', actionItems: 3 },
  { date: 'Feb 14', title: 'Month-End Close Debrief', duration: '40 min', actionItems: 7 }
]
 
export function TableDemo() {
  return (
    <Table>
      <TableCaption>Recent meetings processed by Jamie.</TableCaption>
      <TableHeader>
        <TableRow>
          <TableHead>Date</TableHead>
          <TableHead>Meeting</TableHead>
          <TableHead>Duration</TableHead>
          <TableHead className="text-right">Action Items</TableHead>
        </TableRow>
      </TableHeader>
      <TableBody>
        {meetings.map((meeting) => (
          <TableRow key={meeting.date}>
            <TableCell className="text-muted-foreground">{meeting.date}</TableCell>
            <TableCell className="font-medium">{meeting.title}</TableCell>
            <TableCell>{meeting.duration}</TableCell>
            <TableCell className="text-right">{meeting.actionItems}</TableCell>
          </TableRow>
        ))}
      </TableBody>
    </Table>
  )
}