import React, { useCallback, useState } from 'react'; import toast from 'react-hot-toast'; import { Select, Typography, Option, Chip, IconButton, } from '@material-tailwind/react'; import { Member } from '../../../../types/project'; import ConfirmDialog from '../../../shared/ConfirmDialog'; const PERMISSION_OPTIONS = [ { label: 'View only', value: 'view', }, { label: 'View and edit', value: 'view+edit', }, ]; const DROPDOWN_OPTIONS = [ ...PERMISSION_OPTIONS, { label: 'Remove member', value: 'remove' }, ]; interface MemberCardProps { member: Member; isFirstCard: boolean; isOwner: boolean; isPending: boolean; permissions: string[]; handleDeletePendingMember: (id: number) => void; } const MemberCard = ({ member, isFirstCard, isOwner, isPending, permissions, handleDeletePendingMember, }: MemberCardProps) => { const [selectedPermission, setSelectedPermission] = useState( permissions.join('+'), ); const [removeMemberDialogOpen, setRemoveMemberDialogOpen] = useState(false); const handlePermissionChange = useCallback( (value: string) => { setSelectedPermission(value); if (value === 'remove') { setRemoveMemberDialogOpen((prevVal) => !prevVal); // To display updated label in next render setTimeout(() => { setSelectedPermission(selectedPermission); }); } }, [removeMemberDialogOpen, selectedPermission], ); return (