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