Home / Primitives / Pagination

Pagination

Paged navigation through long lists. Three flavours — numbered for short ranges, prev/next for long, condensed for tight toolbars.

Stable .pg 3 variants

Numbered

Shows page numbers with first / last anchors and an ellipsis when the range is wide.

Numbered with ellipsis .pg .pn.current

Prev / next with count

For long-tail lists where page numbers don't help. Always shows the absolute row range and total.

Showing 41–60 of 18,420 receipts
Long list — row range + prev / next

With page-size selector

Bottom-of-table pagination row — count, page selector, and rows-per-page picker.

18,420 receipts
Rows per page
Full footer · count · size · paging

Condensed

26 px footprint for toolbars and slide-overs. Lose the numbers; keep the arrows and the count.

3 / 921
Compact pager · 26 px

Parts

PropertyValueNotes
button30 × 30 px min26 condensed · 36 large
radius6 pxSquare hit area; brand-fill for current
font500 13 px / 1 sansTabular-nums on the number cells
ellipsisNon-clickable
focus2 px outlineKeyboard cycles arrows + numbers

Do & don't

Do

Always show the total count. The operator needs to know how big the dataset is.

Don't

Make the user click through 200+ pages. Past 50, switch to filter + search.

Do

Persist page size in localStorage. The operator picked it for a reason.

Don't

Reset to page 1 when the user re-sorts. Stay where they were.

Related

For data table pagination patterns, see Data table. For loading more rows, see Skeleton.