"use client"; import { useState } from "react"; import { Button } from "../button"; import { ButtonGroup } from "../buttonGroup"; import { Select } from "../form/select"; export interface PaginationProps { currentPage: number; pageSize: number; totalItems: number; onPageChange: (page: number) => void; onPageSizeChange: (pageSize: number) => void; onNext?: () => void; onPrevious?: () => void; pageSizeOptions?: number[]; } const DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100]; export const Pagination = ({ currentPage, pageSize, totalItems, onPageChange, onPageSizeChange, pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS, onNext, onPrevious, }: PaginationProps) => { const [internalPageSize, setInternalPageSize] = useState(pageSize); const totalPages = Math.ceil(totalItems / pageSize); const handlePageSizeChange = (option: { value: number; label: string } | null) => { if (option) { const newPageSize = option.value; setInternalPageSize(newPageSize); onPageSizeChange(newPageSize); // Reset to first page when changing page size onPageChange(1); } }; const handlePrevious = () => { if (currentPage > 1) { onPageChange(currentPage - 1); onPrevious?.(); } }; const handleNext = () => { if (currentPage < totalPages) { onPageChange(currentPage + 1); onNext?.(); } }; const pageSizeSelectOptions = pageSizeOptions.map((size) => ({ value: size, label: `${size}`, })); const startItem = (currentPage - 1) * pageSize + 1; const endItem = Math.min(currentPage * pageSize, totalItems); return (