Navegar componentes
← ComponentesUm form input para valores numéricos com validação integrada, restrições min/max e controles de step. Use NumberInput para quantidades, medidas, porcentagens e inputs similares.
NumberInput
MiscExemploExemplos
Área interativa
size
isDisabled
isIntegerOnly
units
Boas práticas
- Faça: Defina min, max e step para orientar usuários a valores válidos.
- Faça: Mostre units (ex.: "%" ou "GB") para que usuários saibam o que o número representa.
- Evite: Use NumberInput para texto livre que por acaso contém números; use TextInput em vez disso.
- Evite: Defina isOptional e isRequired no mesmo campo.
- Evite: Envolva um NumberInput desabilitado em Tooltip para explicar por que está desabilitado; controles desabilitados engolem os eventos de hover que o wrapper precisa. Use a prop disabledMessage em vez disso.
Props
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
label * | string | — | Texto do label do input (sempre renderizado para acessibilidade). |
value * | number | null | undefined | — | Valor atual do input. |
onChange * | (value: number) => void | — | Callback disparado quando o valor do input muda (apenas em input válido). |
size | 'sm' | 'md' | 'lg' | 'md' | Variante de size. |
isLabelHidden | boolean | — | Oculta visualmente o label (ainda acessível a leitores de tela). |
description | string | — | Texto de description exibido entre o label e o input. |
isOptional | boolean | — | Se o campo é opcional (mutuamente exclusivo com isRequired). |
isRequired | boolean | — | Se o campo é obrigatório (mutuamente exclusivo com isOptional). |
isDisabled | boolean | — | Se o input está desabilitado. |
disabledMessage | string | — | Explica por que o input está desabilitado. Com isDisabled, exibe um tooltip no hover/foco via teclado e mantém o input focável via aria-disabled (o campo torna-se read-only). Use isto em vez de envolver um NumberInput desabilitado em Tooltip. |
placeholder | string | — | Texto placeholder. |
labelTooltip | string | — | Texto de tooltip a exibir em um ícone de info no final do label. |
startIcon | IconType | — | Ícone a exibir no início do input. Veja `pharos docs icons` para nomes semânticos válidos. |
labelIcon | IconType | — | Ícone a exibir antes do texto do label. Veja `pharos docs icons` para nomes semânticos válidos. |
status | {type: 'error' | 'warning' | 'success', message?: string} | — | Status de validação com mensagem opcional. |
statusVariant | 'attached' | 'detached' | 'tooltip' | 'attached' | Como a mensagem de status é posicionada em relação ao input. attached sobrepõe diretamente abaixo do input (tratamento com borda); detached flutua abaixo como elemento separado com espaçamento; tooltip oculta a caixa de mensagem e a exibe em um tooltip no ícone de status. |
min | number | null | — | Valor mínimo permitido. |
max | number | null | — | Valor máximo permitido. |
step | number | null | 1 | Incremento de step do input. |
units | string | null | — | Texto de units a exibir no final do input (ex.: "%" ou "GB"). |
isIntegerOnly | boolean | — | Permite apenas valores inteiros (sem ponto flutuante). |
hasClear | boolean | false | Exibe um botão de limpar (×) quando o input tem um valor. Quando true, o callback onChange também aceita null para sinalizar que o usuário limpou o input. |
htmlName | string | — | Atributo HTML name para submissões de formulário. |
autoComplete | string | — | Atributo HTML autocomplete. |
width | SizeValue | — | Largura do campo (número = pixels, string usada como está, ex.: "100%"). Dimensiona o campo inteiro (label, controle e status) para que permaneçam alinhados. |
hasAutoFocus | boolean | — | Se deve focar o input ao montar. |
onFocus | (e: FocusEvent<HTMLInputElement>) => void | — | Callback disparado quando o input recebe foco. |
onBlur | (e: FocusEvent<HTMLInputElement>) => void | — | Callback disparado quando o input perde foco. |
onEnter | () => void | — | Callback disparado quando o usuário pressiona a tecla Enter. |