DDS/Components/Pagination

Pagination

Navigation

Navigate between pages of content with previous/next controls, page numbers, and ellipsis for large page counts.

Props

PropTypeDefaultDescription
modelValue*numberCurrent page (v-model, 1-indexed).
total*numberTotal number of items.
perPagenumber10Items per page.
siblingsnumber1Sibling page count on each side.
showEdgesbooleantrueShow first/last page buttons.
disabledbooleanfalseDisable all navigation.

Examples

Interactive

Page 3 of 10

vue
<script setup lang="ts">
const page = ref(1)
</script>

<template>
  <DsPagination v-model="page" :total="100" :per-page="10" />
  <p class="text-sm text-ds-fg-muted mt-2">Page {{ page }} of 10</p>
</template>
Many pages (siblings=2)
Disabled

Skeleton

Use DsPaginationSkeleton as a loading placeholder while content is being fetched.

Default (5 pages)
vue
<DsPaginationSkeleton />
Wide (7 pages)
vue
<DsPaginationSkeleton :pages="7" />
Compact (3 pages)
vue
<DsPaginationSkeleton :pages="3" />

Accessibility

  • Wraps in a <nav> with aria-label="Pagination".
  • Active page button has aria-current="page".
  • Prev/Next arrows have descriptive aria-label.
  • Disabled state set via disabled attribute on buttons.