import { type CSSProperties, memo } from "react"; import { BotAvatar } from "./bot-avatar.js"; import { cn } from "./lib/utils.js"; export interface GroupAvatarMember { botId?: string; name?: string; color: string; status?: string; } export interface GroupAvatarProps { members: GroupAvatarMember[]; size?: number; className?: string; } export const GroupAvatar = memo(function GroupAvatar({ members, size = 38, className, }: GroupAvatarProps) { const firstMember = members[0]; if (!firstMember) { return (
); } if (members.length === 1) { return ( ); } const pair = members.length === 2; const miniSize = Math.round(size * (pair ? 0.65 : 0.54)); const positions: CSSProperties[] = pair ? [ { top: 0, left: 0 }, { right: 0, bottom: 0 }, ] : [ { top: 0, left: (size - miniSize) / 2 }, { bottom: 0, left: 0 }, { right: 0, bottom: 0 }, ]; const visibleMembers = members.slice(0, pair || members.length === 3 ? members.length : 2); return (
{visibleMembers.map((member, index) => (
))} {members.length > 3 ? (
{`+${members.length - 2}`}
) : null}
); });