Button Group
The btn-group utility class provides a flexible and customizable button-group component based on the button component.
TIP
Button groups can be combined with dropdown menus to create dropdown buttons.
Installation
pnpm i @vue-interface/btnyarn add @vue-interface/btnnpm i @vue-interface/btnbun i @vue-interface/btnTailwind Setup
@import '@vue-interface/btn-group/index.css';Basic Usage
<div class="btn-group">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>Split Buttons
<div role="group" class="btn-dropdown-split btn-dropdown btn-group">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>Sizing
Customize the size of a btn-group using a predetermined size, tailwind's numeric sizing classes, or an arbitrary CSS length unit.
Predetermined Sizes
The size can be customized using predetermined size classes: xs, sm, md, lg, xl, 2xl, 3xl, 4xl, 5xl. Use the syntax: btn-group-[size].
Show Code
<div class="flex flex-col gap-2">
<div>
<div class="btn-group btn-group-xs">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>
</div>
<div>
<div class="btn-group btn-group-sm">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>
</div>
<div>
<div class="btn-group btn-group-md">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>
</div>
<div>
<div class="btn-group btn-group-lg">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>
</div>
<div>
<div class="btn-group btn-group-xl">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>
</div>
<div>
<div class="btn-group btn-group-2xl">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>
</div>
<div>
<div class="btn-group btn-group-3xl">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>
</div>
<div>
<div class="btn-group btn-group-4xl">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>
</div>
<div>
<div class="btn-group btn-group-5xl">
<button class="btn btn-secondary">Left</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Right</button>
</div>
</div>
</div>Tailwind Sizes
For more granular control over button sizes, use Tailwind's numeric sizing scale classes: btn-group-1 - btn-group-96.
Show Code
<div class="flex flex-col gap-2">
<div>
<div class="btn-group btn-group-3">
<button class="btn btn-secondary">btn-group-3</button>
<button class="btn btn-secondary">btn-group-3</button>
<button class="btn btn-secondary">btn-group-3</button>
</div>
</div>
<div>
<div class="btn-group btn-group-4">
<button class="btn btn-secondary">btn-group-4</button>
<button class="btn btn-secondary">btn-group-4</button>
<button class="btn btn-secondary">btn-group-4</button>
</div>
</div>
<div>
<div class="btn-group btn-group-5">
<button class="btn btn-secondary">btn-group-5</button>
<button class="btn btn-secondary">btn-group-5</button>
<button class="btn btn-secondary">btn-group-5</button>
</div>
</div>
</div>Arbitrary Sizes
For precise sizing, specify exact pixel values using the syntax btn-group-[Npx] or any other CSS length units (rem, em, mm, etc.).
Show Code
<div class="flex flex-col gap-2">
<div>
<div class="btn-group btn-group-[16px]">
<button class="btn btn-secondary">btn-group-[16px]</button>
<button class="btn btn-secondary">btn-group-[16px]</button>
<button class="btn btn-secondary">btn-group-[16px]</button>
</div>
</div>
<div>
<div class="btn-group btn-group-[1.2rem]">
<button class="btn btn-secondary">btn-group-[1.2rem]</button>
<button class="btn btn-secondary">btn-group-[1.2rem]</button>
<button class="btn btn-secondary">btn-group-[1.2rem]</button>
</div>
</div>
</div>Orientation
Button groups support four dropdown orientations for flexible positioning.
Show Code
<div role="group" class="btn-dropdown btn-group dropdown">
<button class="btn btn-secondary dropdown-toggle">Dropdown</button>
</div>
<div role="group" class="btn-dropdown btn-group dropup">
<button class="btn btn-secondary dropdown-toggle">Dropup</button>
</div>
<div role="group" class="btn-dropdown btn-group dropleft">
<button class="btn btn-secondary dropdown-toggle">Dropleft</button>
</div>
<div role="group" class="btn-dropdown btn-group dropright">
<button class="btn btn-secondary dropdown-toggle">Dropright</button>
</div>Split Orientation
Split button dropdowns with orientation support.
Show Code
<div role="group" class="btn-dropdown-split btn-dropdown btn-group dropdown">
<button class="btn btn-secondary">Dropdown</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group dropup">
<button class="btn btn-secondary">Dropup</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group dropleft">
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
<button class="btn btn-secondary">Dropleft</button>
</div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group dropright">
<button class="btn btn-secondary">Dropright</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>Regular Sizing
The size of regular dropdown buttons can be customized using the predetermined size classes btn-group-xs - btn-group-5xl.
Show Code
<div>
<div role="group" class="btn-dropdown btn-group btn-group-xs">
<button class="btn btn-secondary dropdown-toggle">Click Me</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-sm">
<button class="btn btn-secondary dropdown-toggle">Click Me</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-md">
<button class="btn btn-secondary dropdown-toggle">Click Me</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-lg">
<button class="btn btn-secondary dropdown-toggle">Click Me</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-xl">
<button class="btn btn-secondary dropdown-toggle">Click Me</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-2xl">
<button class="btn btn-secondary dropdown-toggle">Click Me</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-3xl">
<button class="btn btn-secondary dropdown-toggle">Click Me</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-4xl">
<button class="btn btn-secondary dropdown-toggle">Click Me</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-5xl">
<button class="btn btn-secondary dropdown-toggle">Click Me</button>
</div>
</div>Tailwind Sizes
Use Tailwind's numeric sizing scale for more granular control over button group sizes. Tailwind’s default spacing scale has a range of 0 - 96.
Show Code
<div>
<div role="group" class="btn-dropdown btn-group btn-group-3">
<button class="btn btn-secondary dropdown-toggle">btn-group-3</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-4">
<button class="btn btn-secondary dropdown-toggle">btn-group-4</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-5">
<button class="btn btn-secondary dropdown-toggle">btn-group-5</button>
</div>
</div>Arbitrary Sizes
For precise sizing needs, specify exact pixel values using the btn-group-[Npx] syntax or any other CSS length units (rem, em, mm, etc.).
Show Code
<div>
<div role="group" class="btn-dropdown btn-group btn-group-[16px]">
<button class="btn btn-secondary dropdown-toggle">btn-group-[16px]</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-[21px]">
<button class="btn btn-secondary dropdown-toggle">btn-group-[21px]</button>
</div>
</div>Split Sizing
The size of split dropdown buttons can be customized using the predetermined size classes btn-group-xs - btn-group-5xl. Split buttons can also be customized using Tailwind's numeric sizing scale or by pixel size for precise sizing needs.
Show Code
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-xs">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-sm">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-md">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-lg">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-xl">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-2xl">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-3xl">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-4xl">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-5xl">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>Split Tailwind Sizes
Use Tailwind's numeric sizing scale for more granular control over button group sizes. Tailwind’s default spacing scale has a range of 0 - 96.
Show Code
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-4">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-5">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>
<div>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group btn-group-6">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>Split Arbitrary Sizes
For precise sizing needs, specify exact pixel values using the btn-group-[Npx] syntax or any other CSS length units (rem, em, mm, etc.).
Show Code
<div>
<div role="group" class="btn-dropdown btn-group btn-group-[16px]">
<button class="btn btn-secondary dropdown-toggle">btn-group-[16px]</button>
</div>
</div>
<div>
<div role="group" class="btn-dropdown btn-group btn-group-[1.2rem]">
<button class="btn btn-secondary dropdown-toggle">btn-group-[1.2rem]</button>
</div>
</div>Vertical Variation
Create vertical button groups using the btn-group-vertical class.
Show Code
<div class="btn-group btn-group-vertical">
<button class="btn btn-secondary">Top</button>
<button class="btn btn-secondary">Middle</button>
<button class="btn btn-secondary">Bottom</button>
<div role="group" class="btn-dropdown-split btn-dropdown btn-group">
<button class="btn btn-secondary">Click Me</button>
<div role="group" class="btn-group">
<button type="button" aria-haspopup="true" class="btn btn-secondary dropdown-toggle-split dropdown-toggle"></button>
</div>
</div>
</div>