Skip to content

const selectedValue = ref('option1'); const selectedValues = ref(['bold', 'italic']); const requiredValue = ref('center');

Use bo-button-group for adjacent actions or a compact selection control. Use bo-button-group-item for every child; items receive their size, variant, selection, and disabled state from the group unless overridden.

Basic Usage ​

The default group is horizontal, attached, and uses the neutral secondary treatment.

<bo-button-group>
  <bo-button-group-item value="back">Back</bo-button-group-item>
  <bo-button-group-item value="next">Next</bo-button-group-item>
</bo-button-group>

Single Selection ​

With the default multiple="false", v-model contains one selected string or number. Selecting the current item clears it unless required is set.

Selected: left
<bo-button-group v-model="alignment">
  <bo-button-group-item value="left">Left</bo-button-group-item>
  <bo-button-group-item value="center">Center</bo-button-group-item>
  <bo-button-group-item value="right">Right</bo-button-group-item>
</bo-button-group>

Multiple Selection ​

Set multiple to make v-model an array. Set required when at least one item must remain selected.

open
<bo-button-group v-model="filters" multiple variant="secondary">
  <bo-button-group-item value="open">Open</bo-button-group-item>
  <bo-button-group-item value="assigned">Assigned</bo-button-group-item>
  <bo-button-group-item value="review">Review</bo-button-group-item>
</bo-button-group>

Layout and Attachment ​

Attached groups use shared edges and retain a rounded outer silhouette. Set attached="false" for separated rounded buttons. Use orientation="vertical" and fullWidth for stacked controls.

<div class="grid gap-4">
  <bo-button-group :attached="false">
    <bo-button-group-item value="list">List</bo-button-group-item>
    <bo-button-group-item value="board">Board</bo-button-group-item>
  </bo-button-group>
  <bo-button-group orientation="vertical" full-width>
    <bo-button-group-item value="overview">Overview</bo-button-group-item>
    <bo-button-group-item value="activity">Activity</bo-button-group-item>
  </bo-button-group>
</div>

Variants ​

The group variant is inherited by its items. Use item-level variant when a specific action needs a different treatment.

<div class="flex flex-wrap gap-3">
  <bo-button-group variant="primary">
    <bo-button-group-item value="new">New</bo-button-group-item>
    <bo-button-group-item value="import">Import</bo-button-group-item>
  </bo-button-group>
  <bo-button-group variant="secondary">
    <bo-button-group-item value="draft">Draft</bo-button-group-item>
    <bo-button-group-item value="published">Published</bo-button-group-item>
  </bo-button-group>
</div>

Sizes ​

Group size is inherited by every item unless the item supplies its own size.

<div class="grid gap-3">
  <bo-button-group size="sm"><bo-button-group-item value="sm">Small</bo-button-group-item><bo-button-group-item value="sm-2">Small</bo-button-group-item></bo-button-group>
  <bo-button-group size="default"><bo-button-group-item value="default">Default</bo-button-group-item><bo-button-group-item value="default-2">Default</bo-button-group-item></bo-button-group>
  <bo-button-group size="lg"><bo-button-group-item value="lg">Large</bo-button-group-item><bo-button-group-item value="lg-2">Large</bo-button-group-item></bo-button-group>
</div>

Item Overrides, Icons, and Disabled Items ​

An item can override the inherited size or variant. Icon-only items should include ariaLabel; disabled items are skipped and cannot change the model.

list
<bo-button-group v-model="view">
  <bo-button-group-item value="list" size="sm" aria-label="List view">
    <bo-icon icon="list" aria-hidden="true" />
  </bo-button-group-item>
  <bo-button-group-item value="board" size="lg" aria-label="Board view">
    <bo-icon icon="grid" aria-hidden="true" />
  </bo-button-group-item>
  <bo-button-group-item value="disabled" disabled>Unavailable</bo-button-group-item>
</bo-button-group>

API Reference ​

BoButtonGroup Props ​

PropTypeDefaultDescription
id / dataTestIdstringautogeneratedRoot attributes.
modelValuestring | number | (string | number)[]-Selected value or values.
orientationhorizontal | verticalhorizontalItem direction.
sizeBoButtonSizedefaultSize inherited by items.
variantBoButtonVariantsecondaryVariant inherited by items.
fullWidthbooleanfalseExpands the group and its items.
attachedbooleantrueJoins item edges and preserves outer rounding.
multiple / requiredbooleanfalseSelection mode and whether one item must remain selected.
roleHTMLAttributes['role']groupGroup semantics.

BoButtonGroupItem Props ​

PropTypeDefaultDescription
id / dataTestIdstringautogeneratedItem attributes.
valuestring | numberrequiredValue represented by the item.
disabledbooleanfalsePrevents selection and focus.
variant / sizeBoButtonVariant / BoButtonSizeinheritedItem-level overrides.
ariaLabelstring-Accessible name for icon-only items.

Events and Slots ​

NameDescription
update:modelValueEmitted when selection changes.
defaultGroup or item content.

Released under the MIT License.