DatePicker
Radix PopoverA month grid drawn by hand: 42 cells, a roving tabindex, and month arithmetic that is about forty lines of string helpers. Open it and arrow around — every key in the ARIA grid pattern is wired.
Past dates are blocked with min. Try PageDown, then Shift+PageDown.
invalid
disabled
value""
import { DatePicker } from "@/components/ui/DatePicker";
// "" or an ISO calendar date, "YYYY-MM-DD". Never a Date.
const [date, setDate] = useState("");
<DatePicker
id="appointment"
value={date}
onChange={setDate}
min="2026-01-01"
/>