import { getTeamColorSet } from '@renderer/constants/teamColors'; import { agentAvatarUrl } from '@renderer/utils/memberHelpers'; interface MemberBadgeProps { name: string; color?: string; /** Avatar + badge size variant */ size?: 'sm' | 'md'; /** Hide the avatar icon, show only the name badge */ hideAvatar?: boolean; onClick?: (name: string) => void; } /** * Reusable member avatar + colored name badge. * Avatar is rendered OUTSIDE the badge, to the left. * When onClick is provided, both avatar and badge are clickable as one unit. */ export const MemberBadge = ({ name, color, size = 'sm', hideAvatar, onClick, }: MemberBadgeProps): React.JSX.Element => { const colors = getTeamColorSet(color ?? ''); const avatarSize = size === 'md' ? 32 : 24; const avatarClass = size === 'md' ? 'size-6' : 'size-5'; const textClass = size === 'md' ? 'text-xs' : 'text-[10px]'; const badgeStyle = { backgroundColor: colors.badge, color: colors.text, border: `1px solid ${colors.border}40`, }; const avatar = ( ); const badge = ( {name === 'team-lead' ? 'lead' : name} ); if (onClick) { return ( ); } return ( {!hideAvatar && avatar} {badge} ); };