import type { Dispatch, SetStateAction } from 'react'; import { useState } from 'react'; import { cn } from '@/utils/cn'; import { ChevronLeftIcon, ChevronRightIcon, ChevronsLeftIcon, ChevronsRightIcon, } from 'lucide-react'; import { Button } from './ui/button'; export function usePagination(take: number) { const [page, setPage] = useState(0); return { take, skip: page * take, setPage, page, paginate: (data: T[]): T[] => data.slice(page * take, (page + 1) * take), }; } export function Pagination({ take, count, cursor, setCursor, className, size = 'base', loading, }: { take: number; count: number; cursor: number; setCursor: Dispatch>; className?: string; size?: 'sm' | 'base'; loading?: boolean; }) { const lastCursor = Math.floor(count / take) - 1; const isNextDisabled = count === 0 || lastCursor === cursor; return (
{size === 'base' && (
); }