import type { AvatarShape } from "@rakazo/contracts"; import { botAvatarImageSrc } from "@rakazo/core"; import { memo } from "react"; import { StyleSheet, Text, View, type ViewStyle } from "react-native"; import { BotAvatar } from "./bot-avatar"; export interface GroupAvatarMember { botId?: string; name?: string; color: string; status?: string; avatarShape?: AvatarShape | null; hasAvatarImage?: boolean; updatedAt?: string; } export const GroupAvatar = memo(function GroupAvatar({ members, size = 54, }: { members: GroupAvatarMember[]; size?: number; }) { 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: ViewStyle[] = 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} ); }); const styles = StyleSheet.create({ fallback: { backgroundColor: "#202024", alignItems: "center", justifyContent: "center", }, fallbackText: { color: "#9A9AA2", }, });