npm install @marmoui/uiyarn add @marmoui/uipnpm add @marmoui/uibun add @marmoui/uiimport { Calendar } from '@marmoui/ui';Month view calendar
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
<Calendar mode="single" />Calendar with a default selected date
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
function CalendarWithSelection() {
const [date, setDate] = React.useState<Date | undefined>(new Date());
return (
<Calendar
mode="single"
selected={date}
onSelect={setDate}
/>
);
}Select a start and end date for date ranges
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
function CalendarRange() {
const [range, setRange] = React.useState<DateRange | undefined>({
from: new Date(2026, 2, 10),
to: new Date(2026, 2, 18),
});
return (
<Calendar
mode="range"
selected={range}
onSelect={setRange}
numberOfMonths={2}
/>
);
}Disable past dates or specific date ranges
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
<Calendar
mode="single"
disabled={{ before: new Date() }}
/>Display two months side by side
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
<Calendar
mode="single"
numberOfMonths={2}
/>Highlight the current date for orientation.
Grey out dates that can't be selected (past dates, booked dates).
Pair the calendar with a label or field that explains what date is being selected.
Enforce start-before-end logic for range selection.
aria-disabled.role="grid" with proper cell and header roles.