Malevich

Elements / Interactive/

Button-group

Joined row of buttons or toggles with shared borders.

Button-group

Joins Buttons or Toggles into a connected row with shared borders. Used for filter sets, view toggles, segmented controls. CSS-only.

When to use

If exactly one option must be selected at a time, prefer Tabs. If items can be independently toggled, use Toggles inside a Button-group.

Variants

Variant Class Use for
Default .button-group Horizontal row
Vertical .button-group.-vertical Stacked column

Anatomy

<!-- Group of buttons -->
<div class="button-group" role="group" aria-label="Filter by status">
  <button class="button -secondary">All</button>
  <button class="button -secondary">Active</button>
  <button class="button -secondary">Archived</button>
</div>

<!-- Group of toggles (multi-select chips) -->
<div class="button-group" role="group" aria-label="Text formatting">
  <button class="toggle" aria-pressed="false">B</button>
  <button class="toggle" aria-pressed="true">I</button>
  <button class="toggle" aria-pressed="false">U</button>
</div>

<!-- Vertical -->
<div class="button-group -vertical" role="group" aria-label="View">
  <button class="button -secondary">List</button>
  <button class="button -secondary">Grid</button>
  <button class="button -secondary">Cards</button>
</div>

The component is purely a layout wrapper — children remain real <button> elements with all their semantics.

Tokens used

Accessibility

Edge cases

Do

Don't