import { Pagination as UIPagination, PaginationContent, Button } from "@repo/ui" import { ChevronLeft, ChevronRight, MoreHorizontal } from "lucide-react" type PaginationProps = { page: number totalPages: number onPageChange: (page: number) => void hasNextPage: boolean } export function Pagination({ page, totalPages, onPageChange, hasNextPage, }: PaginationProps) { const totalButtons = 7 const renderPageButton = (pageNumber: number) => ( ) const renderEllipsis = (key: string) => ( ) const renderPaginationButtons = () => { const buttons = [] if (totalPages <= totalButtons) { for (let i = 1; i <= totalPages; i++) { buttons.push(renderPageButton(i)) } } else { buttons.push(renderPageButton(1)) if (page > 3) { buttons.push(renderEllipsis("start-ellipsis")) } let start = Math.max(2, page - 1) let end = Math.min(totalPages - 1, page + 1) if (page <= 3) { end = Math.min(totalPages - 1, totalButtons - 2) } if (page >= totalPages - 2) { start = Math.max(2, totalPages - (totalButtons - 2)) } for (let i = start; i <= end; i++) { buttons.push(renderPageButton(i)) } if (page < totalPages - 2) { buttons.push(renderEllipsis("end-ellipsis")) } buttons.push(renderPageButton(totalPages)) } while (buttons.length < totalButtons) { buttons.push( ) } return buttons } return ( {renderPaginationButtons()} ) }