@aurodesignsystem-dev/auro-formkit 0.0.0-pr1492.5 → 0.0.0-pr1493.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 (153) hide show
  1. package/components/bibtemplate/dist/auro-bibtemplate.d.ts +7 -0
  2. package/components/bibtemplate/dist/index.js +9 -1
  3. package/components/bibtemplate/dist/registered.js +9 -1
  4. package/components/checkbox/demo/css-only.html +57 -0
  5. package/components/checkbox/demo/css-only.md +146 -0
  6. package/components/checkbox/demo/customize.min.js +2 -2
  7. package/components/checkbox/demo/getting-started.min.js +2 -2
  8. package/components/checkbox/demo/index.min.js +2 -2
  9. package/components/checkbox/demo/pages.json +1 -1
  10. package/components/checkbox/demo/styles.min.css +1 -1
  11. package/components/checkbox/demo/why-checkbox.html +57 -0
  12. package/components/checkbox/demo/why-checkbox.md +86 -0
  13. package/components/checkbox/dist/index.js +2 -2
  14. package/components/checkbox/dist/registered.js +2 -2
  15. package/components/combobox/demo/css-only.html +57 -0
  16. package/components/combobox/demo/css-only.md +209 -0
  17. package/components/combobox/demo/customize.md +7 -3
  18. package/components/combobox/demo/customize.min.js +1846 -1804
  19. package/components/combobox/demo/getting-started.min.js +1846 -1804
  20. package/components/combobox/demo/index.min.js +1846 -1804
  21. package/components/combobox/demo/pages.json +1 -1
  22. package/components/combobox/demo/styles.min.css +1 -1
  23. package/components/combobox/demo/why-combobox.html +57 -0
  24. package/components/combobox/demo/why-combobox.md +113 -0
  25. package/components/combobox/dist/auro-combobox.d.ts +5 -0
  26. package/components/combobox/dist/index.js +796 -179
  27. package/components/combobox/dist/registered.js +796 -179
  28. package/components/counter/demo/css-only.html +57 -0
  29. package/components/counter/demo/css-only.md +184 -0
  30. package/components/counter/demo/customize.min.js +276 -16
  31. package/components/counter/demo/index.min.js +276 -16
  32. package/components/counter/demo/keyboard-behavior.md +1 -0
  33. package/components/counter/demo/pages.json +1 -1
  34. package/components/counter/demo/styles.min.css +1 -1
  35. package/components/counter/demo/why-counter.html +57 -0
  36. package/components/counter/demo/why-counter.md +108 -0
  37. package/components/counter/dist/index.js +5457 -193
  38. package/components/counter/dist/registered.js +5457 -193
  39. package/components/datepicker/demo/accessibility.md +54 -3
  40. package/components/datepicker/demo/api.md +65 -55
  41. package/components/datepicker/demo/css-only.html +57 -0
  42. package/components/datepicker/demo/css-only.md +151 -0
  43. package/components/datepicker/demo/customize.html +2 -0
  44. package/components/datepicker/demo/customize.js +19 -0
  45. package/components/datepicker/demo/customize.md +474 -298
  46. package/components/datepicker/demo/customize.min.js +36243 -0
  47. package/components/datepicker/demo/design.md +5 -3
  48. package/components/datepicker/demo/getting-started.md +6 -6
  49. package/components/datepicker/demo/index.js +5 -1
  50. package/components/datepicker/demo/index.md +113 -16
  51. package/components/datepicker/demo/index.min.js +2735 -396
  52. package/components/datepicker/demo/keyboard-behavior.md +201 -2
  53. package/components/datepicker/demo/pages.json +1 -1
  54. package/components/datepicker/demo/styles.min.css +1 -1
  55. package/components/datepicker/demo/voiceover.md +21 -12
  56. package/components/datepicker/demo/why-datepicker.html +57 -0
  57. package/components/datepicker/demo/why-datepicker.md +133 -0
  58. package/components/datepicker/dist/index.js +2649 -397
  59. package/components/datepicker/dist/registered.js +2649 -397
  60. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +116 -14
  61. package/components/datepicker/dist/src/auro-calendar-month.d.ts +54 -1
  62. package/components/datepicker/dist/src/auro-calendar.d.ts +264 -0
  63. package/components/datepicker/dist/src/auro-datepicker.d.ts +189 -53
  64. package/components/datepicker/dist/src/datepickerKeyboardStrategy.d.ts +5 -3
  65. package/components/datepicker/dist/src/utilities.d.ts +0 -14
  66. package/components/dropdown/demo/accessibility.md +11 -0
  67. package/components/dropdown/demo/api.md +1 -0
  68. package/components/dropdown/demo/css-only.html +57 -0
  69. package/components/dropdown/demo/css-only.md +219 -0
  70. package/components/dropdown/demo/customize.md +3 -0
  71. package/components/dropdown/demo/customize.min.js +265 -13
  72. package/components/dropdown/demo/getting-started.min.js +265 -13
  73. package/components/dropdown/demo/index.min.js +265 -13
  74. package/components/dropdown/demo/keyboard-behavior.md +1 -0
  75. package/components/dropdown/demo/pages.json +1 -1
  76. package/components/dropdown/demo/styles.min.css +1 -1
  77. package/components/dropdown/demo/why-dropdown.html +57 -0
  78. package/components/dropdown/demo/why-dropdown.md +97 -0
  79. package/components/dropdown/dist/auro-dropdown.d.ts +36 -1
  80. package/components/dropdown/dist/index.js +265 -13
  81. package/components/dropdown/dist/registered.js +265 -13
  82. package/components/form/demo/css-only.html +57 -0
  83. package/components/form/demo/css-only.md +156 -0
  84. package/components/form/demo/customize.min.js +11084 -8072
  85. package/components/form/demo/getting-started.min.js +11084 -8072
  86. package/components/form/demo/index.min.js +11084 -8072
  87. package/components/form/demo/pages.json +1 -1
  88. package/components/form/demo/registerDemoDeps.min.js +11083 -8071
  89. package/components/form/demo/styles.min.css +1 -1
  90. package/components/form/demo/why-form.html +57 -0
  91. package/components/form/demo/why-form.md +101 -0
  92. package/components/input/demo/css-only.html +57 -0
  93. package/components/input/demo/css-only.md +199 -0
  94. package/components/input/demo/customize.md +625 -636
  95. package/components/input/demo/customize.min.js +150 -75
  96. package/components/input/demo/getting-started.md +16 -6
  97. package/components/input/demo/getting-started.min.js +150 -75
  98. package/components/input/demo/index.min.js +150 -75
  99. package/components/input/demo/pages.json +1 -1
  100. package/components/input/demo/styles.min.css +1 -1
  101. package/components/input/demo/why-input.html +57 -0
  102. package/components/input/demo/why-input.md +121 -0
  103. package/components/input/dist/auro-input-util.d.ts +1 -1
  104. package/components/input/dist/base-input.d.ts +16 -0
  105. package/components/input/dist/index.js +150 -75
  106. package/components/input/dist/registered.js +150 -75
  107. package/components/input/dist/utilities.d.ts +1 -2
  108. package/components/menu/demo/api.md +41 -45
  109. package/components/menu/demo/css-only.html +57 -0
  110. package/components/menu/demo/css-only.md +166 -0
  111. package/components/menu/demo/customize.md +0 -28
  112. package/components/menu/demo/index.min.js +779 -1354
  113. package/components/menu/demo/pages.json +1 -1
  114. package/components/menu/demo/styles.min.css +1 -1
  115. package/components/menu/demo/why-menu.html +57 -0
  116. package/components/menu/demo/why-menu.md +104 -0
  117. package/components/menu/dist/auro-menu.d.ts +95 -110
  118. package/components/menu/dist/auro-menuoption.d.ts +32 -138
  119. package/components/menu/dist/index.js +753 -1308
  120. package/components/menu/dist/registered.js +765 -1308
  121. package/components/radio/demo/css-only.html +57 -0
  122. package/components/radio/demo/css-only.md +151 -0
  123. package/components/radio/demo/customize.min.js +1764 -0
  124. package/components/radio/demo/demo-support.min.js +55807 -0
  125. package/components/radio/demo/getting-started.js +1 -1
  126. package/components/radio/demo/getting-started.md +1 -1
  127. package/components/radio/demo/getting-started.min.js +1783 -0
  128. package/components/radio/demo/index.min.js +2 -2
  129. package/components/radio/demo/pages.json +1 -1
  130. package/components/radio/demo/styles.min.css +1 -1
  131. package/components/radio/demo/why-radio.html +57 -0
  132. package/components/radio/demo/why-radio.md +92 -0
  133. package/components/radio/dist/index.js +2 -2
  134. package/components/radio/dist/registered.js +2 -2
  135. package/components/select/demo/api.md +1 -0
  136. package/components/select/demo/css-only.html +57 -0
  137. package/components/select/demo/css-only.md +203 -0
  138. package/components/select/demo/customize.md +78 -3
  139. package/components/select/demo/customize.min.js +1341 -1533
  140. package/components/select/demo/getting-started.min.js +1341 -1533
  141. package/components/select/demo/index.min.js +1341 -1533
  142. package/components/select/demo/keyboard-behavior.md +19 -0
  143. package/components/select/demo/pages.json +1 -1
  144. package/components/select/demo/styles.min.css +1 -1
  145. package/components/select/demo/why-select.html +57 -0
  146. package/components/select/demo/why-select.md +128 -0
  147. package/components/select/dist/auro-select.d.ts +38 -2
  148. package/components/select/dist/index.js +435 -52
  149. package/components/select/dist/registered.js +435 -52
  150. package/components/select/dist/selectUtils.d.ts +12 -0
  151. package/custom-elements.json +4206 -3708
  152. package/package.json +8 -8
  153. package/components/menu/dist/auro-menu.context.d.ts +0 -238
@@ -764,7 +764,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
764
764
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
765
765
  const input = elem.renderRoot.querySelector('input');
766
766
 
767
- if (input.validationMessage.length > 0) {
767
+ if (input && input.validationMessage.length > 0) {
768
768
  elem.errorMessage = input.validationMessage;
769
769
  }
770
770
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -10359,7 +10359,11 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10359
10359
  return part.value;
10360
10360
  }
10361
10361
  })
10362
- .join("");
10362
+ .join("")
10363
+ // Remove whitespace and leading/trailing special characters for IMask compatibility
10364
+ // for example, ko-KR's format is `YYYY. MM. DD.` which causes issues with IMask if we don't remove the trailing period.
10365
+ .replace(/\s/gu, '')
10366
+ .replace(/^[^A-Z0-9]+|[^A-Z0-9]+$/gu, '');
10363
10367
  }
10364
10368
 
10365
10369
  /**
@@ -10515,27 +10519,16 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10515
10519
  * Converts a model value to a display value for the input element.
10516
10520
  * For full date formats, converts an ISO model value to the configured display format.
10517
10521
  * @private
10518
- * @param {string} value - The model value (ISO string for date types).
10519
10522
  * @param {Date|undefined} valueObject - Date object representation of value.
10520
10523
  * @param {string} format - The date format string.
10521
- * @returns {string}
10524
+ * @returns {string | undefined}
10522
10525
  */
10523
- toFormattedValue(value, valueObject, format) {
10524
- if (!this.isFullDateFormat('date', format) || !value) {
10525
- return value;
10526
- }
10527
-
10528
- if (!dateFormatter$1.isValidDate(value)) {
10529
- // For ISO-pattern strings that fail range validation (e.g. '2024-99-99'),
10530
- // return '' so inputElement stays empty and format-based validation is not triggered.
10531
- return (/^\d{4}-\d{2}-\d{2}$/u).test(value) ? '' : value;
10532
- }
10533
-
10526
+ toFormattedValue(valueObject, format) {
10534
10527
  const normalizedFormat = format.toLowerCase();
10535
10528
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10536
10529
 
10537
10530
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
10538
- return value;
10531
+ return undefined;
10539
10532
  }
10540
10533
 
10541
10534
  return maskOptions.format(valueObject);
@@ -10559,29 +10552,6 @@ function getDateFormatFromLocale$1 (locale) {
10559
10552
 
10560
10553
  class AuroDatepickerUtilities {
10561
10554
 
10562
- /**
10563
- * Converts an ISO date string (yyyy-mm-dd) to any display format.
10564
- * @param {string} isoStr - ISO date string.
10565
- * @param {string} format - Target display format (e.g. "mm/dd/yyyy", "dd/mm/yyyy").
10566
- * @returns {string|undefined}
10567
- */
10568
- toCustomFormat(isoStr, format) {
10569
- if (!isoStr || !format) return undefined;
10570
- try {
10571
- const date = dateFormatter$1.stringToDateInstance(isoStr);
10572
- const year = String(date.getFullYear()).padStart(4, '0');
10573
- const month = String(date.getMonth() + 1).padStart(2, '0');
10574
- const day = String(date.getDate()).padStart(2, '0');
10575
- return format.toLowerCase()
10576
- .replace(/yyyy/iu, year)
10577
- .replace(/yy/iu, year.slice(-2))
10578
- .replace(/mm/iu, month)
10579
- .replace(/dd/iu, day);
10580
- } catch {
10581
- return undefined;
10582
- }
10583
- }
10584
-
10585
10555
  /**
10586
10556
  * Converts any date object to a date object representing the first day of the month.
10587
10557
  * @param {Object} date - Date to convert to the first day of the month.
@@ -10607,17 +10577,6 @@ class AuroDatepickerUtilities {
10607
10577
  return months <= 0 ? 0 : months;
10608
10578
  }
10609
10579
 
10610
- /**
10611
- * Function to format a number to two digits.
10612
- * @private
10613
- * @param {Number} num - Number to format.
10614
- * @returns {String}
10615
- */
10616
- formatTwoDigits(num) {
10617
- const singleDigitThreshold = 10;
10618
- return num < singleDigitThreshold ? `0${num}` : num;
10619
- }
10620
-
10621
10580
  /**
10622
10581
  * Function to generate checkmark svg.
10623
10582
  * @private
@@ -10675,6 +10634,7 @@ class UtilitiesCalendarRender {
10675
10634
  updateCentralDate(elem, date) {
10676
10635
  // if date is already iso formatted string, we can skip the conversion and validation step
10677
10636
  if (typeof date === 'string' && dateFormatter$1.isValidDate(date)) {
10637
+ // eslint-disable-next-line
10678
10638
  elem.centralDate = date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$1-$2-01'); // Set to first of the month
10679
10639
  return;
10680
10640
  }
@@ -10700,6 +10660,7 @@ class UtilitiesCalendarRender {
10700
10660
  determineDefinedCalendarRange(elem) {
10701
10661
  if (elem.getAttribute('calendarStartDate') && elem.getAttribute('calendarEndDate')) {
10702
10662
  // if we have a defined range of months, use that
10663
+ // prop is not in sync with attribute yet, use attribute value
10703
10664
  elem.calendarRangeMonths = elem.util.monthDiff(dateFormatter$1.stringToDateInstance(elem.getAttribute('calendarStartDate')), dateFormatter$1.stringToDateInstance(elem.getAttribute('calendarEndDate')));
10704
10665
  } else {
10705
10666
  // if we don't have a defined range of months, use undefined
@@ -10758,13 +10719,10 @@ class UtilitiesCalendarRender {
10758
10719
  // 2. Start by assuming we can render the max number of months.
10759
10720
  let calendarCount = maxRenderableMonths;
10760
10721
 
10761
- // 3. If we didn't get a count early, restrict based on min/max date.
10722
+ // 3. If maximumRenderableMonths() returns 0 (e.g. an invalid/empty defined range),
10723
+ // fall back to the min/max date range so something is rendered.
10762
10724
  if (!calendarCount && elem.minDate && elem.maxDate) {
10763
- const monthsInRange = this.util.monthDiff(dateFormatter$1.stringToDateInstance(elem.minDate), dateFormatter$1.stringToDateInstance(elem.maxDate));
10764
-
10765
- if (monthsInRange < maxRenderableMonths) {
10766
- calendarCount = monthsInRange;
10767
- }
10725
+ calendarCount = this.util.monthDiff(elem.minDateObject, elem.maxDateObject);
10768
10726
  }
10769
10727
 
10770
10728
  if (elem.numCalendars !== calendarCount) {
@@ -10808,11 +10766,10 @@ class UtilitiesCalendarRender {
10808
10766
  <auro-formkit-calendar-month
10809
10767
  id="${`month-${month}-${year}`}"
10810
10768
  .disabledDays="${elem.disabledDays}"
10811
- .min="${elem.min}"
10812
- .max="${elem.max}"
10769
+ .min="${elem.minDateObject?.getTime() / 1000}"
10770
+ .max="${elem.maxDateObject?.getTime() / 1000}"
10813
10771
  ?noRange="${elem.noRange}"
10814
10772
  .monthFirst="${elem.monthFirst}"
10815
- .hoveredDate="${elem.hoveredDate}"
10816
10773
  .dateTo="${elem.dateTo}"
10817
10774
  .dateFrom="${elem.dateFrom}"
10818
10775
  .locale="${elem.locale}"
@@ -10845,11 +10802,11 @@ var snowflakeStyle = i$3`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
10845
10802
 
10846
10803
  var snowflakeColors = i$3`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
10847
10804
 
10848
- 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;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendarNavButtons{position:absolute;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%}: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:""}`;
10805
+ 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}`;
10849
10806
 
10850
10807
  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)}}`;
10851
10808
 
10852
- 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}.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%}`;
10809
+ 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:376px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%;border-radius:10px;overflow:hidden}.tr:not(:last-of-type){margin-bottom:var(--ds-size-100, 0.5rem)}`;
10853
10810
 
10854
10811
  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)}`;
10855
10812
 
@@ -11610,41 +11567,45 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
11610
11567
  __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
11611
11568
  AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
11612
11569
 
11613
- 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.disabled{cursor:default !important;pointer-events:none}.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}::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}}`;
11570
+ 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:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
11614
11571
 
11615
- 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.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.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}`;
11572
+ 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:after{border-color:var(--ds-basic-color-border-default, #959595);box-shadow:inset 0 0 0 2px var(--ds-basic-color-surface-default, #ffffff)}:host .day.reference:hover::after{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background-muted, #f7f7f7)}:host .day:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host .day.disabled{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.blackout{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.inRange:before,:host .day.rangeDepartDate:before,:host .day.rangeReturnDate:before,:host .day.lastHoveredDate:before{background-color:var(--ds-auro-calendar-cell-in-range-color)}:host .day.sameDateTrip:before{--ds-auro-calendar-cell-in-range-color: transparent}`;
11616
11573
 
11617
- 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",m$7=c$5.reduce(function(e,t){return e.concat([t+"-"+p$7,t+"-"+d$3])},[]),u$8=[].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 O=Math.max,k$6=Math.min,A$3=Math.round;function z$6(){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 E(){return !/^((?!chrome|android).)*safari/i.test(z$6())}function M$7(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&&A$3(s.width)/e.offsetWidth||1,o=e.offsetHeight>0&&A$3(s.height)/e.offsetHeight||1);var n=(w$6(e)?y$6(e):window).visualViewport,a=!E()&&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 T$3(e){var t=M$7(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 H$3(e){return ["table","td","th"].indexOf(v$4(e))>=0}function C$3(e){return ((w$6(e)?e.ownerDocument:e.document)||window.document).documentElement}function R$3(e){return "html"===v$4(e)?e:e.assignedSlot||e.parentNode||(x$3(e)?e.host:null)||C$3(e)}function j(e){return b$3(e)&&"fixed"!==L(e).position?e.offsetParent:null}function N$3(e){for(var t=y$6(e),i=j(e);i&&H$3(i)&&"static"===L(i).position;)i=j(i);return i&&("html"===v$4(i)||"body"===v$4(i)&&"static"===L(i).position)?t:i||function(e){var t=/firefox/i.test(z$6());if(/Trident/i.test(z$6())&&b$3(e)&&"fixed"===L(e).position)return null;var i=R$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 D(e,t,i){return O(e,k$6(t,i))}function I(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function F(e,t){return t.reduce(function(t,i){return t[i]=e,t},{})}var U$3={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),m=[a,n$3].indexOf(f)>=0?"height":"width";if(p&&d){var u=function(e,t){return I("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:F(e,c$5))}(l.padding,i),g=T$3(p),v="y"===h?r$3:a,y="y"===h?o$3:n$3,w=i.rects.reference[m]+i.rects.reference[h]-d[h]-i.rects.popper[m],b=d[h]-i.rects.reference[h],x=N$3(p),S=x?"y"===h?x.clientHeight||0:x.clientWidth||0:0,O=w/2-b/2,k=u[v],A=S-g[m]-u[y],z=S/2-g[m]/2+O,E=D(k,z,A),M=h;i.modifiersData[s]=((t={})[M]=E,t.centerOffset=E-z,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 q$3(e){return e.split("-")[1]}var W={top:"auto",right:"auto",bottom:"auto",left:"auto"};function X(e){var t,i=e.popper,s=e.popperRect,l=e.placement,c=e.variation,p=e.offsets,f=e.position,h=e.gpuAcceleration,m=e.adaptive,u=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 u?u({x:w,y:x}):{x:w,y:x};w=S.x,x=S.y;var _=p.hasOwnProperty("x"),O=p.hasOwnProperty("y"),k=a,z=r$3,E=window;if(m){var M=N$3(i),T="clientHeight",B="clientWidth";if(M===y$6(i)&&"static"!==L(M=C$3(i)).position&&"absolute"===f&&(T="scrollHeight",B="scrollWidth"),l===r$3||(l===a||l===n$3)&&c===d$3)z=o$3,x-=(g&&M===E&&E.visualViewport?E.visualViewport.height:M[T])-s.height,x*=h?1:-1;if(l===a||(l===r$3||l===o$3)&&c===d$3)k=n$3,w-=(g&&M===E&&E.visualViewport?E.visualViewport.width:M[B])-s.width,w*=h?1:-1;}var H,R=Object.assign({position:f},m&&W),j=true===u?function(e,t){var i=e.x,s=e.y,r=t.devicePixelRatio||1;return {x:A$3(i*r)/r||0,y:A$3(s*r)/r||0}}({x:w,y:x},y$6(i)):{x:w,y:x};return w=j.x,x=j.y,h?Object.assign({},R,((H={})[z]=O?"0":"",H[k]=_?"0":"",H.transform=(E.devicePixelRatio||1)<=1?"translate("+w+"px, "+x+"px)":"translate3d("+w+"px, "+x+"px, 0)",H)):Object.assign({},R,((t={})[z]=O?x+"px":"",t[k]=_?w+"px":"",t.transform="",t))}var V={passive:true};var G={left:"right",right:"left",bottom:"top",top:"bottom"};function $(e){return e.replace(/left|right|bottom|top/g,function(e){return G[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 M$7(C$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(R$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(R$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=C$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=E();(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=M$7(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=C$3(e),s=J(e),r=null==(t=e.ownerDocument)?void 0:t.body,o=O(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),n=O(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+=O(i.clientWidth,r?r.clientWidth:0)-o),{width:o,height:n,x:a,y:l}}(C$3(e)))}function re(e,t,i,s){var r="clippingParents"===t?function(e){var t=te(R$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=O(r.top,t.top),t.right=k$6(r.right,t.right),t.bottom=k$6(r.bottom,t.bottom),t.left=O(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?q$3(l):null,h=i.x+i.width/2-s.width/2,m=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:m};break;case a:t={x:i.x-s.width,y:m};break;default:t={x:i.x,y:i.y};}var u=c?P(c):null;if(null!=u){var g="y"===u?"height":"width";switch(f){case p$7:t[u]=t[u]-(i[g]/2-s[g]/2);break;case d$3:t[u]=t[u]+(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,m=void 0===d?"clippingParents":d,u=i.rootBoundary,g=void 0===u?f$7:u,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,O=I("number"!=typeof _?_:F(_,c$5)),k=y===h$6?"reference":h$6,A=e.rects.popper,z=e.elements[x?k:y],E=re(w$6(z)?z:z.contextElement||C$3(e.elements.popper),m,g,p),T=M$7(e.elements.reference),B=oe({reference:T,element:A,placement:a}),L=ie(Object.assign({},A,B)),H=y===h$6?L:T,R={top:E.top-H.top+O.top,bottom:H.bottom-E.bottom+O.bottom,left:E.left-H.left+O.left,right:H.right-E.right+O.right},j=e.modifiersData.offset;if(y===h$6&&j){var N=j[a];Object.keys(R).forEach(function(e){var t=[n$3,o$3].indexOf(e)>=0?1:-1,i=[r$3,o$3].indexOf(e)>=0?"y":"x";R[e]+=N[i]*t;});}return R}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?u$8:l,d=q$3(s),f=d?a?m$7:m$7.filter(function(e){return q$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,m=i.fallbackPlacements,u=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,O=_$4(S),k=m||(O===S||!b?[$(S)]:function(e){if(_$4(e)===l$3)return [];var t=$(e);return [Y(e),t,Y(t)]}(S)),A=[S].concat(k).reduce(function(e,i){return e.concat(_$4(i)===l$3?ae(t,{placement:i,boundary:g,rootBoundary:v,padding:u,flipVariations:b,allowedAutoPlacements:x}):i)},[]),z=t.rects.reference,E=t.rects.popper,M=new Map,T=true,B=A[0],L=0;L<A.length;L++){var H=A[L],C=_$4(H),R=q$3(H)===p$7,j=[r$3,o$3].indexOf(C)>=0,N=j?"width":"height",P=ne(t,{placement:H,boundary:g,rootBoundary:v,altBoundary:y,padding:u}),D=j?R?n$3:a:R?o$3:r$3;z[N]>E[N]&&(D=$(D));var I=$(D),F=[];if(d&&F.push(P[C]<=0),h&&F.push(P[D]<=0,P[I]<=0),F.every(function(e){return e})){B=H,T=false;break}M.set(H,F);}if(T)for(var U=function(e){var t=A.find(function(t){var i=M.get(t);if(i)return i.slice(0,e).every(function(e){return e})});if(t)return B=t,"break"},W=b?3:1;W>0;W--){if("break"===U(W))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=u$8.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,m=i.rootBoundary,u=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:m,padding:g,altBoundary:u}),S=_$4(t.placement),A=q$3(t.placement),z=!A,E=P(S),M="x"===E?"y":"x",B=t.modifiersData.popperOffsets,L=t.rects.reference,H=t.rects.popper,C="function"==typeof b?b(Object.assign({},t.rects,{placement:t.placement})):b,R="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),j=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,I={x:0,y:0};if(B){if(c){var F,U="y"===E?r$3:a,W="y"===E?o$3:n$3,X="y"===E?"height":"width",V=B[E],G=V+x[U],$=V-x[W],K=y?-H[X]/2:0,Y=A===p$7?L[X]:H[X],J=A===p$7?-H[X]:-L[X],Q=t.elements.arrow,Z=y&&Q?T$3(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[U],ie=ee[W],se=D(0,L[X],Z[X]),re=z?L[X]/2-K-se-te-R.mainAxis:Y-se-te-R.mainAxis,oe=z?-L[X]/2+K+se+ie+R.mainAxis:J+se+ie+R.mainAxis,ae=t.elements.arrow&&N$3(t.elements.arrow),le=ae?"y"===E?ae.clientTop||0:ae.clientLeft||0:0,ce=null!=(F=null==j?void 0:j[E])?F:0,pe=V+oe-ce,de=D(y?k$6(G,V+re-ce-le):G,V,y?O($,pe):$);B[E]=de,I[E]=de-V;}if(f){var fe,he="x"===E?r$3:a,me="x"===E?o$3:n$3,ue=B[M],ge="y"===M?"height":"width",ve=ue+x[he],ye=ue-x[me],we=-1!==[r$3,a].indexOf(S),be=null!=(fe=null==j?void 0:j[M])?fe:0,xe=we?ve:ue-L[ge]-H[ge]-be+R.altAxis,Se=we?ue+L[ge]+H[ge]-be-R.altAxis:ye,_e=y&&we?function(e,t,i){var s=D(e,t,i);return s>i?i:s}(xe,ue,Se):D(y?xe:ve,ue,y?Se:ye);B[M]=_e,I[M]=_e-ue;}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=A$3(t.width)/e.offsetWidth||1,s=A$3(t.height)/e.offsetHeight||1;return 1!==i||1!==s}(t),a=C$3(t),l=M$7(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=M$7(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 me(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 ue={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?ue:r;return function(e,t,i){ void 0===i&&(i=o);var r,n,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},ue,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=me(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:T$3(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,V);}),a&&l.addEventListener("resize",i.update,V),function(){o&&c.forEach(function(e){e.removeEventListener("scroll",i.update,V);}),a&&l.removeEventListener("resize",i.update,V);}},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:q$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,X(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,X(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,U$3,{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)}
11574
+ 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)}
11618
11575
  `,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:""}
11619
11576
  `,Se=i$3`:host{--ds-auro-popover-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, .15));--ds-auro-popover-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-popover-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}
11620
- `;class _e extends i$1{constructor(){super(),this.placement="top",this._onTouchStart=null,this._onTriggerMouseEnter=null,this._onTriggerMouseLeave=null,this._onTriggerFocus=null,this._onTriggerBlur=null,this._onTriggerKeydown=null,this._onHidePopover=null,this._onBodyMouseover=null,this._onSlotChange=null,this._addedTabIndex=false;}_initializeDefaults(){this.isPopoverVisible=false,this.runtimeUtils=new s$2;}static get properties(){return {addSpace:{type:Boolean,reflect:true},boundary:{type:String},disabled:{type:Boolean,reflect:true},for:{type:String,reflect:true},placement:{type:String},removeSpace:{type:Boolean,reflect:true}}}static get styles(){return [i$3`${xe}`,i$3`${be}`,i$3`${Se}`]}static register(e="auro-popover"){s$2.prototype.registerComponent(e,_e);}connectedCallback(){super.connectedCallback(),this._initializeDefaults(),this._onTouchStart||(this._onTouchStart=()=>{this.toggle();}),this.addEventListener("touchstart",this._onTouchStart);}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("touchstart",this._onTouchStart),this.trigger&&(this._onTriggerMouseEnter&&this._eventTarget.removeEventListener("mouseenter",this._onTriggerMouseEnter),this._onTriggerMouseLeave&&this._eventTarget.removeEventListener("mouseleave",this._onTriggerMouseLeave),this._onTriggerFocus&&this.trigger.removeEventListener("focus",this._onTriggerFocus),this._onTriggerBlur&&this.trigger.removeEventListener("blur",this._onTriggerBlur),this._onTriggerKeydown&&this.trigger.removeEventListener("keydown",this._onTriggerKeydown),this._onSlotChange&&this.shadowRoot?.querySelector("slot:not([name])")?.removeEventListener("slotchange",this._onSlotChange),this.trigger.removeAttribute("aria-description"),this._addedTabIndex&&"0"===this.trigger.getAttribute("tabindex")&&this.trigger.removeAttribute("tabindex")),this._onHidePopover&&this.removeEventListener("hidePopover",this._onHidePopover),this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper?.popper&&"function"==typeof this.popper.popper.destroy&&(this.popper.popper.destroy(),this.popper.popper=null);}firstUpdated(){if(this.runtimeUtils.handleComponentTagRename(this,"auro-popover"),this.for&&(this.trigger=document.querySelector(`#${this.for}`)||this.getRootNode().querySelector(`#${this.for}`)),this.trigger||([this.trigger]=this.shadowRoot.querySelector('slot[name="trigger"]').assignedElements()),!this.trigger)return;const e=this.trigger.tabIndex>=0,t=!!this.trigger.shadowRoot&&Boolean(this.trigger.shadowRoot.querySelector('button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'));e||t||this.trigger.hasAttribute("tabindex")||(this.trigger.setAttribute("tabindex","0"),this._addedTabIndex=true);const i=this.shadowRoot.querySelector("slot:not([name])"),s=()=>i.assignedNodes({flatten:true}).map(e=>e.textContent??"").join(" ").replace(/\s+/g," ").trim();this.trigger.setAttribute("aria-description",s()),this._onSlotChange=()=>{this.trigger?.setAttribute("aria-description",s());},i.addEventListener("slotchange",this._onSlotChange),this.auroPopover=this.shadowRoot.querySelector("#popover"),this.popper=new we(this.trigger,this.auroPopover,this.placement,this.boundary),this._onBodyMouseover=e=>this.handleMouseoverEvent(e),this._onTriggerMouseEnter=()=>{this.toggleShow();},this._onTriggerMouseLeave=()=>{this.toggleHide();},this._onTriggerFocus=()=>{this.toggleShow();},this._onTriggerBlur=()=>{this.toggleHide();},this._onTriggerKeydown=e=>{const t=e.key.toLowerCase();this.isPopoverVisible&&("tab"!==t&&"escape"!==t||this.toggleHide())," "!==t&&"enter"!==t||(" "===t&&this._addedTabIndex&&e.preventDefault(),this.toggle());},this._onHidePopover=()=>{this.toggleHide();},this._eventTarget=this.trigger.parentElement.localName===this.localName?this:this.trigger,this._eventTarget.addEventListener("mouseenter",this._onTriggerMouseEnter),this._eventTarget.addEventListener("mouseleave",this._onTriggerMouseLeave),this.trigger.addEventListener("keydown",this._onTriggerKeydown),this.trigger.addEventListener("focus",this._onTriggerFocus),this.trigger.addEventListener("blur",this._onTriggerBlur),this.addEventListener("hidePopover",this._onHidePopover);}toggle(){this.popper&&(this.isPopoverVisible?this.toggleHide():this.toggleShow());}toggleHide(){this.isPopoverVisible=false,this.removeAttribute("data-show"),this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper&&this.popper.hide();}toggleShow(){this.popper&&(this.popper.show(),this.isPopoverVisible=true,this.setAttribute("data-show","true"),document.body.addEventListener("mouseover",this._onBodyMouseover));}handleMouseoverEvent(e){this.isPopoverVisible&&!e.composedPath().includes(this)&&this.toggleHide();}updated(e){e.has("boundary")&&this.popper&&(this.popper.boundaryElement=this.popper.setBoundary(this.boundary));}render(){return b$5`
11621
- <div id="popover" class="popover util_insetLg body-default" part="popover">
11577
+ `;class _e extends i$1{constructor(){super(),this.placement="top",this.isPopoverVisible=false,this._onTouchStart=null,this._onTriggerMouseEnter=null,this._onTriggerMouseLeave=null,this._onTriggerFocus=null,this._onTriggerBlur=null,this._onTriggerKeydown=null,this._onHidePopover=null,this._onBodyMouseover=null,this._onSlotChange=null,this._addedTabIndex=false;}_initializeDefaults(){this.runtimeUtils=new s$2;}static get properties(){return {addSpace:{type:Boolean,reflect:true},boundary:{type:String},disabled:{type:Boolean,reflect:true},for:{type:String,reflect:true},placement:{type:String},removeSpace:{type:Boolean,reflect:true},isPopoverVisible:{type:Boolean,reflect:true,attribute:"data-show",converter:{fromAttribute:e=>null!==e,toAttribute:e=>e?"true":null}}}}static get styles(){return [i$3`${xe}`,i$3`${be}`,i$3`${Se}`]}static register(e="auro-popover"){s$2.prototype.registerComponent(e,_e);}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||this.setAttribute("role","none"),this._initializeDefaults(),this._onTouchStart||(this._onTouchStart=()=>{this.toggle();}),this.addEventListener("touchstart",this._onTouchStart);}disconnectedCallback(){if(super.disconnectedCallback(),this.removeEventListener("touchstart",this._onTouchStart),this.trigger){this._onTriggerMouseEnter&&this._eventTarget.removeEventListener("mouseenter",this._onTriggerMouseEnter),this._onTriggerMouseLeave&&this._eventTarget.removeEventListener("mouseleave",this._onTriggerMouseLeave),this._onTriggerFocus&&this.trigger.removeEventListener("focusin",this._onTriggerFocus),this._onTriggerBlur&&this.trigger.removeEventListener("focusout",this._onTriggerBlur),this._onTriggerKeydown&&this.trigger.removeEventListener("keydown",this._onTriggerKeydown),this._onSlotChange&&this.shadowRoot?.querySelector("slot:not([name])")?.removeEventListener("slotchange",this._onSlotChange);for(const e of this._ariaDescriptionTargets||[this.trigger])e.removeAttribute("aria-description");this._addedTabIndex&&"0"===this.trigger.getAttribute("tabindex")&&this.trigger.removeAttribute("tabindex");}this._onHidePopover&&this.removeEventListener("hidePopover",this._onHidePopover),this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper?.popper&&"function"==typeof this.popper.popper.destroy&&(this.popper.popper.destroy(),this.popper.popper=null);}firstUpdated(){this.runtimeUtils.handleComponentTagRename(this,"auro-popover"),this.for&&(this.trigger=document.querySelector(`#${this.for}`)||this.getRootNode().querySelector(`#${this.for}`)),this.trigger||([this.trigger]=this.shadowRoot.querySelector('slot[name="trigger"]').assignedElements()),this.trigger&&(this._setupAccessibility(),this._setupEventListeners(),this.isPopoverVisible&&this.popper&&(this.disabled?this.isPopoverVisible=false:(this.popper.show(),document.body.addEventListener("mouseover",this._onBodyMouseover))));}_setupEventListeners(){this.auroPopover=this.shadowRoot.querySelector("#popover"),this.popper=new we(this.trigger,this.auroPopover,this.placement,this.boundary),this._onBodyMouseover=e=>this.handleMouseoverEvent(e),this._onTriggerMouseEnter=()=>{this.toggleShow();},this._onTriggerMouseLeave=()=>{this.toggleHide();},this._onTriggerFocus=()=>{this.toggleShow();},this._onTriggerBlur=e=>{let t=e.relatedTarget,i=false;for(;t;){if(this.trigger.contains(t)||this.contains(t)){i=true;break}const e=t.getRootNode();t=e instanceof ShadowRoot?e.host:null;}i||this.toggleHide();},this._onTriggerKeydown=e=>{const t=e.key.toLowerCase();if(this.isPopoverVisible&&("tab"!==t&&"escape"!==t||this.toggleHide())," "===t||"enter"===t){if(e.target!==this.trigger&&!this._addedTabIndex)return;" "===t&&this._addedTabIndex&&e.preventDefault(),this.toggle();}},this._onHidePopover=()=>{this.toggleHide();},this._eventTarget=this.trigger.parentElement.localName===this.localName?this:this.trigger,this._eventTarget.addEventListener("mouseenter",this._onTriggerMouseEnter),this._eventTarget.addEventListener("mouseleave",this._onTriggerMouseLeave),this.trigger.addEventListener("keydown",this._onTriggerKeydown),this.trigger.addEventListener("focusin",this._onTriggerFocus),this.trigger.addEventListener("focusout",this._onTriggerBlur),this.addEventListener("hidePopover",this._onHidePopover);}_setupAccessibility(){const e=this.trigger.tabIndex>=0,t='button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex^="-"]), [contenteditable]:not([contenteditable="false"]), summary, iframe, audio[controls], video[controls]',i=e=>{if(e.tabIndex<0)return false;let t=e;for(;t;){if(t.closest("[hidden], [inert]"))return false;const e=t.getRootNode();t=e instanceof ShadowRoot?e.host:null;}return true};let s=[...this.trigger.querySelectorAll(t)].some(i);if(!s){const e=this.trigger.querySelectorAll("*");for(const r of e)if(r.localName.includes("-")&&(r.tabIndex>=0||r.shadowRoot&&[...r.shadowRoot.querySelectorAll(t)].some(i))){s=true;break}}!s&&this.trigger.localName.includes("-")&&this.trigger.shadowRoot&&(s=[...this.trigger.shadowRoot.querySelectorAll(t)].some(i)),e||s||this.trigger.hasAttribute("tabindex")||(this.trigger.setAttribute("tabindex","0"),this._addedTabIndex=true);const r=this.shadowRoot.querySelector("slot:not([name])"),o=()=>r.assignedNodes({flatten:true}).map(e=>e.textContent??"").join(" ").replace(/\s+/g," ").trim();if(this._ariaDescriptionTargets=[],!e&&s){const e=[...this.trigger.querySelectorAll(t)].filter(i);this._ariaDescriptionTargets.push(...e);const s=this.trigger.querySelectorAll("*");for(const r of s)if(r.localName.includes("-")&&!e.includes(r))if(r.tabIndex>=0)this._ariaDescriptionTargets.push(r);else if(r.shadowRoot){const e=[...r.shadowRoot.querySelectorAll(t)].filter(i);for(const t of e)this._ariaDescriptionTargets.push(t);}if(0===this._ariaDescriptionTargets.length){if(this.trigger.localName.includes("-")&&this.trigger.shadowRoot){const e=[...this.trigger.shadowRoot.querySelectorAll(t)].filter(i);this._ariaDescriptionTargets.push(...e);}0===this._ariaDescriptionTargets.length&&this._ariaDescriptionTargets.push(this.trigger);}}else this._ariaDescriptionTargets.push(this.trigger);const n=o();for(const e of this._ariaDescriptionTargets)e.setAttribute("aria-description",n);this._onSlotChange=()=>{const e=o();for(const t of this._ariaDescriptionTargets)t?.setAttribute("aria-description",e);},r.addEventListener("slotchange",this._onSlotChange);}toggle(){this.popper&&(this.isPopoverVisible?this.toggleHide():this.toggleShow());}toggleHide(){this.isPopoverVisible=false;}toggleShow(){this.popper&&!this.disabled&&(this.isPopoverVisible=true);}handleMouseoverEvent(e){this.isPopoverVisible&&!e.composedPath().includes(this)&&this.toggleHide();}updated(e){if(e.has("boundary")&&this.popper&&(this.popper.boundaryElement=this.popper.setBoundary(this.boundary)),e.has("isPopoverVisible")&&this.popper)if(this.isPopoverVisible){if(this.disabled)return void(this.isPopoverVisible=false);this.popper.show(),document.body.addEventListener("mouseover",this._onBodyMouseover);}else this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper.hide();e.has("disabled")&&this.disabled&&this.isPopoverVisible&&(this.isPopoverVisible=false);}render(){return b$5`
11578
+ <div
11579
+ id="popover"
11580
+ class="popover util_insetLg body-default"
11581
+ part="popover"
11582
+ role="tooltip"
11583
+ aria-hidden="${this.isPopoverVisible?"false":"true"}">
11622
11584
  <div id="arrow" class="arrow" data-popper-arrow></div>
11623
- <span role="tooltip"><slot></slot></span>
11585
+ <slot></slot>
11624
11586
  </div>
11625
11587
 
11626
- <span>
11588
+ <span role="presentation">
11627
11589
  <slot name="trigger" data-trigger-placement="${this.placement}"></slot>
11628
11590
  </span>
11629
11591
  `}}
11630
11592
 
11631
11593
  var popoverVersion = '6.0.1';
11632
11594
 
11595
+ /* 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 */
11596
+
11633
11597
  const startOfDay$1 = (ms) => {
11634
11598
  const date = new Date(ms);
11635
11599
  date.setHours(0, 0, 0, 0);
11636
11600
  return date.getTime();
11637
11601
  };
11638
11602
 
11639
- /* 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 */
11640
-
11641
11603
  class AuroCalendarCell extends i$1 {
11642
11604
  constructor() {
11643
11605
  super();
11644
11606
 
11645
11607
  this.day = null;
11646
11608
  this.selected = false;
11647
- this.hovered = false;
11648
11609
  this.dateTo = null;
11649
11610
  this.dateFrom = null;
11650
11611
  this.month = null;
@@ -11652,11 +11613,12 @@ class AuroCalendarCell extends i$1 {
11652
11613
  this.max = null;
11653
11614
  this.disabled = false;
11654
11615
  this.disabledDays = [];
11655
- this.hoveredDate = null;
11656
11616
  this.isCurrentDate = false;
11657
11617
  this._locale = null;
11658
11618
  this.dateStr = null;
11659
11619
  this.renderForDateSlot = false; // When false, the numerical date will render vertically centered. When true, the date will render off-center to the top and leave room below for the slot content.
11620
+ this.active = false;
11621
+ this.hasPopoverContent = false;
11660
11622
 
11661
11623
  this.runtimeUtils = new AuroLibraryRuntimeUtils$5();
11662
11624
 
@@ -11675,7 +11637,6 @@ class AuroCalendarCell extends i$1 {
11675
11637
  // ...super.properties,
11676
11638
  day: { type: Object },
11677
11639
  selected: { type: Boolean },
11678
- hovered: { type: Boolean },
11679
11640
  dateTo: { type: String },
11680
11641
  dateFrom: { type: String },
11681
11642
  month: { type: String },
@@ -11686,11 +11647,11 @@ class AuroCalendarCell extends i$1 {
11686
11647
  reflect: true
11687
11648
  },
11688
11649
  disabledDays: { type: Array },
11689
- hoveredDate: { type: String },
11690
11650
  isCurrentDate: { type: Boolean },
11691
11651
  locale: { type: String },
11692
11652
  dateStr: { type: String },
11693
- renderForDateSlot: { type: Boolean }
11653
+ renderForDateSlot: { type: Boolean },
11654
+ hasPopoverContent: { type: Boolean }
11694
11655
  };
11695
11656
  }
11696
11657
 
@@ -11714,17 +11675,17 @@ class AuroCalendarCell extends i$1 {
11714
11675
  }
11715
11676
 
11716
11677
  /**
11717
- * Handles selected and hovered states of the calendar cell when the date changes.
11678
+ * Handles selected state of the calendar cell when the selection changes.
11679
+ * Also clears any imperative range preview classes so classMap is the
11680
+ * sole source of truth after a selection update.
11718
11681
  * @private
11719
11682
  * @param {Number} dateFrom - Depart date.
11720
11683
  * @param {Number} dateTo - Return date.
11721
- * @param {Number} hoveredDate - Hovered date.
11722
11684
  * @param {Object} day - An object containing the dateFrom and day of month values.
11723
11685
  * @returns {void}
11724
11686
  */
11725
- dateChanged(dateFrom, dateTo, hoveredDate, day) {
11687
+ dateChanged(dateFrom, dateTo, day) {
11726
11688
  this.selected = false;
11727
- this.hovered = false;
11728
11689
 
11729
11690
  const parsedDateFrom = parseInt(dateFrom, 10);
11730
11691
  const parsedDateTo = parseInt(dateTo, 10);
@@ -11736,10 +11697,6 @@ class AuroCalendarCell extends i$1 {
11736
11697
  if (day.date === departTimestamp || day.date === returnTimestamp) {
11737
11698
  this.selected = true;
11738
11699
  }
11739
-
11740
- if (((hoveredDate === day.date || day.date < hoveredDate) && day.date > parsedDateFrom && !parsedDateTo && !Number.isNaN(parsedDateFrom) && parsedDateFrom !== undefined && !this.selected) || (day.date > parsedDateFrom && day.date < parsedDateTo)) {
11741
- this.hovered = true;
11742
- }
11743
11700
  }
11744
11701
  }
11745
11702
 
@@ -11749,27 +11706,104 @@ class AuroCalendarCell extends i$1 {
11749
11706
  * @returns {void}
11750
11707
  */
11751
11708
  handleTap() {
11752
- if (!this.disabled) {
11709
+ if (!this.disabled && !this.isBlackout()) {
11753
11710
  this.datepicker.handleCellClick(this.day.date);
11754
11711
  }
11712
+
11713
+ // Set this cell as the active cell regardless of blackout status
11714
+ if (this.day) {
11715
+ this.dispatchEvent(new CustomEvent('calendar-cell-activate', {
11716
+ bubbles: true,
11717
+ composed: true,
11718
+ detail: { date: this.day.date }
11719
+ }));
11720
+ }
11755
11721
  }
11756
11722
 
11757
11723
  /**
11758
11724
  * Handles user hover events and dispatches a custom event.
11725
+ * Does NOT set any reactive properties — the range preview is handled
11726
+ * imperatively by the calendar component to avoid O(N) re-renders.
11759
11727
  * @private
11760
11728
  * @returns {void}
11761
11729
  */
11762
11730
  handleHover() {
11763
- this.hovered = true;
11764
-
11765
- let _a;
11766
11731
  this.dispatchEvent(new CustomEvent('date-is-hovered', {
11767
- detail: { date: (_a = this.day) === null || _a === void 0 ? void 0 : _a.date },
11732
+ detail: { date: this.day?.date },
11733
+ }));
11734
+ }
11735
+
11736
+ /**
11737
+ * Handles focus events on the cell button.
11738
+ * Dispatches a lightweight event for the calendar to handle SR
11739
+ * announcements and range preview updates without triggering
11740
+ * any Lit lifecycle updates.
11741
+ * @private
11742
+ * @returns {void}
11743
+ */
11744
+ handleFocus() {
11745
+ this.dispatchEvent(new CustomEvent('calendar-cell-focused', {
11746
+ bubbles: true,
11747
+ composed: true,
11748
+ detail: { date: this.day?.date },
11768
11749
  }));
11769
11750
  }
11770
11751
 
11771
11752
  /**
11772
- * Checks if the current date is a valid date depending on the min and max values.
11753
+ * Checks if the current date is outside the valid min/max range.
11754
+ * Out-of-range cells are not focusable and are hidden from screen readers.
11755
+ * @private
11756
+ * @param {Object} day - An object containing the dateFrom and day of month values.
11757
+ * @param {Number} min - The minimum date value.
11758
+ * @param {Number} max - The maximum date value.
11759
+ * @returns {Boolean} - True if the date is out of range.
11760
+ */
11761
+ isOutOfRange(day, min, max) {
11762
+ if (day && day.date !== null && day.date !== undefined) {
11763
+ return day.date < min || day.date > max;
11764
+ }
11765
+ return false;
11766
+ }
11767
+
11768
+ /**
11769
+ * Checks if the current date is a blackout date (in disabledDays but within range).
11770
+ * Blackout cells are focusable but not selectable.
11771
+ * @private
11772
+ * @returns {Boolean} - True if the date is a blackout date.
11773
+ */
11774
+ isBlackout() {
11775
+ if (!this.day || this.day.date === null || this.day.date === undefined || this.isOutOfRange(this.day, this.min, this.max)) {
11776
+ return false;
11777
+ }
11778
+
11779
+ // Check against disabledDays timestamps (legacy path)
11780
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
11781
+ (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
11782
+ return true;
11783
+ }
11784
+
11785
+ // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
11786
+ const blackoutDates = this.datepicker?.blackoutDates;
11787
+
11788
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
11789
+ const date = new Date(this.day.date * 1000);
11790
+ const yyyy = date.getFullYear();
11791
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
11792
+ const dd = String(date.getDate()).padStart(2, '0');
11793
+ const cellDate = `${yyyy}-${mm}-${dd}`;
11794
+ if (blackoutDates.includes(cellDate)) {
11795
+ return true;
11796
+ }
11797
+ }
11798
+
11799
+ return false;
11800
+ }
11801
+
11802
+ /**
11803
+ * Checks if the current date is disabled based on min/max range or the
11804
+ * legacy disabledDays timestamp list. Sets the `disabled` attribute on the
11805
+ * host when the date falls outside the allowed range or appears in
11806
+ * disabledDays. Note: blackout dates are handled separately by `isBlackout()`.
11773
11807
  * @private
11774
11808
  * @param {Object} day - An object containing the dateFrom and day of month values.
11775
11809
  * @param {Number} min - The minimum date value.
@@ -11780,15 +11814,113 @@ class AuroCalendarCell extends i$1 {
11780
11814
  isEnabled(day, min, max, disabledDays) {
11781
11815
  this.removeAttribute('disabled');
11782
11816
 
11783
- if (disabledDays && day && day.date) {
11784
- if (day.date < min || day.date > max || disabledDays.findIndex(disabledDay => parseInt(disabledDay, 10) === day.date) !== -1) {
11785
- this.setAttribute('disabled', true);
11786
- return true;
11787
- }
11817
+ if (disabledDays && day && day.date &&
11818
+ (day.date < min || day.date > max || disabledDays.findIndex(disabledDay => parseInt(disabledDay, 10) === day.date) !== -1)) {
11819
+ this.setAttribute('disabled', true);
11820
+ return true;
11788
11821
  }
11822
+
11789
11823
  return false;
11790
11824
  }
11791
11825
 
11826
+ /**
11827
+ * Generates a unique cell ID in the format cell-YYYY-MM-DD.
11828
+ * @private
11829
+ * @returns {String} The unique cell ID.
11830
+ */
11831
+ getCellId() {
11832
+ if (!this.day || !this.day.date) return '';
11833
+ const date = new Date(this.day.date * 1000);
11834
+ const year = date.getFullYear();
11835
+ const month = String(date.getMonth() + 1).padStart(2, '0');
11836
+ const day = String(date.getDate()).padStart(2, '0');
11837
+ return `cell-${year}-${month}-${day}`;
11838
+ }
11839
+
11840
+ /**
11841
+ * Generates a localized aria-label for the cell button using Intl.DateTimeFormat.
11842
+ * Includes range position and blackout status.
11843
+ * @private
11844
+ * @returns {String} The aria-label string.
11845
+ */
11846
+ getAriaLabel() {
11847
+ if (!this.day || this.day.date === undefined) return '';
11848
+
11849
+ const date = new Date(this.day.date * 1000);
11850
+
11851
+ // Generate localized full date string using the configured locale
11852
+ const dateFormatter = new Intl.DateTimeFormat(this.locale, {
11853
+ weekday: 'long',
11854
+ year: 'numeric',
11855
+ month: 'long',
11856
+ day: 'numeric'
11857
+ });
11858
+
11859
+ let label = dateFormatter.format(date);
11860
+
11861
+ // Append date slot content (e.g. prices) so it is announced with the date.
11862
+ if (this.renderForDateSlot) {
11863
+ const dateSlotEl = this.querySelector(`[slot="date_${this.dateStr}"]`);
11864
+ if (dateSlotEl) {
11865
+ const text = dateSlotEl.innerText?.trim();
11866
+ if (text) {
11867
+ label += `, ${text}`;
11868
+ }
11869
+ }
11870
+ }
11871
+
11872
+ // appending popover content here so that it gets read in a logical order with the other date content.
11873
+ if (this.hasPopoverContent) {
11874
+ const popoverEl = this.querySelector(`[slot="popover_${this.dateStr}"]`);
11875
+ if (popoverEl) {
11876
+ label += `, ${popoverEl.innerText.trim()}`;
11877
+ }
11878
+ }
11879
+
11880
+ // Append range position label for range datepickers
11881
+ const rangePosition = this.getRangePosition();
11882
+ if (rangePosition) {
11883
+ label += `, ${rangePosition}`;
11884
+ }
11885
+
11886
+ // Append blackout label for blackout cells
11887
+ if (this.isBlackout()) {
11888
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
11889
+ }
11890
+
11891
+ return label;
11892
+ }
11893
+
11894
+ /**
11895
+ * Determines the range position of this cell relative to the current selection.
11896
+ * @private
11897
+ * @returns {String|null} Range position label or null if not in range mode.
11898
+ */
11899
+ getRangePosition() {
11900
+ if (!this.datepicker || !this.datepicker.hasAttribute('range')) return null;
11901
+
11902
+ const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
11903
+ if (!Number.isFinite(parsedDateFrom)) return null;
11904
+
11905
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
11906
+ const dayDate = this.day.date;
11907
+
11908
+ const parsedDateTo = Number.parseInt(this.dateTo, 10);
11909
+ const hasDateTo = Number.isFinite(parsedDateTo);
11910
+ const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
11911
+
11912
+ if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
11913
+
11914
+ if (hasDateTo && dayDate === returnTimestamp) return this.datepicker.rangeLabelEnd || 'range end';
11915
+
11916
+ if (dayDate < departTimestamp) return this.datepicker.rangeLabelBeforeRange || 'before range';
11917
+
11918
+ if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
11919
+
11920
+ // After start date, no end date yet, or after end date
11921
+ return this.datepicker.rangeLabelAfterRange || 'after range';
11922
+ }
11923
+
11792
11924
  /**
11793
11925
  * Checks if the current date is the depart date.
11794
11926
  * @private
@@ -11856,12 +11988,12 @@ class AuroCalendarCell extends i$1 {
11856
11988
  }
11857
11989
 
11858
11990
  /**
11859
- * Checks if the current date is a highlighted date.
11860
- * @param {Object} dateStr - The date string in MM_DD_YYYY format.
11861
- * @returns Boolean - True if the date is a highlighted date.
11991
+ * Checks if the current date is a referenced date.
11992
+ * @param {Object} dateStr - The date string in YYYY_MM_DD format.
11993
+ * @returns Boolean - True if the date is a referenced date.
11862
11994
  */
11863
11995
  isReferenceDate(dateStr) {
11864
- // If the datepicker has highlighted dates specified
11996
+ // If the datepicker has referenced dates specified
11865
11997
  if (this.datepicker && this.datepicker.hasAttribute('referenceDates')) {
11866
11998
 
11867
11999
  // Get the referenceDates attribute from the datepicker
@@ -11870,9 +12002,8 @@ class AuroCalendarCell extends i$1 {
11870
12002
  // Guard clause: no dates in the array
11871
12003
  if (!Array.isArray(referenceDates) || referenceDates.length === 0) return false;
11872
12004
 
11873
- // Convert cell dateStr (MM_DD_YYYY) to ISO (YYYY-MM-DD) for comparison
11874
- const [month, day, year] = dateStr.split('_');
11875
- const cellISO = `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
12005
+ // eslint-disable-next-line require-unicode-regexp
12006
+ const cellISO = dateStr.replace(/_/g, '-');
11876
12007
 
11877
12008
  return referenceDates.includes(cellISO);
11878
12009
  }
@@ -11889,12 +12020,16 @@ class AuroCalendarCell extends i$1 {
11889
12020
  if (date === undefined) {
11890
12021
  return '';
11891
12022
  }
11892
- return new Intl.DateTimeFormat(this.locale, {
11893
- weekday: 'long',
11894
- year: 'numeric',
11895
- month: 'long',
11896
- day: 'numeric'
11897
- }).format(new Date(date * 1000));
12023
+ if (!this._titleFormatter || this._titleFormatterLocale !== this.locale) {
12024
+ this._titleFormatter = new Intl.DateTimeFormat(this.locale, {
12025
+ weekday: 'long',
12026
+ year: 'numeric',
12027
+ month: 'long',
12028
+ day: 'numeric'
12029
+ });
12030
+ this._titleFormatterLocale = this.locale;
12031
+ }
12032
+ return this._titleFormatter.format(new Date(date * 1000));
11898
12033
  }
11899
12034
 
11900
12035
  /**
@@ -11922,7 +12057,7 @@ class AuroCalendarCell extends i$1 {
11922
12057
 
11923
12058
  const year = date.getFullYear();
11924
12059
 
11925
- this.dateStr = `${month}_${day}_${year}`;
12060
+ this.dateStr = `${year}_${month}_${day}`;
11926
12061
  }
11927
12062
 
11928
12063
  /**
@@ -11957,9 +12092,9 @@ class AuroCalendarCell extends i$1 {
11957
12092
 
11958
12093
  if (popoverSlotContent) {
11959
12094
  this.appendChild(popoverSlotContent.cloneNode(true));
11960
- this.auroPopover.removeAttribute('disabled');
12095
+ this.hasPopoverContent = true;
11961
12096
  } else {
11962
- this.auroPopover.setAttribute('disabled', true);
12097
+ this.hasPopoverContent = false;
11963
12098
  }
11964
12099
  } catch (err) { // eslint-disable-line no-unused-vars
11965
12100
  // Error handling goes here
@@ -11975,60 +12110,249 @@ class AuroCalendarCell extends i$1 {
11975
12110
  return;
11976
12111
  }
11977
12112
  this.datepicker = calendar.datepicker;
11978
- this.datepicker.addEventListener('auroDatePicker-newSlotContent', () => {
12113
+ this._slotContentHandler = () => {
11979
12114
  this.handleSlotContent();
12115
+ // Force re-render so isBlackout()/aria-disabled reflect updated blackoutDates.
12116
+ this.requestUpdate();
12117
+ };
12118
+ this.datepicker.addEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
12119
+
12120
+ // Cache button reference for imperative class manipulation.
12121
+ this.updateComplete.then(() => {
12122
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
11980
12123
  });
11981
12124
 
12125
+ // Trigger an initial update now that `this.datepicker` is assigned so
12126
+ // cells reflect blackout/slot state that was configured before first render.
12127
+ this.requestUpdate();
12128
+
12129
+ this.calendarMonth = calendarMonth;
12130
+ this.configurePopover();
12131
+ }
12132
+
12133
+ disconnectedCallback() {
12134
+ super.disconnectedCallback();
12135
+ if (this.datepicker && this._slotContentHandler) {
12136
+ this.datepicker.removeEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
12137
+ }
12138
+ }
12139
+
12140
+ /**
12141
+ * Configures the popover instance with the calendar month boundary.
12142
+ * Called from firstUpdated and updated because the popover element is only
12143
+ * rendered after hasPopoverContent becomes true (set by handleSlotContent).
12144
+ * @private
12145
+ * @returns {void}
12146
+ */
12147
+ configurePopover() {
11982
12148
  this.auroPopover = this.shadowRoot.querySelector(this.popoverTag._$litStatic$);
11983
12149
 
11984
- this.auroPopover.boundary = calendarMonth;
12150
+ if (this.auroPopover && this.calendarMonth) {
12151
+ this.auroPopover.boundary = this.calendarMonth;
12152
+ }
11985
12153
  }
11986
12154
 
11987
12155
  updated(properties) {
11988
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('hoveredDate') || properties.has('day')) {
11989
- this.dateChanged(this.dateFrom, this.dateTo, this.hoveredDate, this.day);
12156
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('day')) {
12157
+ this.dateChanged(this.dateFrom, this.dateTo, this.day);
12158
+ }
12159
+
12160
+ if (properties.has('day') && this.day) {
12161
+ this.setDateSlotName();
12162
+ this.handleSlotContent();
12163
+
12164
+ // Re-cache button reference when the day changes (cell may have re-rendered).
12165
+ this.updateComplete.then(() => {
12166
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
12167
+ });
12168
+
12169
+ // Update host-level aria attributes for ariaActiveDescendantElement.
12170
+ this.updateHostAria();
11990
12171
  }
11991
12172
 
11992
- this.setDateSlotName();
11993
- this.handleSlotContent();
12173
+ // Update host aria when selection changes (aria-selected, range labels)
12174
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
12175
+ this.updateHostAria();
12176
+ }
12177
+
12178
+ // Configure popover when it first becomes rendered
12179
+ if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
12180
+ this.updateComplete.then(() => this.configurePopover());
12181
+ }
11994
12182
  }
11995
12183
 
11996
- render() {
12184
+ /**
12185
+ * Updates ARIA attributes on the host element so that
12186
+ * ariaActiveDescendantElement can expose cell info to the SR.
12187
+ * @private
12188
+ * @returns {void}
12189
+ */
12190
+ updateHostAria() {
12191
+ if (!this.day || this.day.date === undefined) return;
12192
+
12193
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12194
+ if (outOfRange) {
12195
+ this.removeAttribute('role');
12196
+ this.removeAttribute('aria-label');
12197
+ return;
12198
+ }
12199
+
12200
+ // The host acts as the gridcell for ariaActiveDescendantElement.
12201
+ this.setAttribute('role', 'gridcell');
12202
+ this.setAttribute('aria-label', this.getAriaLabel());
12203
+ this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
12204
+
12205
+ if (this.isBlackout()) {
12206
+ this.setAttribute('aria-disabled', 'true');
12207
+ } else {
12208
+ this.removeAttribute('aria-disabled');
12209
+ }
12210
+ }
12211
+
12212
+ /**
12213
+ * Programmatically focuses the cell's interactive button element.
12214
+ * Uses focusVisible: true so the :focus-visible ring appears even when
12215
+ * the bib was opened via mouse click (which sets mouse input modality).
12216
+ * @returns {void}
12217
+ */
12218
+ focusButton() {
12219
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
12220
+ if (button) {
12221
+ button.focus({ focusVisible: true });
12222
+ }
12223
+ }
12224
+
12225
+ /**
12226
+ * Imperatively marks this cell as active without triggering a Lit re-render.
12227
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
12228
+ * @returns {void}
12229
+ */
12230
+ setActive() {
12231
+ this.active = true;
12232
+
12233
+ // Show the popover when this cell becomes active via keyboard navigation.
12234
+ if (this.auroPopover) {
12235
+ this.auroPopover.toggleShow();
12236
+ }
12237
+ }
12238
+
12239
+ /**
12240
+ * Imperatively marks this cell as inactive without triggering a Lit re-render.
12241
+ * @returns {void}
12242
+ */
12243
+ clearActive() {
12244
+ this.active = false;
12245
+ const btn = this._cachedButton || this.shadowRoot.querySelector('button.day');
12246
+ if (btn) {
12247
+ btn.classList.remove('activeCell');
12248
+ }
12249
+
12250
+ // Hide the popover when this cell loses active state.
12251
+ if (this.auroPopover) {
12252
+ this.auroPopover.toggleHide();
12253
+ }
12254
+ }
12255
+
12256
+ /**
12257
+ * Updates range preview classes imperatively (no Lit re-render).
12258
+ * Called by the calendar component when the hovered date changes
12259
+ * during range selection (dateFrom set, dateTo not yet set).
12260
+ * @param {Number} hoveredDate - Unix timestamp of the currently hovered/focused date.
12261
+ * @param {Number} dateFrom - Unix timestamp of the selected departure date.
12262
+ * @returns {void}
12263
+ */
12264
+ updateRangePreviewClasses(hoveredDate, dateFrom) {
12265
+ const btn = this._cachedButton;
12266
+ if (!btn || !this.day) return;
12267
+
12268
+ const dayDate = this.day.date;
12269
+ const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
12270
+ const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
12271
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
12272
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
12273
+
12274
+ btn.classList.toggle('inRange', isInRange);
12275
+ btn.classList.toggle('lastHoveredDate', isLastHovered);
12276
+ btn.classList.toggle('rangeDepartDate', isDepartWithPreview);
12277
+ }
12278
+
12279
+ /**
12280
+ * Clears all imperative range preview classes from the cell button.
12281
+ * Called when a selection occurs so classMap becomes the sole source of truth.
12282
+ * @returns {void}
12283
+ */
12284
+ clearRangePreviewClasses() {
12285
+ const btn = this._cachedButton;
12286
+ if (!btn) return;
12287
+
12288
+ btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
12289
+ }
12290
+
12291
+ renderCellButton() {
12292
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12293
+ const blackout = this.isBlackout();
12294
+
12295
+ // Static and selection-driven classes only. Hover-driven classes
12296
+ // (inRange, lastHoveredDate, rangeDepartDate during preview) are
12297
+ // managed imperatively via updateRangePreviewClasses() to avoid
12298
+ // O(N) Lit re-renders on every focus/hover event.
12299
+ const isFirstDay = this.day?.title === 1;
12300
+ const isLastDay = this.day?.date && (() => {
12301
+ const dt = new Date(this.day.date * 1000);
12302
+ return dt.getDate() === new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate();
12303
+ })();
12304
+
11997
12305
  const buttonClasses = {
11998
12306
  'day': true,
11999
- 'body-lg': true,
12000
- 'currentDate': this.currentDate,
12307
+ 'body-default': true,
12308
+ 'currentDate': this.isCurrentDate,
12001
12309
  'selected': this.selected,
12002
- 'inRange': this.hovered && this.isInRange(this.day, this.dateFrom, this.dateTo),
12003
- 'lastHoveredDate': this.isLastHoveredDate(this.day, this.dateFrom, this.dateTo, this.hoveredDate) && this.datepicker && this.datepicker.hasAttribute('range'),
12004
- 'disabled': this.isEnabled(this.day, this.min, this.max, this.disabledDays),
12005
- 'rangeDepartDate': this.isDepartDate(this.day, this.dateFrom) && (this.hoveredDate > this.dateFrom || this.dateTo),
12006
- 'rangeReturnDate': this.isReturnDate(this.day, this.dateFrom, this.dateTo),
12310
+ 'inRange': this.datepicker?.hasAttribute('range') && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo),
12311
+ 'disabled': outOfRange,
12312
+ blackout,
12313
+ 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && this.dateTo,
12314
+ 'rangeReturnDate': this.datepicker?.hasAttribute('range') && this.isReturnDate(this.day, this.dateFrom, this.dateTo),
12007
12315
  'reference': this.isReferenceDate(this.dateStr),
12008
- 'sameDateTrip': this.dateFrom === this.dateTo
12316
+ 'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo,
12317
+ 'firstDayOfMonth': isFirstDay,
12318
+ 'lastDayOfMonth': isLastDay,
12009
12319
  };
12010
12320
 
12011
- let _a, _b;
12012
12321
  return u$a`
12013
- <${this.popoverTag}>
12014
- <slot name="popover_${this.dateStr}"></slot>
12015
- <button
12016
- slot="trigger"
12017
- @click="${this.handleTap}"
12018
- @mouseover="${this.handleHover}"
12019
- @focus="${this.handleHover}"
12020
- class="${e$4(buttonClasses)}"
12021
- ?disabled="${this.disabled}"
12022
- title="${this.getTitle((_a = this.day) === null || _a === void 0 ? void 0 : _a.date)}"
12023
- tabindex="-1">
12024
- <div class="buttonWrapper">
12025
- <div class="currentDayMarker">${(_b = this.day) === null || _b === void 0 ? void 0 : _b.title}</div>
12026
- <div class="dateSlot body-2xs" part="dateSlot">
12027
- <slot name="date_${this.dateStr}"></slot>
12028
- </div>
12322
+ <button
12323
+ slot="trigger"
12324
+ id="${this.getCellId()}"
12325
+ @click="${outOfRange ? undefined : this.handleTap}"
12326
+ @mouseover="${outOfRange ? undefined : this.handleHover}"
12327
+ @focus="${outOfRange ? undefined : this.handleFocus}"
12328
+ class="${e$4(buttonClasses)}"
12329
+ ?disabled="${outOfRange}"
12330
+ aria-hidden="${outOfRange ? 'true' : A$4}"
12331
+ tabindex="-1">
12332
+ <div class="buttonWrapper" aria-hidden="true">
12333
+ <div class="currentDayMarker">${this.day?.title || A$4}</div>
12334
+ <div class="dateSlot body-2xs" part="dateSlot" aria-hidden="true" ?hidden="${!this.renderForDateSlot}">
12335
+ <slot name="date_${this.dateStr}"></slot>
12029
12336
  </div>
12030
- </button>
12031
- </${this.popoverTag}>
12337
+ </div>
12338
+ </button>
12339
+ `;
12340
+ }
12341
+
12342
+ render() {
12343
+ const { hasPopoverContent } = this;
12344
+
12345
+ if (hasPopoverContent) {
12346
+ return u$a`
12347
+ <${this.popoverTag}>
12348
+ <span aria-hidden="true"><slot name="popover_${this.dateStr}"></slot></span>
12349
+ ${this.renderCellButton()}
12350
+ </${this.popoverTag}>
12351
+ `;
12352
+ }
12353
+
12354
+ return u$a`
12355
+ ${this.renderCellButton()}
12032
12356
  `;
12033
12357
  }
12034
12358
  }
@@ -12037,31 +12361,39 @@ if (!customElements.get('auro-formkit-calendar-cell')) {
12037
12361
  customElements.define('auro-formkit-calendar-cell', AuroCalendarCell);
12038
12362
  }
12039
12363
 
12364
+ /* eslint-disable no-underscore-dangle */
12365
+
12040
12366
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
12041
12367
 
12042
- /* eslint-disable no-magic-numbers, dot-location */
12368
+ /* eslint-disable no-magic-numbers */
12369
+
12043
12370
 
12044
12371
  const getMonthNamesFromLocale = (locale) => {
12045
- const fmt = new Intl.DateTimeFormat(locale || 'en-US', { month: 'long' });
12046
- return Array.from({ length: 12 }, (_, i) => fmt.format(new Date(2000, i, 1)));
12372
+ const fmt = new Intl.DateTimeFormat(locale, {
12373
+ month: 'long',
12374
+ timeZone: 'UTC'
12375
+ });
12376
+ // eslint-disable-next-line id-length
12377
+ return Array.from({ length: 12 }, (_, i) => fmt.format(Date.UTC(2000, i, 1)));
12047
12378
  };
12048
12379
 
12049
12380
  /**
12050
- * Generates the localized short names for each day of the week.
12051
- * The list always starts with the day that corresponds to Sunday in the target locale.
12381
+ * Generates the localized narrow names for each day of the week, starting from Sunday.
12382
+ * Uses UTC dates to avoid DST-related day drift across timezones.
12052
12383
  * @private
12053
12384
  * @param {String} locale - The BCP 47 language tag for localization (e.g. "en-US").
12054
- * @returns {Array} An array of seven localized narrow weekday names, starting from Sunday.
12385
+ * @param {String} weekday - The format of the weekday name ('narrow', 'short', 'long').
12386
+ * @returns {Array} An array of seven localized weekday names, starting from Sunday.
12055
12387
  */
12056
- const getWeekdayNames = (locale) => {
12057
- const fmt = new Intl.DateTimeFormat(locale|| 'en-US', { weekday: 'narrow' });
12058
- // Jan 5 2025 is a known Sunday; iterate to get all 7 narrow day names starting from Sunday
12059
- const sundayMs = new Date(2025, 0, 5).getTime();
12060
- const msPerDay = 864e5;
12388
+ const getWeekdayNames = (locale, weekday) => {
12389
+ const fmt = new Intl.DateTimeFormat(locale, {
12390
+ weekday,
12391
+ timeZone: 'UTC'
12392
+ });
12393
+ // Jan 5 2025 is a known Sunday; use Date.UTC to avoid DST-related day drift
12061
12394
  const allDays = [];
12062
12395
  for (let day = 0; day < 7; day += 1) {
12063
- const offsetMs = day * msPerDay;
12064
- allDays.push(fmt.format(new Date(sundayMs + offsetMs)));
12396
+ allDays.push(fmt.format(Date.UTC(2025, 0, 5 + day)));
12065
12397
  }
12066
12398
  return allDays;
12067
12399
  };
@@ -12090,10 +12422,17 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12090
12422
 
12091
12423
  /**
12092
12424
  * BCP 47 locale tag (such as `en-US`) for calendar localization.
12093
- * as wc-range-datepicker expects a `locale` prop, we use `localeCode` to avoid conflicts.
12425
+ * As wc-range-datepicker expects a `locale` prop, we use `localeCode` to avoid conflicts.
12094
12426
  */
12095
12427
  localeCode: {
12096
12428
  type: String
12429
+ },
12430
+
12431
+ /**
12432
+ * Names of all 12 months. When omitted, names are derived from `localeCode`.
12433
+ */
12434
+ monthNames: {
12435
+ type: Array
12097
12436
  }
12098
12437
  };
12099
12438
  }
@@ -12127,13 +12466,32 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12127
12466
  * @returns {String} The name of the month.
12128
12467
  */
12129
12468
  computeCurrentMonthName(month) {
12130
- return this.monthNames?.[month - 1] || getMonthNamesFromLocale(this.localeCode)[month - 1] || '';
12469
+ if (this.monthNames?.[month - 1]) {
12470
+ return this.monthNames[month - 1];
12471
+ }
12472
+ if (!this._cachedMonthNames || this._cachedMonthNamesLocale !== this.localeCode) {
12473
+ this._cachedMonthNames = getMonthNamesFromLocale(this.localeCode);
12474
+ this._cachedMonthNamesLocale = this.localeCode;
12475
+ }
12476
+ return this._cachedMonthNames[month - 1] || '';
12477
+ }
12478
+
12479
+ /**
12480
+ * Returns the unique heading ID for this month, used by aria-labelledby.
12481
+ * @private
12482
+ * @returns {String} The heading ID.
12483
+ */
12484
+ getHeadingId() {
12485
+ return `month-heading-${this.month}-${this.year}`;
12131
12486
  }
12132
12487
 
12488
+
12133
12489
  /**
12134
12490
  * Determines the current month name based on locale.
12491
+ * Also builds parallel arrays of full day names for abbr attributes.
12135
12492
  * This is a rewrite of the function used in the class RangeDatepickerCalendar and should not be removed from here.
12136
12493
  * @private
12494
+ * @param {Object} changedProperties - The properties that have changed since the last update.
12137
12495
  * @returns {void}
12138
12496
  */
12139
12497
  updated(changedProperties) {
@@ -12144,12 +12502,67 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12144
12502
  }
12145
12503
 
12146
12504
  localeChanged() {
12147
- // get localized weekday names based on current locale and store in a property for use in day name rendering
12148
- const allDays = getWeekdayNames(this.localeCode);
12505
+ this.dayNamesOfTheWeek = getWeekdayNames(this.localeCode, 'narrow');
12506
+ this.dayFullNames = getWeekdayNames(this.localeCode, 'long');
12507
+ }
12508
+
12509
+ /**
12510
+ * Renders a day-of-week header with abbr attribute for the full day name.
12511
+ * @private
12512
+ * @param {String} dayOfWeek - The short day name.
12513
+ * @param {Number} index - The index in the dayNamesOfTheWeek array.
12514
+ * @returns {Object} The header HTML.
12515
+ */
12516
+ renderDayOfWeek(dayOfWeek, index) {
12517
+ const fullName = this.dayFullNames ? this.dayFullNames[index] : dayOfWeek;
12518
+ return b$5`<div class="th body-default" aria-label="${fullName}" role="columnheader">${dayOfWeek}</div>`;
12519
+ }
12520
+
12521
+ /**
12522
+ * Returns all focusable cell elements (enabled + blackout, not out-of-range) in this month.
12523
+ * @returns {Array} Array of auro-formkit-calendar-cell elements.
12524
+ */
12525
+ getFocusableCells() {
12526
+ const cells = Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-cell'));
12527
+ return cells.filter((cell) => {
12528
+ if (!cell.day) {
12529
+ return false;
12530
+ }
12531
+ return !cell.isOutOfRange(cell.day, cell.min, cell.max);
12532
+ });
12533
+ }
12149
12534
 
12150
- // Week starts on Sunday (index 0)
12151
- const firstDayOfWeek = this.locale?.options?.weekStartsOn || 0;
12152
- this.dayNamesOfTheWeek = allDays.slice(firstDayOfWeek).concat(allDays.slice(0, firstDayOfWeek));
12535
+ /**
12536
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
12537
+ * as a reactive property. Instead, just dispatches the event upward so
12538
+ * the calendar can handle range preview imperatively.
12539
+ * @private
12540
+ * @param {CustomEvent} event - The date-is-hovered event from a cell.
12541
+ * @returns {void}
12542
+ */
12543
+ handleDateHovered(event) {
12544
+ this.dispatchEvent(new CustomEvent('hovered-date-changed', {
12545
+ detail: { value: event.detail.date },
12546
+ }));
12547
+ }
12548
+
12549
+ /**
12550
+ * Dispatches a bubbling event when the mouse leaves the date grid body
12551
+ * so the parent calendar can clear the range hover preview.
12552
+ * @private
12553
+ * @returns {void}
12554
+ */
12555
+ handleTbodyMouseLeave() {
12556
+ this.dispatchEvent(new CustomEvent('calendar-month-mouseleave', {
12557
+ bubbles: true,
12558
+ composed: true,
12559
+ }));
12560
+ }
12561
+
12562
+ renderWeek(week) {
12563
+ return b$5`
12564
+ <div class="tr" role="row">${week.map((day) => this.renderDay(day))}</div>
12565
+ `;
12153
12566
  }
12154
12567
 
12155
12568
  renderDay(day) {
@@ -12162,7 +12575,6 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12162
12575
  .min="${this.min}"
12163
12576
  .max="${this.max}"
12164
12577
  .month="${this.month}"
12165
- .hoveredDate="${this.hoveredDate}"
12166
12578
  .dateTo="${this.dateTo}"
12167
12579
  .dateFrom="${this.dateFrom}"
12168
12580
  .locale="${this.localeCode}"
@@ -12173,7 +12585,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12173
12585
  >
12174
12586
  </auro-formkit-calendar-cell>
12175
12587
  `
12176
- : null}
12588
+ : b$5`<div aria-hidden="true" inert></div>`}
12177
12589
  </div>
12178
12590
  `;
12179
12591
  }
@@ -12187,7 +12599,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12187
12599
  <div>
12188
12600
  <div class="header">
12189
12601
  ${this.renderPrevButton()}
12190
- <div class="headerTitle heading-xs">
12602
+ <div class="headerTitle heading-xs" id="${this.getHeadingId()}">
12191
12603
  ${this.monthFirst ? b$5`
12192
12604
  <div>${this.computeCurrentMonthName(this.month)}</div>
12193
12605
  <div>${this.renderYear()}</div>
@@ -12198,14 +12610,13 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12198
12610
  </div>
12199
12611
  ${this.renderNextButton()}
12200
12612
  </div>
12201
-
12202
- <div class="table">
12613
+ <div class="table" role="grid">
12203
12614
  <div class="thead">
12204
12615
  <div class="tr">
12205
- ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map(dayNameOfWeek => this.renderDayOfWeek(dayNameOfWeek))}
12616
+ ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map((dayNameOfWeek, index) => this.renderDayOfWeek(dayNameOfWeek, index))}
12206
12617
  </div>
12207
12618
  </div>
12208
- <div class="tbody">
12619
+ <div class="tbody" role="rowgroup" @mouseleave="${this.handleTbodyMouseLeave}">
12209
12620
  ${(_b = this.daysOfMonth) === null || _b === void 0 ? void 0 : _b.map(week => this.renderWeek(week))}
12210
12621
  </div>
12211
12622
  </div>
@@ -12909,6 +13320,14 @@ class AuroBibtemplate extends i$1 {
12909
13320
  large: {
12910
13321
  type: Boolean,
12911
13322
  reflect: true
13323
+ },
13324
+
13325
+ /**
13326
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
13327
+ */
13328
+ showFooter: {
13329
+ type: Boolean,
13330
+ reflect: true
12912
13331
  }
12913
13332
  };
12914
13333
  }
@@ -13011,7 +13430,7 @@ class AuroBibtemplate extends i$1 {
13011
13430
  <slot></slot>
13012
13431
  </div>
13013
13432
 
13014
- ${this.isFullscreen ? u$a`
13433
+ ${this.isFullscreen || this.showFooter ? u$a`
13015
13434
  <div id="footerContainer">
13016
13435
  <slot name="footer"></slot>
13017
13436
  </div>` : null}
@@ -13020,7 +13439,7 @@ class AuroBibtemplate extends i$1 {
13020
13439
  }
13021
13440
  }
13022
13441
 
13023
- var formkitVersion$2 = '202606031942';
13442
+ var formkitVersion$2 = '202606181613';
13024
13443
 
13025
13444
  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}
13026
13445
  `,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}}
@@ -13081,7 +13500,7 @@ let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[
13081
13500
 
13082
13501
  var buttonVersion$1 = '12.3.2';
13083
13502
 
13084
- /* eslint-disable no-magic-numbers, no-undef-init, max-lines, lit/binding-positions, lit/no-invalid-html */
13503
+ /* 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 */
13085
13504
 
13086
13505
 
13087
13506
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
@@ -13118,6 +13537,20 @@ class AuroCalendar extends RangeDatepicker {
13118
13537
  this.largeFullscreenHeadline = false;
13119
13538
  this.isFullscreen = false;
13120
13539
 
13540
+ /**
13541
+ * The date of the currently active cell (Unix timestamp).
13542
+ * Only one cell across the entire calendar has tabindex="0" at a time.
13543
+ * @private
13544
+ */
13545
+ this.activeCellDate = null;
13546
+
13547
+ /**
13548
+ * Whether the #calendarGrid wrapper currently has focus.
13549
+ * Used to determine whether the visualFocus ring should be shown.
13550
+ * @private
13551
+ */
13552
+ this._gridHasFocus = false;
13553
+
13121
13554
  /**
13122
13555
  * @private
13123
13556
  */
@@ -13128,6 +13561,12 @@ class AuroCalendar extends RangeDatepicker {
13128
13561
  */
13129
13562
  this.calendarRangeMonths = null;
13130
13563
 
13564
+ /**
13565
+ * Legacy array of disabled-date timestamps.
13566
+ * @private
13567
+ */
13568
+ this.disabledDays = [];
13569
+
13131
13570
  /**
13132
13571
  * @private
13133
13572
  */
@@ -13151,6 +13590,12 @@ class AuroCalendar extends RangeDatepicker {
13151
13590
  this.buttonTag = versioning.generateTag('auro-formkit-datepicker-button', buttonVersion$1, T$1);
13152
13591
 
13153
13592
  this.dropdown = undefined;
13593
+
13594
+ /**
13595
+ * Unique instance ID for the live region element.
13596
+ * @private
13597
+ */
13598
+ this._calendarInstanceId = Date.now().toString(36);
13154
13599
  }
13155
13600
 
13156
13601
  static get styles() {
@@ -13283,14 +13728,17 @@ class AuroCalendar extends RangeDatepicker {
13283
13728
  */
13284
13729
  localeCode: {
13285
13730
  type: String
13731
+ },
13732
+
13733
+ /**
13734
+ * Names of all 12 months. When omitted, names are derived from `localeCode`.
13735
+ */
13736
+ monthNames: {
13737
+ type: Array
13286
13738
  }
13287
13739
  };
13288
13740
  }
13289
13741
 
13290
- localeChanged() {
13291
- // Locale propagation handled via Lit property bindings to child calendar-month elements.
13292
- }
13293
-
13294
13742
  // ─── Read-only *Object properties ─────────────────────────────────────────
13295
13743
 
13296
13744
  /** @returns {Date|undefined} */
@@ -13311,19 +13759,78 @@ class AuroCalendar extends RangeDatepicker {
13311
13759
  /**
13312
13760
  * Updates the month and year when the user navigates to the previous calendar month.
13313
13761
  * @private
13762
+ * @param {Object} [options] - Optional settings.
13763
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
13764
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
13314
13765
  * @returns {void}
13315
13766
  */
13316
- handlePrevMonth() {
13767
+ handlePrevMonth(options) {
13768
+ const opts = options instanceof Event ? {} : options || {};
13769
+ this.clearRangePreview({ force: true });
13317
13770
  this.utilCal.handleMonthChange(this, 'prev');
13771
+ if (!opts.skipActiveUpdate) {
13772
+ this.updateActiveCellForVisibleMonth();
13773
+ }
13774
+ this.announceMonthChange();
13318
13775
  }
13319
13776
 
13320
13777
  /**
13321
13778
  * Updates the month and year when the user navigates to the next calendar month.
13322
13779
  * @private
13780
+ * @param {Object} [options] - Optional settings.
13781
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
13782
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
13323
13783
  * @returns {void}
13324
13784
  */
13325
- handleNextMonth() {
13785
+ handleNextMonth(options) {
13786
+ const opts = options instanceof Event ? {} : options || {};
13787
+ this.clearRangePreview({ force: true });
13326
13788
  this.utilCal.handleMonthChange(this, 'next');
13789
+ if (!opts.skipActiveUpdate) {
13790
+ this.updateActiveCellForVisibleMonth();
13791
+ }
13792
+ this.announceMonthChange();
13793
+ }
13794
+
13795
+ /**
13796
+ * Announces the current month and year via the live region after navigation.
13797
+ * @private
13798
+ * @returns {void}
13799
+ */
13800
+ announceMonthChange() {
13801
+ // Cancel any pending debounced cell announcement so it does not
13802
+ // overwrite this month navigation announcement.
13803
+ if (this._focusAnnounceTimer) {
13804
+ clearTimeout(this._focusAnnounceTimer);
13805
+ this._focusAnnounceTimer = null;
13806
+ }
13807
+
13808
+ const date = this.centralDateObject;
13809
+ const formatter = new Intl.DateTimeFormat(this.localeCode, { month: 'long',
13810
+ year: 'numeric' });
13811
+ this.announceSelection(formatter.format(date));
13812
+ }
13813
+
13814
+ /**
13815
+ * Updates the active cell after month navigation (prev/next buttons).
13816
+ * Always moves the active cell to the first enabled date in the newly
13817
+ * visible months so that tabbing back to the grid lands on an enabled cell.
13818
+ * @private
13819
+ * @returns {void}
13820
+ */
13821
+ updateActiveCellForVisibleMonth() {
13822
+ // Use double-rAF to ensure child month/cell components have fully
13823
+ // rendered and cached their button references before we set tabindex.
13824
+ requestAnimationFrame(() => {
13825
+ requestAnimationFrame(() => {
13826
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
13827
+
13828
+ if (newDate !== null && newDate !== undefined) {
13829
+ this.activeCellDate = newDate;
13830
+ this.setActiveCell(this.activeCellDate);
13831
+ }
13832
+ });
13833
+ });
13327
13834
  }
13328
13835
 
13329
13836
  /**
@@ -13431,7 +13938,1006 @@ class AuroCalendar extends RangeDatepicker {
13431
13938
  this.utilCal.scrollMonthIntoView(this, date, this.format);
13432
13939
  }
13433
13940
 
13941
+ /**
13942
+ * Gets all rendered month components.
13943
+ * @private
13944
+ * @returns {Array} Array of auro-formkit-calendar-month elements.
13945
+ */
13946
+ getMonthComponents() {
13947
+ return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
13948
+ }
13949
+
13950
+ /**
13951
+ * Gets all focusable cells across all rendered months.
13952
+ * @private
13953
+ * @returns {Array} Array of auro-formkit-calendar-cell elements.
13954
+ */
13955
+ getAllFocusableCells() {
13956
+ const months = this.getMonthComponents();
13957
+ let cells = [];
13958
+ months.forEach((month) => {
13959
+ cells = cells.concat(month.getFocusableCells());
13960
+ });
13961
+ return cells;
13962
+ }
13963
+
13964
+ /**
13965
+ * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
13966
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
13967
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
13968
+ * screen readers announce the active cell without moving DOM focus.
13969
+ * @param {Number} date - Unix timestamp of the cell to activate.
13970
+ * @returns {void}
13971
+ */
13972
+ setActiveCell(date) {
13973
+ const allCells = this.getAllFocusableCells();
13974
+
13975
+ let newActiveCell = null;
13976
+ allCells.forEach((cell) => {
13977
+ if (cell.day && cell.day.date === date) {
13978
+ cell.setActive();
13979
+ newActiveCell = cell;
13980
+ } else if (cell.active) {
13981
+ cell.clearActive();
13982
+ }
13983
+ });
13984
+
13985
+ this.activeCellDate = date;
13986
+
13987
+ // Apply activeCell ring only when the grid currently has focus.
13988
+ if (newActiveCell && this._gridHasFocus) {
13989
+ const btn = newActiveCell._cachedButton || newActiveCell.shadowRoot.querySelector('button.day');
13990
+ if (btn) {
13991
+ btn.classList.add('activeCell');
13992
+ }
13993
+ }
13994
+ }
13995
+
13996
+ /**
13997
+ * Focuses the calendar grid wrapper and sets the active cell.
13998
+ * DOM focus stays on the grid wrapper; the aria-live region
13999
+ * tells the screen reader which cell is "active".
14000
+ * @returns {void}
14001
+ */
14002
+ focusActiveCell() {
14003
+ if (this.activeCellDate !== null && this.activeCellDate !== undefined) {
14004
+ this.setActiveCell(this.activeCellDate);
14005
+ }
14006
+
14007
+ const gridWrapper = this.shadowRoot.querySelector('#calendarGrid');
14008
+ if (gridWrapper) {
14009
+ gridWrapper.focus({ preventScroll: true,
14010
+ focusVisible: true });
14011
+ }
14012
+ }
14013
+
14014
+ /**
14015
+ * Shows the activeCell ring when the grid gains focus.
14016
+ * @private
14017
+ * @returns {void}
14018
+ */
14019
+ handleGridFocusIn() {
14020
+ this._gridHasFocus = true;
14021
+ const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
14022
+ if (activeCell) {
14023
+ const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
14024
+ if (btn) {
14025
+ btn.classList.add('activeCell');
14026
+ }
14027
+ }
14028
+ }
14029
+
14030
+ /**
14031
+ * Hides the activeCell ring when the grid loses focus.
14032
+ * @private
14033
+ * @returns {void}
14034
+ */
14035
+ handleGridFocusOut() {
14036
+ this._gridHasFocus = false;
14037
+ // Remove activeCell from ALL cells to prevent stale rings.
14038
+ const allCells = this.getAllFocusableCells();
14039
+ for (const cell of allCells) {
14040
+ const btn = cell._cachedButton || cell.shadowRoot.querySelector('button.day');
14041
+ if (btn) {
14042
+ btn.classList.remove('activeCell');
14043
+ }
14044
+ }
14045
+ // Clear range hover preview so no highlight lingers after focus leaves the grid.
14046
+ this.clearRangePreview();
14047
+ }
14048
+
14049
+ /**
14050
+ * Computes the initial active date from data properties alone — no DOM required.
14051
+ * Priority:
14052
+ * 1. Selected date (dateFrom) if within range
14053
+ * 2. Today's date if not disabled (in-range and not blackout)
14054
+ * 3. First future non-disabled date (scans day-by-day from today up to 1 year)
14055
+ * 4. First previous non-disabled date (scans day-by-day from today up to 1 year)
14056
+ * 5. First enabled date in finite [min, max] range
14057
+ * 5b. First enabled date scanning forward from finite min (unbounded max)
14058
+ * 5c. First enabled date scanning backward from finite max (unbounded min)
14059
+ * 6. First in-range date (even if blackout) so focus can land somewhere
14060
+ * 7. Undefined — no valid target.
14061
+ *
14062
+ * @private
14063
+ * @param {Object} [options] - Optional settings.
14064
+ * @param {boolean} [options.skipDateFrom=false] - When true, skip the selected-date
14065
+ * shortcut (step 1). Used after month navigation so the active cell lands in the
14066
+ * newly visible month instead of jumping back to the selected date's month.
14067
+ * @returns {Number|undefined} Unix timestamp (seconds) of the date to activate, or undefined.
14068
+ */
14069
+ computeActiveDate(options = {}) {
14070
+ const MAX_SCAN_DAYS = 366; // scan at most ~1 year in each direction
14071
+
14072
+ /**
14073
+ * Adds days to a timestamp using Date arithmetic to handle DST correctly.
14074
+ * Returns a local-midnight-aligned timestamp in seconds.
14075
+ * @param {Number} ts - Unix timestamp in seconds.
14076
+ * @param {Number} days - Number of days to add.
14077
+ * @returns {Number} The adjusted timestamp in seconds.
14078
+ */
14079
+ const addDays = (ts, days) => {
14080
+ const date = new Date(ts * 1000);
14081
+ date.setDate(date.getDate() + days);
14082
+ date.setHours(0, 0, 0, 0);
14083
+ return Math.floor(date.getTime() / 1000);
14084
+ };
14085
+
14086
+ const rawMin = this.minDateObject?.getTime() / 1000;
14087
+ const rawMax = this.maxDateObject?.getTime() / 1000;
14088
+
14089
+ // When min/max are NaN (no minDate/maxDate configured), treat as unbounded.
14090
+ const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
14091
+ const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
14092
+
14093
+ // Build a Set of blackout timestamps for O(1) lookup.
14094
+ const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
14095
+
14096
+ // Also include ISO-format blackoutDates from the datepicker if available.
14097
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
14098
+ const isoBlackouts = this.datepicker?.blackoutDates;
14099
+ if (Array.isArray(isoBlackouts)) {
14100
+ for (const isoStr of isoBlackouts) {
14101
+ const parts = isoStr.split('-');
14102
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
14103
+ if (Number.isFinite(ts)) {
14104
+ blackoutSet.add(ts);
14105
+ }
14106
+ }
14107
+ }
14108
+
14109
+ /**
14110
+ * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
14111
+ * it is within [min, max] AND not a blackout day.
14112
+ * @param {Number} ts - Unix timestamp in seconds.
14113
+ * @returns {boolean} True if the date is enabled.
14114
+ */
14115
+ const isEnabled = (ts) => ts >= minTs && ts <= maxTs && !blackoutSet.has(ts);
14116
+
14117
+ /**
14118
+ * A date is "in range" (focusable in the grid) when it is within [min, max].
14119
+ * Blackout dates are focusable but not selectable.
14120
+ * @param {Number} ts - Unix timestamp in seconds.
14121
+ * @returns {boolean} True if the date is in range.
14122
+ */
14123
+ const isInRange = (ts) => ts >= minTs && ts <= maxTs;
14124
+
14125
+ // 1. Selected date — always valid target if within range (user chose it).
14126
+ // Skipped when called from month navigation so the active cell lands in
14127
+ // the newly visible month rather than the (possibly off-screen) selection.
14128
+ if (!options.skipDateFrom && this.dateFrom) {
14129
+ const parsedFrom = parseInt(this.dateFrom, 10);
14130
+ if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) {
14131
+ return parsedFrom;
14132
+ }
14133
+ }
14134
+
14135
+ // 2. Today's date (midnight-aligned) if enabled.
14136
+ const now = Math.floor(new Date().setHours(0, 0, 0, 0) / 1000);
14137
+
14138
+ // When centralDate is configured, prefer a date within the month(s) that
14139
+ // will actually be rendered. If today falls outside the visible range, an
14140
+ // active cell set to today would have no matching DOM element and keyboard
14141
+ // focus could not enter the calendar.
14142
+
14143
+ if (this.centralDateObject) {
14144
+ const centralMonth = this.centralDateObject.getMonth();
14145
+ const centralYear = this.centralDateObject.getFullYear();
14146
+ const todayDate = new Date(now * 1000);
14147
+ const todayMonth = todayDate.getMonth();
14148
+ const todayYear = todayDate.getFullYear();
14149
+
14150
+ // Today is outside the centralDate's month — scan for an enabled date
14151
+ // within the visible month instead.
14152
+ if (todayMonth !== centralMonth || todayYear !== centralYear) {
14153
+ const visibleStart = new Date(centralYear, centralMonth, 1);
14154
+ visibleStart.setHours(0, 0, 0, 0);
14155
+ const visibleEnd = new Date(centralYear, centralMonth + 1, 0); // last day of month
14156
+ visibleEnd.setHours(0, 0, 0, 0);
14157
+ const startTs = Math.floor(visibleStart.getTime() / 1000);
14158
+ const daysInMonth = visibleEnd.getDate();
14159
+
14160
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
14161
+ const ts = addDays(startTs, idx);
14162
+ if (isEnabled(ts)) {
14163
+ return ts;
14164
+ }
14165
+ }
14166
+
14167
+ // No enabled date in the visible month — fall back to first in-range
14168
+ // date in the month so focus still lands on a focusable cell.
14169
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
14170
+ const ts = addDays(startTs, idx);
14171
+ if (isInRange(ts)) {
14172
+ return ts;
14173
+ }
14174
+ }
14175
+ }
14176
+ }
14177
+
14178
+ if (isEnabled(now)) {
14179
+ return now;
14180
+ }
14181
+
14182
+ // When a centralDate is configured (or inferred), constrain the scan to the
14183
+ // rendered month(s) first so a single-month calendar does not pick a date
14184
+ // that has no DOM cell. Determine the visible range based on centralDate and
14185
+ // the number of rendered months.
14186
+ const renderedMonths = Math.max(this.numCalendars, 1);
14187
+ const visibleAnchor = this.centralDateObject ?? new Date(now * 1000);
14188
+ const visMonthStart = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth(), 1);
14189
+ visMonthStart.setHours(0, 0, 0, 0);
14190
+ const visMonthEnd = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth() + renderedMonths, 0);
14191
+ visMonthEnd.setHours(0, 0, 0, 0);
14192
+ const visStartTs = Math.floor(visMonthStart.getTime() / 1000);
14193
+ const visEndTs = Math.floor(visMonthEnd.getTime() / 1000);
14194
+ const visDays = Math.round((visEndTs - visStartTs) / 86400) + 1;
14195
+
14196
+ // Scan visible months for an enabled date.
14197
+ for (let idx = 0; idx < visDays; idx += 1) {
14198
+ const ts = addDays(visStartTs, idx);
14199
+ if (isEnabled(ts)) {
14200
+ return ts;
14201
+ }
14202
+ }
14203
+
14204
+ // No enabled date in visible months — try an in-range (focusable) date so
14205
+ // keyboard focus still has a tabindex="0" target.
14206
+ for (let idx = 0; idx < visDays; idx += 1) {
14207
+ const ts = addDays(visStartTs, idx);
14208
+ if (isInRange(ts)) {
14209
+ return ts;
14210
+ }
14211
+ }
14212
+
14213
+ // 3. First future enabled date (scan forward from tomorrow, capped by max and MAX_SCAN_DAYS).
14214
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
14215
+ const ts = addDays(now, idx);
14216
+ if (Number.isFinite(maxTs) && ts > maxTs) {
14217
+ break;
14218
+ }
14219
+ if (isEnabled(ts)) {
14220
+ return ts;
14221
+ }
14222
+ }
14223
+
14224
+ // 4. First previous enabled date (scan backward from yesterday, capped by min and MAX_SCAN_DAYS).
14225
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
14226
+ const ts = addDays(now, -idx);
14227
+ if (Number.isFinite(minTs) && ts < minTs) {
14228
+ break;
14229
+ }
14230
+ if (isEnabled(ts)) {
14231
+ return ts;
14232
+ }
14233
+ }
14234
+
14235
+ // 5. If scans missed (e.g. min/max range is far from today), fall back to
14236
+ // the first enabled date in the [min, max] range.
14237
+ if (Number.isFinite(minTs) && Number.isFinite(maxTs)) {
14238
+ let ts = minTs;
14239
+ for (let idx = 0; ts <= maxTs; idx += 1) {
14240
+ if (isEnabled(ts)) {
14241
+ return ts;
14242
+ }
14243
+ ts = addDays(minTs, idx + 1);
14244
+ }
14245
+ }
14246
+
14247
+ // 5b. Finite min with unbounded max (e.g. minDate far in the future):
14248
+ // scan forward from min for up to MAX_SCAN_DAYS.
14249
+ if (Number.isFinite(minTs) && !Number.isFinite(maxTs)) {
14250
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
14251
+ const ts = addDays(minTs, idx);
14252
+ if (isEnabled(ts)) {
14253
+ return ts;
14254
+ }
14255
+ }
14256
+ }
14257
+
14258
+ // 5c. Unbounded min with a finite max far in the past (e.g. birth-date picker):
14259
+ // scan backward from max for up to MAX_SCAN_DAYS.
14260
+ if (!Number.isFinite(minTs) && Number.isFinite(maxTs)) {
14261
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
14262
+ const ts = addDays(maxTs, -idx);
14263
+ if (isEnabled(ts)) {
14264
+ return ts;
14265
+ }
14266
+ }
14267
+ }
14268
+
14269
+ // 6. All dates are blackout — fall back to the first in-range date so focus
14270
+ // still lands on a focusable (but not selectable) cell.
14271
+ if (Number.isFinite(minTs) && isInRange(minTs)) {
14272
+ return minTs;
14273
+ }
14274
+ if (isInRange(now)) {
14275
+ return now;
14276
+ }
14277
+
14278
+ return undefined;
14279
+ }
14280
+
14281
+ /**
14282
+ * Checks if a target date (unix seconds) is within the configured [min, max] range.
14283
+ * Returns false if the date falls outside the range, preventing navigation
14284
+ * to months where all dates are disabled.
14285
+ * @private
14286
+ * @param {Number} targetTs - Unix timestamp in seconds.
14287
+ * @returns {Boolean} True if the date is within range.
14288
+ */
14289
+ isDateInRange(targetTs) {
14290
+ const rawMin = this.minDateObject?.getTime() / 1000;
14291
+ const rawMax = this.maxDateObject?.getTime() / 1000;
14292
+ if (Number.isFinite(rawMin) && targetTs < rawMin) {
14293
+ return false;
14294
+ }
14295
+ if (Number.isFinite(rawMax) && targetTs > rawMax) {
14296
+ return false;
14297
+ }
14298
+ return true;
14299
+ }
14300
+
14301
+ /**
14302
+ * Handles arrow key navigation on the calendar grid wrapper.
14303
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
14304
+ * and the visual active-cell indicator change.
14305
+ * @private
14306
+ * @param {KeyboardEvent} event - The keyboard event.
14307
+ * @returns {void}
14308
+ */
14309
+ handleGridKeyDown(event) {
14310
+ const { key } = event;
14311
+ const actionKeys = [
14312
+ 'ArrowRight',
14313
+ 'ArrowLeft',
14314
+ 'ArrowDown',
14315
+ 'ArrowUp',
14316
+ 'Enter',
14317
+ ' '
14318
+ ];
14319
+
14320
+ if (!actionKeys.includes(key)) {
14321
+ return;
14322
+ }
14323
+
14324
+ event.preventDefault();
14325
+
14326
+ const allCells = this.getAllFocusableCells();
14327
+ if (allCells.length === 0) {
14328
+ return;
14329
+ }
14330
+
14331
+ const activeCell = allCells.find((cell) => cell.active);
14332
+ if (!activeCell) {
14333
+ return;
14334
+ }
14335
+
14336
+ // Handle Enter/Space to select the active cell
14337
+ if (key === 'Enter' || key === ' ') {
14338
+ activeCell.handleTap();
14339
+ return;
14340
+ }
14341
+
14342
+ const activeIndex = allCells.indexOf(activeCell);
14343
+
14344
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
14345
+ const direction = key === 'ArrowRight' ? 1 : -1;
14346
+ const targetIndex = activeIndex + direction;
14347
+
14348
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
14349
+ // Target cell exists in rendered months
14350
+ this.setActiveCell(allCells[targetIndex].day.date);
14351
+ this.scrollToActiveCell();
14352
+ // Dispatch focus event for the cell so live region + range preview update
14353
+ this.handleCellFocused({ detail: { date: allCells[targetIndex].day.date } });
14354
+ } else {
14355
+ // At boundary — need to navigate to next/prev month
14356
+ const navDir = direction === 1 ? 'next' : 'prev';
14357
+ const targetDate = new Date(activeCell.day.date * 1000);
14358
+ targetDate.setDate(targetDate.getDate() + direction);
14359
+ targetDate.setHours(0, 0, 0, 0);
14360
+ const targetTs = Math.floor(targetDate.getTime() / 1000);
14361
+
14362
+ if (this.isDateInRange(targetTs) && ((navDir === 'next' && this.showNextMonthBtn) || (navDir === 'prev' && this.showPrevMonthBtn))) { // eslint-disable-line no-extra-parens
14363
+
14364
+ if (navDir === 'next') {
14365
+ this.handleNextMonth({ skipActiveUpdate: true });
14366
+ } else {
14367
+ this.handlePrevMonth({ skipActiveUpdate: true });
14368
+ }
14369
+ requestAnimationFrame(() => {
14370
+ requestAnimationFrame(() => {
14371
+ const cells = this.getAllFocusableCells();
14372
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
14373
+ if (target) {
14374
+ this.setActiveCell(target.day.date);
14375
+ this.handleCellFocused({ detail: { date: target.day.date } });
14376
+ } else if (cells.length > 0) {
14377
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
14378
+ this.setActiveCell(fallback.day.date);
14379
+ this.handleCellFocused({ detail: { date: fallback.day.date } });
14380
+ }
14381
+ // Re-focus grid wrapper after month change re-render
14382
+ this.focusActiveCell();
14383
+ });
14384
+ });
14385
+ }
14386
+ }
14387
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
14388
+ const increment = key === 'ArrowDown' ? 7 : -7;
14389
+ const currentDate = new Date(activeCell.day.date * 1000);
14390
+ currentDate.setDate(currentDate.getDate() + increment);
14391
+ currentDate.setHours(0, 0, 0, 0);
14392
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
14393
+
14394
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
14395
+
14396
+ if (targetCell) {
14397
+ this.setActiveCell(targetCell.day.date);
14398
+ this.scrollToActiveCell();
14399
+ this.handleCellFocused({ detail: { date: targetCell.day.date } });
14400
+ } else if (this.isDateInRange(targetDate)) {
14401
+ // Target might be in an unrendered month
14402
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
14403
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
14404
+ if (navDirection === 'next') {
14405
+ this.handleNextMonth({ skipActiveUpdate: true });
14406
+ } else {
14407
+ this.handlePrevMonth({ skipActiveUpdate: true });
14408
+ }
14409
+ requestAnimationFrame(() => {
14410
+ requestAnimationFrame(() => {
14411
+ const cells = this.getAllFocusableCells();
14412
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14413
+ if (target) {
14414
+ this.setActiveCell(target.day.date);
14415
+ this.handleCellFocused({ detail: { date: target.day.date } });
14416
+ } else if (cells.length > 0) {
14417
+ let nearest = null;
14418
+
14419
+ if (navDirection === 'next') {
14420
+ [nearest] = cells;
14421
+ } else {
14422
+ nearest = cells[cells.length - 1];
14423
+ }
14424
+ this.setActiveCell(nearest.day.date);
14425
+ this.handleCellFocused({ detail: { date: nearest.day.date } });
14426
+ }
14427
+ this.focusActiveCell();
14428
+ });
14429
+ });
14430
+ }
14431
+ }
14432
+ }
14433
+ }
14434
+
14435
+ /**
14436
+ * Handles cross-month boundary navigation events from month components.
14437
+ * @private
14438
+ * @param {CustomEvent} event - The boundary event with direction and source date info.
14439
+ * @returns {void}
14440
+ */
14441
+ handleMonthBoundary(event) {
14442
+ const { direction, fromDate, key } = event.detail;
14443
+
14444
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
14445
+ // Linear navigation: find adjacent focusable cell across months
14446
+ const allCells = this.getAllFocusableCells();
14447
+ const currentIndex = allCells.findIndex((cell) => cell.day && cell.day.date === fromDate);
14448
+
14449
+ if (currentIndex === -1) {
14450
+ return;
14451
+ }
14452
+
14453
+ let targetIndex = -1;
14454
+ if (direction === 'next') {
14455
+ targetIndex = currentIndex + 1;
14456
+ }
14457
+
14458
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
14459
+ const targetCell = allCells[targetIndex];
14460
+ this.setActiveCell(targetCell.day.date);
14461
+ this.scrollToActiveCell();
14462
+ this.focusActiveCell();
14463
+ } else if (direction === 'next' && this.showNextMonthBtn) {
14464
+ // Navigate to next month and focus the computed next date.
14465
+ // Using the target date (fromDate + 1 day) instead of cells[0]
14466
+ // avoids jumping backward in range datepickers where cells[0]
14467
+ // belongs to the previous (still-rendered) month.
14468
+ const nextDate = new Date(fromDate * 1000);
14469
+ nextDate.setDate(nextDate.getDate() + 1);
14470
+ nextDate.setHours(0, 0, 0, 0);
14471
+ const nextTs = Math.floor(nextDate.getTime() / 1000);
14472
+
14473
+ if (!this.isDateInRange(nextTs)) {
14474
+ return;
14475
+ }
14476
+
14477
+ this.handleNextMonth({ skipActiveUpdate: true });
14478
+ requestAnimationFrame(() => {
14479
+ requestAnimationFrame(() => {
14480
+ const cells = this.getAllFocusableCells();
14481
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
14482
+ if (target) {
14483
+ this.setActiveCell(target.day.date);
14484
+ this.focusActiveCell();
14485
+ } else if (cells.length > 0) {
14486
+ // Fallback: first cell of the last rendered month
14487
+ this.setActiveCell(cells[cells.length - 1].day.date);
14488
+ this.focusActiveCell();
14489
+ }
14490
+ });
14491
+ });
14492
+ } else if (direction === 'prev' && this.showPrevMonthBtn) {
14493
+ // Navigate to previous month and focus the computed previous date.
14494
+ const prevDate = new Date(fromDate * 1000);
14495
+ prevDate.setDate(prevDate.getDate() - 1);
14496
+ prevDate.setHours(0, 0, 0, 0);
14497
+ const prevTs = Math.floor(prevDate.getTime() / 1000);
14498
+
14499
+ if (!this.isDateInRange(prevTs)) {
14500
+ return;
14501
+ }
14502
+
14503
+ this.handlePrevMonth({ skipActiveUpdate: true });
14504
+ requestAnimationFrame(() => {
14505
+ requestAnimationFrame(() => {
14506
+ const cells = this.getAllFocusableCells();
14507
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
14508
+ if (target) {
14509
+ this.setActiveCell(target.day.date);
14510
+ this.focusActiveCell();
14511
+ } else if (cells.length > 0) {
14512
+ // Fallback: last cell of the first rendered month
14513
+ this.setActiveCell(cells[0].day.date);
14514
+ this.focusActiveCell();
14515
+ }
14516
+ });
14517
+ });
14518
+ }
14519
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
14520
+ // Vertical navigation: find same day-of-week +/- 7 days
14521
+ // Use Date arithmetic instead of fixed seconds to handle DST correctly
14522
+ const increment = key === 'ArrowDown' ? 7 : -7;
14523
+ const currentDate = new Date(fromDate * 1000);
14524
+ currentDate.setDate(currentDate.getDate() + increment);
14525
+ currentDate.setHours(0, 0, 0, 0);
14526
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
14527
+
14528
+ const allCells = this.getAllFocusableCells();
14529
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
14530
+
14531
+ if (targetCell) {
14532
+ this.setActiveCell(targetCell.day.date);
14533
+ this.scrollToActiveCell();
14534
+ this.focusActiveCell();
14535
+ } else if (this.isDateInRange(targetDate)) {
14536
+ // Target might be in an unrendered month, navigate there
14537
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
14538
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
14539
+ if (navDirection === 'next') {
14540
+ this.handleNextMonth({ skipActiveUpdate: true });
14541
+ } else {
14542
+ this.handlePrevMonth({ skipActiveUpdate: true });
14543
+ }
14544
+ requestAnimationFrame(() => {
14545
+ requestAnimationFrame(() => {
14546
+ const cells = this.getAllFocusableCells();
14547
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14548
+ if (target) {
14549
+ this.setActiveCell(target.day.date);
14550
+ this.focusActiveCell();
14551
+ } else if (cells.length > 0) {
14552
+ // Clamp to nearest focusable cell
14553
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
14554
+ this.setActiveCell(nearest.day.date);
14555
+ this.focusActiveCell();
14556
+ }
14557
+ });
14558
+ });
14559
+ }
14560
+ }
14561
+ }
14562
+ }
14563
+
14564
+ /**
14565
+ * Handles cell activation events from month components.
14566
+ * @private
14567
+ * @param {CustomEvent} event - The activation event with target date.
14568
+ * @returns {void}
14569
+ */
14570
+ handleCellActivate(event) {
14571
+ const { date } = event.detail;
14572
+ this.setActiveCell(date);
14573
+
14574
+ // Don't call focusActiveCell() here. The tap/click already placed
14575
+ // focus on the cell button, and moving it to #calendarGrid would
14576
+ // trigger focusout on the button, closing any open popover on the
14577
+ // cell. Keyboard events are composed and still bubble through
14578
+ // shadow DOM boundaries to the grid's @keydown handler, so
14579
+ // subsequent keyboard navigation continues to work.
14580
+ }
14581
+
14582
+ /**
14583
+ * Handles focus events from calendar cells.
14584
+ * Updates the live region with an SR announcement and triggers
14585
+ * the imperative range preview if applicable.
14586
+ * @private
14587
+ * @param {CustomEvent} event - The calendar-cell-focused event.
14588
+ * @returns {void}
14589
+ */
14590
+ handleCellFocused(event) {
14591
+ const { date } = event.detail;
14592
+ if (date === null) {
14593
+ return;
14594
+ }
14595
+
14596
+ // With aria-activedescendant, the button no longer receives native focus,
14597
+ // so we use the debounced live region for the full context announcement.
14598
+ const announcement = this.buildFocusAnnouncement(date);
14599
+ this.announceFocusDebounced(announcement);
14600
+
14601
+ // Update the range preview imperatively if in range-preview mode.
14602
+ this.updateRangePreview(date);
14603
+ }
14604
+
14605
+ /**
14606
+ * Builds a full SR announcement string for a focused cell date.
14607
+ * Includes the localized date, range position, popover content,
14608
+ * and blackout status.
14609
+ * @private
14610
+ * @param {Number} date - Unix timestamp (seconds) of the focused cell.
14611
+ * @returns {String} The announcement string.
14612
+ */
14613
+ buildFocusAnnouncement(date) {
14614
+ let label = this.formatAnnouncementDate(date);
14615
+
14616
+ // Append date slot content (e.g. prices) if present.
14617
+ const dateObj = new Date(date * 1000);
14618
+ const mm = String(dateObj.getMonth() + 1).padStart(2, '0');
14619
+ const dd = String(dateObj.getDate()).padStart(2, '0');
14620
+ const yyyy = dateObj.getFullYear();
14621
+ const dateStr = `${yyyy}_${mm}_${dd}`;
14622
+ const dateSlotEl = this.datepicker?.querySelector(`[slot="date_${dateStr}"]`);
14623
+ if (dateSlotEl) {
14624
+ const text = dateSlotEl.innerText?.trim();
14625
+ if (text) {
14626
+ label += `, ${text}`;
14627
+ }
14628
+ }
14629
+
14630
+ // Append popover content if present.
14631
+ const popoverEl = this.datepicker?.querySelector(`[slot="popover_${dateStr}"]`);
14632
+ if (popoverEl) {
14633
+ const text = popoverEl.innerText?.trim();
14634
+ if (text) {
14635
+ label += `, ${text}`;
14636
+ }
14637
+ }
14638
+
14639
+ // Append range position context.
14640
+ if (this.datepicker?.hasAttribute('range')) {
14641
+ const rangeLabel = this.getRangePositionLabel(date);
14642
+ if (rangeLabel) {
14643
+ label += `, ${rangeLabel}`;
14644
+ }
14645
+ }
14646
+
14647
+ // Append blackout label.
14648
+ if (this.isDateBlackout(date)) {
14649
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
14650
+ }
14651
+
14652
+ return label;
14653
+ }
14654
+
14655
+ /**
14656
+ * Determines the range position label for a given date.
14657
+ * @private
14658
+ * @param {Number} date - Unix timestamp (seconds).
14659
+ * @returns {String|null} The range position label, or null.
14660
+ */
14661
+ getRangePositionLabel(date) {
14662
+ const parsedFrom = Number.parseInt(this.dateFrom, 10);
14663
+ if (!Number.isFinite(parsedFrom)) {
14664
+ return null;
14665
+ }
14666
+
14667
+ const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
14668
+ const parsedTo = Number.parseInt(this.dateTo, 10);
14669
+ const hasTo = Number.isFinite(parsedTo);
14670
+ const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
14671
+
14672
+ if (date === departTs) {
14673
+ return this.datepicker.rangeLabelStart || 'range start';
14674
+ }
14675
+ if (hasTo && date === returnTs) {
14676
+ return this.datepicker.rangeLabelEnd || 'range end';
14677
+ }
14678
+ if (date < departTs) {
14679
+ return this.datepicker.rangeLabelBeforeRange || 'before range';
14680
+ }
14681
+ if (hasTo && date > departTs && date < returnTs) {
14682
+ return this.datepicker.rangeLabelInRange || 'in range';
14683
+ }
14684
+ return this.datepicker.rangeLabelAfterRange || 'after range';
14685
+ }
14686
+
14687
+ /**
14688
+ * Checks whether a given date is a blackout date.
14689
+ * @private
14690
+ * @param {Number} dateTs - Unix timestamp (seconds).
14691
+ * @returns {Boolean} True if the date is blacked out.
14692
+ */
14693
+ isDateBlackout(dateTs) {
14694
+ // Check legacy disabledDays.
14695
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
14696
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
14697
+ return true;
14698
+ }
14699
+ }
14700
+
14701
+ // Check ISO blackoutDates.
14702
+ const blackoutDates = this.datepicker?.blackoutDates;
14703
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
14704
+ const date = new Date(dateTs * 1000);
14705
+ const yyyy = date.getFullYear();
14706
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
14707
+ const dd = String(date.getDate()).padStart(2, '0');
14708
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
14709
+ return true;
14710
+ }
14711
+ }
14712
+
14713
+ return false;
14714
+ }
14715
+
14716
+ /**
14717
+ * Updates the range preview classes imperatively across all cells.
14718
+ * Only active when in range mode with dateFrom set and dateTo not yet set.
14719
+ * @private
14720
+ * @param {Number} hoveredDate - Unix timestamp of the hovered/focused date.
14721
+ * @returns {void}
14722
+ */
14723
+ updateRangePreview(hoveredDate) {
14724
+ if (this.noRange || !this.dateFrom || this.dateTo) {
14725
+ return;
14726
+ }
14727
+
14728
+ const parsedDateFrom = parseInt(this.dateFrom, 10);
14729
+ const allCells = this.getAllFocusableCells();
14730
+
14731
+ allCells.forEach((cell) => {
14732
+ cell.updateRangePreviewClasses(hoveredDate, parsedDateFrom);
14733
+ });
14734
+ }
14735
+
14736
+ /**
14737
+ * Clears range preview classes from all cells.
14738
+ * @private
14739
+ * @param {Object} [options] - Optional settings.
14740
+ * @param {boolean} [options.force=false] - When true, clears classes even
14741
+ * when both dateFrom and dateTo are set. Used by month nav handlers
14742
+ * since the subsequent re-render re-applies classMap-managed classes,
14743
+ * while `lastHoveredDate` (not in classMap) would otherwise persist.
14744
+ * @returns {void}
14745
+ */
14746
+ clearRangePreview(options) {
14747
+ const opts = options instanceof Event ? {} : options || {};
14748
+ if (!opts.force && this.dateFrom && this.dateTo) {
14749
+ return;
14750
+ }
14751
+
14752
+ const allCells = this.getAllFocusableCells();
14753
+ allCells.forEach((cell) => {
14754
+ cell.clearRangePreviewClasses();
14755
+ });
14756
+ }
14757
+
14758
+ /**
14759
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
14760
+ * as a reactive property. Instead, handles the range preview imperatively.
14761
+ * @private
14762
+ * @param {CustomEvent} event - The hovered-date-changed event from a month.
14763
+ * @returns {void}
14764
+ */
14765
+ hoveredDateChanged(event) {
14766
+ const hoveredDate = event.detail.value;
14767
+ this.updateRangePreview(hoveredDate);
14768
+ }
14769
+
14770
+ /**
14771
+ * Scrolls the calendar to ensure the month containing the active cell is visible.
14772
+ * @private
14773
+ * @returns {void}
14774
+ */
14775
+ scrollToActiveCell() {
14776
+ if (this.activeCellDate === null || this.activeCellDate === undefined) {
14777
+ return;
14778
+ }
14779
+
14780
+ const date = new Date(this.activeCellDate * 1000);
14781
+ const month = date.getMonth() + 1;
14782
+ const year = date.getFullYear();
14783
+ const selector = `#month-${month}-${year}`;
14784
+ const monthElem = this.shadowRoot.querySelector(selector);
14785
+
14786
+ if (monthElem) {
14787
+ const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
14788
+ monthElem.scrollIntoView({ block: 'nearest',
14789
+ behavior: prefersReducedMotion ? 'instant' : 'smooth' });
14790
+ }
14791
+ }
14792
+
14793
+ /**
14794
+ * Returns (and lazily creates) an aria-live region inside the dropdown's
14795
+ * <dialog> element. This placement is critical for two reasons:
14796
+ *
14797
+ * 1. Inside the dialog's accessible scope — dialog.showModal() makes
14798
+ * everything outside the top-layer dialog inert, and desktop modal
14799
+ * mode uses _setPageInert() on document.body siblings. A live region
14800
+ * on document.body would be invisible to screen readers in both cases.
14801
+ *
14802
+ * 2. Not nested in shadow DOM — Chrome inconsistently observes aria-live
14803
+ * mutations inside shadow DOM across machines and versions. The dialog
14804
+ * element is only one shadow root deep (the dropdown bib's shadow DOM),
14805
+ * which Chrome handles reliably. The calendar's own shadow DOM (nested
14806
+ * inside the bib via slotting) is two+ levels deep and unreliable.
14807
+ *
14808
+ * @private
14809
+ * @returns {HTMLElement} The live region element.
14810
+ */
14811
+ getOrCreateLiveRegion() {
14812
+ if (this._liveRegion && this._liveRegion.isConnected) {
14813
+ return this._liveRegion;
14814
+ }
14815
+
14816
+ // Access the dialog element inside the dropdown bib's shadow DOM.
14817
+ const dialog = this.dropdown?.bibContent?.shadowRoot?.querySelector('dialog');
14818
+ if (!dialog) {
14819
+ return null;
14820
+ }
14821
+
14822
+ // Check if we already created one for this calendar instance.
14823
+ const regionId = `auro-calendar-live-${this._calendarInstanceId}`;
14824
+ const existing = dialog.querySelector(`#${regionId}`);
14825
+ if (existing) {
14826
+ this._liveRegion = existing;
14827
+ return existing;
14828
+ }
14829
+
14830
+ const el = document.createElement('div');
14831
+ el.id = regionId;
14832
+ el.setAttribute('aria-live', 'assertive');
14833
+ el.setAttribute('aria-atomic', 'true');
14834
+ 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;';
14835
+ dialog.appendChild(el);
14836
+
14837
+ this._liveRegion = el;
14838
+ return el;
14839
+ }
14840
+
14841
+ /**
14842
+ * Removes the live region when this calendar is disconnected.
14843
+ * @private
14844
+ * @returns {void}
14845
+ */
14846
+ disconnectedCallback() {
14847
+ super.disconnectedCallback();
14848
+
14849
+ // Cancel any pending announcements so they don't fire after teardown.
14850
+ if (this._announceRafId) {
14851
+ cancelAnimationFrame(this._announceRafId);
14852
+ this._announceRafId = null;
14853
+ }
14854
+ if (this._focusAnnounceTimer) {
14855
+ clearTimeout(this._focusAnnounceTimer);
14856
+ this._focusAnnounceTimer = null;
14857
+ }
14858
+
14859
+ if (this._liveRegion && this._liveRegion.isConnected) {
14860
+ this._liveRegion.remove();
14861
+ }
14862
+ this._liveRegion = null;
14863
+ }
14864
+
14865
+ /**
14866
+ * Announces a date selection or focus change via the live region.
14867
+ * Uses requestAnimationFrame to ensure the clear and set happen in
14868
+ * separate rendering frames — Chrome may coalesce synchronous or
14869
+ * microtask-deferred mutations into a single accessibility tree update.
14870
+ * @private
14871
+ * @param {String} dateStr - The localized date string to announce.
14872
+ * @returns {void}
14873
+ */
14874
+ announceSelection(dateStr) {
14875
+ // Cancel any previously queued rAF announcement so a rapid
14876
+ // sequence of calls (e.g. bib open → month nav) only announces
14877
+ // the last one.
14878
+ if (this._announceRafId) {
14879
+ cancelAnimationFrame(this._announceRafId);
14880
+ }
14881
+ const liveRegion = this.getOrCreateLiveRegion();
14882
+ if (!liveRegion) {
14883
+ return;
14884
+ }
14885
+
14886
+ // Double-rAF: clear in frame N, set in frame N+1. Chrome batches
14887
+ // accessibility tree mutations within a single animation frame, so
14888
+ // a same-frame clear+set can be coalesced into a no-op if the new
14889
+ // value matches a recently announced string. Splitting across two
14890
+ // frames guarantees Chrome sees two distinct tree states and fires
14891
+ // a new accessibility event for the content change.
14892
+ liveRegion.textContent = '';
14893
+ this._announceRafId = requestAnimationFrame(() => {
14894
+ this._announceRafId = requestAnimationFrame(() => {
14895
+ liveRegion.textContent = dateStr;
14896
+ this._announceRafId = null;
14897
+ });
14898
+ });
14899
+ }
14900
+
14901
+ /**
14902
+ * Debounced version of announceSelection for focus navigation.
14903
+ * Uses the assertive live region with a 150ms debounce so only the
14904
+ * final cell after rapid arrow-key traversal is announced. We
14905
+ * originally tried aria-live="polite" here, but VoiceOver treats
14906
+ * polite as "wait until idle" — which never happens during active
14907
+ * keyboard navigation — so the announcements were silently dropped.
14908
+ * @private
14909
+ * @param {String} dateStr - The localized date string to announce.
14910
+ * @returns {void}
14911
+ */
14912
+ announceFocusDebounced(dateStr) {
14913
+ if (this._focusAnnounceTimer) {
14914
+ clearTimeout(this._focusAnnounceTimer);
14915
+ }
14916
+ this._focusAnnounceTimer = setTimeout(() => {
14917
+ this.announceSelection(dateStr);
14918
+ this._focusAnnounceTimer = null;
14919
+ }, 150);
14920
+ }
14921
+
14922
+ /**
14923
+ * Formats a Unix timestamp (seconds) as a localized date string for SR announcements.
14924
+ * @private
14925
+ * @param {String|Number} timestamp - Unix timestamp in seconds.
14926
+ * @returns {String} Localized date string.
14927
+ */
14928
+ formatAnnouncementDate(timestamp) {
14929
+ const date = new Date(parseInt(timestamp, 10) * 1000);
14930
+ const formatter = new Intl.DateTimeFormat(this.localeCode, {
14931
+ weekday: 'long',
14932
+ year: 'numeric',
14933
+ month: 'long',
14934
+ day: 'numeric'
14935
+ });
14936
+ return formatter.format(date);
14937
+ }
14938
+
13434
14939
  firstUpdated() {
14940
+
13435
14941
  this.addEventListener('date-from-changed', () => {
13436
14942
  this.dispatchEvent(new CustomEvent('auroCalendar-dateSelected', {
13437
14943
  bubbles: true,
@@ -13450,6 +14956,21 @@ class AuroCalendar extends RangeDatepicker {
13450
14956
  composed: true,
13451
14957
  }));
13452
14958
  });
14959
+
14960
+ // Listen for cross-month boundary navigation events
14961
+ this.addEventListener('calendar-month-boundary', (event) => {
14962
+ this.handleMonthBoundary(event);
14963
+ });
14964
+
14965
+ // Listen for cell activation events
14966
+ this.addEventListener('calendar-cell-activate', (event) => {
14967
+ this.handleCellActivate(event);
14968
+ });
14969
+
14970
+ // Listen for cell focus events (SR announcements + range preview)
14971
+ this.addEventListener('calendar-cell-focused', (event) => {
14972
+ this.handleCellFocused(event);
14973
+ });
13453
14974
  }
13454
14975
 
13455
14976
  injectSlot(slotName, nodes) {
@@ -13474,7 +14995,37 @@ class AuroCalendar extends RangeDatepicker {
13474
14995
  }
13475
14996
 
13476
14997
  if (changedProperties.has('visible')) {
13477
- setTimeout(() => this.requestUpdate());
14998
+ if (this.visible) {
14999
+ // Compute the active date eagerly from data — no DOM needed.
15000
+ if (this.activeCellDate == null) { // eslint-disable-line no-eq-null, eqeqeq
15001
+ this.activeCellDate = this.computeActiveDate();
15002
+ }
15003
+
15004
+ this.requestUpdate();
15005
+ } else {
15006
+ this.requestUpdate();
15007
+ }
15008
+ }
15009
+
15010
+ // Announce date selection to screen readers when user clicks/selects a cell
15011
+ const isCellClick = this.datepicker?.wasCellClick || this.datepicker?.cellClickActive;
15012
+
15013
+ if (changedProperties.has('dateFrom') && this.dateFrom && isCellClick) {
15014
+ const dateStr = this.formatAnnouncementDate(this.dateFrom);
15015
+ const isRange = !this.noRange;
15016
+
15017
+ if (isRange) {
15018
+ const rangeLabel = this.datepicker.rangeLabelStart || 'range start';
15019
+ this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
15020
+ } else {
15021
+ this.announceSelection(`${dateStr}, selected`);
15022
+ }
15023
+ }
15024
+
15025
+ if (changedProperties.has('dateTo') && this.dateTo && isCellClick) {
15026
+ const dateStr = this.formatAnnouncementDate(this.dateTo);
15027
+ const rangeLabel = this.datepicker.rangeLabelEnd || 'range end';
15028
+ this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
13478
15029
  }
13479
15030
  }
13480
15031
 
@@ -13483,6 +15034,7 @@ class AuroCalendar extends RangeDatepicker {
13483
15034
  <${this.bibtemplateTag}
13484
15035
  ?large="${this.largeFullscreenHeadline}"
13485
15036
  ?isFullscreen="${this.isFullscreen}"
15037
+ ?showFooter="${!this.isFullscreen && this.dropdown?.desktopModal}"
13486
15038
  @close-click="${this.utilCal.requestDismiss}">
13487
15039
  <span slot="ariaLabel.close">${this.slots["ariaLabel.bib.close"]}</span>
13488
15040
 
@@ -13500,24 +15052,26 @@ class AuroCalendar extends RangeDatepicker {
13500
15052
  </div>
13501
15053
  </div>
13502
15054
 
13503
- <div class="calendarWrapper">
13504
- <div class="calendars">
13505
- ${this.renderAllCalendars()}
13506
- </div>
15055
+ <div class="calendarWrapper ${!this.isFullscreen && this.dropdown?.desktopModal ? 'hasFooter' : ''}">
13507
15056
  <div class="calendarNavButtons">
13508
15057
  ${this.showPrevMonthBtn ? u$a`
13509
- <button tabIndex="-1" class="calendarNavBtn prevMonth" @click="${this.handlePrevMonth}">
15058
+ <button tabIndex="0" class="calendarNavBtn prevMonth" aria-label="${this.datepicker?.navLabelPrevMonth || 'Previous month'}" @click="${this.handlePrevMonth}">
13510
15059
  ${this.util.generateIconHtml(chevronLeft)}
13511
15060
  </button>
13512
15061
  ` : undefined}
13513
15062
  ${this.showNextMonthBtn ? u$a`
13514
- <button tabIndex="-1" class="calendarNavBtn nextMonth" @click="${this.handleNextMonth}">
15063
+ <button tabIndex="0" class="calendarNavBtn nextMonth" aria-label="${this.datepicker?.navLabelNextMonth || 'Next month'}" @click="${this.handleNextMonth}">
13515
15064
  ${this.util.generateIconHtml(chevronRight)}
13516
15065
  </button>
13517
15066
  ` : undefined}
13518
15067
  </div>
15068
+ <div id="calendarGrid" class="calendars" role="group" tabindex="0" aria-label="${this.datepicker?.calendarGridLabel}" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}" @calendar-month-mouseleave="${this.clearRangePreview}">
15069
+ ${this.renderAllCalendars()}
15070
+ </div>
13519
15071
  </div>
13520
15072
 
15073
+ <div id="calendar-live-region" aria-live="assertive" aria-atomic="true" class="sr-only"></div>
15074
+
13521
15075
  <${this.buttonTag} slot="footer" fluid @click="${this.utilCal.requestDismiss}">Done</${this.buttonTag}>
13522
15076
  </${this.bibtemplateTag}>
13523
15077
  `;
@@ -16789,7 +18343,7 @@ function applyKeyboardStrategy$1(component, strategy, options = {}) {
16789
18343
  });
16790
18344
  }
16791
18345
 
16792
- var styleCss$2$1 = i$3`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host dialog{width:auto;max-width:none;height:auto;max-height:none;padding:0;border:none;margin:0;outline:none;transform:translateZ(0)}:host dialog::backdrop{background:transparent}:host(:not([isfullscreen])) dialog{position:relative;inset:unset}:host(:not([isfullscreen])) .container.shape-box{border-radius:unset}:host(:not([isfullscreen])) .container[class*=shape-pill],:host(:not([isfullscreen])) .container[class*=shape-snowflake]{border-radius:30px}:host(:not([isfullscreen])) .container[class*=shape-rounded]{border-radius:16px}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([isfullscreen]) .container::backdrop{background:var(--ds-color-background-primary, #fff)}:host(:popover-open){position:fixed;overflow:visible;padding:0;border:none;margin:0;background:transparent;inset:unset;outline:none}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}.container{display:inline-block;overflow:auto;box-sizing:border-box;border-radius:var(--ds-border-radius, 0.375rem);margin:var(--ds-size-50, 0.25rem) 0}.util_displayHiddenVisually{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip-path:inset(50%);white-space:nowrap}`;
18346
+ var styleCss$2$1 = i$3`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host dialog{width:auto;max-width:none;height:auto;max-height:none;padding:0;border:none;margin:0;outline:none;transform:translateZ(0)}:host dialog::backdrop{background:transparent}:host(:not([isfullscreen])) dialog{position:relative;inset:unset}:host(:not([isfullscreen])) .container.shape-box{border-radius:unset}:host(:not([isfullscreen])) .container[class*=shape-pill],:host(:not([isfullscreen])) .container[class*=shape-snowflake]{border-radius:30px}:host(:not([isfullscreen])) .container[class*=shape-rounded]{border-radius:16px}:host([desktopmodal]:popover-open)::backdrop{background:transparent}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([isfullscreen]) .container::backdrop{background:var(--ds-color-background-primary, #fff)}:host(:popover-open){position:fixed;overflow:visible;padding:0;border:none;margin:0;background:transparent;inset:unset;outline:none}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}.container{display:inline-block;overflow:auto;box-sizing:border-box;border-radius:var(--ds-border-radius, 0.375rem);margin:var(--ds-size-50, 0.25rem) 0}.util_displayHiddenVisually{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip-path:inset(50%);white-space:nowrap}`;
16793
18347
 
16794
18348
  var colorCss$2 = i$3`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
16795
18349
 
@@ -17420,7 +18974,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
17420
18974
  }
17421
18975
  };
17422
18976
 
17423
- var formkitVersion$1 = '202606031942';
18977
+ var formkitVersion$1 = '202606181613';
17424
18978
 
17425
18979
  let AuroElement$2 = class AuroElement extends i$1 {
17426
18980
  static get properties() {
@@ -17600,6 +19154,7 @@ class AuroDropdown extends AuroElement$2 {
17600
19154
  _intializeDefaults() {
17601
19155
  this.appearance = 'default';
17602
19156
  this.chevron = false;
19157
+ this.desktopModal = false;
17603
19158
  this.disabled = false;
17604
19159
  this.disableKeyboardHandling = false;
17605
19160
  this.error = false;
@@ -17780,6 +19335,14 @@ class AuroDropdown extends AuroElement$2 {
17780
19335
  reflect: true
17781
19336
  },
17782
19337
 
19338
+ /**
19339
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
19340
+ */
19341
+ desktopModal: {
19342
+ type: Boolean,
19343
+ reflect: true
19344
+ },
19345
+
17783
19346
  /**
17784
19347
  * If declared, the dropdown will only show by calling the API .show() public method.
17785
19348
  */
@@ -18067,6 +19630,15 @@ class AuroDropdown extends AuroElement$2 {
18067
19630
 
18068
19631
  disconnectedCallback() {
18069
19632
  super.disconnectedCallback();
19633
+ this._clearPageInert();
19634
+ if (this._bibTabHandler) {
19635
+ this.removeEventListener('keydown', this._bibTabHandler);
19636
+ this._bibTabHandler = undefined;
19637
+ }
19638
+ if (this.focusTrap) {
19639
+ this.focusTrap.disconnect();
19640
+ this.focusTrap = undefined;
19641
+ }
18070
19642
  if (this.floater) {
18071
19643
  this.floater.hideBib('disconnect');
18072
19644
  this.floater.disconnect();
@@ -18094,19 +19666,45 @@ class AuroDropdown extends AuroElement$2 {
18094
19666
  if (this.isPopoverVisible) {
18095
19667
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
18096
19668
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
18097
- const useModal = this.isBibFullscreen;
18098
- this.bibElement.value.open(useModal);
19669
+ this.bibElement.value.open(this.isBibFullscreen);
19670
+ this.updateFocusTrap();
19671
+
19672
+ // Desktop modal: make siblings inert so content outside is not interactive
19673
+ if (this.desktopModal && !this.isBibFullscreen) {
19674
+ this._setPageInert();
19675
+ }
18099
19676
  } else {
18100
19677
  this.bibElement.value.close();
19678
+ this._clearPageInert();
18101
19679
  }
18102
19680
  }
18103
19681
 
18104
19682
  // When fullscreen strategy changes while open, re-open dialog with correct mode
18105
19683
  // (e.g. resizing from desktop → mobile while dropdown is open)
18106
19684
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
18107
- const useModal = this.isBibFullscreen;
18108
19685
  this.bibElement.value.close();
18109
- this.bibElement.value.open(useModal);
19686
+ this.bibElement.value.open(this.isBibFullscreen);
19687
+
19688
+ // Re-initialize focus management for the new strategy
19689
+ this.updateFocusTrap();
19690
+
19691
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
19692
+ if (this.desktopModal && !this.isBibFullscreen) {
19693
+ this._setPageInert();
19694
+ } else {
19695
+ this._clearPageInert();
19696
+ }
19697
+ }
19698
+
19699
+ // Handle desktopModal toggled while the dropdown is already open.
19700
+ // Re-initialize focus trapping and page inert state to match the new mode.
19701
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
19702
+ this.updateFocusTrap();
19703
+ if (this.desktopModal) {
19704
+ this._setPageInert();
19705
+ } else {
19706
+ this._clearPageInert();
19707
+ }
18110
19708
  }
18111
19709
  }
18112
19710
 
@@ -18116,8 +19714,14 @@ class AuroDropdown extends AuroElement$2 {
18116
19714
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
18117
19715
  */
18118
19716
  handleDropdownToggle(event) {
18119
- this.updateFocusTrap();
18120
19717
  this.isPopoverVisible = event.detail.expanded;
19718
+
19719
+ // Tear down FocusTrap when closing. Creation happens in updated()
19720
+ // after the dialog is open so getFocusableElements can find content.
19721
+ if (!this.isPopoverVisible) {
19722
+ this.updateFocusTrap();
19723
+ }
19724
+
18121
19725
  const eventType = event.detail.eventType || "unknown";
18122
19726
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
18123
19727
  this.trigger.focus();
@@ -18216,19 +19820,220 @@ class AuroDropdown extends AuroElement$2 {
18216
19820
  * @private
18217
19821
  */
18218
19822
  updateFocusTrap() {
19823
+ // Always clean up existing handlers/traps before setting up new ones
19824
+ // to prevent duplicate listeners on repeated calls.
19825
+ if (this._bibTabHandler) {
19826
+ this.removeEventListener('keydown', this._bibTabHandler);
19827
+ this._bibTabHandler = undefined;
19828
+ }
19829
+
19830
+ if (this.focusTrap) {
19831
+ this.focusTrap.disconnect();
19832
+ this.focusTrap = undefined;
19833
+ }
19834
+
19835
+ // Restore the user-set noHideOnThisFocusLoss value, if we overrode it.
19836
+ if (this._noHideOverridden) {
19837
+ this.noHideOnThisFocusLoss = this._priorNoHide;
19838
+ this._noHideOverridden = false;
19839
+ this._priorNoHide = undefined;
19840
+ }
19841
+
18219
19842
  if (this.isPopoverVisible) {
18220
19843
  if (!this.isBibFullscreen) {
18221
- // Desktop: show() doesn't trap focus, so use FocusTrap
18222
- this.focusTrap = new FocusTrap(this.bibContent);
18223
- this.focusTrap.focusFirstElement();
19844
+ if (this.desktopModal) {
19845
+ // The floater's focus-loss check uses :focus-within, which does not
19846
+ // match the host when focus is on a slotted element projected through
19847
+ // multiple shadow roots. Without this override, focusing a button
19848
+ // inside the bib would be misread as focus leaving the dropdown and
19849
+ // close the bib immediately. desktopModal traps focus inside the
19850
+ // bib and inerts siblings, so suppressing focus-loss dismissal here
19851
+ // is safe — Escape and outside-click still close the bib.
19852
+ this._priorNoHide = this.noHideOnThisFocusLoss;
19853
+ this._noHideOverridden = true;
19854
+ this.noHideOnThisFocusLoss = true;
19855
+
19856
+ // Desktop modal: trap focus only within the bib content.
19857
+ // Can't use FocusTrap on the bib element because keydown events
19858
+ // from slotted content bubble through the dropdown host (light DOM),
19859
+ // not through the bib (shadow projection target). Using FocusTrap
19860
+ // on the dropdown would include the trigger in the tab cycle.
19861
+ // Instead, listen for Tab on the dropdown and manually wrap focus
19862
+ // within the bib's focusable elements.
19863
+ this._bibTabHandler = (event) => {
19864
+ if (event.key !== 'Tab') {
19865
+ return;
19866
+ }
19867
+
19868
+ // Collect focusable elements from the bib content.
19869
+ const focusables = getFocusableElements(this.bibContent);
19870
+
19871
+ // Fallback: try from slotted content directly
19872
+ if (!focusables.length) {
19873
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
19874
+ const assignedNodes = slot.assignedNodes({ flatten: true });
19875
+
19876
+ for (const node of assignedNodes) {
19877
+ if (node.nodeType === Node.ELEMENT_NODE) {
19878
+ focusables.push(...getFocusableElements(node));
19879
+ }
19880
+ }
19881
+ }
19882
+
19883
+ if (!focusables.length) {
19884
+ return;
19885
+ }
19886
+
19887
+ event.preventDefault();
19888
+
19889
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
19890
+
19891
+ // Walk the active element chain through shadow roots
19892
+ const actives = this._getActiveElements();
19893
+
19894
+ let idx = focusables.findIndex((el) => actives.includes(el));
19895
+
19896
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
19897
+ // Focus is not on a known element — move to first/last
19898
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
19899
+ }
19900
+
19901
+ // Try each element in order, skipping any that can't receive focus
19902
+ // (e.g. hidden elements, elements in collapsed sections)
19903
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
19904
+ let nextIdx = idx + direction;
19905
+
19906
+ // Wrap around
19907
+ if (nextIdx < 0) {
19908
+ nextIdx = focusables.length - 1;
19909
+ } else if (nextIdx >= focusables.length) {
19910
+ nextIdx = 0;
19911
+ }
19912
+
19913
+ focusables[nextIdx].focus();
19914
+
19915
+ // Verify focus actually moved to the target
19916
+ const newActives = this._getActiveElements();
19917
+
19918
+ if (newActives.includes(focusables[nextIdx])) {
19919
+ return;
19920
+ }
19921
+
19922
+ // Focus didn't stick — skip this element and try the next
19923
+ idx = nextIdx;
19924
+ }
19925
+ };
19926
+ this.addEventListener('keydown', this._bibTabHandler);
19927
+
19928
+ // Move initial focus into the bib content, matching FocusTrap behavior
19929
+ requestAnimationFrame(() => {
19930
+ const focusables = getFocusableElements(this.bibContent);
19931
+ if (focusables.length) {
19932
+ focusables[0].focus();
19933
+ }
19934
+ });
19935
+ } else {
19936
+ // Normal desktop: use FocusTrap on the bib element.
19937
+ // Defer focusFirstElement to the next frame because the popover
19938
+ // is positioned asynchronously by Floating UI — calling focus()
19939
+ // synchronously here would target elements with zero dimensions
19940
+ // and the focus call would be silently ignored.
19941
+ this.focusTrap = new FocusTrap(this.bibContent);
19942
+ requestAnimationFrame(() => {
19943
+ if (this.focusTrap) {
19944
+ this.focusTrap.focusFirstElement();
19945
+ }
19946
+ });
19947
+ }
18224
19948
  }
18225
19949
  // Fullscreen: showModal() provides native focus trapping
19950
+ }
19951
+ }
19952
+
19953
+ /**
19954
+ * Returns the chain of active (focused) elements through shadow roots.
19955
+ * @private
19956
+ * @returns {Array<HTMLElement>}
19957
+ */
19958
+ _getActiveElements() {
19959
+ let { activeElement } = document;
19960
+ const actives = [activeElement];
19961
+
19962
+ while (activeElement?.shadowRoot?.activeElement) {
19963
+ activeElement = activeElement.shadowRoot.activeElement;
19964
+ actives.push(activeElement);
19965
+ }
19966
+
19967
+ return actives;
19968
+ }
19969
+
19970
+ /**
19971
+ * Sets `inert` on sibling elements of the dropdown's top-level host
19972
+ * so that content outside the dropdown is not interactive while the modal is open.
19973
+ * Walks up through shadow DOM boundaries to find the outermost host element
19974
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
19975
+ * to ensure all page content outside the host subtree is inert.
19976
+ * @private
19977
+ */
19978
+ _setPageInert() {
19979
+ if (this._inertSiblings) {
18226
19980
  return;
18227
19981
  }
18228
19982
 
18229
- if (this.focusTrap) {
18230
- this.focusTrap.disconnect();
18231
- this.focusTrap = undefined;
19983
+ this._inertSiblings = [];
19984
+
19985
+ // Walk up through shadow DOM boundaries to find the topmost host
19986
+ // element in the light DOM. For example, if this dropdown is inside
19987
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
19988
+ // so we set inert on its siblings — not on the datepicker itself.
19989
+ let host = this;
19990
+ while (host.getRootNode() instanceof ShadowRoot) {
19991
+ host = host.getRootNode().host;
19992
+ }
19993
+
19994
+ // Walk up the ancestor chain, inerting siblings at each level
19995
+ // to ensure the entire page outside the host subtree is inert.
19996
+ // Uses a reference counter (data-auro-inert-count) so multiple
19997
+ // simultaneous modal dropdowns share inert state safely.
19998
+ let current = host;
19999
+ while (current.parentElement) {
20000
+ const parent = current.parentElement;
20001
+ for (const sibling of parent.children) {
20002
+ if (sibling !== current) {
20003
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
20004
+ if (count === 0) {
20005
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
20006
+ }
20007
+ sibling.dataset.auroInertCount = String(count + 1);
20008
+ sibling.inert = true;
20009
+ this._inertSiblings.push(sibling);
20010
+ }
20011
+ }
20012
+ current = parent;
20013
+ }
20014
+ }
20015
+
20016
+ /**
20017
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
20018
+ * Uses reference counting so inert is only cleared when the last modal
20019
+ * dropdown releases a given element. Preserves the original inert state
20020
+ * so externally-inerted elements are not inadvertently re-enabled.
20021
+ * @private
20022
+ */
20023
+ _clearPageInert() {
20024
+ if (this._inertSiblings) {
20025
+ for (const sibling of this._inertSiblings) {
20026
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
20027
+ if (count <= 0) {
20028
+ const wasInert = sibling.dataset.auroInertWas === 'true';
20029
+ delete sibling.dataset.auroInertCount;
20030
+ delete sibling.dataset.auroInertWas;
20031
+ sibling.inert = wasInert;
20032
+ } else {
20033
+ sibling.dataset.auroInertCount = String(count);
20034
+ }
20035
+ }
20036
+ this._inertSiblings = undefined;
18232
20037
  }
18233
20038
  }
18234
20039
 
@@ -18467,6 +20272,7 @@ class AuroDropdown extends AuroElement$2 {
18467
20272
  shape="${this.shape}"
18468
20273
  ?data-show="${this.isPopoverVisible}"
18469
20274
  ?isfullscreen="${this.isBibFullscreen}"
20275
+ ?desktopmodal="${this.desktopModal}"
18470
20276
  .dialogLabel="${this.bibDialogLabel}"
18471
20277
  ${n(this.bibElement)}
18472
20278
  >
@@ -23048,7 +24854,7 @@ class AuroFormValidation {
23048
24854
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
23049
24855
  const input = elem.renderRoot.querySelector('input');
23050
24856
 
23051
- if (input.validationMessage.length > 0) {
24857
+ if (input && input.validationMessage.length > 0) {
23052
24858
  elem.errorMessage = input.validationMessage;
23053
24859
  }
23054
24860
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -28720,7 +30526,11 @@ class AuroInputUtilities {
28720
30526
  return part.value;
28721
30527
  }
28722
30528
  })
28723
- .join("");
30529
+ .join("")
30530
+ // Remove whitespace and leading/trailing special characters for IMask compatibility
30531
+ // for example, ko-KR's format is `YYYY. MM. DD.` which causes issues with IMask if we don't remove the trailing period.
30532
+ .replace(/\s/gu, '')
30533
+ .replace(/^[^A-Z0-9]+|[^A-Z0-9]+$/gu, '');
28724
30534
  }
28725
30535
 
28726
30536
  /**
@@ -28876,27 +30686,16 @@ class AuroInputUtilities {
28876
30686
  * Converts a model value to a display value for the input element.
28877
30687
  * For full date formats, converts an ISO model value to the configured display format.
28878
30688
  * @private
28879
- * @param {string} value - The model value (ISO string for date types).
28880
30689
  * @param {Date|undefined} valueObject - Date object representation of value.
28881
30690
  * @param {string} format - The date format string.
28882
- * @returns {string}
30691
+ * @returns {string | undefined}
28883
30692
  */
28884
- toFormattedValue(value, valueObject, format) {
28885
- if (!this.isFullDateFormat('date', format) || !value) {
28886
- return value;
28887
- }
28888
-
28889
- if (!dateFormatter.isValidDate(value)) {
28890
- // For ISO-pattern strings that fail range validation (e.g. '2024-99-99'),
28891
- // return '' so inputElement stays empty and format-based validation is not triggered.
28892
- return (/^\d{4}-\d{2}-\d{2}$/u).test(value) ? '' : value;
28893
- }
28894
-
30693
+ toFormattedValue(valueObject, format) {
28895
30694
  const normalizedFormat = format.toLowerCase();
28896
30695
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
28897
30696
 
28898
30697
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
28899
- return value;
30698
+ return undefined;
28900
30699
  }
28901
30700
 
28902
30701
  return maskOptions.format(valueObject);
@@ -29598,7 +31397,7 @@ class BaseInput extends AuroElement$1 {
29598
31397
  * @returns {Date|undefined}
29599
31398
  */
29600
31399
  get valueObject() {
29601
- return this._valueObject;
31400
+ return this._valueObject || this._computeDateObjectFallback(this.value);
29602
31401
  }
29603
31402
 
29604
31403
  /**
@@ -29606,7 +31405,7 @@ class BaseInput extends AuroElement$1 {
29606
31405
  * @returns {Date|undefined}
29607
31406
  */
29608
31407
  get minObject() {
29609
- return this._minObject;
31408
+ return this._minObject || this._computeDateObjectFallback(this.min);
29610
31409
  }
29611
31410
 
29612
31411
  /**
@@ -29614,7 +31413,31 @@ class BaseInput extends AuroElement$1 {
29614
31413
  * @returns {Date|undefined}
29615
31414
  */
29616
31415
  get maxObject() {
29617
- return this._maxObject;
31416
+ return this._maxObject || this._computeDateObjectFallback(this.max);
31417
+ }
31418
+
31419
+ /**
31420
+ * Parses a date string into a Date object when the corresponding `_*Object`
31421
+ * field hasn't been synced yet by `updated()`. Returns undefined when the
31422
+ * input type/format isn't a full date or the string is not a valid date.
31423
+ *
31424
+ * Why this exists: a parent (datepicker) can call `inputN.validate()` from
31425
+ * inside its own `updated()` before this input's `updated()` has run
31426
+ * `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
31427
+ * and range checks would otherwise silently no-op (flipping the result to
31428
+ * `valid` or `patternMismatch`).
31429
+ * @private
31430
+ * @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
31431
+ * @returns {Date|undefined}
31432
+ */
31433
+ _computeDateObjectFallback(dateStr) {
31434
+ if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
31435
+ return undefined;
31436
+ }
31437
+ if (!dateFormatter.isValidDate(dateStr)) {
31438
+ return undefined;
31439
+ }
31440
+ return dateFormatter.stringToDateInstance(dateStr);
29618
31441
  }
29619
31442
 
29620
31443
  /**
@@ -29639,8 +31462,30 @@ class BaseInput extends AuroElement$1 {
29639
31462
  connectedCallback() {
29640
31463
  super.connectedCallback();
29641
31464
 
31465
+ // Mark for query selectors when registered under a versioned tag (e.g. inside
31466
+ // a datepicker/combobox). Must run before parent components call validate() on
31467
+ // their inner inputs — the validation framework matches via tag-or-attribute,
31468
+ // and parents trigger validation during their own updated() cycle, which can
31469
+ // precede this input's firstUpdated().
31470
+ if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
31471
+ this.setAttribute('auro-input', '');
31472
+ }
31473
+
29642
31474
  this.locale = this.domHandler.getLocale(this);
29643
31475
  notifyOnLangChange(this);
31476
+
31477
+ // Pre-compute lengthForType and date-object fields so a parent (e.g. datepicker)
31478
+ // calling our validate() synchronously during its own updated() cycle sees
31479
+ // populated values. Without this, range validation silently no-ops because
31480
+ // `max.length === lengthForType` fails when lengthForType is still undefined.
31481
+ // Rebuild util here (constructor seeded with en-US default) so configureDataForType's
31482
+ // locale-derived format lookup uses the actual locale just resolved above.
31483
+ this.util = new AuroInputUtilities({
31484
+ locale: this.locale,
31485
+ format: this.format
31486
+ });
31487
+ this.configureDataForType();
31488
+ this.syncDateValues();
29644
31489
  }
29645
31490
 
29646
31491
  disconnectedCallback() {
@@ -29661,8 +31506,8 @@ class BaseInput extends AuroElement$1 {
29661
31506
  }
29662
31507
 
29663
31508
  // add attribute for query selectors when auro-input is registered under a custom name
29664
- if (this.tagName.toLowerCase() !== 'auro-input') {
29665
- this.setAttribute('auro-input', true);
31509
+ if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
31510
+ this.setAttribute('auro-input', '');
29666
31511
  }
29667
31512
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
29668
31513
 
@@ -29710,6 +31555,12 @@ class BaseInput extends AuroElement$1 {
29710
31555
  return;
29711
31556
  }
29712
31557
 
31558
+ // While configureAutoFormatting is running, imask's internal updateControl
31559
+ // writes el.value to align display with the masked value. A synthetic input
31560
+ // event from that write would re-enter handleInput → processCreditCard mid-setup
31561
+ // and clobber a Lit value that was just pushed by the parent combobox.
31562
+ if (component._configuringMask) return;
31563
+
29713
31564
  // If all guard clauses are passed, dispatch the event
29714
31565
  const inputEvent = new InputEvent('input', {
29715
31566
  bubbles: true,
@@ -29814,11 +31665,30 @@ class BaseInput extends AuroElement$1 {
29814
31665
  this.hasValue = false;
29815
31666
  }
29816
31667
 
29817
- const formattedValue = this.type === 'date' ? this.util.toFormattedValue(this.value, this.valueObject, this.format) : this.value;
31668
+ let formattedValue = this.value;
31669
+ if (this.type === 'date') {
31670
+ const formattedDate = this.util.toFormattedValue(this.valueObject, this.format);
31671
+ if (!formattedDate) {
31672
+ // if user entered unrecognized date format that cannot be parsed into a Date object,
31673
+ // keep the raw value in the input so they can edit it instead of overwriting with an empty string
31674
+ formattedValue = this.value;
31675
+ } else {
31676
+ formattedValue = formattedDate;
31677
+ }
31678
+ }
29818
31679
 
29819
31680
  if (formattedValue !== this.inputElement.value) {
29820
31681
  this.skipNextProgrammaticInputEvent = true;
29821
- if (formattedValue) {
31682
+ if (this.maskInstance && this.type === 'credit-card') {
31683
+ // Route through the mask so its _value and el.value stay in lock-step
31684
+ // (set value calls updateControl which writes el.value = displayValue).
31685
+ // Writing el.value directly leaves the mask thinking displayValue is
31686
+ // stale; _saveSelection on the next focus/click then warns. Scoped to
31687
+ // credit-card so date's own formattedValue (raw ISO when calendar-invalid)
31688
+ // isn't re-masked through the mm/dd/yyyy mask, which would truncate it
31689
+ // and flip validity from patternMismatch to tooShort.
31690
+ this.maskInstance.value = formattedValue || '';
31691
+ } else if (formattedValue) {
29822
31692
  this.inputElement.value = formattedValue;
29823
31693
  } else {
29824
31694
  this.inputElement.value = '';
@@ -29927,58 +31797,73 @@ class BaseInput extends AuroElement$1 {
29927
31797
  * @returns {void}
29928
31798
  */
29929
31799
  configureAutoFormatting() {
29930
- if (this.maskInstance) {
29931
- this.maskInstance.destroy();
29932
- }
31800
+ // Re-entrancy guard. The patched-setter's synthetic input event (suppressed
31801
+ // by _configuringMask above) could otherwise trigger handleInput →
31802
+ // processCreditCard → configureAutoFormatting before the outer call's
31803
+ // set value has finished its alignCursor pass.
31804
+ if (this._configuringMask) return;
31805
+ this._configuringMask = true;
31806
+ try {
31807
+ if (this.maskInstance) {
31808
+ this.maskInstance.destroy();
31809
+ }
29933
31810
 
29934
- // Pass new format to util
29935
- this.util.updateFormat(this.format);
31811
+ // Pass new format to util
31812
+ this.util.updateFormat(this.format);
29936
31813
 
29937
- const maskOptions = this.util.getMaskOptions(this.type, this.format);
31814
+ const maskOptions = this.util.getMaskOptions(this.type, this.format);
29938
31815
 
29939
- if (this.inputElement && maskOptions.mask) {
31816
+ if (this.inputElement && maskOptions.mask) {
29940
31817
 
29941
- // Stash and clear any existing value before IMask init.
29942
- // IMask's constructor processes the current input value which requires
29943
- // selection state — clearing first avoids that scenario entirely.
29944
- // When the format changes (e.g. locale switch) and we have a valid ISO
29945
- // model value, compute the display string for the NEW format instead of
29946
- // re-using the old display string, which may be invalid in the new mask.
29947
- let existingValue = this.inputElement.value;
29948
- if (
29949
- this.util.isFullDateFormat(this.type, this.format) &&
29950
- this.value &&
29951
- dateFormatter.isValidDate(this.value) &&
29952
- this.valueObject instanceof Date &&
29953
- !Number.isNaN(this.valueObject.getTime()) &&
29954
- typeof maskOptions.format === 'function'
29955
- ) {
29956
- existingValue = maskOptions.format(this.valueObject);
29957
- }
29958
-
29959
- this.skipNextProgrammaticInputEvent = true;
29960
- this.inputElement.value = '';
31818
+ // Stash and clear any existing value before IMask init.
31819
+ // IMask's constructor processes the current input value which requires
31820
+ // selection state — clearing first avoids that scenario entirely.
31821
+ // When the format changes (e.g. locale switch) and we have a valid ISO
31822
+ // model value, compute the display string for the NEW format instead of
31823
+ // re-using the old display string, which may be invalid in the new mask.
31824
+ let existingValue = this.inputElement.value;
31825
+ if (
31826
+ this.util.isFullDateFormat(this.type, this.format) &&
31827
+ this.value &&
31828
+ dateFormatter.isValidDate(this.value) &&
31829
+ this.valueObject instanceof Date &&
31830
+ !Number.isNaN(this.valueObject.getTime()) &&
31831
+ typeof maskOptions.format === 'function'
31832
+ ) {
31833
+ existingValue = maskOptions.format(this.valueObject);
31834
+ }
29961
31835
 
29962
- this.maskInstance = IMask(this.inputElement, maskOptions);
31836
+ this.skipNextProgrammaticInputEvent = true;
31837
+ this.inputElement.value = '';
31838
+
31839
+ this.maskInstance = IMask(this.inputElement, maskOptions);
31840
+
31841
+ this.maskInstance.on('accept', () => {
31842
+ // Suppress propagation during configureAutoFormatting's own value-restoration
31843
+ // (line below) — the mask emits 'accept' on every value-set, including ours,
31844
+ // and we don't want to overwrite a value the parent just pushed.
31845
+ if (this._configuringMask) return;
31846
+ this.value = this.util.toModelValue(this.maskInstance.value, this.format);
31847
+ if (this.type === "date") {
31848
+ this._rawMaskValue = this.maskInstance.value;
31849
+ }
31850
+ });
29963
31851
 
29964
- this.maskInstance.on('accept', () => {
29965
- this.value = this.util.toModelValue(this.maskInstance.value, this.format);
29966
- if (this.type === "date") {
29967
- this._rawMaskValue = this.maskInstance.value;
29968
- }
29969
- });
31852
+ this.maskInstance.on('complete', () => {
31853
+ if (this._configuringMask) return;
31854
+ this.value = this.util.toModelValue(this.maskInstance.value, this.format);
31855
+ if (this.type === "date") {
31856
+ this._rawMaskValue = this.maskInstance.value;
31857
+ }
31858
+ });
29970
31859
 
29971
- this.maskInstance.on('complete', () => {
29972
- this.value = this.util.toModelValue(this.maskInstance.value, this.format);
29973
- if (this.type === "date") {
29974
- this._rawMaskValue = this.maskInstance.value;
31860
+ // Restore the stashed value through IMask so it's properly masked
31861
+ if (existingValue) {
31862
+ this.maskInstance.value = existingValue;
29975
31863
  }
29976
- });
29977
-
29978
- // Restore the stashed value through IMask so it's properly masked
29979
- if (existingValue) {
29980
- this.maskInstance.value = existingValue;
29981
31864
  }
31865
+ } finally {
31866
+ this._configuringMask = false;
29982
31867
  }
29983
31868
  }
29984
31869
 
@@ -30265,10 +32150,10 @@ class BaseInput extends AuroElement$1 {
30265
32150
  },
30266
32151
  {
30267
32152
  name: 'Diners club',
30268
- regex: /^(?<num>36|38)\d{0}/u,
32153
+ regex: /^(?<num>30[0-5]|36|38)\d{0}/u,
30269
32154
  formatLength: 16,
30270
32155
  errorMessage: CreditCardValidationMessage,
30271
- cardIcon: 'credit-card',
32156
+ cardIcon: 'cc-dinersclub',
30272
32157
  maskFormat: "0000 000000 0000"
30273
32158
  },
30274
32159
  {
@@ -30678,7 +32563,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
30678
32563
  }
30679
32564
  };
30680
32565
 
30681
- var formkitVersion = '202606031942';
32566
+ var formkitVersion = '202606181613';
30682
32567
 
30683
32568
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
30684
32569
  // See LICENSE in the project root for license information.
@@ -31016,10 +32901,6 @@ class AuroInput extends BaseInput {
31016
32901
  return i18n$1(this.lang, this.type);
31017
32902
  }
31018
32903
 
31019
- if (this.type === 'date') {
31020
- return i18n$1(this.lang, this.dateFormatMap[this.format] || 'dateMMDDYYYY');
31021
- }
31022
-
31023
32904
  return '';
31024
32905
  }
31025
32906
 
@@ -32023,26 +33904,62 @@ function applyKeyboardStrategy(component, strategy, options = {}) {
32023
33904
  // components/datepicker/docs/partials/keyboardBehavior.md
32024
33905
  //
32025
33906
  // Current behavior (transitional — full bib keyboard navigation is planned for a future iteration):
32026
- // - The bib opens and closes via pointer/touch interaction only.
32027
33907
  // - Escape closes the bib and prevents the event from reaching parent containers.
33908
+ // - Enter opens the bib when it is closed (trigger input only, not clear button).
33909
+ // - Space opens the bib when it is closed (trigger input only, not clear button).
32028
33910
  // - Tab uses the browser's default tabindex sequence across trigger controls.
32029
- // - Enter and Space do not open or close the bib.
32030
33911
  //
32031
33912
  // This file is an intentional placeholder for most keys. When datepicker bib keyboard navigation is
32032
33913
  // added, handlers should go here following the same strategy pattern used by
32033
33914
  // auro-select (selectKeyboardStrategy.js) and auro-combobox (comboboxKeyboardStrategy.js).
32034
33915
  const datepickerKeyboardStrategy = {
32035
- Escape(component, evt) {
32036
- if (!component.dropdown || !component.dropdown.isPopoverVisible) {
33916
+ Escape(component, evt, ctx) {
33917
+ if (!ctx.isExpanded) {
32037
33918
  return;
32038
33919
  }
32039
33920
 
32040
- // Prevent the Escape key from bubbling up and closing any parent dialogs / drawers / popups.
32041
- // Because stopPropagation prevents the document-level floatingUI keydown handler from
32042
- // seeing this event, we must also close the dropdown explicitly.
33921
+ // Stop propagation so parent containers (auro-dialog, auro-drawer)
33922
+ // don't also react to Escape.
32043
33923
  evt.stopPropagation();
33924
+ evt.preventDefault();
33925
+
33926
+ component.hideBib();
33927
+ },
33928
+
33929
+ Enter(component, evt, ctx) {
33930
+ if (ctx.isExpanded) {
33931
+ return;
33932
+ }
32044
33933
 
32045
- component.dropdown.hide();
33934
+ // Only open from the trigger input, not the clear button or other internal elements.
33935
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
33936
+ // to find the real origin. The clear button is rendered with class "clearBtn".
33937
+ const path = evt.composedPath();
33938
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
33939
+ return;
33940
+ }
33941
+
33942
+ evt.preventDefault();
33943
+
33944
+ component.dropdown.show();
33945
+ },
33946
+
33947
+ ' '(component, evt, ctx) {
33948
+ if (ctx.isExpanded) {
33949
+ return;
33950
+ }
33951
+
33952
+ // Only open from the trigger input, not the clear button or other internal elements.
33953
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
33954
+ // to find the real origin. The clear button is rendered with class "clearBtn".
33955
+ const path = evt.composedPath();
33956
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
33957
+ return;
33958
+ }
33959
+
33960
+ evt.preventDefault();
33961
+
33962
+ component.dropdown.show();
32046
33963
  },
32047
33964
  };
32048
33965
 
@@ -32066,8 +33983,8 @@ const datepickerKeyboardStrategy = {
32066
33983
  * @slot label - Defines the label content for the entire datepicker when `layout="snowflake"`.
32067
33984
  * @slot toLabel - Defines the label content for the second input when the `range` attribute is used.
32068
33985
  * @slot fromLabel - Defines the label content for the first input.
32069
- * @slot date_MM_DD_YYYY - Defines the content to display in the auro-calendar-cell for the specified date. The content text is colored using the success state token when the `highlight` attribute is applied to the slot.
32070
- * @slot popover_MM_DD_YYYY - Defines the content to display in the auro-calendar-cell popover for the specified date.
33986
+ * @slot date_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell for the specified date. The content text is colored using the success state token when the `highlight` attribute is applied to the slot.
33987
+ * @slot popover_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell popover for the specified date.
32071
33988
  * @csspart dropdown - Use for customizing the style of the dropdown.
32072
33989
  * @csspart trigger - Use for customizing the style of the datepicker trigger.
32073
33990
  * @csspart input - Use for customizing the style of the datepicker inputs.
@@ -32116,6 +34033,16 @@ class AuroDatePicker extends AuroElement {
32116
34033
  this.required = false;
32117
34034
  this.onDark = false;
32118
34035
  this.range = false;
34036
+ this.rangeLabelStart = 'range start';
34037
+ this.rangeLabelEnd = 'range end';
34038
+ this.rangeLabelBeforeRange = 'before range';
34039
+ this.rangeLabelInRange = 'in range';
34040
+ this.rangeLabelAfterRange = 'after range';
34041
+ this.blackoutDates = [];
34042
+ this.blackoutLabel = 'unavailable';
34043
+ this.navLabelPrevMonth = 'Previous month';
34044
+ this.navLabelNextMonth = 'Next month';
34045
+ this.calendarGridLabel = 'Calendar days of the month';
32119
34046
  this.stacked = false;
32120
34047
  this.noValidate = false;
32121
34048
  this.validity = undefined;
@@ -32125,6 +34052,7 @@ class AuroDatePicker extends AuroElement {
32125
34052
  this.calendarEndDate = undefined;
32126
34053
  this.calendarFocusDate = this.value;
32127
34054
  this.fullscreenBreakpoint = 'sm';
34055
+ this._validLocale = 'en-US';
32128
34056
  // floaterConfig
32129
34057
  this.placement = 'bottom-start';
32130
34058
  this.offset = 0;
@@ -32230,7 +34158,7 @@ class AuroDatePicker extends AuroElement {
32230
34158
 
32231
34159
  /**
32232
34160
  * Defines whether the component will be on lighter or darker backgrounds.
32233
- * @property {'default', 'inverse'}
34161
+ * @type {'default' | 'inverse'}
32234
34162
  * @default 'default'
32235
34163
  */
32236
34164
  appearance: {
@@ -32247,6 +34175,22 @@ class AuroDatePicker extends AuroElement {
32247
34175
  reflect: true
32248
34176
  },
32249
34177
 
34178
+ /**
34179
+ * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
34180
+ */
34181
+ blackoutDates: {
34182
+ type: Array,
34183
+ reflect: true
34184
+ },
34185
+
34186
+ /**
34187
+ * Label announced for blackout (disabled but in-range) date cells.
34188
+ */
34189
+ blackoutLabel: {
34190
+ type: String,
34191
+ reflect: true
34192
+ },
34193
+
32250
34194
  /**
32251
34195
  * The last date that may be displayed in the calendar.
32252
34196
  */
@@ -32255,6 +34199,14 @@ class AuroDatePicker extends AuroElement {
32255
34199
  reflect: true
32256
34200
  },
32257
34201
 
34202
+ /**
34203
+ * Accessible label for the calendar grid containing the days of the month.
34204
+ */
34205
+ calendarGridLabel: {
34206
+ type: String,
34207
+ reflect: true
34208
+ },
34209
+
32258
34210
  /**
32259
34211
  * The date that will first be visually rendered to the user in the calendar.
32260
34212
  */
@@ -32302,27 +34254,6 @@ class AuroDatePicker extends AuroElement {
32302
34254
  reflect: true
32303
34255
  },
32304
34256
 
32305
- hasFocus: {
32306
- type: Boolean,
32307
- reflect: false,
32308
- },
32309
-
32310
- /**
32311
- * @private
32312
- */
32313
- hasValue: {
32314
- type: Boolean,
32315
- reflect: false,
32316
- },
32317
-
32318
- /**
32319
- * @private
32320
- */
32321
- hasAllValues: {
32322
- type: Boolean,
32323
- reflect: false
32324
- },
32325
-
32326
34257
  /**
32327
34258
  * Specifies the date format. The default is `mm/dd/yyyy`.
32328
34259
  */
@@ -32352,6 +34283,27 @@ class AuroDatePicker extends AuroElement {
32352
34283
  reflect: true
32353
34284
  },
32354
34285
 
34286
+ /**
34287
+ * @private
34288
+ */
34289
+ hasAllValues: {
34290
+ type: Boolean,
34291
+ reflect: false
34292
+ },
34293
+
34294
+ hasFocus: {
34295
+ type: Boolean,
34296
+ reflect: false,
34297
+ },
34298
+
34299
+ /**
34300
+ * @private
34301
+ */
34302
+ hasValue: {
34303
+ type: Boolean,
34304
+ reflect: false,
34305
+ },
34306
+
32355
34307
  /** Exposes inputmode attribute for input. */
32356
34308
  inputmode: {
32357
34309
  type: String,
@@ -32394,6 +34346,13 @@ class AuroDatePicker extends AuroElement {
32394
34346
  reflect: true
32395
34347
  },
32396
34348
 
34349
+ /**
34350
+ * @private
34351
+ */
34352
+ monthFirst: {
34353
+ type: Boolean
34354
+ },
34355
+
32397
34356
  /**
32398
34357
  * Names of all 12 months to render in the calendar.
32399
34358
  * When omitted, month names will be automatically populated from the active `locale` (falling back to `en-US`).
@@ -32403,18 +34362,26 @@ class AuroDatePicker extends AuroElement {
32403
34362
  },
32404
34363
 
32405
34364
  /**
32406
- * If declared, the bib will NOT flip to an alternate position
32407
- * when there isn't enough space in the specified `placement`.
34365
+ * Accessible label for the next month navigation button.
32408
34366
  */
32409
- noFlip: {
32410
- type: Boolean,
34367
+ navLabelNextMonth: {
34368
+ type: String,
32411
34369
  reflect: true
32412
34370
  },
32413
34371
 
32414
34372
  /**
32415
- * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
34373
+ * Accessible label for the previous month navigation button.
32416
34374
  */
32417
- shift: {
34375
+ navLabelPrevMonth: {
34376
+ type: String,
34377
+ reflect: true
34378
+ },
34379
+
34380
+ /**
34381
+ * If declared, the bib will NOT flip to an alternate position
34382
+ * when there isn't enough space in the specified `placement`.
34383
+ */
34384
+ noFlip: {
32418
34385
  type: Boolean,
32419
34386
  reflect: true
32420
34387
  },
@@ -32480,6 +34447,46 @@ class AuroDatePicker extends AuroElement {
32480
34447
  reflect: true
32481
34448
  },
32482
34449
 
34450
+ /**
34451
+ * Label announced for cells after the range (or after start when no end is selected).
34452
+ */
34453
+ rangeLabelAfterRange: {
34454
+ type: String,
34455
+ reflect: true
34456
+ },
34457
+
34458
+ /**
34459
+ * Label announced for cells before the range start.
34460
+ */
34461
+ rangeLabelBeforeRange: {
34462
+ type: String,
34463
+ reflect: true
34464
+ },
34465
+
34466
+ /**
34467
+ * Label announced for the range end date cell.
34468
+ */
34469
+ rangeLabelEnd: {
34470
+ type: String,
34471
+ reflect: true
34472
+ },
34473
+
34474
+ /**
34475
+ * Label announced for cells within the selected range.
34476
+ */
34477
+ rangeLabelInRange: {
34478
+ type: String,
34479
+ reflect: true
34480
+ },
34481
+
34482
+ /**
34483
+ * Label announced for the range start date cell.
34484
+ */
34485
+ rangeLabelStart: {
34486
+ type: String,
34487
+ reflect: true
34488
+ },
34489
+
32483
34490
  /**
32484
34491
  * Dates that the user should have for reference as part of their decision making when selecting a date.
32485
34492
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
@@ -32506,6 +34513,7 @@ class AuroDatePicker extends AuroElement {
32506
34513
 
32507
34514
  /**
32508
34515
  * Custom help text message to display when validity = `customError`.
34516
+ * Also used as the validation message when a blackout date is typed into the input.
32509
34517
  */
32510
34518
  setCustomValidityCustomError: {
32511
34519
  type: String
@@ -32532,6 +34540,14 @@ class AuroDatePicker extends AuroElement {
32532
34540
  type: String
32533
34541
  },
32534
34542
 
34543
+ /**
34544
+ * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
34545
+ */
34546
+ shift: {
34547
+ type: Boolean,
34548
+ reflect: true
34549
+ },
34550
+
32535
34551
  /**
32536
34552
  * Set true to make datepicker stacked style.
32537
34553
  */
@@ -32540,6 +34556,16 @@ class AuroDatePicker extends AuroElement {
32540
34556
  reflect: true
32541
34557
  },
32542
34558
 
34559
+ /**
34560
+ * Indicates whether the datepicker is in a dirty state (has been interacted with).
34561
+ * @private
34562
+ */
34563
+ touched: {
34564
+ type: Boolean,
34565
+ reflect: true,
34566
+ attribute: false
34567
+ },
34568
+
32543
34569
  /**
32544
34570
  * Specifies the `validityState` this element is in.
32545
34571
  */
@@ -32560,16 +34586,6 @@ class AuroDatePicker extends AuroElement {
32560
34586
  */
32561
34587
  valueEnd: {
32562
34588
  type: String
32563
- },
32564
-
32565
- /**
32566
- * Indicates whether the datepicker is in a dirty state (has been interacted with).
32567
- * @private
32568
- */
32569
- touched: {
32570
- type: Boolean,
32571
- reflect: true,
32572
- attribute: false
32573
34589
  }
32574
34590
  };
32575
34591
  }
@@ -32680,7 +34696,7 @@ class AuroDatePicker extends AuroElement {
32680
34696
  /**
32681
34697
  * Common display value wrapper classes.
32682
34698
  * @private
32683
- * @return {Object} - An object containing the common classes for the display value wrapper.
34699
+ * @returns {Object} Class map for Lit's classMap directive.
32684
34700
  */
32685
34701
  get commonDisplayValueWrapperClasses() {
32686
34702
  return {
@@ -32751,7 +34767,7 @@ class AuroDatePicker extends AuroElement {
32751
34767
  * @returns {Number} Simplified number.
32752
34768
  */
32753
34769
  convertToWcValidTime(date) {
32754
- return new Date(date).getTime() / 1000;
34770
+ return date?.getTime() / 1000;
32755
34771
  }
32756
34772
 
32757
34773
  /**
@@ -32762,42 +34778,66 @@ class AuroDatePicker extends AuroElement {
32762
34778
  */
32763
34779
  // ─── Read-only *Object properties ─────────────────────────────────────────
32764
34780
 
32765
- /** @returns {Date|undefined} */
34781
+ /**
34782
+ * Read-only `Date` object derived from `value`. Returns `undefined` when `value` is empty or not a valid date.
34783
+ * @returns {Date|undefined}
34784
+ */
32766
34785
  get valueObject() {
32767
34786
  return this.value && dateFormatter$1.isValidDate(this.value) ? dateFormatter$1.stringToDateInstance(this.value) : undefined;
32768
34787
  }
32769
34788
 
32770
- /** @returns {Date|undefined} */
34789
+ /**
34790
+ * Read-only `Date` object derived from `valueEnd`. Returns `undefined` when `valueEnd` is empty or not a valid date.
34791
+ * @returns {Date|undefined}
34792
+ */
32771
34793
  get valueEndObject() {
32772
34794
  return this.valueEnd && dateFormatter$1.isValidDate(this.valueEnd) ? dateFormatter$1.stringToDateInstance(this.valueEnd) : undefined;
32773
34795
  }
32774
34796
 
32775
- /** @returns {Date|undefined} */
34797
+ /**
34798
+ * Read-only `Date` object derived from `minDate`. Returns `undefined` when `minDate` is empty or not a valid date.
34799
+ * @returns {Date|undefined}
34800
+ */
32776
34801
  get minDateObject() {
32777
34802
  return this.minDate && dateFormatter$1.isValidDate(this.minDate) ? dateFormatter$1.stringToDateInstance(this.minDate) : undefined;
32778
34803
  }
32779
34804
 
32780
- /** @returns {Date|undefined} */
34805
+ /**
34806
+ * Read-only `Date` object derived from `maxDate`. Returns `undefined` when `maxDate` is empty or not a valid date.
34807
+ * @returns {Date|undefined}
34808
+ */
32781
34809
  get maxDateObject() {
32782
34810
  return this.maxDate && dateFormatter$1.isValidDate(this.maxDate) ? dateFormatter$1.stringToDateInstance(this.maxDate) : undefined;
32783
34811
  }
32784
34812
 
32785
- /** @returns {Date|undefined} */
34813
+ /**
34814
+ * Read-only `Date` object derived from `calendarStartDate`. Returns `undefined` when `calendarStartDate` is empty or not a valid date.
34815
+ * @returns {Date|undefined}
34816
+ */
32786
34817
  get calendarStartDateObject() {
32787
34818
  return this.calendarStartDate && dateFormatter$1.isValidDate(this.calendarStartDate) ? dateFormatter$1.stringToDateInstance(this.calendarStartDate) : undefined;
32788
34819
  }
32789
34820
 
32790
- /** @returns {Date|undefined} */
34821
+ /**
34822
+ * Read-only `Date` object derived from `calendarEndDate`. Returns `undefined` when `calendarEndDate` is empty or not a valid date.
34823
+ * @returns {Date|undefined}
34824
+ */
32791
34825
  get calendarEndDateObject() {
32792
34826
  return this.calendarEndDate && dateFormatter$1.isValidDate(this.calendarEndDate) ? dateFormatter$1.stringToDateInstance(this.calendarEndDate) : undefined;
32793
34827
  }
32794
34828
 
32795
- /** @returns {Date|undefined} */
34829
+ /**
34830
+ * Read-only `Date` object derived from `centralDate`. Returns `undefined` when `centralDate` is empty or not a valid date.
34831
+ * @returns {Date|undefined}
34832
+ */
32796
34833
  get centralDateObject() {
32797
34834
  return this.centralDate && dateFormatter$1.isValidDate(this.centralDate) ? dateFormatter$1.stringToDateInstance(this.centralDate) : undefined;
32798
34835
  }
32799
34836
 
32800
- /** @returns {Date|undefined} */
34837
+ /**
34838
+ * Read-only `Date` object derived from `calendarFocusDate`. Returns `undefined` when `calendarFocusDate` is empty or not a valid date.
34839
+ * @returns {Date|undefined}
34840
+ */
32801
34841
  get calendarFocusDateObject() {
32802
34842
  return this.calendarFocusDate && dateFormatter$1.isValidDate(this.calendarFocusDate) ? dateFormatter$1.stringToDateInstance(this.calendarFocusDate) : undefined;
32803
34843
  }
@@ -32871,6 +34911,74 @@ class AuroDatePicker extends AuroElement {
32871
34911
  }));
32872
34912
  }
32873
34913
 
34914
+ /**
34915
+ * Attempts to focus the active calendar cell using a rAF retry loop.
34916
+ * Shared by both fullscreen and desktop open paths.
34917
+ * @private
34918
+ * @returns {void}
34919
+ */
34920
+ focusActiveCellWhenReady() {
34921
+ const MAX_ATTEMPTS = 20;
34922
+ let attempts = 0;
34923
+
34924
+ const tryFocus = () => {
34925
+ attempts += 1;
34926
+ const allCells = this.calendar.getAllFocusableCells();
34927
+
34928
+ if (!allCells.length && attempts < MAX_ATTEMPTS) {
34929
+ requestAnimationFrame(tryFocus);
34930
+ return;
34931
+ }
34932
+
34933
+ // Compute and mark the active cell
34934
+ if (this.calendar.activeCellDate === null || this.calendar.activeCellDate === undefined) {
34935
+ this.calendar.activeCellDate = this.calendar.computeActiveDate();
34936
+ }
34937
+ if (this.calendar.activeCellDate !== undefined) {
34938
+ this.calendar.setActiveCell(this.calendar.activeCellDate);
34939
+ }
34940
+
34941
+ // If no cell matched (e.g. centralDate month differs from the rendered
34942
+ // range on mobile), fall back to the first rendered enabled cell.
34943
+ let activeCell = allCells.find((cell) => cell.active);
34944
+ if (!activeCell && allCells.length) {
34945
+ const [fallback] = allCells;
34946
+ if (fallback.day) {
34947
+ this.calendar.activeCellDate = fallback.day.date;
34948
+ this.calendar.setActiveCell(this.calendar.activeCellDate);
34949
+ activeCell = allCells.find((cell) => cell.active);
34950
+ }
34951
+ }
34952
+
34953
+ // Focus the calendar grid wrapper (aria-activedescendant handles
34954
+ // the SR announcement for the active cell).
34955
+ if (activeCell) {
34956
+ this.calendar.focusActiveCell();
34957
+
34958
+ // Announce the initial active cell via the live region.
34959
+ // Delay the announcement so it arrives after VoiceOver finishes
34960
+ // speaking the focus-change announcement for the grid wrapper.
34961
+ // Without this delay, VoiceOver drops the live region update
34962
+ // because it's already mid-announcement from the focus move.
34963
+ const announcement = this.calendar.buildFocusAnnouncement(activeCell.day.date);
34964
+ setTimeout(() => {
34965
+ this.calendar.announceSelection(announcement);
34966
+ }, 500);
34967
+
34968
+ // On mobile fullscreen, scroll the month list so the active cell's
34969
+ // month is visible. Without this, the list stays scrolled to the
34970
+ // calendarStartDate month which may be far from the active cell.
34971
+ if (this.dropdown.isBibFullscreen) {
34972
+ this.calendar.scrollToActiveCell();
34973
+ }
34974
+ } else if (attempts < MAX_ATTEMPTS) {
34975
+ requestAnimationFrame(tryFocus);
34976
+ }
34977
+ };
34978
+
34979
+ requestAnimationFrame(tryFocus);
34980
+ }
34981
+
32874
34982
  /**
32875
34983
  * Binds all behavior needed to the dropdown after rendering.
32876
34984
  * @private
@@ -32879,6 +34987,12 @@ class AuroDatePicker extends AuroElement {
32879
34987
  configureDropdown() {
32880
34988
  this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
32881
34989
 
34990
+ // The datepicker manages its own open/close lifecycle (Space/Escape/date-select/done).
34991
+ // Prevent the floater's document-level focusin handler from closing the bib
34992
+ // when focus moves from the trigger into the calendar cells (which live inside
34993
+ // a top-layer popover where :focus-within on the dropdown host returns false).
34994
+ this.dropdown.noHideOnThisFocusLoss = true;
34995
+
32882
34996
  // Pass label text to the dropdown bib for accessible dialog naming.
32883
34997
  // Without this, the fullscreen <dialog> has no accessible name and
32884
34998
  // screen readers announce it as just "dialog" with no context.
@@ -32896,6 +35010,23 @@ class AuroDatePicker extends AuroElement {
32896
35010
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
32897
35011
  this.notifyDatepickerToggled();
32898
35012
 
35013
+ if (this.dropdown.isPopoverVisible) {
35014
+ // Reset calendar focus state so it recomputes from the current selection.
35015
+ // Without this, reopening after navigating to a month without a selected
35016
+ // date leaves activeCellDate pointing at a cell in a different month than
35017
+ // what centralDate renders, causing all cells to have tabindex="-1".
35018
+ this.calendar.activeCellDate = null;
35019
+
35020
+ // Show the month containing the selected date (or today) instead of
35021
+ // whichever month the user last navigated to.
35022
+ // Respect consumer-provided centralDate/calendarStartDate if no value is set.
35023
+ if (this.valueObject) {
35024
+ this.centralDate = this.value;
35025
+ } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
35026
+ this.centralDate = new Date();
35027
+ }
35028
+ }
35029
+
32899
35030
  // This forces the calendar to render when the dropdown is opened.
32900
35031
  // It is not rendered by default
32901
35032
  this.calendar.visible = this.dropdown.isPopoverVisible;
@@ -32928,12 +35059,23 @@ class AuroDatePicker extends AuroElement {
32928
35059
  bibEl.open(true);
32929
35060
 
32930
35061
  doubleRaf(() => {
32931
- this.calendar.focusCloseButton();
35062
+ this.focusActiveCellWhenReady();
32932
35063
  });
32933
35064
  }
32934
35065
  });
32935
35066
 
32936
35067
  guardTouchPassthrough(this.shadowRoot.querySelector('.calendarWrapper'));
35068
+ } else {
35069
+ // Desktop (non-fullscreen) modal: make the trigger inert so users
35070
+ // cannot interact with the input while the modal bib is open.
35071
+ if (this.dropdown.desktopModal) {
35072
+ this.dropdown.trigger.inert = true;
35073
+ }
35074
+
35075
+ // Desktop (non-fullscreen): focus the active calendar cell.
35076
+ this.dropdown.updateComplete.then(() => {
35077
+ this.focusActiveCellWhenReady();
35078
+ });
32937
35079
  }
32938
35080
  } else {
32939
35081
  // Always clear the inert flag. Only restore focus to the input when the datepicker
@@ -32978,14 +35120,35 @@ class AuroDatePicker extends AuroElement {
32978
35120
  if (bibEl && this.dropdown.isPopoverVisible) {
32979
35121
  bibEl.close();
32980
35122
  bibEl.open(true);
35123
+ }
35124
+
35125
+ // Re-render the calendar with the new fullscreen layout,
35126
+ // then restore focus after the re-render completes.
35127
+ this.calendar.isFullscreen = true;
35128
+ this.calendar.updateComplete.then(() => {
32981
35129
  doubleRaf(() => {
32982
- this.calendar.focusCloseButton();
35130
+ this.focusActiveCellWhenReady();
32983
35131
  });
32984
- }
35132
+ });
32985
35133
  });
32986
35134
  } else if (!this.dropdown.isBibFullscreen) {
32987
- // Switching from fullscreen to floating — restore trigger accessibility
32988
- this.dropdown.trigger.inert = false;
35135
+ // Switching from fullscreen to floating — only restore trigger accessibility
35136
+ // when the bib is closed or the desktop layout is not a modal. A desktopModal
35137
+ // dropdown keeps the trigger inert while open, matching the desktop-open path.
35138
+ if (!this.dropdown.isPopoverVisible || !this.dropdown.desktopModal) {
35139
+ this.dropdown.trigger.inert = false;
35140
+ }
35141
+
35142
+ // Re-render the calendar with the desktop layout,
35143
+ // then restore focus after the re-render completes.
35144
+ this.dropdown.updateComplete.then(() => {
35145
+ this.calendar.isFullscreen = false;
35146
+ this.calendar.updateComplete.then(() => {
35147
+ doubleRaf(() => {
35148
+ this.focusActiveCellWhenReady();
35149
+ });
35150
+ });
35151
+ });
32989
35152
  }
32990
35153
  });
32991
35154
  }
@@ -33173,14 +35336,8 @@ class AuroDatePicker extends AuroElement {
33173
35336
 
33174
35337
  if (onEndValue) {
33175
35338
  this.valueEnd = newDate;
33176
- if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
33177
- this.focus('startDate');
33178
- }
33179
35339
  } else {
33180
35340
  this.value = newDate;
33181
- if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
33182
- this.focus('endDate');
33183
- }
33184
35341
  }
33185
35342
  }
33186
35343
  }
@@ -33220,6 +35377,23 @@ class AuroDatePicker extends AuroElement {
33220
35377
  this.resetInputs();
33221
35378
  }
33222
35379
 
35380
+ /**
35381
+ * Checks whether a formatted date string matches a blackout date.
35382
+ * @private
35383
+ * @param {string} dateStr - A date string in the component's configured format.
35384
+ * @returns {boolean} True if the date is in the blackoutDates list.
35385
+ */
35386
+ isBlackoutDate(dateStr) {
35387
+ if (!Array.isArray(this.blackoutDates) ||
35388
+ this.blackoutDates.length === 0 ||
35389
+ !dateStr ||
35390
+ !dateFormatter$1.isValidDate(dateStr)) {
35391
+ return false;
35392
+ }
35393
+
35394
+ return this.blackoutDates.includes(dateStr);
35395
+ }
35396
+
33223
35397
  /**
33224
35398
  * Validates value.
33225
35399
  * @param {boolean} [force=false] - Whether to force validation.
@@ -33231,6 +35405,23 @@ class AuroDatePicker extends AuroElement {
33231
35405
  }
33232
35406
 
33233
35407
  this.validation.validate(this, force);
35408
+
35409
+ // After standard validation, check blackout dates for typed input
35410
+ if (this.validity !== 'customError' &&
35411
+ (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd)))) { // eslint-disable-line no-extra-parens
35412
+ const msg = this.setCustomValidityCustomError || 'Selected date is unavailable';
35413
+ this.validity = 'customError';
35414
+ this.errorMessage = msg;
35415
+
35416
+ this.dispatchEvent(new CustomEvent('auroFormElement-validated', {
35417
+ bubbles: true,
35418
+ composed: true,
35419
+ detail: {
35420
+ validity: this.validity,
35421
+ message: this.errorMessage
35422
+ }
35423
+ }));
35424
+ }
33234
35425
  }
33235
35426
 
33236
35427
  /**
@@ -33249,20 +35440,43 @@ class AuroDatePicker extends AuroElement {
33249
35440
  this.hasAllValues = (this.value && this.value.length > 0) && (this.valueEnd && this.valueEnd.length > 0); // eslint-disable-line no-extra-parens
33250
35441
  }
33251
35442
 
35443
+ /**
35444
+ * Returns `true` when the datepicker has an active validation error.
35445
+ * @returns {boolean}
35446
+ */
33252
35447
  get hasError() {
33253
35448
  return this.validity !== undefined && this.validity !== 'valid';
33254
35449
  }
33255
35450
 
33256
- updated(changedProperties) {
35451
+ /**
35452
+ * Lifecycle method to check if the locale is valid.
35453
+ * @ignore
35454
+ * @param {Map} changedProperties - The map of properties that have changed since the last update.
35455
+ * @returns {void}
35456
+ */
35457
+ willUpdate(changedProperties) {
33257
35458
  if (changedProperties.has('locale')) {
33258
- if (!changedProperties.has('format')) {
33259
- const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
33260
- if (!this.format || this.format.toLowerCase() === previousLocaleFormat) {
33261
- this.format = getDateFormatFromLocale$1(this.locale);
33262
- }
35459
+ try {
35460
+ const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
35461
+ this._validLocale = supported.length > 0 ? this.locale : 'en-US';
35462
+ } catch {
35463
+ console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
35464
+ this._validLocale = 'en-US';
33263
35465
  }
35466
+
35467
+ const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
35468
+ if (!changedProperties.has('format') && (!this.format || this.format.toLowerCase() === previousLocaleFormat)) {
35469
+ this.format = getDateFormatFromLocale$1(this._validLocale);
35470
+ }
35471
+ }
35472
+
35473
+ if (changedProperties.has('referenceDates') && this.calendar) {
35474
+ this.calendar.requestUpdate();
35475
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
33264
35476
  }
35477
+ }
33265
35478
 
35479
+ updated(changedProperties) {
33266
35480
  if (changedProperties.has('disabled')) {
33267
35481
  if (this.disabled) {
33268
35482
  this.previousTabIndex = this.getAttribute('tabindex');
@@ -33289,17 +35503,18 @@ class AuroDatePicker extends AuroElement {
33289
35503
  if (changedProperties.has('value')) {
33290
35504
 
33291
35505
  // Change the calendar focus to the first valid date value only the first time the value is set
33292
- if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value)) {
33293
- if (!this.dropdown.isPopoverVisible) {
33294
- this.calendarFocusDate = this.value;
35506
+ if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value) && !this.dropdown.isPopoverVisible) {
35507
+ this.calendarFocusDate = this.value;
33295
35508
 
33296
- // Let the calendar know to scroll to the focus date when it is next rendered on mobile
33297
- this.forceScrollOnNextMobileCalendarRender = true;
33298
- }
35509
+ // Let the calendar know to scroll to the focus date when it is next rendered on mobile
35510
+ this.forceScrollOnNextMobileCalendarRender = true;
33299
35511
  }
33300
35512
 
33301
35513
  if (this.cellClickActive) {
33302
35514
  this.cellClickActive = false;
35515
+ this.wasCellClick = true;
35516
+ } else {
35517
+ this.wasCellClick = false;
33303
35518
  }
33304
35519
 
33305
35520
  if (this.value && dateFormatter$1.isValidDate(this.value)) {
@@ -33317,13 +35532,48 @@ class AuroDatePicker extends AuroElement {
33317
35532
 
33318
35533
  // update the inputs — auro-input accepts ISO directly
33319
35534
  if (this.inputList[0].value !== this.value) {
33320
- this.inputList[0].value = this.value || '';
35535
+ if (this.value) {
35536
+ this.inputList[0].value = this.value;
35537
+ } else {
35538
+ this.inputList[0].value = '';
35539
+ }
35540
+ }
35541
+
35542
+ if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
35543
+ // Skip centralDate update when user clicked a cell in range mode
35544
+ // to prevent the displayed months from shifting
35545
+ this.centralDate = this.value;
35546
+ //TODO: TEST THIS CHANGE
35547
+ // this.calendarRenderUtil.updateCentralDate(this, this.value);
33321
35548
  }
33322
35549
 
33323
35550
  this.setHasValue();
33324
35551
  }
33325
35552
 
35553
+ if (changedProperties.has('blackoutDates')) {
35554
+ // Force calendar cells to re-render with updated blackout state.
35555
+ // requestUpdate on the calendar alone is insufficient because cells
35556
+ // don't receive blackoutDates as a bound property. Dispatching the
35557
+ // slot content event triggers handleSlotContent → requestUpdate on each cell.
35558
+ if (this.calendar) {
35559
+ this.calendar.requestUpdate();
35560
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
35561
+ }
35562
+
35563
+ // Re-run validation so that a previously valid value that now falls on
35564
+ // a blackout date is flagged, and vice versa.
35565
+ if (this.value || this.valueEnd) {
35566
+ this.validate();
35567
+ }
35568
+ }
35569
+
33326
35570
  if (changedProperties.has('valueEnd') && this.inputList[1]) {
35571
+ if (this.cellClickActive) {
35572
+ this.cellClickActive = false;
35573
+ this.wasCellClick = true;
35574
+ } else {
35575
+ this.wasCellClick = false;
35576
+ }
33327
35577
 
33328
35578
  // update the calendar
33329
35579
  if (this.valueEndObject) {
@@ -33341,7 +35591,19 @@ class AuroDatePicker extends AuroElement {
33341
35591
 
33342
35592
  // update the inputs — auro-input accepts ISO directly
33343
35593
  if (this.inputList[1].value !== this.valueEnd) {
33344
- this.inputList[1].value = this.valueEnd || '';
35594
+ if (this.valueEnd) {
35595
+ this.inputList[1].value = this.valueEnd;
35596
+ } else {
35597
+ this.inputList[1].value = '';
35598
+ }
35599
+ }
35600
+
35601
+ if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
35602
+ // Skip centralDate update when user clicked a cell in range mode
35603
+ // to prevent the displayed months from shifting
35604
+ this.centralDate = this.valueEnd;
35605
+ // TODO: TEST THIS CHANGE
35606
+ // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
33345
35607
  }
33346
35608
 
33347
35609
  this.validate();
@@ -33384,16 +35646,14 @@ class AuroDatePicker extends AuroElement {
33384
35646
  this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
33385
35647
  }
33386
35648
 
33387
- if (!changedProperties.has('value') && this.valueObject) {
33388
- if (this.minDateObject > this.valueObject) {
33389
- this.value = undefined;
33390
-
33391
- if (this.range && this.valueEnd) {
33392
- this.valueEnd = undefined;
33393
- }
35649
+ if (!changedProperties.has('value') && this.valueObject && this.minDateObject > this.valueObject) {
35650
+ this.value = undefined;
33394
35651
 
33395
- this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
35652
+ if (this.range && this.valueEnd) {
35653
+ this.valueEnd = undefined;
33396
35654
  }
35655
+
35656
+ this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
33397
35657
  }
33398
35658
 
33399
35659
  // When there is no focusDate and no value, set the focusDate to the minDate
@@ -33424,16 +35684,14 @@ class AuroDatePicker extends AuroElement {
33424
35684
  }
33425
35685
  }
33426
35686
 
33427
- if (this.maxDate && !changedProperties.has('value') && this.valueObject) {
33428
- if (this.maxDateObject < this.valueObject) {
33429
- this.value = undefined;
33430
-
33431
- if (this.range && this.valueEnd) {
33432
- this.valueEnd = undefined;
33433
- }
35687
+ if (this.maxDate && !changedProperties.has('value') && this.valueObject && this.maxDateObject < this.valueObject) {
35688
+ this.value = undefined;
33434
35689
 
33435
- this.calendarRenderUtil.updateCentralDate(this, this.maxDateObject);
35690
+ if (this.range && this.valueEnd) {
35691
+ this.valueEnd = undefined;
33436
35692
  }
35693
+
35694
+ this.calendarRenderUtil.updateCentralDate(this, this.maxDateObject);
33437
35695
  }
33438
35696
 
33439
35697
  this.calendar.requestUpdate();
@@ -33491,6 +35749,7 @@ class AuroDatePicker extends AuroElement {
33491
35749
  }
33492
35750
 
33493
35751
  firstUpdated() {
35752
+
33494
35753
  // Add the tag name as an attribute if it is different than the component name
33495
35754
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
33496
35755
 
@@ -33506,14 +35765,6 @@ class AuroDatePicker extends AuroElement {
33506
35765
  super.connectedCallback();
33507
35766
 
33508
35767
  this.locale = this.domHandler.getLocale(this);
33509
-
33510
- // Derive format eagerly so the first render has a valid format.
33511
- // updated() handles locale changes after the initial render, but runs
33512
- // after render(), so without this a preset value would briefly display
33513
- // as a raw ISO string in the fullscreen bib.
33514
- if (!this.format) {
33515
- this.format = getDateFormatFromLocale$1(this.locale);
33516
- }
33517
35768
  }
33518
35769
 
33519
35770
  // layout render methods
@@ -33563,7 +35814,7 @@ class AuroDatePicker extends AuroElement {
33563
35814
  <div class="${e$4(this.commonDisplayValueWrapperClasses)}">
33564
35815
  <slot name="displayValue" @slotchange=${this.checkDisplayValueSlotChange}>
33565
35816
  <span>
33566
- ${this.formatShortDate(this.value)}${this.range ? u$a`–${this.formatShortDate(this.valueEnd)}` : undefined}
35817
+ ${this.formatShortDate(this.valueObject)}${this.range ? u$a`–${this.formatShortDate(this.valueEndObject)}` : undefined}
33567
35818
  </span>
33568
35819
  </slot>
33569
35820
  </div>
@@ -33637,7 +35888,7 @@ class AuroDatePicker extends AuroElement {
33637
35888
  * Simple formatter that ONLY WORKS FOR US DATES.
33638
35889
  * Returns formatted date like Apr 21 or Dec 25.
33639
35890
  * @private
33640
- * @param {string} date - Date format should be in a format Date constructor accepts, like '2023-04-21' or '2023/04/21'.
35891
+ * @param {Date} date - Date format should be in a format Date constructor accepts, like '2023-04-21' or '2023/04/21'.
33641
35892
  * @returns {string}
33642
35893
  */
33643
35894
  formatShortDate(date) {
@@ -33647,16 +35898,16 @@ class AuroDatePicker extends AuroElement {
33647
35898
  day: '2-digit'
33648
35899
  };
33649
35900
 
33650
- return new Date(date).toLocaleDateString('en-US', options).replace(',', '');
35901
+ return date?.toLocaleDateString(this.locale, options).replace(',', '');
33651
35902
  }
33652
35903
 
33653
35904
  /**
33654
35905
  * Format and render the provided date value.
33655
35906
  * @private
33656
- * @param {string} dateValue - The date value to format and render.
35907
+ * @param {Date} date - The date value to format and render.
33657
35908
  * @returns {import('lit').TemplateResult}
33658
35909
  */
33659
- renderDisplayTextDate(dateValue) {
35910
+ renderDisplayTextDate(date) {
33660
35911
  const displayTextClasses = {
33661
35912
  'displayValueText': true,
33662
35913
  'body-lg': true
@@ -33665,8 +35916,8 @@ class AuroDatePicker extends AuroElement {
33665
35916
  return u$a`
33666
35917
  <div>
33667
35918
  <div class="${e$4(displayTextClasses)}">
33668
- ${dateValue && dateFormatter$1.isValidDate(dateValue)
33669
- ? this.formatShortDate(dateValue)
35919
+ ${date
35920
+ ? this.formatShortDate(date)
33670
35921
  : undefined
33671
35922
  }
33672
35923
  </div>
@@ -33693,7 +35944,7 @@ class AuroDatePicker extends AuroElement {
33693
35944
  ?required="${this.required}"
33694
35945
  ?hideLabelVisually="${this.layout !== 'classic'}"
33695
35946
  format="${this.format}"
33696
- locale="${this.locale}"
35947
+ locale="${this._validLocale}"
33697
35948
  .max="${this.maxDate}"
33698
35949
  .min="${this.minDate}"
33699
35950
  .placeholder="${this.placeholder}"
@@ -33715,7 +35966,7 @@ class AuroDatePicker extends AuroElement {
33715
35966
  ${this.layout !== "classic"
33716
35967
  ? u$a`
33717
35968
  <span slot="displayValue">
33718
- ${this.renderDisplayTextDate(this.value)}
35969
+ ${this.renderDisplayTextDate(this.valueObject)}
33719
35970
  </span>
33720
35971
  `
33721
35972
  : undefined
@@ -33738,7 +35989,7 @@ class AuroDatePicker extends AuroElement {
33738
35989
  ?required="${this.required}"
33739
35990
  ?hideLabelVisually="${this.layout !== 'classic'}"
33740
35991
  .format="${this.format}"
33741
- locale="${this.locale}"
35992
+ locale="${this._validLocale}"
33742
35993
  .max="${this.maxDate}"
33743
35994
  .min="${this.minDate}"
33744
35995
  .placeholder="${this.placeholderEndDate || this.placeholder}"
@@ -33759,7 +36010,7 @@ class AuroDatePicker extends AuroElement {
33759
36010
  ${this.layout !== "classic"
33760
36011
  ? u$a`
33761
36012
  <span slot="displayValue">
33762
- ${this.renderDisplayTextDate(this.valueEnd)}
36013
+ ${this.renderDisplayTextDate(this.valueEndObject)}
33763
36014
  </span>
33764
36015
  `
33765
36016
  : undefined
@@ -33781,7 +36032,7 @@ class AuroDatePicker extends AuroElement {
33781
36032
  /**
33782
36033
  * Handles click on the clear button.
33783
36034
  * @private
33784
- * @param {MouseEvent} event - The click event object.
36035
+ * @param {MouseEvent} event - The mouse event from the clear button click.
33785
36036
  * @returns {void}
33786
36037
  */
33787
36038
  handleClearClick(event) {
@@ -33905,7 +36156,7 @@ class AuroDatePicker extends AuroElement {
33905
36156
  .maxDate="${this.maxDate}"
33906
36157
  .minDate="${this.minDate}"
33907
36158
  .monthNames="${this.monthNames}"
33908
- .localeCode="${this.locale}"
36159
+ .localeCode="${this._validLocale}"
33909
36160
  .mobileBreakpoint="${this.mobileBreakpoint}"
33910
36161
  part="calendar"
33911
36162
  >
@@ -33914,8 +36165,8 @@ class AuroDatePicker extends AuroElement {
33914
36165
  <slot slot="bib.fullscreen.dateLabel" name="bib.fullscreen.dateLabel" @slotchange="${this.handleSlotToSlot}"></slot>
33915
36166
  <slot slot="bib.fullscreen.toLabel" name="bib.fullscreen.toLabel" @slotchange="${this.handleSlotToSlot}"></slot>
33916
36167
  <slot slot="bib.fullscreen.fromLabel" name="bib.fullscreen.fromLabel" @slotchange="${this.handleSlotToSlot}"></slot>
33917
- <span slot="bib.fullscreen.fromStr">${AuroInputUtil.toFormattedValue(this.value, this.valueObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>
33918
- ${this.range ? u$a`<span slot="bib.fullscreen.toStr">${AuroInputUtil.toFormattedValue(this.valueEnd, this.valueEndObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>` : undefined}
36168
+ <span slot="bib.fullscreen.fromStr">${AuroInputUtil.toFormattedValue(this.valueObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>
36169
+ ${this.range ? u$a`<span slot="bib.fullscreen.toStr">${AuroInputUtil.toFormattedValue(this.valueEndObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>` : undefined}
33919
36170
  </auro-formkit-calendar>
33920
36171
  `;
33921
36172
  }
@@ -33929,7 +36180,7 @@ class AuroDatePicker extends AuroElement {
33929
36180
  // Base HTML render() handles dropdown and calendar bib
33930
36181
  return u$a`
33931
36182
  <!-- Hidden slot for clear button aria-label -->
33932
- <slot name="ariaLabel.input.clear" hidden @slotchange=${this.requestUpdate}></slot>
36183
+ <slot name="ariaLabel.input.clear" hidden @slotchange=${() => this.requestUpdate()}></slot>
33933
36184
 
33934
36185
  <${this.dropdownTag}
33935
36186
  appearance="${this.onDark ? 'inverse' : this.appearance}"
@@ -33946,6 +36197,7 @@ class AuroDatePicker extends AuroElement {
33946
36197
  .shape="${this.shape}"
33947
36198
  .size="${this.size}"
33948
36199
  class="${e$4(dropdownElementClassMap)}"
36200
+ desktopModal
33949
36201
  disableEventShow
33950
36202
  for="dropdownMenu"
33951
36203
  part="dropdown"
@@ -33965,10 +36217,97 @@ class AuroDatePicker extends AuroElement {
33965
36217
  }
33966
36218
  }
33967
36219
 
36220
+ function blackoutLabelExample() {
36221
+ const blackoutDP = document.querySelector('#blackoutLabelExample');
36222
+
36223
+ function formatISO(date) {
36224
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
36225
+ const dd = String(date.getDate()).padStart(2, '0');
36226
+ return `${date.getFullYear()}-${mm}-${dd}`;
36227
+ }
36228
+
36229
+ function setup() {
36230
+ const today = new Date();
36231
+ today.setHours(0, 0, 0, 0);
36232
+
36233
+ // Calendar starts 6 months in the future
36234
+ const startDate = new Date(today);
36235
+ startDate.setMonth(today.getMonth() + 6);
36236
+
36237
+ // Calendar ends 12 months in the future
36238
+ const endDate = new Date(today);
36239
+ endDate.setMonth(today.getMonth() + 12);
36240
+
36241
+ // Min date is 2 months after the start date
36242
+ const minDate = new Date(startDate);
36243
+ minDate.setMonth(startDate.getMonth() + 2);
36244
+
36245
+ // Max date is 75 days after min date
36246
+ const maxDate = new Date(minDate);
36247
+ maxDate.setDate(minDate.getDate() + 75);
36248
+
36249
+ blackoutDP.setAttribute('calendarStartDate', formatISO(startDate));
36250
+ blackoutDP.setAttribute('calendarEndDate', formatISO(endDate));
36251
+ blackoutDP.setAttribute('minDate', formatISO(minDate));
36252
+ blackoutDP.setAttribute('maxDate', formatISO(maxDate));
36253
+
36254
+ // Generate all dates within the min/max range
36255
+ const blackoutDates = [];
36256
+
36257
+ for (let d = new Date(minDate); d <= maxDate; d.setDate(d.getDate() + 1)) {
36258
+ const current = new Date(d);
36259
+ const mm = String(current.getMonth() + 1).padStart(2, '0');
36260
+ const dd = String(current.getDate()).padStart(2, '0');
36261
+ const yyyy = current.getFullYear();
36262
+ const slotDateStr = `${yyyy}_${mm}_${dd}`;
36263
+
36264
+ // Mark every 3rd date as blackout (deterministic pattern)
36265
+ const dayOfMonth = current.getDate();
36266
+ const isSoldOut = dayOfMonth % 3 === 0;
36267
+
36268
+ if (isSoldOut) {
36269
+ blackoutDates.push(`${yyyy}-${mm}-${dd}`);
36270
+
36271
+ const popover = document.createElement('span');
36272
+ popover.setAttribute('slot', `popover_${slotDateStr}`);
36273
+ popover.textContent = 'There are no tickets available for this date.';
36274
+ blackoutDP.appendChild(popover);
36275
+ } else {
36276
+ // Use a fixed price based on day of month for deterministic output
36277
+ const price = 150 + (dayOfMonth * 17) % 400;
36278
+
36279
+ const dateSlot = document.createElement('span');
36280
+ dateSlot.setAttribute('slot', `date_${slotDateStr}`);
36281
+ dateSlot.textContent = `$${price}`;
36282
+ blackoutDP.appendChild(dateSlot);
36283
+ }
36284
+ }
36285
+
36286
+ blackoutDP.blackoutDates = blackoutDates;
36287
+ }
36288
+
36289
+ setup();
36290
+ }
36291
+
33968
36292
  AuroDatePicker.register(); // registering to auro-datepicker
33969
36293
  AuroDatePicker.register('custom-datepicker');
33970
36294
 
33971
36295
  function initExamples(initCount) {
36296
+ initCount = initCount || 0;
36297
+
36298
+ try {
36299
+ // Only run when the demo element exists on the current page
36300
+ if (document.querySelector('#blackoutLabelExample')) {
36301
+ blackoutLabelExample();
36302
+ }
36303
+ } catch {
36304
+ if (initCount <= 20) {
36305
+ // setTimeout handles issue where content is sometimes loaded after the functions get called
36306
+ setTimeout(() => {
36307
+ initExamples(initCount + 1);
36308
+ }, 100);
36309
+ }
36310
+ }
33972
36311
  }
33973
36312
 
33974
36313
  export { initExamples };