Button Groups

Cluster related buttons so they share edges and read as a single control — horizontal or vertical, in three sizes, and optionally full-width.

VdButtonGroup component (Vue 3)

<VdButtonGroup> wraps <VdButton> children and applies the group layout through the size, vertical, and full-width props.

Horizontal (default)

Vertical

Full width · large

Usage

<script setup lang="ts">
import { VdButtonGroup, VdButton } from "@vanduo-oss/vd3";
</script>

<template>
  <VdButtonGroup size="md">
    <VdButton variant="primary">Left</VdButton>
    <VdButton variant="primary">Middle</VdButton>
    <VdButton variant="primary">Right</VdButton>
  </VdButtonGroup>

  <!-- vertical stack, full-width, large -->
  <VdButtonGroup vertical full-width size="lg">
    <VdButton variant="secondary">A</VdButton>
    <VdButton variant="secondary">B</VdButton>
  </VdButtonGroup>
</template>

Component API (Vue 3)

Prop / slotDescription
:size'sm' | 'md' | 'lg' — sizes every button in the group (default 'md').
:verticalStacks the buttons vertically (adds .vd-btn-group-vertical).
:full-widthStretches the group to 100% width (adds .vd-btn-group-full).
default slotThe VdButton (or .vd-btn) children to group.

The raw .vd-btn-group classes below ship in vd3's CSS and back the same layout for non-Vue markup.

Horizontal Group


Full width (.vd-btn-group-full):

<!-- Horizontal Button Group -->
<div class="vd-btn-group">
  <button class="vd-btn vd-btn-primary">Left</button>
  <button class="vd-btn vd-btn-primary">Middle</button>
  <button class="vd-btn vd-btn-primary">Right</button>
</div>

<!-- Outline Buttons with Active State -->
<div class="vd-btn-group">
  <button class="vd-btn vd-btn-outline">One</button>
  <button class="vd-btn vd-btn-outline is-active">Two</button>
  <button class="vd-btn vd-btn-outline">Three</button>
</div>

<!-- Full Width Button Group -->
<div class="vd-btn-group vd-btn-group-full">
  <button class="vd-btn vd-btn-secondary">A</button>
  <button class="vd-btn vd-btn-secondary">B</button>
  <button class="vd-btn vd-btn-secondary">C</button>
</div>
Vertical Group & Sizes

Small group (.vd-btn-group-sm):


Large group (.vd-btn-group-lg):

<!-- Vertical Button Group -->
<div class="vd-btn-group-vertical">
  <button class="vd-btn vd-btn-primary">Top</button>
  <button class="vd-btn vd-btn-primary">Middle</button>
  <button class="vd-btn vd-btn-primary">Bottom</button>
</div>

<!-- Small Button Group -->
<div class="vd-btn-group vd-btn-group-sm">
  <button class="vd-btn vd-btn-outline">S1</button>
  <button class="vd-btn vd-btn-outline">S2</button>
  <button class="vd-btn vd-btn-outline">S3</button>
</div>

<!-- Large Button Group -->
<div class="vd-btn-group vd-btn-group-lg">
  <button class="vd-btn vd-btn-outline">L1</button>
  <button class="vd-btn vd-btn-outline">L2</button>
  <button class="vd-btn vd-btn-outline">L3</button>
</div>

API Reference

Class NameDescriptionType
.vd-btn-groupBase container for grouping buttons horizontally and removing inner border-radii.Layout
.vd-btn-group-verticalBase container for grouping buttons vertically.Layout
.vd-btn-group-fullMakes the horizontal button group stretch to 100% of its container width.Utility
.vd-btn-group-smApplies small sizing to all buttons within the group.Modifier
.vd-btn-group-lgApplies large sizing to all buttons within the group.Modifier