Design a composable table component.
Component tree:
DataTable
├── TableToolbar (search, filters, actions)
├── TableHeader
│ └── HeaderCell (sortable, resizable)
├── TableBody
│ └── TableRow
│ └── TableCell
├── TablePagination
└── SelectionContext
Headless approach: Separate logic (sorting, filtering) from rendering. Allows custom UI while reusing logic.
Libraries like TanStack Table: Provide headless table logic.