Компонент ButtonGroup предназначен для
объединения нескольких кнопок в визуально связанный блок, обеспечивая
единый стиль, согласованное расстояние между кнопками и возможность
управления поведением всех кнопок одновременно. Он полезен в
интерфейсах, где нужно сгруппировать действия, такие как
подтверждение/отмена, навигация или выбор опций.
ButtonGroupsize – задаёт размер всех кнопок в
группе. Допустимые значения: sm, md,
lg.
<ButtonGroup size="lg">
<Button>Сохранить</Button>
<Button>Отмена</Button>
</ButtonGroup>variant – определяет стиль кнопок.
Значения могут быть стандартными для Button
(solid, outline, ghost,
link).
<ButtonGroup variant="outline">
<Button>Да</Button>
<Button>Нет</Button>
</ButtonGroup>colorScheme – задаёт цветовую тему
для всех кнопок. Например, teal, blue,
red.
<ButtonGroup colorScheme="blue">
<Button>Принять</Button>
<Button>Отклонить</Button>
</ButtonGroup>isAttached – если
true, кнопки визуально объединяются без промежутков,
создавая эффект “склеенных” кнопок.
<ButtonGroup isAttached>
<Button>Назад</Button>
<Button>Вперед</Button>
</ButtonGroup>spacing – задаёт расстояние между
кнопками, если isAttached равен false.
Значение указывается в единицах Chakra UI (например, 2,
4, 6).
<ButtonGroup spacing="4">
<Button>Редактировать</Button>
<Button>Удалить</Button>
</ButtonGroup>orientation – определяет
направление кнопок: horizontal (по умолчанию) или
vertical.
<ButtonGroup orientation="vertical" spacing="3">
<Button>Опция 1</Button>
<Button>Опция 2</Button>
<Button>Опция 3</Button>
</ButtonGroup>ButtonGroup поддерживает любые кнопки Chakra UI: обычные
Button, кнопки с иконками IconButton, а также
их комбинации. Это позволяет создавать компактные панели инструментов
или меню действий.
<ButtonGroup>
<Button leftIcon={<CheckIcon />}>Сохранить</Button>
<IconButton aria-label="Удалить" icon={<DeleteIcon />} />
<Button rightIcon={<ArrowForwardIcon />}>Далее</Button>
</ButtonGroup>
IconButton хорошо подходит для
экономии пространства в интерфейсе.Можно использовать ButtonGroup вместе с состоянием React
для управления активными кнопками, выборами или переключателями.
Например, создание группы переключателей:
const [active, setActive] = React.useState('left');
<ButtonGroup variant="solid">
<Button colorScheme={active === 'left' ? 'blue' : 'gray'} onCl ick={() => setActive('left')}>Левый</Button>
<Button colorScheme={active === 'center' ? 'blue' : 'gray'} onCl ick={() => setActive('center')}>Центр</Button>
<Button colorScheme={active === 'right' ? 'blue' : 'gray'} onCl ick={() => setActive('right')}>Правый</Button>
</ButtonGroup>
Такой подход позволяет использовать ButtonGroup как
замену радио-кнопкам или вкладкам, сохраняя консистентный дизайн.
ButtonGroup наследует все возможности Chakra UI по
стилям, включая sx для кастомных стилей.orientation="vertical" при маленьком экране и
горизонтальное расположение на десктопе.isAttached позволяет создавать кнопки с
единым бордером без визуальных пробелов, что важно для панелей
инструментов.<ButtonGroup isAttached colorScheme="green">
<Button>Скачать</Button>
<Button>Поделиться</Button>
</ButtonGroup>
ButtonGroup часто применяется вместе с:
Tooltip – для добавления подсказок к
кнопкам.Popover – для создания всплывающих
меню.Stack – для управления вертикальным
или горизонтальным расположением кнопок в контексте всего
интерфейса.<Stack direction="row">
<ButtonGroup>
<Tooltip label="Редактировать">
<Button leftIcon={<EditIcon />}>Редактировать</Button>
</Tooltip>
<Tooltip label="Удалить">
<Button leftIcon={<DeleteIcon />}>Удалить</Button>
</Tooltip>
</ButtonGroup>
</Stack>
isAttached для действий, которые
выполняются совместно или представляют альтернативные варианты.spacing и size для сохранения
визуальной гармонии с остальными элементами интерфейса.IconButton и обычными кнопками для
компактных панелей управления.ButtonGroup в Chakra UI обеспечивает быстрый способ
создать согласованные и эстетически привлекательные группы кнопок,
минимизируя необходимость ручной стилизации и выравнивания.