<!-- source-hash: 808a537086105a4fbc3af48a2f6c9794 -->
Legacy table component type definitions, all marked `@deprecated` in favor of the `data-table` module's types.

## Key Components

| Type | Kind | Description |
|------|------|-------------|
| `TableColumn<T>` | Interface | Column definition with sorting, filtering, rendering, and responsive visibility options |
| `TableProps<T>` | Interface | Full table configuration including data, pagination, selection, sorting, filtering, and styling |
| `CursorPagination` | Interface | Cursor-based pagination controls with next/previous navigation callbacks |
| `PagePagination` | Interface | Page-number-based pagination with page change callback |
| `InfiniteScrollConfig` | Interface | Infinite scroll configuration with load-more callback |
| `FilterOption` | Interface | Single filter option with id, label, and value |
| `FilterSection` | Interface | Grouped filter UI section supporting checkbox, radio, or select types |
| `TableFilters` | Interface | Map of column keys to active filter values |
| `BulkAction<T>` | Interface | Bulk action definition applied to selected rows |
| `RowAction<T>` | Interface | Per-row action with label, icon, and click handler |
| `TableHeaderProps<T>` | Interface | Props for the table header sub-component |
| `TableRowProps<T>` | Interface | Props for an individual table row sub-component |
| `TableCellProps` | Interface | Props for a single table cell |
| `TableCardSkeletonProps` | Interface | Skeleton loader configuration for loading states |
| `TableEmptyStateProps` | Interface | Empty state display with optional action button |
| `TailwindBreakpoint` | Type | Responsive breakpoint union: `'md' \| 'lg' \| 'xl' \| '2xl'` |

## Usage Example

> ⚠️ **Deprecated** — migrate to types from the `data-table` module instead.

```typescript
import type { TableColumn, TableProps, CursorPagination } from './types'

interface User {
  id: string
  name: string
  email: string
}

const columns: TableColumn<User>[] = [
  {
    key: 'name',
    label: 'Name',
    sortable: true,
    hideAt: 'md',
    renderCell: (user) => <span className="font-medium">{user.name}</span>,
  },
  {
    key: 'email',
    label: 'Email',
    filterable: true,
    filterKey: 'email',
  },
]

const pagination: CursorPagination = {
  hasNextPage: true,
  endCursor: 'cursor_abc123',
  onNext: (cursor) => fetchUsers({ after: cursor }),
  onReset: () => fetchUsers({}),
  totalCount: 200,
  showInfo: true,
}

const tableProps: TableProps<User> = {
  data: users,
  columns,
  rowKey: 'id',
  loading: false,
  selectable: true,
  cursorPagination: pagination,
  stickyHeader: true,
  stickyHeaderOffset: 'top-[72px]',
  onRowClick: (user) => router.push(`/users/${user.id}`),
}
```