Components

Tables

The dashboard's table: quiet headers, hairline rows, tabular numbers on the right, a totals row at the foot. Click a header to sort, a row to open it, checkboxes to act on many at once.

Sort, select, search, page

Everything here works: sort by any header, search, choose rows to archive (with Undo), open a row, change page. Totals follow the search.

Casa do MonteCosta FamilyActive
64%
€98,000€57,702
Quinta restorationQuinta VelhaActive
41%
€84,000€35,301
Harbour officeLagos MarinaActive
22%
€71,000€15,890
Clinic fit-outMarina ClinicActive
78%
€61,000€45,439
Atlântico loftAtlântico StudioActive
55%
€52,000€27,313
12 jobs€606,400€301,946

Loading

Rows keep their place while data arrives.

InvoiceDateStatusAmount

Props

PropValuesDefaultWhat it does
columns{ key, label, align?, sortable?, format?, cell? }[]—What each column shows; cell is a snippet for custom content
rows / rowKeyobject[] · string· 'id'The data and its unique key
sort / dirbindable key · 'asc' | 'desc'null · descCurrent sort (numbers start high, text starts at A)
selectable / selectedboolean · bindable keys[]false · []Checkbox column for bulk actions
onrowclick(row) => void—Makes rows clickable (also with Enter)
footer{ [key]: text }—Totals row
loading / emptyTitle / denseboolean · string · boolean—Skeleton rows · empty message · tighter rows