# @cloud-ru/ds-avatar
> Аватар пользователя с фото, инициалами, размерами и цветовыми схемами.
Docs: /snack-v2/components/avatar/
## Установка
```sh
pnpm add @cloud-ru/ds-avatar
```
## Когда использовать
- Идентификатор пользователя в хедере, меню, списке участников.
- Автор комментария, сообщения, коммита.
- Плейсхолдер для отсутствующего фото — инициалы из имени.
Когда **не** нужен `Avatar`: если требуется декоративная иконка или логотип бренда — используйте обычный `
` или иконку.
## API
### Avatar
| Prop | Type | Default | Required | Description |
|------|------|---------|----------|-------------|
| `appearance` | `blue \| green \| neutral \| orange \| pink \| red \| violet \| yellow` | `neutral` | no | Внешний вид (цвет) |
| `badge` | `ReactNode` | — | no | Произвольный нод в слот значка (правый-нижний угол). Перекрывает `status`. |
| `children` | `string \| number \| boolean \| ReactElement> \| Iterable \| ReactPortal \| null \| undefined` | — | no | |
| `className` | `string` | — | no | CSS-класс |
| `data-test-id` | `string` | — | no | |
| `innerRef` | `Ref` | — | no | Ref на корневой DOM-элемент. Используем явный проп, чтобы не зависеть от `forwardRef` и не тащить type-assertions на экспорт. |
| `name` | `string` | — | yes | Имя пользователя для генерации аббревиатуры |
| `shape` | `rounded \| squared` | `rounded` | no | Форма: круглая или квадратная |
| `showTwoSymbols` | `boolean` | `false` | no | Отображение двух заглавных символов имени вместо одного |
| `size` | `3xl \| 6xl \| 9xl \| l \| m \| s \| xs` | `m` | no | Размер |
| `src` | `string` | — | no | URL изображения аватара |
| `status` | `blue \| green \| neutral \| orange \| pink \| red \| violet \| yellow` | — | no | Appearance дефолтного `StatusIndicator` в правом-нижнем углу. Размер индикатора подбирается из `size` аватара автоматически. Полностью настроить значок можно через слот `badge`, который перекрывает `status`. |
#### Related types
- `Appearance` = `blue | green | neutral | orange | pink | red | violet | yellow`
- `Shape` = `rounded | squared`
- `Size` = `3xl | 6xl | 9xl | l | m | s | xs`
- `StatusAppearance` = `blue | green | loading | neutral | orange | pink | primary | red | violet | yellow`
## Примеры
### CustomBadge
```tsx
import { Avatar, AVATAR_TO_STATUS_INDICATOR_SIZE, SIZE } from '@cloud-ru/ds-avatar';
import { Counter, SIZE as COUNTER_SIZE } from '@cloud-ru/ds-counter';
import { CheckSVG } from '@cloud-ru/ds-icons/interface/system';
import { APPEARANCE as STATUS_APPEARANCE, StatusIndicator } from '@cloud-ru/ds-status';
import styles from './CustomBadge.module.scss';
export function CustomBadge() {
return (
);
}
```
### Initials
```tsx
import { Avatar } from '@cloud-ru/ds-avatar';
export function Initials() {
return ;
}
```
### Sizes
```tsx
import { Avatar } from '@cloud-ru/ds-avatar';
export function Sizes() {
return (
);
}
```
### WithImage
```tsx
import { Avatar } from '@cloud-ru/ds-avatar';
export function WithImage() {
return ;
}
```