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}
);
};