Explore os comportamentos antes de definir a interface.
Guia rápido para designers
Sempre avalie o contexto da aplicação, mesmo com a orientação tendo um padrão. Design de interação documenta a intenção. O funcionamento deve ser verificado na implementação.
Quando usar
Use para informar uma senha, permitindo colar e usar gerenciadores de senhas.
O que desenhar
Mostre rótulo persistente, instruções, foco, erro e conteúdo oculto ou visível. O botão indica a próxima ação: Exibir senha ou Ocultar senha.
Como se comporta
Exibir ou ocultar preserva o valor e o foco no botão, sem enviar o formulário. Não inclua a senha em mensagens ou anúncios.
O que documentar no Figma
Registre regras, mensagens, finalidade de acesso ou criação de senha e o nome do botão em cada estado.
Como revisar
Confira se o objetivo e os estados são claros em telas pequenas e grandes, com ampliação. Verifique os comportamentos documentados na implementação, incluindo teclado e leitor de telas quando aplicáveis.
Orientações completas
Design de Interação
Questionamentos que devem ser feitos ao projetar componentes do tipo Input "password".
Avalie cada orientação conforme o contexto de uso do componente.
Projetando para a "não interação"
- O rótulo permanece visível e explica a finalidade do campo?
- Instruções, obrigatoriedade e limites estão disponíveis antes da entrada?
- Estados vazio, preenchido, inválido, desabilitado e somente leitura são distinguíveis sem depender apenas de cor?
Projetando para uso com mouse
- Clicar no campo ou no rótulo associado posiciona o foco para digitar?
- O foco e os controles associados têm feedback visual perceptível?
Projetando para uso com gestos
- A área de toque permite selecionar o campo e seus controles sem acionamentos acidentais?
- O teclado virtual e a ampliação permitem continuar vendo e editando o campo?
Projetando para uso com teclado
TabeShift + Tabpercorrem os controles na ordem da interface?- É possível editar e selecionar texto com os comandos nativos, sem prender o foco?
Projetando para uso com leitor de telas
- Nome, tipo, obrigatoriedade, instruções e erros são apresentados de forma compreensível?
- O rótulo está associado ao campo e permanece disponível depois de preencher?
Projetando o botão de visibilidade
- O botão "Exibir senha" é acessível por mouse, toque, teclado e leitor de telas?
- Depois de exibir, o texto muda para "Ocultar senha", indicando a próxima ação?
- Alternar a visibilidade preserva o valor e mantém o foco no botão, sem enviar o formulário?
Métodos de Interação
A senha começa oculta e o botão apresenta o texto "Exibir senha".
Interação com mouse
- Clicar no campo ou no rótulo associado coloca o foco no campo.
- Selecionar, editar, copiar e colar segue o comportamento nativo do campo.
Interação com teclado
Tabmove o foco para o campo;Shift + Tabretorna ao controle anterior.- Digitação insere texto;
setas,Home,Ende comandos de seleção e edição seguem a plataforma. Entersegue a ação de envio definida para o formulário; o campo não cria uma nova linha.
Interação com gestos
- Tocar no campo ou no rótulo permite editar com o teclado virtual.
- A seleção e edição de texto seguem os gestos disponíveis na plataforma.
Interação com teclado (ou gestos) + leitor de telas
- Ao navegar até o campo, o leitor apresenta seu rótulo e tipo, além de estados e instruções associados.
- Erros são associados ao campo e explicam como corrigir a informação; o valor digitado é preservado.
Exibir e ocultar a senha
- Com a senha oculta, clicar, tocar ou pressionar
EnterouEspaçono botão "Exibir senha" revela o conteúdo e altera o texto para "Ocultar senha". - Com a senha visível, acionar "Ocultar senha" volta a mascarar o conteúdo e altera o texto para "Exibir senha".
- O botão é do tipo button, não envia o formulário e mantém o foco após a ativação. O valor do campo é preservado.
- O nome acessível acompanha o texto da próxima ação. Nesse padrão de rótulo variável, usar um botão de ação sem aria-pressed. O leitor de telas não deve receber anúncios extras contendo a senha.
Gherkin
Metodologia BDD (Behavior-Driven Development ou Desenvolvimento Orientado ao Comportamento) com foco em 3 pilares: Histórias de Usuário, Critérios de Aceite e Sintaxes Gherkin (Dado (Given), Quando (When), Então (Then)).
Cenário: Considerando que estou em uma página que contém Input "password"
Navegação por teclado
- QUANDO uso a tecla
Tabpara mover o foco para o campo - O foco que VEJO é fortemente indicado visualmente
- ENTÃO, quando digito, seleciono ou edito o conteúdo com os comandos nativos
- VEJO que o valor do campo é atualizado e os caracteres permanecem ocultos por padrão
- E, quando uso
TabouShift + Tab, VEJO que o foco segue a ordem da página, sem ficar preso no campo
Leitor de telas para desktop
-
QUANDO uso um leitor de tela no computador (NVDA, JAWS, VoiceOver) e uso a tecla
Tabpara mover o foco para o campo, acontece o seguinte:- OUÇO o rótulo e a finalidade do campo.
- OUÇO que o componente é um campo de senha.
- OUÇO a obrigatoriedade, as instruções e os erros associados, quando existirem.
- OUÇO que a entrada está protegida enquanto a senha estiver oculta, sem anúncios extras do conteúdo da senha.
- ENTÃO, quando digito ou edito o conteúdo com os comandos nativos
- OUÇO ou percebo que posso editar o campo conforme o comportamento de entrada protegida da plataforma, sem expor a senha em mensagens de estado.
Leitor de telas para dispositivos móveis
-
QUANDO uso um leitor de tela no celular (Talkback, VoiceOver) e deslizo o dedo para focar no campo, acontece o seguinte:
- OUÇO o rótulo e a finalidade do campo.
- OUÇO que o componente é um campo de senha.
- OUÇO a obrigatoriedade, as instruções e os erros associados, quando existirem.
- OUÇO que a entrada está protegida enquanto a senha estiver oculta, sem anúncios extras do conteúdo da senha.
- ENTÃO, quando eu toco duas vezes ou uso o gesto adequado para ativar o campo e editar seu conteúdo
- OUÇO ou percebo que posso editar o campo conforme o comportamento de entrada protegida da plataforma, sem expor a senha em mensagens de estado.
Validação da entrada
- QUANDO uma entrada é rejeitada por uma regra de validação informada
- VEJO uma mensagem associada ao campo que explica como corrigir a informação
- E, quando navego até o campo com leitor de telas, OUÇO a indicação de erro e a orientação associada
- ENTÃO, quando volto a editar, VEJO que o valor foi preservado para correção
Exibir e ocultar a senha por teclado
- QUANDO uso
Tabpara mover o foco para o botão "Exibir senha", com a senha oculta - O foco que VEJO é fortemente indicado visualmente
- ENTÃO, quando uso
EnterouBarra de espaçopara acionar o botão - VEJO a senha em texto visível e o botão passa a apresentar "Ocultar senha"
- E VEJO que o valor foi preservado e o foco permanece no botão, sem enviar o formulário
- ENTÃO, quando uso
EnterouBarra de espaçonovamente - VEJO que a senha volta a ficar oculta e o botão passa a apresentar "Exibir senha", preservando o valor e o foco, sem enviar o formulário
Visibilidade da senha com leitor de telas para desktop
- QUANDO uso
Tabpara focar no botão de visibilidade, com a senha oculta - OUÇO que o componente é um botão com o nome "Exibir senha"
- ENTÃO, quando uso
EnterouBarra de espaçopara ativar o botão - OUÇO ou percebo que o nome do botão mudou para "Ocultar senha" e que o foco permanece no botão
- ENTÃO, quando ativo o botão novamente
- OUÇO ou percebo que seu nome voltou a "Exibir senha" e o foco permanece no botão
- O valor da senha é preservado e o formulário não é enviado; a senha não é incluída em anúncios extras ou mensagens de estado
Visibilidade da senha com leitor de telas para dispositivos móveis
- QUANDO deslizo o dedo para focar no botão de visibilidade, com a senha oculta
- OUÇO que o componente é um botão com o nome "Exibir senha"
- ENTÃO, quando toco duas vezes ou uso o gesto adequado para ativar o botão
- OUÇO ou percebo que o nome do botão mudou para "Ocultar senha" e que o foco permanece no botão
- ENTÃO, quando ativo o botão novamente
- OUÇO ou percebo que seu nome voltou a "Exibir senha" e o foco permanece no botão
- O valor da senha é preservado e o formulário não é enviado; a senha não é incluída em anúncios extras ou mensagens de estado
Pontos de atenção
- Usar um rótulo persistente associado ao input. Placeholder é uma dica complementar e não substitui o rótulo.
- Associar instruções e erros ao campo, por exemplo com aria-describedby, e marcar aria-invalid quando houver erro.
- Informar a obrigatoriedade e usar required quando necessário. Não comunicar erros apenas por cor.
- Manter foco visível e garantir contraste e área de interação adequados.
- Permitir colar e usar gerenciadores de senhas. Usar autocomplete="current-password" no acesso e "new-password" na criação de senha. Ocultar caracteres não substitui a proteção dos dados.
Botão textual e ícones opcionais
- O padrão destas regras usa o texto "Exibir senha" enquanto o conteúdo está oculto e "Ocultar senha" enquanto está visível.
- É possível usar o ícone de olho aberto ou fechado: olho aberto para exibir o conteúdo e olho fechado para ocultar o conteúdo. O ícone representa a ação disponível, acompanhando o texto do botão.
- Preferir Material Icons: visibility para exibir e visibility_off para ocultar. Se o ícone acompanhar o texto, ocultá-lo das tecnologias assistivas com aria-hidden="true".
- Se usar apenas o ícone, fornecer o nome acessível "Exibir senha" ou "Ocultar senha", atualizado conforme a ação disponível.
- Não bloquear colagem nem preenchimento automático. Não registrar ou incluir a senha em mensagens de estado.
Referências
Documentação do campo
Design System
- GOV.UK — Password input open_in_new (link externo, abre em uma nova aba) — Componente específico com botão textual para exibir e ocultar a senha.
- Carbon — Text input: Password input open_in_new (link externo, abre em uma nova aba) — Variação de senha com controle de visibilidade por ícone.
- Bootstrap — Form controls open_in_new (link externo, abre em uma nova aba) — Campo de senha e instruções associadas; este exemplo não inclui botão de visibilidade.