// // Copyright (c) 2025 rustmailer.com (https://rustmailer.com) // // This file is part of the Bichon Email Archiving Project // // 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 . import { ChevronLeftIcon, ChevronRightIcon, DoubleArrowLeftIcon, DoubleArrowRightIcon, } from '@radix-ui/react-icons' import { Table } from '@tanstack/react-table' import { Button } from '@/components/ui/button' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { useTranslation } from 'react-i18next' interface DataTablePaginationProps { table: Table showSelected?: boolean showPageSizeSelector?: boolean } export function DataTablePagination({ table, showSelected = false, showPageSizeSelector = true }: DataTablePaginationProps) { const { t } = useTranslation() return (
{showSelected && (
{t('table.pagination.selected', { selected: table.getFilteredSelectedRowModel().rows.length, total: table.getFilteredRowModel().rows.length, })}
)} {!showPageSizeSelector && (
{t('table.pagination.fixed_page_size', { size: 10 })}
)}
{showPageSizeSelector && (

{t('table.pagination.rows_per_page')}

)}
{t('table.pagination.page_info', { page: table.getState().pagination.pageIndex + 1, total: table.getPageCount(), })}
) }