interface PaginationProps { pagination: { total: number; page: number; per_page: number; total_pages: number; } | null; onPageChange: (page: number) => void; onPerPageChange?: (perPage: number) => void; } export default function Pagination({ pagination, onPageChange, onPerPageChange, }: PaginationProps) { if (!pagination || pagination.total_pages <= 1) return null; const { page, total_pages, total } = pagination; const getPages = () => { const pages: (number | string)[] = []; const delta = 2; for (let i = 1; i <= total_pages; i++) { if ( i === 1 || i === total_pages || (i >= page - delta && i <= page + delta) ) { pages.push(i); } else if (pages[pages.length - 1] !== "...") { pages.push("..."); } } return pages; }; return (
{total} záznamů
{getPages().map((p, i) => typeof p === "string" ? ( ... ) : ( ), )}
{onPerPageChange && ( )}
); }