@aurodesignsystem-dev/auro-formkit 0.0.0-pr1497.0 → 0.0.0-pr1497.2

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 (132) 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 +1 -1
  7. package/components/checkbox/demo/getting-started.min.js +1 -1
  8. package/components/checkbox/demo/index.min.js +1 -1
  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 +1 -1
  14. package/components/checkbox/dist/registered.js +1 -1
  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.min.js +250 -16
  18. package/components/combobox/demo/getting-started.min.js +250 -16
  19. package/components/combobox/demo/index.min.js +250 -16
  20. package/components/combobox/demo/pages.json +1 -1
  21. package/components/combobox/demo/styles.min.css +1 -1
  22. package/components/combobox/demo/why-combobox.html +57 -0
  23. package/components/combobox/demo/why-combobox.md +113 -0
  24. package/components/combobox/dist/index.js +250 -16
  25. package/components/combobox/dist/registered.js +250 -16
  26. package/components/counter/demo/css-only.html +57 -0
  27. package/components/counter/demo/css-only.md +184 -0
  28. package/components/counter/demo/customize.min.js +249 -15
  29. package/components/counter/demo/index.min.js +249 -15
  30. package/components/counter/demo/keyboard-behavior.md +1 -0
  31. package/components/counter/demo/pages.json +1 -1
  32. package/components/counter/demo/styles.min.css +1 -1
  33. package/components/counter/demo/why-counter.html +57 -0
  34. package/components/counter/demo/why-counter.md +108 -0
  35. package/components/counter/dist/index.js +10 -2
  36. package/components/counter/dist/registered.js +10 -2
  37. package/components/datepicker/demo/accessibility.md +54 -3
  38. package/components/datepicker/demo/api.md +63 -53
  39. package/components/datepicker/demo/css-only.html +57 -0
  40. package/components/datepicker/demo/css-only.md +151 -0
  41. package/components/datepicker/demo/customize.html +2 -0
  42. package/components/datepicker/demo/customize.js +19 -0
  43. package/components/datepicker/demo/customize.md +56 -0
  44. package/components/datepicker/demo/customize.min.js +36147 -0
  45. package/components/datepicker/demo/design.md +3 -1
  46. package/components/datepicker/demo/index.js +5 -1
  47. package/components/datepicker/demo/index.md +104 -15
  48. package/components/datepicker/demo/index.min.js +2485 -261
  49. package/components/datepicker/demo/keyboard-behavior.md +201 -2
  50. package/components/datepicker/demo/pages.json +1 -1
  51. package/components/datepicker/demo/styles.min.css +1 -1
  52. package/components/datepicker/demo/voiceover.md +21 -12
  53. package/components/datepicker/demo/why-datepicker.html +57 -0
  54. package/components/datepicker/demo/why-datepicker.md +133 -0
  55. package/components/datepicker/dist/index.js +2348 -211
  56. package/components/datepicker/dist/registered.js +2348 -211
  57. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +113 -13
  58. package/components/datepicker/dist/src/auro-calendar-month.d.ts +38 -1
  59. package/components/datepicker/dist/src/auro-calendar.d.ts +258 -0
  60. package/components/datepicker/dist/src/auro-datepicker.d.ts +141 -41
  61. package/components/datepicker/dist/src/datepickerKeyboardStrategy.d.ts +5 -3
  62. package/components/dropdown/demo/accessibility.md +11 -0
  63. package/components/dropdown/demo/api.md +1 -0
  64. package/components/dropdown/demo/css-only.html +57 -0
  65. package/components/dropdown/demo/css-only.md +219 -0
  66. package/components/dropdown/demo/customize.md +3 -0
  67. package/components/dropdown/demo/customize.min.js +239 -13
  68. package/components/dropdown/demo/getting-started.min.js +239 -13
  69. package/components/dropdown/demo/index.min.js +239 -13
  70. package/components/dropdown/demo/keyboard-behavior.md +1 -0
  71. package/components/dropdown/demo/pages.json +1 -1
  72. package/components/dropdown/demo/styles.min.css +1 -1
  73. package/components/dropdown/demo/why-dropdown.html +57 -0
  74. package/components/dropdown/demo/why-dropdown.md +97 -0
  75. package/components/dropdown/dist/auro-dropdown.d.ts +34 -1
  76. package/components/dropdown/dist/index.js +239 -13
  77. package/components/dropdown/dist/registered.js +239 -13
  78. package/components/form/demo/css-only.html +57 -0
  79. package/components/form/demo/css-only.md +156 -0
  80. package/components/form/demo/customize.min.js +3098 -259
  81. package/components/form/demo/getting-started.min.js +3098 -259
  82. package/components/form/demo/index.min.js +3098 -259
  83. package/components/form/demo/pages.json +1 -1
  84. package/components/form/demo/registerDemoDeps.min.js +3098 -259
  85. package/components/form/demo/styles.min.css +1 -1
  86. package/components/form/demo/why-form.html +57 -0
  87. package/components/form/demo/why-form.md +101 -0
  88. package/components/input/demo/css-only.html +57 -0
  89. package/components/input/demo/css-only.md +199 -0
  90. package/components/input/demo/customize.min.js +1 -1
  91. package/components/input/demo/getting-started.min.js +1 -1
  92. package/components/input/demo/index.min.js +1 -1
  93. package/components/input/demo/pages.json +1 -1
  94. package/components/input/demo/styles.min.css +1 -1
  95. package/components/input/demo/why-input.html +57 -0
  96. package/components/input/demo/why-input.md +121 -0
  97. package/components/input/dist/index.js +1 -1
  98. package/components/input/dist/registered.js +1 -1
  99. package/components/menu/demo/css-only.html +57 -0
  100. package/components/menu/demo/css-only.md +166 -0
  101. package/components/menu/demo/pages.json +1 -1
  102. package/components/menu/demo/styles.min.css +1 -1
  103. package/components/menu/demo/why-menu.html +57 -0
  104. package/components/menu/demo/why-menu.md +104 -0
  105. package/components/radio/demo/css-only.html +57 -0
  106. package/components/radio/demo/css-only.md +151 -0
  107. package/components/radio/demo/customize.min.js +1764 -0
  108. package/components/radio/demo/demo-support.min.js +55807 -0
  109. package/components/radio/demo/getting-started.js +1 -1
  110. package/components/radio/demo/getting-started.md +1 -1
  111. package/components/radio/demo/getting-started.min.js +1783 -0
  112. package/components/radio/demo/index.min.js +1 -1
  113. package/components/radio/demo/pages.json +1 -1
  114. package/components/radio/demo/styles.min.css +1 -1
  115. package/components/radio/demo/why-radio.html +57 -0
  116. package/components/radio/demo/why-radio.md +92 -0
  117. package/components/radio/dist/index.js +1 -1
  118. package/components/radio/dist/registered.js +1 -1
  119. package/components/select/demo/css-only.html +57 -0
  120. package/components/select/demo/css-only.md +203 -0
  121. package/components/select/demo/customize.min.js +249 -15
  122. package/components/select/demo/getting-started.min.js +249 -15
  123. package/components/select/demo/index.min.js +249 -15
  124. package/components/select/demo/keyboard-behavior.md +1 -0
  125. package/components/select/demo/pages.json +1 -1
  126. package/components/select/demo/styles.min.css +1 -1
  127. package/components/select/demo/why-select.html +57 -0
  128. package/components/select/demo/why-select.md +128 -0
  129. package/components/select/dist/index.js +249 -15
  130. package/components/select/dist/registered.js +249 -15
  131. package/custom-elements.json +1171 -92
  132. package/package.json +8 -8
@@ -12249,7 +12249,7 @@ let AuroHelpText$9 = class AuroHelpText extends i$3 {
12249
12249
  }
12250
12250
  };
12251
12251
 
12252
- var formkitVersion$9 = '202606081518';
12252
+ var formkitVersion$9 = '202606081904';
12253
12253
 
12254
12254
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12255
12255
  // See LICENSE in the project root for license information.
@@ -23576,6 +23576,7 @@ class UtilitiesCalendarRender {
23576
23576
  updateCentralDate(elem, date) {
23577
23577
  // if date is already iso formatted string, we can skip the conversion and validation step
23578
23578
  if (typeof date === 'string' && dateFormatter$1.isValidDate(date)) {
23579
+ // eslint-disable-next-line
23579
23580
  elem.centralDate = date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$1-$2-01'); // Set to first of the month
23580
23581
  return;
23581
23582
  }
@@ -23660,13 +23661,10 @@ class UtilitiesCalendarRender {
23660
23661
  // 2. Start by assuming we can render the max number of months.
23661
23662
  let calendarCount = maxRenderableMonths;
23662
23663
 
23663
- // 3. If we didn't get a count early, restrict based on min/max date.
23664
+ // 3. If maximumRenderableMonths() returns 0 (e.g. an invalid/empty defined range),
23665
+ // fall back to the min/max date range so something is rendered.
23664
23666
  if (!calendarCount && elem.minDate && elem.maxDate) {
23665
- const monthsInRange = this.util.monthDiff(dateFormatter$1.stringToDateInstance(elem.minDate), dateFormatter$1.stringToDateInstance(elem.maxDate));
23666
-
23667
- if (monthsInRange < maxRenderableMonths) {
23668
- calendarCount = monthsInRange;
23669
- }
23667
+ calendarCount = this.util.monthDiff(elem.minDateObject, elem.maxDateObject);
23670
23668
  }
23671
23669
 
23672
23670
  if (elem.numCalendars !== calendarCount) {
@@ -23714,7 +23712,6 @@ class UtilitiesCalendarRender {
23714
23712
  .max="${elem.max}"
23715
23713
  ?noRange="${elem.noRange}"
23716
23714
  .monthFirst="${elem.monthFirst}"
23717
- .hoveredDate="${elem.hoveredDate}"
23718
23715
  .dateTo="${elem.dateTo}"
23719
23716
  .dateFrom="${elem.dateFrom}"
23720
23717
  .locale="${elem.locale}"
@@ -23747,11 +23744,11 @@ var snowflakeStyle = i$5`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
23747
23744
 
23748
23745
  var snowflakeColors = i$5`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
23749
23746
 
23750
- var styleCss$7$1 = i$5`.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:""}`;
23747
+ var styleCss$7$1 = i$5`.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}`;
23751
23748
 
23752
23749
  var colorCss$7$1 = i$5`.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)}}`;
23753
23750
 
23754
- var styleCss$6$1 = i$5`: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%}`;
23751
+ var styleCss$6$1 = i$5`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem) var(--ds-size-200, 1rem) 0}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:336px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%;border-radius:10px;overflow:hidden}.tr:not(:last-of-type){margin-bottom:var(--ds-size-100, 0.5rem)}`;
23755
23752
 
23756
23753
  var colorCss$6$1 = i$5`: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)}`;
23757
23754
 
@@ -24506,41 +24503,45 @@ __decorate([n$5({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
24506
24503
  __decorate([n$5({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
24507
24504
  AuroLibraryRuntimeUtils$5$1.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
24508
24505
 
24509
- var styleCss$5$1 = i$5`.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}}`;
24506
+ var styleCss$5$1 = i$5`.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}`;
24510
24507
 
24511
- var colorCss$5$1 = i$5`: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}`;
24508
+ var colorCss$5$1 = i$5`: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}`;
24512
24509
 
24513
- let s$3 = 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$1="top",o="bottom",n$1$1="right",a="left",l$3$1="auto",c$3$1=[r$1$1,o,n$1$1,a],p$6$1="start",d$3$1="end",f$6$1="viewport",h$3$1="popper",m$6$1=c$3$1.reduce(function(e,t){return e.concat([t+"-"+p$6$1,t+"-"+d$3$1])},[]),u$6$1=[].concat(c$3$1,[l$3$1]).reduce(function(e,t){return e.concat([t,t+"-"+p$6$1,t+"-"+d$3$1])},[]),g$6$1=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function v$3$1(e){return e?(e.nodeName||"").toLowerCase():null}function y$6$1(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$1(e){return e instanceof y$6$1(e).Element||e instanceof Element}function b$3$1(e){return e instanceof y$6$1(e).HTMLElement||e instanceof HTMLElement}function x$3$1(e){return "undefined"!=typeof ShadowRoot&&(e instanceof y$6$1(e).ShadowRoot||e instanceof ShadowRoot)}var S$3$1={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$1(r)&&v$3$1(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$1(s)&&v$3$1(s)&&(Object.assign(s.style,o),Object.keys(r).forEach(function(e){s.removeAttribute(e);}));});}},requires:["computeStyles"]};function _$4$1(e){return e.split("-")[0]}var O=Math.max,k$6$1=Math.min,A$3$1=Math.round;function z$6$1(){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$1())}function M$6$1(e,t,i){ void 0===t&&(t=false),void 0===i&&(i=false);var s=e.getBoundingClientRect(),r=1,o=1;t&&b$3$1(e)&&(r=e.offsetWidth>0&&A$3$1(s.width)/e.offsetWidth||1,o=e.offsetHeight>0&&A$3$1(s.height)/e.offsetHeight||1);var n=(w$6$1(e)?y$6$1(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$1(e){var t=M$6$1(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$1(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return true;if(i&&x$3$1(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$1(e).getComputedStyle(e)}function H$3$1(e){return ["table","td","th"].indexOf(v$3$1(e))>=0}function C$3$1(e){return ((w$6$1(e)?e.ownerDocument:e.document)||window.document).documentElement}function R$3$1(e){return "html"===v$3$1(e)?e:e.assignedSlot||e.parentNode||(x$3$1(e)?e.host:null)||C$3$1(e)}function j(e){return b$3$1(e)&&"fixed"!==L(e).position?e.offsetParent:null}function N$3$1(e){for(var t=y$6$1(e),i=j(e);i&&H$3$1(i)&&"static"===L(i).position;)i=j(i);return i&&("html"===v$3$1(i)||"body"===v$3$1(i)&&"static"===L(i).position)?t:i||function(e){var t=/firefox/i.test(z$6$1());if(/Trident/i.test(z$6$1())&&b$3$1(e)&&"fixed"===L(e).position)return null;var i=R$3$1(e);for(x$3$1(i)&&(i=i.host);b$3$1(i)&&["html","body"].indexOf(v$3$1(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$1(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$1={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$1(i.placement),h=P(f),m=[a,n$1$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$1))}(l.padding,i),g=T$3$1(p),v="y"===h?r$1$1:a,y="y"===h?o:n$1$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$1(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$1(t.elements.popper,s)&&(t.elements.arrow=s);},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function q$3$1(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$1,E=window;if(m){var M=N$3$1(i),T="clientHeight",B="clientWidth";if(M===y$6$1(i)&&"static"!==L(M=C$3$1(i)).position&&"absolute"===f&&(T="scrollHeight",B="scrollWidth"),l===r$1$1||(l===a||l===n$1$1)&&c===d$3$1)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$1||l===o)&&c===d$3$1)k=n$1$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$1(i*r)/r||0,y:A$3$1(s*r)/r||0}}({x:w,y:x},y$6$1(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$1(e);return {scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Q(e){return M$6$1(C$3$1(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$1(e))>=0?e.ownerDocument.body:b$3$1(e)&&Z(e)?e:ee(R$3$1(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$1(s),n=r?[o].concat(o.visualViewport||[],Z(s)?s:[]):s,a=t.concat(n);return r?a:a.concat(te(R$3$1(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$1?ie(function(e,t){var i=y$6$1(e),s=C$3$1(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$1(t)?function(e,t){var i=M$6$1(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$1(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$1(e)))}function re(e,t,i,s){var r="clippingParents"===t?function(e){var t=te(R$3$1(e)),i=["absolute","fixed"].indexOf(L(e).position)>=0&&b$3$1(e)?N$3$1(e):e;return w$6$1(i)?t.filter(function(e){return w$6$1(e)&&B$3$1(e,i)&&"body"!==v$3$1(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$1(r.right,t.right),t.bottom=k$6$1(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$1(l):null,f=l?q$3$1(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$1:t={x:h,y:i.y-s.height};break;case o:t={x:h,y:i.y+i.height};break;case n$1$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$1:t[u]=t[u]-(i[g]/2-s[g]/2);break;case d$3$1: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$1:u,v=i.elementContext,y=void 0===v?h$3$1:v,b=i.altBoundary,x=void 0!==b&&b,S=i.padding,_=void 0===S?0:S,O=I("number"!=typeof _?_:F(_,c$3$1)),k=y===h$3$1?"reference":h$3$1,A=e.rects.popper,z=e.elements[x?k:y],E=re(w$6$1(z)?z:z.contextElement||C$3$1(e.elements.popper),m,g,p),T=M$6$1(e.elements.reference),B=oe({reference:T,element:A,placement:a}),L=ie(Object.assign({},A,B)),H=y===h$3$1?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$1&&j){var N=j[a];Object.keys(R).forEach(function(e){var t=[n$1$1,o].indexOf(e)>=0?1:-1,i=[r$1$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$1:l,d=q$3$1(s),f=d?a?m$6$1:m$6$1.filter(function(e){return q$3$1(e)===d}):c$3$1,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$1(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$1(S),k=m||(O===S||!b?[$(S)]:function(e){if(_$4$1(e)===l$3$1)return [];var t=$(e);return [Y(e),t,Y(t)]}(S)),A=[S].concat(k).reduce(function(e,i){return e.concat(_$4$1(i)===l$3$1?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$1(H),R=q$3$1(H)===p$6$1,j=[r$1$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$1:a:R?o:r$1$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$1,n$1$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$1.reduce(function(e,i){return e[i]=function(e,t,i){var s=_$4$1(e),o=[a,r$1$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$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$1(t.placement),A=q$3$1(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$1:a,W="y"===E?o:n$1$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$1?L[X]:H[X],J=A===p$6$1?-H[X]:-L[X],Q=t.elements.arrow,Z=y&&Q?T$3$1(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$1(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$1(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$1:a,me="x"===E?o:n$1$1,ue=B[M],ge="y"===M?"height":"width",ve=ue+x[he],ye=ue-x[me],we=-1!==[r$1$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$1(t),n=b$3$1(t)&&function(e){var t=e.getBoundingClientRect(),i=A$3$1(t.width)/e.offsetWidth||1,s=A$3$1(t.height)/e.offsetHeight||1;return 1!==i||1!==s}(t),a=C$3$1(t),l=M$6$1(e,n,i),c={scrollLeft:0,scrollTop:0},p={x:0,y:0};return (o||!o&&!i)&&(("body"!==v$3$1(t)||Z(a))&&(c=(s=t)!==y$6$1(s)&&b$3$1(s)?{scrollLeft:(r=s).scrollLeft,scrollTop:r.scrollTop}:J(s)),b$3$1(t)?((p=M$6$1(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$1(e)?te(e):e.contextElement?te(e.contextElement):[],popper:te(t)};var n,c,f=function(e){var t=me(e);return g$6$1.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$1(i),"fixed"===a.options.strategy),popper:T$3$1(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$1(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$1(t.placement),variation:q$3$1(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$1,de,le,fe,U$3$1,{name:"hide",enabled:true,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,s=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,n=ne(t,{elementContext:"reference"}),a=ne(t,{altBoundary:true}),l=ce(n,s),c=ce(a,r,o),p=pe(l),d=pe(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":d});}}]});class we{constructor(e,t,i,s){this.anchor=e,this.popover=t,this.boundaryElement=this.setBoundary(s),this.options={placement:i,visibleClass:"data-show"},this.popover.classList.remove(this.options.visibleClass);}setBoundary(e){return "string"==typeof e?document.querySelector(e)||document.body:e||document.body}show(){this.popper&&this.popper.destroy(),this.popper=ye(this.anchor,this.popover,{tooltip:this.anchor,placement:this.options.placement,modifiers:[{name:"offset",options:{offset:[0,18]}},{name:"preventOverflow",options:{mainAxis:true,boundary:this.boundaryElement,rootBoundary:"document",padding:16}}]});}triggerUpdate(){this.popper.update();}hide(){this.popover.classList.remove(this.options.visibleClass);}}var be=i$5`::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)}
24510
+ let s$3 = 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$1="top",o="bottom",n$1$1="right",a="left",l$3$1="auto",c$3$1=[r$1$1,o,n$1$1,a],p$6$1="start",d$3$1="end",f$6$1="viewport",h$3$1="popper",u$6$1=c$3$1.reduce(function(e,t){return e.concat([t+"-"+p$6$1,t+"-"+d$3$1])},[]),m$6$1=[].concat(c$3$1,[l$3$1]).reduce(function(e,t){return e.concat([t,t+"-"+p$6$1,t+"-"+d$3$1])},[]),g$6$1=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function v$3$1(e){return e?(e.nodeName||"").toLowerCase():null}function y$6$1(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$1(e){return e instanceof y$6$1(e).Element||e instanceof Element}function b$3$1(e){return e instanceof y$6$1(e).HTMLElement||e instanceof HTMLElement}function x$3$1(e){return "undefined"!=typeof ShadowRoot&&(e instanceof y$6$1(e).ShadowRoot||e instanceof ShadowRoot)}var S$3$1={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$1(r)&&v$3$1(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$1(s)&&v$3$1(s)&&(Object.assign(s.style,o),Object.keys(r).forEach(function(e){s.removeAttribute(e);}));});}},requires:["computeStyles"]};function _$4$1(e){return e.split("-")[0]}var A$3$1=Math.max,O=Math.min,k$6$1=Math.round;function T$3$1(){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$1(){return !/^((?!chrome|android).)*safari/i.test(T$3$1())}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$1(e)&&(r=e.offsetWidth>0&&k$6$1(s.width)/e.offsetWidth||1,o=e.offsetHeight>0&&k$6$1(s.height)/e.offsetHeight||1);var n=(w$6$1(e)?y$6$1(e):window).visualViewport,a=!z$6$1()&&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$1(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$1(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return true;if(i&&x$3$1(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$1(e).getComputedStyle(e)}function R$3$1(e){return ["table","td","th"].indexOf(v$3$1(e))>=0}function H$3$1(e){return ((w$6$1(e)?e.ownerDocument:e.document)||window.document).documentElement}function C$3$1(e){return "html"===v$3$1(e)?e:e.assignedSlot||e.parentNode||(x$3$1(e)?e.host:null)||H$3$1(e)}function D(e){return b$3$1(e)&&"fixed"!==L(e).position?e.offsetParent:null}function N$3$1(e){for(var t=y$6$1(e),i=D(e);i&&R$3$1(i)&&"static"===L(i).position;)i=D(i);return i&&("html"===v$3$1(i)||"body"===v$3$1(i)&&"static"===L(i).position)?t:i||function(e){var t=/firefox/i.test(T$3$1());if(/Trident/i.test(T$3$1())&&b$3$1(e)&&"fixed"===L(e).position)return null;var i=C$3$1(e);for(x$3$1(i)&&(i=i.host);b$3$1(i)&&["html","body"].indexOf(v$3$1(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$1(e,O(t,i))}function I(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function q$3$1(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$1(i.placement),h=P(f),u=[a,n$1$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$1(e,c$3$1))}(l.padding,i),g=M$6$1(p),v="y"===h?r$1$1:a,y="y"===h?o:n$1$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$1(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$1(t.elements.popper,s)&&(t.elements.arrow=s);},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function U$3$1(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$1,z=window;if(u){var E=N$3$1(i),M="clientHeight",B="clientWidth";if(E===y$6$1(i)&&"static"!==L(E=H$3$1(i)).position&&"absolute"===f&&(M="scrollHeight",B="scrollWidth"),l===r$1$1||(l===a||l===n$1$1)&&c===d$3$1)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$1||l===o)&&c===d$3$1)O=n$1$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$1(i*r)/r||0,y:k$6$1(s*r)/r||0}}({x:w,y:x},y$6$1(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$1(e);return {scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Q(e){return E(H$3$1(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$1(e))>=0?e.ownerDocument.body:b$3$1(e)&&Z(e)?e:ee(C$3$1(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$1(s),n=r?[o].concat(o.visualViewport||[],Z(s)?s:[]):s,a=t.concat(n);return r?a:a.concat(te(C$3$1(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$1?ie(function(e,t){var i=y$6$1(e),s=H$3$1(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$1();(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$1(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$1(e),s=J(e),r=null==(t=e.ownerDocument)?void 0:t.body,o=A$3$1(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),n=A$3$1(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$1(i.clientWidth,r?r.clientWidth:0)-o),{width:o,height:n,x:a,y:l}}(H$3$1(e)))}function re(e,t,i,s){var r="clippingParents"===t?function(e){var t=te(C$3$1(e)),i=["absolute","fixed"].indexOf(L(e).position)>=0&&b$3$1(e)?N$3$1(e):e;return w$6$1(i)?t.filter(function(e){return w$6$1(e)&&B$3$1(e,i)&&"body"!==v$3$1(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$1(r.top,t.top),t.right=O(r.right,t.right),t.bottom=O(r.bottom,t.bottom),t.left=A$3$1(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$1(l):null,f=l?U$3$1(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$1:t={x:h,y:i.y-s.height};break;case o:t={x:h,y:i.y+i.height};break;case n$1$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$1:t[m]=t[m]-(i[g]/2-s[g]/2);break;case d$3$1: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$1:m,v=i.elementContext,y=void 0===v?h$3$1:v,b=i.altBoundary,x=void 0!==b&&b,S=i.padding,_=void 0===S?0:S,A=I("number"!=typeof _?_:q$3$1(_,c$3$1)),O=y===h$3$1?"reference":h$3$1,k=e.rects.popper,T=e.elements[x?O:y],z=re(w$6$1(T)?T:T.contextElement||H$3$1(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$1?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$1&&D){var N=D[a];Object.keys(C).forEach(function(e){var t=[n$1$1,o].indexOf(e)>=0?1:-1,i=[r$1$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$1:l,d=U$3$1(s),f=d?a?u$6$1:u$6$1.filter(function(e){return U$3$1(e)===d}):c$3$1,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$1(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$1(S),O=u||(A===S||!b?[G(S)]:function(e){if(_$4$1(e)===l$3$1)return [];var t=G(e);return [Y(e),t,Y(t)]}(S)),k=[S].concat(O).reduce(function(e,i){return e.concat(_$4$1(i)===l$3$1?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$1(R),C=U$3$1(R)===p$6$1,D=[r$1$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$1:a:C?o:r$1$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$1,n$1$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$1.reduce(function(e,i){return e[i]=function(e,t,i){var s=_$4$1(e),o=[a,r$1$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$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$1(t.placement),k=U$3$1(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$1:a,V="y"===z?o:n$1$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$1?L[W]:R[W],J=k===p$6$1?-R[W]:-L[W],Q=t.elements.arrow,Z=y&&Q?M$6$1(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$1(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$1(G,pe):G);B[z]=de,I[z]=de-X;}if(f){var fe,he="x"===z?r$1$1:a,ue="x"===z?o:n$1$1,me=B[E],ge="y"===E?"height":"width",ve=me+x[he],ye=me-x[ue],we=-1!==[r$1$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$1(t),n=b$3$1(t)&&function(e){var t=e.getBoundingClientRect(),i=k$6$1(t.width)/e.offsetWidth||1,s=k$6$1(t.height)/e.offsetHeight||1;return 1!==i||1!==s}(t),a=H$3$1(t),l=E(e,n,i),c={scrollLeft:0,scrollTop:0},p={x:0,y:0};return (o||!o&&!i)&&(("body"!==v$3$1(t)||Z(a))&&(c=(s=t)!==y$6$1(s)&&b$3$1(s)?{scrollLeft:(r=s).scrollLeft,scrollTop:r.scrollTop}:J(s)),b$3$1(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$1(e)?te(e):e.contextElement?te(e.contextElement):[],popper:te(t)};var n,c,f=function(e){var t=ue(e);return g$6$1.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$1(i),"fixed"===a.options.strategy),popper:M$6$1(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$1(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$1(t.placement),variation:U$3$1(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$1,de,le,fe,F,{name:"hide",enabled:true,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,s=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,n=ne(t,{elementContext:"reference"}),a=ne(t,{altBoundary:true}),l=ce(n,s),c=ce(a,r,o),p=pe(l),d=pe(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":d});}}]});class we{constructor(e,t,i,s){this.anchor=e,this.popover=t,this.boundaryElement=this.setBoundary(s),this.options={placement:i,visibleClass:"data-show"},this.popover.classList.remove(this.options.visibleClass);}setBoundary(e){return "string"==typeof e?document.querySelector(e)||document.body:e||document.body}show(){this.popper&&this.popper.destroy(),this.popper=ye(this.anchor,this.popover,{tooltip:this.anchor,placement:this.options.placement,modifiers:[{name:"offset",options:{offset:[0,18]}},{name:"preventOverflow",options:{mainAxis:true,boundary:this.boundaryElement,rootBoundary:"document",padding:16}}]});}triggerUpdate(){this.popper.update();}hide(){this.popover.classList.remove(this.options.visibleClass);}}var be=i$5`::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)}
24514
24511
  `,xe=i$5`.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:""}
24515
24512
  `,Se=i$5`: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)}
24516
- `;class _e extends i$3{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$3;}static get properties(){return {addSpace:{type:Boolean,reflect:true},boundary:{type:String},disabled:{type:Boolean,reflect:true},for:{type:String,reflect:true},placement:{type:String},removeSpace:{type:Boolean,reflect:true}}}static get styles(){return [i$5`${xe}`,i$5`${be}`,i$5`${Se}`]}static register(e="auro-popover"){s$3.prototype.registerComponent(e,_e);}connectedCallback(){super.connectedCallback(),this._initializeDefaults(),this._onTouchStart||(this._onTouchStart=()=>{this.toggle();}),this.addEventListener("touchstart",this._onTouchStart);}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("touchstart",this._onTouchStart),this.trigger&&(this._onTriggerMouseEnter&&this._eventTarget.removeEventListener("mouseenter",this._onTriggerMouseEnter),this._onTriggerMouseLeave&&this._eventTarget.removeEventListener("mouseleave",this._onTriggerMouseLeave),this._onTriggerFocus&&this.trigger.removeEventListener("focus",this._onTriggerFocus),this._onTriggerBlur&&this.trigger.removeEventListener("blur",this._onTriggerBlur),this._onTriggerKeydown&&this.trigger.removeEventListener("keydown",this._onTriggerKeydown),this._onSlotChange&&this.shadowRoot?.querySelector("slot:not([name])")?.removeEventListener("slotchange",this._onSlotChange),this.trigger.removeAttribute("aria-description"),this._addedTabIndex&&"0"===this.trigger.getAttribute("tabindex")&&this.trigger.removeAttribute("tabindex")),this._onHidePopover&&this.removeEventListener("hidePopover",this._onHidePopover),this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper?.popper&&"function"==typeof this.popper.popper.destroy&&(this.popper.popper.destroy(),this.popper.popper=null);}firstUpdated(){if(this.runtimeUtils.handleComponentTagRename(this,"auro-popover"),this.for&&(this.trigger=document.querySelector(`#${this.for}`)||this.getRootNode().querySelector(`#${this.for}`)),this.trigger||([this.trigger]=this.shadowRoot.querySelector('slot[name="trigger"]').assignedElements()),!this.trigger)return;const e=this.trigger.tabIndex>=0,t=!!this.trigger.shadowRoot&&Boolean(this.trigger.shadowRoot.querySelector('button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'));e||t||this.trigger.hasAttribute("tabindex")||(this.trigger.setAttribute("tabindex","0"),this._addedTabIndex=true);const i=this.shadowRoot.querySelector("slot:not([name])"),s=()=>i.assignedNodes({flatten:true}).map(e=>e.textContent??"").join(" ").replace(/\s+/g," ").trim();this.trigger.setAttribute("aria-description",s()),this._onSlotChange=()=>{this.trigger?.setAttribute("aria-description",s());},i.addEventListener("slotchange",this._onSlotChange),this.auroPopover=this.shadowRoot.querySelector("#popover"),this.popper=new we(this.trigger,this.auroPopover,this.placement,this.boundary),this._onBodyMouseover=e=>this.handleMouseoverEvent(e),this._onTriggerMouseEnter=()=>{this.toggleShow();},this._onTriggerMouseLeave=()=>{this.toggleHide();},this._onTriggerFocus=()=>{this.toggleShow();},this._onTriggerBlur=()=>{this.toggleHide();},this._onTriggerKeydown=e=>{const t=e.key.toLowerCase();this.isPopoverVisible&&("tab"!==t&&"escape"!==t||this.toggleHide())," "!==t&&"enter"!==t||(" "===t&&this._addedTabIndex&&e.preventDefault(),this.toggle());},this._onHidePopover=()=>{this.toggleHide();},this._eventTarget=this.trigger.parentElement.localName===this.localName?this:this.trigger,this._eventTarget.addEventListener("mouseenter",this._onTriggerMouseEnter),this._eventTarget.addEventListener("mouseleave",this._onTriggerMouseLeave),this.trigger.addEventListener("keydown",this._onTriggerKeydown),this.trigger.addEventListener("focus",this._onTriggerFocus),this.trigger.addEventListener("blur",this._onTriggerBlur),this.addEventListener("hidePopover",this._onHidePopover);}toggle(){this.popper&&(this.isPopoverVisible?this.toggleHide():this.toggleShow());}toggleHide(){this.isPopoverVisible=false,this.removeAttribute("data-show"),this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper&&this.popper.hide();}toggleShow(){this.popper&&(this.popper.show(),this.isPopoverVisible=true,this.setAttribute("data-show","true"),document.body.addEventListener("mouseover",this._onBodyMouseover));}handleMouseoverEvent(e){this.isPopoverVisible&&!e.composedPath().includes(this)&&this.toggleHide();}updated(e){e.has("boundary")&&this.popper&&(this.popper.boundaryElement=this.popper.setBoundary(this.boundary));}render(){return b$8`
24517
- <div id="popover" class="popover util_insetLg body-default" part="popover">
24513
+ `;class _e extends i$3{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$3;}static get properties(){return {addSpace:{type:Boolean,reflect:true},boundary:{type:String},disabled:{type:Boolean,reflect:true},for:{type:String,reflect:true},placement:{type:String},removeSpace:{type:Boolean,reflect:true},isPopoverVisible:{type:Boolean,reflect:true,attribute:"data-show",converter:{fromAttribute:e=>null!==e,toAttribute:e=>e?"true":null}}}}static get styles(){return [i$5`${xe}`,i$5`${be}`,i$5`${Se}`]}static register(e="auro-popover"){s$3.prototype.registerComponent(e,_e);}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||this.setAttribute("role","none"),this._initializeDefaults(),this._onTouchStart||(this._onTouchStart=()=>{this.toggle();}),this.addEventListener("touchstart",this._onTouchStart);}disconnectedCallback(){if(super.disconnectedCallback(),this.removeEventListener("touchstart",this._onTouchStart),this.trigger){this._onTriggerMouseEnter&&this._eventTarget.removeEventListener("mouseenter",this._onTriggerMouseEnter),this._onTriggerMouseLeave&&this._eventTarget.removeEventListener("mouseleave",this._onTriggerMouseLeave),this._onTriggerFocus&&this.trigger.removeEventListener("focusin",this._onTriggerFocus),this._onTriggerBlur&&this.trigger.removeEventListener("focusout",this._onTriggerBlur),this._onTriggerKeydown&&this.trigger.removeEventListener("keydown",this._onTriggerKeydown),this._onSlotChange&&this.shadowRoot?.querySelector("slot:not([name])")?.removeEventListener("slotchange",this._onSlotChange);for(const e of this._ariaDescriptionTargets||[this.trigger])e.removeAttribute("aria-description");this._addedTabIndex&&"0"===this.trigger.getAttribute("tabindex")&&this.trigger.removeAttribute("tabindex");}this._onHidePopover&&this.removeEventListener("hidePopover",this._onHidePopover),this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper?.popper&&"function"==typeof this.popper.popper.destroy&&(this.popper.popper.destroy(),this.popper.popper=null);}firstUpdated(){this.runtimeUtils.handleComponentTagRename(this,"auro-popover"),this.for&&(this.trigger=document.querySelector(`#${this.for}`)||this.getRootNode().querySelector(`#${this.for}`)),this.trigger||([this.trigger]=this.shadowRoot.querySelector('slot[name="trigger"]').assignedElements()),this.trigger&&(this._setupAccessibility(),this._setupEventListeners(),this.isPopoverVisible&&this.popper&&(this.disabled?this.isPopoverVisible=false:(this.popper.show(),document.body.addEventListener("mouseover",this._onBodyMouseover))));}_setupEventListeners(){this.auroPopover=this.shadowRoot.querySelector("#popover"),this.popper=new we(this.trigger,this.auroPopover,this.placement,this.boundary),this._onBodyMouseover=e=>this.handleMouseoverEvent(e),this._onTriggerMouseEnter=()=>{this.toggleShow();},this._onTriggerMouseLeave=()=>{this.toggleHide();},this._onTriggerFocus=()=>{this.toggleShow();},this._onTriggerBlur=e=>{let t=e.relatedTarget,i=false;for(;t;){if(this.trigger.contains(t)||this.contains(t)){i=true;break}const e=t.getRootNode();t=e instanceof ShadowRoot?e.host:null;}i||this.toggleHide();},this._onTriggerKeydown=e=>{const t=e.key.toLowerCase();if(this.isPopoverVisible&&("tab"!==t&&"escape"!==t||this.toggleHide())," "===t||"enter"===t){if(e.target!==this.trigger&&!this._addedTabIndex)return;" "===t&&this._addedTabIndex&&e.preventDefault(),this.toggle();}},this._onHidePopover=()=>{this.toggleHide();},this._eventTarget=this.trigger.parentElement.localName===this.localName?this:this.trigger,this._eventTarget.addEventListener("mouseenter",this._onTriggerMouseEnter),this._eventTarget.addEventListener("mouseleave",this._onTriggerMouseLeave),this.trigger.addEventListener("keydown",this._onTriggerKeydown),this.trigger.addEventListener("focusin",this._onTriggerFocus),this.trigger.addEventListener("focusout",this._onTriggerBlur),this.addEventListener("hidePopover",this._onHidePopover);}_setupAccessibility(){const e=this.trigger.tabIndex>=0,t='button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex^="-"]), [contenteditable]:not([contenteditable="false"]), summary, iframe, audio[controls], video[controls]',i=e=>{if(e.tabIndex<0)return false;let t=e;for(;t;){if(t.closest("[hidden], [inert]"))return false;const e=t.getRootNode();t=e instanceof ShadowRoot?e.host:null;}return true};let s=[...this.trigger.querySelectorAll(t)].some(i);if(!s){const e=this.trigger.querySelectorAll("*");for(const r of e)if(r.localName.includes("-")&&(r.tabIndex>=0||r.shadowRoot&&[...r.shadowRoot.querySelectorAll(t)].some(i))){s=true;break}}!s&&this.trigger.localName.includes("-")&&this.trigger.shadowRoot&&(s=[...this.trigger.shadowRoot.querySelectorAll(t)].some(i)),e||s||this.trigger.hasAttribute("tabindex")||(this.trigger.setAttribute("tabindex","0"),this._addedTabIndex=true);const r=this.shadowRoot.querySelector("slot:not([name])"),o=()=>r.assignedNodes({flatten:true}).map(e=>e.textContent??"").join(" ").replace(/\s+/g," ").trim();if(this._ariaDescriptionTargets=[],!e&&s){const e=[...this.trigger.querySelectorAll(t)].filter(i);this._ariaDescriptionTargets.push(...e);const s=this.trigger.querySelectorAll("*");for(const r of s)if(r.localName.includes("-")&&!e.includes(r))if(r.tabIndex>=0)this._ariaDescriptionTargets.push(r);else if(r.shadowRoot){const e=[...r.shadowRoot.querySelectorAll(t)].filter(i);for(const t of e)this._ariaDescriptionTargets.push(t);}if(0===this._ariaDescriptionTargets.length){if(this.trigger.localName.includes("-")&&this.trigger.shadowRoot){const e=[...this.trigger.shadowRoot.querySelectorAll(t)].filter(i);this._ariaDescriptionTargets.push(...e);}0===this._ariaDescriptionTargets.length&&this._ariaDescriptionTargets.push(this.trigger);}}else this._ariaDescriptionTargets.push(this.trigger);const n=o();for(const e of this._ariaDescriptionTargets)e.setAttribute("aria-description",n);this._onSlotChange=()=>{const e=o();for(const t of this._ariaDescriptionTargets)t?.setAttribute("aria-description",e);},r.addEventListener("slotchange",this._onSlotChange);}toggle(){this.popper&&(this.isPopoverVisible?this.toggleHide():this.toggleShow());}toggleHide(){this.isPopoverVisible=false;}toggleShow(){this.popper&&!this.disabled&&(this.isPopoverVisible=true);}handleMouseoverEvent(e){this.isPopoverVisible&&!e.composedPath().includes(this)&&this.toggleHide();}updated(e){if(e.has("boundary")&&this.popper&&(this.popper.boundaryElement=this.popper.setBoundary(this.boundary)),e.has("isPopoverVisible")&&this.popper)if(this.isPopoverVisible){if(this.disabled)return void(this.isPopoverVisible=false);this.popper.show(),document.body.addEventListener("mouseover",this._onBodyMouseover);}else this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper.hide();e.has("disabled")&&this.disabled&&this.isPopoverVisible&&(this.isPopoverVisible=false);}render(){return b$8`
24514
+ <div
24515
+ id="popover"
24516
+ class="popover util_insetLg body-default"
24517
+ part="popover"
24518
+ role="tooltip"
24519
+ aria-hidden="${this.isPopoverVisible?"false":"true"}">
24518
24520
  <div id="arrow" class="arrow" data-popper-arrow></div>
24519
- <span role="tooltip"><slot></slot></span>
24521
+ <slot></slot>
24520
24522
  </div>
24521
24523
 
24522
- <span>
24524
+ <span role="presentation">
24523
24525
  <slot name="trigger" data-trigger-placement="${this.placement}"></slot>
24524
24526
  </span>
24525
24527
  `}}
24526
24528
 
24527
24529
  var popoverVersion = '6.0.1';
24528
24530
 
24531
+ /* 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 */
24532
+
24529
24533
  const startOfDay$1 = (ms) => {
24530
24534
  const date = new Date(ms);
24531
24535
  date.setHours(0, 0, 0, 0);
24532
24536
  return date.getTime();
24533
24537
  };
24534
24538
 
24535
- /* 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 */
24536
-
24537
24539
  class AuroCalendarCell extends i$3 {
24538
24540
  constructor() {
24539
24541
  super();
24540
24542
 
24541
24543
  this.day = null;
24542
24544
  this.selected = false;
24543
- this.hovered = false;
24544
24545
  this.dateTo = null;
24545
24546
  this.dateFrom = null;
24546
24547
  this.month = null;
@@ -24548,11 +24549,12 @@ class AuroCalendarCell extends i$3 {
24548
24549
  this.max = null;
24549
24550
  this.disabled = false;
24550
24551
  this.disabledDays = [];
24551
- this.hoveredDate = null;
24552
24552
  this.isCurrentDate = false;
24553
24553
  this._locale = null;
24554
24554
  this.dateStr = null;
24555
24555
  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.
24556
+ this.active = false;
24557
+ this.hasPopoverContent = false;
24556
24558
 
24557
24559
  this.runtimeUtils = new AuroLibraryRuntimeUtils$5$1();
24558
24560
 
@@ -24571,7 +24573,6 @@ class AuroCalendarCell extends i$3 {
24571
24573
  // ...super.properties,
24572
24574
  day: { type: Object },
24573
24575
  selected: { type: Boolean },
24574
- hovered: { type: Boolean },
24575
24576
  dateTo: { type: String },
24576
24577
  dateFrom: { type: String },
24577
24578
  month: { type: String },
@@ -24582,11 +24583,11 @@ class AuroCalendarCell extends i$3 {
24582
24583
  reflect: true
24583
24584
  },
24584
24585
  disabledDays: { type: Array },
24585
- hoveredDate: { type: String },
24586
24586
  isCurrentDate: { type: Boolean },
24587
24587
  locale: { type: String },
24588
24588
  dateStr: { type: String },
24589
- renderForDateSlot: { type: Boolean }
24589
+ renderForDateSlot: { type: Boolean },
24590
+ hasPopoverContent: { type: Boolean }
24590
24591
  };
24591
24592
  }
24592
24593
 
@@ -24610,17 +24611,17 @@ class AuroCalendarCell extends i$3 {
24610
24611
  }
24611
24612
 
24612
24613
  /**
24613
- * Handles selected and hovered states of the calendar cell when the date changes.
24614
+ * Handles selected state of the calendar cell when the selection changes.
24615
+ * Also clears any imperative range preview classes so classMap is the
24616
+ * sole source of truth after a selection update.
24614
24617
  * @private
24615
24618
  * @param {Number} dateFrom - Depart date.
24616
24619
  * @param {Number} dateTo - Return date.
24617
- * @param {Number} hoveredDate - Hovered date.
24618
24620
  * @param {Object} day - An object containing the dateFrom and day of month values.
24619
24621
  * @returns {void}
24620
24622
  */
24621
- dateChanged(dateFrom, dateTo, hoveredDate, day) {
24623
+ dateChanged(dateFrom, dateTo, day) {
24622
24624
  this.selected = false;
24623
- this.hovered = false;
24624
24625
 
24625
24626
  const parsedDateFrom = parseInt(dateFrom, 10);
24626
24627
  const parsedDateTo = parseInt(dateTo, 10);
@@ -24632,10 +24633,6 @@ class AuroCalendarCell extends i$3 {
24632
24633
  if (day.date === departTimestamp || day.date === returnTimestamp) {
24633
24634
  this.selected = true;
24634
24635
  }
24635
-
24636
- if (((hoveredDate === day.date || day.date < hoveredDate) && day.date > parsedDateFrom && !parsedDateTo && !Number.isNaN(parsedDateFrom) && parsedDateFrom !== undefined && !this.selected) || (day.date > parsedDateFrom && day.date < parsedDateTo)) {
24637
- this.hovered = true;
24638
- }
24639
24636
  }
24640
24637
  }
24641
24638
 
@@ -24645,27 +24642,104 @@ class AuroCalendarCell extends i$3 {
24645
24642
  * @returns {void}
24646
24643
  */
24647
24644
  handleTap() {
24648
- if (!this.disabled) {
24645
+ if (!this.disabled && !this.isBlackout()) {
24649
24646
  this.datepicker.handleCellClick(this.day.date);
24650
24647
  }
24648
+
24649
+ // Set this cell as the active cell regardless of blackout status
24650
+ if (this.day) {
24651
+ this.dispatchEvent(new CustomEvent('calendar-cell-activate', {
24652
+ bubbles: true,
24653
+ composed: true,
24654
+ detail: { date: this.day.date }
24655
+ }));
24656
+ }
24651
24657
  }
24652
24658
 
24653
24659
  /**
24654
24660
  * Handles user hover events and dispatches a custom event.
24661
+ * Does NOT set any reactive properties — the range preview is handled
24662
+ * imperatively by the calendar component to avoid O(N) re-renders.
24655
24663
  * @private
24656
24664
  * @returns {void}
24657
24665
  */
24658
24666
  handleHover() {
24659
- this.hovered = true;
24660
-
24661
- let _a;
24662
24667
  this.dispatchEvent(new CustomEvent('date-is-hovered', {
24663
- detail: { date: (_a = this.day) === null || _a === void 0 ? void 0 : _a.date },
24668
+ detail: { date: this.day?.date },
24664
24669
  }));
24665
24670
  }
24666
24671
 
24667
24672
  /**
24668
- * Checks if the current date is a valid date depending on the min and max values.
24673
+ * Handles focus events on the cell button.
24674
+ * Dispatches a lightweight event for the calendar to handle SR
24675
+ * announcements and range preview updates without triggering
24676
+ * any Lit lifecycle updates.
24677
+ * @private
24678
+ * @returns {void}
24679
+ */
24680
+ handleFocus() {
24681
+ this.dispatchEvent(new CustomEvent('calendar-cell-focused', {
24682
+ bubbles: true,
24683
+ composed: true,
24684
+ detail: { date: this.day?.date },
24685
+ }));
24686
+ }
24687
+
24688
+ /**
24689
+ * Checks if the current date is outside the valid min/max range.
24690
+ * Out-of-range cells are not focusable and are hidden from screen readers.
24691
+ * @private
24692
+ * @param {Object} day - An object containing the dateFrom and day of month values.
24693
+ * @param {Number} min - The minimum date value.
24694
+ * @param {Number} max - The maximum date value.
24695
+ * @returns {Boolean} - True if the date is out of range.
24696
+ */
24697
+ isOutOfRange(day, min, max) {
24698
+ if (day && day.date !== null && day.date !== undefined) {
24699
+ return day.date < min || day.date > max;
24700
+ }
24701
+ return false;
24702
+ }
24703
+
24704
+ /**
24705
+ * Checks if the current date is a blackout date (in disabledDays but within range).
24706
+ * Blackout cells are focusable but not selectable.
24707
+ * @private
24708
+ * @returns {Boolean} - True if the date is a blackout date.
24709
+ */
24710
+ isBlackout() {
24711
+ if (!this.day || this.day.date === null || this.day.date === undefined || this.isOutOfRange(this.day, this.min, this.max)) {
24712
+ return false;
24713
+ }
24714
+
24715
+ // Check against disabledDays timestamps (legacy path)
24716
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
24717
+ (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
24718
+ return true;
24719
+ }
24720
+
24721
+ // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
24722
+ const blackoutDates = this.datepicker?.blackoutDates;
24723
+
24724
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
24725
+ const date = new Date(this.day.date * 1000);
24726
+ const yyyy = date.getFullYear();
24727
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
24728
+ const dd = String(date.getDate()).padStart(2, '0');
24729
+ const cellDate = `${yyyy}-${mm}-${dd}`;
24730
+ if (blackoutDates.includes(cellDate)) {
24731
+ return true;
24732
+ }
24733
+ }
24734
+
24735
+ return false;
24736
+ }
24737
+
24738
+ /**
24739
+ * Checks if the current date is disabled based on min/max range or the
24740
+ * legacy disabledDays timestamp list. Sets the `disabled` attribute on the
24741
+ * host when the date falls outside the allowed range or appears in
24742
+ * disabledDays. Note: blackout dates are handled separately by `isBlackout()`.
24669
24743
  * @private
24670
24744
  * @param {Object} day - An object containing the dateFrom and day of month values.
24671
24745
  * @param {Number} min - The minimum date value.
@@ -24676,15 +24750,114 @@ class AuroCalendarCell extends i$3 {
24676
24750
  isEnabled(day, min, max, disabledDays) {
24677
24751
  this.removeAttribute('disabled');
24678
24752
 
24679
- if (disabledDays && day && day.date) {
24680
- if (day.date < min || day.date > max || disabledDays.findIndex(disabledDay => parseInt(disabledDay, 10) === day.date) !== -1) {
24681
- this.setAttribute('disabled', true);
24682
- return true;
24683
- }
24753
+ if (disabledDays && day && day.date &&
24754
+ (day.date < min || day.date > max || disabledDays.findIndex(disabledDay => parseInt(disabledDay, 10) === day.date) !== -1)) {
24755
+ this.setAttribute('disabled', true);
24756
+ return true;
24684
24757
  }
24758
+
24685
24759
  return false;
24686
24760
  }
24687
24761
 
24762
+ /**
24763
+ * Generates a unique cell ID in the format cell-YYYY-MM-DD.
24764
+ * @private
24765
+ * @returns {String} The unique cell ID.
24766
+ */
24767
+ getCellId() {
24768
+ if (!this.day || !this.day.date) return '';
24769
+ const date = new Date(this.day.date * 1000);
24770
+ const year = date.getFullYear();
24771
+ const month = String(date.getMonth() + 1).padStart(2, '0');
24772
+ const day = String(date.getDate()).padStart(2, '0');
24773
+ return `cell-${year}-${month}-${day}`;
24774
+ }
24775
+
24776
+ /**
24777
+ * Generates a localized aria-label for the cell button using Intl.DateTimeFormat.
24778
+ * Includes range position and blackout status.
24779
+ * @private
24780
+ * @returns {String} The aria-label string.
24781
+ */
24782
+ getAriaLabel() {
24783
+ if (!this.day || this.day.date === undefined) return '';
24784
+
24785
+ const date = new Date(this.day.date * 1000);
24786
+
24787
+ // Generate localized full date string using the configured locale
24788
+ const localeCode = this.locale?.code || undefined;
24789
+ const dateFormatter = new Intl.DateTimeFormat(localeCode, {
24790
+ weekday: 'long',
24791
+ year: 'numeric',
24792
+ month: 'long',
24793
+ day: 'numeric'
24794
+ });
24795
+
24796
+ let label = dateFormatter.format(date);
24797
+
24798
+ // Append date slot content (e.g. prices) so it is announced with the date.
24799
+ if (this.renderForDateSlot) {
24800
+ const dateSlotEl = this.querySelector(`[slot="date_${this.dateStr}"]`);
24801
+ if (dateSlotEl) {
24802
+ const text = dateSlotEl.innerText?.trim();
24803
+ if (text) {
24804
+ label += `, ${text}`;
24805
+ }
24806
+ }
24807
+ }
24808
+
24809
+ // appending popover content here so that it gets read in a logical order with the other date content.
24810
+ if (this.hasPopoverContent) {
24811
+ const popoverEl = this.querySelector(`[slot="popover_${this.dateStr}"]`);
24812
+ if (popoverEl) {
24813
+ label += `, ${popoverEl.innerText.trim()}`;
24814
+ }
24815
+ }
24816
+
24817
+ // Append range position label for range datepickers
24818
+ const rangePosition = this.getRangePosition();
24819
+ if (rangePosition) {
24820
+ label += `, ${rangePosition}`;
24821
+ }
24822
+
24823
+ // Append blackout label for blackout cells
24824
+ if (this.isBlackout()) {
24825
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
24826
+ }
24827
+
24828
+ return label;
24829
+ }
24830
+
24831
+ /**
24832
+ * Determines the range position of this cell relative to the current selection.
24833
+ * @private
24834
+ * @returns {String|null} Range position label or null if not in range mode.
24835
+ */
24836
+ getRangePosition() {
24837
+ if (!this.datepicker || !this.datepicker.hasAttribute('range')) return null;
24838
+
24839
+ const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
24840
+ if (!Number.isFinite(parsedDateFrom)) return null;
24841
+
24842
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
24843
+ const dayDate = this.day.date;
24844
+
24845
+ const parsedDateTo = Number.parseInt(this.dateTo, 10);
24846
+ const hasDateTo = Number.isFinite(parsedDateTo);
24847
+ const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
24848
+
24849
+ if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
24850
+
24851
+ if (hasDateTo && dayDate === returnTimestamp) return this.datepicker.rangeLabelEnd || 'range end';
24852
+
24853
+ if (dayDate < departTimestamp) return this.datepicker.rangeLabelBeforeRange || 'before range';
24854
+
24855
+ if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
24856
+
24857
+ // After start date, no end date yet, or after end date
24858
+ return this.datepicker.rangeLabelAfterRange || 'after range';
24859
+ }
24860
+
24688
24861
  /**
24689
24862
  * Checks if the current date is the depart date.
24690
24863
  * @private
@@ -24752,12 +24925,12 @@ class AuroCalendarCell extends i$3 {
24752
24925
  }
24753
24926
 
24754
24927
  /**
24755
- * Checks if the current date is a highlighted date.
24928
+ * Checks if the current date is a referenced date.
24756
24929
  * @param {Object} dateStr - The date string in MM_DD_YYYY format.
24757
- * @returns Boolean - True if the date is a highlighted date.
24930
+ * @returns Boolean - True if the date is a referenced date.
24758
24931
  */
24759
24932
  isReferenceDate(dateStr) {
24760
- // If the datepicker has highlighted dates specified
24933
+ // If the datepicker has referenced dates specified
24761
24934
  if (this.datepicker && this.datepicker.hasAttribute('referenceDates')) {
24762
24935
 
24763
24936
  // Get the referenceDates attribute from the datepicker
@@ -24767,7 +24940,11 @@ class AuroCalendarCell extends i$3 {
24767
24940
  if (!Array.isArray(referenceDates) || referenceDates.length === 0) return false;
24768
24941
 
24769
24942
  // Convert cell dateStr (MM_DD_YYYY) to ISO (YYYY-MM-DD) for comparison
24770
- const [month, day, year] = dateStr.split('_');
24943
+ const [
24944
+ month,
24945
+ day,
24946
+ year
24947
+ ] = dateStr.split('_');
24771
24948
  const cellISO = `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
24772
24949
 
24773
24950
  return referenceDates.includes(cellISO);
@@ -24857,9 +25034,9 @@ class AuroCalendarCell extends i$3 {
24857
25034
 
24858
25035
  if (popoverSlotContent) {
24859
25036
  this.appendChild(popoverSlotContent.cloneNode(true));
24860
- this.auroPopover.removeAttribute('disabled');
25037
+ this.hasPopoverContent = true;
24861
25038
  } else {
24862
- this.auroPopover.setAttribute('disabled', true);
25039
+ this.hasPopoverContent = false;
24863
25040
  }
24864
25041
  } catch (err) { // eslint-disable-line no-unused-vars
24865
25042
  // Error handling goes here
@@ -24875,60 +25052,249 @@ class AuroCalendarCell extends i$3 {
24875
25052
  return;
24876
25053
  }
24877
25054
  this.datepicker = calendar.datepicker;
24878
- this.datepicker.addEventListener('auroDatePicker-newSlotContent', () => {
25055
+ this._slotContentHandler = () => {
24879
25056
  this.handleSlotContent();
25057
+ // Force re-render so isBlackout()/aria-disabled reflect updated blackoutDates.
25058
+ this.requestUpdate();
25059
+ };
25060
+ this.datepicker.addEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
25061
+
25062
+ // Cache button reference for imperative class manipulation.
25063
+ this.updateComplete.then(() => {
25064
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
24880
25065
  });
24881
25066
 
25067
+ // Trigger an initial update now that `this.datepicker` is assigned so
25068
+ // cells reflect blackout/slot state that was configured before first render.
25069
+ this.requestUpdate();
25070
+
25071
+ this.calendarMonth = calendarMonth;
25072
+ this.configurePopover();
25073
+ }
25074
+
25075
+ disconnectedCallback() {
25076
+ super.disconnectedCallback();
25077
+ if (this.datepicker && this._slotContentHandler) {
25078
+ this.datepicker.removeEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
25079
+ }
25080
+ }
25081
+
25082
+ /**
25083
+ * Configures the popover instance with the calendar month boundary.
25084
+ * Called from firstUpdated and updated because the popover element is only
25085
+ * rendered after hasPopoverContent becomes true (set by handleSlotContent).
25086
+ * @private
25087
+ * @returns {void}
25088
+ */
25089
+ configurePopover() {
24882
25090
  this.auroPopover = this.shadowRoot.querySelector(this.popoverTag._$litStatic$);
24883
25091
 
24884
- this.auroPopover.boundary = calendarMonth;
25092
+ if (this.auroPopover && this.calendarMonth) {
25093
+ this.auroPopover.boundary = this.calendarMonth;
25094
+ }
24885
25095
  }
24886
25096
 
24887
25097
  updated(properties) {
24888
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('hoveredDate') || properties.has('day')) {
24889
- this.dateChanged(this.dateFrom, this.dateTo, this.hoveredDate, this.day);
25098
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('day')) {
25099
+ this.dateChanged(this.dateFrom, this.dateTo, this.day);
25100
+ }
25101
+
25102
+ if (properties.has('day') && this.day) {
25103
+ this.setDateSlotName();
25104
+ this.handleSlotContent();
25105
+
25106
+ // Re-cache button reference when the day changes (cell may have re-rendered).
25107
+ this.updateComplete.then(() => {
25108
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
25109
+ });
25110
+
25111
+ // Update host-level aria attributes for ariaActiveDescendantElement.
25112
+ this.updateHostAria();
25113
+ }
25114
+
25115
+ // Update host aria when selection changes (aria-selected, range labels)
25116
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
25117
+ this.updateHostAria();
24890
25118
  }
24891
25119
 
24892
- this.setDateSlotName();
24893
- this.handleSlotContent();
25120
+ // Configure popover when it first becomes rendered
25121
+ if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
25122
+ this.updateComplete.then(() => this.configurePopover());
25123
+ }
24894
25124
  }
24895
25125
 
24896
- render() {
25126
+ /**
25127
+ * Updates ARIA attributes on the host element so that
25128
+ * ariaActiveDescendantElement can expose cell info to the SR.
25129
+ * @private
25130
+ * @returns {void}
25131
+ */
25132
+ updateHostAria() {
25133
+ if (!this.day || this.day.date === undefined) return;
25134
+
25135
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
25136
+ if (outOfRange) {
25137
+ this.removeAttribute('role');
25138
+ this.removeAttribute('aria-label');
25139
+ return;
25140
+ }
25141
+
25142
+ // The host acts as the gridcell for ariaActiveDescendantElement.
25143
+ this.setAttribute('role', 'gridcell');
25144
+ this.setAttribute('aria-label', this.getAriaLabel());
25145
+ this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
25146
+
25147
+ if (this.isBlackout()) {
25148
+ this.setAttribute('aria-disabled', 'true');
25149
+ } else {
25150
+ this.removeAttribute('aria-disabled');
25151
+ }
25152
+ }
25153
+
25154
+ /**
25155
+ * Programmatically focuses the cell's interactive button element.
25156
+ * Uses focusVisible: true so the :focus-visible ring appears even when
25157
+ * the bib was opened via mouse click (which sets mouse input modality).
25158
+ * @returns {void}
25159
+ */
25160
+ focusButton() {
25161
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
25162
+ if (button) {
25163
+ button.focus({ focusVisible: true });
25164
+ }
25165
+ }
25166
+
25167
+ /**
25168
+ * Imperatively marks this cell as active without triggering a Lit re-render.
25169
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
25170
+ * @returns {void}
25171
+ */
25172
+ setActive() {
25173
+ this.active = true;
25174
+
25175
+ // Show the popover when this cell becomes active via keyboard navigation.
25176
+ if (this.auroPopover) {
25177
+ this.auroPopover.toggleShow();
25178
+ }
25179
+ }
25180
+
25181
+ /**
25182
+ * Imperatively marks this cell as inactive without triggering a Lit re-render.
25183
+ * @returns {void}
25184
+ */
25185
+ clearActive() {
25186
+ this.active = false;
25187
+ const btn = this._cachedButton || this.shadowRoot.querySelector('button.day');
25188
+ if (btn) {
25189
+ btn.classList.remove('activeCell');
25190
+ }
25191
+
25192
+ // Hide the popover when this cell loses active state.
25193
+ if (this.auroPopover) {
25194
+ this.auroPopover.toggleHide();
25195
+ }
25196
+ }
25197
+
25198
+ /**
25199
+ * Updates range preview classes imperatively (no Lit re-render).
25200
+ * Called by the calendar component when the hovered date changes
25201
+ * during range selection (dateFrom set, dateTo not yet set).
25202
+ * @param {Number} hoveredDate - Unix timestamp of the currently hovered/focused date.
25203
+ * @param {Number} dateFrom - Unix timestamp of the selected departure date.
25204
+ * @returns {void}
25205
+ */
25206
+ updateRangePreviewClasses(hoveredDate, dateFrom) {
25207
+ const btn = this._cachedButton;
25208
+ if (!btn || !this.day) return;
25209
+
25210
+ const dayDate = this.day.date;
25211
+ const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
25212
+ const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
25213
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
25214
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
25215
+
25216
+ btn.classList.toggle('inRange', isInRange);
25217
+ btn.classList.toggle('lastHoveredDate', isLastHovered);
25218
+ btn.classList.toggle('rangeDepartDate', isDepartWithPreview);
25219
+ }
25220
+
25221
+ /**
25222
+ * Clears all imperative range preview classes from the cell button.
25223
+ * Called when a selection occurs so classMap becomes the sole source of truth.
25224
+ * @returns {void}
25225
+ */
25226
+ clearRangePreviewClasses() {
25227
+ const btn = this._cachedButton;
25228
+ if (!btn) return;
25229
+
25230
+ btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
25231
+ }
25232
+
25233
+ renderCellButton() {
25234
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
25235
+ const blackout = this.isBlackout();
25236
+
25237
+ // Static and selection-driven classes only. Hover-driven classes
25238
+ // (inRange, lastHoveredDate, rangeDepartDate during preview) are
25239
+ // managed imperatively via updateRangePreviewClasses() to avoid
25240
+ // O(N) Lit re-renders on every focus/hover event.
25241
+ const isFirstDay = this.day?.title === 1;
25242
+ const isLastDay = this.day?.date && (() => {
25243
+ const dt = new Date(this.day.date * 1000);
25244
+ return dt.getDate() === new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate();
25245
+ })();
25246
+
24897
25247
  const buttonClasses = {
24898
25248
  'day': true,
24899
- 'body-lg': true,
24900
- 'currentDate': this.currentDate,
25249
+ 'body-default': true,
25250
+ 'currentDate': this.isCurrentDate,
24901
25251
  'selected': this.selected,
24902
- 'inRange': this.hovered && this.isInRange(this.day, this.dateFrom, this.dateTo),
24903
- 'lastHoveredDate': this.isLastHoveredDate(this.day, this.dateFrom, this.dateTo, this.hoveredDate) && this.datepicker && this.datepicker.hasAttribute('range'),
24904
- 'disabled': this.isEnabled(this.day, this.min, this.max, this.disabledDays),
24905
- 'rangeDepartDate': this.isDepartDate(this.day, this.dateFrom) && (this.hoveredDate > this.dateFrom || this.dateTo),
24906
- 'rangeReturnDate': this.isReturnDate(this.day, this.dateFrom, this.dateTo),
25252
+ 'inRange': this.datepicker?.hasAttribute('range') && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo),
25253
+ 'disabled': outOfRange,
25254
+ blackout,
25255
+ 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && this.dateTo,
25256
+ 'rangeReturnDate': this.datepicker?.hasAttribute('range') && this.isReturnDate(this.day, this.dateFrom, this.dateTo),
24907
25257
  'reference': this.isReferenceDate(this.dateStr),
24908
- 'sameDateTrip': this.dateFrom === this.dateTo
25258
+ 'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo,
25259
+ 'firstDayOfMonth': isFirstDay,
25260
+ 'lastDayOfMonth': isLastDay,
24909
25261
  };
24910
25262
 
24911
- let _a, _b;
24912
25263
  return u$d`
24913
- <${this.popoverTag}>
24914
- <slot name="popover_${this.dateStr}"></slot>
24915
- <button
24916
- slot="trigger"
24917
- @click="${this.handleTap}"
24918
- @mouseover="${this.handleHover}"
24919
- @focus="${this.handleHover}"
24920
- class="${e$3(buttonClasses)}"
24921
- ?disabled="${this.disabled}"
24922
- title="${this.getTitle((_a = this.day) === null || _a === void 0 ? void 0 : _a.date)}"
24923
- tabindex="-1">
24924
- <div class="buttonWrapper">
24925
- <div class="currentDayMarker">${(_b = this.day) === null || _b === void 0 ? void 0 : _b.title}</div>
24926
- <div class="dateSlot body-2xs" part="dateSlot">
24927
- <slot name="date_${this.dateStr}"></slot>
24928
- </div>
25264
+ <button
25265
+ slot="trigger"
25266
+ id="${this.getCellId()}"
25267
+ @click="${outOfRange ? undefined : this.handleTap}"
25268
+ @mouseover="${outOfRange ? undefined : this.handleHover}"
25269
+ @focus="${outOfRange ? undefined : this.handleFocus}"
25270
+ class="${e$3(buttonClasses)}"
25271
+ ?disabled="${outOfRange}"
25272
+ aria-hidden="${outOfRange ? 'true' : A$7}"
25273
+ tabindex="-1">
25274
+ <div class="buttonWrapper" aria-hidden="true">
25275
+ <div class="currentDayMarker">${this.day?.title || A$7}</div>
25276
+ <div class="dateSlot body-2xs" part="dateSlot" aria-hidden="true" ?hidden="${!this.renderForDateSlot}">
25277
+ <slot name="date_${this.dateStr}"></slot>
24929
25278
  </div>
24930
- </button>
24931
- </${this.popoverTag}>
25279
+ </div>
25280
+ </button>
25281
+ `;
25282
+ }
25283
+
25284
+ render() {
25285
+ const { hasPopoverContent } = this;
25286
+
25287
+ if (hasPopoverContent) {
25288
+ return u$d`
25289
+ <${this.popoverTag}>
25290
+ <span aria-hidden="true"><slot name="popover_${this.dateStr}"></slot></span>
25291
+ ${this.renderCellButton()}
25292
+ </${this.popoverTag}>
25293
+ `;
25294
+ }
25295
+
25296
+ return u$d`
25297
+ ${this.renderCellButton()}
24932
25298
  `;
24933
25299
  }
24934
25300
  }
@@ -24941,7 +25307,7 @@ if (!customElements.get('auro-formkit-calendar-cell')) {
24941
25307
 
24942
25308
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
24943
25309
 
24944
- /* eslint-disable no-magic-numbers, dot-location */
25310
+ /* eslint-disable no-magic-numbers */
24945
25311
 
24946
25312
 
24947
25313
  const getMonthNamesFromLocale = (locale) => {
@@ -24958,11 +25324,12 @@ const getMonthNamesFromLocale = (locale) => {
24958
25324
  * Uses UTC dates to avoid DST-related day drift across timezones.
24959
25325
  * @private
24960
25326
  * @param {String} locale - The BCP 47 language tag for localization (e.g. "en-US").
24961
- * @returns {Array} An array of seven localized narrow weekday names, starting from Sunday.
25327
+ * @param {String} weekday - The format of the weekday name ('narrow', 'short', 'long').
25328
+ * @returns {Array} An array of seven localized weekday names, starting from Sunday.
24962
25329
  */
24963
- const getWeekdayNames = (locale) => {
25330
+ const getWeekdayNames = (locale, weekday) => {
24964
25331
  const fmt = new Intl.DateTimeFormat(locale, {
24965
- weekday: 'narrow',
25332
+ weekday,
24966
25333
  timeZone: 'UTC'
24967
25334
  });
24968
25335
  // Jan 5 2025 is a known Sunday; use Date.UTC to avoid DST-related day drift
@@ -24997,7 +25364,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
24997
25364
 
24998
25365
  /**
24999
25366
  * BCP 47 locale tag (such as `en-US`) for calendar localization.
25000
- * as wc-range-datepicker expects a `locale` prop, we use `localeCode` to avoid conflicts.
25367
+ * As wc-range-datepicker expects a `locale` prop, we use `localeCode` to avoid conflicts.
25001
25368
  */
25002
25369
  localeCode: {
25003
25370
  type: String
@@ -25051,8 +25418,19 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25051
25418
  return this._cachedMonthNames[month - 1] || '';
25052
25419
  }
25053
25420
 
25421
+ /**
25422
+ * Returns the unique heading ID for this month, used by aria-labelledby.
25423
+ * @private
25424
+ * @returns {String} The heading ID.
25425
+ */
25426
+ getHeadingId() {
25427
+ return `month-heading-${this.month}-${this.year}`;
25428
+ }
25429
+
25430
+
25054
25431
  /**
25055
25432
  * Determines the current month name based on locale.
25433
+ * Also builds parallel arrays of full day names for abbr attributes.
25056
25434
  * This is a rewrite of the function used in the class RangeDatepickerCalendar and should not be removed from here.
25057
25435
  * @private
25058
25436
  * @param {Object} changedProperties - The properties that have changed since the last update.
@@ -25066,8 +25444,67 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25066
25444
  }
25067
25445
 
25068
25446
  localeChanged() {
25069
- // Week always starts on Sunday; use Intl-derived names directly without rotation
25070
- this.dayNamesOfTheWeek = getWeekdayNames(this.localeCode);
25447
+ this.dayNamesOfTheWeek = getWeekdayNames(this.localeCode, 'narrow');
25448
+ this.dayFullNames = getWeekdayNames(this.localeCode, 'long');
25449
+ }
25450
+
25451
+ /**
25452
+ * Renders a day-of-week header with abbr attribute for the full day name.
25453
+ * @private
25454
+ * @param {String} dayOfWeek - The short day name.
25455
+ * @param {Number} index - The index in the dayNamesOfTheWeek array.
25456
+ * @returns {Object} The header HTML.
25457
+ */
25458
+ renderDayOfWeek(dayOfWeek, index) {
25459
+ const fullName = this.dayFullNames ? this.dayFullNames[index] : dayOfWeek;
25460
+ return b$8`<div class="th body-default" aria-label="${fullName}" role="columnheader">${dayOfWeek}</div>`;
25461
+ }
25462
+
25463
+ /**
25464
+ * Returns all focusable cell elements (enabled + blackout, not out-of-range) in this month.
25465
+ * @returns {Array} Array of auro-formkit-calendar-cell elements.
25466
+ */
25467
+ getFocusableCells() {
25468
+ const cells = Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-cell'));
25469
+ return cells.filter((cell) => {
25470
+ if (!cell.day) {
25471
+ return false;
25472
+ }
25473
+ return !cell.isOutOfRange(cell.day, cell.min, cell.max);
25474
+ });
25475
+ }
25476
+
25477
+ /**
25478
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
25479
+ * as a reactive property. Instead, just dispatches the event upward so
25480
+ * the calendar can handle range preview imperatively.
25481
+ * @private
25482
+ * @param {CustomEvent} event - The date-is-hovered event from a cell.
25483
+ * @returns {void}
25484
+ */
25485
+ handleDateHovered(event) {
25486
+ this.dispatchEvent(new CustomEvent('hovered-date-changed', {
25487
+ detail: { value: event.detail.date },
25488
+ }));
25489
+ }
25490
+
25491
+ /**
25492
+ * Dispatches a bubbling event when the mouse leaves the date grid body
25493
+ * so the parent calendar can clear the range hover preview.
25494
+ * @private
25495
+ * @returns {void}
25496
+ */
25497
+ handleTbodyMouseLeave() {
25498
+ this.dispatchEvent(new CustomEvent('calendar-month-mouseleave', {
25499
+ bubbles: true,
25500
+ composed: true,
25501
+ }));
25502
+ }
25503
+
25504
+ renderWeek(week) {
25505
+ return b$8`
25506
+ <div class="tr" role="row">${week.map((day) => this.renderDay(day))}</div>
25507
+ `;
25071
25508
  }
25072
25509
 
25073
25510
  renderDay(day) {
@@ -25080,7 +25517,6 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25080
25517
  .min="${this.min}"
25081
25518
  .max="${this.max}"
25082
25519
  .month="${this.month}"
25083
- .hoveredDate="${this.hoveredDate}"
25084
25520
  .dateTo="${this.dateTo}"
25085
25521
  .dateFrom="${this.dateFrom}"
25086
25522
  .locale="${this.localeCode}"
@@ -25091,7 +25527,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25091
25527
  >
25092
25528
  </auro-formkit-calendar-cell>
25093
25529
  `
25094
- : null}
25530
+ : b$8`<div aria-hidden="true" inert></div>`}
25095
25531
  </div>
25096
25532
  `;
25097
25533
  }
@@ -25105,7 +25541,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25105
25541
  <div>
25106
25542
  <div class="header">
25107
25543
  ${this.renderPrevButton()}
25108
- <div class="headerTitle heading-xs">
25544
+ <div class="headerTitle heading-xs" id="${this.getHeadingId()}">
25109
25545
  ${this.monthFirst ? b$8`
25110
25546
  <div>${this.computeCurrentMonthName(this.month)}</div>
25111
25547
  <div>${this.renderYear()}</div>
@@ -25116,14 +25552,13 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25116
25552
  </div>
25117
25553
  ${this.renderNextButton()}
25118
25554
  </div>
25119
-
25120
- <div class="table">
25555
+ <div class="table" role="grid">
25121
25556
  <div class="thead">
25122
25557
  <div class="tr">
25123
- ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map(dayNameOfWeek => this.renderDayOfWeek(dayNameOfWeek))}
25558
+ ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map((dayNameOfWeek, index) => this.renderDayOfWeek(dayNameOfWeek, index))}
25124
25559
  </div>
25125
25560
  </div>
25126
- <div class="tbody">
25561
+ <div class="tbody" role="rowgroup" @mouseleave="${this.handleTbodyMouseLeave}">
25127
25562
  ${(_b = this.daysOfMonth) === null || _b === void 0 ? void 0 : _b.map(week => this.renderWeek(week))}
25128
25563
  </div>
25129
25564
  </div>
@@ -25821,6 +26256,14 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$3 {
25821
26256
  large: {
25822
26257
  type: Boolean,
25823
26258
  reflect: true
26259
+ },
26260
+
26261
+ /**
26262
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
26263
+ */
26264
+ showFooter: {
26265
+ type: Boolean,
26266
+ reflect: true
25824
26267
  }
25825
26268
  };
25826
26269
  }
@@ -25923,7 +26366,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$3 {
25923
26366
  <slot></slot>
25924
26367
  </div>
25925
26368
 
25926
- ${this.isFullscreen ? u$d`
26369
+ ${this.isFullscreen || this.showFooter ? u$d`
25927
26370
  <div id="footerContainer">
25928
26371
  <slot name="footer"></slot>
25929
26372
  </div>` : null}
@@ -25932,7 +26375,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$3 {
25932
26375
  }
25933
26376
  };
25934
26377
 
25935
- var formkitVersion$2$1 = '202606081518';
26378
+ var formkitVersion$2$1 = '202606081904';
25936
26379
 
25937
26380
  let l$1$2 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$6`${s$8(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1$2 = 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$2 = 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$3=i$5`: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}
25938
26381
  `,u$4$1=i$5`.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}}
@@ -25993,7 +26436,7 @@ let l$1$2 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(
25993
26436
 
25994
26437
  var buttonVersion$1$1 = '12.3.2';
25995
26438
 
25996
- /* eslint-disable no-magic-numbers, no-undef-init, max-lines, lit/binding-positions, lit/no-invalid-html */
26439
+ /* 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 */
25997
26440
 
25998
26441
 
25999
26442
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
@@ -26030,6 +26473,20 @@ class AuroCalendar extends RangeDatepicker {
26030
26473
  this.largeFullscreenHeadline = false;
26031
26474
  this.isFullscreen = false;
26032
26475
 
26476
+ /**
26477
+ * The date of the currently active cell (Unix timestamp).
26478
+ * Only one cell across the entire calendar has tabindex="0" at a time.
26479
+ * @private
26480
+ */
26481
+ this.activeCellDate = null;
26482
+
26483
+ /**
26484
+ * Whether the #calendarGrid wrapper currently has focus.
26485
+ * Used to determine whether the visualFocus ring should be shown.
26486
+ * @private
26487
+ */
26488
+ this._gridHasFocus = false;
26489
+
26033
26490
  /**
26034
26491
  * @private
26035
26492
  */
@@ -26040,6 +26497,12 @@ class AuroCalendar extends RangeDatepicker {
26040
26497
  */
26041
26498
  this.calendarRangeMonths = null;
26042
26499
 
26500
+ /**
26501
+ * Legacy array of disabled-date timestamps.
26502
+ * @private
26503
+ */
26504
+ this.disabledDays = [];
26505
+
26043
26506
  /**
26044
26507
  * @private
26045
26508
  */
@@ -26063,6 +26526,12 @@ class AuroCalendar extends RangeDatepicker {
26063
26526
  this.buttonTag = versioning.generateTag('auro-formkit-datepicker-button', buttonVersion$1$1, T$1$2);
26064
26527
 
26065
26528
  this.dropdown = undefined;
26529
+
26530
+ /**
26531
+ * Unique instance ID for the live region element.
26532
+ * @private
26533
+ */
26534
+ this._calendarInstanceId = Date.now().toString(36);
26066
26535
  }
26067
26536
 
26068
26537
  static get styles() {
@@ -26226,19 +26695,79 @@ class AuroCalendar extends RangeDatepicker {
26226
26695
  /**
26227
26696
  * Updates the month and year when the user navigates to the previous calendar month.
26228
26697
  * @private
26698
+ * @param {Object} [options] - Optional settings.
26699
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
26700
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
26229
26701
  * @returns {void}
26230
26702
  */
26231
- handlePrevMonth() {
26703
+ handlePrevMonth(options) {
26704
+ const opts = options instanceof Event ? {} : options || {};
26705
+ this.clearRangePreview({ force: true });
26232
26706
  this.utilCal.handleMonthChange(this, 'prev');
26707
+ if (!opts.skipActiveUpdate) {
26708
+ this.updateActiveCellForVisibleMonth();
26709
+ }
26710
+ this.announceMonthChange();
26233
26711
  }
26234
26712
 
26235
26713
  /**
26236
26714
  * Updates the month and year when the user navigates to the next calendar month.
26237
26715
  * @private
26716
+ * @param {Object} [options] - Optional settings.
26717
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
26718
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
26238
26719
  * @returns {void}
26239
26720
  */
26240
- handleNextMonth() {
26721
+ handleNextMonth(options) {
26722
+ const opts = options instanceof Event ? {} : options || {};
26723
+ this.clearRangePreview({ force: true });
26241
26724
  this.utilCal.handleMonthChange(this, 'next');
26725
+ if (!opts.skipActiveUpdate) {
26726
+ this.updateActiveCellForVisibleMonth();
26727
+ }
26728
+ this.announceMonthChange();
26729
+ }
26730
+
26731
+ /**
26732
+ * Announces the current month and year via the live region after navigation.
26733
+ * @private
26734
+ * @returns {void}
26735
+ */
26736
+ announceMonthChange() {
26737
+ // Cancel any pending debounced cell announcement so it does not
26738
+ // overwrite this month navigation announcement.
26739
+ if (this._focusAnnounceTimer) {
26740
+ clearTimeout(this._focusAnnounceTimer);
26741
+ this._focusAnnounceTimer = null;
26742
+ }
26743
+
26744
+ const date = this.centralDateObject;
26745
+ const localeCode = this.locale?.code || undefined;
26746
+ const formatter = new Intl.DateTimeFormat(localeCode, { month: 'long',
26747
+ year: 'numeric' });
26748
+ this.announceSelection(formatter.format(date));
26749
+ }
26750
+
26751
+ /**
26752
+ * Updates the active cell after month navigation (prev/next buttons).
26753
+ * Always moves the active cell to the first enabled date in the newly
26754
+ * visible months so that tabbing back to the grid lands on an enabled cell.
26755
+ * @private
26756
+ * @returns {void}
26757
+ */
26758
+ updateActiveCellForVisibleMonth() {
26759
+ // Use double-rAF to ensure child month/cell components have fully
26760
+ // rendered and cached their button references before we set tabindex.
26761
+ requestAnimationFrame(() => {
26762
+ requestAnimationFrame(() => {
26763
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
26764
+
26765
+ if (newDate !== null && newDate !== undefined) {
26766
+ this.activeCellDate = newDate;
26767
+ this.setActiveCell(this.activeCellDate);
26768
+ }
26769
+ });
26770
+ });
26242
26771
  }
26243
26772
 
26244
26773
  /**
@@ -26346,7 +26875,1007 @@ class AuroCalendar extends RangeDatepicker {
26346
26875
  this.utilCal.scrollMonthIntoView(this, date, this.format);
26347
26876
  }
26348
26877
 
26878
+ /**
26879
+ * Gets all rendered month components.
26880
+ * @private
26881
+ * @returns {Array} Array of auro-formkit-calendar-month elements.
26882
+ */
26883
+ getMonthComponents() {
26884
+ return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
26885
+ }
26886
+
26887
+ /**
26888
+ * Gets all focusable cells across all rendered months.
26889
+ * @private
26890
+ * @returns {Array} Array of auro-formkit-calendar-cell elements.
26891
+ */
26892
+ getAllFocusableCells() {
26893
+ const months = this.getMonthComponents();
26894
+ let cells = [];
26895
+ months.forEach((month) => {
26896
+ cells = cells.concat(month.getFocusableCells());
26897
+ });
26898
+ return cells;
26899
+ }
26900
+
26901
+ /**
26902
+ * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
26903
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
26904
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
26905
+ * screen readers announce the active cell without moving DOM focus.
26906
+ * @param {Number} date - Unix timestamp of the cell to activate.
26907
+ * @returns {void}
26908
+ */
26909
+ setActiveCell(date) {
26910
+ const allCells = this.getAllFocusableCells();
26911
+
26912
+ let newActiveCell = null;
26913
+ allCells.forEach((cell) => {
26914
+ if (cell.day && cell.day.date === date) {
26915
+ cell.setActive();
26916
+ newActiveCell = cell;
26917
+ } else if (cell.active) {
26918
+ cell.clearActive();
26919
+ }
26920
+ });
26921
+
26922
+ this.activeCellDate = date;
26923
+
26924
+ // Apply activeCell ring only when the grid currently has focus.
26925
+ if (newActiveCell && this._gridHasFocus) {
26926
+ const btn = newActiveCell._cachedButton || newActiveCell.shadowRoot.querySelector('button.day');
26927
+ if (btn) {
26928
+ btn.classList.add('activeCell');
26929
+ }
26930
+ }
26931
+ }
26932
+
26933
+ /**
26934
+ * Focuses the calendar grid wrapper and sets the active cell.
26935
+ * DOM focus stays on the grid wrapper; the aria-live region
26936
+ * tells the screen reader which cell is "active".
26937
+ * @returns {void}
26938
+ */
26939
+ focusActiveCell() {
26940
+ if (this.activeCellDate !== null && this.activeCellDate !== undefined) {
26941
+ this.setActiveCell(this.activeCellDate);
26942
+ }
26943
+
26944
+ const gridWrapper = this.shadowRoot.querySelector('#calendarGrid');
26945
+ if (gridWrapper) {
26946
+ gridWrapper.focus({ preventScroll: true,
26947
+ focusVisible: true });
26948
+ }
26949
+ }
26950
+
26951
+ /**
26952
+ * Shows the activeCell ring when the grid gains focus.
26953
+ * @private
26954
+ * @returns {void}
26955
+ */
26956
+ handleGridFocusIn() {
26957
+ this._gridHasFocus = true;
26958
+ const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
26959
+ if (activeCell) {
26960
+ const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
26961
+ if (btn) {
26962
+ btn.classList.add('activeCell');
26963
+ }
26964
+ }
26965
+ }
26966
+
26967
+ /**
26968
+ * Hides the activeCell ring when the grid loses focus.
26969
+ * @private
26970
+ * @returns {void}
26971
+ */
26972
+ handleGridFocusOut() {
26973
+ this._gridHasFocus = false;
26974
+ // Remove activeCell from ALL cells to prevent stale rings.
26975
+ const allCells = this.getAllFocusableCells();
26976
+ for (const cell of allCells) {
26977
+ const btn = cell._cachedButton || cell.shadowRoot.querySelector('button.day');
26978
+ if (btn) {
26979
+ btn.classList.remove('activeCell');
26980
+ }
26981
+ }
26982
+ // Clear range hover preview so no highlight lingers after focus leaves the grid.
26983
+ this.clearRangePreview();
26984
+ }
26985
+
26986
+ /**
26987
+ * Computes the initial active date from data properties alone — no DOM required.
26988
+ * Priority:
26989
+ * 1. Selected date (dateFrom) if within range
26990
+ * 2. Today's date if not disabled (in-range and not blackout)
26991
+ * 3. First future non-disabled date (scans day-by-day from today up to 1 year)
26992
+ * 4. First previous non-disabled date (scans day-by-day from today up to 1 year)
26993
+ * 5. First enabled date in finite [min, max] range
26994
+ * 5b. First enabled date scanning forward from finite min (unbounded max)
26995
+ * 5c. First enabled date scanning backward from finite max (unbounded min)
26996
+ * 6. First in-range date (even if blackout) so focus can land somewhere
26997
+ * 7. Undefined — no valid target.
26998
+ *
26999
+ * @private
27000
+ * @param {Object} [options] - Optional settings.
27001
+ * @param {boolean} [options.skipDateFrom=false] - When true, skip the selected-date
27002
+ * shortcut (step 1). Used after month navigation so the active cell lands in the
27003
+ * newly visible month instead of jumping back to the selected date's month.
27004
+ * @returns {Number|undefined} Unix timestamp (seconds) of the date to activate, or undefined.
27005
+ */
27006
+ computeActiveDate(options = {}) {
27007
+ const MAX_SCAN_DAYS = 366; // scan at most ~1 year in each direction
27008
+
27009
+ /**
27010
+ * Adds days to a timestamp using Date arithmetic to handle DST correctly.
27011
+ * Returns a local-midnight-aligned timestamp in seconds.
27012
+ * @param {Number} ts - Unix timestamp in seconds.
27013
+ * @param {Number} days - Number of days to add.
27014
+ * @returns {Number} The adjusted timestamp in seconds.
27015
+ */
27016
+ const addDays = (ts, days) => {
27017
+ const date = new Date(ts * 1000);
27018
+ date.setDate(date.getDate() + days);
27019
+ date.setHours(0, 0, 0, 0);
27020
+ return Math.floor(date.getTime() / 1000);
27021
+ };
27022
+
27023
+ const rawMin = this.minDateObject?.getTime() / 1000;
27024
+ const rawMax = this.maxDateObject?.getTime() / 1000;
27025
+
27026
+ // When min/max are NaN (no minDate/maxDate configured), treat as unbounded.
27027
+ const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
27028
+ const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
27029
+
27030
+ // Build a Set of blackout timestamps for O(1) lookup.
27031
+ const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
27032
+
27033
+ // Also include ISO-format blackoutDates from the datepicker if available.
27034
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
27035
+ const isoBlackouts = this.datepicker?.blackoutDates;
27036
+ if (Array.isArray(isoBlackouts)) {
27037
+ for (const isoStr of isoBlackouts) {
27038
+ const parts = isoStr.split('-');
27039
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
27040
+ if (Number.isFinite(ts)) {
27041
+ blackoutSet.add(ts);
27042
+ }
27043
+ }
27044
+ }
27045
+
27046
+ /**
27047
+ * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
27048
+ * it is within [min, max] AND not a blackout day.
27049
+ * @param {Number} ts - Unix timestamp in seconds.
27050
+ * @returns {boolean} True if the date is enabled.
27051
+ */
27052
+ const isEnabled = (ts) => ts >= minTs && ts <= maxTs && !blackoutSet.has(ts);
27053
+
27054
+ /**
27055
+ * A date is "in range" (focusable in the grid) when it is within [min, max].
27056
+ * Blackout dates are focusable but not selectable.
27057
+ * @param {Number} ts - Unix timestamp in seconds.
27058
+ * @returns {boolean} True if the date is in range.
27059
+ */
27060
+ const isInRange = (ts) => ts >= minTs && ts <= maxTs;
27061
+
27062
+ // 1. Selected date — always valid target if within range (user chose it).
27063
+ // Skipped when called from month navigation so the active cell lands in
27064
+ // the newly visible month rather than the (possibly off-screen) selection.
27065
+ if (!options.skipDateFrom && this.dateFrom) {
27066
+ const parsedFrom = parseInt(this.dateFrom, 10);
27067
+ if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) {
27068
+ return parsedFrom;
27069
+ }
27070
+ }
27071
+
27072
+ // 2. Today's date (midnight-aligned) if enabled.
27073
+ const now = Math.floor(new Date().setHours(0, 0, 0, 0) / 1000);
27074
+
27075
+ // When centralDate is configured, prefer a date within the month(s) that
27076
+ // will actually be rendered. If today falls outside the visible range, an
27077
+ // active cell set to today would have no matching DOM element and keyboard
27078
+ // focus could not enter the calendar.
27079
+
27080
+ if (this.centralDateObject) {
27081
+ const centralMonth = this.centralDateObject.getMonth();
27082
+ const centralYear = this.centralDateObject.getFullYear();
27083
+ const todayDate = new Date(now * 1000);
27084
+ const todayMonth = todayDate.getMonth();
27085
+ const todayYear = todayDate.getFullYear();
27086
+
27087
+ // Today is outside the centralDate's month — scan for an enabled date
27088
+ // within the visible month instead.
27089
+ if (todayMonth !== centralMonth || todayYear !== centralYear) {
27090
+ const visibleStart = new Date(centralYear, centralMonth, 1);
27091
+ visibleStart.setHours(0, 0, 0, 0);
27092
+ const visibleEnd = new Date(centralYear, centralMonth + 1, 0); // last day of month
27093
+ visibleEnd.setHours(0, 0, 0, 0);
27094
+ const startTs = Math.floor(visibleStart.getTime() / 1000);
27095
+ const daysInMonth = visibleEnd.getDate();
27096
+
27097
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
27098
+ const ts = addDays(startTs, idx);
27099
+ if (isEnabled(ts)) {
27100
+ return ts;
27101
+ }
27102
+ }
27103
+
27104
+ // No enabled date in the visible month — fall back to first in-range
27105
+ // date in the month so focus still lands on a focusable cell.
27106
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
27107
+ const ts = addDays(startTs, idx);
27108
+ if (isInRange(ts)) {
27109
+ return ts;
27110
+ }
27111
+ }
27112
+ }
27113
+ }
27114
+
27115
+ if (isEnabled(now)) {
27116
+ return now;
27117
+ }
27118
+
27119
+ // When a centralDate is configured (or inferred), constrain the scan to the
27120
+ // rendered month(s) first so a single-month calendar does not pick a date
27121
+ // that has no DOM cell. Determine the visible range based on centralDate and
27122
+ // the number of rendered months.
27123
+ const renderedMonths = Math.max(this.numCalendars, 1);
27124
+ const visibleAnchor = this.centralDateObject ?? new Date(now * 1000);
27125
+ const visMonthStart = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth(), 1);
27126
+ visMonthStart.setHours(0, 0, 0, 0);
27127
+ const visMonthEnd = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth() + renderedMonths, 0);
27128
+ visMonthEnd.setHours(0, 0, 0, 0);
27129
+ const visStartTs = Math.floor(visMonthStart.getTime() / 1000);
27130
+ const visEndTs = Math.floor(visMonthEnd.getTime() / 1000);
27131
+ const visDays = Math.round((visEndTs - visStartTs) / 86400) + 1;
27132
+
27133
+ // Scan visible months for an enabled date.
27134
+ for (let idx = 0; idx < visDays; idx += 1) {
27135
+ const ts = addDays(visStartTs, idx);
27136
+ if (isEnabled(ts)) {
27137
+ return ts;
27138
+ }
27139
+ }
27140
+
27141
+ // No enabled date in visible months — try an in-range (focusable) date so
27142
+ // keyboard focus still has a tabindex="0" target.
27143
+ for (let idx = 0; idx < visDays; idx += 1) {
27144
+ const ts = addDays(visStartTs, idx);
27145
+ if (isInRange(ts)) {
27146
+ return ts;
27147
+ }
27148
+ }
27149
+
27150
+ // 3. First future enabled date (scan forward from tomorrow, capped by max and MAX_SCAN_DAYS).
27151
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
27152
+ const ts = addDays(now, idx);
27153
+ if (Number.isFinite(maxTs) && ts > maxTs) {
27154
+ break;
27155
+ }
27156
+ if (isEnabled(ts)) {
27157
+ return ts;
27158
+ }
27159
+ }
27160
+
27161
+ // 4. First previous enabled date (scan backward from yesterday, capped by min and MAX_SCAN_DAYS).
27162
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
27163
+ const ts = addDays(now, -idx);
27164
+ if (Number.isFinite(minTs) && ts < minTs) {
27165
+ break;
27166
+ }
27167
+ if (isEnabled(ts)) {
27168
+ return ts;
27169
+ }
27170
+ }
27171
+
27172
+ // 5. If scans missed (e.g. min/max range is far from today), fall back to
27173
+ // the first enabled date in the [min, max] range.
27174
+ if (Number.isFinite(minTs) && Number.isFinite(maxTs)) {
27175
+ let ts = minTs;
27176
+ for (let idx = 0; ts <= maxTs; idx += 1) {
27177
+ if (isEnabled(ts)) {
27178
+ return ts;
27179
+ }
27180
+ ts = addDays(minTs, idx + 1);
27181
+ }
27182
+ }
27183
+
27184
+ // 5b. Finite min with unbounded max (e.g. minDate far in the future):
27185
+ // scan forward from min for up to MAX_SCAN_DAYS.
27186
+ if (Number.isFinite(minTs) && !Number.isFinite(maxTs)) {
27187
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
27188
+ const ts = addDays(minTs, idx);
27189
+ if (isEnabled(ts)) {
27190
+ return ts;
27191
+ }
27192
+ }
27193
+ }
27194
+
27195
+ // 5c. Unbounded min with a finite max far in the past (e.g. birth-date picker):
27196
+ // scan backward from max for up to MAX_SCAN_DAYS.
27197
+ if (!Number.isFinite(minTs) && Number.isFinite(maxTs)) {
27198
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
27199
+ const ts = addDays(maxTs, -idx);
27200
+ if (isEnabled(ts)) {
27201
+ return ts;
27202
+ }
27203
+ }
27204
+ }
27205
+
27206
+ // 6. All dates are blackout — fall back to the first in-range date so focus
27207
+ // still lands on a focusable (but not selectable) cell.
27208
+ if (Number.isFinite(minTs) && isInRange(minTs)) {
27209
+ return minTs;
27210
+ }
27211
+ if (isInRange(now)) {
27212
+ return now;
27213
+ }
27214
+
27215
+ return undefined;
27216
+ }
27217
+
27218
+ /**
27219
+ * Checks if a target date (unix seconds) is within the configured [min, max] range.
27220
+ * Returns false if the date falls outside the range, preventing navigation
27221
+ * to months where all dates are disabled.
27222
+ * @private
27223
+ * @param {Number} targetTs - Unix timestamp in seconds.
27224
+ * @returns {Boolean} True if the date is within range.
27225
+ */
27226
+ isDateInRange(targetTs) {
27227
+ const rawMin = this.minDateObject?.getTime() / 1000;
27228
+ const rawMax = this.maxDateObject?.getTime() / 1000;
27229
+ if (Number.isFinite(rawMin) && targetTs < rawMin) {
27230
+ return false;
27231
+ }
27232
+ if (Number.isFinite(rawMax) && targetTs > rawMax) {
27233
+ return false;
27234
+ }
27235
+ return true;
27236
+ }
27237
+
27238
+ /**
27239
+ * Handles arrow key navigation on the calendar grid wrapper.
27240
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
27241
+ * and the visual active-cell indicator change.
27242
+ * @private
27243
+ * @param {KeyboardEvent} event - The keyboard event.
27244
+ * @returns {void}
27245
+ */
27246
+ handleGridKeyDown(event) {
27247
+ const { key } = event;
27248
+ const actionKeys = [
27249
+ 'ArrowRight',
27250
+ 'ArrowLeft',
27251
+ 'ArrowDown',
27252
+ 'ArrowUp',
27253
+ 'Enter',
27254
+ ' '
27255
+ ];
27256
+
27257
+ if (!actionKeys.includes(key)) {
27258
+ return;
27259
+ }
27260
+
27261
+ event.preventDefault();
27262
+
27263
+ const allCells = this.getAllFocusableCells();
27264
+ if (allCells.length === 0) {
27265
+ return;
27266
+ }
27267
+
27268
+ const activeCell = allCells.find((cell) => cell.active);
27269
+ if (!activeCell) {
27270
+ return;
27271
+ }
27272
+
27273
+ // Handle Enter/Space to select the active cell
27274
+ if (key === 'Enter' || key === ' ') {
27275
+ activeCell.handleTap();
27276
+ return;
27277
+ }
27278
+
27279
+ const activeIndex = allCells.indexOf(activeCell);
27280
+
27281
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
27282
+ const direction = key === 'ArrowRight' ? 1 : -1;
27283
+ const targetIndex = activeIndex + direction;
27284
+
27285
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
27286
+ // Target cell exists in rendered months
27287
+ this.setActiveCell(allCells[targetIndex].day.date);
27288
+ this.scrollToActiveCell();
27289
+ // Dispatch focus event for the cell so live region + range preview update
27290
+ this.handleCellFocused({ detail: { date: allCells[targetIndex].day.date } });
27291
+ } else {
27292
+ // At boundary — need to navigate to next/prev month
27293
+ const navDir = direction === 1 ? 'next' : 'prev';
27294
+ const targetDate = new Date(activeCell.day.date * 1000);
27295
+ targetDate.setDate(targetDate.getDate() + direction);
27296
+ targetDate.setHours(0, 0, 0, 0);
27297
+ const targetTs = Math.floor(targetDate.getTime() / 1000);
27298
+
27299
+ if (this.isDateInRange(targetTs) && ((navDir === 'next' && this.showNextMonthBtn) || (navDir === 'prev' && this.showPrevMonthBtn))) { // eslint-disable-line no-extra-parens
27300
+
27301
+ if (navDir === 'next') {
27302
+ this.handleNextMonth({ skipActiveUpdate: true });
27303
+ } else {
27304
+ this.handlePrevMonth({ skipActiveUpdate: true });
27305
+ }
27306
+ requestAnimationFrame(() => {
27307
+ requestAnimationFrame(() => {
27308
+ const cells = this.getAllFocusableCells();
27309
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
27310
+ if (target) {
27311
+ this.setActiveCell(target.day.date);
27312
+ this.handleCellFocused({ detail: { date: target.day.date } });
27313
+ } else if (cells.length > 0) {
27314
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
27315
+ this.setActiveCell(fallback.day.date);
27316
+ this.handleCellFocused({ detail: { date: fallback.day.date } });
27317
+ }
27318
+ // Re-focus grid wrapper after month change re-render
27319
+ this.focusActiveCell();
27320
+ });
27321
+ });
27322
+ }
27323
+ }
27324
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
27325
+ const increment = key === 'ArrowDown' ? 7 : -7;
27326
+ const currentDate = new Date(activeCell.day.date * 1000);
27327
+ currentDate.setDate(currentDate.getDate() + increment);
27328
+ currentDate.setHours(0, 0, 0, 0);
27329
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
27330
+
27331
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
27332
+
27333
+ if (targetCell) {
27334
+ this.setActiveCell(targetCell.day.date);
27335
+ this.scrollToActiveCell();
27336
+ this.handleCellFocused({ detail: { date: targetCell.day.date } });
27337
+ } else if (this.isDateInRange(targetDate)) {
27338
+ // Target might be in an unrendered month
27339
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
27340
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
27341
+ if (navDirection === 'next') {
27342
+ this.handleNextMonth({ skipActiveUpdate: true });
27343
+ } else {
27344
+ this.handlePrevMonth({ skipActiveUpdate: true });
27345
+ }
27346
+ requestAnimationFrame(() => {
27347
+ requestAnimationFrame(() => {
27348
+ const cells = this.getAllFocusableCells();
27349
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
27350
+ if (target) {
27351
+ this.setActiveCell(target.day.date);
27352
+ this.handleCellFocused({ detail: { date: target.day.date } });
27353
+ } else if (cells.length > 0) {
27354
+ let nearest = null;
27355
+
27356
+ if (navDirection === 'next') {
27357
+ [nearest] = cells;
27358
+ } else {
27359
+ nearest = cells[cells.length - 1];
27360
+ }
27361
+ this.setActiveCell(nearest.day.date);
27362
+ this.handleCellFocused({ detail: { date: nearest.day.date } });
27363
+ }
27364
+ this.focusActiveCell();
27365
+ });
27366
+ });
27367
+ }
27368
+ }
27369
+ }
27370
+ }
27371
+
27372
+ /**
27373
+ * Handles cross-month boundary navigation events from month components.
27374
+ * @private
27375
+ * @param {CustomEvent} event - The boundary event with direction and source date info.
27376
+ * @returns {void}
27377
+ */
27378
+ handleMonthBoundary(event) {
27379
+ const { direction, fromDate, key } = event.detail;
27380
+
27381
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
27382
+ // Linear navigation: find adjacent focusable cell across months
27383
+ const allCells = this.getAllFocusableCells();
27384
+ const currentIndex = allCells.findIndex((cell) => cell.day && cell.day.date === fromDate);
27385
+
27386
+ if (currentIndex === -1) {
27387
+ return;
27388
+ }
27389
+
27390
+ let targetIndex = -1;
27391
+ if (direction === 'next') {
27392
+ targetIndex = currentIndex + 1;
27393
+ }
27394
+
27395
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
27396
+ const targetCell = allCells[targetIndex];
27397
+ this.setActiveCell(targetCell.day.date);
27398
+ this.scrollToActiveCell();
27399
+ this.focusActiveCell();
27400
+ } else if (direction === 'next' && this.showNextMonthBtn) {
27401
+ // Navigate to next month and focus the computed next date.
27402
+ // Using the target date (fromDate + 1 day) instead of cells[0]
27403
+ // avoids jumping backward in range datepickers where cells[0]
27404
+ // belongs to the previous (still-rendered) month.
27405
+ const nextDate = new Date(fromDate * 1000);
27406
+ nextDate.setDate(nextDate.getDate() + 1);
27407
+ nextDate.setHours(0, 0, 0, 0);
27408
+ const nextTs = Math.floor(nextDate.getTime() / 1000);
27409
+
27410
+ if (!this.isDateInRange(nextTs)) {
27411
+ return;
27412
+ }
27413
+
27414
+ this.handleNextMonth({ skipActiveUpdate: true });
27415
+ requestAnimationFrame(() => {
27416
+ requestAnimationFrame(() => {
27417
+ const cells = this.getAllFocusableCells();
27418
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
27419
+ if (target) {
27420
+ this.setActiveCell(target.day.date);
27421
+ this.focusActiveCell();
27422
+ } else if (cells.length > 0) {
27423
+ // Fallback: first cell of the last rendered month
27424
+ this.setActiveCell(cells[cells.length - 1].day.date);
27425
+ this.focusActiveCell();
27426
+ }
27427
+ });
27428
+ });
27429
+ } else if (direction === 'prev' && this.showPrevMonthBtn) {
27430
+ // Navigate to previous month and focus the computed previous date.
27431
+ const prevDate = new Date(fromDate * 1000);
27432
+ prevDate.setDate(prevDate.getDate() - 1);
27433
+ prevDate.setHours(0, 0, 0, 0);
27434
+ const prevTs = Math.floor(prevDate.getTime() / 1000);
27435
+
27436
+ if (!this.isDateInRange(prevTs)) {
27437
+ return;
27438
+ }
27439
+
27440
+ this.handlePrevMonth({ skipActiveUpdate: true });
27441
+ requestAnimationFrame(() => {
27442
+ requestAnimationFrame(() => {
27443
+ const cells = this.getAllFocusableCells();
27444
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
27445
+ if (target) {
27446
+ this.setActiveCell(target.day.date);
27447
+ this.focusActiveCell();
27448
+ } else if (cells.length > 0) {
27449
+ // Fallback: last cell of the first rendered month
27450
+ this.setActiveCell(cells[0].day.date);
27451
+ this.focusActiveCell();
27452
+ }
27453
+ });
27454
+ });
27455
+ }
27456
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
27457
+ // Vertical navigation: find same day-of-week +/- 7 days
27458
+ // Use Date arithmetic instead of fixed seconds to handle DST correctly
27459
+ const increment = key === 'ArrowDown' ? 7 : -7;
27460
+ const currentDate = new Date(fromDate * 1000);
27461
+ currentDate.setDate(currentDate.getDate() + increment);
27462
+ currentDate.setHours(0, 0, 0, 0);
27463
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
27464
+
27465
+ const allCells = this.getAllFocusableCells();
27466
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
27467
+
27468
+ if (targetCell) {
27469
+ this.setActiveCell(targetCell.day.date);
27470
+ this.scrollToActiveCell();
27471
+ this.focusActiveCell();
27472
+ } else if (this.isDateInRange(targetDate)) {
27473
+ // Target might be in an unrendered month, navigate there
27474
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
27475
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
27476
+ if (navDirection === 'next') {
27477
+ this.handleNextMonth({ skipActiveUpdate: true });
27478
+ } else {
27479
+ this.handlePrevMonth({ skipActiveUpdate: true });
27480
+ }
27481
+ requestAnimationFrame(() => {
27482
+ requestAnimationFrame(() => {
27483
+ const cells = this.getAllFocusableCells();
27484
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
27485
+ if (target) {
27486
+ this.setActiveCell(target.day.date);
27487
+ this.focusActiveCell();
27488
+ } else if (cells.length > 0) {
27489
+ // Clamp to nearest focusable cell
27490
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
27491
+ this.setActiveCell(nearest.day.date);
27492
+ this.focusActiveCell();
27493
+ }
27494
+ });
27495
+ });
27496
+ }
27497
+ }
27498
+ }
27499
+ }
27500
+
27501
+ /**
27502
+ * Handles cell activation events from month components.
27503
+ * @private
27504
+ * @param {CustomEvent} event - The activation event with target date.
27505
+ * @returns {void}
27506
+ */
27507
+ handleCellActivate(event) {
27508
+ const { date } = event.detail;
27509
+ this.setActiveCell(date);
27510
+
27511
+ // Don't call focusActiveCell() here. The tap/click already placed
27512
+ // focus on the cell button, and moving it to #calendarGrid would
27513
+ // trigger focusout on the button, closing any open popover on the
27514
+ // cell. Keyboard events are composed and still bubble through
27515
+ // shadow DOM boundaries to the grid's @keydown handler, so
27516
+ // subsequent keyboard navigation continues to work.
27517
+ }
27518
+
27519
+ /**
27520
+ * Handles focus events from calendar cells.
27521
+ * Updates the live region with an SR announcement and triggers
27522
+ * the imperative range preview if applicable.
27523
+ * @private
27524
+ * @param {CustomEvent} event - The calendar-cell-focused event.
27525
+ * @returns {void}
27526
+ */
27527
+ handleCellFocused(event) {
27528
+ const { date } = event.detail;
27529
+ if (date === null) {
27530
+ return;
27531
+ }
27532
+
27533
+ // With aria-activedescendant, the button no longer receives native focus,
27534
+ // so we use the debounced live region for the full context announcement.
27535
+ const announcement = this.buildFocusAnnouncement(date);
27536
+ this.announceFocusDebounced(announcement);
27537
+
27538
+ // Update the range preview imperatively if in range-preview mode.
27539
+ this.updateRangePreview(date);
27540
+ }
27541
+
27542
+ /**
27543
+ * Builds a full SR announcement string for a focused cell date.
27544
+ * Includes the localized date, range position, popover content,
27545
+ * and blackout status.
27546
+ * @private
27547
+ * @param {Number} date - Unix timestamp (seconds) of the focused cell.
27548
+ * @returns {String} The announcement string.
27549
+ */
27550
+ buildFocusAnnouncement(date) {
27551
+ let label = this.formatAnnouncementDate(date);
27552
+
27553
+ // Append date slot content (e.g. prices) if present.
27554
+ const dateObj = new Date(date * 1000);
27555
+ const mm = String(dateObj.getMonth() + 1).padStart(2, '0');
27556
+ const dd = String(dateObj.getDate()).padStart(2, '0');
27557
+ const yyyy = dateObj.getFullYear();
27558
+ const dateStr = `${mm}_${dd}_${yyyy}`;
27559
+ const dateSlotEl = this.datepicker?.querySelector(`[slot="date_${dateStr}"]`);
27560
+ if (dateSlotEl) {
27561
+ const text = dateSlotEl.innerText?.trim();
27562
+ if (text) {
27563
+ label += `, ${text}`;
27564
+ }
27565
+ }
27566
+
27567
+ // Append popover content if present.
27568
+ const popoverEl = this.datepicker?.querySelector(`[slot="popover_${dateStr}"]`);
27569
+ if (popoverEl) {
27570
+ const text = popoverEl.innerText?.trim();
27571
+ if (text) {
27572
+ label += `, ${text}`;
27573
+ }
27574
+ }
27575
+
27576
+ // Append range position context.
27577
+ if (this.datepicker?.hasAttribute('range')) {
27578
+ const rangeLabel = this.getRangePositionLabel(date);
27579
+ if (rangeLabel) {
27580
+ label += `, ${rangeLabel}`;
27581
+ }
27582
+ }
27583
+
27584
+ // Append blackout label.
27585
+ if (this.isDateBlackout(date)) {
27586
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
27587
+ }
27588
+
27589
+ return label;
27590
+ }
27591
+
27592
+ /**
27593
+ * Determines the range position label for a given date.
27594
+ * @private
27595
+ * @param {Number} date - Unix timestamp (seconds).
27596
+ * @returns {String|null} The range position label, or null.
27597
+ */
27598
+ getRangePositionLabel(date) {
27599
+ const parsedFrom = Number.parseInt(this.dateFrom, 10);
27600
+ if (!Number.isFinite(parsedFrom)) {
27601
+ return null;
27602
+ }
27603
+
27604
+ const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
27605
+ const parsedTo = Number.parseInt(this.dateTo, 10);
27606
+ const hasTo = Number.isFinite(parsedTo);
27607
+ const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
27608
+
27609
+ if (date === departTs) {
27610
+ return this.datepicker.rangeLabelStart || 'range start';
27611
+ }
27612
+ if (hasTo && date === returnTs) {
27613
+ return this.datepicker.rangeLabelEnd || 'range end';
27614
+ }
27615
+ if (date < departTs) {
27616
+ return this.datepicker.rangeLabelBeforeRange || 'before range';
27617
+ }
27618
+ if (hasTo && date > departTs && date < returnTs) {
27619
+ return this.datepicker.rangeLabelInRange || 'in range';
27620
+ }
27621
+ return this.datepicker.rangeLabelAfterRange || 'after range';
27622
+ }
27623
+
27624
+ /**
27625
+ * Checks whether a given date is a blackout date.
27626
+ * @private
27627
+ * @param {Number} dateTs - Unix timestamp (seconds).
27628
+ * @returns {Boolean} True if the date is blacked out.
27629
+ */
27630
+ isDateBlackout(dateTs) {
27631
+ // Check legacy disabledDays.
27632
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
27633
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
27634
+ return true;
27635
+ }
27636
+ }
27637
+
27638
+ // Check ISO blackoutDates.
27639
+ const blackoutDates = this.datepicker?.blackoutDates;
27640
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
27641
+ const date = new Date(dateTs * 1000);
27642
+ const yyyy = date.getFullYear();
27643
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
27644
+ const dd = String(date.getDate()).padStart(2, '0');
27645
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
27646
+ return true;
27647
+ }
27648
+ }
27649
+
27650
+ return false;
27651
+ }
27652
+
27653
+ /**
27654
+ * Updates the range preview classes imperatively across all cells.
27655
+ * Only active when in range mode with dateFrom set and dateTo not yet set.
27656
+ * @private
27657
+ * @param {Number} hoveredDate - Unix timestamp of the hovered/focused date.
27658
+ * @returns {void}
27659
+ */
27660
+ updateRangePreview(hoveredDate) {
27661
+ if (this.noRange || !this.dateFrom || this.dateTo) {
27662
+ return;
27663
+ }
27664
+
27665
+ const parsedDateFrom = parseInt(this.dateFrom, 10);
27666
+ const allCells = this.getAllFocusableCells();
27667
+
27668
+ allCells.forEach((cell) => {
27669
+ cell.updateRangePreviewClasses(hoveredDate, parsedDateFrom);
27670
+ });
27671
+ }
27672
+
27673
+ /**
27674
+ * Clears range preview classes from all cells.
27675
+ * @private
27676
+ * @param {Object} [options] - Optional settings.
27677
+ * @param {boolean} [options.force=false] - When true, clears classes even
27678
+ * when both dateFrom and dateTo are set. Used by month nav handlers
27679
+ * since the subsequent re-render re-applies classMap-managed classes,
27680
+ * while `lastHoveredDate` (not in classMap) would otherwise persist.
27681
+ * @returns {void}
27682
+ */
27683
+ clearRangePreview(options) {
27684
+ const opts = options instanceof Event ? {} : options || {};
27685
+ if (!opts.force && this.dateFrom && this.dateTo) {
27686
+ return;
27687
+ }
27688
+
27689
+ const allCells = this.getAllFocusableCells();
27690
+ allCells.forEach((cell) => {
27691
+ cell.clearRangePreviewClasses();
27692
+ });
27693
+ }
27694
+
27695
+ /**
27696
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
27697
+ * as a reactive property. Instead, handles the range preview imperatively.
27698
+ * @private
27699
+ * @param {CustomEvent} event - The hovered-date-changed event from a month.
27700
+ * @returns {void}
27701
+ */
27702
+ hoveredDateChanged(event) {
27703
+ const hoveredDate = event.detail.value;
27704
+ this.updateRangePreview(hoveredDate);
27705
+ }
27706
+
27707
+ /**
27708
+ * Scrolls the calendar to ensure the month containing the active cell is visible.
27709
+ * @private
27710
+ * @returns {void}
27711
+ */
27712
+ scrollToActiveCell() {
27713
+ if (this.activeCellDate === null || this.activeCellDate === undefined) {
27714
+ return;
27715
+ }
27716
+
27717
+ const date = new Date(this.activeCellDate * 1000);
27718
+ const month = date.getMonth() + 1;
27719
+ const year = date.getFullYear();
27720
+ const selector = `#month-${month}-${year}`;
27721
+ const monthElem = this.shadowRoot.querySelector(selector);
27722
+
27723
+ if (monthElem) {
27724
+ const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
27725
+ monthElem.scrollIntoView({ block: 'nearest',
27726
+ behavior: prefersReducedMotion ? 'instant' : 'smooth' });
27727
+ }
27728
+ }
27729
+
27730
+ /**
27731
+ * Returns (and lazily creates) an aria-live region inside the dropdown's
27732
+ * <dialog> element. This placement is critical for two reasons:
27733
+ *
27734
+ * 1. Inside the dialog's accessible scope — dialog.showModal() makes
27735
+ * everything outside the top-layer dialog inert, and desktop modal
27736
+ * mode uses _setPageInert() on document.body siblings. A live region
27737
+ * on document.body would be invisible to screen readers in both cases.
27738
+ *
27739
+ * 2. Not nested in shadow DOM — Chrome inconsistently observes aria-live
27740
+ * mutations inside shadow DOM across machines and versions. The dialog
27741
+ * element is only one shadow root deep (the dropdown bib's shadow DOM),
27742
+ * which Chrome handles reliably. The calendar's own shadow DOM (nested
27743
+ * inside the bib via slotting) is two+ levels deep and unreliable.
27744
+ *
27745
+ * @private
27746
+ * @returns {HTMLElement} The live region element.
27747
+ */
27748
+ getOrCreateLiveRegion() {
27749
+ if (this._liveRegion && this._liveRegion.isConnected) {
27750
+ return this._liveRegion;
27751
+ }
27752
+
27753
+ // Access the dialog element inside the dropdown bib's shadow DOM.
27754
+ const dialog = this.dropdown?.bibContent?.shadowRoot?.querySelector('dialog');
27755
+ if (!dialog) {
27756
+ return null;
27757
+ }
27758
+
27759
+ // Check if we already created one for this calendar instance.
27760
+ const regionId = `auro-calendar-live-${this._calendarInstanceId}`;
27761
+ const existing = dialog.querySelector(`#${regionId}`);
27762
+ if (existing) {
27763
+ this._liveRegion = existing;
27764
+ return existing;
27765
+ }
27766
+
27767
+ const el = document.createElement('div');
27768
+ el.id = regionId;
27769
+ el.setAttribute('aria-live', 'assertive');
27770
+ el.setAttribute('aria-atomic', 'true');
27771
+ 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;';
27772
+ dialog.appendChild(el);
27773
+
27774
+ this._liveRegion = el;
27775
+ return el;
27776
+ }
27777
+
27778
+ /**
27779
+ * Removes the live region when this calendar is disconnected.
27780
+ * @private
27781
+ * @returns {void}
27782
+ */
27783
+ disconnectedCallback() {
27784
+ super.disconnectedCallback();
27785
+
27786
+ // Cancel any pending announcements so they don't fire after teardown.
27787
+ if (this._announceRafId) {
27788
+ cancelAnimationFrame(this._announceRafId);
27789
+ this._announceRafId = null;
27790
+ }
27791
+ if (this._focusAnnounceTimer) {
27792
+ clearTimeout(this._focusAnnounceTimer);
27793
+ this._focusAnnounceTimer = null;
27794
+ }
27795
+
27796
+ if (this._liveRegion && this._liveRegion.isConnected) {
27797
+ this._liveRegion.remove();
27798
+ }
27799
+ this._liveRegion = null;
27800
+ }
27801
+
27802
+ /**
27803
+ * Announces a date selection or focus change via the live region.
27804
+ * Uses requestAnimationFrame to ensure the clear and set happen in
27805
+ * separate rendering frames — Chrome may coalesce synchronous or
27806
+ * microtask-deferred mutations into a single accessibility tree update.
27807
+ * @private
27808
+ * @param {String} dateStr - The localized date string to announce.
27809
+ * @returns {void}
27810
+ */
27811
+ announceSelection(dateStr) {
27812
+ // Cancel any previously queued rAF announcement so a rapid
27813
+ // sequence of calls (e.g. bib open → month nav) only announces
27814
+ // the last one.
27815
+ if (this._announceRafId) {
27816
+ cancelAnimationFrame(this._announceRafId);
27817
+ }
27818
+ const liveRegion = this.getOrCreateLiveRegion();
27819
+ if (!liveRegion) {
27820
+ return;
27821
+ }
27822
+
27823
+ // Double-rAF: clear in frame N, set in frame N+1. Chrome batches
27824
+ // accessibility tree mutations within a single animation frame, so
27825
+ // a same-frame clear+set can be coalesced into a no-op if the new
27826
+ // value matches a recently announced string. Splitting across two
27827
+ // frames guarantees Chrome sees two distinct tree states and fires
27828
+ // a new accessibility event for the content change.
27829
+ liveRegion.textContent = '';
27830
+ this._announceRafId = requestAnimationFrame(() => {
27831
+ this._announceRafId = requestAnimationFrame(() => {
27832
+ liveRegion.textContent = dateStr;
27833
+ this._announceRafId = null;
27834
+ });
27835
+ });
27836
+ }
27837
+
27838
+ /**
27839
+ * Debounced version of announceSelection for focus navigation.
27840
+ * Uses the assertive live region with a 150ms debounce so only the
27841
+ * final cell after rapid arrow-key traversal is announced. We
27842
+ * originally tried aria-live="polite" here, but VoiceOver treats
27843
+ * polite as "wait until idle" — which never happens during active
27844
+ * keyboard navigation — so the announcements were silently dropped.
27845
+ * @private
27846
+ * @param {String} dateStr - The localized date string to announce.
27847
+ * @returns {void}
27848
+ */
27849
+ announceFocusDebounced(dateStr) {
27850
+ if (this._focusAnnounceTimer) {
27851
+ clearTimeout(this._focusAnnounceTimer);
27852
+ }
27853
+ this._focusAnnounceTimer = setTimeout(() => {
27854
+ this.announceSelection(dateStr);
27855
+ this._focusAnnounceTimer = null;
27856
+ }, 150);
27857
+ }
27858
+
27859
+ /**
27860
+ * Formats a Unix timestamp (seconds) as a localized date string for SR announcements.
27861
+ * @private
27862
+ * @param {String|Number} timestamp - Unix timestamp in seconds.
27863
+ * @returns {String} Localized date string.
27864
+ */
27865
+ formatAnnouncementDate(timestamp) {
27866
+ const date = new Date(parseInt(timestamp, 10) * 1000);
27867
+ const localeCode = this.locale?.code || undefined;
27868
+ const formatter = new Intl.DateTimeFormat(localeCode, {
27869
+ weekday: 'long',
27870
+ year: 'numeric',
27871
+ month: 'long',
27872
+ day: 'numeric'
27873
+ });
27874
+ return formatter.format(date);
27875
+ }
27876
+
26349
27877
  firstUpdated() {
27878
+
26350
27879
  this.addEventListener('date-from-changed', () => {
26351
27880
  this.dispatchEvent(new CustomEvent('auroCalendar-dateSelected', {
26352
27881
  bubbles: true,
@@ -26365,6 +27894,21 @@ class AuroCalendar extends RangeDatepicker {
26365
27894
  composed: true,
26366
27895
  }));
26367
27896
  });
27897
+
27898
+ // Listen for cross-month boundary navigation events
27899
+ this.addEventListener('calendar-month-boundary', (event) => {
27900
+ this.handleMonthBoundary(event);
27901
+ });
27902
+
27903
+ // Listen for cell activation events
27904
+ this.addEventListener('calendar-cell-activate', (event) => {
27905
+ this.handleCellActivate(event);
27906
+ });
27907
+
27908
+ // Listen for cell focus events (SR announcements + range preview)
27909
+ this.addEventListener('calendar-cell-focused', (event) => {
27910
+ this.handleCellFocused(event);
27911
+ });
26368
27912
  }
26369
27913
 
26370
27914
  injectSlot(slotName, nodes) {
@@ -26389,7 +27933,37 @@ class AuroCalendar extends RangeDatepicker {
26389
27933
  }
26390
27934
 
26391
27935
  if (changedProperties.has('visible')) {
26392
- setTimeout(() => this.requestUpdate());
27936
+ if (this.visible) {
27937
+ // Compute the active date eagerly from data — no DOM needed.
27938
+ if (this.activeCellDate == null) { // eslint-disable-line no-eq-null, eqeqeq
27939
+ this.activeCellDate = this.computeActiveDate();
27940
+ }
27941
+
27942
+ this.requestUpdate();
27943
+ } else {
27944
+ this.requestUpdate();
27945
+ }
27946
+ }
27947
+
27948
+ // Announce date selection to screen readers when user clicks/selects a cell
27949
+ const isCellClick = this.datepicker?.wasCellClick || this.datepicker?.cellClickActive;
27950
+
27951
+ if (changedProperties.has('dateFrom') && this.dateFrom && isCellClick) {
27952
+ const dateStr = this.formatAnnouncementDate(this.dateFrom);
27953
+ const isRange = !this.noRange;
27954
+
27955
+ if (isRange) {
27956
+ const rangeLabel = this.datepicker.rangeLabelStart || 'range start';
27957
+ this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
27958
+ } else {
27959
+ this.announceSelection(`${dateStr}, selected`);
27960
+ }
27961
+ }
27962
+
27963
+ if (changedProperties.has('dateTo') && this.dateTo && isCellClick) {
27964
+ const dateStr = this.formatAnnouncementDate(this.dateTo);
27965
+ const rangeLabel = this.datepicker.rangeLabelEnd || 'range end';
27966
+ this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
26393
27967
  }
26394
27968
  }
26395
27969
 
@@ -26398,6 +27972,7 @@ class AuroCalendar extends RangeDatepicker {
26398
27972
  <${this.bibtemplateTag}
26399
27973
  ?large="${this.largeFullscreenHeadline}"
26400
27974
  ?isFullscreen="${this.isFullscreen}"
27975
+ ?showFooter="${!this.isFullscreen && this.dropdown?.desktopModal}"
26401
27976
  @close-click="${this.utilCal.requestDismiss}">
26402
27977
  <span slot="ariaLabel.close">${this.slots["ariaLabel.bib.close"]}</span>
26403
27978
 
@@ -26415,24 +27990,26 @@ class AuroCalendar extends RangeDatepicker {
26415
27990
  </div>
26416
27991
  </div>
26417
27992
 
26418
- <div class="calendarWrapper">
26419
- <div class="calendars">
26420
- ${this.renderAllCalendars()}
26421
- </div>
27993
+ <div class="calendarWrapper ${!this.isFullscreen && this.dropdown?.desktopModal ? 'hasFooter' : ''}">
26422
27994
  <div class="calendarNavButtons">
26423
27995
  ${this.showPrevMonthBtn ? u$d`
26424
- <button tabIndex="-1" class="calendarNavBtn prevMonth" @click="${this.handlePrevMonth}">
27996
+ <button tabIndex="0" class="calendarNavBtn prevMonth" aria-label="${this.datepicker?.navLabelPrevMonth || 'Previous month'}" @click="${this.handlePrevMonth}">
26425
27997
  ${this.util.generateIconHtml(chevronLeft)}
26426
27998
  </button>
26427
27999
  ` : undefined}
26428
28000
  ${this.showNextMonthBtn ? u$d`
26429
- <button tabIndex="-1" class="calendarNavBtn nextMonth" @click="${this.handleNextMonth}">
28001
+ <button tabIndex="0" class="calendarNavBtn nextMonth" aria-label="${this.datepicker?.navLabelNextMonth || 'Next month'}" @click="${this.handleNextMonth}">
26430
28002
  ${this.util.generateIconHtml(chevronRight)}
26431
28003
  </button>
26432
28004
  ` : undefined}
26433
28005
  </div>
28006
+ <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}">
28007
+ ${this.renderAllCalendars()}
28008
+ </div>
26434
28009
  </div>
26435
28010
 
28011
+ <div id="calendar-live-region" aria-live="assertive" aria-atomic="true" class="sr-only"></div>
28012
+
26436
28013
  <${this.buttonTag} slot="footer" fluid @click="${this.utilCal.requestDismiss}">Done</${this.buttonTag}>
26437
28014
  </${this.bibtemplateTag}>
26438
28015
  `;
@@ -29680,7 +31257,7 @@ function applyKeyboardStrategy$1$2(component, strategy, options = {}) {
29680
31257
  });
29681
31258
  }
29682
31259
 
29683
- var styleCss$2$1$2 = i$5`: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}`;
31260
+ var styleCss$2$1$2 = i$5`: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}`;
29684
31261
 
29685
31262
  var colorCss$2$7 = i$5`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
29686
31263
 
@@ -30311,7 +31888,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$3 {
30311
31888
  }
30312
31889
  };
30313
31890
 
30314
- var formkitVersion$1$2 = '202606081518';
31891
+ var formkitVersion$1$2 = '202606081904';
30315
31892
 
30316
31893
  let AuroElement$2$2 = class AuroElement extends i$3 {
30317
31894
  static get properties() {
@@ -30491,6 +32068,7 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
30491
32068
  _intializeDefaults() {
30492
32069
  this.appearance = 'default';
30493
32070
  this.chevron = false;
32071
+ this.desktopModal = false;
30494
32072
  this.disabled = false;
30495
32073
  this.disableKeyboardHandling = false;
30496
32074
  this.error = false;
@@ -30671,6 +32249,14 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
30671
32249
  reflect: true
30672
32250
  },
30673
32251
 
32252
+ /**
32253
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
32254
+ */
32255
+ desktopModal: {
32256
+ type: Boolean,
32257
+ reflect: true
32258
+ },
32259
+
30674
32260
  /**
30675
32261
  * If declared, the dropdown will only show by calling the API .show() public method.
30676
32262
  */
@@ -30958,6 +32544,15 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
30958
32544
 
30959
32545
  disconnectedCallback() {
30960
32546
  super.disconnectedCallback();
32547
+ this._clearPageInert();
32548
+ if (this._bibTabHandler) {
32549
+ this.removeEventListener('keydown', this._bibTabHandler);
32550
+ this._bibTabHandler = undefined;
32551
+ }
32552
+ if (this.focusTrap) {
32553
+ this.focusTrap.disconnect();
32554
+ this.focusTrap = undefined;
32555
+ }
30961
32556
  if (this.floater) {
30962
32557
  this.floater.hideBib('disconnect');
30963
32558
  this.floater.disconnect();
@@ -30985,19 +32580,45 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
30985
32580
  if (this.isPopoverVisible) {
30986
32581
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
30987
32582
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
30988
- const useModal = this.isBibFullscreen;
30989
- this.bibElement.value.open(useModal);
32583
+ this.bibElement.value.open(this.isBibFullscreen);
32584
+ this.updateFocusTrap();
32585
+
32586
+ // Desktop modal: make siblings inert so content outside is not interactive
32587
+ if (this.desktopModal && !this.isBibFullscreen) {
32588
+ this._setPageInert();
32589
+ }
30990
32590
  } else {
30991
32591
  this.bibElement.value.close();
32592
+ this._clearPageInert();
30992
32593
  }
30993
32594
  }
30994
32595
 
30995
32596
  // When fullscreen strategy changes while open, re-open dialog with correct mode
30996
32597
  // (e.g. resizing from desktop → mobile while dropdown is open)
30997
32598
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
30998
- const useModal = this.isBibFullscreen;
30999
32599
  this.bibElement.value.close();
31000
- this.bibElement.value.open(useModal);
32600
+ this.bibElement.value.open(this.isBibFullscreen);
32601
+
32602
+ // Re-initialize focus management for the new strategy
32603
+ this.updateFocusTrap();
32604
+
32605
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
32606
+ if (this.desktopModal && !this.isBibFullscreen) {
32607
+ this._setPageInert();
32608
+ } else {
32609
+ this._clearPageInert();
32610
+ }
32611
+ }
32612
+
32613
+ // Handle desktopModal toggled while the dropdown is already open.
32614
+ // Re-initialize focus trapping and page inert state to match the new mode.
32615
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
32616
+ this.updateFocusTrap();
32617
+ if (this.desktopModal) {
32618
+ this._setPageInert();
32619
+ } else {
32620
+ this._clearPageInert();
32621
+ }
31001
32622
  }
31002
32623
  }
31003
32624
 
@@ -31007,8 +32628,14 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
31007
32628
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
31008
32629
  */
31009
32630
  handleDropdownToggle(event) {
31010
- this.updateFocusTrap();
31011
32631
  this.isPopoverVisible = event.detail.expanded;
32632
+
32633
+ // Tear down FocusTrap when closing. Creation happens in updated()
32634
+ // after the dialog is open so getFocusableElements can find content.
32635
+ if (!this.isPopoverVisible) {
32636
+ this.updateFocusTrap();
32637
+ }
32638
+
31012
32639
  const eventType = event.detail.eventType || "unknown";
31013
32640
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
31014
32641
  this.trigger.focus();
@@ -31107,19 +32734,194 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
31107
32734
  * @private
31108
32735
  */
31109
32736
  updateFocusTrap() {
32737
+ // Always clean up existing handlers/traps before setting up new ones
32738
+ // to prevent duplicate listeners on repeated calls.
32739
+ if (this._bibTabHandler) {
32740
+ this.removeEventListener('keydown', this._bibTabHandler);
32741
+ this._bibTabHandler = undefined;
32742
+ }
32743
+
32744
+ if (this.focusTrap) {
32745
+ this.focusTrap.disconnect();
32746
+ this.focusTrap = undefined;
32747
+ }
32748
+
31110
32749
  if (this.isPopoverVisible) {
31111
32750
  if (!this.isBibFullscreen) {
31112
- // Desktop: show() doesn't trap focus, so use FocusTrap
31113
- this.focusTrap = new FocusTrap$3(this.bibContent);
31114
- this.focusTrap.focusFirstElement();
32751
+ if (this.desktopModal) {
32752
+ // Desktop modal: trap focus only within the bib content.
32753
+ // Can't use FocusTrap on the bib element because keydown events
32754
+ // from slotted content bubble through the dropdown host (light DOM),
32755
+ // not through the bib (shadow projection target). Using FocusTrap
32756
+ // on the dropdown would include the trigger in the tab cycle.
32757
+ // Instead, listen for Tab on the dropdown and manually wrap focus
32758
+ // within the bib's focusable elements.
32759
+ this._bibTabHandler = (event) => {
32760
+ if (event.key !== 'Tab') {
32761
+ return;
32762
+ }
32763
+
32764
+ // Collect focusable elements from the bib content.
32765
+ const focusables = getFocusableElements$3(this.bibContent);
32766
+
32767
+ // Fallback: try from slotted content directly
32768
+ if (!focusables.length) {
32769
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
32770
+ const assignedNodes = slot.assignedNodes({ flatten: true });
32771
+
32772
+ for (const node of assignedNodes) {
32773
+ if (node.nodeType === Node.ELEMENT_NODE) {
32774
+ focusables.push(...getFocusableElements$3(node));
32775
+ }
32776
+ }
32777
+ }
32778
+
32779
+ if (!focusables.length) {
32780
+ return;
32781
+ }
32782
+
32783
+ event.preventDefault();
32784
+
32785
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
32786
+
32787
+ // Walk the active element chain through shadow roots
32788
+ const actives = this._getActiveElements();
32789
+
32790
+ let idx = focusables.findIndex((el) => actives.includes(el));
32791
+
32792
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
32793
+ // Focus is not on a known element — move to first/last
32794
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
32795
+ }
32796
+
32797
+ // Try each element in order, skipping any that can't receive focus
32798
+ // (e.g. hidden elements, elements in collapsed sections)
32799
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
32800
+ let nextIdx = idx + direction;
32801
+
32802
+ // Wrap around
32803
+ if (nextIdx < 0) {
32804
+ nextIdx = focusables.length - 1;
32805
+ } else if (nextIdx >= focusables.length) {
32806
+ nextIdx = 0;
32807
+ }
32808
+
32809
+ focusables[nextIdx].focus();
32810
+
32811
+ // Verify focus actually moved to the target
32812
+ const newActives = this._getActiveElements();
32813
+
32814
+ if (newActives.includes(focusables[nextIdx])) {
32815
+ return;
32816
+ }
32817
+
32818
+ // Focus didn't stick — skip this element and try the next
32819
+ idx = nextIdx;
32820
+ }
32821
+ };
32822
+ this.addEventListener('keydown', this._bibTabHandler);
32823
+
32824
+ // Move initial focus into the bib content, matching FocusTrap behavior
32825
+ requestAnimationFrame(() => {
32826
+ const focusables = getFocusableElements$3(this.bibContent);
32827
+ if (focusables.length) {
32828
+ focusables[0].focus();
32829
+ }
32830
+ });
32831
+ } else {
32832
+ // Normal desktop: use FocusTrap on the bib element
32833
+ this.focusTrap = new FocusTrap$3(this.bibContent);
32834
+ this.focusTrap.focusFirstElement();
32835
+ }
31115
32836
  }
31116
32837
  // Fullscreen: showModal() provides native focus trapping
32838
+ }
32839
+ }
32840
+
32841
+ /**
32842
+ * Returns the chain of active (focused) elements through shadow roots.
32843
+ * @private
32844
+ * @returns {Array<HTMLElement>}
32845
+ */
32846
+ _getActiveElements() {
32847
+ let { activeElement } = document;
32848
+ const actives = [activeElement];
32849
+
32850
+ while (activeElement?.shadowRoot?.activeElement) {
32851
+ activeElement = activeElement.shadowRoot.activeElement;
32852
+ actives.push(activeElement);
32853
+ }
32854
+
32855
+ return actives;
32856
+ }
32857
+
32858
+ /**
32859
+ * Sets `inert` on sibling elements of the dropdown's top-level host
32860
+ * so that content outside the dropdown is not interactive while the modal is open.
32861
+ * Walks up through shadow DOM boundaries to find the outermost host element
32862
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
32863
+ * to ensure all page content outside the host subtree is inert.
32864
+ * @private
32865
+ */
32866
+ _setPageInert() {
32867
+ if (this._inertSiblings) {
31117
32868
  return;
31118
32869
  }
31119
32870
 
31120
- if (this.focusTrap) {
31121
- this.focusTrap.disconnect();
31122
- this.focusTrap = undefined;
32871
+ this._inertSiblings = [];
32872
+
32873
+ // Walk up through shadow DOM boundaries to find the topmost host
32874
+ // element in the light DOM. For example, if this dropdown is inside
32875
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
32876
+ // so we set inert on its siblings — not on the datepicker itself.
32877
+ let host = this;
32878
+ while (host.getRootNode() instanceof ShadowRoot) {
32879
+ host = host.getRootNode().host;
32880
+ }
32881
+
32882
+ // Walk up the ancestor chain, inerting siblings at each level
32883
+ // to ensure the entire page outside the host subtree is inert.
32884
+ // Uses a reference counter (data-auro-inert-count) so multiple
32885
+ // simultaneous modal dropdowns share inert state safely.
32886
+ let current = host;
32887
+ while (current.parentElement) {
32888
+ const parent = current.parentElement;
32889
+ for (const sibling of parent.children) {
32890
+ if (sibling !== current) {
32891
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
32892
+ if (count === 0) {
32893
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
32894
+ }
32895
+ sibling.dataset.auroInertCount = String(count + 1);
32896
+ sibling.inert = true;
32897
+ this._inertSiblings.push(sibling);
32898
+ }
32899
+ }
32900
+ current = parent;
32901
+ }
32902
+ }
32903
+
32904
+ /**
32905
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
32906
+ * Uses reference counting so inert is only cleared when the last modal
32907
+ * dropdown releases a given element. Preserves the original inert state
32908
+ * so externally-inerted elements are not inadvertently re-enabled.
32909
+ * @private
32910
+ */
32911
+ _clearPageInert() {
32912
+ if (this._inertSiblings) {
32913
+ for (const sibling of this._inertSiblings) {
32914
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
32915
+ if (count <= 0) {
32916
+ const wasInert = sibling.dataset.auroInertWas === 'true';
32917
+ delete sibling.dataset.auroInertCount;
32918
+ delete sibling.dataset.auroInertWas;
32919
+ sibling.inert = wasInert;
32920
+ } else {
32921
+ sibling.dataset.auroInertCount = String(count);
32922
+ }
32923
+ }
32924
+ this._inertSiblings = undefined;
31123
32925
  }
31124
32926
  }
31125
32927
 
@@ -31358,6 +33160,7 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
31358
33160
  shape="${this.shape}"
31359
33161
  ?data-show="${this.isPopoverVisible}"
31360
33162
  ?isfullscreen="${this.isBibFullscreen}"
33163
+ ?desktopmodal="${this.desktopModal}"
31361
33164
  .dialogLabel="${this.bibDialogLabel}"
31362
33165
  ${n$6(this.bibElement)}
31363
33166
  >
@@ -43562,7 +45365,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$3 {
43562
45365
  }
43563
45366
  };
43564
45367
 
43565
- var formkitVersion$8 = '202606081518';
45368
+ var formkitVersion$8 = '202606081904';
43566
45369
 
43567
45370
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
43568
45371
  // See LICENSE in the project root for license information.
@@ -44907,26 +46710,62 @@ function applyKeyboardStrategy$5(component, strategy, options = {}) {
44907
46710
  // components/datepicker/docs/partials/keyboardBehavior.md
44908
46711
  //
44909
46712
  // Current behavior (transitional — full bib keyboard navigation is planned for a future iteration):
44910
- // - The bib opens and closes via pointer/touch interaction only.
44911
46713
  // - Escape closes the bib and prevents the event from reaching parent containers.
46714
+ // - Enter opens the bib when it is closed (trigger input only, not clear button).
46715
+ // - Space opens the bib when it is closed (trigger input only, not clear button).
44912
46716
  // - Tab uses the browser's default tabindex sequence across trigger controls.
44913
- // - Enter and Space do not open or close the bib.
44914
46717
  //
44915
46718
  // This file is an intentional placeholder for most keys. When datepicker bib keyboard navigation is
44916
46719
  // added, handlers should go here following the same strategy pattern used by
44917
46720
  // auro-select (selectKeyboardStrategy.js) and auro-combobox (comboboxKeyboardStrategy.js).
44918
46721
  const datepickerKeyboardStrategy = {
44919
- Escape(component, evt) {
44920
- if (!component.dropdown || !component.dropdown.isPopoverVisible) {
46722
+ Escape(component, evt, ctx) {
46723
+ if (!ctx.isExpanded) {
44921
46724
  return;
44922
46725
  }
44923
46726
 
44924
- // Prevent the Escape key from bubbling up and closing any parent dialogs / drawers / popups.
44925
- // Because stopPropagation prevents the document-level floatingUI keydown handler from
44926
- // seeing this event, we must also close the dropdown explicitly.
46727
+ // Stop propagation so parent containers (auro-dialog, auro-drawer)
46728
+ // don't also react to Escape.
44927
46729
  evt.stopPropagation();
46730
+ evt.preventDefault();
44928
46731
 
44929
- component.dropdown.hide();
46732
+ component.hideBib();
46733
+ },
46734
+
46735
+ Enter(component, evt, ctx) {
46736
+ if (ctx.isExpanded) {
46737
+ return;
46738
+ }
46739
+
46740
+ // Only open from the trigger input, not the clear button or other internal elements.
46741
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
46742
+ // to find the real origin. The clear button is rendered with class "clearBtn".
46743
+ const path = evt.composedPath();
46744
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
46745
+ return;
46746
+ }
46747
+
46748
+ evt.preventDefault();
46749
+
46750
+ component.dropdown.show();
46751
+ },
46752
+
46753
+ ' '(component, evt, ctx) {
46754
+ if (ctx.isExpanded) {
46755
+ return;
46756
+ }
46757
+
46758
+ // Only open from the trigger input, not the clear button or other internal elements.
46759
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
46760
+ // to find the real origin. The clear button is rendered with class "clearBtn".
46761
+ const path = evt.composedPath();
46762
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
46763
+ return;
46764
+ }
46765
+
46766
+ evt.preventDefault();
46767
+
46768
+ component.dropdown.show();
44930
46769
  },
44931
46770
  };
44932
46771
 
@@ -45000,6 +46839,16 @@ class AuroDatePicker extends AuroElement$6 {
45000
46839
  this.required = false;
45001
46840
  this.onDark = false;
45002
46841
  this.range = false;
46842
+ this.rangeLabelStart = 'range start';
46843
+ this.rangeLabelEnd = 'range end';
46844
+ this.rangeLabelBeforeRange = 'before range';
46845
+ this.rangeLabelInRange = 'in range';
46846
+ this.rangeLabelAfterRange = 'after range';
46847
+ this.blackoutDates = [];
46848
+ this.blackoutLabel = 'unavailable';
46849
+ this.navLabelPrevMonth = 'Previous month';
46850
+ this.navLabelNextMonth = 'Next month';
46851
+ this.calendarGridLabel = 'Calendar days of the month';
45003
46852
  this.stacked = false;
45004
46853
  this.noValidate = false;
45005
46854
  this.validity = undefined;
@@ -45115,7 +46964,7 @@ class AuroDatePicker extends AuroElement$6 {
45115
46964
 
45116
46965
  /**
45117
46966
  * Defines whether the component will be on lighter or darker backgrounds.
45118
- * @property {'default', 'inverse'}
46967
+ * @type {'default' | 'inverse'}
45119
46968
  * @default 'default'
45120
46969
  */
45121
46970
  appearance: {
@@ -45132,6 +46981,22 @@ class AuroDatePicker extends AuroElement$6 {
45132
46981
  reflect: true
45133
46982
  },
45134
46983
 
46984
+ /**
46985
+ * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
46986
+ */
46987
+ blackoutDates: {
46988
+ type: Array,
46989
+ reflect: true
46990
+ },
46991
+
46992
+ /**
46993
+ * Label announced for blackout (disabled but in-range) date cells.
46994
+ */
46995
+ blackoutLabel: {
46996
+ type: String,
46997
+ reflect: true
46998
+ },
46999
+
45135
47000
  /**
45136
47001
  * The last date that may be displayed in the calendar.
45137
47002
  */
@@ -45140,6 +47005,14 @@ class AuroDatePicker extends AuroElement$6 {
45140
47005
  reflect: true
45141
47006
  },
45142
47007
 
47008
+ /**
47009
+ * Accessible label for the calendar grid containing the days of the month.
47010
+ */
47011
+ calendarGridLabel: {
47012
+ type: String,
47013
+ reflect: true
47014
+ },
47015
+
45143
47016
  /**
45144
47017
  * The date that will first be visually rendered to the user in the calendar.
45145
47018
  */
@@ -45187,27 +47060,6 @@ class AuroDatePicker extends AuroElement$6 {
45187
47060
  reflect: true
45188
47061
  },
45189
47062
 
45190
- hasFocus: {
45191
- type: Boolean,
45192
- reflect: false,
45193
- },
45194
-
45195
- /**
45196
- * @private
45197
- */
45198
- hasValue: {
45199
- type: Boolean,
45200
- reflect: false,
45201
- },
45202
-
45203
- /**
45204
- * @private
45205
- */
45206
- hasAllValues: {
45207
- type: Boolean,
45208
- reflect: false
45209
- },
45210
-
45211
47063
  /**
45212
47064
  * Specifies the date format. The default is `mm/dd/yyyy`.
45213
47065
  */
@@ -45237,6 +47089,27 @@ class AuroDatePicker extends AuroElement$6 {
45237
47089
  reflect: true
45238
47090
  },
45239
47091
 
47092
+ /**
47093
+ * @private
47094
+ */
47095
+ hasAllValues: {
47096
+ type: Boolean,
47097
+ reflect: false
47098
+ },
47099
+
47100
+ hasFocus: {
47101
+ type: Boolean,
47102
+ reflect: false,
47103
+ },
47104
+
47105
+ /**
47106
+ * @private
47107
+ */
47108
+ hasValue: {
47109
+ type: Boolean,
47110
+ reflect: false,
47111
+ },
47112
+
45240
47113
  /** Exposes inputmode attribute for input. */
45241
47114
  inputmode: {
45242
47115
  type: String,
@@ -45279,6 +47152,13 @@ class AuroDatePicker extends AuroElement$6 {
45279
47152
  reflect: true
45280
47153
  },
45281
47154
 
47155
+ /**
47156
+ * @private
47157
+ */
47158
+ monthFirst: {
47159
+ type: Boolean
47160
+ },
47161
+
45282
47162
  /**
45283
47163
  * Names of all 12 months to render in the calendar.
45284
47164
  * When omitted, month names will be automatically populated from the active `locale` (falling back to `en-US`).
@@ -45288,18 +47168,26 @@ class AuroDatePicker extends AuroElement$6 {
45288
47168
  },
45289
47169
 
45290
47170
  /**
45291
- * If declared, the bib will NOT flip to an alternate position
45292
- * when there isn't enough space in the specified `placement`.
47171
+ * Accessible label for the next month navigation button.
45293
47172
  */
45294
- noFlip: {
45295
- type: Boolean,
47173
+ navLabelNextMonth: {
47174
+ type: String,
45296
47175
  reflect: true
45297
47176
  },
45298
47177
 
45299
47178
  /**
45300
- * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
47179
+ * Accessible label for the previous month navigation button.
45301
47180
  */
45302
- shift: {
47181
+ navLabelPrevMonth: {
47182
+ type: String,
47183
+ reflect: true
47184
+ },
47185
+
47186
+ /**
47187
+ * If declared, the bib will NOT flip to an alternate position
47188
+ * when there isn't enough space in the specified `placement`.
47189
+ */
47190
+ noFlip: {
45303
47191
  type: Boolean,
45304
47192
  reflect: true
45305
47193
  },
@@ -45365,6 +47253,46 @@ class AuroDatePicker extends AuroElement$6 {
45365
47253
  reflect: true
45366
47254
  },
45367
47255
 
47256
+ /**
47257
+ * Label announced for cells after the range (or after start when no end is selected).
47258
+ */
47259
+ rangeLabelAfterRange: {
47260
+ type: String,
47261
+ reflect: true
47262
+ },
47263
+
47264
+ /**
47265
+ * Label announced for cells before the range start.
47266
+ */
47267
+ rangeLabelBeforeRange: {
47268
+ type: String,
47269
+ reflect: true
47270
+ },
47271
+
47272
+ /**
47273
+ * Label announced for the range end date cell.
47274
+ */
47275
+ rangeLabelEnd: {
47276
+ type: String,
47277
+ reflect: true
47278
+ },
47279
+
47280
+ /**
47281
+ * Label announced for cells within the selected range.
47282
+ */
47283
+ rangeLabelInRange: {
47284
+ type: String,
47285
+ reflect: true
47286
+ },
47287
+
47288
+ /**
47289
+ * Label announced for the range start date cell.
47290
+ */
47291
+ rangeLabelStart: {
47292
+ type: String,
47293
+ reflect: true
47294
+ },
47295
+
45368
47296
  /**
45369
47297
  * Dates that the user should have for reference as part of their decision making when selecting a date.
45370
47298
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
@@ -45391,6 +47319,7 @@ class AuroDatePicker extends AuroElement$6 {
45391
47319
 
45392
47320
  /**
45393
47321
  * Custom help text message to display when validity = `customError`.
47322
+ * Also used as the validation message when a blackout date is typed into the input.
45394
47323
  */
45395
47324
  setCustomValidityCustomError: {
45396
47325
  type: String
@@ -45417,6 +47346,14 @@ class AuroDatePicker extends AuroElement$6 {
45417
47346
  type: String
45418
47347
  },
45419
47348
 
47349
+ /**
47350
+ * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
47351
+ */
47352
+ shift: {
47353
+ type: Boolean,
47354
+ reflect: true
47355
+ },
47356
+
45420
47357
  /**
45421
47358
  * Set true to make datepicker stacked style.
45422
47359
  */
@@ -45425,6 +47362,16 @@ class AuroDatePicker extends AuroElement$6 {
45425
47362
  reflect: true
45426
47363
  },
45427
47364
 
47365
+ /**
47366
+ * Indicates whether the datepicker is in a dirty state (has been interacted with).
47367
+ * @private
47368
+ */
47369
+ touched: {
47370
+ type: Boolean,
47371
+ reflect: true,
47372
+ attribute: false
47373
+ },
47374
+
45428
47375
  /**
45429
47376
  * Specifies the `validityState` this element is in.
45430
47377
  */
@@ -45445,16 +47392,6 @@ class AuroDatePicker extends AuroElement$6 {
45445
47392
  */
45446
47393
  valueEnd: {
45447
47394
  type: String
45448
- },
45449
-
45450
- /**
45451
- * Indicates whether the datepicker is in a dirty state (has been interacted with).
45452
- * @private
45453
- */
45454
- touched: {
45455
- type: Boolean,
45456
- reflect: true,
45457
- attribute: false
45458
47395
  }
45459
47396
  };
45460
47397
  }
@@ -45565,7 +47502,7 @@ class AuroDatePicker extends AuroElement$6 {
45565
47502
  /**
45566
47503
  * Common display value wrapper classes.
45567
47504
  * @private
45568
- * @return {Object} - An object containing the common classes for the display value wrapper.
47505
+ * @returns {Object} Class map for Lit's classMap directive.
45569
47506
  */
45570
47507
  get commonDisplayValueWrapperClasses() {
45571
47508
  return {
@@ -45780,6 +47717,74 @@ class AuroDatePicker extends AuroElement$6 {
45780
47717
  }));
45781
47718
  }
45782
47719
 
47720
+ /**
47721
+ * Attempts to focus the active calendar cell using a rAF retry loop.
47722
+ * Shared by both fullscreen and desktop open paths.
47723
+ * @private
47724
+ * @returns {void}
47725
+ */
47726
+ focusActiveCellWhenReady() {
47727
+ const MAX_ATTEMPTS = 20;
47728
+ let attempts = 0;
47729
+
47730
+ const tryFocus = () => {
47731
+ attempts += 1;
47732
+ const allCells = this.calendar.getAllFocusableCells();
47733
+
47734
+ if (!allCells.length && attempts < MAX_ATTEMPTS) {
47735
+ requestAnimationFrame(tryFocus);
47736
+ return;
47737
+ }
47738
+
47739
+ // Compute and mark the active cell
47740
+ if (this.calendar.activeCellDate === null || this.calendar.activeCellDate === undefined) {
47741
+ this.calendar.activeCellDate = this.calendar.computeActiveDate();
47742
+ }
47743
+ if (this.calendar.activeCellDate !== undefined) {
47744
+ this.calendar.setActiveCell(this.calendar.activeCellDate);
47745
+ }
47746
+
47747
+ // If no cell matched (e.g. centralDate month differs from the rendered
47748
+ // range on mobile), fall back to the first rendered enabled cell.
47749
+ let activeCell = allCells.find((cell) => cell.active);
47750
+ if (!activeCell && allCells.length) {
47751
+ const [fallback] = allCells;
47752
+ if (fallback.day) {
47753
+ this.calendar.activeCellDate = fallback.day.date;
47754
+ this.calendar.setActiveCell(this.calendar.activeCellDate);
47755
+ activeCell = allCells.find((cell) => cell.active);
47756
+ }
47757
+ }
47758
+
47759
+ // Focus the calendar grid wrapper (aria-activedescendant handles
47760
+ // the SR announcement for the active cell).
47761
+ if (activeCell) {
47762
+ this.calendar.focusActiveCell();
47763
+
47764
+ // Announce the initial active cell via the live region.
47765
+ // Delay the announcement so it arrives after VoiceOver finishes
47766
+ // speaking the focus-change announcement for the grid wrapper.
47767
+ // Without this delay, VoiceOver drops the live region update
47768
+ // because it's already mid-announcement from the focus move.
47769
+ const announcement = this.calendar.buildFocusAnnouncement(activeCell.day.date);
47770
+ setTimeout(() => {
47771
+ this.calendar.announceSelection(announcement);
47772
+ }, 500);
47773
+
47774
+ // On mobile fullscreen, scroll the month list so the active cell's
47775
+ // month is visible. Without this, the list stays scrolled to the
47776
+ // calendarStartDate month which may be far from the active cell.
47777
+ if (this.dropdown.isBibFullscreen) {
47778
+ this.calendar.scrollToActiveCell();
47779
+ }
47780
+ } else if (attempts < MAX_ATTEMPTS) {
47781
+ requestAnimationFrame(tryFocus);
47782
+ }
47783
+ };
47784
+
47785
+ requestAnimationFrame(tryFocus);
47786
+ }
47787
+
45783
47788
  /**
45784
47789
  * Binds all behavior needed to the dropdown after rendering.
45785
47790
  * @private
@@ -45788,6 +47793,12 @@ class AuroDatePicker extends AuroElement$6 {
45788
47793
  configureDropdown() {
45789
47794
  this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
45790
47795
 
47796
+ // The datepicker manages its own open/close lifecycle (Space/Escape/date-select/done).
47797
+ // Prevent the floater's document-level focusin handler from closing the bib
47798
+ // when focus moves from the trigger into the calendar cells (which live inside
47799
+ // a top-layer popover where :focus-within on the dropdown host returns false).
47800
+ this.dropdown.noHideOnThisFocusLoss = true;
47801
+
45791
47802
  // Pass label text to the dropdown bib for accessible dialog naming.
45792
47803
  // Without this, the fullscreen <dialog> has no accessible name and
45793
47804
  // screen readers announce it as just "dialog" with no context.
@@ -45805,6 +47816,23 @@ class AuroDatePicker extends AuroElement$6 {
45805
47816
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
45806
47817
  this.notifyDatepickerToggled();
45807
47818
 
47819
+ if (this.dropdown.isPopoverVisible) {
47820
+ // Reset calendar focus state so it recomputes from the current selection.
47821
+ // Without this, reopening after navigating to a month without a selected
47822
+ // date leaves activeCellDate pointing at a cell in a different month than
47823
+ // what centralDate renders, causing all cells to have tabindex="-1".
47824
+ this.calendar.activeCellDate = null;
47825
+
47826
+ // Show the month containing the selected date (or today) instead of
47827
+ // whichever month the user last navigated to.
47828
+ // Respect consumer-provided centralDate/calendarStartDate if no value is set.
47829
+ if (this.valueObject) {
47830
+ this.centralDate = this.value;
47831
+ } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
47832
+ this.centralDate = new Date();
47833
+ }
47834
+ }
47835
+
45808
47836
  // This forces the calendar to render when the dropdown is opened.
45809
47837
  // It is not rendered by default
45810
47838
  this.calendar.visible = this.dropdown.isPopoverVisible;
@@ -45837,12 +47865,23 @@ class AuroDatePicker extends AuroElement$6 {
45837
47865
  bibEl.open(true);
45838
47866
 
45839
47867
  doubleRaf$3(() => {
45840
- this.calendar.focusCloseButton();
47868
+ this.focusActiveCellWhenReady();
45841
47869
  });
45842
47870
  }
45843
47871
  });
45844
47872
 
45845
47873
  guardTouchPassthrough$2(this.shadowRoot.querySelector('.calendarWrapper'));
47874
+ } else {
47875
+ // Desktop (non-fullscreen) modal: make the trigger inert so users
47876
+ // cannot interact with the input while the modal bib is open.
47877
+ if (this.dropdown.desktopModal) {
47878
+ this.dropdown.trigger.inert = true;
47879
+ }
47880
+
47881
+ // Desktop (non-fullscreen): focus the active calendar cell.
47882
+ this.dropdown.updateComplete.then(() => {
47883
+ this.focusActiveCellWhenReady();
47884
+ });
45846
47885
  }
45847
47886
  } else {
45848
47887
  // Always clear the inert flag. Only restore focus to the input when the datepicker
@@ -45887,14 +47926,35 @@ class AuroDatePicker extends AuroElement$6 {
45887
47926
  if (bibEl && this.dropdown.isPopoverVisible) {
45888
47927
  bibEl.close();
45889
47928
  bibEl.open(true);
47929
+ }
47930
+
47931
+ // Re-render the calendar with the new fullscreen layout,
47932
+ // then restore focus after the re-render completes.
47933
+ this.calendar.isFullscreen = true;
47934
+ this.calendar.updateComplete.then(() => {
45890
47935
  doubleRaf$3(() => {
45891
- this.calendar.focusCloseButton();
47936
+ this.focusActiveCellWhenReady();
45892
47937
  });
45893
- }
47938
+ });
45894
47939
  });
45895
47940
  } else if (!this.dropdown.isBibFullscreen) {
45896
- // Switching from fullscreen to floating — restore trigger accessibility
45897
- this.dropdown.trigger.inert = false;
47941
+ // Switching from fullscreen to floating — only restore trigger accessibility
47942
+ // when the bib is closed or the desktop layout is not a modal. A desktopModal
47943
+ // dropdown keeps the trigger inert while open, matching the desktop-open path.
47944
+ if (!this.dropdown.isPopoverVisible || !this.dropdown.desktopModal) {
47945
+ this.dropdown.trigger.inert = false;
47946
+ }
47947
+
47948
+ // Re-render the calendar with the desktop layout,
47949
+ // then restore focus after the re-render completes.
47950
+ this.dropdown.updateComplete.then(() => {
47951
+ this.calendar.isFullscreen = false;
47952
+ this.calendar.updateComplete.then(() => {
47953
+ doubleRaf$3(() => {
47954
+ this.focusActiveCellWhenReady();
47955
+ });
47956
+ });
47957
+ });
45898
47958
  }
45899
47959
  });
45900
47960
  }
@@ -46082,14 +48142,8 @@ class AuroDatePicker extends AuroElement$6 {
46082
48142
 
46083
48143
  if (onEndValue) {
46084
48144
  this.valueEnd = newDate;
46085
- if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
46086
- this.focus('startDate');
46087
- }
46088
48145
  } else {
46089
48146
  this.value = newDate;
46090
- if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
46091
- this.focus('endDate');
46092
- }
46093
48147
  }
46094
48148
  }
46095
48149
  }
@@ -46129,6 +48183,23 @@ class AuroDatePicker extends AuroElement$6 {
46129
48183
  this.resetInputs();
46130
48184
  }
46131
48185
 
48186
+ /**
48187
+ * Checks whether a formatted date string matches a blackout date.
48188
+ * @private
48189
+ * @param {string} dateStr - A date string in the component's configured format.
48190
+ * @returns {boolean} True if the date is in the blackoutDates list.
48191
+ */
48192
+ isBlackoutDate(dateStr) {
48193
+ if (!Array.isArray(this.blackoutDates) ||
48194
+ this.blackoutDates.length === 0 ||
48195
+ !dateStr ||
48196
+ !dateFormatter$1.isValidDate(dateStr)) {
48197
+ return false;
48198
+ }
48199
+
48200
+ return this.blackoutDates.includes(dateStr);
48201
+ }
48202
+
46132
48203
  /**
46133
48204
  * Validates value.
46134
48205
  * @param {boolean} [force=false] - Whether to force validation.
@@ -46140,6 +48211,23 @@ class AuroDatePicker extends AuroElement$6 {
46140
48211
  }
46141
48212
 
46142
48213
  this.validation.validate(this, force);
48214
+
48215
+ // After standard validation, check blackout dates for typed input
48216
+ if (this.validity !== 'customError' &&
48217
+ (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd)))) { // eslint-disable-line no-extra-parens
48218
+ const msg = this.setCustomValidityCustomError || 'Selected date is unavailable';
48219
+ this.validity = 'customError';
48220
+ this.errorMessage = msg;
48221
+
48222
+ this.dispatchEvent(new CustomEvent('auroFormElement-validated', {
48223
+ bubbles: true,
48224
+ composed: true,
48225
+ detail: {
48226
+ validity: this.validity,
48227
+ message: this.errorMessage
48228
+ }
48229
+ }));
48230
+ }
46143
48231
  }
46144
48232
 
46145
48233
  /**
@@ -46167,7 +48255,7 @@ class AuroDatePicker extends AuroElement$6 {
46167
48255
  }
46168
48256
 
46169
48257
  /**
46170
- * lifecycle method to check if the locale is valid.
48258
+ * Lifecycle method to check if the locale is valid.
46171
48259
  * @ignore
46172
48260
  * @param {Map} changedProperties - The map of properties that have changed since the last update.
46173
48261
  * @returns {void}
@@ -46178,17 +48266,20 @@ class AuroDatePicker extends AuroElement$6 {
46178
48266
  const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
46179
48267
  this._validLocale = supported.length > 0 ? this.locale : 'en-US';
46180
48268
  } catch {
46181
- console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`);
48269
+ console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
46182
48270
  this._validLocale = 'en-US';
46183
48271
  }
46184
48272
 
46185
- // if there was not an explicit format set, or the format set matches the previous locale's default format,
46186
- // update to the new locale's default format
46187
48273
  const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
46188
48274
  if (!changedProperties.has('format') && (!this.format || this.format.toLowerCase() === previousLocaleFormat)) {
46189
48275
  this.format = getDateFormatFromLocale$1(this._validLocale);
46190
48276
  }
46191
48277
  }
48278
+
48279
+ if (changedProperties.has('referenceDates') && this.calendar) {
48280
+ this.calendar.requestUpdate();
48281
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
48282
+ }
46192
48283
  }
46193
48284
 
46194
48285
  updated(changedProperties) {
@@ -46218,17 +48309,18 @@ class AuroDatePicker extends AuroElement$6 {
46218
48309
  if (changedProperties.has('value')) {
46219
48310
 
46220
48311
  // Change the calendar focus to the first valid date value only the first time the value is set
46221
- if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value)) {
46222
- if (!this.dropdown.isPopoverVisible) {
46223
- this.calendarFocusDate = this.value;
48312
+ if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value) && !this.dropdown.isPopoverVisible) {
48313
+ this.calendarFocusDate = this.value;
46224
48314
 
46225
- // Let the calendar know to scroll to the focus date when it is next rendered on mobile
46226
- this.forceScrollOnNextMobileCalendarRender = true;
46227
- }
48315
+ // Let the calendar know to scroll to the focus date when it is next rendered on mobile
48316
+ this.forceScrollOnNextMobileCalendarRender = true;
46228
48317
  }
46229
48318
 
46230
48319
  if (this.cellClickActive) {
46231
48320
  this.cellClickActive = false;
48321
+ this.wasCellClick = true;
48322
+ } else {
48323
+ this.wasCellClick = false;
46232
48324
  }
46233
48325
 
46234
48326
  if (this.value && dateFormatter$1.isValidDate(this.value)) {
@@ -46246,13 +48338,48 @@ class AuroDatePicker extends AuroElement$6 {
46246
48338
 
46247
48339
  // update the inputs — auro-input accepts ISO directly
46248
48340
  if (this.inputList[0].value !== this.value) {
46249
- this.inputList[0].value = this.value || '';
48341
+ if (this.value) {
48342
+ this.inputList[0].value = this.value;
48343
+ } else {
48344
+ this.inputList[0].value = '';
48345
+ }
48346
+ }
48347
+
48348
+ if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
48349
+ // Skip centralDate update when user clicked a cell in range mode
48350
+ // to prevent the displayed months from shifting
48351
+ this.centralDate = this.value;
48352
+ //TODO: TEST THIS CHANGE
48353
+ // this.calendarRenderUtil.updateCentralDate(this, this.value);
46250
48354
  }
46251
48355
 
46252
48356
  this.setHasValue();
46253
48357
  }
46254
48358
 
48359
+ if (changedProperties.has('blackoutDates')) {
48360
+ // Force calendar cells to re-render with updated blackout state.
48361
+ // requestUpdate on the calendar alone is insufficient because cells
48362
+ // don't receive blackoutDates as a bound property. Dispatching the
48363
+ // slot content event triggers handleSlotContent → requestUpdate on each cell.
48364
+ if (this.calendar) {
48365
+ this.calendar.requestUpdate();
48366
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
48367
+ }
48368
+
48369
+ // Re-run validation so that a previously valid value that now falls on
48370
+ // a blackout date is flagged, and vice versa.
48371
+ if (this.value || this.valueEnd) {
48372
+ this.validate();
48373
+ }
48374
+ }
48375
+
46255
48376
  if (changedProperties.has('valueEnd') && this.inputList[1]) {
48377
+ if (this.cellClickActive) {
48378
+ this.cellClickActive = false;
48379
+ this.wasCellClick = true;
48380
+ } else {
48381
+ this.wasCellClick = false;
48382
+ }
46256
48383
 
46257
48384
  // update the calendar
46258
48385
  if (this.valueEndObject) {
@@ -46270,7 +48397,19 @@ class AuroDatePicker extends AuroElement$6 {
46270
48397
 
46271
48398
  // update the inputs — auro-input accepts ISO directly
46272
48399
  if (this.inputList[1].value !== this.valueEnd) {
46273
- this.inputList[1].value = this.valueEnd || '';
48400
+ if (this.valueEnd) {
48401
+ this.inputList[1].value = this.valueEnd;
48402
+ } else {
48403
+ this.inputList[1].value = '';
48404
+ }
48405
+ }
48406
+
48407
+ if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
48408
+ // Skip centralDate update when user clicked a cell in range mode
48409
+ // to prevent the displayed months from shifting
48410
+ this.centralDate = this.valueEnd;
48411
+ // TODO: TEST THIS CHANGE
48412
+ // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
46274
48413
  }
46275
48414
 
46276
48415
  this.validate();
@@ -46313,16 +48452,14 @@ class AuroDatePicker extends AuroElement$6 {
46313
48452
  this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
46314
48453
  }
46315
48454
 
46316
- if (!changedProperties.has('value') && this.valueObject) {
46317
- if (this.minDateObject > this.valueObject) {
46318
- this.value = undefined;
46319
-
46320
- if (this.range && this.valueEnd) {
46321
- this.valueEnd = undefined;
46322
- }
48455
+ if (!changedProperties.has('value') && this.valueObject && this.minDateObject > this.valueObject) {
48456
+ this.value = undefined;
46323
48457
 
46324
- this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
48458
+ if (this.range && this.valueEnd) {
48459
+ this.valueEnd = undefined;
46325
48460
  }
48461
+
48462
+ this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
46326
48463
  }
46327
48464
 
46328
48465
  // When there is no focusDate and no value, set the focusDate to the minDate
@@ -46353,16 +48490,14 @@ class AuroDatePicker extends AuroElement$6 {
46353
48490
  }
46354
48491
  }
46355
48492
 
46356
- if (this.maxDate && !changedProperties.has('value') && this.valueObject) {
46357
- if (this.maxDateObject < this.valueObject) {
46358
- this.value = undefined;
46359
-
46360
- if (this.range && this.valueEnd) {
46361
- this.valueEnd = undefined;
46362
- }
48493
+ if (this.maxDate && !changedProperties.has('value') && this.valueObject && this.maxDateObject < this.valueObject) {
48494
+ this.value = undefined;
46363
48495
 
46364
- this.calendarRenderUtil.updateCentralDate(this, this.maxDateObject);
48496
+ if (this.range && this.valueEnd) {
48497
+ this.valueEnd = undefined;
46365
48498
  }
48499
+
48500
+ this.calendarRenderUtil.updateCentralDate(this, this.maxDateObject);
46366
48501
  }
46367
48502
 
46368
48503
  this.calendar.requestUpdate();
@@ -46420,6 +48555,7 @@ class AuroDatePicker extends AuroElement$6 {
46420
48555
  }
46421
48556
 
46422
48557
  firstUpdated() {
48558
+
46423
48559
  // Add the tag name as an attribute if it is different than the component name
46424
48560
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
46425
48561
 
@@ -46702,7 +48838,7 @@ class AuroDatePicker extends AuroElement$6 {
46702
48838
  /**
46703
48839
  * Handles click on the clear button.
46704
48840
  * @private
46705
- * @param {MouseEvent} event - The click event object.
48841
+ * @param {MouseEvent} event - The mouse event from the clear button click.
46706
48842
  * @returns {void}
46707
48843
  */
46708
48844
  handleClearClick(event) {
@@ -46850,7 +48986,7 @@ class AuroDatePicker extends AuroElement$6 {
46850
48986
  // Base HTML render() handles dropdown and calendar bib
46851
48987
  return u$d`
46852
48988
  <!-- Hidden slot for clear button aria-label -->
46853
- <slot name="ariaLabel.input.clear" hidden @slotchange=${this.requestUpdate}></slot>
48989
+ <slot name="ariaLabel.input.clear" hidden @slotchange=${() => this.requestUpdate()}></slot>
46854
48990
 
46855
48991
  <${this.dropdownTag}
46856
48992
  appearance="${this.onDark ? 'inverse' : this.appearance}"
@@ -46867,6 +49003,7 @@ class AuroDatePicker extends AuroElement$6 {
46867
49003
  .shape="${this.shape}"
46868
49004
  .size="${this.size}"
46869
49005
  class="${e$3(dropdownElementClassMap)}"
49006
+ desktopModal
46870
49007
  disableEventShow
46871
49008
  for="dropdownMenu"
46872
49009
  part="dropdown"
@@ -50123,7 +52260,7 @@ function applyKeyboardStrategy$4(component, strategy, options = {}) {
50123
52260
  });
50124
52261
  }
50125
52262
 
50126
- var styleCss$2$6 = i$5`: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}`;
52263
+ var styleCss$2$6 = i$5`: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}`;
50127
52264
 
50128
52265
  var colorCss$2$6 = i$5`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
50129
52266
 
@@ -50754,7 +52891,7 @@ let AuroHelpText$7 = class AuroHelpText extends i$3 {
50754
52891
  }
50755
52892
  };
50756
52893
 
50757
- var formkitVersion$7 = '202606081518';
52894
+ var formkitVersion$7 = '202606081904';
50758
52895
 
50759
52896
  let AuroElement$5 = class AuroElement extends i$3 {
50760
52897
  static get properties() {
@@ -50934,6 +53071,7 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
50934
53071
  _intializeDefaults() {
50935
53072
  this.appearance = 'default';
50936
53073
  this.chevron = false;
53074
+ this.desktopModal = false;
50937
53075
  this.disabled = false;
50938
53076
  this.disableKeyboardHandling = false;
50939
53077
  this.error = false;
@@ -51114,6 +53252,14 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
51114
53252
  reflect: true
51115
53253
  },
51116
53254
 
53255
+ /**
53256
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
53257
+ */
53258
+ desktopModal: {
53259
+ type: Boolean,
53260
+ reflect: true
53261
+ },
53262
+
51117
53263
  /**
51118
53264
  * If declared, the dropdown will only show by calling the API .show() public method.
51119
53265
  */
@@ -51401,6 +53547,15 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
51401
53547
 
51402
53548
  disconnectedCallback() {
51403
53549
  super.disconnectedCallback();
53550
+ this._clearPageInert();
53551
+ if (this._bibTabHandler) {
53552
+ this.removeEventListener('keydown', this._bibTabHandler);
53553
+ this._bibTabHandler = undefined;
53554
+ }
53555
+ if (this.focusTrap) {
53556
+ this.focusTrap.disconnect();
53557
+ this.focusTrap = undefined;
53558
+ }
51404
53559
  if (this.floater) {
51405
53560
  this.floater.hideBib('disconnect');
51406
53561
  this.floater.disconnect();
@@ -51428,19 +53583,45 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
51428
53583
  if (this.isPopoverVisible) {
51429
53584
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
51430
53585
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
51431
- const useModal = this.isBibFullscreen;
51432
- this.bibElement.value.open(useModal);
53586
+ this.bibElement.value.open(this.isBibFullscreen);
53587
+ this.updateFocusTrap();
53588
+
53589
+ // Desktop modal: make siblings inert so content outside is not interactive
53590
+ if (this.desktopModal && !this.isBibFullscreen) {
53591
+ this._setPageInert();
53592
+ }
51433
53593
  } else {
51434
53594
  this.bibElement.value.close();
53595
+ this._clearPageInert();
51435
53596
  }
51436
53597
  }
51437
53598
 
51438
53599
  // When fullscreen strategy changes while open, re-open dialog with correct mode
51439
53600
  // (e.g. resizing from desktop → mobile while dropdown is open)
51440
53601
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
51441
- const useModal = this.isBibFullscreen;
51442
53602
  this.bibElement.value.close();
51443
- this.bibElement.value.open(useModal);
53603
+ this.bibElement.value.open(this.isBibFullscreen);
53604
+
53605
+ // Re-initialize focus management for the new strategy
53606
+ this.updateFocusTrap();
53607
+
53608
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
53609
+ if (this.desktopModal && !this.isBibFullscreen) {
53610
+ this._setPageInert();
53611
+ } else {
53612
+ this._clearPageInert();
53613
+ }
53614
+ }
53615
+
53616
+ // Handle desktopModal toggled while the dropdown is already open.
53617
+ // Re-initialize focus trapping and page inert state to match the new mode.
53618
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
53619
+ this.updateFocusTrap();
53620
+ if (this.desktopModal) {
53621
+ this._setPageInert();
53622
+ } else {
53623
+ this._clearPageInert();
53624
+ }
51444
53625
  }
51445
53626
  }
51446
53627
 
@@ -51450,8 +53631,14 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
51450
53631
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
51451
53632
  */
51452
53633
  handleDropdownToggle(event) {
51453
- this.updateFocusTrap();
51454
53634
  this.isPopoverVisible = event.detail.expanded;
53635
+
53636
+ // Tear down FocusTrap when closing. Creation happens in updated()
53637
+ // after the dialog is open so getFocusableElements can find content.
53638
+ if (!this.isPopoverVisible) {
53639
+ this.updateFocusTrap();
53640
+ }
53641
+
51455
53642
  const eventType = event.detail.eventType || "unknown";
51456
53643
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
51457
53644
  this.trigger.focus();
@@ -51550,19 +53737,194 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
51550
53737
  * @private
51551
53738
  */
51552
53739
  updateFocusTrap() {
53740
+ // Always clean up existing handlers/traps before setting up new ones
53741
+ // to prevent duplicate listeners on repeated calls.
53742
+ if (this._bibTabHandler) {
53743
+ this.removeEventListener('keydown', this._bibTabHandler);
53744
+ this._bibTabHandler = undefined;
53745
+ }
53746
+
53747
+ if (this.focusTrap) {
53748
+ this.focusTrap.disconnect();
53749
+ this.focusTrap = undefined;
53750
+ }
53751
+
51553
53752
  if (this.isPopoverVisible) {
51554
53753
  if (!this.isBibFullscreen) {
51555
- // Desktop: show() doesn't trap focus, so use FocusTrap
51556
- this.focusTrap = new FocusTrap$2(this.bibContent);
51557
- this.focusTrap.focusFirstElement();
53754
+ if (this.desktopModal) {
53755
+ // Desktop modal: trap focus only within the bib content.
53756
+ // Can't use FocusTrap on the bib element because keydown events
53757
+ // from slotted content bubble through the dropdown host (light DOM),
53758
+ // not through the bib (shadow projection target). Using FocusTrap
53759
+ // on the dropdown would include the trigger in the tab cycle.
53760
+ // Instead, listen for Tab on the dropdown and manually wrap focus
53761
+ // within the bib's focusable elements.
53762
+ this._bibTabHandler = (event) => {
53763
+ if (event.key !== 'Tab') {
53764
+ return;
53765
+ }
53766
+
53767
+ // Collect focusable elements from the bib content.
53768
+ const focusables = getFocusableElements$2(this.bibContent);
53769
+
53770
+ // Fallback: try from slotted content directly
53771
+ if (!focusables.length) {
53772
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
53773
+ const assignedNodes = slot.assignedNodes({ flatten: true });
53774
+
53775
+ for (const node of assignedNodes) {
53776
+ if (node.nodeType === Node.ELEMENT_NODE) {
53777
+ focusables.push(...getFocusableElements$2(node));
53778
+ }
53779
+ }
53780
+ }
53781
+
53782
+ if (!focusables.length) {
53783
+ return;
53784
+ }
53785
+
53786
+ event.preventDefault();
53787
+
53788
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
53789
+
53790
+ // Walk the active element chain through shadow roots
53791
+ const actives = this._getActiveElements();
53792
+
53793
+ let idx = focusables.findIndex((el) => actives.includes(el));
53794
+
53795
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
53796
+ // Focus is not on a known element — move to first/last
53797
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
53798
+ }
53799
+
53800
+ // Try each element in order, skipping any that can't receive focus
53801
+ // (e.g. hidden elements, elements in collapsed sections)
53802
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
53803
+ let nextIdx = idx + direction;
53804
+
53805
+ // Wrap around
53806
+ if (nextIdx < 0) {
53807
+ nextIdx = focusables.length - 1;
53808
+ } else if (nextIdx >= focusables.length) {
53809
+ nextIdx = 0;
53810
+ }
53811
+
53812
+ focusables[nextIdx].focus();
53813
+
53814
+ // Verify focus actually moved to the target
53815
+ const newActives = this._getActiveElements();
53816
+
53817
+ if (newActives.includes(focusables[nextIdx])) {
53818
+ return;
53819
+ }
53820
+
53821
+ // Focus didn't stick — skip this element and try the next
53822
+ idx = nextIdx;
53823
+ }
53824
+ };
53825
+ this.addEventListener('keydown', this._bibTabHandler);
53826
+
53827
+ // Move initial focus into the bib content, matching FocusTrap behavior
53828
+ requestAnimationFrame(() => {
53829
+ const focusables = getFocusableElements$2(this.bibContent);
53830
+ if (focusables.length) {
53831
+ focusables[0].focus();
53832
+ }
53833
+ });
53834
+ } else {
53835
+ // Normal desktop: use FocusTrap on the bib element
53836
+ this.focusTrap = new FocusTrap$2(this.bibContent);
53837
+ this.focusTrap.focusFirstElement();
53838
+ }
51558
53839
  }
51559
53840
  // Fullscreen: showModal() provides native focus trapping
53841
+ }
53842
+ }
53843
+
53844
+ /**
53845
+ * Returns the chain of active (focused) elements through shadow roots.
53846
+ * @private
53847
+ * @returns {Array<HTMLElement>}
53848
+ */
53849
+ _getActiveElements() {
53850
+ let { activeElement } = document;
53851
+ const actives = [activeElement];
53852
+
53853
+ while (activeElement?.shadowRoot?.activeElement) {
53854
+ activeElement = activeElement.shadowRoot.activeElement;
53855
+ actives.push(activeElement);
53856
+ }
53857
+
53858
+ return actives;
53859
+ }
53860
+
53861
+ /**
53862
+ * Sets `inert` on sibling elements of the dropdown's top-level host
53863
+ * so that content outside the dropdown is not interactive while the modal is open.
53864
+ * Walks up through shadow DOM boundaries to find the outermost host element
53865
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
53866
+ * to ensure all page content outside the host subtree is inert.
53867
+ * @private
53868
+ */
53869
+ _setPageInert() {
53870
+ if (this._inertSiblings) {
51560
53871
  return;
51561
53872
  }
51562
53873
 
51563
- if (this.focusTrap) {
51564
- this.focusTrap.disconnect();
51565
- this.focusTrap = undefined;
53874
+ this._inertSiblings = [];
53875
+
53876
+ // Walk up through shadow DOM boundaries to find the topmost host
53877
+ // element in the light DOM. For example, if this dropdown is inside
53878
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
53879
+ // so we set inert on its siblings — not on the datepicker itself.
53880
+ let host = this;
53881
+ while (host.getRootNode() instanceof ShadowRoot) {
53882
+ host = host.getRootNode().host;
53883
+ }
53884
+
53885
+ // Walk up the ancestor chain, inerting siblings at each level
53886
+ // to ensure the entire page outside the host subtree is inert.
53887
+ // Uses a reference counter (data-auro-inert-count) so multiple
53888
+ // simultaneous modal dropdowns share inert state safely.
53889
+ let current = host;
53890
+ while (current.parentElement) {
53891
+ const parent = current.parentElement;
53892
+ for (const sibling of parent.children) {
53893
+ if (sibling !== current) {
53894
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
53895
+ if (count === 0) {
53896
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
53897
+ }
53898
+ sibling.dataset.auroInertCount = String(count + 1);
53899
+ sibling.inert = true;
53900
+ this._inertSiblings.push(sibling);
53901
+ }
53902
+ }
53903
+ current = parent;
53904
+ }
53905
+ }
53906
+
53907
+ /**
53908
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
53909
+ * Uses reference counting so inert is only cleared when the last modal
53910
+ * dropdown releases a given element. Preserves the original inert state
53911
+ * so externally-inerted elements are not inadvertently re-enabled.
53912
+ * @private
53913
+ */
53914
+ _clearPageInert() {
53915
+ if (this._inertSiblings) {
53916
+ for (const sibling of this._inertSiblings) {
53917
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
53918
+ if (count <= 0) {
53919
+ const wasInert = sibling.dataset.auroInertWas === 'true';
53920
+ delete sibling.dataset.auroInertCount;
53921
+ delete sibling.dataset.auroInertWas;
53922
+ sibling.inert = wasInert;
53923
+ } else {
53924
+ sibling.dataset.auroInertCount = String(count);
53925
+ }
53926
+ }
53927
+ this._inertSiblings = undefined;
51566
53928
  }
51567
53929
  }
51568
53930
 
@@ -51801,6 +54163,7 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
51801
54163
  shape="${this.shape}"
51802
54164
  ?data-show="${this.isPopoverVisible}"
51803
54165
  ?isfullscreen="${this.isBibFullscreen}"
54166
+ ?desktopmodal="${this.desktopModal}"
51804
54167
  .dialogLabel="${this.bibDialogLabel}"
51805
54168
  ${n$6(this.bibElement)}
51806
54169
  >
@@ -52933,7 +55296,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$3 {
52933
55296
  }
52934
55297
  };
52935
55298
 
52936
- var formkitVersion$6 = '202606081518';
55299
+ var formkitVersion$6 = '202606081904';
52937
55300
 
52938
55301
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
52939
55302
  // See LICENSE in the project root for license information.
@@ -53671,6 +56034,14 @@ let AuroBibtemplate$2 = class AuroBibtemplate extends i$3 {
53671
56034
  large: {
53672
56035
  type: Boolean,
53673
56036
  reflect: true
56037
+ },
56038
+
56039
+ /**
56040
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
56041
+ */
56042
+ showFooter: {
56043
+ type: Boolean,
56044
+ reflect: true
53674
56045
  }
53675
56046
  };
53676
56047
  }
@@ -53773,7 +56144,7 @@ let AuroBibtemplate$2 = class AuroBibtemplate extends i$3 {
53773
56144
  <slot></slot>
53774
56145
  </div>
53775
56146
 
53776
- ${this.isFullscreen ? u$d`
56147
+ ${this.isFullscreen || this.showFooter ? u$d`
53777
56148
  <div id="footerContainer">
53778
56149
  <slot name="footer"></slot>
53779
56150
  </div>` : null}
@@ -55929,7 +58300,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$3 {
55929
58300
  }
55930
58301
  };
55931
58302
 
55932
- var formkitVersion$5 = '202606081518';
58303
+ var formkitVersion$5 = '202606081904';
55933
58304
 
55934
58305
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
55935
58306
  // See LICENSE in the project root for license information.
@@ -57679,7 +60050,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$3 {
57679
60050
  }
57680
60051
  };
57681
60052
 
57682
- var formkitVersion$4 = '202606081518';
60053
+ var formkitVersion$4 = '202606081904';
57683
60054
 
57684
60055
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
57685
60056
  // See LICENSE in the project root for license information.
@@ -62246,7 +64617,7 @@ function applyKeyboardStrategy$2(component, strategy, options = {}) {
62246
64617
  });
62247
64618
  }
62248
64619
 
62249
- var styleCss$2$1$1 = i$5`: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}`;
64620
+ var styleCss$2$1$1 = i$5`: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}`;
62250
64621
 
62251
64622
  var colorCss$2$1 = i$5`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
62252
64623
 
@@ -62877,7 +65248,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
62877
65248
  }
62878
65249
  };
62879
65250
 
62880
- var formkitVersion$2 = '202606081518';
65251
+ var formkitVersion$2 = '202606081904';
62881
65252
 
62882
65253
  let AuroElement$2$1 = class AuroElement extends i$3 {
62883
65254
  static get properties() {
@@ -63057,6 +65428,7 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
63057
65428
  _intializeDefaults() {
63058
65429
  this.appearance = 'default';
63059
65430
  this.chevron = false;
65431
+ this.desktopModal = false;
63060
65432
  this.disabled = false;
63061
65433
  this.disableKeyboardHandling = false;
63062
65434
  this.error = false;
@@ -63237,6 +65609,14 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
63237
65609
  reflect: true
63238
65610
  },
63239
65611
 
65612
+ /**
65613
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
65614
+ */
65615
+ desktopModal: {
65616
+ type: Boolean,
65617
+ reflect: true
65618
+ },
65619
+
63240
65620
  /**
63241
65621
  * If declared, the dropdown will only show by calling the API .show() public method.
63242
65622
  */
@@ -63524,6 +65904,15 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
63524
65904
 
63525
65905
  disconnectedCallback() {
63526
65906
  super.disconnectedCallback();
65907
+ this._clearPageInert();
65908
+ if (this._bibTabHandler) {
65909
+ this.removeEventListener('keydown', this._bibTabHandler);
65910
+ this._bibTabHandler = undefined;
65911
+ }
65912
+ if (this.focusTrap) {
65913
+ this.focusTrap.disconnect();
65914
+ this.focusTrap = undefined;
65915
+ }
63527
65916
  if (this.floater) {
63528
65917
  this.floater.hideBib('disconnect');
63529
65918
  this.floater.disconnect();
@@ -63551,19 +65940,45 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
63551
65940
  if (this.isPopoverVisible) {
63552
65941
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
63553
65942
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
63554
- const useModal = this.isBibFullscreen;
63555
- this.bibElement.value.open(useModal);
65943
+ this.bibElement.value.open(this.isBibFullscreen);
65944
+ this.updateFocusTrap();
65945
+
65946
+ // Desktop modal: make siblings inert so content outside is not interactive
65947
+ if (this.desktopModal && !this.isBibFullscreen) {
65948
+ this._setPageInert();
65949
+ }
63556
65950
  } else {
63557
65951
  this.bibElement.value.close();
65952
+ this._clearPageInert();
63558
65953
  }
63559
65954
  }
63560
65955
 
63561
65956
  // When fullscreen strategy changes while open, re-open dialog with correct mode
63562
65957
  // (e.g. resizing from desktop → mobile while dropdown is open)
63563
65958
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
63564
- const useModal = this.isBibFullscreen;
63565
65959
  this.bibElement.value.close();
63566
- this.bibElement.value.open(useModal);
65960
+ this.bibElement.value.open(this.isBibFullscreen);
65961
+
65962
+ // Re-initialize focus management for the new strategy
65963
+ this.updateFocusTrap();
65964
+
65965
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
65966
+ if (this.desktopModal && !this.isBibFullscreen) {
65967
+ this._setPageInert();
65968
+ } else {
65969
+ this._clearPageInert();
65970
+ }
65971
+ }
65972
+
65973
+ // Handle desktopModal toggled while the dropdown is already open.
65974
+ // Re-initialize focus trapping and page inert state to match the new mode.
65975
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
65976
+ this.updateFocusTrap();
65977
+ if (this.desktopModal) {
65978
+ this._setPageInert();
65979
+ } else {
65980
+ this._clearPageInert();
65981
+ }
63567
65982
  }
63568
65983
  }
63569
65984
 
@@ -63573,8 +65988,14 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
63573
65988
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
63574
65989
  */
63575
65990
  handleDropdownToggle(event) {
63576
- this.updateFocusTrap();
63577
65991
  this.isPopoverVisible = event.detail.expanded;
65992
+
65993
+ // Tear down FocusTrap when closing. Creation happens in updated()
65994
+ // after the dialog is open so getFocusableElements can find content.
65995
+ if (!this.isPopoverVisible) {
65996
+ this.updateFocusTrap();
65997
+ }
65998
+
63578
65999
  const eventType = event.detail.eventType || "unknown";
63579
66000
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
63580
66001
  this.trigger.focus();
@@ -63673,19 +66094,194 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
63673
66094
  * @private
63674
66095
  */
63675
66096
  updateFocusTrap() {
66097
+ // Always clean up existing handlers/traps before setting up new ones
66098
+ // to prevent duplicate listeners on repeated calls.
66099
+ if (this._bibTabHandler) {
66100
+ this.removeEventListener('keydown', this._bibTabHandler);
66101
+ this._bibTabHandler = undefined;
66102
+ }
66103
+
66104
+ if (this.focusTrap) {
66105
+ this.focusTrap.disconnect();
66106
+ this.focusTrap = undefined;
66107
+ }
66108
+
63676
66109
  if (this.isPopoverVisible) {
63677
66110
  if (!this.isBibFullscreen) {
63678
- // Desktop: show() doesn't trap focus, so use FocusTrap
63679
- this.focusTrap = new FocusTrap$1(this.bibContent);
63680
- this.focusTrap.focusFirstElement();
66111
+ if (this.desktopModal) {
66112
+ // Desktop modal: trap focus only within the bib content.
66113
+ // Can't use FocusTrap on the bib element because keydown events
66114
+ // from slotted content bubble through the dropdown host (light DOM),
66115
+ // not through the bib (shadow projection target). Using FocusTrap
66116
+ // on the dropdown would include the trigger in the tab cycle.
66117
+ // Instead, listen for Tab on the dropdown and manually wrap focus
66118
+ // within the bib's focusable elements.
66119
+ this._bibTabHandler = (event) => {
66120
+ if (event.key !== 'Tab') {
66121
+ return;
66122
+ }
66123
+
66124
+ // Collect focusable elements from the bib content.
66125
+ const focusables = getFocusableElements$1(this.bibContent);
66126
+
66127
+ // Fallback: try from slotted content directly
66128
+ if (!focusables.length) {
66129
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
66130
+ const assignedNodes = slot.assignedNodes({ flatten: true });
66131
+
66132
+ for (const node of assignedNodes) {
66133
+ if (node.nodeType === Node.ELEMENT_NODE) {
66134
+ focusables.push(...getFocusableElements$1(node));
66135
+ }
66136
+ }
66137
+ }
66138
+
66139
+ if (!focusables.length) {
66140
+ return;
66141
+ }
66142
+
66143
+ event.preventDefault();
66144
+
66145
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
66146
+
66147
+ // Walk the active element chain through shadow roots
66148
+ const actives = this._getActiveElements();
66149
+
66150
+ let idx = focusables.findIndex((el) => actives.includes(el));
66151
+
66152
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
66153
+ // Focus is not on a known element — move to first/last
66154
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
66155
+ }
66156
+
66157
+ // Try each element in order, skipping any that can't receive focus
66158
+ // (e.g. hidden elements, elements in collapsed sections)
66159
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
66160
+ let nextIdx = idx + direction;
66161
+
66162
+ // Wrap around
66163
+ if (nextIdx < 0) {
66164
+ nextIdx = focusables.length - 1;
66165
+ } else if (nextIdx >= focusables.length) {
66166
+ nextIdx = 0;
66167
+ }
66168
+
66169
+ focusables[nextIdx].focus();
66170
+
66171
+ // Verify focus actually moved to the target
66172
+ const newActives = this._getActiveElements();
66173
+
66174
+ if (newActives.includes(focusables[nextIdx])) {
66175
+ return;
66176
+ }
66177
+
66178
+ // Focus didn't stick — skip this element and try the next
66179
+ idx = nextIdx;
66180
+ }
66181
+ };
66182
+ this.addEventListener('keydown', this._bibTabHandler);
66183
+
66184
+ // Move initial focus into the bib content, matching FocusTrap behavior
66185
+ requestAnimationFrame(() => {
66186
+ const focusables = getFocusableElements$1(this.bibContent);
66187
+ if (focusables.length) {
66188
+ focusables[0].focus();
66189
+ }
66190
+ });
66191
+ } else {
66192
+ // Normal desktop: use FocusTrap on the bib element
66193
+ this.focusTrap = new FocusTrap$1(this.bibContent);
66194
+ this.focusTrap.focusFirstElement();
66195
+ }
63681
66196
  }
63682
66197
  // Fullscreen: showModal() provides native focus trapping
66198
+ }
66199
+ }
66200
+
66201
+ /**
66202
+ * Returns the chain of active (focused) elements through shadow roots.
66203
+ * @private
66204
+ * @returns {Array<HTMLElement>}
66205
+ */
66206
+ _getActiveElements() {
66207
+ let { activeElement } = document;
66208
+ const actives = [activeElement];
66209
+
66210
+ while (activeElement?.shadowRoot?.activeElement) {
66211
+ activeElement = activeElement.shadowRoot.activeElement;
66212
+ actives.push(activeElement);
66213
+ }
66214
+
66215
+ return actives;
66216
+ }
66217
+
66218
+ /**
66219
+ * Sets `inert` on sibling elements of the dropdown's top-level host
66220
+ * so that content outside the dropdown is not interactive while the modal is open.
66221
+ * Walks up through shadow DOM boundaries to find the outermost host element
66222
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
66223
+ * to ensure all page content outside the host subtree is inert.
66224
+ * @private
66225
+ */
66226
+ _setPageInert() {
66227
+ if (this._inertSiblings) {
63683
66228
  return;
63684
66229
  }
63685
66230
 
63686
- if (this.focusTrap) {
63687
- this.focusTrap.disconnect();
63688
- this.focusTrap = undefined;
66231
+ this._inertSiblings = [];
66232
+
66233
+ // Walk up through shadow DOM boundaries to find the topmost host
66234
+ // element in the light DOM. For example, if this dropdown is inside
66235
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
66236
+ // so we set inert on its siblings — not on the datepicker itself.
66237
+ let host = this;
66238
+ while (host.getRootNode() instanceof ShadowRoot) {
66239
+ host = host.getRootNode().host;
66240
+ }
66241
+
66242
+ // Walk up the ancestor chain, inerting siblings at each level
66243
+ // to ensure the entire page outside the host subtree is inert.
66244
+ // Uses a reference counter (data-auro-inert-count) so multiple
66245
+ // simultaneous modal dropdowns share inert state safely.
66246
+ let current = host;
66247
+ while (current.parentElement) {
66248
+ const parent = current.parentElement;
66249
+ for (const sibling of parent.children) {
66250
+ if (sibling !== current) {
66251
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
66252
+ if (count === 0) {
66253
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
66254
+ }
66255
+ sibling.dataset.auroInertCount = String(count + 1);
66256
+ sibling.inert = true;
66257
+ this._inertSiblings.push(sibling);
66258
+ }
66259
+ }
66260
+ current = parent;
66261
+ }
66262
+ }
66263
+
66264
+ /**
66265
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
66266
+ * Uses reference counting so inert is only cleared when the last modal
66267
+ * dropdown releases a given element. Preserves the original inert state
66268
+ * so externally-inerted elements are not inadvertently re-enabled.
66269
+ * @private
66270
+ */
66271
+ _clearPageInert() {
66272
+ if (this._inertSiblings) {
66273
+ for (const sibling of this._inertSiblings) {
66274
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
66275
+ if (count <= 0) {
66276
+ const wasInert = sibling.dataset.auroInertWas === 'true';
66277
+ delete sibling.dataset.auroInertCount;
66278
+ delete sibling.dataset.auroInertWas;
66279
+ sibling.inert = wasInert;
66280
+ } else {
66281
+ sibling.dataset.auroInertCount = String(count);
66282
+ }
66283
+ }
66284
+ this._inertSiblings = undefined;
63689
66285
  }
63690
66286
  }
63691
66287
 
@@ -63924,6 +66520,7 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
63924
66520
  shape="${this.shape}"
63925
66521
  ?data-show="${this.isPopoverVisible}"
63926
66522
  ?isfullscreen="${this.isBibFullscreen}"
66523
+ ?desktopmodal="${this.desktopModal}"
63927
66524
  .dialogLabel="${this.bibDialogLabel}"
63928
66525
  ${n$6(this.bibElement)}
63929
66526
  >
@@ -76128,7 +78725,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$3 {
76128
78725
  }
76129
78726
  };
76130
78727
 
76131
- var formkitVersion$1$1 = '202606081518';
78728
+ var formkitVersion$1$1 = '202606081904';
76132
78729
 
76133
78730
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
76134
78731
  // See LICENSE in the project root for license information.
@@ -77134,6 +79731,14 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$3 {
77134
79731
  large: {
77135
79732
  type: Boolean,
77136
79733
  reflect: true
79734
+ },
79735
+
79736
+ /**
79737
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
79738
+ */
79739
+ showFooter: {
79740
+ type: Boolean,
79741
+ reflect: true
77137
79742
  }
77138
79743
  };
77139
79744
  }
@@ -77236,7 +79841,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$3 {
77236
79841
  <slot></slot>
77237
79842
  </div>
77238
79843
 
77239
- ${this.isFullscreen ? u$d`
79844
+ ${this.isFullscreen || this.showFooter ? u$d`
77240
79845
  <div id="footerContainer">
77241
79846
  <slot name="footer"></slot>
77242
79847
  </div>` : null}
@@ -77245,7 +79850,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$3 {
77245
79850
  }
77246
79851
  };
77247
79852
 
77248
- var formkitVersion$3 = '202606081518';
79853
+ var formkitVersion$3 = '202606081904';
77249
79854
 
77250
79855
  var styleCss$1$3 = i$5`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
77251
79856
 
@@ -85684,7 +88289,7 @@ function applyKeyboardStrategy(component, strategy, options = {}) {
85684
88289
  });
85685
88290
  }
85686
88291
 
85687
- var styleCss$2$1 = i$5`: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}`;
88292
+ var styleCss$2$1 = i$5`: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}`;
85688
88293
 
85689
88294
  var colorCss$2 = i$5`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
85690
88295
 
@@ -86315,7 +88920,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
86315
88920
  }
86316
88921
  };
86317
88922
 
86318
- var formkitVersion$1 = '202606081518';
88923
+ var formkitVersion$1 = '202606081904';
86319
88924
 
86320
88925
  class AuroElement extends i$3 {
86321
88926
  static get properties() {
@@ -86495,6 +89100,7 @@ class AuroDropdown extends AuroElement {
86495
89100
  _intializeDefaults() {
86496
89101
  this.appearance = 'default';
86497
89102
  this.chevron = false;
89103
+ this.desktopModal = false;
86498
89104
  this.disabled = false;
86499
89105
  this.disableKeyboardHandling = false;
86500
89106
  this.error = false;
@@ -86675,6 +89281,14 @@ class AuroDropdown extends AuroElement {
86675
89281
  reflect: true
86676
89282
  },
86677
89283
 
89284
+ /**
89285
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
89286
+ */
89287
+ desktopModal: {
89288
+ type: Boolean,
89289
+ reflect: true
89290
+ },
89291
+
86678
89292
  /**
86679
89293
  * If declared, the dropdown will only show by calling the API .show() public method.
86680
89294
  */
@@ -86962,6 +89576,15 @@ class AuroDropdown extends AuroElement {
86962
89576
 
86963
89577
  disconnectedCallback() {
86964
89578
  super.disconnectedCallback();
89579
+ this._clearPageInert();
89580
+ if (this._bibTabHandler) {
89581
+ this.removeEventListener('keydown', this._bibTabHandler);
89582
+ this._bibTabHandler = undefined;
89583
+ }
89584
+ if (this.focusTrap) {
89585
+ this.focusTrap.disconnect();
89586
+ this.focusTrap = undefined;
89587
+ }
86965
89588
  if (this.floater) {
86966
89589
  this.floater.hideBib('disconnect');
86967
89590
  this.floater.disconnect();
@@ -86989,19 +89612,45 @@ class AuroDropdown extends AuroElement {
86989
89612
  if (this.isPopoverVisible) {
86990
89613
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
86991
89614
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
86992
- const useModal = this.isBibFullscreen;
86993
- this.bibElement.value.open(useModal);
89615
+ this.bibElement.value.open(this.isBibFullscreen);
89616
+ this.updateFocusTrap();
89617
+
89618
+ // Desktop modal: make siblings inert so content outside is not interactive
89619
+ if (this.desktopModal && !this.isBibFullscreen) {
89620
+ this._setPageInert();
89621
+ }
86994
89622
  } else {
86995
89623
  this.bibElement.value.close();
89624
+ this._clearPageInert();
86996
89625
  }
86997
89626
  }
86998
89627
 
86999
89628
  // When fullscreen strategy changes while open, re-open dialog with correct mode
87000
89629
  // (e.g. resizing from desktop → mobile while dropdown is open)
87001
89630
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
87002
- const useModal = this.isBibFullscreen;
87003
89631
  this.bibElement.value.close();
87004
- this.bibElement.value.open(useModal);
89632
+ this.bibElement.value.open(this.isBibFullscreen);
89633
+
89634
+ // Re-initialize focus management for the new strategy
89635
+ this.updateFocusTrap();
89636
+
89637
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
89638
+ if (this.desktopModal && !this.isBibFullscreen) {
89639
+ this._setPageInert();
89640
+ } else {
89641
+ this._clearPageInert();
89642
+ }
89643
+ }
89644
+
89645
+ // Handle desktopModal toggled while the dropdown is already open.
89646
+ // Re-initialize focus trapping and page inert state to match the new mode.
89647
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
89648
+ this.updateFocusTrap();
89649
+ if (this.desktopModal) {
89650
+ this._setPageInert();
89651
+ } else {
89652
+ this._clearPageInert();
89653
+ }
87005
89654
  }
87006
89655
  }
87007
89656
 
@@ -87011,8 +89660,14 @@ class AuroDropdown extends AuroElement {
87011
89660
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
87012
89661
  */
87013
89662
  handleDropdownToggle(event) {
87014
- this.updateFocusTrap();
87015
89663
  this.isPopoverVisible = event.detail.expanded;
89664
+
89665
+ // Tear down FocusTrap when closing. Creation happens in updated()
89666
+ // after the dialog is open so getFocusableElements can find content.
89667
+ if (!this.isPopoverVisible) {
89668
+ this.updateFocusTrap();
89669
+ }
89670
+
87016
89671
  const eventType = event.detail.eventType || "unknown";
87017
89672
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
87018
89673
  this.trigger.focus();
@@ -87111,19 +89766,194 @@ class AuroDropdown extends AuroElement {
87111
89766
  * @private
87112
89767
  */
87113
89768
  updateFocusTrap() {
89769
+ // Always clean up existing handlers/traps before setting up new ones
89770
+ // to prevent duplicate listeners on repeated calls.
89771
+ if (this._bibTabHandler) {
89772
+ this.removeEventListener('keydown', this._bibTabHandler);
89773
+ this._bibTabHandler = undefined;
89774
+ }
89775
+
89776
+ if (this.focusTrap) {
89777
+ this.focusTrap.disconnect();
89778
+ this.focusTrap = undefined;
89779
+ }
89780
+
87114
89781
  if (this.isPopoverVisible) {
87115
89782
  if (!this.isBibFullscreen) {
87116
- // Desktop: show() doesn't trap focus, so use FocusTrap
87117
- this.focusTrap = new FocusTrap(this.bibContent);
87118
- this.focusTrap.focusFirstElement();
89783
+ if (this.desktopModal) {
89784
+ // Desktop modal: trap focus only within the bib content.
89785
+ // Can't use FocusTrap on the bib element because keydown events
89786
+ // from slotted content bubble through the dropdown host (light DOM),
89787
+ // not through the bib (shadow projection target). Using FocusTrap
89788
+ // on the dropdown would include the trigger in the tab cycle.
89789
+ // Instead, listen for Tab on the dropdown and manually wrap focus
89790
+ // within the bib's focusable elements.
89791
+ this._bibTabHandler = (event) => {
89792
+ if (event.key !== 'Tab') {
89793
+ return;
89794
+ }
89795
+
89796
+ // Collect focusable elements from the bib content.
89797
+ const focusables = getFocusableElements(this.bibContent);
89798
+
89799
+ // Fallback: try from slotted content directly
89800
+ if (!focusables.length) {
89801
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
89802
+ const assignedNodes = slot.assignedNodes({ flatten: true });
89803
+
89804
+ for (const node of assignedNodes) {
89805
+ if (node.nodeType === Node.ELEMENT_NODE) {
89806
+ focusables.push(...getFocusableElements(node));
89807
+ }
89808
+ }
89809
+ }
89810
+
89811
+ if (!focusables.length) {
89812
+ return;
89813
+ }
89814
+
89815
+ event.preventDefault();
89816
+
89817
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
89818
+
89819
+ // Walk the active element chain through shadow roots
89820
+ const actives = this._getActiveElements();
89821
+
89822
+ let idx = focusables.findIndex((el) => actives.includes(el));
89823
+
89824
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
89825
+ // Focus is not on a known element — move to first/last
89826
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
89827
+ }
89828
+
89829
+ // Try each element in order, skipping any that can't receive focus
89830
+ // (e.g. hidden elements, elements in collapsed sections)
89831
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
89832
+ let nextIdx = idx + direction;
89833
+
89834
+ // Wrap around
89835
+ if (nextIdx < 0) {
89836
+ nextIdx = focusables.length - 1;
89837
+ } else if (nextIdx >= focusables.length) {
89838
+ nextIdx = 0;
89839
+ }
89840
+
89841
+ focusables[nextIdx].focus();
89842
+
89843
+ // Verify focus actually moved to the target
89844
+ const newActives = this._getActiveElements();
89845
+
89846
+ if (newActives.includes(focusables[nextIdx])) {
89847
+ return;
89848
+ }
89849
+
89850
+ // Focus didn't stick — skip this element and try the next
89851
+ idx = nextIdx;
89852
+ }
89853
+ };
89854
+ this.addEventListener('keydown', this._bibTabHandler);
89855
+
89856
+ // Move initial focus into the bib content, matching FocusTrap behavior
89857
+ requestAnimationFrame(() => {
89858
+ const focusables = getFocusableElements(this.bibContent);
89859
+ if (focusables.length) {
89860
+ focusables[0].focus();
89861
+ }
89862
+ });
89863
+ } else {
89864
+ // Normal desktop: use FocusTrap on the bib element
89865
+ this.focusTrap = new FocusTrap(this.bibContent);
89866
+ this.focusTrap.focusFirstElement();
89867
+ }
87119
89868
  }
87120
89869
  // Fullscreen: showModal() provides native focus trapping
89870
+ }
89871
+ }
89872
+
89873
+ /**
89874
+ * Returns the chain of active (focused) elements through shadow roots.
89875
+ * @private
89876
+ * @returns {Array<HTMLElement>}
89877
+ */
89878
+ _getActiveElements() {
89879
+ let { activeElement } = document;
89880
+ const actives = [activeElement];
89881
+
89882
+ while (activeElement?.shadowRoot?.activeElement) {
89883
+ activeElement = activeElement.shadowRoot.activeElement;
89884
+ actives.push(activeElement);
89885
+ }
89886
+
89887
+ return actives;
89888
+ }
89889
+
89890
+ /**
89891
+ * Sets `inert` on sibling elements of the dropdown's top-level host
89892
+ * so that content outside the dropdown is not interactive while the modal is open.
89893
+ * Walks up through shadow DOM boundaries to find the outermost host element
89894
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
89895
+ * to ensure all page content outside the host subtree is inert.
89896
+ * @private
89897
+ */
89898
+ _setPageInert() {
89899
+ if (this._inertSiblings) {
87121
89900
  return;
87122
89901
  }
87123
89902
 
87124
- if (this.focusTrap) {
87125
- this.focusTrap.disconnect();
87126
- this.focusTrap = undefined;
89903
+ this._inertSiblings = [];
89904
+
89905
+ // Walk up through shadow DOM boundaries to find the topmost host
89906
+ // element in the light DOM. For example, if this dropdown is inside
89907
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
89908
+ // so we set inert on its siblings — not on the datepicker itself.
89909
+ let host = this;
89910
+ while (host.getRootNode() instanceof ShadowRoot) {
89911
+ host = host.getRootNode().host;
89912
+ }
89913
+
89914
+ // Walk up the ancestor chain, inerting siblings at each level
89915
+ // to ensure the entire page outside the host subtree is inert.
89916
+ // Uses a reference counter (data-auro-inert-count) so multiple
89917
+ // simultaneous modal dropdowns share inert state safely.
89918
+ let current = host;
89919
+ while (current.parentElement) {
89920
+ const parent = current.parentElement;
89921
+ for (const sibling of parent.children) {
89922
+ if (sibling !== current) {
89923
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
89924
+ if (count === 0) {
89925
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
89926
+ }
89927
+ sibling.dataset.auroInertCount = String(count + 1);
89928
+ sibling.inert = true;
89929
+ this._inertSiblings.push(sibling);
89930
+ }
89931
+ }
89932
+ current = parent;
89933
+ }
89934
+ }
89935
+
89936
+ /**
89937
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
89938
+ * Uses reference counting so inert is only cleared when the last modal
89939
+ * dropdown releases a given element. Preserves the original inert state
89940
+ * so externally-inerted elements are not inadvertently re-enabled.
89941
+ * @private
89942
+ */
89943
+ _clearPageInert() {
89944
+ if (this._inertSiblings) {
89945
+ for (const sibling of this._inertSiblings) {
89946
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
89947
+ if (count <= 0) {
89948
+ const wasInert = sibling.dataset.auroInertWas === 'true';
89949
+ delete sibling.dataset.auroInertCount;
89950
+ delete sibling.dataset.auroInertWas;
89951
+ sibling.inert = wasInert;
89952
+ } else {
89953
+ sibling.dataset.auroInertCount = String(count);
89954
+ }
89955
+ }
89956
+ this._inertSiblings = undefined;
87127
89957
  }
87128
89958
  }
87129
89959
 
@@ -87362,6 +90192,7 @@ class AuroDropdown extends AuroElement {
87362
90192
  shape="${this.shape}"
87363
90193
  ?data-show="${this.isPopoverVisible}"
87364
90194
  ?isfullscreen="${this.isBibFullscreen}"
90195
+ ?desktopmodal="${this.desktopModal}"
87365
90196
  .dialogLabel="${this.bibDialogLabel}"
87366
90197
  ${n$6(this.bibElement)}
87367
90198
  >
@@ -87729,6 +90560,14 @@ class AuroBibtemplate extends i$3 {
87729
90560
  large: {
87730
90561
  type: Boolean,
87731
90562
  reflect: true
90563
+ },
90564
+
90565
+ /**
90566
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
90567
+ */
90568
+ showFooter: {
90569
+ type: Boolean,
90570
+ reflect: true
87732
90571
  }
87733
90572
  };
87734
90573
  }
@@ -87831,7 +90670,7 @@ class AuroBibtemplate extends i$3 {
87831
90670
  <slot></slot>
87832
90671
  </div>
87833
90672
 
87834
- ${this.isFullscreen ? u$d`
90673
+ ${this.isFullscreen || this.showFooter ? u$d`
87835
90674
  <div id="footerContainer">
87836
90675
  <slot name="footer"></slot>
87837
90676
  </div>` : null}
@@ -88068,7 +90907,7 @@ class AuroHelpText extends i$3 {
88068
90907
  }
88069
90908
  }
88070
90909
 
88071
- var formkitVersion = '202606081518';
90910
+ var formkitVersion = '202606081904';
88072
90911
 
88073
90912
  var styleCss = i$5`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );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-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, 300);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, 300);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, 0.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, 0.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, 0.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, 0.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, 0.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, 0.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(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
88074
90913