Pagination
Full-width, controlled navigation. Previous and next use chevrons; first and last are optional double-chevron controls.
import { Pagination } from "density-base-ui";
export default function PaginationPageExample() {
return <Pagination onPageChange={() => undefined} page={2} totalPages={5} />;
}Page changes
import { useState } from "react";
import { Pagination } from "density-base-ui";
export default function PaginationOnPageChangeExample() {
const [page, setPage] = useState(2);
return (
<>
<Pagination onPageChange={setPage} page={page} totalPages={5} />
</>
);
}Total pages
import { useState } from "react";
import { Pagination } from "density-base-ui";
export default function PaginationTotalPagesExample() {
const [page, setPage] = useState(2);
return <Pagination onPageChange={setPage} page={page} totalPages={3} />;
}Show page numbers
import { useState } from "react";
import { Pagination } from "density-base-ui";
export default function PaginationShowNumbersExample() {
const [page, setPage] = useState(5);
return (
<Pagination
onPageChange={setPage}
page={page}
showNumbers
totalPages={10}
/>
);
}Show first and last controls
import { useState } from "react";
import { Pagination } from "density-base-ui";
export default function PaginationShowFirstLastExample() {
const [page, setPage] = useState(2);
return (
<Pagination
onPageChange={setPage}
page={page}
showFirstLast
totalPages={5}
/>
);
}Size
import { useState } from "react";
import { Pagination, View } from "density-base-ui";
const paginationSizes = [
"2xs",
"xs",
"sm",
"md",
"lg",
"xl",
"2xl",
"3xl",
] as const;
export default function PaginationSizeExample() {
const [pagesBySize, setPagesBySize] = useState<Record<string, number>>({});
return (
<View>
{paginationSizes.map((size) => (
<Pagination
key={size}
onPageChange={(page) =>
setPagesBySize((currentPages) => ({
...currentPages,
[size]: page,
}))
}
page={pagesBySize[size] ?? 2}
showNumbers
size={size}
totalPages={5}
/>
))}
</View>
);
}Emphasis
import { useState } from "react";
import { Pagination, View } from "density-base-ui";
const paginationEmphases = [
"primary",
"secondary",
"outline",
"ghost-primary",
"ghost-secondary",
"ghost-tertiary",
] as const;
export default function PaginationEmphasisExample() {
const [pagesByEmphasis, setPagesByEmphasis] = useState<
Record<string, number>
>({});
return (
<View>
{paginationEmphases.map((emphasis) => (
<Pagination
key={emphasis}
emphasis={emphasis}
onPageChange={(page) =>
setPagesByEmphasis((currentPages) => ({
...currentPages,
[emphasis]: page,
}))
}
page={pagesByEmphasis[emphasis] ?? 2}
showNumbers
totalPages={5}
/>
))}
</View>
);
}| Prop | Values | Required | Default | Behavior | Description |
|---|---|---|---|---|---|
emphasis | primary, secondary, outline, ghost-primary, ghost-secondary, ghost-tertiary | Not required | — | — | — |
onPageChange | (page: number) => void | Required | — | — | — |
page | number | Required | — | — | — |
showFirstLast | false, true | Not required | false | — | — |
showNumbers | false, true | Not required | false | — | — |
size | 2xs, xs, sm, md, lg, xl, 2xl, 3xl | Not required | — | — | — |
totalPages | number | Required | — | — | — |