import { useMemo, useCallback } from 'react'; import { Button, Table, TableHeader, TableColumn, TableBody, TableRow, TableCell } from '@heroui/react'; import { UserType } from '@/types/user'; import { MembersMessages } from '@/types/member'; import UserAvatar from '@/components/UserAvatar'; type Props = { candidates: UserType[]; onAddPress: (userAdded: UserType) => void; messages: MembersMessages; }; export default function MembersTable({ candidates, onAddPress, messages }: Props) { const headerColumns = [ { name: messages.avatar, uid: 'avatar', sortable: false }, { name: messages.email, uid: 'email', sortable: false }, { name: messages.username, uid: 'username', sortable: false }, { name: messages.add, uid: 'add', sortable: false }, ]; const renderCell = useCallback( (candidate: UserType, columnKey: string) => { const cellValue = candidate[columnKey as keyof UserType]; switch (columnKey) { case 'avatar': return ; case 'email': return cellValue; case 'username': return cellValue; case 'add': return ( ); default: return cellValue; } }, [messages.add, onAddPress] ); const classNames = useMemo( () => ({ wrapper: ['max-w-3xl'], th: ['bg-transparent', 'text-default-500', 'border-b', 'border-divider'], td: [ // changing the rows border radius // first 'group-data-[first=true]:first:before:rounded-none', 'group-data-[first=true]:last:before:rounded-none', // middle 'group-data-[middle=true]:before:rounded-none', // last 'group-data-[last=true]:first:before:rounded-none', 'group-data-[last=true]:last:before:rounded-none', ], }), [] ); return ( <> {(column) => ( {column.name} )} {(item) => ( {(columnKey) => {renderCell(item, columnKey as string)}} )}
); }