moduix

Pagination

Page navigation with arrows, numbers, and collapsed ranges.

API Reference

Original primitive API

Behavior, accessibility details, and low-level props are documented by Base UI.

Base UI API

Basic

import { Pagination } from "moduix";export function PaginationDemo() {  return <Pagination count={10} defaultPage={1} />;}

Full list of component variables available for project-level overrides.

PropertyDefaultDescription
--pagination-arrow-padding-inline0Controls arrow item inline padding.
--pagination-disabled-opacityvar(--opacity-disabled)Controls disabled pagination opacity.
--pagination-ellipsis-colorvar(--color-muted-foreground)Controls ellipsis color.
--pagination-font-sizevar(--text-sm)Controls pagination font size.
--pagination-font-size-xsvar(--text-xs)Controls pagination font size for xs size.
--pagination-font-size-smvar(--text-xs)Controls pagination font size for sm size.
--pagination-font-size-mdvar(--text-sm)Controls pagination font size for md size.
--pagination-font-size-lgvar(--text-md)Controls pagination font size for lg size.
--pagination-font-size-xlvar(--text-lg)Controls pagination font size for xl size.
--pagination-font-weightvar(--weight-medium)Controls pagination font weight.
--pagination-item-bgvar(--color-background)Controls item background color.
--pagination-item-bg-activevar(--color-foreground)Controls active item background color.
--pagination-item-bg-hovervar(--color-accent)Controls hover item background color.
--pagination-item-border-colorvar(--color-border)Controls item border color.
--pagination-item-border-color-activevar(--color-foreground)Controls active item border color.
--pagination-item-colorvar(--color-foreground)Controls item text color.
--pagination-item-color-activevar(--color-background)Controls active item text color.
--pagination-item-radiusvar(--radius-md)Controls item corner radius.
--pagination-item-sizevar(--size-lg)Controls item width and height.
--pagination-item-size-xsvar(--size-xs)Controls item size for xs size.
--pagination-item-size-smvar(--size-sm)Controls item size for sm size.
--pagination-item-size-mdvar(--size-lg)Controls item size for md size.
--pagination-item-size-lgvar(--size-xl)Controls item size for lg size.
--pagination-item-size-xl3.5remControls item size for xl size.
--pagination-line-heightvar(--line-height-text-sm)Controls pagination line height.
--pagination-line-height-xsvar(--line-height-text-xs)Controls pagination line height for xs size.
--pagination-line-height-smvar(--line-height-text-xs)Controls pagination line height for sm size.
--pagination-line-height-mdvar(--line-height-text-sm)Controls pagination line height for md size.
--pagination-line-height-lgvar(--line-height-text-md)Controls pagination line height for lg size.
--pagination-line-height-xlvar(--line-height-text-lg)Controls pagination line height for xl size.
--pagination-toolbar-bgtransparentControls toolbar background color.
--pagination-toolbar-border-colortransparentControls toolbar border color.
--pagination-toolbar-gapvar(--spacing-1)Controls gap between items.
--pagination-toolbar-padding0Controls toolbar padding for all variants.
--pagination-toolbar-padding-filled0.125remControls toolbar padding for default and outline variants.

Interactive variables scoped for docs preview without changing size scale tokens.

PropertyValueDefaultDescription
--pagination-ellipsis-colorvar(--color-muted-foreground)Controls ellipsis color.
--pagination-item-bgvar(--color-background)Controls item background color.
--pagination-item-bg-activevar(--color-foreground)Controls active item background color.
--pagination-item-bg-hovervar(--color-accent)Controls hover item background color.
--pagination-item-border-colorvar(--color-border)Controls item border color.
--pagination-item-border-color-activevar(--color-foreground)Controls active item border color.
--pagination-item-color-activevar(--color-background)Controls active item text color.
--pagination-item-radiusvar(--radius-md)Controls item corner radius.
--pagination-item-sizevar(--size-lg)Controls item width and height.
--pagination-toolbar-bgtransparentControls toolbar background color.
--pagination-toolbar-border-colortransparentControls toolbar border color.
--pagination-toolbar-padding-filled0.125remControls filled toolbar padding.

Anatomy

Pagination is built on top of Toolbar and renders page controls as focusable toolbar items. It can include arrow controls, page number controls, and non-interactive ellipsis markers.

Pagination
└─ Toolbar
   ├─ previous control (optional)
   ├─ page controls (optional)
   ├─ ellipsis markers (when range is collapsed)
   └─ next control (optional)
<Pagination count={10} defaultPage={5} />
PartRole
PaginationRoot navigation region. Controls current page, range logic, variants, and sizing.
previous controlMoves to the previous page when arrows are enabled.
page controlsSelect a specific page and expose the current page with aria-current="page".
ellipsis markerIndicates hidden pages when the full range is collapsed into the middle window.
next controlMoves to the next page when arrows are enabled.

The component has no portal/backdrop service slots. Style it directly with className and CSS variables.

Composition

Use uncontrolled mode with defaultPage for local state. Use controlled mode with page and onPageChange when pagination must stay in sync with URL state or external filters.

Use getPageHref to map pages to links for any URL scheme, such as /page/7 or ?page=7. Use showArrows and showPages to keep only the controls you need for the layout.

Examples

Numbers Only

Hide arrow controls when only direct page selection is needed.

import { Pagination } from "moduix";export function PaginationNumbersOnlyDemo() {  return <Pagination count={10} defaultPage={5} showArrows={false} />;}

Arrows Only

Hide page numbers when the UI needs compact previous/next controls.

import { Pagination } from "moduix";export function PaginationArrowsOnlyDemo() {  return <Pagination count={10} defaultPage={5} showPages={false} />;}

Control the page from React state and provide link URLs for navigation and SEO-friendly anchors.

Current page: 5
import { Pagination } from "moduix";import { useState } from "react";export function PaginationControlledLinksDemo() {  const [page, setPage] = useState(5);  return (    <Pagination      count={10}      page={page}      onPageChange={setPage}      getPageHref={(next) => `?page=${next}`}    />  );}

Variants

Use toolbar variants to match the surrounding surface.

import { Pagination } from "moduix";export function PaginationVariantsDemo() {  return (    <>      <Pagination count={10} defaultPage={5} toolbarVariant="default" />      <Pagination count={10} defaultPage={5} toolbarVariant="outline" />      <Pagination count={10} defaultPage={5} toolbarVariant="ghost" />    </>  );}

Sizes

Use size to fit compact and spacious interfaces.

import { Pagination } from "moduix";export function PaginationSizesDemo() {  return (    <>      <Pagination count={10} defaultPage={5} size="xs" />      <Pagination count={10} defaultPage={5} size="sm" />      <Pagination count={10} defaultPage={5} size="md" />      <Pagination count={10} defaultPage={5} size="lg" />      <Pagination count={10} defaultPage={5} size="xl" />    </>  );}

Class Name

Use className to theme active items and container spacing with scoped CSS variables.

import { Pagination } from "moduix";export function PaginationClassNameDemo() {  return (    <Pagination      count={10}      defaultPage={5}      toolbarVariant="outline"      className={styles.customPagination}    />  );}
.customPagination {  --pagination-toolbar-padding-filled: var(--spacing-1);  --pagination-item-radius: var(--radius-sm);  --pagination-item-bg-active: var(--color-primary);  --pagination-item-color-active: var(--color-primary-foreground);  --pagination-item-border-color-active: var(--color-primary);}

On this page