Skip to content

role navigation

Pagination draft v0.1.0

Lets people move between the pages of a long list, with the current page marked.

A pagination splits a long list of results into pages and lets people go to a page by its number, or to the previous and next ones. It shows which page is current. The pages are links: each one has a destination, so the browser handles history and focus. Which page numbers to show (all, a window around the current one) is the application's choice: the component renders the list it is given.

Guidelines

From apps/docs/content/components/pagination.md

Overview

A pagination splits a long list into pages and lets people go to a page by its number or to the previous and next ones. The pages are links with destinations, so the browser handles history and focus; the current page is marked and is not a link. Which numbers to show (all of them, a window around the current one, an ellipsis) is the application’s decision: the component renders the list it is given.

This page applies to every platform. Where a platform differs, the difference sits under a sub-heading named after it (Web, iOS, Android, Desktop); everything else holds everywhere.

When to use

  • Lists of results too long for one page: search results, orders, logs.
  • Any list where people need to reach a far page directly, or to come back to a page later.

When not to use

  • Infinite scrolling or “Load more” fits better when people read through a feed; it is another pattern.
  • A few pages of a flat sequence (an onboarding): a step indicator or a page control.

Sizes

Size Use for
Small Under dense tables: 32 px links with 14 px text.
Medium The default: 40 px links with 16 px text.

States

States belong to the items.

State How it happens What changes
Default A page link. Text on a transparent background.
Hover A pointer rests over a link. Needs a pointing device: there is no hover on touch. The subtle neutral tint.
Active Pressed down. The next tint.
Focus visible Keyboard focus on a link. The shared focus ring appears around it. Pointer focus shows no ring.
Current The page’s current property. Filled with the accent neutral color, not a link, exposed as current.
Disabled Previous or next without a destination. Dimmed, not focusable, exposed as disabled.

Content

  • Page labels are the numbers; an ellipsis stands for skipped pages and is not a link.
  • Previous and Next are written out next to their chevrons.

Accessibility

The Specification tab lists the full accessibility contract. Each statement there links the source it comes from. This section explains the decisions behind it.

Web

iOS

  • A page control shows a row of indicators, the current one solid, for a few pages of a flat list; numbered links remain for long lists (Apple HIG: Page controls).
  • Breadcrumb (where a page sits in a hierarchy)