Pagination

Navigation
Data Display

Navigation components for paginated content. Includes simple prev/next controls and full pagination with page numbers.

Simple Pagination

Basic previous/next navigation

Page 1 of 10

Full Pagination

Complete pagination with page numbers and ellipsis

Page 5 of 20

With Results Info

Show current range and total results

Showing 21-30 of 150 results

Primitive Components

Build custom pagination layouts with primitives

Usage

How to implement Pagination

import {
  SimplePagination,
  FullPagination,
  // Or primitives for custom layouts:
  Pagination,
  PaginationContent,
  PaginationItem,
  PaginationLink,
  PaginationPrevious,
  PaginationNext,
  PaginationEllipsis,
} from '@/components/ui/pagination'

// Simple prev/next pagination
const [page, setPage] = useState(1)

<SimplePagination
  currentPage={page}
  totalPages={10}
  onPageChange={setPage}
/>

// Full pagination with page numbers
<FullPagination
  currentPage={page}
  totalPages={20}
  onPageChange={setPage}
  siblingCount={1}
/>

// With results info
<FullPagination
  currentPage={page}
  totalPages={15}
  onPageChange={setPage}
  showResults
  totalResults={150}
  resultsPerPage={10}
/>

// Custom layout with primitives
<Pagination>
  <PaginationContent>
    <PaginationItem>
      <PaginationPrevious onClick={() => setPage(p => p - 1)} />
    </PaginationItem>
    {pages.map(p => (
      <PaginationItem key={p}>
        <PaginationLink
          isActive={p === page}
          onClick={() => setPage(p)}
        >
          {p}
        </PaginationLink>
      </PaginationItem>
    ))}
    <PaginationItem>
      <PaginationNext onClick={() => setPage(p => p + 1)} />
    </PaginationItem>
  </PaginationContent>
</Pagination>

Component Props

API reference for Pagination components

PropTypeDefaultDescription
SimplePaginationcomponentBasic prev/next pagination
currentPage*numberCurrent active page (1-indexed)
totalPages*numberTotal number of pages
onPageChange*(page: number) => voidCallback when page changes
FullPaginationcomponentFull pagination with numbers
siblingCountnumber1Pages shown on each side of current
showResultsbooleanfalseShow results count
totalResultsnumberTotal number of results
resultsPerPagenumber10Results per page
PaginationLinkcomponentIndividual page button
isActivebooleanWhether link is current page
disabledbooleanDisable the link
size"sm" | "default" | "icon""icon"Button size

Features

Pagination component capabilities

  • Smart ellipsis: Automatically shows ellipsis for large page counts
  • Sibling control: Configure how many pages show around current
  • Results display: Show "Showing X-Y of Z results"
  • Disabled states: Prev disabled on first page, Next on last
  • Composable: Use primitives for custom layouts
  • Keyboard accessible: Full keyboard navigation support
  • Dark mode: Automatic dark mode styling

Related Components