Group
Group joins related controls into one visual cluster with shared borders and connected radii.
Purpose
Group joins related controls into one visual cluster with shared borders and connected radii. Use ordinary flex or grid for unrelated actions or layout.
Merged controls
Installation
With the Siteplane registry alias configured, add the component and import the installed source from your app.
CLI
pnpm dlx shadcn@4.16.1 add @siteplane/groupImport
import { Group, GroupSeparator, GroupText } from "@/components/ui/group";Need the machine-readable source metadata? View registry JSON.
Usage
Group merges adjacent controls so borders, radii and focus states read as one control cluster.
import { Group, GroupSeparator, GroupText } from "@/components/ui/group";
import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
export function Example() {
return (
<Group>
<GroupText>https://</GroupText>
<Input aria-label="URL" />
<GroupSeparator />
<Button>Copy</Button>
</Group>
);
}Examples
Button clusters, separators, orientation and text affixes are props and compositions of the same primitive.
Button group
With separator
Vertical
Prefix and suffix
Input with button
Segmented actions
Filter group
Toggle-style filters keep the pressed state on the buttons, not on the group.
API Reference
The reference lists the source-owned exports and props that are easy to miss in visual examples. Inherited Base UI props remain available unless the wrapper narrows them.
orientationaccepts"horizontal"or"vertical".- Match
GroupSeparator orientationto the divider itself. A vertical Group needsorientation="horizontal"separators between rows. GroupTextis a non-interactive prefix, suffix, or status segment.- Nested direct-child Groups remain separate clusters with the native gap, allowing a toolbar to contain several connected control sets.
Motion
Component motion uses the shared Siteplane motion contract. See the global motion guide for provider setup, tokens and reduced-motion behavior.
- Group does not animate. Children retain their native interaction and reduced-motion behavior.
- Connected borders, radii, focus rings, and invalid state come from Group.
- Do not add transforms to the entire cluster.
Accessibility
- Name every meaningful control group through
aria-labeloraria-labelledby. - Every icon-only Button needs its own accessible label.
- Toggle-like controls retain
aria-pressedor their native selection semantics. GroupTextis supporting text, never a control.
Implementation Guidance
- Group only visually connects controls that belong to one task.
- Use matching separator orientation and nested Groups for multiple clusters.
- Do not use Group as a replacement for Toolbar semantics or general layout.