Switch
Interruptor liga/desliga para configurações que têm efeito imediato.
'use client';
import { Switch } from '@/components/ui/switch';
export default function SwitchDemo() {
return <Switch defaultSelected>Loja aberta para pedidos</Switch>;
}Instalação
npx shadcn@latest add @lenstech/switchUso
import { Switch } from "@/components/ui/switch"<Switch defaultSelected>Receber avisos por WhatsApp</Switch>isSelected, não checked
O estado é controlado com isSelected (ou defaultSelected) e onChange recebe um boolean:
onChange={setAtivo}.
Exemplos
Com descrição
Avisamos quando um novo agendamento chegar.
Resumo semanal de atendimentos toda segunda-feira.
Pacientes podem marcar consultas pelo site.
'use client';
import { Switch } from '@/components/ui/switch';
export default function SwitchDescription() {
return (
<div className="flex w-full max-w-md flex-col gap-5 rounded-lg border p-4">
<Switch defaultSelected description="Avisamos quando um novo agendamento chegar.">
Notificações por WhatsApp
</Switch>
<Switch description="Resumo semanal de atendimentos toda segunda-feira.">Relatório por e-mail</Switch>
<Switch defaultSelected description="Pacientes podem marcar consultas pelo site.">
Agendamento online
</Switch>
</div>
);
}Desabilitado
'use client';
import { Switch } from '@/components/ui/switch';
export default function SwitchDisabled() {
return (
<div className="flex flex-col gap-4">
<Switch isDisabled>Integração com iFood (em breve)</Switch>
<Switch isDisabled defaultSelected>
Certificado SSL (sempre ativo)
</Switch>
</div>
);
}Controlado
Clientes podem fazer pedidos agora.
'use client';
import { useState } from 'react';
import { Switch } from '@/components/ui/switch';
export default function SwitchControlled() {
const [aberta, setAberta] = useState(true);
return (
<div className="flex flex-col items-start gap-3">
<Switch isSelected={aberta} onChange={setAberta}>
Aceitar pedidos pelo site
</Switch>
<p className="text-sm text-muted-foreground">
{aberta ? 'Clientes podem fazer pedidos agora.' : 'O site mostra “Fechado no momento”.'}
</p>
</div>
);
}Quando usar
- Use para preferências que valem na hora: notificações, loja aberta/fechada, agendamento online.
- Não use em formulários que só valem após clicar em "Enviar" (aceite de termos, LGPD) — use
Checkbox. - Não use para escolher entre mais de duas opções — use
Radio Group.
API
Switch
Aceita todas as props do Switch do React Aria, mais:
Prop
Type
Composição
SwitchField, SwitchButton e SwitchIndicator são as peças usadas pelo Switch, para layouts próprios.