@aurodesignsystem-dev/auro-formkit 0.0.0-pr1489.0 → 0.0.0-pr1489.10

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 (66) 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 -259
  8. package/components/combobox/demo/getting-started.min.js +523 -259
  9. package/components/combobox/demo/index.min.js +523 -259
  10. package/components/combobox/demo/styles.min.css +1 -1
  11. package/components/combobox/dist/index.js +523 -259
  12. package/components/combobox/dist/registered.js +523 -259
  13. package/components/counter/demo/customize.min.js +271 -131
  14. package/components/counter/demo/index.min.js +271 -131
  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 +12 -9
  19. package/components/datepicker/demo/api.md +1 -1
  20. package/components/datepicker/demo/customize.md +4 -0
  21. package/components/datepicker/demo/customize.min.js +1638 -654
  22. package/components/datepicker/demo/index.md +35 -5
  23. package/components/datepicker/demo/index.min.js +1654 -659
  24. package/components/datepicker/demo/keyboard-behavior.md +16 -16
  25. package/components/datepicker/demo/styles.min.css +1 -1
  26. package/components/datepicker/demo/voiceover.md +5 -3
  27. package/components/datepicker/demo/why-datepicker.md +2 -2
  28. package/components/datepicker/dist/index.js +1642 -658
  29. package/components/datepicker/dist/registered.js +1642 -658
  30. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +52 -17
  31. package/components/datepicker/dist/src/auro-calendar-month.d.ts +12 -4
  32. package/components/datepicker/dist/src/auro-calendar.d.ts +161 -8
  33. package/components/datepicker/dist/src/auro-datepicker.d.ts +77 -79
  34. package/components/dropdown/demo/customize.min.js +22 -6
  35. package/components/dropdown/demo/getting-started.min.js +22 -6
  36. package/components/dropdown/demo/index.min.js +22 -6
  37. package/components/dropdown/demo/styles.min.css +1 -1
  38. package/components/dropdown/dist/auro-dropdown.d.ts +3 -2
  39. package/components/dropdown/dist/index.js +22 -6
  40. package/components/dropdown/dist/registered.js +22 -6
  41. package/components/form/demo/customize.min.js +3461 -1561
  42. package/components/form/demo/getting-started.min.js +3461 -1561
  43. package/components/form/demo/index.min.js +3461 -1561
  44. package/components/form/demo/registerDemoDeps.min.js +3461 -1561
  45. package/components/form/demo/styles.min.css +1 -1
  46. package/components/input/demo/customize.min.js +249 -125
  47. package/components/input/demo/getting-started.min.js +249 -125
  48. package/components/input/demo/index.min.js +249 -125
  49. package/components/input/demo/styles.min.css +1 -1
  50. package/components/input/dist/index.js +249 -125
  51. package/components/input/dist/registered.js +249 -125
  52. package/components/menu/demo/styles.min.css +1 -1
  53. package/components/radio/demo/customize.min.js +249 -125
  54. package/components/radio/demo/getting-started.min.js +249 -125
  55. package/components/radio/demo/index.min.js +249 -125
  56. package/components/radio/demo/styles.min.css +1 -1
  57. package/components/radio/dist/index.js +249 -125
  58. package/components/radio/dist/registered.js +249 -125
  59. package/components/select/demo/customize.min.js +271 -131
  60. package/components/select/demo/getting-started.min.js +271 -131
  61. package/components/select/demo/index.min.js +271 -131
  62. package/components/select/demo/styles.min.css +1 -1
  63. package/components/select/dist/index.js +271 -131
  64. package/components/select/dist/registered.js +271 -131
  65. package/custom-elements.json +1936 -1614
  66. 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';
@@ -1289,13 +1413,10 @@ class UtilitiesCalendarRender {
1289
1413
  // 2. Start by assuming we can render the max number of months.
1290
1414
  let calendarCount = maxRenderableMonths;
1291
1415
 
1292
- // 3. If we didn't get a count early, restrict based on min/max date.
1416
+ // 3. If maximumRenderableMonths() returns 0 (e.g. an invalid/empty defined range),
1417
+ // fall back to the min/max date range so something is rendered.
1293
1418
  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
- }
1419
+ calendarCount = this.util.monthDiff(new Date(elem.minDate), new Date(elem.maxDate));
1299
1420
  }
1300
1421
 
1301
1422
  if (elem.numCalendars !== calendarCount) {
@@ -1343,7 +1464,6 @@ class UtilitiesCalendarRender {
1343
1464
  .max="${elem.max}"
1344
1465
  ?noRange="${elem.noRange}"
1345
1466
  .monthFirst="${elem.monthFirst}"
1346
- .hoveredDate="${elem.hoveredDate}"
1347
1467
  .dateTo="${elem.dateTo}"
1348
1468
  .dateFrom="${elem.dateFrom}"
1349
1469
  .locale="${elem.locale}"
@@ -1375,43 +1495,6 @@ var snowflakeStyle = css`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
1375
1495
 
1376
1496
  var snowflakeColors = css`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
1377
1497
 
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
1498
  /**
1416
1499
  * @module constants
1417
1500
  * @summary Useful constants
@@ -7166,6 +7249,43 @@ function subYears(date, amount, options) {
7166
7249
  return addYears(date, -1, options);
7167
7250
  }
7168
7251
 
7252
+ 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}`;
7253
+
7254
+ 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)}}`;
7255
+
7256
+ 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)}`;
7257
+
7258
+ 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)}`;
7259
+
7260
+ /******************************************************************************
7261
+ Copyright (c) Microsoft Corporation.
7262
+
7263
+ Permission to use, copy, modify, and/or distribute this software for any
7264
+ purpose with or without fee is hereby granted.
7265
+
7266
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7267
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7268
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7269
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7270
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7271
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7272
+ PERFORMANCE OF THIS SOFTWARE.
7273
+ ***************************************************************************** */
7274
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
7275
+
7276
+
7277
+ function __decorate(decorators, target, key, desc) {
7278
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7279
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7280
+ 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;
7281
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7282
+ }
7283
+
7284
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
7285
+ var e = new Error(message);
7286
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
7287
+ };
7288
+
7169
7289
  class RangeDatepickerCell extends LitElement {
7170
7290
  constructor() {
7171
7291
  super(...arguments);
@@ -7888,9 +8008,9 @@ __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "dayN
7888
8008
  __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
7889
8009
  AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
7890
8010
 
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}}`;
8011
+ 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
8012
 
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}`;
8013
+ 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
8014
 
7895
8015
  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
8016
  `,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 +8033,7 @@ class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,cl
7913
8033
 
7914
8034
  var popoverVersion = '6.0.1';
7915
8035
 
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 */
8036
+ /* 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
8037
 
7918
8038
  class AuroCalendarCell extends LitElement {
7919
8039
  constructor() {
@@ -7921,7 +8041,6 @@ class AuroCalendarCell extends LitElement {
7921
8041
 
7922
8042
  this.day = null;
7923
8043
  this.selected = false;
7924
- this.hovered = false;
7925
8044
  this.dateTo = null;
7926
8045
  this.dateFrom = null;
7927
8046
  this.month = null;
@@ -7929,7 +8048,6 @@ class AuroCalendarCell extends LitElement {
7929
8048
  this.max = null;
7930
8049
  this.disabled = false;
7931
8050
  this.disabledDays = [];
7932
- this.hoveredDate = null;
7933
8051
  this.isCurrentDate = false;
7934
8052
  this._locale = null;
7935
8053
  this.dateStr = null;
@@ -7954,7 +8072,6 @@ class AuroCalendarCell extends LitElement {
7954
8072
  // ...super.properties,
7955
8073
  day: { type: Object },
7956
8074
  selected: { type: Boolean },
7957
- hovered: { type: Boolean },
7958
8075
  dateTo: { type: String },
7959
8076
  dateFrom: { type: String },
7960
8077
  month: { type: String },
@@ -7965,15 +8082,10 @@ class AuroCalendarCell extends LitElement {
7965
8082
  reflect: true
7966
8083
  },
7967
8084
  disabledDays: { type: Array },
7968
- hoveredDate: { type: String },
7969
8085
  isCurrentDate: { type: Boolean },
7970
8086
  locale: { type: Object },
7971
8087
  dateStr: { type: String },
7972
8088
  renderForDateSlot: { type: Boolean },
7973
- active: {
7974
- type: Boolean,
7975
- reflect: true
7976
- },
7977
8089
  hasPopoverContent: { type: Boolean }
7978
8090
  };
7979
8091
  }
@@ -7998,17 +8110,17 @@ class AuroCalendarCell extends LitElement {
7998
8110
  }
7999
8111
 
8000
8112
  /**
8001
- * Handles selected and hovered states of the calendar cell when the date changes.
8113
+ * Handles selected state of the calendar cell when the selection changes.
8114
+ * Also clears any imperative range preview classes so classMap is the
8115
+ * sole source of truth after a selection update.
8002
8116
  * @private
8003
8117
  * @param {Number} dateFrom - Depart date.
8004
8118
  * @param {Number} dateTo - Return date.
8005
- * @param {Number} hoveredDate - Hovered date.
8006
8119
  * @param {Object} day - An object containing the dateFrom and day of month values.
8007
8120
  * @returns {void}
8008
8121
  */
8009
- dateChanged(dateFrom, dateTo, hoveredDate, day) {
8122
+ dateChanged(dateFrom, dateTo, day) {
8010
8123
  this.selected = false;
8011
- this.hovered = false;
8012
8124
 
8013
8125
  const parsedDateFrom = parseInt(dateFrom, 10);
8014
8126
  const parsedDateTo = parseInt(dateTo, 10);
@@ -8020,10 +8132,6 @@ class AuroCalendarCell extends LitElement {
8020
8132
  if (day.date === departTimestamp || day.date === returnTimestamp) {
8021
8133
  this.selected = true;
8022
8134
  }
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
8135
  }
8028
8136
  }
8029
8137
 
@@ -8049,16 +8157,30 @@ class AuroCalendarCell extends LitElement {
8049
8157
 
8050
8158
  /**
8051
8159
  * Handles user hover events and dispatches a custom event.
8052
- * Always dispatches for range pickers so the preview updates correctly.
8160
+ * Does NOT set any reactive properties the range preview is handled
8161
+ * imperatively by the calendar component to avoid O(N) re-renders.
8053
8162
  * @private
8054
8163
  * @returns {void}
8055
8164
  */
8056
8165
  handleHover() {
8057
- this.hovered = true;
8058
-
8059
- let _a;
8060
8166
  this.dispatchEvent(new CustomEvent('date-is-hovered', {
8061
- detail: { date: (_a = this.day) === null || _a === void 0 ? void 0 : _a.date },
8167
+ detail: { date: this.day?.date },
8168
+ }));
8169
+ }
8170
+
8171
+ /**
8172
+ * Handles focus events on the cell button.
8173
+ * Dispatches a lightweight event for the calendar to handle SR
8174
+ * announcements and range preview updates without triggering
8175
+ * any Lit lifecycle updates.
8176
+ * @private
8177
+ * @returns {void}
8178
+ */
8179
+ handleFocus() {
8180
+ this.dispatchEvent(new CustomEvent('calendar-cell-focused', {
8181
+ bubbles: true,
8182
+ composed: true,
8183
+ detail: { date: this.day?.date },
8062
8184
  }));
8063
8185
  }
8064
8186
 
@@ -8072,7 +8194,7 @@ class AuroCalendarCell extends LitElement {
8072
8194
  * @returns {Boolean} - True if the date is out of range.
8073
8195
  */
8074
8196
  isOutOfRange(day, min, max) {
8075
- if (day && day.date != null) {
8197
+ if (day && day.date !== null && day.date !== undefined) {
8076
8198
  return day.date < min || day.date > max;
8077
8199
  }
8078
8200
  return false;
@@ -8085,13 +8207,13 @@ class AuroCalendarCell extends LitElement {
8085
8207
  * @returns {Boolean} - True if the date is a blackout date.
8086
8208
  */
8087
8209
  isBlackout() {
8088
- if (!this.day || this.day.date == null || this.isOutOfRange(this.day, this.min, this.max)) {
8210
+ if (!this.day || this.day.date === null || this.day.date === undefined || this.isOutOfRange(this.day, this.min, this.max)) {
8089
8211
  return false;
8090
8212
  }
8091
8213
 
8092
8214
  // Check against disabledDays timestamps (legacy path)
8093
8215
  if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
8094
- if (this.disabledDays.findIndex(d => parseInt(d, 10) === this.day.date) !== -1) {
8216
+ if (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1) {
8095
8217
  return true;
8096
8218
  }
8097
8219
  }
@@ -8173,12 +8295,26 @@ class AuroCalendarCell extends LitElement {
8173
8295
 
8174
8296
  let label = dateFormatter.format(date);
8175
8297
 
8298
+ // Append date slot content (e.g. prices) so it is announced with the date.
8299
+ if (this.renderForDateSlot) {
8300
+ const dateSlotEl = this.querySelector(`[slot="date_${this.dateStr}"]`);
8301
+ if (dateSlotEl) {
8302
+ const text = dateSlotEl.innerText?.trim();
8303
+ if (text) {
8304
+ label += `, ${text}`;
8305
+ }
8306
+ }
8307
+ }
8308
+
8176
8309
  // appending popover content here so that it gets read in a logical order with the other date content.
8177
8310
  if (this.hasPopoverContent) {
8178
- label += `, ${this.querySelector(`[slot="popover_${this.dateStr}"]`).innerText.trim()}`;
8311
+ const popoverEl = this.querySelector(`[slot="popover_${this.dateStr}"]`);
8312
+ if (popoverEl) {
8313
+ label += `, ${popoverEl.innerText.trim()}`;
8314
+ }
8179
8315
  }
8180
8316
 
8181
- // Append range position if in range mode
8317
+ // Append range position label for range datepickers
8182
8318
  const rangePosition = this.getRangePosition();
8183
8319
  if (rangePosition) {
8184
8320
  label += `, ${rangePosition}`;
@@ -8289,12 +8425,12 @@ class AuroCalendarCell extends LitElement {
8289
8425
  }
8290
8426
 
8291
8427
  /**
8292
- * Checks if the current date is a highlighted date.
8428
+ * Checks if the current date is a referenced date.
8293
8429
  * @param {Object} dateStr - The date string in MM_DD_YYYY format.
8294
- * @returns Boolean - True if the date is a highlighted date.
8430
+ * @returns Boolean - True if the date is a referenced date.
8295
8431
  */
8296
8432
  isReferenceDate(dateStr) {
8297
- // If the datepicker has highlighted dates specified
8433
+ // If the datepicker has referenced dates specified
8298
8434
  if (this.datepicker && this.datepicker.hasAttribute('referenceDates')) {
8299
8435
 
8300
8436
  // Get the referenceDates attribute from the datepicker
@@ -8408,6 +8544,11 @@ class AuroCalendarCell extends LitElement {
8408
8544
  };
8409
8545
  this.datepicker.addEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
8410
8546
 
8547
+ // Cache button reference for imperative class manipulation.
8548
+ this.updateComplete.then(() => {
8549
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
8550
+ });
8551
+
8411
8552
  // Trigger an initial update now that `this.datepicker` is assigned so
8412
8553
  // cells reflect blackout/slot state that was configured before first render.
8413
8554
  this.requestUpdate();
@@ -8439,13 +8580,26 @@ class AuroCalendarCell extends LitElement {
8439
8580
  }
8440
8581
 
8441
8582
  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);
8583
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('day')) {
8584
+ this.dateChanged(this.dateFrom, this.dateTo, this.day);
8444
8585
  }
8445
8586
 
8446
- if (this.day) {
8587
+ if (properties.has('day') && this.day) {
8447
8588
  this.setDateSlotName();
8448
8589
  this.handleSlotContent();
8590
+
8591
+ // Re-cache button reference when the day changes (cell may have re-rendered).
8592
+ this.updateComplete.then(() => {
8593
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
8594
+ });
8595
+
8596
+ // Update host-level aria attributes for ariaActiveDescendantElement.
8597
+ this.updateHostAria();
8598
+ }
8599
+
8600
+ // Update host aria when selection changes (aria-selected, range labels)
8601
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
8602
+ this.updateHostAria();
8449
8603
  }
8450
8604
 
8451
8605
  // Configure popover when it first becomes rendered
@@ -8455,64 +8609,165 @@ class AuroCalendarCell extends LitElement {
8455
8609
  }
8456
8610
 
8457
8611
  /**
8458
- * Programmatically focuses the cell's interactive button element.
8612
+ * Updates ARIA attributes on the host element so that
8613
+ * ariaActiveDescendantElement can expose cell info to the SR.
8614
+ * @private
8459
8615
  * @returns {void}
8460
8616
  */
8461
- focusButton() {
8462
- const button = this.shadowRoot.querySelector('button:not([aria-hidden])');
8463
- if (button) {
8464
- button.focus();
8465
- }
8466
- }
8617
+ updateHostAria() {
8618
+ if (!this.day || this.day.date === undefined) return;
8467
8619
 
8468
- renderCellButton() {
8469
8620
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
8470
- const role = outOfRange ? 'presentation' : 'gridcell';
8471
- const blackout = this.isBlackout();
8621
+ if (outOfRange) {
8622
+ this.removeAttribute('role');
8623
+ this.removeAttribute('aria-label');
8624
+ return;
8625
+ }
8472
8626
 
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'),
8627
+ // The host acts as the gridcell for ariaActiveDescendantElement.
8628
+ this.setAttribute('role', 'gridcell');
8629
+ this.setAttribute('aria-label', this.getAriaLabel());
8630
+ this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
8631
+
8632
+ if (this.isBlackout()) {
8633
+ this.setAttribute('aria-disabled', 'true');
8634
+ } else {
8635
+ this.removeAttribute('aria-disabled');
8636
+ }
8637
+ }
8638
+
8639
+ /**
8640
+ * Programmatically focuses the cell's interactive button element.
8641
+ * Uses focusVisible: true so the :focus-visible ring appears even when
8642
+ * the bib was opened via mouse click (which sets mouse input modality).
8643
+ * @returns {void}
8644
+ */
8645
+ focusButton() {
8646
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
8647
+ if (button) {
8648
+ button.focus({ focusVisible: true });
8649
+ }
8650
+ }
8651
+
8652
+ /**
8653
+ * Imperatively marks this cell as active without triggering a Lit re-render.
8654
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
8655
+ * @returns {void}
8656
+ */
8657
+ setActive() {
8658
+ this.active = true;
8659
+
8660
+ // Show the popover when this cell becomes active via keyboard navigation.
8661
+ if (this.auroPopover) {
8662
+ this.auroPopover.toggleShow();
8663
+ }
8664
+ }
8665
+
8666
+ /**
8667
+ * Imperatively marks this cell as inactive without triggering a Lit re-render.
8668
+ * @returns {void}
8669
+ */
8670
+ clearActive() {
8671
+ this.active = false;
8672
+ const btn = this._cachedButton || this.shadowRoot.querySelector('button.day');
8673
+ if (btn) {
8674
+ btn.classList.remove('activeCell');
8675
+ }
8676
+
8677
+ // Hide the popover when this cell loses active state.
8678
+ if (this.auroPopover) {
8679
+ this.auroPopover.toggleHide();
8680
+ }
8681
+ }
8682
+
8683
+ /**
8684
+ * Updates range preview classes imperatively (no Lit re-render).
8685
+ * Called by the calendar component when the hovered date changes
8686
+ * during range selection (dateFrom set, dateTo not yet set).
8687
+ * @param {Number} hoveredDate - Unix timestamp of the currently hovered/focused date.
8688
+ * @param {Number} dateFrom - Unix timestamp of the selected departure date.
8689
+ * @returns {void}
8690
+ */
8691
+ updateRangePreviewClasses(hoveredDate, dateFrom) {
8692
+ const btn = this._cachedButton;
8693
+ if (!btn || !this.day) return;
8694
+
8695
+ const dayDate = this.day.date;
8696
+ const departTimestamp = startOfDay(dateFrom * 1000) / 1000;
8697
+ const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
8698
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
8699
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
8700
+
8701
+ btn.classList.toggle('inRange', isInRange);
8702
+ btn.classList.toggle('lastHoveredDate', isLastHovered);
8703
+ btn.classList.toggle('rangeDepartDate', isDepartWithPreview);
8704
+ }
8705
+
8706
+ /**
8707
+ * Clears all imperative range preview classes from the cell button.
8708
+ * Called when a selection occurs so classMap becomes the sole source of truth.
8709
+ * @returns {void}
8710
+ */
8711
+ clearRangePreviewClasses() {
8712
+ const btn = this._cachedButton;
8713
+ if (!btn) return;
8714
+
8715
+ btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
8716
+ }
8717
+
8718
+ renderCellButton() {
8719
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
8720
+ const blackout = this.isBlackout();
8721
+
8722
+ // Static and selection-driven classes only. Hover-driven classes
8723
+ // (inRange, lastHoveredDate, rangeDepartDate during preview) are
8724
+ // managed imperatively via updateRangePreviewClasses() to avoid
8725
+ // O(N) Lit re-renders on every focus/hover event.
8726
+ const isFirstDay = this.day?.title === 1;
8727
+ const isLastDay = this.day?.date && (() => {
8728
+ const dt = new Date(this.day.date * 1000);
8729
+ return dt.getDate() === new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate();
8730
+ })();
8731
+
8732
+ const buttonClasses = {
8733
+ 'day': true,
8734
+ 'body-default': true,
8735
+ 'currentDate': this.isCurrentDate,
8736
+ 'selected': this.selected,
8737
+ 'inRange': this.datepicker?.hasAttribute('range') && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo),
8480
8738
  'disabled': outOfRange,
8481
- 'blackout': blackout,
8482
- 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && (this.hoveredDate > this.dateFrom || this.dateTo),
8739
+ blackout,
8740
+ 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && this.dateTo,
8483
8741
  'rangeReturnDate': this.datepicker?.hasAttribute('range') && this.isReturnDate(this.day, this.dateFrom, this.dateTo),
8484
8742
  'reference': this.isReferenceDate(this.dateStr),
8485
- 'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo
8743
+ 'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo,
8744
+ 'firstDayOfMonth': isFirstDay,
8745
+ 'lastDayOfMonth': isLastDay,
8486
8746
  };
8487
8747
 
8488
8748
  return html$1`
8489
8749
  <button
8490
8750
  slot="trigger"
8491
8751
  id="${this.getCellId()}"
8492
- role="${role}"
8493
8752
  @click="${outOfRange ? undefined : this.handleTap}"
8494
8753
  @mouseover="${outOfRange ? undefined : this.handleHover}"
8495
- @focus="${outOfRange ? undefined : this.handleHover}"
8754
+ @focus="${outOfRange ? undefined : this.handleFocus}"
8496
8755
  class="${classMap(buttonClasses)}"
8497
8756
  ?disabled="${outOfRange}"
8498
- aria-disabled="${blackout ? 'true' : nothing}"
8499
8757
  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>
8758
+ tabindex="-1">
8504
8759
  <div class="buttonWrapper" aria-hidden="true">
8505
8760
  <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>
8761
+ <div class="dateSlot body-2xs" part="dateSlot" aria-hidden="true" ?hidden="${!this.renderForDateSlot}">
8762
+ <slot name="date_${this.dateStr}"></slot>
8763
+ </div>
8509
8764
  </div>
8510
8765
  </button>
8511
8766
  `;
8512
8767
  }
8513
8768
 
8514
8769
  render() {
8515
- const hasPopoverContent = this.hasPopoverContent;
8770
+ const { hasPopoverContent } = this;
8516
8771
 
8517
8772
  if (hasPopoverContent) {
8518
8773
  return html$1`
@@ -8642,7 +8897,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8642
8897
  */
8643
8898
  renderDayOfWeek(dayOfWeek, index) {
8644
8899
  const fullName = this.dayFullNames ? this.dayFullNames[index] : dayOfWeek;
8645
- return html`<div class="th body-default" role="columnheader"><abbr title="${fullName}">${dayOfWeek}</abbr></div>`;
8900
+ return html`<div class="th body-default"><abbr title="${fullName}">${dayOfWeek}</abbr></div>`;
8646
8901
  }
8647
8902
 
8648
8903
  /**
@@ -8651,92 +8906,39 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8651
8906
  */
8652
8907
  getFocusableCells() {
8653
8908
  const cells = Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-cell'));
8654
- return cells.filter(cell => {
8655
- if (!cell.day) return false;
8909
+ return cells.filter((cell) => {
8910
+ if (!cell.day) {
8911
+ return false;
8912
+ }
8656
8913
  return !cell.isOutOfRange(cell.day, cell.min, cell.max);
8657
8914
  });
8658
8915
  }
8659
8916
 
8660
8917
  /**
8661
- * Handles arrow key navigation within the month grid.
8662
- * Dispatches a cross-month navigation event when the boundary is reached.
8918
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
8919
+ * as a reactive property. Instead, just dispatches the event upward so
8920
+ * the calendar can handle range preview imperatively.
8663
8921
  * @private
8664
- * @param {KeyboardEvent} event - The keyboard event.
8922
+ * @param {CustomEvent} event - The date-is-hovered event from a cell.
8665
8923
  * @returns {void}
8666
8924
  */
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
- }
8925
+ handleDateHovered(event) {
8926
+ this.dispatchEvent(new CustomEvent('hovered-date-changed', {
8927
+ detail: { value: event.detail.date },
8928
+ }));
8929
+ }
8732
8930
 
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
- }
8931
+ /**
8932
+ * Dispatches a bubbling event when the mouse leaves the date grid body
8933
+ * so the parent calendar can clear the range hover preview.
8934
+ * @private
8935
+ * @returns {void}
8936
+ */
8937
+ handleTbodyMouseLeave() {
8938
+ this.dispatchEvent(new CustomEvent('calendar-month-mouseleave', {
8939
+ bubbles: true,
8940
+ composed: true,
8941
+ }));
8740
8942
  }
8741
8943
 
8742
8944
  renderWeek(week) {
@@ -8755,7 +8957,6 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8755
8957
  .min="${this.min}"
8756
8958
  .max="${this.max}"
8757
8959
  .month="${this.month}"
8758
- .hoveredDate="${this.hoveredDate}"
8759
8960
  .dateTo="${this.dateTo}"
8760
8961
  .dateFrom="${this.dateFrom}"
8761
8962
  .locale="${this.locale}"
@@ -8777,10 +8978,10 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8777
8978
  var _a, _b;
8778
8979
 
8779
8980
  return html `
8780
- <div aria-labelledby="${this.getHeadingId()}">
8981
+ <div>
8781
8982
  <div class="header">
8782
8983
  ${this.renderPrevButton()}
8783
- <div class="headerTitle heading-xs" id="${this.getHeadingId()}" aria-live="polite" aria-atomic="true">
8984
+ <div class="headerTitle heading-xs" id="${this.getHeadingId()}" aria-hidden="true">
8784
8985
  ${this.monthFirst ? html`
8785
8986
  <div>${this.computeCurrentMonthName(this.month)}</div>
8786
8987
  <div>${this.renderYear()}</div>
@@ -8792,13 +8993,13 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8792
8993
  ${this.renderNextButton()}
8793
8994
  </div>
8794
8995
 
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">
8996
+ <div class="table" role="grid">
8997
+ <div class="thead" aria-hidden="true">
8998
+ <div class="tr">
8798
8999
  ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map((dayNameOfWeek, index) => this.renderDayOfWeek(dayNameOfWeek, index))}
8799
9000
  </div>
8800
9001
  </div>
8801
- <div class="tbody" role="rowgroup">
9002
+ <div class="tbody" role="rowgroup" @mouseleave="${this.handleTbodyMouseLeave}">
8802
9003
  ${(_b = this.daysOfMonth) === null || _b === void 0 ? void 0 : _b.map(week => this.renderWeek(week))}
8803
9004
  </div>
8804
9005
  </div>
@@ -9610,7 +9811,7 @@ class AuroBibtemplate extends LitElement {
9610
9811
  }
9611
9812
  }
9612
9813
 
9613
- var formkitVersion$2 = '202606011856';
9814
+ var formkitVersion$2 = '202606030033';
9614
9815
 
9615
9816
  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
9817
  `,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 +9872,7 @@ let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[
9671
9872
 
9672
9873
  var buttonVersion$1 = '12.3.2';
9673
9874
 
9674
- /* eslint-disable no-magic-numbers, no-undef-init, max-lines, lit/binding-positions, lit/no-invalid-html */
9875
+ /* 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
9876
 
9676
9877
 
9677
9878
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
@@ -9715,6 +9916,13 @@ class AuroCalendar extends RangeDatepicker {
9715
9916
  */
9716
9917
  this.activeCellDate = null;
9717
9918
 
9919
+ /**
9920
+ * Whether the #calendarGrid wrapper currently has focus.
9921
+ * Used to determine whether the visualFocus ring should be shown.
9922
+ * @private
9923
+ */
9924
+ this._gridHasFocus = false;
9925
+
9718
9926
  /**
9719
9927
  * @private
9720
9928
  */
@@ -9725,6 +9933,12 @@ class AuroCalendar extends RangeDatepicker {
9725
9933
  */
9726
9934
  this.calendarRangeMonths = null;
9727
9935
 
9936
+ /**
9937
+ * Legacy array of disabled-date timestamps.
9938
+ * @private
9939
+ */
9940
+ this.disabledDays = [];
9941
+
9728
9942
  /**
9729
9943
  * @private
9730
9944
  */
@@ -9748,6 +9962,12 @@ class AuroCalendar extends RangeDatepicker {
9748
9962
  this.buttonTag = versioning.generateTag('auro-formkit-datepicker-button', buttonVersion$1, T$1);
9749
9963
 
9750
9964
  this.dropdown = undefined;
9965
+
9966
+ /**
9967
+ * Unique instance ID for the live region element.
9968
+ * @private
9969
+ */
9970
+ this._calendarInstanceId = Date.now().toString(36);
9751
9971
  }
9752
9972
 
9753
9973
  static get styles() {
@@ -9760,6 +9980,7 @@ class AuroCalendar extends RangeDatepicker {
9760
9980
 
9761
9981
  static get properties() {
9762
9982
  return {
9983
+
9763
9984
  /**
9764
9985
  * The last month that may be displayed in the calendar.
9765
9986
  */
@@ -9876,22 +10097,36 @@ class AuroCalendar extends RangeDatepicker {
9876
10097
  /**
9877
10098
  * Updates the month and year when the user navigates to the previous calendar month.
9878
10099
  * @private
10100
+ * @param {Object} [options] - Optional settings.
10101
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
10102
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
9879
10103
  * @returns {void}
9880
10104
  */
9881
- handlePrevMonth() {
10105
+ handlePrevMonth(options) {
10106
+ const opts = options instanceof Event ? {} : options || {};
10107
+ this.clearRangePreview();
9882
10108
  this.utilCal.handleMonthChange(this, 'prev');
9883
- this.updateActiveCellForVisibleMonth();
10109
+ if (!opts.skipActiveUpdate) {
10110
+ this.updateActiveCellForVisibleMonth();
10111
+ }
9884
10112
  this.announceMonthChange();
9885
10113
  }
9886
10114
 
9887
10115
  /**
9888
10116
  * Updates the month and year when the user navigates to the next calendar month.
9889
10117
  * @private
10118
+ * @param {Object} [options] - Optional settings.
10119
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
10120
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
9890
10121
  * @returns {void}
9891
10122
  */
9892
- handleNextMonth() {
10123
+ handleNextMonth(options) {
10124
+ const opts = options instanceof Event ? {} : options || {};
10125
+ this.clearRangePreview();
9893
10126
  this.utilCal.handleMonthChange(this, 'next');
9894
- this.updateActiveCellForVisibleMonth();
10127
+ if (!opts.skipActiveUpdate) {
10128
+ this.updateActiveCellForVisibleMonth();
10129
+ }
9895
10130
  this.announceMonthChange();
9896
10131
  }
9897
10132
 
@@ -9901,27 +10136,39 @@ class AuroCalendar extends RangeDatepicker {
9901
10136
  * @returns {void}
9902
10137
  */
9903
10138
  announceMonthChange() {
10139
+ // Cancel any pending debounced cell announcement so it does not
10140
+ // overwrite this month navigation announcement.
10141
+ if (this._focusAnnounceTimer) {
10142
+ clearTimeout(this._focusAnnounceTimer);
10143
+ this._focusAnnounceTimer = null;
10144
+ }
10145
+
9904
10146
  const date = new Date(this.centralDate);
9905
10147
  const localeCode = this.locale?.code || undefined;
9906
- const formatter = new Intl.DateTimeFormat(localeCode, { month: 'long', year: 'numeric' });
10148
+ const formatter = new Intl.DateTimeFormat(localeCode, { month: 'long',
10149
+ year: 'numeric' });
9907
10150
  this.announceSelection(formatter.format(date));
9908
10151
  }
9909
10152
 
9910
10153
  /**
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.
10154
+ * Updates the active cell after month navigation (prev/next buttons).
10155
+ * Always moves the active cell to the first enabled date in the newly
10156
+ * visible months so that tabbing back to the grid lands on an enabled cell.
9914
10157
  * @private
9915
10158
  * @returns {void}
9916
10159
  */
9917
10160
  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
- }
10161
+ // Use double-rAF to ensure child month/cell components have fully
10162
+ // rendered and cached their button references before we set tabindex.
10163
+ requestAnimationFrame(() => {
10164
+ requestAnimationFrame(() => {
10165
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
10166
+
10167
+ if (newDate !== null && newDate !== undefined) {
10168
+ this.activeCellDate = newDate;
10169
+ this.setActiveCell(this.activeCellDate);
10170
+ }
10171
+ });
9925
10172
  });
9926
10173
  }
9927
10174
 
@@ -10018,7 +10265,9 @@ class AuroCalendar extends RangeDatepicker {
10018
10265
  */
10019
10266
  focusCloseButton() {
10020
10267
  const bibtemplate = this.shadowRoot.querySelector(this.bibtemplateTag._$litStatic$);
10021
- if (bibtemplate) bibtemplate.focusCloseButton();
10268
+ if (bibtemplate) {
10269
+ bibtemplate.focusCloseButton();
10270
+ }
10022
10271
  }
10023
10272
 
10024
10273
  /**
@@ -10047,7 +10296,7 @@ class AuroCalendar extends RangeDatepicker {
10047
10296
  getAllFocusableCells() {
10048
10297
  const months = this.getMonthComponents();
10049
10298
  let cells = [];
10050
- months.forEach(month => {
10299
+ months.forEach((month) => {
10051
10300
  cells = cells.concat(month.getFocusableCells());
10052
10301
  });
10053
10302
  return cells;
@@ -10055,37 +10304,87 @@ class AuroCalendar extends RangeDatepicker {
10055
10304
 
10056
10305
  /**
10057
10306
  * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
10307
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
10308
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
10309
+ * screen readers announce the active cell without moving DOM focus.
10058
10310
  * @param {Number} date - Unix timestamp of the cell to activate.
10059
10311
  * @returns {void}
10060
10312
  */
10061
10313
  setActiveCell(date) {
10062
10314
  const allCells = this.getAllFocusableCells();
10063
10315
 
10064
- allCells.forEach(cell => {
10065
- cell.active = cell.day && cell.day.date === date;
10316
+ let newActiveCell = null;
10317
+ allCells.forEach((cell) => {
10318
+ if (cell.day && cell.day.date === date) {
10319
+ cell.setActive();
10320
+ newActiveCell = cell;
10321
+ } else if (cell.active) {
10322
+ cell.clearActive();
10323
+ }
10066
10324
  });
10067
10325
 
10068
10326
  this.activeCellDate = date;
10327
+
10328
+ // Apply activeCell ring only when the grid currently has focus.
10329
+ if (newActiveCell && this._gridHasFocus) {
10330
+ const btn = newActiveCell._cachedButton || newActiveCell.shadowRoot.querySelector('button.day');
10331
+ if (btn) {
10332
+ btn.classList.add('activeCell');
10333
+ }
10334
+ }
10069
10335
  }
10070
10336
 
10071
10337
  /**
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.
10338
+ * Focuses the calendar grid wrapper and sets the active cell.
10339
+ * DOM focus stays on the grid wrapper; the aria-live region
10340
+ * tells the screen reader which cell is "active".
10075
10341
  * @returns {void}
10076
10342
  */
10077
10343
  focusActiveCell() {
10078
- if (this.activeCellDate != null) {
10344
+ if (this.activeCellDate !== null && this.activeCellDate !== undefined) {
10079
10345
  this.setActiveCell(this.activeCellDate);
10080
10346
  }
10081
10347
 
10082
- const allCells = this.getAllFocusableCells();
10083
- const activeCell = allCells.find(cell => cell.active);
10348
+ const gridWrapper = this.shadowRoot.querySelector('#calendarGrid');
10349
+ if (gridWrapper) {
10350
+ gridWrapper.focus({ preventScroll: true,
10351
+ focusVisible: true });
10352
+ }
10353
+ }
10354
+
10355
+ /**
10356
+ * Shows the activeCell ring when the grid gains focus.
10357
+ * @private
10358
+ * @returns {void}
10359
+ */
10360
+ handleGridFocusIn() {
10361
+ this._gridHasFocus = true;
10362
+ const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
10084
10363
  if (activeCell) {
10085
- activeCell.updateComplete.then(() => {
10086
- activeCell.focusButton();
10087
- });
10364
+ const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
10365
+ if (btn) {
10366
+ btn.classList.add('activeCell');
10367
+ }
10368
+ }
10369
+ }
10370
+
10371
+ /**
10372
+ * Hides the activeCell ring when the grid loses focus.
10373
+ * @private
10374
+ * @returns {void}
10375
+ */
10376
+ handleGridFocusOut() {
10377
+ this._gridHasFocus = false;
10378
+ // Remove activeCell from ALL cells to prevent stale rings.
10379
+ const allCells = this.getAllFocusableCells();
10380
+ for (const cell of allCells) {
10381
+ const btn = cell._cachedButton || cell.shadowRoot.querySelector('button.day');
10382
+ if (btn) {
10383
+ btn.classList.remove('activeCell');
10384
+ }
10088
10385
  }
10386
+ // Clear range hover preview so no highlight lingers after focus leaves the grid.
10387
+ this.clearRangePreview();
10089
10388
  }
10090
10389
 
10091
10390
  /**
@@ -10099,7 +10398,7 @@ class AuroCalendar extends RangeDatepicker {
10099
10398
  * 5b. First enabled date scanning forward from finite min (unbounded max)
10100
10399
  * 5c. First enabled date scanning backward from finite max (unbounded min)
10101
10400
  * 6. First in-range date (even if blackout) so focus can land somewhere
10102
- * 7. undefined — no valid target
10401
+ * 7. Undefined — no valid target.
10103
10402
  *
10104
10403
  * @private
10105
10404
  * @param {Object} [options] - Optional settings.
@@ -10114,12 +10413,15 @@ class AuroCalendar extends RangeDatepicker {
10114
10413
  /**
10115
10414
  * Adds days to a timestamp using Date arithmetic to handle DST correctly.
10116
10415
  * Returns a local-midnight-aligned timestamp in seconds.
10416
+ * @param {Number} ts - Unix timestamp in seconds.
10417
+ * @param {Number} days - Number of days to add.
10418
+ * @returns {Number} The adjusted timestamp in seconds.
10117
10419
  */
10118
10420
  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);
10421
+ const date = new Date(ts * 1000);
10422
+ date.setDate(date.getDate() + days);
10423
+ date.setHours(0, 0, 0, 0);
10424
+ return Math.floor(date.getTime() / 1000);
10123
10425
  };
10124
10426
 
10125
10427
  const rawMin = Number(this.min);
@@ -10130,9 +10432,7 @@ class AuroCalendar extends RangeDatepicker {
10130
10432
  const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
10131
10433
 
10132
10434
  // Build a Set of blackout timestamps for O(1) lookup.
10133
- const blackoutSet = new Set(
10134
- (this.disabledDays || []).map(d => parseInt(d, 10))
10135
- );
10435
+ const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
10136
10436
 
10137
10437
  // Also include ISO-format blackoutDates from the datepicker if available.
10138
10438
  // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
@@ -10141,19 +10441,25 @@ class AuroCalendar extends RangeDatepicker {
10141
10441
  for (const isoStr of isoBlackouts) {
10142
10442
  const parts = isoStr.split('-');
10143
10443
  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);
10444
+ if (Number.isFinite(ts)) {
10445
+ blackoutSet.add(ts);
10446
+ }
10145
10447
  }
10146
10448
  }
10147
10449
 
10148
10450
  /**
10149
10451
  * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
10150
10452
  * it is within [min, max] AND not a blackout day.
10453
+ * @param {Number} ts - Unix timestamp in seconds.
10454
+ * @returns {boolean} True if the date is enabled.
10151
10455
  */
10152
10456
  const isEnabled = (ts) => ts >= minTs && ts <= maxTs && !blackoutSet.has(ts);
10153
10457
 
10154
10458
  /**
10155
10459
  * A date is "in range" (focusable in the grid) when it is within [min, max].
10156
10460
  * Blackout dates are focusable but not selectable.
10461
+ * @param {Number} ts - Unix timestamp in seconds.
10462
+ * @returns {boolean} True if the date is in range.
10157
10463
  */
10158
10464
  const isInRange = (ts) => ts >= minTs && ts <= maxTs;
10159
10465
 
@@ -10162,7 +10468,9 @@ class AuroCalendar extends RangeDatepicker {
10162
10468
  // the newly visible month rather than the (possibly off-screen) selection.
10163
10469
  if (!options.skipDateFrom && this.dateFrom) {
10164
10470
  const parsedFrom = parseInt(this.dateFrom, 10);
10165
- if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) return parsedFrom;
10471
+ if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) {
10472
+ return parsedFrom;
10473
+ }
10166
10474
  }
10167
10475
 
10168
10476
  // 2. Today's date (midnight-aligned) if enabled.
@@ -10189,32 +10497,35 @@ class AuroCalendar extends RangeDatepicker {
10189
10497
  const visibleEnd = new Date(centralYear, centralMonth + 1, 0); // last day of month
10190
10498
  visibleEnd.setHours(0, 0, 0, 0);
10191
10499
  const startTs = Math.floor(visibleStart.getTime() / 1000);
10192
- const endTs = Math.floor(visibleEnd.getTime() / 1000);
10193
10500
  const daysInMonth = visibleEnd.getDate();
10194
10501
 
10195
- for (let idx = 0; idx < daysInMonth; idx++) {
10502
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
10196
10503
  const ts = addDays(startTs, idx);
10197
- if (ts > endTs) break;
10198
- if (isEnabled(ts)) return ts;
10504
+ if (isEnabled(ts)) {
10505
+ return ts;
10506
+ }
10199
10507
  }
10200
10508
 
10201
10509
  // No enabled date in the visible month — fall back to first in-range
10202
10510
  // date in the month so focus still lands on a focusable cell.
10203
- for (let idx = 0; idx < daysInMonth; idx++) {
10511
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
10204
10512
  const ts = addDays(startTs, idx);
10205
- if (ts > endTs) break;
10206
- if (isInRange(ts)) return ts;
10513
+ if (isInRange(ts)) {
10514
+ return ts;
10515
+ }
10207
10516
  }
10208
10517
  }
10209
10518
  }
10210
10519
 
10211
- if (isEnabled(now)) return now;
10520
+ if (isEnabled(now)) {
10521
+ return now;
10522
+ }
10212
10523
 
10213
10524
  // When a centralDate is configured (or inferred), constrain the scan to the
10214
10525
  // rendered month(s) first so a single-month calendar does not pick a date
10215
10526
  // that has no DOM cell. Determine the visible range based on centralDate and
10216
10527
  // the number of rendered months.
10217
- const renderedMonths = this.numCalendars || 1;
10528
+ const renderedMonths = Math.max(this.numCalendars, 1);
10218
10529
  const visibleAnchor = centralDateValue && !isNaN(centralDateValue.getTime())
10219
10530
  ? centralDateValue
10220
10531
  : new Date(now * 1000);
@@ -10227,40 +10538,52 @@ class AuroCalendar extends RangeDatepicker {
10227
10538
  const visDays = Math.round((visEndTs - visStartTs) / 86400) + 1;
10228
10539
 
10229
10540
  // Scan visible months for an enabled date.
10230
- for (let idx = 0; idx < visDays; idx++) {
10541
+ for (let idx = 0; idx < visDays; idx += 1) {
10231
10542
  const ts = addDays(visStartTs, idx);
10232
- if (ts > visEndTs) break;
10233
- if (isEnabled(ts)) return ts;
10543
+ if (isEnabled(ts)) {
10544
+ return ts;
10545
+ }
10234
10546
  }
10235
10547
 
10236
10548
  // No enabled date in visible months — try an in-range (focusable) date so
10237
10549
  // keyboard focus still has a tabindex="0" target.
10238
- for (let idx = 0; idx < visDays; idx++) {
10550
+ for (let idx = 0; idx < visDays; idx += 1) {
10239
10551
  const ts = addDays(visStartTs, idx);
10240
- if (ts > visEndTs) break;
10241
- if (isInRange(ts)) return ts;
10552
+ if (isInRange(ts)) {
10553
+ return ts;
10554
+ }
10242
10555
  }
10243
10556
 
10244
10557
  // 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++) {
10558
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
10246
10559
  const ts = addDays(now, idx);
10247
- if (Number.isFinite(maxTs) && ts > maxTs) break;
10248
- if (isEnabled(ts)) return ts;
10560
+ if (Number.isFinite(maxTs) && ts > maxTs) {
10561
+ break;
10562
+ }
10563
+ if (isEnabled(ts)) {
10564
+ return ts;
10565
+ }
10249
10566
  }
10250
10567
 
10251
10568
  // 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++) {
10569
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
10253
10570
  const ts = addDays(now, -idx);
10254
- if (Number.isFinite(minTs) && ts < minTs) break;
10255
- if (isEnabled(ts)) return ts;
10571
+ if (Number.isFinite(minTs) && ts < minTs) {
10572
+ break;
10573
+ }
10574
+ if (isEnabled(ts)) {
10575
+ return ts;
10576
+ }
10256
10577
  }
10257
10578
 
10258
10579
  // 5. If scans missed (e.g. min/max range is far from today), fall back to
10259
10580
  // the first enabled date in the [min, max] range.
10260
10581
  if (Number.isFinite(minTs) && Number.isFinite(maxTs)) {
10261
10582
  let ts = minTs;
10262
- for (let idx = 0; ts <= maxTs; idx++) {
10263
- if (isEnabled(ts)) return ts;
10583
+ for (let idx = 0; ts <= maxTs; idx += 1) {
10584
+ if (isEnabled(ts)) {
10585
+ return ts;
10586
+ }
10264
10587
  ts = addDays(minTs, idx + 1);
10265
10588
  }
10266
10589
  }
@@ -10268,29 +10591,191 @@ class AuroCalendar extends RangeDatepicker {
10268
10591
  // 5b. Finite min with unbounded max (e.g. minDate far in the future):
10269
10592
  // scan forward from min for up to MAX_SCAN_DAYS.
10270
10593
  if (Number.isFinite(minTs) && !Number.isFinite(maxTs)) {
10271
- for (let idx = 0; idx <= MAX_SCAN_DAYS; idx++) {
10594
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
10272
10595
  const ts = addDays(minTs, idx);
10273
- if (isEnabled(ts)) return ts;
10596
+ if (isEnabled(ts)) {
10597
+ return ts;
10598
+ }
10274
10599
  }
10275
10600
  }
10276
10601
 
10277
10602
  // 5c. Unbounded min with a finite max far in the past (e.g. birth-date picker):
10278
10603
  // scan backward from max for up to MAX_SCAN_DAYS.
10279
10604
  if (!Number.isFinite(minTs) && Number.isFinite(maxTs)) {
10280
- for (let idx = 0; idx <= MAX_SCAN_DAYS; idx++) {
10605
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
10281
10606
  const ts = addDays(maxTs, -idx);
10282
- if (isEnabled(ts)) return ts;
10607
+ if (isEnabled(ts)) {
10608
+ return ts;
10609
+ }
10283
10610
  }
10284
10611
  }
10285
10612
 
10286
10613
  // 6. All dates are blackout — fall back to the first in-range date so focus
10287
10614
  // still lands on a focusable (but not selectable) cell.
10288
- if (Number.isFinite(minTs) && isInRange(minTs)) return minTs;
10289
- if (isInRange(now)) return now;
10615
+ if (Number.isFinite(minTs) && isInRange(minTs)) {
10616
+ return minTs;
10617
+ }
10618
+ if (isInRange(now)) {
10619
+ return now;
10620
+ }
10290
10621
 
10291
10622
  return undefined;
10292
10623
  }
10293
10624
 
10625
+ /**
10626
+ * Checks if a target date (unix seconds) is within the configured [min, max] range.
10627
+ * Returns false if the date falls outside the range, preventing navigation
10628
+ * to months where all dates are disabled.
10629
+ * @private
10630
+ * @param {Number} targetTs - Unix timestamp in seconds.
10631
+ * @returns {Boolean} True if the date is within range.
10632
+ */
10633
+ isDateInRange(targetTs) {
10634
+ const rawMin = Number(this.min);
10635
+ const rawMax = Number(this.max);
10636
+ if (Number.isFinite(rawMin) && targetTs < rawMin) {
10637
+ return false;
10638
+ }
10639
+ if (Number.isFinite(rawMax) && targetTs > rawMax) {
10640
+ return false;
10641
+ }
10642
+ return true;
10643
+ }
10644
+
10645
+ /**
10646
+ * Handles arrow key navigation on the calendar grid wrapper.
10647
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
10648
+ * and the visual active-cell indicator change.
10649
+ * @private
10650
+ * @param {KeyboardEvent} event - The keyboard event.
10651
+ * @returns {void}
10652
+ */
10653
+ handleGridKeyDown(event) {
10654
+ const { key } = event;
10655
+ const actionKeys = [
10656
+ 'ArrowRight',
10657
+ 'ArrowLeft',
10658
+ 'ArrowDown',
10659
+ 'ArrowUp',
10660
+ 'Enter',
10661
+ ' '
10662
+ ];
10663
+
10664
+ if (!actionKeys.includes(key)) {
10665
+ return;
10666
+ }
10667
+
10668
+ event.preventDefault();
10669
+
10670
+ const allCells = this.getAllFocusableCells();
10671
+ if (allCells.length === 0) {
10672
+ return;
10673
+ }
10674
+
10675
+ const activeCell = allCells.find((cell) => cell.active);
10676
+ if (!activeCell) {
10677
+ return;
10678
+ }
10679
+
10680
+ // Handle Enter/Space to select the active cell
10681
+ if (key === 'Enter' || key === ' ') {
10682
+ activeCell.handleTap();
10683
+ return;
10684
+ }
10685
+
10686
+ const activeIndex = allCells.indexOf(activeCell);
10687
+
10688
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
10689
+ const direction = key === 'ArrowRight' ? 1 : -1;
10690
+ const targetIndex = activeIndex + direction;
10691
+
10692
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
10693
+ // Target cell exists in rendered months
10694
+ this.setActiveCell(allCells[targetIndex].day.date);
10695
+ this.scrollToActiveCell();
10696
+ // Dispatch focus event for the cell so live region + range preview update
10697
+ this.handleCellFocused({ detail: { date: allCells[targetIndex].day.date } });
10698
+ } else {
10699
+ // At boundary — need to navigate to next/prev month
10700
+ const navDir = direction === 1 ? 'next' : 'prev';
10701
+ const targetDate = new Date(activeCell.day.date * 1000);
10702
+ targetDate.setDate(targetDate.getDate() + direction);
10703
+ targetDate.setHours(0, 0, 0, 0);
10704
+ const targetTs = Math.floor(targetDate.getTime() / 1000);
10705
+
10706
+ if (this.isDateInRange(targetTs) && ((navDir === 'next' && this.showNextMonthBtn) || (navDir === 'prev' && this.showPrevMonthBtn))) { // eslint-disable-line no-extra-parens
10707
+
10708
+ if (navDir === 'next') {
10709
+ this.handleNextMonth({ skipActiveUpdate: true });
10710
+ } else {
10711
+ this.handlePrevMonth({ skipActiveUpdate: true });
10712
+ }
10713
+ requestAnimationFrame(() => {
10714
+ requestAnimationFrame(() => {
10715
+ const cells = this.getAllFocusableCells();
10716
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
10717
+ if (target) {
10718
+ this.setActiveCell(target.day.date);
10719
+ this.handleCellFocused({ detail: { date: target.day.date } });
10720
+ } else if (cells.length > 0) {
10721
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
10722
+ this.setActiveCell(fallback.day.date);
10723
+ this.handleCellFocused({ detail: { date: fallback.day.date } });
10724
+ }
10725
+ // Re-focus grid wrapper after month change re-render
10726
+ this.focusActiveCell();
10727
+ });
10728
+ });
10729
+ }
10730
+ }
10731
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
10732
+ const increment = key === 'ArrowDown' ? 7 : -7;
10733
+ const currentDate = new Date(activeCell.day.date * 1000);
10734
+ currentDate.setDate(currentDate.getDate() + increment);
10735
+ currentDate.setHours(0, 0, 0, 0);
10736
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
10737
+
10738
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
10739
+
10740
+ if (targetCell) {
10741
+ this.setActiveCell(targetCell.day.date);
10742
+ this.scrollToActiveCell();
10743
+ this.handleCellFocused({ detail: { date: targetCell.day.date } });
10744
+ } else if (this.isDateInRange(targetDate)) {
10745
+ // Target might be in an unrendered month
10746
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
10747
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
10748
+ if (navDirection === 'next') {
10749
+ this.handleNextMonth({ skipActiveUpdate: true });
10750
+ } else {
10751
+ this.handlePrevMonth({ skipActiveUpdate: true });
10752
+ }
10753
+ requestAnimationFrame(() => {
10754
+ requestAnimationFrame(() => {
10755
+ const cells = this.getAllFocusableCells();
10756
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
10757
+ if (target) {
10758
+ this.setActiveCell(target.day.date);
10759
+ this.handleCellFocused({ detail: { date: target.day.date } });
10760
+ } else if (cells.length > 0) {
10761
+ let nearest = null;
10762
+
10763
+ if (navDirection === 'next') {
10764
+ [nearest] = cells;
10765
+ } else {
10766
+ nearest = cells[cells.length - 1];
10767
+ }
10768
+ this.setActiveCell(nearest.day.date);
10769
+ this.handleCellFocused({ detail: { date: nearest.day.date } });
10770
+ }
10771
+ this.focusActiveCell();
10772
+ });
10773
+ });
10774
+ }
10775
+ }
10776
+ }
10777
+ }
10778
+
10294
10779
  /**
10295
10780
  * Handles cross-month boundary navigation events from month components.
10296
10781
  * @private
@@ -10303,15 +10788,15 @@ class AuroCalendar extends RangeDatepicker {
10303
10788
  if (key === 'ArrowRight' || key === 'ArrowLeft') {
10304
10789
  // Linear navigation: find adjacent focusable cell across months
10305
10790
  const allCells = this.getAllFocusableCells();
10306
- const currentIndex = allCells.findIndex(cell => cell.day && cell.day.date === fromDate);
10791
+ const currentIndex = allCells.findIndex((cell) => cell.day && cell.day.date === fromDate);
10307
10792
 
10308
- if (currentIndex === -1) return;
10793
+ if (currentIndex === -1) {
10794
+ return;
10795
+ }
10309
10796
 
10310
- let targetIndex;
10797
+ let targetIndex = -1;
10311
10798
  if (direction === 'next') {
10312
10799
  targetIndex = currentIndex + 1;
10313
- } else {
10314
- targetIndex = currentIndex - 1;
10315
10800
  }
10316
10801
 
10317
10802
  if (targetIndex >= 0 && targetIndex < allCells.length) {
@@ -10329,11 +10814,15 @@ class AuroCalendar extends RangeDatepicker {
10329
10814
  nextDate.setHours(0, 0, 0, 0);
10330
10815
  const nextTs = Math.floor(nextDate.getTime() / 1000);
10331
10816
 
10332
- this.handleNextMonth();
10817
+ if (!this.isDateInRange(nextTs)) {
10818
+ return;
10819
+ }
10820
+
10821
+ this.handleNextMonth({ skipActiveUpdate: true });
10333
10822
  requestAnimationFrame(() => {
10334
10823
  requestAnimationFrame(() => {
10335
10824
  const cells = this.getAllFocusableCells();
10336
- const target = cells.find(cell => cell.day && cell.day.date === nextTs);
10825
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
10337
10826
  if (target) {
10338
10827
  this.setActiveCell(target.day.date);
10339
10828
  this.focusActiveCell();
@@ -10351,11 +10840,15 @@ class AuroCalendar extends RangeDatepicker {
10351
10840
  prevDate.setHours(0, 0, 0, 0);
10352
10841
  const prevTs = Math.floor(prevDate.getTime() / 1000);
10353
10842
 
10354
- this.handlePrevMonth();
10843
+ if (!this.isDateInRange(prevTs)) {
10844
+ return;
10845
+ }
10846
+
10847
+ this.handlePrevMonth({ skipActiveUpdate: true });
10355
10848
  requestAnimationFrame(() => {
10356
10849
  requestAnimationFrame(() => {
10357
10850
  const cells = this.getAllFocusableCells();
10358
- const target = cells.find(cell => cell.day && cell.day.date === prevTs);
10851
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
10359
10852
  if (target) {
10360
10853
  this.setActiveCell(target.day.date);
10361
10854
  this.focusActiveCell();
@@ -10377,25 +10870,25 @@ class AuroCalendar extends RangeDatepicker {
10377
10870
  const targetDate = Math.floor(currentDate.getTime() / 1000);
10378
10871
 
10379
10872
  const allCells = this.getAllFocusableCells();
10380
- let targetCell = allCells.find(cell => cell.day && cell.day.date === targetDate);
10873
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
10381
10874
 
10382
10875
  if (targetCell) {
10383
10876
  this.setActiveCell(targetCell.day.date);
10384
10877
  this.scrollToActiveCell();
10385
10878
  this.focusActiveCell();
10386
- } else {
10879
+ } else if (this.isDateInRange(targetDate)) {
10387
10880
  // Target might be in an unrendered month, navigate there
10388
10881
  const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
10389
- if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) {
10882
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
10390
10883
  if (navDirection === 'next') {
10391
- this.handleNextMonth();
10884
+ this.handleNextMonth({ skipActiveUpdate: true });
10392
10885
  } else {
10393
- this.handlePrevMonth();
10886
+ this.handlePrevMonth({ skipActiveUpdate: true });
10394
10887
  }
10395
10888
  requestAnimationFrame(() => {
10396
10889
  requestAnimationFrame(() => {
10397
10890
  const cells = this.getAllFocusableCells();
10398
- const target = cells.find(cell => cell.day && cell.day.date === targetDate);
10891
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
10399
10892
  if (target) {
10400
10893
  this.setActiveCell(target.day.date);
10401
10894
  this.focusActiveCell();
@@ -10421,7 +10914,195 @@ class AuroCalendar extends RangeDatepicker {
10421
10914
  handleCellActivate(event) {
10422
10915
  const { date } = event.detail;
10423
10916
  this.setActiveCell(date);
10424
- this.focusActiveCell();
10917
+
10918
+ // Don't call focusActiveCell() here. The tap/click already placed
10919
+ // focus on the cell button, and moving it to #calendarGrid would
10920
+ // trigger focusout on the button, closing any open popover on the
10921
+ // cell. Keyboard events are composed and still bubble through
10922
+ // shadow DOM boundaries to the grid's @keydown handler, so
10923
+ // subsequent keyboard navigation continues to work.
10924
+ }
10925
+
10926
+ /**
10927
+ * Handles focus events from calendar cells.
10928
+ * Updates the live region with an SR announcement and triggers
10929
+ * the imperative range preview if applicable.
10930
+ * @private
10931
+ * @param {CustomEvent} event - The calendar-cell-focused event.
10932
+ * @returns {void}
10933
+ */
10934
+ handleCellFocused(event) {
10935
+ const { date } = event.detail;
10936
+ if (date === null) {
10937
+ return;
10938
+ }
10939
+
10940
+ // With aria-activedescendant, the button no longer receives native focus,
10941
+ // so we use the debounced live region for the full context announcement.
10942
+ const announcement = this.buildFocusAnnouncement(date);
10943
+ this.announceFocusDebounced(announcement);
10944
+
10945
+ // Update the range preview imperatively if in range-preview mode.
10946
+ this.updateRangePreview(date);
10947
+ }
10948
+
10949
+ /**
10950
+ * Builds a full SR announcement string for a focused cell date.
10951
+ * Includes the localized date, range position, popover content,
10952
+ * and blackout status.
10953
+ * @private
10954
+ * @param {Number} date - Unix timestamp (seconds) of the focused cell.
10955
+ * @returns {String} The announcement string.
10956
+ */
10957
+ buildFocusAnnouncement(date) {
10958
+ let label = this.formatAnnouncementDate(date);
10959
+
10960
+ // Append date slot content (e.g. prices) if present.
10961
+ const dateObj = new Date(date * 1000);
10962
+ const mm = String(dateObj.getMonth() + 1).padStart(2, '0');
10963
+ const dd = String(dateObj.getDate()).padStart(2, '0');
10964
+ const yyyy = dateObj.getFullYear();
10965
+ const dateStr = `${mm}_${dd}_${yyyy}`;
10966
+ const dateSlotEl = this.datepicker?.querySelector(`[slot="date_${dateStr}"]`);
10967
+ if (dateSlotEl) {
10968
+ const text = dateSlotEl.innerText?.trim();
10969
+ if (text) {
10970
+ label += `, ${text}`;
10971
+ }
10972
+ }
10973
+
10974
+ // Append popover content if present.
10975
+ const popoverEl = this.datepicker?.querySelector(`[slot="popover_${dateStr}"]`);
10976
+ if (popoverEl) {
10977
+ const text = popoverEl.innerText?.trim();
10978
+ if (text) {
10979
+ label += `, ${text}`;
10980
+ }
10981
+ }
10982
+
10983
+ // Append range position context.
10984
+ if (this.datepicker?.hasAttribute('range')) {
10985
+ const rangeLabel = this.getRangePositionLabel(date);
10986
+ if (rangeLabel) {
10987
+ label += `, ${rangeLabel}`;
10988
+ }
10989
+ }
10990
+
10991
+ // Append blackout label.
10992
+ if (this.isDateBlackout(date)) {
10993
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
10994
+ }
10995
+
10996
+ return label;
10997
+ }
10998
+
10999
+ /**
11000
+ * Determines the range position label for a given date.
11001
+ * @private
11002
+ * @param {Number} date - Unix timestamp (seconds).
11003
+ * @returns {String|null} The range position label, or null.
11004
+ */
11005
+ getRangePositionLabel(date) {
11006
+ const parsedFrom = Number.parseInt(this.dateFrom, 10);
11007
+ if (!Number.isFinite(parsedFrom)) {
11008
+ return null;
11009
+ }
11010
+
11011
+ const departTs = startOfDay(parsedFrom * 1000) / 1000;
11012
+ const parsedTo = Number.parseInt(this.dateTo, 10);
11013
+ const hasTo = Number.isFinite(parsedTo);
11014
+ const returnTs = hasTo ? startOfDay(parsedTo * 1000) / 1000 : null;
11015
+
11016
+ if (date === departTs) {
11017
+ return this.datepicker.rangeLabelStart || 'range start';
11018
+ }
11019
+ if (hasTo && date === returnTs) {
11020
+ return this.datepicker.rangeLabelEnd || 'range end';
11021
+ }
11022
+ if (date < departTs) {
11023
+ return this.datepicker.rangeLabelBeforeRange || 'before range';
11024
+ }
11025
+ if (hasTo && date > departTs && date < returnTs) {
11026
+ return this.datepicker.rangeLabelInRange || 'in range';
11027
+ }
11028
+ return this.datepicker.rangeLabelAfterRange || 'after range';
11029
+ }
11030
+
11031
+ /**
11032
+ * Checks whether a given date is a blackout date.
11033
+ * @private
11034
+ * @param {Number} dateTs - Unix timestamp (seconds).
11035
+ * @returns {Boolean} True if the date is blacked out.
11036
+ */
11037
+ isDateBlackout(dateTs) {
11038
+ // Check legacy disabledDays.
11039
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
11040
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
11041
+ return true;
11042
+ }
11043
+ }
11044
+
11045
+ // Check ISO blackoutDates.
11046
+ const blackoutDates = this.datepicker?.blackoutDates;
11047
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
11048
+ const date = new Date(dateTs * 1000);
11049
+ const yyyy = date.getFullYear();
11050
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
11051
+ const dd = String(date.getDate()).padStart(2, '0');
11052
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
11053
+ return true;
11054
+ }
11055
+ }
11056
+
11057
+ return false;
11058
+ }
11059
+
11060
+ /**
11061
+ * Updates the range preview classes imperatively across all cells.
11062
+ * Only active when in range mode with dateFrom set and dateTo not yet set.
11063
+ * @private
11064
+ * @param {Number} hoveredDate - Unix timestamp of the hovered/focused date.
11065
+ * @returns {void}
11066
+ */
11067
+ updateRangePreview(hoveredDate) {
11068
+ if (this.noRange || !this.dateFrom || this.dateTo) {
11069
+ return;
11070
+ }
11071
+
11072
+ const parsedDateFrom = parseInt(this.dateFrom, 10);
11073
+ const allCells = this.getAllFocusableCells();
11074
+
11075
+ allCells.forEach((cell) => {
11076
+ cell.updateRangePreviewClasses(hoveredDate, parsedDateFrom);
11077
+ });
11078
+ }
11079
+
11080
+ /**
11081
+ * Clears range preview classes from all cells.
11082
+ * @private
11083
+ * @returns {void}
11084
+ */
11085
+ clearRangePreview() {
11086
+ if (this.dateFrom && this.dateTo) {
11087
+ return;
11088
+ }
11089
+
11090
+ const allCells = this.getAllFocusableCells();
11091
+ allCells.forEach((cell) => {
11092
+ cell.clearRangePreviewClasses();
11093
+ });
11094
+ }
11095
+
11096
+ /**
11097
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
11098
+ * as a reactive property. Instead, handles the range preview imperatively.
11099
+ * @private
11100
+ * @param {CustomEvent} event - The hovered-date-changed event from a month.
11101
+ * @returns {void}
11102
+ */
11103
+ hoveredDateChanged(event) {
11104
+ const hoveredDate = event.detail.value;
11105
+ this.updateRangePreview(hoveredDate);
10425
11106
  }
10426
11107
 
10427
11108
  /**
@@ -10430,7 +11111,9 @@ class AuroCalendar extends RangeDatepicker {
10430
11111
  * @returns {void}
10431
11112
  */
10432
11113
  scrollToActiveCell() {
10433
- if (this.activeCellDate == null) return;
11114
+ if (this.activeCellDate === null || this.activeCellDate === undefined) {
11115
+ return;
11116
+ }
10434
11117
 
10435
11118
  const date = new Date(this.activeCellDate * 1000);
10436
11119
  const month = date.getMonth() + 1;
@@ -10440,25 +11123,138 @@ class AuroCalendar extends RangeDatepicker {
10440
11123
 
10441
11124
  if (monthElem) {
10442
11125
  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
10443
- monthElem.scrollIntoView({ block: 'nearest', behavior: prefersReducedMotion ? 'instant' : 'smooth' });
11126
+ monthElem.scrollIntoView({ block: 'nearest',
11127
+ behavior: prefersReducedMotion ? 'instant' : 'smooth' });
11128
+ }
11129
+ }
11130
+
11131
+ /**
11132
+ * Returns (and lazily creates) an aria-live region inside the dropdown's
11133
+ * <dialog> element. This placement is critical for two reasons:
11134
+ *
11135
+ * 1. Inside the dialog's accessible scope — dialog.showModal() makes
11136
+ * everything outside the top-layer dialog inert, and desktop modal
11137
+ * mode uses _setPageInert() on document.body siblings. A live region
11138
+ * on document.body would be invisible to screen readers in both cases.
11139
+ *
11140
+ * 2. Not nested in shadow DOM — Chrome inconsistently observes aria-live
11141
+ * mutations inside shadow DOM across machines and versions. The dialog
11142
+ * element is only one shadow root deep (the dropdown bib's shadow DOM),
11143
+ * which Chrome handles reliably. The calendar's own shadow DOM (nested
11144
+ * inside the bib via slotting) is two+ levels deep and unreliable.
11145
+ *
11146
+ * @private
11147
+ * @returns {HTMLElement} The live region element.
11148
+ */
11149
+ getOrCreateLiveRegion() {
11150
+ if (this._liveRegion && this._liveRegion.isConnected) {
11151
+ return this._liveRegion;
11152
+ }
11153
+
11154
+ // Access the dialog element inside the dropdown bib's shadow DOM.
11155
+ const dialog = this.dropdown?.bibContent?.shadowRoot?.querySelector('dialog');
11156
+ if (!dialog) {
11157
+ return null;
11158
+ }
11159
+
11160
+ // Check if we already created one for this calendar instance.
11161
+ const regionId = `auro-calendar-live-${this._calendarInstanceId}`;
11162
+ const existing = dialog.querySelector(`#${regionId}`);
11163
+ if (existing) {
11164
+ this._liveRegion = existing;
11165
+ return existing;
11166
+ }
11167
+
11168
+ const el = document.createElement('div');
11169
+ el.id = regionId;
11170
+ el.setAttribute('aria-live', 'assertive');
11171
+ el.setAttribute('aria-atomic', 'true');
11172
+ 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;';
11173
+ dialog.appendChild(el);
11174
+
11175
+ this._liveRegion = el;
11176
+ return el;
11177
+ }
11178
+
11179
+ /**
11180
+ * Removes the live region when this calendar is disconnected.
11181
+ * @private
11182
+ * @returns {void}
11183
+ */
11184
+ disconnectedCallback() {
11185
+ super.disconnectedCallback();
11186
+
11187
+ // Cancel any pending announcements so they don't fire after teardown.
11188
+ if (this._announceRafId) {
11189
+ cancelAnimationFrame(this._announceRafId);
11190
+ this._announceRafId = null;
11191
+ }
11192
+ if (this._focusAnnounceTimer) {
11193
+ clearTimeout(this._focusAnnounceTimer);
11194
+ this._focusAnnounceTimer = null;
10444
11195
  }
11196
+
11197
+ if (this._liveRegion && this._liveRegion.isConnected) {
11198
+ this._liveRegion.remove();
11199
+ }
11200
+ this._liveRegion = null;
10445
11201
  }
10446
11202
 
10447
11203
  /**
10448
- * Announces a date selection via the live region.
11204
+ * Announces a date selection or focus change via the live region.
11205
+ * Uses requestAnimationFrame to ensure the clear and set happen in
11206
+ * separate rendering frames — Chrome may coalesce synchronous or
11207
+ * microtask-deferred mutations into a single accessibility tree update.
10449
11208
  * @private
10450
11209
  * @param {String} dateStr - The localized date string to announce.
10451
11210
  * @returns {void}
10452
11211
  */
10453
11212
  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(() => {
11213
+ // Cancel any previously queued rAF announcement so a rapid
11214
+ // sequence of calls (e.g. bib open → month nav) only announces
11215
+ // the last one.
11216
+ if (this._announceRafId) {
11217
+ cancelAnimationFrame(this._announceRafId);
11218
+ }
11219
+ const liveRegion = this.getOrCreateLiveRegion();
11220
+ if (!liveRegion) {
11221
+ return;
11222
+ }
11223
+
11224
+ // Double-rAF: clear in frame N, set in frame N+1. Chrome batches
11225
+ // accessibility tree mutations within a single animation frame, so
11226
+ // a same-frame clear+set can be coalesced into a no-op if the new
11227
+ // value matches a recently announced string. Splitting across two
11228
+ // frames guarantees Chrome sees two distinct tree states and fires
11229
+ // a new accessibility event for the content change.
11230
+ liveRegion.textContent = '';
11231
+ this._announceRafId = requestAnimationFrame(() => {
11232
+ this._announceRafId = requestAnimationFrame(() => {
10459
11233
  liveRegion.textContent = dateStr;
11234
+ this._announceRafId = null;
10460
11235
  });
11236
+ });
11237
+ }
11238
+
11239
+ /**
11240
+ * Debounced version of announceSelection for focus navigation.
11241
+ * Uses the assertive live region with a 150ms debounce so only the
11242
+ * final cell after rapid arrow-key traversal is announced. We
11243
+ * originally tried aria-live="polite" here, but VoiceOver treats
11244
+ * polite as "wait until idle" — which never happens during active
11245
+ * keyboard navigation — so the announcements were silently dropped.
11246
+ * @private
11247
+ * @param {String} dateStr - The localized date string to announce.
11248
+ * @returns {void}
11249
+ */
11250
+ announceFocusDebounced(dateStr) {
11251
+ if (this._focusAnnounceTimer) {
11252
+ clearTimeout(this._focusAnnounceTimer);
10461
11253
  }
11254
+ this._focusAnnounceTimer = setTimeout(() => {
11255
+ this.announceSelection(dateStr);
11256
+ this._focusAnnounceTimer = null;
11257
+ }, 150);
10462
11258
  }
10463
11259
 
10464
11260
  /**
@@ -10471,12 +11267,16 @@ class AuroCalendar extends RangeDatepicker {
10471
11267
  const date = new Date(parseInt(timestamp, 10) * 1000);
10472
11268
  const localeCode = this.locale?.code || undefined;
10473
11269
  const formatter = new Intl.DateTimeFormat(localeCode, {
10474
- weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'
11270
+ weekday: 'long',
11271
+ year: 'numeric',
11272
+ month: 'long',
11273
+ day: 'numeric'
10475
11274
  });
10476
11275
  return formatter.format(date);
10477
11276
  }
10478
11277
 
10479
11278
  firstUpdated() {
11279
+
10480
11280
  this.addEventListener('date-from-changed', () => {
10481
11281
  this.dispatchEvent(new CustomEvent('auroCalendar-dateSelected', {
10482
11282
  bubbles: true,
@@ -10505,6 +11305,11 @@ class AuroCalendar extends RangeDatepicker {
10505
11305
  this.addEventListener('calendar-cell-activate', (event) => {
10506
11306
  this.handleCellActivate(event);
10507
11307
  });
11308
+
11309
+ // Listen for cell focus events (SR announcements + range preview)
11310
+ this.addEventListener('calendar-cell-focused', (event) => {
11311
+ this.handleCellFocused(event);
11312
+ });
10508
11313
  }
10509
11314
 
10510
11315
  injectSlot(slotName, nodes) {
@@ -10531,7 +11336,7 @@ class AuroCalendar extends RangeDatepicker {
10531
11336
  if (changedProperties.has('visible')) {
10532
11337
  if (this.visible) {
10533
11338
  // Compute the active date eagerly from data — no DOM needed.
10534
- if (this.activeCellDate == null) {
11339
+ if (this.activeCellDate == null) { // eslint-disable-line no-eq-null, eqeqeq
10535
11340
  this.activeCellDate = this.computeActiveDate();
10536
11341
  }
10537
11342
 
@@ -10599,7 +11404,7 @@ class AuroCalendar extends RangeDatepicker {
10599
11404
  </button>
10600
11405
  ` : undefined}
10601
11406
  </div>
10602
- <div class="calendars">
11407
+ <div id="calendarGrid" class="calendars" role="group" tabindex="0" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}" @calendar-month-mouseleave="${this.clearRangePreview}">
10603
11408
  ${this.renderAllCalendars()}
10604
11409
  </div>
10605
11410
  </div>
@@ -14484,7 +15289,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
14484
15289
  }
14485
15290
  };
14486
15291
 
14487
- var formkitVersion$1 = '202606011856';
15292
+ var formkitVersion$1 = '202606030033';
14488
15293
 
14489
15294
  let AuroElement$2 = class AuroElement extends LitElement {
14490
15295
  static get properties() {
@@ -15477,13 +16282,20 @@ class AuroDropdown extends AuroElement$2 {
15477
16282
 
15478
16283
  // Walk up the ancestor chain, inerting siblings at each level
15479
16284
  // to ensure the entire page outside the host subtree is inert.
16285
+ // Uses a reference counter (data-auro-inert-count) so multiple
16286
+ // simultaneous modal dropdowns share inert state safely.
15480
16287
  let current = host;
15481
16288
  while (current.parentElement) {
15482
16289
  const parent = current.parentElement;
15483
16290
  for (const sibling of parent.children) {
15484
16291
  if (sibling !== current) {
15485
- this._inertSiblings.push({ element: sibling, wasInert: sibling.inert });
16292
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
16293
+ if (count === 0) {
16294
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
16295
+ }
16296
+ sibling.dataset.auroInertCount = String(count + 1);
15486
16297
  sibling.inert = true;
16298
+ this._inertSiblings.push(sibling);
15487
16299
  }
15488
16300
  }
15489
16301
  current = parent;
@@ -15492,14 +16304,23 @@ class AuroDropdown extends AuroElement$2 {
15492
16304
 
15493
16305
  /**
15494
16306
  * Restores `inert` state on siblings that were tracked by `_setPageInert`.
15495
- * Preserves the previous inert state so externally-inerted elements are
15496
- * not inadvertently re-enabled.
16307
+ * Uses reference counting so inert is only cleared when the last modal
16308
+ * dropdown releases a given element. Preserves the original inert state
16309
+ * so externally-inerted elements are not inadvertently re-enabled.
15497
16310
  * @private
15498
16311
  */
15499
16312
  _clearPageInert() {
15500
16313
  if (this._inertSiblings) {
15501
- for (const entry of this._inertSiblings) {
15502
- entry.element.inert = entry.wasInert;
16314
+ for (const sibling of this._inertSiblings) {
16315
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
16316
+ if (count <= 0) {
16317
+ const wasInert = sibling.dataset.auroInertWas === 'true';
16318
+ delete sibling.dataset.auroInertCount;
16319
+ delete sibling.dataset.auroInertWas;
16320
+ sibling.inert = wasInert;
16321
+ } else {
16322
+ sibling.dataset.auroInertCount = String(count);
16323
+ }
15503
16324
  }
15504
16325
  this._inertSiblings = undefined;
15505
16326
  }
@@ -19817,109 +20638,236 @@ class AuroInputUtilities {
19817
20638
  }
19818
20639
  }
19819
20640
 
19820
- class DateFormatter {
20641
+ /**
20642
+ * @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.
20643
+ * @param {string} dateStr - Date string to parse.
20644
+ * @param {string} format - Date format to parse.
20645
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
20646
+ */
20647
+ function getDateParts(dateStr, format) {
20648
+ if (!dateStr) {
20649
+ return undefined;
20650
+ }
20651
+
20652
+ const formatSeparatorMatch = format.match(/[/.-]/);
20653
+ let valueParts;
20654
+ let formatParts;
19821
20655
 
19822
- constructor() {
20656
+ if (formatSeparatorMatch) {
20657
+ const separator = formatSeparatorMatch[0];
20658
+ valueParts = dateStr.split(separator);
20659
+ formatParts = format.split(separator);
20660
+ } else {
20661
+ if (dateStr.match(/[/.-]/)) {
20662
+ throw new Error(
20663
+ "AuroDatepickerUtilities | parseDate: Date string has no separators",
20664
+ );
20665
+ }
19823
20666
 
19824
- /**
19825
- * @description Parses a date string into its components.
19826
- * @param {string} dateStr - Date string to parse.
19827
- * @param {string} format - Date format to parse.
19828
- * @returns {Object<key["month" | "day" | "year"]: number>|undefined}
19829
- */
19830
- this.parseDate = (dateStr, format = 'mm/dd/yyyy') => {
20667
+ if (dateStr.length !== format.length) {
20668
+ throw new Error(
20669
+ "AuroDatepickerUtilities | parseDate: Date string and format length do not match",
20670
+ );
20671
+ }
19831
20672
 
19832
- // Guard Clause: Date string is defined
19833
- if (!dateStr) {
19834
- return undefined;
19835
- }
20673
+ valueParts = [dateStr];
20674
+ formatParts = [format];
20675
+ }
19836
20676
 
19837
- // Assume the separator is a "/" a defined in our code base
19838
- const separator = '/';
20677
+ if (valueParts.length !== formatParts.length) {
20678
+ throw new Error(
20679
+ `AuroDatepickerUtilities | parseDate: Date string and format do not match : ${dateStr} vs ${format}`,
20680
+ );
20681
+ }
19839
20682
 
19840
- // Get the parts of the date and format
19841
- const valueParts = dateStr.split(separator);
19842
- const formatParts = format.split(separator);
20683
+ const result = formatParts.reduce((acc, part, index) => {
20684
+ const value = valueParts[index];
19843
20685
 
19844
- // Check if the value and format have the correct number of parts
19845
- if (valueParts.length !== formatParts.length) {
19846
- throw new Error('AuroDatepickerUtilities | parseDate: Date string and format length do not match');
19847
- }
20686
+ if (/m/iu.test(part) && part.length === value.length) {
20687
+ acc.month = value;
20688
+ } else if (/d/iu.test(part) && part.length === value.length) {
20689
+ acc.day = value;
20690
+ } else if (/y/iu.test(part) && part.length === value.length) {
20691
+ acc.year = value;
20692
+ }
19848
20693
 
19849
- // Holds the result to be returned
19850
- const result = formatParts.reduce((acc, part, index) => {
19851
- const value = valueParts[index];
20694
+ return acc;
20695
+ }, {});
19852
20696
 
19853
- if ((/m/iu).test(part)) {
19854
- acc.month = value;
19855
- } else if ((/d/iu).test(part)) {
19856
- acc.day = value;
19857
- } else if ((/y/iu).test(part)) {
19858
- acc.year = value;
19859
- }
20697
+ if (!result.month && !result.day && !result.year) {
20698
+ throw new Error(
20699
+ "AuroDatepickerUtilities | parseDate: Unable to parse date string",
20700
+ );
20701
+ }
19860
20702
 
19861
- return acc;
19862
- }, {});
20703
+ return result;
20704
+ }
19863
20705
 
19864
- // If we found all the parts, return the result
19865
- if (result.month && result.year) {
19866
- return result;
19867
- }
20706
+ function isCalendarDate(year, month, day) {
20707
+ let yearNumber = Number(year);
20708
+ const monthNumber = Number(month);
20709
+ const dayNumber = Number(day);
19868
20710
 
19869
- // Throw an error to let the dev know we were unable to parse the date string
19870
- throw new Error('AuroDatepickerUtilities | parseDate: Unable to parse date string');
19871
- };
20711
+ if (
20712
+ !Number.isInteger(yearNumber) ||
20713
+ !Number.isInteger(monthNumber) ||
20714
+ !Number.isInteger(dayNumber)
20715
+ ) {
20716
+ return false;
20717
+ }
19872
20718
 
19873
- /**
19874
- * Convert a date object to string format.
19875
- * @param {Object} date - Date to convert to string.
19876
- * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
19877
- * @returns {String} Returns the date as a string.
19878
- */
19879
- this.getDateAsString = (date, locale = undefined) => date.toLocaleDateString(locale, {
19880
- year: "numeric",
19881
- month: "2-digit",
19882
- day: "2-digit",
19883
- });
20719
+ // 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.
20720
+ if (yearNumber < 100 && yearNumber >= 50) {
20721
+ yearNumber += 1900;
20722
+ } else if (yearNumber < 50) {
20723
+ yearNumber += 2000;
20724
+ }
19884
20725
 
19885
- /**
19886
- * Converts a date string to a North American date format.
19887
- * @param {String} dateStr - Date to validate.
19888
- * @param {String} format - Date format to validate against.
19889
- * @returns {Boolean}
19890
- */
19891
- this.toNorthAmericanFormat = (dateStr, format) => {
20726
+ const stringified = `${String(yearNumber).padStart(4, "0")}-${String(monthNumber).padStart(2, "0")}-${String(dayNumber).padStart(2, "0")}`;
20727
+ const date = new Date(stringified.replace(/[.-]/g, "/"));
20728
+
20729
+ return (
20730
+ !Number.isNaN(date.getTime()) && toISOFormatString(date) === stringified
20731
+ );
20732
+ }
20733
+
20734
+ /**
20735
+ * @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).
20736
+ *
20737
+ * Partial formats are supported: components absent from `format` default to `year → "0"`,
20738
+ * `month → "01"`, `day → "01"` for calendar validation only. The returned object contains
20739
+ * only the fields actually present in the format string — missing fields are never injected.
20740
+ * @param {string} dateStr - Date string to parse.
20741
+ * @param {string} format - Date format to parse.
20742
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
20743
+ * @throws {Error} Throws when the parsed result does not represent a valid calendar date.
20744
+ */
20745
+ function parseDate(dateStr, format = "mm/dd/yyyy") {
20746
+ if (!dateStr || !format) {
20747
+ return undefined;
20748
+ }
20749
+ const result = getDateParts(dateStr.trim(), format);
20750
+
20751
+ if (!result) {
20752
+ return undefined;
20753
+ }
20754
+
20755
+ const lowerFormat = format.toLowerCase();
20756
+ const year = lowerFormat.includes("yy") ? result.year : "0";
20757
+ const month = lowerFormat.includes("mm") ? result.month : "01";
20758
+ const day = lowerFormat.includes("dd") ? result.day : "01";
20759
+
20760
+ if (isCalendarDate(year, month, day)) {
20761
+ return result;
20762
+ }
20763
+
20764
+ throw new Error(
20765
+ `AuroDatepickerUtilities | parseDate: Date string is not a valid date ${JSON.stringify(result)} with format ${format}`,
20766
+ );
20767
+ }
20768
+
20769
+ /**
20770
+ * Convert a date object to string format.
20771
+ * @param {Object} date - Date to convert to string.
20772
+ * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
20773
+ * @returns {String} Returns the date as a string.
20774
+ */
20775
+ function getDateAsString(date, locale = undefined) {
20776
+ return date.toLocaleDateString(locale, {
20777
+ year: "numeric",
20778
+ month: "2-digit",
20779
+ day: "2-digit",
20780
+ });
20781
+ }
20782
+
20783
+ /**
20784
+ * Converts a date string to a North American date format.
20785
+ * @param {String} dateStr - Date to validate.
20786
+ * @param {String} format - Date format to validate against.
20787
+ * @returns {String}
20788
+ */
20789
+ function toNorthAmericanFormat$1(dateStr, format) {
20790
+ if (format === "mm/dd/yyyy") {
20791
+ return dateStr;
20792
+ }
19892
20793
 
19893
- if (format === 'mm/dd/yyyy') {
19894
- return dateStr;
19895
- }
20794
+ const parsedDate = parseDate(dateStr, format);
19896
20795
 
19897
- const parsedDate = this.parseDate(dateStr, format);
20796
+ if (!parsedDate) {
20797
+ throw new Error(
20798
+ "AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string",
20799
+ );
20800
+ }
19898
20801
 
19899
- if (!parsedDate) {
19900
- throw new Error('AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string');
19901
- }
20802
+ const { month, day, year } = parsedDate;
19902
20803
 
19903
- const { month, day, year } = parsedDate;
20804
+ return [month, day, year].filter(Boolean).join("/");
20805
+ }
19904
20806
 
19905
- const dateParts = [];
19906
- if (month) {
19907
- dateParts.push(month);
19908
- }
20807
+ /**
20808
+ * Validates that a date string matches the provided format and represents a real calendar date.
20809
+ *
20810
+ * @param {string} dateStr - Date string to validate.
20811
+ * @param {string} [format="yyyy-mm-dd"] - Format of the date string.
20812
+ * @returns {boolean} True when the date string is valid for the provided format, otherwise false.
20813
+ */
20814
+ function isValidDate(dateStr, format = "yyyy-mm-dd") {
20815
+ try {
20816
+ if (typeof dateStr !== "string" || !dateStr || format?.length < 8) {
20817
+ return false;
20818
+ }
19909
20819
 
19910
- if (day) {
19911
- dateParts.push(day);
19912
- }
20820
+ if (parseDate(dateStr, format)) {
20821
+ return true;
20822
+ }
20823
+ } catch (error) {
20824
+ return false;
20825
+ }
20826
+ return false;
20827
+ }
19913
20828
 
19914
- if (year) {
19915
- dateParts.push(year);
19916
- }
20829
+ /**
20830
+ * 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.
20831
+ *
20832
+ * @param {Date} date - Date instance to convert to an ISO-like string.
20833
+ * @returns {string} A string in the format "yyyy-mm-dd" representing the provided date.
20834
+ * @throws {Error} Throws an error when the input is not a valid Date instance.
20835
+ */
20836
+ function toISOFormatString(date) {
20837
+ if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
20838
+ throw new Error(
20839
+ "AuroDatepickerUtilities | toISOFormatString: Input must be a valid Date instance",
20840
+ );
20841
+ }
20842
+ return `${String(date.getFullYear()).padStart(4, "0")}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
20843
+ }
19917
20844
 
19918
- return dateParts.join('/');
19919
- };
20845
+ /**
20846
+ * 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.
20847
+ *
20848
+ * @param {String} dateStr - Date string to convert into a Date object.
20849
+ * @param {String} format - Date format used to parse the string when it is not in ISO format.
20850
+ * @returns {Date|null} Returns a Date instance for valid input or null for non-string input.
20851
+ * @throws {Error} Throws when parsing fails for non-ISO string input.
20852
+ */
20853
+ function stringToDateInstance(dateStr, format = "yyyy-mm-dd") {
20854
+ if (typeof dateStr !== "string") {
20855
+ return null;
19920
20856
  }
20857
+
20858
+ const { month, day, year } = parseDate(dateStr, format);
20859
+ return new Date(`${year}/${month}/${day}`);
19921
20860
  }
19922
- const dateFormatter = new DateFormatter();
20861
+
20862
+ const dateFormatter = {
20863
+ parseDate,
20864
+ getDateParts,
20865
+ getDateAsString,
20866
+ toNorthAmericanFormat: toNorthAmericanFormat$1,
20867
+ isValidDate,
20868
+ toISOFormatString,
20869
+ stringToDateInstance,
20870
+ };
19923
20871
 
19924
20872
  // filepath: dateConstraints.mjs
19925
20873
  const DATE_UTIL_CONSTRAINTS = {
@@ -19991,12 +20939,11 @@ class AuroDateUtilitiesBase {
19991
20939
  /* eslint-disable no-magic-numbers */
19992
20940
 
19993
20941
  class AuroDateUtilities extends AuroDateUtilitiesBase {
19994
-
19995
20942
  /**
19996
20943
  * Returns the current century.
19997
20944
  * @returns {String} The current century.
19998
20945
  */
19999
- getCentury () {
20946
+ getCentury() {
20000
20947
  return String(new Date().getFullYear()).slice(0, 2);
20001
20948
  }
20002
20949
 
@@ -20005,14 +20952,12 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20005
20952
  * @param {String} year - The year to convert to four digits.
20006
20953
  * @returns {String} The four digit year.
20007
20954
  */
20008
- getFourDigitYear (year) {
20009
-
20955
+ getFourDigitYear(year) {
20010
20956
  const strYear = String(year).trim();
20011
20957
  return strYear.length <= 2 ? this.getCentury() + strYear : strYear;
20012
20958
  }
20013
20959
 
20014
20960
  constructor() {
20015
-
20016
20961
  super();
20017
20962
 
20018
20963
  /**
@@ -20021,7 +20966,8 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20021
20966
  * @param {Object} date2 - Second date to compare.
20022
20967
  * @returns {Boolean} Returns true if the dates match.
20023
20968
  */
20024
- this.datesMatch = (date1, date2) => new Date(date1).getTime() === new Date(date2).getTime();
20969
+ this.datesMatch = (date1, date2) =>
20970
+ new Date(date1).getTime() === new Date(date2).getTime();
20025
20971
 
20026
20972
  /**
20027
20973
  * Returns true if value passed in is a valid date.
@@ -20030,53 +20976,41 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20030
20976
  * @returns {Boolean}
20031
20977
  */
20032
20978
  this.validDateStr = (date, format) => {
20033
-
20034
20979
  // The length we expect the date string to be
20035
- const dateStrLength = format.length;
20980
+ const dateStrLength = format?.length || 0;
20036
20981
 
20037
20982
  // Guard Clause: Date and format are defined
20038
20983
  if (typeof date === "undefined" || typeof format === "undefined") {
20039
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date and format are required');
20984
+ throw new Error(
20985
+ "AuroDatepickerUtilities | validateDateStr: Date and format are required",
20986
+ );
20040
20987
  }
20041
20988
 
20042
20989
  // Guard Clause: Date should be of type string
20043
20990
  if (typeof date !== "string") {
20044
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date must be a string');
20991
+ throw new Error(
20992
+ "AuroDatepickerUtilities | validateDateStr: Date must be a string",
20993
+ );
20045
20994
  }
20046
20995
 
20047
20996
  // Guard Clause: Format should be of type string
20048
20997
  if (typeof format !== "string") {
20049
- throw new Error('AuroDatepickerUtilities | validateDateStr: Format must be a string');
20998
+ throw new Error(
20999
+ "AuroDatepickerUtilities | validateDateStr: Format must be a string",
21000
+ );
20050
21001
  }
20051
21002
 
20052
21003
  // Guard Clause: Length is what we expect it to be
20053
21004
  if (date.length !== dateStrLength) {
20054
21005
  return false;
20055
21006
  }
20056
- // Get a formatted date string and parse it
20057
- const dateParts = dateFormatter.parseDate(date, format);
20058
-
20059
- // Guard Clause: Date parse succeeded
20060
- if (!dateParts) {
20061
- return false;
20062
- }
20063
21007
 
20064
- // Create the expected date string based on the date parts
20065
- const expectedDateStr = `${dateParts.month}/${dateParts.day || "01"}/${this.getFourDigitYear(dateParts.year)}`;
20066
-
20067
- // Generate a date object that we will extract a string date from to compare to the passed in date string
20068
- const dateObj = new Date(this.getFourDigitYear(dateParts.year), dateParts.month - 1, dateParts.day || 1);
20069
-
20070
- // Get the date string of the date object we created from the string date
20071
- const actualDateStr = dateFormatter.getDateAsString(dateObj, "en-US");
20072
-
20073
- // Guard Clause: Generated date matches date string input
20074
- if (expectedDateStr !== actualDateStr) {
21008
+ // Get a formatted date string and parse and validate it
21009
+ try {
21010
+ return Boolean(dateFormatter.parseDate(date, format));
21011
+ } catch (error) {
20075
21012
  return false;
20076
21013
  }
20077
-
20078
- // If we passed all other checks, we can assume the date is valid
20079
- return true;
20080
21014
  };
20081
21015
 
20082
21016
  /**
@@ -20086,10 +21020,11 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20086
21020
  * @returns {boolean}
20087
21021
  */
20088
21022
  this.dateAndFormatMatch = (value, format) => {
20089
-
20090
21023
  // Ensure we have both values we need to do the comparison
20091
21024
  if (!value || !format) {
20092
- throw new Error('AuroFormValidation | dateFormatMatch: value and format are required');
21025
+ throw new Error(
21026
+ "AuroFormValidation | dateFormatMatch: value and format are required",
21027
+ );
20093
21028
  }
20094
21029
 
20095
21030
  // If the lengths are different, they cannot match
@@ -20098,11 +21033,10 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20098
21033
  }
20099
21034
 
20100
21035
  // Get the parts of the date
20101
- const dateParts = dateFormatter.parseDate(value, format);
21036
+ const dateParts = dateFormatter.getDateParts(value, format);
20102
21037
 
20103
21038
  // Validator for day
20104
21039
  const dayValueIsValid = (day) => {
20105
-
20106
21040
  // Guard clause: if there is no day in the dateParts, we can ignore this check.
20107
21041
  if (!dateParts.day) {
20108
21042
  return true;
@@ -20118,7 +21052,9 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20118
21052
 
20119
21053
  // Guard clause: ensure day is a valid integer
20120
21054
  if (Number.isNaN(numDay)) {
20121
- throw new Error('AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer');
21055
+ throw new Error(
21056
+ "AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer",
21057
+ );
20122
21058
  }
20123
21059
 
20124
21060
  // Guard clause: ensure day is within the valid range
@@ -20132,6 +21068,10 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20132
21068
 
20133
21069
  // Validator for month
20134
21070
  const monthValueIsValid = (month) => {
21071
+ // Guard clause: if there is no month in the dateParts, we can ignore this check.
21072
+ if (!dateParts.month) {
21073
+ return true;
21074
+ }
20135
21075
 
20136
21076
  // Guard clause: ensure month exists.
20137
21077
  if (!month) {
@@ -20143,7 +21083,9 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20143
21083
 
20144
21084
  // Guard clause: ensure month is a valid integer
20145
21085
  if (Number.isNaN(numMonth)) {
20146
- throw new Error('AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer');
21086
+ throw new Error(
21087
+ "AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer",
21088
+ );
20147
21089
  }
20148
21090
 
20149
21091
  // Guard clause: ensure month is within the valid range
@@ -20157,6 +21099,10 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20157
21099
 
20158
21100
  // Validator for year
20159
21101
  const yearIsValid = (_year) => {
21102
+ // Guard clause: if there is no year in the dateParts, we can ignore this check.
21103
+ if (!dateParts.year) {
21104
+ return true;
21105
+ }
20160
21106
 
20161
21107
  // Guard clause: ensure year exists.
20162
21108
  if (!_year) {
@@ -20171,7 +21117,9 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20171
21117
 
20172
21118
  // Guard clause: ensure year is a valid integer
20173
21119
  if (Number.isNaN(numYear)) {
20174
- throw new Error('AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer');
21120
+ throw new Error(
21121
+ "AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer",
21122
+ );
20175
21123
  }
20176
21124
 
20177
21125
  // Guard clause: ensure year is within the valid range
@@ -20187,7 +21135,7 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20187
21135
  const checks = [
20188
21136
  monthValueIsValid(dateParts.month),
20189
21137
  dayValueIsValid(dateParts.day),
20190
- yearIsValid(dateParts.year)
21138
+ yearIsValid(dateParts.year),
20191
21139
  ];
20192
21140
 
20193
21141
  // If any of the checks failed, the date format does not match and the result is invalid
@@ -20221,10 +21169,7 @@ const {
20221
21169
  } = dateUtilities;
20222
21170
 
20223
21171
  const {
20224
- toNorthAmericanFormat,
20225
- parseDate,
20226
- getDateAsString
20227
- } = dateFormatter;
21172
+ toNorthAmericanFormat} = dateFormatter;
20228
21173
 
20229
21174
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
20230
21175
  // See LICENSE in the project root for license information.
@@ -22439,7 +23384,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
22439
23384
  }
22440
23385
  };
22441
23386
 
22442
- var formkitVersion = '202606011856';
23387
+ var formkitVersion = '202606030033';
22443
23388
 
22444
23389
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
22445
23390
  // See LICENSE in the project root for license information.
@@ -23795,6 +24740,7 @@ class AuroDatePicker extends AuroElement {
23795
24740
  delegatesFocus: true,
23796
24741
  };
23797
24742
  }
24743
+
23798
24744
  constructor() {
23799
24745
  super();
23800
24746
 
@@ -23962,7 +24908,7 @@ class AuroDatePicker extends AuroElement {
23962
24908
 
23963
24909
  /**
23964
24910
  * Defines whether the component will be on lighter or darker backgrounds.
23965
- * @property {'default', 'inverse'}
24911
+ * @type {'default' | 'inverse'}
23966
24912
  * @default 'default'
23967
24913
  */
23968
24914
  appearance: {
@@ -23979,6 +24925,22 @@ class AuroDatePicker extends AuroElement {
23979
24925
  reflect: true
23980
24926
  },
23981
24927
 
24928
+ /**
24929
+ * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
24930
+ */
24931
+ blackoutDates: {
24932
+ type: Array,
24933
+ reflect: true
24934
+ },
24935
+
24936
+ /**
24937
+ * Label announced for blackout (disabled but in-range) date cells.
24938
+ */
24939
+ blackoutLabel: {
24940
+ type: String,
24941
+ reflect: true
24942
+ },
24943
+
23982
24944
  /**
23983
24945
  * The last date that may be displayed in the calendar.
23984
24946
  */
@@ -24034,27 +24996,6 @@ class AuroDatePicker extends AuroElement {
24034
24996
  reflect: true
24035
24997
  },
24036
24998
 
24037
- hasFocus: {
24038
- type: Boolean,
24039
- reflect: false,
24040
- },
24041
-
24042
- /**
24043
- * @private
24044
- */
24045
- hasValue: {
24046
- type: Boolean,
24047
- reflect: false,
24048
- },
24049
-
24050
- /**
24051
- * @private
24052
- */
24053
- hasAllValues: {
24054
- type: Boolean,
24055
- reflect: false
24056
- },
24057
-
24058
24999
  /**
24059
25000
  * Specifies the date format. The default is `mm/dd/yyyy`.
24060
25001
  */
@@ -24076,6 +25017,27 @@ class AuroDatePicker extends AuroElement {
24076
25017
  reflect: true
24077
25018
  },
24078
25019
 
25020
+ /**
25021
+ * @private
25022
+ */
25023
+ hasAllValues: {
25024
+ type: Boolean,
25025
+ reflect: false
25026
+ },
25027
+
25028
+ hasFocus: {
25029
+ type: Boolean,
25030
+ reflect: false,
25031
+ },
25032
+
25033
+ /**
25034
+ * @private
25035
+ */
25036
+ hasValue: {
25037
+ type: Boolean,
25038
+ reflect: false,
25039
+ },
25040
+
24079
25041
  /** Exposes inputmode attribute for input. */
24080
25042
  inputmode: {
24081
25043
  type: String,
@@ -24118,6 +25080,13 @@ class AuroDatePicker extends AuroElement {
24118
25080
  reflect: true
24119
25081
  },
24120
25082
 
25083
+ /**
25084
+ * @private
25085
+ */
25086
+ monthFirst: {
25087
+ type: Boolean
25088
+ },
25089
+
24121
25090
  /**
24122
25091
  * Names of all 12 months to render in the calendar, used for localization of date string in mobile layout.
24123
25092
  */
@@ -24126,25 +25095,26 @@ class AuroDatePicker extends AuroElement {
24126
25095
  },
24127
25096
 
24128
25097
  /**
24129
- * @private
25098
+ * Accessible label for the next month navigation button.
24130
25099
  */
24131
- monthFirst: {
24132
- type: Boolean
25100
+ navLabelNextMonth: {
25101
+ type: String,
25102
+ reflect: true
24133
25103
  },
24134
25104
 
24135
25105
  /**
24136
- * If declared, the bib will NOT flip to an alternate position
24137
- * when there isn't enough space in the specified `placement`.
25106
+ * Accessible label for the previous month navigation button.
24138
25107
  */
24139
- noFlip: {
24140
- type: Boolean,
25108
+ navLabelPrevMonth: {
25109
+ type: String,
24141
25110
  reflect: true
24142
25111
  },
24143
25112
 
24144
25113
  /**
24145
- * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
25114
+ * If declared, the bib will NOT flip to an alternate position
25115
+ * when there isn't enough space in the specified `placement`.
24146
25116
  */
24147
- shift: {
25117
+ noFlip: {
24148
25118
  type: Boolean,
24149
25119
  reflect: true
24150
25120
  },
@@ -24211,17 +25181,9 @@ class AuroDatePicker extends AuroElement {
24211
25181
  },
24212
25182
 
24213
25183
  /**
24214
- * Label announced for the range start date cell.
24215
- */
24216
- rangeLabelStart: {
24217
- type: String,
24218
- reflect: true
24219
- },
24220
-
24221
- /**
24222
- * Label announced for the range end date cell.
25184
+ * Label announced for cells after the range (or after start when no end is selected).
24223
25185
  */
24224
- rangeLabelEnd: {
25186
+ rangeLabelAfterRange: {
24225
25187
  type: String,
24226
25188
  reflect: true
24227
25189
  },
@@ -24235,49 +25197,25 @@ class AuroDatePicker extends AuroElement {
24235
25197
  },
24236
25198
 
24237
25199
  /**
24238
- * Label announced for cells within the selected range.
24239
- */
24240
- rangeLabelInRange: {
24241
- type: String,
24242
- reflect: true
24243
- },
24244
-
24245
- /**
24246
- * Label announced for cells after the range (or after start when no end is selected).
24247
- */
24248
- rangeLabelAfterRange: {
24249
- type: String,
24250
- reflect: true
24251
- },
24252
-
24253
- /**
24254
- * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
24255
- */
24256
- blackoutDates: {
24257
- type: Array,
24258
- reflect: true
24259
- },
24260
-
24261
- /**
24262
- * Label announced for blackout (disabled but in-range) date cells.
25200
+ * Label announced for the range end date cell.
24263
25201
  */
24264
- blackoutLabel: {
25202
+ rangeLabelEnd: {
24265
25203
  type: String,
24266
25204
  reflect: true
24267
25205
  },
24268
25206
 
24269
25207
  /**
24270
- * Accessible label for the previous month navigation button.
25208
+ * Label announced for cells within the selected range.
24271
25209
  */
24272
- navLabelPrevMonth: {
25210
+ rangeLabelInRange: {
24273
25211
  type: String,
24274
25212
  reflect: true
24275
25213
  },
24276
25214
 
24277
25215
  /**
24278
- * Accessible label for the next month navigation button.
25216
+ * Label announced for the range start date cell.
24279
25217
  */
24280
- navLabelNextMonth: {
25218
+ rangeLabelStart: {
24281
25219
  type: String,
24282
25220
  reflect: true
24283
25221
  },
@@ -24335,6 +25273,14 @@ class AuroDatePicker extends AuroElement {
24335
25273
  type: String
24336
25274
  },
24337
25275
 
25276
+ /**
25277
+ * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
25278
+ */
25279
+ shift: {
25280
+ type: Boolean,
25281
+ reflect: true
25282
+ },
25283
+
24338
25284
  /**
24339
25285
  * Set true to make datepicker stacked style.
24340
25286
  */
@@ -24343,6 +25289,16 @@ class AuroDatePicker extends AuroElement {
24343
25289
  reflect: true
24344
25290
  },
24345
25291
 
25292
+ /**
25293
+ * Indicates whether the datepicker is in a dirty state (has been interacted with).
25294
+ * @private
25295
+ */
25296
+ touched: {
25297
+ type: Boolean,
25298
+ reflect: true,
25299
+ attribute: false
25300
+ },
25301
+
24346
25302
  /**
24347
25303
  * Specifies the `validityState` this element is in.
24348
25304
  */
@@ -24363,16 +25319,6 @@ class AuroDatePicker extends AuroElement {
24363
25319
  */
24364
25320
  valueEnd: {
24365
25321
  type: String
24366
- },
24367
-
24368
- /**
24369
- * Indicates whether the datepicker is in a dirty state (has been interacted with).
24370
- * @private
24371
- */
24372
- touched: {
24373
- type: Boolean,
24374
- reflect: true,
24375
- attribute: false
24376
25322
  }
24377
25323
  };
24378
25324
  }
@@ -24481,8 +25427,9 @@ class AuroDatePicker extends AuroElement {
24481
25427
  }
24482
25428
 
24483
25429
  /**
24484
- * @private
24485
25430
  * Common display value wrapper classes.
25431
+ * @private
25432
+ * @returns {Object} Class map for Lit's classMap directive.
24486
25433
  */
24487
25434
  get commonDisplayValueWrapperClasses() {
24488
25435
  return {
@@ -24650,7 +25597,7 @@ class AuroDatePicker extends AuroElement {
24650
25597
  }
24651
25598
 
24652
25599
  // Compute and mark the active cell
24653
- if (this.calendar.activeCellDate == null) {
25600
+ if (this.calendar.activeCellDate === null || this.calendar.activeCellDate === undefined) {
24654
25601
  this.calendar.activeCellDate = this.calendar.computeActiveDate();
24655
25602
  }
24656
25603
  if (this.calendar.activeCellDate !== undefined) {
@@ -24659,29 +25606,37 @@ class AuroDatePicker extends AuroElement {
24659
25606
 
24660
25607
  // If no cell matched (e.g. centralDate month differs from the rendered
24661
25608
  // range on mobile), fall back to the first rendered enabled cell.
24662
- let activeCell = allCells.find(cell => cell.active);
25609
+ let activeCell = allCells.find((cell) => cell.active);
24663
25610
  if (!activeCell && allCells.length) {
24664
- const fallback = allCells[0];
25611
+ const [fallback] = allCells;
24665
25612
  if (fallback.day) {
24666
25613
  this.calendar.activeCellDate = fallback.day.date;
24667
25614
  this.calendar.setActiveCell(this.calendar.activeCellDate);
24668
- activeCell = allCells.find(cell => cell.active);
25615
+ activeCell = allCells.find((cell) => cell.active);
24669
25616
  }
24670
25617
  }
24671
25618
 
24672
- // Wait for the cell's Lit render to complete so the button's tabindex
24673
- // reflects the active state before we attempt to focus.
25619
+ // Focus the calendar grid wrapper (aria-activedescendant handles
25620
+ // the SR announcement for the active cell).
24674
25621
  if (activeCell) {
24675
- activeCell.updateComplete.then(() => {
24676
- activeCell.hovered = true;
24677
- const btn = activeCell.shadowRoot.querySelector('button:not([aria-hidden])');
24678
- if (btn) {
24679
- btn.setAttribute('tabindex', '0');
24680
- btn.focus({ focusVisible: true });
24681
- } else if (attempts < MAX_ATTEMPTS) {
24682
- requestAnimationFrame(tryFocus);
24683
- }
24684
- });
25622
+ this.calendar.focusActiveCell();
25623
+
25624
+ // Announce the initial active cell via the live region.
25625
+ // Delay the announcement so it arrives after VoiceOver finishes
25626
+ // speaking the focus-change announcement for the grid wrapper.
25627
+ // Without this delay, VoiceOver drops the live region update
25628
+ // because it's already mid-announcement from the focus move.
25629
+ const announcement = this.calendar.buildFocusAnnouncement(activeCell.day.date);
25630
+ setTimeout(() => {
25631
+ this.calendar.announceSelection(announcement);
25632
+ }, 500);
25633
+
25634
+ // On mobile fullscreen, scroll the month list so the active cell's
25635
+ // month is visible. Without this, the list stays scrolled to the
25636
+ // calendarStartDate month which may be far from the active cell.
25637
+ if (this.dropdown.isBibFullscreen) {
25638
+ this.calendar.scrollToActiveCell();
25639
+ }
24685
25640
  } else if (attempts < MAX_ATTEMPTS) {
24686
25641
  requestAnimationFrame(tryFocus);
24687
25642
  }
@@ -24831,14 +25786,35 @@ class AuroDatePicker extends AuroElement {
24831
25786
  if (bibEl && this.dropdown.isPopoverVisible) {
24832
25787
  bibEl.close();
24833
25788
  bibEl.open(true);
25789
+ }
25790
+
25791
+ // Re-render the calendar with the new fullscreen layout,
25792
+ // then restore focus after the re-render completes.
25793
+ this.calendar.isFullscreen = true;
25794
+ this.calendar.updateComplete.then(() => {
24834
25795
  doubleRaf(() => {
24835
25796
  this.focusActiveCellWhenReady();
24836
25797
  });
24837
- }
25798
+ });
24838
25799
  });
24839
25800
  } else if (!this.dropdown.isBibFullscreen) {
24840
- // Switching from fullscreen to floating — restore trigger accessibility
24841
- this.dropdown.trigger.inert = false;
25801
+ // Switching from fullscreen to floating — only restore trigger accessibility
25802
+ // when the bib is closed or the desktop layout is not a modal. A desktopModal
25803
+ // dropdown keeps the trigger inert while open, matching the desktop-open path.
25804
+ if (!this.dropdown.isPopoverVisible || !this.dropdown.desktopModal) {
25805
+ this.dropdown.trigger.inert = false;
25806
+ }
25807
+
25808
+ // Re-render the calendar with the desktop layout,
25809
+ // then restore focus after the re-render completes.
25810
+ this.dropdown.updateComplete.then(() => {
25811
+ this.calendar.isFullscreen = false;
25812
+ this.calendar.updateComplete.then(() => {
25813
+ doubleRaf(() => {
25814
+ this.focusActiveCellWhenReady();
25815
+ });
25816
+ });
25817
+ });
24842
25818
  }
24843
25819
  });
24844
25820
  }
@@ -25080,12 +26056,14 @@ class AuroDatePicker extends AuroElement {
25080
26056
  }
25081
26057
 
25082
26058
  const formatted = this.util.toNorthAmericanFormat(dateStr, this.format);
25083
- if (!this.util.validDateStr(dateStr, this.format)) return false;
26059
+ if (!this.util.validDateStr(dateStr, this.format)) {
26060
+ return false;
26061
+ }
25084
26062
 
25085
- const d = new Date(formatted);
25086
- const yyyy = d.getFullYear();
25087
- const mm = String(d.getMonth() + 1).padStart(2, '0');
25088
- const dd = String(d.getDate()).padStart(2, '0');
26063
+ const dt = new Date(formatted);
26064
+ const yyyy = dt.getFullYear();
26065
+ const mm = String(dt.getMonth() + 1).padStart(2, '0');
26066
+ const dd = String(dt.getDate()).padStart(2, '0');
25089
26067
  return this.blackoutDates.includes(`${yyyy}-${mm}-${dd}`);
25090
26068
  }
25091
26069
 
@@ -25103,7 +26081,7 @@ class AuroDatePicker extends AuroElement {
25103
26081
 
25104
26082
  // After standard validation, check blackout dates for typed input
25105
26083
  if (this.validity !== 'customError') {
25106
- if (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd))) {
26084
+ if (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd))) { // eslint-disable-line no-extra-parens
25107
26085
  const msg = this.setCustomValidityCustomError || 'Selected date is unavailable';
25108
26086
  this.validity = 'customError';
25109
26087
  this.errorMessage = msg;
@@ -25149,7 +26127,13 @@ class AuroDatePicker extends AuroElement {
25149
26127
  // 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"]
25150
26128
  const stringfiedDates = JSON.stringify(this.referenceDates);
25151
26129
  if (stringfiedDates.includes('-')) {
25152
- this.referenceDates = this.referenceDates.map(date => date.replace(/-/gu, '/' ));
26130
+ this.referenceDates = this.referenceDates.map((date) => date.replace(/-/gu, '/'));
26131
+ }
26132
+
26133
+ // Force calendar cells to re-render with updated reference date state.
26134
+ if (this.calendar) {
26135
+ this.calendar.requestUpdate();
26136
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
25153
26137
  }
25154
26138
  }
25155
26139
 
@@ -25738,7 +26722,7 @@ class AuroDatePicker extends AuroElement {
25738
26722
  /**
25739
26723
  * Handles click on the clear button.
25740
26724
  * @private
25741
- * @param {MouseEvent} event
26725
+ * @param {MouseEvent} event - The mouse event from the clear button click.
25742
26726
  * @returns {void}
25743
26727
  */
25744
26728
  handleClearClick(event) {