import * as React from 'react'; import { Button } from '../Button'; import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, } from '../DropdownMenu'; import { Icons } from '../Icons'; import { useDataTable } from './context'; /** * Pagination * Renders "start-end of total" and ghost chevron buttons for prev/next. * Uses the TanStack table instance from DataTable context. */ export function Pagination() { const { table } = useDataTable(); const { pageIndex, pageSize } = table.getState().pagination ?? { pageIndex: 0, pageSize: 50 }; const total = table.getFilteredRowModel().rows.length; const start = total === 0 ? 0 : pageIndex * pageSize + 1; const end = Math.min(total, (pageIndex + 1) * pageSize); const canPrev = table.getCanPreviousPage(); const canNext = table.getCanNextPage(); return (
{[25, 50, 100].map(size => ( { e.preventDefault(); table.setPageSize(size); }} className="flex items-center gap-[2px]" > {size} per page ))}
); }