shadcn.io is an independent project built on shadcn/ui
The row is Previous, page 1, an ellipsis, pages 8, 9, and 10, and Next. Page 9 is current. The ellipsis is not a link. Page 1 stays reachable.
Use it when the current page is near the end and the first page should stay one click away. A Select can jump into the hidden middle. In Vue, Ark UI does not fill that gap. You omit those pages.
Installation
Anatomy

Usage
<Pagination>
<PaginationContent>
<PaginationItem><PaginationPrevious href="#" /></PaginationItem>
<PaginationItem><PaginationLink href="#">1</PaginationLink></PaginationItem>
<PaginationItem><PaginationEllipsis /></PaginationItem>
<PaginationItem><PaginationLink href="#">8</PaginationLink></PaginationItem>
<PaginationItem>
<PaginationLink href="#" :isActive="true">9</PaginationLink>
</PaginationItem>
<PaginationItem><PaginationLink href="#">10</PaginationLink></PaginationItem>
<PaginationItem><PaginationNext href="#" /></PaginationItem>
</PaginationContent>
</Pagination>FAQ
Which pages does this row show?
PaginationPrevious, a link for page 1, a PaginationEllipsis, links for 8, 9 and 10, and PaginationNext. Page 9 has isActive.
What does the ellipsis stand in for?
Pages 2 to 7, which this file does not render. PaginationEllipsis is an aria-hidden span with a more-horizontal icon, not a link.
How is page 9 marked current?
isActive sets the outline variant and aria-current="page". Pages 1, 8 and 10 are ghost links. Move isActive if the current page changes, and change the numbers 8, 9 and 10 to match.
How do I give each control a real URL?
Every href is #. Set it on PaginationPrevious, each PaginationLink, and PaginationNext. The nav is labeled "pagination".
API Reference
Pagination
Sets href="#" and isActive. The rest is on the Pagination page.





