Password Hint
Lista reativa de requisitos de senha com validação em tempo real.
O mk-password-hint exibe uma lista reativa de requisitos de senha e fornece feedback imediato enquanto o usuário digita, sem precisar submeter o formulário. Os consumidores passam validators — funções que recebem o valor atual — e o componente indica visualmente quais requisitos foram satisfeitos, reduzindo tentativas falhas e a frustração de descobrir erros somente após o envio. Emite mkPasswordValid quando todos passam.
Quando usar
Use este componente para comunicar as regras de complexidade da senha ao usuário de forma progressiva e não bloqueante.
Use quando:- O usuário estiver criando ou alterando uma senha
- A senha tiver regras de complexidade que precisam ser comunicadas
- O campo for apenas para autenticação (login) — nesse caso, apenas exiba erro após submissão
- As regras forem muito simples (apenas tamanho mínimo) — um texto auxiliar no campo já basta
Anatomia
| # | Parte | Obrigatório? | Função |
|---|---|---|---|
| 1 | Ícone de estado | Sim | Muda conforme o estado: ícone de informação (padrão) ou check (sucesso). |
| 2 | Regras de senha | Sim | Lista dos critérios exigidos. Cada regra atendida é visualmente marcada individualmente. |
Padrão
import { useState } from 'react';
import { MkInput, MkPasswordHint } from '@db1/makuco-ui-react';
import { MkValidators } from '@db1/makuco-ui-core';
const validators = [
MkValidators.minChar(8),
MkValidators.specialChar(),
MkValidators.maxChar(32),
];
function App() {
const [secret, setSecret] = useState('');
return (
<>
<MkInput
type="password"
label="Senha"
value={secret}
onMkInput={(e) => setSecret(e.detail)}
/>
<MkPasswordHint
secret={secret}
validators={validators}
onMkPasswordValid={() => console.log('Senha válida!')}
/>
</>
);
}<mk-input
type="password"
label="Senha"
[value]="secret"
(mkInput)="secret = $event.detail"
></mk-input>
<mk-password-hint
[secret]="secret"
[validators]="validators"
(mkPasswordValid)="onValid()"
></mk-password-hint>import { MkValidators } from '@db1/makuco-ui-core';
validators = [
MkValidators.minChar(8),
MkValidators.specialChar(),
MkValidators.maxChar(32),
];Validadores built-in
O utilitário MkValidators fornece validadores prontos para os casos mais comuns.
| Validador | Assinatura | Descrição |
|---|---|---|
MkValidators.minChar | (min: number, locale?) => MkPasswordValidator | Mínimo de n caracteres. |
MkValidators.maxChar | (max: number, locale?) => MkPasswordValidator | Máximo de n caracteres. |
MkValidators.specialChar | (locale?) => MkPasswordValidator | Ao menos um caractere especial (não alfanumérico). |
MkValidators.onlyNumbers | (locale?) => MkPasswordValidator | Apenas dígitos numéricos. |
MkValidators.onlyLetters | (locale?) => MkPasswordValidator | Apenas letras (sem números ou especiais). |
Validador customizado
Qualquer objeto que implemente a interface MkPasswordValidator é aceito:
import type { MkPasswordValidator } from '@db1/makuco-ui-core';
const noSpaces: MkPasswordValidator = {
hint: 'Sem espaços',
validate: (value) => !value.includes(' '),
};
<MkPasswordHint secret={secret} validators={[noSpaces]} />import type { MkPasswordValidator } from '@db1/makuco-ui-core';
noSpaces: MkPasswordValidator = {
hint: 'Sem espaços',
validate: (value) => !value.includes(' '),
};Variantes / Estados
| Estado | Quando aparece | O que muda visualmente |
|---|---|---|
| Padrão | Usuário ainda não atendeu todos os critérios | Ícone de informação; regras em cinza ou parcialmente marcadas |
| Sucesso | Todos os critérios foram atendidos | Ícone de check verde; todas as regras marcadas como concluídas |
Comportamento
O componente é exibido abaixo ou ao lado do campo de senha e atualiza em tempo real a cada caractere digitado. Conforme o usuário digita, as regras não atendidas são marcadas individualmente até que todas estejam satisfeitas e o estado mude para sucesso.
No estado padrão, o ícone de informação é exibido e as regras aparecem em cinza ou parcialmente marcadas. Quando todos os critérios são atendidos, o ícone muda para check e todas as regras são marcadas como concluídas, indicando que a senha é válida.
Composição
Sempre utilize o mk-password-hint junto ao campo mk-input configurado como senha (type="password"). O verificador não substitui a validação no envio do formulário — use os dois em conjunto para garantir tanto o feedback em tempo real quanto a validação final antes do envio.
Props
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
secret | string | "" | Senha sendo validada. O componente revalida a cada mudança. |
validators | MkPasswordValidator[] | [] | Lista de validadores a renderizar e executar. |
Eventos
| Evento | Payload | Descrição |
|---|---|---|
mkPasswordValid | void | Emitido quando todos os validators retornam true para o secret atual. |
Acessibilidade
- A lista de requisitos usa
role="list"earia-live="polite"— mudanças de estado são anunciadas por leitores de tela sem interromper o fluxo do usuário. - Os ícones têm
aria-hidden="true"para que apenas o texto do requisito seja lido. - Anúncio de progresso: as mudanças de estado das regras devem ser anunciadas para leitores de tela. Use
aria-live="polite"na região do verificador para que o leitor anuncie quando critérios forem atendidos sem interromper a digitação do usuário.