UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

1 lines 2.56 kB
{"version":3,"sources":["../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import { HTMLAttributes, useState } from 'react';\nimport { cn } from '../../utils/utils';\nimport { UserIcon } from '../UserIcon/UserIcon';\n\nexport interface AvatarProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n /** Picture URL. When absent — or if it fails to load — the fallback shows. */\n src?: string | null;\n /** Alternative text for the picture. Defaults to the person's name. */\n alt?: string;\n /** Name of the person, used as the default `alt`. */\n name?: string;\n /** Rendered size in pixels. Default `40`. */\n size?: number;\n}\n\n/**\n * Circular profile picture with a graceful fallback to the generic user\n * placeholder — used wherever a student/teacher is listed and the photo may be\n * missing or broken.\n *\n * @example\n * ```tsx\n * <Avatar src={student.photoUrl} name={student.name} size={48} />\n * ```\n */\nexport const Avatar = ({\n src,\n alt,\n name,\n size = 40,\n className = '',\n ...props\n}: AvatarProps) => {\n // Tracks which URL failed, so swapping `src` retries automatically.\n const [failedSrc, setFailedSrc] = useState<string | null>(null);\n const showImage = Boolean(src) && failedSrc !== src;\n\n return (\n <div\n data-component=\"Avatar\"\n className={cn(\n 'relative shrink-0 overflow-hidden rounded-full',\n 'flex items-center justify-center',\n className\n )}\n style={{ width: size, height: size }}\n {...props}\n >\n {showImage ? (\n <img\n src={src as string}\n alt={alt ?? name ?? ''}\n width={size}\n height={size}\n className=\"h-full w-full object-cover\"\n onError={() => setFailedSrc(src ?? null)}\n />\n ) : (\n <UserIcon size={size} />\n )}\n </div>\n );\n};\n\nexport default Avatar;\n"],"mappings":";;;;;;;;AAAA,SAAyB,gBAAgB;AAoDjC;AAxBD,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,GAAG;AACL,MAAmB;AAEjB,QAAM,CAAC,WAAW,YAAY,IAAI,SAAwB,IAAI;AAC9D,QAAM,YAAY,QAAQ,GAAG,KAAK,cAAc;AAEhD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,kBAAe;AAAA,MACf,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,EAAE,OAAO,MAAM,QAAQ,KAAK;AAAA,MAClC,GAAG;AAAA,MAEH,sBACC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,KAAK,OAAO,QAAQ;AAAA,UACpB,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,WAAU;AAAA,UACV,SAAS,MAAM,aAAa,OAAO,IAAI;AAAA;AAAA,MACzC,IAEA,oBAAC,YAAS,MAAY;AAAA;AAAA,EAE1B;AAEJ;AAEA,IAAO,iBAAQ;","names":[]}