Skip to content

CdsIcon

Иконка — короткий визуальный знак рядом с текстом: статус записи, тип файла, направление перехода. Компонент берёт иконку по имени из подключённого набора и подчиняет её размер, цвет и отступы токенам дизайн-системы.

Storybook GitLab Figma
Покрытие тестами: 100% — хорошее покрытие
API в спеках
15 / 15 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
24 юнит · 0 браузерных · 2 в планах
Известные баги
4 зафиксированы тестом it.fails
Покрытие кода
100% строк · 100% ветвей замер v4.0.0-alpha.13
A11y (axe)
3 рекомендаций в 11 историях замер v4.0.0-alpha.11

Внутри других компонентов иконку отдельно не собирают: у CdsButton, CdsTextInput, CdsList и других есть пропсы icon, prepend-icon и append-icon. Для самостоятельного действия возьмите CdsFunctionalButton — это кнопка-иконка с подписью и состояниями. Все доступные иконки — в галерее, подключение своего набора — в руководстве.

Вариации ​

Иконка ​

Свойство icon принимает имя иконки из набора по умолчанию — например add или search. Свойство name делает то же самое и читается естественнее, когда иконка задаётся строкой. Кроме имени icon принимает компонент иконки и массив SVG-путей, поэтому в него можно передать и собственную графику.

Sandbox Storybook

Иконка из другого подключённого набора указывается с префиксом набора — i-ri:settings-3-line. Как подключить набор, описано в руководстве по иконкам.

Размеры ​

Свойство size принимает одно из значений шкалы — от xs до xl — или число в пикселях, когда иконка работает как иллюстрация. По умолчанию — md, вровень с основным текстом.

Sandbox Storybook

Цвет ​

Без color иконка наследует цвет текста родителя — это поведение по умолчанию и в большинстве случаев верное. Свойство color принимает токен палитры (content-secondary, brand-primary), цветовой алиас статуса (green, red, lemon) или hex/rgb. Свойство opacity приглушает иконку, не меняя её цвет.

Sandbox Storybook

Отступ от текста ​

Свойства start и end добавляют отступ со стороны текста: start — для иконки перед подписью, end — после. Так не приходится подбирать margin руками.

Sandbox Storybook

Реакция на клик ​

Если повесить на иконку обработчик @click, она получает role="button", попадает в обход по Tab и меняет курсор; disabled убирает её из обхода и перестаёт принимать клики. Это удобно для мелких переключателей внутри своих компонентов — для полноценного действия лучше подойдёт CdsFunctionalButton.

Sandbox Storybook

Слот ​

Имя иконки можно передать текстом в слот по умолчанию — результат тот же, что и у icon. Пригодится, когда имя приходит из выражения в шаблоне.

Sandbox Storybook

Рекомендации ​

Сценарии использования ​

Статусы в списке ​

Иконка слева от подписи задаёт статус цветом и формой, а текст называет его словами. Цвета берутся из алиасов статусов, size="sm" подгоняет иконку под мелкий текст, start даёт отступ до подписи.

Sandbox Storybook

Список вложений ​

Иконка показывает тип файла и держит взгляд на левом крае списка. Размер lg делает её заметнее подписи, а цвет content-secondary не даёт ей спорить с названием файла. Действие рядом — уже кнопка: CdsFunctionalButton с aria-label.

Sandbox Storybook

Ход операции ​

Иконка отражает состояние процесса: заявка готова, отправляется, отправлена. Меняются только icon и color — компонент перерисовывается на месте, и строка статуса не прыгает.

Sandbox Storybook

Примечание в тексте ​

В абзаце иконка выравнивается по середине строки, поэтому её можно ставить прямо в текст. Размер sm и start не дают ей разрывать строку.

Sandbox Storybook

API ​

Пропсы

ИмяТипПо умолчаниюОписание
activeColorstring | undefined—Цвет компонента, когда он находится в активном состоянии
baseColorstring | undefined—Цвет неактивного компонента
bgColorstring | undefined—Цвет фона компонента
colorstring | undefined—Цвет компонента
disabledboolean | null | undefinednullЗаблокированное состояние
endboolean | undefined—Добавляет отступ слева от иконки — для иконки после текста
iconIconValue | undefined—Название иконки или компонент иконки, который будет отображаться
namestring | undefined—Строковое имя иконки из зарегистрированного набора (алиас для icon)
opacitystring | number | undefined—Прозрачность иконки — число от 0 до 1
sizenumber | "xs" | "sm" | "md" | "lg" | "xl" | undefined'md'Размер компонента
startboolean | undefined—Добавляет отступ справа от иконки — для иконки перед текстом
tagstring | JSXComponent<any> | undefined'i'Пользовательский HTML-тег для отображения
textColorstring | undefined—Цвет текста компонента
themestring | undefined—Тема компонента

Слоты

ИмяТипОписание
defaultanyИмя иконки текстом — альтернатива пропу icon