import { CSSProperties } from "react"; import { Time } from "./helpers"; export interface QronoCalendarProps { bookableEvents?: EventType[]; bookings?: EventType[]; openPeriods?: EventType[]; closedPeriods?: EventType[]; events?: QronoEventType[]; bookingPickerType: 'dateRangePicker' | 'timeRangePicker' | 'bookableEvents' | 'timeIntervalPicker'; defaultAvailable: boolean; styles?: QronoStylesType; onSelectStart: (startDate?: Date, state?: any) => any; onSelectEnd: (endDate?: Date, state?: any) => any; timezone?: string; bookingConfig?: BookingconfigProps; } export interface BookingconfigProps { defaultCapacity?: number; bookingInterval?: number | "quarterHour" | "halfHour" | "hour" | "day" | "night"; minBookingLength?: number; maxBookingLength?: number; } export interface QronoPickerProps { defaultAvailable: boolean; styles: QronoStylesType; onSelectStart: (startDate?: Date, state?: any) => any; onSelectEnd: (endDate?: Date, state?: any) => any; events: QronoEventType[]; timezone: string; selectedDay: Date | undefined; capacity: number; bookingInterval?: number | "quarterHour" | "halfHour" | "hour" | "day" | "night"; selectDayHandler: (day: Date) => void; blockingPeriods: EventType[]; month: Date; selectMonthHandler: (month: Date) => void; } export interface DateRangePickerProps extends QronoPickerProps { interval: 'day' | 'night'; } export interface QronoSingleDateProps extends QronoPickerProps { isDayDisabled: (day: Date) => boolean; } export interface QronoStylesType { primaryColor?: CSSProperties['backgroundColor']; secondaryColor?: CSSProperties['backgroundColor']; textAccentColor?: CSSProperties['color']; backgroundColor?: CSSProperties['backgroundColor']; panelBackgroundColor?: CSSProperties['backgroundColor']; font?: CSSProperties['font']; textColor?: CSSProperties['color']; } export interface EventType { start: Date; end: Date; timezone?: string; eventType?: 'bookable_event' | 'open_period' | 'closed_period' | 'booking'; } export interface QronoEventType extends EventType { recurrenceRule?: RecurrenceType; capacity?: number; eventType: 'bookable_event' | 'open_period' | 'closed_period' | 'booking'; id?: string; } export interface RecurrenceType { frequence: 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'; interval: number; start: Date; end: Date; exceptions?: Date[] | Date; } export interface SlotsType { start: Time; end: Time; }