Docs

Data feedback

DataTable

Feature-rich table with sorting, filtering, and pagination.

6 examplesData ComponentReact 19 & Next.js 16Tailwind CSS v4
Install
pnpm add @quinkit/ui @tanstack/react-table
Import
import { DataTable } from "@quinkit/ui";

Required packages

Powers DataTable sorting, filtering, and pagination. Add these packages before using this component:

  • @quinkit/ui
  • @tanstack/react-table

Install command is shown above. Without the peer package, imports will fail at build time.

Interactive Examples

Live previews · code · themes · viewport · dark mode

Sorting

Click a column header to sort ascending, descending, or clear.

Sorting rendered preview

Status
INV-1001Acme Inc$1,240.00paid
INV-1002Globex$890.00pending
INV-1003Initech$2,310.00overdue
INV-1004Umbrella$540.00paid
INV-1005Soylent$1,720.00pending
INV-1006Hooli$3,980.00paid

Global filtering

Type to filter rows across all visible columns.

Global filtering rendered preview

CustomerEmailStatus
Acme Incbilling@acme.compaid
Globexap@globex.iopending
Initechfinance@initech.comoverdue
Umbrellapay@umbrella.copaid
Soylentaccounts@soylent.compending
Hoolibilling@hooli.xyzpaid
Pied Piperar@piedpiper.comoverdue
Stark Industriespay@stark.compaid
Wayne Enterprisesap@wayne.compending
Wonkasweets@wonka.compaid

Pagination

Page through large datasets with previous and next controls.

Pagination rendered preview

InvoiceCustomerAmount
INV-1001Acme Inc$1,240.00
INV-1002Globex$890.00
INV-1003Initech$2,310.00
INV-1004Umbrella$540.00
INV-1005Soylent$1,720.00
INV-1006Hooli$3,980.00
INV-1007Pied Piper$460.00
INV-1008Stark Industries$5,230.00
INV-1009Wayne Enterprises$1,980.00
INV-1010Wonka$720.00

Use Previous / Next to page through 12 invoices (10 per page).

Column visibility

Show or hide columns on demand.

Column visibility rendered preview

Columns
InvoiceCustomerAmountStatus
INV-1001Acme Inc$1,240.00paid
INV-1002Globex$890.00pending
INV-1003Initech$2,310.00overdue
INV-1004Umbrella$540.00paid
INV-1005Soylent$1,720.00pending
INV-1006Hooli$3,980.00paid

Row actions

A per-row dropdown menu for contextual actions.

Row actions rendered preview

InvoiceCustomerAmountStatus
INV-1001Acme Inc$1,240.00paid
INV-1002Globex$890.00pending
INV-1003Initech$2,310.00overdue
INV-1004Umbrella$540.00paid
INV-1005Soylent$1,720.00pending
INV-1006Hooli$3,980.00paid

Loading & empty states

Switch between populated, loading, and empty results.

Loading & empty states rendered preview

InvoiceCustomerStatus
INV-1001Acme Incpaid
INV-1002Globexpending
INV-1003Initechoverdue
INV-1004Umbrellapaid
INV-1005Soylentpending

Overview

DataTable is part of the Week 4–6 free core component set. It follows the shared component standard with TypeScript exports, semantic token styling, accessibility-minded markup, and Storybook examples.

Installation

bash
pnpm add @quinkit/ui @tanstack/react-table

@tanstack/react-table is a required peer dependency for DataTable.

Accessibility Details

  • Uses semantic HTML or Radix primitives where applicable.
  • Interactive components expose keyboard/focus behavior through native controls or Radix.
  • ARIA roles, states, and labels are applied where relevant.

Styling

  • Uses semantic design tokens such as bg-background, text-foreground, border-border, bg-popover, and text-muted-foreground.
  • Motion-heavy components include reduced-motion compatible classes where applicable.

Accessibility & Keyboard

DataTable adheres to WAI-ARIA design patterns for accessible web components.

Keyboard Navigation

  • Tab / Shift + Tab — Focuses control and moves between interactive elements.
  • Space / Enter — Triggers action or toggles selection.
  • Escape — Closes open popovers, overlays, or dropdown menus.

ARIA Standards

  • Built with semantic HTML tags and explicit aria-* attributes.
  • Uses high-contrast focus rings (ring-ring) visible in both light & dark mode.
  • Supports screen readers with non-visual label fallbacks.

Registry Install

Add a shadcn-compatible bridge file to your project that re-exports from @quinkit/ui.

Registry
npx shadcn@latest add https://quinkit-ui.vercel.app/r/data-table.json