bx

Pagination

Pagination with page navigation, next and previous links.

tsx
<Pagination>...</Pagination>

Pagination — nav des pages d'une liste. Une seule PaginationLink porte isActive. PaginationPrevious/Next et PaginationEllipsis pour les extrémités et les gaps.

Installation

Terminal
$ bext ui add pagination

Usage

tsx
import { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis } from "@bext-stack/ui/primitives"

<Pagination>
  <PaginationContent>
    <PaginationItem><PaginationPrevious href="?p=1" /></PaginationItem>
    <PaginationItem><PaginationLink href="?p=1">1</PaginationLink></PaginationItem>
    <PaginationItem><PaginationLink isActive href="?p=2">2</PaginationLink></PaginationItem>
    <PaginationItem><PaginationLink href="?p=3">3</PaginationLink></PaginationItem>
    <PaginationItem><PaginationEllipsis /></PaginationItem>
    <PaginationItem><PaginationNext href="?p=3" /></PaginationItem>
  </PaginationContent>
</Pagination>

Anatomy

<Pagination>
  └── <PaginationContent>              // <ul>
      ├── <PaginationItem><PaginationPrevious href="?p=1" /></PaginationItem>
      ├── <PaginationItem><PaginationLink isActive href="?p=2">2</PaginationLink></PaginationItem>
      ├── <PaginationItem><PaginationEllipsis /></PaginationItem>
      └── <PaginationItem><PaginationNext href="?p=3" /></PaginationItem>
</Pagination>

API Reference

Pagination

Prop Type Default Description
children ReactNode Wrapper

PaginationContent

Prop Type Default Description
children ReactNode undefined

PaginationItem

Prop Type Default Description
children ReactNode undefined
Prop Type Default Description
href string undefined
isActive boolean aria-current="page" + variant outline.
size "icon" | "default" "icon" undefined
children ReactNode undefined

PaginationPrevious / PaginationNext

Prop Type Default Description
href string undefined

PaginationEllipsis

Prop Type Default Description

Accessibility

Le nav porte aria-label="pagination". La page active porte aria-current="page". PaginationEllipsis a aria-hidden + un span visuellement caché "More pages".

Try it live
Open in play

Edit this component live in the bext playground. The PRISM + signals version is the bext-native idiom — fine-grained reactivity, no virtual DOM.

src/app/page.tsx 2 files · signals · runs in your browser
Pure PRISM + real bext signals — fine-grained, no re-render.