import type { HTMLAttributes, ReactNode, ReactElement } from 'react' import { CSSObject } from 'styled-components' export enum AvatarV2Size { SM = 'sm', REGULAR = 'regular', MD = 'md', LG = 'lg', XL = 'xl', } export enum AvatarV2Shape { CIRCULAR = 'circular', ROUNDED = 'rounded', } export enum AvatarV2StatusPosition { TOP_RIGHT = 'topRight', BOTTOM_RIGHT = 'bottomRight', TOP_LEFT = 'topLeft', BOTTOM_LEFT = 'bottomLeft', } export enum AvatarV2Status { NONE = 'none', ONLINE = 'online', OFFLINE = 'offline', AWAY = 'away', BUSY = 'busy', } export enum AvatarV2Variant { IMAGE = 'image', TEXT = 'text', ICON = 'icon', } export type AvatarV2SkeletonConfig = { show: boolean variant?: 'pulse' | 'wave' } export type AvatarV2StatusConfig = { type: AvatarV2Status position?: AvatarV2StatusPosition } export type AvatarV2Dimensions = { width?: CSSObject['width'] height?: CSSObject['height'] } export type AvatarV2Props = { src?: string alt?: string fallbackText?: string size?: AvatarV2Size shape?: AvatarV2Shape status?: AvatarV2StatusConfig leftSlot?: ReactElement rightSlot?: ReactElement skeleton?: AvatarV2SkeletonConfig backgroundColor?: string disabled?: boolean onImageError?: (error: Error) => void onImageLoad?: () => void } & Omit< React.HTMLAttributes, 'children' | 'className' | 'style' > & AvatarV2Dimensions export type AvatarV2ImageProps = { src: string alt: string onError: () => void onLoad?: () => void } export type AvatarV2FallbackProps = { children: ReactNode backgroundColor?: string } export type AvatarV2StatusIndicatorProps = { status: AvatarV2Status position: AvatarV2StatusPosition size: AvatarV2Size } export type AvatarV2GroupProps = { avatars: Omit[] max?: number size?: AvatarV2Size spacing?: 'tight' | 'normal' | 'loose' } & Omit, 'children'>