A data screen: scrollable .table for rows, then .pagination for paging. Combines Tables and Pagination.
When to use it
- Admin lists, CRM views, or reports with more rows than fit on one screen.
- Row selection via checkboxes and optional bulk actions above the table (see Toolbar + modal).
- On small viewports, the same data can collapse to card stacks (see Tables → Responsive).
Recipe
- Wrap the table in
.table-scrollwithrole="region",tabindex="0", and anaria-label. - Use semantic
<table>,<caption class="sr-only">, andscope="col"on headers. - Place
nav.paginationdirectly under the scroll region, not inside it. - Add
data-table-liveanddata-pagination-livewhen using the doc reference scripts.
Live demo
| Name | Role | Status | |
|---|---|---|---|
| Alex Martin | Product designer | Active | |
| Samira Chen | Engineer | Active |
Copy markup
<section aria-labelledby="results-title">
<h2 id="results-title" class="heading-h4">Team members</h2>
<div class="table-scroll" role="region" tabindex="0" aria-label="Team members">
<table class="table" data-table-live="">
<caption class="sr-only">Team members</caption>
<thead>…</thead>
<tbody>…</tbody>
</table>
</div>
<nav class="pagination" data-pagination-live="" aria-label="Results pagination">
<div class="pagination__group">
<ul class="pagination__list">…</ul>
</div>
</nav>
</section>
Behavior (reference)
import { wireAllTables } from './table-behavior';
document.addEventListener('DOMContentLoaded', () => wireAllTables());
// Row table: .table-scroll[aria-label] + .table[data-table-live] + tbody tr[data-table-select-row]
// Header checkbox toggles all rows; row checkbox and row click stay in sync
// See docs-site/src/lib/pagination-behavior.ts (page selection, jumper prev/next).