UNPKG

whensday-calendar-lib

Version:

A flexible calendar library with Whensday/Gregorian calendar systems, event management, and customizable UI components

184 lines 4.91 kB
import React from 'react'; export interface WhensdayDate { year: number; month: number; day: number; monthName: string; isWeensday?: boolean; isWhensday?: boolean; } export interface DayInGrid { year: number; month: number; day: number; monthName: string; isWhensdayLeapDay?: boolean; } export interface CalendarDay { date: DayInGrid; isToday: boolean; isCurrentMonth: boolean; } export type CalendarSystem = 'whensday' | 'gregorian'; export type CalendarView = 'month' | 'week' | 'day'; export interface Layer { id: string; name: string; color: string; isVisible: boolean; parentId?: string; } export type EventType = 'event' | 'deadline' | 'task' | 'birthday'; export type DuePeriod = 'morning' | 'afternoon' | 'evening'; export interface LocationDetails { name: string; placeId: string; } export interface Event { id: string; name: string; layerId: string | null; color?: string; startDate: number; endDate?: number; eventType: EventType; isAllDay: boolean; location?: LocationDetails | null; startLocation?: LocationDetails | null; endLocation?: LocationDetails | null; isCompleted?: boolean; tags?: string[]; startTime?: string; endTime?: string; travelTimeBefore?: number; travelTimeAfter?: number; doByDate?: number; doByTime?: string; dueTime?: string; duePeriod?: DuePeriod; isRecurring?: boolean; naturalLanguageRule?: string; recurrenceRule?: string; } export interface SchedulePattern { on: number; off: number; } export interface HolidaySettings { enabled: boolean; onDays: number; holidays: number; bonusDayRate: number; } export interface ScheduleExemption { id: string; startDate: number; endDate: number; resumeAfter: number; } export interface Schedule { id: string; name: string; layerId: string | null; color: string | null; startDate: number; endDate?: number; pattern: SchedulePattern; isVisible: boolean; initialHolidayBalance?: number; bookedHolidays?: number[]; completedDays?: number[]; holidaySettings?: HolidaySettings; exemptions?: ScheduleExemption[]; bonusDays?: number[]; } export interface DragState { eventId: string; offsetY: number; ghostHeightPercent: number; layer: Layer; event: Event; } export interface UserSettings { homeAddress: LocationDetails | null; } export interface CalendarState { view: CalendarView; system: CalendarSystem; displayDate: DayInGrid; calendarGrid: CalendarDay[]; currentMonthName: string; currentYear: number; hourHeight: number; } export interface CalendarEventHandlers { onEventClick?: (event: Event) => void; onEventAdd?: (date: DayInGrid, time?: string) => void; onEventUpdate?: (event: Event) => void; onEventDelete?: (eventId: string) => void; onEventMove?: (eventId: string, newDayTimestamp: number, newStartTime?: string) => void; onDateClick?: (date: DayInGrid) => void; onViewChange?: (view: CalendarView) => void; onSystemChange?: (system: CalendarSystem) => void; } export interface CalendarTheme { colors: { primary: string; secondary: string; accent: string; background: string; surface: string; text: string; textSecondary: string; border: string; today: string; whensdayLeap: string; }; fonts: { primary: string; secondary: string; }; spacing: { xs: string; sm: string; md: string; lg: string; xl: string; }; borderRadius: { sm: string; md: string; lg: string; }; } export interface CalendarProps { events?: Event[]; layers?: Layer[]; schedules?: Schedule[]; view?: CalendarView; system?: CalendarSystem; displayDate?: DayInGrid; onEventClick?: (event: Event) => void; onEventAdd?: (date: DayInGrid, time?: string) => void; onEventUpdate?: (event: Event) => void; onEventDelete?: (eventId: string) => void; onEventMove?: (eventId: string, newDayTimestamp: number, newStartTime?: string) => void; onDateClick?: (date: DayInGrid) => void; onViewChange?: (view: CalendarView) => void; onSystemChange?: (system: CalendarSystem) => void; theme?: Partial<CalendarTheme>; className?: string; style?: React.CSSProperties; enableDragAndDrop?: boolean; enableScheduleManagement?: boolean; enableHolidayBooking?: boolean; enableTravelTime?: boolean; enableRecurringEvents?: boolean; showWeekNumbers?: boolean; showTodayIndicator?: boolean; showHolidayIndicators?: boolean; showScheduleIndicators?: boolean; locale?: string; weekStart?: 0 | 1; } //# sourceMappingURL=index.d.ts.map