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

Switch

Interruptor que liga ou desliga um ajuste, e o efeito vale na hora. Para escolhas que esperam um botão Salvar, use um Checkbox.

Feito com Base UIPadrão WAI-ARIA SwitchComponente clienteCódigo ↗
minimal · light · #3fa34d
defaultChecked
disabled

Instalação

Configure o Camaleo uma vez (Instalação) e importe o que precisar. Envolva o switch num Label que dê nome ao ajuste.

import { Switch, Label } from "@camaleo/react";

Anatomia

Um trilho com um botão que desliza até o fim quando está ligado. As duas partes têm um data-slot que você pode usar no CSS.

thumbSalvar rascunhos automaticamente
[data-slot="switch"][data-slot="switch-thumb"]texto do [data-slot="label"]

Exemplos

Cada exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a cor escolhidos na barra acima.

minimal · light · #3fa34d

Resposta automática desligada.

Vale na hora

Clique. O switch faz efeito assim que muda, então confirme o que mudou numa linha de status em vez de um botão Salvar.

Ajuda a encontrar falhas. Nunca coletamos o que você digita.

Com descrição

Explique o que o ajuste faz embaixo do rótulo e ligue com aria-describedby, para o nome continuar curto.

Avisar por e-mail quando

Lista de ajustes

Switches relacionados ficam num Fieldset com uma legenda que funciona como o começo de cada rótulo.

Só a sua equipe vê seu perfil.

Salvando no servidor

Clique. Quando a mudança demora um pouco, mantenha o foco no switch com readOnly e anuncie "Salvando…" e o resultado.

Ajustes dependentes

Desligue o primeiro. Os ajustes filhos ficam desativados, não escondidos, para a pessoa ver o que vai recuperar.

Disponível no plano Empresa.

Desativado, com o motivo

Diga por que não dá para ligar e ligue o motivo com aria-describedby.

Em contexto

Switches moram nas telas de ajustes. São pedaços inteiros de interface para copiar, no estilo que você escolheu.

Notificações

Enviadas para o app da loja no seu celular.

Assim que o cliente paga.

Quando um produto fica com menos de 5 unidades.

Uma vez por dia, às 9h.

Ajustes de notificaçãoCard · Switch · Separator

Labs

Teste recursos antes do lançamento. As mudanças valem na hora.

Recursos em testeCard · Switch · Badge

Empresa

R$ 119 por pessoa / mês, cobrado anualmente

Cobrança anualCard · Switch · Badge · Button

Boas práticas

FaçaSwitch para uma mudança que vale agora.

O modo escuro liga assim que o switch se move.

EviteUm switch que espera o Salvar.

Parece feito, mas não está. Num formulário que se envia, use um Checkbox.

FaçaDê nome ao ajuste.

O próprio switch mostra ligado ou desligado; o leitor de tela anuncia pelo aria-checked.

EviteUm rótulo que diz o estado.

"Ativado" muda a cada clique e nunca diz o que está ativado.

Props

PropriedadeTipoPadrãoDescrição
checkedboolean—Se o switch está ligado (controlado). Para não controlar, use defaultChecked.
defaultCheckedbooleanfalseSe o switch começa ligado (não controlado).
disabledbooleanfalseIgnora a interação e tira o switch da ordem de tabulação.
namestring—Nome do campo no envio do formulário.
onCheckedChange(checked: boolean, details) => void—Chamada quando o switch liga ou desliga.
readOnlybooleanfalseImpede mudar o valor, mas mantém o switch focável e legível.
requiredbooleanfalseSe o switch precisa estar ligado para enviar o formulário.
valuestring—O valor enviado no formulário quando está ligado.

Os atributos nativos passam direto para o trilho, um <span role="switch"> com um input escondido para formulários.

Styling hooks

Mude o visual sem copiar o componente: use os atributos ou defina os tokens num elemento pai, num estilo ou no próprio switch.

Atributos

data-slot"switch" · "switch-thumb"
data-checkedpresente quando ligado
data-uncheckedpresente quando desligado
data-disabledpresente quando desativado
data-readonlypresente quando somente leitura

Tokens que ele lê

Cor

--cml-accent--cml-border-control--cml-field-bg--cml-field-shadow--cml-focus-offset--cml-focus-ring--cml-focus-width

Forma e tamanho

--cml-font-size-field--cml-gap--cml-radius-pill

Tipografia e movimento

--cml-duration-base--cml-ease-standard--cml-font-body

Só deste componente

--cml-check-on-image--cml-corner-shape--cml-disabled-opacity--cml-switch-border--cml-switch-height--cml-switch-knob--cml-switch-knob-bg--cml-switch-knob-on--cml-switch-knob-on-bg--cml-switch-knob-on-shadow--cml-switch-knob-shadow--cml-switch-on--cml-switch-on-shadow--cml-switch-pad--cml-switch-track--cml-switch-travel--cml-switch-width

Acessibilidade

SpaceLiga ou desliga o switch com foco.
EnterLiga ou desliga o switch com foco.
TabVai para o próximo switch; cada um é uma parada de tabulação.

Relacionados

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