List tables are the canonical row-data surface. One base class (.sp-list-table) carries the chrome — header cells in 12/600 help-text on a tinted background, hairline row dividers, row hover via --row-hover. Variations layer on with column-level modifiers (.cb-col, .num, .sortable) or whole-table modifiers (.dense).
One table chrome scales from a 5-row settings list to a 5,000-row data grid. The base class handles the common chrome; modifiers handle variation. Use the basic list for "browse entities" pages and add selectable/sortable for data grids where users need bulk operations.
.dense for log views, audit trails, and other scanning-heavy surfaces.| Element | Class | Notes |
|---|---|---|
| Base table | .sp-list-table | Standard chrome — 36 px row height, 16 px cell padding, hairline row dividers. |
| Dense modifier | .sp-list-table.dense | Drops row height to 28 px and body text to 12 px. |
| Checkbox column | .cb-col | Narrow column at the left for row selection checkboxes. |
| Numeric column | .num | Right-aligned, tabular-nums. Apply to both <th> and <td>. |
| Sortable header | .sortable | Header cell with sort affordance. Add .sorted.asc or .sorted.desc for active state. |
| Selected row | tr.checked | Background shifts to --row-selected-bg. |
.num on every numeric column. Vertically stacked digits with different widths read as typos.