import React from 'react'; import { BoxProps, ElementProps, Factory, MantineRadius, StylesApiProps } from '@mantine/core'; import { ScheduleLabelsOverride } from '../../labels'; import { DateLabelFormat, DateStringValue, DayOfWeek, ScheduleEventData, ScheduleMode } from '../../types'; import { RenderEvent } from '../ScheduleEvent/ScheduleEvent'; export type MobileMonthViewStylesNames = 'mobileMonthView' | 'mobileMonthViewHeader' | 'mobileMonthViewHeaderBackButton' | 'mobileMonthViewHeaderLabel' | 'mobileMonthViewCalendar' | 'mobileMonthViewWeekdays' | 'mobileMonthViewWeekday' | 'mobileMonthViewWeekdaysCorner' | 'mobileMonthViewWeek' | 'mobileMonthViewWeekNumber' | 'mobileMonthViewDay' | 'mobileMonthViewDayIndicators' | 'mobileMonthViewDayIndicator' | 'mobileMonthViewEventsList' | 'mobileMonthViewEventsHeader' | 'mobileMonthViewEvent' | 'mobileMonthViewEventColor' | 'mobileMonthViewEventBody' | 'mobileMonthViewEventTitle' | 'mobileMonthViewEventTime' | 'mobileMonthViewNoEvents'; export type MobileMonthViewCssVariables = { mobileMonthView: '--mobile-month-view-radius'; }; export interface MobileMonthViewRenderHeaderInput { /** Current interaction mode */ mode: ScheduleMode; /** Current date displayed in the view */ date: Date | string; /** Default header element */ defaultHeader: React.ReactNode; } export interface MobileMonthViewProps extends BoxProps, StylesApiProps, ElementProps<'div'> { __staticSelector?: string; /** Date to display, Date object or date string in `YYYY-MM-DD 00:00:00` format */ date: Date | string; /** Called with the new date value when a date is selected */ onDateChange?: (value: DateStringValue) => void; /** Currently selected date (controlled) */ selectedDate?: Date | string | null; /** Default selected date (uncontrolled) */ defaultSelectedDate?: Date | string | null; /** Called when selected date changes */ onSelectedDateChange?: (value: DateStringValue | null) => void; /** If set, week numbers are displayed in the first column @default false */ withWeekNumbers?: boolean; /** If set, weekdays names are displayed in the first row @default true */ withWeekDays?: boolean; /** Locale passed down to dayjs, overrides value defined on `DatesProvider` */ locale?: string; /** Number 0-6, where 0 – Sunday and 6 – Saturday. @default 1 – Monday */ firstDayOfWeek?: DayOfWeek; /** `dayjs` format for weekdays names. By default, the first letter of the weekday. */ weekdayFormat?: DateLabelFormat; /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday. The default value is defined by `DatesProvider`. */ weekendDays?: DayOfWeek[]; /** Props passed down to the week number button */ getWeekNumberProps?: (weekStartDate: DateStringValue) => Record; /** Props passed down to the day button */ getDayProps?: (date: DateStringValue) => Record; /** Called when day is clicked */ onDayClick?: (date: DateStringValue, event: React.MouseEvent) => void; /** Called with first day of the week when week number is clicked */ onWeekNumberClick?: (date: DateStringValue, event: React.MouseEvent) => void; /** If set, always renders 6 weeks in the month view @default true */ consistentWeeks?: boolean; /** If set, highlights the current day @default true */ highlightToday?: boolean; /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */ radius?: MantineRadius; /** If set, days from the previous and next months are displayed to fill the weeks @default false */ withOutsideDays?: boolean; /** Events to display */ events?: ScheduleEventData[]; /** Labels override for i18n */ labels?: ScheduleLabelsOverride; /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default 'default' */ mode?: ScheduleMode; /** Function to fully customize event rendering, receives all props that would be passed to the root element including children */ renderEvent?: RenderEvent; /** Format for the events list header date @default 'dddd, MMMM D' */ eventsHeaderFormat?: DateLabelFormat; /** Called when the year back button in the header is clicked */ onYearClick?: () => void; /** Called when event is clicked */ onEventClick?: (event: ScheduleEventData, e: React.MouseEvent) => void; /** Custom header renderer, receives object with mode, date, and default header element */ renderHeader?: (input: MobileMonthViewRenderHeaderInput) => React.ReactNode; /** Max number of generated recurring instances per recurring series @default 2000 */ recurrenceExpansionLimit?: number; } export type MobileMonthViewFactory = Factory<{ props: MobileMonthViewProps; ref: HTMLDivElement; stylesNames: MobileMonthViewStylesNames; vars: MobileMonthViewCssVariables; }>; export declare const MobileMonthView: import("@mantine/core").MantineComponent<{ props: MobileMonthViewProps; ref: HTMLDivElement; stylesNames: MobileMonthViewStylesNames; vars: MobileMonthViewCssVariables; }>; export declare namespace MobileMonthView { type Props = MobileMonthViewProps; type Factory = MobileMonthViewFactory; type StylesNames = MobileMonthViewStylesNames; type CssVariables = MobileMonthViewCssVariables; }