export type View = 'day' | 'week' | 'month'; export type Locale = 'en' | 'nl' | 'de' | 'fr' | 'es' | 'it' | 'pt' | 'ja' | 'zh' | 'ko' | 'ru' | string; export type TimeFormat = '12h' | '24h'; export type WeekStartsOn = 0 | 1 | 2 | 3 | 4 | 5 | 6; export type NuxtCalendarCompanyConfig = { name: string; logo: string; }; export type NuxtCalendarI18nConfig = { locale: Locale; timezone: string; weekStartsOn: WeekStartsOn; }; export type NuxtCalendarLayoutConfig = { sidePanel: boolean; navigation: boolean; }; export type NuxtCalendarPublicConfig = { teams: Team[]; company: NuxtCalendarCompanyConfig; timeFormat: TimeFormat; i18n: NuxtCalendarI18nConfig; layout: NuxtCalendarLayoutConfig; enableIcsExport: boolean; enableIcsImport: boolean; enableDatabaseSync: boolean; }; export type NuxtCalendarPrivateConfig = { licenseKey: string; }; export interface EventColor { background: string; border: string; backgroundDimmed?: string; } export interface TeamMember { id: string | number; name: string; email?: string; src?: string; alt?: string; color: EventColor; visible: boolean; } export interface Team { id: string | number; name: string; members: TeamMember[]; } export type CalendarEvent = { id: string | number; title: string; start: Date; end: Date; startTime: string; endTime: string; allDay?: boolean; date: Date; meetLink?: string; category?: string; description?: string; location?: string; organizer?: { name: string; email: string; }; attendees?: Array<{ name: string; email: string; rsvp?: boolean; }>; teamMemberId: string | number; teamId: string | number; class?: string; day?: number; _column?: number; _columns?: number; }; export interface Day { date: number; label: string; fullDate: Date; today: boolean; current: boolean; highlight?: boolean; } export interface CurrentTimeIndicator { show: boolean; top: string; time?: string; } export type SlotHeightConfig = 'viewport' | number; export interface IcsEventData { title: string; description?: string; location?: string; start: Date | [number, number, number, number, number]; end?: Date | [number, number, number, number, number]; startInputType?: 'local' | 'utc'; startOutputType?: 'local' | 'utc'; endInputType?: 'local' | 'utc'; endOutputType?: 'local' | 'utc'; organizer?: { name: string; email: string; }; attendees?: Array<{ name: string; email: string; rsvp?: boolean; }>; url?: string; geo?: { lat: number; lon: number; }; categories?: string[]; status?: 'TENTATIVE' | 'CONFIRMED' | 'CANCELLED'; busyStatus?: 'FREE' | 'BUSY' | 'TENTATIVE' | 'OOF'; sequence?: number; uid?: string; created?: Date; lastModified?: Date; } export interface CalendarDatabase { id: string; userId?: string; eventId: string | number; teamId: string | number; teamMemberId: string | number; title: string; description?: string; location?: string; start: Date; end: Date; organizer?: string; attendees?: string; icsData: string; createdAt: Date; updatedAt: Date; }