Pular para o conteúdo
// visualizar em
salvo em todas as páginas

Toggle

Botão de alternância, que fica pressionado, como o Negrito num editor. O ToggleGroup junta vários, com um ou muitos pressionados e navegação pelas setas.

Feito com Base UIPadrão WAI-ARIA Button (aria-pressed)Componente clienteCódigo ↗
minimal · light · #3fa34d
defaultPressed
disabled

Instalação

Configure o Camaleo uma vez (Instalação) e importe o que precisar.

import { Toggle, ToggleGroup } from "@camaleo/react";

Anatomia

Um Toggle é um botão com aria-pressed. O ToggleGroup junta vários e move o foco entre eles com as setas.

BIU
[data-slot="toggle-group"][data-slot="toggle"][data-pressed]ícone ou rótulo (children)

Exemplos

minimal · light · #3fa34d

Com rótulo

Um ícone e um rótulo curto. O rótulo dá nome à opção, não ao estado.

As notificações estão ativas.

Controlado

Clique. Com pressed e onPressedChange, o resto da tela reage ao estado.

Um entre vários

O ToggleGroup deixa só um pressionado, como o alinhamento do texto. As setas passam de uma opção para outra.

Vários ao mesmo tempo

Com multiple, qualquer quantidade fica pressionada: negrito, itálico e sublinhado juntos.

Só ícone, com tooltip

O aria-label é o próprio texto do tooltip: o leitor de tela fala o mesmo nome que quem enxerga vê ao passar o mouse.

Desativado

Mantém o estado pressionado visível, para a pessoa ainda ver o que está ligado.

Em contexto

Notas da versão

Negrito e alinhamento ficam pressionados enquanto o cursor está no texto formatado.

Barra do editorToggleGroup · Toggle · Separator

Projetos

Atlas
Borealis
Cirrus
Troca de visualizaçãoToggleGroup · Card

Atlas

Atualizado há 2 horas

FavoritoToggle · Card

Boas práticas

FaçaMantenha o rótulo igual.

O visual pressionado mostra o estado; o leitor de tela anuncia pelo aria-pressed.

EviteToggle para uma ação única.

"Enviar" acontece uma vez. Use um Button.

FaçaAgrupe opções relacionadas.

O ToggleGroup dá a elas uma só parada de Tab e navegação pelas setas.

EviteToggles soltos que deveriam ser exclusivos.

Dois alinhamentos pressionados juntos é um estado que não faz sentido.

Props

PropriedadeTipoPadrãoDescrição
pressedboolean—Se está pressionado (controlado).
defaultPressedbooleanfalseSe começa pressionado (não controlado).
disabledbooleanfalseDesativa o toggle.
onPressedChangefunction—Chamada quando o estado muda.
valuestring—Identifica o toggle dentro de um ToggleGroup.
renderReactElement | (props, state) => ReactElement—Troca o elemento renderizado.
Aceita também todas as props da primitiva por baixo e os atributos nativos.

O ToggleGroup recebe value, defaultValue e onValueChange (listas com o value dos toggles), multiple e orientation.

Styling hooks

Atributos

data-slot"toggle" · "toggle-group"
data-pressedpresente quando pressionado
data-disabledpresente quando desativado
aria-pressed"true" · "false"

Tokens que ele lê

Cor

--cml-border--cml-button-disabled-shadow--cml-button-outline-bg--cml-button-outline-border--cml-button-outline-shadow--cml-fg--cml-fg-secondary--cml-focus-offset--cml-focus-ring--cml-focus-width--cml-shadow-control-active--cml-surface--cml-surface-raised

Forma e tamanho

--cml-border-width--cml-control-height--cml-control-padding--cml-gap--cml-radius-control--cml-radius-control-sm

Tipografia e movimento

--cml-duration-fast--cml-ease-standard--cml-font-control--cml-font-size-control--cml-font-size-control-sm--cml-font-weight-control--cml-letter-spacing-control--cml-press-translate--cml-text-transform-control

Só deste componente

--cml-disabled-opacity--cml-toggle-pressed-bg--cml-toggle-pressed-fg--cml-toggle-pressed-shadow

Acessibilidade

SpacePressiona ou solta o toggle.
EnterPressiona ou solta o toggle.
SetasNum ToggleGroup, levam o foco ao toggle anterior ou ao próximo.
Home / EndNum ToggleGroup, levam o foco ao primeiro ou ao último.

Relacionados

Esta página foi útil? · Editar esta página no GitHub