import { ChevronLeft, ChevronRight } from 'lucide-react'; import { useTranslation } from 'react-i18next'; interface PaginationProps { currentPage: number; totalPages: number; onPageChange: (page: number) => void; totalItems: number; itemsPerPage: number; onPageSizeChange?: (pageSize: number) => void; // 新增:分页大小变更回调 pageSizeOptions?: number[]; // 新增:可选的分页大小选项 } function Pagination({ currentPage, totalPages, onPageChange, totalItems, itemsPerPage, onPageSizeChange, pageSizeOptions = [10, 20, 50, 100] }: PaginationProps) { const { t } = useTranslation(); if (totalPages <= 1 && !onPageSizeChange) return null; // 计算显示的页码范围 (最多显示 5 个页码) let startPage = Math.max(1, currentPage - 2); let endPage = Math.min(totalPages, startPage + 4); if (endPage - startPage < 4) { startPage = Math.max(1, endPage - 4); } const pages = []; for (let i = startPage; i <= endPage; i++) { pages.push(i); } const startIndex = (currentPage - 1) * itemsPerPage + 1; const endIndex = Math.min(currentPage * itemsPerPage, totalItems); return (
{/* Mobile View */}
{/* Desktop View */}

{t('common.pagination_info', { start: startIndex, end: endIndex, total: totalItems })}

{/* 分页大小选择器 */} {onPageSizeChange && (
{t('common.per_page')}
)}
); } export default Pagination;