import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, } from "@/components/ui/pagination"; interface Props { page: number; totalPages: number; buildHref: (page: number) => string; } function pageNumbers( page: number, totalPages: number ): (number | "ellipsis")[] { if (totalPages <= 7) { return Array.from({ length: totalPages }, (_, i) => i + 1); } const pages: (number | "ellipsis")[] = [1]; if (page > 3) pages.push("ellipsis"); const start = Math.max(2, page - 1); const end = Math.min(totalPages - 1, page + 1); for (let i = start; i <= end; i++) pages.push(i); if (page < totalPages - 2) pages.push("ellipsis"); pages.push(totalPages); return pages; } export function PaginationNav({ page, totalPages, buildHref }: Props) { if (totalPages <= 1) return null; return ( 1 ? buildHref(page - 1) : "#"} aria-disabled={page <= 1} /> {pageNumbers(page, totalPages).map((p, i) => p === "ellipsis" ? ( ) : ( {p} ) )} = totalPages} /> ); }