✨ Working with PDFs, images or videos? Discover 145+ free web apps built for everyday tasks

Calendar

A date grid with single, range, and multiple selection modes, fast month/year navigation, booked-date and event-indicator support.

Loading preview...

Examples

Practical examples and common states for the same installable component.

Range

Selects a continuous range of dates.

examples/calendar-range.tsx
import { Calendar, type DateRange } from "@/components/wensity/calendar";
import { useState } from "react";
export function CalendarRange() {
const [range, setRange] = useState<DateRange | undefined>();
return <Calendar mode="range" selected={range} onSelect={setRange} />;
}

Multiple

Selects multiple independent dates.

examples/calendar-multiple.tsx
import { Calendar } from "@/components/wensity/calendar";
import { useState } from "react";
export function CalendarMultiple() {
const [selected, setSelected] = useState<Date[]>([]);
return <Calendar mode="multiple" selected={selected} onSelect={setSelected} />;
}

Month Year

Fast month and year navigation.

examples/calendar-month-year.tsx
import { Calendar } from "@/components/wensity/calendar";
import { useState } from "react";
export function CalendarMonthYear() {
const [month, setMonth] = useState(new Date());
return <Calendar month={month} onMonthChange={setMonth} quickNav />;
}

Booked

Highlights unavailable and reserved dates.

examples/calendar-booked.tsx
import { Calendar } from "@/components/wensity/calendar";
import { useState } from "react";
export function CalendarBooked() {
const [selected, setSelected] = useState<Date | undefined>();
const bookedDates = [
new Date(2026, 0, 12),
new Date(2026, 0, 13),
new Date(2026, 0, 18),
];
return <Calendar selected={selected} onSelect={setSelected} bookedDates={bookedDates} />;
}

Events

Displays indicators for scheduled dates.

examples/calendar-events.tsx
import { Calendar } from "@/components/wensity/calendar";
import { useState } from "react";
export function CalendarEvents() {
const [selected, setSelected] = useState<Date | undefined>();
const events = [
{ date: new Date(2026, 0, 9), label: "Design review" },
{ date: new Date(2026, 0, 14), label: "Team sync" },
];
return <Calendar selected={selected} onSelect={setSelected} events={events} />;
}