UI

Input

Campo de texto de uma linha ou multilinha (Textarea), com rótulo, texto de ajuda e validação.

Enviaremos o orçamento para este endereço.

Instalação

npx shadcn@latest add @lenstech/input

Uso

import { TextField } from "@/components/ui/input"
<TextField name="email" type="email" label="E-mail" isRequired />

O arquivo exporta três componentes:

  • TextField — campo completo (rótulo + input + descrição + erro). É o que você usa na maior parte do tempo.
  • Input e Textarea — só a caixa de texto, para composição manual ou uso solto (com aria-label).

onChange recebe o texto, não o evento

No React Aria, onChange de TextField entrega a string digitada: onChange={setNome}. Não use e.target.value.

Exemplos

Tipos

type aceita text, email, tel, url, password e search. Combine com autoComplete para o navegador preencher os dados do usuário.

Mínimo de 8 caracteres.

Textarea

Use multiline para trocar o input por um Textarea, que cresce conforme o conteúdo.

Quanto mais detalhes, mais preciso o orçamento.

Validação

Validação nativa (isRequired, type="email", minLength, pattern…) e customizada com validate. Os erros aparecem ao enviar o Form. Tente enviar vazio.

isInvalid ou validate?

validate devolve a mensagem de erro (ou null) e integra com o envio do formulário. Use isInvalid + errorMessage apenas quando a validação acontece fora do campo (por exemplo, um estado da sua página). Erros vindos do servidor vão em validationErrors no Form.

Desabilitado e somente leitura

Somente leitura: pode ser selecionado e copiado, mas não editado.

Controlado

Use value + onChange quando precisar reagir ao que é digitado — aqui, um contador de caracteres.

0/160 caracteres — aparece no Google e nas redes sociais.

Composição manual

Passe filhos ao TextField para montar o layout com as peças do Field.

Quem vai aprovar o layout.

Quando usar

  • Use para textos livres: nome, e-mail, telefone, mensagem.
  • Não use para números com incremento, preços ou quantidades — use NumberField.
  • Não use para datas — use DateField ou DatePicker.
  • Para escolher entre opções conhecidas, use Select ou Combobox; para busca, SearchField.

API

TextField

Aceita todas as props do TextField do React Aria, mais:

Prop

Type

Input e Textarea

Aceitam todas as props de Input e TextArea do React Aria (e, portanto, os atributos HTML de <input> e <textarea>).

On this page