项目文件夹

文件
wehub-resource-sync c48612c494
CI / E2E Tests (push) Has been cancelled
CI / Lint, Typecheck & Unit Tests (push) Has been cancelled
Docs Build / Build docs site (push) Has been cancelled
Publish @openmaic packages / Build, validate & publish (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:23 +08:00

49 行
1.3 KiB
TypeScript

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