diff --git a/src/shared/Avatar.tsx b/src/shared/Avatar.tsx new file mode 100644 index 0000000..8c746a2 --- /dev/null +++ b/src/shared/Avatar.tsx @@ -0,0 +1,59 @@ +import { avatarColors } from "@/contains/contants"; +import React, { FC } from "react"; +import avatar1 from "@/images/avatars/Image-1.png"; +import Image, { StaticImageData } from "next/image"; + +export interface AvatarProps { + containerClassName?: string; + sizeClass?: string; + radius?: string; + imgUrl?: string | StaticImageData; + userName?: string; + hasChecked?: boolean; + hasCheckedClass?: string; +} + +const Avatar: FC = ({ + containerClassName = "ring-1 ring-white dark:ring-neutral-900", + sizeClass = "h-6 w-6 text-sm", + radius = "rounded-full", + imgUrl = avatar1, + userName, + hasChecked, + hasCheckedClass = "w-4 h-4 -top-0.5 -right-0.5", +}) => { + const url = imgUrl || ""; + const name = userName || "John Doe"; + const _setBgColor = (name: string) => { + const backgroundIndex = Math.floor( + name.charCodeAt(0) % avatarColors.length + ); + return avatarColors[backgroundIndex]; + }; + + return ( +
+ {url && ( + {name} + )} + {name[0]} + + {hasChecked && ( + + + + )} +
+ ); +}; + +export default Avatar;