AhaSlides Design
v0.52.0React · Vue · Lit

Patterns · Data

Table

A data grid — results, leaderboard, participant/admin list — rendered through the shared DataTable.

Examples

API

PropTypeDefaultNotes
columnsColumn[][]dataIndex / key / title / sorter / filter / fixed / width
dataSourceobject[][]row data
rowKeystring | fnunique row id
paginationobject | falsebrand-outlined page + N/page size changer
reorderablebooleanfalsedrag headers to reorder
freezablebooleanfalseright-click header to freeze one column

Install

# .npmrc — once: point the @ahaslides-product scope at GitHub Packages
@ahaslides-product:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}   # a GitHub token with read:packages

npm i @ahaslides-product/design
import '@ahaslides-product/design/tokens.css';   // once, at the app root
import '@ahaslides-product/design/table-theme';   // registers <table>

Agent feed for this component (absolute, fetchable anywhere): table.agent.json · table.md · table.llms.txt

When to use

When to use
  • DataTable — any rows×columns grid — results, leaderboard, admin list
  • never a raw <Table> — a bare antd Table restyled per call site is the drift this replaces
White header (not antd grey #fafafa), single-arrow sort (not dual caret), Phosphor icons, tokenised colour. The look is theme-driven; call sites pass data + columns only.
Surfaces
editor dashboard admin

Spec

Container white surface, 1px #E3E3E3 border, radius 8 — wraps the whole grid · Header white #fff + secondary-grey #8A8A8A labels (row 60px) · Body horizontal dividers #E3E3E3 only, no zebra; row 60px · Radius 8 · Cell padding 16 (literal) · Row hover gray-30 #F1F1F1 · Customisations (DS V3) sorting (single arrow) · filtering (checklist/range) · reorder · resize · rows-per-page · freeze · add/remove columns