Button Group

A group of buttons displayed together with unified styling

Basic Button Groups

Simple button group with different variants

Default (Background Variant)

Ghost Variant


Code Svelte
1
2<script lang="ts">
3	import { Button, ButtonGroupPrimitives } from "@kareyes/aether";
4
5	const { ButtonGroup } = ButtonGroupPrimitives;
6</script>
7
8<div class="space-y-4">
9	<!-- Background Variant -->
10	<div>
11		<h3 class="text-lg font-medium mb-2">Default (Background Variant)</h3>
12		<ButtonGroup variant="bg">
13			<Button variant="outline">First</Button>
14			<Button variant="outline">Second</Button>
15			<Button variant="outline">Third</Button>
16		</ButtonGroup>
17	</div>
18
19	<!-- Ghost Variant -->
20	<div>
21		<h3 class="text-lg font-medium mb-2">Ghost Variant</h3>
22		<ButtonGroup variant="ghost">
23			<Button variant="ghost">Copy</Button>
24			<Button variant="ghost">Paste</Button>
25			<Button variant="ghost">Cut</Button>
26		</ButtonGroup>
27	</div>
28</div>

With Text Labels

Button groups can include text labels for context

Toolbar with Label (Background)

Tools

Actions with Label (Ghost)

Actions

Code Svelte
1
2<script lang="ts">
3	import { Button, Badge, ButtonGroupPrimitives } from "@kareyes/aether";
4
5	const { ButtonGroup, ButtonGroupText } = ButtonGroupPrimitives;
6</script>
7
8<div class="space-y-4">
9	<!-- Toolbar with Label (Background) -->
10	<div>
11		<h3 class="text-lg font-medium mb-2">Toolbar with Label (Background)</h3>
12		<ButtonGroup variant="bg">
13			<ButtonGroupText variant="bg">
14				<Badge variant="secondary" size="sm">Tools</Badge>
15			</ButtonGroupText>
16			<Button variant="outline" size="sm">Settings</Button>
17			<Button variant="outline" size="sm">Analytics</Button>
18			<Button variant="outline" size="sm">Search</Button>
19		</ButtonGroup>
20	</div>
21
22	<!-- Actions with Label (Ghost) -->
23	<div>
24		<h3 class="text-lg font-medium mb-2">Actions with Label (Ghost)</h3>
25		<ButtonGroup variant="ghost">
26			<ButtonGroupText variant="ghost">Actions</ButtonGroupText>
27			<Button variant="ghost" size="sm">Save</Button>
28			<Button variant="ghost" size="sm">Export</Button>
29			<Button variant="ghost" size="sm">Share</Button>
30		</ButtonGroup>
31	</div>
32</div>

With Separators

Use separators to group related actions

File Menu Style

Text Formatting Toolbar

Format

Code Svelte
1
2<script lang="ts">
3	import { Button, ButtonGroupPrimitives } from "@kareyes/aether";
4
5	const { ButtonGroup, ButtonGroupText, ButtonGroupSeparator } = ButtonGroupPrimitives;
6</script>
7
8<div class="space-y-4">
9	<!-- File Menu Style -->
10	<div>
11		<h3 class="text-lg font-medium mb-2">File Menu Style</h3>
12		<ButtonGroup variant="bg">
13			<Button variant="outline">New</Button>
14			<Button variant="outline">Open</Button>
15			<ButtonGroupSeparator />
16			<Button variant="outline">Save</Button>
17			<Button variant="outline">Save As</Button>
18			<ButtonGroupSeparator />
19			<Button variant="outline">Print</Button>
20		</ButtonGroup>
21	</div>
22
23	<!-- Text Formatting Toolbar -->
24	<div>
25		<h3 class="text-lg font-medium mb-2">Text Formatting Toolbar</h3>
26		<ButtonGroup variant="bg">
27			<ButtonGroupText variant="bg">Format</ButtonGroupText>
28			<Button variant="outline" size="sm"><strong>B</strong></Button>
29			<Button variant="outline" size="sm"><em>I</em></Button>
30			<Button variant="outline" size="sm"><u>U</u></Button>
31			<ButtonGroupSeparator />
32			<Button variant="outline" size="sm">Left</Button>
33			<Button variant="outline" size="sm">Center</Button>
34			<Button variant="outline" size="sm">Right</Button>
35		</ButtonGroup>
36	</div>
37</div>

Vertical Orientation

Button groups can be displayed vertically

Navigation Menu (Background)

Sidebar Actions (Ghost)

Quick Actions

Code Svelte
1
2<script lang="ts">
3	import { Button, ButtonGroupPrimitives } from "@kareyes/aether";
4
5	const { ButtonGroup, ButtonGroupText } = ButtonGroupPrimitives;
6</script>
7
8<div class="flex gap-8">
9	<!-- Navigation Menu (Background) -->
10	<div>
11		<h3 class="text-lg font-medium mb-2">Navigation Menu (Background)</h3>
12		<ButtonGroup orientation="vertical" variant="bg">
13			<Button variant="outline">Dashboard</Button>
14			<Button variant="outline">Projects</Button>
15			<Button variant="outline">Tasks</Button>
16			<Button variant="outline">Settings</Button>
17		</ButtonGroup>
18	</div>
19
20	<!-- Sidebar Actions (Ghost) -->
21	<div>
22		<h3 class="text-lg font-medium mb-2">Sidebar Actions (Ghost)</h3>
23		<ButtonGroup orientation="vertical" variant="ghost">
24			<ButtonGroupText variant="ghost">Quick Actions</ButtonGroupText>
25			<Button variant="ghost">New Note</Button>
26			<Button variant="ghost">New Folder</Button>
27			<Button variant="ghost">Add Link</Button>
28		</ButtonGroup>
29	</div>
30</div>

Complex Examples

Advanced button group configurations

Editor Toolbar

File
Edit

Media Player Controls

Volume

Status Actions

Online

Code Svelte
1
2<script lang="ts">
3	import { Button, Badge, ButtonGroupPrimitives } from "@kareyes/aether";
4
5	const { ButtonGroup, ButtonGroupText, ButtonGroupSeparator } = ButtonGroupPrimitives;
6</script>
7
8<div class="space-y-4">
9	<!-- Editor Toolbar -->
10	<div>
11		<h3 class="text-lg font-medium mb-2">Editor Toolbar</h3>
12		<div class="flex flex-wrap gap-4">
13			<ButtonGroup variant="bg">
14				<ButtonGroupText variant="bg">File</ButtonGroupText>
15				<Button variant="outline" size="sm">New</Button>
16				<Button variant="outline" size="sm">Open</Button>
17				<Button variant="outline" size="sm">Save</Button>
18			</ButtonGroup>
19
20			<ButtonGroup variant="bg">
21				<ButtonGroupText variant="bg">Edit</ButtonGroupText>
22				<Button variant="outline" size="sm">Undo</Button>
23				<Button variant="outline" size="sm">Redo</Button>
24				<ButtonGroupSeparator />
25				<Button variant="outline" size="sm">Cut</Button>
26				<Button variant="outline" size="sm">Copy</Button>
27				<Button variant="outline" size="sm">Paste</Button>
28			</ButtonGroup>
29		</div>
30	</div>
31
32	<!-- Status Actions -->
33	<div>
34		<h3 class="text-lg font-medium mb-2">Status Actions</h3>
35		<ButtonGroup variant="bg">
36			<ButtonGroupText variant="bg">
37				<Badge variant="flat" color="green">Online</Badge>
38			</ButtonGroupText>
39			<Button variant="outline" size="sm">View Profile</Button>
40			<Button variant="outline" size="sm">Edit Status</Button>
41			<Button variant="outline" size="sm">Settings</Button>
42		</ButtonGroup>
43	</div>
44</div>

Mixed Button Variants

Combine different button styles within a group

Call-to-Action Group

Form Actions

Actions

Code Svelte
1
2<script lang="ts">
3	import { Button, ButtonGroupPrimitives } from "@kareyes/aether";
4
5	const { ButtonGroup, ButtonGroupText } = ButtonGroupPrimitives;
6</script>
7
8<div class="space-y-4">
9	<!-- Call-to-Action Group -->
10	<div>
11		<h3 class="text-lg font-medium mb-2">Call-to-Action Group</h3>
12		<ButtonGroup variant="bg">
13			<Button variant="default">Get Started</Button>
14			<Button variant="outline">Learn More</Button>
15			<Button variant="ghost">Skip</Button>
16		</ButtonGroup>
17	</div>
18
19	<!-- Form Actions -->
20	<div>
21		<h3 class="text-lg font-medium mb-2">Form Actions</h3>
22		<ButtonGroup variant="bg">
23			<ButtonGroupText variant="bg">Actions</ButtonGroupText>
24			<Button variant="default">Submit</Button>
25			<Button variant="outline">Save Draft</Button>
26			<Button variant="ghost">Cancel</Button>
27		</ButtonGroup>
28	</div>
29</div>