Events & Calendars
Events are plain objects. Calendars (sources) group them, give them shared colors, and let users toggle whole groups on and off — like the calendar list in Google Calendar.
The event object
const event: CalendarEvent = {
id: 'evt-42', // unique & stable
title: 'Quarterly planning',
start: new Date(2026, 7, 13, 9, 30), // inclusive
end: new Date(2026, 7, 13, 11, 0), // exclusive
allDay: false,
color: 'purple', // palette name or any CSS color
calendarId: 'work', // groups it under a source
location: 'Room 3',
description: 'Bring the roadmap.',
meta: { anything: 'you like' } // carried through untouched
};| Field | Notes |
|---|---|
id | Required. Used to write drag & drop edits back to your array. |
start / end | Plain Date objects in local time; end is exclusive. Events crossing midnight simply span days. |
allDay | Renders in the all-day lane / as a month bar; times are ignored and the range snaps to whole days. |
color | One of 10 palette names (graphite, red, orange, yellow, green, teal, blue, indigo, purple, pink) or any CSS color like #7c3aed. |
calendarId | Links the event to a source; the event inherits the source color unless it sets its own. |
editable | Per-event override of drag & drop permission. |
recurrence / exdates | See Recurring Events. |
Calendar sources
Pass an array of sources and reference them from events via calendarId. Toggling a source’s visible flag hides all of its events at once:
Toggle whole calendars
Sun
Mon
Tue
Wed
Thu
Fri
Sat
30
31
Sep 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Oct 1
2
3
Color resolution —
event.color → source.color → the accent color. Palette names adapt automatically between light and dark themes.