interface PaginationProps { currentPage: number; totalPages: number; onPageChange: (page: number) => void; } export default function Pagination({ currentPage, totalPages, onPageChange, }: PaginationProps) { if (totalPages <= 1) return null; const getPageNumbers = () => { const pages: (number | string)[] = []; const maxVisible = 5; if (totalPages <= maxVisible) { for (let i = 1; i <= totalPages; i++) pages.push(i); } else { if (currentPage <= 3) { for (let i = 1; i <= 4; i++) pages.push(i); pages.push('...'); pages.push(totalPages); } else if (currentPage >= totalPages - 2) { pages.push(1); pages.push('...'); for (let i = totalPages - 3; i <= totalPages; i++) pages.push(i); } else { pages.push(1); pages.push('...'); for (let i = currentPage - 1; i <= currentPage + 1; i++) pages.push(i); pages.push('...'); pages.push(totalPages); } } return pages; }; return (
{getPageNumbers().map((page, idx) => typeof page === 'number' ? ( ) : ( {page} ) )}
); }