Pagination

Page navigation with previous / next links. Page numbers stay LTR (1 → 2 → 3) in both writing directions. Pass custom children on Previous / Next to localize labels.

Basic

Previous / next with page links and an ellipsis for longer ranges.

Installation

CLI
npx @sonojs/ui@latest add pagination
Also needsnpx @sonojs/ui@latest add button && npm i lucide-react

Composition

structure
Pagination
└── PaginationContent
    ├── PaginationItem → PaginationPrevious
    ├── PaginationItem → PaginationLink
    ├── PaginationItem → PaginationEllipsis
    └── PaginationItem → PaginationNext

Usage

pagination.tsx
import {
  Pagination,
  PaginationContent,
  PaginationEllipsis,
  PaginationItem,
  PaginationLink,
  PaginationNext,
  PaginationPrevious,
} from "@/components/ui/pagination"

export function Example() {
  return (
    <Pagination>
      <PaginationContent>
        <PaginationItem>
          <PaginationPrevious href="#" />
        </PaginationItem>
        <PaginationItem>
          <PaginationLink href="#">1</PaginationLink>
        </PaginationItem>
        <PaginationItem>
          <PaginationLink href="#" isActive>
            2
          </PaginationLink>
        </PaginationItem>
        <PaginationItem>
          <PaginationEllipsis />
        </PaginationItem>
        <PaginationItem>
          <PaginationNext href="#" />
        </PaginationItem>
      </PaginationContent>
    </Pagination>
  )
}

Props

PropTypeDefaultDescription
isActivebooleanfalseOn `PaginationLink` — marks the current page.
sizeButton size"icon"On `PaginationLink` — defaults to icon; prev/next use default.
textstring"Previous" / "Next"On `PaginationPrevious` / `PaginationNext` — visible label.
hrefstring—Native anchor href (swap for Next.js `Link` if needed).