В Chakra UI кнопки (Button) поддерживают несколько
стандартных размеров, которые задаются через проп size.
Основные значения: sm, md, lg, а
также xs и xl для более тонкой настройки.
Размер кнопки влияет на высоту, внутренние отступы
(padding) и иногда на размер шрифта.
Примеры использования:
<Button size="xs">Extra Small</Button>
<Button size="sm">Small</Button>
<Button size="md">Medium</Button>
<Button size="lg">Large</Button>
<Button size="xl">Extra Large</Button>
Особенности:
size применяется ко всем типам кнопок независимо от
variant.isFullWidth, чтобы кнопка
растягивалась на всю ширину контейнера, при этом размер будет
сохраняться.Проп variant задает визуальный стиль кнопки. Основные
варианты:
solid — стандартная кнопка с
заполнением цветом.outline — кнопка с прозрачным фоном и
границей.ghost — прозрачная кнопка без границы,
меняет цвет при наведении.link — выглядит как текстовая ссылка,
без фона и границы.unstyled — полностью убирает стили,
оставляя возможность полного кастомного оформления.Пример применения:
<Button variant="solid" colorScheme="blue">Solid</Button>
<Button variant="outline" colorScheme="green">Outline</Button>
<Button variant="ghost" colorScheme="red">Ghost</Button>
<Button variant="link" colorScheme="purple">Link</Button>
<Button variant="unstyled">Unstyled</Button>
Ключевые моменты:
colorScheme определяет цвет кнопки в зависимости от
варианта. Например, для solid это цвет заливки, для
outline — цвет границы.size + variant позволяет
создавать кнопки, подходящие под любые макеты и UX требования.isLoading,
который добавляет спиннер вместо текста.Проп colorScheme задает цвет кнопки в соответствии с
темами Chakra UI. Можно использовать стандартные цвета, такие как
blue, red, green,
yellow, или кастомные цвета из темы.
Пример:
<Button colorScheme="blue" size="lg">Blue Large</Button>
<Button colorScheme="red" variant="outline" size="sm">Red Small</Button>
<Button colorScheme="teal" variant="ghost">Teal Ghost</Button>
Особенности:
disabled для серого, неактивного
состояния:<Button colorScheme="gray" isDisabled>Disabled</Button>
Часто кнопки содержат иконки. Chakra UI поддерживает интеграцию с
react-icons через пропы leftIcon и
rightIcon. Иконки адаптируются под размер
кнопки, если правильно указаны размеры:
import { Button } from "@chakra-ui/react";
import { FaDownload } from "react-icons/fa";
<Button size="md" leftIcon={<FaDownload />}>Download</Button>
<Button size="sm" rightIcon={<FaDownload />}>Download</Button>
Ключевые моменты:
size кнопки, сохраняя
визуальный баланс.<Icon w={5} h={5} />.Проп isFullWidth делает кнопку адаптивной по ширине
контейнера:
<Button size="lg" colorScheme="blue" isFullWidth>
Full Width Button
</Button>
Особенности:
variant и colorScheme
позволяет создавать разнообразные интерфейсные решения без
дополнительного CSS.Chakra UI позволяет расширять стандартные размеры и создавать кастомные через тему:
import { extendTheme } from "@chakra-ui/react";
const theme = extendTheme({
components: {
Button: {
sizes: {
xxl: {
h: "64px",
fontSize: "2xl",
px: "32px",
},
},
},
},
});
export default theme;
Использование:
<Button size="xxl" colorScheme="pink">Extra Extra Large</Button>
Ключевые моменты:
В Chakra UI каждая кнопка поддерживает состояния: hover, active, focus, disabled, loading. Для всех этих состояний автоматически применяются стили из темы.
Примеры:
<Button colorScheme="blue" isLoading>
Loading
</Button>
<Button colorScheme="green" isDisabled>
Disabled
</Button>
Особенности:
isLoading заменяет текст на спиннер и блокирует
клики.isDisabled делает кнопку неактивной и изменяет
стили.colorScheme и
variant.xs, sm)
подходят для тулбаров и компактных интерфейсов.md, lg,
xl) — стандарт для форм, CTA и основных
действий.solid для выделенных действий,
outline для второстепенных,
ghost для контекстных,
link для ссылок.Такое системное сочетание пропов делает Chakra UI мощным инструментом для построения гибких и визуально согласованных интерфейсов.