⚡ ComponentForge

DataTable

Data display

Generic table with sorting, multi/single selection, client pagination and first-class loading/error/empty states. Sort and selection support both controlled and uncontrolled modes.

import { DataTable<T> } from "@componentforge/react";

Examples

Sortable columns with optional selection

Recent orders (sample data)
ORD-1042Amara Okaforpaid2026-08-21$184.00
ORD-1043Jonas Weberpending2026-08-21$72.50
ORD-1044Priya Raghavanpaid2026-08-20$1,299.00
ORD-1045Tomás Herrerarefunded2026-08-19$54.00
ORD-1046Mei-Lin Chaopaid2026-08-18$349.00
Page 1 of 3 · 12 rows
Props

Accessibility

  • Sortable headers use aria-sort (ascending/descending/none); sort controls are real buttons.
  • Row selection checkboxes have generated labels ("Select row p3"); header checkbox reports indeterminate state.
  • Loading skeleton rows are aria-hidden and the table sets aria-busy.

Keyboard interactions

KeyAction
TabReach sort buttons and checkboxes in DOM order.
Enter / SpaceToggle sort / selection controls.

API reference

Selected props — every component also spreads native HTML attributes.

PropTypeDefaultDescription
columnsDataTableColumn<T>[]key, header, accessor?, render?, sortable?, align?, width?.
rows / rowKeyT[] / (row) => stringData + stable identity.
sort / defaultSort / onSortChange{ key, direction } | nullnullThree-state sorting contract.
selectionMode / selectedRowKeys…"none" | "single" | "multiple""none"Set-based selection contract.
pagination / onPageChange{ page, pageSize }Client pagination chrome; page stays controlled.
loading / error / onRetry / empty*Built-in state rendering.