import { useState, useMemo, useEffect } from 'react'; export function usePagination(data: T[], initialItemsPerPage: number = 10) { const [currentPage, setCurrentPage] = useState(1); const [itemsPerPage, setItemsPerPage] = useState(initialItemsPerPage); const totalItems = data.length; const totalPages = Math.ceil(totalItems / itemsPerPage); // Reset to first page when data changes useEffect(() => { setCurrentPage(1); }, [data.length, itemsPerPage]); const paginatedData = useMemo(() => { const startIndex = (currentPage - 1) * itemsPerPage; const endIndex = startIndex + itemsPerPage; return data.slice(startIndex, endIndex); }, [data, currentPage, itemsPerPage]); return { currentPage, setCurrentPage, itemsPerPage, setItemsPerPage, totalPages, totalItems, paginatedData, }; }