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

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 (64) 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 +502 -254
  8. package/components/combobox/demo/getting-started.min.js +502 -254
  9. package/components/combobox/demo/index.min.js +502 -254
  10. package/components/combobox/demo/styles.min.css +1 -1
  11. package/components/combobox/dist/index.js +502 -254
  12. package/components/combobox/dist/registered.js +502 -254
  13. package/components/counter/demo/customize.min.js +250 -126
  14. package/components/counter/demo/index.min.js +250 -126
  15. package/components/counter/demo/styles.min.css +1 -1
  16. package/components/counter/dist/index.js +249 -125
  17. package/components/counter/dist/registered.js +249 -125
  18. package/components/datepicker/demo/accessibility.md +9 -6
  19. package/components/datepicker/demo/api.md +1 -1
  20. package/components/datepicker/demo/customize.min.js +1544 -527
  21. package/components/datepicker/demo/index.md +6 -4
  22. package/components/datepicker/demo/index.min.js +1560 -532
  23. package/components/datepicker/demo/keyboard-behavior.md +15 -15
  24. package/components/datepicker/demo/styles.min.css +1 -1
  25. package/components/datepicker/demo/voiceover.md +5 -3
  26. package/components/datepicker/demo/why-datepicker.md +2 -2
  27. package/components/datepicker/dist/index.js +1536 -519
  28. package/components/datepicker/dist/registered.js +1536 -519
  29. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +50 -15
  30. package/components/datepicker/dist/src/auro-calendar-month.d.ts +9 -0
  31. package/components/datepicker/dist/src/auro-calendar.d.ts +161 -8
  32. package/components/datepicker/dist/src/auro-datepicker.d.ts +5 -7
  33. package/components/dropdown/demo/customize.min.js +1 -1
  34. package/components/dropdown/demo/getting-started.min.js +1 -1
  35. package/components/dropdown/demo/index.min.js +1 -1
  36. package/components/dropdown/demo/styles.min.css +1 -1
  37. package/components/dropdown/dist/index.js +1 -1
  38. package/components/dropdown/dist/registered.js +1 -1
  39. package/components/form/demo/customize.min.js +3263 -1378
  40. package/components/form/demo/getting-started.min.js +3263 -1378
  41. package/components/form/demo/index.min.js +3263 -1378
  42. package/components/form/demo/registerDemoDeps.min.js +3263 -1378
  43. package/components/form/demo/styles.min.css +1 -1
  44. package/components/input/demo/customize.min.js +249 -125
  45. package/components/input/demo/getting-started.min.js +249 -125
  46. package/components/input/demo/index.min.js +249 -125
  47. package/components/input/demo/styles.min.css +1 -1
  48. package/components/input/dist/index.js +249 -125
  49. package/components/input/dist/registered.js +249 -125
  50. package/components/menu/demo/styles.min.css +1 -1
  51. package/components/radio/demo/customize.min.js +249 -125
  52. package/components/radio/demo/getting-started.min.js +249 -125
  53. package/components/radio/demo/index.min.js +249 -125
  54. package/components/radio/demo/styles.min.css +1 -1
  55. package/components/radio/dist/index.js +249 -125
  56. package/components/radio/dist/registered.js +249 -125
  57. package/components/select/demo/customize.min.js +250 -126
  58. package/components/select/demo/getting-started.min.js +250 -126
  59. package/components/select/demo/index.min.js +250 -126
  60. package/components/select/demo/styles.min.css +1 -1
  61. package/components/select/dist/index.js +250 -126
  62. package/components/select/dist/registered.js +250 -126
  63. package/custom-elements.json +964 -637
  64. package/package.json +8 -8
@@ -25,109 +25,236 @@ const t$2={ATTRIBUTE:1,CHILD:2},e$5=t=>(...e)=>({_$litDirective$:t,values:e});le
25
25
  * SPDX-License-Identifier: BSD-3-Clause
26
26
  */const e$4=e$5(class extends i$4{constructor(t){if(super(t),t.type!==t$2.ATTRIBUTE||"class"!==t.name||t.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return " "+Object.keys(t).filter(s=>t[s]).join(" ")+" "}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter(t=>""!==t)));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)));}return E$1}});
27
27
 
28
- let DateFormatter$1 = class DateFormatter {
28
+ /**
29
+ * @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.
30
+ * @param {string} dateStr - Date string to parse.
31
+ * @param {string} format - Date format to parse.
32
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
33
+ */
34
+ function getDateParts$1(dateStr, format) {
35
+ if (!dateStr) {
36
+ return undefined;
37
+ }
29
38
 
30
- constructor() {
39
+ const formatSeparatorMatch = format.match(/[/.-]/);
40
+ let valueParts;
41
+ let formatParts;
31
42
 
32
- /**
33
- * @description Parses a date string into its components.
34
- * @param {string} dateStr - Date string to parse.
35
- * @param {string} format - Date format to parse.
36
- * @returns {Object<key["month" | "day" | "year"]: number>|undefined}
37
- */
38
- this.parseDate = (dateStr, format = 'mm/dd/yyyy') => {
43
+ if (formatSeparatorMatch) {
44
+ const separator = formatSeparatorMatch[0];
45
+ valueParts = dateStr.split(separator);
46
+ formatParts = format.split(separator);
47
+ } else {
48
+ if (dateStr.match(/[/.-]/)) {
49
+ throw new Error(
50
+ "AuroDatepickerUtilities | parseDate: Date string has no separators",
51
+ );
52
+ }
39
53
 
40
- // Guard Clause: Date string is defined
41
- if (!dateStr) {
42
- return undefined;
43
- }
54
+ if (dateStr.length !== format.length) {
55
+ throw new Error(
56
+ "AuroDatepickerUtilities | parseDate: Date string and format length do not match",
57
+ );
58
+ }
44
59
 
45
- // Assume the separator is a "/" a defined in our code base
46
- const separator = '/';
60
+ valueParts = [dateStr];
61
+ formatParts = [format];
62
+ }
47
63
 
48
- // Get the parts of the date and format
49
- const valueParts = dateStr.split(separator);
50
- const formatParts = format.split(separator);
64
+ if (valueParts.length !== formatParts.length) {
65
+ throw new Error(
66
+ `AuroDatepickerUtilities | parseDate: Date string and format do not match : ${dateStr} vs ${format}`,
67
+ );
68
+ }
51
69
 
52
- // Check if the value and format have the correct number of parts
53
- if (valueParts.length !== formatParts.length) {
54
- throw new Error('AuroDatepickerUtilities | parseDate: Date string and format length do not match');
55
- }
70
+ const result = formatParts.reduce((acc, part, index) => {
71
+ const value = valueParts[index];
56
72
 
57
- // Holds the result to be returned
58
- const result = formatParts.reduce((acc, part, index) => {
59
- const value = valueParts[index];
73
+ if (/m/iu.test(part) && part.length === value.length) {
74
+ acc.month = value;
75
+ } else if (/d/iu.test(part) && part.length === value.length) {
76
+ acc.day = value;
77
+ } else if (/y/iu.test(part) && part.length === value.length) {
78
+ acc.year = value;
79
+ }
60
80
 
61
- if ((/m/iu).test(part)) {
62
- acc.month = value;
63
- } else if ((/d/iu).test(part)) {
64
- acc.day = value;
65
- } else if ((/y/iu).test(part)) {
66
- acc.year = value;
67
- }
81
+ return acc;
82
+ }, {});
68
83
 
69
- return acc;
70
- }, {});
84
+ if (!result.month && !result.day && !result.year) {
85
+ throw new Error(
86
+ "AuroDatepickerUtilities | parseDate: Unable to parse date string",
87
+ );
88
+ }
71
89
 
72
- // If we found all the parts, return the result
73
- if (result.month && result.year) {
74
- return result;
75
- }
90
+ return result;
91
+ }
76
92
 
77
- // Throw an error to let the dev know we were unable to parse the date string
78
- throw new Error('AuroDatepickerUtilities | parseDate: Unable to parse date string');
79
- };
93
+ function isCalendarDate$1(year, month, day) {
94
+ let yearNumber = Number(year);
95
+ const monthNumber = Number(month);
96
+ const dayNumber = Number(day);
80
97
 
81
- /**
82
- * Convert a date object to string format.
83
- * @param {Object} date - Date to convert to string.
84
- * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
85
- * @returns {String} Returns the date as a string.
86
- */
87
- this.getDateAsString = (date, locale = undefined) => date.toLocaleDateString(locale, {
88
- year: "numeric",
89
- month: "2-digit",
90
- day: "2-digit",
91
- });
98
+ if (
99
+ !Number.isInteger(yearNumber) ||
100
+ !Number.isInteger(monthNumber) ||
101
+ !Number.isInteger(dayNumber)
102
+ ) {
103
+ return false;
104
+ }
92
105
 
93
- /**
94
- * Converts a date string to a North American date format.
95
- * @param {String} dateStr - Date to validate.
96
- * @param {String} format - Date format to validate against.
97
- * @returns {Boolean}
98
- */
99
- this.toNorthAmericanFormat = (dateStr, format) => {
106
+ // 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.
107
+ if (yearNumber < 100 && yearNumber >= 50) {
108
+ yearNumber += 1900;
109
+ } else if (yearNumber < 50) {
110
+ yearNumber += 2000;
111
+ }
100
112
 
101
- if (format === 'mm/dd/yyyy') {
102
- return dateStr;
103
- }
113
+ const stringified = `${String(yearNumber).padStart(4, "0")}-${String(monthNumber).padStart(2, "0")}-${String(dayNumber).padStart(2, "0")}`;
114
+ const date = new Date(stringified.replace(/[.-]/g, "/"));
104
115
 
105
- const parsedDate = this.parseDate(dateStr, format);
116
+ return (
117
+ !Number.isNaN(date.getTime()) && toISOFormatString$1(date) === stringified
118
+ );
119
+ }
106
120
 
107
- if (!parsedDate) {
108
- throw new Error('AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string');
109
- }
121
+ /**
122
+ * @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).
123
+ *
124
+ * Partial formats are supported: components absent from `format` default to `year → "0"`,
125
+ * `month → "01"`, `day → "01"` for calendar validation only. The returned object contains
126
+ * only the fields actually present in the format string — missing fields are never injected.
127
+ * @param {string} dateStr - Date string to parse.
128
+ * @param {string} format - Date format to parse.
129
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
130
+ * @throws {Error} Throws when the parsed result does not represent a valid calendar date.
131
+ */
132
+ function parseDate$1(dateStr, format = "mm/dd/yyyy") {
133
+ if (!dateStr || !format) {
134
+ return undefined;
135
+ }
136
+ const result = getDateParts$1(dateStr.trim(), format);
110
137
 
111
- const { month, day, year } = parsedDate;
138
+ if (!result) {
139
+ return undefined;
140
+ }
112
141
 
113
- const dateParts = [];
114
- if (month) {
115
- dateParts.push(month);
116
- }
142
+ const lowerFormat = format.toLowerCase();
143
+ const year = lowerFormat.includes("yy") ? result.year : "0";
144
+ const month = lowerFormat.includes("mm") ? result.month : "01";
145
+ const day = lowerFormat.includes("dd") ? result.day : "01";
117
146
 
118
- if (day) {
119
- dateParts.push(day);
120
- }
147
+ if (isCalendarDate$1(year, month, day)) {
148
+ return result;
149
+ }
121
150
 
122
- if (year) {
123
- dateParts.push(year);
124
- }
151
+ throw new Error(
152
+ `AuroDatepickerUtilities | parseDate: Date string is not a valid date ${JSON.stringify(result)} with format ${format}`,
153
+ );
154
+ }
125
155
 
126
- return dateParts.join('/');
127
- };
156
+ /**
157
+ * Convert a date object to string format.
158
+ * @param {Object} date - Date to convert to string.
159
+ * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
160
+ * @returns {String} Returns the date as a string.
161
+ */
162
+ function getDateAsString$1(date, locale = undefined) {
163
+ return date.toLocaleDateString(locale, {
164
+ year: "numeric",
165
+ month: "2-digit",
166
+ day: "2-digit",
167
+ });
168
+ }
169
+
170
+ /**
171
+ * Converts a date string to a North American date format.
172
+ * @param {String} dateStr - Date to validate.
173
+ * @param {String} format - Date format to validate against.
174
+ * @returns {String}
175
+ */
176
+ function toNorthAmericanFormat$3(dateStr, format) {
177
+ if (format === "mm/dd/yyyy") {
178
+ return dateStr;
179
+ }
180
+
181
+ const parsedDate = parseDate$1(dateStr, format);
182
+
183
+ if (!parsedDate) {
184
+ throw new Error(
185
+ "AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string",
186
+ );
187
+ }
188
+
189
+ const { month, day, year } = parsedDate;
190
+
191
+ return [month, day, year].filter(Boolean).join("/");
192
+ }
193
+
194
+ /**
195
+ * Validates that a date string matches the provided format and represents a real calendar date.
196
+ *
197
+ * @param {string} dateStr - Date string to validate.
198
+ * @param {string} [format="yyyy-mm-dd"] - Format of the date string.
199
+ * @returns {boolean} True when the date string is valid for the provided format, otherwise false.
200
+ */
201
+ function isValidDate$1(dateStr, format = "yyyy-mm-dd") {
202
+ try {
203
+ if (typeof dateStr !== "string" || !dateStr || format?.length < 8) {
204
+ return false;
205
+ }
206
+
207
+ if (parseDate$1(dateStr, format)) {
208
+ return true;
209
+ }
210
+ } catch (error) {
211
+ return false;
212
+ }
213
+ return false;
214
+ }
215
+
216
+ /**
217
+ * 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.
218
+ *
219
+ * @param {Date} date - Date instance to convert to an ISO-like string.
220
+ * @returns {string} A string in the format "yyyy-mm-dd" representing the provided date.
221
+ * @throws {Error} Throws an error when the input is not a valid Date instance.
222
+ */
223
+ function toISOFormatString$1(date) {
224
+ if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
225
+ throw new Error(
226
+ "AuroDatepickerUtilities | toISOFormatString: Input must be a valid Date instance",
227
+ );
228
+ }
229
+ return `${String(date.getFullYear()).padStart(4, "0")}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
230
+ }
231
+
232
+ /**
233
+ * 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.
234
+ *
235
+ * @param {String} dateStr - Date string to convert into a Date object.
236
+ * @param {String} format - Date format used to parse the string when it is not in ISO format.
237
+ * @returns {Date|null} Returns a Date instance for valid input or null for non-string input.
238
+ * @throws {Error} Throws when parsing fails for non-ISO string input.
239
+ */
240
+ function stringToDateInstance$1(dateStr, format = "yyyy-mm-dd") {
241
+ if (typeof dateStr !== "string") {
242
+ return null;
128
243
  }
244
+
245
+ const { month, day, year } = parseDate$1(dateStr, format);
246
+ return new Date(`${year}/${month}/${day}`);
247
+ }
248
+
249
+ const dateFormatter$1 = {
250
+ parseDate: parseDate$1,
251
+ getDateParts: getDateParts$1,
252
+ getDateAsString: getDateAsString$1,
253
+ toNorthAmericanFormat: toNorthAmericanFormat$3,
254
+ isValidDate: isValidDate$1,
255
+ toISOFormatString: toISOFormatString$1,
256
+ stringToDateInstance: stringToDateInstance$1,
129
257
  };
130
- const dateFormatter$1 = new DateFormatter$1();
131
258
 
132
259
  // filepath: dateConstraints.mjs
133
260
  const DATE_UTIL_CONSTRAINTS$1 = {
@@ -199,12 +326,11 @@ let AuroDateUtilitiesBase$1 = class AuroDateUtilitiesBase {
199
326
  /* eslint-disable no-magic-numbers */
200
327
 
201
328
  let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$1 {
202
-
203
329
  /**
204
330
  * Returns the current century.
205
331
  * @returns {String} The current century.
206
332
  */
207
- getCentury () {
333
+ getCentury() {
208
334
  return String(new Date().getFullYear()).slice(0, 2);
209
335
  }
210
336
 
@@ -213,14 +339,12 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
213
339
  * @param {String} year - The year to convert to four digits.
214
340
  * @returns {String} The four digit year.
215
341
  */
216
- getFourDigitYear (year) {
217
-
342
+ getFourDigitYear(year) {
218
343
  const strYear = String(year).trim();
219
344
  return strYear.length <= 2 ? this.getCentury() + strYear : strYear;
220
345
  }
221
346
 
222
347
  constructor() {
223
-
224
348
  super();
225
349
 
226
350
  /**
@@ -229,7 +353,8 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
229
353
  * @param {Object} date2 - Second date to compare.
230
354
  * @returns {Boolean} Returns true if the dates match.
231
355
  */
232
- this.datesMatch = (date1, date2) => new Date(date1).getTime() === new Date(date2).getTime();
356
+ this.datesMatch = (date1, date2) =>
357
+ new Date(date1).getTime() === new Date(date2).getTime();
233
358
 
234
359
  /**
235
360
  * Returns true if value passed in is a valid date.
@@ -238,53 +363,41 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
238
363
  * @returns {Boolean}
239
364
  */
240
365
  this.validDateStr = (date, format) => {
241
-
242
366
  // The length we expect the date string to be
243
- const dateStrLength = format.length;
367
+ const dateStrLength = format?.length || 0;
244
368
 
245
369
  // Guard Clause: Date and format are defined
246
370
  if (typeof date === "undefined" || typeof format === "undefined") {
247
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date and format are required');
371
+ throw new Error(
372
+ "AuroDatepickerUtilities | validateDateStr: Date and format are required",
373
+ );
248
374
  }
249
375
 
250
376
  // Guard Clause: Date should be of type string
251
377
  if (typeof date !== "string") {
252
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date must be a string');
378
+ throw new Error(
379
+ "AuroDatepickerUtilities | validateDateStr: Date must be a string",
380
+ );
253
381
  }
254
382
 
255
383
  // Guard Clause: Format should be of type string
256
384
  if (typeof format !== "string") {
257
- throw new Error('AuroDatepickerUtilities | validateDateStr: Format must be a string');
385
+ throw new Error(
386
+ "AuroDatepickerUtilities | validateDateStr: Format must be a string",
387
+ );
258
388
  }
259
389
 
260
390
  // Guard Clause: Length is what we expect it to be
261
391
  if (date.length !== dateStrLength) {
262
392
  return false;
263
393
  }
264
- // Get a formatted date string and parse it
265
- const dateParts = dateFormatter$1.parseDate(date, format);
266
-
267
- // Guard Clause: Date parse succeeded
268
- if (!dateParts) {
269
- return false;
270
- }
271
-
272
- // Create the expected date string based on the date parts
273
- const expectedDateStr = `${dateParts.month}/${dateParts.day || "01"}/${this.getFourDigitYear(dateParts.year)}`;
274
-
275
- // Generate a date object that we will extract a string date from to compare to the passed in date string
276
- const dateObj = new Date(this.getFourDigitYear(dateParts.year), dateParts.month - 1, dateParts.day || 1);
277
-
278
- // Get the date string of the date object we created from the string date
279
- const actualDateStr = dateFormatter$1.getDateAsString(dateObj, "en-US");
280
394
 
281
- // Guard Clause: Generated date matches date string input
282
- if (expectedDateStr !== actualDateStr) {
395
+ // Get a formatted date string and parse and validate it
396
+ try {
397
+ return Boolean(dateFormatter$1.parseDate(date, format));
398
+ } catch (error) {
283
399
  return false;
284
400
  }
285
-
286
- // If we passed all other checks, we can assume the date is valid
287
- return true;
288
401
  };
289
402
 
290
403
  /**
@@ -294,10 +407,11 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
294
407
  * @returns {boolean}
295
408
  */
296
409
  this.dateAndFormatMatch = (value, format) => {
297
-
298
410
  // Ensure we have both values we need to do the comparison
299
411
  if (!value || !format) {
300
- throw new Error('AuroFormValidation | dateFormatMatch: value and format are required');
412
+ throw new Error(
413
+ "AuroFormValidation | dateFormatMatch: value and format are required",
414
+ );
301
415
  }
302
416
 
303
417
  // If the lengths are different, they cannot match
@@ -306,11 +420,10 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
306
420
  }
307
421
 
308
422
  // Get the parts of the date
309
- const dateParts = dateFormatter$1.parseDate(value, format);
423
+ const dateParts = dateFormatter$1.getDateParts(value, format);
310
424
 
311
425
  // Validator for day
312
426
  const dayValueIsValid = (day) => {
313
-
314
427
  // Guard clause: if there is no day in the dateParts, we can ignore this check.
315
428
  if (!dateParts.day) {
316
429
  return true;
@@ -326,7 +439,9 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
326
439
 
327
440
  // Guard clause: ensure day is a valid integer
328
441
  if (Number.isNaN(numDay)) {
329
- throw new Error('AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer');
442
+ throw new Error(
443
+ "AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer",
444
+ );
330
445
  }
331
446
 
332
447
  // Guard clause: ensure day is within the valid range
@@ -340,6 +455,10 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
340
455
 
341
456
  // Validator for month
342
457
  const monthValueIsValid = (month) => {
458
+ // Guard clause: if there is no month in the dateParts, we can ignore this check.
459
+ if (!dateParts.month) {
460
+ return true;
461
+ }
343
462
 
344
463
  // Guard clause: ensure month exists.
345
464
  if (!month) {
@@ -351,7 +470,9 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
351
470
 
352
471
  // Guard clause: ensure month is a valid integer
353
472
  if (Number.isNaN(numMonth)) {
354
- throw new Error('AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer');
473
+ throw new Error(
474
+ "AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer",
475
+ );
355
476
  }
356
477
 
357
478
  // Guard clause: ensure month is within the valid range
@@ -365,6 +486,10 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
365
486
 
366
487
  // Validator for year
367
488
  const yearIsValid = (_year) => {
489
+ // Guard clause: if there is no year in the dateParts, we can ignore this check.
490
+ if (!dateParts.year) {
491
+ return true;
492
+ }
368
493
 
369
494
  // Guard clause: ensure year exists.
370
495
  if (!_year) {
@@ -379,7 +504,9 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
379
504
 
380
505
  // Guard clause: ensure year is a valid integer
381
506
  if (Number.isNaN(numYear)) {
382
- throw new Error('AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer');
507
+ throw new Error(
508
+ "AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer",
509
+ );
383
510
  }
384
511
 
385
512
  // Guard clause: ensure year is within the valid range
@@ -395,7 +522,7 @@ let AuroDateUtilities$1 = class AuroDateUtilities extends AuroDateUtilitiesBase$
395
522
  const checks = [
396
523
  monthValueIsValid(dateParts.month),
397
524
  dayValueIsValid(dateParts.day),
398
- yearIsValid(dateParts.year)
525
+ yearIsValid(dateParts.year),
399
526
  ];
400
527
 
401
528
  // If any of the checks failed, the date format does not match and the result is invalid
@@ -429,10 +556,7 @@ const {
429
556
  } = dateUtilities$1;
430
557
 
431
558
  const {
432
- toNorthAmericanFormat: toNorthAmericanFormat$1,
433
- parseDate: parseDate$1,
434
- getDateAsString: getDateAsString$1
435
- } = dateFormatter$1;
559
+ toNorthAmericanFormat: toNorthAmericanFormat$2} = dateFormatter$1;
436
560
 
437
561
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
438
562
  // See LICENSE in the project root for license information.
@@ -752,13 +876,13 @@ let AuroFormValidation$1 = class AuroFormValidation {
752
876
  }
753
877
 
754
878
  // Perform the rest of the validation
755
- const formattedValue = toNorthAmericanFormat$1(elem.value, elem.format);
879
+ const formattedValue = toNorthAmericanFormat$2(elem.value, elem.format);
756
880
  const valueDate = new Date(formattedValue);
757
881
 
758
882
  // // Validate max date
759
883
  if (elem.max?.length === elem.lengthForType) {
760
884
 
761
- const maxDate = new Date(toNorthAmericanFormat$1(elem.max, elem.format));
885
+ const maxDate = new Date(toNorthAmericanFormat$2(elem.max, elem.format));
762
886
 
763
887
  if (valueDate > maxDate) {
764
888
  elem.validity = 'rangeOverflow';
@@ -769,7 +893,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
769
893
 
770
894
  // Validate min date
771
895
  if (elem.min?.length === elem.lengthForType) {
772
- const minDate = new Date(toNorthAmericanFormat$1(elem.min, elem.format));
896
+ const minDate = new Date(toNorthAmericanFormat$2(elem.min, elem.format));
773
897
 
774
898
  if (valueDate < minDate) {
775
899
  elem.validity = 'rangeUnderflow';
@@ -1379,7 +1503,6 @@ class UtilitiesCalendarRender {
1379
1503
  .max="${elem.max}"
1380
1504
  ?noRange="${elem.noRange}"
1381
1505
  .monthFirst="${elem.monthFirst}"
1382
- .hoveredDate="${elem.hoveredDate}"
1383
1506
  .dateTo="${elem.dateTo}"
1384
1507
  .dateFrom="${elem.dateFrom}"
1385
1508
  .locale="${elem.locale}"
@@ -1411,49 +1534,6 @@ var snowflakeStyle = i$3`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
1411
1534
 
1412
1535
  var snowflakeColors = i$3`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
1413
1536
 
1414
- var styleCss$7 = i$3`.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}`;
1415
-
1416
- var colorCss$7 = i$3`.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)}}`;
1417
-
1418
- var styleCss$6 = i$3`: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%}`;
1419
-
1420
- var colorCss$6 = i$3`: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)}`;
1421
-
1422
- /******************************************************************************
1423
- Copyright (c) Microsoft Corporation.
1424
-
1425
- Permission to use, copy, modify, and/or distribute this software for any
1426
- purpose with or without fee is hereby granted.
1427
-
1428
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
1429
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1430
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
1431
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1432
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
1433
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1434
- PERFORMANCE OF THIS SOFTWARE.
1435
- ***************************************************************************** */
1436
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
1437
-
1438
-
1439
- function __decorate(decorators, target, key, desc) {
1440
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1441
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1442
- 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;
1443
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1444
- }
1445
-
1446
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
1447
- var e = new Error(message);
1448
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
1449
- };
1450
-
1451
- /**
1452
- * @license
1453
- * Copyright 2017 Google LLC
1454
- * SPDX-License-Identifier: BSD-3-Clause
1455
- */const o$4={attribute:true,type:String,converter:u$9,reflect:false,hasChanged:f$8},r$4=(t=o$4,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),"setter"===n&&((t=Object.create(t)).wrapped=true),s.set(r.name,t),"accessor"===n){const{name:o}=r;return {set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,true,r);},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if("setter"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,true,r);}}throw Error("Unsupported decorator location: "+n)};function n$4(t){return (e,o)=>"object"==typeof o?r$4(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}
1456
-
1457
1537
  /**
1458
1538
  * @module constants
1459
1539
  * @summary Useful constants
@@ -7208,6 +7288,49 @@ function subYears(date, amount, options) {
7208
7288
  return addYears(date, -1, options);
7209
7289
  }
7210
7290
 
7291
+ var styleCss$7 = i$3`.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}`;
7292
+
7293
+ var colorCss$7 = i$3`.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)}}`;
7294
+
7295
+ var styleCss$6 = i$3`: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%}`;
7296
+
7297
+ var colorCss$6 = i$3`: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)}`;
7298
+
7299
+ /******************************************************************************
7300
+ Copyright (c) Microsoft Corporation.
7301
+
7302
+ Permission to use, copy, modify, and/or distribute this software for any
7303
+ purpose with or without fee is hereby granted.
7304
+
7305
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
7306
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
7307
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
7308
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
7309
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
7310
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
7311
+ PERFORMANCE OF THIS SOFTWARE.
7312
+ ***************************************************************************** */
7313
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
7314
+
7315
+
7316
+ function __decorate(decorators, target, key, desc) {
7317
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7318
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7319
+ 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;
7320
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7321
+ }
7322
+
7323
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
7324
+ var e = new Error(message);
7325
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
7326
+ };
7327
+
7328
+ /**
7329
+ * @license
7330
+ * Copyright 2017 Google LLC
7331
+ * SPDX-License-Identifier: BSD-3-Clause
7332
+ */const o$4={attribute:true,type:String,converter:u$9,reflect:false,hasChanged:f$8},r$4=(t=o$4,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),"setter"===n&&((t=Object.create(t)).wrapped=true),s.set(r.name,t),"accessor"===n){const{name:o}=r;return {set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,true,r);},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if("setter"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,true,r);}}throw Error("Unsupported decorator location: "+n)};function n$4(t){return (e,o)=>"object"==typeof o?r$4(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}
7333
+
7211
7334
  class RangeDatepickerCell extends i$1 {
7212
7335
  constructor() {
7213
7336
  super(...arguments);
@@ -7930,9 +8053,9 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
7930
8053
  __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
7931
8054
  AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
7932
8055
 
7933
- var styleCss$5 = i$3`.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}}`;
8056
+ var styleCss$5 = i$3`.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: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)}}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}.srOnly{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;clip:rect(0, 0, 0, 0);white-space:nowrap}.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_]){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}`;
7934
8057
 
7935
- var colorCss$5 = i$3`: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}`;
8058
+ var colorCss$5 = i$3`: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{--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}`;
7936
8059
 
7937
8060
  let s$2 = 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$3="top",o$3="bottom",n$3="right",a="left",l$3="auto",c$5=[r$3,o$3,n$3,a],p$7="start",d$3="end",f$7="viewport",h$6="popper",u$8=c$5.reduce(function(e,t){return e.concat([t+"-"+p$7,t+"-"+d$3])},[]),m$7=[].concat(c$5,[l$3]).reduce(function(e,t){return e.concat([t,t+"-"+p$7,t+"-"+d$3])},[]),g$6=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function v$4(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$4(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$4(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$7(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$4(e))>=0}function H$3(e){return ((w$6(e)?e.ownerDocument:e.document)||window.document).documentElement}function C$3(e){return "html"===v$4(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$4(i)||"body"===v$4(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$4(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$3].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$5))}(l.padding,i),g=M$7(p),v="y"===h?r$3:a,y="y"===h?o$3:n$3,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$3,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$3||(l===a||l===n$3)&&c===d$3)T=o$3,x-=(g&&E===z&&z.visualViewport?z.visualViewport.height:E[M])-s.height,x*=h?1:-1;if(l===a||(l===r$3||l===o$3)&&c===d$3)O=n$3,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$4(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$7?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$4(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$3:t={x:h,y:i.y-s.height};break;case o$3:t={x:h,y:i.y+i.height};break;case n$3: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$7: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$7:m,v=i.elementContext,y=void 0===v?h$6:v,b=i.altBoundary,x=void 0!==b&&b,S=i.padding,_=void 0===S?0:S,A=I("number"!=typeof _?_:q$3(_,c$5)),O=y===h$6?"reference":h$6,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$6?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$6&&D){var N=D[a];Object.keys(C).forEach(function(e){var t=[n$3,o$3].indexOf(e)>=0?1:-1,i=[r$3,o$3].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$7:l,d=U$3(s),f=d?a?u$8:u$8.filter(function(e){return U$3(e)===d}):c$5,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$7,D=[r$3,o$3].indexOf(H)>=0,N=D?"width":"height",P=ne(t,{placement:R,boundary:g,rootBoundary:v,altBoundary:y,padding:m}),j=D?C?n$3:a:C?o$3:r$3;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$3,n$3,o$3,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$7.reduce(function(e,i){return e[i]=function(e,t,i){var s=_$4(e),o=[a,r$3].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$3].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$3:a,V="y"===z?o$3:n$3,W="y"===z?"height":"width",X=B[z],$=X+x[F],G=X-x[V],K=y?-R[W]/2:0,Y=k===p$7?L[W]:R[W],J=k===p$7?-R[W]:-L[W],Q=t.elements.arrow,Z=y&&Q?M$7(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$3:a,ue="x"===z?o$3:n$3,me=B[E],ge="y"===E?"height":"width",ve=me+x[he],ye=me-x[ue],we=-1!==[r$3,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$4(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$7(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=i$3`::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)}
7938
8061
  `,xe=i$3`.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:""}
@@ -7955,7 +8078,7 @@ let s$2 = class s{registerComponent(e,t){customElements.get(e)||customElements.d
7955
8078
 
7956
8079
  var popoverVersion = '6.0.1';
7957
8080
 
7958
- /* 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 */
8081
+ /* 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 */
7959
8082
 
7960
8083
  class AuroCalendarCell extends i$1 {
7961
8084
  constructor() {
@@ -7963,7 +8086,6 @@ class AuroCalendarCell extends i$1 {
7963
8086
 
7964
8087
  this.day = null;
7965
8088
  this.selected = false;
7966
- this.hovered = false;
7967
8089
  this.dateTo = null;
7968
8090
  this.dateFrom = null;
7969
8091
  this.month = null;
@@ -7971,7 +8093,6 @@ class AuroCalendarCell extends i$1 {
7971
8093
  this.max = null;
7972
8094
  this.disabled = false;
7973
8095
  this.disabledDays = [];
7974
- this.hoveredDate = null;
7975
8096
  this.isCurrentDate = false;
7976
8097
  this._locale = null;
7977
8098
  this.dateStr = null;
@@ -7996,7 +8117,6 @@ class AuroCalendarCell extends i$1 {
7996
8117
  // ...super.properties,
7997
8118
  day: { type: Object },
7998
8119
  selected: { type: Boolean },
7999
- hovered: { type: Boolean },
8000
8120
  dateTo: { type: String },
8001
8121
  dateFrom: { type: String },
8002
8122
  month: { type: String },
@@ -8007,15 +8127,10 @@ class AuroCalendarCell extends i$1 {
8007
8127
  reflect: true
8008
8128
  },
8009
8129
  disabledDays: { type: Array },
8010
- hoveredDate: { type: String },
8011
8130
  isCurrentDate: { type: Boolean },
8012
8131
  locale: { type: Object },
8013
8132
  dateStr: { type: String },
8014
8133
  renderForDateSlot: { type: Boolean },
8015
- active: {
8016
- type: Boolean,
8017
- reflect: true
8018
- },
8019
8134
  hasPopoverContent: { type: Boolean }
8020
8135
  };
8021
8136
  }
@@ -8040,17 +8155,17 @@ class AuroCalendarCell extends i$1 {
8040
8155
  }
8041
8156
 
8042
8157
  /**
8043
- * Handles selected and hovered states of the calendar cell when the date changes.
8158
+ * Handles selected state of the calendar cell when the selection changes.
8159
+ * Also clears any imperative range preview classes so classMap is the
8160
+ * sole source of truth after a selection update.
8044
8161
  * @private
8045
8162
  * @param {Number} dateFrom - Depart date.
8046
8163
  * @param {Number} dateTo - Return date.
8047
- * @param {Number} hoveredDate - Hovered date.
8048
8164
  * @param {Object} day - An object containing the dateFrom and day of month values.
8049
8165
  * @returns {void}
8050
8166
  */
8051
- dateChanged(dateFrom, dateTo, hoveredDate, day) {
8167
+ dateChanged(dateFrom, dateTo, day) {
8052
8168
  this.selected = false;
8053
- this.hovered = false;
8054
8169
 
8055
8170
  const parsedDateFrom = parseInt(dateFrom, 10);
8056
8171
  const parsedDateTo = parseInt(dateTo, 10);
@@ -8062,10 +8177,6 @@ class AuroCalendarCell extends i$1 {
8062
8177
  if (day.date === departTimestamp || day.date === returnTimestamp) {
8063
8178
  this.selected = true;
8064
8179
  }
8065
-
8066
- if (((hoveredDate === day.date || day.date < hoveredDate) && day.date > parsedDateFrom && !parsedDateTo && !Number.isNaN(parsedDateFrom) && parsedDateFrom !== undefined && !this.selected) || (day.date > parsedDateFrom && day.date < parsedDateTo)) {
8067
- this.hovered = true;
8068
- }
8069
8180
  }
8070
8181
  }
8071
8182
 
@@ -8091,16 +8202,30 @@ class AuroCalendarCell extends i$1 {
8091
8202
 
8092
8203
  /**
8093
8204
  * Handles user hover events and dispatches a custom event.
8094
- * Always dispatches for range pickers so the preview updates correctly.
8205
+ * Does NOT set any reactive properties the range preview is handled
8206
+ * imperatively by the calendar component to avoid O(N) re-renders.
8095
8207
  * @private
8096
8208
  * @returns {void}
8097
8209
  */
8098
8210
  handleHover() {
8099
- this.hovered = true;
8100
-
8101
- let _a;
8102
8211
  this.dispatchEvent(new CustomEvent('date-is-hovered', {
8103
- detail: { date: (_a = this.day) === null || _a === void 0 ? void 0 : _a.date },
8212
+ detail: { date: this.day?.date },
8213
+ }));
8214
+ }
8215
+
8216
+ /**
8217
+ * Handles focus events on the cell button.
8218
+ * Dispatches a lightweight event for the calendar to handle SR
8219
+ * announcements and range preview updates without triggering
8220
+ * any Lit lifecycle updates.
8221
+ * @private
8222
+ * @returns {void}
8223
+ */
8224
+ handleFocus() {
8225
+ this.dispatchEvent(new CustomEvent('calendar-cell-focused', {
8226
+ bubbles: true,
8227
+ composed: true,
8228
+ detail: { date: this.day?.date },
8104
8229
  }));
8105
8230
  }
8106
8231
 
@@ -8114,7 +8239,7 @@ class AuroCalendarCell extends i$1 {
8114
8239
  * @returns {Boolean} - True if the date is out of range.
8115
8240
  */
8116
8241
  isOutOfRange(day, min, max) {
8117
- if (day && day.date != null) {
8242
+ if (day && day.date !== null && day.date !== undefined) {
8118
8243
  return day.date < min || day.date > max;
8119
8244
  }
8120
8245
  return false;
@@ -8127,13 +8252,13 @@ class AuroCalendarCell extends i$1 {
8127
8252
  * @returns {Boolean} - True if the date is a blackout date.
8128
8253
  */
8129
8254
  isBlackout() {
8130
- if (!this.day || this.day.date == null || this.isOutOfRange(this.day, this.min, this.max)) {
8255
+ if (!this.day || this.day.date === null || this.day.date === undefined || this.isOutOfRange(this.day, this.min, this.max)) {
8131
8256
  return false;
8132
8257
  }
8133
8258
 
8134
8259
  // Check against disabledDays timestamps (legacy path)
8135
8260
  if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
8136
- if (this.disabledDays.findIndex(d => parseInt(d, 10) === this.day.date) !== -1) {
8261
+ if (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1) {
8137
8262
  return true;
8138
8263
  }
8139
8264
  }
@@ -8215,12 +8340,26 @@ class AuroCalendarCell extends i$1 {
8215
8340
 
8216
8341
  let label = dateFormatter.format(date);
8217
8342
 
8343
+ // Append date slot content (e.g. prices) so it is announced with the date.
8344
+ if (this.renderForDateSlot) {
8345
+ const dateSlotEl = this.querySelector(`[slot="date_${this.dateStr}"]`);
8346
+ if (dateSlotEl) {
8347
+ const text = dateSlotEl.innerText?.trim();
8348
+ if (text) {
8349
+ label += `, ${text}`;
8350
+ }
8351
+ }
8352
+ }
8353
+
8218
8354
  // appending popover content here so that it gets read in a logical order with the other date content.
8219
8355
  if (this.hasPopoverContent) {
8220
- label += `, ${this.querySelector(`[slot="popover_${this.dateStr}"]`).innerText.trim()}`;
8356
+ const popoverEl = this.querySelector(`[slot="popover_${this.dateStr}"]`);
8357
+ if (popoverEl) {
8358
+ label += `, ${popoverEl.innerText.trim()}`;
8359
+ }
8221
8360
  }
8222
8361
 
8223
- // Append range position if in range mode
8362
+ // Append range position label for range datepickers
8224
8363
  const rangePosition = this.getRangePosition();
8225
8364
  if (rangePosition) {
8226
8365
  label += `, ${rangePosition}`;
@@ -8450,6 +8589,11 @@ class AuroCalendarCell extends i$1 {
8450
8589
  };
8451
8590
  this.datepicker.addEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
8452
8591
 
8592
+ // Cache button reference for imperative class manipulation.
8593
+ this.updateComplete.then(() => {
8594
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
8595
+ });
8596
+
8453
8597
  // Trigger an initial update now that `this.datepicker` is assigned so
8454
8598
  // cells reflect blackout/slot state that was configured before first render.
8455
8599
  this.requestUpdate();
@@ -8481,13 +8625,26 @@ class AuroCalendarCell extends i$1 {
8481
8625
  }
8482
8626
 
8483
8627
  updated(properties) {
8484
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('hoveredDate') || properties.has('day')) {
8485
- this.dateChanged(this.dateFrom, this.dateTo, this.hoveredDate, this.day);
8628
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('day')) {
8629
+ this.dateChanged(this.dateFrom, this.dateTo, this.day);
8486
8630
  }
8487
8631
 
8488
- if (this.day) {
8632
+ if (properties.has('day') && this.day) {
8489
8633
  this.setDateSlotName();
8490
8634
  this.handleSlotContent();
8635
+
8636
+ // Re-cache button reference when the day changes (cell may have re-rendered).
8637
+ this.updateComplete.then(() => {
8638
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
8639
+ });
8640
+
8641
+ // Update host-level aria attributes for ariaActiveDescendantElement.
8642
+ this.updateHostAria();
8643
+ }
8644
+
8645
+ // Update host aria when selection changes (aria-selected, range labels)
8646
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
8647
+ this.updateHostAria();
8491
8648
  }
8492
8649
 
8493
8650
  // Configure popover when it first becomes rendered
@@ -8497,31 +8654,129 @@ class AuroCalendarCell extends i$1 {
8497
8654
  }
8498
8655
 
8499
8656
  /**
8500
- * Programmatically focuses the cell's interactive button element.
8657
+ * Updates ARIA attributes on the host element so that
8658
+ * ariaActiveDescendantElement can expose cell info to the SR.
8659
+ * @private
8501
8660
  * @returns {void}
8502
8661
  */
8503
- focusButton() {
8504
- const button = this.shadowRoot.querySelector('button:not([aria-hidden])');
8505
- if (button) {
8506
- button.focus();
8662
+ updateHostAria() {
8663
+ if (!this.day || this.day.date === undefined) return;
8664
+
8665
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
8666
+ if (outOfRange) {
8667
+ this.removeAttribute('role');
8668
+ this.removeAttribute('aria-label');
8669
+ return;
8670
+ }
8671
+
8672
+ // The host acts as the gridcell for ariaActiveDescendantElement.
8673
+ this.setAttribute('role', 'gridcell');
8674
+ this.setAttribute('aria-label', this.getAriaLabel());
8675
+ this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
8676
+
8677
+ if (this.isBlackout()) {
8678
+ this.setAttribute('aria-disabled', 'true');
8679
+ } else {
8680
+ this.removeAttribute('aria-disabled');
8681
+ }
8682
+ }
8683
+
8684
+ /**
8685
+ * Programmatically focuses the cell's interactive button element.
8686
+ * Uses focusVisible: true so the :focus-visible ring appears even when
8687
+ * the bib was opened via mouse click (which sets mouse input modality).
8688
+ * @returns {void}
8689
+ */
8690
+ focusButton() {
8691
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
8692
+ if (button) {
8693
+ button.focus({ focusVisible: true });
8694
+ }
8695
+ }
8696
+
8697
+ /**
8698
+ * Imperatively marks this cell as active without triggering a Lit re-render.
8699
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
8700
+ * @returns {void}
8701
+ */
8702
+ setActive() {
8703
+ this.active = true;
8704
+
8705
+ // Show the popover when this cell becomes active via keyboard navigation.
8706
+ if (this.auroPopover) {
8707
+ this.auroPopover.toggleShow();
8708
+ }
8709
+ }
8710
+
8711
+ /**
8712
+ * Imperatively marks this cell as inactive without triggering a Lit re-render.
8713
+ * @returns {void}
8714
+ */
8715
+ clearActive() {
8716
+ this.active = false;
8717
+ const btn = this._cachedButton || this.shadowRoot.querySelector('button.day');
8718
+ if (btn) {
8719
+ btn.classList.remove('activeCell');
8720
+ }
8721
+
8722
+ // Hide the popover when this cell loses active state.
8723
+ if (this.auroPopover) {
8724
+ this.auroPopover.toggleHide();
8507
8725
  }
8508
8726
  }
8509
8727
 
8728
+ /**
8729
+ * Updates range preview classes imperatively (no Lit re-render).
8730
+ * Called by the calendar component when the hovered date changes
8731
+ * during range selection (dateFrom set, dateTo not yet set).
8732
+ * @param {Number} hoveredDate - Unix timestamp of the currently hovered/focused date.
8733
+ * @param {Number} dateFrom - Unix timestamp of the selected departure date.
8734
+ * @returns {void}
8735
+ */
8736
+ updateRangePreviewClasses(hoveredDate, dateFrom) {
8737
+ const btn = this._cachedButton;
8738
+ if (!btn || !this.day) return;
8739
+
8740
+ const dayDate = this.day.date;
8741
+ const departTimestamp = startOfDay(dateFrom * 1000) / 1000;
8742
+ const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
8743
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
8744
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
8745
+
8746
+ btn.classList.toggle('inRange', isInRange);
8747
+ btn.classList.toggle('lastHoveredDate', isLastHovered);
8748
+ btn.classList.toggle('rangeDepartDate', isDepartWithPreview);
8749
+ }
8750
+
8751
+ /**
8752
+ * Clears all imperative range preview classes from the cell button.
8753
+ * Called when a selection occurs so classMap becomes the sole source of truth.
8754
+ * @returns {void}
8755
+ */
8756
+ clearRangePreviewClasses() {
8757
+ const btn = this._cachedButton;
8758
+ if (!btn) return;
8759
+
8760
+ btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
8761
+ }
8762
+
8510
8763
  renderCellButton() {
8511
8764
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
8512
- const role = outOfRange ? 'presentation' : 'gridcell';
8513
8765
  const blackout = this.isBlackout();
8514
8766
 
8767
+ // Static and selection-driven classes only. Hover-driven classes
8768
+ // (inRange, lastHoveredDate, rangeDepartDate during preview) are
8769
+ // managed imperatively via updateRangePreviewClasses() to avoid
8770
+ // O(N) Lit re-renders on every focus/hover event.
8515
8771
  const buttonClasses = {
8516
8772
  'day': true,
8517
- 'body-lg': true,
8773
+ 'body-default': true,
8518
8774
  'currentDate': this.isCurrentDate,
8519
8775
  'selected': this.selected,
8520
- 'inRange': this.datepicker?.hasAttribute('range') && this.hovered && this.isInRange(this.day, this.dateFrom, this.dateTo),
8521
- 'lastHoveredDate': this.isLastHoveredDate(this.day, this.dateFrom, this.dateTo, this.hoveredDate) && this.datepicker && this.datepicker.hasAttribute('range'),
8776
+ 'inRange': this.datepicker?.hasAttribute('range') && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo),
8522
8777
  'disabled': outOfRange,
8523
- 'blackout': blackout,
8524
- 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && (this.hoveredDate > this.dateFrom || this.dateTo),
8778
+ blackout,
8779
+ 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && this.dateTo,
8525
8780
  'rangeReturnDate': this.datepicker?.hasAttribute('range') && this.isReturnDate(this.day, this.dateFrom, this.dateTo),
8526
8781
  'reference': this.isReferenceDate(this.dateStr),
8527
8782
  'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo
@@ -8531,30 +8786,25 @@ class AuroCalendarCell extends i$1 {
8531
8786
  <button
8532
8787
  slot="trigger"
8533
8788
  id="${this.getCellId()}"
8534
- role="${role}"
8535
8789
  @click="${outOfRange ? undefined : this.handleTap}"
8536
8790
  @mouseover="${outOfRange ? undefined : this.handleHover}"
8537
- @focus="${outOfRange ? undefined : this.handleHover}"
8791
+ @focus="${outOfRange ? undefined : this.handleFocus}"
8538
8792
  class="${e$4(buttonClasses)}"
8539
8793
  ?disabled="${outOfRange}"
8540
- aria-disabled="${blackout ? 'true' : A$4}"
8541
8794
  aria-hidden="${outOfRange ? 'true' : A$4}"
8542
- aria-selected="${this.selected ? 'true' : 'false'}"
8543
- aria-current="${this.isCurrentDate ? 'date' : A$4}"
8544
- tabindex="${this.active ? '0' : '-1'}">
8545
- <span class="srOnly">${this.getAriaLabel()}</span>
8795
+ tabindex="-1">
8546
8796
  <div class="buttonWrapper" aria-hidden="true">
8547
8797
  <div class="currentDayMarker">${this.day?.title || A$4}</div>
8548
- </div>
8549
- <div class="dateSlot body-2xs" part="dateSlot" ?hidden="${!this.renderForDateSlot}">
8550
- <slot name="date_${this.dateStr}"></slot>
8798
+ <div class="dateSlot body-2xs" part="dateSlot" aria-hidden="true" ?hidden="${!this.renderForDateSlot}">
8799
+ <slot name="date_${this.dateStr}"></slot>
8800
+ </div>
8551
8801
  </div>
8552
8802
  </button>
8553
8803
  `;
8554
8804
  }
8555
8805
 
8556
8806
  render() {
8557
- const hasPopoverContent = this.hasPopoverContent;
8807
+ const { hasPopoverContent } = this;
8558
8808
 
8559
8809
  if (hasPopoverContent) {
8560
8810
  return u$a`
@@ -8684,7 +8934,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8684
8934
  */
8685
8935
  renderDayOfWeek(dayOfWeek, index) {
8686
8936
  const fullName = this.dayFullNames ? this.dayFullNames[index] : dayOfWeek;
8687
- return b$5`<div class="th body-default" role="columnheader"><abbr title="${fullName}">${dayOfWeek}</abbr></div>`;
8937
+ return b$5`<div class="th body-default"><abbr title="${fullName}">${dayOfWeek}</abbr></div>`;
8688
8938
  }
8689
8939
 
8690
8940
  /**
@@ -8693,12 +8943,28 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8693
8943
  */
8694
8944
  getFocusableCells() {
8695
8945
  const cells = Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-cell'));
8696
- return cells.filter(cell => {
8697
- if (!cell.day) return false;
8946
+ return cells.filter((cell) => {
8947
+ if (!cell.day) {
8948
+ return false;
8949
+ }
8698
8950
  return !cell.isOutOfRange(cell.day, cell.min, cell.max);
8699
8951
  });
8700
8952
  }
8701
8953
 
8954
+ /**
8955
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
8956
+ * as a reactive property. Instead, just dispatches the event upward so
8957
+ * the calendar can handle range preview imperatively.
8958
+ * @private
8959
+ * @param {CustomEvent} event - The date-is-hovered event from a cell.
8960
+ * @returns {void}
8961
+ */
8962
+ handleDateHovered(event) {
8963
+ this.dispatchEvent(new CustomEvent('hovered-date-changed', {
8964
+ detail: { value: event.detail.date },
8965
+ }));
8966
+ }
8967
+
8702
8968
  /**
8703
8969
  * Handles arrow key navigation within the month grid.
8704
8970
  * Dispatches a cross-month navigation event when the boundary is reached.
@@ -8708,18 +8974,29 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8708
8974
  */
8709
8975
  handleGridKeyDown(event) {
8710
8976
  const { key } = event;
8711
- const arrowKeys = ['ArrowRight', 'ArrowLeft', 'ArrowDown', 'ArrowUp'];
8977
+ const arrowKeys = [
8978
+ 'ArrowRight',
8979
+ 'ArrowLeft',
8980
+ 'ArrowDown',
8981
+ 'ArrowUp'
8982
+ ];
8712
8983
 
8713
- if (!arrowKeys.includes(key)) return;
8984
+ if (!arrowKeys.includes(key)) {
8985
+ return;
8986
+ }
8714
8987
 
8715
8988
  event.preventDefault();
8716
8989
 
8717
8990
  const focusableCells = this.getFocusableCells();
8718
- if (focusableCells.length === 0) return;
8991
+ if (focusableCells.length === 0) {
8992
+ return;
8993
+ }
8719
8994
 
8720
8995
  // Find the currently active cell within this month
8721
- const activeCell = focusableCells.find(cell => cell.active);
8722
- if (!activeCell) return;
8996
+ const activeCell = focusableCells.find((cell) => cell.active);
8997
+ if (!activeCell) {
8998
+ return;
8999
+ }
8723
9000
 
8724
9001
  const activeIndex = focusableCells.indexOf(activeCell);
8725
9002
  let targetCell = null;
@@ -8732,7 +9009,9 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8732
9009
  this.dispatchEvent(new CustomEvent('calendar-month-boundary', {
8733
9010
  bubbles: true,
8734
9011
  composed: true,
8735
- detail: { direction: 'next', fromDate: activeCell.day.date, key }
9012
+ detail: { direction: 'next',
9013
+ fromDate: activeCell.day.date,
9014
+ key }
8736
9015
  }));
8737
9016
  return;
8738
9017
  }
@@ -8744,7 +9023,9 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8744
9023
  this.dispatchEvent(new CustomEvent('calendar-month-boundary', {
8745
9024
  bubbles: true,
8746
9025
  composed: true,
8747
- detail: { direction: 'prev', fromDate: activeCell.day.date, key }
9026
+ detail: { direction: 'prev',
9027
+ fromDate: activeCell.day.date,
9028
+ key }
8748
9029
  }));
8749
9030
  return;
8750
9031
  }
@@ -8758,7 +9039,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8758
9039
  const targetDate = Math.floor(currentDate.getTime() / 1000);
8759
9040
 
8760
9041
  // Look for the target date in this month's focusable cells
8761
- targetCell = focusableCells.find(cell => cell.day.date === targetDate);
9042
+ targetCell = focusableCells.find((cell) => cell.day.date === targetDate);
8762
9043
 
8763
9044
  if (!targetCell) {
8764
9045
  // Target is in another month or all cells in that direction are disabled
@@ -8766,7 +9047,9 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8766
9047
  this.dispatchEvent(new CustomEvent('calendar-month-boundary', {
8767
9048
  bubbles: true,
8768
9049
  composed: true,
8769
- detail: { direction, fromDate: activeCell.day.date, key }
9050
+ detail: { direction,
9051
+ fromDate: activeCell.day.date,
9052
+ key }
8770
9053
  }));
8771
9054
  return;
8772
9055
  }
@@ -8797,7 +9080,6 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8797
9080
  .min="${this.min}"
8798
9081
  .max="${this.max}"
8799
9082
  .month="${this.month}"
8800
- .hoveredDate="${this.hoveredDate}"
8801
9083
  .dateTo="${this.dateTo}"
8802
9084
  .dateFrom="${this.dateFrom}"
8803
9085
  .locale="${this.locale}"
@@ -8822,7 +9104,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8822
9104
  <div aria-labelledby="${this.getHeadingId()}">
8823
9105
  <div class="header">
8824
9106
  ${this.renderPrevButton()}
8825
- <div class="headerTitle heading-xs" id="${this.getHeadingId()}" aria-live="polite" aria-atomic="true">
9107
+ <div class="headerTitle heading-xs" id="${this.getHeadingId()}" aria-hidden="true">
8826
9108
  ${this.monthFirst ? b$5`
8827
9109
  <div>${this.computeCurrentMonthName(this.month)}</div>
8828
9110
  <div>${this.renderYear()}</div>
@@ -8834,9 +9116,9 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8834
9116
  ${this.renderNextButton()}
8835
9117
  </div>
8836
9118
 
8837
- <div class="table" role="grid" aria-labelledby="${this.getHeadingId()}" @keydown="${this.handleGridKeyDown}">
8838
- <div class="thead" role="rowgroup">
8839
- <div class="tr" role="row">
9119
+ <div class="table" role="grid" aria-labelledby="${this.getHeadingId()}">
9120
+ <div class="thead" aria-hidden="true">
9121
+ <div class="tr">
8840
9122
  ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map((dayNameOfWeek, index) => this.renderDayOfWeek(dayNameOfWeek, index))}
8841
9123
  </div>
8842
9124
  </div>
@@ -9658,7 +9940,7 @@ class AuroBibtemplate extends i$1 {
9658
9940
  }
9659
9941
  }
9660
9942
 
9661
- var formkitVersion$2 = '202606011921';
9943
+ var formkitVersion$2 = '202606012111';
9662
9944
 
9663
9945
  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=i$5`${s$5(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$4 = 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$3=i$3`: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}
9664
9946
  `,u$6=i$3`.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}}
@@ -9719,7 +10001,7 @@ let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[
9719
10001
 
9720
10002
  var buttonVersion$1 = '12.3.2';
9721
10003
 
9722
- /* eslint-disable no-magic-numbers, no-undef-init, max-lines, lit/binding-positions, lit/no-invalid-html */
10004
+ /* 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 */
9723
10005
 
9724
10006
 
9725
10007
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
@@ -9763,6 +10045,13 @@ class AuroCalendar extends RangeDatepicker {
9763
10045
  */
9764
10046
  this.activeCellDate = null;
9765
10047
 
10048
+ /**
10049
+ * Whether the #calendarGrid wrapper currently has focus.
10050
+ * Used to determine whether the visualFocus ring should be shown.
10051
+ * @private
10052
+ */
10053
+ this._gridHasFocus = false;
10054
+
9766
10055
  /**
9767
10056
  * @private
9768
10057
  */
@@ -9796,6 +10085,12 @@ class AuroCalendar extends RangeDatepicker {
9796
10085
  this.buttonTag = versioning.generateTag('auro-formkit-datepicker-button', buttonVersion$1, T$1);
9797
10086
 
9798
10087
  this.dropdown = undefined;
10088
+
10089
+ /**
10090
+ * Unique instance ID for the live region element.
10091
+ * @private
10092
+ */
10093
+ this._calendarInstanceId = Date.now().toString(36);
9799
10094
  }
9800
10095
 
9801
10096
  static get styles() {
@@ -9808,6 +10103,7 @@ class AuroCalendar extends RangeDatepicker {
9808
10103
 
9809
10104
  static get properties() {
9810
10105
  return {
10106
+
9811
10107
  /**
9812
10108
  * The last month that may be displayed in the calendar.
9813
10109
  */
@@ -9924,22 +10220,36 @@ class AuroCalendar extends RangeDatepicker {
9924
10220
  /**
9925
10221
  * Updates the month and year when the user navigates to the previous calendar month.
9926
10222
  * @private
10223
+ * @param {Object} [options] - Optional settings.
10224
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
10225
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
9927
10226
  * @returns {void}
9928
10227
  */
9929
- handlePrevMonth() {
10228
+ handlePrevMonth(options) {
10229
+ const opts = options instanceof Event ? {} : options || {};
10230
+ this.clearRangePreview();
9930
10231
  this.utilCal.handleMonthChange(this, 'prev');
9931
- this.updateActiveCellForVisibleMonth();
10232
+ if (!opts.skipActiveUpdate) {
10233
+ this.updateActiveCellForVisibleMonth();
10234
+ }
9932
10235
  this.announceMonthChange();
9933
10236
  }
9934
10237
 
9935
10238
  /**
9936
10239
  * Updates the month and year when the user navigates to the next calendar month.
9937
10240
  * @private
10241
+ * @param {Object} [options] - Optional settings.
10242
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
10243
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
9938
10244
  * @returns {void}
9939
10245
  */
9940
- handleNextMonth() {
10246
+ handleNextMonth(options) {
10247
+ const opts = options instanceof Event ? {} : options || {};
10248
+ this.clearRangePreview();
9941
10249
  this.utilCal.handleMonthChange(this, 'next');
9942
- this.updateActiveCellForVisibleMonth();
10250
+ if (!opts.skipActiveUpdate) {
10251
+ this.updateActiveCellForVisibleMonth();
10252
+ }
9943
10253
  this.announceMonthChange();
9944
10254
  }
9945
10255
 
@@ -9949,27 +10259,39 @@ class AuroCalendar extends RangeDatepicker {
9949
10259
  * @returns {void}
9950
10260
  */
9951
10261
  announceMonthChange() {
10262
+ // Cancel any pending debounced cell announcement so it does not
10263
+ // overwrite this month navigation announcement.
10264
+ if (this._focusAnnounceTimer) {
10265
+ clearTimeout(this._focusAnnounceTimer);
10266
+ this._focusAnnounceTimer = null;
10267
+ }
10268
+
9952
10269
  const date = new Date(this.centralDate);
9953
10270
  const localeCode = this.locale?.code || undefined;
9954
- const formatter = new Intl.DateTimeFormat(localeCode, { month: 'long', year: 'numeric' });
10271
+ const formatter = new Intl.DateTimeFormat(localeCode, { month: 'long',
10272
+ year: 'numeric' });
9955
10273
  this.announceSelection(formatter.format(date));
9956
10274
  }
9957
10275
 
9958
10276
  /**
9959
- * Recomputes and sets the active cell for the newly visible month after
9960
- * month navigation. Without this, activeCellDate can point at a date in
9961
- * the old month, leaving no tabindex="0" cell in the grid.
10277
+ * Updates the active cell after month navigation (prev/next buttons).
10278
+ * Always moves the active cell to the first enabled date in the newly
10279
+ * visible months so that tabbing back to the grid lands on an enabled cell.
9962
10280
  * @private
9963
10281
  * @returns {void}
9964
10282
  */
9965
10283
  updateActiveCellForVisibleMonth() {
9966
- // Skip the dateFrom shortcut so the active cell lands in the newly
9967
- // visible month rather than jumping back to the selected date's month.
9968
- this.activeCellDate = this.computeActiveDate({ skipDateFrom: true });
9969
- this.updateComplete.then(() => {
9970
- if (this.activeCellDate != null) {
9971
- this.setActiveCell(this.activeCellDate);
9972
- }
10284
+ // Use double-rAF to ensure child month/cell components have fully
10285
+ // rendered and cached their button references before we set tabindex.
10286
+ requestAnimationFrame(() => {
10287
+ requestAnimationFrame(() => {
10288
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
10289
+
10290
+ if (newDate !== null && newDate !== undefined) {
10291
+ this.activeCellDate = newDate;
10292
+ this.setActiveCell(this.activeCellDate);
10293
+ }
10294
+ });
9973
10295
  });
9974
10296
  }
9975
10297
 
@@ -10066,7 +10388,9 @@ class AuroCalendar extends RangeDatepicker {
10066
10388
  */
10067
10389
  focusCloseButton() {
10068
10390
  const bibtemplate = this.shadowRoot.querySelector(this.bibtemplateTag._$litStatic$);
10069
- if (bibtemplate) bibtemplate.focusCloseButton();
10391
+ if (bibtemplate) {
10392
+ bibtemplate.focusCloseButton();
10393
+ }
10070
10394
  }
10071
10395
 
10072
10396
  /**
@@ -10095,7 +10419,7 @@ class AuroCalendar extends RangeDatepicker {
10095
10419
  getAllFocusableCells() {
10096
10420
  const months = this.getMonthComponents();
10097
10421
  let cells = [];
10098
- months.forEach(month => {
10422
+ months.forEach((month) => {
10099
10423
  cells = cells.concat(month.getFocusableCells());
10100
10424
  });
10101
10425
  return cells;
@@ -10103,36 +10427,84 @@ class AuroCalendar extends RangeDatepicker {
10103
10427
 
10104
10428
  /**
10105
10429
  * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
10430
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
10431
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
10432
+ * screen readers announce the active cell without moving DOM focus.
10106
10433
  * @param {Number} date - Unix timestamp of the cell to activate.
10107
10434
  * @returns {void}
10108
10435
  */
10109
10436
  setActiveCell(date) {
10110
10437
  const allCells = this.getAllFocusableCells();
10111
10438
 
10112
- allCells.forEach(cell => {
10113
- cell.active = cell.day && cell.day.date === date;
10439
+ let newActiveCell = null;
10440
+ allCells.forEach((cell) => {
10441
+ if (cell.day && cell.day.date === date) {
10442
+ cell.setActive();
10443
+ newActiveCell = cell;
10444
+ } else if (cell.active) {
10445
+ cell.clearActive();
10446
+ }
10114
10447
  });
10115
10448
 
10116
10449
  this.activeCellDate = date;
10450
+
10451
+ // Apply activeCell ring only when the grid currently has focus.
10452
+ if (newActiveCell && this._gridHasFocus) {
10453
+ const btn = newActiveCell._cachedButton || newActiveCell.shadowRoot.querySelector('button.day');
10454
+ if (btn) {
10455
+ btn.classList.add('activeCell');
10456
+ }
10457
+ }
10117
10458
  }
10118
10459
 
10119
10460
  /**
10120
- * Focuses the currently active cell. If activeCellDate is set but no cell
10121
- * has the active attribute yet, sets it first. Waits for the cell's render
10122
- * to complete so the focused button is the final DOM element.
10461
+ * Focuses the calendar grid wrapper and sets the active cell.
10462
+ * DOM focus stays on the grid wrapper; the aria-live region
10463
+ * tells the screen reader which cell is "active".
10123
10464
  * @returns {void}
10124
10465
  */
10125
10466
  focusActiveCell() {
10126
- if (this.activeCellDate != null) {
10467
+ if (this.activeCellDate !== null && this.activeCellDate !== undefined) {
10127
10468
  this.setActiveCell(this.activeCellDate);
10128
10469
  }
10129
10470
 
10130
- const allCells = this.getAllFocusableCells();
10131
- const activeCell = allCells.find(cell => cell.active);
10471
+ const gridWrapper = this.shadowRoot.querySelector('#calendarGrid');
10472
+ if (gridWrapper) {
10473
+ gridWrapper.focus({ preventScroll: true,
10474
+ focusVisible: true });
10475
+ }
10476
+ }
10477
+
10478
+ /**
10479
+ * Shows the activeCell ring when the grid gains focus.
10480
+ * @private
10481
+ * @returns {void}
10482
+ */
10483
+ handleGridFocusIn() {
10484
+ this._gridHasFocus = true;
10485
+ const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
10132
10486
  if (activeCell) {
10133
- activeCell.updateComplete.then(() => {
10134
- activeCell.focusButton();
10135
- });
10487
+ const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
10488
+ if (btn) {
10489
+ btn.classList.add('activeCell');
10490
+ }
10491
+ }
10492
+ }
10493
+
10494
+ /**
10495
+ * Hides the activeCell ring when the grid loses focus.
10496
+ * @private
10497
+ * @returns {void}
10498
+ */
10499
+ handleGridFocusOut() {
10500
+ this._gridHasFocus = false;
10501
+ // Remove activeCell from ALL cells to prevent stale rings.
10502
+ const allCells = this.getAllFocusableCells();
10503
+ for (const cell of allCells) {
10504
+ const btn = cell._cachedButton || cell.shadowRoot.querySelector('button.day');
10505
+ if (btn) {
10506
+ btn.classList.remove('activeCell');
10507
+ }
10136
10508
  }
10137
10509
  }
10138
10510
 
@@ -10147,7 +10519,7 @@ class AuroCalendar extends RangeDatepicker {
10147
10519
  * 5b. First enabled date scanning forward from finite min (unbounded max)
10148
10520
  * 5c. First enabled date scanning backward from finite max (unbounded min)
10149
10521
  * 6. First in-range date (even if blackout) so focus can land somewhere
10150
- * 7. undefined — no valid target
10522
+ * 7. Undefined — no valid target.
10151
10523
  *
10152
10524
  * @private
10153
10525
  * @param {Object} [options] - Optional settings.
@@ -10162,12 +10534,15 @@ class AuroCalendar extends RangeDatepicker {
10162
10534
  /**
10163
10535
  * Adds days to a timestamp using Date arithmetic to handle DST correctly.
10164
10536
  * Returns a local-midnight-aligned timestamp in seconds.
10537
+ * @param {Number} ts - Unix timestamp in seconds.
10538
+ * @param {Number} days - Number of days to add.
10539
+ * @returns {Number} The adjusted timestamp in seconds.
10165
10540
  */
10166
10541
  const addDays = (ts, days) => {
10167
- const d = new Date(ts * 1000);
10168
- d.setDate(d.getDate() + days);
10169
- d.setHours(0, 0, 0, 0);
10170
- return Math.floor(d.getTime() / 1000);
10542
+ const date = new Date(ts * 1000);
10543
+ date.setDate(date.getDate() + days);
10544
+ date.setHours(0, 0, 0, 0);
10545
+ return Math.floor(date.getTime() / 1000);
10171
10546
  };
10172
10547
 
10173
10548
  const rawMin = Number(this.min);
@@ -10178,9 +10553,7 @@ class AuroCalendar extends RangeDatepicker {
10178
10553
  const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
10179
10554
 
10180
10555
  // Build a Set of blackout timestamps for O(1) lookup.
10181
- const blackoutSet = new Set(
10182
- (this.disabledDays || []).map(d => parseInt(d, 10))
10183
- );
10556
+ const blackoutSet = new Set((this.disabledDays || []).map((day) => parseInt(day, 10)));
10184
10557
 
10185
10558
  // Also include ISO-format blackoutDates from the datepicker if available.
10186
10559
  // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
@@ -10189,19 +10562,25 @@ class AuroCalendar extends RangeDatepicker {
10189
10562
  for (const isoStr of isoBlackouts) {
10190
10563
  const parts = isoStr.split('-');
10191
10564
  const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
10192
- if (Number.isFinite(ts)) blackoutSet.add(ts);
10565
+ if (Number.isFinite(ts)) {
10566
+ blackoutSet.add(ts);
10567
+ }
10193
10568
  }
10194
10569
  }
10195
10570
 
10196
10571
  /**
10197
10572
  * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
10198
10573
  * it is within [min, max] AND not a blackout day.
10574
+ * @param {Number} ts - Unix timestamp in seconds.
10575
+ * @returns {boolean} True if the date is enabled.
10199
10576
  */
10200
10577
  const isEnabled = (ts) => ts >= minTs && ts <= maxTs && !blackoutSet.has(ts);
10201
10578
 
10202
10579
  /**
10203
10580
  * A date is "in range" (focusable in the grid) when it is within [min, max].
10204
10581
  * Blackout dates are focusable but not selectable.
10582
+ * @param {Number} ts - Unix timestamp in seconds.
10583
+ * @returns {boolean} True if the date is in range.
10205
10584
  */
10206
10585
  const isInRange = (ts) => ts >= minTs && ts <= maxTs;
10207
10586
 
@@ -10210,7 +10589,9 @@ class AuroCalendar extends RangeDatepicker {
10210
10589
  // the newly visible month rather than the (possibly off-screen) selection.
10211
10590
  if (!options.skipDateFrom && this.dateFrom) {
10212
10591
  const parsedFrom = parseInt(this.dateFrom, 10);
10213
- if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) return parsedFrom;
10592
+ if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) {
10593
+ return parsedFrom;
10594
+ }
10214
10595
  }
10215
10596
 
10216
10597
  // 2. Today's date (midnight-aligned) if enabled.
@@ -10240,23 +10621,33 @@ class AuroCalendar extends RangeDatepicker {
10240
10621
  const endTs = Math.floor(visibleEnd.getTime() / 1000);
10241
10622
  const daysInMonth = visibleEnd.getDate();
10242
10623
 
10243
- for (let idx = 0; idx < daysInMonth; idx++) {
10624
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
10244
10625
  const ts = addDays(startTs, idx);
10245
- if (ts > endTs) break;
10246
- if (isEnabled(ts)) return ts;
10626
+ if (ts > endTs) {
10627
+ break;
10628
+ }
10629
+ if (isEnabled(ts)) {
10630
+ return ts;
10631
+ }
10247
10632
  }
10248
10633
 
10249
10634
  // No enabled date in the visible month — fall back to first in-range
10250
10635
  // date in the month so focus still lands on a focusable cell.
10251
- for (let idx = 0; idx < daysInMonth; idx++) {
10636
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
10252
10637
  const ts = addDays(startTs, idx);
10253
- if (ts > endTs) break;
10254
- if (isInRange(ts)) return ts;
10638
+ if (ts > endTs) {
10639
+ break;
10640
+ }
10641
+ if (isInRange(ts)) {
10642
+ return ts;
10643
+ }
10255
10644
  }
10256
10645
  }
10257
10646
  }
10258
10647
 
10259
- if (isEnabled(now)) return now;
10648
+ if (isEnabled(now)) {
10649
+ return now;
10650
+ }
10260
10651
 
10261
10652
  // When a centralDate is configured (or inferred), constrain the scan to the
10262
10653
  // rendered month(s) first so a single-month calendar does not pick a date
@@ -10275,40 +10666,58 @@ class AuroCalendar extends RangeDatepicker {
10275
10666
  const visDays = Math.round((visEndTs - visStartTs) / 86400) + 1;
10276
10667
 
10277
10668
  // Scan visible months for an enabled date.
10278
- for (let idx = 0; idx < visDays; idx++) {
10669
+ for (let idx = 0; idx < visDays; idx += 1) {
10279
10670
  const ts = addDays(visStartTs, idx);
10280
- if (ts > visEndTs) break;
10281
- if (isEnabled(ts)) return ts;
10671
+ if (ts > visEndTs) {
10672
+ break;
10673
+ }
10674
+ if (isEnabled(ts)) {
10675
+ return ts;
10676
+ }
10282
10677
  }
10283
10678
 
10284
10679
  // No enabled date in visible months — try an in-range (focusable) date so
10285
10680
  // keyboard focus still has a tabindex="0" target.
10286
- for (let idx = 0; idx < visDays; idx++) {
10681
+ for (let idx = 0; idx < visDays; idx += 1) {
10287
10682
  const ts = addDays(visStartTs, idx);
10288
- if (ts > visEndTs) break;
10289
- if (isInRange(ts)) return ts;
10683
+ if (ts > visEndTs) {
10684
+ break;
10685
+ }
10686
+ if (isInRange(ts)) {
10687
+ return ts;
10688
+ }
10290
10689
  }
10291
10690
 
10292
10691
  // 3. First future enabled date (scan forward from tomorrow, capped by max and MAX_SCAN_DAYS).
10293
- for (let idx = 1; idx <= MAX_SCAN_DAYS; idx++) {
10692
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
10294
10693
  const ts = addDays(now, idx);
10295
- if (Number.isFinite(maxTs) && ts > maxTs) break;
10296
- if (isEnabled(ts)) return ts;
10694
+ if (Number.isFinite(maxTs) && ts > maxTs) {
10695
+ break;
10696
+ }
10697
+ if (isEnabled(ts)) {
10698
+ return ts;
10699
+ }
10297
10700
  }
10298
10701
 
10299
10702
  // 4. First previous enabled date (scan backward from yesterday, capped by min and MAX_SCAN_DAYS).
10300
- for (let idx = 1; idx <= MAX_SCAN_DAYS; idx++) {
10703
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
10301
10704
  const ts = addDays(now, -idx);
10302
- if (Number.isFinite(minTs) && ts < minTs) break;
10303
- if (isEnabled(ts)) return ts;
10705
+ if (Number.isFinite(minTs) && ts < minTs) {
10706
+ break;
10707
+ }
10708
+ if (isEnabled(ts)) {
10709
+ return ts;
10710
+ }
10304
10711
  }
10305
10712
 
10306
10713
  // 5. If scans missed (e.g. min/max range is far from today), fall back to
10307
10714
  // the first enabled date in the [min, max] range.
10308
10715
  if (Number.isFinite(minTs) && Number.isFinite(maxTs)) {
10309
10716
  let ts = minTs;
10310
- for (let idx = 0; ts <= maxTs; idx++) {
10311
- if (isEnabled(ts)) return ts;
10717
+ for (let idx = 0; ts <= maxTs; idx += 1) {
10718
+ if (isEnabled(ts)) {
10719
+ return ts;
10720
+ }
10312
10721
  ts = addDays(minTs, idx + 1);
10313
10722
  }
10314
10723
  }
@@ -10316,29 +10725,185 @@ class AuroCalendar extends RangeDatepicker {
10316
10725
  // 5b. Finite min with unbounded max (e.g. minDate far in the future):
10317
10726
  // scan forward from min for up to MAX_SCAN_DAYS.
10318
10727
  if (Number.isFinite(minTs) && !Number.isFinite(maxTs)) {
10319
- for (let idx = 0; idx <= MAX_SCAN_DAYS; idx++) {
10728
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
10320
10729
  const ts = addDays(minTs, idx);
10321
- if (isEnabled(ts)) return ts;
10730
+ if (isEnabled(ts)) {
10731
+ return ts;
10732
+ }
10322
10733
  }
10323
10734
  }
10324
10735
 
10325
10736
  // 5c. Unbounded min with a finite max far in the past (e.g. birth-date picker):
10326
10737
  // scan backward from max for up to MAX_SCAN_DAYS.
10327
10738
  if (!Number.isFinite(minTs) && Number.isFinite(maxTs)) {
10328
- for (let idx = 0; idx <= MAX_SCAN_DAYS; idx++) {
10739
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
10329
10740
  const ts = addDays(maxTs, -idx);
10330
- if (isEnabled(ts)) return ts;
10741
+ if (isEnabled(ts)) {
10742
+ return ts;
10743
+ }
10331
10744
  }
10332
10745
  }
10333
10746
 
10334
10747
  // 6. All dates are blackout — fall back to the first in-range date so focus
10335
10748
  // still lands on a focusable (but not selectable) cell.
10336
- if (Number.isFinite(minTs) && isInRange(minTs)) return minTs;
10337
- if (isInRange(now)) return now;
10749
+ if (Number.isFinite(minTs) && isInRange(minTs)) {
10750
+ return minTs;
10751
+ }
10752
+ if (isInRange(now)) {
10753
+ return now;
10754
+ }
10338
10755
 
10339
10756
  return undefined;
10340
10757
  }
10341
10758
 
10759
+ /**
10760
+ * Checks if a target date (unix seconds) is within the configured [min, max] range.
10761
+ * Returns false if the date falls outside the range, preventing navigation
10762
+ * to months where all dates are disabled.
10763
+ * @private
10764
+ * @param {Number} targetTs - Unix timestamp in seconds.
10765
+ * @returns {Boolean} True if the date is within range.
10766
+ */
10767
+ isDateInRange(targetTs) {
10768
+ const rawMin = Number(this.min);
10769
+ const rawMax = Number(this.max);
10770
+ if (Number.isFinite(rawMin) && targetTs < rawMin) {
10771
+ return false;
10772
+ }
10773
+ if (Number.isFinite(rawMax) && targetTs > rawMax) {
10774
+ return false;
10775
+ }
10776
+ return true;
10777
+ }
10778
+
10779
+ /**
10780
+ * Handles arrow key navigation on the calendar grid wrapper.
10781
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
10782
+ * and the visual active-cell indicator change.
10783
+ * @private
10784
+ * @param {KeyboardEvent} event - The keyboard event.
10785
+ * @returns {void}
10786
+ */
10787
+ handleGridKeyDown(event) {
10788
+ const { key } = event;
10789
+ const actionKeys = [
10790
+ 'ArrowRight',
10791
+ 'ArrowLeft',
10792
+ 'ArrowDown',
10793
+ 'ArrowUp',
10794
+ 'Enter',
10795
+ ' '
10796
+ ];
10797
+
10798
+ if (!actionKeys.includes(key)) {
10799
+ return;
10800
+ }
10801
+
10802
+ event.preventDefault();
10803
+
10804
+ const allCells = this.getAllFocusableCells();
10805
+ if (allCells.length === 0) {
10806
+ return;
10807
+ }
10808
+
10809
+ const activeCell = allCells.find((cell) => cell.active);
10810
+ if (!activeCell) {
10811
+ return;
10812
+ }
10813
+
10814
+ // Handle Enter/Space to select the active cell
10815
+ if (key === 'Enter' || key === ' ') {
10816
+ activeCell.handleTap();
10817
+ return;
10818
+ }
10819
+
10820
+ const activeIndex = allCells.indexOf(activeCell);
10821
+
10822
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
10823
+ const direction = key === 'ArrowRight' ? 1 : -1;
10824
+ const targetIndex = activeIndex + direction;
10825
+
10826
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
10827
+ // Target cell exists in rendered months
10828
+ this.setActiveCell(allCells[targetIndex].day.date);
10829
+ this.scrollToActiveCell();
10830
+ // Dispatch focus event for the cell so live region + range preview update
10831
+ this.handleCellFocused({ detail: { date: allCells[targetIndex].day.date } });
10832
+ } else {
10833
+ // At boundary — need to navigate to next/prev month
10834
+ const navDir = direction === 1 ? 'next' : 'prev';
10835
+ const targetDate = new Date(activeCell.day.date * 1000);
10836
+ targetDate.setDate(targetDate.getDate() + direction);
10837
+ targetDate.setHours(0, 0, 0, 0);
10838
+ const targetTs = Math.floor(targetDate.getTime() / 1000);
10839
+
10840
+ if (this.isDateInRange(targetTs) && ((navDir === 'next' && this.showNextMonthBtn) || (navDir === 'prev' && this.showPrevMonthBtn))) { // eslint-disable-line no-extra-parens
10841
+
10842
+ if (navDir === 'next') {
10843
+ this.handleNextMonth({ skipActiveUpdate: true });
10844
+ } else {
10845
+ this.handlePrevMonth({ skipActiveUpdate: true });
10846
+ }
10847
+ requestAnimationFrame(() => {
10848
+ requestAnimationFrame(() => {
10849
+ const cells = this.getAllFocusableCells();
10850
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
10851
+ if (target) {
10852
+ this.setActiveCell(target.day.date);
10853
+ this.handleCellFocused({ detail: { date: target.day.date } });
10854
+ } else if (cells.length > 0) {
10855
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
10856
+ this.setActiveCell(fallback.day.date);
10857
+ this.handleCellFocused({ detail: { date: fallback.day.date } });
10858
+ }
10859
+ // Re-focus grid wrapper after month change re-render
10860
+ this.focusActiveCell();
10861
+ });
10862
+ });
10863
+ }
10864
+ }
10865
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
10866
+ const increment = key === 'ArrowDown' ? 7 : -7;
10867
+ const currentDate = new Date(activeCell.day.date * 1000);
10868
+ currentDate.setDate(currentDate.getDate() + increment);
10869
+ currentDate.setHours(0, 0, 0, 0);
10870
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
10871
+
10872
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
10873
+
10874
+ if (targetCell) {
10875
+ this.setActiveCell(targetCell.day.date);
10876
+ this.scrollToActiveCell();
10877
+ this.handleCellFocused({ detail: { date: targetCell.day.date } });
10878
+ } else if (this.isDateInRange(targetDate)) {
10879
+ // Target might be in an unrendered month
10880
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
10881
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
10882
+ if (navDirection === 'next') {
10883
+ this.handleNextMonth({ skipActiveUpdate: true });
10884
+ } else {
10885
+ this.handlePrevMonth({ skipActiveUpdate: true });
10886
+ }
10887
+ requestAnimationFrame(() => {
10888
+ requestAnimationFrame(() => {
10889
+ const cells = this.getAllFocusableCells();
10890
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
10891
+ if (target) {
10892
+ this.setActiveCell(target.day.date);
10893
+ this.handleCellFocused({ detail: { date: target.day.date } });
10894
+ } else if (cells.length > 0) {
10895
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
10896
+ this.setActiveCell(nearest.day.date);
10897
+ this.handleCellFocused({ detail: { date: nearest.day.date } });
10898
+ }
10899
+ this.focusActiveCell();
10900
+ });
10901
+ });
10902
+ }
10903
+ }
10904
+ }
10905
+ }
10906
+
10342
10907
  /**
10343
10908
  * Handles cross-month boundary navigation events from month components.
10344
10909
  * @private
@@ -10351,15 +10916,15 @@ class AuroCalendar extends RangeDatepicker {
10351
10916
  if (key === 'ArrowRight' || key === 'ArrowLeft') {
10352
10917
  // Linear navigation: find adjacent focusable cell across months
10353
10918
  const allCells = this.getAllFocusableCells();
10354
- const currentIndex = allCells.findIndex(cell => cell.day && cell.day.date === fromDate);
10919
+ const currentIndex = allCells.findIndex((cell) => cell.day && cell.day.date === fromDate);
10355
10920
 
10356
- if (currentIndex === -1) return;
10921
+ if (currentIndex === -1) {
10922
+ return;
10923
+ }
10357
10924
 
10358
- let targetIndex;
10925
+ let targetIndex = -1;
10359
10926
  if (direction === 'next') {
10360
10927
  targetIndex = currentIndex + 1;
10361
- } else {
10362
- targetIndex = currentIndex - 1;
10363
10928
  }
10364
10929
 
10365
10930
  if (targetIndex >= 0 && targetIndex < allCells.length) {
@@ -10377,11 +10942,15 @@ class AuroCalendar extends RangeDatepicker {
10377
10942
  nextDate.setHours(0, 0, 0, 0);
10378
10943
  const nextTs = Math.floor(nextDate.getTime() / 1000);
10379
10944
 
10380
- this.handleNextMonth();
10945
+ if (!this.isDateInRange(nextTs)) {
10946
+ return;
10947
+ }
10948
+
10949
+ this.handleNextMonth({ skipActiveUpdate: true });
10381
10950
  requestAnimationFrame(() => {
10382
10951
  requestAnimationFrame(() => {
10383
10952
  const cells = this.getAllFocusableCells();
10384
- const target = cells.find(cell => cell.day && cell.day.date === nextTs);
10953
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
10385
10954
  if (target) {
10386
10955
  this.setActiveCell(target.day.date);
10387
10956
  this.focusActiveCell();
@@ -10399,11 +10968,15 @@ class AuroCalendar extends RangeDatepicker {
10399
10968
  prevDate.setHours(0, 0, 0, 0);
10400
10969
  const prevTs = Math.floor(prevDate.getTime() / 1000);
10401
10970
 
10402
- this.handlePrevMonth();
10971
+ if (!this.isDateInRange(prevTs)) {
10972
+ return;
10973
+ }
10974
+
10975
+ this.handlePrevMonth({ skipActiveUpdate: true });
10403
10976
  requestAnimationFrame(() => {
10404
10977
  requestAnimationFrame(() => {
10405
10978
  const cells = this.getAllFocusableCells();
10406
- const target = cells.find(cell => cell.day && cell.day.date === prevTs);
10979
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
10407
10980
  if (target) {
10408
10981
  this.setActiveCell(target.day.date);
10409
10982
  this.focusActiveCell();
@@ -10415,61 +10988,245 @@ class AuroCalendar extends RangeDatepicker {
10415
10988
  });
10416
10989
  });
10417
10990
  }
10418
- } else if (key === 'ArrowDown' || key === 'ArrowUp') {
10419
- // Vertical navigation: find same day-of-week +/- 7 days
10420
- // Use Date arithmetic instead of fixed seconds to handle DST correctly
10421
- const increment = key === 'ArrowDown' ? 7 : -7;
10422
- const currentDate = new Date(fromDate * 1000);
10423
- currentDate.setDate(currentDate.getDate() + increment);
10424
- currentDate.setHours(0, 0, 0, 0);
10425
- const targetDate = Math.floor(currentDate.getTime() / 1000);
10991
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
10992
+ // Vertical navigation: find same day-of-week +/- 7 days
10993
+ // Use Date arithmetic instead of fixed seconds to handle DST correctly
10994
+ const increment = key === 'ArrowDown' ? 7 : -7;
10995
+ const currentDate = new Date(fromDate * 1000);
10996
+ currentDate.setDate(currentDate.getDate() + increment);
10997
+ currentDate.setHours(0, 0, 0, 0);
10998
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
10999
+
11000
+ const allCells = this.getAllFocusableCells();
11001
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
11002
+
11003
+ if (targetCell) {
11004
+ this.setActiveCell(targetCell.day.date);
11005
+ this.scrollToActiveCell();
11006
+ this.focusActiveCell();
11007
+ } else if (this.isDateInRange(targetDate)) {
11008
+ // Target might be in an unrendered month, navigate there
11009
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
11010
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
11011
+ if (navDirection === 'next') {
11012
+ this.handleNextMonth({ skipActiveUpdate: true });
11013
+ } else {
11014
+ this.handlePrevMonth({ skipActiveUpdate: true });
11015
+ }
11016
+ requestAnimationFrame(() => {
11017
+ requestAnimationFrame(() => {
11018
+ const cells = this.getAllFocusableCells();
11019
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
11020
+ if (target) {
11021
+ this.setActiveCell(target.day.date);
11022
+ this.focusActiveCell();
11023
+ } else if (cells.length > 0) {
11024
+ // Clamp to nearest focusable cell
11025
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
11026
+ this.setActiveCell(nearest.day.date);
11027
+ this.focusActiveCell();
11028
+ }
11029
+ });
11030
+ });
11031
+ }
11032
+ }
11033
+ }
11034
+ }
11035
+
11036
+ /**
11037
+ * Handles cell activation events from month components.
11038
+ * @private
11039
+ * @param {CustomEvent} event - The activation event with target date.
11040
+ * @returns {void}
11041
+ */
11042
+ handleCellActivate(event) {
11043
+ const { date } = event.detail;
11044
+ this.setActiveCell(date);
11045
+
11046
+ // Don't call focusActiveCell() here. The tap/click already placed
11047
+ // focus on the cell button, and moving it to #calendarGrid would
11048
+ // trigger focusout on the button, closing any open popover on the
11049
+ // cell. Keyboard events are composed and still bubble through
11050
+ // shadow DOM boundaries to the grid's @keydown handler, so
11051
+ // subsequent keyboard navigation continues to work.
11052
+ }
11053
+
11054
+ /**
11055
+ * Handles focus events from calendar cells.
11056
+ * Updates the live region with an SR announcement and triggers
11057
+ * the imperative range preview if applicable.
11058
+ * @private
11059
+ * @param {CustomEvent} event - The calendar-cell-focused event.
11060
+ * @returns {void}
11061
+ */
11062
+ handleCellFocused(event) {
11063
+ const { date } = event.detail;
11064
+ if (date === null) {
11065
+ return;
11066
+ }
11067
+
11068
+ // With aria-activedescendant, the button no longer receives native focus,
11069
+ // so we use the debounced live region for the full context announcement.
11070
+ const announcement = this.buildFocusAnnouncement(date);
11071
+ this.announceFocusDebounced(announcement);
11072
+
11073
+ // Update the range preview imperatively if in range-preview mode.
11074
+ this.updateRangePreview(date);
11075
+ }
11076
+
11077
+ /**
11078
+ * Builds a full SR announcement string for a focused cell date.
11079
+ * Includes the localized date, range position, popover content,
11080
+ * and blackout status.
11081
+ * @private
11082
+ * @param {Number} date - Unix timestamp (seconds) of the focused cell.
11083
+ * @returns {String} The announcement string.
11084
+ */
11085
+ buildFocusAnnouncement(date) {
11086
+ let label = this.formatAnnouncementDate(date);
11087
+
11088
+ // Append date slot content (e.g. prices) if present.
11089
+ const dateObj = new Date(date * 1000);
11090
+ const mm = String(dateObj.getMonth() + 1).padStart(2, '0');
11091
+ const dd = String(dateObj.getDate()).padStart(2, '0');
11092
+ const yyyy = dateObj.getFullYear();
11093
+ const dateStr = `${mm}_${dd}_${yyyy}`;
11094
+ const dateSlotEl = this.datepicker?.querySelector(`[slot="date_${dateStr}"]`);
11095
+ if (dateSlotEl) {
11096
+ const text = dateSlotEl.innerText?.trim();
11097
+ if (text) {
11098
+ label += `, ${text}`;
11099
+ }
11100
+ }
11101
+
11102
+ // Append popover content if present.
11103
+ const popoverEl = this.datepicker?.querySelector(`[slot="popover_${dateStr}"]`);
11104
+ if (popoverEl) {
11105
+ const text = popoverEl.innerText?.trim();
11106
+ if (text) {
11107
+ label += `, ${text}`;
11108
+ }
11109
+ }
11110
+
11111
+ // Append range position context.
11112
+ if (this.datepicker?.hasAttribute('range')) {
11113
+ const rangeLabel = this.getRangePositionLabel(date);
11114
+ if (rangeLabel) {
11115
+ label += `, ${rangeLabel}`;
11116
+ }
11117
+ }
11118
+
11119
+ // Append blackout label.
11120
+ if (this.isDateBlackout(date)) {
11121
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
11122
+ }
11123
+
11124
+ return label;
11125
+ }
11126
+
11127
+ /**
11128
+ * Determines the range position label for a given date.
11129
+ * @private
11130
+ * @param {Number} date - Unix timestamp (seconds).
11131
+ * @returns {String|null} The range position label, or null.
11132
+ */
11133
+ getRangePositionLabel(date) {
11134
+ const parsedFrom = Number.parseInt(this.dateFrom, 10);
11135
+ if (!Number.isFinite(parsedFrom)) {
11136
+ return null;
11137
+ }
11138
+
11139
+ const departTs = startOfDay(parsedFrom * 1000) / 1000;
11140
+ const parsedTo = Number.parseInt(this.dateTo, 10);
11141
+ const hasTo = Number.isFinite(parsedTo);
11142
+ const returnTs = hasTo ? startOfDay(parsedTo * 1000) / 1000 : null;
11143
+
11144
+ if (date === departTs) {
11145
+ return this.datepicker.rangeLabelStart || 'range start';
11146
+ }
11147
+ if (hasTo && date === returnTs) {
11148
+ return this.datepicker.rangeLabelEnd || 'range end';
11149
+ }
11150
+ if (date < departTs) {
11151
+ return this.datepicker.rangeLabelBeforeRange || 'before range';
11152
+ }
11153
+ if (hasTo && date > departTs && date < returnTs) {
11154
+ return this.datepicker.rangeLabelInRange || 'in range';
11155
+ }
11156
+ return this.datepicker.rangeLabelAfterRange || 'after range';
11157
+ }
11158
+
11159
+ /**
11160
+ * Checks whether a given date is a blackout date.
11161
+ * @private
11162
+ * @param {Number} dateTs - Unix timestamp (seconds).
11163
+ * @returns {Boolean} True if the date is blacked out.
11164
+ */
11165
+ isDateBlackout(dateTs) {
11166
+ // Check legacy disabledDays.
11167
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
11168
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
11169
+ return true;
11170
+ }
11171
+ }
11172
+
11173
+ // Check ISO blackoutDates.
11174
+ const blackoutDates = this.datepicker?.blackoutDates;
11175
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
11176
+ const date = new Date(dateTs * 1000);
11177
+ const yyyy = date.getFullYear();
11178
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
11179
+ const dd = String(date.getDate()).padStart(2, '0');
11180
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
11181
+ return true;
11182
+ }
11183
+ }
10426
11184
 
10427
- const allCells = this.getAllFocusableCells();
10428
- let targetCell = allCells.find(cell => cell.day && cell.day.date === targetDate);
11185
+ return false;
11186
+ }
10429
11187
 
10430
- if (targetCell) {
10431
- this.setActiveCell(targetCell.day.date);
10432
- this.scrollToActiveCell();
10433
- this.focusActiveCell();
10434
- } else {
10435
- // Target might be in an unrendered month, navigate there
10436
- const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
10437
- if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) {
10438
- if (navDirection === 'next') {
10439
- this.handleNextMonth();
10440
- } else {
10441
- this.handlePrevMonth();
10442
- }
10443
- requestAnimationFrame(() => {
10444
- requestAnimationFrame(() => {
10445
- const cells = this.getAllFocusableCells();
10446
- const target = cells.find(cell => cell.day && cell.day.date === targetDate);
10447
- if (target) {
10448
- this.setActiveCell(target.day.date);
10449
- this.focusActiveCell();
10450
- } else if (cells.length > 0) {
10451
- // Clamp to nearest focusable cell
10452
- const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
10453
- this.setActiveCell(nearest.day.date);
10454
- this.focusActiveCell();
10455
- }
10456
- });
10457
- });
10458
- }
10459
- }
11188
+ /**
11189
+ * Updates the range preview classes imperatively across all cells.
11190
+ * Only active when in range mode with dateFrom set and dateTo not yet set.
11191
+ * @private
11192
+ * @param {Number} hoveredDate - Unix timestamp of the hovered/focused date.
11193
+ * @returns {void}
11194
+ */
11195
+ updateRangePreview(hoveredDate) {
11196
+ if (this.noRange || !this.dateFrom || this.dateTo) {
11197
+ return;
10460
11198
  }
11199
+
11200
+ const parsedDateFrom = parseInt(this.dateFrom, 10);
11201
+ const allCells = this.getAllFocusableCells();
11202
+
11203
+ allCells.forEach((cell) => {
11204
+ cell.updateRangePreviewClasses(hoveredDate, parsedDateFrom);
11205
+ });
10461
11206
  }
10462
11207
 
10463
11208
  /**
10464
- * Handles cell activation events from month components.
11209
+ * Clears range preview classes from all cells.
10465
11210
  * @private
10466
- * @param {CustomEvent} event - The activation event with target date.
10467
11211
  * @returns {void}
10468
11212
  */
10469
- handleCellActivate(event) {
10470
- const { date } = event.detail;
10471
- this.setActiveCell(date);
10472
- this.focusActiveCell();
11213
+ clearRangePreview() {
11214
+ const allCells = this.getAllFocusableCells();
11215
+ allCells.forEach((cell) => {
11216
+ cell.clearRangePreviewClasses();
11217
+ });
11218
+ }
11219
+
11220
+ /**
11221
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
11222
+ * as a reactive property. Instead, handles the range preview imperatively.
11223
+ * @private
11224
+ * @param {CustomEvent} event - The hovered-date-changed event from a month.
11225
+ * @returns {void}
11226
+ */
11227
+ hoveredDateChanged(event) {
11228
+ const hoveredDate = event.detail.value;
11229
+ this.updateRangePreview(hoveredDate);
10473
11230
  }
10474
11231
 
10475
11232
  /**
@@ -10478,7 +11235,9 @@ class AuroCalendar extends RangeDatepicker {
10478
11235
  * @returns {void}
10479
11236
  */
10480
11237
  scrollToActiveCell() {
10481
- if (this.activeCellDate == null) return;
11238
+ if (this.activeCellDate === null || this.activeCellDate === undefined) {
11239
+ return;
11240
+ }
10482
11241
 
10483
11242
  const date = new Date(this.activeCellDate * 1000);
10484
11243
  const month = date.getMonth() + 1;
@@ -10488,25 +11247,138 @@ class AuroCalendar extends RangeDatepicker {
10488
11247
 
10489
11248
  if (monthElem) {
10490
11249
  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
10491
- monthElem.scrollIntoView({ block: 'nearest', behavior: prefersReducedMotion ? 'instant' : 'smooth' });
11250
+ monthElem.scrollIntoView({ block: 'nearest',
11251
+ behavior: prefersReducedMotion ? 'instant' : 'smooth' });
11252
+ }
11253
+ }
11254
+
11255
+ /**
11256
+ * Returns (and lazily creates) an aria-live region inside the dropdown's
11257
+ * <dialog> element. This placement is critical for two reasons:
11258
+ *
11259
+ * 1. Inside the dialog's accessible scope — dialog.showModal() makes
11260
+ * everything outside the top-layer dialog inert, and desktop modal
11261
+ * mode uses _setPageInert() on document.body siblings. A live region
11262
+ * on document.body would be invisible to screen readers in both cases.
11263
+ *
11264
+ * 2. Not nested in shadow DOM — Chrome inconsistently observes aria-live
11265
+ * mutations inside shadow DOM across machines and versions. The dialog
11266
+ * element is only one shadow root deep (the dropdown bib's shadow DOM),
11267
+ * which Chrome handles reliably. The calendar's own shadow DOM (nested
11268
+ * inside the bib via slotting) is two+ levels deep and unreliable.
11269
+ *
11270
+ * @private
11271
+ * @returns {HTMLElement} The live region element.
11272
+ */
11273
+ getOrCreateLiveRegion() {
11274
+ if (this._liveRegion && this._liveRegion.isConnected) {
11275
+ return this._liveRegion;
11276
+ }
11277
+
11278
+ // Access the dialog element inside the dropdown bib's shadow DOM.
11279
+ const dialog = this.dropdown?.bibContent?.shadowRoot?.querySelector('dialog');
11280
+ if (!dialog) {
11281
+ return null;
11282
+ }
11283
+
11284
+ // Check if we already created one for this calendar instance.
11285
+ const regionId = `auro-calendar-live-${this._calendarInstanceId}`;
11286
+ const existing = dialog.querySelector(`#${regionId}`);
11287
+ if (existing) {
11288
+ this._liveRegion = existing;
11289
+ return existing;
11290
+ }
11291
+
11292
+ const el = document.createElement('div');
11293
+ el.id = regionId;
11294
+ el.setAttribute('aria-live', 'assertive');
11295
+ el.setAttribute('aria-atomic', 'true');
11296
+ 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;';
11297
+ dialog.appendChild(el);
11298
+
11299
+ this._liveRegion = el;
11300
+ return el;
11301
+ }
11302
+
11303
+ /**
11304
+ * Removes the live region when this calendar is disconnected.
11305
+ * @private
11306
+ * @returns {void}
11307
+ */
11308
+ disconnectedCallback() {
11309
+ super.disconnectedCallback();
11310
+
11311
+ // Cancel any pending announcements so they don't fire after teardown.
11312
+ if (this._announceRafId) {
11313
+ cancelAnimationFrame(this._announceRafId);
11314
+ this._announceRafId = null;
11315
+ }
11316
+ if (this._focusAnnounceTimer) {
11317
+ clearTimeout(this._focusAnnounceTimer);
11318
+ this._focusAnnounceTimer = null;
11319
+ }
11320
+
11321
+ if (this._liveRegion && this._liveRegion.isConnected) {
11322
+ this._liveRegion.remove();
10492
11323
  }
11324
+ this._liveRegion = null;
10493
11325
  }
10494
11326
 
10495
11327
  /**
10496
- * Announces a date selection via the live region.
11328
+ * Announces a date selection or focus change via the live region.
11329
+ * Uses requestAnimationFrame to ensure the clear and set happen in
11330
+ * separate rendering frames — Chrome may coalesce synchronous or
11331
+ * microtask-deferred mutations into a single accessibility tree update.
10497
11332
  * @private
10498
11333
  * @param {String} dateStr - The localized date string to announce.
10499
11334
  * @returns {void}
10500
11335
  */
10501
11336
  announceSelection(dateStr) {
10502
- const liveRegion = this.shadowRoot.querySelector('#calendar-live-region');
10503
- if (liveRegion) {
10504
- liveRegion.textContent = '';
10505
- // Use microtask to ensure SR picks up the change
10506
- Promise.resolve().then(() => {
11337
+ // Cancel any previously queued rAF announcement so a rapid
11338
+ // sequence of calls (e.g. bib open → month nav) only announces
11339
+ // the last one.
11340
+ if (this._announceRafId) {
11341
+ cancelAnimationFrame(this._announceRafId);
11342
+ }
11343
+ const liveRegion = this.getOrCreateLiveRegion();
11344
+ if (!liveRegion) {
11345
+ return;
11346
+ }
11347
+
11348
+ // Double-rAF: clear in frame N, set in frame N+1. Chrome batches
11349
+ // accessibility tree mutations within a single animation frame, so
11350
+ // a same-frame clear+set can be coalesced into a no-op if the new
11351
+ // value matches a recently announced string. Splitting across two
11352
+ // frames guarantees Chrome sees two distinct tree states and fires
11353
+ // a new accessibility event for the content change.
11354
+ liveRegion.textContent = '';
11355
+ this._announceRafId = requestAnimationFrame(() => {
11356
+ this._announceRafId = requestAnimationFrame(() => {
10507
11357
  liveRegion.textContent = dateStr;
11358
+ this._announceRafId = null;
10508
11359
  });
11360
+ });
11361
+ }
11362
+
11363
+ /**
11364
+ * Debounced version of announceSelection for focus navigation.
11365
+ * Uses the assertive live region with a 150ms debounce so only the
11366
+ * final cell after rapid arrow-key traversal is announced. We
11367
+ * originally tried aria-live="polite" here, but VoiceOver treats
11368
+ * polite as "wait until idle" — which never happens during active
11369
+ * keyboard navigation — so the announcements were silently dropped.
11370
+ * @private
11371
+ * @param {String} dateStr - The localized date string to announce.
11372
+ * @returns {void}
11373
+ */
11374
+ announceFocusDebounced(dateStr) {
11375
+ if (this._focusAnnounceTimer) {
11376
+ clearTimeout(this._focusAnnounceTimer);
10509
11377
  }
11378
+ this._focusAnnounceTimer = setTimeout(() => {
11379
+ this.announceSelection(dateStr);
11380
+ this._focusAnnounceTimer = null;
11381
+ }, 150);
10510
11382
  }
10511
11383
 
10512
11384
  /**
@@ -10519,12 +11391,16 @@ class AuroCalendar extends RangeDatepicker {
10519
11391
  const date = new Date(parseInt(timestamp, 10) * 1000);
10520
11392
  const localeCode = this.locale?.code || undefined;
10521
11393
  const formatter = new Intl.DateTimeFormat(localeCode, {
10522
- weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'
11394
+ weekday: 'long',
11395
+ year: 'numeric',
11396
+ month: 'long',
11397
+ day: 'numeric'
10523
11398
  });
10524
11399
  return formatter.format(date);
10525
11400
  }
10526
11401
 
10527
11402
  firstUpdated() {
11403
+
10528
11404
  this.addEventListener('date-from-changed', () => {
10529
11405
  this.dispatchEvent(new CustomEvent('auroCalendar-dateSelected', {
10530
11406
  bubbles: true,
@@ -10553,6 +11429,11 @@ class AuroCalendar extends RangeDatepicker {
10553
11429
  this.addEventListener('calendar-cell-activate', (event) => {
10554
11430
  this.handleCellActivate(event);
10555
11431
  });
11432
+
11433
+ // Listen for cell focus events (SR announcements + range preview)
11434
+ this.addEventListener('calendar-cell-focused', (event) => {
11435
+ this.handleCellFocused(event);
11436
+ });
10556
11437
  }
10557
11438
 
10558
11439
  injectSlot(slotName, nodes) {
@@ -10579,7 +11460,7 @@ class AuroCalendar extends RangeDatepicker {
10579
11460
  if (changedProperties.has('visible')) {
10580
11461
  if (this.visible) {
10581
11462
  // Compute the active date eagerly from data — no DOM needed.
10582
- if (this.activeCellDate == null) {
11463
+ if (this.activeCellDate === null || this.activeCellDate === undefined) {
10583
11464
  this.activeCellDate = this.computeActiveDate();
10584
11465
  }
10585
11466
 
@@ -10647,7 +11528,7 @@ class AuroCalendar extends RangeDatepicker {
10647
11528
  </button>
10648
11529
  ` : undefined}
10649
11530
  </div>
10650
- <div class="calendars">
11531
+ <div id="calendarGrid" class="calendars" role="group" tabindex="0" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}">
10651
11532
  ${this.renderAllCalendars()}
10652
11533
  </div>
10653
11534
  </div>
@@ -14556,7 +15437,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
14556
15437
  }
14557
15438
  };
14558
15439
 
14559
- var formkitVersion$1 = '202606011921';
15440
+ var formkitVersion$1 = '202606012111';
14560
15441
 
14561
15442
  let AuroElement$2 = class AuroElement extends i$1 {
14562
15443
  static get properties() {
@@ -19899,109 +20780,236 @@ class AuroInputUtilities {
19899
20780
  }
19900
20781
  }
19901
20782
 
19902
- class DateFormatter {
20783
+ /**
20784
+ * @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.
20785
+ * @param {string} dateStr - Date string to parse.
20786
+ * @param {string} format - Date format to parse.
20787
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
20788
+ */
20789
+ function getDateParts(dateStr, format) {
20790
+ if (!dateStr) {
20791
+ return undefined;
20792
+ }
20793
+
20794
+ const formatSeparatorMatch = format.match(/[/.-]/);
20795
+ let valueParts;
20796
+ let formatParts;
19903
20797
 
19904
- constructor() {
20798
+ if (formatSeparatorMatch) {
20799
+ const separator = formatSeparatorMatch[0];
20800
+ valueParts = dateStr.split(separator);
20801
+ formatParts = format.split(separator);
20802
+ } else {
20803
+ if (dateStr.match(/[/.-]/)) {
20804
+ throw new Error(
20805
+ "AuroDatepickerUtilities | parseDate: Date string has no separators",
20806
+ );
20807
+ }
19905
20808
 
19906
- /**
19907
- * @description Parses a date string into its components.
19908
- * @param {string} dateStr - Date string to parse.
19909
- * @param {string} format - Date format to parse.
19910
- * @returns {Object<key["month" | "day" | "year"]: number>|undefined}
19911
- */
19912
- this.parseDate = (dateStr, format = 'mm/dd/yyyy') => {
20809
+ if (dateStr.length !== format.length) {
20810
+ throw new Error(
20811
+ "AuroDatepickerUtilities | parseDate: Date string and format length do not match",
20812
+ );
20813
+ }
19913
20814
 
19914
- // Guard Clause: Date string is defined
19915
- if (!dateStr) {
19916
- return undefined;
19917
- }
20815
+ valueParts = [dateStr];
20816
+ formatParts = [format];
20817
+ }
19918
20818
 
19919
- // Assume the separator is a "/" a defined in our code base
19920
- const separator = '/';
20819
+ if (valueParts.length !== formatParts.length) {
20820
+ throw new Error(
20821
+ `AuroDatepickerUtilities | parseDate: Date string and format do not match : ${dateStr} vs ${format}`,
20822
+ );
20823
+ }
19921
20824
 
19922
- // Get the parts of the date and format
19923
- const valueParts = dateStr.split(separator);
19924
- const formatParts = format.split(separator);
20825
+ const result = formatParts.reduce((acc, part, index) => {
20826
+ const value = valueParts[index];
19925
20827
 
19926
- // Check if the value and format have the correct number of parts
19927
- if (valueParts.length !== formatParts.length) {
19928
- throw new Error('AuroDatepickerUtilities | parseDate: Date string and format length do not match');
19929
- }
20828
+ if (/m/iu.test(part) && part.length === value.length) {
20829
+ acc.month = value;
20830
+ } else if (/d/iu.test(part) && part.length === value.length) {
20831
+ acc.day = value;
20832
+ } else if (/y/iu.test(part) && part.length === value.length) {
20833
+ acc.year = value;
20834
+ }
19930
20835
 
19931
- // Holds the result to be returned
19932
- const result = formatParts.reduce((acc, part, index) => {
19933
- const value = valueParts[index];
20836
+ return acc;
20837
+ }, {});
19934
20838
 
19935
- if ((/m/iu).test(part)) {
19936
- acc.month = value;
19937
- } else if ((/d/iu).test(part)) {
19938
- acc.day = value;
19939
- } else if ((/y/iu).test(part)) {
19940
- acc.year = value;
19941
- }
20839
+ if (!result.month && !result.day && !result.year) {
20840
+ throw new Error(
20841
+ "AuroDatepickerUtilities | parseDate: Unable to parse date string",
20842
+ );
20843
+ }
19942
20844
 
19943
- return acc;
19944
- }, {});
20845
+ return result;
20846
+ }
19945
20847
 
19946
- // If we found all the parts, return the result
19947
- if (result.month && result.year) {
19948
- return result;
19949
- }
20848
+ function isCalendarDate(year, month, day) {
20849
+ let yearNumber = Number(year);
20850
+ const monthNumber = Number(month);
20851
+ const dayNumber = Number(day);
19950
20852
 
19951
- // Throw an error to let the dev know we were unable to parse the date string
19952
- throw new Error('AuroDatepickerUtilities | parseDate: Unable to parse date string');
19953
- };
20853
+ if (
20854
+ !Number.isInteger(yearNumber) ||
20855
+ !Number.isInteger(monthNumber) ||
20856
+ !Number.isInteger(dayNumber)
20857
+ ) {
20858
+ return false;
20859
+ }
19954
20860
 
19955
- /**
19956
- * Convert a date object to string format.
19957
- * @param {Object} date - Date to convert to string.
19958
- * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
19959
- * @returns {String} Returns the date as a string.
19960
- */
19961
- this.getDateAsString = (date, locale = undefined) => date.toLocaleDateString(locale, {
19962
- year: "numeric",
19963
- month: "2-digit",
19964
- day: "2-digit",
19965
- });
20861
+ // 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.
20862
+ if (yearNumber < 100 && yearNumber >= 50) {
20863
+ yearNumber += 1900;
20864
+ } else if (yearNumber < 50) {
20865
+ yearNumber += 2000;
20866
+ }
19966
20867
 
19967
- /**
19968
- * Converts a date string to a North American date format.
19969
- * @param {String} dateStr - Date to validate.
19970
- * @param {String} format - Date format to validate against.
19971
- * @returns {Boolean}
19972
- */
19973
- this.toNorthAmericanFormat = (dateStr, format) => {
20868
+ const stringified = `${String(yearNumber).padStart(4, "0")}-${String(monthNumber).padStart(2, "0")}-${String(dayNumber).padStart(2, "0")}`;
20869
+ const date = new Date(stringified.replace(/[.-]/g, "/"));
19974
20870
 
19975
- if (format === 'mm/dd/yyyy') {
19976
- return dateStr;
19977
- }
20871
+ return (
20872
+ !Number.isNaN(date.getTime()) && toISOFormatString(date) === stringified
20873
+ );
20874
+ }
19978
20875
 
19979
- const parsedDate = this.parseDate(dateStr, format);
20876
+ /**
20877
+ * @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).
20878
+ *
20879
+ * Partial formats are supported: components absent from `format` default to `year → "0"`,
20880
+ * `month → "01"`, `day → "01"` for calendar validation only. The returned object contains
20881
+ * only the fields actually present in the format string — missing fields are never injected.
20882
+ * @param {string} dateStr - Date string to parse.
20883
+ * @param {string} format - Date format to parse.
20884
+ * @returns {{ month?: string, day?: string, year?: string }|undefined}
20885
+ * @throws {Error} Throws when the parsed result does not represent a valid calendar date.
20886
+ */
20887
+ function parseDate(dateStr, format = "mm/dd/yyyy") {
20888
+ if (!dateStr || !format) {
20889
+ return undefined;
20890
+ }
20891
+ const result = getDateParts(dateStr.trim(), format);
19980
20892
 
19981
- if (!parsedDate) {
19982
- throw new Error('AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string');
19983
- }
20893
+ if (!result) {
20894
+ return undefined;
20895
+ }
19984
20896
 
19985
- const { month, day, year } = parsedDate;
20897
+ const lowerFormat = format.toLowerCase();
20898
+ const year = lowerFormat.includes("yy") ? result.year : "0";
20899
+ const month = lowerFormat.includes("mm") ? result.month : "01";
20900
+ const day = lowerFormat.includes("dd") ? result.day : "01";
19986
20901
 
19987
- const dateParts = [];
19988
- if (month) {
19989
- dateParts.push(month);
19990
- }
20902
+ if (isCalendarDate(year, month, day)) {
20903
+ return result;
20904
+ }
19991
20905
 
19992
- if (day) {
19993
- dateParts.push(day);
19994
- }
20906
+ throw new Error(
20907
+ `AuroDatepickerUtilities | parseDate: Date string is not a valid date ${JSON.stringify(result)} with format ${format}`,
20908
+ );
20909
+ }
19995
20910
 
19996
- if (year) {
19997
- dateParts.push(year);
19998
- }
20911
+ /**
20912
+ * Convert a date object to string format.
20913
+ * @param {Object} date - Date to convert to string.
20914
+ * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
20915
+ * @returns {String} Returns the date as a string.
20916
+ */
20917
+ function getDateAsString(date, locale = undefined) {
20918
+ return date.toLocaleDateString(locale, {
20919
+ year: "numeric",
20920
+ month: "2-digit",
20921
+ day: "2-digit",
20922
+ });
20923
+ }
19999
20924
 
20000
- return dateParts.join('/');
20001
- };
20925
+ /**
20926
+ * Converts a date string to a North American date format.
20927
+ * @param {String} dateStr - Date to validate.
20928
+ * @param {String} format - Date format to validate against.
20929
+ * @returns {String}
20930
+ */
20931
+ function toNorthAmericanFormat$1(dateStr, format) {
20932
+ if (format === "mm/dd/yyyy") {
20933
+ return dateStr;
20934
+ }
20935
+
20936
+ const parsedDate = parseDate(dateStr, format);
20937
+
20938
+ if (!parsedDate) {
20939
+ throw new Error(
20940
+ "AuroDatepickerUtilities | toNorthAmericanFormat: Unable to parse date string",
20941
+ );
20942
+ }
20943
+
20944
+ const { month, day, year } = parsedDate;
20945
+
20946
+ return [month, day, year].filter(Boolean).join("/");
20947
+ }
20948
+
20949
+ /**
20950
+ * Validates that a date string matches the provided format and represents a real calendar date.
20951
+ *
20952
+ * @param {string} dateStr - Date string to validate.
20953
+ * @param {string} [format="yyyy-mm-dd"] - Format of the date string.
20954
+ * @returns {boolean} True when the date string is valid for the provided format, otherwise false.
20955
+ */
20956
+ function isValidDate(dateStr, format = "yyyy-mm-dd") {
20957
+ try {
20958
+ if (typeof dateStr !== "string" || !dateStr || format?.length < 8) {
20959
+ return false;
20960
+ }
20961
+
20962
+ if (parseDate(dateStr, format)) {
20963
+ return true;
20964
+ }
20965
+ } catch (error) {
20966
+ return false;
20967
+ }
20968
+ return false;
20969
+ }
20970
+
20971
+ /**
20972
+ * 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.
20973
+ *
20974
+ * @param {Date} date - Date instance to convert to an ISO-like string.
20975
+ * @returns {string} A string in the format "yyyy-mm-dd" representing the provided date.
20976
+ * @throws {Error} Throws an error when the input is not a valid Date instance.
20977
+ */
20978
+ function toISOFormatString(date) {
20979
+ if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
20980
+ throw new Error(
20981
+ "AuroDatepickerUtilities | toISOFormatString: Input must be a valid Date instance",
20982
+ );
20983
+ }
20984
+ return `${String(date.getFullYear()).padStart(4, "0")}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
20985
+ }
20986
+
20987
+ /**
20988
+ * 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.
20989
+ *
20990
+ * @param {String} dateStr - Date string to convert into a Date object.
20991
+ * @param {String} format - Date format used to parse the string when it is not in ISO format.
20992
+ * @returns {Date|null} Returns a Date instance for valid input or null for non-string input.
20993
+ * @throws {Error} Throws when parsing fails for non-ISO string input.
20994
+ */
20995
+ function stringToDateInstance(dateStr, format = "yyyy-mm-dd") {
20996
+ if (typeof dateStr !== "string") {
20997
+ return null;
20002
20998
  }
20999
+
21000
+ const { month, day, year } = parseDate(dateStr, format);
21001
+ return new Date(`${year}/${month}/${day}`);
20003
21002
  }
20004
- const dateFormatter = new DateFormatter();
21003
+
21004
+ const dateFormatter = {
21005
+ parseDate,
21006
+ getDateParts,
21007
+ getDateAsString,
21008
+ toNorthAmericanFormat: toNorthAmericanFormat$1,
21009
+ isValidDate,
21010
+ toISOFormatString,
21011
+ stringToDateInstance,
21012
+ };
20005
21013
 
20006
21014
  // filepath: dateConstraints.mjs
20007
21015
  const DATE_UTIL_CONSTRAINTS = {
@@ -20073,12 +21081,11 @@ class AuroDateUtilitiesBase {
20073
21081
  /* eslint-disable no-magic-numbers */
20074
21082
 
20075
21083
  class AuroDateUtilities extends AuroDateUtilitiesBase {
20076
-
20077
21084
  /**
20078
21085
  * Returns the current century.
20079
21086
  * @returns {String} The current century.
20080
21087
  */
20081
- getCentury () {
21088
+ getCentury() {
20082
21089
  return String(new Date().getFullYear()).slice(0, 2);
20083
21090
  }
20084
21091
 
@@ -20087,14 +21094,12 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20087
21094
  * @param {String} year - The year to convert to four digits.
20088
21095
  * @returns {String} The four digit year.
20089
21096
  */
20090
- getFourDigitYear (year) {
20091
-
21097
+ getFourDigitYear(year) {
20092
21098
  const strYear = String(year).trim();
20093
21099
  return strYear.length <= 2 ? this.getCentury() + strYear : strYear;
20094
21100
  }
20095
21101
 
20096
21102
  constructor() {
20097
-
20098
21103
  super();
20099
21104
 
20100
21105
  /**
@@ -20103,7 +21108,8 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20103
21108
  * @param {Object} date2 - Second date to compare.
20104
21109
  * @returns {Boolean} Returns true if the dates match.
20105
21110
  */
20106
- this.datesMatch = (date1, date2) => new Date(date1).getTime() === new Date(date2).getTime();
21111
+ this.datesMatch = (date1, date2) =>
21112
+ new Date(date1).getTime() === new Date(date2).getTime();
20107
21113
 
20108
21114
  /**
20109
21115
  * Returns true if value passed in is a valid date.
@@ -20112,53 +21118,41 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20112
21118
  * @returns {Boolean}
20113
21119
  */
20114
21120
  this.validDateStr = (date, format) => {
20115
-
20116
21121
  // The length we expect the date string to be
20117
- const dateStrLength = format.length;
21122
+ const dateStrLength = format?.length || 0;
20118
21123
 
20119
21124
  // Guard Clause: Date and format are defined
20120
21125
  if (typeof date === "undefined" || typeof format === "undefined") {
20121
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date and format are required');
21126
+ throw new Error(
21127
+ "AuroDatepickerUtilities | validateDateStr: Date and format are required",
21128
+ );
20122
21129
  }
20123
21130
 
20124
21131
  // Guard Clause: Date should be of type string
20125
21132
  if (typeof date !== "string") {
20126
- throw new Error('AuroDatepickerUtilities | validateDateStr: Date must be a string');
21133
+ throw new Error(
21134
+ "AuroDatepickerUtilities | validateDateStr: Date must be a string",
21135
+ );
20127
21136
  }
20128
21137
 
20129
21138
  // Guard Clause: Format should be of type string
20130
21139
  if (typeof format !== "string") {
20131
- throw new Error('AuroDatepickerUtilities | validateDateStr: Format must be a string');
21140
+ throw new Error(
21141
+ "AuroDatepickerUtilities | validateDateStr: Format must be a string",
21142
+ );
20132
21143
  }
20133
21144
 
20134
21145
  // Guard Clause: Length is what we expect it to be
20135
21146
  if (date.length !== dateStrLength) {
20136
21147
  return false;
20137
21148
  }
20138
- // Get a formatted date string and parse it
20139
- const dateParts = dateFormatter.parseDate(date, format);
20140
-
20141
- // Guard Clause: Date parse succeeded
20142
- if (!dateParts) {
20143
- return false;
20144
- }
20145
21149
 
20146
- // Create the expected date string based on the date parts
20147
- const expectedDateStr = `${dateParts.month}/${dateParts.day || "01"}/${this.getFourDigitYear(dateParts.year)}`;
20148
-
20149
- // Generate a date object that we will extract a string date from to compare to the passed in date string
20150
- const dateObj = new Date(this.getFourDigitYear(dateParts.year), dateParts.month - 1, dateParts.day || 1);
20151
-
20152
- // Get the date string of the date object we created from the string date
20153
- const actualDateStr = dateFormatter.getDateAsString(dateObj, "en-US");
20154
-
20155
- // Guard Clause: Generated date matches date string input
20156
- if (expectedDateStr !== actualDateStr) {
21150
+ // Get a formatted date string and parse and validate it
21151
+ try {
21152
+ return Boolean(dateFormatter.parseDate(date, format));
21153
+ } catch (error) {
20157
21154
  return false;
20158
21155
  }
20159
-
20160
- // If we passed all other checks, we can assume the date is valid
20161
- return true;
20162
21156
  };
20163
21157
 
20164
21158
  /**
@@ -20168,10 +21162,11 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20168
21162
  * @returns {boolean}
20169
21163
  */
20170
21164
  this.dateAndFormatMatch = (value, format) => {
20171
-
20172
21165
  // Ensure we have both values we need to do the comparison
20173
21166
  if (!value || !format) {
20174
- throw new Error('AuroFormValidation | dateFormatMatch: value and format are required');
21167
+ throw new Error(
21168
+ "AuroFormValidation | dateFormatMatch: value and format are required",
21169
+ );
20175
21170
  }
20176
21171
 
20177
21172
  // If the lengths are different, they cannot match
@@ -20180,11 +21175,10 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20180
21175
  }
20181
21176
 
20182
21177
  // Get the parts of the date
20183
- const dateParts = dateFormatter.parseDate(value, format);
21178
+ const dateParts = dateFormatter.getDateParts(value, format);
20184
21179
 
20185
21180
  // Validator for day
20186
21181
  const dayValueIsValid = (day) => {
20187
-
20188
21182
  // Guard clause: if there is no day in the dateParts, we can ignore this check.
20189
21183
  if (!dateParts.day) {
20190
21184
  return true;
@@ -20200,7 +21194,9 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20200
21194
 
20201
21195
  // Guard clause: ensure day is a valid integer
20202
21196
  if (Number.isNaN(numDay)) {
20203
- throw new Error('AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer');
21197
+ throw new Error(
21198
+ "AuroDatepickerUtilities | dayValueIsValid: Unable to parse day value integer",
21199
+ );
20204
21200
  }
20205
21201
 
20206
21202
  // Guard clause: ensure day is within the valid range
@@ -20214,6 +21210,10 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20214
21210
 
20215
21211
  // Validator for month
20216
21212
  const monthValueIsValid = (month) => {
21213
+ // Guard clause: if there is no month in the dateParts, we can ignore this check.
21214
+ if (!dateParts.month) {
21215
+ return true;
21216
+ }
20217
21217
 
20218
21218
  // Guard clause: ensure month exists.
20219
21219
  if (!month) {
@@ -20225,7 +21225,9 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20225
21225
 
20226
21226
  // Guard clause: ensure month is a valid integer
20227
21227
  if (Number.isNaN(numMonth)) {
20228
- throw new Error('AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer');
21228
+ throw new Error(
21229
+ "AuroDatepickerUtilities | monthValueIsValid: Unable to parse month value integer",
21230
+ );
20229
21231
  }
20230
21232
 
20231
21233
  // Guard clause: ensure month is within the valid range
@@ -20239,6 +21241,10 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20239
21241
 
20240
21242
  // Validator for year
20241
21243
  const yearIsValid = (_year) => {
21244
+ // Guard clause: if there is no year in the dateParts, we can ignore this check.
21245
+ if (!dateParts.year) {
21246
+ return true;
21247
+ }
20242
21248
 
20243
21249
  // Guard clause: ensure year exists.
20244
21250
  if (!_year) {
@@ -20253,7 +21259,9 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20253
21259
 
20254
21260
  // Guard clause: ensure year is a valid integer
20255
21261
  if (Number.isNaN(numYear)) {
20256
- throw new Error('AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer');
21262
+ throw new Error(
21263
+ "AuroDatepickerUtilities | yearValueIsValid: Unable to parse year value integer",
21264
+ );
20257
21265
  }
20258
21266
 
20259
21267
  // Guard clause: ensure year is within the valid range
@@ -20269,7 +21277,7 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
20269
21277
  const checks = [
20270
21278
  monthValueIsValid(dateParts.month),
20271
21279
  dayValueIsValid(dateParts.day),
20272
- yearIsValid(dateParts.year)
21280
+ yearIsValid(dateParts.year),
20273
21281
  ];
20274
21282
 
20275
21283
  // If any of the checks failed, the date format does not match and the result is invalid
@@ -20303,10 +21311,7 @@ const {
20303
21311
  } = dateUtilities;
20304
21312
 
20305
21313
  const {
20306
- toNorthAmericanFormat,
20307
- parseDate,
20308
- getDateAsString
20309
- } = dateFormatter;
21314
+ toNorthAmericanFormat} = dateFormatter;
20310
21315
 
20311
21316
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
20312
21317
  // See LICENSE in the project root for license information.
@@ -22521,7 +23526,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
22521
23526
  }
22522
23527
  };
22523
23528
 
22524
- var formkitVersion = '202606011921';
23529
+ var formkitVersion = '202606012111';
22525
23530
 
22526
23531
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
22527
23532
  // See LICENSE in the project root for license information.
@@ -23877,6 +24882,7 @@ class AuroDatePicker extends AuroElement {
23877
24882
  delegatesFocus: true,
23878
24883
  };
23879
24884
  }
24885
+
23880
24886
  constructor() {
23881
24887
  super();
23882
24888
 
@@ -24044,7 +25050,7 @@ class AuroDatePicker extends AuroElement {
24044
25050
 
24045
25051
  /**
24046
25052
  * Defines whether the component will be on lighter or darker backgrounds.
24047
- * @property {'default', 'inverse'}
25053
+ * @type {'default' | 'inverse'}
24048
25054
  * @default 'default'
24049
25055
  */
24050
25056
  appearance: {
@@ -24563,8 +25569,9 @@ class AuroDatePicker extends AuroElement {
24563
25569
  }
24564
25570
 
24565
25571
  /**
24566
- * @private
24567
25572
  * Common display value wrapper classes.
25573
+ * @private
25574
+ * @returns {Object} Class map for Lit's classMap directive.
24568
25575
  */
24569
25576
  get commonDisplayValueWrapperClasses() {
24570
25577
  return {
@@ -24732,7 +25739,7 @@ class AuroDatePicker extends AuroElement {
24732
25739
  }
24733
25740
 
24734
25741
  // Compute and mark the active cell
24735
- if (this.calendar.activeCellDate == null) {
25742
+ if (this.calendar.activeCellDate === null || this.calendar.activeCellDate === undefined) {
24736
25743
  this.calendar.activeCellDate = this.calendar.computeActiveDate();
24737
25744
  }
24738
25745
  if (this.calendar.activeCellDate !== undefined) {
@@ -24741,29 +25748,37 @@ class AuroDatePicker extends AuroElement {
24741
25748
 
24742
25749
  // If no cell matched (e.g. centralDate month differs from the rendered
24743
25750
  // range on mobile), fall back to the first rendered enabled cell.
24744
- let activeCell = allCells.find(cell => cell.active);
25751
+ let activeCell = allCells.find((cell) => cell.active);
24745
25752
  if (!activeCell && allCells.length) {
24746
- const fallback = allCells[0];
25753
+ const [fallback] = allCells;
24747
25754
  if (fallback.day) {
24748
25755
  this.calendar.activeCellDate = fallback.day.date;
24749
25756
  this.calendar.setActiveCell(this.calendar.activeCellDate);
24750
- activeCell = allCells.find(cell => cell.active);
25757
+ activeCell = allCells.find((cell) => cell.active);
24751
25758
  }
24752
25759
  }
24753
25760
 
24754
- // Wait for the cell's Lit render to complete so the button's tabindex
24755
- // reflects the active state before we attempt to focus.
25761
+ // Focus the calendar grid wrapper (aria-activedescendant handles
25762
+ // the SR announcement for the active cell).
24756
25763
  if (activeCell) {
24757
- activeCell.updateComplete.then(() => {
24758
- activeCell.hovered = true;
24759
- const btn = activeCell.shadowRoot.querySelector('button:not([aria-hidden])');
24760
- if (btn) {
24761
- btn.setAttribute('tabindex', '0');
24762
- btn.focus({ focusVisible: true });
24763
- } else if (attempts < MAX_ATTEMPTS) {
24764
- requestAnimationFrame(tryFocus);
24765
- }
24766
- });
25764
+ this.calendar.focusActiveCell();
25765
+
25766
+ // Announce the initial active cell via the live region.
25767
+ // Delay the announcement so it arrives after VoiceOver finishes
25768
+ // speaking the focus-change announcement for the grid wrapper.
25769
+ // Without this delay, VoiceOver drops the live region update
25770
+ // because it's already mid-announcement from the focus move.
25771
+ const announcement = this.calendar.buildFocusAnnouncement(activeCell.day.date);
25772
+ setTimeout(() => {
25773
+ this.calendar.announceSelection(announcement);
25774
+ }, 500);
25775
+
25776
+ // On mobile fullscreen, scroll the month list so the active cell's
25777
+ // month is visible. Without this, the list stays scrolled to the
25778
+ // calendarStartDate month which may be far from the active cell.
25779
+ if (this.dropdown.isBibFullscreen) {
25780
+ this.calendar.scrollToActiveCell();
25781
+ }
24767
25782
  } else if (attempts < MAX_ATTEMPTS) {
24768
25783
  requestAnimationFrame(tryFocus);
24769
25784
  }
@@ -25162,12 +26177,14 @@ class AuroDatePicker extends AuroElement {
25162
26177
  }
25163
26178
 
25164
26179
  const formatted = this.util.toNorthAmericanFormat(dateStr, this.format);
25165
- if (!this.util.validDateStr(dateStr, this.format)) return false;
26180
+ if (!this.util.validDateStr(dateStr, this.format)) {
26181
+ return false;
26182
+ }
25166
26183
 
25167
- const d = new Date(formatted);
25168
- const yyyy = d.getFullYear();
25169
- const mm = String(d.getMonth() + 1).padStart(2, '0');
25170
- const dd = String(d.getDate()).padStart(2, '0');
26184
+ const dt = new Date(formatted);
26185
+ const yyyy = dt.getFullYear();
26186
+ const mm = String(dt.getMonth() + 1).padStart(2, '0');
26187
+ const dd = String(dt.getDate()).padStart(2, '0');
25171
26188
  return this.blackoutDates.includes(`${yyyy}-${mm}-${dd}`);
25172
26189
  }
25173
26190
 
@@ -25185,7 +26202,7 @@ class AuroDatePicker extends AuroElement {
25185
26202
 
25186
26203
  // After standard validation, check blackout dates for typed input
25187
26204
  if (this.validity !== 'customError') {
25188
- if (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd))) {
26205
+ if (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd))) { // eslint-disable-line no-extra-parens
25189
26206
  const msg = this.setCustomValidityCustomError || 'Selected date is unavailable';
25190
26207
  this.validity = 'customError';
25191
26208
  this.errorMessage = msg;
@@ -25231,7 +26248,7 @@ class AuroDatePicker extends AuroElement {
25231
26248
  // 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"]
25232
26249
  const stringfiedDates = JSON.stringify(this.referenceDates);
25233
26250
  if (stringfiedDates.includes('-')) {
25234
- this.referenceDates = this.referenceDates.map(date => date.replace(/-/gu, '/' ));
26251
+ this.referenceDates = this.referenceDates.map((date) => date.replace(/-/gu, '/'));
25235
26252
  }
25236
26253
  }
25237
26254
 
@@ -25820,7 +26837,7 @@ class AuroDatePicker extends AuroElement {
25820
26837
  /**
25821
26838
  * Handles click on the clear button.
25822
26839
  * @private
25823
- * @param {MouseEvent} event
26840
+ * @param {MouseEvent} event - The mouse event from the clear button click.
25824
26841
  * @returns {void}
25825
26842
  */
25826
26843
  handleClearClick(event) {
@@ -26019,13 +27036,24 @@ function blackoutLabelExample() {
26019
27036
  const today = new Date();
26020
27037
  today.setHours(0, 0, 0, 0);
26021
27038
 
26022
- // Set min to 1 week before today, max to 1 week after today
26023
- const minDate = new Date(today);
26024
- minDate.setDate(today.getDate() - 7);
27039
+ // Calendar starts 6 months in the future
27040
+ const startDate = new Date(today);
27041
+ startDate.setMonth(today.getMonth() + 6);
27042
+
27043
+ // Calendar ends 6 months in the future
27044
+ const endDate = new Date(today);
27045
+ endDate.setMonth(today.getMonth() + 12);
27046
+
27047
+ // Min date is 2 months after the start date
27048
+ const minDate = new Date(startDate);
27049
+ minDate.setMonth(startDate.getMonth() + 2);
26025
27050
 
26026
- const maxDate = new Date(today);
26027
- maxDate.setDate(today.getDate() + 7);
27051
+ // Max date is 1 week after min date
27052
+ const maxDate = new Date(minDate);
27053
+ maxDate.setDate(minDate.getDate() + 75);
26028
27054
 
27055
+ blackoutDP.setAttribute('calendarStartDate', formatMMDDYYYY(startDate));
27056
+ blackoutDP.setAttribute('calendarEndDate', formatMMDDYYYY(endDate));
26029
27057
  blackoutDP.setAttribute('minDate', formatMMDDYYYY(minDate));
26030
27058
  blackoutDP.setAttribute('maxDate', formatMMDDYYYY(maxDate));
26031
27059