Pagination

A composable pagination component for navigating through paginated content. Use with tables, search results, or any paginated data.

View Markdown

Default

With Ellipsis

With First/Last

Page Size

Sizes

API Reference

usePagination

Hook that computes page ranges with ellipsis and provides navigation helpers.

PropTypeDefaultDescription
currentPage*number-Current active page (1-indexed)
totalPages*number-Total number of pages
onPageChange*(page: number) => void-Callback when page changes
siblingCountnumber1Number of pages to show on each side of current page
pageSizenumber10Current page size
pageSizeOptionsnumber[][10, 25, 50, 100]Available page size options
onPageSizeChange(pageSize: number) => void-Callback when page size changes

PaginationRoot

Navigation container for pagination. Renders as a <nav> with aria-label="pagination".

PropTypeDefaultDescription
classNamestring-Additional CSS classes
...propsReact.ComponentProps<"nav">-Standard nav element props

PaginationContent

List container for pagination items. Renders as a <ul>.

PropTypeDefaultDescription
classNamestring-Additional CSS classes
...propsReact.ComponentProps<"ul">-Standard ul element props

PaginationItem

List item wrapper for pagination elements. Renders as a <li>.

PropTypeDefaultDescription
classNamestring-Additional CSS classes
...propsReact.ComponentProps<"li">-Standard li element props

PaginationButton

Page number button. Sets aria-current="page" when active.

PropTypeDefaultDescription
isActivebooleanfalseWhether this button represents the current active page
variant'default' | 'ghost''default'Visual style of the button
size'sm' | 'default' | 'lg' | 'icon' | 'icon-sm' | 'icon-lg''icon-sm'Size of the button
classNamestring-Additional CSS classes
...propsReact.ComponentProps<"button">-Standard button element props

PaginationPrevious / PaginationNext / PaginationFirst / PaginationLast

Directional navigation buttons with built-in aria-labels and disabled state styling.

PropTypeDefaultDescription
variant'default' | 'ghost''default'Visual style of the button
size'sm' | 'default' | 'lg' | 'icon' | 'icon-sm' | 'icon-lg''icon-sm'Size of the button
disabledboolean-Whether the button is disabled
classNamestring-Additional CSS classes
...propsReact.ComponentProps<"button">-Standard button element props

PaginationEllipsis

Non-interactive ellipsis indicator for skipped page ranges.

PropTypeDefaultDescription
size'sm' | 'default' | 'lg' | 'icon' | 'icon-sm' | 'icon-lg''icon-sm'Size of the ellipsis container
classNamestring-Additional CSS classes
...propsReact.ComponentProps<"span">-Standard span element props