Capítulo 75 de 108
A set of related two-state buttons toggled together (e.g. text formatting, view selectors). Supports single or multiple selection and horizontal/vertical orientation.
"outline" for bordered items.sm / default / lg applied to all items.spacing={2}) controlling gap between items; default changed from 0 to 2 (2026-05-17 changelog) — use spacing={0} for connected/no-gap items."vertical" for stacked toggles.value={[fontWeight]}).<ToggleGroup variant="outline" multiple>
<ToggleGroupItem value="bold" aria-label="Toggle bold"><Bold /></ToggleGroupItem>
<ToggleGroupItem value="italic" aria-label="Toggle italic"><Italic /></ToggleGroupItem>
<ToggleGroupItem value="strikethrough" aria-label="Toggle strikethrough"><Underline /></ToggleGroupItem>
</ToggleGroup>
const [fontWeight, setFontWeight] = React.useState("normal")
<ToggleGroup value={[fontWeight]} onValueChange={(value) => setFontWeight(value[0])} variant="outline" spacing={2} size="lg">
<ToggleGroupItem value="light" aria-label="Light">...</ToggleGroupItem>
...
</ToggleGroup>
value/onValueChange como array mesmo em seleção única.ToggleGroup
├── ToggleGroupItem
└── ToggleGroupItem
| Prop | Type/Values |
|---|---|
multiple | boolean |
variant | default, outline |
size | sm, default, lg |
spacing | number (default 2 since 2026-05-17) |
orientation | horizontal (default), vertical |
spacing padrão 0 em código antigo: mudou pra 2; se depender de itens colados, defina spacing={0} explicitamente.onValueChange sempre recebe/retorna array, mesmo em seleção única (value[0]).multiple habilita seleção múltipla; sem ela o grupo é exclusivo (single-select).spacing={0} reproduz o comportamento antigo de itens conectados sem espaço.orientation="vertical" empilha os itens, útil pra menus laterais de opções.ToggleGroup em Field/FieldLabel/FieldDescription para formulários.