// app/components/ui/Pagination.tsx import React from 'react'; interface PaginationProps { currentPage: number; total: number; pageSize: number; onChange: (page: number) => void; onPageSizeChange?: (pageSize: number) => void; pageSizeOptions?: number[]; } export function Pagination({ currentPage, total, pageSize, onChange, onPageSizeChange, pageSizeOptions = [10, 20, 50] }: PaginationProps) { const totalPages = Math.ceil(total / pageSize); // 生成页码数组 const getPageNumbers = () => { const pages = []; const maxVisiblePages = 5; if (totalPages <= maxVisiblePages) { // 总页数小于等于最大可见页数,显示所有页码 for (let i = 1; i <= totalPages; i++) { pages.push(i); } } else if (currentPage <= 3) { // 当前页靠近开始 for (let i = 1; i <= maxVisiblePages; i++) { pages.push(i); } } else if (currentPage >= totalPages - 2) { // 当前页靠近结尾 for (let i = totalPages - maxVisiblePages + 1; i <= totalPages; i++) { pages.push(i); } } else { // 当前页在中间 for (let i = currentPage - 2; i <= currentPage + 2; i++) { pages.push(i); } } return pages; }; return (