Data table with caption and scope attributes, and an accessible scroll region for wide content.
Use native <table class="table"> inside a .table-wrap for surface, border, radius, and overflow.
Use <caption>, scope="col", and scope="row" for accessibility.
Use .text-end for numeric columns and .text-nowrap for non-wrapping cells.
For wide tables, make the wrapper an accessible scroll region with role="region", aria-labelledby, and tabindex="0".
Tables stay content-first and neutral by default.
.table is a static, content-first table. It provides no sorting, filtering, search, selection, pagination, or row actions. For an interactive data grid ("datatable"), use a dedicated component — see the data grid template, which themes data-grid-component with Actual CSS tokens.
.table does not consume shared variants or intent colors (--ui-bg / --intent): a .soft + intent combo on a <tr> has no effect. To tint rows or headers, style them with a class of your own.
Class reference
Class
Kind
Description
.table-wrap
Component
Scroll container and outer chrome (surface, border, radius).
For wide tables, add role="region", aria-labelledby, and tabindex="0" to
the wrapper so keyboard users can scroll it. --table-min sets the minimum
table width before the wrapper scrolls horizontally.
.compact lowers cell padding and establishes compact density for controls or
spacing helpers inside cells. Typography and icons stay unchanged. It is the
same vocabulary as .card.compact.