Pagination
Page-number navigation for paging a list of arbitrary items (e.g. a blog index), with ellipsis ranges and optional first/last/prev/next controls.
Page-number navigation for paging a list of arbitrary items (e.g. a blog index), with ellipsis
ranges and optional first/last/prev/next controls. Renders a role="navigation" landmark whose
items are PaginationItems computed by the headless usePagination hook.
Pages are 1-based - unlike TablePagination (0-based, table footer, rows-per-page selector).
Prefer Pagination where SEO/URLs matter.
import { Pagination } from '@soroush.tech/design-system/Pagination'
;<Pagination count={10} page={page} onChange={setPage} />
Examples
Default
<Pagination count={10} />
Outlined
<Flex flexDirection="column" gap={3}> <Pagination count={10} variant="outlined" /> <Pagination count={10} variant="outlined" color="secondary" /> <Pagination count={10} variant="outlined" disabled /> </Flex>
Rounded
<Flex flexDirection="column" gap={3}> <Pagination count={10} shape="rounded" /> <Pagination count={10} variant="outlined" shape="rounded" /> </Flex>
Sizes
<Flex flexDirection="column" gap={3}> {(['sm', 'md', 'lg'] as const).map((size) => ( <Pagination key={size} count={10} size={size} /> ))} </Flex>
Buttons
<Flex flexDirection="column" gap={3}> <Pagination count={10} shouldShowFirstButton shouldShowLastButton /> <Pagination count={10} shouldHidePrevButton shouldHideNextButton /> </Flex>
Ranges
<Flex flexDirection="column" gap={3}> <Pagination count={11} defaultPage={6} siblingCount={0} /> <Pagination count={11} defaultPage={6} /> <Pagination count={11} defaultPage={6} siblingCount={0} boundaryCount={2} /> <Pagination count={11} defaultPage={6} boundaryCount={2} /> </Flex>
Controlled
Page: 1
<ControlledPagination />