Calendarkit Pro V2

Props Reference

Complete reference for all ProScheduler props.

Props Reference

Full list of props accepted by <ProScheduler /> (alias <Scheduler />).

Core

PropTypeDefaultDescription
eventsCalendarEvent[][]Array of events to display
viewViewTypeControlled active view: 'month' | 'week' | 'day' | 'agenda' | 'resource'
dateDateControlled focused date
onViewChange(view: ViewType) => voidCalled when the user switches views
onDateChange(date: Date) => voidCalled when the user navigates to a different date
readOnlybooleanfalseDisables all editing interactions (drag, resize, create, modal)
isLoadingbooleanfalseShows skeleton placeholders instead of the actual calendar
classNamestringExtra class name applied to the root element

Event callbacks

PropTypeDescription
onEventCreate(event: Partial<CalendarEvent>) => voidCalled when the user saves a new event from the modal
onEventUpdate(event: CalendarEvent) => voidCalled when the user saves edits to an existing event
onEventDelete(eventId: string) => voidCalled when the user deletes an event
onEventClick(event: CalendarEvent) => voidCalled when the user clicks an event (before the modal opens)
onEventDrop(event: CalendarEvent, start: Date, end: Date) => voidCalled after a drag-and-drop completes
onEventResize(event: CalendarEvent, start: Date, end: Date) => voidCalled after an event is resized

Multi-calendar

PropTypeDefaultDescription
calendars{ id: string; label: string; color?: string; active?: boolean }[]Calendar list shown in the sidebar. Events are filtered by active flag
onCalendarToggle(calendarId: string, active: boolean) => voidCalled when a calendar checkbox is toggled

Resources

PropTypeDescription
resourcesResource[]Columns displayed in the Resource view. Each resource has id, label, color?, avatar?
eventTypesEventType[]Predefined event type presets (id, label, color) shown in the event form

Internationalization

PropTypeDefaultDescription
languageLanguageCode'tr'UI language. Supported: tr en fr de es it pt ar zh ja ko ru nl pl sv
onLanguageChange(lang: LanguageCode) => voidCalled when the user selects a different language
hideLanguageSwitcherbooleanfalseHides the language dropdown from the header while still respecting the language prop
localeLocale (date-fns)date-fns locale for date formatting. Import from DATE_FNS_LOCALES[language]
translationsPartial<CalendarTranslations>Override individual translation strings on top of the selected language

Timezone

PropTypeDescription
timezonestringIANA timezone string (e.g. "America/New_York", "Europe/Istanbul")
onTimezoneChange(tz: string) => voidCalled when the user changes the timezone in the sidebar

Theme & display

PropTypeDefaultDescription
isDarkModebooleanEnables dark mode when true
onThemeToggle() => voidCalled when the dark mode toggle is clicked
themeCalendarThemeCustom colors and border radius (see Theming)
hideViewSwitcherbooleanfalseHides the view buttons from the header
hideFabbooleanfalseHides the mobile create-event FAB (shown below 768px). Also hidden when readOnly is true. See Mobile FAB
compactShortEventsbooleantrueWhen true, short timed events hide time/description (Week < 60 min, Day < 45 min). Set false to always show details
initialScrollHournumber8Hour (0–23) the Week/Day views scroll to on mount
reverseTimebooleanfalseReverses the time axis: 23:00 at top, 00:00 at bottom. Persisted in localStorage

Custom render props

PropSignatureDescription
renderEventForm(props) => ReactNodeReplace the default event modal. See Render Props
renderHeader(props) => ReactNodeReplace the entire header bar
renderMiniCalendar(props) => ReactNodeReplace the sidebar mini-calendar
renderEmptyState(props) => ReactNodeReplace the Agenda view empty state

Extension points

PropTypeDescription
customViewsCustomView[]Extra views added to the header switcher and sidebar. See Custom Views
sidebarMenusSidebarMenuItem[]Extra navigation items in the sidebar. See Sidebar Menus

CalendarTheme shape

interface CalendarTheme {
  colors?: {
    primary?:    string; // e.g. '#3b82f6'
    secondary?:  string;
    background?: string;
    foreground?: string;
    border?:     string;
    muted?:      string;
    accent?:     string;
  };
  fontFamily?:   string;
  borderRadius?: string; // e.g. '0.5rem'
}

Complete example

<ProScheduler
  // Core
  events={filteredEvents}
  view={view}
  onViewChange={setView}
  date={date}
  onDateChange={setDate}

  // Event callbacks
  onEventCreate={handleCreate}
  onEventUpdate={handleUpdate}
  onEventDelete={handleDelete}
  onEventDrop={handleDrop}
  onEventResize={handleResize}

  // Multi-calendar
  calendars={calendars}
  onCalendarToggle={handleCalendarToggle}

  // Resources
  resources={resources}
  eventTypes={eventTypes}

  // i18n
  language="en"
  onLanguageChange={setLanguage}
  locale={DATE_FNS_LOCALES['en']}

  // Timezone
  timezone="America/New_York"
  onTimezoneChange={setTimezone}

  // Theme
  isDarkMode={isDark}
  onThemeToggle={() => setIsDark(!isDark)}

  // Display
  initialScrollHour={9}
  readOnly={false}
  isLoading={isLoading}

  // Extensions
  customViews={myCustomViews}
  sidebarMenus={mySidebarMenus}
/>

On this page