Pular para o conteúdo

Switch

Controle booleano para preferência com efeito imediato.

Instalação

Instale o Switch da sua stack e rode o comando individual ITpS em seguida. O comando itps add switch é theme-only: ele valida o slug e confirma que o contrato visual vem do tema ITpS, das classes copy-first e dos snippets desta página.

terminal · React/Next

pnpm dlx shadcn@latest add switch
pnpm dlx github:ITPS/sinapse-ui-cli add switch

terminal · Vue3/Nuxt4

pnpm dlx shadcn-vue@latest add switch
pnpm dlx github:ITPS/sinapse-ui-cli add switch

O comando individual adapta só este componente; não instala o catálogo inteiro.

Uso

Em React/Next com shadcn/ui e Vue3/Nuxt4 com shadcn-vue, use o Switch instalado pela stack. O tema ITpS vem dos tokens aplicados pela CLI, então o exemplo deve continuar próximo da documentação oficial: componente, id e label associado.

Use itps-switch quando precisar do contrato copy-first em HTML ou wrappers finos. O input continua sendo type="checkbox" com role="switch"; track e thumb são apenas a camada visual.

Exemplos

Estados

EstadoReact/Next e Vue3/Nuxt4HTML
Ativado inicialdefaultChecked ou valor controladochecked no input
Desabilitadodisableddisabled no input
Controladochecked + onCheckedChangesincronize o atributo/estado no input

Use Switch para preferências de efeito imediato. Quando a escolha depende de submit ou faz parte de seleção múltipla, use Checkbox.

Preferências

Use em listas curtas de configurações independentes. Cada switch deve ter um name próprio quando enviado em formulário.

Quando usar

Use SwitchUse Checkbox
Ativar notificações, sincronização ou modo compacto.Aceitar termos, selecionar itens ou marcar opções para salvar depois.
A mudança acontece assim que o usuário alterna.A mudança depende de envio, revisão ou confirmação.
A opção é independente das demais.O usuário pode escolher múltiplas opções em um grupo.

Evite usar Switch para ações destrutivas, confirmações legais ou decisões que precisam de botão de envio.

API copy-first

Classe/atributoUso
itps-switchLabel clicável que envolve controle e texto.
itps-switch__controlÁrea visual que contém input, track e thumb.
itps-switch__inputCheckbox nativo que mantém foco, teclado e formulário.
itps-switch__trackTrilha visual do switch.
itps-switch__thumbBotão visual que se move entre estados.
itps-switch__labelTexto visível da preferência.
role="switch"Comunica semântica de liga/desliga.
checkedEstado ativado inicial do input nativo.
disabledBloqueia interação.
nameValor enviado quando o switch participa de formulário.

Acessibilidade

Mantenha o <input type="checkbox" role="switch"> no DOM para preservar foco, teclado e envio em formulário. O label deve envolver o controle e o texto para aumentar a área clicável. Use Space para alternar, disabled para bloquear interação e texto claro para indicar a preferência afetada.