import { Avatar, Tooltip } from 'antd'; import React, { useCallback, useMemo } from 'react'; import { InlineMember } from '@/types/teamMembers/inlineMember.types'; interface AvatarsProps { members: InlineMember[]; maxCount?: number; } const Avatars: React.FC = React.memo(({ members, maxCount }) => { const stopPropagation = useCallback((e: React.MouseEvent) => { e.stopPropagation(); }, []); const renderAvatar = useCallback( (member: InlineMember, index: number) => ( {member.avatar_url ? ( ) : ( {member.end && member.names ? member.name : member.name?.charAt(0).toUpperCase()} )} ), [stopPropagation] ); const visibleMembers = useMemo(() => { return maxCount ? members.slice(0, maxCount) : members; }, [members, maxCount]); const avatarElements = useMemo(() => { return visibleMembers.map((member, index) => renderAvatar(member, index)); }, [visibleMembers, renderAvatar]); return (
{avatarElements}
); }); Avatars.displayName = 'Avatars'; export default Avatars;