Компонент Icon является базовым строительным блоком для
отображения графических символов и векторных иконок в интерфейсе. Он
построен на основе элемента SVG, что обеспечивает высокое
качество рендеринга на любых разрешениях экрана и позволяет
полностью контролировать внешний вид через пропсы.
import { Icon } from "@chakra-ui/react";
import { MdCheckCircle } from "react-icons/md";
function Example() {
return <Icon as={MdCheckCircle} w={8} h={8} color="green.500" />;
}
as – обязательный проп, который принимает компонент
иконки, чаще всего из react-icons.w и h – ширина и высота иконки, могут
задаваться через размерные токены Chakra (4,
6, 8) или CSS-значения (px,
%, em).color – цвет иконки, совместим с темой Chakra
(red.500, blue.300 и т.д.).as – компонент иконки.
boxSize – единый проп для задания ширины и
высоты одновременно. color – цвет иконки
из темы. strokeWidth – толщина линии для
иконок с контуром. viewBox – задаёт
область просмотра SVG. Позволяет контролировать масштаб и
позиционирование.
Пример с boxSize и strokeWidth:
<Icon
as={MdCheckCircle}
boxSize={10}
color="blue.400"
strokeWidth={2}
/>
Компонент поддерживает все системные пропсы Chakra, включая:
m, p, mt,
mr – отступы и поля._hover, _active,
_focus – псевдостили для интерактивных
состояний.transition – плавное изменение свойств
при взаимодействии.Пример интерактивной иконки:
<Icon
as={MdCheckCircle}
w={8}
h={8}
color="gray.500"
_hover={{ color: "green.500", transform: "scale(1.2)" }}
transition="all 0.2s"
/>
Button и другими компонентамиИконки часто комбинируются с кнопками и элементами управления. Chakra
позволяет легко интегрировать Icon через
leftIcon и rightIcon.
import { Button } from "@chakra-ui/react";
import { MdSend } from "react-icons/md";
<Button colorScheme="teal" leftIcon={<Icon as={MdSend} />}>
Отправить
</Button>
Особенности:
Icon внутри
кнопки.Для кастомных SVG можно использовать компонент Icon
напрямую, передавая элемент path через
children:
<Icon viewBox="0 0 200 200" boxSize={12} color="purple.500">
<path
fill="currentColor"
d="M100 0 L200 200 H0 Z"
/>
</Icon>
currentColor позволяет цвету иконки наследоваться от
пропса color.viewBox задаёт координатную систему для всех вложенных
path.Chakra UI учитывает ARIA-атрибуты для иконок:
role="img" – по умолчанию.aria-label – текстовое описание для скринридеров.focusable={false} – предотвращает фокусировку для
декоративных иконок.Пример:
<Icon as={MdCheckCircle} color="green.500" aria-label="Успешно выполнено" />
react-icons всегда используйте
as, чтобы сохранять совместимость с Chakra-темой.boxSize вместо отдельных w и
h.currentColor внутри кастомного SVG
позволяет легко менять цвет через проп color.Компонент Icon в Chakra UI — гибкий инструмент,
позволяющий создавать чёткие, масштабируемые и доступные
графические элементы, интегрированные с темой и системой стилей
библиотеки. Его возможности охватывают как стандартные иконки из
библиотек, так и полностью кастомные SVG-элементы с анимацией и
интерактивными эффектами.