IconPredefined

Оборачивает произвольную SVG-иконку в контейнер с предустановленной палитрой, размером и формой. Используется как иконка-«кружок» рядом с заголовками, в empty/info-блоках и в плашках статуса.

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

  • Иконка-маркер рядом с заголовком раздела или в карточке.
  • Empty-state и info-плашки, где нужен крупный визуальный акцент.
  • Иконки в Status, Alert, InfoBlock — там IconPredefined даёт согласованный фон и размер.

Когда не нужен: декоративные иконки внутри текста, иконки внутри Button (там собственный слот), функциональные иконки в тулбарах (используйте сырой SVG).

Анатомия

Appearance

Цвет подложки. primary/neutral — нейтральные, остальные (red, orange, yellow, green, blue, violet, pink) — декоративные акценты без семантики.

Size

Размер контейнера: m — дефолт в строках и карточках, l — заголовки разделов, 5xl — крупные empty-state.

Shape

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

Background

background={false} отключает цветную подложку — иконка рисуется поверх прозрачного фона. Применяется, когда подложка уже есть у родительского контейнера.

Установка

pnpm add @cloud-ru/ds-icon-predefined
import { IconPredefined, APPEARANCE, SIZE } from '@cloud-ru/ds-icon-predefined'

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

Палитра appearance

Палитра appearanceДекоративные цвета подложки.
tsx
import { IconPredefined } from '@cloud-ru/ds-icon-predefined';
import { PlaceholderSVG } from '@cloud-ru/ds-icons/interface/system';

export function Appearances() {
  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      <IconPredefined icon={PlaceholderSVG} appearance='primary' />
      <IconPredefined icon={PlaceholderSVG} appearance='neutral' />
      <IconPredefined icon={PlaceholderSVG} appearance='red' />
      <IconPredefined icon={PlaceholderSVG} appearance='green' />
      <IconPredefined icon={PlaceholderSVG} appearance='blue' />
      <IconPredefined icon={PlaceholderSVG} appearance='violet' />
    </div>
  );
}

Размеры

Размеры`m`, `l`, `5xl`.
tsx
import { IconPredefined } from '@cloud-ru/ds-icon-predefined';
import { PlaceholderSVG } from '@cloud-ru/ds-icons/interface/system';

export function Sizes() {
  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      <IconPredefined icon={PlaceholderSVG} size='m' />
      <IconPredefined icon={PlaceholderSVG} size='l' />
      <IconPredefined icon={PlaceholderSVG} size='5xl' />
    </div>
  );
}

Форма и подложка

Форма и подложка`rounded` / `squared`, отключение подложки (`background`).
tsx
import { IconPredefined } from '@cloud-ru/ds-icon-predefined';
import { PlaceholderSVG } from '@cloud-ru/ds-icons/interface/system';

export function Shapes() {
  return (
    <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'center' }}>
      <IconPredefined icon={PlaceholderSVG} shape='rounded' />
      <IconPredefined icon={PlaceholderSVG} shape='squared' />
      <IconPredefined icon={PlaceholderSVG} shape='rounded' background={false} />
    </div>
  );
}

Props

Types

PropsIconPredefinedProps
PropTypeDefaultRequiredDescription
appearance"blue" | "green" | "neutral" | "orange" | "pink" | "primary" | "red" | "violet" | "yellow"primarynoВнешний вид
backgroundbooleantruenoНаличие цветной подложки
classNamestringnoCSS-класс
data-test-idstringno
iconJSXElementConstructor<{ size?: number | undefined; className?: string | undefined; }>yesJSX иконки
innerRefRef<HTMLDivElement>noRef на корневой DOM-элемент. Используем явный проп, чтобы не зависеть от `forwardRef` и не тащить type-assertions на экспорт.
shape"rounded" | "squared"roundednoФорма: круглая или квадратная
size"3xl" | "5xl" | "l" | "m" | "s"mnoРазмер

Unions

Types

IconPredefinedProps

Unions

Storybook

Figma