OTP Field
StableCódigo de uso único, um caractere por casa. Composto sobre Base UI OTP Field, que avança o foco ao digitar, volta com Backspace, preenche todas as casas ao colar e marca a primeira casa com autocomplete="one-time-code", para o código de um SMS entrar num toque. Cada casa usa a borda, o anel de foco e o estado inválido do Input, e o OTPFieldSeparator compõe o Separator entre grupos. Use para códigos de verificação, autenticação em dois fatores e PINs curtos de tamanho fixo; para qualquer outro texto use Input.
Instalação
npx up-web-ds add otp-fieldPreview
Basic
With Description
With Separator
Large
Masked
Alphanumeric
Disabled
Invalid
On Complete
All states
Basic
With Description
With Separator
Large
Masked
Alphanumeric
Disabled
Invalid
On Complete
Usage
Props
OTPField
Estende React.ComponentProps< typeof OTPFieldPrimitive.Root >. Aceita também os atributos padrão de um elemento React (272 não listados).
OTPFieldInput
Estende React.ComponentProps< typeof OTPFieldPrimitive.Input >. Aceita também os atributos padrão de um elemento React (305 não listados).
OTPFieldSeparator
Estende React.ComponentProps<typeof Separator>. Aceita também os atributos padrão de um elemento React (275 não listados).
prop obrigatória.
Composition
Uma OTPFieldInput por casa, na ordem do código; o separador fica entre elas, como irmão, e não conta como casa.
Metadata
Notas de acessibilidade
Teclado verificado por teste e em navegador: o campo inteiro custa um único Tab stop (foco roving), digitar avança para a próxima casa, Backspace apaga e volta, as setas andam entre casas, e colar um código preenche todas de uma vez e dispara onValueComplete. Leitor de tela verificado por teste: o campo é um group nomeado pelo label associado por htmlFor ao id, que o Base UI entrega à primeira casa; as demais casas recebem aria-label com a posição (Dígito 3 de 6), a descrição do grupo por aria-describedby diz para onde o código foi, e aria-invalid em cada casa carrega o estado de erro que o texto abaixo explica. Um campo desabilitado recusa entrada e sai da sequência de tabulação. Touch verificado em navegador com emulação de toque em viewport de 375px: cada casa mede 36x36 (40x40 no tamanho lg), seis casas cabem sem rolagem, e o toque numa casa a foca. Reduced motion verificado com prefers-reduced-motion: reduce — a transição de cor e de anel do foco não é movimento e permanece; não existe deslocamento para desligar. Varredura axe WCAG 2.2 AA limpa em light e dark.
Classificação
- Layer
- Primitive
- Domínio
- Domain-free (compartilhado)
- Categoria
- input
- Status
- Stable
Origem e distribuição
- Fonte
- coss registry / otp-field
- Licença
- MIT
- Distribuição
- Interna
Acessibilidade
- Teclado: revisado
- Leitor de tela: revisado
- Touch: revisado
- Reduced motion: revisado
Dependências
- Pacotes
- @base-ui/react
- Ícones
- Nenhum
- Construído sobre
- Separator
- Usado por
- Nenhum ainda