Date picker

Selects a date from a calendar overlay opened by a 1px trigger.

When

Press day

Issue 03 goes on the cylinder. Pick the morning.

Use it for

  • A date field in a form where the calendar should stay out of the way until asked.
  • format to render the chosen date your way.

Not for

  • Dates the user knows by heart; use Input type="date".
  • Always-visible calendars; use Calendar.

Three ways in. They share one source, so the pixels match whichever you pick.

1. Import the package

npm install @noorddev/vlak-react

// once, next to your app's root
import "@noorddev/vlak-react/css";

import { DatePicker } from "@noorddev/vlak-react";

Precompiled React and one stylesheet. No compiler to configure. Per-component imports work too: @noorddev/vlak-react/components/date-picker.

2. Vendor the source

npx @noorddev/vlak-cli add date-picker

The StyleX leaf lands in components/vlak/ with its dependencies, for your own compiler to own. See StyleX.

3. Through shadcn

npx shadcn add https://vlak.dev/r/date-picker.json

The same registry item, installed by shadcn's CLI.

CSS only

<link rel="stylesheet" href="node_modules/@noorddev/vlak/css/vlak.css" />

No React. Link vlak.css and use the markup and classes below.

import { useState } from "react";
import { DatePicker } from "@noorddev/vlak-react";

const [date, setDate] = useState<Date>();

<DatePicker value={date} onValueChange={setDate} placeholder="Pick a date" dialogLabel="Choose a date" />

DatePicker

Hairline trigger that opens a calendar in a non-modal dialog. Focus moves to the selected (or today's) day; Escape, Tab out, and a click outside close it; focus returns to the trigger.

PropTypeDefaultDescription
valueDate
defaultValueDate
onValueChange(date: Date) => void
onChange(date: Date) => voidDeprecated. Use `onValueChange`.
placeholderstring"Pick a date"
format(date: Date) => stringdefaultDateFormat
disabledboolean
dialogLabelstring"Choose a date"Accessible name of the calendar dialog.

Also accepts Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue">.

KeysDoes
Enter, Space, Arrow downOpens the calendar
Arrow keys, Home, End, Page up, Page downMove through the calendar
Enter, SpaceSelects the day and closes
EscapeCloses and returns focus to the trigger
TabLeaves the calendar and closes it
<button class="rs-dropdown"><span>24 July 2026</span></button>
.rs-date-picker-cal-menu