OpenMAIC-React / src /components /agent /agent-avatar.tsx
muthuk1's picture
Convert OpenMAIC from Next.js to React (Vite)
f56a29b verified
/**
* Agent Avatar Component
* Displays agent avatar and name in chat messages
*/
import { Avatar, AvatarImage, AvatarFallback } from '@/components/ui/avatar';
interface AgentAvatarProps {
avatar: string; // Image URL or emoji
color: string; // Theme color (hex)
name: string; // Agent display name
size?: 'sm' | 'md' | 'lg';
}
// Check if string is a URL
function isUrl(str: string): boolean {
return str.startsWith('http') || str.startsWith('/') || str.startsWith('data:');
}
export default function AgentAvatar({ avatar, color, name, size = 'md' }: AgentAvatarProps) {
const sizeClasses = {
sm: 'size-6',
md: 'size-8',
lg: 'size-10',
};
return (
<div className="flex items-center gap-2 mb-2">
<Avatar className={sizeClasses[size]} style={{ borderColor: color, borderWidth: 2 }}>
{isUrl(avatar) ? (
<>
<AvatarImage src={avatar} alt={name} />
<AvatarFallback style={{ backgroundColor: `${color}20`, color }}>
{name.charAt(0)}
</AvatarFallback>
</>
) : (
<AvatarFallback style={{ backgroundColor: `${color}20`, color }}>
{avatar || name.charAt(0)}
</AvatarFallback>
)}
</Avatar>
<span className="text-sm font-semibold" style={{ color }}>
{name}
</span>
</div>
);
}