Skip to content

Table

Bordered data table with a tinted header, row hover, and empty/loading/selected states.

Preview

Jobs table

JobCustomerStatusValue
#4412Nordküste — window cleanOn site€380
<div class="nx-table__wrap"><table class="nx-table"><thead><tr><th>Job</th><th>Customer</th><th>Status</th><th class="num">Value</th></tr></thead><tbody><tr><td style="font-variant-numeric:tabular-nums;color:var(--nx-slate-500)">#4412</td><td>Nordküste — window clean</td><td><span class="nx-badge nx-badge--soft">On site</span></td><td class="num">€380</td></tr></tbody></table></div>

API

React props (NxKit)

React (NxKit) props
PropTypeDefaultRequiredDescription
wrapbooleantrueWraps the table in the rounded .nx-table__wrap card; set false to compose your own wrapper.

Classes

Framework-agnostic classes
ClassDescription
.nx-tableBase table, uppercase muted th, hairline row rules
.nx-table__wrapRounded bordered card wrapper
.numRight-aligned, tabular-nums cell
.nx-table__emptyFull-width empty-state cell
.nx-table__row--loadingSkeleton placeholder row

States

empty

JobKundeWert
Keine JobsErstelle deinen ersten Job, um loszulegen.

loading

Jobs werden geladen
JobKundeWert

selected row

Job
#4412

Accessibility

  • Give a loading table a visually-hidden <caption> announcing the state ("Jobs werden geladen") for screen readers, since skeleton rows carry no text.
  • aria-selected="true" on tbody tr pairs with the same inset leading-edge marker as List row, RTL-mirrored — don't rely on the accent-50 tint alone.

Do / Don’t

  • Do: Right-align numeric columns with .num (tabular-nums).Don’t: Don't ship an empty table with no .nx-empty guidance — always give the next action.

View in spec →