import { useMemo } from "react"; import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, } from "src/components/ui/pagination"; import { cn, generatePageNumbers } from "src/lib/utils"; type CustomPaginationProps = { page: number; limit: number; totalCount: number; handlePageChange(page: number): void; }; export function CustomPagination({ page, totalCount, limit, handlePageChange, }: CustomPaginationProps) { const totalPages = Math.ceil(totalCount / limit); const pageNumbers = useMemo(() => { return generatePageNumbers(page, totalPages); }, [page, totalPages]); if (totalPages <= 1) { return null; } return (
{ e.preventDefault(); handlePageChange(page - 1); }} /> {pageNumbers.map((p, index) => p === "ellipsis" ? ( ) : ( { e.preventDefault(); handlePageChange(p); }} > {p} ) )} { e.preventDefault(); handlePageChange(page + 1); }} />
); }