import React from 'react'; import Pagination from './Pagination'; type TableProps = { data: T[]; columns: { key: keyof T; label: string; render?: (value: T[keyof T], row: T) => React.ReactNode; }[]; orderBy?: keyof T; onOrderByChange?: (key: keyof T) => void; pageSize?: number; currentPage: number; onPageChange: (page: number) => void; }; export default function Table({ data, columns, orderBy, onOrderByChange, pageSize = 100, currentPage, onPageChange }: TableProps) { const totalPages = Math.ceil(data.length / pageSize); const paginatedData = data.slice( (currentPage - 1) * pageSize, currentPage * pageSize ); return ( <> {columns.map((column) => ( ))} {paginatedData.map((item, index) => ( {columns.map((column) => ( ))} ))}
onOrderByChange && onOrderByChange(column.key)} > {column.label} {orderBy === column.key && '▼'}
{column.render ? column.render(item[column.key], item) : String(item[column.key])}
); }