Bridge UI

Pagination

Page controls for lists and tables with numbered pages or simple prev/next.

Introduction

Pagination provides previous/next controls with labels and page numbers for lists and tables. Use numbered mode when you know the total page count, or mode="simple" for cursor-style APIs that only expose next/previous. Previous and Next resolve through the i18n adapter.

When to use: Paged tables, search results, and any list that splits into discrete pages. DataTable renders its own chrome pager when page is set. Prefer Link for a single destination and Tabs for switching peer views on the same level.

Use the framework selector in the site header to switch between React and Vue.

Import

import { Pagination } from "@bridge-ui/vue/Components/Pagination";
import { Pagination } from "@bridge-ui/react/Components/Pagination";

Basic usage

Pass count for the total number of pages. Control the page with page / onChange (React) or v-model (Vue). Pages are 1-based.

Variants

Choose the control style with variant: ghost (default), text, or outlined.

Rounded

rounded shapes ghost and text item corners and the outlined group / edge controls.

Siblings and boundaries

Tune the visible window with siblingCount (pages beside the current page) and boundaryCount (pages always shown at each end). Long ranges insert ellipsis placeholders.

Simple mode

For APIs that do not expose a total page count, set mode="simple" and drive availability with hasNext / hasPrevious plus onNext / onPrevious (React) or @next / @previous (Vue).

Sizes

Change density with size: sm, md (default), and lg.

Accessibility

  • The root renders a nav with aria-label="Pagination" by default. Override with your own aria-label when the page has more than one pagination control.
  • Page buttons use aria-label="Page N"; the current page also gets aria-current="page".
  • Previous and next controls show Previous and Next labels beside the chevrons.
  • Ellipsis placeholders are aria-hidden.

Anatomy

<nav aria-label="Pagination"> <!-- root -->
  <ul> <!-- list -->
    <li> <!-- previous -->
      <button> <!-- prev control: chevron + Previous / slots.prev -->
    <li> <!-- page or ellipsis -->
      <button|li> <!-- page item / ellipsis -->
    <li> <!-- next -->
      <button> <!-- next control: Next + chevron / slots.next -->
  </ul>
</nav>

Target parts with classes: root, list, item, prev, next, and ellipsis.

Breadcrumb, Link, Tabs, Stepper, Table, DataTable

API

Pagination

Prop Type Default Description
boundaryCount number 1 Pages always shown at the start and end.
classes PaginationClasses — Classes for root, list, item, prev, next, ellipsis.
color PaginationColor "dark" Optional text accent for the selected page. Selected surface comes from variant.
count number — Total pages (numbered mode).
customProps PaginationCustomProps — Extra props for root, list, item, prev, next, icons, and ellipsis.
defaultPage number 1 Uncontrolled initial page (React numbered mode).
disabled boolean false Disable all controls.
hasNext boolean — Whether next is available (mode="simple").
hasPrevious boolean — Whether previous is available (mode="simple").
hideNextButton boolean false Hide the next control.
hidePrevButton boolean false Hide the previous control.
mode "numbered" \| "simple" "numbered" Numbered pages vs prev/next only.
modelValue number 1 Bound page with v-model (Vue numbered mode).
onChange (page: number) => void — Called when the page changes (React numbered mode). Vue emits change / update:modelValue.
onNext () => void — Called when next is activated in simple mode (React). Vue: @next.
onPrevious () => void — Called when previous is activated in simple mode (React). Vue: @previous.
page number — Controlled page, 1-based (React numbered mode).
rounded PaginationRounded "md" Corner radius for ghost / text items and outlined group edges.
siblingCount number 1 Pages shown on each side of the current page.
size PaginationSize "md" Control size: sm, md, lg.
slots PaginationSlots — prev, next, ellipsis.
variant PaginationVariant "ghost" Visual style: ghost, text, outlined.