@dayflow/core 3.3.3 → 3.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -45,6 +45,12 @@ interface CalendarType {
45
45
  subscribed?: boolean;
46
46
  /** The source of this calendar (e.g., 'Google Calendar', 'iCloud', 'Outlook') */
47
47
  source?: string;
48
+ /** Subscription status and metadata */
49
+ subscription?: {
50
+ url: string;
51
+ status: 'loading' | 'ready' | 'error';
52
+ meta?: Record<string, unknown>;
53
+ };
48
54
  }
49
55
  /**
50
56
  * Theme mode
@@ -186,7 +192,7 @@ declare function getCalendarColorsForHex(hex: string): {
186
192
  };
187
193
 
188
194
  type LocaleCode = string;
189
- type TranslationKey = 'allDay' | 'noEvents' | 'more' | 'eventTitle' | 'dateRange' | 'timeRange' | 'note' | 'addNotePlaceholder' | 'setAsAllDay' | 'setAsTimed' | 'delete' | 'confirm' | 'cancel' | 'today' | 'day' | 'week' | 'month' | 'year' | 'newEvent' | 'newAllDayEvent' | 'newCalendarEvent' | 'newAllDayCalendarEvent' | 'save' | 'deleteCalendar' | 'deleteCalendarMessage' | 'merge' | 'confirmDeleteTitle' | 'confirmDeleteMessage' | 'mergeConfirmTitle' | 'mergeConfirmMessage' | 'expandSidebar' | 'collapseSidebar' | 'calendars' | 'createCalendar' | 'calendarNamePlaceholder' | 'customColor' | 'create' | 'calendarOptions' | 'untitled' | 'search' | 'noResults' | 'calendar' | 'starts' | 'ends' | 'notes' | 'titlePlaceholder' | 'notesPlaceholder' | 'editEvent' | 'viewEvent' | 'done' | 'quickCreateEvent' | 'quickCreatePlaceholder' | 'noSuggestions' | 'newCalendar' | 'refreshAll' | 'tomorrow' | 'importCalendar' | 'exportCalendar' | 'addSchedule' | 'importCalendarMessage' | 'ok' | 'cut' | 'copy' | 'pasteHere' | 'eventSummary' | 'subscribeCalendar' | 'subscribeCalendarTitle' | 'calendarUrl' | 'calendarUrlPlaceholder' | 'subscribe' | 'fetchingCalendar' | 'subscribeError';
195
+ type TranslationKey = 'allDay' | 'noEvents' | 'more' | 'eventTitle' | 'dateRange' | 'timeRange' | 'note' | 'addNotePlaceholder' | 'setAsAllDay' | 'setAsTimed' | 'delete' | 'confirm' | 'cancel' | 'today' | 'day' | 'week' | 'month' | 'year' | 'newEvent' | 'newAllDayEvent' | 'newCalendarEvent' | 'newAllDayCalendarEvent' | 'save' | 'deleteCalendar' | 'deleteCalendarMessage' | 'merge' | 'confirmDeleteTitle' | 'confirmDeleteMessage' | 'mergeConfirmTitle' | 'mergeConfirmMessage' | 'expandSidebar' | 'collapseSidebar' | 'calendars' | 'createCalendar' | 'calendarNamePlaceholder' | 'customColor' | 'create' | 'calendarOptions' | 'untitled' | 'search' | 'noResults' | 'calendar' | 'starts' | 'ends' | 'notes' | 'titlePlaceholder' | 'notesPlaceholder' | 'editEvent' | 'viewEvent' | 'done' | 'quickCreateEvent' | 'quickCreatePlaceholder' | 'noSuggestions' | 'newCalendar' | 'refreshAll' | 'tomorrow' | 'importCalendar' | 'exportCalendar' | 'addSchedule' | 'importCalendarMessage' | 'ok' | 'cut' | 'copy' | 'pasteHere' | 'eventSummary' | 'subscribeCalendar' | 'subscribeCalendarTitle' | 'calendarUrl' | 'calendarUrlPlaceholder' | 'subscribe' | 'fetchingCalendar' | 'subscribeError' | 'calendarAlreadySubscribed';
190
196
  type LocaleDict = Partial<Record<TranslationKey, string>>;
191
197
  type LocaleMessages = Partial<Record<TranslationKey, string>>;
192
198
  interface Locale {
@@ -339,8 +345,10 @@ declare enum ViewType {
339
345
  DAY = "day",
340
346
  WEEK = "week",
341
347
  MONTH = "month",
342
- YEAR = "year"
348
+ YEAR = "year",
349
+ RESOURCE = "resource"
343
350
  }
351
+ type CalendarViewType = ViewType | string;
344
352
  /**
345
353
  * Plugin interface
346
354
  * Defines the basic structure of calendar plugins
@@ -356,7 +364,8 @@ interface CalendarPlugin {
356
364
  * Defines the basic structure of calendar views
357
365
  */
358
366
  interface CalendarView {
359
- type: ViewType;
367
+ type: CalendarViewType;
368
+ label?: string;
360
369
  component: TComponent;
361
370
  config?: Record<string, unknown>;
362
371
  }
@@ -378,7 +387,7 @@ type EventChange = {
378
387
  */
379
388
  interface CalendarCallbacks {
380
389
  onEventBatchChange?: (changes: EventChange[]) => void | Promise<void>;
381
- onViewChange?: (view: ViewType) => void | Promise<void>;
390
+ onViewChange?: (view: CalendarViewType) => void | Promise<void>;
382
391
  onEventCreate?: (event: Event) => void | Promise<void>;
383
392
  onEventUpdate?: (event: Event) => void | Promise<void>;
384
393
  onEventDelete?: (eventId: string) => void | Promise<void>;
@@ -434,7 +443,7 @@ interface CalendarAppConfig {
434
443
  plugins?: CalendarPlugin[];
435
444
  events?: Event[];
436
445
  callbacks?: CalendarCallbacks;
437
- defaultView?: ViewType;
446
+ defaultView?: CalendarViewType;
438
447
  initialDate?: Date;
439
448
  switcherMode?: ViewSwitcherMode;
440
449
  calendars?: CalendarType[];
@@ -460,11 +469,11 @@ interface ReadOnlyConfig {
460
469
  * Internal state of CalendarApp
461
470
  */
462
471
  interface CalendarAppState {
463
- currentView: ViewType;
472
+ currentView: CalendarViewType;
464
473
  currentDate: Date;
465
474
  events: Event[];
466
475
  plugins: Map<string, CalendarPlugin>;
467
- views: Map<ViewType, CalendarView>;
476
+ views: Map<CalendarViewType, CalendarView>;
468
477
  switcherMode?: ViewSwitcherMode;
469
478
  locale: string | Locale;
470
479
  highlightedEventId?: string | null;
@@ -480,10 +489,11 @@ interface CalendarAppState {
480
489
  interface ICalendarApp {
481
490
  state: CalendarAppState;
482
491
  getReadOnlyConfig: () => ReadOnlyConfig;
492
+ canMutateFromUI: () => boolean;
483
493
  subscribe: (listener: (app: ICalendarApp) => void) => () => void;
484
- changeView: (view: ViewType) => void;
494
+ changeView: (view: CalendarViewType) => void;
485
495
  getCurrentView: () => CalendarView;
486
- getViewConfig: (viewType: ViewType) => Record<string, unknown>;
496
+ getViewConfig: (viewType: CalendarViewType) => Record<string, unknown>;
487
497
  setCurrentDate: (date: Date) => void;
488
498
  getCurrentDate: () => Date;
489
499
  goToToday: () => void;
@@ -500,8 +510,10 @@ interface ICalendarApp {
500
510
  delete?: string[];
501
511
  }, isPending?: boolean, source?: 'drag' | 'resize') => void;
502
512
  addEvent: (event: Event) => void;
503
- updateEvent: (id: string, event: Partial<Event>, isPending?: boolean, source?: 'drag' | 'resize') => void;
504
- deleteEvent: (id: string) => void;
513
+ /** Add events from external sources (like subscriptions) without persisting to main DB */
514
+ addExternalEvents: (calendarId: string, events: Event[]) => void;
515
+ updateEvent: (id: string, event: Partial<Event>, isPending?: boolean, source?: 'drag' | 'resize') => Promise<void>;
516
+ deleteEvent: (id: string) => Promise<void>;
505
517
  getEvents: () => Event[];
506
518
  getAllEvents: () => Event[];
507
519
  onEventClick: (event: Event) => void;
@@ -513,9 +525,9 @@ interface ICalendarApp {
513
525
  setCalendarVisibility: (calendarId: string, visible: boolean) => void;
514
526
  setAllCalendarsVisibility: (visible: boolean) => void;
515
527
  updateCalendar: (id: string, updates: Partial<CalendarType>, isPending?: boolean) => void;
516
- createCalendar: (calendar: CalendarType) => void;
517
- deleteCalendar: (id: string) => void;
518
- mergeCalendars: (sourceId: string, targetId: string) => void;
528
+ createCalendar: (calendar: CalendarType) => Promise<void>;
529
+ deleteCalendar: (id: string) => Promise<void>;
530
+ mergeCalendars: (sourceId: string, targetId: string) => Promise<void>;
519
531
  setVisibleMonth: (date: Date) => void;
520
532
  getVisibleMonth: () => Date;
521
533
  emitVisibleRange: (start: Date, end: Date, reason?: RangeChangeReason) => void;
@@ -540,7 +552,7 @@ interface ICalendarApp {
540
552
  */
541
553
  interface UseCalendarAppReturn {
542
554
  app: ICalendarApp;
543
- currentView: ViewType;
555
+ currentView: CalendarViewType;
544
556
  currentDate: Date;
545
557
  events: Event[];
546
558
  applyEventsChanges: (changes: {
@@ -551,19 +563,19 @@ interface UseCalendarAppReturn {
551
563
  }>;
552
564
  delete?: string[];
553
565
  }, isPending?: boolean, source?: 'drag' | 'resize') => void;
554
- changeView: (view: ViewType) => void;
566
+ changeView: (view: CalendarViewType) => void;
555
567
  setCurrentDate: (date: Date) => void;
556
568
  addEvent: (event: Event) => void;
557
- updateEvent: (id: string, event: Partial<Event>, isPending?: boolean, source?: 'drag' | 'resize') => void;
558
- deleteEvent: (id: string) => void;
569
+ updateEvent: (id: string, event: Partial<Event>, isPending?: boolean, source?: 'drag' | 'resize') => Promise<void>;
570
+ deleteEvent: (id: string) => Promise<void>;
559
571
  goToToday: () => void;
560
572
  goToPrevious: () => void;
561
573
  goToNext: () => void;
562
574
  selectDate: (date: Date) => void;
563
575
  undo: () => void;
564
576
  getCalendars: () => CalendarType[];
565
- createCalendar: (calendar: CalendarType) => void;
566
- mergeCalendars: (sourceId: string, targetId: string) => void;
577
+ createCalendar: (calendar: CalendarType) => Promise<void>;
578
+ mergeCalendars: (sourceId: string, targetId: string) => Promise<void>;
567
579
  setCalendarVisibility: (calendarId: string, visible: boolean) => void;
568
580
  setAllCalendarsVisibility: (visible: boolean) => void;
569
581
  getAllEvents: () => Event[];
@@ -571,6 +583,7 @@ interface UseCalendarAppReturn {
571
583
  setVisibleMonth: (date: Date) => void;
572
584
  getVisibleMonth: () => Date;
573
585
  emitVisibleRange: (start: Date, end: Date, reason?: RangeChangeReason) => void;
586
+ canMutateFromUI: () => boolean;
574
587
  readOnlyConfig: ReadOnlyConfig;
575
588
  }
576
589
  /**
@@ -599,17 +612,17 @@ interface CalendarConfig {
599
612
  };
600
613
  }
601
614
  interface UseCalendarReturn {
602
- view: ViewType;
615
+ view: CalendarViewType;
603
616
  currentDate: Date;
604
617
  events: Event[];
605
618
  currentWeekStart: Date;
606
- changeView: (view: ViewType) => void;
619
+ changeView: (view: CalendarViewType) => void;
607
620
  goToToday: () => void;
608
621
  goToPrevious: () => void;
609
622
  goToNext: () => void;
610
623
  selectDate: (date: Date) => void;
611
- updateEvent: (eventId: string, updates: Partial<Event>, isPending?: boolean) => void;
612
- deleteEvent: (eventId: string) => void;
624
+ updateEvent: (eventId: string, updates: Partial<Event>, isPending?: boolean) => Promise<void>;
625
+ deleteEvent: (eventId: string) => Promise<void>;
613
626
  addEvent: (event: Omit<Event, 'id'>) => void;
614
627
  setEvents: (events: Event[] | ((prev: Event[]) => Event[])) => void;
615
628
  }
@@ -952,9 +965,9 @@ interface EventDetailPanelProps {
952
965
  /** Selected event element reference */
953
966
  selectedEventElementRef: RefObject<HTMLElement | null>;
954
967
  /** Event update callback */
955
- onEventUpdate: (updatedEvent: Event) => void;
968
+ onEventUpdate: (updatedEvent: Event) => void | Promise<void>;
956
969
  /** Event delete callback */
957
- onEventDelete: (eventId: string) => void;
970
+ onEventDelete: (eventId: string) => void | Promise<void>;
958
971
  /** Close panel callback (optional) */
959
972
  onClose?: () => void;
960
973
  }
@@ -971,9 +984,9 @@ interface EventDetailContentProps {
971
984
  /** Whether the event is all-day */
972
985
  isAllDay: boolean;
973
986
  /** Event update callback */
974
- onEventUpdate: (updatedEvent: Event) => void;
987
+ onEventUpdate: (updatedEvent: Event) => void | Promise<void>;
975
988
  /** Event delete callback */
976
- onEventDelete: (eventId: string) => void;
989
+ onEventDelete: (eventId: string) => void | Promise<void>;
977
990
  /** Close panel callback (optional) */
978
991
  onClose?: () => void;
979
992
  app?: ICalendarApp;
@@ -993,9 +1006,9 @@ interface EventDetailDialogProps {
993
1006
  /** Whether the event is all-day */
994
1007
  isAllDay: boolean;
995
1008
  /** Event update callback */
996
- onEventUpdate: (updatedEvent: Event) => void;
1009
+ onEventUpdate: (updatedEvent: Event) => void | Promise<void>;
997
1010
  /** Event delete callback */
998
- onEventDelete: (eventId: string) => void;
1011
+ onEventDelete: (eventId: string) => void | Promise<void>;
999
1012
  /** Close dialog callback */
1000
1013
  onClose: () => void;
1001
1014
  app?: ICalendarApp;
@@ -1145,13 +1158,13 @@ type TimeZoneValue = TimeZone | string;
1145
1158
  interface BaseViewProps<TConfig = unknown> {
1146
1159
  app: ICalendarApp;
1147
1160
  currentDate?: Date;
1148
- currentView?: ViewType;
1161
+ currentView?: CalendarViewType;
1149
1162
  events?: Event[];
1150
- onEventUpdate?: (event: Event) => void;
1151
- onEventDelete?: (eventId: string) => void;
1163
+ onEventUpdate?: (event: Event) => void | Promise<void>;
1164
+ onEventDelete?: (eventId: string) => void | Promise<void>;
1152
1165
  onEventCreate?: (event: Event) => void;
1153
1166
  onDateChange?: (date: Date) => void;
1154
- onViewChange?: (view: ViewType) => void;
1167
+ onViewChange?: (view: CalendarViewType) => void;
1155
1168
  config: TConfig;
1156
1169
  selectedEventId?: string | null;
1157
1170
  onEventSelect?: (eventId: string | null) => void;
@@ -1272,7 +1285,7 @@ interface YearViewConfig extends ViewFactoryConfig {
1272
1285
  * Adapter properties for wrapping original components
1273
1286
  */
1274
1287
  interface ViewAdapterProps extends BaseViewProps {
1275
- viewType: ViewType;
1288
+ viewType: CalendarViewType;
1276
1289
  originalComponent: AnyComponent<any, any>;
1277
1290
  config: ViewFactoryConfig;
1278
1291
  className?: string;
@@ -1359,7 +1372,7 @@ interface ColorPickerProps {
1359
1372
  }
1360
1373
  interface CreateCalendarDialogProps {
1361
1374
  onClose: () => void;
1362
- onCreate: (calendar: CalendarType) => void;
1375
+ onCreate: (calendar: CalendarType) => void | Promise<void>;
1363
1376
  app: ICalendarApp;
1364
1377
  }
1365
1378
  /**
@@ -1370,8 +1383,8 @@ interface EventsService {
1370
1383
  getAll: () => Event[];
1371
1384
  getById: (id: string) => Event | undefined;
1372
1385
  add: (event: Event) => void;
1373
- update: (id: string, updates: Partial<Event>) => Event;
1374
- delete: (id: string) => void;
1386
+ update: (id: string, updates: Partial<Event>) => void | Promise<void>;
1387
+ delete: (id: string) => void | Promise<void>;
1375
1388
  getByDate: (date: Date) => Event[];
1376
1389
  getByDateRange: (startDate: Date, endDate: Date) => Event[];
1377
1390
  getByDay: (dayIndex: number, weekStart: Date) => Event[];
@@ -1522,6 +1535,7 @@ declare class CalendarApp implements ICalendarApp {
1522
1535
  private pendingSnapshot;
1523
1536
  private pendingChangeSource;
1524
1537
  private readonly MAX_UNDO_STACK;
1538
+ private externalEvents;
1525
1539
  constructor(config: CalendarAppConfig);
1526
1540
  private setupStoreListeners;
1527
1541
  private static resolveLocale;
@@ -1530,12 +1544,8 @@ declare class CalendarApp implements ICalendarApp {
1530
1544
  private pushToUndo;
1531
1545
  undo: () => void;
1532
1546
  getReadOnlyConfig: () => ReadOnlyConfig;
1533
- /**
1534
- * Helper to check if the calendar is in any form of read-only mode.
1535
- * If readOnly config is present, it's considered non-editable.
1536
- */
1537
- private isInternalEditable;
1538
- changeView: (view: ViewType) => void;
1547
+ canMutateFromUI: () => boolean;
1548
+ changeView: (view: CalendarViewType) => void;
1539
1549
  getCurrentView: () => CalendarView;
1540
1550
  emitVisibleRange: (start: Date, end: Date, reason?: RangeChangeReason) => void;
1541
1551
  handleVisibleRangeChange: (reason: RangeChangeReason) => void;
@@ -1556,8 +1566,18 @@ declare class CalendarApp implements ICalendarApp {
1556
1566
  delete?: string[];
1557
1567
  }, isPending?: boolean, source?: "drag" | "resize") => void;
1558
1568
  addEvent: (event: Event) => void;
1559
- updateEvent: (id: string, eventUpdate: Partial<Event>, isPending?: boolean, source?: "drag" | "resize") => void;
1560
- deleteEvent: (id: string) => void;
1569
+ /**
1570
+ * Add external events to the state without persisting to the core store.
1571
+ * This is used for temporary/subscription-based events.
1572
+ */
1573
+ addExternalEvents: (calendarId: string, events: Event[]) => void;
1574
+ /**
1575
+ * Synchronize all events (core + external) into the main state.events array.
1576
+ * This ensures all views and plugins that listen to state.events see the combined list.
1577
+ */
1578
+ private syncExternalEventsToState;
1579
+ updateEvent: (id: string, eventUpdate: Partial<Event>, isPending?: boolean, source?: "drag" | "resize") => Promise<void>;
1580
+ deleteEvent: (id: string) => Promise<void>;
1561
1581
  getAllEvents: () => Event[];
1562
1582
  onEventClick: (event: Event) => void;
1563
1583
  onMoreEventsClick: (date: Date) => void;
@@ -1570,16 +1590,16 @@ declare class CalendarApp implements ICalendarApp {
1570
1590
  setCalendarVisibility: (calendarId: string, visible: boolean) => void;
1571
1591
  setAllCalendarsVisibility: (visible: boolean) => void;
1572
1592
  updateCalendar: (id: string, updates: Partial<CalendarType>, isPending?: boolean) => void;
1573
- createCalendar: (calendar: CalendarType) => void;
1574
- deleteCalendar: (id: string) => void;
1575
- mergeCalendars: (sourceId: string, targetId: string) => void;
1593
+ createCalendar: (calendar: CalendarType) => Promise<void>;
1594
+ deleteCalendar: (id: string) => Promise<void>;
1595
+ mergeCalendars: (sourceId: string, targetId: string) => Promise<void>;
1576
1596
  getCalendarHeaderConfig: () => boolean | ((props: CalendarHeaderProps) => TNode);
1577
1597
  private installPlugin;
1578
1598
  getPlugin: <T = unknown>(name: string) => T | undefined;
1579
1599
  hasPlugin: (name: string) => boolean;
1580
1600
  getPluginConfig: (pluginName: string) => Record<string, unknown>;
1581
1601
  updatePluginConfig: (pluginName: string, config: Record<string, unknown>) => void;
1582
- getViewConfig: (viewType: ViewType) => Record<string, unknown>;
1602
+ getViewConfig: (viewType: CalendarViewType) => Record<string, unknown>;
1583
1603
  triggerRender: () => void;
1584
1604
  getCalendarRegistry: () => CalendarRegistry;
1585
1605
  getUseEventDetailDialog: () => boolean;
@@ -2793,6 +2813,16 @@ interface RestoredTimedDragState {
2793
2813
  }
2794
2814
  declare const restoreTimedDragFromAllDayTransition: ({ wasOriginallyAllDay, mouseHour, hourOffset, duration, originalStartHour, originalEndHour, firstHour, lastHour, minDuration, roundToTimeStep, }: RestoreTimedDragOptions) => RestoredTimedDragState;
2795
2815
 
2816
+ interface SubscribeResult {
2817
+ calendar: CalendarType;
2818
+ events: Event[];
2819
+ }
2820
+ /**
2821
+ * Utility to fetch and parse a calendar subscription.
2822
+ * Does not perform any storage operations.
2823
+ */
2824
+ declare function subscribeCalendar(url: string): Promise<SubscribeResult>;
2825
+
2796
2826
  /**
2797
2827
  * Core translation function.
2798
2828
  * 1. Try Intl API for standard terms.
@@ -2927,6 +2957,39 @@ declare const ContextMenuColorPicker: ({ selectedColor, onSelect, onCustomColor,
2927
2957
  onCustomColor?: () => void;
2928
2958
  }) => preact.JSX.Element;
2929
2959
 
2960
+ interface GridContextMenuProps {
2961
+ x: number;
2962
+ y: number;
2963
+ date: Date;
2964
+ onClose: () => void;
2965
+ app: ICalendarApp;
2966
+ onCreateEvent: () => void;
2967
+ viewType?: ViewType;
2968
+ }
2969
+ declare const GridContextMenu: ({ x, y, date, onClose, app, onCreateEvent, viewType, }: GridContextMenuProps) => preact.JSX.Element | null;
2970
+
2971
+ interface EventContextMenuProps {
2972
+ event: Event;
2973
+ x: number;
2974
+ y: number;
2975
+ onClose: () => void;
2976
+ app: ICalendarApp;
2977
+ onDetailPanelToggle?: (id: string | null) => void;
2978
+ detailPanelKey: string;
2979
+ }
2980
+ declare const EventContextMenu: ({ event, x, y, onClose, app, }: EventContextMenuProps) => preact.JSX.Element | null;
2981
+
2982
+ interface ButtonProps extends Omit<JSX.HTMLAttributes<HTMLButtonElement>, 'onClick'> {
2983
+ loading?: boolean;
2984
+ loadingText?: string;
2985
+ onClick?: (e: JSX.TargetedMouseEvent<HTMLButtonElement>) => void | Promise<void>;
2986
+ children?: ComponentChildren;
2987
+ disabled?: boolean;
2988
+ type?: 'button' | 'submit' | 'reset';
2989
+ className?: string;
2990
+ }
2991
+ declare const LoadingButton: ({ children, onClick, loading: propLoading, loadingText, disabled, className, type, ...props }: ButtonProps) => JSX.Element;
2992
+
2930
2993
  interface BlossomColorPickerProps extends Partial<BlossomColorPickerOptions> {
2931
2994
  className?: string;
2932
2995
  }
@@ -2942,6 +3005,30 @@ interface DefaultColorPickerProps {
2942
3005
  }
2943
3006
  declare const DefaultColorPicker: ({ color, onChange, onClose, }: DefaultColorPickerProps) => preact.JSX.Element;
2944
3007
 
3008
+ type ZonedRange = [Temporal.ZonedDateTime, Temporal.ZonedDateTime];
3009
+ interface RangePickerProps {
3010
+ value: [
3011
+ Temporal.PlainDate | Temporal.PlainDateTime | Temporal.ZonedDateTime,
3012
+ Temporal.PlainDate | Temporal.PlainDateTime | Temporal.ZonedDateTime
3013
+ ];
3014
+ format?: string;
3015
+ showTimeFormat?: string;
3016
+ showTime?: boolean | {
3017
+ format?: string;
3018
+ };
3019
+ onChange?: (value: ZonedRange, dateString: [string, string]) => void;
3020
+ onOk?: (value: ZonedRange, dateString: [string, string]) => void;
3021
+ timeZone?: string;
3022
+ disabled?: boolean;
3023
+ placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';
3024
+ autoAdjustOverflow?: boolean;
3025
+ getPopupContainer?: () => HTMLElement;
3026
+ matchTriggerWidth?: boolean;
3027
+ locale?: string | Locale;
3028
+ }
3029
+
3030
+ declare const RangePicker: ({ value, format, showTimeFormat, showTime, onChange, onOk, timeZone, disabled, placement, autoAdjustOverflow, getPopupContainer, matchTriggerWidth, locale, }: RangePickerProps) => JSX.Element;
3031
+
2945
3032
  interface MiniCalendarProps {
2946
3033
  visibleMonth: Date;
2947
3034
  currentDate: Date;
@@ -2954,6 +3041,23 @@ declare const MiniCalendar: ({ visibleMonth, currentDate, showHeader, onMonthCha
2954
3041
 
2955
3042
  declare const CreateCalendarDialog: ({ onClose, onCreate, app, }: CreateCalendarDialogProps) => preact.VNode<any> | null;
2956
3043
 
3044
+ interface DefaultEventDetailPanelProps extends EventDetailPanelProps {
3045
+ app?: ICalendarApp;
3046
+ }
3047
+ /**
3048
+ * Default event detail panel component
3049
+ */
3050
+ declare const DefaultEventDetailPanel: ({ event, position, panelRef, isAllDay: _isAllDay, eventVisibility, calendarRef, selectedEventElementRef, onEventUpdate, onEventDelete, onClose: _onClose, app, }: DefaultEventDetailPanelProps) => preact.VNode<any> | null;
3051
+
3052
+ interface DefaultEventDetailDialogProps extends EventDetailDialogProps {
3053
+ app?: ICalendarApp;
3054
+ }
3055
+ /**
3056
+ * Default event detail dialog component (Dialog mode)
3057
+ * Content is consistent with DefaultEventDetailPanel, but displayed using Dialog/Modal
3058
+ */
3059
+ declare const DefaultEventDetailDialog: ({ event, isOpen, onEventUpdate, onEventDelete, onClose, app, }: DefaultEventDetailDialogProps) => preact.VNode<any> | null;
3060
+
2957
3061
  interface ContentSlotProps {
2958
3062
  generatorName: string | null;
2959
3063
  generatorArgs?: unknown;
@@ -2967,19 +3071,114 @@ interface ContentSlotProps {
2967
3071
  */
2968
3072
  declare function ContentSlot({ generatorName, generatorArgs, defaultContent, store: propStore, }: ContentSlotProps): preact.JSX.Element;
2969
3073
 
3074
+ interface MultiDayEventSegment {
3075
+ id: string;
3076
+ originalEventId: string;
3077
+ event: Event;
3078
+ startDayIndex: number;
3079
+ endDayIndex: number;
3080
+ segmentType: 'start' | 'middle' | 'end' | 'single' | 'start-week-end' | 'end-week-start';
3081
+ totalDays: number;
3082
+ segmentIndex: number;
3083
+ isFirstSegment: boolean;
3084
+ isLastSegment: boolean;
3085
+ yPosition?: number;
3086
+ }
3087
+
3088
+ interface YearMultiDaySegment {
3089
+ id: string;
3090
+ event: Event;
3091
+ startCellIndex: number;
3092
+ endCellIndex: number;
3093
+ isFirstSegment: boolean;
3094
+ isLastSegment: boolean;
3095
+ visualRowIndex: number;
3096
+ }
3097
+
3098
+ interface CalendarEventProps {
3099
+ event: Event;
3100
+ layout?: EventLayout;
3101
+ isAllDay?: boolean;
3102
+ allDayHeight?: number;
3103
+ calendarRef: RefObject<HTMLDivElement>;
3104
+ isBeingDragged?: boolean;
3105
+ isBeingResized?: boolean;
3106
+ viewType: ViewType;
3107
+ isMultiDay?: boolean;
3108
+ segment?: MultiDayEventSegment;
3109
+ yearSegment?: YearMultiDaySegment;
3110
+ columnsPerRow?: number;
3111
+ segmentIndex?: number;
3112
+ hourHeight: number;
3113
+ firstHour: number;
3114
+ newlyCreatedEventId?: string | null;
3115
+ selectedEventId?: string | null;
3116
+ detailPanelEventId?: string | null;
3117
+ onMoveStart?: (e: MouseEvent | TouchEvent, event: Event) => void;
3118
+ onResizeStart?: (e: MouseEvent | TouchEvent, event: Event, direction: string) => void;
3119
+ onEventUpdate: (updatedEvent: Event) => void;
3120
+ onEventDelete: (eventId: string) => void;
3121
+ onDetailPanelOpen?: () => void;
3122
+ onEventSelect?: (eventId: string | null) => void;
3123
+ onEventLongPress?: (eventId: string) => void;
3124
+ onDetailPanelToggle?: (eventId: string | null) => void;
3125
+ /** Custom event detail content component (content only, will be wrapped in default panel) */
3126
+ customDetailPanelContent?: EventDetailContentRenderer;
3127
+ /** Custom event detail dialog component (Dialog mode) */
3128
+ customEventDetailDialog?: EventDetailDialogRenderer;
3129
+ /** Multi-day regular event segment information */
3130
+ multiDaySegmentInfo?: {
3131
+ startHour: number;
3132
+ endHour: number;
3133
+ isFirst: boolean;
3134
+ isLast: boolean;
3135
+ dayIndex?: number;
3136
+ };
3137
+ app?: ICalendarApp;
3138
+ /** Whether the current view is in mobile mode */
3139
+ isMobile?: boolean;
3140
+ /** Whether the current view is in mobile sliding mode */
3141
+ isSlidingView?: boolean;
3142
+ /** Force enable touch interactions regardless of isMobile */
3143
+ enableTouch?: boolean;
3144
+ /** Whether to hide the time in the event display (Month view regular events only) */
3145
+ hideTime?: boolean;
3146
+ /** Time format for event display */
3147
+ timeFormat?: '12h' | '24h';
3148
+ /** Optional style override for custom view layouts */
3149
+ styleOverride?: Record<string, string | number>;
3150
+ /** Optional additional class names */
3151
+ className?: string;
3152
+ /** Disable built-in layout calculation and rely on styleOverride */
3153
+ disableDefaultStyle?: boolean;
3154
+ /**
3155
+ * Override the visual content rendered inside the event shell.
3156
+ * The function receives the built-in default content as its argument,
3157
+ * which can be wrapped, replaced, or ignored entirely.
3158
+ */
3159
+ renderVisualContent?: (defaultContent: ComponentChildren) => ComponentChildren;
3160
+ /** Override resize handle orientation for custom views */
3161
+ resizeHandleOrientation?: 'vertical' | 'horizontal';
3162
+ }
3163
+
3164
+ declare const CalendarEvent: ({ event, layout, isAllDay, allDayHeight, calendarRef, isBeingDragged, isBeingResized, viewType, isMultiDay, segment, yearSegment, columnsPerRow, segmentIndex, hourHeight, firstHour, selectedEventId, detailPanelEventId, onMoveStart, onResizeStart, onEventUpdate, onEventDelete, newlyCreatedEventId, onDetailPanelOpen, onEventSelect, onEventLongPress, onDetailPanelToggle, customDetailPanelContent, customEventDetailDialog, multiDaySegmentInfo, app, isMobile, isSlidingView, enableTouch, hideTime, timeFormat, styleOverride, className, disableDefaultStyle, renderVisualContent, resizeHandleOrientation, }: CalendarEventProps) => preact.JSX.Element;
3165
+
2970
3166
  interface IconProps {
2971
3167
  className?: string;
2972
3168
  width?: number;
2973
3169
  height?: number;
3170
+ title?: string;
2974
3171
  }
2975
3172
  declare const ChevronRight: ({ className, width, height, }: IconProps) => preact.JSX.Element;
2976
3173
  declare const ChevronDown: ({ className, width, height, }: IconProps) => preact.JSX.Element;
2977
3174
  declare const Plus: ({ className, width, height }: IconProps) => preact.JSX.Element;
2978
3175
  declare const Check: ({ className, width, height }: IconProps) => preact.JSX.Element;
2979
3176
  declare const ChevronsUpDown: ({ className, width, height, }: IconProps) => preact.JSX.Element;
3177
+ declare const Loader2: ({ className, width, height }: IconProps) => preact.JSX.Element;
2980
3178
  declare const PanelRightClose: ({ className, width, height, }: IconProps) => preact.JSX.Element;
2981
3179
  declare const PanelRightOpen: ({ className, width, height, }: IconProps) => preact.JSX.Element;
2982
3180
  declare const AudioLines: ({ className, width, height, }: IconProps) => preact.JSX.Element;
3181
+ declare const AlertCircle: ({ className, width, height, }: IconProps) => preact.JSX.Element;
2983
3182
 
2984
3183
  /**
2985
3184
  * Cancel button
@@ -3006,5 +3205,5 @@ declare const sidebarHeaderToggle = "df-sidebar-header-toggle flex h-8 w-8 items
3006
3205
  */
3007
3206
  declare const sidebarHeaderTitle = "df-sidebar-header-title text-sm font-semibold text-gray-700 dark:text-gray-200";
3008
3207
 
3009
- export { AudioLines, BlossomColorPicker, CalendarApp, CalendarRegistry, CalendarRenderer, Check, ChevronDown, ChevronRight, ChevronsUpDown, ContentSlot, ContextMenu, ContextMenuColorPicker, ContextMenuItem, ContextMenuLabel, ContextMenuSeparator, CreateCalendarDialog, CustomRenderingStore, DefaultColorPicker, LAYOUT_CONFIG, LOCALES, LocaleContext, LocaleProvider, MiniCalendar, PanelRightClose, PanelRightOpen, Plus, TIME_STEP, TimeZone, VIRTUAL_MONTH_SCROLL_CONFIG, ViewType, WeekDataCache, addDays, buildParseRegExp, calculateDayIndex, calendarPickerDropdown, cancelButton, capitalize, clipboardStore, compareAllDayDisplayPriority, conditionalTheme, convertDateEvent, convertDateEventWithTimeZone, convertToDayFlowEvent, createAllDayDisplayComparator, createAllDayEvent, createDateWithHour, createDayView, createEvent, createEventWithDate, createEventWithPlainDateTime, createEventWithRealDate, createEventWithZonedDateTime, createEvents, createEventsPlugin, createMonthView, createStandardViews, createTemporalWithHour, createTimedEvent, createTimezoneEvent, createTimezoneEvents, createWeekView, createYearView, dateToPlainDate, dateToPlainDateTime, dateToZonedDateTime, daysBetween, daysDifference, downloadICS, en, escapeICSValue, extractHourFromDate, extractHourFromTemporal, extractVEvents, foldLine, formatDate, formatDateConsistent, formatDateToICSTimestamp, formatEventTimeRange, formatICSDate, formatMonthYear, formatProperty, formatTemporal, formatTime, generateDayData, generateICS, generateSecondaryTimeSlots, generateUniKey, generateVEvent, generateWeekData, generateWeekRange, generateWeeksData, getAllDayEventsForDay, getAllDayRangeMetrics, getCalendarColorsForHex, getCurrentWeekDates, getDateByDayIndex, getDateObj, getDayIndexByDate, getEndOfDay, getEndOfTemporal, getEventBgColor, getEventEndHour, getEventTextColor, getEventsForDay, getEventsForWeek, getIntlLabel, getLineColor, getMonthLabels, getMonthYearOfWeek, getPlainDate, getSearchHeaderInfo, getSelectedBgColor, getStartOfDay, getStartOfTemporal, getTestEvents, getTimezoneDisplayLabel, getWeekDaysLabels, getWeekNumber, getWeekRange, getZoneId, groupSearchResults, hasEventChanged, importICSFile, isDate, isDeepEqual, isEventDeepEqual, isEventInWeek, isMultiDayEvent, isMultiDayTemporalEvent, isPlainDate, isPlainDateTime, isSameDay, isSamePlainDate, isSameTemporal, isValidLocale, isZonedDateTime, mergeClasses, mergeFormatTemplate, monthNames, normalizeCssWidth, normalizeDate, normalizeLocale, normalizeToZoned, now, pad, pad2, parseICS, parseICSDate, parseTemporalString, parseVEventLines, plainDateTimeToDate, plainDateToDate, recalculateEventDays, registerDragImplementation, registerLocale, registerSidebarImplementation, resolveAppliedTheme, restoreTimedDragFromAllDayTransition, roundToTimeStep, scrollbarTakesSpace, setHourInTemporal, shortMonthNames, sidebarContainer, sidebarHeader, sidebarHeaderTitle, sidebarHeaderToggle, sortAllDayByTitle, t, temporalToDate, themeClasses, themeCn, today, unescapeICSValue, updateEventDateAndDay, updateEventWithRealDate, useDragForView, useLocale, useSidebarBridge, weekDays, weekDaysFullName, zonedDateTimeToDate };
3010
- export type { AllDaySortComparator, BalanceStrategy, BaseViewProps, CalendarAppConfig, CalendarAppState, CalendarCallbacks, CalendarColors, CalendarConfig, CalendarHeaderProps, CalendarPlugin, CalendarType, CalendarView, CalendarsConfig, ColorPickerProps, CreateCalendarDialogColorPickerProps, CreateCalendarDialogProps, CreateEventParams, CreateTimezoneEventParams, CustomRendering, DayData, DayViewConfig, DayViewProps, DragConfig, DragHookOptions, DragHookReturn, DragIndicatorProps, DragIndicatorRenderer, DragIntegrationProps, DragPluginConfig, DragRef, DragService, Event, EventChange, EventContentSlotArgs, EventDetailContentProps, EventDetailContentRenderer, EventDetailDialogProps, EventDetailDialogRenderer, EventDetailPanelProps, EventDetailPanelRenderer, EventDetailPosition, EventGroup, EventLayout, EventRelations, EventsPluginConfig, EventsService, ICSDateParams, ICSExportOptions, ICSImportOptions, ICSImportResult, ICSParseError, ICSVEvent, ICalendarApp, Locale, LocaleCode, LocaleContextValue, LocaleDict, LocaleMessages, LocaleProviderProps, MobileEventProps, MobileEventRenderer, Mode, MonthDragState, MonthEventDragState, MonthScrollConfig, MonthViewConfig, MonthViewProps, NestedLayer, RangeChangeReason, ReadOnlyConfig, SidebarBridgeReturn, SidebarHeaderSlotArgs, SpecialLayoutRule, SubtreeAnalysis, SupportedLang, TComponent, TNode, ThemeColors, ThemeConfig, ThemeMode, TimeZoneValue, TitleBarSlotProps, TransferOperation, TranslationKey, UnifiedDragRef, UseCalendarAppReturn, UseCalendarReturn, UseDragCommonReturn, UseDragHandlersParams, UseDragHandlersReturn, UseDragManagerReturn, UseDragStateReturn, UseMonthDragParams, UseMonthDragReturn, UseVirtualMonthScrollProps, UseVirtualMonthScrollReturn, UseVirtualScrollProps, UseVirtualScrollReturn, UseWeekDayDragParams, UseWeekDayDragReturn, ViewAdapterProps, ViewFactory, ViewFactoryConfig, VirtualItem, VirtualScrollIntegrationProps, VirtualWeekItem, WeekDayDragState, WeekViewConfig, WeekViewProps, WeeksData, YearViewConfig, YearViewProps, useDragProps, useDragReturn };
3208
+ export { AlertCircle, AudioLines, BlossomColorPicker, CalendarApp, CalendarEvent, CalendarRegistry, CalendarRenderer, Check, ChevronDown, ChevronRight, ChevronsUpDown, ContentSlot, ContextMenu, ContextMenuColorPicker, ContextMenuItem, ContextMenuLabel, ContextMenuSeparator, CreateCalendarDialog, CustomRenderingStore, RangePicker as DayflowRangePicker, DefaultColorPicker, DefaultEventDetailDialog, DefaultEventDetailPanel, EventContextMenu, GridContextMenu, LAYOUT_CONFIG, LOCALES, Loader2, LoadingButton, LocaleContext, LocaleProvider, MiniCalendar, PanelRightClose, PanelRightOpen, Plus, TIME_STEP, TimeZone, VIRTUAL_MONTH_SCROLL_CONFIG, ViewType, WeekDataCache, addDays, buildParseRegExp, calculateDayIndex, calendarPickerDropdown, cancelButton, capitalize, clipboardStore, compareAllDayDisplayPriority, conditionalTheme, convertDateEvent, convertDateEventWithTimeZone, convertToDayFlowEvent, createAllDayDisplayComparator, createAllDayEvent, createDateWithHour, createDayView, createEvent, createEventWithDate, createEventWithPlainDateTime, createEventWithRealDate, createEventWithZonedDateTime, createEvents, createEventsPlugin, createMonthView, createStandardViews, createTemporalWithHour, createTimedEvent, createTimezoneEvent, createTimezoneEvents, createWeekView, createYearView, dateToPlainDate, dateToPlainDateTime, dateToZonedDateTime, daysBetween, daysDifference, downloadICS, en, escapeICSValue, extractHourFromDate, extractHourFromTemporal, extractVEvents, foldLine, formatDate, formatDateConsistent, formatDateToICSTimestamp, formatEventTimeRange, formatICSDate, formatMonthYear, formatProperty, formatTemporal, formatTime, generateDayData, generateICS, generateSecondaryTimeSlots, generateUniKey, generateVEvent, generateWeekData, generateWeekRange, generateWeeksData, getAllDayEventsForDay, getAllDayRangeMetrics, getCalendarColorsForHex, getCurrentWeekDates, getDateByDayIndex, getDateObj, getDayIndexByDate, getEndOfDay, getEndOfTemporal, getEventBgColor, getEventEndHour, getEventTextColor, getEventsForDay, getEventsForWeek, getIntlLabel, getLineColor, getMonthLabels, getMonthYearOfWeek, getPlainDate, getSearchHeaderInfo, getSelectedBgColor, getStartOfDay, getStartOfTemporal, getTestEvents, getTimezoneDisplayLabel, getWeekDaysLabels, getWeekNumber, getWeekRange, getZoneId, groupSearchResults, hasEventChanged, importICSFile, isDate, isDeepEqual, isEventDeepEqual, isEventInWeek, isMultiDayEvent, isMultiDayTemporalEvent, isPlainDate, isPlainDateTime, isSameDay, isSamePlainDate, isSameTemporal, isValidLocale, isZonedDateTime, mergeClasses, mergeFormatTemplate, monthNames, normalizeCssWidth, normalizeDate, normalizeLocale, normalizeToZoned, now, pad, pad2, parseICS, parseICSDate, parseTemporalString, parseVEventLines, plainDateTimeToDate, plainDateToDate, recalculateEventDays, registerDragImplementation, registerLocale, registerSidebarImplementation, resolveAppliedTheme, restoreTimedDragFromAllDayTransition, roundToTimeStep, scrollbarTakesSpace, setHourInTemporal, shortMonthNames, sidebarContainer, sidebarHeader, sidebarHeaderTitle, sidebarHeaderToggle, sortAllDayByTitle, subscribeCalendar, t, temporalToDate, themeClasses, themeCn, today, unescapeICSValue, updateEventDateAndDay, updateEventWithRealDate, useDragForView, useLocale, useSidebarBridge, weekDays, weekDaysFullName, zonedDateTimeToDate };
3209
+ export type { AllDaySortComparator, BalanceStrategy, BaseViewProps, CalendarAppConfig, CalendarAppState, CalendarCallbacks, CalendarColors, CalendarConfig, CalendarEventProps, CalendarHeaderProps, CalendarPlugin, CalendarType, CalendarView, CalendarViewType, CalendarsConfig, ColorPickerProps, CreateCalendarDialogColorPickerProps, CreateCalendarDialogProps, CreateEventParams, CreateTimezoneEventParams, CustomRendering, DayData, DayViewConfig, DayViewProps, DragConfig, DragHookOptions, DragHookReturn, DragIndicatorProps, DragIndicatorRenderer, DragIntegrationProps, DragPluginConfig, DragRef, DragService, Event, EventChange, EventContentSlotArgs, EventDetailContentProps, EventDetailContentRenderer, EventDetailDialogProps, EventDetailDialogRenderer, EventDetailPanelProps, EventDetailPanelRenderer, EventDetailPosition, EventGroup, EventLayout, EventRelations, EventsPluginConfig, EventsService, ICSDateParams, ICSExportOptions, ICSImportOptions, ICSImportResult, ICSParseError, ICSVEvent, ICalendarApp, Locale, LocaleCode, LocaleContextValue, LocaleDict, LocaleMessages, LocaleProviderProps, MobileEventProps, MobileEventRenderer, Mode, MonthDragState, MonthEventDragState, MonthScrollConfig, MonthViewConfig, MonthViewProps, NestedLayer, RangeChangeReason, RangePickerProps, ReadOnlyConfig, SidebarBridgeReturn, SidebarHeaderSlotArgs, SpecialLayoutRule, SubscribeResult, SubtreeAnalysis, SupportedLang, TComponent, TNode, ThemeColors, ThemeConfig, ThemeMode, TimeZoneValue, TitleBarSlotProps, TransferOperation, TranslationKey, UnifiedDragRef, UseCalendarAppReturn, UseCalendarReturn, UseDragCommonReturn, UseDragHandlersParams, UseDragHandlersReturn, UseDragManagerReturn, UseDragStateReturn, UseMonthDragParams, UseMonthDragReturn, UseVirtualMonthScrollProps, UseVirtualMonthScrollReturn, UseVirtualScrollProps, UseVirtualScrollReturn, UseWeekDayDragParams, UseWeekDayDragReturn, ViewAdapterProps, ViewFactory, ViewFactoryConfig, VirtualItem, VirtualScrollIntegrationProps, VirtualWeekItem, WeekDayDragState, WeekViewConfig, WeekViewProps, WeeksData, YearViewConfig, YearViewProps, ZonedRange, useDragProps, useDragReturn };