HapplyUI

Components

Pagination

A pagination component with three visual variants and support for both button and link-based navigation.


Installation

bunx @happlyui/cli@latest add pagination

Dependencies

npm packages

  • @radix-ui/react-slot
  • @remixicon/react

Registry dependencies

These are automatically installed when you add this component.

  • happly-ui-utils
  • polymorphic
  • recursive-clone-children
  • tv

Usage

import * as Pagination from "@/components/ui/pagination"

<Pagination.Root>
  <Pagination.NavButton>
    <Pagination.NavIcon as={RiArrowLeftSLine} />
  </Pagination.NavButton>
  <Pagination.Item current>1</Pagination.Item>
  <Pagination.Item>2</Pagination.Item>
  <Pagination.NavButton>
    <Pagination.NavIcon as={RiArrowRightSLine} />
  </Pagination.NavButton>
</Pagination.Root>

Examples

Demo

Basic variant pagination with navigation buttons and page items.

<Pagination.Root>
  <Pagination.NavButton>
    <Pagination.NavIcon as={RiArrowLeftSLine} />
  </Pagination.NavButton>
  <Pagination.Item current>4</Pagination.Item>
  <Pagination.NavButton>
    <Pagination.NavIcon as={RiArrowRightSLine} />
  </Pagination.NavButton>
</Pagination.Root>

Rounded

Rounded variant with fully circular buttons and items.

<Pagination.Root variant="rounded">
  ...
</Pagination.Root>

Group

Group variant with connected items separated by dividers.

<Pagination.Root variant="group">
  ...
</Pagination.Root>

Pagination items rendered as anchor links using the asChild pattern.

<Pagination.Item asChild>
  <a href="/page/1">1</a>
</Pagination.Item>

API Reference

Pagination.Root

The container for pagination items. Propagates variant to children.

PropTypeDefaultDescription
variant'basic' | 'rounded' | 'group''basic'The visual variant
asChildbooleanfalseRender as child element using Radix Slot

Pagination.Item

A page number button. Renders as a button by default.

PropTypeDefaultDescription
currentbooleanfalseWhether this is the current active page
asChildbooleanfalseRender as child element using Radix Slot

Pagination.NavButton

A navigation button for prev/next actions.

PropTypeDefaultDescription
asChildbooleanfalseRender as child element using Radix Slot

Pagination.NavIcon

A polymorphic icon inside a NavButton.

PropTypeDefaultDescription
asReact.ElementType-The icon component to render

Previous
Menu Tab Bar