@aurodesignsystem-dev/auro-formkit 0.0.0-pr1489.5 → 0.0.0-pr1489.7

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.
Files changed (65) hide show
  1. package/components/checkbox/demo/customize.min.js +249 -125
  2. package/components/checkbox/demo/getting-started.min.js +249 -125
  3. package/components/checkbox/demo/index.min.js +249 -125
  4. package/components/checkbox/demo/styles.min.css +1 -1
  5. package/components/checkbox/dist/index.js +249 -125
  6. package/components/checkbox/dist/registered.js +249 -125
  7. package/components/combobox/demo/customize.min.js +523 -262
  8. package/components/combobox/demo/getting-started.min.js +523 -262
  9. package/components/combobox/demo/index.min.js +523 -262
  10. package/components/combobox/demo/styles.min.css +1 -1
  11. package/components/combobox/dist/index.js +523 -262
  12. package/components/combobox/dist/registered.js +523 -262
  13. package/components/counter/demo/customize.min.js +271 -134
  14. package/components/counter/demo/index.min.js +271 -134
  15. package/components/counter/demo/styles.min.css +1 -1
  16. package/components/counter/dist/index.js +249 -125
  17. package/components/counter/dist/registered.js +249 -125
  18. package/components/datepicker/demo/accessibility.md +9 -6
  19. package/components/datepicker/demo/api.md +1 -1
  20. package/components/datepicker/demo/customize.min.js +1636 -656
  21. package/components/datepicker/demo/index.md +31 -3
  22. package/components/datepicker/demo/index.min.js +1652 -661
  23. package/components/datepicker/demo/keyboard-behavior.md +16 -16
  24. package/components/datepicker/demo/styles.min.css +1 -1
  25. package/components/datepicker/demo/voiceover.md +5 -3
  26. package/components/datepicker/demo/why-datepicker.md +2 -2
  27. package/components/datepicker/dist/index.js +1640 -660
  28. package/components/datepicker/dist/registered.js +1640 -660
  29. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +52 -17
  30. package/components/datepicker/dist/src/auro-calendar-month.d.ts +12 -4
  31. package/components/datepicker/dist/src/auro-calendar.d.ts +161 -8
  32. package/components/datepicker/dist/src/auro-datepicker.d.ts +77 -79
  33. package/components/dropdown/demo/customize.min.js +22 -9
  34. package/components/dropdown/demo/getting-started.min.js +22 -9
  35. package/components/dropdown/demo/index.min.js +22 -9
  36. package/components/dropdown/demo/styles.min.css +1 -1
  37. package/components/dropdown/dist/auro-dropdown.d.ts +3 -2
  38. package/components/dropdown/dist/index.js +22 -9
  39. package/components/dropdown/dist/registered.js +22 -9
  40. package/components/form/demo/customize.min.js +3459 -1572
  41. package/components/form/demo/getting-started.min.js +3459 -1572
  42. package/components/form/demo/index.min.js +3459 -1572
  43. package/components/form/demo/registerDemoDeps.min.js +3459 -1572
  44. package/components/form/demo/styles.min.css +1 -1
  45. package/components/input/demo/customize.min.js +249 -125
  46. package/components/input/demo/getting-started.min.js +249 -125
  47. package/components/input/demo/index.min.js +249 -125
  48. package/components/input/demo/styles.min.css +1 -1
  49. package/components/input/dist/index.js +249 -125
  50. package/components/input/dist/registered.js +249 -125
  51. package/components/menu/demo/styles.min.css +1 -1
  52. package/components/radio/demo/customize.min.js +249 -125
  53. package/components/radio/demo/getting-started.min.js +249 -125
  54. package/components/radio/demo/index.min.js +249 -125
  55. package/components/radio/demo/styles.min.css +1 -1
  56. package/components/radio/dist/index.js +249 -125
  57. package/components/radio/dist/registered.js +249 -125
  58. package/components/select/demo/customize.min.js +271 -134
  59. package/components/select/demo/getting-started.min.js +271 -134
  60. package/components/select/demo/index.min.js +271 -134
  61. package/components/select/demo/styles.min.css +1 -1
  62. package/components/select/dist/index.js +271 -134
  63. package/components/select/dist/registered.js +271 -134
  64. package/custom-elements.json +500 -178
  65. package/package.json +8 -8
@@ -8,109 +8,236 @@ import 'lit-html';
8
8
  import 'lit-html/directives/unsafe-html.js';
9
9
  import { repeat } from 'lit/directives/repeat.js';
10
10
 
11
- let DateFormatter$1 = class DateFormatter {
11
+ /**
12
+ * @description Splits a date string into its parts according to the provided format. Does NOT validate that the result is a real calendar date — use `parseDate` when validation is required.
13
+ * @param {string} dateStr - Date string to parse.
14
+ * @param {string} format - Date format to parse.
15
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
16
+ */
17
+ function getDateParts$1(dateStr, format) {
18
+ if (!dateStr) {
19
+ return undefined;
20
+ }
12
21
 
13
- constructor() {
22
+ const formatSeparatorMatch = format.match(/[/.-]/);
23
+ let valueParts;
24
+ let formatParts;
14
25
 
15
- /**
16
- * @description Parses a date string into its components.
17
- * @param {string} dateStr - Date string to parse.
18
- * @param {string} format - Date format to parse.
19
- * @returns {Object<key["month" | "day" | "year"]: number>|undefined}
20
- */
21
- this.parseDate = (dateStr, format = 'mm/dd/yyyy') => {
26
+ if (formatSeparatorMatch) {
27
+ const separator = formatSeparatorMatch[0];
28
+ valueParts = dateStr.split(separator);
29
+ formatParts = format.split(separator);
30
+ } else {
31
+ if (dateStr.match(/[/.-]/)) {
32
+ throw new Error(
33
+ "AuroDatepickerUtilities | parseDate: Date string has no separators",
34
+ );
35
+ }
22
36
 
23
- // Guard Clause: Date string is defined
24
- if (!dateStr) {
25
- return undefined;
26
- }
37
+ if (dateStr.length !== format.length) {
38
+ throw new Error(
39
+ "AuroDatepickerUtilities | parseDate: Date string and format length do not match",
40
+ );
41
+ }
27
42
 
28
- // Assume the separator is a "/" a defined in our code base
29
- const separator = '/';
43
+ valueParts = [dateStr];
44
+ formatParts = [format];
45
+ }
30
46
 
31
- // Get the parts of the date and format
32
- const valueParts = dateStr.split(separator);
33
- const formatParts = format.split(separator);
47
+ if (valueParts.length !== formatParts.length) {
48
+ throw new Error(
49
+ `AuroDatepickerUtilities | parseDate: Date string and format do not match : ${dateStr} vs ${format}`,
50
+ );
51
+ }
34
52
 
35
- // Check if the value and format have the correct number of parts
36
- if (valueParts.length !== formatParts.length) {
37
- throw new Error('AuroDatepickerUtilities | parseDate: Date string and format length do not match');
38
- }
53
+ const result = formatParts.reduce((acc, part, index) => {
54
+ const value = valueParts[index];
39
55
 
40
- // Holds the result to be returned
41
- const result = formatParts.reduce((acc, part, index) => {
42
- const value = valueParts[index];
56
+ if (/m/iu.test(part) && part.length === value.length) {
57
+ acc.month = value;
58
+ } else if (/d/iu.test(part) && part.length === value.length) {
59
+ acc.day = value;
60
+ } else if (/y/iu.test(part) && part.length === value.length) {
61
+ acc.year = value;
62
+ }
43
63
 
44
- if ((/m/iu).test(part)) {
45
- acc.month = value;
46
- } else if ((/d/iu).test(part)) {
47
- acc.day = value;
48
- } else if ((/y/iu).test(part)) {
49
- acc.year = value;
50
- }
64
+ return acc;
65
+ }, {});
51
66
 
52
- return acc;
53
- }, {});
67
+ if (!result.month && !result.day && !result.year) {
68
+ throw new Error(
69
+ "AuroDatepickerUtilities | parseDate: Unable to parse date string",
70
+ );
71
+ }
54
72
 
55
- // If we found all the parts, return the result
56
- if (result.month && result.year) {
57
- return result;
58
- }
73
+ return result;
74
+ }
59
75
 
60
- // Throw an error to let the dev know we were unable to parse the date string
61
- throw new Error('AuroDatepickerUtilities | parseDate: Unable to parse date string');
62
- };
76
+ function isCalendarDate$1(year, month, day) {
77
+ let yearNumber = Number(year);
78
+ const monthNumber = Number(month);
79
+ const dayNumber = Number(day);
63
80
 
64
- /**
65
- * Convert a date object to string format.
66
- * @param {Object} date - Date to convert to string.
67
- * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
68
- * @returns {String} Returns the date as a string.
69
- */
70
- this.getDateAsString = (date, locale = undefined) => date.toLocaleDateString(locale, {
71
- year: "numeric",
72
- month: "2-digit",
73
- day: "2-digit",
74
- });
81
+ if (
82
+ !Number.isInteger(yearNumber) ||
83
+ !Number.isInteger(monthNumber) ||
84
+ !Number.isInteger(dayNumber)
85
+ ) {
86
+ return false;
87
+ }
75
88
 
76
- /**
77
- * Converts a date string to a North American date format.
78
- * @param {String} dateStr - Date to validate.
79
- * @param {String} format - Date format to validate against.
80
- * @returns {Boolean}
81
- */
82
- this.toNorthAmericanFormat = (dateStr, format) => {
89
+ // Handle 2-digit years by converting them to 4-digit years based on a cutoff. This allows for parsing of 2-digit year formats while still validating the resulting date.
90
+ if (yearNumber < 100 && yearNumber >= 50) {
91
+ yearNumber += 1900;
92
+ } else if (yearNumber < 50) {
93
+ yearNumber += 2000;
94
+ }
83
95
 
84
- if (format === 'mm/dd/yyyy') {
85
- return dateStr;
86
- }
96
+ const stringified = `${String(yearNumber).padStart(4, "0")}-${String(monthNumber).padStart(2, "0")}-${String(dayNumber).padStart(2, "0")}`;
97
+ const date = new Date(stringified.replace(/[.-]/g, "/"));
87
98
 
88
- const parsedDate = this.parseDate(dateStr, format);
99
+ return (
100
+ !Number.isNaN(date.getTime()) && toISOFormatString$1(date) === stringified
101
+ );
102
+ }
89
103
 
90
- if (!parsedDate) {
91
- throw new Error('AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string');
92
- }
104
+ /**
105
+ * @description Parses a date string into its components and validates that the result is a real calendar date. Use `getDateParts` instead when raw splitting without validation is needed (e.g. for in-progress input).
106
+ *
107
+ * Partial formats are supported: components absent from `format` default to `year → "0"`,
108
+ * `month → "01"`, `day → "01"` for calendar validation only. The returned object contains
109
+ * only the fields actually present in the format string — missing fields are never injected.
110
+ * @param {string} dateStr - Date string to parse.
111
+ * @param {string} format - Date format to parse.
112
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
113
+ * @throws {Error} Throws when the parsed result does not represent a valid calendar date.
114
+ */
115
+ function parseDate$1(dateStr, format = "mm/dd/yyyy") {
116
+ if (!dateStr || !format) {
117
+ return undefined;
118
+ }
119
+ const result = getDateParts$1(dateStr.trim(), format);
93
120
 
94
- const { month, day, year } = parsedDate;
121
+ if (!result) {
122
+ return undefined;
123
+ }
95
124
 
96
- const dateParts = [];
97
- if (month) {
98
- dateParts.push(month);
99
- }
125
+ const lowerFormat = format.toLowerCase();
126
+ const year = lowerFormat.includes("yy") ? result.year : "0";
127
+ const month = lowerFormat.includes("mm") ? result.month : "01";
128
+ const day = lowerFormat.includes("dd") ? result.day : "01";
100
129
 
101
- if (day) {
102
- dateParts.push(day);
103
- }
130
+ if (isCalendarDate$1(year, month, day)) {
131
+ return result;
132
+ }
104
133
 
105
- if (year) {
106
- dateParts.push(year);
107
- }
134
+ throw new Error(
135
+ `AuroDatepickerUtilities | parseDate: Date string is not a valid date ${JSON.stringify(result)} with format ${format}`,
136
+ );
137
+ }
108
138
 
109
- return dateParts.join('/');
110
- };
139
+ /**
140
+ * Convert a date object to string format.
141
+ * @param {Object} date - Date to convert to string.
142
+ * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
143
+ * @returns {String} Returns the date as a string.
144
+ */
145
+ function getDateAsString$1(date, locale = undefined) {
146
+ return date.toLocaleDateString(locale, {
147
+ year: "numeric",
148
+ month: "2-digit",
149
+ day: "2-digit",
150
+ });
151
+ }
152
+
153
+ /**
154
+ * Converts a date string to a North American date format.
155
+ * @param {String} dateStr - Date to validate.
156
+ * @param {String} format - Date format to validate against.
157
+ * @returns {String}
158
+ */
159
+ function toNorthAmericanFormat$3(dateStr, format) {
160
+ if (format === "mm/dd/yyyy") {
161
+ return dateStr;
162
+ }
163
+
164
+ const parsedDate = parseDate$1(dateStr, format);
165
+
166
+ if (!parsedDate) {
167
+ throw new Error(
168
+ "AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string",
169
+ );
170
+ }
171
+
172
+ const { month, day, year } = parsedDate;
173
+
174
+ return [month, day, year].filter(Boolean).join("/");
175
+ }
176
+
177
+ /**
178
+ * Validates that a date string matches the provided format and represents a real calendar date.
179
+ *
180
+ * @param {string} dateStr - Date string to validate.
181
+ * @param {string} [format="yyyy-mm-dd"] - Format of the date string.
182
+ * @returns {boolean} True when the date string is valid for the provided format, otherwise false.
183
+ */
184
+ function isValidDate$1(dateStr, format = "yyyy-mm-dd") {
185
+ try {
186
+ if (typeof dateStr !== "string" || !dateStr || format?.length < 8) {
187
+ return false;
188
+ }
189
+
190
+ if (parseDate$1(dateStr, format)) {
191
+ return true;
192
+ }
193
+ } catch (error) {
194
+ return false;
195
+ }
196
+ return false;
197
+ }
198
+
199
+ /**
200
+ * Converts a JavaScript Date instance to a simple ISO-like date string. This returns only the calendar date portion without any time or timezone information.
201
+ *
202
+ * @param {Date} date - Date instance to convert to an ISO-like string.
203
+ * @returns {string} A string in the format "yyyy-mm-dd" representing the provided date.
204
+ * @throws {Error} Throws an error when the input is not a valid Date instance.
205
+ */
206
+ function toISOFormatString$1(date) {
207
+ if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
208
+ throw new Error(
209
+ "AuroDatepickerUtilities | toISOFormatString: Input must be a valid Date instance",
210
+ );
211
+ }
212
+ return `${String(date.getFullYear()).padStart(4, "0")}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
213
+ }
214
+
215
+ /**
216
+ * Converts a date string into a JavaScript Date instance. This method supports ISO formatted strings and other formats that can be parsed by the formatter.
217
+ *
218
+ * @param {String} dateStr - Date string to convert into a Date object.
219
+ * @param {String} format - Date format used to parse the string when it is not in ISO format.
220
+ * @returns {Date|null} Returns a Date instance for valid input or null for non-string input.
221
+ * @throws {Error} Throws when parsing fails for non-ISO string input.
222
+ */
223
+ function stringToDateInstance$1(dateStr, format = "yyyy-mm-dd") {
224
+ if (typeof dateStr !== "string") {
225
+ return null;
111
226
  }
227
+
228
+ const { month, day, year } = parseDate$1(dateStr, format);
229
+ return new Date(`${year}/${month}/${day}`);
230
+ }
231
+
232
+ const dateFormatter$1 = {
233
+ parseDate: parseDate$1,
234
+ getDateParts: getDateParts$1,
235
+ getDateAsString: getDateAsString$1,
236
+ toNorthAmericanFormat: toNorthAmericanFormat$3,
237
+ isValidDate: isValidDate$1,
238
+ toISOFormatString: toISOFormatString$1,
239
+ stringToDateInstance: stringToDateInstance$1,
112
240
  };
113
- const dateFormatter$1 = new DateFormatter$1();
114
241
 
115
242
  // filepath: dateConstraints.mjs
116
243
  const DATE_UTIL_CONSTRAINTS$1 = {
@@ -182,12 +309,11 @@ let AuroDateUtilitiesBase$1 = class AuroDateUtilitiesBase {
182
309
  /* eslint-disable no-magic-numbers */
183
310
 
184
311
  let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$1 {
185
-
186
312
  /**
187
313
  * Returns the current century.
188
314
  * @returns {String} The current century.
189
315
  */
190
- getCentury () {
316
+ getCentury() {
191
317
  return String(new Date().getFullYear()).slice(0, 2);
192
318
  }
193
319
 
@@ -196,14 +322,12 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
196
322
  * @param {String} year - The year to convert to four digits.
197
323
  * @returns {String} The four digit year.
198
324
  */
199
- getFourDigitYear (year) {
200
-
325
+ getFourDigitYear(year) {
201
326
  const strYear = String(year).trim();
202
327
  return strYear.length <= 2 ? this.getCentury() + strYear : strYear;
203
328
  }
204
329
 
205
330
  constructor() {
206
-
207
331
  super();
208
332
 
209
333
  /**
@@ -212,7 +336,8 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
212
336
  * @param {Object} date2 - Second date to compare.
213
337
  * @returns {Boolean} Returns true if the dates match.
214
338
  */
215
- this.datesMatch = (date1, date2) => new Date(date1).getTime() === new Date(date2).getTime();
339
+ this.datesMatch = (date1, date2) =>
340
+ new Date(date1).getTime() === new Date(date2).getTime();
216
341
 
217
342
  /**
218
343
  * Returns true if value passed in is a valid date.
@@ -221,53 +346,41 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
221
346
  * @returns {Boolean}
222
347
  */
223
348
  this.validDateStr = (date, format) => {
224
-
225
349
  // The length we expect the date string to be
226
- const dateStrLength = format.length;
350
+ const dateStrLength = format?.length || 0;
227
351
 
228
352
  // Guard Clause: Date and format are defined
229
353
  if (typeof date === "undefined" || typeof format === "undefined") {
230
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date and format are required');
354
+ throw new Error(
355
+ "AuroDatepickerUtilities | validateDateStr: Date and format are required",
356
+ );
231
357
  }
232
358
 
233
359
  // Guard Clause: Date should be of type string
234
360
  if (typeof date !== "string") {
235
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date must be a string');
361
+ throw new Error(
362
+ "AuroDatepickerUtilities | validateDateStr: Date must be a string",
363
+ );
236
364
  }
237
365
 
238
366
  // Guard Clause: Format should be of type string
239
367
  if (typeof format !== "string") {
240
- throw new Error('AuroDatepickerUtilities | validateDateStr: Format must be a string');
368
+ throw new Error(
369
+ "AuroDatepickerUtilities | validateDateStr: Format must be a string",
370
+ );
241
371
  }
242
372
 
243
373
  // Guard Clause: Length is what we expect it to be
244
374
  if (date.length !== dateStrLength) {
245
375
  return false;
246
376
  }
247
- // Get a formatted date string and parse it
248
- const dateParts = dateFormatter$1.parseDate(date, format);
249
-
250
- // Guard Clause: Date parse succeeded
251
- if (!dateParts) {
252
- return false;
253
- }
254
-
255
- // Create the expected date string based on the date parts
256
- const expectedDateStr = `${dateParts.month}/${dateParts.day || "01"}/${this.getFourDigitYear(dateParts.year)}`;
257
-
258
- // Generate a date object that we will extract a string date from to compare to the passed in date string
259
- const dateObj = new Date(this.getFourDigitYear(dateParts.year), dateParts.month - 1, dateParts.day || 1);
260
-
261
- // Get the date string of the date object we created from the string date
262
- const actualDateStr = dateFormatter$1.getDateAsString(dateObj, "en-US");
263
377
 
264
- // Guard Clause: Generated date matches date string input
265
- if (expectedDateStr !== actualDateStr) {
378
+ // Get a formatted date string and parse and validate it
379
+ try {
380
+ return Boolean(dateFormatter$1.parseDate(date, format));
381
+ } catch (error) {
266
382
  return false;
267
383
  }
268
-
269
- // If we passed all other checks, we can assume the date is valid
270
- return true;
271
384
  };
272
385
 
273
386
  /**
@@ -277,10 +390,11 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
277
390
  * @returns {boolean}
278
391
  */
279
392
  this.dateAndFormatMatch = (value, format) => {
280
-
281
393
  // Ensure we have both values we need to do the comparison
282
394
  if (!value || !format) {
283
- throw new Error('AuroFormValidation | dateFormatMatch: value and format are required');
395
+ throw new Error(
396
+ "AuroFormValidation | dateFormatMatch: value and format are required",
397
+ );
284
398
  }
285
399
 
286
400
  // If the lengths are different, they cannot match
@@ -289,11 +403,10 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
289
403
  }
290
404
 
291
405
  // Get the parts of the date
292
- const dateParts = dateFormatter$1.parseDate(value, format);
406
+ const dateParts = dateFormatter$1.getDateParts(value, format);
293
407
 
294
408
  // Validator for day
295
409
  const dayValueIsValid = (day) => {
296
-
297
410
  // Guard clause: if there is no day in the dateParts, we can ignore this check.
298
411
  if (!dateParts.day) {
299
412
  return true;
@@ -309,7 +422,9 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
309
422
 
310
423
  // Guard clause: ensure day is a valid integer
311
424
  if (Number.isNaN(numDay)) {
312
- throw new Error('AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer');
425
+ throw new Error(
426
+ "AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer",
427
+ );
313
428
  }
314
429
 
315
430
  // Guard clause: ensure day is within the valid range
@@ -323,6 +438,10 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
323
438
 
324
439
  // Validator for month
325
440
  const monthValueIsValid = (month) => {
441
+ // Guard clause: if there is no month in the dateParts, we can ignore this check.
442
+ if (!dateParts.month) {
443
+ return true;
444
+ }
326
445
 
327
446
  // Guard clause: ensure month exists.
328
447
  if (!month) {
@@ -334,7 +453,9 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
334
453
 
335
454
  // Guard clause: ensure month is a valid integer
336
455
  if (Number.isNaN(numMonth)) {
337
- throw new Error('AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer');
456
+ throw new Error(
457
+ "AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer",
458
+ );
338
459
  }
339
460
 
340
461
  // Guard clause: ensure month is within the valid range
@@ -348,6 +469,10 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
348
469
 
349
470
  // Validator for year
350
471
  const yearIsValid = (_year) => {
472
+ // Guard clause: if there is no year in the dateParts, we can ignore this check.
473
+ if (!dateParts.year) {
474
+ return true;
475
+ }
351
476
 
352
477
  // Guard clause: ensure year exists.
353
478
  if (!_year) {
@@ -362,7 +487,9 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
362
487
 
363
488
  // Guard clause: ensure year is a valid integer
364
489
  if (Number.isNaN(numYear)) {
365
- throw new Error('AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer');
490
+ throw new Error(
491
+ "AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer",
492
+ );
366
493
  }
367
494
 
368
495
  // Guard clause: ensure year is within the valid range
@@ -378,7 +505,7 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
378
505
  const checks = [
379
506
  monthValueIsValid(dateParts.month),
380
507
  dayValueIsValid(dateParts.day),
381
- yearIsValid(dateParts.year)
508
+ yearIsValid(dateParts.year),
382
509
  ];
383
510
 
384
511
  // If any of the checks failed, the date format does not match and the result is invalid
@@ -412,10 +539,7 @@ const {
412
539
  } = dateUtilities$1;
413
540
 
414
541
  const {
415
- toNorthAmericanFormat: toNorthAmericanFormat$1,
416
- parseDate: parseDate$1,
417
- getDateAsString: getDateAsString$1
418
- } = dateFormatter$1;
542
+ toNorthAmericanFormat: toNorthAmericanFormat$2} = dateFormatter$1;
419
543
 
420
544
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
421
545
  // See LICENSE in the project root for license information.
@@ -735,13 +859,13 @@ let AuroFormValidation$1 = class AuroFormValidation {
735
859
  }
736
860
 
737
861
  // Perform the rest of the validation
738
- const formattedValue = toNorthAmericanFormat$1(elem.value, elem.format);
862
+ const formattedValue = toNorthAmericanFormat$2(elem.value, elem.format);
739
863
  const valueDate = new Date(formattedValue);
740
864
 
741
865
  // // Validate max date
742
866
  if (elem.max?.length === elem.lengthForType) {
743
867
 
744
- const maxDate = new Date(toNorthAmericanFormat$1(elem.max, elem.format));
868
+ const maxDate = new Date(toNorthAmericanFormat$2(elem.max, elem.format));
745
869
 
746
870
  if (valueDate > maxDate) {
747
871
  elem.validity = 'rangeOverflow';
@@ -752,7 +876,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
752
876
 
753
877
  // Validate min date
754
878
  if (elem.min?.length === elem.lengthForType) {
755
- const minDate = new Date(toNorthAmericanFormat$1(elem.min, elem.format));
879
+ const minDate = new Date(toNorthAmericanFormat$2(elem.min, elem.format));
756
880
 
757
881
  if (valueDate < minDate) {
758
882
  elem.validity = 'rangeUnderflow';
@@ -1291,11 +1415,7 @@ class UtilitiesCalendarRender {
1291
1415
 
1292
1416
  // 3. If we didn't get a count early, restrict based on min/max date.
1293
1417
  if (!calendarCount && elem.minDate && elem.maxDate) {
1294
- const monthsInRange = this.util.monthDiff(new Date(elem.minDate), new Date(elem.maxDate));
1295
-
1296
- if (monthsInRange < maxRenderableMonths) {
1297
- calendarCount = monthsInRange;
1298
- }
1418
+ calendarCount = this.util.monthDiff(new Date(elem.minDate), new Date(elem.maxDate));
1299
1419
  }
1300
1420
 
1301
1421
  if (elem.numCalendars !== calendarCount) {
@@ -1343,7 +1463,6 @@ class UtilitiesCalendarRender {
1343
1463
  .max="${elem.max}"
1344
1464
  ?noRange="${elem.noRange}"
1345
1465
  .monthFirst="${elem.monthFirst}"
1346
- .hoveredDate="${elem.hoveredDate}"
1347
1466
  .dateTo="${elem.dateTo}"
1348
1467
  .dateFrom="${elem.dateFrom}"
1349
1468
  .locale="${elem.locale}"
@@ -1375,43 +1494,6 @@ var snowflakeStyle = css`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
1375
1494
 
1376
1495
  var snowflakeColors = css`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
1377
1496
 
1378
- var styleCss$7 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;--desktop-footer-height: 80px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendarNavButtons{position:absolute;z-index:1;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}.calendarWrapper.hasFooter{padding-bottom:var(--desktop-footer-height)}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}.sr-only{position:absolute;overflow:hidden;clip:rect(0, 0, 0, 0);width:1px;height:1px;margin:-1px;padding:0;border:0;white-space:nowrap}`;
1379
-
1380
- var colorCss$7 = css`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);box-shadow:inset 0 0 0 1px var(--ds-auro-calendar-nav-btn-border-color)}.mobileHeader{background-color:var(--ds-auro-calendar-mobile-header-container-color)}.mobileDateLabel{color:var(--ds-auro-calendar-mobile-header-text-color)}:host(:not([noRange])) .headerDateTo:after{background-color:var(--ds-auro-calendar-mobile-header-divider-color)}::slotted([slot="bib.fullscreen.fromStr"]),::slotted([slot=mobileDateToStr]){color:var(--ds-auro-datepicker-placeholder-color)}@media screen and (max-width: 576px){.calendarNavBtn{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}}`;
1381
-
1382
- var styleCss$6 = css`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem)}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:384px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%}`;
1383
-
1384
- var colorCss$6 = css`:focus:not(:focus-visible){outline:3px solid transparent}:host{background-color:var(--ds-auro-calendar-month-container-color)}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{background-color:var(--ds-auro-calendar-month-divider-color)}}.header{color:var(--ds-auro-calendar-month-header-color)}`;
1385
-
1386
- /******************************************************************************
1387
- Copyright (c) Microsoft Corporation.
1388
-
1389
- Permission to use, copy, modify, and/or distribute this software for any
1390
- purpose with or without fee is hereby granted.
1391
-
1392
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1393
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1394
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1395
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1396
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1397
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1398
- PERFORMANCE OF THIS SOFTWARE.
1399
- ***************************************************************************** */
1400
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
1401
-
1402
-
1403
- function __decorate(decorators, target, key, desc) {
1404
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1405
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1406
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1407
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1408
- }
1409
-
1410
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
1411
- var e = new Error(message);
1412
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
1413
- };
1414
-
1415
1497
  /**
1416
1498
  * @module constants
1417
1499
  * @summary Useful constants
@@ -7166,6 +7248,43 @@ function subYears(date, amount, options) {
7166
7248
  return addYears(date, -1, options);
7167
7249
  }
7168
7250
 
7251
+ var styleCss$7 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;--desktop-footer-height: 80px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendars:focus{outline:none}.calendarNavButtons{position:absolute;z-index:1;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}.calendarWrapper.hasFooter{padding-bottom:var(--desktop-footer-height)}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}.sr-only{position:absolute;overflow:hidden;clip:rect(0, 0, 0, 0);width:1px;height:1px;margin:-1px;padding:0;border:0;white-space:nowrap}`;
7252
+
7253
+ var colorCss$7 = css`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);box-shadow:inset 0 0 0 1px var(--ds-auro-calendar-nav-btn-border-color)}.mobileHeader{background-color:var(--ds-auro-calendar-mobile-header-container-color)}.mobileDateLabel{color:var(--ds-auro-calendar-mobile-header-text-color)}:host(:not([noRange])) .headerDateTo:after{background-color:var(--ds-auro-calendar-mobile-header-divider-color)}::slotted([slot="bib.fullscreen.fromStr"]),::slotted([slot=mobileDateToStr]){color:var(--ds-auro-datepicker-placeholder-color)}@media screen and (max-width: 576px){.calendarNavBtn{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}}`;
7254
+
7255
+ var styleCss$6 = css`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem) var(--ds-size-200, 1rem) 0}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:336px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%;border-radius:10px;overflow:hidden}.tr:not(:last-of-type){margin-bottom:var(--ds-size-100, 0.5rem)}`;
7256
+
7257
+ var colorCss$6 = css`:focus:not(:focus-visible){outline:3px solid transparent}:host{background-color:var(--ds-auro-calendar-month-container-color)}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{background-color:var(--ds-auro-calendar-month-divider-color)}}.header{color:var(--ds-auro-calendar-month-header-color)}`;
7258
+
7259
+ /******************************************************************************
7260
+ Copyright (c) Microsoft Corporation.
7261
+
7262
+ Permission to use, copy, modify, and/or distribute this software for any
7263
+ purpose with or without fee is hereby granted.
7264
+
7265
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7266
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7267
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7268
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7269
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7270
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7271
+ PERFORMANCE OF THIS SOFTWARE.
7272
+ ***************************************************************************** */
7273
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
7274
+
7275
+
7276
+ function __decorate(decorators, target, key, desc) {
7277
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7278
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7279
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7280
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7281
+ }
7282
+
7283
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
7284
+ var e = new Error(message);
7285
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
7286
+ };
7287
+
7169
7288
  class RangeDatepickerCell extends LitElement {
7170
7289
  constructor() {
7171
7290
  super(...arguments);
@@ -7888,9 +8007,9 @@ __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "dayN
7888
8007
  __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
7889
8008
  AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
7890
8009
 
7891
- var styleCss$5 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:var(--ds-size-500, 2.5rem);height:calc(var(--ds-size-700, 3.5rem) - 2px);padding:0;border-width:1px;border-style:solid;border-radius:var(--ds-size-300, 1.5rem);cursor:pointer;user-select:none}.day:focus-visible{outline:2px solid var(--ds-basic-color-border-default, #959595);outline-offset:2px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:default}.day.reference{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background, #ffffff)}.day.inRange::before{position:absolute;z-index:-1;top:50%;left:50%;display:block;width:14.2857142857vw;height:var(--ds-size-600, 3rem);content:"";transform:translate(-50%, -50%)}@media screen and (min-width: 576px){.day.inRange::before{width:var(--ds-size-600, 3rem)}}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:50%;left:50%;display:block;width:14.2857142857vw;height:var(--ds-size-600, 3rem);content:"";transform:translate(-50%, -50%);width:7.1428571429vw;transform:translate(0%, -50%)}@media screen and (min-width: 576px){.day.rangeDepartDate::before{width:calc(var(--ds-size-600, 3rem)/2)}}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:50%;left:50%;display:block;width:14.2857142857vw;height:var(--ds-size-600, 3rem);content:"";transform:translate(-50%, -50%);width:7.1428571429vw;transform:translate(-100%, -50%)}@media screen and (min-width: 576px){.day.rangeReturnDate::before,.day.lastHoveredDate::before{width:calc(var(--ds-size-600, 3rem)/2)}}.dateSlot{display:flex;flex-direction:column}.srOnly{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;clip:rect(0, 0, 0, 0);white-space:nowrap}::slotted([slot^=date_]){position:absolute;top:80%;left:50%;width:100%;white-space:nowrap;transform:translate(-50%, -50%)}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;top:5px}:host([renderForDateSlot]) .currentDayMarker{position:relative;padding-bottom:5px;top:-8px}@media screen and (min-width: 576px){.day{width:var(--ds-size-600, 3rem);height:var(--ds-size-800, 4rem)}.day:hover{cursor:pointer}}`;
8010
+ var styleCss$5 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
7892
8011
 
7893
- var colorCss$5 = css`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day:focus-visible:not(.selected){--ds-auro-calendar-cell-container-color: var(--ds-auro-calendar-cell-in-range-color)}:host .day.selected{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.selected ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success-subtle, #d6eac7)}:host .day.selected:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected-hover, #00274a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.reference{--ds-auro-calendar-cell-border-color: var(--ds-basic-color-border-default, #959595)}:host .day.reference:not(.selected):not(.disabled){--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-muted, #676767)}:host .day.reference.selected{--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host .day.disabled{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.blackout{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.inRange:before,:host .day.rangeDepartDate:before,:host .day.rangeReturnDate:before,:host .day.lastHoveredDate:before{background-color:var(--ds-auro-calendar-cell-in-range-color)}:host .day.sameDateTrip:before{--ds-auro-calendar-cell-in-range-color: transparent}`;
8012
+ var colorCss$5 = css`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day.activeCell:not(.selected){--ds-auro-calendar-cell-container-color: var(--ds-auro-calendar-cell-in-range-color);border-color:var(--ds-advanced-color-state-selected);outline-color:var(--ds-auro-calendar-cell-container-color)}:host .day.selected{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.selected ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success-subtle, #d6eac7)}:host .day.selected:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected-hover, #00274a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.reference:after{border-color:var(--ds-basic-color-border-default, #959595);box-shadow:inset 0 0 0 2px var(--ds-basic-color-surface-default, #ffffff)}:host .day.reference:hover::after{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background-muted, #f7f7f7)}:host .day:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host .day.disabled{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.blackout{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.inRange:before,:host .day.rangeDepartDate:before,:host .day.rangeReturnDate:before,:host .day.lastHoveredDate:before{background-color:var(--ds-auro-calendar-cell-in-range-color)}:host .day.sameDateTrip:before{--ds-auro-calendar-cell-in-range-color: transparent}`;
7894
8013
 
7895
8014
  class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,class extends t{});}closestElement(e,t=this,i=(t,s=t&&t.closest(e))=>t&&t!==document&&t!==window?s||i(t.getRootNode().host):null){return i(t)}handleComponentTagRename(e,t){const i=t.toLowerCase();e.tagName.toLowerCase()!==i&&e.setAttribute(i,true);}elementMatch(e,t){const i=t.toLowerCase();return e.tagName.toLowerCase()===i||e.hasAttribute(i)}getSlotText(e,t){const i=e.shadowRoot?.querySelector(`slot[name="${t}"]`);return (i?.assignedNodes({flatten:true})||[]).map(e=>e.textContent?.trim()).join(" ").trim()||null}}var r$1="top",o="bottom",n$1="right",a="left",l$3="auto",c$3=[r$1,o,n$1,a],p$6="start",d$3="end",f$6="viewport",h$3="popper",u$6=c$3.reduce(function(e,t){return e.concat([t+"-"+p$6,t+"-"+d$3])},[]),m$6=[].concat(c$3,[l$3]).reduce(function(e,t){return e.concat([t,t+"-"+p$6,t+"-"+d$3])},[]),g$6=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function v$3(e){return e?(e.nodeName||"").toLowerCase():null}function y$6(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function w$6(e){return e instanceof y$6(e).Element||e instanceof Element}function b$3(e){return e instanceof y$6(e).HTMLElement||e instanceof HTMLElement}function x$3(e){return "undefined"!=typeof ShadowRoot&&(e instanceof y$6(e).ShadowRoot||e instanceof ShadowRoot)}var S$3={name:"applyStyles",enabled:true,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var i=t.styles[e]||{},s=t.attributes[e]||{},r=t.elements[e];b$3(r)&&v$3(r)&&(Object.assign(r.style,i),Object.keys(s).forEach(function(e){var t=s[e];false===t?r.removeAttribute(e):r.setAttribute(e,true===t?"":t);}));});},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(e){var s=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce(function(e,t){return e[t]="",e},{});b$3(s)&&v$3(s)&&(Object.assign(s.style,o),Object.keys(r).forEach(function(e){s.removeAttribute(e);}));});}},requires:["computeStyles"]};function _$4(e){return e.split("-")[0]}var A$3=Math.max,O=Math.min,k$6=Math.round;function T$3(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function z$6(){return !/^((?!chrome|android).)*safari/i.test(T$3())}function E(e,t,i){ void 0===t&&(t=false),void 0===i&&(i=false);var s=e.getBoundingClientRect(),r=1,o=1;t&&b$3(e)&&(r=e.offsetWidth>0&&k$6(s.width)/e.offsetWidth||1,o=e.offsetHeight>0&&k$6(s.height)/e.offsetHeight||1);var n=(w$6(e)?y$6(e):window).visualViewport,a=!z$6()&&i,l=(s.left+(a&&n?n.offsetLeft:0))/r,c=(s.top+(a&&n?n.offsetTop:0))/o,p=s.width/r,d=s.height/o;return {width:p,height:d,top:c,right:l+p,bottom:c+d,left:l,x:l,y:c}}function M$6(e){var t=E(e),i=e.offsetWidth,s=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-s)<=1&&(s=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:s}}function B$3(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return true;if(i&&x$3(i)){var s=t;do{if(s&&e.isSameNode(s))return true;s=s.parentNode||s.host;}while(s)}return false}function L(e){return y$6(e).getComputedStyle(e)}function R$3(e){return ["table","td","th"].indexOf(v$3(e))>=0}function H$3(e){return ((w$6(e)?e.ownerDocument:e.document)||window.document).documentElement}function C$3(e){return "html"===v$3(e)?e:e.assignedSlot||e.parentNode||(x$3(e)?e.host:null)||H$3(e)}function D(e){return b$3(e)&&"fixed"!==L(e).position?e.offsetParent:null}function N$3(e){for(var t=y$6(e),i=D(e);i&&R$3(i)&&"static"===L(i).position;)i=D(i);return i&&("html"===v$3(i)||"body"===v$3(i)&&"static"===L(i).position)?t:i||function(e){var t=/firefox/i.test(T$3());if(/Trident/i.test(T$3())&&b$3(e)&&"fixed"===L(e).position)return null;var i=C$3(e);for(x$3(i)&&(i=i.host);b$3(i)&&["html","body"].indexOf(v$3(i))<0;){var s=L(i);if("none"!==s.transform||"none"!==s.perspective||"paint"===s.contain||-1!==["transform","perspective"].indexOf(s.willChange)||t&&"filter"===s.willChange||t&&s.filter&&"none"!==s.filter)return i;i=i.parentNode;}return null}(e)||t}function P(e){return ["top","bottom"].indexOf(e)>=0?"x":"y"}function j(e,t,i){return A$3(e,O(t,i))}function I(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function q$3(e,t){return t.reduce(function(t,i){return t[i]=e,t},{})}var F={name:"arrow",enabled:true,phase:"main",fn:function(e){var t,i=e.state,s=e.name,l=e.options,p=i.elements.arrow,d=i.modifiersData.popperOffsets,f=_$4(i.placement),h=P(f),u=[a,n$1].indexOf(f)>=0?"height":"width";if(p&&d){var m=function(e,t){return I("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:q$3(e,c$3))}(l.padding,i),g=M$6(p),v="y"===h?r$1:a,y="y"===h?o:n$1,w=i.rects.reference[u]+i.rects.reference[h]-d[h]-i.rects.popper[u],b=d[h]-i.rects.reference[h],x=N$3(p),S=x?"y"===h?x.clientHeight||0:x.clientWidth||0:0,A=w/2-b/2,O=m[v],k=S-g[u]-m[y],T=S/2-g[u]/2+A,z=j(O,T,k),E=h;i.modifiersData[s]=((t={})[E]=z,t.centerOffset=z-T,t);}},effect:function(e){var t=e.state,i=e.options.element,s=void 0===i?"[data-popper-arrow]":i;null!=s&&("string"!=typeof s||(s=t.elements.popper.querySelector(s)))&&B$3(t.elements.popper,s)&&(t.elements.arrow=s);},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function U$3(e){return e.split("-")[1]}var V={top:"auto",right:"auto",bottom:"auto",left:"auto"};function W(e){var t,i=e.popper,s=e.popperRect,l=e.placement,c=e.variation,p=e.offsets,f=e.position,h=e.gpuAcceleration,u=e.adaptive,m=e.roundOffsets,g=e.isFixed,v=p.x,w=void 0===v?0:v,b=p.y,x=void 0===b?0:b,S="function"==typeof m?m({x:w,y:x}):{x:w,y:x};w=S.x,x=S.y;var _=p.hasOwnProperty("x"),A=p.hasOwnProperty("y"),O=a,T=r$1,z=window;if(u){var E=N$3(i),M="clientHeight",B="clientWidth";if(E===y$6(i)&&"static"!==L(E=H$3(i)).position&&"absolute"===f&&(M="scrollHeight",B="scrollWidth"),l===r$1||(l===a||l===n$1)&&c===d$3)T=o,x-=(g&&E===z&&z.visualViewport?z.visualViewport.height:E[M])-s.height,x*=h?1:-1;if(l===a||(l===r$1||l===o)&&c===d$3)O=n$1,w-=(g&&E===z&&z.visualViewport?z.visualViewport.width:E[B])-s.width,w*=h?1:-1;}var R,C=Object.assign({position:f},u&&V),D=true===m?function(e,t){var i=e.x,s=e.y,r=t.devicePixelRatio||1;return {x:k$6(i*r)/r||0,y:k$6(s*r)/r||0}}({x:w,y:x},y$6(i)):{x:w,y:x};return w=D.x,x=D.y,h?Object.assign({},C,((R={})[T]=A?"0":"",R[O]=_?"0":"",R.transform=(z.devicePixelRatio||1)<=1?"translate("+w+"px, "+x+"px)":"translate3d("+w+"px, "+x+"px, 0)",R)):Object.assign({},C,((t={})[T]=A?x+"px":"",t[O]=_?w+"px":"",t.transform="",t))}var X={passive:true};var $={left:"right",right:"left",bottom:"top",top:"bottom"};function G(e){return e.replace(/left|right|bottom|top/g,function(e){return $[e]})}var K={start:"end",end:"start"};function Y(e){return e.replace(/start|end/g,function(e){return K[e]})}function J(e){var t=y$6(e);return {scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Q(e){return E(H$3(e)).left+J(e).scrollLeft}function Z(e){var t=L(e),i=t.overflow,s=t.overflowX,r=t.overflowY;return /auto|scroll|overlay|hidden/.test(i+r+s)}function ee(e){return ["html","body","#document"].indexOf(v$3(e))>=0?e.ownerDocument.body:b$3(e)&&Z(e)?e:ee(C$3(e))}function te(e,t){var i;void 0===t&&(t=[]);var s=ee(e),r=s===(null==(i=e.ownerDocument)?void 0:i.body),o=y$6(s),n=r?[o].concat(o.visualViewport||[],Z(s)?s:[]):s,a=t.concat(n);return r?a:a.concat(te(C$3(n)))}function ie(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function se(e,t,i){return t===f$6?ie(function(e,t){var i=y$6(e),s=H$3(e),r=i.visualViewport,o=s.clientWidth,n=s.clientHeight,a=0,l=0;if(r){o=r.width,n=r.height;var c=z$6();(c||!c&&"fixed"===t)&&(a=r.offsetLeft,l=r.offsetTop);}return {width:o,height:n,x:a+Q(e),y:l}}(e,i)):w$6(t)?function(e,t){var i=E(e,false,"fixed"===t);return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}(t,i):ie(function(e){var t,i=H$3(e),s=J(e),r=null==(t=e.ownerDocument)?void 0:t.body,o=A$3(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),n=A$3(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),a=-s.scrollLeft+Q(e),l=-s.scrollTop;return "rtl"===L(r||i).direction&&(a+=A$3(i.clientWidth,r?r.clientWidth:0)-o),{width:o,height:n,x:a,y:l}}(H$3(e)))}function re(e,t,i,s){var r="clippingParents"===t?function(e){var t=te(C$3(e)),i=["absolute","fixed"].indexOf(L(e).position)>=0&&b$3(e)?N$3(e):e;return w$6(i)?t.filter(function(e){return w$6(e)&&B$3(e,i)&&"body"!==v$3(e)}):[]}(e):[].concat(t),o=[].concat(r,[i]),n=o[0],a=o.reduce(function(t,i){var r=se(e,i,s);return t.top=A$3(r.top,t.top),t.right=O(r.right,t.right),t.bottom=O(r.bottom,t.bottom),t.left=A$3(r.left,t.left),t},se(e,n,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function oe(e){var t,i=e.reference,s=e.element,l=e.placement,c=l?_$4(l):null,f=l?U$3(l):null,h=i.x+i.width/2-s.width/2,u=i.y+i.height/2-s.height/2;switch(c){case r$1:t={x:h,y:i.y-s.height};break;case o:t={x:h,y:i.y+i.height};break;case n$1:t={x:i.x+i.width,y:u};break;case a:t={x:i.x-s.width,y:u};break;default:t={x:i.x,y:i.y};}var m=c?P(c):null;if(null!=m){var g="y"===m?"height":"width";switch(f){case p$6:t[m]=t[m]-(i[g]/2-s[g]/2);break;case d$3:t[m]=t[m]+(i[g]/2-s[g]/2);}}return t}function ne(e,t){ void 0===t&&(t={});var i=t,s=i.placement,a=void 0===s?e.placement:s,l=i.strategy,p=void 0===l?e.strategy:l,d=i.boundary,u=void 0===d?"clippingParents":d,m=i.rootBoundary,g=void 0===m?f$6:m,v=i.elementContext,y=void 0===v?h$3:v,b=i.altBoundary,x=void 0!==b&&b,S=i.padding,_=void 0===S?0:S,A=I("number"!=typeof _?_:q$3(_,c$3)),O=y===h$3?"reference":h$3,k=e.rects.popper,T=e.elements[x?O:y],z=re(w$6(T)?T:T.contextElement||H$3(e.elements.popper),u,g,p),M=E(e.elements.reference),B=oe({reference:M,element:k,placement:a}),L=ie(Object.assign({},k,B)),R=y===h$3?L:M,C={top:z.top-R.top+A.top,bottom:R.bottom-z.bottom+A.bottom,left:z.left-R.left+A.left,right:R.right-z.right+A.right},D=e.modifiersData.offset;if(y===h$3&&D){var N=D[a];Object.keys(C).forEach(function(e){var t=[n$1,o].indexOf(e)>=0?1:-1,i=[r$1,o].indexOf(e)>=0?"y":"x";C[e]+=N[i]*t;});}return C}function ae(e,t){ void 0===t&&(t={});var i=t,s=i.placement,r=i.boundary,o=i.rootBoundary,n=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,p=void 0===l?m$6:l,d=U$3(s),f=d?a?u$6:u$6.filter(function(e){return U$3(e)===d}):c$3,h=f.filter(function(e){return p.indexOf(e)>=0});0===h.length&&(h=f);var g=h.reduce(function(t,i){return t[i]=ne(e,{placement:i,boundary:r,rootBoundary:o,padding:n})[_$4(i)],t},{});return Object.keys(g).sort(function(e,t){return g[e]-g[t]})}var le={name:"flip",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name;if(!t.modifiersData[s]._skip){for(var c=i.mainAxis,d=void 0===c||c,f=i.altAxis,h=void 0===f||f,u=i.fallbackPlacements,m=i.padding,g=i.boundary,v=i.rootBoundary,y=i.altBoundary,w=i.flipVariations,b=void 0===w||w,x=i.allowedAutoPlacements,S=t.options.placement,A=_$4(S),O=u||(A===S||!b?[G(S)]:function(e){if(_$4(e)===l$3)return [];var t=G(e);return [Y(e),t,Y(t)]}(S)),k=[S].concat(O).reduce(function(e,i){return e.concat(_$4(i)===l$3?ae(t,{placement:i,boundary:g,rootBoundary:v,padding:m,flipVariations:b,allowedAutoPlacements:x}):i)},[]),T=t.rects.reference,z=t.rects.popper,E=new Map,M=true,B=k[0],L=0;L<k.length;L++){var R=k[L],H=_$4(R),C=U$3(R)===p$6,D=[r$1,o].indexOf(H)>=0,N=D?"width":"height",P=ne(t,{placement:R,boundary:g,rootBoundary:v,altBoundary:y,padding:m}),j=D?C?n$1:a:C?o:r$1;T[N]>z[N]&&(j=G(j));var I=G(j),q=[];if(d&&q.push(P[H]<=0),h&&q.push(P[j]<=0,P[I]<=0),q.every(function(e){return e})){B=R,M=false;break}E.set(R,q);}if(M)for(var F=function(e){var t=k.find(function(t){var i=E.get(t);if(i)return i.slice(0,e).every(function(e){return e})});if(t)return B=t,"break"},V=b?3:1;V>0;V--){if("break"===F(V))break}t.placement!==B&&(t.modifiersData[s]._skip=true,t.placement=B,t.reset=true);}},requiresIfExists:["offset"],data:{_skip:false}};function ce(e,t,i){return void 0===i&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function pe(e){return [r$1,n$1,o,a].some(function(t){return e[t]>=0})}var de={name:"offset",enabled:true,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,s=e.name,o=i.offset,l=void 0===o?[0,0]:o,c=m$6.reduce(function(e,i){return e[i]=function(e,t,i){var s=_$4(e),o=[a,r$1].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},t,{placement:e})):i,c=l[0],p=l[1];return c=c||0,p=(p||0)*o,[a,n$1].indexOf(s)>=0?{x:p,y:c}:{x:c,y:p}}(i,t.rects,l),e},{}),p=c[t.placement],d=p.x,f=p.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=f),t.modifiersData[s]=c;}};var fe={name:"preventOverflow",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name,l=i.mainAxis,c=void 0===l||l,d=i.altAxis,f=void 0!==d&&d,h=i.boundary,u=i.rootBoundary,m=i.altBoundary,g=i.padding,v=i.tether,y=void 0===v||v,w=i.tetherOffset,b=void 0===w?0:w,x=ne(t,{boundary:h,rootBoundary:u,padding:g,altBoundary:m}),S=_$4(t.placement),k=U$3(t.placement),T=!k,z=P(S),E="x"===z?"y":"x",B=t.modifiersData.popperOffsets,L=t.rects.reference,R=t.rects.popper,H="function"==typeof b?b(Object.assign({},t.rects,{placement:t.placement})):b,C="number"==typeof H?{mainAxis:H,altAxis:H}:Object.assign({mainAxis:0,altAxis:0},H),D=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,I={x:0,y:0};if(B){if(c){var q,F="y"===z?r$1:a,V="y"===z?o:n$1,W="y"===z?"height":"width",X=B[z],$=X+x[F],G=X-x[V],K=y?-R[W]/2:0,Y=k===p$6?L[W]:R[W],J=k===p$6?-R[W]:-L[W],Q=t.elements.arrow,Z=y&&Q?M$6(Q):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[F],ie=ee[V],se=j(0,L[W],Z[W]),re=T?L[W]/2-K-se-te-C.mainAxis:Y-se-te-C.mainAxis,oe=T?-L[W]/2+K+se+ie+C.mainAxis:J+se+ie+C.mainAxis,ae=t.elements.arrow&&N$3(t.elements.arrow),le=ae?"y"===z?ae.clientTop||0:ae.clientLeft||0:0,ce=null!=(q=null==D?void 0:D[z])?q:0,pe=X+oe-ce,de=j(y?O($,X+re-ce-le):$,X,y?A$3(G,pe):G);B[z]=de,I[z]=de-X;}if(f){var fe,he="x"===z?r$1:a,ue="x"===z?o:n$1,me=B[E],ge="y"===E?"height":"width",ve=me+x[he],ye=me-x[ue],we=-1!==[r$1,a].indexOf(S),be=null!=(fe=null==D?void 0:D[E])?fe:0,xe=we?ve:me-L[ge]-R[ge]-be+C.altAxis,Se=we?me+L[ge]+R[ge]-be-C.altAxis:ye,_e=y&&we?function(e,t,i){var s=j(e,t,i);return s>i?i:s}(xe,me,Se):j(y?xe:ve,me,y?Se:ye);B[E]=_e,I[E]=_e-me;}t.modifiersData[s]=I;}},requiresIfExists:["offset"]};function he(e,t,i){ void 0===i&&(i=false);var s,r,o=b$3(t),n=b$3(t)&&function(e){var t=e.getBoundingClientRect(),i=k$6(t.width)/e.offsetWidth||1,s=k$6(t.height)/e.offsetHeight||1;return 1!==i||1!==s}(t),a=H$3(t),l=E(e,n,i),c={scrollLeft:0,scrollTop:0},p={x:0,y:0};return (o||!o&&!i)&&(("body"!==v$3(t)||Z(a))&&(c=(s=t)!==y$6(s)&&b$3(s)?{scrollLeft:(r=s).scrollLeft,scrollTop:r.scrollTop}:J(s)),b$3(t)?((p=E(t,true)).x+=t.clientLeft,p.y+=t.clientTop):a&&(p.x=Q(a))),{x:l.left+c.scrollLeft-p.x,y:l.top+c.scrollTop-p.y,width:l.width,height:l.height}}function ue(e){var t=new Map,i=new Set,s=[];function r(e){i.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!i.has(e)){var s=t.get(e);s&&r(s);}}),s.push(e);}return e.forEach(function(e){t.set(e.name,e);}),e.forEach(function(e){i.has(e.name)||r(e);}),s}var me={placement:"bottom",modifiers:[],strategy:"absolute"};function ge(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return !t.some(function(e){return !(e&&"function"==typeof e.getBoundingClientRect)})}function ve(e){ void 0===e&&(e={});var t=e,i=t.defaultModifiers,s=void 0===i?[]:i,r=t.defaultOptions,o=void 0===r?me:r;return function(e,t,i){ void 0===i&&(i=o);var r,n,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},me,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},l=[],c=false,p={state:a,setOptions:function(i){var r="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,r),a.scrollParents={reference:w$6(e)?te(e):e.contextElement?te(e.contextElement):[],popper:te(t)};var n,c,f=function(e){var t=ue(e);return g$6.reduce(function(e,i){return e.concat(t.filter(function(e){return e.phase===i}))},[])}((n=[].concat(s,a.options.modifiers),c=n.reduce(function(e,t){var i=e[t.name];return e[t.name]=i?Object.assign({},i,t,{options:Object.assign({},i.options,t.options),data:Object.assign({},i.data,t.data)}):t,e},{}),Object.keys(c).map(function(e){return c[e]})));return a.orderedModifiers=f.filter(function(e){return e.enabled}),a.orderedModifiers.forEach(function(e){var t=e.name,i=e.options,s=void 0===i?{}:i,r=e.effect;if("function"==typeof r){var o=r({state:a,name:t,instance:p,options:s}),n=function(){};l.push(o||n);}}),p.update()},forceUpdate:function(){if(!c){var e=a.elements,t=e.reference,i=e.popper;if(ge(t,i)){a.rects={reference:he(t,N$3(i),"fixed"===a.options.strategy),popper:M$6(i)},a.reset=false,a.placement=a.options.placement,a.orderedModifiers.forEach(function(e){return a.modifiersData[e.name]=Object.assign({},e.data)});for(var s=0;s<a.orderedModifiers.length;s++)if(true!==a.reset){var r=a.orderedModifiers[s],o=r.fn,n=r.options,l=void 0===n?{}:n,d=r.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:p})||a);}else a.reset=false,s=-1;}}},update:(r=function(){return new Promise(function(e){p.forceUpdate(),e(a);})},function(){return n||(n=new Promise(function(e){Promise.resolve().then(function(){n=void 0,e(r());});})),n}),destroy:function(){d(),c=true;}};if(!ge(e,t))return p;function d(){l.forEach(function(e){return e()}),l=[];}return p.setOptions(i).then(function(e){!c&&i.onFirstUpdate&&i.onFirstUpdate(e);}),p}}var ye=ve({defaultModifiers:[{name:"eventListeners",enabled:true,phase:"write",fn:function(){},effect:function(e){var t=e.state,i=e.instance,s=e.options,r=s.scroll,o=void 0===r||r,n=s.resize,a=void 0===n||n,l=y$6(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(e){e.addEventListener("scroll",i.update,X);}),a&&l.addEventListener("resize",i.update,X),function(){o&&c.forEach(function(e){e.removeEventListener("scroll",i.update,X);}),a&&l.removeEventListener("resize",i.update,X);}},data:{}},{name:"popperOffsets",enabled:true,phase:"read",fn:function(e){var t=e.state,i=e.name;t.modifiersData[i]=oe({reference:t.rects.reference,element:t.rects.popper,placement:t.placement});},data:{}},{name:"computeStyles",enabled:true,phase:"beforeWrite",fn:function(e){var t=e.state,i=e.options,s=i.gpuAcceleration,r=void 0===s||s,o=i.adaptive,n=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:_$4(t.placement),variation:U$3(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,W(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:n,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,W(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:false,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement});},data:{}},S$3,de,le,fe,F,{name:"hide",enabled:true,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,s=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,n=ne(t,{elementContext:"reference"}),a=ne(t,{altBoundary:true}),l=ce(n,s),c=ce(a,r,o),p=pe(l),d=pe(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":d});}}]});class we{constructor(e,t,i,s){this.anchor=e,this.popover=t,this.boundaryElement=this.setBoundary(s),this.options={placement:i,visibleClass:"data-show"},this.popover.classList.remove(this.options.visibleClass);}setBoundary(e){return "string"==typeof e?document.querySelector(e)||document.body:e||document.body}show(){this.popper&&this.popper.destroy(),this.popper=ye(this.anchor,this.popover,{tooltip:this.anchor,placement:this.options.placement,modifiers:[{name:"offset",options:{offset:[0,18]}},{name:"preventOverflow",options:{mainAxis:true,boundary:this.boundaryElement,rootBoundary:"document",padding:16}}]});}triggerUpdate(){this.popper.update();}hide(){this.popover.classList.remove(this.options.visibleClass);}}var be=css`::slotted(*):not([onDark]),::slotted(*):not([appearance=inverse]){color:var(--ds-auro-popover-text-color)}.popover{background-color:var(--ds-auro-popover-container-color);box-shadow:var(--ds-auro-popover-boxshadow-color)}.arrow:before{background-color:var(--ds-auro-popover-container-color);box-shadow:2px 2px 1px 0 var(--ds-auro-popover-boxshadow-color)}
7896
8015
  `,xe=css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host(:not([data-show])) .popover,:host([disabled]) .popover,:host([addSpace]) :host(:not([data-show])) .popover{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;padding:0;border:0}.util_insetNone{padding:0}.util_insetXxxs{padding:.125rem}.util_insetXxxs--stretch{padding:.25rem .125rem}.util_insetXxxs--squish{padding:0 .125rem}.util_insetXxs{padding:.25rem}.util_insetXxs--stretch{padding:.375rem .25rem}.util_insetXxs--squish{padding:.125rem .25rem}.util_insetXs{padding:.5rem}.util_insetXs--stretch{padding:.75rem .5rem}.util_insetXs--squish{padding:.25rem .5rem}.util_insetSm{padding:.75rem}.util_insetSm--stretch{padding:1.125rem .75rem}.util_insetSm--squish{padding:.375rem .75rem}.util_insetMd{padding:1rem}.util_insetMd--stretch{padding:1.5rem 1rem}.util_insetMd--squish{padding:.5rem 1rem}.util_insetLg{padding:1.5rem}.util_insetLg--stretch{padding:2.25rem 1.5rem}.util_insetLg--squish{padding:.75rem 1.5rem}.util_insetXl{padding:2rem}.util_insetXl--stretch{padding:3rem 2rem}.util_insetXl--squish{padding:1rem 2rem}.util_insetXxl{padding:3rem}.util_insetXxl--stretch{padding:4.5rem 3rem}.util_insetXxl--squish{padding:1.5rem 3rem}.util_insetXxxl{padding:4rem}.util_insetXxxl--stretch{padding:6rem 4rem}.util_insetXxxl--squish{padding:2rem 4rem}::slotted(*){white-space:normal}::slotted(*:hover){cursor:pointer}[data-trigger-placement]::slotted(*:hover){position:relative}[data-trigger-placement]::slotted(*:hover):before{position:absolute;left:0;display:block;width:100%;height:calc(var(--ds-size-200, 1rem) + var(--ds-size-50, .25rem));content:""}[data-trigger-placement^=top]::slotted(*:hover):before{top:calc(-1 * (var(--ds-size-200, 1rem) + var(--ds-size-50, .25rem)))}[data-trigger-placement^=bottom]::slotted(*:hover):before{bottom:calc(-1 * (var(--ds-size-200, 1rem) + var(--ds-size-50, .25rem)))}:host([data-show]) .popover{z-index:var(--ds-depth-tooltip, 400)}:host([removeSpace]) .popover{margin:calc(-1 * (var(--ds-size-50, .25rem) + 1px)) 0!important}:host([addSpace]) .popover{margin:var(--ds-size-200, 1rem) 0!important}:host([addSpace]) [data-trigger-placement]::slotted(*:hover):before{height:var(--ds-size-500, 2.5rem)}:host([addSpace]) [data-trigger-placement^=top]::slotted(*:hover):before{top:calc(-1 * var(--ds-size-500, 2.5rem))}:host([addSpace]) [data-trigger-placement^=bottom]::slotted(*:hover):before{bottom:calc(-1 * var(--ds-size-500, 2.5rem))}.popover{display:inline-block;max-width:calc(100% - var(--ds-size-400, 2rem));border-radius:var(--ds-border-radius, .375rem)}@media screen and (min-width:576px){.popover{max-width:50%}}@media screen and (min-width:768px){.popover{max-width:40%}}@media screen and (min-width:1024px){.popover{max-width:27rem}}[data-popper-placement^=top]>.arrow{bottom:calc(-1 * (var(--ds-size-100, .5rem) + var(--ds-size-25, .125rem)))}[data-popper-placement^=top]>.arrow:before{top:calc(-1 * var(--ds-size-200, 1rem));left:calc(-1 * var(--ds-size-75, .375rem));transform:rotate(45deg)}[data-popper-placement^=bottom]>.arrow{top:calc(-1 * (var(--ds-size-100, .5rem) + var(--ds-size-25, .125rem)))}[data-popper-placement^=bottom]>.arrow:before{top:var(--ds-size-50, .25rem);right:calc(-1 * var(--ds-size-200, 1rem));transform:rotate(-135deg)}.arrow{position:relative;margin-top:-var(--ds-size-100,.5rem)}.arrow:before{position:absolute;width:var(--ds-size-150, .75rem);height:var(--ds-size-150, .75rem);content:""}
@@ -7913,7 +8032,7 @@ class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,cl
7913
8032
 
7914
8033
  var popoverVersion = '6.0.1';
7915
8034
 
7916
- /* eslint-disable curly, max-lines, no-underscore-dangle, no-magic-numbers, no-underscore-dangle, max-params, no-void, init-declarations, no-extra-parens, arrow-parens, max-lines, line-comment-position, no-inline-comments, lit/binding-positions, lit/no-invalid-html */
8035
+ /* eslint-disable curly, max-lines, no-underscore-dangle, no-magic-numbers, no-underscore-dangle, max-params, no-extra-parens, arrow-parens, max-lines, line-comment-position, no-inline-comments, lit/binding-positions, lit/no-invalid-html */
7917
8036
 
7918
8037
  class AuroCalendarCell extends LitElement {
7919
8038
  constructor() {
@@ -7921,7 +8040,6 @@ class AuroCalendarCell extends LitElement {
7921
8040
 
7922
8041
  this.day = null;
7923
8042
  this.selected = false;
7924
- this.hovered = false;
7925
8043
  this.dateTo = null;
7926
8044
  this.dateFrom = null;
7927
8045
  this.month = null;
@@ -7929,7 +8047,6 @@ class AuroCalendarCell extends LitElement {
7929
8047
  this.max = null;
7930
8048
  this.disabled = false;
7931
8049
  this.disabledDays = [];
7932
- this.hoveredDate = null;
7933
8050
  this.isCurrentDate = false;
7934
8051
  this._locale = null;
7935
8052
  this.dateStr = null;
@@ -7954,7 +8071,6 @@ class AuroCalendarCell extends LitElement {
7954
8071
  // ...super.properties,
7955
8072
  day: { type: Object },
7956
8073
  selected: { type: Boolean },
7957
- hovered: { type: Boolean },
7958
8074
  dateTo: { type: String },
7959
8075
  dateFrom: { type: String },
7960
8076
  month: { type: String },
@@ -7965,15 +8081,10 @@ class AuroCalendarCell extends LitElement {
7965
8081
  reflect: true
7966
8082
  },
7967
8083
  disabledDays: { type: Array },
7968
- hoveredDate: { type: String },
7969
8084
  isCurrentDate: { type: Boolean },
7970
8085
  locale: { type: Object },
7971
8086
  dateStr: { type: String },
7972
8087
  renderForDateSlot: { type: Boolean },
7973
- active: {
7974
- type: Boolean,
7975
- reflect: true
7976
- },
7977
8088
  hasPopoverContent: { type: Boolean }
7978
8089
  };
7979
8090
  }
@@ -7998,17 +8109,17 @@ class AuroCalendarCell extends LitElement {
7998
8109
  }
7999
8110
 
8000
8111
  /**
8001
- * Handles selected and hovered states of the calendar cell when the date changes.
8112
+ * Handles selected state of the calendar cell when the selection changes.
8113
+ * Also clears any imperative range preview classes so classMap is the
8114
+ * sole source of truth after a selection update.
8002
8115
  * @private
8003
8116
  * @param {Number} dateFrom - Depart date.
8004
8117
  * @param {Number} dateTo - Return date.
8005
- * @param {Number} hoveredDate - Hovered date.
8006
8118
  * @param {Object} day - An object containing the dateFrom and day of month values.
8007
8119
  * @returns {void}
8008
8120
  */
8009
- dateChanged(dateFrom, dateTo, hoveredDate, day) {
8121
+ dateChanged(dateFrom, dateTo, day) {
8010
8122
  this.selected = false;
8011
- this.hovered = false;
8012
8123
 
8013
8124
  const parsedDateFrom = parseInt(dateFrom, 10);
8014
8125
  const parsedDateTo = parseInt(dateTo, 10);
@@ -8020,10 +8131,6 @@ class AuroCalendarCell extends LitElement {
8020
8131
  if (day.date === departTimestamp || day.date === returnTimestamp) {
8021
8132
  this.selected = true;
8022
8133
  }
8023
-
8024
- if (((hoveredDate === day.date || day.date < hoveredDate) && day.date > parsedDateFrom && !parsedDateTo && !Number.isNaN(parsedDateFrom) && parsedDateFrom !== undefined && !this.selected) || (day.date > parsedDateFrom && day.date < parsedDateTo)) {
8025
- this.hovered = true;
8026
- }
8027
8134
  }
8028
8135
  }
8029
8136
 
@@ -8049,16 +8156,30 @@ class AuroCalendarCell extends LitElement {
8049
8156
 
8050
8157
  /**
8051
8158
  * Handles user hover events and dispatches a custom event.
8052
- * Always dispatches for range pickers so the preview updates correctly.
8159
+ * Does NOT set any reactive properties the range preview is handled
8160
+ * imperatively by the calendar component to avoid O(N) re-renders.
8053
8161
  * @private
8054
8162
  * @returns {void}
8055
8163
  */
8056
8164
  handleHover() {
8057
- this.hovered = true;
8058
-
8059
- let _a;
8060
8165
  this.dispatchEvent(new CustomEvent('date-is-hovered', {
8061
- detail: { date: (_a = this.day) === null || _a === void 0 ? void 0 : _a.date },
8166
+ detail: { date: this.day?.date },
8167
+ }));
8168
+ }
8169
+
8170
+ /**
8171
+ * Handles focus events on the cell button.
8172
+ * Dispatches a lightweight event for the calendar to handle SR
8173
+ * announcements and range preview updates without triggering
8174
+ * any Lit lifecycle updates.
8175
+ * @private
8176
+ * @returns {void}
8177
+ */
8178
+ handleFocus() {
8179
+ this.dispatchEvent(new CustomEvent('calendar-cell-focused', {
8180
+ bubbles: true,
8181
+ composed: true,
8182
+ detail: { date: this.day?.date },
8062
8183
  }));
8063
8184
  }
8064
8185
 
@@ -8072,7 +8193,7 @@ class AuroCalendarCell extends LitElement {
8072
8193
  * @returns {Boolean} - True if the date is out of range.
8073
8194
  */
8074
8195
  isOutOfRange(day, min, max) {
8075
- if (day && day.date != null) {
8196
+ if (day && day.date !== null && day.date !== undefined) {
8076
8197
  return day.date < min || day.date > max;
8077
8198
  }
8078
8199
  return false;
@@ -8085,13 +8206,13 @@ class AuroCalendarCell extends LitElement {
8085
8206
  * @returns {Boolean} - True if the date is a blackout date.
8086
8207
  */
8087
8208
  isBlackout() {
8088
- if (!this.day || this.day.date == null || this.isOutOfRange(this.day, this.min, this.max)) {
8209
+ if (!this.day || this.day.date === null || this.day.date === undefined || this.isOutOfRange(this.day, this.min, this.max)) {
8089
8210
  return false;
8090
8211
  }
8091
8212
 
8092
8213
  // Check against disabledDays timestamps (legacy path)
8093
8214
  if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
8094
- if (this.disabledDays.findIndex(d => parseInt(d, 10) === this.day.date) !== -1) {
8215
+ if (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1) {
8095
8216
  return true;
8096
8217
  }
8097
8218
  }
@@ -8173,12 +8294,26 @@ class AuroCalendarCell extends LitElement {
8173
8294
 
8174
8295
  let label = dateFormatter.format(date);
8175
8296
 
8297
+ // Append date slot content (e.g. prices) so it is announced with the date.
8298
+ if (this.renderForDateSlot) {
8299
+ const dateSlotEl = this.querySelector(`[slot="date_${this.dateStr}"]`);
8300
+ if (dateSlotEl) {
8301
+ const text = dateSlotEl.innerText?.trim();
8302
+ if (text) {
8303
+ label += `, ${text}`;
8304
+ }
8305
+ }
8306
+ }
8307
+
8176
8308
  // appending popover content here so that it gets read in a logical order with the other date content.
8177
8309
  if (this.hasPopoverContent) {
8178
- label += `, ${this.querySelector(`[slot="popover_${this.dateStr}"]`).innerText.trim()}`;
8310
+ const popoverEl = this.querySelector(`[slot="popover_${this.dateStr}"]`);
8311
+ if (popoverEl) {
8312
+ label += `, ${popoverEl.innerText.trim()}`;
8313
+ }
8179
8314
  }
8180
8315
 
8181
- // Append range position if in range mode
8316
+ // Append range position label for range datepickers
8182
8317
  const rangePosition = this.getRangePosition();
8183
8318
  if (rangePosition) {
8184
8319
  label += `, ${rangePosition}`;
@@ -8289,12 +8424,12 @@ class AuroCalendarCell extends LitElement {
8289
8424
  }
8290
8425
 
8291
8426
  /**
8292
- * Checks if the current date is a highlighted date.
8427
+ * Checks if the current date is a referenced date.
8293
8428
  * @param {Object} dateStr - The date string in MM_DD_YYYY format.
8294
- * @returns Boolean - True if the date is a highlighted date.
8429
+ * @returns Boolean - True if the date is a referenced date.
8295
8430
  */
8296
8431
  isReferenceDate(dateStr) {
8297
- // If the datepicker has highlighted dates specified
8432
+ // If the datepicker has referenced dates specified
8298
8433
  if (this.datepicker && this.datepicker.hasAttribute('referenceDates')) {
8299
8434
 
8300
8435
  // Get the referenceDates attribute from the datepicker
@@ -8408,6 +8543,11 @@ class AuroCalendarCell extends LitElement {
8408
8543
  };
8409
8544
  this.datepicker.addEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
8410
8545
 
8546
+ // Cache button reference for imperative class manipulation.
8547
+ this.updateComplete.then(() => {
8548
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
8549
+ });
8550
+
8411
8551
  // Trigger an initial update now that `this.datepicker` is assigned so
8412
8552
  // cells reflect blackout/slot state that was configured before first render.
8413
8553
  this.requestUpdate();
@@ -8439,13 +8579,26 @@ class AuroCalendarCell extends LitElement {
8439
8579
  }
8440
8580
 
8441
8581
  updated(properties) {
8442
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('hoveredDate') || properties.has('day')) {
8443
- this.dateChanged(this.dateFrom, this.dateTo, this.hoveredDate, this.day);
8582
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('day')) {
8583
+ this.dateChanged(this.dateFrom, this.dateTo, this.day);
8444
8584
  }
8445
8585
 
8446
- if (this.day) {
8586
+ if (properties.has('day') && this.day) {
8447
8587
  this.setDateSlotName();
8448
8588
  this.handleSlotContent();
8589
+
8590
+ // Re-cache button reference when the day changes (cell may have re-rendered).
8591
+ this.updateComplete.then(() => {
8592
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
8593
+ });
8594
+
8595
+ // Update host-level aria attributes for ariaActiveDescendantElement.
8596
+ this.updateHostAria();
8597
+ }
8598
+
8599
+ // Update host aria when selection changes (aria-selected, range labels)
8600
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
8601
+ this.updateHostAria();
8449
8602
  }
8450
8603
 
8451
8604
  // Configure popover when it first becomes rendered
@@ -8455,64 +8608,165 @@ class AuroCalendarCell extends LitElement {
8455
8608
  }
8456
8609
 
8457
8610
  /**
8458
- * Programmatically focuses the cell's interactive button element.
8611
+ * Updates ARIA attributes on the host element so that
8612
+ * ariaActiveDescendantElement can expose cell info to the SR.
8613
+ * @private
8459
8614
  * @returns {void}
8460
8615
  */
8461
- focusButton() {
8462
- const button = this.shadowRoot.querySelector('button:not([aria-hidden])');
8463
- if (button) {
8464
- button.focus();
8465
- }
8466
- }
8616
+ updateHostAria() {
8617
+ if (!this.day || this.day.date === undefined) return;
8467
8618
 
8468
- renderCellButton() {
8469
8619
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
8470
- const role = outOfRange ? 'presentation' : 'gridcell';
8471
- const blackout = this.isBlackout();
8620
+ if (outOfRange) {
8621
+ this.removeAttribute('role');
8622
+ this.removeAttribute('aria-label');
8623
+ return;
8624
+ }
8472
8625
 
8473
- const buttonClasses = {
8474
- 'day': true,
8475
- 'body-lg': true,
8476
- 'currentDate': this.isCurrentDate,
8477
- 'selected': this.selected,
8478
- 'inRange': this.datepicker?.hasAttribute('range') && this.hovered && this.isInRange(this.day, this.dateFrom, this.dateTo),
8479
- 'lastHoveredDate': this.isLastHoveredDate(this.day, this.dateFrom, this.dateTo, this.hoveredDate) && this.datepicker && this.datepicker.hasAttribute('range'),
8626
+ // The host acts as the gridcell for ariaActiveDescendantElement.
8627
+ this.setAttribute('role', 'gridcell');
8628
+ this.setAttribute('aria-label', this.getAriaLabel());
8629
+ this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
8630
+
8631
+ if (this.isBlackout()) {
8632
+ this.setAttribute('aria-disabled', 'true');
8633
+ } else {
8634
+ this.removeAttribute('aria-disabled');
8635
+ }
8636
+ }
8637
+
8638
+ /**
8639
+ * Programmatically focuses the cell's interactive button element.
8640
+ * Uses focusVisible: true so the :focus-visible ring appears even when
8641
+ * the bib was opened via mouse click (which sets mouse input modality).
8642
+ * @returns {void}
8643
+ */
8644
+ focusButton() {
8645
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
8646
+ if (button) {
8647
+ button.focus({ focusVisible: true });
8648
+ }
8649
+ }
8650
+
8651
+ /**
8652
+ * Imperatively marks this cell as active without triggering a Lit re-render.
8653
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
8654
+ * @returns {void}
8655
+ */
8656
+ setActive() {
8657
+ this.active = true;
8658
+
8659
+ // Show the popover when this cell becomes active via keyboard navigation.
8660
+ if (this.auroPopover) {
8661
+ this.auroPopover.toggleShow();
8662
+ }
8663
+ }
8664
+
8665
+ /**
8666
+ * Imperatively marks this cell as inactive without triggering a Lit re-render.
8667
+ * @returns {void}
8668
+ */
8669
+ clearActive() {
8670
+ this.active = false;
8671
+ const btn = this._cachedButton || this.shadowRoot.querySelector('button.day');
8672
+ if (btn) {
8673
+ btn.classList.remove('activeCell');
8674
+ }
8675
+
8676
+ // Hide the popover when this cell loses active state.
8677
+ if (this.auroPopover) {
8678
+ this.auroPopover.toggleHide();
8679
+ }
8680
+ }
8681
+
8682
+ /**
8683
+ * Updates range preview classes imperatively (no Lit re-render).
8684
+ * Called by the calendar component when the hovered date changes
8685
+ * during range selection (dateFrom set, dateTo not yet set).
8686
+ * @param {Number} hoveredDate - Unix timestamp of the currently hovered/focused date.
8687
+ * @param {Number} dateFrom - Unix timestamp of the selected departure date.
8688
+ * @returns {void}
8689
+ */
8690
+ updateRangePreviewClasses(hoveredDate, dateFrom) {
8691
+ const btn = this._cachedButton;
8692
+ if (!btn || !this.day) return;
8693
+
8694
+ const dayDate = this.day.date;
8695
+ const departTimestamp = startOfDay(dateFrom * 1000) / 1000;
8696
+ const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
8697
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
8698
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
8699
+
8700
+ btn.classList.toggle('inRange', isInRange);
8701
+ btn.classList.toggle('lastHoveredDate', isLastHovered);
8702
+ btn.classList.toggle('rangeDepartDate', isDepartWithPreview);
8703
+ }
8704
+
8705
+ /**
8706
+ * Clears all imperative range preview classes from the cell button.
8707
+ * Called when a selection occurs so classMap becomes the sole source of truth.
8708
+ * @returns {void}
8709
+ */
8710
+ clearRangePreviewClasses() {
8711
+ const btn = this._cachedButton;
8712
+ if (!btn) return;
8713
+
8714
+ btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
8715
+ }
8716
+
8717
+ renderCellButton() {
8718
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
8719
+ const blackout = this.isBlackout();
8720
+
8721
+ // Static and selection-driven classes only. Hover-driven classes
8722
+ // (inRange, lastHoveredDate, rangeDepartDate during preview) are
8723
+ // managed imperatively via updateRangePreviewClasses() to avoid
8724
+ // O(N) Lit re-renders on every focus/hover event.
8725
+ const isFirstDay = this.day?.title === 1;
8726
+ const isLastDay = this.day?.date && (() => {
8727
+ const dt = new Date(this.day.date * 1000);
8728
+ return dt.getDate() === new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate();
8729
+ })();
8730
+
8731
+ const buttonClasses = {
8732
+ 'day': true,
8733
+ 'body-default': true,
8734
+ 'currentDate': this.isCurrentDate,
8735
+ 'selected': this.selected,
8736
+ 'inRange': this.datepicker?.hasAttribute('range') && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo),
8480
8737
  'disabled': outOfRange,
8481
- 'blackout': blackout,
8482
- 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && (this.hoveredDate > this.dateFrom || this.dateTo),
8738
+ blackout,
8739
+ 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && this.dateTo,
8483
8740
  'rangeReturnDate': this.datepicker?.hasAttribute('range') && this.isReturnDate(this.day, this.dateFrom, this.dateTo),
8484
8741
  'reference': this.isReferenceDate(this.dateStr),
8485
- 'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo
8742
+ 'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo,
8743
+ 'firstDayOfMonth': isFirstDay,
8744
+ 'lastDayOfMonth': isLastDay,
8486
8745
  };
8487
8746
 
8488
8747
  return html$1`
8489
8748
  <button
8490
8749
  slot="trigger"
8491
8750
  id="${this.getCellId()}"
8492
- role="${role}"
8493
8751
  @click="${outOfRange ? undefined : this.handleTap}"
8494
8752
  @mouseover="${outOfRange ? undefined : this.handleHover}"
8495
- @focus="${outOfRange ? undefined : this.handleHover}"
8753
+ @focus="${outOfRange ? undefined : this.handleFocus}"
8496
8754
  class="${classMap(buttonClasses)}"
8497
8755
  ?disabled="${outOfRange}"
8498
- aria-disabled="${blackout ? 'true' : nothing}"
8499
8756
  aria-hidden="${outOfRange ? 'true' : nothing}"
8500
- aria-selected="${this.selected ? 'true' : 'false'}"
8501
- aria-current="${this.isCurrentDate ? 'date' : nothing}"
8502
- tabindex="${this.active ? '0' : '-1'}">
8503
- <span class="srOnly">${this.getAriaLabel()}</span>
8757
+ tabindex="-1">
8504
8758
  <div class="buttonWrapper" aria-hidden="true">
8505
8759
  <div class="currentDayMarker">${this.day?.title || nothing}</div>
8506
- </div>
8507
- <div class="dateSlot body-2xs" part="dateSlot" ?hidden="${!this.renderForDateSlot}">
8508
- <slot name="date_${this.dateStr}"></slot>
8760
+ <div class="dateSlot body-2xs" part="dateSlot" aria-hidden="true" ?hidden="${!this.renderForDateSlot}">
8761
+ <slot name="date_${this.dateStr}"></slot>
8762
+ </div>
8509
8763
  </div>
8510
8764
  </button>
8511
8765
  `;
8512
8766
  }
8513
8767
 
8514
8768
  render() {
8515
- const hasPopoverContent = this.hasPopoverContent;
8769
+ const { hasPopoverContent } = this;
8516
8770
 
8517
8771
  if (hasPopoverContent) {
8518
8772
  return html$1`
@@ -8642,7 +8896,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8642
8896
  */
8643
8897
  renderDayOfWeek(dayOfWeek, index) {
8644
8898
  const fullName = this.dayFullNames ? this.dayFullNames[index] : dayOfWeek;
8645
- return html`<div class="th body-default" role="columnheader"><abbr title="${fullName}">${dayOfWeek}</abbr></div>`;
8899
+ return html`<div class="th body-default"><abbr title="${fullName}">${dayOfWeek}</abbr></div>`;
8646
8900
  }
8647
8901
 
8648
8902
  /**
@@ -8651,92 +8905,39 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8651
8905
  */
8652
8906
  getFocusableCells() {
8653
8907
  const cells = Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-cell'));
8654
- return cells.filter(cell => {
8655
- if (!cell.day) return false;
8908
+ return cells.filter((cell) => {
8909
+ if (!cell.day) {
8910
+ return false;
8911
+ }
8656
8912
  return !cell.isOutOfRange(cell.day, cell.min, cell.max);
8657
8913
  });
8658
8914
  }
8659
8915
 
8660
8916
  /**
8661
- * Handles arrow key navigation within the month grid.
8662
- * Dispatches a cross-month navigation event when the boundary is reached.
8917
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
8918
+ * as a reactive property. Instead, just dispatches the event upward so
8919
+ * the calendar can handle range preview imperatively.
8663
8920
  * @private
8664
- * @param {KeyboardEvent} event - The keyboard event.
8921
+ * @param {CustomEvent} event - The date-is-hovered event from a cell.
8665
8922
  * @returns {void}
8666
8923
  */
8667
- handleGridKeyDown(event) {
8668
- const { key } = event;
8669
- const arrowKeys = ['ArrowRight', 'ArrowLeft', 'ArrowDown', 'ArrowUp'];
8670
-
8671
- if (!arrowKeys.includes(key)) return;
8672
-
8673
- event.preventDefault();
8674
-
8675
- const focusableCells = this.getFocusableCells();
8676
- if (focusableCells.length === 0) return;
8677
-
8678
- // Find the currently active cell within this month
8679
- const activeCell = focusableCells.find(cell => cell.active);
8680
- if (!activeCell) return;
8681
-
8682
- const activeIndex = focusableCells.indexOf(activeCell);
8683
- let targetCell = null;
8684
-
8685
- if (key === 'ArrowRight') {
8686
- if (activeIndex < focusableCells.length - 1) {
8687
- targetCell = focusableCells[activeIndex + 1];
8688
- } else {
8689
- // At end of month, request cross-month navigation
8690
- this.dispatchEvent(new CustomEvent('calendar-month-boundary', {
8691
- bubbles: true,
8692
- composed: true,
8693
- detail: { direction: 'next', fromDate: activeCell.day.date, key }
8694
- }));
8695
- return;
8696
- }
8697
- } else if (key === 'ArrowLeft') {
8698
- if (activeIndex > 0) {
8699
- targetCell = focusableCells[activeIndex - 1];
8700
- } else {
8701
- // At start of month, request cross-month navigation
8702
- this.dispatchEvent(new CustomEvent('calendar-month-boundary', {
8703
- bubbles: true,
8704
- composed: true,
8705
- detail: { direction: 'prev', fromDate: activeCell.day.date, key }
8706
- }));
8707
- return;
8708
- }
8709
- } else if (key === 'ArrowDown' || key === 'ArrowUp') {
8710
- // Find the target day (same day-of-week, +/- 7 days)
8711
- // Use Date arithmetic instead of fixed seconds to handle DST correctly
8712
- const increment = key === 'ArrowDown' ? 7 : -7;
8713
- const currentDate = new Date(activeCell.day.date * 1000);
8714
- currentDate.setDate(currentDate.getDate() + increment);
8715
- currentDate.setHours(0, 0, 0, 0);
8716
- const targetDate = Math.floor(currentDate.getTime() / 1000);
8717
-
8718
- // Look for the target date in this month's focusable cells
8719
- targetCell = focusableCells.find(cell => cell.day.date === targetDate);
8720
-
8721
- if (!targetCell) {
8722
- // Target is in another month or all cells in that direction are disabled
8723
- const direction = key === 'ArrowDown' ? 'next' : 'prev';
8724
- this.dispatchEvent(new CustomEvent('calendar-month-boundary', {
8725
- bubbles: true,
8726
- composed: true,
8727
- detail: { direction, fromDate: activeCell.day.date, key }
8728
- }));
8729
- return;
8730
- }
8731
- }
8924
+ handleDateHovered(event) {
8925
+ this.dispatchEvent(new CustomEvent('hovered-date-changed', {
8926
+ detail: { value: event.detail.date },
8927
+ }));
8928
+ }
8732
8929
 
8733
- if (targetCell) {
8734
- this.dispatchEvent(new CustomEvent('calendar-cell-activate', {
8735
- bubbles: true,
8736
- composed: true,
8737
- detail: { date: targetCell.day.date }
8738
- }));
8739
- }
8930
+ /**
8931
+ * Dispatches a bubbling event when the mouse leaves the date grid body
8932
+ * so the parent calendar can clear the range hover preview.
8933
+ * @private
8934
+ * @returns {void}
8935
+ */
8936
+ handleTbodyMouseLeave() {
8937
+ this.dispatchEvent(new CustomEvent('calendar-month-mouseleave', {
8938
+ bubbles: true,
8939
+ composed: true,
8940
+ }));
8740
8941
  }
8741
8942
 
8742
8943
  renderWeek(week) {
@@ -8755,7 +8956,6 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8755
8956
  .min="${this.min}"
8756
8957
  .max="${this.max}"
8757
8958
  .month="${this.month}"
8758
- .hoveredDate="${this.hoveredDate}"
8759
8959
  .dateTo="${this.dateTo}"
8760
8960
  .dateFrom="${this.dateFrom}"
8761
8961
  .locale="${this.locale}"
@@ -8777,10 +8977,10 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8777
8977
  var _a, _b;
8778
8978
 
8779
8979
  return html `
8780
- <div aria-labelledby="${this.getHeadingId()}">
8980
+ <div>
8781
8981
  <div class="header">
8782
8982
  ${this.renderPrevButton()}
8783
- <div class="headerTitle heading-xs" id="${this.getHeadingId()}" aria-live="polite" aria-atomic="true">
8983
+ <div class="headerTitle heading-xs" id="${this.getHeadingId()}" aria-hidden="true">
8784
8984
  ${this.monthFirst ? html`
8785
8985
  <div>${this.computeCurrentMonthName(this.month)}</div>
8786
8986
  <div>${this.renderYear()}</div>
@@ -8792,13 +8992,13 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8792
8992
  ${this.renderNextButton()}
8793
8993
  </div>
8794
8994
 
8795
- <div class="table" role="grid" aria-labelledby="${this.getHeadingId()}" @keydown="${this.handleGridKeyDown}">
8796
- <div class="thead" role="rowgroup">
8797
- <div class="tr" role="row">
8995
+ <div class="table" role="grid">
8996
+ <div class="thead" aria-hidden="true">
8997
+ <div class="tr">
8798
8998
  ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map((dayNameOfWeek, index) => this.renderDayOfWeek(dayNameOfWeek, index))}
8799
8999
  </div>
8800
9000
  </div>
8801
- <div class="tbody" role="rowgroup">
9001
+ <div class="tbody" role="rowgroup" @mouseleave="${this.handleTbodyMouseLeave}">
8802
9002
  ${(_b = this.daysOfMonth) === null || _b === void 0 ? void 0 : _b.map(week => this.renderWeek(week))}
8803
9003
  </div>
8804
9004
  </div>
@@ -9610,7 +9810,7 @@ class AuroBibtemplate extends LitElement {
9610
9810
  }
9611
9811
  }
9612
9812
 
9613
- var formkitVersion$2 = '202606011922';
9813
+ var formkitVersion$2 = '202606022350';
9614
9814
 
9615
9815
  let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=literal`${unsafeStatic(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1=css`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
9616
9816
  `,u$4=css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -9671,7 +9871,7 @@ let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[
9671
9871
 
9672
9872
  var buttonVersion$1 = '12.3.2';
9673
9873
 
9674
- /* eslint-disable no-magic-numbers, no-undef-init, max-lines, lit/binding-positions, lit/no-invalid-html */
9874
+ /* eslint-disable no-magic-numbers, complexity, line-comment-position, no-undef-init, max-lines, line-comment-position, no-underscore-dangle, lit/binding-positions, lit/no-invalid-html, no-inline-comments */
9675
9875
 
9676
9876
 
9677
9877
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
@@ -9715,6 +9915,13 @@ class AuroCalendar extends RangeDatepicker {
9715
9915
  */
9716
9916
  this.activeCellDate = null;
9717
9917
 
9918
+ /**
9919
+ * Whether the #calendarGrid wrapper currently has focus.
9920
+ * Used to determine whether the visualFocus ring should be shown.
9921
+ * @private
9922
+ */
9923
+ this._gridHasFocus = false;
9924
+
9718
9925
  /**
9719
9926
  * @private
9720
9927
  */
@@ -9725,6 +9932,12 @@ class AuroCalendar extends RangeDatepicker {
9725
9932
  */
9726
9933
  this.calendarRangeMonths = null;
9727
9934
 
9935
+ /**
9936
+ * Legacy array of disabled-date timestamps.
9937
+ * @private
9938
+ */
9939
+ this.disabledDays = [];
9940
+
9728
9941
  /**
9729
9942
  * @private
9730
9943
  */
@@ -9748,6 +9961,12 @@ class AuroCalendar extends RangeDatepicker {
9748
9961
  this.buttonTag = versioning.generateTag('auro-formkit-datepicker-button', buttonVersion$1, T$1);
9749
9962
 
9750
9963
  this.dropdown = undefined;
9964
+
9965
+ /**
9966
+ * Unique instance ID for the live region element.
9967
+ * @private
9968
+ */
9969
+ this._calendarInstanceId = Date.now().toString(36);
9751
9970
  }
9752
9971
 
9753
9972
  static get styles() {
@@ -9760,6 +9979,7 @@ class AuroCalendar extends RangeDatepicker {
9760
9979
 
9761
9980
  static get properties() {
9762
9981
  return {
9982
+
9763
9983
  /**
9764
9984
  * The last month that may be displayed in the calendar.
9765
9985
  */
@@ -9876,22 +10096,36 @@ class AuroCalendar extends RangeDatepicker {
9876
10096
  /**
9877
10097
  * Updates the month and year when the user navigates to the previous calendar month.
9878
10098
  * @private
10099
+ * @param {Object} [options] - Optional settings.
10100
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
10101
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
9879
10102
  * @returns {void}
9880
10103
  */
9881
- handlePrevMonth() {
10104
+ handlePrevMonth(options) {
10105
+ const opts = options instanceof Event ? {} : options || {};
10106
+ this.clearRangePreview();
9882
10107
  this.utilCal.handleMonthChange(this, 'prev');
9883
- this.updateActiveCellForVisibleMonth();
10108
+ if (!opts.skipActiveUpdate) {
10109
+ this.updateActiveCellForVisibleMonth();
10110
+ }
9884
10111
  this.announceMonthChange();
9885
10112
  }
9886
10113
 
9887
10114
  /**
9888
10115
  * Updates the month and year when the user navigates to the next calendar month.
9889
10116
  * @private
10117
+ * @param {Object} [options] - Optional settings.
10118
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
10119
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
9890
10120
  * @returns {void}
9891
10121
  */
9892
- handleNextMonth() {
10122
+ handleNextMonth(options) {
10123
+ const opts = options instanceof Event ? {} : options || {};
10124
+ this.clearRangePreview();
9893
10125
  this.utilCal.handleMonthChange(this, 'next');
9894
- this.updateActiveCellForVisibleMonth();
10126
+ if (!opts.skipActiveUpdate) {
10127
+ this.updateActiveCellForVisibleMonth();
10128
+ }
9895
10129
  this.announceMonthChange();
9896
10130
  }
9897
10131
 
@@ -9901,27 +10135,39 @@ class AuroCalendar extends RangeDatepicker {
9901
10135
  * @returns {void}
9902
10136
  */
9903
10137
  announceMonthChange() {
10138
+ // Cancel any pending debounced cell announcement so it does not
10139
+ // overwrite this month navigation announcement.
10140
+ if (this._focusAnnounceTimer) {
10141
+ clearTimeout(this._focusAnnounceTimer);
10142
+ this._focusAnnounceTimer = null;
10143
+ }
10144
+
9904
10145
  const date = new Date(this.centralDate);
9905
10146
  const localeCode = this.locale?.code || undefined;
9906
- const formatter = new Intl.DateTimeFormat(localeCode, { month: 'long', year: 'numeric' });
10147
+ const formatter = new Intl.DateTimeFormat(localeCode, { month: 'long',
10148
+ year: 'numeric' });
9907
10149
  this.announceSelection(formatter.format(date));
9908
10150
  }
9909
10151
 
9910
10152
  /**
9911
- * Recomputes and sets the active cell for the newly visible month after
9912
- * month navigation. Without this, activeCellDate can point at a date in
9913
- * the old month, leaving no tabindex="0" cell in the grid.
10153
+ * Updates the active cell after month navigation (prev/next buttons).
10154
+ * Always moves the active cell to the first enabled date in the newly
10155
+ * visible months so that tabbing back to the grid lands on an enabled cell.
9914
10156
  * @private
9915
10157
  * @returns {void}
9916
10158
  */
9917
10159
  updateActiveCellForVisibleMonth() {
9918
- // Skip the dateFrom shortcut so the active cell lands in the newly
9919
- // visible month rather than jumping back to the selected date's month.
9920
- this.activeCellDate = this.computeActiveDate({ skipDateFrom: true });
9921
- this.updateComplete.then(() => {
9922
- if (this.activeCellDate != null) {
9923
- this.setActiveCell(this.activeCellDate);
9924
- }
10160
+ // Use double-rAF to ensure child month/cell components have fully
10161
+ // rendered and cached their button references before we set tabindex.
10162
+ requestAnimationFrame(() => {
10163
+ requestAnimationFrame(() => {
10164
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
10165
+
10166
+ if (newDate !== null && newDate !== undefined) {
10167
+ this.activeCellDate = newDate;
10168
+ this.setActiveCell(this.activeCellDate);
10169
+ }
10170
+ });
9925
10171
  });
9926
10172
  }
9927
10173
 
@@ -10018,7 +10264,9 @@ class AuroCalendar extends RangeDatepicker {
10018
10264
  */
10019
10265
  focusCloseButton() {
10020
10266
  const bibtemplate = this.shadowRoot.querySelector(this.bibtemplateTag._$litStatic$);
10021
- if (bibtemplate) bibtemplate.focusCloseButton();
10267
+ if (bibtemplate) {
10268
+ bibtemplate.focusCloseButton();
10269
+ }
10022
10270
  }
10023
10271
 
10024
10272
  /**
@@ -10047,7 +10295,7 @@ class AuroCalendar extends RangeDatepicker {
10047
10295
  getAllFocusableCells() {
10048
10296
  const months = this.getMonthComponents();
10049
10297
  let cells = [];
10050
- months.forEach(month => {
10298
+ months.forEach((month) => {
10051
10299
  cells = cells.concat(month.getFocusableCells());
10052
10300
  });
10053
10301
  return cells;
@@ -10055,37 +10303,87 @@ class AuroCalendar extends RangeDatepicker {
10055
10303
 
10056
10304
  /**
10057
10305
  * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
10306
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
10307
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
10308
+ * screen readers announce the active cell without moving DOM focus.
10058
10309
  * @param {Number} date - Unix timestamp of the cell to activate.
10059
10310
  * @returns {void}
10060
10311
  */
10061
10312
  setActiveCell(date) {
10062
10313
  const allCells = this.getAllFocusableCells();
10063
10314
 
10064
- allCells.forEach(cell => {
10065
- cell.active = cell.day && cell.day.date === date;
10315
+ let newActiveCell = null;
10316
+ allCells.forEach((cell) => {
10317
+ if (cell.day && cell.day.date === date) {
10318
+ cell.setActive();
10319
+ newActiveCell = cell;
10320
+ } else if (cell.active) {
10321
+ cell.clearActive();
10322
+ }
10066
10323
  });
10067
10324
 
10068
10325
  this.activeCellDate = date;
10326
+
10327
+ // Apply activeCell ring only when the grid currently has focus.
10328
+ if (newActiveCell && this._gridHasFocus) {
10329
+ const btn = newActiveCell._cachedButton || newActiveCell.shadowRoot.querySelector('button.day');
10330
+ if (btn) {
10331
+ btn.classList.add('activeCell');
10332
+ }
10333
+ }
10069
10334
  }
10070
10335
 
10071
10336
  /**
10072
- * Focuses the currently active cell. If activeCellDate is set but no cell
10073
- * has the active attribute yet, sets it first. Waits for the cell's render
10074
- * to complete so the focused button is the final DOM element.
10337
+ * Focuses the calendar grid wrapper and sets the active cell.
10338
+ * DOM focus stays on the grid wrapper; the aria-live region
10339
+ * tells the screen reader which cell is "active".
10075
10340
  * @returns {void}
10076
10341
  */
10077
10342
  focusActiveCell() {
10078
- if (this.activeCellDate != null) {
10343
+ if (this.activeCellDate !== null && this.activeCellDate !== undefined) {
10079
10344
  this.setActiveCell(this.activeCellDate);
10080
10345
  }
10081
10346
 
10082
- const allCells = this.getAllFocusableCells();
10083
- const activeCell = allCells.find(cell => cell.active);
10347
+ const gridWrapper = this.shadowRoot.querySelector('#calendarGrid');
10348
+ if (gridWrapper) {
10349
+ gridWrapper.focus({ preventScroll: true,
10350
+ focusVisible: true });
10351
+ }
10352
+ }
10353
+
10354
+ /**
10355
+ * Shows the activeCell ring when the grid gains focus.
10356
+ * @private
10357
+ * @returns {void}
10358
+ */
10359
+ handleGridFocusIn() {
10360
+ this._gridHasFocus = true;
10361
+ const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
10084
10362
  if (activeCell) {
10085
- activeCell.updateComplete.then(() => {
10086
- activeCell.focusButton();
10087
- });
10363
+ const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
10364
+ if (btn) {
10365
+ btn.classList.add('activeCell');
10366
+ }
10367
+ }
10368
+ }
10369
+
10370
+ /**
10371
+ * Hides the activeCell ring when the grid loses focus.
10372
+ * @private
10373
+ * @returns {void}
10374
+ */
10375
+ handleGridFocusOut() {
10376
+ this._gridHasFocus = false;
10377
+ // Remove activeCell from ALL cells to prevent stale rings.
10378
+ const allCells = this.getAllFocusableCells();
10379
+ for (const cell of allCells) {
10380
+ const btn = cell._cachedButton || cell.shadowRoot.querySelector('button.day');
10381
+ if (btn) {
10382
+ btn.classList.remove('activeCell');
10383
+ }
10088
10384
  }
10385
+ // Clear range hover preview so no highlight lingers after focus leaves the grid.
10386
+ this.clearRangePreview();
10089
10387
  }
10090
10388
 
10091
10389
  /**
@@ -10099,7 +10397,7 @@ class AuroCalendar extends RangeDatepicker {
10099
10397
  * 5b. First enabled date scanning forward from finite min (unbounded max)
10100
10398
  * 5c. First enabled date scanning backward from finite max (unbounded min)
10101
10399
  * 6. First in-range date (even if blackout) so focus can land somewhere
10102
- * 7. undefined — no valid target
10400
+ * 7. Undefined — no valid target.
10103
10401
  *
10104
10402
  * @private
10105
10403
  * @param {Object} [options] - Optional settings.
@@ -10114,12 +10412,15 @@ class AuroCalendar extends RangeDatepicker {
10114
10412
  /**
10115
10413
  * Adds days to a timestamp using Date arithmetic to handle DST correctly.
10116
10414
  * Returns a local-midnight-aligned timestamp in seconds.
10415
+ * @param {Number} ts - Unix timestamp in seconds.
10416
+ * @param {Number} days - Number of days to add.
10417
+ * @returns {Number} The adjusted timestamp in seconds.
10117
10418
  */
10118
10419
  const addDays = (ts, days) => {
10119
- const d = new Date(ts * 1000);
10120
- d.setDate(d.getDate() + days);
10121
- d.setHours(0, 0, 0, 0);
10122
- return Math.floor(d.getTime() / 1000);
10420
+ const date = new Date(ts * 1000);
10421
+ date.setDate(date.getDate() + days);
10422
+ date.setHours(0, 0, 0, 0);
10423
+ return Math.floor(date.getTime() / 1000);
10123
10424
  };
10124
10425
 
10125
10426
  const rawMin = Number(this.min);
@@ -10130,9 +10431,7 @@ class AuroCalendar extends RangeDatepicker {
10130
10431
  const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
10131
10432
 
10132
10433
  // Build a Set of blackout timestamps for O(1) lookup.
10133
- const blackoutSet = new Set(
10134
- (this.disabledDays || []).map(d => parseInt(d, 10))
10135
- );
10434
+ const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
10136
10435
 
10137
10436
  // Also include ISO-format blackoutDates from the datepicker if available.
10138
10437
  // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
@@ -10141,19 +10440,25 @@ class AuroCalendar extends RangeDatepicker {
10141
10440
  for (const isoStr of isoBlackouts) {
10142
10441
  const parts = isoStr.split('-');
10143
10442
  const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
10144
- if (Number.isFinite(ts)) blackoutSet.add(ts);
10443
+ if (Number.isFinite(ts)) {
10444
+ blackoutSet.add(ts);
10445
+ }
10145
10446
  }
10146
10447
  }
10147
10448
 
10148
10449
  /**
10149
10450
  * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
10150
10451
  * it is within [min, max] AND not a blackout day.
10452
+ * @param {Number} ts - Unix timestamp in seconds.
10453
+ * @returns {boolean} True if the date is enabled.
10151
10454
  */
10152
10455
  const isEnabled = (ts) => ts >= minTs && ts <= maxTs && !blackoutSet.has(ts);
10153
10456
 
10154
10457
  /**
10155
10458
  * A date is "in range" (focusable in the grid) when it is within [min, max].
10156
10459
  * Blackout dates are focusable but not selectable.
10460
+ * @param {Number} ts - Unix timestamp in seconds.
10461
+ * @returns {boolean} True if the date is in range.
10157
10462
  */
10158
10463
  const isInRange = (ts) => ts >= minTs && ts <= maxTs;
10159
10464
 
@@ -10162,7 +10467,9 @@ class AuroCalendar extends RangeDatepicker {
10162
10467
  // the newly visible month rather than the (possibly off-screen) selection.
10163
10468
  if (!options.skipDateFrom && this.dateFrom) {
10164
10469
  const parsedFrom = parseInt(this.dateFrom, 10);
10165
- if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) return parsedFrom;
10470
+ if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) {
10471
+ return parsedFrom;
10472
+ }
10166
10473
  }
10167
10474
 
10168
10475
  // 2. Today's date (midnight-aligned) if enabled.
@@ -10189,32 +10496,35 @@ class AuroCalendar extends RangeDatepicker {
10189
10496
  const visibleEnd = new Date(centralYear, centralMonth + 1, 0); // last day of month
10190
10497
  visibleEnd.setHours(0, 0, 0, 0);
10191
10498
  const startTs = Math.floor(visibleStart.getTime() / 1000);
10192
- const endTs = Math.floor(visibleEnd.getTime() / 1000);
10193
10499
  const daysInMonth = visibleEnd.getDate();
10194
10500
 
10195
- for (let idx = 0; idx < daysInMonth; idx++) {
10501
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
10196
10502
  const ts = addDays(startTs, idx);
10197
- if (ts > endTs) break;
10198
- if (isEnabled(ts)) return ts;
10503
+ if (isEnabled(ts)) {
10504
+ return ts;
10505
+ }
10199
10506
  }
10200
10507
 
10201
10508
  // No enabled date in the visible month — fall back to first in-range
10202
10509
  // date in the month so focus still lands on a focusable cell.
10203
- for (let idx = 0; idx < daysInMonth; idx++) {
10510
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
10204
10511
  const ts = addDays(startTs, idx);
10205
- if (ts > endTs) break;
10206
- if (isInRange(ts)) return ts;
10512
+ if (isInRange(ts)) {
10513
+ return ts;
10514
+ }
10207
10515
  }
10208
10516
  }
10209
10517
  }
10210
10518
 
10211
- if (isEnabled(now)) return now;
10519
+ if (isEnabled(now)) {
10520
+ return now;
10521
+ }
10212
10522
 
10213
10523
  // When a centralDate is configured (or inferred), constrain the scan to the
10214
10524
  // rendered month(s) first so a single-month calendar does not pick a date
10215
10525
  // that has no DOM cell. Determine the visible range based on centralDate and
10216
10526
  // the number of rendered months.
10217
- const renderedMonths = this.numCalendars || 1;
10527
+ const renderedMonths = Math.max(this.numCalendars, 1);
10218
10528
  const visibleAnchor = centralDateValue && !isNaN(centralDateValue.getTime())
10219
10529
  ? centralDateValue
10220
10530
  : new Date(now * 1000);
@@ -10227,40 +10537,52 @@ class AuroCalendar extends RangeDatepicker {
10227
10537
  const visDays = Math.round((visEndTs - visStartTs) / 86400) + 1;
10228
10538
 
10229
10539
  // Scan visible months for an enabled date.
10230
- for (let idx = 0; idx < visDays; idx++) {
10540
+ for (let idx = 0; idx < visDays; idx += 1) {
10231
10541
  const ts = addDays(visStartTs, idx);
10232
- if (ts > visEndTs) break;
10233
- if (isEnabled(ts)) return ts;
10542
+ if (isEnabled(ts)) {
10543
+ return ts;
10544
+ }
10234
10545
  }
10235
10546
 
10236
10547
  // No enabled date in visible months — try an in-range (focusable) date so
10237
10548
  // keyboard focus still has a tabindex="0" target.
10238
- for (let idx = 0; idx < visDays; idx++) {
10549
+ for (let idx = 0; idx < visDays; idx += 1) {
10239
10550
  const ts = addDays(visStartTs, idx);
10240
- if (ts > visEndTs) break;
10241
- if (isInRange(ts)) return ts;
10551
+ if (isInRange(ts)) {
10552
+ return ts;
10553
+ }
10242
10554
  }
10243
10555
 
10244
10556
  // 3. First future enabled date (scan forward from tomorrow, capped by max and MAX_SCAN_DAYS).
10245
- for (let idx = 1; idx <= MAX_SCAN_DAYS; idx++) {
10557
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
10246
10558
  const ts = addDays(now, idx);
10247
- if (Number.isFinite(maxTs) && ts > maxTs) break;
10248
- if (isEnabled(ts)) return ts;
10559
+ if (Number.isFinite(maxTs) && ts > maxTs) {
10560
+ break;
10561
+ }
10562
+ if (isEnabled(ts)) {
10563
+ return ts;
10564
+ }
10249
10565
  }
10250
10566
 
10251
10567
  // 4. First previous enabled date (scan backward from yesterday, capped by min and MAX_SCAN_DAYS).
10252
- for (let idx = 1; idx <= MAX_SCAN_DAYS; idx++) {
10568
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
10253
10569
  const ts = addDays(now, -idx);
10254
- if (Number.isFinite(minTs) && ts < minTs) break;
10255
- if (isEnabled(ts)) return ts;
10570
+ if (Number.isFinite(minTs) && ts < minTs) {
10571
+ break;
10572
+ }
10573
+ if (isEnabled(ts)) {
10574
+ return ts;
10575
+ }
10256
10576
  }
10257
10577
 
10258
10578
  // 5. If scans missed (e.g. min/max range is far from today), fall back to
10259
10579
  // the first enabled date in the [min, max] range.
10260
10580
  if (Number.isFinite(minTs) && Number.isFinite(maxTs)) {
10261
10581
  let ts = minTs;
10262
- for (let idx = 0; ts <= maxTs; idx++) {
10263
- if (isEnabled(ts)) return ts;
10582
+ for (let idx = 0; ts <= maxTs; idx += 1) {
10583
+ if (isEnabled(ts)) {
10584
+ return ts;
10585
+ }
10264
10586
  ts = addDays(minTs, idx + 1);
10265
10587
  }
10266
10588
  }
@@ -10268,29 +10590,191 @@ class AuroCalendar extends RangeDatepicker {
10268
10590
  // 5b. Finite min with unbounded max (e.g. minDate far in the future):
10269
10591
  // scan forward from min for up to MAX_SCAN_DAYS.
10270
10592
  if (Number.isFinite(minTs) && !Number.isFinite(maxTs)) {
10271
- for (let idx = 0; idx <= MAX_SCAN_DAYS; idx++) {
10593
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
10272
10594
  const ts = addDays(minTs, idx);
10273
- if (isEnabled(ts)) return ts;
10595
+ if (isEnabled(ts)) {
10596
+ return ts;
10597
+ }
10274
10598
  }
10275
10599
  }
10276
10600
 
10277
10601
  // 5c. Unbounded min with a finite max far in the past (e.g. birth-date picker):
10278
10602
  // scan backward from max for up to MAX_SCAN_DAYS.
10279
10603
  if (!Number.isFinite(minTs) && Number.isFinite(maxTs)) {
10280
- for (let idx = 0; idx <= MAX_SCAN_DAYS; idx++) {
10604
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
10281
10605
  const ts = addDays(maxTs, -idx);
10282
- if (isEnabled(ts)) return ts;
10606
+ if (isEnabled(ts)) {
10607
+ return ts;
10608
+ }
10283
10609
  }
10284
10610
  }
10285
10611
 
10286
10612
  // 6. All dates are blackout — fall back to the first in-range date so focus
10287
10613
  // still lands on a focusable (but not selectable) cell.
10288
- if (Number.isFinite(minTs) && isInRange(minTs)) return minTs;
10289
- if (isInRange(now)) return now;
10614
+ if (Number.isFinite(minTs) && isInRange(minTs)) {
10615
+ return minTs;
10616
+ }
10617
+ if (isInRange(now)) {
10618
+ return now;
10619
+ }
10290
10620
 
10291
10621
  return undefined;
10292
10622
  }
10293
10623
 
10624
+ /**
10625
+ * Checks if a target date (unix seconds) is within the configured [min, max] range.
10626
+ * Returns false if the date falls outside the range, preventing navigation
10627
+ * to months where all dates are disabled.
10628
+ * @private
10629
+ * @param {Number} targetTs - Unix timestamp in seconds.
10630
+ * @returns {Boolean} True if the date is within range.
10631
+ */
10632
+ isDateInRange(targetTs) {
10633
+ const rawMin = Number(this.min);
10634
+ const rawMax = Number(this.max);
10635
+ if (Number.isFinite(rawMin) && targetTs < rawMin) {
10636
+ return false;
10637
+ }
10638
+ if (Number.isFinite(rawMax) && targetTs > rawMax) {
10639
+ return false;
10640
+ }
10641
+ return true;
10642
+ }
10643
+
10644
+ /**
10645
+ * Handles arrow key navigation on the calendar grid wrapper.
10646
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
10647
+ * and the visual active-cell indicator change.
10648
+ * @private
10649
+ * @param {KeyboardEvent} event - The keyboard event.
10650
+ * @returns {void}
10651
+ */
10652
+ handleGridKeyDown(event) {
10653
+ const { key } = event;
10654
+ const actionKeys = [
10655
+ 'ArrowRight',
10656
+ 'ArrowLeft',
10657
+ 'ArrowDown',
10658
+ 'ArrowUp',
10659
+ 'Enter',
10660
+ ' '
10661
+ ];
10662
+
10663
+ if (!actionKeys.includes(key)) {
10664
+ return;
10665
+ }
10666
+
10667
+ event.preventDefault();
10668
+
10669
+ const allCells = this.getAllFocusableCells();
10670
+ if (allCells.length === 0) {
10671
+ return;
10672
+ }
10673
+
10674
+ const activeCell = allCells.find((cell) => cell.active);
10675
+ if (!activeCell) {
10676
+ return;
10677
+ }
10678
+
10679
+ // Handle Enter/Space to select the active cell
10680
+ if (key === 'Enter' || key === ' ') {
10681
+ activeCell.handleTap();
10682
+ return;
10683
+ }
10684
+
10685
+ const activeIndex = allCells.indexOf(activeCell);
10686
+
10687
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
10688
+ const direction = key === 'ArrowRight' ? 1 : -1;
10689
+ const targetIndex = activeIndex + direction;
10690
+
10691
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
10692
+ // Target cell exists in rendered months
10693
+ this.setActiveCell(allCells[targetIndex].day.date);
10694
+ this.scrollToActiveCell();
10695
+ // Dispatch focus event for the cell so live region + range preview update
10696
+ this.handleCellFocused({ detail: { date: allCells[targetIndex].day.date } });
10697
+ } else {
10698
+ // At boundary — need to navigate to next/prev month
10699
+ const navDir = direction === 1 ? 'next' : 'prev';
10700
+ const targetDate = new Date(activeCell.day.date * 1000);
10701
+ targetDate.setDate(targetDate.getDate() + direction);
10702
+ targetDate.setHours(0, 0, 0, 0);
10703
+ const targetTs = Math.floor(targetDate.getTime() / 1000);
10704
+
10705
+ if (this.isDateInRange(targetTs) && ((navDir === 'next' && this.showNextMonthBtn) || (navDir === 'prev' && this.showPrevMonthBtn))) { // eslint-disable-line no-extra-parens
10706
+
10707
+ if (navDir === 'next') {
10708
+ this.handleNextMonth({ skipActiveUpdate: true });
10709
+ } else {
10710
+ this.handlePrevMonth({ skipActiveUpdate: true });
10711
+ }
10712
+ requestAnimationFrame(() => {
10713
+ requestAnimationFrame(() => {
10714
+ const cells = this.getAllFocusableCells();
10715
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
10716
+ if (target) {
10717
+ this.setActiveCell(target.day.date);
10718
+ this.handleCellFocused({ detail: { date: target.day.date } });
10719
+ } else if (cells.length > 0) {
10720
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
10721
+ this.setActiveCell(fallback.day.date);
10722
+ this.handleCellFocused({ detail: { date: fallback.day.date } });
10723
+ }
10724
+ // Re-focus grid wrapper after month change re-render
10725
+ this.focusActiveCell();
10726
+ });
10727
+ });
10728
+ }
10729
+ }
10730
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
10731
+ const increment = key === 'ArrowDown' ? 7 : -7;
10732
+ const currentDate = new Date(activeCell.day.date * 1000);
10733
+ currentDate.setDate(currentDate.getDate() + increment);
10734
+ currentDate.setHours(0, 0, 0, 0);
10735
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
10736
+
10737
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
10738
+
10739
+ if (targetCell) {
10740
+ this.setActiveCell(targetCell.day.date);
10741
+ this.scrollToActiveCell();
10742
+ this.handleCellFocused({ detail: { date: targetCell.day.date } });
10743
+ } else if (this.isDateInRange(targetDate)) {
10744
+ // Target might be in an unrendered month
10745
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
10746
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
10747
+ if (navDirection === 'next') {
10748
+ this.handleNextMonth({ skipActiveUpdate: true });
10749
+ } else {
10750
+ this.handlePrevMonth({ skipActiveUpdate: true });
10751
+ }
10752
+ requestAnimationFrame(() => {
10753
+ requestAnimationFrame(() => {
10754
+ const cells = this.getAllFocusableCells();
10755
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
10756
+ if (target) {
10757
+ this.setActiveCell(target.day.date);
10758
+ this.handleCellFocused({ detail: { date: target.day.date } });
10759
+ } else if (cells.length > 0) {
10760
+ let nearest = null;
10761
+
10762
+ if (navDirection === 'next') {
10763
+ [nearest] = cells;
10764
+ } else {
10765
+ nearest = cells[cells.length - 1];
10766
+ }
10767
+ this.setActiveCell(nearest.day.date);
10768
+ this.handleCellFocused({ detail: { date: nearest.day.date } });
10769
+ }
10770
+ this.focusActiveCell();
10771
+ });
10772
+ });
10773
+ }
10774
+ }
10775
+ }
10776
+ }
10777
+
10294
10778
  /**
10295
10779
  * Handles cross-month boundary navigation events from month components.
10296
10780
  * @private
@@ -10303,15 +10787,15 @@ class AuroCalendar extends RangeDatepicker {
10303
10787
  if (key === 'ArrowRight' || key === 'ArrowLeft') {
10304
10788
  // Linear navigation: find adjacent focusable cell across months
10305
10789
  const allCells = this.getAllFocusableCells();
10306
- const currentIndex = allCells.findIndex(cell => cell.day && cell.day.date === fromDate);
10790
+ const currentIndex = allCells.findIndex((cell) => cell.day && cell.day.date === fromDate);
10307
10791
 
10308
- if (currentIndex === -1) return;
10792
+ if (currentIndex === -1) {
10793
+ return;
10794
+ }
10309
10795
 
10310
- let targetIndex;
10796
+ let targetIndex = -1;
10311
10797
  if (direction === 'next') {
10312
10798
  targetIndex = currentIndex + 1;
10313
- } else {
10314
- targetIndex = currentIndex - 1;
10315
10799
  }
10316
10800
 
10317
10801
  if (targetIndex >= 0 && targetIndex < allCells.length) {
@@ -10329,11 +10813,15 @@ class AuroCalendar extends RangeDatepicker {
10329
10813
  nextDate.setHours(0, 0, 0, 0);
10330
10814
  const nextTs = Math.floor(nextDate.getTime() / 1000);
10331
10815
 
10332
- this.handleNextMonth();
10816
+ if (!this.isDateInRange(nextTs)) {
10817
+ return;
10818
+ }
10819
+
10820
+ this.handleNextMonth({ skipActiveUpdate: true });
10333
10821
  requestAnimationFrame(() => {
10334
10822
  requestAnimationFrame(() => {
10335
10823
  const cells = this.getAllFocusableCells();
10336
- const target = cells.find(cell => cell.day && cell.day.date === nextTs);
10824
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
10337
10825
  if (target) {
10338
10826
  this.setActiveCell(target.day.date);
10339
10827
  this.focusActiveCell();
@@ -10351,11 +10839,15 @@ class AuroCalendar extends RangeDatepicker {
10351
10839
  prevDate.setHours(0, 0, 0, 0);
10352
10840
  const prevTs = Math.floor(prevDate.getTime() / 1000);
10353
10841
 
10354
- this.handlePrevMonth();
10842
+ if (!this.isDateInRange(prevTs)) {
10843
+ return;
10844
+ }
10845
+
10846
+ this.handlePrevMonth({ skipActiveUpdate: true });
10355
10847
  requestAnimationFrame(() => {
10356
10848
  requestAnimationFrame(() => {
10357
10849
  const cells = this.getAllFocusableCells();
10358
- const target = cells.find(cell => cell.day && cell.day.date === prevTs);
10850
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
10359
10851
  if (target) {
10360
10852
  this.setActiveCell(target.day.date);
10361
10853
  this.focusActiveCell();
@@ -10377,25 +10869,25 @@ class AuroCalendar extends RangeDatepicker {
10377
10869
  const targetDate = Math.floor(currentDate.getTime() / 1000);
10378
10870
 
10379
10871
  const allCells = this.getAllFocusableCells();
10380
- let targetCell = allCells.find(cell => cell.day && cell.day.date === targetDate);
10872
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
10381
10873
 
10382
10874
  if (targetCell) {
10383
10875
  this.setActiveCell(targetCell.day.date);
10384
10876
  this.scrollToActiveCell();
10385
10877
  this.focusActiveCell();
10386
- } else {
10878
+ } else if (this.isDateInRange(targetDate)) {
10387
10879
  // Target might be in an unrendered month, navigate there
10388
10880
  const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
10389
- if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) {
10881
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
10390
10882
  if (navDirection === 'next') {
10391
- this.handleNextMonth();
10883
+ this.handleNextMonth({ skipActiveUpdate: true });
10392
10884
  } else {
10393
- this.handlePrevMonth();
10885
+ this.handlePrevMonth({ skipActiveUpdate: true });
10394
10886
  }
10395
10887
  requestAnimationFrame(() => {
10396
10888
  requestAnimationFrame(() => {
10397
10889
  const cells = this.getAllFocusableCells();
10398
- const target = cells.find(cell => cell.day && cell.day.date === targetDate);
10890
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
10399
10891
  if (target) {
10400
10892
  this.setActiveCell(target.day.date);
10401
10893
  this.focusActiveCell();
@@ -10421,7 +10913,195 @@ class AuroCalendar extends RangeDatepicker {
10421
10913
  handleCellActivate(event) {
10422
10914
  const { date } = event.detail;
10423
10915
  this.setActiveCell(date);
10424
- this.focusActiveCell();
10916
+
10917
+ // Don't call focusActiveCell() here. The tap/click already placed
10918
+ // focus on the cell button, and moving it to #calendarGrid would
10919
+ // trigger focusout on the button, closing any open popover on the
10920
+ // cell. Keyboard events are composed and still bubble through
10921
+ // shadow DOM boundaries to the grid's @keydown handler, so
10922
+ // subsequent keyboard navigation continues to work.
10923
+ }
10924
+
10925
+ /**
10926
+ * Handles focus events from calendar cells.
10927
+ * Updates the live region with an SR announcement and triggers
10928
+ * the imperative range preview if applicable.
10929
+ * @private
10930
+ * @param {CustomEvent} event - The calendar-cell-focused event.
10931
+ * @returns {void}
10932
+ */
10933
+ handleCellFocused(event) {
10934
+ const { date } = event.detail;
10935
+ if (date === null) {
10936
+ return;
10937
+ }
10938
+
10939
+ // With aria-activedescendant, the button no longer receives native focus,
10940
+ // so we use the debounced live region for the full context announcement.
10941
+ const announcement = this.buildFocusAnnouncement(date);
10942
+ this.announceFocusDebounced(announcement);
10943
+
10944
+ // Update the range preview imperatively if in range-preview mode.
10945
+ this.updateRangePreview(date);
10946
+ }
10947
+
10948
+ /**
10949
+ * Builds a full SR announcement string for a focused cell date.
10950
+ * Includes the localized date, range position, popover content,
10951
+ * and blackout status.
10952
+ * @private
10953
+ * @param {Number} date - Unix timestamp (seconds) of the focused cell.
10954
+ * @returns {String} The announcement string.
10955
+ */
10956
+ buildFocusAnnouncement(date) {
10957
+ let label = this.formatAnnouncementDate(date);
10958
+
10959
+ // Append date slot content (e.g. prices) if present.
10960
+ const dateObj = new Date(date * 1000);
10961
+ const mm = String(dateObj.getMonth() + 1).padStart(2, '0');
10962
+ const dd = String(dateObj.getDate()).padStart(2, '0');
10963
+ const yyyy = dateObj.getFullYear();
10964
+ const dateStr = `${mm}_${dd}_${yyyy}`;
10965
+ const dateSlotEl = this.datepicker?.querySelector(`[slot="date_${dateStr}"]`);
10966
+ if (dateSlotEl) {
10967
+ const text = dateSlotEl.innerText?.trim();
10968
+ if (text) {
10969
+ label += `, ${text}`;
10970
+ }
10971
+ }
10972
+
10973
+ // Append popover content if present.
10974
+ const popoverEl = this.datepicker?.querySelector(`[slot="popover_${dateStr}"]`);
10975
+ if (popoverEl) {
10976
+ const text = popoverEl.innerText?.trim();
10977
+ if (text) {
10978
+ label += `, ${text}`;
10979
+ }
10980
+ }
10981
+
10982
+ // Append range position context.
10983
+ if (this.datepicker?.hasAttribute('range')) {
10984
+ const rangeLabel = this.getRangePositionLabel(date);
10985
+ if (rangeLabel) {
10986
+ label += `, ${rangeLabel}`;
10987
+ }
10988
+ }
10989
+
10990
+ // Append blackout label.
10991
+ if (this.isDateBlackout(date)) {
10992
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
10993
+ }
10994
+
10995
+ return label;
10996
+ }
10997
+
10998
+ /**
10999
+ * Determines the range position label for a given date.
11000
+ * @private
11001
+ * @param {Number} date - Unix timestamp (seconds).
11002
+ * @returns {String|null} The range position label, or null.
11003
+ */
11004
+ getRangePositionLabel(date) {
11005
+ const parsedFrom = Number.parseInt(this.dateFrom, 10);
11006
+ if (!Number.isFinite(parsedFrom)) {
11007
+ return null;
11008
+ }
11009
+
11010
+ const departTs = startOfDay(parsedFrom * 1000) / 1000;
11011
+ const parsedTo = Number.parseInt(this.dateTo, 10);
11012
+ const hasTo = Number.isFinite(parsedTo);
11013
+ const returnTs = hasTo ? startOfDay(parsedTo * 1000) / 1000 : null;
11014
+
11015
+ if (date === departTs) {
11016
+ return this.datepicker.rangeLabelStart || 'range start';
11017
+ }
11018
+ if (hasTo && date === returnTs) {
11019
+ return this.datepicker.rangeLabelEnd || 'range end';
11020
+ }
11021
+ if (date < departTs) {
11022
+ return this.datepicker.rangeLabelBeforeRange || 'before range';
11023
+ }
11024
+ if (hasTo && date > departTs && date < returnTs) {
11025
+ return this.datepicker.rangeLabelInRange || 'in range';
11026
+ }
11027
+ return this.datepicker.rangeLabelAfterRange || 'after range';
11028
+ }
11029
+
11030
+ /**
11031
+ * Checks whether a given date is a blackout date.
11032
+ * @private
11033
+ * @param {Number} dateTs - Unix timestamp (seconds).
11034
+ * @returns {Boolean} True if the date is blacked out.
11035
+ */
11036
+ isDateBlackout(dateTs) {
11037
+ // Check legacy disabledDays.
11038
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
11039
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
11040
+ return true;
11041
+ }
11042
+ }
11043
+
11044
+ // Check ISO blackoutDates.
11045
+ const blackoutDates = this.datepicker?.blackoutDates;
11046
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
11047
+ const date = new Date(dateTs * 1000);
11048
+ const yyyy = date.getFullYear();
11049
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
11050
+ const dd = String(date.getDate()).padStart(2, '0');
11051
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
11052
+ return true;
11053
+ }
11054
+ }
11055
+
11056
+ return false;
11057
+ }
11058
+
11059
+ /**
11060
+ * Updates the range preview classes imperatively across all cells.
11061
+ * Only active when in range mode with dateFrom set and dateTo not yet set.
11062
+ * @private
11063
+ * @param {Number} hoveredDate - Unix timestamp of the hovered/focused date.
11064
+ * @returns {void}
11065
+ */
11066
+ updateRangePreview(hoveredDate) {
11067
+ if (this.noRange || !this.dateFrom || this.dateTo) {
11068
+ return;
11069
+ }
11070
+
11071
+ const parsedDateFrom = parseInt(this.dateFrom, 10);
11072
+ const allCells = this.getAllFocusableCells();
11073
+
11074
+ allCells.forEach((cell) => {
11075
+ cell.updateRangePreviewClasses(hoveredDate, parsedDateFrom);
11076
+ });
11077
+ }
11078
+
11079
+ /**
11080
+ * Clears range preview classes from all cells.
11081
+ * @private
11082
+ * @returns {void}
11083
+ */
11084
+ clearRangePreview() {
11085
+ if (this.dateFrom && this.dateTo) {
11086
+ return;
11087
+ }
11088
+
11089
+ const allCells = this.getAllFocusableCells();
11090
+ allCells.forEach((cell) => {
11091
+ cell.clearRangePreviewClasses();
11092
+ });
11093
+ }
11094
+
11095
+ /**
11096
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
11097
+ * as a reactive property. Instead, handles the range preview imperatively.
11098
+ * @private
11099
+ * @param {CustomEvent} event - The hovered-date-changed event from a month.
11100
+ * @returns {void}
11101
+ */
11102
+ hoveredDateChanged(event) {
11103
+ const hoveredDate = event.detail.value;
11104
+ this.updateRangePreview(hoveredDate);
10425
11105
  }
10426
11106
 
10427
11107
  /**
@@ -10430,7 +11110,9 @@ class AuroCalendar extends RangeDatepicker {
10430
11110
  * @returns {void}
10431
11111
  */
10432
11112
  scrollToActiveCell() {
10433
- if (this.activeCellDate == null) return;
11113
+ if (this.activeCellDate === null || this.activeCellDate === undefined) {
11114
+ return;
11115
+ }
10434
11116
 
10435
11117
  const date = new Date(this.activeCellDate * 1000);
10436
11118
  const month = date.getMonth() + 1;
@@ -10440,25 +11122,138 @@ class AuroCalendar extends RangeDatepicker {
10440
11122
 
10441
11123
  if (monthElem) {
10442
11124
  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
10443
- monthElem.scrollIntoView({ block: 'nearest', behavior: prefersReducedMotion ? 'instant' : 'smooth' });
11125
+ monthElem.scrollIntoView({ block: 'nearest',
11126
+ behavior: prefersReducedMotion ? 'instant' : 'smooth' });
11127
+ }
11128
+ }
11129
+
11130
+ /**
11131
+ * Returns (and lazily creates) an aria-live region inside the dropdown's
11132
+ * <dialog> element. This placement is critical for two reasons:
11133
+ *
11134
+ * 1. Inside the dialog's accessible scope — dialog.showModal() makes
11135
+ * everything outside the top-layer dialog inert, and desktop modal
11136
+ * mode uses _setPageInert() on document.body siblings. A live region
11137
+ * on document.body would be invisible to screen readers in both cases.
11138
+ *
11139
+ * 2. Not nested in shadow DOM — Chrome inconsistently observes aria-live
11140
+ * mutations inside shadow DOM across machines and versions. The dialog
11141
+ * element is only one shadow root deep (the dropdown bib's shadow DOM),
11142
+ * which Chrome handles reliably. The calendar's own shadow DOM (nested
11143
+ * inside the bib via slotting) is two+ levels deep and unreliable.
11144
+ *
11145
+ * @private
11146
+ * @returns {HTMLElement} The live region element.
11147
+ */
11148
+ getOrCreateLiveRegion() {
11149
+ if (this._liveRegion && this._liveRegion.isConnected) {
11150
+ return this._liveRegion;
11151
+ }
11152
+
11153
+ // Access the dialog element inside the dropdown bib's shadow DOM.
11154
+ const dialog = this.dropdown?.bibContent?.shadowRoot?.querySelector('dialog');
11155
+ if (!dialog) {
11156
+ return null;
11157
+ }
11158
+
11159
+ // Check if we already created one for this calendar instance.
11160
+ const regionId = `auro-calendar-live-${this._calendarInstanceId}`;
11161
+ const existing = dialog.querySelector(`#${regionId}`);
11162
+ if (existing) {
11163
+ this._liveRegion = existing;
11164
+ return existing;
11165
+ }
11166
+
11167
+ const el = document.createElement('div');
11168
+ el.id = regionId;
11169
+ el.setAttribute('aria-live', 'assertive');
11170
+ el.setAttribute('aria-atomic', 'true');
11171
+ el.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';
11172
+ dialog.appendChild(el);
11173
+
11174
+ this._liveRegion = el;
11175
+ return el;
11176
+ }
11177
+
11178
+ /**
11179
+ * Removes the live region when this calendar is disconnected.
11180
+ * @private
11181
+ * @returns {void}
11182
+ */
11183
+ disconnectedCallback() {
11184
+ super.disconnectedCallback();
11185
+
11186
+ // Cancel any pending announcements so they don't fire after teardown.
11187
+ if (this._announceRafId) {
11188
+ cancelAnimationFrame(this._announceRafId);
11189
+ this._announceRafId = null;
11190
+ }
11191
+ if (this._focusAnnounceTimer) {
11192
+ clearTimeout(this._focusAnnounceTimer);
11193
+ this._focusAnnounceTimer = null;
11194
+ }
11195
+
11196
+ if (this._liveRegion && this._liveRegion.isConnected) {
11197
+ this._liveRegion.remove();
10444
11198
  }
11199
+ this._liveRegion = null;
10445
11200
  }
10446
11201
 
10447
11202
  /**
10448
- * Announces a date selection via the live region.
11203
+ * Announces a date selection or focus change via the live region.
11204
+ * Uses requestAnimationFrame to ensure the clear and set happen in
11205
+ * separate rendering frames — Chrome may coalesce synchronous or
11206
+ * microtask-deferred mutations into a single accessibility tree update.
10449
11207
  * @private
10450
11208
  * @param {String} dateStr - The localized date string to announce.
10451
11209
  * @returns {void}
10452
11210
  */
10453
11211
  announceSelection(dateStr) {
10454
- const liveRegion = this.shadowRoot.querySelector('#calendar-live-region');
10455
- if (liveRegion) {
10456
- liveRegion.textContent = '';
10457
- // Use microtask to ensure SR picks up the change
10458
- Promise.resolve().then(() => {
11212
+ // Cancel any previously queued rAF announcement so a rapid
11213
+ // sequence of calls (e.g. bib open → month nav) only announces
11214
+ // the last one.
11215
+ if (this._announceRafId) {
11216
+ cancelAnimationFrame(this._announceRafId);
11217
+ }
11218
+ const liveRegion = this.getOrCreateLiveRegion();
11219
+ if (!liveRegion) {
11220
+ return;
11221
+ }
11222
+
11223
+ // Double-rAF: clear in frame N, set in frame N+1. Chrome batches
11224
+ // accessibility tree mutations within a single animation frame, so
11225
+ // a same-frame clear+set can be coalesced into a no-op if the new
11226
+ // value matches a recently announced string. Splitting across two
11227
+ // frames guarantees Chrome sees two distinct tree states and fires
11228
+ // a new accessibility event for the content change.
11229
+ liveRegion.textContent = '';
11230
+ this._announceRafId = requestAnimationFrame(() => {
11231
+ this._announceRafId = requestAnimationFrame(() => {
10459
11232
  liveRegion.textContent = dateStr;
11233
+ this._announceRafId = null;
10460
11234
  });
11235
+ });
11236
+ }
11237
+
11238
+ /**
11239
+ * Debounced version of announceSelection for focus navigation.
11240
+ * Uses the assertive live region with a 150ms debounce so only the
11241
+ * final cell after rapid arrow-key traversal is announced. We
11242
+ * originally tried aria-live="polite" here, but VoiceOver treats
11243
+ * polite as "wait until idle" — which never happens during active
11244
+ * keyboard navigation — so the announcements were silently dropped.
11245
+ * @private
11246
+ * @param {String} dateStr - The localized date string to announce.
11247
+ * @returns {void}
11248
+ */
11249
+ announceFocusDebounced(dateStr) {
11250
+ if (this._focusAnnounceTimer) {
11251
+ clearTimeout(this._focusAnnounceTimer);
10461
11252
  }
11253
+ this._focusAnnounceTimer = setTimeout(() => {
11254
+ this.announceSelection(dateStr);
11255
+ this._focusAnnounceTimer = null;
11256
+ }, 150);
10462
11257
  }
10463
11258
 
10464
11259
  /**
@@ -10471,12 +11266,16 @@ class AuroCalendar extends RangeDatepicker {
10471
11266
  const date = new Date(parseInt(timestamp, 10) * 1000);
10472
11267
  const localeCode = this.locale?.code || undefined;
10473
11268
  const formatter = new Intl.DateTimeFormat(localeCode, {
10474
- weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'
11269
+ weekday: 'long',
11270
+ year: 'numeric',
11271
+ month: 'long',
11272
+ day: 'numeric'
10475
11273
  });
10476
11274
  return formatter.format(date);
10477
11275
  }
10478
11276
 
10479
11277
  firstUpdated() {
11278
+
10480
11279
  this.addEventListener('date-from-changed', () => {
10481
11280
  this.dispatchEvent(new CustomEvent('auroCalendar-dateSelected', {
10482
11281
  bubbles: true,
@@ -10505,6 +11304,11 @@ class AuroCalendar extends RangeDatepicker {
10505
11304
  this.addEventListener('calendar-cell-activate', (event) => {
10506
11305
  this.handleCellActivate(event);
10507
11306
  });
11307
+
11308
+ // Listen for cell focus events (SR announcements + range preview)
11309
+ this.addEventListener('calendar-cell-focused', (event) => {
11310
+ this.handleCellFocused(event);
11311
+ });
10508
11312
  }
10509
11313
 
10510
11314
  injectSlot(slotName, nodes) {
@@ -10531,7 +11335,7 @@ class AuroCalendar extends RangeDatepicker {
10531
11335
  if (changedProperties.has('visible')) {
10532
11336
  if (this.visible) {
10533
11337
  // Compute the active date eagerly from data — no DOM needed.
10534
- if (this.activeCellDate == null) {
11338
+ if (this.activeCellDate == null) { // eslint-disable-line no-eq-null, eqeqeq
10535
11339
  this.activeCellDate = this.computeActiveDate();
10536
11340
  }
10537
11341
 
@@ -10599,7 +11403,7 @@ class AuroCalendar extends RangeDatepicker {
10599
11403
  </button>
10600
11404
  ` : undefined}
10601
11405
  </div>
10602
- <div class="calendars">
11406
+ <div id="calendarGrid" class="calendars" role="group" tabindex="0" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}" @calendar-month-mouseleave="${this.clearRangePreview}">
10603
11407
  ${this.renderAllCalendars()}
10604
11408
  </div>
10605
11409
  </div>
@@ -14484,7 +15288,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
14484
15288
  }
14485
15289
  };
14486
15290
 
14487
- var formkitVersion$1 = '202606011922';
15291
+ var formkitVersion$1 = '202606022350';
14488
15292
 
14489
15293
  let AuroElement$2 = class AuroElement extends LitElement {
14490
15294
  static get properties() {
@@ -15477,16 +16281,20 @@ class AuroDropdown extends AuroElement$2 {
15477
16281
 
15478
16282
  // Walk up the ancestor chain, inerting siblings at each level
15479
16283
  // to ensure the entire page outside the host subtree is inert.
16284
+ // Uses a reference counter (data-auro-inert-count) so multiple
16285
+ // simultaneous modal dropdowns share inert state safely.
15480
16286
  let current = host;
15481
16287
  while (current.parentElement) {
15482
16288
  const parent = current.parentElement;
15483
16289
  for (const sibling of parent.children) {
15484
16290
  if (sibling !== current) {
15485
- this._inertSiblings.push({
15486
- element: sibling,
15487
- wasInert: sibling.inert
15488
- });
16291
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
16292
+ if (count === 0) {
16293
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
16294
+ }
16295
+ sibling.dataset.auroInertCount = String(count + 1);
15489
16296
  sibling.inert = true;
16297
+ this._inertSiblings.push(sibling);
15490
16298
  }
15491
16299
  }
15492
16300
  current = parent;
@@ -15495,14 +16303,23 @@ class AuroDropdown extends AuroElement$2 {
15495
16303
 
15496
16304
  /**
15497
16305
  * Restores `inert` state on siblings that were tracked by `_setPageInert`.
15498
- * Preserves the previous inert state so externally-inerted elements are
15499
- * not inadvertently re-enabled.
16306
+ * Uses reference counting so inert is only cleared when the last modal
16307
+ * dropdown releases a given element. Preserves the original inert state
16308
+ * so externally-inerted elements are not inadvertently re-enabled.
15500
16309
  * @private
15501
16310
  */
15502
16311
  _clearPageInert() {
15503
16312
  if (this._inertSiblings) {
15504
- for (const entry of this._inertSiblings) {
15505
- entry.element.inert = entry.wasInert;
16313
+ for (const sibling of this._inertSiblings) {
16314
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
16315
+ if (count <= 0) {
16316
+ const wasInert = sibling.dataset.auroInertWas === 'true';
16317
+ delete sibling.dataset.auroInertCount;
16318
+ delete sibling.dataset.auroInertWas;
16319
+ sibling.inert = wasInert;
16320
+ } else {
16321
+ sibling.dataset.auroInertCount = String(count);
16322
+ }
15506
16323
  }
15507
16324
  this._inertSiblings = undefined;
15508
16325
  }
@@ -19820,109 +20637,236 @@ class AuroInputUtilities {
19820
20637
  }
19821
20638
  }
19822
20639
 
19823
- class DateFormatter {
20640
+ /**
20641
+ * @description Splits a date string into its parts according to the provided format. Does NOT validate that the result is a real calendar date — use `parseDate` when validation is required.
20642
+ * @param {string} dateStr - Date string to parse.
20643
+ * @param {string} format - Date format to parse.
20644
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
20645
+ */
20646
+ function getDateParts(dateStr, format) {
20647
+ if (!dateStr) {
20648
+ return undefined;
20649
+ }
20650
+
20651
+ const formatSeparatorMatch = format.match(/[/.-]/);
20652
+ let valueParts;
20653
+ let formatParts;
19824
20654
 
19825
- constructor() {
20655
+ if (formatSeparatorMatch) {
20656
+ const separator = formatSeparatorMatch[0];
20657
+ valueParts = dateStr.split(separator);
20658
+ formatParts = format.split(separator);
20659
+ } else {
20660
+ if (dateStr.match(/[/.-]/)) {
20661
+ throw new Error(
20662
+ "AuroDatepickerUtilities | parseDate: Date string has no separators",
20663
+ );
20664
+ }
19826
20665
 
19827
- /**
19828
- * @description Parses a date string into its components.
19829
- * @param {string} dateStr - Date string to parse.
19830
- * @param {string} format - Date format to parse.
19831
- * @returns {Object<key["month" | "day" | "year"]: number>|undefined}
19832
- */
19833
- this.parseDate = (dateStr, format = 'mm/dd/yyyy') => {
20666
+ if (dateStr.length !== format.length) {
20667
+ throw new Error(
20668
+ "AuroDatepickerUtilities | parseDate: Date string and format length do not match",
20669
+ );
20670
+ }
19834
20671
 
19835
- // Guard Clause: Date string is defined
19836
- if (!dateStr) {
19837
- return undefined;
19838
- }
20672
+ valueParts = [dateStr];
20673
+ formatParts = [format];
20674
+ }
19839
20675
 
19840
- // Assume the separator is a "/" a defined in our code base
19841
- const separator = '/';
20676
+ if (valueParts.length !== formatParts.length) {
20677
+ throw new Error(
20678
+ `AuroDatepickerUtilities | parseDate: Date string and format do not match : ${dateStr} vs ${format}`,
20679
+ );
20680
+ }
19842
20681
 
19843
- // Get the parts of the date and format
19844
- const valueParts = dateStr.split(separator);
19845
- const formatParts = format.split(separator);
20682
+ const result = formatParts.reduce((acc, part, index) => {
20683
+ const value = valueParts[index];
19846
20684
 
19847
- // Check if the value and format have the correct number of parts
19848
- if (valueParts.length !== formatParts.length) {
19849
- throw new Error('AuroDatepickerUtilities | parseDate: Date string and format length do not match');
19850
- }
20685
+ if (/m/iu.test(part) && part.length === value.length) {
20686
+ acc.month = value;
20687
+ } else if (/d/iu.test(part) && part.length === value.length) {
20688
+ acc.day = value;
20689
+ } else if (/y/iu.test(part) && part.length === value.length) {
20690
+ acc.year = value;
20691
+ }
19851
20692
 
19852
- // Holds the result to be returned
19853
- const result = formatParts.reduce((acc, part, index) => {
19854
- const value = valueParts[index];
20693
+ return acc;
20694
+ }, {});
19855
20695
 
19856
- if ((/m/iu).test(part)) {
19857
- acc.month = value;
19858
- } else if ((/d/iu).test(part)) {
19859
- acc.day = value;
19860
- } else if ((/y/iu).test(part)) {
19861
- acc.year = value;
19862
- }
20696
+ if (!result.month && !result.day && !result.year) {
20697
+ throw new Error(
20698
+ "AuroDatepickerUtilities | parseDate: Unable to parse date string",
20699
+ );
20700
+ }
19863
20701
 
19864
- return acc;
19865
- }, {});
20702
+ return result;
20703
+ }
19866
20704
 
19867
- // If we found all the parts, return the result
19868
- if (result.month && result.year) {
19869
- return result;
19870
- }
20705
+ function isCalendarDate(year, month, day) {
20706
+ let yearNumber = Number(year);
20707
+ const monthNumber = Number(month);
20708
+ const dayNumber = Number(day);
19871
20709
 
19872
- // Throw an error to let the dev know we were unable to parse the date string
19873
- throw new Error('AuroDatepickerUtilities | parseDate: Unable to parse date string');
19874
- };
20710
+ if (
20711
+ !Number.isInteger(yearNumber) ||
20712
+ !Number.isInteger(monthNumber) ||
20713
+ !Number.isInteger(dayNumber)
20714
+ ) {
20715
+ return false;
20716
+ }
19875
20717
 
19876
- /**
19877
- * Convert a date object to string format.
19878
- * @param {Object} date - Date to convert to string.
19879
- * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
19880
- * @returns {String} Returns the date as a string.
19881
- */
19882
- this.getDateAsString = (date, locale = undefined) => date.toLocaleDateString(locale, {
19883
- year: "numeric",
19884
- month: "2-digit",
19885
- day: "2-digit",
19886
- });
20718
+ // Handle 2-digit years by converting them to 4-digit years based on a cutoff. This allows for parsing of 2-digit year formats while still validating the resulting date.
20719
+ if (yearNumber < 100 && yearNumber >= 50) {
20720
+ yearNumber += 1900;
20721
+ } else if (yearNumber < 50) {
20722
+ yearNumber += 2000;
20723
+ }
19887
20724
 
19888
- /**
19889
- * Converts a date string to a North American date format.
19890
- * @param {String} dateStr - Date to validate.
19891
- * @param {String} format - Date format to validate against.
19892
- * @returns {Boolean}
19893
- */
19894
- this.toNorthAmericanFormat = (dateStr, format) => {
20725
+ const stringified = `${String(yearNumber).padStart(4, "0")}-${String(monthNumber).padStart(2, "0")}-${String(dayNumber).padStart(2, "0")}`;
20726
+ const date = new Date(stringified.replace(/[.-]/g, "/"));
20727
+
20728
+ return (
20729
+ !Number.isNaN(date.getTime()) && toISOFormatString(date) === stringified
20730
+ );
20731
+ }
20732
+
20733
+ /**
20734
+ * @description Parses a date string into its components and validates that the result is a real calendar date. Use `getDateParts` instead when raw splitting without validation is needed (e.g. for in-progress input).
20735
+ *
20736
+ * Partial formats are supported: components absent from `format` default to `year → "0"`,
20737
+ * `month → "01"`, `day → "01"` for calendar validation only. The returned object contains
20738
+ * only the fields actually present in the format string — missing fields are never injected.
20739
+ * @param {string} dateStr - Date string to parse.
20740
+ * @param {string} format - Date format to parse.
20741
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
20742
+ * @throws {Error} Throws when the parsed result does not represent a valid calendar date.
20743
+ */
20744
+ function parseDate(dateStr, format = "mm/dd/yyyy") {
20745
+ if (!dateStr || !format) {
20746
+ return undefined;
20747
+ }
20748
+ const result = getDateParts(dateStr.trim(), format);
20749
+
20750
+ if (!result) {
20751
+ return undefined;
20752
+ }
20753
+
20754
+ const lowerFormat = format.toLowerCase();
20755
+ const year = lowerFormat.includes("yy") ? result.year : "0";
20756
+ const month = lowerFormat.includes("mm") ? result.month : "01";
20757
+ const day = lowerFormat.includes("dd") ? result.day : "01";
20758
+
20759
+ if (isCalendarDate(year, month, day)) {
20760
+ return result;
20761
+ }
20762
+
20763
+ throw new Error(
20764
+ `AuroDatepickerUtilities | parseDate: Date string is not a valid date ${JSON.stringify(result)} with format ${format}`,
20765
+ );
20766
+ }
20767
+
20768
+ /**
20769
+ * Convert a date object to string format.
20770
+ * @param {Object} date - Date to convert to string.
20771
+ * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
20772
+ * @returns {String} Returns the date as a string.
20773
+ */
20774
+ function getDateAsString(date, locale = undefined) {
20775
+ return date.toLocaleDateString(locale, {
20776
+ year: "numeric",
20777
+ month: "2-digit",
20778
+ day: "2-digit",
20779
+ });
20780
+ }
20781
+
20782
+ /**
20783
+ * Converts a date string to a North American date format.
20784
+ * @param {String} dateStr - Date to validate.
20785
+ * @param {String} format - Date format to validate against.
20786
+ * @returns {String}
20787
+ */
20788
+ function toNorthAmericanFormat$1(dateStr, format) {
20789
+ if (format === "mm/dd/yyyy") {
20790
+ return dateStr;
20791
+ }
19895
20792
 
19896
- if (format === 'mm/dd/yyyy') {
19897
- return dateStr;
19898
- }
20793
+ const parsedDate = parseDate(dateStr, format);
19899
20794
 
19900
- const parsedDate = this.parseDate(dateStr, format);
20795
+ if (!parsedDate) {
20796
+ throw new Error(
20797
+ "AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string",
20798
+ );
20799
+ }
19901
20800
 
19902
- if (!parsedDate) {
19903
- throw new Error('AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string');
19904
- }
20801
+ const { month, day, year } = parsedDate;
19905
20802
 
19906
- const { month, day, year } = parsedDate;
20803
+ return [month, day, year].filter(Boolean).join("/");
20804
+ }
19907
20805
 
19908
- const dateParts = [];
19909
- if (month) {
19910
- dateParts.push(month);
19911
- }
20806
+ /**
20807
+ * Validates that a date string matches the provided format and represents a real calendar date.
20808
+ *
20809
+ * @param {string} dateStr - Date string to validate.
20810
+ * @param {string} [format="yyyy-mm-dd"] - Format of the date string.
20811
+ * @returns {boolean} True when the date string is valid for the provided format, otherwise false.
20812
+ */
20813
+ function isValidDate(dateStr, format = "yyyy-mm-dd") {
20814
+ try {
20815
+ if (typeof dateStr !== "string" || !dateStr || format?.length < 8) {
20816
+ return false;
20817
+ }
19912
20818
 
19913
- if (day) {
19914
- dateParts.push(day);
19915
- }
20819
+ if (parseDate(dateStr, format)) {
20820
+ return true;
20821
+ }
20822
+ } catch (error) {
20823
+ return false;
20824
+ }
20825
+ return false;
20826
+ }
19916
20827
 
19917
- if (year) {
19918
- dateParts.push(year);
19919
- }
20828
+ /**
20829
+ * Converts a JavaScript Date instance to a simple ISO-like date string. This returns only the calendar date portion without any time or timezone information.
20830
+ *
20831
+ * @param {Date} date - Date instance to convert to an ISO-like string.
20832
+ * @returns {string} A string in the format "yyyy-mm-dd" representing the provided date.
20833
+ * @throws {Error} Throws an error when the input is not a valid Date instance.
20834
+ */
20835
+ function toISOFormatString(date) {
20836
+ if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
20837
+ throw new Error(
20838
+ "AuroDatepickerUtilities | toISOFormatString: Input must be a valid Date instance",
20839
+ );
20840
+ }
20841
+ return `${String(date.getFullYear()).padStart(4, "0")}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
20842
+ }
19920
20843
 
19921
- return dateParts.join('/');
19922
- };
20844
+ /**
20845
+ * Converts a date string into a JavaScript Date instance. This method supports ISO formatted strings and other formats that can be parsed by the formatter.
20846
+ *
20847
+ * @param {String} dateStr - Date string to convert into a Date object.
20848
+ * @param {String} format - Date format used to parse the string when it is not in ISO format.
20849
+ * @returns {Date|null} Returns a Date instance for valid input or null for non-string input.
20850
+ * @throws {Error} Throws when parsing fails for non-ISO string input.
20851
+ */
20852
+ function stringToDateInstance(dateStr, format = "yyyy-mm-dd") {
20853
+ if (typeof dateStr !== "string") {
20854
+ return null;
19923
20855
  }
20856
+
20857
+ const { month, day, year } = parseDate(dateStr, format);
20858
+ return new Date(`${year}/${month}/${day}`);
19924
20859
  }
19925
- const dateFormatter = new DateFormatter();
20860
+
20861
+ const dateFormatter = {
20862
+ parseDate,
20863
+ getDateParts,
20864
+ getDateAsString,
20865
+ toNorthAmericanFormat: toNorthAmericanFormat$1,
20866
+ isValidDate,
20867
+ toISOFormatString,
20868
+ stringToDateInstance,
20869
+ };
19926
20870
 
19927
20871
  // filepath: dateConstraints.mjs
19928
20872
  const DATE_UTIL_CONSTRAINTS = {
@@ -19994,12 +20938,11 @@ class AuroDateUtilitiesBase {
19994
20938
  /* eslint-disable no-magic-numbers */
19995
20939
 
19996
20940
  class AuroDateUtilities extends AuroDateUtilitiesBase {
19997
-
19998
20941
  /**
19999
20942
  * Returns the current century.
20000
20943
  * @returns {String} The current century.
20001
20944
  */
20002
- getCentury () {
20945
+ getCentury() {
20003
20946
  return String(new Date().getFullYear()).slice(0, 2);
20004
20947
  }
20005
20948
 
@@ -20008,14 +20951,12 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20008
20951
  * @param {String} year - The year to convert to four digits.
20009
20952
  * @returns {String} The four digit year.
20010
20953
  */
20011
- getFourDigitYear (year) {
20012
-
20954
+ getFourDigitYear(year) {
20013
20955
  const strYear = String(year).trim();
20014
20956
  return strYear.length <= 2 ? this.getCentury() + strYear : strYear;
20015
20957
  }
20016
20958
 
20017
20959
  constructor() {
20018
-
20019
20960
  super();
20020
20961
 
20021
20962
  /**
@@ -20024,7 +20965,8 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20024
20965
  * @param {Object} date2 - Second date to compare.
20025
20966
  * @returns {Boolean} Returns true if the dates match.
20026
20967
  */
20027
- this.datesMatch = (date1, date2) => new Date(date1).getTime() === new Date(date2).getTime();
20968
+ this.datesMatch = (date1, date2) =>
20969
+ new Date(date1).getTime() === new Date(date2).getTime();
20028
20970
 
20029
20971
  /**
20030
20972
  * Returns true if value passed in is a valid date.
@@ -20033,53 +20975,41 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20033
20975
  * @returns {Boolean}
20034
20976
  */
20035
20977
  this.validDateStr = (date, format) => {
20036
-
20037
20978
  // The length we expect the date string to be
20038
- const dateStrLength = format.length;
20979
+ const dateStrLength = format?.length || 0;
20039
20980
 
20040
20981
  // Guard Clause: Date and format are defined
20041
20982
  if (typeof date === "undefined" || typeof format === "undefined") {
20042
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date and format are required');
20983
+ throw new Error(
20984
+ "AuroDatepickerUtilities | validateDateStr: Date and format are required",
20985
+ );
20043
20986
  }
20044
20987
 
20045
20988
  // Guard Clause: Date should be of type string
20046
20989
  if (typeof date !== "string") {
20047
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date must be a string');
20990
+ throw new Error(
20991
+ "AuroDatepickerUtilities | validateDateStr: Date must be a string",
20992
+ );
20048
20993
  }
20049
20994
 
20050
20995
  // Guard Clause: Format should be of type string
20051
20996
  if (typeof format !== "string") {
20052
- throw new Error('AuroDatepickerUtilities | validateDateStr: Format must be a string');
20997
+ throw new Error(
20998
+ "AuroDatepickerUtilities | validateDateStr: Format must be a string",
20999
+ );
20053
21000
  }
20054
21001
 
20055
21002
  // Guard Clause: Length is what we expect it to be
20056
21003
  if (date.length !== dateStrLength) {
20057
21004
  return false;
20058
21005
  }
20059
- // Get a formatted date string and parse it
20060
- const dateParts = dateFormatter.parseDate(date, format);
20061
-
20062
- // Guard Clause: Date parse succeeded
20063
- if (!dateParts) {
20064
- return false;
20065
- }
20066
21006
 
20067
- // Create the expected date string based on the date parts
20068
- const expectedDateStr = `${dateParts.month}/${dateParts.day || "01"}/${this.getFourDigitYear(dateParts.year)}`;
20069
-
20070
- // Generate a date object that we will extract a string date from to compare to the passed in date string
20071
- const dateObj = new Date(this.getFourDigitYear(dateParts.year), dateParts.month - 1, dateParts.day || 1);
20072
-
20073
- // Get the date string of the date object we created from the string date
20074
- const actualDateStr = dateFormatter.getDateAsString(dateObj, "en-US");
20075
-
20076
- // Guard Clause: Generated date matches date string input
20077
- if (expectedDateStr !== actualDateStr) {
21007
+ // Get a formatted date string and parse and validate it
21008
+ try {
21009
+ return Boolean(dateFormatter.parseDate(date, format));
21010
+ } catch (error) {
20078
21011
  return false;
20079
21012
  }
20080
-
20081
- // If we passed all other checks, we can assume the date is valid
20082
- return true;
20083
21013
  };
20084
21014
 
20085
21015
  /**
@@ -20089,10 +21019,11 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20089
21019
  * @returns {boolean}
20090
21020
  */
20091
21021
  this.dateAndFormatMatch = (value, format) => {
20092
-
20093
21022
  // Ensure we have both values we need to do the comparison
20094
21023
  if (!value || !format) {
20095
- throw new Error('AuroFormValidation | dateFormatMatch: value and format are required');
21024
+ throw new Error(
21025
+ "AuroFormValidation | dateFormatMatch: value and format are required",
21026
+ );
20096
21027
  }
20097
21028
 
20098
21029
  // If the lengths are different, they cannot match
@@ -20101,11 +21032,10 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20101
21032
  }
20102
21033
 
20103
21034
  // Get the parts of the date
20104
- const dateParts = dateFormatter.parseDate(value, format);
21035
+ const dateParts = dateFormatter.getDateParts(value, format);
20105
21036
 
20106
21037
  // Validator for day
20107
21038
  const dayValueIsValid = (day) => {
20108
-
20109
21039
  // Guard clause: if there is no day in the dateParts, we can ignore this check.
20110
21040
  if (!dateParts.day) {
20111
21041
  return true;
@@ -20121,7 +21051,9 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20121
21051
 
20122
21052
  // Guard clause: ensure day is a valid integer
20123
21053
  if (Number.isNaN(numDay)) {
20124
- throw new Error('AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer');
21054
+ throw new Error(
21055
+ "AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer",
21056
+ );
20125
21057
  }
20126
21058
 
20127
21059
  // Guard clause: ensure day is within the valid range
@@ -20135,6 +21067,10 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20135
21067
 
20136
21068
  // Validator for month
20137
21069
  const monthValueIsValid = (month) => {
21070
+ // Guard clause: if there is no month in the dateParts, we can ignore this check.
21071
+ if (!dateParts.month) {
21072
+ return true;
21073
+ }
20138
21074
 
20139
21075
  // Guard clause: ensure month exists.
20140
21076
  if (!month) {
@@ -20146,7 +21082,9 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20146
21082
 
20147
21083
  // Guard clause: ensure month is a valid integer
20148
21084
  if (Number.isNaN(numMonth)) {
20149
- throw new Error('AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer');
21085
+ throw new Error(
21086
+ "AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer",
21087
+ );
20150
21088
  }
20151
21089
 
20152
21090
  // Guard clause: ensure month is within the valid range
@@ -20160,6 +21098,10 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20160
21098
 
20161
21099
  // Validator for year
20162
21100
  const yearIsValid = (_year) => {
21101
+ // Guard clause: if there is no year in the dateParts, we can ignore this check.
21102
+ if (!dateParts.year) {
21103
+ return true;
21104
+ }
20163
21105
 
20164
21106
  // Guard clause: ensure year exists.
20165
21107
  if (!_year) {
@@ -20174,7 +21116,9 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20174
21116
 
20175
21117
  // Guard clause: ensure year is a valid integer
20176
21118
  if (Number.isNaN(numYear)) {
20177
- throw new Error('AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer');
21119
+ throw new Error(
21120
+ "AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer",
21121
+ );
20178
21122
  }
20179
21123
 
20180
21124
  // Guard clause: ensure year is within the valid range
@@ -20190,7 +21134,7 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20190
21134
  const checks = [
20191
21135
  monthValueIsValid(dateParts.month),
20192
21136
  dayValueIsValid(dateParts.day),
20193
- yearIsValid(dateParts.year)
21137
+ yearIsValid(dateParts.year),
20194
21138
  ];
20195
21139
 
20196
21140
  // If any of the checks failed, the date format does not match and the result is invalid
@@ -20224,10 +21168,7 @@ const {
20224
21168
  } = dateUtilities;
20225
21169
 
20226
21170
  const {
20227
- toNorthAmericanFormat,
20228
- parseDate,
20229
- getDateAsString
20230
- } = dateFormatter;
21171
+ toNorthAmericanFormat} = dateFormatter;
20231
21172
 
20232
21173
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
20233
21174
  // See LICENSE in the project root for license information.
@@ -22442,7 +23383,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
22442
23383
  }
22443
23384
  };
22444
23385
 
22445
- var formkitVersion = '202606011922';
23386
+ var formkitVersion = '202606022350';
22446
23387
 
22447
23388
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
22448
23389
  // See LICENSE in the project root for license information.
@@ -23798,6 +24739,7 @@ class AuroDatePicker extends AuroElement {
23798
24739
  delegatesFocus: true,
23799
24740
  };
23800
24741
  }
24742
+
23801
24743
  constructor() {
23802
24744
  super();
23803
24745
 
@@ -23965,7 +24907,7 @@ class AuroDatePicker extends AuroElement {
23965
24907
 
23966
24908
  /**
23967
24909
  * Defines whether the component will be on lighter or darker backgrounds.
23968
- * @property {'default', 'inverse'}
24910
+ * @type {'default' | 'inverse'}
23969
24911
  * @default 'default'
23970
24912
  */
23971
24913
  appearance: {
@@ -23982,6 +24924,22 @@ class AuroDatePicker extends AuroElement {
23982
24924
  reflect: true
23983
24925
  },
23984
24926
 
24927
+ /**
24928
+ * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
24929
+ */
24930
+ blackoutDates: {
24931
+ type: Array,
24932
+ reflect: true
24933
+ },
24934
+
24935
+ /**
24936
+ * Label announced for blackout (disabled but in-range) date cells.
24937
+ */
24938
+ blackoutLabel: {
24939
+ type: String,
24940
+ reflect: true
24941
+ },
24942
+
23985
24943
  /**
23986
24944
  * The last date that may be displayed in the calendar.
23987
24945
  */
@@ -24037,27 +24995,6 @@ class AuroDatePicker extends AuroElement {
24037
24995
  reflect: true
24038
24996
  },
24039
24997
 
24040
- hasFocus: {
24041
- type: Boolean,
24042
- reflect: false,
24043
- },
24044
-
24045
- /**
24046
- * @private
24047
- */
24048
- hasValue: {
24049
- type: Boolean,
24050
- reflect: false,
24051
- },
24052
-
24053
- /**
24054
- * @private
24055
- */
24056
- hasAllValues: {
24057
- type: Boolean,
24058
- reflect: false
24059
- },
24060
-
24061
24998
  /**
24062
24999
  * Specifies the date format. The default is `mm/dd/yyyy`.
24063
25000
  */
@@ -24079,6 +25016,27 @@ class AuroDatePicker extends AuroElement {
24079
25016
  reflect: true
24080
25017
  },
24081
25018
 
25019
+ /**
25020
+ * @private
25021
+ */
25022
+ hasAllValues: {
25023
+ type: Boolean,
25024
+ reflect: false
25025
+ },
25026
+
25027
+ hasFocus: {
25028
+ type: Boolean,
25029
+ reflect: false,
25030
+ },
25031
+
25032
+ /**
25033
+ * @private
25034
+ */
25035
+ hasValue: {
25036
+ type: Boolean,
25037
+ reflect: false,
25038
+ },
25039
+
24082
25040
  /** Exposes inputmode attribute for input. */
24083
25041
  inputmode: {
24084
25042
  type: String,
@@ -24121,6 +25079,13 @@ class AuroDatePicker extends AuroElement {
24121
25079
  reflect: true
24122
25080
  },
24123
25081
 
25082
+ /**
25083
+ * @private
25084
+ */
25085
+ monthFirst: {
25086
+ type: Boolean
25087
+ },
25088
+
24124
25089
  /**
24125
25090
  * Names of all 12 months to render in the calendar, used for localization of date string in mobile layout.
24126
25091
  */
@@ -24129,25 +25094,26 @@ class AuroDatePicker extends AuroElement {
24129
25094
  },
24130
25095
 
24131
25096
  /**
24132
- * @private
25097
+ * Accessible label for the next month navigation button.
24133
25098
  */
24134
- monthFirst: {
24135
- type: Boolean
25099
+ navLabelNextMonth: {
25100
+ type: String,
25101
+ reflect: true
24136
25102
  },
24137
25103
 
24138
25104
  /**
24139
- * If declared, the bib will NOT flip to an alternate position
24140
- * when there isn't enough space in the specified `placement`.
25105
+ * Accessible label for the previous month navigation button.
24141
25106
  */
24142
- noFlip: {
24143
- type: Boolean,
25107
+ navLabelPrevMonth: {
25108
+ type: String,
24144
25109
  reflect: true
24145
25110
  },
24146
25111
 
24147
25112
  /**
24148
- * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
25113
+ * If declared, the bib will NOT flip to an alternate position
25114
+ * when there isn't enough space in the specified `placement`.
24149
25115
  */
24150
- shift: {
25116
+ noFlip: {
24151
25117
  type: Boolean,
24152
25118
  reflect: true
24153
25119
  },
@@ -24214,17 +25180,9 @@ class AuroDatePicker extends AuroElement {
24214
25180
  },
24215
25181
 
24216
25182
  /**
24217
- * Label announced for the range start date cell.
24218
- */
24219
- rangeLabelStart: {
24220
- type: String,
24221
- reflect: true
24222
- },
24223
-
24224
- /**
24225
- * Label announced for the range end date cell.
25183
+ * Label announced for cells after the range (or after start when no end is selected).
24226
25184
  */
24227
- rangeLabelEnd: {
25185
+ rangeLabelAfterRange: {
24228
25186
  type: String,
24229
25187
  reflect: true
24230
25188
  },
@@ -24238,49 +25196,25 @@ class AuroDatePicker extends AuroElement {
24238
25196
  },
24239
25197
 
24240
25198
  /**
24241
- * Label announced for cells within the selected range.
24242
- */
24243
- rangeLabelInRange: {
24244
- type: String,
24245
- reflect: true
24246
- },
24247
-
24248
- /**
24249
- * Label announced for cells after the range (or after start when no end is selected).
24250
- */
24251
- rangeLabelAfterRange: {
24252
- type: String,
24253
- reflect: true
24254
- },
24255
-
24256
- /**
24257
- * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
24258
- */
24259
- blackoutDates: {
24260
- type: Array,
24261
- reflect: true
24262
- },
24263
-
24264
- /**
24265
- * Label announced for blackout (disabled but in-range) date cells.
25199
+ * Label announced for the range end date cell.
24266
25200
  */
24267
- blackoutLabel: {
25201
+ rangeLabelEnd: {
24268
25202
  type: String,
24269
25203
  reflect: true
24270
25204
  },
24271
25205
 
24272
25206
  /**
24273
- * Accessible label for the previous month navigation button.
25207
+ * Label announced for cells within the selected range.
24274
25208
  */
24275
- navLabelPrevMonth: {
25209
+ rangeLabelInRange: {
24276
25210
  type: String,
24277
25211
  reflect: true
24278
25212
  },
24279
25213
 
24280
25214
  /**
24281
- * Accessible label for the next month navigation button.
25215
+ * Label announced for the range start date cell.
24282
25216
  */
24283
- navLabelNextMonth: {
25217
+ rangeLabelStart: {
24284
25218
  type: String,
24285
25219
  reflect: true
24286
25220
  },
@@ -24338,6 +25272,14 @@ class AuroDatePicker extends AuroElement {
24338
25272
  type: String
24339
25273
  },
24340
25274
 
25275
+ /**
25276
+ * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
25277
+ */
25278
+ shift: {
25279
+ type: Boolean,
25280
+ reflect: true
25281
+ },
25282
+
24341
25283
  /**
24342
25284
  * Set true to make datepicker stacked style.
24343
25285
  */
@@ -24346,6 +25288,16 @@ class AuroDatePicker extends AuroElement {
24346
25288
  reflect: true
24347
25289
  },
24348
25290
 
25291
+ /**
25292
+ * Indicates whether the datepicker is in a dirty state (has been interacted with).
25293
+ * @private
25294
+ */
25295
+ touched: {
25296
+ type: Boolean,
25297
+ reflect: true,
25298
+ attribute: false
25299
+ },
25300
+
24349
25301
  /**
24350
25302
  * Specifies the `validityState` this element is in.
24351
25303
  */
@@ -24366,16 +25318,6 @@ class AuroDatePicker extends AuroElement {
24366
25318
  */
24367
25319
  valueEnd: {
24368
25320
  type: String
24369
- },
24370
-
24371
- /**
24372
- * Indicates whether the datepicker is in a dirty state (has been interacted with).
24373
- * @private
24374
- */
24375
- touched: {
24376
- type: Boolean,
24377
- reflect: true,
24378
- attribute: false
24379
25321
  }
24380
25322
  };
24381
25323
  }
@@ -24484,8 +25426,9 @@ class AuroDatePicker extends AuroElement {
24484
25426
  }
24485
25427
 
24486
25428
  /**
24487
- * @private
24488
25429
  * Common display value wrapper classes.
25430
+ * @private
25431
+ * @returns {Object} Class map for Lit's classMap directive.
24489
25432
  */
24490
25433
  get commonDisplayValueWrapperClasses() {
24491
25434
  return {
@@ -24653,7 +25596,7 @@ class AuroDatePicker extends AuroElement {
24653
25596
  }
24654
25597
 
24655
25598
  // Compute and mark the active cell
24656
- if (this.calendar.activeCellDate == null) {
25599
+ if (this.calendar.activeCellDate === null || this.calendar.activeCellDate === undefined) {
24657
25600
  this.calendar.activeCellDate = this.calendar.computeActiveDate();
24658
25601
  }
24659
25602
  if (this.calendar.activeCellDate !== undefined) {
@@ -24662,29 +25605,37 @@ class AuroDatePicker extends AuroElement {
24662
25605
 
24663
25606
  // If no cell matched (e.g. centralDate month differs from the rendered
24664
25607
  // range on mobile), fall back to the first rendered enabled cell.
24665
- let activeCell = allCells.find(cell => cell.active);
25608
+ let activeCell = allCells.find((cell) => cell.active);
24666
25609
  if (!activeCell && allCells.length) {
24667
- const fallback = allCells[0];
25610
+ const [fallback] = allCells;
24668
25611
  if (fallback.day) {
24669
25612
  this.calendar.activeCellDate = fallback.day.date;
24670
25613
  this.calendar.setActiveCell(this.calendar.activeCellDate);
24671
- activeCell = allCells.find(cell => cell.active);
25614
+ activeCell = allCells.find((cell) => cell.active);
24672
25615
  }
24673
25616
  }
24674
25617
 
24675
- // Wait for the cell's Lit render to complete so the button's tabindex
24676
- // reflects the active state before we attempt to focus.
25618
+ // Focus the calendar grid wrapper (aria-activedescendant handles
25619
+ // the SR announcement for the active cell).
24677
25620
  if (activeCell) {
24678
- activeCell.updateComplete.then(() => {
24679
- activeCell.hovered = true;
24680
- const btn = activeCell.shadowRoot.querySelector('button:not([aria-hidden])');
24681
- if (btn) {
24682
- btn.setAttribute('tabindex', '0');
24683
- btn.focus({ focusVisible: true });
24684
- } else if (attempts < MAX_ATTEMPTS) {
24685
- requestAnimationFrame(tryFocus);
24686
- }
24687
- });
25621
+ this.calendar.focusActiveCell();
25622
+
25623
+ // Announce the initial active cell via the live region.
25624
+ // Delay the announcement so it arrives after VoiceOver finishes
25625
+ // speaking the focus-change announcement for the grid wrapper.
25626
+ // Without this delay, VoiceOver drops the live region update
25627
+ // because it's already mid-announcement from the focus move.
25628
+ const announcement = this.calendar.buildFocusAnnouncement(activeCell.day.date);
25629
+ setTimeout(() => {
25630
+ this.calendar.announceSelection(announcement);
25631
+ }, 500);
25632
+
25633
+ // On mobile fullscreen, scroll the month list so the active cell's
25634
+ // month is visible. Without this, the list stays scrolled to the
25635
+ // calendarStartDate month which may be far from the active cell.
25636
+ if (this.dropdown.isBibFullscreen) {
25637
+ this.calendar.scrollToActiveCell();
25638
+ }
24688
25639
  } else if (attempts < MAX_ATTEMPTS) {
24689
25640
  requestAnimationFrame(tryFocus);
24690
25641
  }
@@ -24834,14 +25785,35 @@ class AuroDatePicker extends AuroElement {
24834
25785
  if (bibEl && this.dropdown.isPopoverVisible) {
24835
25786
  bibEl.close();
24836
25787
  bibEl.open(true);
25788
+ }
25789
+
25790
+ // Re-render the calendar with the new fullscreen layout,
25791
+ // then restore focus after the re-render completes.
25792
+ this.calendar.isFullscreen = true;
25793
+ this.calendar.updateComplete.then(() => {
24837
25794
  doubleRaf(() => {
24838
25795
  this.focusActiveCellWhenReady();
24839
25796
  });
24840
- }
25797
+ });
24841
25798
  });
24842
25799
  } else if (!this.dropdown.isBibFullscreen) {
24843
- // Switching from fullscreen to floating — restore trigger accessibility
24844
- this.dropdown.trigger.inert = false;
25800
+ // Switching from fullscreen to floating — only restore trigger accessibility
25801
+ // when the bib is closed or the desktop layout is not a modal. A desktopModal
25802
+ // dropdown keeps the trigger inert while open, matching the desktop-open path.
25803
+ if (!this.dropdown.isPopoverVisible || !this.dropdown.desktopModal) {
25804
+ this.dropdown.trigger.inert = false;
25805
+ }
25806
+
25807
+ // Re-render the calendar with the desktop layout,
25808
+ // then restore focus after the re-render completes.
25809
+ this.dropdown.updateComplete.then(() => {
25810
+ this.calendar.isFullscreen = false;
25811
+ this.calendar.updateComplete.then(() => {
25812
+ doubleRaf(() => {
25813
+ this.focusActiveCellWhenReady();
25814
+ });
25815
+ });
25816
+ });
24845
25817
  }
24846
25818
  });
24847
25819
  }
@@ -25083,12 +26055,14 @@ class AuroDatePicker extends AuroElement {
25083
26055
  }
25084
26056
 
25085
26057
  const formatted = this.util.toNorthAmericanFormat(dateStr, this.format);
25086
- if (!this.util.validDateStr(dateStr, this.format)) return false;
26058
+ if (!this.util.validDateStr(dateStr, this.format)) {
26059
+ return false;
26060
+ }
25087
26061
 
25088
- const d = new Date(formatted);
25089
- const yyyy = d.getFullYear();
25090
- const mm = String(d.getMonth() + 1).padStart(2, '0');
25091
- const dd = String(d.getDate()).padStart(2, '0');
26062
+ const dt = new Date(formatted);
26063
+ const yyyy = dt.getFullYear();
26064
+ const mm = String(dt.getMonth() + 1).padStart(2, '0');
26065
+ const dd = String(dt.getDate()).padStart(2, '0');
25092
26066
  return this.blackoutDates.includes(`${yyyy}-${mm}-${dd}`);
25093
26067
  }
25094
26068
 
@@ -25106,7 +26080,7 @@ class AuroDatePicker extends AuroElement {
25106
26080
 
25107
26081
  // After standard validation, check blackout dates for typed input
25108
26082
  if (this.validity !== 'customError') {
25109
- if (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd))) {
26083
+ if (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd))) { // eslint-disable-line no-extra-parens
25110
26084
  const msg = this.setCustomValidityCustomError || 'Selected date is unavailable';
25111
26085
  this.validity = 'customError';
25112
26086
  this.errorMessage = msg;
@@ -25152,7 +26126,13 @@ class AuroDatePicker extends AuroElement {
25152
26126
  // backward compatibility for old format of referenceDates which is a stringified array with - instead of / as separator, e.g. ["10-22-2025","10-23-2025"]
25153
26127
  const stringfiedDates = JSON.stringify(this.referenceDates);
25154
26128
  if (stringfiedDates.includes('-')) {
25155
- this.referenceDates = this.referenceDates.map(date => date.replace(/-/gu, '/' ));
26129
+ this.referenceDates = this.referenceDates.map((date) => date.replace(/-/gu, '/'));
26130
+ }
26131
+
26132
+ // Force calendar cells to re-render with updated reference date state.
26133
+ if (this.calendar) {
26134
+ this.calendar.requestUpdate();
26135
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
25156
26136
  }
25157
26137
  }
25158
26138
 
@@ -25741,7 +26721,7 @@ class AuroDatePicker extends AuroElement {
25741
26721
  /**
25742
26722
  * Handles click on the clear button.
25743
26723
  * @private
25744
- * @param {MouseEvent} event
26724
+ * @param {MouseEvent} event - The mouse event from the clear button click.
25745
26725
  * @returns {void}
25746
26726
  */
25747
26727
  handleClearClick(event) {