Calendar View
Multi-view calendar with day, week, and month modes
SaaSCalendar
Overview
CalendarView provides a complete calendar interface with day, week, and month view modes. It displays events with color coding, supports date navigation, and can be configured with a specific timezone. Includes loading and empty states.
Usage
import { CalendarView } from "@leanicon/web-builder-library/saas";
const events = [
{
id: "1",
title: "Team Meeting",
startTime: new Date(2026, 2, 25, 10, 0).toISOString(),
endTime: new Date(2026, 2, 25, 11, 30).toISOString(),
color: "blue",
},
{
id: "2",
title: "Project Review",
startTime: new Date(2026, 2, 25, 14, 0).toISOString(),
endTime: new Date(2026, 2, 25, 15, 0).toISOString(),
color: "green",
},
];
<CalendarView
events={events}
defaultViewMode="week"
onEventClick={(event) => console.log("Clicked:", event.id)}
onDateChange={(date) => console.log("Date:", date)}
/>;Variants
Week View (Default)
October 2026
8:00 AM
9:00 AM
10:00 AM
11:00 AM
12:00 PM
1:00 PM
2:00 PM
3:00 PM
4:00 PM
5:00 PM
Week View (Dark)
October 2026
8:00 AM
9:00 AM
10:00 AM
11:00 AM
12:00 PM
1:00 PM
2:00 PM
3:00 PM
4:00 PM
5:00 PM
Day View
Friday, October 2, 2026
8:00 AM
9:00 AM
10:00 AM
11:00 AM
12:00 PM
1:00 PM
2:00 PM
3:00 PM
4:00 PM
5:00 PM
Month View
October 2026
Sun
Mon
Tue
Wed
Thu
Fri
Sat
Loading
October 2026
No Events
October 2026
8:00 AM
9:00 AM
10:00 AM
11:00 AM
12:00 PM
1:00 PM
2:00 PM
3:00 PM
4:00 PM
5:00 PM
With Timezone
October 2026
8:00 AM
9:00 AM
10:00 AM
11:00 AM
12:00 PM
1:00 PM
2:00 PM
3:00 PM
4:00 PM
5:00 PM
Props
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
events | CalendarEvent[] | — | Yes | Events to display on the calendar |
selectedDate | string | — | No | Currently selected date (controlled) |
defaultSelectedDate | string | — | No | Default selected date (uncontrolled) |
viewMode | enum | — | No | Current view mode (controlled) |
defaultViewMode | enum | week | No | Default view mode (uncontrolled) |
loading | boolean | false | No | Whether component is in loading state |
minDate | string | — | No | Minimum selectable date |
maxDate | string | — | No | Maximum selectable date |
weekStartsOn | enum | 0 | No | First day of week (0=Sunday, 1=Monday) |
dayStartHour | number | 8 | No | Start hour for day/week views (0-23) |
dayEndHour | number | 18 | No | End hour for day/week views (0-23) |
maxEventsPerDay | number | 3 | No | Maximum events per day in month view |
timezone | string | — | No | Timezone for display (IANA timezone string) |
className | string | — | No | Custom class name |
onEventClick | ((event: CalendarEvent) => void) | — | No | Called when an event is clicked |
onSlotClick | ((startTime: string, endTime: string) => void) | — | No | Called when a time slot is clicked (for creating new bookings) |
onDateChange | ((date: string) => void) | — | No | Called when selected date changes |
onViewModeChange | ((mode: CalendarViewMode) => void) | — | No | Called when view mode changes |
onRangeChange | ((range: DateRange) => void) | — | No | Called when visible date range changes |