Chakra UI предоставляет мощный набор утилит для работы с цветами, которые позволяют управлять оттенками, прозрачностью и динамически изменять цветовые значения компонентов. Эти утилиты помогают поддерживать консистентность дизайна и ускоряют процесс разработки, исключая необходимость ручного вычисления цветовых оттенков.
mode()Функция mode() используется для динамического выбора
цвета в зависимости от темы — светлой или темной. Она особенно полезна
при создании компонентов, которые должны корректно отображаться в обеих
темах.
Синтаксис:
import { mode } from '@chakra-ui/theme-tools';
const bgColor = mode('gray.100', 'gray.700')(props);
'gray.100') — значение для светлой
темы.'gray.700') — значение для темной
темы.props — объект свойств, передаваемых в компонент,
обычно используется в стилях.Пример использования в компоненте:
<Box bg={mode('white', 'gray.800')(props)} p={4}>
Содержимое
</Box>
В светлой теме фон будет белым, в темной — тёмно-серым.
transparentize()Функция transparentize() позволяет задавать прозрачность
для любого цвета. Она принимает два параметра: цвет и степень
прозрачности.
Синтаксис:
import { transparentize } from '@chakra-ui/theme-tools';
const semiTransparent = transparentize('red.500', 0.5)(theme);
red.500,
blue.200 и т.д.) или HEX/RGB.rgba.Пример в стилях компонента:
<Box bg={transparentize('blue.500', 0.3)(theme)} p={5}>
Полупрозрачный блок
</Box>
Цвет блока будет с прозрачностью 30%.
darken() и
lighten()Эти функции позволяют затемнять или осветлять цвет на заданный процент. Они особенно полезны для создания состояний наведения или активного состояния кнопок.
Синтаксис:
import { darken, lighten } from '@chakra-ui/theme-tools';
const darker = darken('green.400', 0.2)(theme); // затемнение на 20%
const lighter = lighten('green.400', 0.3)(theme); // осветление на 30%
Пример использования:
<Button
bg="green.400"
_hover={{ bg: darken('green.400', 0.2)(theme) }}
>
Наведи на меня
</Button>
При наведении кнопка станет на 20% темнее.
getColor()Функция getColor() помогает извлекать конкретные оттенки
цвета из темы Chakra UI. Она особенно полезна при работе с динамическими
цветами.
Синтаксис:
import { getColor } from '@chakra-ui/theme-tools';
const primary = getColor(theme, 'blue.500');
'blue.500').Утилиты можно комбинировать для достижения сложных эффектов. Например, затемнение цвета с одновременной прозрачностью:
import { darken, transparentize } from '@chakra-ui/theme-tools';
const customColor = transparentize(darken('purple.500', 0.1)(theme), 0.2)(theme);
В этом примере цвет сначала затемняется на 10%, а затем задается прозрачность 20%.
@chakra-ui/theme-tools вместо ручного вычисления
RGBA и HEX. Это снижает риск ошибок и поддерживает единый стиль.mode() с
transparentize() или darken() позволяет
создавать компоненты, адаптирующиеся под светлую и темную тему.getColor(), чтобы все компоненты ссылались на единую
палитру темы.Эти утилиты делают работу с цветом в Chakra UI гибкой, безопасной и предсказуемой, позволяя быстро создавать динамичные и адаптивные интерфейсы с минимальными усилиями.