import React, { useMemo } from 'react'; interface PaginationProps { totalPages: number; currentPage: number; onPageChange: (page: number) => void; delta?: number; } export default function Pagination({ currentPage, onPageChange, totalPages, delta = 1, }: PaginationProps) { const handlePageChange = (page: number) => { if (page >= 1 && page <= totalPages && page !== currentPage) { onPageChange(page); } }; const visiblePages = useMemo(() => { const pages: (number | -1)[] = []; if (totalPages <= 5 + delta * 2) { return Array.from({ length: totalPages }, (_, i) => i + 1); } const left = Math.max(2, currentPage - delta); const right = Math.min(totalPages - 1, currentPage + delta); pages.push(1); if (left > 2) pages.push(-1); for (let i = left; i <= right; i++) { pages.push(i); } if (right < totalPages - 1) pages.push(-1); pages.push(totalPages); return pages; }, [currentPage, totalPages, delta]); return ( ); }