Schedule
Read-only schedule shell for day, week, month, and list views.
Examples
Section titled “Examples”July 2026
Sun
Mon
Tue
Wed
Thu
Fri
Sat
28
29
30
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
31
1
2
3
4
5
6
7
8
Friday, July 10, 2026
Close popover
<ScheduleStory view={createScheduleMonthlyView()} />July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
Friday, July 10, 2026
Close popover
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ScheduleStory events={weekEvents} view={createScheduleWeeklyView({maxHour: 18, minHour: 8})}/>Resizable Events
Section titled “Resizable Events”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ResizableEventsStory />Movable Events
Section titled “Movable Events”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<MovableEventsStory />Creatable Events
Section titled “Creatable Events”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
Planning offsite
Close
- Date and time
- Friday, July 10, 2026all day
- Category
- Planning
Release freeze
Close
- Date and time
- Friday, July 10, 2026all day
- Category
- Operations
QA window
Close
- Date and time
- Saturday, July 11, 2026all day
- Category
- Operations
8 AM
9 AM
10 AM
11 AM
12 PM
Roadmap triage
Close
- Date and time
- Saturday, July 11, 202612:00 PM - 1:00 PM
- Category
- Planning
1 PM
2 PM
Customer escalation review
Close
- Date and time
- Friday, July 10, 20262:00 PM - 3:00 PM
- Category
- Customer
Prototype critique
Close
- Date and time
- Friday, July 10, 20262:30 PM - 3:30 PM
- Category
- Design
3 PM
Launch checklist
Close
- Date and time
- Friday, July 10, 20263:30 PM - 4:00 PM
- Category
- Planning
4 PM
Team sync
Close
- Date and time
- Friday, July 10, 20264:00 PM - 4:30 PM
- Category
- Sync
Study readout
Close
- Date and time
- Friday, July 10, 20264:45 PM - 5:30 PM
- Category
- Research
5 PM
Design review
Close
- Date and time
- Saturday, July 11, 20265:00 PM - 6:00 PM
- Category
- Design
<CreatableEventsStory />Monday Start Week
Section titled “Monday Start Week”July 2026
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
Sun12
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ScheduleStory view={createScheduleWeeklyView({ maxHour: 18, minHour: 8, weekStartsOn: 1, })}/>Hidden Weekend Days
Section titled “Hidden Weekend Days”July 2026
Mon6
Tue7
Wed8
Thu9
Fri10
UTC
Friday, July 10, 2026
Close popover
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ScheduleStory events={weekEvents} view={createScheduleWeeklyView({ hiddenDays: [0, 6], maxHour: 18, minHour: 8, })}/>July 2026
Fri10
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ScheduleStory view={createScheduleDayView({maxHour: 18, minHour: 8})} />List View
Section titled “List View”July 2026
10Fri
7:35 PM - 8:35 PMPast sync
Sync
8:45 PM - 9:45 PMCustomer escalation review
Customer
9:50 PM - 10:50 PMCurrent design review
Design
11:20 PM - 12:20 AMFuture planning session
Planning
11Sat
11:20 PM - 12:20 AMFuture planning session
Planning
1:05 AM - 2:05 AMRelease readiness
Operations
<ScheduleStory events={listEvents} highlightDate={now.epochMilliseconds} timezoneID={timezoneID} view={createScheduleListView({days: 7})} viewDate={now.epochMilliseconds}/>Async Events
Section titled “Async Events”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ScheduleStory events={loader} view={createScheduleWeeklyView({maxHour: 18, minHour: 8})}/>Async Events With Toast Error
Section titled “Async Events With Toast Error”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ToastViewport> <AsyncEventsWithToastStory /></ToastViewport>View Selector
Section titled “View Selector”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ScheduleStory plugins={[viewSelectorPlugin]} view={view} />Custom Plugin
Section titled “Custom Plugin”Draft
July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ScheduleStory plugins={[customPlugin]} view={createScheduleWeeklyView({maxHour: 18, minHour: 8})}/>Event Popover
Section titled “Event Popover”July 2026
Sun
Mon
Tue
Wed
Thu
Fri
Sat
28
29
30
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
31
1
2
3
4
5
6
7
8
1:1 with Jordan
Edit event
Delete event
Close
- Date and time
- Friday, July 10, 202611:30 AM - 12:00 PM
- Category
- Customer
Daily standup
Edit event
Delete event
Close
- Date and time
- Friday, July 10, 20269:00 AM - 9:30 AM
- Location
- Room 1
- Category
- Sync
Design sync
Edit event
Delete event
Close
- Date and time
- Friday, July 10, 202610:00 AM - 11:00 AM
- Location
- Design Studio
- Description
- Align on the week’s design priorities.
- Category
- Design
Design review
Edit event
Delete event
Close
- Date and time
- Saturday, July 11, 2026all day
- Location
- Design Studio
- Description
- Critique the latest prototype flows.
- Category
- Design
Roadmap planning
Edit event
Delete event
Close
- Date and time
- Sunday, July 12, 20262:00 PM - 3:00 PM
- Category
- Planning
Friday, July 10, 2026
Daily standup
Edit eventDelete eventClose- Date and time
- Friday, July 10, 20269:00 AM - 9:30 AM
- Location
- Room 1
- Category
- Sync
Design sync
Edit eventDelete eventClose- Date and time
- Friday, July 10, 202610:00 AM - 11:00 AM
- Location
- Design Studio
- Description
- Align on the week’s design priorities.
- Category
- Design
1:1 with Jordan
Edit eventDelete eventClose- Date and time
- Friday, July 10, 202611:30 AM - 12:00 PM
- Category
- Customer
Lunch & learn
Edit eventDelete eventClose- Date and time
- Friday, July 10, 202612:00 PM - 1:00 PM
- Location
- Cafeteria
- Description
- Guest talk on accessible color systems.
- Category
- Research
Release review
Edit eventDelete eventClose- Date and time
- Friday, July 10, 20262:00 PM - 2:30 PM
- Location
- War room
- Category
- Operations
Team sync
Edit eventDelete eventClose- Date and time
- Friday, July 10, 20264:00 PM - 4:30 PM
- Location
- Room 4 · Zoom
- Description
- Weekly status check-in and blockers review.
- Category
- Sync
Sprint retro
Edit eventDelete eventClose- Date and time
- Friday, July 10, 20265:00 PM - 5:30 PM
- Description
- What went well, what to improve.
- Category
- Planning
Close popover
<EventPopoverStory />Event Popover Custom Content
Section titled “Event Popover Custom Content”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
Design reviewDesign
8 AM
9 AM
Daily standupSync
10 AM
Design syncDesign
11 AM
1:1 with JordanCustomer
12 PM
Lunch & learnResearch
1 PM
2 PM
Release reviewOperations
3 PM
4 PM
Team syncSync
5 PM
Sprint retroPlanning
<Schedule categories={categories} events={eventPopoverEvents} highlightDate={defaultHighlightDate} plugins={[paginationPlugin, eventPopoverPlugin]} timezoneID={localTimezoneID} view={createScheduleWeeklyView({maxHour: 18, minHour: 8})} viewDate={viewDate}/>Without Categories
Section titled “Without Categories”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ScheduleStory categories={[]} events={eventsWithoutCategories} view={createScheduleWeeklyView({maxHour: 18, minHour: 8})}/>Color And Category Fallbacks
Section titled “Color And Category Fallbacks”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
<ScheduleStory categories={colorFallbackCategories} events={fallbackEvents} view={createScheduleWeeklyView({maxHour: 20, minHour: 8})}/>July 2026
10Fri
<ScheduleStory events={[]} view={createScheduleListView({days: 7})} />Multi Day Events
Section titled “Multi Day Events”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
12 AM
1 AM
2 AM
3 AM
4 AM
5 AM
6 AM
7 AM
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
8 PM
9 PM
10 PM
11 PM
<ScheduleStory events={multiDayEvents} view={createScheduleWeeklyView({maxHour: 24, minHour: 0})}/>Timezones
Section titled “Timezones”July 2026
Fri10
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
July 2026
Fri10
PDT
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
<div style={{display: 'grid', gap: 24}}> <ScheduleStory events={sameInstantEvents} timezoneID="UTC" view={createScheduleDayView({maxHour: 20, minHour: 8})} viewDate={utcToday.toZonedDateTime('UTC').epochMilliseconds} /> <ScheduleStory events={sameInstantEvents} timezoneID="America/Los_Angeles" view={createScheduleDayView({maxHour: 20, minHour: 8})} viewDate={ utcToday.toZonedDateTime('America/Los_Angeles').epochMilliseconds } /></div>Hour Range Edge Cases
Section titled “Hour Range Edge Cases”July 2026
Fri10
UTC
12 AM
1 AM
2 AM
3 AM
4 AM
5 AM
6 AM
7 AM
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
8 PM
9 PM
10 PM
11 PM
July 2026
Fri10
UTC
8 PM
9 PM
10 PM
11 PM
<div style={{display: 'grid', gap: 24}}> <ScheduleStory view={createScheduleDayView({maxHour: 24, minHour: 0})} /> <ScheduleStory view={createScheduleDayView({maxHour: 24, minHour: 20})} /></div>Hour Heights
Section titled “Hour Heights”July 2026
Fri10
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<div style={{display: 'grid', gap: 24}}> <ScheduleStory view={createScheduleDayView({ hourHeight: 48, maxHour: 18, minHour: 8, })} /> <ScheduleStory view={createScheduleWeeklyView({ hourHeight: 132, maxHour: 18, minHour: 8, })} /></div>Current Time
Section titled “Current Time”July 2026
Fri10
UTC
12 AM
1 AM
2 AM
3 AM
4 AM
5 AM
6 AM
7 AM
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
8 PM
9 PM
10 PM
11 PM
<ScheduleStory events={currentEvents} highlightDate={now.epochMilliseconds} view={createScheduleDayView({maxHour: 24, minHour: 0})} viewDate={now.epochMilliseconds}/>Current Time24 Hour Mode
Section titled “Current Time24 Hour Mode”July 2026
Fri10
UTC
12 AM
1 AM
2 AM
3 AM
4 AM
5 AM
6 AM
7 AM
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
8 PM
9 PM
10 PM
11 PM
<ScheduleStory events={currentEvents} highlightDate={now.epochMilliseconds} timezoneID={timezoneID} view={createScheduleDayView({ hourHeight: 56, maxHour: 24, minHour: 0, })} viewDate={now.epochMilliseconds}/>Past And Current States
Section titled “Past And Current States”July 2026
Fri10
UTC
12 AM
1 AM
2 AM
3 AM
4 AM
5 AM
6 AM
7 AM
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
8 PM
9 PM
10 PM
11 PM
<ScheduleStory events={stateEvents} highlightDate={now.epochMilliseconds} view={createScheduleDayView({maxHour: 24, minHour: 0})} viewDate={now.epochMilliseconds}/>Highlight Date
Section titled “Highlight Date”July 2026
Sun5
Mon6
Tue7
Wed8
Thu9
Fri10
Sat11
UTC
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
<ScheduleStory highlightDate={dayInstant(2)} view={createScheduleWeeklyView({maxHour: 18, minHour: 8})} viewDate={dayInstant(0)}/>Five Week Month
Section titled “Five Week Month”July 2026
Sun
Mon
Tue
Wed
Thu
Fri
Sat
28
29
30
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
31
1
Friday, July 10, 2026
Close popover
<ScheduleStory view={createScheduleMonthlyView({weekCount: 5})} />Show All Month Events
Section titled “Show All Month Events”July 2026
Sun
Mon
Tue
Wed
Thu
Fri
Sat
28
29
30
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
31
1
2
3
4
5
6
7
8
<ScheduleStory events={busyDayEvents} view={createScheduleMonthlyView({monthRowHeight: 'auto'})}/>Schedule
Section titled “Schedule”Read-only schedule shell for day, week, month, and list views.
| Prop | Type | Default | Description |
|---|---|---|---|
categories | ReadonlyArray<ScheduleCategory> | — | Category definitions used to style events by their category value. |
className | string | — | Additional CSS class names applied to the schedule root. |
data-testid | string | — | Test ID applied to the schedule root. |
events* | ScheduleEventSource | — | Static events or an async event loader. |
highlightDate | Instant | — | Instant highlighted as the current date. Defaults to mount time. |
plugins | ReadonlyArray<SchedulePlugin> | — | Header/rendering plugins. |
ref | Ref<HTMLDivElement> | — | Ref forwarded to the schedule root. |
style | CSSProperties | — | Inline styles applied to the schedule root. |
timezoneID | string | — | IANA timezone ID used for date math and rendering. |
view* | ScheduleView<Options> | — | View object returned by a createSchedule*View factory. |
viewDate* | Instant | — | Instant used to choose the rendered range. |
ScheduleEventPopoverContent
Section titled “ScheduleEventPopoverContent”Default Google-Calendar-style content for the event popover. Renders the event color, title, date/time, and category in a MetadataList with icon-only labels, plus optional `description` and `location` rows, an attendee response footer, and optional edit/delete actions — each shown only when the corresponding data or callback is present. A close button is always rendered. Pass this to the event popover plugin's `renderContent` to wire actions, e.g. `renderContent: (event, controls) => <ScheduleEventPopoverContent event={event} onClose={controls.close} onEdit={...} />`.
| Prop | Type | Default | Description |
|---|---|---|---|
event* | CalendarEvent<TAuxiliaryData> | — | The event to display. |
onClose* | () => void | — | Closes the popover. Wired to the close button. |
onDelete | (event: CalendarEvent<TAuxiliaryData>) => void | — | Called when the delete action is triggered. When omitted, no delete button is rendered. |
onEdit | (event: CalendarEvent<TAuxiliaryData>) => void | — | Called when the edit action is triggered. When omitted, no edit button is rendered. |
onRespond | ( event: CalendarEvent<TAuxiliaryData>, response: string | null, ) => void | — | Called when the attendee response (Going / Not Going / Maybe) changes. The response is null when the selection is cleared. |