Spaces:
Paused
Paused
import Image from "next/image"; | |
import React from "react"; | |
interface AvatarProps { | |
image?: string; | |
username?: string; | |
size?: number; | |
gradient?: boolean; | |
className?: string; | |
placeholderType?: "blur" | "empty" | undefined; | |
} | |
export const Avatar = ({ | |
image, | |
username, | |
size = 45, | |
gradient, | |
className, | |
placeholderType = "blur", | |
}: AvatarProps) => { | |
if (image) | |
return ( | |
<div | |
className={` ${ | |
gradient && `bg-gradient-to-t from-violet-400 to-violet-100 p-0.5` | |
} relative flex justify-center items-center rounded-full shadow-xl overflow-hidden ${className}`} | |
> | |
<div className="flex"> | |
<Image | |
src={image} | |
alt="avatar" | |
className="cursor-pointer rounded-full" | |
objectFit="cover" | |
width={size} | |
height={size} | |
placeholder={placeholderType} | |
quality={100} | |
blurDataURL={placeholderType === "blur" ? image : undefined} | |
/> | |
</div> | |
</div> | |
); | |
return ( | |
<div className="flex justify-center items-center relative"> | |
<div | |
style={{ | |
width: size, | |
height: size, | |
}} | |
className={`flex items-center justify-center bg-zinc-50 max-w-xs rounded-full mb-1 cursor-pointer border ${className}`} | |
> | |
{username?.charAt(0).toUpperCase()} | |
</div> | |
</div> | |
); | |
}; | |