<!-- source-hash: ec4b9765ec4a72e85067393812e2e172 -->
A deprecated generic `Table` component that renders a card-style data table with sorting, filtering, selection, pagination, and infinite scroll support.

## Key Components

### `injectSyntheticColumns<T>`
Internal helper that appends synthetic columns to the column definitions:
- **`__actions__`** — renders row-level action buttons or a custom `renderRowActions` slot
- **`__chevron__`** — renders a navigation chevron button when `rowHref` is provided

### `Table<T>`
The main exported component. **Marked `@deprecated`** — use `DataTable` from `data-table` instead.

Key features:
- **Loading state** — shows `TableCardSkeleton` while fetching with no data
- **Empty state** — renders `TableEmptyState` with a configurable message
- **Row selection** — checkbox-based with `selectable`, `selectedRows`, and `onSelectionChange`
- **Bulk actions toolbar** — appears when rows are selected and `showToolbar` + `bulkActions` are set
- **Sorting & filtering** — delegated to `TableHeader` via `sortBy`, `sortDirection`, `onSort`, `filters`
- **Pagination** — supports cursor-based (`CursorPagination`) or page-based (`Pagination`)
- **Infinite scroll** — uses `IntersectionObserver` on a sentinel `<div>` to trigger `onLoadMore`
- **Sticky header** — controlled via `stickyHeader` and `stickyHeaderOffset`
- **Placeholder rows** — invisible rows maintain consistent table height when data count is below `skeletonRows`

## Usage Example

```typescript
<Table
  data={users}
  rowKey="id"
  columns={[
    { key: 'name', label: 'Name', renderCell: (u) => u.name },
    { key: 'email', label: 'Email', renderCell: (u) => u.email },
  ]}
  rowActions={[{ label: 'Edit', icon: <EditIcon />, onClick: (u) => openEdit(u) }]}
  rowHref={(u) => `/users/${u.id}`}
  onRowClick={(u) => console.log(u)}
  cursorPagination={{
    hasNextPage: true,
    hasPreviousPage: false,
    onNext: fetchNext,
    onPrevious: fetchPrev,
  }}
  loading={isFetching}
  skeletonRows={5}
/>
```