Components
Loading preview...
Date input field with labels, descriptions, and validation built on React Aria DateField.
npx shadcn@latest add https://21st.dev/r/hero_ui/heroui-date-field"use client";
import * as React from "react";
import { DateField, Description, FieldError, Label, parseDate, today, type DateValue } from "@/components/ui/heroui-date-field";
export default function WithValidation() {
const [value, setValue] = React.useState<DateValue | null>(null);
const todayDate = today();
const isInvalid = value !== null && value.compare(todayDate) < 0;
return (
<div className="flex min-h-screen w-full items-center justify-center overflow-hidden bg-background p-8">
<DateField
isRequired
className="w-[256px]"
isInvalid={isInvalid}
minValue={todayDate}
name="date"
placeholderValue={parseDate("2026-01-01")}
value={value}
onChange={setValue}
>
<Label>Date</Label>
<DateField.Group>
<DateField.Input />
</DateField.Group>
{isInvalid ? (
<FieldError>Date must be today or in the future</FieldError>
) : (
<Description>Enter a date from today onwards</Description>
)}
</DateField>
</div>
);
}
export { WithValidation };