import { useSearchParams } from "@remix-run/react"; import { ChevronLeft, ChevronRight } from "lucide-react"; import { Button } from "./button"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./select"; interface PaginationProps { totalItems: number; itemsPerPageOptions: number[]; onPageChange: (page: number) => void; onItemsPerPageChange: (itemsPerPage: number) => void; currentPage: number; itemsPerPage: number; } export default function StyledPagination({ totalItems, itemsPerPageOptions, onPageChange, onItemsPerPageChange, currentPage, itemsPerPage, }: PaginationProps) { const [searchParams, setSearchParams] = useSearchParams(); const totalPages = Math.ceil(totalItems / itemsPerPage); const startItem = (currentPage - 1) * itemsPerPage + 1; const endItem = Math.min(currentPage * itemsPerPage, totalItems); const handlePageChange = (page: number) => { const params = new URLSearchParams(searchParams); params.set("page", page.toString()); setSearchParams(params); onPageChange(page); const element = document.getElementById("main-layout"); setTimeout(() => { element?.scrollIntoView({ behavior: "smooth" }); }, 100); }; const handleItemsPerPageChange = (value: string) => { const params = new URLSearchParams(searchParams); const newItemsPerPage = Number.parseInt(value, 10); params.set("itemsPerPage", newItemsPerPage.toString()); params.set("page", "1"); setSearchParams(params); onItemsPerPageChange(newItemsPerPage); const element = document.getElementById("main-layout"); setTimeout(() => { element?.scrollIntoView({ behavior: "smooth" }); }, 100); }; return ( ); }