Pagination

Previous and next buttons around the page numbers of a long list or table.
Stable
Web
iOS
Android
@advui/core
Source
JSX
<Pagination count={10} />
variant
size

Installation

pnpm
pnpm add @advui/core
npm
npm install @advui/core

Usage

import { Pagination } from '@advui/core'

<Pagination count={12} page={page} onPageChange={setPage} />

Examples

Basic

Controlled

Drive it from your data’s page.
Showing 1–10 of 87 projects

Compact

API reference

Pagination

PropTypeDefaultDescription
count requirednumber—Number of pages.
pagenumber—Current page, from 1 (controlled).
defaultPagenumber1Initial page when uncontrolled.
onPageChange(page: number) => void—Page changed.
siblingsnumber1Pages shown on each side of the current one.
boundariesnumber1Pages always shown at the start and the end.
variant'full' | 'compact''full'`compact` shows "Page 3 of 10" instead of numbers; good on phones.
size'sm' | 'md''md'Button size.
disabledbooleanfalseDisables every button.
labelsPartial<PaginationLabels>—Button names and the compact text, for translation.

getPaginationItems(page, count, options?)

The page numbers and gaps to show, for building your own pager. The item count stays the same while paging.

Accessibility

  • A nav landmark named "Pagination" (set aria-label when a page has more than one) around a list of buttons.
  • Page buttons are named "Page 3"; the current one has aria-current="page" on web and is "selected" on native.
  • Previous and next are named icon buttons, disabled at the ends. The gaps are hidden.
  • The compact text is a polite live region, so the new page is announced.
Keyboard interactions
KeyAction
TabMoves through the buttons.
Enter / SpaceGoes to that page.

Responsive behavior

Below the xs breakpoint the buttons shrink to 32px so a full pager fits a phone. On very narrow screens they wrap; use variant="compact" or siblings={0} there.

Since v0.6.0Last updated Nov 2, 2026Edit this page on GitHub