Icon

Примитив иконки на основе Tabler Icons с размерами, заимствованными из Claude, и тонкой контурной обводкой.

API Reference

Все иконки

Полный набор Tabler Icons, доступный в DS (контур + залитые). Введите запрос для поиска, нажмите на иконку — скопируется готовый импорт.

Установка

Эта команда устанавливает примитив Icon и добавляет @tabler/icons-react в зависимости.

Использование

Передайте любую иконку Tabler в свойство icon. Цвет наследуется от currentColor, поэтому задавайте его текстовым токеном на самой иконке или на родительском элементе — никогда не используйте жёстко заданный цвет:

Размеры

Шкала размеров снята 1:1 с claude.ai (20px — преобладающий размер строчной иконки). По умолчанию используется lg (20px).

Обводка и типы

Самый светлый контур claude.ai визуально близок к обводке в 1px, но буквальное значение 1 отрисовывается слишком бледно на малых размерах, а собственное значение Tabler по умолчанию (2) слишком жирное. Поэтому DS по умолчанию использует 1.5 и предоставляет свойство stroke для настройки толщины. Для совместимости с Tabler stroke принимает string | number.

Залитые варианты — это обычные иконки Tabler; импортируйте компонент *Filled:

Декоративные и смысловые иконки

Icon по умолчанию декоративен: он задаёт aria-hidden="true", поэтому вспомогательные технологии пропускают его, а смысл несёт окружающий текст или метка родительского элемента управления. Это правильно для распространённого случая — иконка рядом с текстовой меткой или иконка внутри кнопки, у которой уже есть aria-label.

Когда иконка является единственным доступным содержимым — например, самостоятельный индикатор статуса или единственный дочерний элемент кнопки только с иконкой — ей нужно задать имя. Либо пометьте родительский элемент управления, либо сделайте саму иконку смысловой, переопределив значение aria-hidden по умолчанию и добавив role="img" вместе с aria-label:

Избегайте третьего состояния, когда иконка является единственным содержимым и при этом ничего не помечено — это создаёт элемент управления без метки и без озвучивания.

Состояния загрузки и анимации

Иконки могут выражать переходные состояния с помощью служебных анимаций. Каноническое состояние загрузки — это спиннер: IconLoader2 с animate-spin. Вращающийся загрузчик несёт смысл (он сообщает «загрузка»), поэтому задайте ему имя, а не скрывайте его:

Остальные иконки статуса следуют той же схеме — например, animate-pulse на индикаторе ожидания или сочетание токена text-success / text-warning / text-destructive с IconCircleCheck / IconAlertTriangle / IconX.

Oracul DS

Built for the future of AI-driven interfaces.