import './Pagination.css'; interface PaginationProps { page: number; totalPages: number; total: number; limit: number; onPageChange: (page: number) => void; className?: string; } export function Pagination({ page, totalPages, total, limit, onPageChange, className = '' }: PaginationProps) { const start = (page - 1) * limit + 1; const end = Math.min(page * limit, total); if (totalPages <= 1) { return null; } const getPageNumbers = (): (number | 'ellipsis')[] => { const pages: (number | 'ellipsis')[] = []; const showEllipsisStart = page > 3; const showEllipsisEnd = page < totalPages - 2; pages.push(1); if (showEllipsisStart) { pages.push('ellipsis'); } for (let i = Math.max(2, page - 1); i <= Math.min(totalPages - 1, page + 1); i++) { if (!pages.includes(i)) { pages.push(i); } } if (showEllipsisEnd) { pages.push('ellipsis'); } if (totalPages > 1 && !pages.includes(totalPages)) { pages.push(totalPages); } return pages; }; return (
Showing {start}-{end} of {total}
{getPageNumbers().map((pageNum, index) => pageNum === 'ellipsis' ? ( ... ) : ( ) )}
); }