Bridge UI

Pagination

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

Introduction

Pagination provides previous/next controls 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.

When to use: Paged tables, search results, and any list that splits into discrete pages. 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: text (default), ghost, or outlined.

Rounded

rounded shapes ghost 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 are named Previous and Next.
  • Ellipsis placeholders are aria-hidden.

Anatomy

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

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

Breadcrumb, Link, Tabs

API

Pagination

Prop Type Default Description
mode "numbered" \| "simple" "numbered" Numbered pages vs prev/next only.
count number Total pages (numbered mode).
page number Controlled page, 1-based (React numbered mode).
defaultPage number 1 Uncontrolled initial page (React numbered mode).
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.
siblingCount number 1 Pages shown on each side of the current page.
boundaryCount number 1 Pages always shown at the start and end.
hasNext boolean Whether next is available (mode="simple").
hasPrevious boolean Whether previous is available (mode="simple").
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.
hidePrevButton boolean false Hide the previous control.
hideNextButton boolean false Hide the next control.
disabled boolean false Disable all controls.
variant PaginationVariant "text" Visual style: text, ghost, outlined.
color PaginationColor "primary" Selected page accent color.
size PaginationSize "md" Control size: sm, md, lg.
rounded PaginationRounded "md" Corner radius for ghost items / outlined group edges.
classes PaginationClasses Classes for root, list, item, prev, next, ellipsis.
customProps PaginationCustomProps Extra props for root, list, item, prev, next, icons, and ellipsis.
slots PaginationSlots prev, next, ellipsis.