120k

Pagination

Pagination with page navigation, next and previous links.

Installation

pnpm dlx shadcn@latest add @force-ui-svelte/pagination

Usage

<script lang="ts">
  import * as Pagination from "$lib/components/ui/pagination/index.js";
</script>
<Pagination.Root count={30} perPage={10} page={2}>
  {#snippet children({ pages, currentPage })}
    <Pagination.Content>
      <Pagination.Item>
        <Pagination.Previous />
      </Pagination.Item>
      {#each pages as page (page.key)}
        {#if page.type === "ellipsis"}
          <Pagination.Item>
            <Pagination.Ellipsis />
          </Pagination.Item>
        {:else}
          <Pagination.Item>
            <Pagination.Link {page} isActive={currentPage === page.value}>
              {page.value}
            </Pagination.Link>
          </Pagination.Item>
        {/if}
      {/each}
      <Pagination.Item>
        <Pagination.Next />
      </Pagination.Item>
    </Pagination.Content>
  {/snippet}
</Pagination.Root>

Composition

Use the following composition to build a Pagination:

Pagination.Root
└── Pagination.Content
    ├── Pagination.Item
    │   └── Pagination.Previous
    ├── Pagination.Item
    │   └── Pagination.Link
    ├── Pagination.Item
    │   └── Pagination.Ellipsis
    └── Pagination.Item
        └── Pagination.Next

Examples

Simple

A simple pagination with only page numbers.

Icons Only

Use just the previous and next buttons without page numbers. This is useful for data tables with a rows per page selector.

RTL

To enable RTL support in Force UI, see the RTL configuration guide.