UI

Date Field

Campo para digitar uma data (DateField) ou um horário (TimeField) por segmentos, sem ambiguidade de formato.

Data de nascimento
ddmmaaaa
Formato dd/mm/aaaa.

Instalação

npx shadcn@latest add @lenstech/date-field

Uso

import { I18nProvider } from "react-aria-components"
import { DateField, TimeField } from "@/components/ui/date-field"
<I18nProvider locale="pt-BR">
  <DateField label="Data de nascimento" name="nascimento" />
</I18nProvider>

Cada parte da data (dia, mês, ano) é um segmento: o usuário digita os números ou usa as setas ↑/↓ para ajustar. O formato segue o idioma — em pt-BR, dd/mm/aaaa.

Datas são CalendarDate, não Date

O valor é um objeto do pacote @internationalized/date, não um Date do JavaScript:

  • DateField sem hora → CalendarDate; com granularity="hour"/"minute" → CalendarDateTime (ou ZonedDateTime, se o valor tiver fuso).
  • TimeField → Time (new Time(14, 30)).
  • Criar: parseDate("2026-10-15"), today(getLocalTimeZone()), parseDateTime("2026-10-15T09:00").
  • Enviar para a API: valor.toString() → "2026-10-15" (ISO).
  • Converter para Date: valor.toDate(getLocalTimeZone()).

Em formulários com name, o valor enviado já é a string ISO.

Exemplos

Horário (TimeField)

TimeField usa Time e aceita minValue/maxValue — útil para horário de atendimento ou agendamento.

Horário do atendimento
1430
Das 08:00 às 18:00.

Data e hora

Use granularity para incluir hora e minuto. Com um ZonedDateTime, o fuso horário aparece como segmento.

Início da manutenção
121020262200
Publicação agendada
151020260900BRT

Validação

isRequired, minValue e maxValue validam automaticamente; validate permite regras próprias. A mensagem de erro aparece abaixo do campo. Clique em Salvar nota para ver a validação do primeiro campo.

Data de emissão da nota
ddmmaaaa
Obrigatória; não pode ser uma data futura.
Vencimento
27092026
O vencimento não pode ser no passado.

Quando usar

  • Use quando o usuário já sabe a data: nascimento, emissão de nota, data de admissão.
  • Não use quando ele precisa olhar o calendário para escolher (agendamentos, períodos) — use Date Picker.
  • Não use um Input de texto com máscara para datas: o DateField é acessível, valida e não confunde dd/mm com mm/dd.

API

DateField

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

Prop

Type

TimeField

Aceita todas as props do TimeField do React Aria, mais label, description e errorMessage. O valor é um Time (ou CalendarDateTime/ZonedDateTime, se precisar da data junto).

DateInput

Entrada segmentada usada internamente por DateField, TimeField e DatePicker. Use-a para montar campos personalizados.

Prop

Type

On this page