import React from 'react'; import { useLocalize } from '~/hooks'; type TPluginPaginationProps = { currentPage: number; maxPage: number; onChangePage: (page: number) => void; }; const PluginPagination: React.FC = ({ currentPage, maxPage, onChangePage, }) => { const localize = useLocalize(); const pages = [...Array(maxPage).keys()].map((i) => i + 1); const handlePageChange = (page: number) => { if (page < 1 || page > maxPage) { return; } onChangePage(page); }; return (
handlePageChange(currentPage - 1)} onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { onChangePage(currentPage - 1); } }} className={`flex cursor-default items-center text-sm ${ currentPage === 1 ? 'text-black/70 opacity-50 dark:text-white/70' : 'text-black/70 hover:text-black/50 dark:text-white/70 dark:hover:text-white/50' }`} style={{ userSelect: 'none' }} > {localize('com_ui_prev')}
{pages.map((page) => (
onChangePage(page)} onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { onChangePage(page); } }} > {page}
))}
handlePageChange(currentPage + 1)} onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { onChangePage(currentPage + 1); } }} className={`flex cursor-default items-center text-sm ${ currentPage === maxPage ? 'text-black/70 opacity-50 dark:text-white/70' : 'text-black/70 hover:text-black/50 dark:text-white/70 dark:hover:text-white/50' }`} style={{ userSelect: 'none' }} > {localize('com_ui_next')}
); }; export default PluginPagination;