Toggle
Botão de dois estados (ligado/desligado), como negrito num editor ou favoritar. Variantes ghost e outline; tamanhos sm, default e lg.
Exemplos
Interaja com o componente e copie o código de cada exemplo.
Básico
Outline e com texto
Tamanhos e desabilitado
import { Toggle } from "@t2-educacao/midas";Uso
import { TextB } from "@t2-educacao/midas/icons";
<Toggle aria-label="Negrito">
<TextB />
</Toggle>Props
Aceita as props do Toggle do Radix mais:
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
variant | "ghost" | "outline" | "ghost" | Estilo visual |
size | "sm" | "default" | "lg" | "default" | 28, 32 ou 36px de altura |
pressed | boolean | Estado controlado | |
defaultPressed | boolean | false | Estado inicial (não controlado) |
onPressedChange | (pressed: boolean) => void | Chamado ao alternar | |
disabled | boolean | false | Desabilita |
Variantes
| Variante | Quando usar |
|---|---|
ghost | Barras de ferramentas, onde vários toggles ficam lado a lado |
outline | Toggle isolado que precisa parecer clicável |
Exemplos
Com texto
import { Star } from "@t2-educacao/midas/icons";
<Toggle variant="outline">
<Star /> Favorito
</Toggle>Controlado
const [favorito, setFavorito] = useState(false);
<Toggle pressed={favorito} onPressedChange={setFavorito} aria-label="Favoritar curso">
<Star weight={favorito ? "fill" : "regular"} />
</Toggle>Para vários toggles relacionados, use ToggleGroup.
Acessibilidade
- Usa
aria-pressedpara anunciar o estado. - Toggle só com ícone exige
aria-label. - O rótulo descreve a ação, não o estado ("Negrito", não "Negrito ativado").
Não faça
- Usar
Togglepara ações que não têm estado (ex.: "Enviar"): use Button. - Usar
Toggleem formulários de configuração: prefiraSwitchouCheckbox.
Toast
Mensagem curta e temporária no canto da tela. Coloque <Toaster /> uma vez no layout e chame toast() de qualquer lugar. Tipos default, success, info, warning, error e promise; título, descrição, ação e botão de fechar.
ToggleGroup
Conjunto de toggles relacionados. Modo single (escolha única, como alinhamento) ou multiple (vários ligados, como negrito e itálico); encostados ou com espaçamento; horizontal ou vertical.