import React, { forwardRef, useEffect, useState, type ReactElement, } from 'react' import { AvatarV2Props, AvatarV2Size, AvatarV2Shape, AvatarV2Status, AvatarV2StatusPosition, AvatarV2Variant, } from './avatarV2.types' import { useResponsiveTokens } from '../../hooks/useResponsiveTokens' import { AvatarV2TokensType } from './avatarV2.tokens' import Block from '../Primitives/Block/Block' import Text from '../Text/Text' import { Skeleton } from '../Skeleton' import { filterBlockedProps } from '../../utils/prop-helpers' import { VisuallyHidden } from '../../utils/accessibility' import { getColorFromText, getAccessibleLabel, getAriaLiveValue, getStatusPositionStyles, renderFallbackContent, createAvatarKeyboardHandler, isInteractive, } from './avatarV2.utils' const AvatarImage = ({ src, alt, onError, onLoad, }: { src: string alt: string onError: () => void onLoad?: () => void }) => { return ( {alt} ) } const AvatarFallback = ({ children, backgroundColor, textColor, }: { children: React.ReactNode backgroundColor?: string textColor?: string }) => { return ( ) } const StatusIndicator = ({ status, position, size, shape, tokens, }: { status: AvatarV2Status position: AvatarV2StatusPosition size: AvatarV2Size shape: AvatarV2Shape tokens: AvatarV2TokensType }) => { if (status === AvatarV2Status.NONE) { return null } const positionStyles = getStatusPositionStyles( position, size, shape, tokens ) return (