interface PaginationProps { totalItems: number; itemsPerPage: number; currentPage: number; onPageChange: (page: number) => void; } export default function Pagination({ totalItems, itemsPerPage, currentPage, onPageChange }: PaginationProps) { const totalPages = Math.ceil(totalItems / itemsPerPage); if (totalPages <= 1) return null; const pageNumbers = []; const maxVisiblePages = 5; let startPage = Math.max(1, currentPage - Math.floor(maxVisiblePages / 2)); let endPage = Math.min(totalPages, startPage + maxVisiblePages - 1); if (endPage - startPage + 1 < maxVisiblePages) { startPage = Math.max(1, endPage - maxVisiblePages + 1); } for (let i = startPage; i <= endPage; i++) { pageNumbers.push(i); } return (
{startPage > 1 && ( <> {startPage > 2 && ...} )} {pageNumbers.map((number) => ( ))} {endPage < totalPages && ( <> {endPage < totalPages - 1 && ...} )}
); }