Vesture
Get started

Date & time

Calendar

A single date grid with full keyboard navigation and locale-aware formatting — the primitive underneath DatePicker and DateRangePicker.

Calendar

Preview

July 2026
Mon
Tue
Wed
Thu
Fri
Sat
Sun

Usage

tsx
import { Calendar } from "@vesture/react";

<Calendar value={selectedDate} onChange={setSelectedDate} minDate={new Date()} weekStartsOn={0} />

Behavior

  • Arrow keys move by day/week, Home/End jump within the week, PageUp/PageDown jump by month (skipping disabled dates).
  • Roving tabindex; role="grid"/"row"/"gridcell".
  • rangeEnd shades a visual range between value and rangeEnd — selection itself stays single-date via value/onChange, which is what DateRangePicker builds range selection on top of.

Props

PropTypeDefaultDescription
value / defaultValueDate | nullControlled / uncontrolled selected date.
onChange(date: Date) => voidFires on selection.
rangeEndDate | nullOptional second endpoint for range shading.
month / onMonthChangeDateControlled displayed month.
minDate / maxDateDateBounds.
isDateDisabled(date: Date) => booleanExtra disable predicate, e.g. weekends.
weekStartsOn0 | 11Sunday or Monday.
localestring"en-US"BCP 47 locale for month/weekday names.