"use client";
import { ChevronLeft, ChevronRight } from "lucide-react";
export function Pagination({
page,
pageSize,
total,
label = "分页",
onPageChange
}: {
page: number;
pageSize: number;
total: number;
label?: string;
onPageChange: (page: number) => void;
}) {
const totalPages = pageCount(total, pageSize);
if (totalPages <= 1) return null;
const current = clampPage(page, total, pageSize);
return (
);
}
export function clampPage(page: number, total: number, pageSize: number) {
return Math.min(Math.max(1, page), pageCount(total, pageSize));
}
export function pageItems(items: T[], page: number, pageSize: number) {
const current = clampPage(page, items.length, pageSize);
return items.slice((current - 1) * pageSize, current * pageSize);
}
function pageCount(total: number, pageSize: number) {
return Math.max(1, Math.ceil(total / pageSize));
}