Button Group
A set of buttons grouped together as a single visual unit.
Default
Buttons joined horizontally with shared borders.
html
<div class="uc-inline-flex uc-rounded-lg uc-border uc-border-border-strong uc-overflow-hidden">
<button class="uc-h-10 uc-px-4 uc-bg-neutrals-surface">Left</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-10 uc-px-4 uc-bg-neutrals-surface">Center</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-10 uc-px-4 uc-bg-neutrals-surface">Right</button>
</div>
With Active State
One button highlighted as the current selection.
html
<div class="uc-inline-flex uc-rounded-lg uc-border uc-border-border-strong uc-overflow-hidden">
<button class="uc-h-10 uc-px-4 uc-bg-accents-blue uc-text-constant-white">Day</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-10 uc-px-4 uc-bg-neutrals-surface">Week</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-10 uc-px-4 uc-bg-neutrals-surface">Month</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-10 uc-px-4 uc-bg-neutrals-surface">Year</button>
</div>
With Icons
Icon-only button group for compact toolbars.
html
<div class="uc-inline-flex uc-rounded-lg uc-border uc-border-border-strong uc-overflow-hidden">
<button class="uc-h-10 uc-w-10 uc-bg-neutrals-surface">
<svg>...</svg>
</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-10 uc-w-10 uc-bg-neutrals-surface">
<svg>...</svg>
</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-10 uc-w-10 uc-bg-neutrals-surface">
<svg>...</svg>
</button>
</div>
Sizes
Small, default, and large button group sizes.
html
<!-- Small -->
<div class="uc-inline-flex uc-rounded-lg uc-border uc-border-border-strong uc-overflow-hidden">
<button class="uc-h-8 uc-px-3 uc-text-xs">Small</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-8 uc-px-3 uc-text-xs">Group</button>
...
</div>
<!-- Default -->
<div class="uc-inline-flex uc-rounded-lg uc-border uc-border-border-strong uc-overflow-hidden">
<button class="uc-h-10 uc-px-4 uc-text-sm">Default</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-10 uc-px-4 uc-text-sm">Group</button>
...
</div>
<!-- Large -->
<div class="uc-inline-flex uc-rounded-lg uc-border uc-border-border-strong uc-overflow-hidden">
<button class="uc-h-12 uc-px-6 uc-text-sm">Large</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-12 uc-px-6 uc-text-sm">Group</button>
...
</div>
With Dropdown
Split button with a primary action and a dropdown trigger.
html
<!-- Primary split -->
<div class="uc-inline-flex uc-rounded-lg uc-overflow-hidden">
<button class="uc-h-10 uc-px-4 uc-bg-accents-blue uc-text-constant-white">Save</button>
<div class="uc-w-[0.5px] uc-bg-constant-white/20"></div>
<button class="uc-h-10 uc-w-9 uc-bg-accents-blue uc-text-constant-white">
<svg>...</svg>
</button>
</div>
<!-- Bordered split -->
<div class="uc-inline-flex uc-rounded-lg uc-border uc-border-border-strong uc-overflow-hidden">
<button class="uc-h-10 uc-px-4 uc-bg-neutrals-surface">Export</button>
<div class="uc-w-[0.5px] uc-bg-border-default"></div>
<button class="uc-h-10 uc-w-9 uc-bg-neutrals-surface">
<svg>...</svg>
</button>
</div>
Vertical
Buttons stacked vertically for sidebar or panel layouts.
html
<div class="uc-inline-flex uc-flex-col uc-rounded-lg uc-border uc-border-border-strong uc-overflow-hidden">
<button class="uc-flex uc-items-center uc-gap-2 uc-h-10 uc-px-4 uc-bg-neutrals-subtle">
<svg>...</svg>
Overview
</button>
<div class="uc-h-[0.5px] uc-bg-border-default"></div>
<button class="uc-flex uc-items-center uc-gap-2 uc-h-10 uc-px-4 uc-bg-neutrals-surface">
<svg>...</svg>
Analytics
</button>
<div class="uc-h-[0.5px] uc-bg-border-default"></div>
<button class="uc-flex uc-items-center uc-gap-2 uc-h-10 uc-px-4 uc-bg-neutrals-surface">
<svg>...</svg>
Settings
</button>
</div>
API Reference
All utility classes available for the Button Group component.
| Class | Type | Description |
|---|---|---|
uc-inline-flex |
Base | Inline flex container for the button group |
uc-rounded-lg |
Base | Rounded corners on the group container |
uc-border uc-border-border-strong |
Base | Outer border around the entire group |
uc-overflow-hidden |
Base | Clips child buttons to group border radius |
uc-w-[0.5px] uc-bg-border-default |
Base | Thin vertical divider between horizontal buttons |
uc-h-[0.5px] uc-bg-border-default |
Base | Thin horizontal divider between vertical buttons |
uc-flex-col |
Layout | Vertical stacking for vertical button groups |
uc-h-8 uc-px-3 uc-text-xs |
Size | Small button size within the group |
uc-h-10 uc-px-4 uc-text-sm |
Size | Default button size within the group |
uc-h-12 uc-px-6 uc-text-sm |
Size | Large button size within the group |
uc-bg-accents-blue uc-text-constant-white |
State | Active/selected button highlighting |
uc-bg-neutrals-subtle |
State | Subtle background for active state in bordered groups |
uc-hover:bg-neutrals-subtle |
Modifier | Hover background for inactive buttons |
Accessibility
Keyboard and screen reader support.
| Feature | Details |
|---|---|
| Role | Use role="group" with aria-label describing the group purpose |
| Keyboard | Tab moves between groups, arrow keys move within the group |
| Focus | Visible focus ring on each button via :focus-visible |
| Toggle | Active button should have aria-pressed="true" for toggle groups |