import { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "@/components/ui/pagination"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { PageSize } from "@/hooks/useServicesPagination"; import { useLanguage } from "@/contexts/LanguageContext"; interface ServicesPaginationProps { currentPage: number; totalPages: number; pageSize: PageSize; totalItems: number; onPageChange: (page: number) => void; onPageSizeChange: (size: PageSize) => void; } export function ServicesPagination({ currentPage, totalPages, pageSize, totalItems, onPageChange, onPageSizeChange, }: ServicesPaginationProps) { const { t } = useLanguage(); // Generate page numbers to display const getPageNumbers = () => { const pages = []; const maxVisiblePages = 5; const halfVisible = Math.floor(maxVisiblePages / 2); let startPage = Math.max(1, currentPage - halfVisible); let endPage = Math.min(totalPages, startPage + maxVisiblePages - 1); // Adjust start page if we don't have enough pages at the end if (endPage - startPage + 1 < maxVisiblePages) { startPage = Math.max(1, endPage - maxVisiblePages + 1); } for (let i = startPage; i <= endPage; i++) { pages.push(i); } return pages; }; const startItem = Math.min((currentPage - 1) * pageSize + 1, totalItems); const endItem = Math.min(currentPage * pageSize, totalItems); return (