GitHub

Calendar

Provides a visual interface for date selection.

January 2026
28293031123
45678910
11121314151617
18192021222324
25262728293031
calendar-demo.tsx
import { Calendar } from "@/components/ui/calendar"
 
export function CalendarDemo() {
	return <Calendar showOutsideDays />
}

Installation

npx shadcn@latest add @9ui/calendar

Usage

Imports
import { Calendar } from "@/components/ui/calendar"
Anatomy
<Calendar />

Examples

Single Date

January 2026
calendar-single-demo.tsx
"use client"
 
import { useState } from "react"
 
import { Calendar } from "@/components/ui/calendar"
 
export function CalendarSingleDemo() {
	const [selectedDate, setSelectedDate] = useState<Date | undefined>(undefined)
 
	return (
		<Calendar
			mode="single"
			selected={selectedDate}
			onSelect={setSelectedDate}
			showOutsideDays
		/>
	)
}

Multiple Dates

January 2026
calendar-multiple-demo.tsx
"use client"
 
import { useState } from "react"
 
import { Calendar } from "@/components/ui/calendar"
 
export function CalendarMultipleDemo() {
	const [selectedDates, setSelectedDates] = useState<Date[] | undefined>(
		undefined
	)
 
	return (
		<Calendar
			mode="multiple"
			selected={selectedDates}
			onSelect={setSelectedDates}
			showOutsideDays
		/>
	)
}

Date Range

January 2026
calendar-range-demo.tsx
"use client"
 
import { useState } from "react"
import { DateRange } from "react-day-picker"
 
import { Calendar } from "@/components/ui/calendar"
 
export function CalendarRangeDemo() {
	const [range, setRange] = useState<DateRange | undefined>(undefined)
 
	return (
		<Calendar
			mode="range"
			selected={range}
			onSelect={setRange}
			showOutsideDays
		/>
	)
}

Disabled

January 2026
calendar-disabled-demo.tsx
"use client"
 
import { useState } from "react"
 
import { Calendar } from "@/components/ui/calendar"
 
export function CalendarDisabledDemo() {
	const [selectedDate, setSelectedDate] = useState<Date | undefined>(undefined)
 
	return (
		<Calendar
			mode="single"
			disabled={(date) => date < new Date()}
			selected={selectedDate}
			onSelect={setSelectedDate}
		/>
	)
}