Legacy (shadcn-uikit)Components
Pagination
Controls for navigating between pages of content.
Usage
import {
Pagination,
PaginationContent,
PaginationItem,
PaginationLink,
PaginationPrevious,
PaginationNext,
PaginationEllipsis,
} from '@acronis-platform/shadcn-uikit';Simple
Basic pagination with page numbers.
View sourceHide source
import {
Pagination,
PaginationContent,
PaginationItem,
PaginationNext,
PaginationPrevious,
} from '@acronis-platform/shadcn-uikit/react';
export function PaginationSimple() {
return (
<Pagination>
<PaginationContent>
<PaginationItem>
<PaginationPrevious href="#" />
</PaginationItem>
<PaginationItem>
<PaginationNext href="#" />
</PaginationItem>
</PaginationContent>
</Pagination>
);
}
First Page
Pagination when the first page is active.
Current page: 1 of 20
View sourceHide source
import { useState } from 'react';
import {
Pagination,
PaginationContent,
PaginationEllipsis,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious,
} from '@acronis-platform/shadcn-uikit/react';
export function PaginationFirstPage() {
const [currentPage, setCurrentPage] = useState(1);
return (
<div className="space-y-4">
<Pagination>
<PaginationContent>
<PaginationItem>
<PaginationPrevious
href="#"
onClick={(e) => {
e.preventDefault();
if (currentPage > 1) setCurrentPage(currentPage - 1);
}}
className={
currentPage === 1 ? 'pointer-events-none opacity-30' : ''
}
/>
</PaginationItem>
{[1, 2, 3, 4, 5].map((page) => (
<PaginationItem key={page}>
<PaginationLink
href="#"
onClick={(e) => {
e.preventDefault();
setCurrentPage(page);
}}
isActive={currentPage === page}
>
{page}
</PaginationLink>
</PaginationItem>
))}
<PaginationItem>
<PaginationEllipsis />
</PaginationItem>
<PaginationItem>
<PaginationLink
href="#"
onClick={(e) => {
e.preventDefault();
setCurrentPage(20);
}}
>
20
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationNext
href="#"
onClick={(e) => {
e.preventDefault();
if (currentPage < 20) setCurrentPage(currentPage + 1);
}}
/>
</PaginationItem>
</PaginationContent>
</Pagination>
<div className="text-center text-sm text-muted-foreground">
Current page: {currentPage} of 20
</div>
</div>
);
}
Middle Page
Pagination with ellipsis showing a middle page is active.
Current page: 14 of 20
View sourceHide source
import { useState } from 'react';
import {
Pagination,
PaginationContent,
PaginationEllipsis,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious,
} from '@acronis-platform/shadcn-uikit/react';
export function PaginationMiddlePage() {
const [currentPage, setCurrentPage] = useState(14);
return (
<div className="space-y-4">
<Pagination>
<PaginationContent>
<PaginationItem>
<PaginationPrevious
href="#"
onClick={(e) => {
e.preventDefault();
if (currentPage > 1) setCurrentPage(currentPage - 1);
}}
/>
</PaginationItem>
<PaginationItem>
<PaginationLink
href="#"
onClick={(e) => {
e.preventDefault();
setCurrentPage(1);
}}
>
1
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationEllipsis />
</PaginationItem>
{[currentPage - 1, currentPage, currentPage + 1].map((page) => (
<PaginationItem key={page}>
<PaginationLink
href="#"
onClick={(e) => {
e.preventDefault();
setCurrentPage(page);
}}
isActive={currentPage === page}
>
{page}
</PaginationLink>
</PaginationItem>
))}
<PaginationItem>
<PaginationEllipsis />
</PaginationItem>
<PaginationItem>
<PaginationLink
href="#"
onClick={(e) => {
e.preventDefault();
setCurrentPage(20);
}}
>
20
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationNext
href="#"
onClick={(e) => {
e.preventDefault();
if (currentPage < 20) setCurrentPage(currentPage + 1);
}}
/>
</PaginationItem>
</PaginationContent>
</Pagination>
<div className="text-center text-sm text-muted-foreground">
Current page: {currentPage} of 20
</div>
</div>
);
}
Last Page
Pagination when the last page is active.
Current page: 20 of 20
View sourceHide source
import { useState } from 'react';
import {
Pagination,
PaginationContent,
PaginationEllipsis,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious,
} from '@acronis-platform/shadcn-uikit/react';
export function PaginationLastPage() {
const [currentPage, setCurrentPage] = useState(20);
return (
<div className="space-y-4">
<Pagination>
<PaginationContent>
<PaginationItem>
<PaginationPrevious
href="#"
onClick={(e) => {
e.preventDefault();
if (currentPage > 1) setCurrentPage(currentPage - 1);
}}
/>
</PaginationItem>
<PaginationItem>
<PaginationLink
href="#"
onClick={(e) => {
e.preventDefault();
setCurrentPage(1);
}}
>
1
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationEllipsis />
</PaginationItem>
{[16, 17, 18, 19, 20].map((page) => (
<PaginationItem key={page}>
<PaginationLink
href="#"
onClick={(e) => {
e.preventDefault();
setCurrentPage(page);
}}
isActive={currentPage === page}
>
{page}
</PaginationLink>
</PaginationItem>
))}
<PaginationItem>
<PaginationNext
href="#"
onClick={(e) => {
e.preventDefault();
if (currentPage < 20) setCurrentPage(currentPage + 1);
}}
className={
currentPage === 20 ? 'pointer-events-none opacity-30' : ''
}
/>
</PaginationItem>
</PaginationContent>
</Pagination>
<div className="text-center text-sm text-muted-foreground">
Current page: {currentPage} of 20
</div>
</div>
);
}
Compact
A compact pagination variant with fewer controls.
View sourceHide source
import {
Pagination,
PaginationContent,
PaginationEllipsis,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious,
} from '@acronis-platform/shadcn-uikit/react';
export function PaginationCompact() {
return (
<Pagination>
<PaginationContent>
<PaginationItem>
<PaginationPrevious href="#" />
</PaginationItem>
<PaginationItem>
<PaginationLink href="#" isActive>
1
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">2</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">3</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationEllipsis />
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">10</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationNext href="#" />
</PaginationItem>
</PaginationContent>
</Pagination>
);
}
API Reference
PaginationLink
Prop
Type
Pagination, PaginationContent, PaginationItem, PaginationPrevious, PaginationNext, and PaginationEllipsis accept standard HTML element attributes.