interface PaginationBarProps { page: number; totalPages: number; total: number; pageSize: number; pageSizeOptions?: number[]; isDark?: boolean; loading?: boolean; onPageChange: (newPage: number) => void; onPageSizeChange?: (newSize: number) => void; } export default function PaginationBar({ page, totalPages, total, pageSize, pageSizeOptions = [20, 50, 100], isDark = false, loading = false, onPageChange, onPageSizeChange, }: PaginationBarProps) { const navBtnClass = (disabled: boolean) => [ 'rounded border px-2.5 py-1 text-xs transition-colors', disabled || loading ? 'opacity-40 cursor-not-allowed' : 'cursor-pointer', isDark ? 'border-slate-600 text-slate-300 hover:bg-slate-800' : 'border-slate-300 text-slate-600 hover:bg-slate-100', ].join(' '); return (
{/* 左侧:统计 + 每页大小 */}
共 {total} 条{totalPages > 1 && `,第 ${page} / ${totalPages} 页`} {onPageSizeChange && ( <> 每页 {pageSizeOptions.map((s) => ( ))} )}
{/* 右侧:分页导航 */} {totalPages > 1 && (
)}
); }