Single Date Selection
Select one date from the monthly calendar grid.
Single Date Selection rendered preview
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Selected: Jul 15, 2026
Data feedback
Interactive month calendar for single date selection.
pnpm add @quinkit/ui react-day-pickerimport { Calendar } from "@quinkit/ui";Required packages
Powers Calendar and DateRangePicker. Add these packages before using this component:
@quinkit/uireact-day-pickerInstall command is shown above. Without the peer package, imports will fail at build time.
Live previews · code · themes · viewport · dark mode
Select one date from the monthly calendar grid.
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Selected: Jul 15, 2026
Select a start and end date across two months.
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Block weekends and past dates from selection.
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Weekends and past dates are blocked.
Calendar paired with available time slot buttons.
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Available Time Slots
Calendar component connected to external state handler.
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Selected: Jul 15, 2026
The Calendar component provides an accessible, responsive date-selection interface powered by react-day-picker. It supports single-date selection, date range selection, disabled date rules, and custom month navigators styled with semantic design tokens.
pnpm add @quinkit/ui react-day-pickerreact-day-picker is a required peer dependency for Calendar.
### Single Date Selection
import { useState } from "react";
import { Calendar } from "@quinkit/ui";
export function SingleCalendarDemo() {
const [date, setDate] = useState<Date | undefined>(new Date());
return <Calendar mode="single" selected={date} onSelect={setDate} />;
}### Date Range Selection
import { useState } from "react";
import { Calendar, type DateRange } from "@quinkit/ui";
export function RangeCalendarDemo() {
const [range, setRange] = useState<DateRange | undefined>();
return <Calendar mode="range" selected={range} onSelect={setRange} numberOfMonths={2} />;
}| Prop | Type | Default | Description |
|---|---|---|---|
mode | "single" | "range" | "multiple" | "single" | Selection mode. |
selected | Date | DateRange | Date[] | undefined | Currently selected date or date range. |
onSelect | Function | undefined | Callback triggered on date selection. |
numberOfMonths | number | 1 | Number of months displayed concurrently. |
showOutsideDays | boolean | true | Show dates from adjacent months. |
disabled | Matcher | Matcher[] | undefined | Dates or matchers that cannot be selected. |
className | string | undefined | Additional class names for root container. |
Tab / Shift+Tab: Move focus into and out of the calendar grid.Arrow Keys: Navigate between day cells.Enter / Space: Select the focused date.Calendar adheres to WAI-ARIA design patterns for accessible web components.
Keyboard Navigation
Tab / Shift + Tab — Focuses control and moves between interactive elements.Space / Enter — Triggers action or toggles selection.Escape — Closes open popovers, overlays, or dropdown menus.ARIA Standards
aria-* attributes.ring-ring) visible in both light & dark mode.Add a shadcn-compatible bridge file to your project that re-exports from @quinkit/ui.
npx shadcn@latest add https://quinkit-ui.vercel.app/r/calendar.json