import React from 'react'; import { Avatar as AvatarBase, AvatarFallback, AvatarImage } from './AvatarBase'; import { getFirstTwoCapitalizedLetters } from '@/lib/text'; import { Tooltip } from '../tooltip/Tooltip'; import { BusterLogo } from '@/assets/svg/BusterLogo'; import { cn } from '@/lib/utils'; export interface AvatarProps { image?: string | null; name?: string | null; className?: string; fallbackClassName?: string; useToolTip?: boolean; size?: number; tooltipTitle?: string | React.ReactNode; } export const Avatar: React.FC = React.memo( ({ image, name, className, useToolTip = true, size, fallbackClassName, tooltipTitle }) => { const hasName = !!name; const nameLetters = createNameLetters(name); const hasImage = !!image; return ( {image && } {hasName ? ( ) : ( )} ); } ); Avatar.displayName = 'Avatar'; const NameLettersFallback: React.FC<{ fallbackClassName?: string; nameLetters: string; hasImage: boolean; }> = ({ fallbackClassName, hasImage, nameLetters }) => { return ( {nameLetters} ); }; const BusterAvatarFallback: React.FC<{ fallbackClassName?: string }> = ({ fallbackClassName }) => { return (
); }; const createNameLetters = (name?: string | null) => { if (name) { const firstTwoLetters = getFirstTwoCapitalizedLetters(name); if (firstTwoLetters.length == 2) return firstTwoLetters; const _name = name.split(' ') as [string, string]; const returnName = `${_name[0][0]}`.toUpperCase().replace('@', ''); return returnName; } return ''; };