Spaces:
Paused
Paused
File size: 1,415 Bytes
3c3f089 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
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>
);
};
|