UI

Toggle

Botão liga/desliga para alternar uma opção, e ToggleGroup para escolher entre opções agrupadas.

Instalação

npx shadcn@latest add @lenstech/toggle

O mesmo arquivo exporta Toggle e ToggleGroup.

Uso

import { Toggle, ToggleGroup } from "@/components/ui/toggle"
<Toggle aria-label="Favoritar produto">
  <Heart />
</Toggle>

<ToggleGroup aria-label="Visualização" defaultSelectedKeys={["grade"]}>
  <Toggle id="grade">Grade</Toggle>
  <Toggle id="lista">Lista</Toggle>
</ToggleGroup>

Só ícone? Informe aria-label

O leitor de tela anuncia o nome e o estado ("pressionado"/"não pressionado"). Sem texto visível, o aria-label é obrigatório.

Exemplos

Contorno

Com texto (controlado)

Use isSelected + onChange para ler o estado — aqui, um filtro rápido de produtos.

Mostrando todos os 64 produtos.

Tamanhos e desabilitado

ToggleGroup — seleção única

Por padrão o grupo aceita uma opção (selectionMode="single"). disallowEmptySelection impede desmarcar a opção ativa. Cada Toggle do grupo precisa de id.

Exibindo em grade.

ToggleGroup — seleção múltipla

variant e size no grupo

Dentro de um ToggleGroup, variant e size definidos no grupo têm prioridade sobre os de cada Toggle.

Quando usar

  • Use Toggle para alternar formatação ou visualização (negrito, favoritar, "só frete grátis").
  • Use ToggleGroup para poucas opções mutuamente exclusivas e visuais (grade/lista, dias da semana).
  • Não use para configurações que salvam na hora (ex.: "receber lembretes") — prefira Switch.
  • Não use para escolher entre muitas opções — prefira Select ou RadioGroup; para disparar ações, Button.

API

Toggle

Aceita todas as props do ToggleButton do React Aria, mais:

Prop

Type

ToggleGroup

Aceita todas as props do ToggleButtonGroup do React Aria, mais:

Prop

Type

On this page