Components / navigation

State matrix

firstrequired
middlerequired
lastrequired

Anatomy

  • labelled navigation
  • previous control
  • page status
  • next control
  • live announcement

Keyboard contract

Controls use native activation and become disabled at range boundaries.

Screen-reader contract

Current page and total are announced; disabled boundaries are exposed.

Content rules

  • Use stable page nouns.
  • Preserve filters and URL state across pages.

Public API

PropTyperequiredDescription
pagenumberrequiredCurrent one-based page
pageCountnumberrequiredTotal pages
onChange(page: number) => voidrequiredPage request
ariaLabelstringLocalized navigation name
previousLabelstringLocalized previous-page action
nextLabelstringLocalized next-page action
formatPageStatus(page: number, pageCount: number) => stringLocale-aware page announcement

Adaptation contracts

RTL
Follow document direction for directional keys and visuals while preserving semantic order.
High contrast
Current, selected, expanded, and focus states remain distinct without fill alone.
Reduced motion
Move selection and disclosure state without animated travel.

Verification IDs

Pagination/range-boundaries, Pagination/localized-labels

Live

Live

Copyable example

import { Pagination } from "@awesome-ds/react";

<Pagination page={2} pageCount={5} onChange={() => {}} />