"use client"; import { Modules } from "../../../../core"; import { usePageUrlGenerator } from "../../../../hooks"; import { Avatar, AvatarFallback, AvatarImage, Link, Tooltip, TooltipContent, TooltipTrigger, } from "../../../../shadcnui"; import { cn } from "../../../../utils"; import { UserInterface } from "../../data"; type UserAvatarProps = { user: UserInterface; className?: string; showFull?: boolean; showLink?: boolean; showTooltip?: boolean; }; export function UserAvatar({ user, className, showFull, showLink, showTooltip = true }: UserAvatarProps) { const generateUrl = usePageUrlGenerator(); const getInitial = (param?: string) => { if (!param) return ""; return param[0].toUpperCase(); }; const getInitials = (name: string) => { const words = name.split(" "); const initials = words.length > 1 ? getInitial(words[0][0]) + getInitial(words[words.length - 1][0]) : getInitial(words[0][0]); return initials ?? ""; }; const getAvatar = () => { return (
{getInitials(user.name)}
); }; const content = showLink === false ? ( // If showLink is explicitly false, never show a link showFull ? (
{getAvatar()} {user.name}
) : ( getAvatar() ) ) : showFull ? ( ) => e.stopPropagation()} >
{getAvatar()} {user.name}
) : showLink ? ( {getAvatar()} ) : ( getAvatar() ); if (!showTooltip) { return content; } return ( {content} {user.name} ); }