Pick a date, a range, or a date and a time. Six rows always, so the height never jumps.
FreeWeb and MobileMotion
Preview
npx shadcn add @fetaui/calendarPlayground
November 2026
SuMoTuWeThFrSa
Booked and events
November 2026
SuMoTuWeThFrSa
Disabled days
November 2026
SuMoTuWeThFrSa
Month and year
SuMoTuWeThFrSa
Two months
November 2026
SuMoTuWeThFrSa
December 2026
SuMoTuWeThFrSa
Date and time
Mode
Icons animation
Motion
Installation
Terminal· bash
npx shadcn add @fetaui/calendar
Accessibility
- Grid role with arrow key movement.
- Each day has a full label, like Wednesday, November 4, 2026.
- Today is marked with aria-current.
Motion
- Months slide 24 px the way you paged, in 280 ms.
- The selected chip scales from 0.9. A range band follows the pointer after the start is picked.
- With reduced motion, months swap and the fill changes in place.
Responsive behavior
- 36 px cells on Web and 44 px on Mobile.
- Two months stack on Mobile.
Performance
- Only range mode adds a hover handler, so other modes do not re-render every cell on hover.
- Intl formatters are memoized per locale, and booked days sit in a set.
- Six rows always, so paging causes no layout shift.
Note for AI
Give your coding assistant the Markdown reference instead of screenshots.
- Import
Calendarfrom@/components/fetaui/calendar. modeissingle,rangeordatetime. Range values are{ start, end }, anddatetimeneedsslots.onApplyadds the Apply or Confirm footer. Without it, readonValueChange.bookedandisDisabledboth block picking. Without a value ordefaultMonth, the month waits for the browser. The demo's Apply does nothing. Dropdowns composeSelect.
Related
Date PickerComponentA pill field that opens a month in a floating surface.Calendar ScheduleComponentA month with its events in the grid, and the picked day's agenda beside it.Stay PickerComponentPick a stay night by night, with prices in the grid. A range cannot cross a booked night.Day StripComponentPick a day from a strip of soft capsules. The selected day grows and fills with ink.Time FieldComponentA segmented time input. Each part is a spin button you can type into or step.