shadcn.io is an independent project built on shadcn/ui
The days are circles. Today has a muted fill. The 6th, the 14th, and the 25th of this month are bold and tinted as booked. Those days can still be selected.
Use it to mark booked days without blocking them. Disable a day only when it must be unavailable. A field that opens this grid is a Date Picker. In React, Base UI does not know which days are booked.
Installation
Anatomy

Usage
<Calendar
className="rounded-md border"
classNames={classNames}
mode="single"
modifiers={modifiers}
modifiersClassNames={modifiersClassNames}
onSelect={setDate}
selected={date}
/>FAQ
Which days are highlighted as booked?
The 6th, the 14th and the 25th of the current month are the booked modifier. modifiersClassNames.booked paints the day button with bg-warning/20, font-bold and text-warning-foreground.
How do the days become circles?
classNames.day_button is rounded-full. classNames.today is rounded-full bg-muted text-foreground.
Can someone still pick a booked day?
Yes. The booked styling is a class on the day. The calendar still selects a single date, including the 6th, the 14th or the 25th.
How do I read the selected day?
mode="single" makes selected one date and onSelect the setter. This demo stores that date in state, starting from new Date().
API Reference
Calendar
Sets classNames={classNames}, mode="single", modifiers={modifiers}, modifiersClassNames={modifiersClassNames}, onSelect={setDate} and selected={date}. The rest is on the Calendar page.





