

<Demo name="pagination/demos/default" />

## Installation [#installation]

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npx shadcn@latest add @dotui/pagination
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm dlx shadcn@latest add @dotui/pagination
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn dlx shadcn@latest add @dotui/pagination
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun x shadcn@latest add @dotui/pagination
    ```
  </CodeBlockTab>
</CodeBlockTabs>

## Usage [#usage]

Compose pagination from its parts. Provide an `href` on each link to navigate between pages, or wire `onPress` to drive client-side state.

```tsx
import {
  Pagination,
  PaginationEllipsis,
  PaginationItem,
  PaginationLink,
  PaginationList,
  PaginationNext,
  PaginationPrevious,
} from '@/components/ui/pagination'
```

```tsx
<Pagination>
  <PaginationList>
    <PaginationItem>
      <PaginationPrevious href="#" />
    </PaginationItem>
    <PaginationItem>
      <PaginationLink href="#">1</PaginationLink>
    </PaginationItem>
    <PaginationItem>
      <PaginationLink href="#" isActive>
        2
      </PaginationLink>
    </PaginationItem>
    <PaginationItem>
      <PaginationEllipsis />
    </PaginationItem>
    <PaginationItem>
      <PaginationNext href="#" />
    </PaginationItem>
  </PaginationList>
</Pagination>
```

## Framework Setup [#framework-setup]

`PaginationLink`, `PaginationPrevious`, and `PaginationNext` are built on the Link button, so they pick up router integration from your `button.tsx` — there's nothing pagination-specific to wire up. See the [Button](/docs/components/button) docs to connect `LinkButton` to your framework's router, and pagination links with an `href` will route through it automatically.

## Examples [#examples]

<Examples className="sm:grid-cols-2">
  <Example title="Links" name="pagination/demos/links" />

  <Example title="Controlled" name="pagination/demos/controlled" />

  <Example title="Sizes" name="pagination/demos/sizes" />

  <Example title="Compact" name="pagination/demos/compact" />
</Examples>

## API Reference [#api-reference]

### Pagination [#pagination]

<Reference name="pagination" />

### PaginationList [#paginationlist]

<Reference name="pagination-list" />

### PaginationItem [#paginationitem]

<Reference name="pagination-item" />

### PaginationLink [#paginationlink]

<Reference name="pagination-link" />

### PaginationPrevious [#paginationprevious]

<Reference name="pagination-previous" />

### PaginationNext [#paginationnext]

<Reference name="pagination-next" />

### PaginationEllipsis [#paginationellipsis]

<Reference name="pagination-ellipsis" />
