Внутри других компонентов иконку отдельно не собирают: у CdsButton, CdsTextInput, CdsList и других есть пропсы
icon,prepend-iconиappend-icon. Для самостоятельного действия возьмите CdsFunctionalButton — это кнопка-иконка с подписью и состояниями. Все доступные иконки — в галерее, подключение своего набора — в руководстве.
Вариации
Иконка
Свойство icon принимает имя иконки из набора по умолчанию — например add или search. Свойство name делает то же самое и читается естественнее, когда иконка задаётся строкой. Кроме имени icon принимает компонент иконки и массив SVG-путей, поэтому в него можно передать и собственную графику.
Иконка из другого подключённого набора указывается с префиксом набора — i-ri:settings-3-line. Как подключить набор, описано в руководстве по иконкам.
Размеры
Свойство size принимает одно из значений шкалы — от xs до xl — или число в пикселях, когда иконка работает как иллюстрация. По умолчанию — md, вровень с основным текстом.
Цвет
Без color иконка наследует цвет текста родителя — это поведение по умолчанию и в большинстве случаев верное. Свойство color принимает токен палитры (content-secondary, brand-primary), цветовой алиас статуса (green, red, lemon) или hex/rgb. Свойство opacity приглушает иконку, не меняя её цвет.
Отступ от текста
Свойства start и end добавляют отступ со стороны текста: start — для иконки перед подписью, end — после. Так не приходится подбирать margin руками.
Реакция на клик
Если повесить на иконку обработчик @click, она получает role="button", попадает в обход по Tab и меняет курсор; disabled убирает её из обхода и перестаёт принимать клики. Это удобно для мелких переключателей внутри своих компонентов — для полноценного действия лучше подойдёт CdsFunctionalButton.
Слот
Имя иконки можно передать текстом в слот по умолчанию — результат тот же, что и у icon. Пригодится, когда имя приходит из выражения в шаблоне.
Рекомендации
Сценарии использования
Статусы в списке
Иконка слева от подписи задаёт статус цветом и формой, а текст называет его словами. Цвета берутся из алиасов статусов, size="sm" подгоняет иконку под мелкий текст, start даёт отступ до подписи.
Список вложений
Иконка показывает тип файла и держит взгляд на левом крае списка. Размер lg делает её заметнее подписи, а цвет content-secondary не даёт ей спорить с названием файла. Действие рядом — уже кнопка: CdsFunctionalButton с aria-label.
Ход операции
Иконка отражает состояние процесса: заявка готова, отправляется, отправлена. Меняются только icon и color — компонент перерисовывается на месте, и строка статуса не прыгает.
Примечание в тексте
В абзаце иконка выравнивается по середине строки, поэтому её можно ставить прямо в текст. Размер sm и start не дают ей разрывать строку.
API
Пропсы
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
activeColor | string | undefined | — | Цвет компонента, когда он находится в активном состоянии |
baseColor | string | undefined | — | Цвет неактивного компонента |
bgColor | string | undefined | — | Цвет фона компонента |
color | string | undefined | — | Цвет компонента |
disabled | boolean | null | undefined | null | Заблокированное состояние |
end | boolean | undefined | — | Добавляет отступ слева от иконки — для иконки после текста |
icon | IconValue | undefined | — | Название иконки или компонент иконки, который будет отображаться |
name | string | undefined | — | Строковое имя иконки из зарегистрированного набора (алиас для icon) |
opacity | string | number | undefined | — | Прозрачность иконки — число от 0 до 1 |
size | number | "xs" | "sm" | "md" | "lg" | "xl" | undefined | 'md' | Размер компонента |
start | boolean | undefined | — | Добавляет отступ справа от иконки — для иконки перед текстом |
tag | string | JSXComponent<any> | undefined | 'i' | Пользовательский HTML-тег для отображения |
textColor | string | undefined | — | Цвет текста компонента |
theme | string | undefined | — | Тема компонента |
Слоты
| Имя | Тип | Описание |
|---|---|---|
default | any | Имя иконки текстом — альтернатива пропу icon |