Pagination
---import { Pagination, PaginationEllipsis, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious,} from "@/components/starwind/pagination";---<Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis /> </PaginationItem> <PaginationItem> <PaginationNext href="#">Next</PaginationNext> </PaginationItem> </PaginationContent></Pagination>import { Pagination, PaginationEllipsis, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious,} from "@/components/starwind/pagination";
export function Example() { return ( <> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis /> </PaginationItem> <PaginationItem> <PaginationNext href="#">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination> </> );}<script setup lang="ts">import { Pagination, PaginationEllipsis, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious,} from "@/components/starwind/pagination";</script>
<template> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis /> </PaginationItem> <PaginationItem> <PaginationNext href="#">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination></template>Installation
pnpx starwind@latest add pagination --framework astronpx starwind@latest add pagination --framework astroyarn dlx starwind@latest add pagination --framework astropnpx starwind@latest add pagination --framework reactnpx starwind@latest add pagination --framework reactyarn dlx starwind@latest add pagination --framework reactpnpx starwind@latest add pagination --framework vuenpx starwind@latest add pagination --framework vueyarn dlx starwind@latest add pagination --framework vueUsage
---import { Pagination, PaginationEllipsis, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious,} from "@/components/starwind/pagination";---<Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis /> </PaginationItem> <PaginationItem> <PaginationNext href="#">Next</PaginationNext> </PaginationItem> </PaginationContent></Pagination>import { Pagination, PaginationEllipsis, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious,} from "@/components/starwind/pagination";
export function Example() { return ( <> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis /> </PaginationItem> <PaginationItem> <PaginationNext href="#">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination> </> );}<script setup lang="ts">import { Pagination, PaginationEllipsis, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious,} from "@/components/starwind/pagination";</script>
<template> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis /> </PaginationItem> <PaginationItem> <PaginationNext href="#">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination></template>Composition
Place each control inside a PaginationItem:
Pagination└── PaginationContent ├── PaginationItem │ └── PaginationPrevious ├── PaginationItem │ └── PaginationLink ├── PaginationItem │ └── PaginationEllipsis └── PaginationItem └── PaginationNextActive Page
The basic pagination component includes previous/next buttons and numbered pages.
Tip
Use the isActive prop on <PaginationLink> to highlight the current page.
Sizes
PaginationLink, PaginationPrevious, and PaginationNext accept the Button component’s size values. PaginationLink defaults to size="icon". PaginationPrevious and PaginationNext default to size="md" so their text labels receive standard button spacing. PaginationEllipsis accepts the icon size values and defaults to size="icon".
Use icon-sm, icon, or icon-lg for page links and ellipses. Use sm, md, or lg for previous and next controls. Button supplies the spacing, text size, and icon size for each control.
---import { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PaginationEllipsis,} from "@/components/starwind/pagination";---
<section class="mx-auto mt-10 max-w-lg"> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#" size="sm">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-sm">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-sm" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-sm">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis size="icon-sm" /> </PaginationItem> <PaginationItem> <PaginationNext href="#" size="sm">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination></section>
<section class="mx-auto mt-10 max-w-lg"> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#" size="lg">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-lg">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-lg" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-lg">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis size="icon-lg" /> </PaginationItem> <PaginationItem> <PaginationNext href="#" size="lg">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination></section>import { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PaginationEllipsis,} from "@/components/starwind/pagination";
export function Example() { return ( <> <section className="mx-auto mt-10 max-w-lg"> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#" size="sm">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-sm">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-sm" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-sm">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis size="icon-sm" /> </PaginationItem> <PaginationItem> <PaginationNext href="#" size="sm">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination> </section>
<section className="mx-auto mt-10 max-w-lg"> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#" size="lg">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-lg">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-lg" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-lg">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis size="icon-lg" /> </PaginationItem> <PaginationItem> <PaginationNext href="#" size="lg">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination> </section> </> );}<script setup lang="ts">import { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PaginationEllipsis,} from "@/components/starwind/pagination";</script>
<template> <section class="mx-auto mt-10 max-w-lg"> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#" size="sm">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-sm">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-sm" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-sm">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis size="icon-sm" /> </PaginationItem> <PaginationItem> <PaginationNext href="#" size="sm">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination> </section>
<section class="mx-auto mt-10 max-w-lg"> <Pagination> <PaginationContent> <PaginationItem> <PaginationPrevious href="#" size="lg">Prev</PaginationPrevious> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-lg">1</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-lg" isActive>2</PaginationLink> </PaginationItem> <PaginationItem> <PaginationLink href="#" size="icon-lg">3</PaginationLink> </PaginationItem> <PaginationItem> <PaginationEllipsis size="icon-lg" /> </PaginationItem> <PaginationItem> <PaginationNext href="#" size="lg">Next</PaginationNext> </PaginationItem> </PaginationContent> </Pagination> </section></template>Size migration
| Before | After |
|---|---|
<Pagination size="sm"><PaginationLink /></Pagination> | <Pagination><PaginationLink size="icon-sm" /></Pagination> |
<Pagination size="lg"><PaginationPrevious /></Pagination> | <Pagination><PaginationPrevious size="lg" /></Pagination> |
API Reference
Styled Component API
These props are added or materially changed by the installed styled component. Standard HTML attributes remain available through the inherited interfaces noted below. Expand a prop to see named type definitions and framework-specific imports. Follow the Primitive and Runtime links for lower-level behavior props.
Pagination Link
Inherits Button props. Omits `as`, `ref`, and `variant`.
Contains the following additional props:
isActive boolean —
- Description
- Applies the active visual state.
- Classification
- Wrapper prop
size "sm" | "md" | "lg" | "icon-sm" | "icon" | "icon-lg" "icon"
- Description
- Selects the component's visual size.
- Classification
- Styled variant
Pagination Previous
Inherits PaginationLink props.
Contains the following additional props:
size "sm" | "md" | "lg" | "icon-sm" | "icon" | "icon-lg" "md"
- Description
- Selects the component's visual size.
- Classification
- Styled variant
Pagination Next
Inherits PaginationLink props.
Contains the following additional props:
size "sm" | "md" | "lg" | "icon-sm" | "icon" | "icon-lg" "md"
- Description
- Selects the component's visual size.
- Classification
- Styled variant
Pagination Ellipsis
Inherits span attributes.
Contains the following additional props:
size "icon-sm" | "icon" | "icon-lg" "icon"
- Description
- Selects the component's visual size.
- Classification
- Styled variant
Changelog
View version history v5.0.0 11 releases
v5.0.0
- Moved size control from
Paginationto each link, navigation control, and ellipsis. - Set
PaginationLinkandPaginationEllipsistosize="icon"by default. - Set
PaginationPreviousandPaginationNexttosize="md"by default so text labels use standard button spacing. - Removed the hover movement from the previous and next icons. Button now supplies their icon size.
v4.0.1
- Named the generated aggregate default export so React and Astro tooling can identify the installed component cleanly.
v4.0.0
- Moved
sizeownership toPagination; removesizefromPaginationLink,PaginationPrevious,PaginationNext, andPaginationEllipsis. - Migration:
<PaginationLink size="icon-sm" />becomes<Pagination size="sm"><PaginationLink /></Pagination>.
v3.1.0
- Added contract-generated Astro and React implementations while preserving the component’s existing public API and styling.
v3.0.4
- Refactor tailwind variants functions into separate
variants.tsfile
v3.0.2
- add size prop to
PaginationEllipsis - Adjust
PaginationNextandPaginationPreviousto use button variant props for sizes
v3.0.1
- Add named slot “icon” to
PaginationEllipsisto enable easy icon swapping, and a default slot for thesr-onlylabel - Add named slot “icon” to
PaginationNextandPagination Previousto enable easy icon swapping
v3.0.0
- Now requires the starwind button component installed to make use of the button variants for
PaginationLink
v2.1.0
- Add
data-slotattribute to enable global styling updates
v2.0.1
- Add eslint comments to disable “no-explicit-any” when using Astro special syntax to require a child element
v2.0.0
tailwind-variantsnow implemented. This usestailwind-mergeunder the hood to merge Tailwind classes without style conflicts.- Removed
radiusprop now that classes like “rounded-full” can be passed to the components to override, taking advantage oftailwind-variants