export interface CalendarEvent { id: string title: string description?: string reference?: string start_time: Date end_time: Date color?: string category?: string allDay?: boolean meta?: Record } export type CalendarView = 'Week' | 'Month' | 'Day' | 'Agenda' export type WeekStart = 'Sunday' | 'Monday' export interface AvailabilitySlot { start_time: Date end_time: Date } export interface CalendarProps { events?: CalendarEvent[] startDate?: Date view?: CalendarView weekStart?: WeekStart /** When true, renders availability blocks on the week grid */ availabilityMode?: boolean /** When true, allows drag-to-paint editing of availability (requires availabilityMode) */ availabilityEditable?: boolean /** Existing availability slots to display as painted blocks */ availabilitySlots?: AvailabilitySlot[] } export interface CalendarViewState { currentView?: CalendarView weekStart?: WeekStart visibleDateRange?: { start: Date, end: Date } currentDate?: Date }