Home/Componentes/Toggle & Toggle Group

Toggle & Toggle Group

Interactive

Botões de alternância para estados binários e seleção de opções.

Preview
Visualização dos componentes Toggle e Toggle Group

Toggle Simples

Toggle Group

Instalação

Via CLI (Recomendado)

1. Inicializar (primeira vez)
2. Adicionar componente

Os comandos init e setup fazem o pré-setup (necessário apenas uma vez). Se você rodar add sem isso, a CLI executa o setup automaticamente.

Via NPM

Instalar pacote completo

Instala todos os componentes como dependência do projeto.

Instalação

Via CLI (Recomendado)

1. Inicializar (primeira vez)
2. Adicionar componente

Os comandos init e setup fazem o pré-setup (necessário apenas uma vez). Se você rodar add sem isso, a CLI executa o setup automaticamente.

Via NPM

Instalar pacote completo

Instala todos os componentes como dependência do projeto.

Uso Básico

Toggle
Toggle Group
Exemplos
Diferentes casos de uso dos componentes Toggle e Toggle Group

Toggle Básico

Estado: Normal

Toggle com Ícones

Variantes do Toggle

Default

Outline

Tamanhos do Toggle

Small

Default

Large

ToggleGroup - Seleção Única

Alinhamento selecionado: left

ToggleGroup - Seleção Múltipla

Formatação ativa: Nenhuma

ToggleGroup - Variante Outline

Estados Desabilitados

Toggle Desabilitado

ToggleGroup Desabilitado

Propriedades - Toggle
Props disponíveis para o componente Toggle
PropTipoPadrãoDescrição
variant"default" | "outline""default"Estilo visual do toggle
size"default" | "sm" | "lg""default"Tamanho do toggle
pressedboolean-Estado pressionado (controlado)
defaultPressedbooleanfalseEstado pressionado inicial (não controlado)
onPressedChange(pressed: boolean) => void-Callback quando o estado muda
disabledbooleanfalseDesabilita o toggle
classNamestring-Classes CSS customizadas

Nota: Baseado em Radix UI Toggle. O componente exporta também toggleVariants para uso customizado com cva.

Propriedades - ToggleGroup
Props disponíveis para o componente ToggleGroup
PropTipoPadrãoDescrição
type"single" | "multiple"-Modo de seleção (obrigatório)
valuestring | string[]-Valor(es) selecionado(s) (controlado)
defaultValuestring | string[]-Valor(es) inicial(is) (não controlado)
onValueChange(value) => void-Callback quando a seleção muda
variant"default" | "outline""default"Estilo visual dos itens
size"default" | "sm" | "lg""default"Tamanho dos itens
disabledbooleanfalseDesabilita todos os itens
classNamestring-Classes CSS customizadas
Propriedades - ToggleGroupItem
Props disponíveis para o componente ToggleGroupItem
PropTipoPadrãoDescrição
valuestring-Valor único do item (obrigatório)
variant"default" | "outline"Herda do grupoSobrescreve variante do grupo
size"default" | "sm" | "lg"Herda do grupoSobrescreve tamanho do grupo
disabledbooleanfalseDesabilita apenas este item
classNamestring-Classes CSS customizadas

Nota: Baseado em Radix UI Toggle Group. Use dentro de um componente ToggleGroup.

Diretrizes de Uso

✅ Quando usar

  • Para opções de formatação de texto (negrito, itálico, etc.)
  • Configurações de visualização (grid/lista)
  • Alinhamento de conteúdo
  • Filtros que podem ser ativados/desativados
  • Estados binários visualmente evidentes

❌ Quando evitar

  • Para ações que não são estados (use Button)
  • Em formulários complexos (use Checkbox ou Switch)
  • Para muitas opções (use Select ou RadioGroup)
  • Quando o estado não é imediatamente visível

💡 Dicas

  • Sempre forneça aria-label descritivo para ícones
  • Use ToggleGroup para opções relacionadas
  • type="single" quando apenas uma opção pode estar ativa
  • type="multiple" quando várias opções podem estar ativas simultaneamente
  • Prefira ícones reconhecíveis do lucide-react
  • Mantenha o estado pressionado visualmente claro
Acessibilidade
  • Sempre use aria-label: Especialmente importante quando o toggle contém apenas ícones
  • Estado pressionado: Automaticamente exposto via aria-pressed
  • Navegação por teclado: Space ou Enter para ativar/desativar
  • ToggleGroup: Suporta navegação com setas (←→) entre itens
  • Foco visível: Indicador de foco para navegação por teclado
  • Estados disabled: Respeitam semântica HTML e são anunciados por leitores de tela
  • Radix UI: Baseado em componentes primitivos com suporte completo a ARIA