Date and time pickers

Calendars, ranges, time fields and duration inputs.

Date input is the control people most often get wrong, usually by making a typist use a calendar. The right answer is both: a text field that accepts what someone types alongside a picker for browsing. These do that, and they keep the range case — where the second date depends on the first — from being two unrelated fields.

22 matching5 primitives17 effectsFree to copy
Open the full page for this primitive

Calendar

A real `role="grid"` month rather than 42 tab stops — one tab stop, arrows for days, PageUp/PageDown for months, and six rows always, so paging never changes the height of what sits below it.

Date & Time418 lines1 dep
Open the full page for this primitive

Date Picker

The typing half most pickers drop, attached to the calendar: parses on blur, refuses to guess whether 3/4 is March or April, and leaves what it cannot read in the box instead of clearing it.

Date & Time688 lines1 dep
Open the full page for this primitive

Time Picker

Slots at a fixed step with the taken ones struck through and the time zone rendered beside the value — the three things a booking needs and a native time input cannot say.

Date & Time266 lines1 dep
Open the full page for this primitive

Relative Time

A real `<time>` that says "3 hours ago" and cannot mismatch on hydration: both sides render the absolute date first, and the relative wording only arrives in an effect. Ticks at an interval scaled to its own age.

Date & Time165 linesNo deps
Open the full page for this primitive

Duration Input

Three segments that behave like one field — typing past one advances, Backspace on an empty one goes back, arrows carry 59 minutes into the next hour, and pasting `1:30:00` fills all three.

Date & Time241 linesNo deps

Effects17

See all →

Contribution grid filled column-first with `grid-auto-flow`, so weeks run down and the whole thing stays one flat list of cells.

Listing led by a tear-off date block in a real `<time>`, so the day and month are one semantic unit rather than two decorated spans.

Two dates joined by an en-dash inside one focus ring, with quick presets underneath because most range picks are a common span, not an arbitrary one.

Timer that empties rather than fills, the sweep animated through a registered angle property so the arc interpolates smoothly instead of snapping between conic stops.

Hour rail with events sitting in the slots they occupy and an empty hour left visibly empty, the current-time rule crossing the whole column with a dot on the gutter.

Date field opening a month grid anchored beneath it, leading days from the previous month dimmed rather than blank so the week rows stay aligned to their columns.

Questions about date and time pickers

Why not just use `<input type="date">`?
For a single date with no range logic, do — it is free, accessible and native on mobile. You outgrow it when you need a range, disabled dates, or a consistent look across browsers, which is what these are for.
How is the date format handled?
Through `Intl.DateTimeFormat` with the user's locale rather than a hardcoded pattern, so 03/04 does not mean two different days to two different readers.
Are these date and time pickers free to use?
All 22 are free to copy and use in your own projects, including commercial ones. A Pro licence exists for redistribution — shipping them inside a product other people buy — and the full terms are on the licence page.
How do I add one to my project?
Install it with the CLI: `npx hoverlab add calendar` writes the component and its dependencies into your project. Every artifact here also has a copy button for the raw source, and an "Open in sandbox" link if you would rather try it first.
Why does this page mix components and whole pages?
Because the phrase does. The same search covers 17 CSS effects and 5 primitives — one of them is the right size for what you are building, and which one depends on how much of the screen you still have to write.