"use client";
type PaginationProps = {
page: number;
totalPages: number;
onPageChange: (page: number) => void;
pageSize: number;
onPageSizeChange: (pageSize: number) => void;
pageSizeOptions?: number[];
className?: string;
};
export default function Pagination({
page,
totalPages,
onPageChange,
pageSize,
onPageSizeChange,
pageSizeOptions = [20, 50, 100],
className
}: PaginationProps) {
const windowPages = Array.from({ length: totalPages }, (_, i) => i + 1).filter(
(pageNumber) =>
pageNumber === 1 ||
pageNumber === totalPages ||
Math.abs(pageNumber - page) <= 2
);
return (
Seite {page} von {totalPages}
{windowPages.map((pageNumber, index) => {
const previous = windowPages[index - 1];
const gap = previous && pageNumber - previous > 1;
return (
{gap && …}
);
})}
);
}