/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import { type Table } from '@tanstack/react-table' import { ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon, ChevronsLeft as DoubleArrowLeftIcon, ChevronsRight as DoubleArrowRightIcon, } from 'lucide-react' import { useTranslation } from 'react-i18next' import { cn, getPageNumbers } from '@/lib/utils' import { Button } from '@/components/ui/button' import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' type DataTablePaginationProps = { table: Table } export function DataTablePagination({ table, }: DataTablePaginationProps) { const { t } = useTranslation() const currentPage = table.getState().pagination.pageIndex + 1 const totalPages = table.getPageCount() const pageNumbers = getPageNumbers(currentPage, totalPages) return (
{t('Page {{current}} of {{total}}', { current: currentPage, total: totalPages, })}

{t('Rows per page')}

{t('Page {{current}} of {{total}}', { current: currentPage, total: totalPages, })}
{/* Page number buttons */} {pageNumbers.map((pageNumber, index) => (
{pageNumber === '...' ? ( ... ) : ( )}
))}
) }