ScheduleEventBase interface fields
All schedule events share common base fields: id (string | number, unique), title (string, displayed in views), start (Date | DateTimeStringValue), end (Date | DateTimeStringValue), color (MantineColor), variant ('filled' | 'light', default 'light'), display ('default' | 'background', default 'default'), and payload (EventPayload, optional user-defined data). Start and end accept Date instances or strings in 'YYYY-MM-DD HH:mm:ss' format.
ScheduleSingleEventData one-off event
A one-off event without recurrence is the most common event shape, containing only the base fields from ScheduleEventBase (id, title, start, end, color, and optional variant, display, payload).
ScheduleRecurringSeriesEventData recurrence field
Recurring series events add a recurrence object containing: rrule (string, RFC 5545 recurrence rule like 'FREQ=WEEKLY;BYDAY=MO,WE'), exdate (optional array of DateTimeStringValue exceptions), and dtstart (optional explicit series start datetime in 'YYYY-MM-DD HH:mm:ss' format).
ScheduleRecurringOverrideEventData structure
Override events replace single generated occurrences from a series and contain the base fields plus: recurringEventId (id of parent series event) and recurrenceId (original occurrence datetime in 'YYYY-MM-DD HH:mm:ss' format).
EventPayload custom data attachment
The payload field attaches arbitrary application-specific data to events. The payload is not used internally by the library but is accessible in callbacks (onEventClick, onEventDrop, etc.) and custom event renderers (renderEventBody). EventPayload is typed as Record<PropertyKey, any> and is typically passed as a generic argument: ScheduleEventData<MyPayload>.
RecurringInstanceMeta metadata on generated events
When a recurring series expands, each generated event includes a recurringInstance metadata object (added by library, not user-set) with: isRecurringInstance (boolean, true if generated from recurrence rule), recurringEventId (parent series id), recurrenceId (original occurrence datetime key), originalStart (original occurrence start before drag/drop), and originalEnd (original occurrence end before drag/drop).
Date and time string value formats in schedule
Schedule uses consistent date/time string formats: DateStringValue is 'YYYY-MM-DD' format (e.g. '2024-01-15'), and DateTimeStringValue is 'YYYY-MM-DD HH:mm:ss' format (e.g. '2024-01-15 10:00:00'). These types are shared across @mantine/dates and @mantine/schedule packages.
ScheduleSingleEventData example
Example of one-off event: const event: ScheduleSingleEventData = { id: 'meeting-1', title: 'Team sync', start: '2024-01-15 10:00:00', end: '2024-01-15 11:00:00', color: 'blue' };
ScheduleRecurringSeriesEventData example
Example of recurring series event: const series: ScheduleRecurringSeriesEventData = { id: 'weekly-planning', title: 'Weekly planning', start: '2024-01-15 10:00:00', end: '2024-01-15 11:00:00', color: 'blue', recurrence: { rrule: 'FREQ=WEEKLY;BYDAY=MO;COUNT=12', exdate: ['2024-02-12 10:00:00'], dtstart: '2024-01-15 10:00:00' } };
ScheduleRecurringOverrideEventData example
Example of override event replacing single series occurrence: const override: ScheduleRecurringOverrideEventData = { id: 'weekly-planning-override', title: 'Weekly planning (moved)', start: '2024-01-17 16:00:00', end: '2024-01-17 17:00:00', color: 'grape', recurringEventId: 'weekly-planning', recurrenceId: '2024-01-15 10:00:00' };
EventPayload custom type example
Example using custom payload type: interface MyEventPayload { description: string; attendees: string[]; location?: string; } const event: ScheduleEventData<MyEventPayload> = { id: 'meeting-1', title: 'Team sync', start: '2024-01-15 10:00:00', end: '2024-01-15 11:00:00', color: 'blue', payload: { description: 'Weekly planning meeting', attendees: ['Alice', 'Bob'], location: 'Conference room A' } };