matt HOFFNER
init
3c3f089
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>
);
};