Number Field
StableCampo para um número exato, com botões de diminuir e aumentar nas pontas. Composto sobre Base UI Number Field, que interpreta o que foi digitado na localidade, respeita min, max e step e formata por Intl.NumberFormat (moeda, porcentagem). A caixa usa a mesma altura, borda, anel de foco e estado inválido do Input, e o NumberFieldScrubArea compõe o Label como rótulo que também ajusta o valor ao ser arrastado. Use quando o valor é contado ou medido e a precisão importa; para texto livre use Input, e para escolher uma posição aproximada num intervalo use Slider.
Instalação
npx up-web-ds add number-fieldGera minus, plus para a biblioteca de ícones do projeto (components.json → iconLibrary).
Preview
Basic
Sizes
Scrub Area
Bounds
Currency
Percentage
Disabled
Invalid
With Input
Controlled
5 × R$ 49,90 = R$ 249,50 por mês
All states
Basic
Sizes
Scrub Area
Bounds
Currency
Percentage
Disabled
Invalid
With Input
Controlled
5 × R$ 49,90 = R$ 249,50 por mês
Usage
Props
NumberField
Estende NumberFieldPrimitive.Root.Props. Aceita também os atributos padrão de um elemento React (273 não listados).
NumberFieldGroup
Estende NumberFieldPrimitive.Group.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
NumberFieldDecrement
Estende NumberFieldPrimitive.Decrement.Props. Aceita também os atributos padrão de um elemento React (285 não listados).
NumberFieldIncrement
Estende NumberFieldPrimitive.Increment.Props. Aceita também os atributos padrão de um elemento React (285 não listados).
NumberFieldInput
Estende NumberFieldPrimitive.Input.Props. Aceita também os atributos padrão de um elemento React (304 não listados).
NumberFieldScrubArea
Estende NumberFieldPrimitive.ScrubArea.Props. Aceita também os atributos padrão de um elemento React (275 não listados).
prop obrigatória.
Composition
O rótulo e a caixa são irmãos dentro do NumberField; os botões ficam dentro da caixa, nas pontas do input.
Metadata
Notas de acessibilidade
Teclado verificado por teste e em navegador: o campo custa um único Tab stop, no input; ArrowUp e ArrowDown andam um step, Shift anda o largeStep, Home e End vão a min e max quando declarados, e o valor digitado é interpretado e limitado ao intervalo no blur. Os botões de passo ficam fora da sequência de tabulação de propósito — as setas já fazem o trabalho a partir do input — e continuam alcançáveis por ponteiro, toque e leitor de tela de toque. Leitor de tela verificado por teste: o input é um textbox nomeado pelo label associado por htmlFor (também quando o rótulo é o NumberFieldScrubArea), os botões são nomeados Diminuir e Aumentar em vez do Increase e Decrease do Base UI, apontam para o input por aria-controls e ficam desabilitados no limite que cruzariam; aria-invalid com aria-describedby liga o motivo ao campo, e um campo desabilitado recusa entrada. Touch verificado em navegador com emulação de toque em viewport de 375px: o campo tem 36px de altura, os botões medem acima do mínimo de 24x24, ganham uma área de toque de 44px sob pointer coarse, e o toque diminui e aumenta o valor. Reduced motion verificado com prefers-reduced-motion: reduce — as transições de cor do hover e de anel do foco não são movimento e permanecem; 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 / number-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
- minus, plus
- Construído sobre
- Label
- Usado por
- Nenhum ainda