@gobrand/calendar-core 0.0.3

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.
@@ -0,0 +1,245 @@
1
+ import * as _tanstack_store from '@tanstack/store';
2
+ import { Temporal } from '@js-temporal/polyfill';
3
+
4
+ type CalendarAccessor<T> = {
5
+ getDate: (item: T) => Temporal.PlainDate;
6
+ getStart?: (item: T) => Temporal.ZonedDateTime;
7
+ getEnd?: (item: T) => Temporal.ZonedDateTime;
8
+ };
9
+ type CalendarDay<T = unknown> = {
10
+ date: Temporal.PlainDate;
11
+ isCurrentMonth: boolean;
12
+ isToday: boolean;
13
+ items: T[];
14
+ };
15
+ type CalendarWeek<T = unknown> = CalendarDay<T>[];
16
+ type CalendarMonth<T = unknown> = {
17
+ weeks: CalendarWeek<T>[];
18
+ month: Temporal.PlainYearMonth;
19
+ };
20
+ type WeekDay<T = unknown> = {
21
+ date: Temporal.PlainDate;
22
+ isToday: boolean;
23
+ items: T[];
24
+ timeSlots?: TimeSlot<T>[];
25
+ };
26
+ type CalendarWeekView<T = unknown> = {
27
+ days: WeekDay<T>[];
28
+ weekStart: Temporal.PlainDate;
29
+ weekEnd: Temporal.PlainDate;
30
+ };
31
+ type TimeSlot<T = unknown> = {
32
+ hour: number;
33
+ minute: number;
34
+ time: Temporal.PlainTime;
35
+ items: T[];
36
+ };
37
+ type CalendarDayView<T = unknown> = {
38
+ date: Temporal.PlainDate;
39
+ isToday: boolean;
40
+ timeSlots: TimeSlot<T>[];
41
+ items: T[];
42
+ };
43
+ type DateRange = {
44
+ start: Temporal.ZonedDateTime;
45
+ end: Temporal.ZonedDateTime;
46
+ };
47
+ type Updater<T> = T | ((old: T) => T);
48
+ type CalendarState = {
49
+ referenceDate: Temporal.PlainDate;
50
+ currentView?: string;
51
+ dateRange: DateRange;
52
+ };
53
+ type MonthViewOptions<T> = {
54
+ accessor: CalendarAccessor<T>;
55
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
56
+ };
57
+ type WeekViewOptions<T> = {
58
+ accessor: CalendarAccessor<T>;
59
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
60
+ startHour?: number;
61
+ endHour?: number;
62
+ slotDuration?: number;
63
+ };
64
+ type DayViewOptions<T> = {
65
+ accessor: CalendarAccessor<T>;
66
+ startHour?: number;
67
+ endHour?: number;
68
+ slotDuration?: number;
69
+ };
70
+ type CalendarViewOptions<T> = {
71
+ month?: MonthViewOptions<T>;
72
+ week?: WeekViewOptions<T>;
73
+ day?: DayViewOptions<T>;
74
+ };
75
+ type CalendarOptions<T> = {
76
+ data: T[];
77
+ views: CalendarViewOptions<T>;
78
+ timeZone?: 'UTC' | string;
79
+ state?: Partial<CalendarState>;
80
+ onStateChange?: (updater: Updater<CalendarState>) => void;
81
+ };
82
+ type HasView<Options, View extends 'month' | 'week' | 'day'> = Options extends {
83
+ views: infer V;
84
+ } ? V extends Record<View, unknown> ? V[View] extends undefined ? false : true : false : false;
85
+ type MonthMethods<T, Options> = HasView<Options, 'month'> extends true ? {
86
+ getMonth(): CalendarMonth<T>;
87
+ nextMonth(): void;
88
+ previousMonth(): void;
89
+ goToMonth(year: number, month: number): void;
90
+ } : {
91
+ getMonth?: never;
92
+ nextMonth?: never;
93
+ previousMonth?: never;
94
+ goToMonth?: never;
95
+ };
96
+ type WeekMethods<T, Options> = HasView<Options, 'week'> extends true ? {
97
+ getWeek(): CalendarWeekView<T>;
98
+ nextWeek(): void;
99
+ previousWeek(): void;
100
+ } : {
101
+ getWeek?: never;
102
+ nextWeek?: never;
103
+ previousWeek?: never;
104
+ };
105
+ type DayMethods<T, Options> = HasView<Options, 'day'> extends true ? {
106
+ getDay(): CalendarDayView<T>;
107
+ nextDay(): void;
108
+ previousDay(): void;
109
+ } : {
110
+ getDay?: never;
111
+ nextDay?: never;
112
+ previousDay?: never;
113
+ };
114
+ type ValidViews<Options> = Options extends {
115
+ views: infer V;
116
+ } ? keyof V & string : never;
117
+ type BaseCalendarMethods<Options> = {
118
+ getTitle(view: ValidViews<Options>, locales?: Temporal.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string;
119
+ getState(): CalendarState;
120
+ setState(updater: CalendarState | ((old: CalendarState) => Partial<CalendarState>)): void;
121
+ goToToday(): void;
122
+ goToDate(date: Temporal.PlainDate): void;
123
+ next(view: ValidViews<Options>): void;
124
+ previous(view: ValidViews<Options>): void;
125
+ views: ReadonlyArray<ValidViews<Options>>;
126
+ currentView: ValidViews<Options>;
127
+ setCurrentView(view: ValidViews<Options>): void;
128
+ dateRange: DateRange;
129
+ options: Options;
130
+ setOptions(updater: (old: Options) => Options): void;
131
+ store: _tanstack_store.Store<CalendarState>;
132
+ };
133
+ type ViewsToOptions<T, V extends CalendarViewOptions<T>> = {
134
+ data: T[];
135
+ views: V;
136
+ };
137
+ type Calendar<T, OptionsOrViews = CalendarOptions<T>> = OptionsOrViews extends CalendarOptions<T> ? BaseCalendarMethods<OptionsOrViews> & MonthMethods<T, OptionsOrViews> & WeekMethods<T, OptionsOrViews> & DayMethods<T, OptionsOrViews> : OptionsOrViews extends CalendarViewOptions<T> ? BaseCalendarMethods<ViewsToOptions<T, OptionsOrViews>> & MonthMethods<T, ViewsToOptions<T, OptionsOrViews>> & WeekMethods<T, ViewsToOptions<T, OptionsOrViews>> & DayMethods<T, ViewsToOptions<T, OptionsOrViews>> : BaseCalendarMethods<CalendarOptions<T>> & MonthMethods<T, CalendarOptions<T>> & WeekMethods<T, CalendarOptions<T>> & DayMethods<T, CalendarOptions<T>>;
138
+ type InferViewNames<V extends CalendarViewOptions<unknown>> = keyof V & string;
139
+ type InferViewConfig<V extends CalendarViewOptions<unknown>, Name extends keyof V> = V[Name] extends infer Config ? {
140
+ name: Name;
141
+ config: Config;
142
+ } : never;
143
+
144
+ declare function functionalUpdate<T>(updater: T | ((old: T) => T), input: T): T;
145
+ declare function createCalendarAccessor<T, A extends CalendarAccessor<T> = CalendarAccessor<T>>(accessor: A): A;
146
+ declare function nextMonth(month: Temporal.PlainYearMonth): Temporal.PlainYearMonth;
147
+ declare function previousMonth(month: Temporal.PlainYearMonth): Temporal.PlainYearMonth;
148
+ declare function nextWeek(date: Temporal.PlainDate): Temporal.PlainDate;
149
+ declare function previousWeek(date: Temporal.PlainDate): Temporal.PlainDate;
150
+ declare function nextDay(date: Temporal.PlainDate): Temporal.PlainDate;
151
+ declare function previousDay(date: Temporal.PlainDate): Temporal.PlainDate;
152
+ declare function goToToday(): {
153
+ year: number;
154
+ month: number;
155
+ };
156
+ declare function getWeekdays(weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, locale?: string | string[], format?: 'short' | 'long' | 'narrow'): string[];
157
+ declare function getMonthName(month: Temporal.PlainYearMonth, locale?: string): string;
158
+ declare function formatTime(time: Temporal.PlainTime, locale?: string): string;
159
+ declare function getTimeSlotHeight(slotDuration: number, hourHeight: number): number;
160
+ declare function getEventPosition(eventStart: Temporal.ZonedDateTime, eventEnd: Temporal.ZonedDateTime, dayStart: number, hourHeight: number): {
161
+ top: number;
162
+ height: number;
163
+ };
164
+ declare function convertToTimezone(dateTime: Temporal.ZonedDateTime, timeZone: string): Temporal.ZonedDateTime;
165
+ declare function getTimezoneOffset(dateTime: Temporal.ZonedDateTime): string;
166
+ declare function createZonedDateTime(date: Temporal.PlainDate, time: Temporal.PlainTime, timeZone: string): Temporal.ZonedDateTime;
167
+ declare function getCurrentTimeZone(): string;
168
+ declare function getMonthRange(timeZone?: string, weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6): {
169
+ start: Temporal.PlainDate;
170
+ end: Temporal.PlainDate;
171
+ };
172
+ declare function getWeekRange(timeZone?: string, weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6): {
173
+ start: Temporal.PlainDate;
174
+ end: Temporal.PlainDate;
175
+ };
176
+ declare function getDayRange(timeZone?: string): {
177
+ start: Temporal.PlainDate;
178
+ end: Temporal.PlainDate;
179
+ };
180
+
181
+ declare function buildMonth<T>(year: number, month: number, options?: {
182
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
183
+ today?: Temporal.PlainDate;
184
+ data?: T[];
185
+ accessor?: CalendarAccessor<T>;
186
+ }): CalendarMonth<T>;
187
+
188
+ declare function buildWeek<T>(date: Temporal.PlainDate, options?: {
189
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
190
+ startHour?: number;
191
+ endHour?: number;
192
+ slotDuration?: number;
193
+ today?: Temporal.PlainDate;
194
+ data?: T[];
195
+ accessor?: CalendarAccessor<T>;
196
+ }): CalendarWeekView<T>;
197
+
198
+ declare function buildDay<T>(date: Temporal.PlainDate, options?: {
199
+ startHour?: number;
200
+ endHour?: number;
201
+ slotDuration?: number;
202
+ today?: Temporal.PlainDate;
203
+ data?: T[];
204
+ accessor?: CalendarAccessor<T>;
205
+ }): CalendarDayView<T>;
206
+
207
+ type DateRangeBounds = 'calendar' | 'strict';
208
+ /**
209
+ * Get the date range for a month view
210
+ * @param date - Reference date (any date within the target month)
211
+ * @param timeZone - IANA timezone identifier or 'UTC'
212
+ * @param options - Optional configuration
213
+ * @returns DateRange with start and end as ZonedDateTime
214
+ */
215
+ declare function getMonthDateRange(date: Temporal.PlainDate, timeZone: string, options?: {
216
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
217
+ bounds?: DateRangeBounds;
218
+ }): DateRange;
219
+ /**
220
+ * Get the date range for a week view
221
+ * @param date - Reference date (any date within the target week)
222
+ * @param timeZone - IANA timezone identifier or 'UTC'
223
+ * @param options - Optional configuration
224
+ * @returns DateRange with start and end as ZonedDateTime
225
+ */
226
+ declare function getWeekDateRange(date: Temporal.PlainDate, timeZone: string, options?: {
227
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
228
+ }): DateRange;
229
+ /**
230
+ * Get the date range for a day view
231
+ * @param date - The target date
232
+ * @param timeZone - IANA timezone identifier or 'UTC'
233
+ * @returns DateRange with start and end as ZonedDateTime
234
+ */
235
+ declare function getDayDateRange(date: Temporal.PlainDate, timeZone: string): DateRange;
236
+
237
+ declare function createCalendar<T, Options extends CalendarOptions<T>>(options: Options): Calendar<T, Options>;
238
+
239
+ declare function createCalendarViews<T>(): <const V extends {
240
+ month?: MonthViewOptions<T>;
241
+ week?: WeekViewOptions<T>;
242
+ day?: DayViewOptions<T>;
243
+ }>(views: V) => V;
244
+
245
+ export { type Calendar, type CalendarAccessor, type CalendarDay, type CalendarDayView, type CalendarMonth, type CalendarOptions, type CalendarState, type CalendarViewOptions, type CalendarWeek, type CalendarWeekView, type DateRange, type DateRangeBounds, type DayViewOptions, type InferViewConfig, type InferViewNames, type MonthViewOptions, type TimeSlot, type Updater, type WeekDay, type WeekViewOptions, buildDay, buildMonth, buildWeek, convertToTimezone, createCalendar, createCalendarAccessor, createCalendarViews, createZonedDateTime, formatTime, functionalUpdate, getCurrentTimeZone, getDayDateRange, getDayRange, getEventPosition, getMonthDateRange, getMonthName, getMonthRange, getTimeSlotHeight, getTimezoneOffset, getWeekDateRange, getWeekRange, getWeekdays, goToToday, nextDay, nextMonth, nextWeek, previousDay, previousMonth, previousWeek };
@@ -0,0 +1,245 @@
1
+ import * as _tanstack_store from '@tanstack/store';
2
+ import { Temporal } from '@js-temporal/polyfill';
3
+
4
+ type CalendarAccessor<T> = {
5
+ getDate: (item: T) => Temporal.PlainDate;
6
+ getStart?: (item: T) => Temporal.ZonedDateTime;
7
+ getEnd?: (item: T) => Temporal.ZonedDateTime;
8
+ };
9
+ type CalendarDay<T = unknown> = {
10
+ date: Temporal.PlainDate;
11
+ isCurrentMonth: boolean;
12
+ isToday: boolean;
13
+ items: T[];
14
+ };
15
+ type CalendarWeek<T = unknown> = CalendarDay<T>[];
16
+ type CalendarMonth<T = unknown> = {
17
+ weeks: CalendarWeek<T>[];
18
+ month: Temporal.PlainYearMonth;
19
+ };
20
+ type WeekDay<T = unknown> = {
21
+ date: Temporal.PlainDate;
22
+ isToday: boolean;
23
+ items: T[];
24
+ timeSlots?: TimeSlot<T>[];
25
+ };
26
+ type CalendarWeekView<T = unknown> = {
27
+ days: WeekDay<T>[];
28
+ weekStart: Temporal.PlainDate;
29
+ weekEnd: Temporal.PlainDate;
30
+ };
31
+ type TimeSlot<T = unknown> = {
32
+ hour: number;
33
+ minute: number;
34
+ time: Temporal.PlainTime;
35
+ items: T[];
36
+ };
37
+ type CalendarDayView<T = unknown> = {
38
+ date: Temporal.PlainDate;
39
+ isToday: boolean;
40
+ timeSlots: TimeSlot<T>[];
41
+ items: T[];
42
+ };
43
+ type DateRange = {
44
+ start: Temporal.ZonedDateTime;
45
+ end: Temporal.ZonedDateTime;
46
+ };
47
+ type Updater<T> = T | ((old: T) => T);
48
+ type CalendarState = {
49
+ referenceDate: Temporal.PlainDate;
50
+ currentView?: string;
51
+ dateRange: DateRange;
52
+ };
53
+ type MonthViewOptions<T> = {
54
+ accessor: CalendarAccessor<T>;
55
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
56
+ };
57
+ type WeekViewOptions<T> = {
58
+ accessor: CalendarAccessor<T>;
59
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
60
+ startHour?: number;
61
+ endHour?: number;
62
+ slotDuration?: number;
63
+ };
64
+ type DayViewOptions<T> = {
65
+ accessor: CalendarAccessor<T>;
66
+ startHour?: number;
67
+ endHour?: number;
68
+ slotDuration?: number;
69
+ };
70
+ type CalendarViewOptions<T> = {
71
+ month?: MonthViewOptions<T>;
72
+ week?: WeekViewOptions<T>;
73
+ day?: DayViewOptions<T>;
74
+ };
75
+ type CalendarOptions<T> = {
76
+ data: T[];
77
+ views: CalendarViewOptions<T>;
78
+ timeZone?: 'UTC' | string;
79
+ state?: Partial<CalendarState>;
80
+ onStateChange?: (updater: Updater<CalendarState>) => void;
81
+ };
82
+ type HasView<Options, View extends 'month' | 'week' | 'day'> = Options extends {
83
+ views: infer V;
84
+ } ? V extends Record<View, unknown> ? V[View] extends undefined ? false : true : false : false;
85
+ type MonthMethods<T, Options> = HasView<Options, 'month'> extends true ? {
86
+ getMonth(): CalendarMonth<T>;
87
+ nextMonth(): void;
88
+ previousMonth(): void;
89
+ goToMonth(year: number, month: number): void;
90
+ } : {
91
+ getMonth?: never;
92
+ nextMonth?: never;
93
+ previousMonth?: never;
94
+ goToMonth?: never;
95
+ };
96
+ type WeekMethods<T, Options> = HasView<Options, 'week'> extends true ? {
97
+ getWeek(): CalendarWeekView<T>;
98
+ nextWeek(): void;
99
+ previousWeek(): void;
100
+ } : {
101
+ getWeek?: never;
102
+ nextWeek?: never;
103
+ previousWeek?: never;
104
+ };
105
+ type DayMethods<T, Options> = HasView<Options, 'day'> extends true ? {
106
+ getDay(): CalendarDayView<T>;
107
+ nextDay(): void;
108
+ previousDay(): void;
109
+ } : {
110
+ getDay?: never;
111
+ nextDay?: never;
112
+ previousDay?: never;
113
+ };
114
+ type ValidViews<Options> = Options extends {
115
+ views: infer V;
116
+ } ? keyof V & string : never;
117
+ type BaseCalendarMethods<Options> = {
118
+ getTitle(view: ValidViews<Options>, locales?: Temporal.LocalesArgument, options?: globalThis.Intl.DateTimeFormatOptions): string;
119
+ getState(): CalendarState;
120
+ setState(updater: CalendarState | ((old: CalendarState) => Partial<CalendarState>)): void;
121
+ goToToday(): void;
122
+ goToDate(date: Temporal.PlainDate): void;
123
+ next(view: ValidViews<Options>): void;
124
+ previous(view: ValidViews<Options>): void;
125
+ views: ReadonlyArray<ValidViews<Options>>;
126
+ currentView: ValidViews<Options>;
127
+ setCurrentView(view: ValidViews<Options>): void;
128
+ dateRange: DateRange;
129
+ options: Options;
130
+ setOptions(updater: (old: Options) => Options): void;
131
+ store: _tanstack_store.Store<CalendarState>;
132
+ };
133
+ type ViewsToOptions<T, V extends CalendarViewOptions<T>> = {
134
+ data: T[];
135
+ views: V;
136
+ };
137
+ type Calendar<T, OptionsOrViews = CalendarOptions<T>> = OptionsOrViews extends CalendarOptions<T> ? BaseCalendarMethods<OptionsOrViews> & MonthMethods<T, OptionsOrViews> & WeekMethods<T, OptionsOrViews> & DayMethods<T, OptionsOrViews> : OptionsOrViews extends CalendarViewOptions<T> ? BaseCalendarMethods<ViewsToOptions<T, OptionsOrViews>> & MonthMethods<T, ViewsToOptions<T, OptionsOrViews>> & WeekMethods<T, ViewsToOptions<T, OptionsOrViews>> & DayMethods<T, ViewsToOptions<T, OptionsOrViews>> : BaseCalendarMethods<CalendarOptions<T>> & MonthMethods<T, CalendarOptions<T>> & WeekMethods<T, CalendarOptions<T>> & DayMethods<T, CalendarOptions<T>>;
138
+ type InferViewNames<V extends CalendarViewOptions<unknown>> = keyof V & string;
139
+ type InferViewConfig<V extends CalendarViewOptions<unknown>, Name extends keyof V> = V[Name] extends infer Config ? {
140
+ name: Name;
141
+ config: Config;
142
+ } : never;
143
+
144
+ declare function functionalUpdate<T>(updater: T | ((old: T) => T), input: T): T;
145
+ declare function createCalendarAccessor<T, A extends CalendarAccessor<T> = CalendarAccessor<T>>(accessor: A): A;
146
+ declare function nextMonth(month: Temporal.PlainYearMonth): Temporal.PlainYearMonth;
147
+ declare function previousMonth(month: Temporal.PlainYearMonth): Temporal.PlainYearMonth;
148
+ declare function nextWeek(date: Temporal.PlainDate): Temporal.PlainDate;
149
+ declare function previousWeek(date: Temporal.PlainDate): Temporal.PlainDate;
150
+ declare function nextDay(date: Temporal.PlainDate): Temporal.PlainDate;
151
+ declare function previousDay(date: Temporal.PlainDate): Temporal.PlainDate;
152
+ declare function goToToday(): {
153
+ year: number;
154
+ month: number;
155
+ };
156
+ declare function getWeekdays(weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, locale?: string | string[], format?: 'short' | 'long' | 'narrow'): string[];
157
+ declare function getMonthName(month: Temporal.PlainYearMonth, locale?: string): string;
158
+ declare function formatTime(time: Temporal.PlainTime, locale?: string): string;
159
+ declare function getTimeSlotHeight(slotDuration: number, hourHeight: number): number;
160
+ declare function getEventPosition(eventStart: Temporal.ZonedDateTime, eventEnd: Temporal.ZonedDateTime, dayStart: number, hourHeight: number): {
161
+ top: number;
162
+ height: number;
163
+ };
164
+ declare function convertToTimezone(dateTime: Temporal.ZonedDateTime, timeZone: string): Temporal.ZonedDateTime;
165
+ declare function getTimezoneOffset(dateTime: Temporal.ZonedDateTime): string;
166
+ declare function createZonedDateTime(date: Temporal.PlainDate, time: Temporal.PlainTime, timeZone: string): Temporal.ZonedDateTime;
167
+ declare function getCurrentTimeZone(): string;
168
+ declare function getMonthRange(timeZone?: string, weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6): {
169
+ start: Temporal.PlainDate;
170
+ end: Temporal.PlainDate;
171
+ };
172
+ declare function getWeekRange(timeZone?: string, weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6): {
173
+ start: Temporal.PlainDate;
174
+ end: Temporal.PlainDate;
175
+ };
176
+ declare function getDayRange(timeZone?: string): {
177
+ start: Temporal.PlainDate;
178
+ end: Temporal.PlainDate;
179
+ };
180
+
181
+ declare function buildMonth<T>(year: number, month: number, options?: {
182
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
183
+ today?: Temporal.PlainDate;
184
+ data?: T[];
185
+ accessor?: CalendarAccessor<T>;
186
+ }): CalendarMonth<T>;
187
+
188
+ declare function buildWeek<T>(date: Temporal.PlainDate, options?: {
189
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
190
+ startHour?: number;
191
+ endHour?: number;
192
+ slotDuration?: number;
193
+ today?: Temporal.PlainDate;
194
+ data?: T[];
195
+ accessor?: CalendarAccessor<T>;
196
+ }): CalendarWeekView<T>;
197
+
198
+ declare function buildDay<T>(date: Temporal.PlainDate, options?: {
199
+ startHour?: number;
200
+ endHour?: number;
201
+ slotDuration?: number;
202
+ today?: Temporal.PlainDate;
203
+ data?: T[];
204
+ accessor?: CalendarAccessor<T>;
205
+ }): CalendarDayView<T>;
206
+
207
+ type DateRangeBounds = 'calendar' | 'strict';
208
+ /**
209
+ * Get the date range for a month view
210
+ * @param date - Reference date (any date within the target month)
211
+ * @param timeZone - IANA timezone identifier or 'UTC'
212
+ * @param options - Optional configuration
213
+ * @returns DateRange with start and end as ZonedDateTime
214
+ */
215
+ declare function getMonthDateRange(date: Temporal.PlainDate, timeZone: string, options?: {
216
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
217
+ bounds?: DateRangeBounds;
218
+ }): DateRange;
219
+ /**
220
+ * Get the date range for a week view
221
+ * @param date - Reference date (any date within the target week)
222
+ * @param timeZone - IANA timezone identifier or 'UTC'
223
+ * @param options - Optional configuration
224
+ * @returns DateRange with start and end as ZonedDateTime
225
+ */
226
+ declare function getWeekDateRange(date: Temporal.PlainDate, timeZone: string, options?: {
227
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
228
+ }): DateRange;
229
+ /**
230
+ * Get the date range for a day view
231
+ * @param date - The target date
232
+ * @param timeZone - IANA timezone identifier or 'UTC'
233
+ * @returns DateRange with start and end as ZonedDateTime
234
+ */
235
+ declare function getDayDateRange(date: Temporal.PlainDate, timeZone: string): DateRange;
236
+
237
+ declare function createCalendar<T, Options extends CalendarOptions<T>>(options: Options): Calendar<T, Options>;
238
+
239
+ declare function createCalendarViews<T>(): <const V extends {
240
+ month?: MonthViewOptions<T>;
241
+ week?: WeekViewOptions<T>;
242
+ day?: DayViewOptions<T>;
243
+ }>(views: V) => V;
244
+
245
+ export { type Calendar, type CalendarAccessor, type CalendarDay, type CalendarDayView, type CalendarMonth, type CalendarOptions, type CalendarState, type CalendarViewOptions, type CalendarWeek, type CalendarWeekView, type DateRange, type DateRangeBounds, type DayViewOptions, type InferViewConfig, type InferViewNames, type MonthViewOptions, type TimeSlot, type Updater, type WeekDay, type WeekViewOptions, buildDay, buildMonth, buildWeek, convertToTimezone, createCalendar, createCalendarAccessor, createCalendarViews, createZonedDateTime, formatTime, functionalUpdate, getCurrentTimeZone, getDayDateRange, getDayRange, getEventPosition, getMonthDateRange, getMonthName, getMonthRange, getTimeSlotHeight, getTimezoneOffset, getWeekDateRange, getWeekRange, getWeekdays, goToToday, nextDay, nextMonth, nextWeek, previousDay, previousMonth, previousWeek };