@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
@@ -1,6 +1,6 @@
1
1
  import { unsafeStatic, literal, html as html$1 } from 'lit/static-html.js';
2
2
  import { classMap } from 'lit/directives/class-map.js';
3
- import { html, css, LitElement } from 'lit';
3
+ import { html, css, LitElement, nothing } from 'lit';
4
4
  import { property } from 'lit/decorators.js';
5
5
  import { ifDefined } from 'lit/directives/if-defined.js';
6
6
  import { createRef, ref } from 'lit/directives/ref.js';
@@ -747,7 +747,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
747
747
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
748
748
  const input = elem.renderRoot.querySelector('input');
749
749
 
750
- if (input.validationMessage.length > 0) {
750
+ if (input && input.validationMessage.length > 0) {
751
751
  elem.errorMessage = input.validationMessage;
752
752
  }
753
753
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -10342,7 +10342,11 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10342
10342
  return part.value;
10343
10343
  }
10344
10344
  })
10345
- .join("");
10345
+ .join("")
10346
+ // Remove whitespace and leading/trailing special characters for IMask compatibility
10347
+ // for example, ko-KR's format is `YYYY. MM. DD.` which causes issues with IMask if we don't remove the trailing period.
10348
+ .replace(/\s/gu, '')
10349
+ .replace(/^[^A-Z0-9]+|[^A-Z0-9]+$/gu, '');
10346
10350
  }
10347
10351
 
10348
10352
  /**
@@ -10498,27 +10502,16 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10498
10502
  * Converts a model value to a display value for the input element.
10499
10503
  * For full date formats, converts an ISO model value to the configured display format.
10500
10504
  * @private
10501
- * @param {string} value - The model value (ISO string for date types).
10502
10505
  * @param {Date|undefined} valueObject - Date object representation of value.
10503
10506
  * @param {string} format - The date format string.
10504
- * @returns {string}
10507
+ * @returns {string | undefined}
10505
10508
  */
10506
- toFormattedValue(value, valueObject, format) {
10507
- if (!this.isFullDateFormat('date', format) || !value) {
10508
- return value;
10509
- }
10510
-
10511
- if (!dateFormatter$1.isValidDate(value)) {
10512
- // For ISO-pattern strings that fail range validation (e.g. '2024-99-99'),
10513
- // return '' so inputElement stays empty and format-based validation is not triggered.
10514
- return (/^\d{4}-\d{2}-\d{2}$/u).test(value) ? '' : value;
10515
- }
10516
-
10509
+ toFormattedValue(valueObject, format) {
10517
10510
  const normalizedFormat = format.toLowerCase();
10518
10511
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10519
10512
 
10520
10513
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
10521
- return value;
10514
+ return undefined;
10522
10515
  }
10523
10516
 
10524
10517
  return maskOptions.format(valueObject);
@@ -10542,29 +10535,6 @@ function getDateFormatFromLocale$1 (locale) {
10542
10535
 
10543
10536
  class AuroDatepickerUtilities {
10544
10537
 
10545
- /**
10546
- * Converts an ISO date string (yyyy-mm-dd) to any display format.
10547
- * @param {string} isoStr - ISO date string.
10548
- * @param {string} format - Target display format (e.g. "mm/dd/yyyy", "dd/mm/yyyy").
10549
- * @returns {string|undefined}
10550
- */
10551
- toCustomFormat(isoStr, format) {
10552
- if (!isoStr || !format) return undefined;
10553
- try {
10554
- const date = dateFormatter$1.stringToDateInstance(isoStr);
10555
- const year = String(date.getFullYear()).padStart(4, '0');
10556
- const month = String(date.getMonth() + 1).padStart(2, '0');
10557
- const day = String(date.getDate()).padStart(2, '0');
10558
- return format.toLowerCase()
10559
- .replace(/yyyy/iu, year)
10560
- .replace(/yy/iu, year.slice(-2))
10561
- .replace(/mm/iu, month)
10562
- .replace(/dd/iu, day);
10563
- } catch {
10564
- return undefined;
10565
- }
10566
- }
10567
-
10568
10538
  /**
10569
10539
  * Converts any date object to a date object representing the first day of the month.
10570
10540
  * @param {Object} date - Date to convert to the first day of the month.
@@ -10590,17 +10560,6 @@ class AuroDatepickerUtilities {
10590
10560
  return months <= 0 ? 0 : months;
10591
10561
  }
10592
10562
 
10593
- /**
10594
- * Function to format a number to two digits.
10595
- * @private
10596
- * @param {Number} num - Number to format.
10597
- * @returns {String}
10598
- */
10599
- formatTwoDigits(num) {
10600
- const singleDigitThreshold = 10;
10601
- return num < singleDigitThreshold ? `0${num}` : num;
10602
- }
10603
-
10604
10563
  /**
10605
10564
  * Function to generate checkmark svg.
10606
10565
  * @private
@@ -10639,6 +10598,7 @@ class UtilitiesCalendarRender {
10639
10598
  updateCentralDate(elem, date) {
10640
10599
  // if date is already iso formatted string, we can skip the conversion and validation step
10641
10600
  if (typeof date === 'string' && dateFormatter$1.isValidDate(date)) {
10601
+ // eslint-disable-next-line
10642
10602
  elem.centralDate = date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$1-$2-01'); // Set to first of the month
10643
10603
  return;
10644
10604
  }
@@ -10664,6 +10624,7 @@ class UtilitiesCalendarRender {
10664
10624
  determineDefinedCalendarRange(elem) {
10665
10625
  if (elem.getAttribute('calendarStartDate') && elem.getAttribute('calendarEndDate')) {
10666
10626
  // if we have a defined range of months, use that
10627
+ // prop is not in sync with attribute yet, use attribute value
10667
10628
  elem.calendarRangeMonths = elem.util.monthDiff(dateFormatter$1.stringToDateInstance(elem.getAttribute('calendarStartDate')), dateFormatter$1.stringToDateInstance(elem.getAttribute('calendarEndDate')));
10668
10629
  } else {
10669
10630
  // if we don't have a defined range of months, use undefined
@@ -10722,13 +10683,10 @@ class UtilitiesCalendarRender {
10722
10683
  // 2. Start by assuming we can render the max number of months.
10723
10684
  let calendarCount = maxRenderableMonths;
10724
10685
 
10725
- // 3. If we didn't get a count early, restrict based on min/max date.
10686
+ // 3. If maximumRenderableMonths() returns 0 (e.g. an invalid/empty defined range),
10687
+ // fall back to the min/max date range so something is rendered.
10726
10688
  if (!calendarCount && elem.minDate && elem.maxDate) {
10727
- const monthsInRange = this.util.monthDiff(dateFormatter$1.stringToDateInstance(elem.minDate), dateFormatter$1.stringToDateInstance(elem.maxDate));
10728
-
10729
- if (monthsInRange < maxRenderableMonths) {
10730
- calendarCount = monthsInRange;
10731
- }
10689
+ calendarCount = this.util.monthDiff(elem.minDateObject, elem.maxDateObject);
10732
10690
  }
10733
10691
 
10734
10692
  if (elem.numCalendars !== calendarCount) {
@@ -10772,11 +10730,10 @@ class UtilitiesCalendarRender {
10772
10730
  <auro-formkit-calendar-month
10773
10731
  id="${`month-${month}-${year}`}"
10774
10732
  .disabledDays="${elem.disabledDays}"
10775
- .min="${elem.min}"
10776
- .max="${elem.max}"
10733
+ .min="${elem.minDateObject?.getTime() / 1000}"
10734
+ .max="${elem.maxDateObject?.getTime() / 1000}"
10777
10735
  ?noRange="${elem.noRange}"
10778
10736
  .monthFirst="${elem.monthFirst}"
10779
- .hoveredDate="${elem.hoveredDate}"
10780
10737
  .dateTo="${elem.dateTo}"
10781
10738
  .dateFrom="${elem.dateFrom}"
10782
10739
  .locale="${elem.locale}"
@@ -10809,11 +10766,11 @@ var snowflakeStyle = css`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
10809
10766
 
10810
10767
  var snowflakeColors = css`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
10811
10768
 
10812
- var styleCss$7 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;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:""}`;
10769
+ var styleCss$7 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;--desktop-footer-height: 80px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendars:focus{outline:none}.calendarNavButtons{position:absolute;z-index:1;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}.calendarWrapper.hasFooter{padding-bottom:var(--desktop-footer-height)}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}.sr-only{position:absolute;overflow:hidden;clip:rect(0, 0, 0, 0);width:1px;height:1px;margin:-1px;padding:0;border:0;white-space:nowrap}`;
10813
10770
 
10814
10771
  var colorCss$7 = css`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);box-shadow:inset 0 0 0 1px var(--ds-auro-calendar-nav-btn-border-color)}.mobileHeader{background-color:var(--ds-auro-calendar-mobile-header-container-color)}.mobileDateLabel{color:var(--ds-auro-calendar-mobile-header-text-color)}:host(:not([noRange])) .headerDateTo:after{background-color:var(--ds-auro-calendar-mobile-header-divider-color)}::slotted([slot="bib.fullscreen.fromStr"]),::slotted([slot=mobileDateToStr]){color:var(--ds-auro-datepicker-placeholder-color)}@media screen and (max-width: 576px){.calendarNavBtn{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}}`;
10815
10772
 
10816
- var styleCss$6 = css`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem)}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.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%}`;
10773
+ var styleCss$6 = css`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem) var(--ds-size-200, 1rem) 0}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height: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)}`;
10817
10774
 
10818
10775
  var colorCss$6 = css`:focus:not(:focus-visible){outline:3px solid transparent}:host{background-color:var(--ds-auro-calendar-month-container-color)}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{background-color:var(--ds-auro-calendar-month-divider-color)}}.header{color:var(--ds-auro-calendar-month-header-color)}`;
10819
10776
 
@@ -11568,41 +11525,45 @@ __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "dayN
11568
11525
  __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
11569
11526
  AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
11570
11527
 
11571
- var styleCss$5 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:var(--ds-size-500, 2.5rem);height:calc(var(--ds-size-700, 3.5rem) - 2px);padding:0;border-width:1px;border-style:solid;border-radius:var(--ds-size-300, 1.5rem);cursor:pointer;user-select:none}.day.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}}`;
11528
+ var styleCss$5 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";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}`;
11572
11529
 
11573
- var colorCss$5 = css`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day.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}`;
11530
+ var colorCss$5 = css`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day.activeCell:not(.selected){--ds-auro-calendar-cell-container-color: var(--ds-auro-calendar-cell-in-range-color);border-color:var(--ds-advanced-color-state-selected);outline-color:var(--ds-auro-calendar-cell-container-color)}:host .day.selected{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.selected ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success-subtle, #d6eac7)}:host .day.selected:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected-hover, #00274a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.reference:after{border-color:var(--ds-basic-color-border-default, #959595);box-shadow:inset 0 0 0 2px var(--ds-basic-color-surface-default, #ffffff)}:host .day.reference:hover::after{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background-muted, #f7f7f7)}:host .day:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host .day.disabled{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.blackout{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.inRange:before,:host .day.rangeDepartDate:before,:host .day.rangeReturnDate:before,:host .day.lastHoveredDate:before{background-color:var(--ds-auro-calendar-cell-in-range-color)}:host .day.sameDateTrip:before{--ds-auro-calendar-cell-in-range-color: transparent}`;
11574
11531
 
11575
- class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,class extends t{});}closestElement(e,t=this,i=(t,s=t&&t.closest(e))=>t&&t!==document&&t!==window?s||i(t.getRootNode().host):null){return i(t)}handleComponentTagRename(e,t){const i=t.toLowerCase();e.tagName.toLowerCase()!==i&&e.setAttribute(i,true);}elementMatch(e,t){const i=t.toLowerCase();return e.tagName.toLowerCase()===i||e.hasAttribute(i)}getSlotText(e,t){const i=e.shadowRoot?.querySelector(`slot[name="${t}"]`);return (i?.assignedNodes({flatten:true})||[]).map(e=>e.textContent?.trim()).join(" ").trim()||null}}var r$1="top",o="bottom",n$1="right",a="left",l$3="auto",c$3=[r$1,o,n$1,a],p$6="start",d$3="end",f$6="viewport",h$3="popper",m$6=c$3.reduce(function(e,t){return e.concat([t+"-"+p$6,t+"-"+d$3])},[]),u$6=[].concat(c$3,[l$3]).reduce(function(e,t){return e.concat([t,t+"-"+p$6,t+"-"+d$3])},[]),g$6=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function v$3(e){return e?(e.nodeName||"").toLowerCase():null}function y$6(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function w$6(e){return e instanceof y$6(e).Element||e instanceof Element}function b$3(e){return e instanceof y$6(e).HTMLElement||e instanceof HTMLElement}function x$3(e){return "undefined"!=typeof ShadowRoot&&(e instanceof y$6(e).ShadowRoot||e instanceof ShadowRoot)}var S$3={name:"applyStyles",enabled:true,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var i=t.styles[e]||{},s=t.attributes[e]||{},r=t.elements[e];b$3(r)&&v$3(r)&&(Object.assign(r.style,i),Object.keys(s).forEach(function(e){var t=s[e];false===t?r.removeAttribute(e):r.setAttribute(e,true===t?"":t);}));});},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(e){var s=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce(function(e,t){return e[t]="",e},{});b$3(s)&&v$3(s)&&(Object.assign(s.style,o),Object.keys(r).forEach(function(e){s.removeAttribute(e);}));});}},requires:["computeStyles"]};function _$4(e){return e.split("-")[0]}var 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$6(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$6(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$3(e))>=0}function C$3(e){return ((w$6(e)?e.ownerDocument:e.document)||window.document).documentElement}function R$3(e){return "html"===v$3(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$3(i)||"body"===v$3(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$3(i))<0;){var s=L(i);if("none"!==s.transform||"none"!==s.perspective||"paint"===s.contain||-1!==["transform","perspective"].indexOf(s.willChange)||t&&"filter"===s.willChange||t&&s.filter&&"none"!==s.filter)return i;i=i.parentNode;}return null}(e)||t}function P(e){return ["top","bottom"].indexOf(e)>=0?"x":"y"}function 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$1].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$3))}(l.padding,i),g=T$3(p),v="y"===h?r$1:a,y="y"===h?o:n$1,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$1,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$1||(l===a||l===n$1)&&c===d$3)z=o,x-=(g&&M===E&&E.visualViewport?E.visualViewport.height:M[T])-s.height,x*=h?1:-1;if(l===a||(l===r$1||l===o)&&c===d$3)k=n$1,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$6(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$3(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$6?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$6(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$3(e)}):[]}(e):[].concat(t),o=[].concat(r,[i]),n=o[0],a=o.reduce(function(t,i){var r=se(e,i,s);return t.top=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$1:t={x:h,y:i.y-s.height};break;case o:t={x:h,y:i.y+i.height};break;case n$1:t={x:i.x+i.width,y: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$6: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$6:u,v=i.elementContext,y=void 0===v?h$3:v,b=i.altBoundary,x=void 0!==b&&b,S=i.padding,_=void 0===S?0:S,O=I("number"!=typeof _?_:F(_,c$3)),k=y===h$3?"reference":h$3,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$6(e.elements.reference),B=oe({reference:T,element:A,placement:a}),L=ie(Object.assign({},A,B)),H=y===h$3?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$3&&j){var N=j[a];Object.keys(R).forEach(function(e){var t=[n$1,o].indexOf(e)>=0?1:-1,i=[r$1,o].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$6:l,d=q$3(s),f=d?a?m$6:m$6.filter(function(e){return q$3(e)===d}):c$3,h=f.filter(function(e){return p.indexOf(e)>=0});0===h.length&&(h=f);var g=h.reduce(function(t,i){return t[i]=ne(e,{placement:i,boundary:r,rootBoundary:o,padding:n})[_$4(i)],t},{});return Object.keys(g).sort(function(e,t){return g[e]-g[t]})}var le={name:"flip",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name;if(!t.modifiersData[s]._skip){for(var c=i.mainAxis,d=void 0===c||c,f=i.altAxis,h=void 0===f||f,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$6,j=[r$1,o].indexOf(C)>=0,N=j?"width":"height",P=ne(t,{placement:H,boundary:g,rootBoundary:v,altBoundary:y,padding:u}),D=j?R?n$1:a:R?o:r$1;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$1,n$1,o,a].some(function(t){return e[t]>=0})}var de={name:"offset",enabled:true,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,s=e.name,o=i.offset,l=void 0===o?[0,0]:o,c=u$6.reduce(function(e,i){return e[i]=function(e,t,i){var s=_$4(e),o=[a,r$1].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},t,{placement:e})):i,c=l[0],p=l[1];return c=c||0,p=(p||0)*o,[a,n$1].indexOf(s)>=0?{x:p,y:c}:{x:c,y:p}}(i,t.rects,l),e},{}),p=c[t.placement],d=p.x,f=p.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=f),t.modifiersData[s]=c;}};var fe={name:"preventOverflow",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name,l=i.mainAxis,c=void 0===l||l,d=i.altAxis,f=void 0!==d&&d,h=i.boundary,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$1:a,W="y"===E?o:n$1,X="y"===E?"height":"width",V=B[E],G=V+x[U],$=V-x[W],K=y?-H[X]/2:0,Y=A===p$6?L[X]:H[X],J=A===p$6?-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$1:a,me="x"===E?o:n$1,ue=B[M],ge="y"===M?"height":"width",ve=ue+x[he],ye=ue-x[me],we=-1!==[r$1,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$6(e,n,i),c={scrollLeft:0,scrollTop:0},p={x:0,y:0};return (o||!o&&!i)&&(("body"!==v$3(t)||Z(a))&&(c=(s=t)!==y$6(s)&&b$3(s)?{scrollLeft:(r=s).scrollLeft,scrollTop:r.scrollTop}:J(s)),b$3(t)?((p=M$6(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=css`::slotted(*):not([onDark]),::slotted(*):not([appearance=inverse]){color:var(--ds-auro-popover-text-color)}.popover{background-color:var(--ds-auro-popover-container-color);box-shadow:var(--ds-auro-popover-boxshadow-color)}.arrow:before{background-color:var(--ds-auro-popover-container-color);box-shadow:2px 2px 1px 0 var(--ds-auro-popover-boxshadow-color)}
11532
+ class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,class extends t{});}closestElement(e,t=this,i=(t,s=t&&t.closest(e))=>t&&t!==document&&t!==window?s||i(t.getRootNode().host):null){return i(t)}handleComponentTagRename(e,t){const i=t.toLowerCase();e.tagName.toLowerCase()!==i&&e.setAttribute(i,true);}elementMatch(e,t){const i=t.toLowerCase();return e.tagName.toLowerCase()===i||e.hasAttribute(i)}getSlotText(e,t){const i=e.shadowRoot?.querySelector(`slot[name="${t}"]`);return (i?.assignedNodes({flatten:true})||[]).map(e=>e.textContent?.trim()).join(" ").trim()||null}}var r$1="top",o="bottom",n$1="right",a="left",l$3="auto",c$3=[r$1,o,n$1,a],p$6="start",d$3="end",f$6="viewport",h$3="popper",u$6=c$3.reduce(function(e,t){return e.concat([t+"-"+p$6,t+"-"+d$3])},[]),m$6=[].concat(c$3,[l$3]).reduce(function(e,t){return e.concat([t,t+"-"+p$6,t+"-"+d$3])},[]),g$6=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function v$3(e){return e?(e.nodeName||"").toLowerCase():null}function y$6(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function w$6(e){return e instanceof y$6(e).Element||e instanceof Element}function b$3(e){return e instanceof y$6(e).HTMLElement||e instanceof HTMLElement}function x$3(e){return "undefined"!=typeof ShadowRoot&&(e instanceof y$6(e).ShadowRoot||e instanceof ShadowRoot)}var S$3={name:"applyStyles",enabled:true,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var i=t.styles[e]||{},s=t.attributes[e]||{},r=t.elements[e];b$3(r)&&v$3(r)&&(Object.assign(r.style,i),Object.keys(s).forEach(function(e){var t=s[e];false===t?r.removeAttribute(e):r.setAttribute(e,true===t?"":t);}));});},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(e){var s=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce(function(e,t){return e[t]="",e},{});b$3(s)&&v$3(s)&&(Object.assign(s.style,o),Object.keys(r).forEach(function(e){s.removeAttribute(e);}));});}},requires:["computeStyles"]};function _$4(e){return e.split("-")[0]}var A$3=Math.max,O=Math.min,k$6=Math.round;function T$3(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function z$6(){return !/^((?!chrome|android).)*safari/i.test(T$3())}function E(e,t,i){ void 0===t&&(t=false),void 0===i&&(i=false);var s=e.getBoundingClientRect(),r=1,o=1;t&&b$3(e)&&(r=e.offsetWidth>0&&k$6(s.width)/e.offsetWidth||1,o=e.offsetHeight>0&&k$6(s.height)/e.offsetHeight||1);var n=(w$6(e)?y$6(e):window).visualViewport,a=!z$6()&&i,l=(s.left+(a&&n?n.offsetLeft:0))/r,c=(s.top+(a&&n?n.offsetTop:0))/o,p=s.width/r,d=s.height/o;return {width:p,height:d,top:c,right:l+p,bottom:c+d,left:l,x:l,y:c}}function M$6(e){var t=E(e),i=e.offsetWidth,s=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-s)<=1&&(s=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:s}}function B$3(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return true;if(i&&x$3(i)){var s=t;do{if(s&&e.isSameNode(s))return true;s=s.parentNode||s.host;}while(s)}return false}function L(e){return y$6(e).getComputedStyle(e)}function R$3(e){return ["table","td","th"].indexOf(v$3(e))>=0}function H$3(e){return ((w$6(e)?e.ownerDocument:e.document)||window.document).documentElement}function C$3(e){return "html"===v$3(e)?e:e.assignedSlot||e.parentNode||(x$3(e)?e.host:null)||H$3(e)}function D(e){return b$3(e)&&"fixed"!==L(e).position?e.offsetParent:null}function N$3(e){for(var t=y$6(e),i=D(e);i&&R$3(i)&&"static"===L(i).position;)i=D(i);return i&&("html"===v$3(i)||"body"===v$3(i)&&"static"===L(i).position)?t:i||function(e){var t=/firefox/i.test(T$3());if(/Trident/i.test(T$3())&&b$3(e)&&"fixed"===L(e).position)return null;var i=C$3(e);for(x$3(i)&&(i=i.host);b$3(i)&&["html","body"].indexOf(v$3(i))<0;){var s=L(i);if("none"!==s.transform||"none"!==s.perspective||"paint"===s.contain||-1!==["transform","perspective"].indexOf(s.willChange)||t&&"filter"===s.willChange||t&&s.filter&&"none"!==s.filter)return i;i=i.parentNode;}return null}(e)||t}function P(e){return ["top","bottom"].indexOf(e)>=0?"x":"y"}function j(e,t,i){return A$3(e,O(t,i))}function I(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function q$3(e,t){return t.reduce(function(t,i){return t[i]=e,t},{})}var F={name:"arrow",enabled:true,phase:"main",fn:function(e){var t,i=e.state,s=e.name,l=e.options,p=i.elements.arrow,d=i.modifiersData.popperOffsets,f=_$4(i.placement),h=P(f),u=[a,n$1].indexOf(f)>=0?"height":"width";if(p&&d){var m=function(e,t){return I("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:q$3(e,c$3))}(l.padding,i),g=M$6(p),v="y"===h?r$1:a,y="y"===h?o:n$1,w=i.rects.reference[u]+i.rects.reference[h]-d[h]-i.rects.popper[u],b=d[h]-i.rects.reference[h],x=N$3(p),S=x?"y"===h?x.clientHeight||0:x.clientWidth||0:0,A=w/2-b/2,O=m[v],k=S-g[u]-m[y],T=S/2-g[u]/2+A,z=j(O,T,k),E=h;i.modifiersData[s]=((t={})[E]=z,t.centerOffset=z-T,t);}},effect:function(e){var t=e.state,i=e.options.element,s=void 0===i?"[data-popper-arrow]":i;null!=s&&("string"!=typeof s||(s=t.elements.popper.querySelector(s)))&&B$3(t.elements.popper,s)&&(t.elements.arrow=s);},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function U$3(e){return e.split("-")[1]}var V={top:"auto",right:"auto",bottom:"auto",left:"auto"};function W(e){var t,i=e.popper,s=e.popperRect,l=e.placement,c=e.variation,p=e.offsets,f=e.position,h=e.gpuAcceleration,u=e.adaptive,m=e.roundOffsets,g=e.isFixed,v=p.x,w=void 0===v?0:v,b=p.y,x=void 0===b?0:b,S="function"==typeof m?m({x:w,y:x}):{x:w,y:x};w=S.x,x=S.y;var _=p.hasOwnProperty("x"),A=p.hasOwnProperty("y"),O=a,T=r$1,z=window;if(u){var E=N$3(i),M="clientHeight",B="clientWidth";if(E===y$6(i)&&"static"!==L(E=H$3(i)).position&&"absolute"===f&&(M="scrollHeight",B="scrollWidth"),l===r$1||(l===a||l===n$1)&&c===d$3)T=o,x-=(g&&E===z&&z.visualViewport?z.visualViewport.height:E[M])-s.height,x*=h?1:-1;if(l===a||(l===r$1||l===o)&&c===d$3)O=n$1,w-=(g&&E===z&&z.visualViewport?z.visualViewport.width:E[B])-s.width,w*=h?1:-1;}var R,C=Object.assign({position:f},u&&V),D=true===m?function(e,t){var i=e.x,s=e.y,r=t.devicePixelRatio||1;return {x:k$6(i*r)/r||0,y:k$6(s*r)/r||0}}({x:w,y:x},y$6(i)):{x:w,y:x};return w=D.x,x=D.y,h?Object.assign({},C,((R={})[T]=A?"0":"",R[O]=_?"0":"",R.transform=(z.devicePixelRatio||1)<=1?"translate("+w+"px, "+x+"px)":"translate3d("+w+"px, "+x+"px, 0)",R)):Object.assign({},C,((t={})[T]=A?x+"px":"",t[O]=_?w+"px":"",t.transform="",t))}var X={passive:true};var $={left:"right",right:"left",bottom:"top",top:"bottom"};function G(e){return e.replace(/left|right|bottom|top/g,function(e){return $[e]})}var K={start:"end",end:"start"};function Y(e){return e.replace(/start|end/g,function(e){return K[e]})}function J(e){var t=y$6(e);return {scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Q(e){return E(H$3(e)).left+J(e).scrollLeft}function Z(e){var t=L(e),i=t.overflow,s=t.overflowX,r=t.overflowY;return /auto|scroll|overlay|hidden/.test(i+r+s)}function ee(e){return ["html","body","#document"].indexOf(v$3(e))>=0?e.ownerDocument.body:b$3(e)&&Z(e)?e:ee(C$3(e))}function te(e,t){var i;void 0===t&&(t=[]);var s=ee(e),r=s===(null==(i=e.ownerDocument)?void 0:i.body),o=y$6(s),n=r?[o].concat(o.visualViewport||[],Z(s)?s:[]):s,a=t.concat(n);return r?a:a.concat(te(C$3(n)))}function ie(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function se(e,t,i){return t===f$6?ie(function(e,t){var i=y$6(e),s=H$3(e),r=i.visualViewport,o=s.clientWidth,n=s.clientHeight,a=0,l=0;if(r){o=r.width,n=r.height;var c=z$6();(c||!c&&"fixed"===t)&&(a=r.offsetLeft,l=r.offsetTop);}return {width:o,height:n,x:a+Q(e),y:l}}(e,i)):w$6(t)?function(e,t){var i=E(e,false,"fixed"===t);return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}(t,i):ie(function(e){var t,i=H$3(e),s=J(e),r=null==(t=e.ownerDocument)?void 0:t.body,o=A$3(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),n=A$3(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),a=-s.scrollLeft+Q(e),l=-s.scrollTop;return "rtl"===L(r||i).direction&&(a+=A$3(i.clientWidth,r?r.clientWidth:0)-o),{width:o,height:n,x:a,y:l}}(H$3(e)))}function re(e,t,i,s){var r="clippingParents"===t?function(e){var t=te(C$3(e)),i=["absolute","fixed"].indexOf(L(e).position)>=0&&b$3(e)?N$3(e):e;return w$6(i)?t.filter(function(e){return w$6(e)&&B$3(e,i)&&"body"!==v$3(e)}):[]}(e):[].concat(t),o=[].concat(r,[i]),n=o[0],a=o.reduce(function(t,i){var r=se(e,i,s);return t.top=A$3(r.top,t.top),t.right=O(r.right,t.right),t.bottom=O(r.bottom,t.bottom),t.left=A$3(r.left,t.left),t},se(e,n,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function oe(e){var t,i=e.reference,s=e.element,l=e.placement,c=l?_$4(l):null,f=l?U$3(l):null,h=i.x+i.width/2-s.width/2,u=i.y+i.height/2-s.height/2;switch(c){case r$1:t={x:h,y:i.y-s.height};break;case o:t={x:h,y:i.y+i.height};break;case n$1:t={x:i.x+i.width,y:u};break;case a:t={x:i.x-s.width,y:u};break;default:t={x:i.x,y:i.y};}var m=c?P(c):null;if(null!=m){var g="y"===m?"height":"width";switch(f){case p$6:t[m]=t[m]-(i[g]/2-s[g]/2);break;case d$3:t[m]=t[m]+(i[g]/2-s[g]/2);}}return t}function ne(e,t){ void 0===t&&(t={});var i=t,s=i.placement,a=void 0===s?e.placement:s,l=i.strategy,p=void 0===l?e.strategy:l,d=i.boundary,u=void 0===d?"clippingParents":d,m=i.rootBoundary,g=void 0===m?f$6:m,v=i.elementContext,y=void 0===v?h$3:v,b=i.altBoundary,x=void 0!==b&&b,S=i.padding,_=void 0===S?0:S,A=I("number"!=typeof _?_:q$3(_,c$3)),O=y===h$3?"reference":h$3,k=e.rects.popper,T=e.elements[x?O:y],z=re(w$6(T)?T:T.contextElement||H$3(e.elements.popper),u,g,p),M=E(e.elements.reference),B=oe({reference:M,element:k,placement:a}),L=ie(Object.assign({},k,B)),R=y===h$3?L:M,C={top:z.top-R.top+A.top,bottom:R.bottom-z.bottom+A.bottom,left:z.left-R.left+A.left,right:R.right-z.right+A.right},D=e.modifiersData.offset;if(y===h$3&&D){var N=D[a];Object.keys(C).forEach(function(e){var t=[n$1,o].indexOf(e)>=0?1:-1,i=[r$1,o].indexOf(e)>=0?"y":"x";C[e]+=N[i]*t;});}return C}function ae(e,t){ void 0===t&&(t={});var i=t,s=i.placement,r=i.boundary,o=i.rootBoundary,n=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,p=void 0===l?m$6:l,d=U$3(s),f=d?a?u$6:u$6.filter(function(e){return U$3(e)===d}):c$3,h=f.filter(function(e){return p.indexOf(e)>=0});0===h.length&&(h=f);var g=h.reduce(function(t,i){return t[i]=ne(e,{placement:i,boundary:r,rootBoundary:o,padding:n})[_$4(i)],t},{});return Object.keys(g).sort(function(e,t){return g[e]-g[t]})}var le={name:"flip",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name;if(!t.modifiersData[s]._skip){for(var c=i.mainAxis,d=void 0===c||c,f=i.altAxis,h=void 0===f||f,u=i.fallbackPlacements,m=i.padding,g=i.boundary,v=i.rootBoundary,y=i.altBoundary,w=i.flipVariations,b=void 0===w||w,x=i.allowedAutoPlacements,S=t.options.placement,A=_$4(S),O=u||(A===S||!b?[G(S)]:function(e){if(_$4(e)===l$3)return [];var t=G(e);return [Y(e),t,Y(t)]}(S)),k=[S].concat(O).reduce(function(e,i){return e.concat(_$4(i)===l$3?ae(t,{placement:i,boundary:g,rootBoundary:v,padding:m,flipVariations:b,allowedAutoPlacements:x}):i)},[]),T=t.rects.reference,z=t.rects.popper,E=new Map,M=true,B=k[0],L=0;L<k.length;L++){var R=k[L],H=_$4(R),C=U$3(R)===p$6,D=[r$1,o].indexOf(H)>=0,N=D?"width":"height",P=ne(t,{placement:R,boundary:g,rootBoundary:v,altBoundary:y,padding:m}),j=D?C?n$1:a:C?o:r$1;T[N]>z[N]&&(j=G(j));var I=G(j),q=[];if(d&&q.push(P[H]<=0),h&&q.push(P[j]<=0,P[I]<=0),q.every(function(e){return e})){B=R,M=false;break}E.set(R,q);}if(M)for(var F=function(e){var t=k.find(function(t){var i=E.get(t);if(i)return i.slice(0,e).every(function(e){return e})});if(t)return B=t,"break"},V=b?3:1;V>0;V--){if("break"===F(V))break}t.placement!==B&&(t.modifiersData[s]._skip=true,t.placement=B,t.reset=true);}},requiresIfExists:["offset"],data:{_skip:false}};function ce(e,t,i){return void 0===i&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function pe(e){return [r$1,n$1,o,a].some(function(t){return e[t]>=0})}var de={name:"offset",enabled:true,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,s=e.name,o=i.offset,l=void 0===o?[0,0]:o,c=m$6.reduce(function(e,i){return e[i]=function(e,t,i){var s=_$4(e),o=[a,r$1].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},t,{placement:e})):i,c=l[0],p=l[1];return c=c||0,p=(p||0)*o,[a,n$1].indexOf(s)>=0?{x:p,y:c}:{x:c,y:p}}(i,t.rects,l),e},{}),p=c[t.placement],d=p.x,f=p.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=f),t.modifiersData[s]=c;}};var fe={name:"preventOverflow",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name,l=i.mainAxis,c=void 0===l||l,d=i.altAxis,f=void 0!==d&&d,h=i.boundary,u=i.rootBoundary,m=i.altBoundary,g=i.padding,v=i.tether,y=void 0===v||v,w=i.tetherOffset,b=void 0===w?0:w,x=ne(t,{boundary:h,rootBoundary:u,padding:g,altBoundary:m}),S=_$4(t.placement),k=U$3(t.placement),T=!k,z=P(S),E="x"===z?"y":"x",B=t.modifiersData.popperOffsets,L=t.rects.reference,R=t.rects.popper,H="function"==typeof b?b(Object.assign({},t.rects,{placement:t.placement})):b,C="number"==typeof H?{mainAxis:H,altAxis:H}:Object.assign({mainAxis:0,altAxis:0},H),D=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,I={x:0,y:0};if(B){if(c){var q,F="y"===z?r$1:a,V="y"===z?o:n$1,W="y"===z?"height":"width",X=B[z],$=X+x[F],G=X-x[V],K=y?-R[W]/2:0,Y=k===p$6?L[W]:R[W],J=k===p$6?-R[W]:-L[W],Q=t.elements.arrow,Z=y&&Q?M$6(Q):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[F],ie=ee[V],se=j(0,L[W],Z[W]),re=T?L[W]/2-K-se-te-C.mainAxis:Y-se-te-C.mainAxis,oe=T?-L[W]/2+K+se+ie+C.mainAxis:J+se+ie+C.mainAxis,ae=t.elements.arrow&&N$3(t.elements.arrow),le=ae?"y"===z?ae.clientTop||0:ae.clientLeft||0:0,ce=null!=(q=null==D?void 0:D[z])?q:0,pe=X+oe-ce,de=j(y?O($,X+re-ce-le):$,X,y?A$3(G,pe):G);B[z]=de,I[z]=de-X;}if(f){var fe,he="x"===z?r$1:a,ue="x"===z?o:n$1,me=B[E],ge="y"===E?"height":"width",ve=me+x[he],ye=me-x[ue],we=-1!==[r$1,a].indexOf(S),be=null!=(fe=null==D?void 0:D[E])?fe:0,xe=we?ve:me-L[ge]-R[ge]-be+C.altAxis,Se=we?me+L[ge]+R[ge]-be-C.altAxis:ye,_e=y&&we?function(e,t,i){var s=j(e,t,i);return s>i?i:s}(xe,me,Se):j(y?xe:ve,me,y?Se:ye);B[E]=_e,I[E]=_e-me;}t.modifiersData[s]=I;}},requiresIfExists:["offset"]};function he(e,t,i){ void 0===i&&(i=false);var s,r,o=b$3(t),n=b$3(t)&&function(e){var t=e.getBoundingClientRect(),i=k$6(t.width)/e.offsetWidth||1,s=k$6(t.height)/e.offsetHeight||1;return 1!==i||1!==s}(t),a=H$3(t),l=E(e,n,i),c={scrollLeft:0,scrollTop:0},p={x:0,y:0};return (o||!o&&!i)&&(("body"!==v$3(t)||Z(a))&&(c=(s=t)!==y$6(s)&&b$3(s)?{scrollLeft:(r=s).scrollLeft,scrollTop:r.scrollTop}:J(s)),b$3(t)?((p=E(t,true)).x+=t.clientLeft,p.y+=t.clientTop):a&&(p.x=Q(a))),{x:l.left+c.scrollLeft-p.x,y:l.top+c.scrollTop-p.y,width:l.width,height:l.height}}function ue(e){var t=new Map,i=new Set,s=[];function r(e){i.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!i.has(e)){var s=t.get(e);s&&r(s);}}),s.push(e);}return e.forEach(function(e){t.set(e.name,e);}),e.forEach(function(e){i.has(e.name)||r(e);}),s}var me={placement:"bottom",modifiers:[],strategy:"absolute"};function ge(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return !t.some(function(e){return !(e&&"function"==typeof e.getBoundingClientRect)})}function ve(e){ void 0===e&&(e={});var t=e,i=t.defaultModifiers,s=void 0===i?[]:i,r=t.defaultOptions,o=void 0===r?me:r;return function(e,t,i){ void 0===i&&(i=o);var r,n,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},me,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},l=[],c=false,p={state:a,setOptions:function(i){var r="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,r),a.scrollParents={reference:w$6(e)?te(e):e.contextElement?te(e.contextElement):[],popper:te(t)};var n,c,f=function(e){var t=ue(e);return g$6.reduce(function(e,i){return e.concat(t.filter(function(e){return e.phase===i}))},[])}((n=[].concat(s,a.options.modifiers),c=n.reduce(function(e,t){var i=e[t.name];return e[t.name]=i?Object.assign({},i,t,{options:Object.assign({},i.options,t.options),data:Object.assign({},i.data,t.data)}):t,e},{}),Object.keys(c).map(function(e){return c[e]})));return a.orderedModifiers=f.filter(function(e){return e.enabled}),a.orderedModifiers.forEach(function(e){var t=e.name,i=e.options,s=void 0===i?{}:i,r=e.effect;if("function"==typeof r){var o=r({state:a,name:t,instance:p,options:s}),n=function(){};l.push(o||n);}}),p.update()},forceUpdate:function(){if(!c){var e=a.elements,t=e.reference,i=e.popper;if(ge(t,i)){a.rects={reference:he(t,N$3(i),"fixed"===a.options.strategy),popper:M$6(i)},a.reset=false,a.placement=a.options.placement,a.orderedModifiers.forEach(function(e){return a.modifiersData[e.name]=Object.assign({},e.data)});for(var s=0;s<a.orderedModifiers.length;s++)if(true!==a.reset){var r=a.orderedModifiers[s],o=r.fn,n=r.options,l=void 0===n?{}:n,d=r.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:p})||a);}else a.reset=false,s=-1;}}},update:(r=function(){return new Promise(function(e){p.forceUpdate(),e(a);})},function(){return n||(n=new Promise(function(e){Promise.resolve().then(function(){n=void 0,e(r());});})),n}),destroy:function(){d(),c=true;}};if(!ge(e,t))return p;function d(){l.forEach(function(e){return e()}),l=[];}return p.setOptions(i).then(function(e){!c&&i.onFirstUpdate&&i.onFirstUpdate(e);}),p}}var ye=ve({defaultModifiers:[{name:"eventListeners",enabled:true,phase:"write",fn:function(){},effect:function(e){var t=e.state,i=e.instance,s=e.options,r=s.scroll,o=void 0===r||r,n=s.resize,a=void 0===n||n,l=y$6(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(e){e.addEventListener("scroll",i.update,X);}),a&&l.addEventListener("resize",i.update,X),function(){o&&c.forEach(function(e){e.removeEventListener("scroll",i.update,X);}),a&&l.removeEventListener("resize",i.update,X);}},data:{}},{name:"popperOffsets",enabled:true,phase:"read",fn:function(e){var t=e.state,i=e.name;t.modifiersData[i]=oe({reference:t.rects.reference,element:t.rects.popper,placement:t.placement});},data:{}},{name:"computeStyles",enabled:true,phase:"beforeWrite",fn:function(e){var t=e.state,i=e.options,s=i.gpuAcceleration,r=void 0===s||s,o=i.adaptive,n=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:_$4(t.placement),variation:U$3(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,W(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:n,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,W(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:false,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement});},data:{}},S$3,de,le,fe,F,{name:"hide",enabled:true,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,s=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,n=ne(t,{elementContext:"reference"}),a=ne(t,{altBoundary:true}),l=ce(n,s),c=ce(a,r,o),p=pe(l),d=pe(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":d});}}]});class we{constructor(e,t,i,s){this.anchor=e,this.popover=t,this.boundaryElement=this.setBoundary(s),this.options={placement:i,visibleClass:"data-show"},this.popover.classList.remove(this.options.visibleClass);}setBoundary(e){return "string"==typeof e?document.querySelector(e)||document.body:e||document.body}show(){this.popper&&this.popper.destroy(),this.popper=ye(this.anchor,this.popover,{tooltip:this.anchor,placement:this.options.placement,modifiers:[{name:"offset",options:{offset:[0,18]}},{name:"preventOverflow",options:{mainAxis:true,boundary:this.boundaryElement,rootBoundary:"document",padding:16}}]});}triggerUpdate(){this.popper.update();}hide(){this.popover.classList.remove(this.options.visibleClass);}}var be=css`::slotted(*):not([onDark]),::slotted(*):not([appearance=inverse]){color:var(--ds-auro-popover-text-color)}.popover{background-color:var(--ds-auro-popover-container-color);box-shadow:var(--ds-auro-popover-boxshadow-color)}.arrow:before{background-color:var(--ds-auro-popover-container-color);box-shadow:2px 2px 1px 0 var(--ds-auro-popover-boxshadow-color)}
11576
11533
  `,xe=css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host(:not([data-show])) .popover,:host([disabled]) .popover,:host([addSpace]) :host(:not([data-show])) .popover{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;padding:0;border:0}.util_insetNone{padding:0}.util_insetXxxs{padding:.125rem}.util_insetXxxs--stretch{padding:.25rem .125rem}.util_insetXxxs--squish{padding:0 .125rem}.util_insetXxs{padding:.25rem}.util_insetXxs--stretch{padding:.375rem .25rem}.util_insetXxs--squish{padding:.125rem .25rem}.util_insetXs{padding:.5rem}.util_insetXs--stretch{padding:.75rem .5rem}.util_insetXs--squish{padding:.25rem .5rem}.util_insetSm{padding:.75rem}.util_insetSm--stretch{padding:1.125rem .75rem}.util_insetSm--squish{padding:.375rem .75rem}.util_insetMd{padding:1rem}.util_insetMd--stretch{padding:1.5rem 1rem}.util_insetMd--squish{padding:.5rem 1rem}.util_insetLg{padding:1.5rem}.util_insetLg--stretch{padding:2.25rem 1.5rem}.util_insetLg--squish{padding:.75rem 1.5rem}.util_insetXl{padding:2rem}.util_insetXl--stretch{padding:3rem 2rem}.util_insetXl--squish{padding:1rem 2rem}.util_insetXxl{padding:3rem}.util_insetXxl--stretch{padding:4.5rem 3rem}.util_insetXxl--squish{padding:1.5rem 3rem}.util_insetXxxl{padding:4rem}.util_insetXxxl--stretch{padding:6rem 4rem}.util_insetXxxl--squish{padding:2rem 4rem}::slotted(*){white-space:normal}::slotted(*:hover){cursor:pointer}[data-trigger-placement]::slotted(*:hover){position:relative}[data-trigger-placement]::slotted(*:hover):before{position:absolute;left:0;display:block;width:100%;height:calc(var(--ds-size-200, 1rem) + var(--ds-size-50, .25rem));content:""}[data-trigger-placement^=top]::slotted(*:hover):before{top:calc(-1 * (var(--ds-size-200, 1rem) + var(--ds-size-50, .25rem)))}[data-trigger-placement^=bottom]::slotted(*:hover):before{bottom:calc(-1 * (var(--ds-size-200, 1rem) + var(--ds-size-50, .25rem)))}:host([data-show]) .popover{z-index:var(--ds-depth-tooltip, 400)}:host([removeSpace]) .popover{margin:calc(-1 * (var(--ds-size-50, .25rem) + 1px)) 0!important}:host([addSpace]) .popover{margin:var(--ds-size-200, 1rem) 0!important}:host([addSpace]) [data-trigger-placement]::slotted(*:hover):before{height:var(--ds-size-500, 2.5rem)}:host([addSpace]) [data-trigger-placement^=top]::slotted(*:hover):before{top:calc(-1 * var(--ds-size-500, 2.5rem))}:host([addSpace]) [data-trigger-placement^=bottom]::slotted(*:hover):before{bottom:calc(-1 * var(--ds-size-500, 2.5rem))}.popover{display:inline-block;max-width:calc(100% - var(--ds-size-400, 2rem));border-radius:var(--ds-border-radius, .375rem)}@media screen and (min-width:576px){.popover{max-width:50%}}@media screen and (min-width:768px){.popover{max-width:40%}}@media screen and (min-width:1024px){.popover{max-width:27rem}}[data-popper-placement^=top]>.arrow{bottom:calc(-1 * (var(--ds-size-100, .5rem) + var(--ds-size-25, .125rem)))}[data-popper-placement^=top]>.arrow:before{top:calc(-1 * var(--ds-size-200, 1rem));left:calc(-1 * var(--ds-size-75, .375rem));transform:rotate(45deg)}[data-popper-placement^=bottom]>.arrow{top:calc(-1 * (var(--ds-size-100, .5rem) + var(--ds-size-25, .125rem)))}[data-popper-placement^=bottom]>.arrow:before{top:var(--ds-size-50, .25rem);right:calc(-1 * var(--ds-size-200, 1rem));transform:rotate(-135deg)}.arrow{position:relative;margin-top:-var(--ds-size-100,.5rem)}.arrow:before{position:absolute;width:var(--ds-size-150, .75rem);height:var(--ds-size-150, .75rem);content:""}
11577
11534
  `,Se=css`: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)}
11578
- `;class _e extends LitElement{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;}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 [css`${xe}`,css`${be}`,css`${Se}`]}static register(e="auro-popover"){s.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 html`
11579
- <div id="popover" class="popover util_insetLg body-default" part="popover">
11535
+ `;class _e extends LitElement{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;}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 [css`${xe}`,css`${be}`,css`${Se}`]}static register(e="auro-popover"){s.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 html`
11536
+ <div
11537
+ id="popover"
11538
+ class="popover util_insetLg body-default"
11539
+ part="popover"
11540
+ role="tooltip"
11541
+ aria-hidden="${this.isPopoverVisible?"false":"true"}">
11580
11542
  <div id="arrow" class="arrow" data-popper-arrow></div>
11581
- <span role="tooltip"><slot></slot></span>
11543
+ <slot></slot>
11582
11544
  </div>
11583
11545
 
11584
- <span>
11546
+ <span role="presentation">
11585
11547
  <slot name="trigger" data-trigger-placement="${this.placement}"></slot>
11586
11548
  </span>
11587
11549
  `}}
11588
11550
 
11589
11551
  var popoverVersion = '6.0.1';
11590
11552
 
11553
+ /* 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 */
11554
+
11591
11555
  const startOfDay$1 = (ms) => {
11592
11556
  const date = new Date(ms);
11593
11557
  date.setHours(0, 0, 0, 0);
11594
11558
  return date.getTime();
11595
11559
  };
11596
11560
 
11597
- /* 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 */
11598
-
11599
11561
  class AuroCalendarCell extends LitElement {
11600
11562
  constructor() {
11601
11563
  super();
11602
11564
 
11603
11565
  this.day = null;
11604
11566
  this.selected = false;
11605
- this.hovered = false;
11606
11567
  this.dateTo = null;
11607
11568
  this.dateFrom = null;
11608
11569
  this.month = null;
@@ -11610,11 +11571,12 @@ class AuroCalendarCell extends LitElement {
11610
11571
  this.max = null;
11611
11572
  this.disabled = false;
11612
11573
  this.disabledDays = [];
11613
- this.hoveredDate = null;
11614
11574
  this.isCurrentDate = false;
11615
11575
  this._locale = null;
11616
11576
  this.dateStr = null;
11617
11577
  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.
11578
+ this.active = false;
11579
+ this.hasPopoverContent = false;
11618
11580
 
11619
11581
  this.runtimeUtils = new AuroLibraryRuntimeUtils$5();
11620
11582
 
@@ -11633,7 +11595,6 @@ class AuroCalendarCell extends LitElement {
11633
11595
  // ...super.properties,
11634
11596
  day: { type: Object },
11635
11597
  selected: { type: Boolean },
11636
- hovered: { type: Boolean },
11637
11598
  dateTo: { type: String },
11638
11599
  dateFrom: { type: String },
11639
11600
  month: { type: String },
@@ -11644,11 +11605,11 @@ class AuroCalendarCell extends LitElement {
11644
11605
  reflect: true
11645
11606
  },
11646
11607
  disabledDays: { type: Array },
11647
- hoveredDate: { type: String },
11648
11608
  isCurrentDate: { type: Boolean },
11649
11609
  locale: { type: String },
11650
11610
  dateStr: { type: String },
11651
- renderForDateSlot: { type: Boolean }
11611
+ renderForDateSlot: { type: Boolean },
11612
+ hasPopoverContent: { type: Boolean }
11652
11613
  };
11653
11614
  }
11654
11615
 
@@ -11672,17 +11633,17 @@ class AuroCalendarCell extends LitElement {
11672
11633
  }
11673
11634
 
11674
11635
  /**
11675
- * Handles selected and hovered states of the calendar cell when the date changes.
11636
+ * Handles selected state of the calendar cell when the selection changes.
11637
+ * Also clears any imperative range preview classes so classMap is the
11638
+ * sole source of truth after a selection update.
11676
11639
  * @private
11677
11640
  * @param {Number} dateFrom - Depart date.
11678
11641
  * @param {Number} dateTo - Return date.
11679
- * @param {Number} hoveredDate - Hovered date.
11680
11642
  * @param {Object} day - An object containing the dateFrom and day of month values.
11681
11643
  * @returns {void}
11682
11644
  */
11683
- dateChanged(dateFrom, dateTo, hoveredDate, day) {
11645
+ dateChanged(dateFrom, dateTo, day) {
11684
11646
  this.selected = false;
11685
- this.hovered = false;
11686
11647
 
11687
11648
  const parsedDateFrom = parseInt(dateFrom, 10);
11688
11649
  const parsedDateTo = parseInt(dateTo, 10);
@@ -11694,10 +11655,6 @@ class AuroCalendarCell extends LitElement {
11694
11655
  if (day.date === departTimestamp || day.date === returnTimestamp) {
11695
11656
  this.selected = true;
11696
11657
  }
11697
-
11698
- if (((hoveredDate === day.date || day.date < hoveredDate) && day.date > parsedDateFrom && !parsedDateTo && !Number.isNaN(parsedDateFrom) && parsedDateFrom !== undefined && !this.selected) || (day.date > parsedDateFrom && day.date < parsedDateTo)) {
11699
- this.hovered = true;
11700
- }
11701
11658
  }
11702
11659
  }
11703
11660
 
@@ -11707,27 +11664,104 @@ class AuroCalendarCell extends LitElement {
11707
11664
  * @returns {void}
11708
11665
  */
11709
11666
  handleTap() {
11710
- if (!this.disabled) {
11667
+ if (!this.disabled && !this.isBlackout()) {
11711
11668
  this.datepicker.handleCellClick(this.day.date);
11712
11669
  }
11670
+
11671
+ // Set this cell as the active cell regardless of blackout status
11672
+ if (this.day) {
11673
+ this.dispatchEvent(new CustomEvent('calendar-cell-activate', {
11674
+ bubbles: true,
11675
+ composed: true,
11676
+ detail: { date: this.day.date }
11677
+ }));
11678
+ }
11713
11679
  }
11714
11680
 
11715
11681
  /**
11716
11682
  * Handles user hover events and dispatches a custom event.
11683
+ * Does NOT set any reactive properties — the range preview is handled
11684
+ * imperatively by the calendar component to avoid O(N) re-renders.
11717
11685
  * @private
11718
11686
  * @returns {void}
11719
11687
  */
11720
11688
  handleHover() {
11721
- this.hovered = true;
11722
-
11723
- let _a;
11724
11689
  this.dispatchEvent(new CustomEvent('date-is-hovered', {
11725
- detail: { date: (_a = this.day) === null || _a === void 0 ? void 0 : _a.date },
11690
+ detail: { date: this.day?.date },
11691
+ }));
11692
+ }
11693
+
11694
+ /**
11695
+ * Handles focus events on the cell button.
11696
+ * Dispatches a lightweight event for the calendar to handle SR
11697
+ * announcements and range preview updates without triggering
11698
+ * any Lit lifecycle updates.
11699
+ * @private
11700
+ * @returns {void}
11701
+ */
11702
+ handleFocus() {
11703
+ this.dispatchEvent(new CustomEvent('calendar-cell-focused', {
11704
+ bubbles: true,
11705
+ composed: true,
11706
+ detail: { date: this.day?.date },
11726
11707
  }));
11727
11708
  }
11728
11709
 
11729
11710
  /**
11730
- * Checks if the current date is a valid date depending on the min and max values.
11711
+ * Checks if the current date is outside the valid min/max range.
11712
+ * Out-of-range cells are not focusable and are hidden from screen readers.
11713
+ * @private
11714
+ * @param {Object} day - An object containing the dateFrom and day of month values.
11715
+ * @param {Number} min - The minimum date value.
11716
+ * @param {Number} max - The maximum date value.
11717
+ * @returns {Boolean} - True if the date is out of range.
11718
+ */
11719
+ isOutOfRange(day, min, max) {
11720
+ if (day && day.date !== null && day.date !== undefined) {
11721
+ return day.date < min || day.date > max;
11722
+ }
11723
+ return false;
11724
+ }
11725
+
11726
+ /**
11727
+ * Checks if the current date is a blackout date (in disabledDays but within range).
11728
+ * Blackout cells are focusable but not selectable.
11729
+ * @private
11730
+ * @returns {Boolean} - True if the date is a blackout date.
11731
+ */
11732
+ isBlackout() {
11733
+ if (!this.day || this.day.date === null || this.day.date === undefined || this.isOutOfRange(this.day, this.min, this.max)) {
11734
+ return false;
11735
+ }
11736
+
11737
+ // Check against disabledDays timestamps (legacy path)
11738
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
11739
+ (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
11740
+ return true;
11741
+ }
11742
+
11743
+ // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
11744
+ const blackoutDates = this.datepicker?.blackoutDates;
11745
+
11746
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
11747
+ const date = new Date(this.day.date * 1000);
11748
+ const yyyy = date.getFullYear();
11749
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
11750
+ const dd = String(date.getDate()).padStart(2, '0');
11751
+ const cellDate = `${yyyy}-${mm}-${dd}`;
11752
+ if (blackoutDates.includes(cellDate)) {
11753
+ return true;
11754
+ }
11755
+ }
11756
+
11757
+ return false;
11758
+ }
11759
+
11760
+ /**
11761
+ * Checks if the current date is disabled based on min/max range or the
11762
+ * legacy disabledDays timestamp list. Sets the `disabled` attribute on the
11763
+ * host when the date falls outside the allowed range or appears in
11764
+ * disabledDays. Note: blackout dates are handled separately by `isBlackout()`.
11731
11765
  * @private
11732
11766
  * @param {Object} day - An object containing the dateFrom and day of month values.
11733
11767
  * @param {Number} min - The minimum date value.
@@ -11738,15 +11772,113 @@ class AuroCalendarCell extends LitElement {
11738
11772
  isEnabled(day, min, max, disabledDays) {
11739
11773
  this.removeAttribute('disabled');
11740
11774
 
11741
- if (disabledDays && day && day.date) {
11742
- if (day.date < min || day.date > max || disabledDays.findIndex(disabledDay => parseInt(disabledDay, 10) === day.date) !== -1) {
11743
- this.setAttribute('disabled', true);
11744
- return true;
11745
- }
11775
+ if (disabledDays && day && day.date &&
11776
+ (day.date < min || day.date > max || disabledDays.findIndex(disabledDay => parseInt(disabledDay, 10) === day.date) !== -1)) {
11777
+ this.setAttribute('disabled', true);
11778
+ return true;
11746
11779
  }
11780
+
11747
11781
  return false;
11748
11782
  }
11749
11783
 
11784
+ /**
11785
+ * Generates a unique cell ID in the format cell-YYYY-MM-DD.
11786
+ * @private
11787
+ * @returns {String} The unique cell ID.
11788
+ */
11789
+ getCellId() {
11790
+ if (!this.day || !this.day.date) return '';
11791
+ const date = new Date(this.day.date * 1000);
11792
+ const year = date.getFullYear();
11793
+ const month = String(date.getMonth() + 1).padStart(2, '0');
11794
+ const day = String(date.getDate()).padStart(2, '0');
11795
+ return `cell-${year}-${month}-${day}`;
11796
+ }
11797
+
11798
+ /**
11799
+ * Generates a localized aria-label for the cell button using Intl.DateTimeFormat.
11800
+ * Includes range position and blackout status.
11801
+ * @private
11802
+ * @returns {String} The aria-label string.
11803
+ */
11804
+ getAriaLabel() {
11805
+ if (!this.day || this.day.date === undefined) return '';
11806
+
11807
+ const date = new Date(this.day.date * 1000);
11808
+
11809
+ // Generate localized full date string using the configured locale
11810
+ const dateFormatter = new Intl.DateTimeFormat(this.locale, {
11811
+ weekday: 'long',
11812
+ year: 'numeric',
11813
+ month: 'long',
11814
+ day: 'numeric'
11815
+ });
11816
+
11817
+ let label = dateFormatter.format(date);
11818
+
11819
+ // Append date slot content (e.g. prices) so it is announced with the date.
11820
+ if (this.renderForDateSlot) {
11821
+ const dateSlotEl = this.querySelector(`[slot="date_${this.dateStr}"]`);
11822
+ if (dateSlotEl) {
11823
+ const text = dateSlotEl.innerText?.trim();
11824
+ if (text) {
11825
+ label += `, ${text}`;
11826
+ }
11827
+ }
11828
+ }
11829
+
11830
+ // appending popover content here so that it gets read in a logical order with the other date content.
11831
+ if (this.hasPopoverContent) {
11832
+ const popoverEl = this.querySelector(`[slot="popover_${this.dateStr}"]`);
11833
+ if (popoverEl) {
11834
+ label += `, ${popoverEl.innerText.trim()}`;
11835
+ }
11836
+ }
11837
+
11838
+ // Append range position label for range datepickers
11839
+ const rangePosition = this.getRangePosition();
11840
+ if (rangePosition) {
11841
+ label += `, ${rangePosition}`;
11842
+ }
11843
+
11844
+ // Append blackout label for blackout cells
11845
+ if (this.isBlackout()) {
11846
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
11847
+ }
11848
+
11849
+ return label;
11850
+ }
11851
+
11852
+ /**
11853
+ * Determines the range position of this cell relative to the current selection.
11854
+ * @private
11855
+ * @returns {String|null} Range position label or null if not in range mode.
11856
+ */
11857
+ getRangePosition() {
11858
+ if (!this.datepicker || !this.datepicker.hasAttribute('range')) return null;
11859
+
11860
+ const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
11861
+ if (!Number.isFinite(parsedDateFrom)) return null;
11862
+
11863
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
11864
+ const dayDate = this.day.date;
11865
+
11866
+ const parsedDateTo = Number.parseInt(this.dateTo, 10);
11867
+ const hasDateTo = Number.isFinite(parsedDateTo);
11868
+ const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
11869
+
11870
+ if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
11871
+
11872
+ if (hasDateTo && dayDate === returnTimestamp) return this.datepicker.rangeLabelEnd || 'range end';
11873
+
11874
+ if (dayDate < departTimestamp) return this.datepicker.rangeLabelBeforeRange || 'before range';
11875
+
11876
+ if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
11877
+
11878
+ // After start date, no end date yet, or after end date
11879
+ return this.datepicker.rangeLabelAfterRange || 'after range';
11880
+ }
11881
+
11750
11882
  /**
11751
11883
  * Checks if the current date is the depart date.
11752
11884
  * @private
@@ -11814,12 +11946,12 @@ class AuroCalendarCell extends LitElement {
11814
11946
  }
11815
11947
 
11816
11948
  /**
11817
- * Checks if the current date is a highlighted date.
11818
- * @param {Object} dateStr - The date string in MM_DD_YYYY format.
11819
- * @returns Boolean - True if the date is a highlighted date.
11949
+ * Checks if the current date is a referenced date.
11950
+ * @param {Object} dateStr - The date string in YYYY_MM_DD format.
11951
+ * @returns Boolean - True if the date is a referenced date.
11820
11952
  */
11821
11953
  isReferenceDate(dateStr) {
11822
- // If the datepicker has highlighted dates specified
11954
+ // If the datepicker has referenced dates specified
11823
11955
  if (this.datepicker && this.datepicker.hasAttribute('referenceDates')) {
11824
11956
 
11825
11957
  // Get the referenceDates attribute from the datepicker
@@ -11828,9 +11960,8 @@ class AuroCalendarCell extends LitElement {
11828
11960
  // Guard clause: no dates in the array
11829
11961
  if (!Array.isArray(referenceDates) || referenceDates.length === 0) return false;
11830
11962
 
11831
- // Convert cell dateStr (MM_DD_YYYY) to ISO (YYYY-MM-DD) for comparison
11832
- const [month, day, year] = dateStr.split('_');
11833
- const cellISO = `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
11963
+ // eslint-disable-next-line require-unicode-regexp
11964
+ const cellISO = dateStr.replace(/_/g, '-');
11834
11965
 
11835
11966
  return referenceDates.includes(cellISO);
11836
11967
  }
@@ -11847,12 +11978,16 @@ class AuroCalendarCell extends LitElement {
11847
11978
  if (date === undefined) {
11848
11979
  return '';
11849
11980
  }
11850
- return new Intl.DateTimeFormat(this.locale, {
11851
- weekday: 'long',
11852
- year: 'numeric',
11853
- month: 'long',
11854
- day: 'numeric'
11855
- }).format(new Date(date * 1000));
11981
+ if (!this._titleFormatter || this._titleFormatterLocale !== this.locale) {
11982
+ this._titleFormatter = new Intl.DateTimeFormat(this.locale, {
11983
+ weekday: 'long',
11984
+ year: 'numeric',
11985
+ month: 'long',
11986
+ day: 'numeric'
11987
+ });
11988
+ this._titleFormatterLocale = this.locale;
11989
+ }
11990
+ return this._titleFormatter.format(new Date(date * 1000));
11856
11991
  }
11857
11992
 
11858
11993
  /**
@@ -11880,7 +12015,7 @@ class AuroCalendarCell extends LitElement {
11880
12015
 
11881
12016
  const year = date.getFullYear();
11882
12017
 
11883
- this.dateStr = `${month}_${day}_${year}`;
12018
+ this.dateStr = `${year}_${month}_${day}`;
11884
12019
  }
11885
12020
 
11886
12021
  /**
@@ -11915,9 +12050,9 @@ class AuroCalendarCell extends LitElement {
11915
12050
 
11916
12051
  if (popoverSlotContent) {
11917
12052
  this.appendChild(popoverSlotContent.cloneNode(true));
11918
- this.auroPopover.removeAttribute('disabled');
12053
+ this.hasPopoverContent = true;
11919
12054
  } else {
11920
- this.auroPopover.setAttribute('disabled', true);
12055
+ this.hasPopoverContent = false;
11921
12056
  }
11922
12057
  } catch (err) { // eslint-disable-line no-unused-vars
11923
12058
  // Error handling goes here
@@ -11933,60 +12068,249 @@ class AuroCalendarCell extends LitElement {
11933
12068
  return;
11934
12069
  }
11935
12070
  this.datepicker = calendar.datepicker;
11936
- this.datepicker.addEventListener('auroDatePicker-newSlotContent', () => {
12071
+ this._slotContentHandler = () => {
11937
12072
  this.handleSlotContent();
12073
+ // Force re-render so isBlackout()/aria-disabled reflect updated blackoutDates.
12074
+ this.requestUpdate();
12075
+ };
12076
+ this.datepicker.addEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
12077
+
12078
+ // Cache button reference for imperative class manipulation.
12079
+ this.updateComplete.then(() => {
12080
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
11938
12081
  });
11939
12082
 
12083
+ // Trigger an initial update now that `this.datepicker` is assigned so
12084
+ // cells reflect blackout/slot state that was configured before first render.
12085
+ this.requestUpdate();
12086
+
12087
+ this.calendarMonth = calendarMonth;
12088
+ this.configurePopover();
12089
+ }
12090
+
12091
+ disconnectedCallback() {
12092
+ super.disconnectedCallback();
12093
+ if (this.datepicker && this._slotContentHandler) {
12094
+ this.datepicker.removeEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
12095
+ }
12096
+ }
12097
+
12098
+ /**
12099
+ * Configures the popover instance with the calendar month boundary.
12100
+ * Called from firstUpdated and updated because the popover element is only
12101
+ * rendered after hasPopoverContent becomes true (set by handleSlotContent).
12102
+ * @private
12103
+ * @returns {void}
12104
+ */
12105
+ configurePopover() {
11940
12106
  this.auroPopover = this.shadowRoot.querySelector(this.popoverTag._$litStatic$);
11941
12107
 
11942
- this.auroPopover.boundary = calendarMonth;
12108
+ if (this.auroPopover && this.calendarMonth) {
12109
+ this.auroPopover.boundary = this.calendarMonth;
12110
+ }
11943
12111
  }
11944
12112
 
11945
12113
  updated(properties) {
11946
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('hoveredDate') || properties.has('day')) {
11947
- this.dateChanged(this.dateFrom, this.dateTo, this.hoveredDate, this.day);
12114
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('day')) {
12115
+ this.dateChanged(this.dateFrom, this.dateTo, this.day);
12116
+ }
12117
+
12118
+ if (properties.has('day') && this.day) {
12119
+ this.setDateSlotName();
12120
+ this.handleSlotContent();
12121
+
12122
+ // Re-cache button reference when the day changes (cell may have re-rendered).
12123
+ this.updateComplete.then(() => {
12124
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
12125
+ });
12126
+
12127
+ // Update host-level aria attributes for ariaActiveDescendantElement.
12128
+ this.updateHostAria();
11948
12129
  }
11949
12130
 
11950
- this.setDateSlotName();
11951
- this.handleSlotContent();
12131
+ // Update host aria when selection changes (aria-selected, range labels)
12132
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
12133
+ this.updateHostAria();
12134
+ }
12135
+
12136
+ // Configure popover when it first becomes rendered
12137
+ if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
12138
+ this.updateComplete.then(() => this.configurePopover());
12139
+ }
11952
12140
  }
11953
12141
 
11954
- render() {
12142
+ /**
12143
+ * Updates ARIA attributes on the host element so that
12144
+ * ariaActiveDescendantElement can expose cell info to the SR.
12145
+ * @private
12146
+ * @returns {void}
12147
+ */
12148
+ updateHostAria() {
12149
+ if (!this.day || this.day.date === undefined) return;
12150
+
12151
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12152
+ if (outOfRange) {
12153
+ this.removeAttribute('role');
12154
+ this.removeAttribute('aria-label');
12155
+ return;
12156
+ }
12157
+
12158
+ // The host acts as the gridcell for ariaActiveDescendantElement.
12159
+ this.setAttribute('role', 'gridcell');
12160
+ this.setAttribute('aria-label', this.getAriaLabel());
12161
+ this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
12162
+
12163
+ if (this.isBlackout()) {
12164
+ this.setAttribute('aria-disabled', 'true');
12165
+ } else {
12166
+ this.removeAttribute('aria-disabled');
12167
+ }
12168
+ }
12169
+
12170
+ /**
12171
+ * Programmatically focuses the cell's interactive button element.
12172
+ * Uses focusVisible: true so the :focus-visible ring appears even when
12173
+ * the bib was opened via mouse click (which sets mouse input modality).
12174
+ * @returns {void}
12175
+ */
12176
+ focusButton() {
12177
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
12178
+ if (button) {
12179
+ button.focus({ focusVisible: true });
12180
+ }
12181
+ }
12182
+
12183
+ /**
12184
+ * Imperatively marks this cell as active without triggering a Lit re-render.
12185
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
12186
+ * @returns {void}
12187
+ */
12188
+ setActive() {
12189
+ this.active = true;
12190
+
12191
+ // Show the popover when this cell becomes active via keyboard navigation.
12192
+ if (this.auroPopover) {
12193
+ this.auroPopover.toggleShow();
12194
+ }
12195
+ }
12196
+
12197
+ /**
12198
+ * Imperatively marks this cell as inactive without triggering a Lit re-render.
12199
+ * @returns {void}
12200
+ */
12201
+ clearActive() {
12202
+ this.active = false;
12203
+ const btn = this._cachedButton || this.shadowRoot.querySelector('button.day');
12204
+ if (btn) {
12205
+ btn.classList.remove('activeCell');
12206
+ }
12207
+
12208
+ // Hide the popover when this cell loses active state.
12209
+ if (this.auroPopover) {
12210
+ this.auroPopover.toggleHide();
12211
+ }
12212
+ }
12213
+
12214
+ /**
12215
+ * Updates range preview classes imperatively (no Lit re-render).
12216
+ * Called by the calendar component when the hovered date changes
12217
+ * during range selection (dateFrom set, dateTo not yet set).
12218
+ * @param {Number} hoveredDate - Unix timestamp of the currently hovered/focused date.
12219
+ * @param {Number} dateFrom - Unix timestamp of the selected departure date.
12220
+ * @returns {void}
12221
+ */
12222
+ updateRangePreviewClasses(hoveredDate, dateFrom) {
12223
+ const btn = this._cachedButton;
12224
+ if (!btn || !this.day) return;
12225
+
12226
+ const dayDate = this.day.date;
12227
+ const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
12228
+ const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
12229
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
12230
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
12231
+
12232
+ btn.classList.toggle('inRange', isInRange);
12233
+ btn.classList.toggle('lastHoveredDate', isLastHovered);
12234
+ btn.classList.toggle('rangeDepartDate', isDepartWithPreview);
12235
+ }
12236
+
12237
+ /**
12238
+ * Clears all imperative range preview classes from the cell button.
12239
+ * Called when a selection occurs so classMap becomes the sole source of truth.
12240
+ * @returns {void}
12241
+ */
12242
+ clearRangePreviewClasses() {
12243
+ const btn = this._cachedButton;
12244
+ if (!btn) return;
12245
+
12246
+ btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
12247
+ }
12248
+
12249
+ renderCellButton() {
12250
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12251
+ const blackout = this.isBlackout();
12252
+
12253
+ // Static and selection-driven classes only. Hover-driven classes
12254
+ // (inRange, lastHoveredDate, rangeDepartDate during preview) are
12255
+ // managed imperatively via updateRangePreviewClasses() to avoid
12256
+ // O(N) Lit re-renders on every focus/hover event.
12257
+ const isFirstDay = this.day?.title === 1;
12258
+ const isLastDay = this.day?.date && (() => {
12259
+ const dt = new Date(this.day.date * 1000);
12260
+ return dt.getDate() === new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate();
12261
+ })();
12262
+
11955
12263
  const buttonClasses = {
11956
12264
  'day': true,
11957
- 'body-lg': true,
11958
- 'currentDate': this.currentDate,
12265
+ 'body-default': true,
12266
+ 'currentDate': this.isCurrentDate,
11959
12267
  'selected': this.selected,
11960
- 'inRange': this.hovered && this.isInRange(this.day, this.dateFrom, this.dateTo),
11961
- 'lastHoveredDate': this.isLastHoveredDate(this.day, this.dateFrom, this.dateTo, this.hoveredDate) && this.datepicker && this.datepicker.hasAttribute('range'),
11962
- 'disabled': this.isEnabled(this.day, this.min, this.max, this.disabledDays),
11963
- 'rangeDepartDate': this.isDepartDate(this.day, this.dateFrom) && (this.hoveredDate > this.dateFrom || this.dateTo),
11964
- 'rangeReturnDate': this.isReturnDate(this.day, this.dateFrom, this.dateTo),
12268
+ 'inRange': this.datepicker?.hasAttribute('range') && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo),
12269
+ 'disabled': outOfRange,
12270
+ blackout,
12271
+ 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && this.dateTo,
12272
+ 'rangeReturnDate': this.datepicker?.hasAttribute('range') && this.isReturnDate(this.day, this.dateFrom, this.dateTo),
11965
12273
  'reference': this.isReferenceDate(this.dateStr),
11966
- 'sameDateTrip': this.dateFrom === this.dateTo
12274
+ 'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo,
12275
+ 'firstDayOfMonth': isFirstDay,
12276
+ 'lastDayOfMonth': isLastDay,
11967
12277
  };
11968
12278
 
11969
- let _a, _b;
11970
12279
  return html$1`
11971
- <${this.popoverTag}>
11972
- <slot name="popover_${this.dateStr}"></slot>
11973
- <button
11974
- slot="trigger"
11975
- @click="${this.handleTap}"
11976
- @mouseover="${this.handleHover}"
11977
- @focus="${this.handleHover}"
11978
- class="${classMap(buttonClasses)}"
11979
- ?disabled="${this.disabled}"
11980
- title="${this.getTitle((_a = this.day) === null || _a === void 0 ? void 0 : _a.date)}"
11981
- tabindex="-1">
11982
- <div class="buttonWrapper">
11983
- <div class="currentDayMarker">${(_b = this.day) === null || _b === void 0 ? void 0 : _b.title}</div>
11984
- <div class="dateSlot body-2xs" part="dateSlot">
11985
- <slot name="date_${this.dateStr}"></slot>
11986
- </div>
12280
+ <button
12281
+ slot="trigger"
12282
+ id="${this.getCellId()}"
12283
+ @click="${outOfRange ? undefined : this.handleTap}"
12284
+ @mouseover="${outOfRange ? undefined : this.handleHover}"
12285
+ @focus="${outOfRange ? undefined : this.handleFocus}"
12286
+ class="${classMap(buttonClasses)}"
12287
+ ?disabled="${outOfRange}"
12288
+ aria-hidden="${outOfRange ? 'true' : nothing}"
12289
+ tabindex="-1">
12290
+ <div class="buttonWrapper" aria-hidden="true">
12291
+ <div class="currentDayMarker">${this.day?.title || nothing}</div>
12292
+ <div class="dateSlot body-2xs" part="dateSlot" aria-hidden="true" ?hidden="${!this.renderForDateSlot}">
12293
+ <slot name="date_${this.dateStr}"></slot>
11987
12294
  </div>
11988
- </button>
11989
- </${this.popoverTag}>
12295
+ </div>
12296
+ </button>
12297
+ `;
12298
+ }
12299
+
12300
+ render() {
12301
+ const { hasPopoverContent } = this;
12302
+
12303
+ if (hasPopoverContent) {
12304
+ return html$1`
12305
+ <${this.popoverTag}>
12306
+ <span aria-hidden="true"><slot name="popover_${this.dateStr}"></slot></span>
12307
+ ${this.renderCellButton()}
12308
+ </${this.popoverTag}>
12309
+ `;
12310
+ }
12311
+
12312
+ return html$1`
12313
+ ${this.renderCellButton()}
11990
12314
  `;
11991
12315
  }
11992
12316
  }
@@ -11995,31 +12319,39 @@ if (!customElements.get('auro-formkit-calendar-cell')) {
11995
12319
  customElements.define('auro-formkit-calendar-cell', AuroCalendarCell);
11996
12320
  }
11997
12321
 
12322
+ /* eslint-disable no-underscore-dangle */
12323
+
11998
12324
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
11999
12325
 
12000
- /* eslint-disable no-magic-numbers, dot-location */
12326
+ /* eslint-disable no-magic-numbers */
12327
+
12001
12328
 
12002
12329
  const getMonthNamesFromLocale = (locale) => {
12003
- const fmt = new Intl.DateTimeFormat(locale || 'en-US', { month: 'long' });
12004
- return Array.from({ length: 12 }, (_, i) => fmt.format(new Date(2000, i, 1)));
12330
+ const fmt = new Intl.DateTimeFormat(locale, {
12331
+ month: 'long',
12332
+ timeZone: 'UTC'
12333
+ });
12334
+ // eslint-disable-next-line id-length
12335
+ return Array.from({ length: 12 }, (_, i) => fmt.format(Date.UTC(2000, i, 1)));
12005
12336
  };
12006
12337
 
12007
12338
  /**
12008
- * Generates the localized short names for each day of the week.
12009
- * The list always starts with the day that corresponds to Sunday in the target locale.
12339
+ * Generates the localized narrow names for each day of the week, starting from Sunday.
12340
+ * Uses UTC dates to avoid DST-related day drift across timezones.
12010
12341
  * @private
12011
12342
  * @param {String} locale - The BCP 47 language tag for localization (e.g. "en-US").
12012
- * @returns {Array} An array of seven localized narrow weekday names, starting from Sunday.
12343
+ * @param {String} weekday - The format of the weekday name ('narrow', 'short', 'long').
12344
+ * @returns {Array} An array of seven localized weekday names, starting from Sunday.
12013
12345
  */
12014
- const getWeekdayNames = (locale) => {
12015
- const fmt = new Intl.DateTimeFormat(locale|| 'en-US', { weekday: 'narrow' });
12016
- // Jan 5 2025 is a known Sunday; iterate to get all 7 narrow day names starting from Sunday
12017
- const sundayMs = new Date(2025, 0, 5).getTime();
12018
- const msPerDay = 864e5;
12346
+ const getWeekdayNames = (locale, weekday) => {
12347
+ const fmt = new Intl.DateTimeFormat(locale, {
12348
+ weekday,
12349
+ timeZone: 'UTC'
12350
+ });
12351
+ // Jan 5 2025 is a known Sunday; use Date.UTC to avoid DST-related day drift
12019
12352
  const allDays = [];
12020
12353
  for (let day = 0; day < 7; day += 1) {
12021
- const offsetMs = day * msPerDay;
12022
- allDays.push(fmt.format(new Date(sundayMs + offsetMs)));
12354
+ allDays.push(fmt.format(Date.UTC(2025, 0, 5 + day)));
12023
12355
  }
12024
12356
  return allDays;
12025
12357
  };
@@ -12048,10 +12380,17 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12048
12380
 
12049
12381
  /**
12050
12382
  * BCP 47 locale tag (such as `en-US`) for calendar localization.
12051
- * as wc-range-datepicker expects a `locale` prop, we use `localeCode` to avoid conflicts.
12383
+ * As wc-range-datepicker expects a `locale` prop, we use `localeCode` to avoid conflicts.
12052
12384
  */
12053
12385
  localeCode: {
12054
12386
  type: String
12387
+ },
12388
+
12389
+ /**
12390
+ * Names of all 12 months. When omitted, names are derived from `localeCode`.
12391
+ */
12392
+ monthNames: {
12393
+ type: Array
12055
12394
  }
12056
12395
  };
12057
12396
  }
@@ -12085,13 +12424,32 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12085
12424
  * @returns {String} The name of the month.
12086
12425
  */
12087
12426
  computeCurrentMonthName(month) {
12088
- return this.monthNames?.[month - 1] || getMonthNamesFromLocale(this.localeCode)[month - 1] || '';
12427
+ if (this.monthNames?.[month - 1]) {
12428
+ return this.monthNames[month - 1];
12429
+ }
12430
+ if (!this._cachedMonthNames || this._cachedMonthNamesLocale !== this.localeCode) {
12431
+ this._cachedMonthNames = getMonthNamesFromLocale(this.localeCode);
12432
+ this._cachedMonthNamesLocale = this.localeCode;
12433
+ }
12434
+ return this._cachedMonthNames[month - 1] || '';
12435
+ }
12436
+
12437
+ /**
12438
+ * Returns the unique heading ID for this month, used by aria-labelledby.
12439
+ * @private
12440
+ * @returns {String} The heading ID.
12441
+ */
12442
+ getHeadingId() {
12443
+ return `month-heading-${this.month}-${this.year}`;
12089
12444
  }
12090
12445
 
12446
+
12091
12447
  /**
12092
12448
  * Determines the current month name based on locale.
12449
+ * Also builds parallel arrays of full day names for abbr attributes.
12093
12450
  * This is a rewrite of the function used in the class RangeDatepickerCalendar and should not be removed from here.
12094
12451
  * @private
12452
+ * @param {Object} changedProperties - The properties that have changed since the last update.
12095
12453
  * @returns {void}
12096
12454
  */
12097
12455
  updated(changedProperties) {
@@ -12102,12 +12460,67 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12102
12460
  }
12103
12461
 
12104
12462
  localeChanged() {
12105
- // get localized weekday names based on current locale and store in a property for use in day name rendering
12106
- const allDays = getWeekdayNames(this.localeCode);
12463
+ this.dayNamesOfTheWeek = getWeekdayNames(this.localeCode, 'narrow');
12464
+ this.dayFullNames = getWeekdayNames(this.localeCode, 'long');
12465
+ }
12466
+
12467
+ /**
12468
+ * Renders a day-of-week header with abbr attribute for the full day name.
12469
+ * @private
12470
+ * @param {String} dayOfWeek - The short day name.
12471
+ * @param {Number} index - The index in the dayNamesOfTheWeek array.
12472
+ * @returns {Object} The header HTML.
12473
+ */
12474
+ renderDayOfWeek(dayOfWeek, index) {
12475
+ const fullName = this.dayFullNames ? this.dayFullNames[index] : dayOfWeek;
12476
+ return html`<div class="th body-default" aria-label="${fullName}" role="columnheader">${dayOfWeek}</div>`;
12477
+ }
12478
+
12479
+ /**
12480
+ * Returns all focusable cell elements (enabled + blackout, not out-of-range) in this month.
12481
+ * @returns {Array} Array of auro-formkit-calendar-cell elements.
12482
+ */
12483
+ getFocusableCells() {
12484
+ const cells = Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-cell'));
12485
+ return cells.filter((cell) => {
12486
+ if (!cell.day) {
12487
+ return false;
12488
+ }
12489
+ return !cell.isOutOfRange(cell.day, cell.min, cell.max);
12490
+ });
12491
+ }
12107
12492
 
12108
- // Week starts on Sunday (index 0)
12109
- const firstDayOfWeek = this.locale?.options?.weekStartsOn || 0;
12110
- this.dayNamesOfTheWeek = allDays.slice(firstDayOfWeek).concat(allDays.slice(0, firstDayOfWeek));
12493
+ /**
12494
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
12495
+ * as a reactive property. Instead, just dispatches the event upward so
12496
+ * the calendar can handle range preview imperatively.
12497
+ * @private
12498
+ * @param {CustomEvent} event - The date-is-hovered event from a cell.
12499
+ * @returns {void}
12500
+ */
12501
+ handleDateHovered(event) {
12502
+ this.dispatchEvent(new CustomEvent('hovered-date-changed', {
12503
+ detail: { value: event.detail.date },
12504
+ }));
12505
+ }
12506
+
12507
+ /**
12508
+ * Dispatches a bubbling event when the mouse leaves the date grid body
12509
+ * so the parent calendar can clear the range hover preview.
12510
+ * @private
12511
+ * @returns {void}
12512
+ */
12513
+ handleTbodyMouseLeave() {
12514
+ this.dispatchEvent(new CustomEvent('calendar-month-mouseleave', {
12515
+ bubbles: true,
12516
+ composed: true,
12517
+ }));
12518
+ }
12519
+
12520
+ renderWeek(week) {
12521
+ return html`
12522
+ <div class="tr" role="row">${week.map((day) => this.renderDay(day))}</div>
12523
+ `;
12111
12524
  }
12112
12525
 
12113
12526
  renderDay(day) {
@@ -12120,7 +12533,6 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12120
12533
  .min="${this.min}"
12121
12534
  .max="${this.max}"
12122
12535
  .month="${this.month}"
12123
- .hoveredDate="${this.hoveredDate}"
12124
12536
  .dateTo="${this.dateTo}"
12125
12537
  .dateFrom="${this.dateFrom}"
12126
12538
  .locale="${this.localeCode}"
@@ -12131,7 +12543,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12131
12543
  >
12132
12544
  </auro-formkit-calendar-cell>
12133
12545
  `
12134
- : null}
12546
+ : html`<div aria-hidden="true" inert></div>`}
12135
12547
  </div>
12136
12548
  `;
12137
12549
  }
@@ -12145,7 +12557,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12145
12557
  <div>
12146
12558
  <div class="header">
12147
12559
  ${this.renderPrevButton()}
12148
- <div class="headerTitle heading-xs">
12560
+ <div class="headerTitle heading-xs" id="${this.getHeadingId()}">
12149
12561
  ${this.monthFirst ? html`
12150
12562
  <div>${this.computeCurrentMonthName(this.month)}</div>
12151
12563
  <div>${this.renderYear()}</div>
@@ -12156,14 +12568,13 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
12156
12568
  </div>
12157
12569
  ${this.renderNextButton()}
12158
12570
  </div>
12159
-
12160
- <div class="table">
12571
+ <div class="table" role="grid">
12161
12572
  <div class="thead">
12162
12573
  <div class="tr">
12163
- ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map(dayNameOfWeek => this.renderDayOfWeek(dayNameOfWeek))}
12574
+ ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map((dayNameOfWeek, index) => this.renderDayOfWeek(dayNameOfWeek, index))}
12164
12575
  </div>
12165
12576
  </div>
12166
- <div class="tbody">
12577
+ <div class="tbody" role="rowgroup" @mouseleave="${this.handleTbodyMouseLeave}">
12167
12578
  ${(_b = this.daysOfMonth) === null || _b === void 0 ? void 0 : _b.map(week => this.renderWeek(week))}
12168
12579
  </div>
12169
12580
  </div>
@@ -12861,6 +13272,14 @@ class AuroBibtemplate extends LitElement {
12861
13272
  large: {
12862
13273
  type: Boolean,
12863
13274
  reflect: true
13275
+ },
13276
+
13277
+ /**
13278
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
13279
+ */
13280
+ showFooter: {
13281
+ type: Boolean,
13282
+ reflect: true
12864
13283
  }
12865
13284
  };
12866
13285
  }
@@ -12963,7 +13382,7 @@ class AuroBibtemplate extends LitElement {
12963
13382
  <slot></slot>
12964
13383
  </div>
12965
13384
 
12966
- ${this.isFullscreen ? html$1`
13385
+ ${this.isFullscreen || this.showFooter ? html$1`
12967
13386
  <div id="footerContainer">
12968
13387
  <slot name="footer"></slot>
12969
13388
  </div>` : null}
@@ -12972,7 +13391,7 @@ class AuroBibtemplate extends LitElement {
12972
13391
  }
12973
13392
  }
12974
13393
 
12975
- var formkitVersion$2 = '202606031942';
13394
+ var formkitVersion$2 = '202606181613';
12976
13395
 
12977
13396
  let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=literal`${unsafeStatic(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1=css`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
12978
13397
  `,u$4=css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -13033,7 +13452,7 @@ let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[
13033
13452
 
13034
13453
  var buttonVersion$1 = '12.3.2';
13035
13454
 
13036
- /* eslint-disable no-magic-numbers, no-undef-init, max-lines, lit/binding-positions, lit/no-invalid-html */
13455
+ /* 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 */
13037
13456
 
13038
13457
 
13039
13458
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
@@ -13070,6 +13489,20 @@ class AuroCalendar extends RangeDatepicker {
13070
13489
  this.largeFullscreenHeadline = false;
13071
13490
  this.isFullscreen = false;
13072
13491
 
13492
+ /**
13493
+ * The date of the currently active cell (Unix timestamp).
13494
+ * Only one cell across the entire calendar has tabindex="0" at a time.
13495
+ * @private
13496
+ */
13497
+ this.activeCellDate = null;
13498
+
13499
+ /**
13500
+ * Whether the #calendarGrid wrapper currently has focus.
13501
+ * Used to determine whether the visualFocus ring should be shown.
13502
+ * @private
13503
+ */
13504
+ this._gridHasFocus = false;
13505
+
13073
13506
  /**
13074
13507
  * @private
13075
13508
  */
@@ -13080,6 +13513,12 @@ class AuroCalendar extends RangeDatepicker {
13080
13513
  */
13081
13514
  this.calendarRangeMonths = null;
13082
13515
 
13516
+ /**
13517
+ * Legacy array of disabled-date timestamps.
13518
+ * @private
13519
+ */
13520
+ this.disabledDays = [];
13521
+
13083
13522
  /**
13084
13523
  * @private
13085
13524
  */
@@ -13103,6 +13542,12 @@ class AuroCalendar extends RangeDatepicker {
13103
13542
  this.buttonTag = versioning.generateTag('auro-formkit-datepicker-button', buttonVersion$1, T$1);
13104
13543
 
13105
13544
  this.dropdown = undefined;
13545
+
13546
+ /**
13547
+ * Unique instance ID for the live region element.
13548
+ * @private
13549
+ */
13550
+ this._calendarInstanceId = Date.now().toString(36);
13106
13551
  }
13107
13552
 
13108
13553
  static get styles() {
@@ -13235,14 +13680,17 @@ class AuroCalendar extends RangeDatepicker {
13235
13680
  */
13236
13681
  localeCode: {
13237
13682
  type: String
13683
+ },
13684
+
13685
+ /**
13686
+ * Names of all 12 months. When omitted, names are derived from `localeCode`.
13687
+ */
13688
+ monthNames: {
13689
+ type: Array
13238
13690
  }
13239
13691
  };
13240
13692
  }
13241
13693
 
13242
- localeChanged() {
13243
- // Locale propagation handled via Lit property bindings to child calendar-month elements.
13244
- }
13245
-
13246
13694
  // ─── Read-only *Object properties ─────────────────────────────────────────
13247
13695
 
13248
13696
  /** @returns {Date|undefined} */
@@ -13263,19 +13711,78 @@ class AuroCalendar extends RangeDatepicker {
13263
13711
  /**
13264
13712
  * Updates the month and year when the user navigates to the previous calendar month.
13265
13713
  * @private
13714
+ * @param {Object} [options] - Optional settings.
13715
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
13716
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
13266
13717
  * @returns {void}
13267
13718
  */
13268
- handlePrevMonth() {
13719
+ handlePrevMonth(options) {
13720
+ const opts = options instanceof Event ? {} : options || {};
13721
+ this.clearRangePreview({ force: true });
13269
13722
  this.utilCal.handleMonthChange(this, 'prev');
13723
+ if (!opts.skipActiveUpdate) {
13724
+ this.updateActiveCellForVisibleMonth();
13725
+ }
13726
+ this.announceMonthChange();
13270
13727
  }
13271
13728
 
13272
13729
  /**
13273
13730
  * Updates the month and year when the user navigates to the next calendar month.
13274
13731
  * @private
13732
+ * @param {Object} [options] - Optional settings.
13733
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
13734
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
13275
13735
  * @returns {void}
13276
13736
  */
13277
- handleNextMonth() {
13737
+ handleNextMonth(options) {
13738
+ const opts = options instanceof Event ? {} : options || {};
13739
+ this.clearRangePreview({ force: true });
13278
13740
  this.utilCal.handleMonthChange(this, 'next');
13741
+ if (!opts.skipActiveUpdate) {
13742
+ this.updateActiveCellForVisibleMonth();
13743
+ }
13744
+ this.announceMonthChange();
13745
+ }
13746
+
13747
+ /**
13748
+ * Announces the current month and year via the live region after navigation.
13749
+ * @private
13750
+ * @returns {void}
13751
+ */
13752
+ announceMonthChange() {
13753
+ // Cancel any pending debounced cell announcement so it does not
13754
+ // overwrite this month navigation announcement.
13755
+ if (this._focusAnnounceTimer) {
13756
+ clearTimeout(this._focusAnnounceTimer);
13757
+ this._focusAnnounceTimer = null;
13758
+ }
13759
+
13760
+ const date = this.centralDateObject;
13761
+ const formatter = new Intl.DateTimeFormat(this.localeCode, { month: 'long',
13762
+ year: 'numeric' });
13763
+ this.announceSelection(formatter.format(date));
13764
+ }
13765
+
13766
+ /**
13767
+ * Updates the active cell after month navigation (prev/next buttons).
13768
+ * Always moves the active cell to the first enabled date in the newly
13769
+ * visible months so that tabbing back to the grid lands on an enabled cell.
13770
+ * @private
13771
+ * @returns {void}
13772
+ */
13773
+ updateActiveCellForVisibleMonth() {
13774
+ // Use double-rAF to ensure child month/cell components have fully
13775
+ // rendered and cached their button references before we set tabindex.
13776
+ requestAnimationFrame(() => {
13777
+ requestAnimationFrame(() => {
13778
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
13779
+
13780
+ if (newDate !== null && newDate !== undefined) {
13781
+ this.activeCellDate = newDate;
13782
+ this.setActiveCell(this.activeCellDate);
13783
+ }
13784
+ });
13785
+ });
13279
13786
  }
13280
13787
 
13281
13788
  /**
@@ -13383,7 +13890,1006 @@ class AuroCalendar extends RangeDatepicker {
13383
13890
  this.utilCal.scrollMonthIntoView(this, date, this.format);
13384
13891
  }
13385
13892
 
13893
+ /**
13894
+ * Gets all rendered month components.
13895
+ * @private
13896
+ * @returns {Array} Array of auro-formkit-calendar-month elements.
13897
+ */
13898
+ getMonthComponents() {
13899
+ return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
13900
+ }
13901
+
13902
+ /**
13903
+ * Gets all focusable cells across all rendered months.
13904
+ * @private
13905
+ * @returns {Array} Array of auro-formkit-calendar-cell elements.
13906
+ */
13907
+ getAllFocusableCells() {
13908
+ const months = this.getMonthComponents();
13909
+ let cells = [];
13910
+ months.forEach((month) => {
13911
+ cells = cells.concat(month.getFocusableCells());
13912
+ });
13913
+ return cells;
13914
+ }
13915
+
13916
+ /**
13917
+ * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
13918
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
13919
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
13920
+ * screen readers announce the active cell without moving DOM focus.
13921
+ * @param {Number} date - Unix timestamp of the cell to activate.
13922
+ * @returns {void}
13923
+ */
13924
+ setActiveCell(date) {
13925
+ const allCells = this.getAllFocusableCells();
13926
+
13927
+ let newActiveCell = null;
13928
+ allCells.forEach((cell) => {
13929
+ if (cell.day && cell.day.date === date) {
13930
+ cell.setActive();
13931
+ newActiveCell = cell;
13932
+ } else if (cell.active) {
13933
+ cell.clearActive();
13934
+ }
13935
+ });
13936
+
13937
+ this.activeCellDate = date;
13938
+
13939
+ // Apply activeCell ring only when the grid currently has focus.
13940
+ if (newActiveCell && this._gridHasFocus) {
13941
+ const btn = newActiveCell._cachedButton || newActiveCell.shadowRoot.querySelector('button.day');
13942
+ if (btn) {
13943
+ btn.classList.add('activeCell');
13944
+ }
13945
+ }
13946
+ }
13947
+
13948
+ /**
13949
+ * Focuses the calendar grid wrapper and sets the active cell.
13950
+ * DOM focus stays on the grid wrapper; the aria-live region
13951
+ * tells the screen reader which cell is "active".
13952
+ * @returns {void}
13953
+ */
13954
+ focusActiveCell() {
13955
+ if (this.activeCellDate !== null && this.activeCellDate !== undefined) {
13956
+ this.setActiveCell(this.activeCellDate);
13957
+ }
13958
+
13959
+ const gridWrapper = this.shadowRoot.querySelector('#calendarGrid');
13960
+ if (gridWrapper) {
13961
+ gridWrapper.focus({ preventScroll: true,
13962
+ focusVisible: true });
13963
+ }
13964
+ }
13965
+
13966
+ /**
13967
+ * Shows the activeCell ring when the grid gains focus.
13968
+ * @private
13969
+ * @returns {void}
13970
+ */
13971
+ handleGridFocusIn() {
13972
+ this._gridHasFocus = true;
13973
+ const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
13974
+ if (activeCell) {
13975
+ const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
13976
+ if (btn) {
13977
+ btn.classList.add('activeCell');
13978
+ }
13979
+ }
13980
+ }
13981
+
13982
+ /**
13983
+ * Hides the activeCell ring when the grid loses focus.
13984
+ * @private
13985
+ * @returns {void}
13986
+ */
13987
+ handleGridFocusOut() {
13988
+ this._gridHasFocus = false;
13989
+ // Remove activeCell from ALL cells to prevent stale rings.
13990
+ const allCells = this.getAllFocusableCells();
13991
+ for (const cell of allCells) {
13992
+ const btn = cell._cachedButton || cell.shadowRoot.querySelector('button.day');
13993
+ if (btn) {
13994
+ btn.classList.remove('activeCell');
13995
+ }
13996
+ }
13997
+ // Clear range hover preview so no highlight lingers after focus leaves the grid.
13998
+ this.clearRangePreview();
13999
+ }
14000
+
14001
+ /**
14002
+ * Computes the initial active date from data properties alone — no DOM required.
14003
+ * Priority:
14004
+ * 1. Selected date (dateFrom) if within range
14005
+ * 2. Today's date if not disabled (in-range and not blackout)
14006
+ * 3. First future non-disabled date (scans day-by-day from today up to 1 year)
14007
+ * 4. First previous non-disabled date (scans day-by-day from today up to 1 year)
14008
+ * 5. First enabled date in finite [min, max] range
14009
+ * 5b. First enabled date scanning forward from finite min (unbounded max)
14010
+ * 5c. First enabled date scanning backward from finite max (unbounded min)
14011
+ * 6. First in-range date (even if blackout) so focus can land somewhere
14012
+ * 7. Undefined — no valid target.
14013
+ *
14014
+ * @private
14015
+ * @param {Object} [options] - Optional settings.
14016
+ * @param {boolean} [options.skipDateFrom=false] - When true, skip the selected-date
14017
+ * shortcut (step 1). Used after month navigation so the active cell lands in the
14018
+ * newly visible month instead of jumping back to the selected date's month.
14019
+ * @returns {Number|undefined} Unix timestamp (seconds) of the date to activate, or undefined.
14020
+ */
14021
+ computeActiveDate(options = {}) {
14022
+ const MAX_SCAN_DAYS = 366; // scan at most ~1 year in each direction
14023
+
14024
+ /**
14025
+ * Adds days to a timestamp using Date arithmetic to handle DST correctly.
14026
+ * Returns a local-midnight-aligned timestamp in seconds.
14027
+ * @param {Number} ts - Unix timestamp in seconds.
14028
+ * @param {Number} days - Number of days to add.
14029
+ * @returns {Number} The adjusted timestamp in seconds.
14030
+ */
14031
+ const addDays = (ts, days) => {
14032
+ const date = new Date(ts * 1000);
14033
+ date.setDate(date.getDate() + days);
14034
+ date.setHours(0, 0, 0, 0);
14035
+ return Math.floor(date.getTime() / 1000);
14036
+ };
14037
+
14038
+ const rawMin = this.minDateObject?.getTime() / 1000;
14039
+ const rawMax = this.maxDateObject?.getTime() / 1000;
14040
+
14041
+ // When min/max are NaN (no minDate/maxDate configured), treat as unbounded.
14042
+ const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
14043
+ const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
14044
+
14045
+ // Build a Set of blackout timestamps for O(1) lookup.
14046
+ const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
14047
+
14048
+ // Also include ISO-format blackoutDates from the datepicker if available.
14049
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
14050
+ const isoBlackouts = this.datepicker?.blackoutDates;
14051
+ if (Array.isArray(isoBlackouts)) {
14052
+ for (const isoStr of isoBlackouts) {
14053
+ const parts = isoStr.split('-');
14054
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
14055
+ if (Number.isFinite(ts)) {
14056
+ blackoutSet.add(ts);
14057
+ }
14058
+ }
14059
+ }
14060
+
14061
+ /**
14062
+ * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
14063
+ * it is within [min, max] AND not a blackout day.
14064
+ * @param {Number} ts - Unix timestamp in seconds.
14065
+ * @returns {boolean} True if the date is enabled.
14066
+ */
14067
+ const isEnabled = (ts) => ts >= minTs && ts <= maxTs && !blackoutSet.has(ts);
14068
+
14069
+ /**
14070
+ * A date is "in range" (focusable in the grid) when it is within [min, max].
14071
+ * Blackout dates are focusable but not selectable.
14072
+ * @param {Number} ts - Unix timestamp in seconds.
14073
+ * @returns {boolean} True if the date is in range.
14074
+ */
14075
+ const isInRange = (ts) => ts >= minTs && ts <= maxTs;
14076
+
14077
+ // 1. Selected date — always valid target if within range (user chose it).
14078
+ // Skipped when called from month navigation so the active cell lands in
14079
+ // the newly visible month rather than the (possibly off-screen) selection.
14080
+ if (!options.skipDateFrom && this.dateFrom) {
14081
+ const parsedFrom = parseInt(this.dateFrom, 10);
14082
+ if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) {
14083
+ return parsedFrom;
14084
+ }
14085
+ }
14086
+
14087
+ // 2. Today's date (midnight-aligned) if enabled.
14088
+ const now = Math.floor(new Date().setHours(0, 0, 0, 0) / 1000);
14089
+
14090
+ // When centralDate is configured, prefer a date within the month(s) that
14091
+ // will actually be rendered. If today falls outside the visible range, an
14092
+ // active cell set to today would have no matching DOM element and keyboard
14093
+ // focus could not enter the calendar.
14094
+
14095
+ if (this.centralDateObject) {
14096
+ const centralMonth = this.centralDateObject.getMonth();
14097
+ const centralYear = this.centralDateObject.getFullYear();
14098
+ const todayDate = new Date(now * 1000);
14099
+ const todayMonth = todayDate.getMonth();
14100
+ const todayYear = todayDate.getFullYear();
14101
+
14102
+ // Today is outside the centralDate's month — scan for an enabled date
14103
+ // within the visible month instead.
14104
+ if (todayMonth !== centralMonth || todayYear !== centralYear) {
14105
+ const visibleStart = new Date(centralYear, centralMonth, 1);
14106
+ visibleStart.setHours(0, 0, 0, 0);
14107
+ const visibleEnd = new Date(centralYear, centralMonth + 1, 0); // last day of month
14108
+ visibleEnd.setHours(0, 0, 0, 0);
14109
+ const startTs = Math.floor(visibleStart.getTime() / 1000);
14110
+ const daysInMonth = visibleEnd.getDate();
14111
+
14112
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
14113
+ const ts = addDays(startTs, idx);
14114
+ if (isEnabled(ts)) {
14115
+ return ts;
14116
+ }
14117
+ }
14118
+
14119
+ // No enabled date in the visible month — fall back to first in-range
14120
+ // date in the month so focus still lands on a focusable cell.
14121
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
14122
+ const ts = addDays(startTs, idx);
14123
+ if (isInRange(ts)) {
14124
+ return ts;
14125
+ }
14126
+ }
14127
+ }
14128
+ }
14129
+
14130
+ if (isEnabled(now)) {
14131
+ return now;
14132
+ }
14133
+
14134
+ // When a centralDate is configured (or inferred), constrain the scan to the
14135
+ // rendered month(s) first so a single-month calendar does not pick a date
14136
+ // that has no DOM cell. Determine the visible range based on centralDate and
14137
+ // the number of rendered months.
14138
+ const renderedMonths = Math.max(this.numCalendars, 1);
14139
+ const visibleAnchor = this.centralDateObject ?? new Date(now * 1000);
14140
+ const visMonthStart = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth(), 1);
14141
+ visMonthStart.setHours(0, 0, 0, 0);
14142
+ const visMonthEnd = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth() + renderedMonths, 0);
14143
+ visMonthEnd.setHours(0, 0, 0, 0);
14144
+ const visStartTs = Math.floor(visMonthStart.getTime() / 1000);
14145
+ const visEndTs = Math.floor(visMonthEnd.getTime() / 1000);
14146
+ const visDays = Math.round((visEndTs - visStartTs) / 86400) + 1;
14147
+
14148
+ // Scan visible months for an enabled date.
14149
+ for (let idx = 0; idx < visDays; idx += 1) {
14150
+ const ts = addDays(visStartTs, idx);
14151
+ if (isEnabled(ts)) {
14152
+ return ts;
14153
+ }
14154
+ }
14155
+
14156
+ // No enabled date in visible months — try an in-range (focusable) date so
14157
+ // keyboard focus still has a tabindex="0" target.
14158
+ for (let idx = 0; idx < visDays; idx += 1) {
14159
+ const ts = addDays(visStartTs, idx);
14160
+ if (isInRange(ts)) {
14161
+ return ts;
14162
+ }
14163
+ }
14164
+
14165
+ // 3. First future enabled date (scan forward from tomorrow, capped by max and MAX_SCAN_DAYS).
14166
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
14167
+ const ts = addDays(now, idx);
14168
+ if (Number.isFinite(maxTs) && ts > maxTs) {
14169
+ break;
14170
+ }
14171
+ if (isEnabled(ts)) {
14172
+ return ts;
14173
+ }
14174
+ }
14175
+
14176
+ // 4. First previous enabled date (scan backward from yesterday, capped by min and MAX_SCAN_DAYS).
14177
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
14178
+ const ts = addDays(now, -idx);
14179
+ if (Number.isFinite(minTs) && ts < minTs) {
14180
+ break;
14181
+ }
14182
+ if (isEnabled(ts)) {
14183
+ return ts;
14184
+ }
14185
+ }
14186
+
14187
+ // 5. If scans missed (e.g. min/max range is far from today), fall back to
14188
+ // the first enabled date in the [min, max] range.
14189
+ if (Number.isFinite(minTs) && Number.isFinite(maxTs)) {
14190
+ let ts = minTs;
14191
+ for (let idx = 0; ts <= maxTs; idx += 1) {
14192
+ if (isEnabled(ts)) {
14193
+ return ts;
14194
+ }
14195
+ ts = addDays(minTs, idx + 1);
14196
+ }
14197
+ }
14198
+
14199
+ // 5b. Finite min with unbounded max (e.g. minDate far in the future):
14200
+ // scan forward from min for up to MAX_SCAN_DAYS.
14201
+ if (Number.isFinite(minTs) && !Number.isFinite(maxTs)) {
14202
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
14203
+ const ts = addDays(minTs, idx);
14204
+ if (isEnabled(ts)) {
14205
+ return ts;
14206
+ }
14207
+ }
14208
+ }
14209
+
14210
+ // 5c. Unbounded min with a finite max far in the past (e.g. birth-date picker):
14211
+ // scan backward from max for up to MAX_SCAN_DAYS.
14212
+ if (!Number.isFinite(minTs) && Number.isFinite(maxTs)) {
14213
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
14214
+ const ts = addDays(maxTs, -idx);
14215
+ if (isEnabled(ts)) {
14216
+ return ts;
14217
+ }
14218
+ }
14219
+ }
14220
+
14221
+ // 6. All dates are blackout — fall back to the first in-range date so focus
14222
+ // still lands on a focusable (but not selectable) cell.
14223
+ if (Number.isFinite(minTs) && isInRange(minTs)) {
14224
+ return minTs;
14225
+ }
14226
+ if (isInRange(now)) {
14227
+ return now;
14228
+ }
14229
+
14230
+ return undefined;
14231
+ }
14232
+
14233
+ /**
14234
+ * Checks if a target date (unix seconds) is within the configured [min, max] range.
14235
+ * Returns false if the date falls outside the range, preventing navigation
14236
+ * to months where all dates are disabled.
14237
+ * @private
14238
+ * @param {Number} targetTs - Unix timestamp in seconds.
14239
+ * @returns {Boolean} True if the date is within range.
14240
+ */
14241
+ isDateInRange(targetTs) {
14242
+ const rawMin = this.minDateObject?.getTime() / 1000;
14243
+ const rawMax = this.maxDateObject?.getTime() / 1000;
14244
+ if (Number.isFinite(rawMin) && targetTs < rawMin) {
14245
+ return false;
14246
+ }
14247
+ if (Number.isFinite(rawMax) && targetTs > rawMax) {
14248
+ return false;
14249
+ }
14250
+ return true;
14251
+ }
14252
+
14253
+ /**
14254
+ * Handles arrow key navigation on the calendar grid wrapper.
14255
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
14256
+ * and the visual active-cell indicator change.
14257
+ * @private
14258
+ * @param {KeyboardEvent} event - The keyboard event.
14259
+ * @returns {void}
14260
+ */
14261
+ handleGridKeyDown(event) {
14262
+ const { key } = event;
14263
+ const actionKeys = [
14264
+ 'ArrowRight',
14265
+ 'ArrowLeft',
14266
+ 'ArrowDown',
14267
+ 'ArrowUp',
14268
+ 'Enter',
14269
+ ' '
14270
+ ];
14271
+
14272
+ if (!actionKeys.includes(key)) {
14273
+ return;
14274
+ }
14275
+
14276
+ event.preventDefault();
14277
+
14278
+ const allCells = this.getAllFocusableCells();
14279
+ if (allCells.length === 0) {
14280
+ return;
14281
+ }
14282
+
14283
+ const activeCell = allCells.find((cell) => cell.active);
14284
+ if (!activeCell) {
14285
+ return;
14286
+ }
14287
+
14288
+ // Handle Enter/Space to select the active cell
14289
+ if (key === 'Enter' || key === ' ') {
14290
+ activeCell.handleTap();
14291
+ return;
14292
+ }
14293
+
14294
+ const activeIndex = allCells.indexOf(activeCell);
14295
+
14296
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
14297
+ const direction = key === 'ArrowRight' ? 1 : -1;
14298
+ const targetIndex = activeIndex + direction;
14299
+
14300
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
14301
+ // Target cell exists in rendered months
14302
+ this.setActiveCell(allCells[targetIndex].day.date);
14303
+ this.scrollToActiveCell();
14304
+ // Dispatch focus event for the cell so live region + range preview update
14305
+ this.handleCellFocused({ detail: { date: allCells[targetIndex].day.date } });
14306
+ } else {
14307
+ // At boundary — need to navigate to next/prev month
14308
+ const navDir = direction === 1 ? 'next' : 'prev';
14309
+ const targetDate = new Date(activeCell.day.date * 1000);
14310
+ targetDate.setDate(targetDate.getDate() + direction);
14311
+ targetDate.setHours(0, 0, 0, 0);
14312
+ const targetTs = Math.floor(targetDate.getTime() / 1000);
14313
+
14314
+ if (this.isDateInRange(targetTs) && ((navDir === 'next' && this.showNextMonthBtn) || (navDir === 'prev' && this.showPrevMonthBtn))) { // eslint-disable-line no-extra-parens
14315
+
14316
+ if (navDir === 'next') {
14317
+ this.handleNextMonth({ skipActiveUpdate: true });
14318
+ } else {
14319
+ this.handlePrevMonth({ skipActiveUpdate: true });
14320
+ }
14321
+ requestAnimationFrame(() => {
14322
+ requestAnimationFrame(() => {
14323
+ const cells = this.getAllFocusableCells();
14324
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
14325
+ if (target) {
14326
+ this.setActiveCell(target.day.date);
14327
+ this.handleCellFocused({ detail: { date: target.day.date } });
14328
+ } else if (cells.length > 0) {
14329
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
14330
+ this.setActiveCell(fallback.day.date);
14331
+ this.handleCellFocused({ detail: { date: fallback.day.date } });
14332
+ }
14333
+ // Re-focus grid wrapper after month change re-render
14334
+ this.focusActiveCell();
14335
+ });
14336
+ });
14337
+ }
14338
+ }
14339
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
14340
+ const increment = key === 'ArrowDown' ? 7 : -7;
14341
+ const currentDate = new Date(activeCell.day.date * 1000);
14342
+ currentDate.setDate(currentDate.getDate() + increment);
14343
+ currentDate.setHours(0, 0, 0, 0);
14344
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
14345
+
14346
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
14347
+
14348
+ if (targetCell) {
14349
+ this.setActiveCell(targetCell.day.date);
14350
+ this.scrollToActiveCell();
14351
+ this.handleCellFocused({ detail: { date: targetCell.day.date } });
14352
+ } else if (this.isDateInRange(targetDate)) {
14353
+ // Target might be in an unrendered month
14354
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
14355
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
14356
+ if (navDirection === 'next') {
14357
+ this.handleNextMonth({ skipActiveUpdate: true });
14358
+ } else {
14359
+ this.handlePrevMonth({ skipActiveUpdate: true });
14360
+ }
14361
+ requestAnimationFrame(() => {
14362
+ requestAnimationFrame(() => {
14363
+ const cells = this.getAllFocusableCells();
14364
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14365
+ if (target) {
14366
+ this.setActiveCell(target.day.date);
14367
+ this.handleCellFocused({ detail: { date: target.day.date } });
14368
+ } else if (cells.length > 0) {
14369
+ let nearest = null;
14370
+
14371
+ if (navDirection === 'next') {
14372
+ [nearest] = cells;
14373
+ } else {
14374
+ nearest = cells[cells.length - 1];
14375
+ }
14376
+ this.setActiveCell(nearest.day.date);
14377
+ this.handleCellFocused({ detail: { date: nearest.day.date } });
14378
+ }
14379
+ this.focusActiveCell();
14380
+ });
14381
+ });
14382
+ }
14383
+ }
14384
+ }
14385
+ }
14386
+
14387
+ /**
14388
+ * Handles cross-month boundary navigation events from month components.
14389
+ * @private
14390
+ * @param {CustomEvent} event - The boundary event with direction and source date info.
14391
+ * @returns {void}
14392
+ */
14393
+ handleMonthBoundary(event) {
14394
+ const { direction, fromDate, key } = event.detail;
14395
+
14396
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
14397
+ // Linear navigation: find adjacent focusable cell across months
14398
+ const allCells = this.getAllFocusableCells();
14399
+ const currentIndex = allCells.findIndex((cell) => cell.day && cell.day.date === fromDate);
14400
+
14401
+ if (currentIndex === -1) {
14402
+ return;
14403
+ }
14404
+
14405
+ let targetIndex = -1;
14406
+ if (direction === 'next') {
14407
+ targetIndex = currentIndex + 1;
14408
+ }
14409
+
14410
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
14411
+ const targetCell = allCells[targetIndex];
14412
+ this.setActiveCell(targetCell.day.date);
14413
+ this.scrollToActiveCell();
14414
+ this.focusActiveCell();
14415
+ } else if (direction === 'next' && this.showNextMonthBtn) {
14416
+ // Navigate to next month and focus the computed next date.
14417
+ // Using the target date (fromDate + 1 day) instead of cells[0]
14418
+ // avoids jumping backward in range datepickers where cells[0]
14419
+ // belongs to the previous (still-rendered) month.
14420
+ const nextDate = new Date(fromDate * 1000);
14421
+ nextDate.setDate(nextDate.getDate() + 1);
14422
+ nextDate.setHours(0, 0, 0, 0);
14423
+ const nextTs = Math.floor(nextDate.getTime() / 1000);
14424
+
14425
+ if (!this.isDateInRange(nextTs)) {
14426
+ return;
14427
+ }
14428
+
14429
+ this.handleNextMonth({ skipActiveUpdate: true });
14430
+ requestAnimationFrame(() => {
14431
+ requestAnimationFrame(() => {
14432
+ const cells = this.getAllFocusableCells();
14433
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
14434
+ if (target) {
14435
+ this.setActiveCell(target.day.date);
14436
+ this.focusActiveCell();
14437
+ } else if (cells.length > 0) {
14438
+ // Fallback: first cell of the last rendered month
14439
+ this.setActiveCell(cells[cells.length - 1].day.date);
14440
+ this.focusActiveCell();
14441
+ }
14442
+ });
14443
+ });
14444
+ } else if (direction === 'prev' && this.showPrevMonthBtn) {
14445
+ // Navigate to previous month and focus the computed previous date.
14446
+ const prevDate = new Date(fromDate * 1000);
14447
+ prevDate.setDate(prevDate.getDate() - 1);
14448
+ prevDate.setHours(0, 0, 0, 0);
14449
+ const prevTs = Math.floor(prevDate.getTime() / 1000);
14450
+
14451
+ if (!this.isDateInRange(prevTs)) {
14452
+ return;
14453
+ }
14454
+
14455
+ this.handlePrevMonth({ skipActiveUpdate: true });
14456
+ requestAnimationFrame(() => {
14457
+ requestAnimationFrame(() => {
14458
+ const cells = this.getAllFocusableCells();
14459
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
14460
+ if (target) {
14461
+ this.setActiveCell(target.day.date);
14462
+ this.focusActiveCell();
14463
+ } else if (cells.length > 0) {
14464
+ // Fallback: last cell of the first rendered month
14465
+ this.setActiveCell(cells[0].day.date);
14466
+ this.focusActiveCell();
14467
+ }
14468
+ });
14469
+ });
14470
+ }
14471
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
14472
+ // Vertical navigation: find same day-of-week +/- 7 days
14473
+ // Use Date arithmetic instead of fixed seconds to handle DST correctly
14474
+ const increment = key === 'ArrowDown' ? 7 : -7;
14475
+ const currentDate = new Date(fromDate * 1000);
14476
+ currentDate.setDate(currentDate.getDate() + increment);
14477
+ currentDate.setHours(0, 0, 0, 0);
14478
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
14479
+
14480
+ const allCells = this.getAllFocusableCells();
14481
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
14482
+
14483
+ if (targetCell) {
14484
+ this.setActiveCell(targetCell.day.date);
14485
+ this.scrollToActiveCell();
14486
+ this.focusActiveCell();
14487
+ } else if (this.isDateInRange(targetDate)) {
14488
+ // Target might be in an unrendered month, navigate there
14489
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
14490
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
14491
+ if (navDirection === 'next') {
14492
+ this.handleNextMonth({ skipActiveUpdate: true });
14493
+ } else {
14494
+ this.handlePrevMonth({ skipActiveUpdate: true });
14495
+ }
14496
+ requestAnimationFrame(() => {
14497
+ requestAnimationFrame(() => {
14498
+ const cells = this.getAllFocusableCells();
14499
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14500
+ if (target) {
14501
+ this.setActiveCell(target.day.date);
14502
+ this.focusActiveCell();
14503
+ } else if (cells.length > 0) {
14504
+ // Clamp to nearest focusable cell
14505
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
14506
+ this.setActiveCell(nearest.day.date);
14507
+ this.focusActiveCell();
14508
+ }
14509
+ });
14510
+ });
14511
+ }
14512
+ }
14513
+ }
14514
+ }
14515
+
14516
+ /**
14517
+ * Handles cell activation events from month components.
14518
+ * @private
14519
+ * @param {CustomEvent} event - The activation event with target date.
14520
+ * @returns {void}
14521
+ */
14522
+ handleCellActivate(event) {
14523
+ const { date } = event.detail;
14524
+ this.setActiveCell(date);
14525
+
14526
+ // Don't call focusActiveCell() here. The tap/click already placed
14527
+ // focus on the cell button, and moving it to #calendarGrid would
14528
+ // trigger focusout on the button, closing any open popover on the
14529
+ // cell. Keyboard events are composed and still bubble through
14530
+ // shadow DOM boundaries to the grid's @keydown handler, so
14531
+ // subsequent keyboard navigation continues to work.
14532
+ }
14533
+
14534
+ /**
14535
+ * Handles focus events from calendar cells.
14536
+ * Updates the live region with an SR announcement and triggers
14537
+ * the imperative range preview if applicable.
14538
+ * @private
14539
+ * @param {CustomEvent} event - The calendar-cell-focused event.
14540
+ * @returns {void}
14541
+ */
14542
+ handleCellFocused(event) {
14543
+ const { date } = event.detail;
14544
+ if (date === null) {
14545
+ return;
14546
+ }
14547
+
14548
+ // With aria-activedescendant, the button no longer receives native focus,
14549
+ // so we use the debounced live region for the full context announcement.
14550
+ const announcement = this.buildFocusAnnouncement(date);
14551
+ this.announceFocusDebounced(announcement);
14552
+
14553
+ // Update the range preview imperatively if in range-preview mode.
14554
+ this.updateRangePreview(date);
14555
+ }
14556
+
14557
+ /**
14558
+ * Builds a full SR announcement string for a focused cell date.
14559
+ * Includes the localized date, range position, popover content,
14560
+ * and blackout status.
14561
+ * @private
14562
+ * @param {Number} date - Unix timestamp (seconds) of the focused cell.
14563
+ * @returns {String} The announcement string.
14564
+ */
14565
+ buildFocusAnnouncement(date) {
14566
+ let label = this.formatAnnouncementDate(date);
14567
+
14568
+ // Append date slot content (e.g. prices) if present.
14569
+ const dateObj = new Date(date * 1000);
14570
+ const mm = String(dateObj.getMonth() + 1).padStart(2, '0');
14571
+ const dd = String(dateObj.getDate()).padStart(2, '0');
14572
+ const yyyy = dateObj.getFullYear();
14573
+ const dateStr = `${yyyy}_${mm}_${dd}`;
14574
+ const dateSlotEl = this.datepicker?.querySelector(`[slot="date_${dateStr}"]`);
14575
+ if (dateSlotEl) {
14576
+ const text = dateSlotEl.innerText?.trim();
14577
+ if (text) {
14578
+ label += `, ${text}`;
14579
+ }
14580
+ }
14581
+
14582
+ // Append popover content if present.
14583
+ const popoverEl = this.datepicker?.querySelector(`[slot="popover_${dateStr}"]`);
14584
+ if (popoverEl) {
14585
+ const text = popoverEl.innerText?.trim();
14586
+ if (text) {
14587
+ label += `, ${text}`;
14588
+ }
14589
+ }
14590
+
14591
+ // Append range position context.
14592
+ if (this.datepicker?.hasAttribute('range')) {
14593
+ const rangeLabel = this.getRangePositionLabel(date);
14594
+ if (rangeLabel) {
14595
+ label += `, ${rangeLabel}`;
14596
+ }
14597
+ }
14598
+
14599
+ // Append blackout label.
14600
+ if (this.isDateBlackout(date)) {
14601
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
14602
+ }
14603
+
14604
+ return label;
14605
+ }
14606
+
14607
+ /**
14608
+ * Determines the range position label for a given date.
14609
+ * @private
14610
+ * @param {Number} date - Unix timestamp (seconds).
14611
+ * @returns {String|null} The range position label, or null.
14612
+ */
14613
+ getRangePositionLabel(date) {
14614
+ const parsedFrom = Number.parseInt(this.dateFrom, 10);
14615
+ if (!Number.isFinite(parsedFrom)) {
14616
+ return null;
14617
+ }
14618
+
14619
+ const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
14620
+ const parsedTo = Number.parseInt(this.dateTo, 10);
14621
+ const hasTo = Number.isFinite(parsedTo);
14622
+ const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
14623
+
14624
+ if (date === departTs) {
14625
+ return this.datepicker.rangeLabelStart || 'range start';
14626
+ }
14627
+ if (hasTo && date === returnTs) {
14628
+ return this.datepicker.rangeLabelEnd || 'range end';
14629
+ }
14630
+ if (date < departTs) {
14631
+ return this.datepicker.rangeLabelBeforeRange || 'before range';
14632
+ }
14633
+ if (hasTo && date > departTs && date < returnTs) {
14634
+ return this.datepicker.rangeLabelInRange || 'in range';
14635
+ }
14636
+ return this.datepicker.rangeLabelAfterRange || 'after range';
14637
+ }
14638
+
14639
+ /**
14640
+ * Checks whether a given date is a blackout date.
14641
+ * @private
14642
+ * @param {Number} dateTs - Unix timestamp (seconds).
14643
+ * @returns {Boolean} True if the date is blacked out.
14644
+ */
14645
+ isDateBlackout(dateTs) {
14646
+ // Check legacy disabledDays.
14647
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
14648
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
14649
+ return true;
14650
+ }
14651
+ }
14652
+
14653
+ // Check ISO blackoutDates.
14654
+ const blackoutDates = this.datepicker?.blackoutDates;
14655
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
14656
+ const date = new Date(dateTs * 1000);
14657
+ const yyyy = date.getFullYear();
14658
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
14659
+ const dd = String(date.getDate()).padStart(2, '0');
14660
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
14661
+ return true;
14662
+ }
14663
+ }
14664
+
14665
+ return false;
14666
+ }
14667
+
14668
+ /**
14669
+ * Updates the range preview classes imperatively across all cells.
14670
+ * Only active when in range mode with dateFrom set and dateTo not yet set.
14671
+ * @private
14672
+ * @param {Number} hoveredDate - Unix timestamp of the hovered/focused date.
14673
+ * @returns {void}
14674
+ */
14675
+ updateRangePreview(hoveredDate) {
14676
+ if (this.noRange || !this.dateFrom || this.dateTo) {
14677
+ return;
14678
+ }
14679
+
14680
+ const parsedDateFrom = parseInt(this.dateFrom, 10);
14681
+ const allCells = this.getAllFocusableCells();
14682
+
14683
+ allCells.forEach((cell) => {
14684
+ cell.updateRangePreviewClasses(hoveredDate, parsedDateFrom);
14685
+ });
14686
+ }
14687
+
14688
+ /**
14689
+ * Clears range preview classes from all cells.
14690
+ * @private
14691
+ * @param {Object} [options] - Optional settings.
14692
+ * @param {boolean} [options.force=false] - When true, clears classes even
14693
+ * when both dateFrom and dateTo are set. Used by month nav handlers
14694
+ * since the subsequent re-render re-applies classMap-managed classes,
14695
+ * while `lastHoveredDate` (not in classMap) would otherwise persist.
14696
+ * @returns {void}
14697
+ */
14698
+ clearRangePreview(options) {
14699
+ const opts = options instanceof Event ? {} : options || {};
14700
+ if (!opts.force && this.dateFrom && this.dateTo) {
14701
+ return;
14702
+ }
14703
+
14704
+ const allCells = this.getAllFocusableCells();
14705
+ allCells.forEach((cell) => {
14706
+ cell.clearRangePreviewClasses();
14707
+ });
14708
+ }
14709
+
14710
+ /**
14711
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
14712
+ * as a reactive property. Instead, handles the range preview imperatively.
14713
+ * @private
14714
+ * @param {CustomEvent} event - The hovered-date-changed event from a month.
14715
+ * @returns {void}
14716
+ */
14717
+ hoveredDateChanged(event) {
14718
+ const hoveredDate = event.detail.value;
14719
+ this.updateRangePreview(hoveredDate);
14720
+ }
14721
+
14722
+ /**
14723
+ * Scrolls the calendar to ensure the month containing the active cell is visible.
14724
+ * @private
14725
+ * @returns {void}
14726
+ */
14727
+ scrollToActiveCell() {
14728
+ if (this.activeCellDate === null || this.activeCellDate === undefined) {
14729
+ return;
14730
+ }
14731
+
14732
+ const date = new Date(this.activeCellDate * 1000);
14733
+ const month = date.getMonth() + 1;
14734
+ const year = date.getFullYear();
14735
+ const selector = `#month-${month}-${year}`;
14736
+ const monthElem = this.shadowRoot.querySelector(selector);
14737
+
14738
+ if (monthElem) {
14739
+ const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
14740
+ monthElem.scrollIntoView({ block: 'nearest',
14741
+ behavior: prefersReducedMotion ? 'instant' : 'smooth' });
14742
+ }
14743
+ }
14744
+
14745
+ /**
14746
+ * Returns (and lazily creates) an aria-live region inside the dropdown's
14747
+ * <dialog> element. This placement is critical for two reasons:
14748
+ *
14749
+ * 1. Inside the dialog's accessible scope — dialog.showModal() makes
14750
+ * everything outside the top-layer dialog inert, and desktop modal
14751
+ * mode uses _setPageInert() on document.body siblings. A live region
14752
+ * on document.body would be invisible to screen readers in both cases.
14753
+ *
14754
+ * 2. Not nested in shadow DOM — Chrome inconsistently observes aria-live
14755
+ * mutations inside shadow DOM across machines and versions. The dialog
14756
+ * element is only one shadow root deep (the dropdown bib's shadow DOM),
14757
+ * which Chrome handles reliably. The calendar's own shadow DOM (nested
14758
+ * inside the bib via slotting) is two+ levels deep and unreliable.
14759
+ *
14760
+ * @private
14761
+ * @returns {HTMLElement} The live region element.
14762
+ */
14763
+ getOrCreateLiveRegion() {
14764
+ if (this._liveRegion && this._liveRegion.isConnected) {
14765
+ return this._liveRegion;
14766
+ }
14767
+
14768
+ // Access the dialog element inside the dropdown bib's shadow DOM.
14769
+ const dialog = this.dropdown?.bibContent?.shadowRoot?.querySelector('dialog');
14770
+ if (!dialog) {
14771
+ return null;
14772
+ }
14773
+
14774
+ // Check if we already created one for this calendar instance.
14775
+ const regionId = `auro-calendar-live-${this._calendarInstanceId}`;
14776
+ const existing = dialog.querySelector(`#${regionId}`);
14777
+ if (existing) {
14778
+ this._liveRegion = existing;
14779
+ return existing;
14780
+ }
14781
+
14782
+ const el = document.createElement('div');
14783
+ el.id = regionId;
14784
+ el.setAttribute('aria-live', 'assertive');
14785
+ el.setAttribute('aria-atomic', 'true');
14786
+ 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;';
14787
+ dialog.appendChild(el);
14788
+
14789
+ this._liveRegion = el;
14790
+ return el;
14791
+ }
14792
+
14793
+ /**
14794
+ * Removes the live region when this calendar is disconnected.
14795
+ * @private
14796
+ * @returns {void}
14797
+ */
14798
+ disconnectedCallback() {
14799
+ super.disconnectedCallback();
14800
+
14801
+ // Cancel any pending announcements so they don't fire after teardown.
14802
+ if (this._announceRafId) {
14803
+ cancelAnimationFrame(this._announceRafId);
14804
+ this._announceRafId = null;
14805
+ }
14806
+ if (this._focusAnnounceTimer) {
14807
+ clearTimeout(this._focusAnnounceTimer);
14808
+ this._focusAnnounceTimer = null;
14809
+ }
14810
+
14811
+ if (this._liveRegion && this._liveRegion.isConnected) {
14812
+ this._liveRegion.remove();
14813
+ }
14814
+ this._liveRegion = null;
14815
+ }
14816
+
14817
+ /**
14818
+ * Announces a date selection or focus change via the live region.
14819
+ * Uses requestAnimationFrame to ensure the clear and set happen in
14820
+ * separate rendering frames — Chrome may coalesce synchronous or
14821
+ * microtask-deferred mutations into a single accessibility tree update.
14822
+ * @private
14823
+ * @param {String} dateStr - The localized date string to announce.
14824
+ * @returns {void}
14825
+ */
14826
+ announceSelection(dateStr) {
14827
+ // Cancel any previously queued rAF announcement so a rapid
14828
+ // sequence of calls (e.g. bib open → month nav) only announces
14829
+ // the last one.
14830
+ if (this._announceRafId) {
14831
+ cancelAnimationFrame(this._announceRafId);
14832
+ }
14833
+ const liveRegion = this.getOrCreateLiveRegion();
14834
+ if (!liveRegion) {
14835
+ return;
14836
+ }
14837
+
14838
+ // Double-rAF: clear in frame N, set in frame N+1. Chrome batches
14839
+ // accessibility tree mutations within a single animation frame, so
14840
+ // a same-frame clear+set can be coalesced into a no-op if the new
14841
+ // value matches a recently announced string. Splitting across two
14842
+ // frames guarantees Chrome sees two distinct tree states and fires
14843
+ // a new accessibility event for the content change.
14844
+ liveRegion.textContent = '';
14845
+ this._announceRafId = requestAnimationFrame(() => {
14846
+ this._announceRafId = requestAnimationFrame(() => {
14847
+ liveRegion.textContent = dateStr;
14848
+ this._announceRafId = null;
14849
+ });
14850
+ });
14851
+ }
14852
+
14853
+ /**
14854
+ * Debounced version of announceSelection for focus navigation.
14855
+ * Uses the assertive live region with a 150ms debounce so only the
14856
+ * final cell after rapid arrow-key traversal is announced. We
14857
+ * originally tried aria-live="polite" here, but VoiceOver treats
14858
+ * polite as "wait until idle" — which never happens during active
14859
+ * keyboard navigation — so the announcements were silently dropped.
14860
+ * @private
14861
+ * @param {String} dateStr - The localized date string to announce.
14862
+ * @returns {void}
14863
+ */
14864
+ announceFocusDebounced(dateStr) {
14865
+ if (this._focusAnnounceTimer) {
14866
+ clearTimeout(this._focusAnnounceTimer);
14867
+ }
14868
+ this._focusAnnounceTimer = setTimeout(() => {
14869
+ this.announceSelection(dateStr);
14870
+ this._focusAnnounceTimer = null;
14871
+ }, 150);
14872
+ }
14873
+
14874
+ /**
14875
+ * Formats a Unix timestamp (seconds) as a localized date string for SR announcements.
14876
+ * @private
14877
+ * @param {String|Number} timestamp - Unix timestamp in seconds.
14878
+ * @returns {String} Localized date string.
14879
+ */
14880
+ formatAnnouncementDate(timestamp) {
14881
+ const date = new Date(parseInt(timestamp, 10) * 1000);
14882
+ const formatter = new Intl.DateTimeFormat(this.localeCode, {
14883
+ weekday: 'long',
14884
+ year: 'numeric',
14885
+ month: 'long',
14886
+ day: 'numeric'
14887
+ });
14888
+ return formatter.format(date);
14889
+ }
14890
+
13386
14891
  firstUpdated() {
14892
+
13387
14893
  this.addEventListener('date-from-changed', () => {
13388
14894
  this.dispatchEvent(new CustomEvent('auroCalendar-dateSelected', {
13389
14895
  bubbles: true,
@@ -13402,6 +14908,21 @@ class AuroCalendar extends RangeDatepicker {
13402
14908
  composed: true,
13403
14909
  }));
13404
14910
  });
14911
+
14912
+ // Listen for cross-month boundary navigation events
14913
+ this.addEventListener('calendar-month-boundary', (event) => {
14914
+ this.handleMonthBoundary(event);
14915
+ });
14916
+
14917
+ // Listen for cell activation events
14918
+ this.addEventListener('calendar-cell-activate', (event) => {
14919
+ this.handleCellActivate(event);
14920
+ });
14921
+
14922
+ // Listen for cell focus events (SR announcements + range preview)
14923
+ this.addEventListener('calendar-cell-focused', (event) => {
14924
+ this.handleCellFocused(event);
14925
+ });
13405
14926
  }
13406
14927
 
13407
14928
  injectSlot(slotName, nodes) {
@@ -13426,7 +14947,37 @@ class AuroCalendar extends RangeDatepicker {
13426
14947
  }
13427
14948
 
13428
14949
  if (changedProperties.has('visible')) {
13429
- setTimeout(() => this.requestUpdate());
14950
+ if (this.visible) {
14951
+ // Compute the active date eagerly from data — no DOM needed.
14952
+ if (this.activeCellDate == null) { // eslint-disable-line no-eq-null, eqeqeq
14953
+ this.activeCellDate = this.computeActiveDate();
14954
+ }
14955
+
14956
+ this.requestUpdate();
14957
+ } else {
14958
+ this.requestUpdate();
14959
+ }
14960
+ }
14961
+
14962
+ // Announce date selection to screen readers when user clicks/selects a cell
14963
+ const isCellClick = this.datepicker?.wasCellClick || this.datepicker?.cellClickActive;
14964
+
14965
+ if (changedProperties.has('dateFrom') && this.dateFrom && isCellClick) {
14966
+ const dateStr = this.formatAnnouncementDate(this.dateFrom);
14967
+ const isRange = !this.noRange;
14968
+
14969
+ if (isRange) {
14970
+ const rangeLabel = this.datepicker.rangeLabelStart || 'range start';
14971
+ this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
14972
+ } else {
14973
+ this.announceSelection(`${dateStr}, selected`);
14974
+ }
14975
+ }
14976
+
14977
+ if (changedProperties.has('dateTo') && this.dateTo && isCellClick) {
14978
+ const dateStr = this.formatAnnouncementDate(this.dateTo);
14979
+ const rangeLabel = this.datepicker.rangeLabelEnd || 'range end';
14980
+ this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
13430
14981
  }
13431
14982
  }
13432
14983
 
@@ -13435,6 +14986,7 @@ class AuroCalendar extends RangeDatepicker {
13435
14986
  <${this.bibtemplateTag}
13436
14987
  ?large="${this.largeFullscreenHeadline}"
13437
14988
  ?isFullscreen="${this.isFullscreen}"
14989
+ ?showFooter="${!this.isFullscreen && this.dropdown?.desktopModal}"
13438
14990
  @close-click="${this.utilCal.requestDismiss}">
13439
14991
  <span slot="ariaLabel.close">${this.slots["ariaLabel.bib.close"]}</span>
13440
14992
 
@@ -13452,24 +15004,26 @@ class AuroCalendar extends RangeDatepicker {
13452
15004
  </div>
13453
15005
  </div>
13454
15006
 
13455
- <div class="calendarWrapper">
13456
- <div class="calendars">
13457
- ${this.renderAllCalendars()}
13458
- </div>
15007
+ <div class="calendarWrapper ${!this.isFullscreen && this.dropdown?.desktopModal ? 'hasFooter' : ''}">
13459
15008
  <div class="calendarNavButtons">
13460
15009
  ${this.showPrevMonthBtn ? html$1`
13461
- <button tabIndex="-1" class="calendarNavBtn prevMonth" @click="${this.handlePrevMonth}">
15010
+ <button tabIndex="0" class="calendarNavBtn prevMonth" aria-label="${this.datepicker?.navLabelPrevMonth || 'Previous month'}" @click="${this.handlePrevMonth}">
13462
15011
  ${this.util.generateIconHtml(chevronLeft)}
13463
15012
  </button>
13464
15013
  ` : undefined}
13465
15014
  ${this.showNextMonthBtn ? html$1`
13466
- <button tabIndex="-1" class="calendarNavBtn nextMonth" @click="${this.handleNextMonth}">
15015
+ <button tabIndex="0" class="calendarNavBtn nextMonth" aria-label="${this.datepicker?.navLabelNextMonth || 'Next month'}" @click="${this.handleNextMonth}">
13467
15016
  ${this.util.generateIconHtml(chevronRight)}
13468
15017
  </button>
13469
15018
  ` : undefined}
13470
15019
  </div>
15020
+ <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}">
15021
+ ${this.renderAllCalendars()}
15022
+ </div>
13471
15023
  </div>
13472
15024
 
15025
+ <div id="calendar-live-region" aria-live="assertive" aria-atomic="true" class="sr-only"></div>
15026
+
13473
15027
  <${this.buttonTag} slot="footer" fluid @click="${this.utilCal.requestDismiss}">Done</${this.buttonTag}>
13474
15028
  </${this.bibtemplateTag}>
13475
15029
  `;
@@ -16717,7 +18271,7 @@ function applyKeyboardStrategy$1(component, strategy, options = {}) {
16717
18271
  });
16718
18272
  }
16719
18273
 
16720
- var styleCss$2$1 = css`: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}`;
18274
+ var styleCss$2$1 = css`: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}`;
16721
18275
 
16722
18276
  var colorCss$2 = css`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
16723
18277
 
@@ -17348,7 +18902,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
17348
18902
  }
17349
18903
  };
17350
18904
 
17351
- var formkitVersion$1 = '202606031942';
18905
+ var formkitVersion$1 = '202606181613';
17352
18906
 
17353
18907
  let AuroElement$2 = class AuroElement extends LitElement {
17354
18908
  static get properties() {
@@ -17528,6 +19082,7 @@ class AuroDropdown extends AuroElement$2 {
17528
19082
  _intializeDefaults() {
17529
19083
  this.appearance = 'default';
17530
19084
  this.chevron = false;
19085
+ this.desktopModal = false;
17531
19086
  this.disabled = false;
17532
19087
  this.disableKeyboardHandling = false;
17533
19088
  this.error = false;
@@ -17708,6 +19263,14 @@ class AuroDropdown extends AuroElement$2 {
17708
19263
  reflect: true
17709
19264
  },
17710
19265
 
19266
+ /**
19267
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
19268
+ */
19269
+ desktopModal: {
19270
+ type: Boolean,
19271
+ reflect: true
19272
+ },
19273
+
17711
19274
  /**
17712
19275
  * If declared, the dropdown will only show by calling the API .show() public method.
17713
19276
  */
@@ -17995,6 +19558,15 @@ class AuroDropdown extends AuroElement$2 {
17995
19558
 
17996
19559
  disconnectedCallback() {
17997
19560
  super.disconnectedCallback();
19561
+ this._clearPageInert();
19562
+ if (this._bibTabHandler) {
19563
+ this.removeEventListener('keydown', this._bibTabHandler);
19564
+ this._bibTabHandler = undefined;
19565
+ }
19566
+ if (this.focusTrap) {
19567
+ this.focusTrap.disconnect();
19568
+ this.focusTrap = undefined;
19569
+ }
17998
19570
  if (this.floater) {
17999
19571
  this.floater.hideBib('disconnect');
18000
19572
  this.floater.disconnect();
@@ -18022,19 +19594,45 @@ class AuroDropdown extends AuroElement$2 {
18022
19594
  if (this.isPopoverVisible) {
18023
19595
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
18024
19596
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
18025
- const useModal = this.isBibFullscreen;
18026
- this.bibElement.value.open(useModal);
19597
+ this.bibElement.value.open(this.isBibFullscreen);
19598
+ this.updateFocusTrap();
19599
+
19600
+ // Desktop modal: make siblings inert so content outside is not interactive
19601
+ if (this.desktopModal && !this.isBibFullscreen) {
19602
+ this._setPageInert();
19603
+ }
18027
19604
  } else {
18028
19605
  this.bibElement.value.close();
19606
+ this._clearPageInert();
18029
19607
  }
18030
19608
  }
18031
19609
 
18032
19610
  // When fullscreen strategy changes while open, re-open dialog with correct mode
18033
19611
  // (e.g. resizing from desktop → mobile while dropdown is open)
18034
19612
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
18035
- const useModal = this.isBibFullscreen;
18036
19613
  this.bibElement.value.close();
18037
- this.bibElement.value.open(useModal);
19614
+ this.bibElement.value.open(this.isBibFullscreen);
19615
+
19616
+ // Re-initialize focus management for the new strategy
19617
+ this.updateFocusTrap();
19618
+
19619
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
19620
+ if (this.desktopModal && !this.isBibFullscreen) {
19621
+ this._setPageInert();
19622
+ } else {
19623
+ this._clearPageInert();
19624
+ }
19625
+ }
19626
+
19627
+ // Handle desktopModal toggled while the dropdown is already open.
19628
+ // Re-initialize focus trapping and page inert state to match the new mode.
19629
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
19630
+ this.updateFocusTrap();
19631
+ if (this.desktopModal) {
19632
+ this._setPageInert();
19633
+ } else {
19634
+ this._clearPageInert();
19635
+ }
18038
19636
  }
18039
19637
  }
18040
19638
 
@@ -18044,8 +19642,14 @@ class AuroDropdown extends AuroElement$2 {
18044
19642
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
18045
19643
  */
18046
19644
  handleDropdownToggle(event) {
18047
- this.updateFocusTrap();
18048
19645
  this.isPopoverVisible = event.detail.expanded;
19646
+
19647
+ // Tear down FocusTrap when closing. Creation happens in updated()
19648
+ // after the dialog is open so getFocusableElements can find content.
19649
+ if (!this.isPopoverVisible) {
19650
+ this.updateFocusTrap();
19651
+ }
19652
+
18049
19653
  const eventType = event.detail.eventType || "unknown";
18050
19654
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
18051
19655
  this.trigger.focus();
@@ -18144,19 +19748,220 @@ class AuroDropdown extends AuroElement$2 {
18144
19748
  * @private
18145
19749
  */
18146
19750
  updateFocusTrap() {
19751
+ // Always clean up existing handlers/traps before setting up new ones
19752
+ // to prevent duplicate listeners on repeated calls.
19753
+ if (this._bibTabHandler) {
19754
+ this.removeEventListener('keydown', this._bibTabHandler);
19755
+ this._bibTabHandler = undefined;
19756
+ }
19757
+
19758
+ if (this.focusTrap) {
19759
+ this.focusTrap.disconnect();
19760
+ this.focusTrap = undefined;
19761
+ }
19762
+
19763
+ // Restore the user-set noHideOnThisFocusLoss value, if we overrode it.
19764
+ if (this._noHideOverridden) {
19765
+ this.noHideOnThisFocusLoss = this._priorNoHide;
19766
+ this._noHideOverridden = false;
19767
+ this._priorNoHide = undefined;
19768
+ }
19769
+
18147
19770
  if (this.isPopoverVisible) {
18148
19771
  if (!this.isBibFullscreen) {
18149
- // Desktop: show() doesn't trap focus, so use FocusTrap
18150
- this.focusTrap = new FocusTrap(this.bibContent);
18151
- this.focusTrap.focusFirstElement();
19772
+ if (this.desktopModal) {
19773
+ // The floater's focus-loss check uses :focus-within, which does not
19774
+ // match the host when focus is on a slotted element projected through
19775
+ // multiple shadow roots. Without this override, focusing a button
19776
+ // inside the bib would be misread as focus leaving the dropdown and
19777
+ // close the bib immediately. desktopModal traps focus inside the
19778
+ // bib and inerts siblings, so suppressing focus-loss dismissal here
19779
+ // is safe — Escape and outside-click still close the bib.
19780
+ this._priorNoHide = this.noHideOnThisFocusLoss;
19781
+ this._noHideOverridden = true;
19782
+ this.noHideOnThisFocusLoss = true;
19783
+
19784
+ // Desktop modal: trap focus only within the bib content.
19785
+ // Can't use FocusTrap on the bib element because keydown events
19786
+ // from slotted content bubble through the dropdown host (light DOM),
19787
+ // not through the bib (shadow projection target). Using FocusTrap
19788
+ // on the dropdown would include the trigger in the tab cycle.
19789
+ // Instead, listen for Tab on the dropdown and manually wrap focus
19790
+ // within the bib's focusable elements.
19791
+ this._bibTabHandler = (event) => {
19792
+ if (event.key !== 'Tab') {
19793
+ return;
19794
+ }
19795
+
19796
+ // Collect focusable elements from the bib content.
19797
+ const focusables = getFocusableElements(this.bibContent);
19798
+
19799
+ // Fallback: try from slotted content directly
19800
+ if (!focusables.length) {
19801
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
19802
+ const assignedNodes = slot.assignedNodes({ flatten: true });
19803
+
19804
+ for (const node of assignedNodes) {
19805
+ if (node.nodeType === Node.ELEMENT_NODE) {
19806
+ focusables.push(...getFocusableElements(node));
19807
+ }
19808
+ }
19809
+ }
19810
+
19811
+ if (!focusables.length) {
19812
+ return;
19813
+ }
19814
+
19815
+ event.preventDefault();
19816
+
19817
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
19818
+
19819
+ // Walk the active element chain through shadow roots
19820
+ const actives = this._getActiveElements();
19821
+
19822
+ let idx = focusables.findIndex((el) => actives.includes(el));
19823
+
19824
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
19825
+ // Focus is not on a known element — move to first/last
19826
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
19827
+ }
19828
+
19829
+ // Try each element in order, skipping any that can't receive focus
19830
+ // (e.g. hidden elements, elements in collapsed sections)
19831
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
19832
+ let nextIdx = idx + direction;
19833
+
19834
+ // Wrap around
19835
+ if (nextIdx < 0) {
19836
+ nextIdx = focusables.length - 1;
19837
+ } else if (nextIdx >= focusables.length) {
19838
+ nextIdx = 0;
19839
+ }
19840
+
19841
+ focusables[nextIdx].focus();
19842
+
19843
+ // Verify focus actually moved to the target
19844
+ const newActives = this._getActiveElements();
19845
+
19846
+ if (newActives.includes(focusables[nextIdx])) {
19847
+ return;
19848
+ }
19849
+
19850
+ // Focus didn't stick — skip this element and try the next
19851
+ idx = nextIdx;
19852
+ }
19853
+ };
19854
+ this.addEventListener('keydown', this._bibTabHandler);
19855
+
19856
+ // Move initial focus into the bib content, matching FocusTrap behavior
19857
+ requestAnimationFrame(() => {
19858
+ const focusables = getFocusableElements(this.bibContent);
19859
+ if (focusables.length) {
19860
+ focusables[0].focus();
19861
+ }
19862
+ });
19863
+ } else {
19864
+ // Normal desktop: use FocusTrap on the bib element.
19865
+ // Defer focusFirstElement to the next frame because the popover
19866
+ // is positioned asynchronously by Floating UI — calling focus()
19867
+ // synchronously here would target elements with zero dimensions
19868
+ // and the focus call would be silently ignored.
19869
+ this.focusTrap = new FocusTrap(this.bibContent);
19870
+ requestAnimationFrame(() => {
19871
+ if (this.focusTrap) {
19872
+ this.focusTrap.focusFirstElement();
19873
+ }
19874
+ });
19875
+ }
18152
19876
  }
18153
19877
  // Fullscreen: showModal() provides native focus trapping
19878
+ }
19879
+ }
19880
+
19881
+ /**
19882
+ * Returns the chain of active (focused) elements through shadow roots.
19883
+ * @private
19884
+ * @returns {Array<HTMLElement>}
19885
+ */
19886
+ _getActiveElements() {
19887
+ let { activeElement } = document;
19888
+ const actives = [activeElement];
19889
+
19890
+ while (activeElement?.shadowRoot?.activeElement) {
19891
+ activeElement = activeElement.shadowRoot.activeElement;
19892
+ actives.push(activeElement);
19893
+ }
19894
+
19895
+ return actives;
19896
+ }
19897
+
19898
+ /**
19899
+ * Sets `inert` on sibling elements of the dropdown's top-level host
19900
+ * so that content outside the dropdown is not interactive while the modal is open.
19901
+ * Walks up through shadow DOM boundaries to find the outermost host element
19902
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
19903
+ * to ensure all page content outside the host subtree is inert.
19904
+ * @private
19905
+ */
19906
+ _setPageInert() {
19907
+ if (this._inertSiblings) {
18154
19908
  return;
18155
19909
  }
18156
19910
 
18157
- if (this.focusTrap) {
18158
- this.focusTrap.disconnect();
18159
- this.focusTrap = undefined;
19911
+ this._inertSiblings = [];
19912
+
19913
+ // Walk up through shadow DOM boundaries to find the topmost host
19914
+ // element in the light DOM. For example, if this dropdown is inside
19915
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
19916
+ // so we set inert on its siblings — not on the datepicker itself.
19917
+ let host = this;
19918
+ while (host.getRootNode() instanceof ShadowRoot) {
19919
+ host = host.getRootNode().host;
19920
+ }
19921
+
19922
+ // Walk up the ancestor chain, inerting siblings at each level
19923
+ // to ensure the entire page outside the host subtree is inert.
19924
+ // Uses a reference counter (data-auro-inert-count) so multiple
19925
+ // simultaneous modal dropdowns share inert state safely.
19926
+ let current = host;
19927
+ while (current.parentElement) {
19928
+ const parent = current.parentElement;
19929
+ for (const sibling of parent.children) {
19930
+ if (sibling !== current) {
19931
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
19932
+ if (count === 0) {
19933
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
19934
+ }
19935
+ sibling.dataset.auroInertCount = String(count + 1);
19936
+ sibling.inert = true;
19937
+ this._inertSiblings.push(sibling);
19938
+ }
19939
+ }
19940
+ current = parent;
19941
+ }
19942
+ }
19943
+
19944
+ /**
19945
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
19946
+ * Uses reference counting so inert is only cleared when the last modal
19947
+ * dropdown releases a given element. Preserves the original inert state
19948
+ * so externally-inerted elements are not inadvertently re-enabled.
19949
+ * @private
19950
+ */
19951
+ _clearPageInert() {
19952
+ if (this._inertSiblings) {
19953
+ for (const sibling of this._inertSiblings) {
19954
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
19955
+ if (count <= 0) {
19956
+ const wasInert = sibling.dataset.auroInertWas === 'true';
19957
+ delete sibling.dataset.auroInertCount;
19958
+ delete sibling.dataset.auroInertWas;
19959
+ sibling.inert = wasInert;
19960
+ } else {
19961
+ sibling.dataset.auroInertCount = String(count);
19962
+ }
19963
+ }
19964
+ this._inertSiblings = undefined;
18160
19965
  }
18161
19966
  }
18162
19967
 
@@ -18395,6 +20200,7 @@ class AuroDropdown extends AuroElement$2 {
18395
20200
  shape="${this.shape}"
18396
20201
  ?data-show="${this.isPopoverVisible}"
18397
20202
  ?isfullscreen="${this.isBibFullscreen}"
20203
+ ?desktopmodal="${this.desktopModal}"
18398
20204
  .dialogLabel="${this.bibDialogLabel}"
18399
20205
  ${ref(this.bibElement)}
18400
20206
  >
@@ -22969,7 +24775,7 @@ class AuroFormValidation {
22969
24775
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
22970
24776
  const input = elem.renderRoot.querySelector('input');
22971
24777
 
22972
- if (input.validationMessage.length > 0) {
24778
+ if (input && input.validationMessage.length > 0) {
22973
24779
  elem.errorMessage = input.validationMessage;
22974
24780
  }
22975
24781
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -28641,7 +30447,11 @@ class AuroInputUtilities {
28641
30447
  return part.value;
28642
30448
  }
28643
30449
  })
28644
- .join("");
30450
+ .join("")
30451
+ // Remove whitespace and leading/trailing special characters for IMask compatibility
30452
+ // for example, ko-KR's format is `YYYY. MM. DD.` which causes issues with IMask if we don't remove the trailing period.
30453
+ .replace(/\s/gu, '')
30454
+ .replace(/^[^A-Z0-9]+|[^A-Z0-9]+$/gu, '');
28645
30455
  }
28646
30456
 
28647
30457
  /**
@@ -28797,27 +30607,16 @@ class AuroInputUtilities {
28797
30607
  * Converts a model value to a display value for the input element.
28798
30608
  * For full date formats, converts an ISO model value to the configured display format.
28799
30609
  * @private
28800
- * @param {string} value - The model value (ISO string for date types).
28801
30610
  * @param {Date|undefined} valueObject - Date object representation of value.
28802
30611
  * @param {string} format - The date format string.
28803
- * @returns {string}
30612
+ * @returns {string | undefined}
28804
30613
  */
28805
- toFormattedValue(value, valueObject, format) {
28806
- if (!this.isFullDateFormat('date', format) || !value) {
28807
- return value;
28808
- }
28809
-
28810
- if (!dateFormatter.isValidDate(value)) {
28811
- // For ISO-pattern strings that fail range validation (e.g. '2024-99-99'),
28812
- // return '' so inputElement stays empty and format-based validation is not triggered.
28813
- return (/^\d{4}-\d{2}-\d{2}$/u).test(value) ? '' : value;
28814
- }
28815
-
30614
+ toFormattedValue(valueObject, format) {
28816
30615
  const normalizedFormat = format.toLowerCase();
28817
30616
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
28818
30617
 
28819
30618
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
28820
- return value;
30619
+ return undefined;
28821
30620
  }
28822
30621
 
28823
30622
  return maskOptions.format(valueObject);
@@ -29519,7 +31318,7 @@ class BaseInput extends AuroElement$1 {
29519
31318
  * @returns {Date|undefined}
29520
31319
  */
29521
31320
  get valueObject() {
29522
- return this._valueObject;
31321
+ return this._valueObject || this._computeDateObjectFallback(this.value);
29523
31322
  }
29524
31323
 
29525
31324
  /**
@@ -29527,7 +31326,7 @@ class BaseInput extends AuroElement$1 {
29527
31326
  * @returns {Date|undefined}
29528
31327
  */
29529
31328
  get minObject() {
29530
- return this._minObject;
31329
+ return this._minObject || this._computeDateObjectFallback(this.min);
29531
31330
  }
29532
31331
 
29533
31332
  /**
@@ -29535,7 +31334,31 @@ class BaseInput extends AuroElement$1 {
29535
31334
  * @returns {Date|undefined}
29536
31335
  */
29537
31336
  get maxObject() {
29538
- return this._maxObject;
31337
+ return this._maxObject || this._computeDateObjectFallback(this.max);
31338
+ }
31339
+
31340
+ /**
31341
+ * Parses a date string into a Date object when the corresponding `_*Object`
31342
+ * field hasn't been synced yet by `updated()`. Returns undefined when the
31343
+ * input type/format isn't a full date or the string is not a valid date.
31344
+ *
31345
+ * Why this exists: a parent (datepicker) can call `inputN.validate()` from
31346
+ * inside its own `updated()` before this input's `updated()` has run
31347
+ * `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
31348
+ * and range checks would otherwise silently no-op (flipping the result to
31349
+ * `valid` or `patternMismatch`).
31350
+ * @private
31351
+ * @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
31352
+ * @returns {Date|undefined}
31353
+ */
31354
+ _computeDateObjectFallback(dateStr) {
31355
+ if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
31356
+ return undefined;
31357
+ }
31358
+ if (!dateFormatter.isValidDate(dateStr)) {
31359
+ return undefined;
31360
+ }
31361
+ return dateFormatter.stringToDateInstance(dateStr);
29539
31362
  }
29540
31363
 
29541
31364
  /**
@@ -29560,8 +31383,30 @@ class BaseInput extends AuroElement$1 {
29560
31383
  connectedCallback() {
29561
31384
  super.connectedCallback();
29562
31385
 
31386
+ // Mark for query selectors when registered under a versioned tag (e.g. inside
31387
+ // a datepicker/combobox). Must run before parent components call validate() on
31388
+ // their inner inputs — the validation framework matches via tag-or-attribute,
31389
+ // and parents trigger validation during their own updated() cycle, which can
31390
+ // precede this input's firstUpdated().
31391
+ if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
31392
+ this.setAttribute('auro-input', '');
31393
+ }
31394
+
29563
31395
  this.locale = this.domHandler.getLocale(this);
29564
31396
  notifyOnLangChange(this);
31397
+
31398
+ // Pre-compute lengthForType and date-object fields so a parent (e.g. datepicker)
31399
+ // calling our validate() synchronously during its own updated() cycle sees
31400
+ // populated values. Without this, range validation silently no-ops because
31401
+ // `max.length === lengthForType` fails when lengthForType is still undefined.
31402
+ // Rebuild util here (constructor seeded with en-US default) so configureDataForType's
31403
+ // locale-derived format lookup uses the actual locale just resolved above.
31404
+ this.util = new AuroInputUtilities({
31405
+ locale: this.locale,
31406
+ format: this.format
31407
+ });
31408
+ this.configureDataForType();
31409
+ this.syncDateValues();
29565
31410
  }
29566
31411
 
29567
31412
  disconnectedCallback() {
@@ -29582,8 +31427,8 @@ class BaseInput extends AuroElement$1 {
29582
31427
  }
29583
31428
 
29584
31429
  // add attribute for query selectors when auro-input is registered under a custom name
29585
- if (this.tagName.toLowerCase() !== 'auro-input') {
29586
- this.setAttribute('auro-input', true);
31430
+ if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
31431
+ this.setAttribute('auro-input', '');
29587
31432
  }
29588
31433
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
29589
31434
 
@@ -29631,6 +31476,12 @@ class BaseInput extends AuroElement$1 {
29631
31476
  return;
29632
31477
  }
29633
31478
 
31479
+ // While configureAutoFormatting is running, imask's internal updateControl
31480
+ // writes el.value to align display with the masked value. A synthetic input
31481
+ // event from that write would re-enter handleInput → processCreditCard mid-setup
31482
+ // and clobber a Lit value that was just pushed by the parent combobox.
31483
+ if (component._configuringMask) return;
31484
+
29634
31485
  // If all guard clauses are passed, dispatch the event
29635
31486
  const inputEvent = new InputEvent('input', {
29636
31487
  bubbles: true,
@@ -29735,11 +31586,30 @@ class BaseInput extends AuroElement$1 {
29735
31586
  this.hasValue = false;
29736
31587
  }
29737
31588
 
29738
- const formattedValue = this.type === 'date' ? this.util.toFormattedValue(this.value, this.valueObject, this.format) : this.value;
31589
+ let formattedValue = this.value;
31590
+ if (this.type === 'date') {
31591
+ const formattedDate = this.util.toFormattedValue(this.valueObject, this.format);
31592
+ if (!formattedDate) {
31593
+ // if user entered unrecognized date format that cannot be parsed into a Date object,
31594
+ // keep the raw value in the input so they can edit it instead of overwriting with an empty string
31595
+ formattedValue = this.value;
31596
+ } else {
31597
+ formattedValue = formattedDate;
31598
+ }
31599
+ }
29739
31600
 
29740
31601
  if (formattedValue !== this.inputElement.value) {
29741
31602
  this.skipNextProgrammaticInputEvent = true;
29742
- if (formattedValue) {
31603
+ if (this.maskInstance && this.type === 'credit-card') {
31604
+ // Route through the mask so its _value and el.value stay in lock-step
31605
+ // (set value calls updateControl which writes el.value = displayValue).
31606
+ // Writing el.value directly leaves the mask thinking displayValue is
31607
+ // stale; _saveSelection on the next focus/click then warns. Scoped to
31608
+ // credit-card so date's own formattedValue (raw ISO when calendar-invalid)
31609
+ // isn't re-masked through the mm/dd/yyyy mask, which would truncate it
31610
+ // and flip validity from patternMismatch to tooShort.
31611
+ this.maskInstance.value = formattedValue || '';
31612
+ } else if (formattedValue) {
29743
31613
  this.inputElement.value = formattedValue;
29744
31614
  } else {
29745
31615
  this.inputElement.value = '';
@@ -29848,58 +31718,73 @@ class BaseInput extends AuroElement$1 {
29848
31718
  * @returns {void}
29849
31719
  */
29850
31720
  configureAutoFormatting() {
29851
- if (this.maskInstance) {
29852
- this.maskInstance.destroy();
29853
- }
29854
-
29855
- // Pass new format to util
29856
- this.util.updateFormat(this.format);
31721
+ // Re-entrancy guard. The patched-setter's synthetic input event (suppressed
31722
+ // by _configuringMask above) could otherwise trigger handleInput →
31723
+ // processCreditCard → configureAutoFormatting before the outer call's
31724
+ // set value has finished its alignCursor pass.
31725
+ if (this._configuringMask) return;
31726
+ this._configuringMask = true;
31727
+ try {
31728
+ if (this.maskInstance) {
31729
+ this.maskInstance.destroy();
31730
+ }
29857
31731
 
29858
- const maskOptions = this.util.getMaskOptions(this.type, this.format);
31732
+ // Pass new format to util
31733
+ this.util.updateFormat(this.format);
29859
31734
 
29860
- if (this.inputElement && maskOptions.mask) {
31735
+ const maskOptions = this.util.getMaskOptions(this.type, this.format);
29861
31736
 
29862
- // Stash and clear any existing value before IMask init.
29863
- // IMask's constructor processes the current input value which requires
29864
- // selection state — clearing first avoids that scenario entirely.
29865
- // When the format changes (e.g. locale switch) and we have a valid ISO
29866
- // model value, compute the display string for the NEW format instead of
29867
- // re-using the old display string, which may be invalid in the new mask.
29868
- let existingValue = this.inputElement.value;
29869
- if (
29870
- this.util.isFullDateFormat(this.type, this.format) &&
29871
- this.value &&
29872
- dateFormatter.isValidDate(this.value) &&
29873
- this.valueObject instanceof Date &&
29874
- !Number.isNaN(this.valueObject.getTime()) &&
29875
- typeof maskOptions.format === 'function'
29876
- ) {
29877
- existingValue = maskOptions.format(this.valueObject);
29878
- }
31737
+ if (this.inputElement && maskOptions.mask) {
29879
31738
 
29880
- this.skipNextProgrammaticInputEvent = true;
29881
- this.inputElement.value = '';
31739
+ // Stash and clear any existing value before IMask init.
31740
+ // IMask's constructor processes the current input value which requires
31741
+ // selection state — clearing first avoids that scenario entirely.
31742
+ // When the format changes (e.g. locale switch) and we have a valid ISO
31743
+ // model value, compute the display string for the NEW format instead of
31744
+ // re-using the old display string, which may be invalid in the new mask.
31745
+ let existingValue = this.inputElement.value;
31746
+ if (
31747
+ this.util.isFullDateFormat(this.type, this.format) &&
31748
+ this.value &&
31749
+ dateFormatter.isValidDate(this.value) &&
31750
+ this.valueObject instanceof Date &&
31751
+ !Number.isNaN(this.valueObject.getTime()) &&
31752
+ typeof maskOptions.format === 'function'
31753
+ ) {
31754
+ existingValue = maskOptions.format(this.valueObject);
31755
+ }
29882
31756
 
29883
- this.maskInstance = IMask(this.inputElement, maskOptions);
31757
+ this.skipNextProgrammaticInputEvent = true;
31758
+ this.inputElement.value = '';
31759
+
31760
+ this.maskInstance = IMask(this.inputElement, maskOptions);
31761
+
31762
+ this.maskInstance.on('accept', () => {
31763
+ // Suppress propagation during configureAutoFormatting's own value-restoration
31764
+ // (line below) — the mask emits 'accept' on every value-set, including ours,
31765
+ // and we don't want to overwrite a value the parent just pushed.
31766
+ if (this._configuringMask) return;
31767
+ this.value = this.util.toModelValue(this.maskInstance.value, this.format);
31768
+ if (this.type === "date") {
31769
+ this._rawMaskValue = this.maskInstance.value;
31770
+ }
31771
+ });
29884
31772
 
29885
- this.maskInstance.on('accept', () => {
29886
- this.value = this.util.toModelValue(this.maskInstance.value, this.format);
29887
- if (this.type === "date") {
29888
- this._rawMaskValue = this.maskInstance.value;
29889
- }
29890
- });
31773
+ this.maskInstance.on('complete', () => {
31774
+ if (this._configuringMask) return;
31775
+ this.value = this.util.toModelValue(this.maskInstance.value, this.format);
31776
+ if (this.type === "date") {
31777
+ this._rawMaskValue = this.maskInstance.value;
31778
+ }
31779
+ });
29891
31780
 
29892
- this.maskInstance.on('complete', () => {
29893
- this.value = this.util.toModelValue(this.maskInstance.value, this.format);
29894
- if (this.type === "date") {
29895
- this._rawMaskValue = this.maskInstance.value;
31781
+ // Restore the stashed value through IMask so it's properly masked
31782
+ if (existingValue) {
31783
+ this.maskInstance.value = existingValue;
29896
31784
  }
29897
- });
29898
-
29899
- // Restore the stashed value through IMask so it's properly masked
29900
- if (existingValue) {
29901
- this.maskInstance.value = existingValue;
29902
31785
  }
31786
+ } finally {
31787
+ this._configuringMask = false;
29903
31788
  }
29904
31789
  }
29905
31790
 
@@ -30186,10 +32071,10 @@ class BaseInput extends AuroElement$1 {
30186
32071
  },
30187
32072
  {
30188
32073
  name: 'Diners club',
30189
- regex: /^(?<num>36|38)\d{0}/u,
32074
+ regex: /^(?<num>30[0-5]|36|38)\d{0}/u,
30190
32075
  formatLength: 16,
30191
32076
  errorMessage: CreditCardValidationMessage,
30192
- cardIcon: 'credit-card',
32077
+ cardIcon: 'cc-dinersclub',
30193
32078
  maskFormat: "0000 000000 0000"
30194
32079
  },
30195
32080
  {
@@ -30599,7 +32484,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
30599
32484
  }
30600
32485
  };
30601
32486
 
30602
- var formkitVersion = '202606031942';
32487
+ var formkitVersion = '202606181613';
30603
32488
 
30604
32489
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
30605
32490
  // See LICENSE in the project root for license information.
@@ -30937,10 +32822,6 @@ class AuroInput extends BaseInput {
30937
32822
  return i18n$1(this.lang, this.type);
30938
32823
  }
30939
32824
 
30940
- if (this.type === 'date') {
30941
- return i18n$1(this.lang, this.dateFormatMap[this.format] || 'dateMMDDYYYY');
30942
- }
30943
-
30944
32825
  return '';
30945
32826
  }
30946
32827
 
@@ -31944,26 +33825,62 @@ function applyKeyboardStrategy(component, strategy, options = {}) {
31944
33825
  // components/datepicker/docs/partials/keyboardBehavior.md
31945
33826
  //
31946
33827
  // Current behavior (transitional — full bib keyboard navigation is planned for a future iteration):
31947
- // - The bib opens and closes via pointer/touch interaction only.
31948
33828
  // - Escape closes the bib and prevents the event from reaching parent containers.
33829
+ // - Enter opens the bib when it is closed (trigger input only, not clear button).
33830
+ // - Space opens the bib when it is closed (trigger input only, not clear button).
31949
33831
  // - Tab uses the browser's default tabindex sequence across trigger controls.
31950
- // - Enter and Space do not open or close the bib.
31951
33832
  //
31952
33833
  // This file is an intentional placeholder for most keys. When datepicker bib keyboard navigation is
31953
33834
  // added, handlers should go here following the same strategy pattern used by
31954
33835
  // auro-select (selectKeyboardStrategy.js) and auro-combobox (comboboxKeyboardStrategy.js).
31955
33836
  const datepickerKeyboardStrategy = {
31956
- Escape(component, evt) {
31957
- if (!component.dropdown || !component.dropdown.isPopoverVisible) {
33837
+ Escape(component, evt, ctx) {
33838
+ if (!ctx.isExpanded) {
31958
33839
  return;
31959
33840
  }
31960
33841
 
31961
- // Prevent the Escape key from bubbling up and closing any parent dialogs / drawers / popups.
31962
- // Because stopPropagation prevents the document-level floatingUI keydown handler from
31963
- // seeing this event, we must also close the dropdown explicitly.
33842
+ // Stop propagation so parent containers (auro-dialog, auro-drawer)
33843
+ // don't also react to Escape.
31964
33844
  evt.stopPropagation();
33845
+ evt.preventDefault();
33846
+
33847
+ component.hideBib();
33848
+ },
33849
+
33850
+ Enter(component, evt, ctx) {
33851
+ if (ctx.isExpanded) {
33852
+ return;
33853
+ }
33854
+
33855
+ // Only open from the trigger input, not the clear button or other internal elements.
33856
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
33857
+ // to find the real origin. The clear button is rendered with class "clearBtn".
33858
+ const path = evt.composedPath();
33859
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
33860
+ return;
33861
+ }
33862
+
33863
+ evt.preventDefault();
33864
+
33865
+ component.dropdown.show();
33866
+ },
33867
+
33868
+ ' '(component, evt, ctx) {
33869
+ if (ctx.isExpanded) {
33870
+ return;
33871
+ }
33872
+
33873
+ // Only open from the trigger input, not the clear button or other internal elements.
33874
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
33875
+ // to find the real origin. The clear button is rendered with class "clearBtn".
33876
+ const path = evt.composedPath();
33877
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
33878
+ return;
33879
+ }
31965
33880
 
31966
- component.dropdown.hide();
33881
+ evt.preventDefault();
33882
+
33883
+ component.dropdown.show();
31967
33884
  },
31968
33885
  };
31969
33886
 
@@ -31987,8 +33904,8 @@ const datepickerKeyboardStrategy = {
31987
33904
  * @slot label - Defines the label content for the entire datepicker when `layout="snowflake"`.
31988
33905
  * @slot toLabel - Defines the label content for the second input when the `range` attribute is used.
31989
33906
  * @slot fromLabel - Defines the label content for the first input.
31990
- * @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.
31991
- * @slot popover_MM_DD_YYYY - Defines the content to display in the auro-calendar-cell popover for the specified date.
33907
+ * @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.
33908
+ * @slot popover_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell popover for the specified date.
31992
33909
  * @csspart dropdown - Use for customizing the style of the dropdown.
31993
33910
  * @csspart trigger - Use for customizing the style of the datepicker trigger.
31994
33911
  * @csspart input - Use for customizing the style of the datepicker inputs.
@@ -32037,6 +33954,16 @@ class AuroDatePicker extends AuroElement {
32037
33954
  this.required = false;
32038
33955
  this.onDark = false;
32039
33956
  this.range = false;
33957
+ this.rangeLabelStart = 'range start';
33958
+ this.rangeLabelEnd = 'range end';
33959
+ this.rangeLabelBeforeRange = 'before range';
33960
+ this.rangeLabelInRange = 'in range';
33961
+ this.rangeLabelAfterRange = 'after range';
33962
+ this.blackoutDates = [];
33963
+ this.blackoutLabel = 'unavailable';
33964
+ this.navLabelPrevMonth = 'Previous month';
33965
+ this.navLabelNextMonth = 'Next month';
33966
+ this.calendarGridLabel = 'Calendar days of the month';
32040
33967
  this.stacked = false;
32041
33968
  this.noValidate = false;
32042
33969
  this.validity = undefined;
@@ -32046,6 +33973,7 @@ class AuroDatePicker extends AuroElement {
32046
33973
  this.calendarEndDate = undefined;
32047
33974
  this.calendarFocusDate = this.value;
32048
33975
  this.fullscreenBreakpoint = 'sm';
33976
+ this._validLocale = 'en-US';
32049
33977
  // floaterConfig
32050
33978
  this.placement = 'bottom-start';
32051
33979
  this.offset = 0;
@@ -32151,7 +34079,7 @@ class AuroDatePicker extends AuroElement {
32151
34079
 
32152
34080
  /**
32153
34081
  * Defines whether the component will be on lighter or darker backgrounds.
32154
- * @property {'default', 'inverse'}
34082
+ * @type {'default' | 'inverse'}
32155
34083
  * @default 'default'
32156
34084
  */
32157
34085
  appearance: {
@@ -32168,6 +34096,22 @@ class AuroDatePicker extends AuroElement {
32168
34096
  reflect: true
32169
34097
  },
32170
34098
 
34099
+ /**
34100
+ * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
34101
+ */
34102
+ blackoutDates: {
34103
+ type: Array,
34104
+ reflect: true
34105
+ },
34106
+
34107
+ /**
34108
+ * Label announced for blackout (disabled but in-range) date cells.
34109
+ */
34110
+ blackoutLabel: {
34111
+ type: String,
34112
+ reflect: true
34113
+ },
34114
+
32171
34115
  /**
32172
34116
  * The last date that may be displayed in the calendar.
32173
34117
  */
@@ -32176,6 +34120,14 @@ class AuroDatePicker extends AuroElement {
32176
34120
  reflect: true
32177
34121
  },
32178
34122
 
34123
+ /**
34124
+ * Accessible label for the calendar grid containing the days of the month.
34125
+ */
34126
+ calendarGridLabel: {
34127
+ type: String,
34128
+ reflect: true
34129
+ },
34130
+
32179
34131
  /**
32180
34132
  * The date that will first be visually rendered to the user in the calendar.
32181
34133
  */
@@ -32223,27 +34175,6 @@ class AuroDatePicker extends AuroElement {
32223
34175
  reflect: true
32224
34176
  },
32225
34177
 
32226
- hasFocus: {
32227
- type: Boolean,
32228
- reflect: false,
32229
- },
32230
-
32231
- /**
32232
- * @private
32233
- */
32234
- hasValue: {
32235
- type: Boolean,
32236
- reflect: false,
32237
- },
32238
-
32239
- /**
32240
- * @private
32241
- */
32242
- hasAllValues: {
32243
- type: Boolean,
32244
- reflect: false
32245
- },
32246
-
32247
34178
  /**
32248
34179
  * Specifies the date format. The default is `mm/dd/yyyy`.
32249
34180
  */
@@ -32273,6 +34204,27 @@ class AuroDatePicker extends AuroElement {
32273
34204
  reflect: true
32274
34205
  },
32275
34206
 
34207
+ /**
34208
+ * @private
34209
+ */
34210
+ hasAllValues: {
34211
+ type: Boolean,
34212
+ reflect: false
34213
+ },
34214
+
34215
+ hasFocus: {
34216
+ type: Boolean,
34217
+ reflect: false,
34218
+ },
34219
+
34220
+ /**
34221
+ * @private
34222
+ */
34223
+ hasValue: {
34224
+ type: Boolean,
34225
+ reflect: false,
34226
+ },
34227
+
32276
34228
  /** Exposes inputmode attribute for input. */
32277
34229
  inputmode: {
32278
34230
  type: String,
@@ -32315,6 +34267,13 @@ class AuroDatePicker extends AuroElement {
32315
34267
  reflect: true
32316
34268
  },
32317
34269
 
34270
+ /**
34271
+ * @private
34272
+ */
34273
+ monthFirst: {
34274
+ type: Boolean
34275
+ },
34276
+
32318
34277
  /**
32319
34278
  * Names of all 12 months to render in the calendar.
32320
34279
  * When omitted, month names will be automatically populated from the active `locale` (falling back to `en-US`).
@@ -32324,18 +34283,26 @@ class AuroDatePicker extends AuroElement {
32324
34283
  },
32325
34284
 
32326
34285
  /**
32327
- * If declared, the bib will NOT flip to an alternate position
32328
- * when there isn't enough space in the specified `placement`.
34286
+ * Accessible label for the next month navigation button.
32329
34287
  */
32330
- noFlip: {
32331
- type: Boolean,
34288
+ navLabelNextMonth: {
34289
+ type: String,
32332
34290
  reflect: true
32333
34291
  },
32334
34292
 
32335
34293
  /**
32336
- * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
34294
+ * Accessible label for the previous month navigation button.
32337
34295
  */
32338
- shift: {
34296
+ navLabelPrevMonth: {
34297
+ type: String,
34298
+ reflect: true
34299
+ },
34300
+
34301
+ /**
34302
+ * If declared, the bib will NOT flip to an alternate position
34303
+ * when there isn't enough space in the specified `placement`.
34304
+ */
34305
+ noFlip: {
32339
34306
  type: Boolean,
32340
34307
  reflect: true
32341
34308
  },
@@ -32401,6 +34368,46 @@ class AuroDatePicker extends AuroElement {
32401
34368
  reflect: true
32402
34369
  },
32403
34370
 
34371
+ /**
34372
+ * Label announced for cells after the range (or after start when no end is selected).
34373
+ */
34374
+ rangeLabelAfterRange: {
34375
+ type: String,
34376
+ reflect: true
34377
+ },
34378
+
34379
+ /**
34380
+ * Label announced for cells before the range start.
34381
+ */
34382
+ rangeLabelBeforeRange: {
34383
+ type: String,
34384
+ reflect: true
34385
+ },
34386
+
34387
+ /**
34388
+ * Label announced for the range end date cell.
34389
+ */
34390
+ rangeLabelEnd: {
34391
+ type: String,
34392
+ reflect: true
34393
+ },
34394
+
34395
+ /**
34396
+ * Label announced for cells within the selected range.
34397
+ */
34398
+ rangeLabelInRange: {
34399
+ type: String,
34400
+ reflect: true
34401
+ },
34402
+
34403
+ /**
34404
+ * Label announced for the range start date cell.
34405
+ */
34406
+ rangeLabelStart: {
34407
+ type: String,
34408
+ reflect: true
34409
+ },
34410
+
32404
34411
  /**
32405
34412
  * Dates that the user should have for reference as part of their decision making when selecting a date.
32406
34413
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
@@ -32427,6 +34434,7 @@ class AuroDatePicker extends AuroElement {
32427
34434
 
32428
34435
  /**
32429
34436
  * Custom help text message to display when validity = `customError`.
34437
+ * Also used as the validation message when a blackout date is typed into the input.
32430
34438
  */
32431
34439
  setCustomValidityCustomError: {
32432
34440
  type: String
@@ -32453,6 +34461,14 @@ class AuroDatePicker extends AuroElement {
32453
34461
  type: String
32454
34462
  },
32455
34463
 
34464
+ /**
34465
+ * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
34466
+ */
34467
+ shift: {
34468
+ type: Boolean,
34469
+ reflect: true
34470
+ },
34471
+
32456
34472
  /**
32457
34473
  * Set true to make datepicker stacked style.
32458
34474
  */
@@ -32461,6 +34477,16 @@ class AuroDatePicker extends AuroElement {
32461
34477
  reflect: true
32462
34478
  },
32463
34479
 
34480
+ /**
34481
+ * Indicates whether the datepicker is in a dirty state (has been interacted with).
34482
+ * @private
34483
+ */
34484
+ touched: {
34485
+ type: Boolean,
34486
+ reflect: true,
34487
+ attribute: false
34488
+ },
34489
+
32464
34490
  /**
32465
34491
  * Specifies the `validityState` this element is in.
32466
34492
  */
@@ -32481,16 +34507,6 @@ class AuroDatePicker extends AuroElement {
32481
34507
  */
32482
34508
  valueEnd: {
32483
34509
  type: String
32484
- },
32485
-
32486
- /**
32487
- * Indicates whether the datepicker is in a dirty state (has been interacted with).
32488
- * @private
32489
- */
32490
- touched: {
32491
- type: Boolean,
32492
- reflect: true,
32493
- attribute: false
32494
34510
  }
32495
34511
  };
32496
34512
  }
@@ -32601,7 +34617,7 @@ class AuroDatePicker extends AuroElement {
32601
34617
  /**
32602
34618
  * Common display value wrapper classes.
32603
34619
  * @private
32604
- * @return {Object} - An object containing the common classes for the display value wrapper.
34620
+ * @returns {Object} Class map for Lit's classMap directive.
32605
34621
  */
32606
34622
  get commonDisplayValueWrapperClasses() {
32607
34623
  return {
@@ -32672,7 +34688,7 @@ class AuroDatePicker extends AuroElement {
32672
34688
  * @returns {Number} Simplified number.
32673
34689
  */
32674
34690
  convertToWcValidTime(date) {
32675
- return new Date(date).getTime() / 1000;
34691
+ return date?.getTime() / 1000;
32676
34692
  }
32677
34693
 
32678
34694
  /**
@@ -32683,42 +34699,66 @@ class AuroDatePicker extends AuroElement {
32683
34699
  */
32684
34700
  // ─── Read-only *Object properties ─────────────────────────────────────────
32685
34701
 
32686
- /** @returns {Date|undefined} */
34702
+ /**
34703
+ * Read-only `Date` object derived from `value`. Returns `undefined` when `value` is empty or not a valid date.
34704
+ * @returns {Date|undefined}
34705
+ */
32687
34706
  get valueObject() {
32688
34707
  return this.value && dateFormatter$1.isValidDate(this.value) ? dateFormatter$1.stringToDateInstance(this.value) : undefined;
32689
34708
  }
32690
34709
 
32691
- /** @returns {Date|undefined} */
34710
+ /**
34711
+ * Read-only `Date` object derived from `valueEnd`. Returns `undefined` when `valueEnd` is empty or not a valid date.
34712
+ * @returns {Date|undefined}
34713
+ */
32692
34714
  get valueEndObject() {
32693
34715
  return this.valueEnd && dateFormatter$1.isValidDate(this.valueEnd) ? dateFormatter$1.stringToDateInstance(this.valueEnd) : undefined;
32694
34716
  }
32695
34717
 
32696
- /** @returns {Date|undefined} */
34718
+ /**
34719
+ * Read-only `Date` object derived from `minDate`. Returns `undefined` when `minDate` is empty or not a valid date.
34720
+ * @returns {Date|undefined}
34721
+ */
32697
34722
  get minDateObject() {
32698
34723
  return this.minDate && dateFormatter$1.isValidDate(this.minDate) ? dateFormatter$1.stringToDateInstance(this.minDate) : undefined;
32699
34724
  }
32700
34725
 
32701
- /** @returns {Date|undefined} */
34726
+ /**
34727
+ * Read-only `Date` object derived from `maxDate`. Returns `undefined` when `maxDate` is empty or not a valid date.
34728
+ * @returns {Date|undefined}
34729
+ */
32702
34730
  get maxDateObject() {
32703
34731
  return this.maxDate && dateFormatter$1.isValidDate(this.maxDate) ? dateFormatter$1.stringToDateInstance(this.maxDate) : undefined;
32704
34732
  }
32705
34733
 
32706
- /** @returns {Date|undefined} */
34734
+ /**
34735
+ * Read-only `Date` object derived from `calendarStartDate`. Returns `undefined` when `calendarStartDate` is empty or not a valid date.
34736
+ * @returns {Date|undefined}
34737
+ */
32707
34738
  get calendarStartDateObject() {
32708
34739
  return this.calendarStartDate && dateFormatter$1.isValidDate(this.calendarStartDate) ? dateFormatter$1.stringToDateInstance(this.calendarStartDate) : undefined;
32709
34740
  }
32710
34741
 
32711
- /** @returns {Date|undefined} */
34742
+ /**
34743
+ * Read-only `Date` object derived from `calendarEndDate`. Returns `undefined` when `calendarEndDate` is empty or not a valid date.
34744
+ * @returns {Date|undefined}
34745
+ */
32712
34746
  get calendarEndDateObject() {
32713
34747
  return this.calendarEndDate && dateFormatter$1.isValidDate(this.calendarEndDate) ? dateFormatter$1.stringToDateInstance(this.calendarEndDate) : undefined;
32714
34748
  }
32715
34749
 
32716
- /** @returns {Date|undefined} */
34750
+ /**
34751
+ * Read-only `Date` object derived from `centralDate`. Returns `undefined` when `centralDate` is empty or not a valid date.
34752
+ * @returns {Date|undefined}
34753
+ */
32717
34754
  get centralDateObject() {
32718
34755
  return this.centralDate && dateFormatter$1.isValidDate(this.centralDate) ? dateFormatter$1.stringToDateInstance(this.centralDate) : undefined;
32719
34756
  }
32720
34757
 
32721
- /** @returns {Date|undefined} */
34758
+ /**
34759
+ * Read-only `Date` object derived from `calendarFocusDate`. Returns `undefined` when `calendarFocusDate` is empty or not a valid date.
34760
+ * @returns {Date|undefined}
34761
+ */
32722
34762
  get calendarFocusDateObject() {
32723
34763
  return this.calendarFocusDate && dateFormatter$1.isValidDate(this.calendarFocusDate) ? dateFormatter$1.stringToDateInstance(this.calendarFocusDate) : undefined;
32724
34764
  }
@@ -32792,6 +34832,74 @@ class AuroDatePicker extends AuroElement {
32792
34832
  }));
32793
34833
  }
32794
34834
 
34835
+ /**
34836
+ * Attempts to focus the active calendar cell using a rAF retry loop.
34837
+ * Shared by both fullscreen and desktop open paths.
34838
+ * @private
34839
+ * @returns {void}
34840
+ */
34841
+ focusActiveCellWhenReady() {
34842
+ const MAX_ATTEMPTS = 20;
34843
+ let attempts = 0;
34844
+
34845
+ const tryFocus = () => {
34846
+ attempts += 1;
34847
+ const allCells = this.calendar.getAllFocusableCells();
34848
+
34849
+ if (!allCells.length && attempts < MAX_ATTEMPTS) {
34850
+ requestAnimationFrame(tryFocus);
34851
+ return;
34852
+ }
34853
+
34854
+ // Compute and mark the active cell
34855
+ if (this.calendar.activeCellDate === null || this.calendar.activeCellDate === undefined) {
34856
+ this.calendar.activeCellDate = this.calendar.computeActiveDate();
34857
+ }
34858
+ if (this.calendar.activeCellDate !== undefined) {
34859
+ this.calendar.setActiveCell(this.calendar.activeCellDate);
34860
+ }
34861
+
34862
+ // If no cell matched (e.g. centralDate month differs from the rendered
34863
+ // range on mobile), fall back to the first rendered enabled cell.
34864
+ let activeCell = allCells.find((cell) => cell.active);
34865
+ if (!activeCell && allCells.length) {
34866
+ const [fallback] = allCells;
34867
+ if (fallback.day) {
34868
+ this.calendar.activeCellDate = fallback.day.date;
34869
+ this.calendar.setActiveCell(this.calendar.activeCellDate);
34870
+ activeCell = allCells.find((cell) => cell.active);
34871
+ }
34872
+ }
34873
+
34874
+ // Focus the calendar grid wrapper (aria-activedescendant handles
34875
+ // the SR announcement for the active cell).
34876
+ if (activeCell) {
34877
+ this.calendar.focusActiveCell();
34878
+
34879
+ // Announce the initial active cell via the live region.
34880
+ // Delay the announcement so it arrives after VoiceOver finishes
34881
+ // speaking the focus-change announcement for the grid wrapper.
34882
+ // Without this delay, VoiceOver drops the live region update
34883
+ // because it's already mid-announcement from the focus move.
34884
+ const announcement = this.calendar.buildFocusAnnouncement(activeCell.day.date);
34885
+ setTimeout(() => {
34886
+ this.calendar.announceSelection(announcement);
34887
+ }, 500);
34888
+
34889
+ // On mobile fullscreen, scroll the month list so the active cell's
34890
+ // month is visible. Without this, the list stays scrolled to the
34891
+ // calendarStartDate month which may be far from the active cell.
34892
+ if (this.dropdown.isBibFullscreen) {
34893
+ this.calendar.scrollToActiveCell();
34894
+ }
34895
+ } else if (attempts < MAX_ATTEMPTS) {
34896
+ requestAnimationFrame(tryFocus);
34897
+ }
34898
+ };
34899
+
34900
+ requestAnimationFrame(tryFocus);
34901
+ }
34902
+
32795
34903
  /**
32796
34904
  * Binds all behavior needed to the dropdown after rendering.
32797
34905
  * @private
@@ -32800,6 +34908,12 @@ class AuroDatePicker extends AuroElement {
32800
34908
  configureDropdown() {
32801
34909
  this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
32802
34910
 
34911
+ // The datepicker manages its own open/close lifecycle (Space/Escape/date-select/done).
34912
+ // Prevent the floater's document-level focusin handler from closing the bib
34913
+ // when focus moves from the trigger into the calendar cells (which live inside
34914
+ // a top-layer popover where :focus-within on the dropdown host returns false).
34915
+ this.dropdown.noHideOnThisFocusLoss = true;
34916
+
32803
34917
  // Pass label text to the dropdown bib for accessible dialog naming.
32804
34918
  // Without this, the fullscreen <dialog> has no accessible name and
32805
34919
  // screen readers announce it as just "dialog" with no context.
@@ -32817,6 +34931,23 @@ class AuroDatePicker extends AuroElement {
32817
34931
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
32818
34932
  this.notifyDatepickerToggled();
32819
34933
 
34934
+ if (this.dropdown.isPopoverVisible) {
34935
+ // Reset calendar focus state so it recomputes from the current selection.
34936
+ // Without this, reopening after navigating to a month without a selected
34937
+ // date leaves activeCellDate pointing at a cell in a different month than
34938
+ // what centralDate renders, causing all cells to have tabindex="-1".
34939
+ this.calendar.activeCellDate = null;
34940
+
34941
+ // Show the month containing the selected date (or today) instead of
34942
+ // whichever month the user last navigated to.
34943
+ // Respect consumer-provided centralDate/calendarStartDate if no value is set.
34944
+ if (this.valueObject) {
34945
+ this.centralDate = this.value;
34946
+ } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
34947
+ this.centralDate = new Date();
34948
+ }
34949
+ }
34950
+
32820
34951
  // This forces the calendar to render when the dropdown is opened.
32821
34952
  // It is not rendered by default
32822
34953
  this.calendar.visible = this.dropdown.isPopoverVisible;
@@ -32849,12 +34980,23 @@ class AuroDatePicker extends AuroElement {
32849
34980
  bibEl.open(true);
32850
34981
 
32851
34982
  doubleRaf(() => {
32852
- this.calendar.focusCloseButton();
34983
+ this.focusActiveCellWhenReady();
32853
34984
  });
32854
34985
  }
32855
34986
  });
32856
34987
 
32857
34988
  guardTouchPassthrough(this.shadowRoot.querySelector('.calendarWrapper'));
34989
+ } else {
34990
+ // Desktop (non-fullscreen) modal: make the trigger inert so users
34991
+ // cannot interact with the input while the modal bib is open.
34992
+ if (this.dropdown.desktopModal) {
34993
+ this.dropdown.trigger.inert = true;
34994
+ }
34995
+
34996
+ // Desktop (non-fullscreen): focus the active calendar cell.
34997
+ this.dropdown.updateComplete.then(() => {
34998
+ this.focusActiveCellWhenReady();
34999
+ });
32858
35000
  }
32859
35001
  } else {
32860
35002
  // Always clear the inert flag. Only restore focus to the input when the datepicker
@@ -32899,14 +35041,35 @@ class AuroDatePicker extends AuroElement {
32899
35041
  if (bibEl && this.dropdown.isPopoverVisible) {
32900
35042
  bibEl.close();
32901
35043
  bibEl.open(true);
35044
+ }
35045
+
35046
+ // Re-render the calendar with the new fullscreen layout,
35047
+ // then restore focus after the re-render completes.
35048
+ this.calendar.isFullscreen = true;
35049
+ this.calendar.updateComplete.then(() => {
32902
35050
  doubleRaf(() => {
32903
- this.calendar.focusCloseButton();
35051
+ this.focusActiveCellWhenReady();
32904
35052
  });
32905
- }
35053
+ });
32906
35054
  });
32907
35055
  } else if (!this.dropdown.isBibFullscreen) {
32908
- // Switching from fullscreen to floating — restore trigger accessibility
32909
- this.dropdown.trigger.inert = false;
35056
+ // Switching from fullscreen to floating — only restore trigger accessibility
35057
+ // when the bib is closed or the desktop layout is not a modal. A desktopModal
35058
+ // dropdown keeps the trigger inert while open, matching the desktop-open path.
35059
+ if (!this.dropdown.isPopoverVisible || !this.dropdown.desktopModal) {
35060
+ this.dropdown.trigger.inert = false;
35061
+ }
35062
+
35063
+ // Re-render the calendar with the desktop layout,
35064
+ // then restore focus after the re-render completes.
35065
+ this.dropdown.updateComplete.then(() => {
35066
+ this.calendar.isFullscreen = false;
35067
+ this.calendar.updateComplete.then(() => {
35068
+ doubleRaf(() => {
35069
+ this.focusActiveCellWhenReady();
35070
+ });
35071
+ });
35072
+ });
32910
35073
  }
32911
35074
  });
32912
35075
  }
@@ -33094,14 +35257,8 @@ class AuroDatePicker extends AuroElement {
33094
35257
 
33095
35258
  if (onEndValue) {
33096
35259
  this.valueEnd = newDate;
33097
- if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
33098
- this.focus('startDate');
33099
- }
33100
35260
  } else {
33101
35261
  this.value = newDate;
33102
- if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
33103
- this.focus('endDate');
33104
- }
33105
35262
  }
33106
35263
  }
33107
35264
  }
@@ -33141,6 +35298,23 @@ class AuroDatePicker extends AuroElement {
33141
35298
  this.resetInputs();
33142
35299
  }
33143
35300
 
35301
+ /**
35302
+ * Checks whether a formatted date string matches a blackout date.
35303
+ * @private
35304
+ * @param {string} dateStr - A date string in the component's configured format.
35305
+ * @returns {boolean} True if the date is in the blackoutDates list.
35306
+ */
35307
+ isBlackoutDate(dateStr) {
35308
+ if (!Array.isArray(this.blackoutDates) ||
35309
+ this.blackoutDates.length === 0 ||
35310
+ !dateStr ||
35311
+ !dateFormatter$1.isValidDate(dateStr)) {
35312
+ return false;
35313
+ }
35314
+
35315
+ return this.blackoutDates.includes(dateStr);
35316
+ }
35317
+
33144
35318
  /**
33145
35319
  * Validates value.
33146
35320
  * @param {boolean} [force=false] - Whether to force validation.
@@ -33152,6 +35326,23 @@ class AuroDatePicker extends AuroElement {
33152
35326
  }
33153
35327
 
33154
35328
  this.validation.validate(this, force);
35329
+
35330
+ // After standard validation, check blackout dates for typed input
35331
+ if (this.validity !== 'customError' &&
35332
+ (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd)))) { // eslint-disable-line no-extra-parens
35333
+ const msg = this.setCustomValidityCustomError || 'Selected date is unavailable';
35334
+ this.validity = 'customError';
35335
+ this.errorMessage = msg;
35336
+
35337
+ this.dispatchEvent(new CustomEvent('auroFormElement-validated', {
35338
+ bubbles: true,
35339
+ composed: true,
35340
+ detail: {
35341
+ validity: this.validity,
35342
+ message: this.errorMessage
35343
+ }
35344
+ }));
35345
+ }
33155
35346
  }
33156
35347
 
33157
35348
  /**
@@ -33170,20 +35361,43 @@ class AuroDatePicker extends AuroElement {
33170
35361
  this.hasAllValues = (this.value && this.value.length > 0) && (this.valueEnd && this.valueEnd.length > 0); // eslint-disable-line no-extra-parens
33171
35362
  }
33172
35363
 
35364
+ /**
35365
+ * Returns `true` when the datepicker has an active validation error.
35366
+ * @returns {boolean}
35367
+ */
33173
35368
  get hasError() {
33174
35369
  return this.validity !== undefined && this.validity !== 'valid';
33175
35370
  }
33176
35371
 
33177
- updated(changedProperties) {
35372
+ /**
35373
+ * Lifecycle method to check if the locale is valid.
35374
+ * @ignore
35375
+ * @param {Map} changedProperties - The map of properties that have changed since the last update.
35376
+ * @returns {void}
35377
+ */
35378
+ willUpdate(changedProperties) {
33178
35379
  if (changedProperties.has('locale')) {
33179
- if (!changedProperties.has('format')) {
33180
- const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
33181
- if (!this.format || this.format.toLowerCase() === previousLocaleFormat) {
33182
- this.format = getDateFormatFromLocale$1(this.locale);
33183
- }
35380
+ try {
35381
+ const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
35382
+ this._validLocale = supported.length > 0 ? this.locale : 'en-US';
35383
+ } catch {
35384
+ console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
35385
+ this._validLocale = 'en-US';
35386
+ }
35387
+
35388
+ const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
35389
+ if (!changedProperties.has('format') && (!this.format || this.format.toLowerCase() === previousLocaleFormat)) {
35390
+ this.format = getDateFormatFromLocale$1(this._validLocale);
33184
35391
  }
33185
35392
  }
33186
35393
 
35394
+ if (changedProperties.has('referenceDates') && this.calendar) {
35395
+ this.calendar.requestUpdate();
35396
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
35397
+ }
35398
+ }
35399
+
35400
+ updated(changedProperties) {
33187
35401
  if (changedProperties.has('disabled')) {
33188
35402
  if (this.disabled) {
33189
35403
  this.previousTabIndex = this.getAttribute('tabindex');
@@ -33210,17 +35424,18 @@ class AuroDatePicker extends AuroElement {
33210
35424
  if (changedProperties.has('value')) {
33211
35425
 
33212
35426
  // Change the calendar focus to the first valid date value only the first time the value is set
33213
- if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value)) {
33214
- if (!this.dropdown.isPopoverVisible) {
33215
- this.calendarFocusDate = this.value;
35427
+ if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value) && !this.dropdown.isPopoverVisible) {
35428
+ this.calendarFocusDate = this.value;
33216
35429
 
33217
- // Let the calendar know to scroll to the focus date when it is next rendered on mobile
33218
- this.forceScrollOnNextMobileCalendarRender = true;
33219
- }
35430
+ // Let the calendar know to scroll to the focus date when it is next rendered on mobile
35431
+ this.forceScrollOnNextMobileCalendarRender = true;
33220
35432
  }
33221
35433
 
33222
35434
  if (this.cellClickActive) {
33223
35435
  this.cellClickActive = false;
35436
+ this.wasCellClick = true;
35437
+ } else {
35438
+ this.wasCellClick = false;
33224
35439
  }
33225
35440
 
33226
35441
  if (this.value && dateFormatter$1.isValidDate(this.value)) {
@@ -33238,13 +35453,48 @@ class AuroDatePicker extends AuroElement {
33238
35453
 
33239
35454
  // update the inputs — auro-input accepts ISO directly
33240
35455
  if (this.inputList[0].value !== this.value) {
33241
- this.inputList[0].value = this.value || '';
35456
+ if (this.value) {
35457
+ this.inputList[0].value = this.value;
35458
+ } else {
35459
+ this.inputList[0].value = '';
35460
+ }
35461
+ }
35462
+
35463
+ if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
35464
+ // Skip centralDate update when user clicked a cell in range mode
35465
+ // to prevent the displayed months from shifting
35466
+ this.centralDate = this.value;
35467
+ //TODO: TEST THIS CHANGE
35468
+ // this.calendarRenderUtil.updateCentralDate(this, this.value);
33242
35469
  }
33243
35470
 
33244
35471
  this.setHasValue();
33245
35472
  }
33246
35473
 
35474
+ if (changedProperties.has('blackoutDates')) {
35475
+ // Force calendar cells to re-render with updated blackout state.
35476
+ // requestUpdate on the calendar alone is insufficient because cells
35477
+ // don't receive blackoutDates as a bound property. Dispatching the
35478
+ // slot content event triggers handleSlotContent → requestUpdate on each cell.
35479
+ if (this.calendar) {
35480
+ this.calendar.requestUpdate();
35481
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
35482
+ }
35483
+
35484
+ // Re-run validation so that a previously valid value that now falls on
35485
+ // a blackout date is flagged, and vice versa.
35486
+ if (this.value || this.valueEnd) {
35487
+ this.validate();
35488
+ }
35489
+ }
35490
+
33247
35491
  if (changedProperties.has('valueEnd') && this.inputList[1]) {
35492
+ if (this.cellClickActive) {
35493
+ this.cellClickActive = false;
35494
+ this.wasCellClick = true;
35495
+ } else {
35496
+ this.wasCellClick = false;
35497
+ }
33248
35498
 
33249
35499
  // update the calendar
33250
35500
  if (this.valueEndObject) {
@@ -33262,7 +35512,19 @@ class AuroDatePicker extends AuroElement {
33262
35512
 
33263
35513
  // update the inputs — auro-input accepts ISO directly
33264
35514
  if (this.inputList[1].value !== this.valueEnd) {
33265
- this.inputList[1].value = this.valueEnd || '';
35515
+ if (this.valueEnd) {
35516
+ this.inputList[1].value = this.valueEnd;
35517
+ } else {
35518
+ this.inputList[1].value = '';
35519
+ }
35520
+ }
35521
+
35522
+ if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
35523
+ // Skip centralDate update when user clicked a cell in range mode
35524
+ // to prevent the displayed months from shifting
35525
+ this.centralDate = this.valueEnd;
35526
+ // TODO: TEST THIS CHANGE
35527
+ // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
33266
35528
  }
33267
35529
 
33268
35530
  this.validate();
@@ -33305,16 +35567,14 @@ class AuroDatePicker extends AuroElement {
33305
35567
  this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
33306
35568
  }
33307
35569
 
33308
- if (!changedProperties.has('value') && this.valueObject) {
33309
- if (this.minDateObject > this.valueObject) {
33310
- this.value = undefined;
33311
-
33312
- if (this.range && this.valueEnd) {
33313
- this.valueEnd = undefined;
33314
- }
35570
+ if (!changedProperties.has('value') && this.valueObject && this.minDateObject > this.valueObject) {
35571
+ this.value = undefined;
33315
35572
 
33316
- this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
35573
+ if (this.range && this.valueEnd) {
35574
+ this.valueEnd = undefined;
33317
35575
  }
35576
+
35577
+ this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
33318
35578
  }
33319
35579
 
33320
35580
  // When there is no focusDate and no value, set the focusDate to the minDate
@@ -33345,16 +35605,14 @@ class AuroDatePicker extends AuroElement {
33345
35605
  }
33346
35606
  }
33347
35607
 
33348
- if (this.maxDate && !changedProperties.has('value') && this.valueObject) {
33349
- if (this.maxDateObject < this.valueObject) {
33350
- this.value = undefined;
35608
+ if (this.maxDate && !changedProperties.has('value') && this.valueObject && this.maxDateObject < this.valueObject) {
35609
+ this.value = undefined;
33351
35610
 
33352
- if (this.range && this.valueEnd) {
33353
- this.valueEnd = undefined;
33354
- }
33355
-
33356
- this.calendarRenderUtil.updateCentralDate(this, this.maxDateObject);
35611
+ if (this.range && this.valueEnd) {
35612
+ this.valueEnd = undefined;
33357
35613
  }
35614
+
35615
+ this.calendarRenderUtil.updateCentralDate(this, this.maxDateObject);
33358
35616
  }
33359
35617
 
33360
35618
  this.calendar.requestUpdate();
@@ -33412,6 +35670,7 @@ class AuroDatePicker extends AuroElement {
33412
35670
  }
33413
35671
 
33414
35672
  firstUpdated() {
35673
+
33415
35674
  // Add the tag name as an attribute if it is different than the component name
33416
35675
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
33417
35676
 
@@ -33427,14 +35686,6 @@ class AuroDatePicker extends AuroElement {
33427
35686
  super.connectedCallback();
33428
35687
 
33429
35688
  this.locale = this.domHandler.getLocale(this);
33430
-
33431
- // Derive format eagerly so the first render has a valid format.
33432
- // updated() handles locale changes after the initial render, but runs
33433
- // after render(), so without this a preset value would briefly display
33434
- // as a raw ISO string in the fullscreen bib.
33435
- if (!this.format) {
33436
- this.format = getDateFormatFromLocale$1(this.locale);
33437
- }
33438
35689
  }
33439
35690
 
33440
35691
  // layout render methods
@@ -33484,7 +35735,7 @@ class AuroDatePicker extends AuroElement {
33484
35735
  <div class="${classMap(this.commonDisplayValueWrapperClasses)}">
33485
35736
  <slot name="displayValue" @slotchange=${this.checkDisplayValueSlotChange}>
33486
35737
  <span>
33487
- ${this.formatShortDate(this.value)}${this.range ? html$1`–${this.formatShortDate(this.valueEnd)}` : undefined}
35738
+ ${this.formatShortDate(this.valueObject)}${this.range ? html$1`–${this.formatShortDate(this.valueEndObject)}` : undefined}
33488
35739
  </span>
33489
35740
  </slot>
33490
35741
  </div>
@@ -33558,7 +35809,7 @@ class AuroDatePicker extends AuroElement {
33558
35809
  * Simple formatter that ONLY WORKS FOR US DATES.
33559
35810
  * Returns formatted date like Apr 21 or Dec 25.
33560
35811
  * @private
33561
- * @param {string} date - Date format should be in a format Date constructor accepts, like '2023-04-21' or '2023/04/21'.
35812
+ * @param {Date} date - Date format should be in a format Date constructor accepts, like '2023-04-21' or '2023/04/21'.
33562
35813
  * @returns {string}
33563
35814
  */
33564
35815
  formatShortDate(date) {
@@ -33568,16 +35819,16 @@ class AuroDatePicker extends AuroElement {
33568
35819
  day: '2-digit'
33569
35820
  };
33570
35821
 
33571
- return new Date(date).toLocaleDateString('en-US', options).replace(',', '');
35822
+ return date?.toLocaleDateString(this.locale, options).replace(',', '');
33572
35823
  }
33573
35824
 
33574
35825
  /**
33575
35826
  * Format and render the provided date value.
33576
35827
  * @private
33577
- * @param {string} dateValue - The date value to format and render.
35828
+ * @param {Date} date - The date value to format and render.
33578
35829
  * @returns {import('lit').TemplateResult}
33579
35830
  */
33580
- renderDisplayTextDate(dateValue) {
35831
+ renderDisplayTextDate(date) {
33581
35832
  const displayTextClasses = {
33582
35833
  'displayValueText': true,
33583
35834
  'body-lg': true
@@ -33586,8 +35837,8 @@ class AuroDatePicker extends AuroElement {
33586
35837
  return html$1`
33587
35838
  <div>
33588
35839
  <div class="${classMap(displayTextClasses)}">
33589
- ${dateValue && dateFormatter$1.isValidDate(dateValue)
33590
- ? this.formatShortDate(dateValue)
35840
+ ${date
35841
+ ? this.formatShortDate(date)
33591
35842
  : undefined
33592
35843
  }
33593
35844
  </div>
@@ -33614,7 +35865,7 @@ class AuroDatePicker extends AuroElement {
33614
35865
  ?required="${this.required}"
33615
35866
  ?hideLabelVisually="${this.layout !== 'classic'}"
33616
35867
  format="${this.format}"
33617
- locale="${this.locale}"
35868
+ locale="${this._validLocale}"
33618
35869
  .max="${this.maxDate}"
33619
35870
  .min="${this.minDate}"
33620
35871
  .placeholder="${this.placeholder}"
@@ -33636,7 +35887,7 @@ class AuroDatePicker extends AuroElement {
33636
35887
  ${this.layout !== "classic"
33637
35888
  ? html$1`
33638
35889
  <span slot="displayValue">
33639
- ${this.renderDisplayTextDate(this.value)}
35890
+ ${this.renderDisplayTextDate(this.valueObject)}
33640
35891
  </span>
33641
35892
  `
33642
35893
  : undefined
@@ -33659,7 +35910,7 @@ class AuroDatePicker extends AuroElement {
33659
35910
  ?required="${this.required}"
33660
35911
  ?hideLabelVisually="${this.layout !== 'classic'}"
33661
35912
  .format="${this.format}"
33662
- locale="${this.locale}"
35913
+ locale="${this._validLocale}"
33663
35914
  .max="${this.maxDate}"
33664
35915
  .min="${this.minDate}"
33665
35916
  .placeholder="${this.placeholderEndDate || this.placeholder}"
@@ -33680,7 +35931,7 @@ class AuroDatePicker extends AuroElement {
33680
35931
  ${this.layout !== "classic"
33681
35932
  ? html$1`
33682
35933
  <span slot="displayValue">
33683
- ${this.renderDisplayTextDate(this.valueEnd)}
35934
+ ${this.renderDisplayTextDate(this.valueEndObject)}
33684
35935
  </span>
33685
35936
  `
33686
35937
  : undefined
@@ -33702,7 +35953,7 @@ class AuroDatePicker extends AuroElement {
33702
35953
  /**
33703
35954
  * Handles click on the clear button.
33704
35955
  * @private
33705
- * @param {MouseEvent} event - The click event object.
35956
+ * @param {MouseEvent} event - The mouse event from the clear button click.
33706
35957
  * @returns {void}
33707
35958
  */
33708
35959
  handleClearClick(event) {
@@ -33826,7 +36077,7 @@ class AuroDatePicker extends AuroElement {
33826
36077
  .maxDate="${this.maxDate}"
33827
36078
  .minDate="${this.minDate}"
33828
36079
  .monthNames="${this.monthNames}"
33829
- .localeCode="${this.locale}"
36080
+ .localeCode="${this._validLocale}"
33830
36081
  .mobileBreakpoint="${this.mobileBreakpoint}"
33831
36082
  part="calendar"
33832
36083
  >
@@ -33835,8 +36086,8 @@ class AuroDatePicker extends AuroElement {
33835
36086
  <slot slot="bib.fullscreen.dateLabel" name="bib.fullscreen.dateLabel" @slotchange="${this.handleSlotToSlot}"></slot>
33836
36087
  <slot slot="bib.fullscreen.toLabel" name="bib.fullscreen.toLabel" @slotchange="${this.handleSlotToSlot}"></slot>
33837
36088
  <slot slot="bib.fullscreen.fromLabel" name="bib.fullscreen.fromLabel" @slotchange="${this.handleSlotToSlot}"></slot>
33838
- <span slot="bib.fullscreen.fromStr">${AuroInputUtil.toFormattedValue(this.value, this.valueObject, this.format) || html$1`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>
33839
- ${this.range ? html$1`<span slot="bib.fullscreen.toStr">${AuroInputUtil.toFormattedValue(this.valueEnd, this.valueEndObject, this.format) || html$1`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>` : undefined}
36089
+ <span slot="bib.fullscreen.fromStr">${AuroInputUtil.toFormattedValue(this.valueObject, this.format) || html$1`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>
36090
+ ${this.range ? html$1`<span slot="bib.fullscreen.toStr">${AuroInputUtil.toFormattedValue(this.valueEndObject, this.format) || html$1`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>` : undefined}
33840
36091
  </auro-formkit-calendar>
33841
36092
  `;
33842
36093
  }
@@ -33850,7 +36101,7 @@ class AuroDatePicker extends AuroElement {
33850
36101
  // Base HTML render() handles dropdown and calendar bib
33851
36102
  return html$1`
33852
36103
  <!-- Hidden slot for clear button aria-label -->
33853
- <slot name="ariaLabel.input.clear" hidden @slotchange=${this.requestUpdate}></slot>
36104
+ <slot name="ariaLabel.input.clear" hidden @slotchange=${() => this.requestUpdate()}></slot>
33854
36105
 
33855
36106
  <${this.dropdownTag}
33856
36107
  appearance="${this.onDark ? 'inverse' : this.appearance}"
@@ -33867,6 +36118,7 @@ class AuroDatePicker extends AuroElement {
33867
36118
  .shape="${this.shape}"
33868
36119
  .size="${this.size}"
33869
36120
  class="${classMap(dropdownElementClassMap)}"
36121
+ desktopModal
33870
36122
  disableEventShow
33871
36123
  for="dropdownMenu"
33872
36124
  part="dropdown"