Files
claw3d/src/features/agents/components/AgentAvatar.tsx
T
Luke The Dev 4fa4f13558 First Release of Claw3D (#11)
Co-authored-by: iamlukethedev <iamlukethedev@users.noreply.github.com>
2026-03-19 23:14:04 -05:00

44 lines
1.0 KiB
TypeScript

import Image from "next/image";
import { useMemo } from "react";
import { buildAvatarDataUrl } from "@/lib/avatars/multiavatar";
type AgentAvatarProps = {
seed: string;
name: string;
avatarUrl?: string | null;
size?: number;
isSelected?: boolean;
};
export const AgentAvatar = ({
seed,
name,
avatarUrl,
size = 112,
isSelected = false,
}: AgentAvatarProps) => {
const src = useMemo(() => {
const trimmed = avatarUrl?.trim();
if (trimmed) return trimmed;
return buildAvatarDataUrl(seed);
}, [avatarUrl, seed]);
return (
<div
className={`flex items-center justify-center overflow-hidden rounded-full border border-border/80 bg-card transition-transform duration-300 ${isSelected ? "agent-avatar-selected scale-[1.02]" : ""}`}
style={{ width: size, height: size }}
>
<Image
className="pointer-events-none h-full w-full select-none"
src={src}
alt={`Avatar for ${name}`}
width={size}
height={size}
unoptimized
draggable={false}
/>
</div>
);
};