"use client";
type AdminPaginationProps = {
currentPage: number;
totalPages: number;
onPageChange: (page: number) => void;
className?: string;
};
export default function AdminPagination({
currentPage,
totalPages,
onPageChange,
className = ""
}: AdminPaginationProps) {
if (totalPages <= 1) return null;
return (
{Array.from({ length: totalPages }, (_, i) => i).map((page) => {
// Show first, last, current, and adjacent pages
const showPage =
page === 0 ||
page === totalPages - 1 ||
Math.abs(page - currentPage) <= 1;
// Show ellipsis
const showEllipsisBefore = page === 1 && currentPage > 2;
const showEllipsisAfter = page === totalPages - 2 && currentPage < totalPages - 3;
if (!showPage && !showEllipsisBefore && !showEllipsisAfter) return null;
if (showEllipsisBefore || showEllipsisAfter) {
return (
…
);
}
return (
);
})}
);
}
// Simple previous/next pagination
type AdminSimplePaginationProps = {
page: number;
totalPages: number;
onPageChange: (page: number) => void;
className?: string;
};
export function AdminSimplePagination({
page,
totalPages,
onPageChange,
className = ""
}: AdminSimplePaginationProps) {
return (
Page {page + 1} of {totalPages}
);
}