@cloud-ru/ds-avatar

中文文档
1.0.20发布于 2026/11/11Apache-2.0TypeScriptESM + CJS近 30 天下载 5846

Аватар пользователя с фото, инициалами, размерами и цветовыми схемами.

原始使用文档
文档目录13 节
  1. Когда использовать
  2. Анатомия
  3. Size
  4. Shape
  5. Appearance
  6. Badge
  7. Установка
  8. Примеры использования
  9. Инициалы из имени
  10. С изображением
  11. Разные размеры
  12. Кастомный badge-слот
  13. Props

Avatar

@cloud-ru/ds-avatar — Аватар пользователя с фото, инициалами, размерами и цветовыми схемами.

Компонент для отображения аватара: изображение по URL с fallback на инициалы из имени, несколько размеров и форм (круг / квадрат), палитра фонов.

Когда использовать

  • Идентификатор пользователя в хедере, меню, списке участников.
  • Автор комментария, сообщения, коммита.
  • Плейсхолдер для отсутствующего фото — инициалы из имени.

Когда не нужен Avatar: если требуется декоративная иконка или логотип бренда — используйте обычный <img> или иконку.

Анатомия

Size

Размерный ряд аватара: xs/s — для плотных списков и тулбаров, m — дефолт в рядах, l — карточки пользователей, 3xl/6xl/9xl — крупные профили и пустые состояния.

Shape

Форма контейнера: rounded — круглый (по умолчанию для людей), squared — со скруглёнными углами (команды, организации, боты).

Appearance

Цвет фона под инициалами. Помимо нейтрального neutral есть декоративные red, orange, yellow, green, blue, violet, pink — используются для стабильной окраски по id пользователя, не несут семантики.

Badge

Слот для микро-индикатора в правом-нижнем углу аватара. Принимает любой ReactNode:

  • StatusIndicator — задаётся коротким пропом status (компонент сам подбирает размер).
  • Counter — счётчик уведомлений.
  • Иконка-«verified» / собственный микро-компонент — через badge={<...>}.

Для визуальной парности с дефолтным StatusIndicator бери размер из публичной карты AVATAR_TO_STATUS_INDICATOR_SIZE[size].

Установка

pnpm add @cloud-ru/ds-avatar
import { Avatar, APPEARANCE, SHAPE, SIZE } from '@cloud-ru/ds-avatar'

Примеры использования

Инициалы из имени

Fallback на две первые буквы имени.

import { Avatar } from '@cloud-ru/ds-avatar';

export function Initials() {
  return <Avatar name='Иван Петров' />;
}

С изображением

src + name для alt-текста и fallback.

import { Avatar } from '@cloud-ru/ds-avatar';

export function WithImage() {
  return <Avatar src='https://i.pravatar.cc/80?img=12' name='Анна Смирнова' />;
}

Разные размеры

Размерный ряд от xs до 9xl.

import { Avatar } from '@cloud-ru/ds-avatar';

export function Sizes() {
  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      <Avatar size='s' name='АС' />
      <Avatar size='m' name='АС' />
      <Avatar size='l' name='АС' />
    </div>
  );
}

Кастомный badge-слот

Counter, иконка-«verified», status и ручной StatusIndicator в одном слоте.

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 (
    <div style={{ display: 'flex', gap: 16, flexWrap: 'wrap', alignItems: 'center' }}>
      <Avatar
        name='John Doe'
        size={SIZE['6Xl']}
        src='https://i.pravatar.cc/120?img=12'
        badge={<Counter value={5} size={COUNTER_SIZE.S} />}
      />

      <Avatar
        name='Jane Roe'
        size={SIZE['6Xl']}
        src='https://i.pravatar.cc/120?img=47'
        badge={
          <span className={styles.verified}>
            <CheckSVG size={16} />
          </span>
        }
      />

      <Avatar
        name='Alex Roe'
        size={SIZE['6Xl']}
        src='https://i.pravatar.cc/120?img=8'
        status={STATUS_APPEARANCE.Green}
      />

      <Avatar
        name='Mia Roe'
        size={SIZE['6Xl']}
        src='https://i.pravatar.cc/120?img=20'
        badge={
          <StatusIndicator size={AVATAR_TO_STATUS_INDICATOR_SIZE[SIZE['6Xl']]} appearance={STATUS_APPEARANCE.Red} />
        }
      />
    </div>
  );
}

Props

AvatarProps

PropTypeDefaultDescription
appearance"blue" | "green" | "neutral" | "orange" | "pink" | "red" | "violet" | "yellow"neutralВнешний вид (цвет)
badgeReactNode—Произвольный нод в слот значка (правый-нижний угол). Перекрывает status.
classNamestring—CSS-класс
data-test-idstring—
innerRefRef<HTMLDivElement>—Ref на корневой DOM-элемент.
Используем явный проп, чтобы не зависеть от forwardRef и не тащить type-assertions на экспорт.
namestring—Имя пользователя для генерации аббревиатуры
shape"rounded" | "squared"roundedФорма: круглая или квадратная
showTwoSymbolsbooleanfalseОтображение двух заглавных символов имени вместо одного
size"3xl" | "6xl" | "9xl" | "l" | "m" | "s" | "xs"mРазмер
srcstring—URL изображения аватара
status"blue" | "green" | "neutral" | "orange" | "pink" | "red" | "violet" | "yellow"—Appearance дефолтного StatusIndicator в правом-нижнем углу. Размер
индикатора подбирается из size аватара автоматически. Полностью
настроить значок можно через слот badge, который перекрывает status.
  • Appearance = "blue" | "green" | "neutral" | "orange" | "pink" | "red" | "violet" | "yellow"

  • Shape = "rounded" | "squared"

  • Size = "3xl" | "6xl" | "9xl" | "l" | "m" | "s" | "xs"

Принимает вспомогательные атрибуты data-test-id и ARIA через тип WithSupportProps из @cloud-ru/ds-utils, а также стандартные атрибуты контейнера HTMLDivElement.

版本与发布记录

@cloud-ru/ds-avatar 共发布 71 个版本,首次发布于 2026/08/18;过去 12 个月发布了 71 个版本。

版本发布日期距今
1.0.20latest2026/11/11今天
1.0.20-preview-e8fe6b56.0preview2026/11/11今天
1.0.20-preview-c0e895ed.02026/11/11今天
1.0.20-preview-90b10112.02026/11/11今天
1.0.20-preview-fd7dd437.02026/11/101 天前
1.0.20-preview-9a75a2a9.02026/11/101 天前

关于 @cloud-ru/ds-avatar 的常见问题

@cloud-ru/ds-avatar 是什么?

Аватар пользователя с фото, инициалами, размерами и цветовыми схемами.

如何安装 @cloud-ru/ds-avatar?

在项目目录运行 npm install @cloud-ru/ds-avatar,或使用 pnpm add / yarn add / bun add。

@cloud-ru/ds-avatar 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cloud-ru/ds-avatar 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@cloud-ru/ds-avatar 可以商用吗?

@cloud-ru/ds-avatar 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cloud-ru/ds-avatar 的下载量有多少?

根据 npm 官方下载统计,@cloud-ru/ds-avatar 在 2026/10/10 – 2026/11/08 这 30 天内被下载 5,846 次,日均约 195 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cloud-ru/ds-avatar 还在维护吗?

最新版本 1.0.20 发布于 2026/11/11(今天);至今共发布 71 个版本,其中过去 12 个月发布了 71 个;首次发布于 2026/08/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。