@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
@@ -12964,7 +12964,7 @@ let AuroHelpText$9 = class AuroHelpText extends i$4 {
12964
12964
  }
12965
12965
  };
12966
12966
 
12967
- var formkitVersion$9 = '202606081518';
12967
+ var formkitVersion$9 = '202606081904';
12968
12968
 
12969
12969
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12970
12970
  // See LICENSE in the project root for license information.
@@ -24291,6 +24291,7 @@ class UtilitiesCalendarRender {
24291
24291
  updateCentralDate(elem, date) {
24292
24292
  // if date is already iso formatted string, we can skip the conversion and validation step
24293
24293
  if (typeof date === 'string' && dateFormatter$1.isValidDate(date)) {
24294
+ // eslint-disable-next-line
24294
24295
  elem.centralDate = date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$1-$2-01'); // Set to first of the month
24295
24296
  return;
24296
24297
  }
@@ -24375,13 +24376,10 @@ class UtilitiesCalendarRender {
24375
24376
  // 2. Start by assuming we can render the max number of months.
24376
24377
  let calendarCount = maxRenderableMonths;
24377
24378
 
24378
- // 3. If we didn't get a count early, restrict based on min/max date.
24379
+ // 3. If maximumRenderableMonths() returns 0 (e.g. an invalid/empty defined range),
24380
+ // fall back to the min/max date range so something is rendered.
24379
24381
  if (!calendarCount && elem.minDate && elem.maxDate) {
24380
- const monthsInRange = this.util.monthDiff(dateFormatter$1.stringToDateInstance(elem.minDate), dateFormatter$1.stringToDateInstance(elem.maxDate));
24381
-
24382
- if (monthsInRange < maxRenderableMonths) {
24383
- calendarCount = monthsInRange;
24384
- }
24382
+ calendarCount = this.util.monthDiff(elem.minDateObject, elem.maxDateObject);
24385
24383
  }
24386
24384
 
24387
24385
  if (elem.numCalendars !== calendarCount) {
@@ -24429,7 +24427,6 @@ class UtilitiesCalendarRender {
24429
24427
  .max="${elem.max}"
24430
24428
  ?noRange="${elem.noRange}"
24431
24429
  .monthFirst="${elem.monthFirst}"
24432
- .hoveredDate="${elem.hoveredDate}"
24433
24430
  .dateTo="${elem.dateTo}"
24434
24431
  .dateFrom="${elem.dateFrom}"
24435
24432
  .locale="${elem.locale}"
@@ -24462,11 +24459,11 @@ var snowflakeStyle = i$7`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
24462
24459
 
24463
24460
  var snowflakeColors = i$7`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
24464
24461
 
24465
- var styleCss$7$1 = i$7`.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:""}`;
24462
+ var styleCss$7$1 = i$7`.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}`;
24466
24463
 
24467
24464
  var colorCss$7$1 = i$7`.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)}}`;
24468
24465
 
24469
- var styleCss$6$1 = i$7`: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%}`;
24466
+ var styleCss$6$1 = i$7`: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)}`;
24470
24467
 
24471
24468
  var colorCss$6$1 = i$7`: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)}`;
24472
24469
 
@@ -25221,41 +25218,45 @@ __decorate([n$5({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
25221
25218
  __decorate([n$5({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
25222
25219
  AuroLibraryRuntimeUtils$5$1.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
25223
25220
 
25224
- var styleCss$5$1 = i$7`.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}}`;
25221
+ var styleCss$5$1 = i$7`.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}`;
25225
25222
 
25226
- var colorCss$5$1 = i$7`: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}`;
25223
+ var colorCss$5$1 = i$7`: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}`;
25227
25224
 
25228
- 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$7`::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)}
25225
+ 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$7`::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)}
25229
25226
  `,xe=i$7`.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:""}
25230
25227
  `,Se=i$7`: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)}
25231
- `;class _e extends i$4{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$7`${xe}`,i$7`${be}`,i$7`${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$7`
25232
- <div id="popover" class="popover util_insetLg body-default" part="popover">
25228
+ `;class _e extends i$4{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$7`${xe}`,i$7`${be}`,i$7`${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$7`
25229
+ <div
25230
+ id="popover"
25231
+ class="popover util_insetLg body-default"
25232
+ part="popover"
25233
+ role="tooltip"
25234
+ aria-hidden="${this.isPopoverVisible?"false":"true"}">
25233
25235
  <div id="arrow" class="arrow" data-popper-arrow></div>
25234
- <span role="tooltip"><slot></slot></span>
25236
+ <slot></slot>
25235
25237
  </div>
25236
25238
 
25237
- <span>
25239
+ <span role="presentation">
25238
25240
  <slot name="trigger" data-trigger-placement="${this.placement}"></slot>
25239
25241
  </span>
25240
25242
  `}}
25241
25243
 
25242
25244
  var popoverVersion = '6.0.1';
25243
25245
 
25246
+ /* 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 */
25247
+
25244
25248
  const startOfDay$1 = (ms) => {
25245
25249
  const date = new Date(ms);
25246
25250
  date.setHours(0, 0, 0, 0);
25247
25251
  return date.getTime();
25248
25252
  };
25249
25253
 
25250
- /* 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 */
25251
-
25252
25254
  class AuroCalendarCell extends i$4 {
25253
25255
  constructor() {
25254
25256
  super();
25255
25257
 
25256
25258
  this.day = null;
25257
25259
  this.selected = false;
25258
- this.hovered = false;
25259
25260
  this.dateTo = null;
25260
25261
  this.dateFrom = null;
25261
25262
  this.month = null;
@@ -25263,11 +25264,12 @@ class AuroCalendarCell extends i$4 {
25263
25264
  this.max = null;
25264
25265
  this.disabled = false;
25265
25266
  this.disabledDays = [];
25266
- this.hoveredDate = null;
25267
25267
  this.isCurrentDate = false;
25268
25268
  this._locale = null;
25269
25269
  this.dateStr = null;
25270
25270
  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.
25271
+ this.active = false;
25272
+ this.hasPopoverContent = false;
25271
25273
 
25272
25274
  this.runtimeUtils = new AuroLibraryRuntimeUtils$5$1();
25273
25275
 
@@ -25286,7 +25288,6 @@ class AuroCalendarCell extends i$4 {
25286
25288
  // ...super.properties,
25287
25289
  day: { type: Object },
25288
25290
  selected: { type: Boolean },
25289
- hovered: { type: Boolean },
25290
25291
  dateTo: { type: String },
25291
25292
  dateFrom: { type: String },
25292
25293
  month: { type: String },
@@ -25297,11 +25298,11 @@ class AuroCalendarCell extends i$4 {
25297
25298
  reflect: true
25298
25299
  },
25299
25300
  disabledDays: { type: Array },
25300
- hoveredDate: { type: String },
25301
25301
  isCurrentDate: { type: Boolean },
25302
25302
  locale: { type: String },
25303
25303
  dateStr: { type: String },
25304
- renderForDateSlot: { type: Boolean }
25304
+ renderForDateSlot: { type: Boolean },
25305
+ hasPopoverContent: { type: Boolean }
25305
25306
  };
25306
25307
  }
25307
25308
 
@@ -25325,17 +25326,17 @@ class AuroCalendarCell extends i$4 {
25325
25326
  }
25326
25327
 
25327
25328
  /**
25328
- * Handles selected and hovered states of the calendar cell when the date changes.
25329
+ * Handles selected state of the calendar cell when the selection changes.
25330
+ * Also clears any imperative range preview classes so classMap is the
25331
+ * sole source of truth after a selection update.
25329
25332
  * @private
25330
25333
  * @param {Number} dateFrom - Depart date.
25331
25334
  * @param {Number} dateTo - Return date.
25332
- * @param {Number} hoveredDate - Hovered date.
25333
25335
  * @param {Object} day - An object containing the dateFrom and day of month values.
25334
25336
  * @returns {void}
25335
25337
  */
25336
- dateChanged(dateFrom, dateTo, hoveredDate, day) {
25338
+ dateChanged(dateFrom, dateTo, day) {
25337
25339
  this.selected = false;
25338
- this.hovered = false;
25339
25340
 
25340
25341
  const parsedDateFrom = parseInt(dateFrom, 10);
25341
25342
  const parsedDateTo = parseInt(dateTo, 10);
@@ -25347,10 +25348,6 @@ class AuroCalendarCell extends i$4 {
25347
25348
  if (day.date === departTimestamp || day.date === returnTimestamp) {
25348
25349
  this.selected = true;
25349
25350
  }
25350
-
25351
- if (((hoveredDate === day.date || day.date < hoveredDate) && day.date > parsedDateFrom && !parsedDateTo && !Number.isNaN(parsedDateFrom) && parsedDateFrom !== undefined && !this.selected) || (day.date > parsedDateFrom && day.date < parsedDateTo)) {
25352
- this.hovered = true;
25353
- }
25354
25351
  }
25355
25352
  }
25356
25353
 
@@ -25360,27 +25357,104 @@ class AuroCalendarCell extends i$4 {
25360
25357
  * @returns {void}
25361
25358
  */
25362
25359
  handleTap() {
25363
- if (!this.disabled) {
25360
+ if (!this.disabled && !this.isBlackout()) {
25364
25361
  this.datepicker.handleCellClick(this.day.date);
25365
25362
  }
25363
+
25364
+ // Set this cell as the active cell regardless of blackout status
25365
+ if (this.day) {
25366
+ this.dispatchEvent(new CustomEvent('calendar-cell-activate', {
25367
+ bubbles: true,
25368
+ composed: true,
25369
+ detail: { date: this.day.date }
25370
+ }));
25371
+ }
25366
25372
  }
25367
25373
 
25368
25374
  /**
25369
25375
  * Handles user hover events and dispatches a custom event.
25376
+ * Does NOT set any reactive properties — the range preview is handled
25377
+ * imperatively by the calendar component to avoid O(N) re-renders.
25370
25378
  * @private
25371
25379
  * @returns {void}
25372
25380
  */
25373
25381
  handleHover() {
25374
- this.hovered = true;
25375
-
25376
- let _a;
25377
25382
  this.dispatchEvent(new CustomEvent('date-is-hovered', {
25378
- detail: { date: (_a = this.day) === null || _a === void 0 ? void 0 : _a.date },
25383
+ detail: { date: this.day?.date },
25379
25384
  }));
25380
25385
  }
25381
25386
 
25382
25387
  /**
25383
- * Checks if the current date is a valid date depending on the min and max values.
25388
+ * Handles focus events on the cell button.
25389
+ * Dispatches a lightweight event for the calendar to handle SR
25390
+ * announcements and range preview updates without triggering
25391
+ * any Lit lifecycle updates.
25392
+ * @private
25393
+ * @returns {void}
25394
+ */
25395
+ handleFocus() {
25396
+ this.dispatchEvent(new CustomEvent('calendar-cell-focused', {
25397
+ bubbles: true,
25398
+ composed: true,
25399
+ detail: { date: this.day?.date },
25400
+ }));
25401
+ }
25402
+
25403
+ /**
25404
+ * Checks if the current date is outside the valid min/max range.
25405
+ * Out-of-range cells are not focusable and are hidden from screen readers.
25406
+ * @private
25407
+ * @param {Object} day - An object containing the dateFrom and day of month values.
25408
+ * @param {Number} min - The minimum date value.
25409
+ * @param {Number} max - The maximum date value.
25410
+ * @returns {Boolean} - True if the date is out of range.
25411
+ */
25412
+ isOutOfRange(day, min, max) {
25413
+ if (day && day.date !== null && day.date !== undefined) {
25414
+ return day.date < min || day.date > max;
25415
+ }
25416
+ return false;
25417
+ }
25418
+
25419
+ /**
25420
+ * Checks if the current date is a blackout date (in disabledDays but within range).
25421
+ * Blackout cells are focusable but not selectable.
25422
+ * @private
25423
+ * @returns {Boolean} - True if the date is a blackout date.
25424
+ */
25425
+ isBlackout() {
25426
+ if (!this.day || this.day.date === null || this.day.date === undefined || this.isOutOfRange(this.day, this.min, this.max)) {
25427
+ return false;
25428
+ }
25429
+
25430
+ // Check against disabledDays timestamps (legacy path)
25431
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
25432
+ (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
25433
+ return true;
25434
+ }
25435
+
25436
+ // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
25437
+ const blackoutDates = this.datepicker?.blackoutDates;
25438
+
25439
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
25440
+ const date = new Date(this.day.date * 1000);
25441
+ const yyyy = date.getFullYear();
25442
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
25443
+ const dd = String(date.getDate()).padStart(2, '0');
25444
+ const cellDate = `${yyyy}-${mm}-${dd}`;
25445
+ if (blackoutDates.includes(cellDate)) {
25446
+ return true;
25447
+ }
25448
+ }
25449
+
25450
+ return false;
25451
+ }
25452
+
25453
+ /**
25454
+ * Checks if the current date is disabled based on min/max range or the
25455
+ * legacy disabledDays timestamp list. Sets the `disabled` attribute on the
25456
+ * host when the date falls outside the allowed range or appears in
25457
+ * disabledDays. Note: blackout dates are handled separately by `isBlackout()`.
25384
25458
  * @private
25385
25459
  * @param {Object} day - An object containing the dateFrom and day of month values.
25386
25460
  * @param {Number} min - The minimum date value.
@@ -25391,15 +25465,114 @@ class AuroCalendarCell extends i$4 {
25391
25465
  isEnabled(day, min, max, disabledDays) {
25392
25466
  this.removeAttribute('disabled');
25393
25467
 
25394
- if (disabledDays && day && day.date) {
25395
- if (day.date < min || day.date > max || disabledDays.findIndex(disabledDay => parseInt(disabledDay, 10) === day.date) !== -1) {
25396
- this.setAttribute('disabled', true);
25397
- return true;
25398
- }
25468
+ if (disabledDays && day && day.date &&
25469
+ (day.date < min || day.date > max || disabledDays.findIndex(disabledDay => parseInt(disabledDay, 10) === day.date) !== -1)) {
25470
+ this.setAttribute('disabled', true);
25471
+ return true;
25399
25472
  }
25473
+
25400
25474
  return false;
25401
25475
  }
25402
25476
 
25477
+ /**
25478
+ * Generates a unique cell ID in the format cell-YYYY-MM-DD.
25479
+ * @private
25480
+ * @returns {String} The unique cell ID.
25481
+ */
25482
+ getCellId() {
25483
+ if (!this.day || !this.day.date) return '';
25484
+ const date = new Date(this.day.date * 1000);
25485
+ const year = date.getFullYear();
25486
+ const month = String(date.getMonth() + 1).padStart(2, '0');
25487
+ const day = String(date.getDate()).padStart(2, '0');
25488
+ return `cell-${year}-${month}-${day}`;
25489
+ }
25490
+
25491
+ /**
25492
+ * Generates a localized aria-label for the cell button using Intl.DateTimeFormat.
25493
+ * Includes range position and blackout status.
25494
+ * @private
25495
+ * @returns {String} The aria-label string.
25496
+ */
25497
+ getAriaLabel() {
25498
+ if (!this.day || this.day.date === undefined) return '';
25499
+
25500
+ const date = new Date(this.day.date * 1000);
25501
+
25502
+ // Generate localized full date string using the configured locale
25503
+ const localeCode = this.locale?.code || undefined;
25504
+ const dateFormatter = new Intl.DateTimeFormat(localeCode, {
25505
+ weekday: 'long',
25506
+ year: 'numeric',
25507
+ month: 'long',
25508
+ day: 'numeric'
25509
+ });
25510
+
25511
+ let label = dateFormatter.format(date);
25512
+
25513
+ // Append date slot content (e.g. prices) so it is announced with the date.
25514
+ if (this.renderForDateSlot) {
25515
+ const dateSlotEl = this.querySelector(`[slot="date_${this.dateStr}"]`);
25516
+ if (dateSlotEl) {
25517
+ const text = dateSlotEl.innerText?.trim();
25518
+ if (text) {
25519
+ label += `, ${text}`;
25520
+ }
25521
+ }
25522
+ }
25523
+
25524
+ // appending popover content here so that it gets read in a logical order with the other date content.
25525
+ if (this.hasPopoverContent) {
25526
+ const popoverEl = this.querySelector(`[slot="popover_${this.dateStr}"]`);
25527
+ if (popoverEl) {
25528
+ label += `, ${popoverEl.innerText.trim()}`;
25529
+ }
25530
+ }
25531
+
25532
+ // Append range position label for range datepickers
25533
+ const rangePosition = this.getRangePosition();
25534
+ if (rangePosition) {
25535
+ label += `, ${rangePosition}`;
25536
+ }
25537
+
25538
+ // Append blackout label for blackout cells
25539
+ if (this.isBlackout()) {
25540
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
25541
+ }
25542
+
25543
+ return label;
25544
+ }
25545
+
25546
+ /**
25547
+ * Determines the range position of this cell relative to the current selection.
25548
+ * @private
25549
+ * @returns {String|null} Range position label or null if not in range mode.
25550
+ */
25551
+ getRangePosition() {
25552
+ if (!this.datepicker || !this.datepicker.hasAttribute('range')) return null;
25553
+
25554
+ const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
25555
+ if (!Number.isFinite(parsedDateFrom)) return null;
25556
+
25557
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
25558
+ const dayDate = this.day.date;
25559
+
25560
+ const parsedDateTo = Number.parseInt(this.dateTo, 10);
25561
+ const hasDateTo = Number.isFinite(parsedDateTo);
25562
+ const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
25563
+
25564
+ if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
25565
+
25566
+ if (hasDateTo && dayDate === returnTimestamp) return this.datepicker.rangeLabelEnd || 'range end';
25567
+
25568
+ if (dayDate < departTimestamp) return this.datepicker.rangeLabelBeforeRange || 'before range';
25569
+
25570
+ if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
25571
+
25572
+ // After start date, no end date yet, or after end date
25573
+ return this.datepicker.rangeLabelAfterRange || 'after range';
25574
+ }
25575
+
25403
25576
  /**
25404
25577
  * Checks if the current date is the depart date.
25405
25578
  * @private
@@ -25467,12 +25640,12 @@ class AuroCalendarCell extends i$4 {
25467
25640
  }
25468
25641
 
25469
25642
  /**
25470
- * Checks if the current date is a highlighted date.
25643
+ * Checks if the current date is a referenced date.
25471
25644
  * @param {Object} dateStr - The date string in MM_DD_YYYY format.
25472
- * @returns Boolean - True if the date is a highlighted date.
25645
+ * @returns Boolean - True if the date is a referenced date.
25473
25646
  */
25474
25647
  isReferenceDate(dateStr) {
25475
- // If the datepicker has highlighted dates specified
25648
+ // If the datepicker has referenced dates specified
25476
25649
  if (this.datepicker && this.datepicker.hasAttribute('referenceDates')) {
25477
25650
 
25478
25651
  // Get the referenceDates attribute from the datepicker
@@ -25482,7 +25655,11 @@ class AuroCalendarCell extends i$4 {
25482
25655
  if (!Array.isArray(referenceDates) || referenceDates.length === 0) return false;
25483
25656
 
25484
25657
  // Convert cell dateStr (MM_DD_YYYY) to ISO (YYYY-MM-DD) for comparison
25485
- const [month, day, year] = dateStr.split('_');
25658
+ const [
25659
+ month,
25660
+ day,
25661
+ year
25662
+ ] = dateStr.split('_');
25486
25663
  const cellISO = `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
25487
25664
 
25488
25665
  return referenceDates.includes(cellISO);
@@ -25572,9 +25749,9 @@ class AuroCalendarCell extends i$4 {
25572
25749
 
25573
25750
  if (popoverSlotContent) {
25574
25751
  this.appendChild(popoverSlotContent.cloneNode(true));
25575
- this.auroPopover.removeAttribute('disabled');
25752
+ this.hasPopoverContent = true;
25576
25753
  } else {
25577
- this.auroPopover.setAttribute('disabled', true);
25754
+ this.hasPopoverContent = false;
25578
25755
  }
25579
25756
  } catch (err) { // eslint-disable-line no-unused-vars
25580
25757
  // Error handling goes here
@@ -25590,60 +25767,249 @@ class AuroCalendarCell extends i$4 {
25590
25767
  return;
25591
25768
  }
25592
25769
  this.datepicker = calendar.datepicker;
25593
- this.datepicker.addEventListener('auroDatePicker-newSlotContent', () => {
25770
+ this._slotContentHandler = () => {
25594
25771
  this.handleSlotContent();
25772
+ // Force re-render so isBlackout()/aria-disabled reflect updated blackoutDates.
25773
+ this.requestUpdate();
25774
+ };
25775
+ this.datepicker.addEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
25776
+
25777
+ // Cache button reference for imperative class manipulation.
25778
+ this.updateComplete.then(() => {
25779
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
25595
25780
  });
25596
25781
 
25782
+ // Trigger an initial update now that `this.datepicker` is assigned so
25783
+ // cells reflect blackout/slot state that was configured before first render.
25784
+ this.requestUpdate();
25785
+
25786
+ this.calendarMonth = calendarMonth;
25787
+ this.configurePopover();
25788
+ }
25789
+
25790
+ disconnectedCallback() {
25791
+ super.disconnectedCallback();
25792
+ if (this.datepicker && this._slotContentHandler) {
25793
+ this.datepicker.removeEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
25794
+ }
25795
+ }
25796
+
25797
+ /**
25798
+ * Configures the popover instance with the calendar month boundary.
25799
+ * Called from firstUpdated and updated because the popover element is only
25800
+ * rendered after hasPopoverContent becomes true (set by handleSlotContent).
25801
+ * @private
25802
+ * @returns {void}
25803
+ */
25804
+ configurePopover() {
25597
25805
  this.auroPopover = this.shadowRoot.querySelector(this.popoverTag._$litStatic$);
25598
25806
 
25599
- this.auroPopover.boundary = calendarMonth;
25807
+ if (this.auroPopover && this.calendarMonth) {
25808
+ this.auroPopover.boundary = this.calendarMonth;
25809
+ }
25600
25810
  }
25601
25811
 
25602
25812
  updated(properties) {
25603
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('hoveredDate') || properties.has('day')) {
25604
- this.dateChanged(this.dateFrom, this.dateTo, this.hoveredDate, this.day);
25813
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('day')) {
25814
+ this.dateChanged(this.dateFrom, this.dateTo, this.day);
25605
25815
  }
25606
25816
 
25607
- this.setDateSlotName();
25608
- this.handleSlotContent();
25817
+ if (properties.has('day') && this.day) {
25818
+ this.setDateSlotName();
25819
+ this.handleSlotContent();
25820
+
25821
+ // Re-cache button reference when the day changes (cell may have re-rendered).
25822
+ this.updateComplete.then(() => {
25823
+ this._cachedButton = this.shadowRoot.querySelector('button.day');
25824
+ });
25825
+
25826
+ // Update host-level aria attributes for ariaActiveDescendantElement.
25827
+ this.updateHostAria();
25828
+ }
25829
+
25830
+ // Update host aria when selection changes (aria-selected, range labels)
25831
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
25832
+ this.updateHostAria();
25833
+ }
25834
+
25835
+ // Configure popover when it first becomes rendered
25836
+ if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
25837
+ this.updateComplete.then(() => this.configurePopover());
25838
+ }
25609
25839
  }
25610
25840
 
25611
- render() {
25841
+ /**
25842
+ * Updates ARIA attributes on the host element so that
25843
+ * ariaActiveDescendantElement can expose cell info to the SR.
25844
+ * @private
25845
+ * @returns {void}
25846
+ */
25847
+ updateHostAria() {
25848
+ if (!this.day || this.day.date === undefined) return;
25849
+
25850
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
25851
+ if (outOfRange) {
25852
+ this.removeAttribute('role');
25853
+ this.removeAttribute('aria-label');
25854
+ return;
25855
+ }
25856
+
25857
+ // The host acts as the gridcell for ariaActiveDescendantElement.
25858
+ this.setAttribute('role', 'gridcell');
25859
+ this.setAttribute('aria-label', this.getAriaLabel());
25860
+ this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
25861
+
25862
+ if (this.isBlackout()) {
25863
+ this.setAttribute('aria-disabled', 'true');
25864
+ } else {
25865
+ this.removeAttribute('aria-disabled');
25866
+ }
25867
+ }
25868
+
25869
+ /**
25870
+ * Programmatically focuses the cell's interactive button element.
25871
+ * Uses focusVisible: true so the :focus-visible ring appears even when
25872
+ * the bib was opened via mouse click (which sets mouse input modality).
25873
+ * @returns {void}
25874
+ */
25875
+ focusButton() {
25876
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
25877
+ if (button) {
25878
+ button.focus({ focusVisible: true });
25879
+ }
25880
+ }
25881
+
25882
+ /**
25883
+ * Imperatively marks this cell as active without triggering a Lit re-render.
25884
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
25885
+ * @returns {void}
25886
+ */
25887
+ setActive() {
25888
+ this.active = true;
25889
+
25890
+ // Show the popover when this cell becomes active via keyboard navigation.
25891
+ if (this.auroPopover) {
25892
+ this.auroPopover.toggleShow();
25893
+ }
25894
+ }
25895
+
25896
+ /**
25897
+ * Imperatively marks this cell as inactive without triggering a Lit re-render.
25898
+ * @returns {void}
25899
+ */
25900
+ clearActive() {
25901
+ this.active = false;
25902
+ const btn = this._cachedButton || this.shadowRoot.querySelector('button.day');
25903
+ if (btn) {
25904
+ btn.classList.remove('activeCell');
25905
+ }
25906
+
25907
+ // Hide the popover when this cell loses active state.
25908
+ if (this.auroPopover) {
25909
+ this.auroPopover.toggleHide();
25910
+ }
25911
+ }
25912
+
25913
+ /**
25914
+ * Updates range preview classes imperatively (no Lit re-render).
25915
+ * Called by the calendar component when the hovered date changes
25916
+ * during range selection (dateFrom set, dateTo not yet set).
25917
+ * @param {Number} hoveredDate - Unix timestamp of the currently hovered/focused date.
25918
+ * @param {Number} dateFrom - Unix timestamp of the selected departure date.
25919
+ * @returns {void}
25920
+ */
25921
+ updateRangePreviewClasses(hoveredDate, dateFrom) {
25922
+ const btn = this._cachedButton;
25923
+ if (!btn || !this.day) return;
25924
+
25925
+ const dayDate = this.day.date;
25926
+ const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
25927
+ const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
25928
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
25929
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
25930
+
25931
+ btn.classList.toggle('inRange', isInRange);
25932
+ btn.classList.toggle('lastHoveredDate', isLastHovered);
25933
+ btn.classList.toggle('rangeDepartDate', isDepartWithPreview);
25934
+ }
25935
+
25936
+ /**
25937
+ * Clears all imperative range preview classes from the cell button.
25938
+ * Called when a selection occurs so classMap becomes the sole source of truth.
25939
+ * @returns {void}
25940
+ */
25941
+ clearRangePreviewClasses() {
25942
+ const btn = this._cachedButton;
25943
+ if (!btn) return;
25944
+
25945
+ btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
25946
+ }
25947
+
25948
+ renderCellButton() {
25949
+ const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
25950
+ const blackout = this.isBlackout();
25951
+
25952
+ // Static and selection-driven classes only. Hover-driven classes
25953
+ // (inRange, lastHoveredDate, rangeDepartDate during preview) are
25954
+ // managed imperatively via updateRangePreviewClasses() to avoid
25955
+ // O(N) Lit re-renders on every focus/hover event.
25956
+ const isFirstDay = this.day?.title === 1;
25957
+ const isLastDay = this.day?.date && (() => {
25958
+ const dt = new Date(this.day.date * 1000);
25959
+ return dt.getDate() === new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate();
25960
+ })();
25961
+
25612
25962
  const buttonClasses = {
25613
25963
  'day': true,
25614
- 'body-lg': true,
25615
- 'currentDate': this.currentDate,
25964
+ 'body-default': true,
25965
+ 'currentDate': this.isCurrentDate,
25616
25966
  'selected': this.selected,
25617
- 'inRange': this.hovered && this.isInRange(this.day, this.dateFrom, this.dateTo),
25618
- 'lastHoveredDate': this.isLastHoveredDate(this.day, this.dateFrom, this.dateTo, this.hoveredDate) && this.datepicker && this.datepicker.hasAttribute('range'),
25619
- 'disabled': this.isEnabled(this.day, this.min, this.max, this.disabledDays),
25620
- 'rangeDepartDate': this.isDepartDate(this.day, this.dateFrom) && (this.hoveredDate > this.dateFrom || this.dateTo),
25621
- 'rangeReturnDate': this.isReturnDate(this.day, this.dateFrom, this.dateTo),
25967
+ 'inRange': this.datepicker?.hasAttribute('range') && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo),
25968
+ 'disabled': outOfRange,
25969
+ blackout,
25970
+ 'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && this.dateTo,
25971
+ 'rangeReturnDate': this.datepicker?.hasAttribute('range') && this.isReturnDate(this.day, this.dateFrom, this.dateTo),
25622
25972
  'reference': this.isReferenceDate(this.dateStr),
25623
- 'sameDateTrip': this.dateFrom === this.dateTo
25973
+ 'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo,
25974
+ 'firstDayOfMonth': isFirstDay,
25975
+ 'lastDayOfMonth': isLastDay,
25624
25976
  };
25625
25977
 
25626
- let _a, _b;
25627
25978
  return u$c`
25628
- <${this.popoverTag}>
25629
- <slot name="popover_${this.dateStr}"></slot>
25630
- <button
25631
- slot="trigger"
25632
- @click="${this.handleTap}"
25633
- @mouseover="${this.handleHover}"
25634
- @focus="${this.handleHover}"
25635
- class="${e$3(buttonClasses)}"
25636
- ?disabled="${this.disabled}"
25637
- title="${this.getTitle((_a = this.day) === null || _a === void 0 ? void 0 : _a.date)}"
25638
- tabindex="-1">
25639
- <div class="buttonWrapper">
25640
- <div class="currentDayMarker">${(_b = this.day) === null || _b === void 0 ? void 0 : _b.title}</div>
25641
- <div class="dateSlot body-2xs" part="dateSlot">
25642
- <slot name="date_${this.dateStr}"></slot>
25643
- </div>
25979
+ <button
25980
+ slot="trigger"
25981
+ id="${this.getCellId()}"
25982
+ @click="${outOfRange ? undefined : this.handleTap}"
25983
+ @mouseover="${outOfRange ? undefined : this.handleHover}"
25984
+ @focus="${outOfRange ? undefined : this.handleFocus}"
25985
+ class="${e$3(buttonClasses)}"
25986
+ ?disabled="${outOfRange}"
25987
+ aria-hidden="${outOfRange ? 'true' : A$7}"
25988
+ tabindex="-1">
25989
+ <div class="buttonWrapper" aria-hidden="true">
25990
+ <div class="currentDayMarker">${this.day?.title || A$7}</div>
25991
+ <div class="dateSlot body-2xs" part="dateSlot" aria-hidden="true" ?hidden="${!this.renderForDateSlot}">
25992
+ <slot name="date_${this.dateStr}"></slot>
25644
25993
  </div>
25645
- </button>
25646
- </${this.popoverTag}>
25994
+ </div>
25995
+ </button>
25996
+ `;
25997
+ }
25998
+
25999
+ render() {
26000
+ const { hasPopoverContent } = this;
26001
+
26002
+ if (hasPopoverContent) {
26003
+ return u$c`
26004
+ <${this.popoverTag}>
26005
+ <span aria-hidden="true"><slot name="popover_${this.dateStr}"></slot></span>
26006
+ ${this.renderCellButton()}
26007
+ </${this.popoverTag}>
26008
+ `;
26009
+ }
26010
+
26011
+ return u$c`
26012
+ ${this.renderCellButton()}
25647
26013
  `;
25648
26014
  }
25649
26015
  }
@@ -25656,7 +26022,7 @@ if (!customElements.get('auro-formkit-calendar-cell')) {
25656
26022
 
25657
26023
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
25658
26024
 
25659
- /* eslint-disable no-magic-numbers, dot-location */
26025
+ /* eslint-disable no-magic-numbers */
25660
26026
 
25661
26027
 
25662
26028
  const getMonthNamesFromLocale = (locale) => {
@@ -25673,11 +26039,12 @@ const getMonthNamesFromLocale = (locale) => {
25673
26039
  * Uses UTC dates to avoid DST-related day drift across timezones.
25674
26040
  * @private
25675
26041
  * @param {String} locale - The BCP 47 language tag for localization (e.g. "en-US").
25676
- * @returns {Array} An array of seven localized narrow weekday names, starting from Sunday.
26042
+ * @param {String} weekday - The format of the weekday name ('narrow', 'short', 'long').
26043
+ * @returns {Array} An array of seven localized weekday names, starting from Sunday.
25677
26044
  */
25678
- const getWeekdayNames = (locale) => {
26045
+ const getWeekdayNames = (locale, weekday) => {
25679
26046
  const fmt = new Intl.DateTimeFormat(locale, {
25680
- weekday: 'narrow',
26047
+ weekday,
25681
26048
  timeZone: 'UTC'
25682
26049
  });
25683
26050
  // Jan 5 2025 is a known Sunday; use Date.UTC to avoid DST-related day drift
@@ -25712,7 +26079,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25712
26079
 
25713
26080
  /**
25714
26081
  * BCP 47 locale tag (such as `en-US`) for calendar localization.
25715
- * as wc-range-datepicker expects a `locale` prop, we use `localeCode` to avoid conflicts.
26082
+ * As wc-range-datepicker expects a `locale` prop, we use `localeCode` to avoid conflicts.
25716
26083
  */
25717
26084
  localeCode: {
25718
26085
  type: String
@@ -25766,8 +26133,19 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25766
26133
  return this._cachedMonthNames[month - 1] || '';
25767
26134
  }
25768
26135
 
26136
+ /**
26137
+ * Returns the unique heading ID for this month, used by aria-labelledby.
26138
+ * @private
26139
+ * @returns {String} The heading ID.
26140
+ */
26141
+ getHeadingId() {
26142
+ return `month-heading-${this.month}-${this.year}`;
26143
+ }
26144
+
26145
+
25769
26146
  /**
25770
26147
  * Determines the current month name based on locale.
26148
+ * Also builds parallel arrays of full day names for abbr attributes.
25771
26149
  * This is a rewrite of the function used in the class RangeDatepickerCalendar and should not be removed from here.
25772
26150
  * @private
25773
26151
  * @param {Object} changedProperties - The properties that have changed since the last update.
@@ -25781,8 +26159,67 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25781
26159
  }
25782
26160
 
25783
26161
  localeChanged() {
25784
- // Week always starts on Sunday; use Intl-derived names directly without rotation
25785
- this.dayNamesOfTheWeek = getWeekdayNames(this.localeCode);
26162
+ this.dayNamesOfTheWeek = getWeekdayNames(this.localeCode, 'narrow');
26163
+ this.dayFullNames = getWeekdayNames(this.localeCode, 'long');
26164
+ }
26165
+
26166
+ /**
26167
+ * Renders a day-of-week header with abbr attribute for the full day name.
26168
+ * @private
26169
+ * @param {String} dayOfWeek - The short day name.
26170
+ * @param {Number} index - The index in the dayNamesOfTheWeek array.
26171
+ * @returns {Object} The header HTML.
26172
+ */
26173
+ renderDayOfWeek(dayOfWeek, index) {
26174
+ const fullName = this.dayFullNames ? this.dayFullNames[index] : dayOfWeek;
26175
+ return b$7`<div class="th body-default" aria-label="${fullName}" role="columnheader">${dayOfWeek}</div>`;
26176
+ }
26177
+
26178
+ /**
26179
+ * Returns all focusable cell elements (enabled + blackout, not out-of-range) in this month.
26180
+ * @returns {Array} Array of auro-formkit-calendar-cell elements.
26181
+ */
26182
+ getFocusableCells() {
26183
+ const cells = Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-cell'));
26184
+ return cells.filter((cell) => {
26185
+ if (!cell.day) {
26186
+ return false;
26187
+ }
26188
+ return !cell.isOutOfRange(cell.day, cell.min, cell.max);
26189
+ });
26190
+ }
26191
+
26192
+ /**
26193
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
26194
+ * as a reactive property. Instead, just dispatches the event upward so
26195
+ * the calendar can handle range preview imperatively.
26196
+ * @private
26197
+ * @param {CustomEvent} event - The date-is-hovered event from a cell.
26198
+ * @returns {void}
26199
+ */
26200
+ handleDateHovered(event) {
26201
+ this.dispatchEvent(new CustomEvent('hovered-date-changed', {
26202
+ detail: { value: event.detail.date },
26203
+ }));
26204
+ }
26205
+
26206
+ /**
26207
+ * Dispatches a bubbling event when the mouse leaves the date grid body
26208
+ * so the parent calendar can clear the range hover preview.
26209
+ * @private
26210
+ * @returns {void}
26211
+ */
26212
+ handleTbodyMouseLeave() {
26213
+ this.dispatchEvent(new CustomEvent('calendar-month-mouseleave', {
26214
+ bubbles: true,
26215
+ composed: true,
26216
+ }));
26217
+ }
26218
+
26219
+ renderWeek(week) {
26220
+ return b$7`
26221
+ <div class="tr" role="row">${week.map((day) => this.renderDay(day))}</div>
26222
+ `;
25786
26223
  }
25787
26224
 
25788
26225
  renderDay(day) {
@@ -25795,7 +26232,6 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25795
26232
  .min="${this.min}"
25796
26233
  .max="${this.max}"
25797
26234
  .month="${this.month}"
25798
- .hoveredDate="${this.hoveredDate}"
25799
26235
  .dateTo="${this.dateTo}"
25800
26236
  .dateFrom="${this.dateFrom}"
25801
26237
  .locale="${this.localeCode}"
@@ -25806,7 +26242,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25806
26242
  >
25807
26243
  </auro-formkit-calendar-cell>
25808
26244
  `
25809
- : null}
26245
+ : b$7`<div aria-hidden="true" inert></div>`}
25810
26246
  </div>
25811
26247
  `;
25812
26248
  }
@@ -25820,7 +26256,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25820
26256
  <div>
25821
26257
  <div class="header">
25822
26258
  ${this.renderPrevButton()}
25823
- <div class="headerTitle heading-xs">
26259
+ <div class="headerTitle heading-xs" id="${this.getHeadingId()}">
25824
26260
  ${this.monthFirst ? b$7`
25825
26261
  <div>${this.computeCurrentMonthName(this.month)}</div>
25826
26262
  <div>${this.renderYear()}</div>
@@ -25831,14 +26267,13 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
25831
26267
  </div>
25832
26268
  ${this.renderNextButton()}
25833
26269
  </div>
25834
-
25835
- <div class="table">
26270
+ <div class="table" role="grid">
25836
26271
  <div class="thead">
25837
26272
  <div class="tr">
25838
- ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map(dayNameOfWeek => this.renderDayOfWeek(dayNameOfWeek))}
26273
+ ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map((dayNameOfWeek, index) => this.renderDayOfWeek(dayNameOfWeek, index))}
25839
26274
  </div>
25840
26275
  </div>
25841
- <div class="tbody">
26276
+ <div class="tbody" role="rowgroup" @mouseleave="${this.handleTbodyMouseLeave}">
25842
26277
  ${(_b = this.daysOfMonth) === null || _b === void 0 ? void 0 : _b.map(week => this.renderWeek(week))}
25843
26278
  </div>
25844
26279
  </div>
@@ -26536,6 +26971,14 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$4 {
26536
26971
  large: {
26537
26972
  type: Boolean,
26538
26973
  reflect: true
26974
+ },
26975
+
26976
+ /**
26977
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
26978
+ */
26979
+ showFooter: {
26980
+ type: Boolean,
26981
+ reflect: true
26539
26982
  }
26540
26983
  };
26541
26984
  }
@@ -26638,7 +27081,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$4 {
26638
27081
  <slot></slot>
26639
27082
  </div>
26640
27083
 
26641
- ${this.isFullscreen ? u$c`
27084
+ ${this.isFullscreen || this.showFooter ? u$c`
26642
27085
  <div id="footerContainer">
26643
27086
  <slot name="footer"></slot>
26644
27087
  </div>` : null}
@@ -26647,7 +27090,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$4 {
26647
27090
  }
26648
27091
  };
26649
27092
 
26650
- var formkitVersion$2$1 = '202606081518';
27093
+ var formkitVersion$2$1 = '202606081904';
26651
27094
 
26652
27095
  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$3`${s$6(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$7`: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}
26653
27096
  `,u$4$1=i$7`.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}}
@@ -26708,7 +27151,7 @@ let l$1$2 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(
26708
27151
 
26709
27152
  var buttonVersion$1$1 = '12.3.2';
26710
27153
 
26711
- /* eslint-disable no-magic-numbers, no-undef-init, max-lines, lit/binding-positions, lit/no-invalid-html */
27154
+ /* 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 */
26712
27155
 
26713
27156
 
26714
27157
  // See https://git.io/JJ6SJ for "How to document your components using JSDoc"
@@ -26745,6 +27188,20 @@ class AuroCalendar extends RangeDatepicker {
26745
27188
  this.largeFullscreenHeadline = false;
26746
27189
  this.isFullscreen = false;
26747
27190
 
27191
+ /**
27192
+ * The date of the currently active cell (Unix timestamp).
27193
+ * Only one cell across the entire calendar has tabindex="0" at a time.
27194
+ * @private
27195
+ */
27196
+ this.activeCellDate = null;
27197
+
27198
+ /**
27199
+ * Whether the #calendarGrid wrapper currently has focus.
27200
+ * Used to determine whether the visualFocus ring should be shown.
27201
+ * @private
27202
+ */
27203
+ this._gridHasFocus = false;
27204
+
26748
27205
  /**
26749
27206
  * @private
26750
27207
  */
@@ -26755,6 +27212,12 @@ class AuroCalendar extends RangeDatepicker {
26755
27212
  */
26756
27213
  this.calendarRangeMonths = null;
26757
27214
 
27215
+ /**
27216
+ * Legacy array of disabled-date timestamps.
27217
+ * @private
27218
+ */
27219
+ this.disabledDays = [];
27220
+
26758
27221
  /**
26759
27222
  * @private
26760
27223
  */
@@ -26778,6 +27241,12 @@ class AuroCalendar extends RangeDatepicker {
26778
27241
  this.buttonTag = versioning.generateTag('auro-formkit-datepicker-button', buttonVersion$1$1, T$1$2);
26779
27242
 
26780
27243
  this.dropdown = undefined;
27244
+
27245
+ /**
27246
+ * Unique instance ID for the live region element.
27247
+ * @private
27248
+ */
27249
+ this._calendarInstanceId = Date.now().toString(36);
26781
27250
  }
26782
27251
 
26783
27252
  static get styles() {
@@ -26941,19 +27410,79 @@ class AuroCalendar extends RangeDatepicker {
26941
27410
  /**
26942
27411
  * Updates the month and year when the user navigates to the previous calendar month.
26943
27412
  * @private
27413
+ * @param {Object} [options] - Optional settings.
27414
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
27415
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
26944
27416
  * @returns {void}
26945
27417
  */
26946
- handlePrevMonth() {
27418
+ handlePrevMonth(options) {
27419
+ const opts = options instanceof Event ? {} : options || {};
27420
+ this.clearRangePreview({ force: true });
26947
27421
  this.utilCal.handleMonthChange(this, 'prev');
27422
+ if (!opts.skipActiveUpdate) {
27423
+ this.updateActiveCellForVisibleMonth();
27424
+ }
27425
+ this.announceMonthChange();
26948
27426
  }
26949
27427
 
26950
27428
  /**
26951
27429
  * Updates the month and year when the user navigates to the next calendar month.
26952
27430
  * @private
27431
+ * @param {Object} [options] - Optional settings.
27432
+ * @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
27433
+ * recomputation. Used by arrow key handlers that manage the active cell themselves.
26953
27434
  * @returns {void}
26954
27435
  */
26955
- handleNextMonth() {
27436
+ handleNextMonth(options) {
27437
+ const opts = options instanceof Event ? {} : options || {};
27438
+ this.clearRangePreview({ force: true });
26956
27439
  this.utilCal.handleMonthChange(this, 'next');
27440
+ if (!opts.skipActiveUpdate) {
27441
+ this.updateActiveCellForVisibleMonth();
27442
+ }
27443
+ this.announceMonthChange();
27444
+ }
27445
+
27446
+ /**
27447
+ * Announces the current month and year via the live region after navigation.
27448
+ * @private
27449
+ * @returns {void}
27450
+ */
27451
+ announceMonthChange() {
27452
+ // Cancel any pending debounced cell announcement so it does not
27453
+ // overwrite this month navigation announcement.
27454
+ if (this._focusAnnounceTimer) {
27455
+ clearTimeout(this._focusAnnounceTimer);
27456
+ this._focusAnnounceTimer = null;
27457
+ }
27458
+
27459
+ const date = this.centralDateObject;
27460
+ const localeCode = this.locale?.code || undefined;
27461
+ const formatter = new Intl.DateTimeFormat(localeCode, { month: 'long',
27462
+ year: 'numeric' });
27463
+ this.announceSelection(formatter.format(date));
27464
+ }
27465
+
27466
+ /**
27467
+ * Updates the active cell after month navigation (prev/next buttons).
27468
+ * Always moves the active cell to the first enabled date in the newly
27469
+ * visible months so that tabbing back to the grid lands on an enabled cell.
27470
+ * @private
27471
+ * @returns {void}
27472
+ */
27473
+ updateActiveCellForVisibleMonth() {
27474
+ // Use double-rAF to ensure child month/cell components have fully
27475
+ // rendered and cached their button references before we set tabindex.
27476
+ requestAnimationFrame(() => {
27477
+ requestAnimationFrame(() => {
27478
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
27479
+
27480
+ if (newDate !== null && newDate !== undefined) {
27481
+ this.activeCellDate = newDate;
27482
+ this.setActiveCell(this.activeCellDate);
27483
+ }
27484
+ });
27485
+ });
26957
27486
  }
26958
27487
 
26959
27488
  /**
@@ -27061,7 +27590,1007 @@ class AuroCalendar extends RangeDatepicker {
27061
27590
  this.utilCal.scrollMonthIntoView(this, date, this.format);
27062
27591
  }
27063
27592
 
27593
+ /**
27594
+ * Gets all rendered month components.
27595
+ * @private
27596
+ * @returns {Array} Array of auro-formkit-calendar-month elements.
27597
+ */
27598
+ getMonthComponents() {
27599
+ return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
27600
+ }
27601
+
27602
+ /**
27603
+ * Gets all focusable cells across all rendered months.
27604
+ * @private
27605
+ * @returns {Array} Array of auro-formkit-calendar-cell elements.
27606
+ */
27607
+ getAllFocusableCells() {
27608
+ const months = this.getMonthComponents();
27609
+ let cells = [];
27610
+ months.forEach((month) => {
27611
+ cells = cells.concat(month.getFocusableCells());
27612
+ });
27613
+ return cells;
27614
+ }
27615
+
27616
+ /**
27617
+ * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
27618
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
27619
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
27620
+ * screen readers announce the active cell without moving DOM focus.
27621
+ * @param {Number} date - Unix timestamp of the cell to activate.
27622
+ * @returns {void}
27623
+ */
27624
+ setActiveCell(date) {
27625
+ const allCells = this.getAllFocusableCells();
27626
+
27627
+ let newActiveCell = null;
27628
+ allCells.forEach((cell) => {
27629
+ if (cell.day && cell.day.date === date) {
27630
+ cell.setActive();
27631
+ newActiveCell = cell;
27632
+ } else if (cell.active) {
27633
+ cell.clearActive();
27634
+ }
27635
+ });
27636
+
27637
+ this.activeCellDate = date;
27638
+
27639
+ // Apply activeCell ring only when the grid currently has focus.
27640
+ if (newActiveCell && this._gridHasFocus) {
27641
+ const btn = newActiveCell._cachedButton || newActiveCell.shadowRoot.querySelector('button.day');
27642
+ if (btn) {
27643
+ btn.classList.add('activeCell');
27644
+ }
27645
+ }
27646
+ }
27647
+
27648
+ /**
27649
+ * Focuses the calendar grid wrapper and sets the active cell.
27650
+ * DOM focus stays on the grid wrapper; the aria-live region
27651
+ * tells the screen reader which cell is "active".
27652
+ * @returns {void}
27653
+ */
27654
+ focusActiveCell() {
27655
+ if (this.activeCellDate !== null && this.activeCellDate !== undefined) {
27656
+ this.setActiveCell(this.activeCellDate);
27657
+ }
27658
+
27659
+ const gridWrapper = this.shadowRoot.querySelector('#calendarGrid');
27660
+ if (gridWrapper) {
27661
+ gridWrapper.focus({ preventScroll: true,
27662
+ focusVisible: true });
27663
+ }
27664
+ }
27665
+
27666
+ /**
27667
+ * Shows the activeCell ring when the grid gains focus.
27668
+ * @private
27669
+ * @returns {void}
27670
+ */
27671
+ handleGridFocusIn() {
27672
+ this._gridHasFocus = true;
27673
+ const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
27674
+ if (activeCell) {
27675
+ const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
27676
+ if (btn) {
27677
+ btn.classList.add('activeCell');
27678
+ }
27679
+ }
27680
+ }
27681
+
27682
+ /**
27683
+ * Hides the activeCell ring when the grid loses focus.
27684
+ * @private
27685
+ * @returns {void}
27686
+ */
27687
+ handleGridFocusOut() {
27688
+ this._gridHasFocus = false;
27689
+ // Remove activeCell from ALL cells to prevent stale rings.
27690
+ const allCells = this.getAllFocusableCells();
27691
+ for (const cell of allCells) {
27692
+ const btn = cell._cachedButton || cell.shadowRoot.querySelector('button.day');
27693
+ if (btn) {
27694
+ btn.classList.remove('activeCell');
27695
+ }
27696
+ }
27697
+ // Clear range hover preview so no highlight lingers after focus leaves the grid.
27698
+ this.clearRangePreview();
27699
+ }
27700
+
27701
+ /**
27702
+ * Computes the initial active date from data properties alone — no DOM required.
27703
+ * Priority:
27704
+ * 1. Selected date (dateFrom) if within range
27705
+ * 2. Today's date if not disabled (in-range and not blackout)
27706
+ * 3. First future non-disabled date (scans day-by-day from today up to 1 year)
27707
+ * 4. First previous non-disabled date (scans day-by-day from today up to 1 year)
27708
+ * 5. First enabled date in finite [min, max] range
27709
+ * 5b. First enabled date scanning forward from finite min (unbounded max)
27710
+ * 5c. First enabled date scanning backward from finite max (unbounded min)
27711
+ * 6. First in-range date (even if blackout) so focus can land somewhere
27712
+ * 7. Undefined — no valid target.
27713
+ *
27714
+ * @private
27715
+ * @param {Object} [options] - Optional settings.
27716
+ * @param {boolean} [options.skipDateFrom=false] - When true, skip the selected-date
27717
+ * shortcut (step 1). Used after month navigation so the active cell lands in the
27718
+ * newly visible month instead of jumping back to the selected date's month.
27719
+ * @returns {Number|undefined} Unix timestamp (seconds) of the date to activate, or undefined.
27720
+ */
27721
+ computeActiveDate(options = {}) {
27722
+ const MAX_SCAN_DAYS = 366; // scan at most ~1 year in each direction
27723
+
27724
+ /**
27725
+ * Adds days to a timestamp using Date arithmetic to handle DST correctly.
27726
+ * Returns a local-midnight-aligned timestamp in seconds.
27727
+ * @param {Number} ts - Unix timestamp in seconds.
27728
+ * @param {Number} days - Number of days to add.
27729
+ * @returns {Number} The adjusted timestamp in seconds.
27730
+ */
27731
+ const addDays = (ts, days) => {
27732
+ const date = new Date(ts * 1000);
27733
+ date.setDate(date.getDate() + days);
27734
+ date.setHours(0, 0, 0, 0);
27735
+ return Math.floor(date.getTime() / 1000);
27736
+ };
27737
+
27738
+ const rawMin = this.minDateObject?.getTime() / 1000;
27739
+ const rawMax = this.maxDateObject?.getTime() / 1000;
27740
+
27741
+ // When min/max are NaN (no minDate/maxDate configured), treat as unbounded.
27742
+ const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
27743
+ const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
27744
+
27745
+ // Build a Set of blackout timestamps for O(1) lookup.
27746
+ const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
27747
+
27748
+ // Also include ISO-format blackoutDates from the datepicker if available.
27749
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
27750
+ const isoBlackouts = this.datepicker?.blackoutDates;
27751
+ if (Array.isArray(isoBlackouts)) {
27752
+ for (const isoStr of isoBlackouts) {
27753
+ const parts = isoStr.split('-');
27754
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
27755
+ if (Number.isFinite(ts)) {
27756
+ blackoutSet.add(ts);
27757
+ }
27758
+ }
27759
+ }
27760
+
27761
+ /**
27762
+ * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
27763
+ * it is within [min, max] AND not a blackout day.
27764
+ * @param {Number} ts - Unix timestamp in seconds.
27765
+ * @returns {boolean} True if the date is enabled.
27766
+ */
27767
+ const isEnabled = (ts) => ts >= minTs && ts <= maxTs && !blackoutSet.has(ts);
27768
+
27769
+ /**
27770
+ * A date is "in range" (focusable in the grid) when it is within [min, max].
27771
+ * Blackout dates are focusable but not selectable.
27772
+ * @param {Number} ts - Unix timestamp in seconds.
27773
+ * @returns {boolean} True if the date is in range.
27774
+ */
27775
+ const isInRange = (ts) => ts >= minTs && ts <= maxTs;
27776
+
27777
+ // 1. Selected date — always valid target if within range (user chose it).
27778
+ // Skipped when called from month navigation so the active cell lands in
27779
+ // the newly visible month rather than the (possibly off-screen) selection.
27780
+ if (!options.skipDateFrom && this.dateFrom) {
27781
+ const parsedFrom = parseInt(this.dateFrom, 10);
27782
+ if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) {
27783
+ return parsedFrom;
27784
+ }
27785
+ }
27786
+
27787
+ // 2. Today's date (midnight-aligned) if enabled.
27788
+ const now = Math.floor(new Date().setHours(0, 0, 0, 0) / 1000);
27789
+
27790
+ // When centralDate is configured, prefer a date within the month(s) that
27791
+ // will actually be rendered. If today falls outside the visible range, an
27792
+ // active cell set to today would have no matching DOM element and keyboard
27793
+ // focus could not enter the calendar.
27794
+
27795
+ if (this.centralDateObject) {
27796
+ const centralMonth = this.centralDateObject.getMonth();
27797
+ const centralYear = this.centralDateObject.getFullYear();
27798
+ const todayDate = new Date(now * 1000);
27799
+ const todayMonth = todayDate.getMonth();
27800
+ const todayYear = todayDate.getFullYear();
27801
+
27802
+ // Today is outside the centralDate's month — scan for an enabled date
27803
+ // within the visible month instead.
27804
+ if (todayMonth !== centralMonth || todayYear !== centralYear) {
27805
+ const visibleStart = new Date(centralYear, centralMonth, 1);
27806
+ visibleStart.setHours(0, 0, 0, 0);
27807
+ const visibleEnd = new Date(centralYear, centralMonth + 1, 0); // last day of month
27808
+ visibleEnd.setHours(0, 0, 0, 0);
27809
+ const startTs = Math.floor(visibleStart.getTime() / 1000);
27810
+ const daysInMonth = visibleEnd.getDate();
27811
+
27812
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
27813
+ const ts = addDays(startTs, idx);
27814
+ if (isEnabled(ts)) {
27815
+ return ts;
27816
+ }
27817
+ }
27818
+
27819
+ // No enabled date in the visible month — fall back to first in-range
27820
+ // date in the month so focus still lands on a focusable cell.
27821
+ for (let idx = 0; idx < daysInMonth; idx += 1) {
27822
+ const ts = addDays(startTs, idx);
27823
+ if (isInRange(ts)) {
27824
+ return ts;
27825
+ }
27826
+ }
27827
+ }
27828
+ }
27829
+
27830
+ if (isEnabled(now)) {
27831
+ return now;
27832
+ }
27833
+
27834
+ // When a centralDate is configured (or inferred), constrain the scan to the
27835
+ // rendered month(s) first so a single-month calendar does not pick a date
27836
+ // that has no DOM cell. Determine the visible range based on centralDate and
27837
+ // the number of rendered months.
27838
+ const renderedMonths = Math.max(this.numCalendars, 1);
27839
+ const visibleAnchor = this.centralDateObject ?? new Date(now * 1000);
27840
+ const visMonthStart = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth(), 1);
27841
+ visMonthStart.setHours(0, 0, 0, 0);
27842
+ const visMonthEnd = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth() + renderedMonths, 0);
27843
+ visMonthEnd.setHours(0, 0, 0, 0);
27844
+ const visStartTs = Math.floor(visMonthStart.getTime() / 1000);
27845
+ const visEndTs = Math.floor(visMonthEnd.getTime() / 1000);
27846
+ const visDays = Math.round((visEndTs - visStartTs) / 86400) + 1;
27847
+
27848
+ // Scan visible months for an enabled date.
27849
+ for (let idx = 0; idx < visDays; idx += 1) {
27850
+ const ts = addDays(visStartTs, idx);
27851
+ if (isEnabled(ts)) {
27852
+ return ts;
27853
+ }
27854
+ }
27855
+
27856
+ // No enabled date in visible months — try an in-range (focusable) date so
27857
+ // keyboard focus still has a tabindex="0" target.
27858
+ for (let idx = 0; idx < visDays; idx += 1) {
27859
+ const ts = addDays(visStartTs, idx);
27860
+ if (isInRange(ts)) {
27861
+ return ts;
27862
+ }
27863
+ }
27864
+
27865
+ // 3. First future enabled date (scan forward from tomorrow, capped by max and MAX_SCAN_DAYS).
27866
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
27867
+ const ts = addDays(now, idx);
27868
+ if (Number.isFinite(maxTs) && ts > maxTs) {
27869
+ break;
27870
+ }
27871
+ if (isEnabled(ts)) {
27872
+ return ts;
27873
+ }
27874
+ }
27875
+
27876
+ // 4. First previous enabled date (scan backward from yesterday, capped by min and MAX_SCAN_DAYS).
27877
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
27878
+ const ts = addDays(now, -idx);
27879
+ if (Number.isFinite(minTs) && ts < minTs) {
27880
+ break;
27881
+ }
27882
+ if (isEnabled(ts)) {
27883
+ return ts;
27884
+ }
27885
+ }
27886
+
27887
+ // 5. If scans missed (e.g. min/max range is far from today), fall back to
27888
+ // the first enabled date in the [min, max] range.
27889
+ if (Number.isFinite(minTs) && Number.isFinite(maxTs)) {
27890
+ let ts = minTs;
27891
+ for (let idx = 0; ts <= maxTs; idx += 1) {
27892
+ if (isEnabled(ts)) {
27893
+ return ts;
27894
+ }
27895
+ ts = addDays(minTs, idx + 1);
27896
+ }
27897
+ }
27898
+
27899
+ // 5b. Finite min with unbounded max (e.g. minDate far in the future):
27900
+ // scan forward from min for up to MAX_SCAN_DAYS.
27901
+ if (Number.isFinite(minTs) && !Number.isFinite(maxTs)) {
27902
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
27903
+ const ts = addDays(minTs, idx);
27904
+ if (isEnabled(ts)) {
27905
+ return ts;
27906
+ }
27907
+ }
27908
+ }
27909
+
27910
+ // 5c. Unbounded min with a finite max far in the past (e.g. birth-date picker):
27911
+ // scan backward from max for up to MAX_SCAN_DAYS.
27912
+ if (!Number.isFinite(minTs) && Number.isFinite(maxTs)) {
27913
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
27914
+ const ts = addDays(maxTs, -idx);
27915
+ if (isEnabled(ts)) {
27916
+ return ts;
27917
+ }
27918
+ }
27919
+ }
27920
+
27921
+ // 6. All dates are blackout — fall back to the first in-range date so focus
27922
+ // still lands on a focusable (but not selectable) cell.
27923
+ if (Number.isFinite(minTs) && isInRange(minTs)) {
27924
+ return minTs;
27925
+ }
27926
+ if (isInRange(now)) {
27927
+ return now;
27928
+ }
27929
+
27930
+ return undefined;
27931
+ }
27932
+
27933
+ /**
27934
+ * Checks if a target date (unix seconds) is within the configured [min, max] range.
27935
+ * Returns false if the date falls outside the range, preventing navigation
27936
+ * to months where all dates are disabled.
27937
+ * @private
27938
+ * @param {Number} targetTs - Unix timestamp in seconds.
27939
+ * @returns {Boolean} True if the date is within range.
27940
+ */
27941
+ isDateInRange(targetTs) {
27942
+ const rawMin = this.minDateObject?.getTime() / 1000;
27943
+ const rawMax = this.maxDateObject?.getTime() / 1000;
27944
+ if (Number.isFinite(rawMin) && targetTs < rawMin) {
27945
+ return false;
27946
+ }
27947
+ if (Number.isFinite(rawMax) && targetTs > rawMax) {
27948
+ return false;
27949
+ }
27950
+ return true;
27951
+ }
27952
+
27953
+ /**
27954
+ * Handles arrow key navigation on the calendar grid wrapper.
27955
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
27956
+ * and the visual active-cell indicator change.
27957
+ * @private
27958
+ * @param {KeyboardEvent} event - The keyboard event.
27959
+ * @returns {void}
27960
+ */
27961
+ handleGridKeyDown(event) {
27962
+ const { key } = event;
27963
+ const actionKeys = [
27964
+ 'ArrowRight',
27965
+ 'ArrowLeft',
27966
+ 'ArrowDown',
27967
+ 'ArrowUp',
27968
+ 'Enter',
27969
+ ' '
27970
+ ];
27971
+
27972
+ if (!actionKeys.includes(key)) {
27973
+ return;
27974
+ }
27975
+
27976
+ event.preventDefault();
27977
+
27978
+ const allCells = this.getAllFocusableCells();
27979
+ if (allCells.length === 0) {
27980
+ return;
27981
+ }
27982
+
27983
+ const activeCell = allCells.find((cell) => cell.active);
27984
+ if (!activeCell) {
27985
+ return;
27986
+ }
27987
+
27988
+ // Handle Enter/Space to select the active cell
27989
+ if (key === 'Enter' || key === ' ') {
27990
+ activeCell.handleTap();
27991
+ return;
27992
+ }
27993
+
27994
+ const activeIndex = allCells.indexOf(activeCell);
27995
+
27996
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
27997
+ const direction = key === 'ArrowRight' ? 1 : -1;
27998
+ const targetIndex = activeIndex + direction;
27999
+
28000
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
28001
+ // Target cell exists in rendered months
28002
+ this.setActiveCell(allCells[targetIndex].day.date);
28003
+ this.scrollToActiveCell();
28004
+ // Dispatch focus event for the cell so live region + range preview update
28005
+ this.handleCellFocused({ detail: { date: allCells[targetIndex].day.date } });
28006
+ } else {
28007
+ // At boundary — need to navigate to next/prev month
28008
+ const navDir = direction === 1 ? 'next' : 'prev';
28009
+ const targetDate = new Date(activeCell.day.date * 1000);
28010
+ targetDate.setDate(targetDate.getDate() + direction);
28011
+ targetDate.setHours(0, 0, 0, 0);
28012
+ const targetTs = Math.floor(targetDate.getTime() / 1000);
28013
+
28014
+ if (this.isDateInRange(targetTs) && ((navDir === 'next' && this.showNextMonthBtn) || (navDir === 'prev' && this.showPrevMonthBtn))) { // eslint-disable-line no-extra-parens
28015
+
28016
+ if (navDir === 'next') {
28017
+ this.handleNextMonth({ skipActiveUpdate: true });
28018
+ } else {
28019
+ this.handlePrevMonth({ skipActiveUpdate: true });
28020
+ }
28021
+ requestAnimationFrame(() => {
28022
+ requestAnimationFrame(() => {
28023
+ const cells = this.getAllFocusableCells();
28024
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
28025
+ if (target) {
28026
+ this.setActiveCell(target.day.date);
28027
+ this.handleCellFocused({ detail: { date: target.day.date } });
28028
+ } else if (cells.length > 0) {
28029
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
28030
+ this.setActiveCell(fallback.day.date);
28031
+ this.handleCellFocused({ detail: { date: fallback.day.date } });
28032
+ }
28033
+ // Re-focus grid wrapper after month change re-render
28034
+ this.focusActiveCell();
28035
+ });
28036
+ });
28037
+ }
28038
+ }
28039
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
28040
+ const increment = key === 'ArrowDown' ? 7 : -7;
28041
+ const currentDate = new Date(activeCell.day.date * 1000);
28042
+ currentDate.setDate(currentDate.getDate() + increment);
28043
+ currentDate.setHours(0, 0, 0, 0);
28044
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
28045
+
28046
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
28047
+
28048
+ if (targetCell) {
28049
+ this.setActiveCell(targetCell.day.date);
28050
+ this.scrollToActiveCell();
28051
+ this.handleCellFocused({ detail: { date: targetCell.day.date } });
28052
+ } else if (this.isDateInRange(targetDate)) {
28053
+ // Target might be in an unrendered month
28054
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
28055
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
28056
+ if (navDirection === 'next') {
28057
+ this.handleNextMonth({ skipActiveUpdate: true });
28058
+ } else {
28059
+ this.handlePrevMonth({ skipActiveUpdate: true });
28060
+ }
28061
+ requestAnimationFrame(() => {
28062
+ requestAnimationFrame(() => {
28063
+ const cells = this.getAllFocusableCells();
28064
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28065
+ if (target) {
28066
+ this.setActiveCell(target.day.date);
28067
+ this.handleCellFocused({ detail: { date: target.day.date } });
28068
+ } else if (cells.length > 0) {
28069
+ let nearest = null;
28070
+
28071
+ if (navDirection === 'next') {
28072
+ [nearest] = cells;
28073
+ } else {
28074
+ nearest = cells[cells.length - 1];
28075
+ }
28076
+ this.setActiveCell(nearest.day.date);
28077
+ this.handleCellFocused({ detail: { date: nearest.day.date } });
28078
+ }
28079
+ this.focusActiveCell();
28080
+ });
28081
+ });
28082
+ }
28083
+ }
28084
+ }
28085
+ }
28086
+
28087
+ /**
28088
+ * Handles cross-month boundary navigation events from month components.
28089
+ * @private
28090
+ * @param {CustomEvent} event - The boundary event with direction and source date info.
28091
+ * @returns {void}
28092
+ */
28093
+ handleMonthBoundary(event) {
28094
+ const { direction, fromDate, key } = event.detail;
28095
+
28096
+ if (key === 'ArrowRight' || key === 'ArrowLeft') {
28097
+ // Linear navigation: find adjacent focusable cell across months
28098
+ const allCells = this.getAllFocusableCells();
28099
+ const currentIndex = allCells.findIndex((cell) => cell.day && cell.day.date === fromDate);
28100
+
28101
+ if (currentIndex === -1) {
28102
+ return;
28103
+ }
28104
+
28105
+ let targetIndex = -1;
28106
+ if (direction === 'next') {
28107
+ targetIndex = currentIndex + 1;
28108
+ }
28109
+
28110
+ if (targetIndex >= 0 && targetIndex < allCells.length) {
28111
+ const targetCell = allCells[targetIndex];
28112
+ this.setActiveCell(targetCell.day.date);
28113
+ this.scrollToActiveCell();
28114
+ this.focusActiveCell();
28115
+ } else if (direction === 'next' && this.showNextMonthBtn) {
28116
+ // Navigate to next month and focus the computed next date.
28117
+ // Using the target date (fromDate + 1 day) instead of cells[0]
28118
+ // avoids jumping backward in range datepickers where cells[0]
28119
+ // belongs to the previous (still-rendered) month.
28120
+ const nextDate = new Date(fromDate * 1000);
28121
+ nextDate.setDate(nextDate.getDate() + 1);
28122
+ nextDate.setHours(0, 0, 0, 0);
28123
+ const nextTs = Math.floor(nextDate.getTime() / 1000);
28124
+
28125
+ if (!this.isDateInRange(nextTs)) {
28126
+ return;
28127
+ }
28128
+
28129
+ this.handleNextMonth({ skipActiveUpdate: true });
28130
+ requestAnimationFrame(() => {
28131
+ requestAnimationFrame(() => {
28132
+ const cells = this.getAllFocusableCells();
28133
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
28134
+ if (target) {
28135
+ this.setActiveCell(target.day.date);
28136
+ this.focusActiveCell();
28137
+ } else if (cells.length > 0) {
28138
+ // Fallback: first cell of the last rendered month
28139
+ this.setActiveCell(cells[cells.length - 1].day.date);
28140
+ this.focusActiveCell();
28141
+ }
28142
+ });
28143
+ });
28144
+ } else if (direction === 'prev' && this.showPrevMonthBtn) {
28145
+ // Navigate to previous month and focus the computed previous date.
28146
+ const prevDate = new Date(fromDate * 1000);
28147
+ prevDate.setDate(prevDate.getDate() - 1);
28148
+ prevDate.setHours(0, 0, 0, 0);
28149
+ const prevTs = Math.floor(prevDate.getTime() / 1000);
28150
+
28151
+ if (!this.isDateInRange(prevTs)) {
28152
+ return;
28153
+ }
28154
+
28155
+ this.handlePrevMonth({ skipActiveUpdate: true });
28156
+ requestAnimationFrame(() => {
28157
+ requestAnimationFrame(() => {
28158
+ const cells = this.getAllFocusableCells();
28159
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
28160
+ if (target) {
28161
+ this.setActiveCell(target.day.date);
28162
+ this.focusActiveCell();
28163
+ } else if (cells.length > 0) {
28164
+ // Fallback: last cell of the first rendered month
28165
+ this.setActiveCell(cells[0].day.date);
28166
+ this.focusActiveCell();
28167
+ }
28168
+ });
28169
+ });
28170
+ }
28171
+ } else if (key === 'ArrowDown' || key === 'ArrowUp') {
28172
+ // Vertical navigation: find same day-of-week +/- 7 days
28173
+ // Use Date arithmetic instead of fixed seconds to handle DST correctly
28174
+ const increment = key === 'ArrowDown' ? 7 : -7;
28175
+ const currentDate = new Date(fromDate * 1000);
28176
+ currentDate.setDate(currentDate.getDate() + increment);
28177
+ currentDate.setHours(0, 0, 0, 0);
28178
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
28179
+
28180
+ const allCells = this.getAllFocusableCells();
28181
+ const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
28182
+
28183
+ if (targetCell) {
28184
+ this.setActiveCell(targetCell.day.date);
28185
+ this.scrollToActiveCell();
28186
+ this.focusActiveCell();
28187
+ } else if (this.isDateInRange(targetDate)) {
28188
+ // Target might be in an unrendered month, navigate there
28189
+ const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
28190
+ if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
28191
+ if (navDirection === 'next') {
28192
+ this.handleNextMonth({ skipActiveUpdate: true });
28193
+ } else {
28194
+ this.handlePrevMonth({ skipActiveUpdate: true });
28195
+ }
28196
+ requestAnimationFrame(() => {
28197
+ requestAnimationFrame(() => {
28198
+ const cells = this.getAllFocusableCells();
28199
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28200
+ if (target) {
28201
+ this.setActiveCell(target.day.date);
28202
+ this.focusActiveCell();
28203
+ } else if (cells.length > 0) {
28204
+ // Clamp to nearest focusable cell
28205
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
28206
+ this.setActiveCell(nearest.day.date);
28207
+ this.focusActiveCell();
28208
+ }
28209
+ });
28210
+ });
28211
+ }
28212
+ }
28213
+ }
28214
+ }
28215
+
28216
+ /**
28217
+ * Handles cell activation events from month components.
28218
+ * @private
28219
+ * @param {CustomEvent} event - The activation event with target date.
28220
+ * @returns {void}
28221
+ */
28222
+ handleCellActivate(event) {
28223
+ const { date } = event.detail;
28224
+ this.setActiveCell(date);
28225
+
28226
+ // Don't call focusActiveCell() here. The tap/click already placed
28227
+ // focus on the cell button, and moving it to #calendarGrid would
28228
+ // trigger focusout on the button, closing any open popover on the
28229
+ // cell. Keyboard events are composed and still bubble through
28230
+ // shadow DOM boundaries to the grid's @keydown handler, so
28231
+ // subsequent keyboard navigation continues to work.
28232
+ }
28233
+
28234
+ /**
28235
+ * Handles focus events from calendar cells.
28236
+ * Updates the live region with an SR announcement and triggers
28237
+ * the imperative range preview if applicable.
28238
+ * @private
28239
+ * @param {CustomEvent} event - The calendar-cell-focused event.
28240
+ * @returns {void}
28241
+ */
28242
+ handleCellFocused(event) {
28243
+ const { date } = event.detail;
28244
+ if (date === null) {
28245
+ return;
28246
+ }
28247
+
28248
+ // With aria-activedescendant, the button no longer receives native focus,
28249
+ // so we use the debounced live region for the full context announcement.
28250
+ const announcement = this.buildFocusAnnouncement(date);
28251
+ this.announceFocusDebounced(announcement);
28252
+
28253
+ // Update the range preview imperatively if in range-preview mode.
28254
+ this.updateRangePreview(date);
28255
+ }
28256
+
28257
+ /**
28258
+ * Builds a full SR announcement string for a focused cell date.
28259
+ * Includes the localized date, range position, popover content,
28260
+ * and blackout status.
28261
+ * @private
28262
+ * @param {Number} date - Unix timestamp (seconds) of the focused cell.
28263
+ * @returns {String} The announcement string.
28264
+ */
28265
+ buildFocusAnnouncement(date) {
28266
+ let label = this.formatAnnouncementDate(date);
28267
+
28268
+ // Append date slot content (e.g. prices) if present.
28269
+ const dateObj = new Date(date * 1000);
28270
+ const mm = String(dateObj.getMonth() + 1).padStart(2, '0');
28271
+ const dd = String(dateObj.getDate()).padStart(2, '0');
28272
+ const yyyy = dateObj.getFullYear();
28273
+ const dateStr = `${mm}_${dd}_${yyyy}`;
28274
+ const dateSlotEl = this.datepicker?.querySelector(`[slot="date_${dateStr}"]`);
28275
+ if (dateSlotEl) {
28276
+ const text = dateSlotEl.innerText?.trim();
28277
+ if (text) {
28278
+ label += `, ${text}`;
28279
+ }
28280
+ }
28281
+
28282
+ // Append popover content if present.
28283
+ const popoverEl = this.datepicker?.querySelector(`[slot="popover_${dateStr}"]`);
28284
+ if (popoverEl) {
28285
+ const text = popoverEl.innerText?.trim();
28286
+ if (text) {
28287
+ label += `, ${text}`;
28288
+ }
28289
+ }
28290
+
28291
+ // Append range position context.
28292
+ if (this.datepicker?.hasAttribute('range')) {
28293
+ const rangeLabel = this.getRangePositionLabel(date);
28294
+ if (rangeLabel) {
28295
+ label += `, ${rangeLabel}`;
28296
+ }
28297
+ }
28298
+
28299
+ // Append blackout label.
28300
+ if (this.isDateBlackout(date)) {
28301
+ label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
28302
+ }
28303
+
28304
+ return label;
28305
+ }
28306
+
28307
+ /**
28308
+ * Determines the range position label for a given date.
28309
+ * @private
28310
+ * @param {Number} date - Unix timestamp (seconds).
28311
+ * @returns {String|null} The range position label, or null.
28312
+ */
28313
+ getRangePositionLabel(date) {
28314
+ const parsedFrom = Number.parseInt(this.dateFrom, 10);
28315
+ if (!Number.isFinite(parsedFrom)) {
28316
+ return null;
28317
+ }
28318
+
28319
+ const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
28320
+ const parsedTo = Number.parseInt(this.dateTo, 10);
28321
+ const hasTo = Number.isFinite(parsedTo);
28322
+ const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
28323
+
28324
+ if (date === departTs) {
28325
+ return this.datepicker.rangeLabelStart || 'range start';
28326
+ }
28327
+ if (hasTo && date === returnTs) {
28328
+ return this.datepicker.rangeLabelEnd || 'range end';
28329
+ }
28330
+ if (date < departTs) {
28331
+ return this.datepicker.rangeLabelBeforeRange || 'before range';
28332
+ }
28333
+ if (hasTo && date > departTs && date < returnTs) {
28334
+ return this.datepicker.rangeLabelInRange || 'in range';
28335
+ }
28336
+ return this.datepicker.rangeLabelAfterRange || 'after range';
28337
+ }
28338
+
28339
+ /**
28340
+ * Checks whether a given date is a blackout date.
28341
+ * @private
28342
+ * @param {Number} dateTs - Unix timestamp (seconds).
28343
+ * @returns {Boolean} True if the date is blacked out.
28344
+ */
28345
+ isDateBlackout(dateTs) {
28346
+ // Check legacy disabledDays.
28347
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
28348
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
28349
+ return true;
28350
+ }
28351
+ }
28352
+
28353
+ // Check ISO blackoutDates.
28354
+ const blackoutDates = this.datepicker?.blackoutDates;
28355
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
28356
+ const date = new Date(dateTs * 1000);
28357
+ const yyyy = date.getFullYear();
28358
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
28359
+ const dd = String(date.getDate()).padStart(2, '0');
28360
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
28361
+ return true;
28362
+ }
28363
+ }
28364
+
28365
+ return false;
28366
+ }
28367
+
28368
+ /**
28369
+ * Updates the range preview classes imperatively across all cells.
28370
+ * Only active when in range mode with dateFrom set and dateTo not yet set.
28371
+ * @private
28372
+ * @param {Number} hoveredDate - Unix timestamp of the hovered/focused date.
28373
+ * @returns {void}
28374
+ */
28375
+ updateRangePreview(hoveredDate) {
28376
+ if (this.noRange || !this.dateFrom || this.dateTo) {
28377
+ return;
28378
+ }
28379
+
28380
+ const parsedDateFrom = parseInt(this.dateFrom, 10);
28381
+ const allCells = this.getAllFocusableCells();
28382
+
28383
+ allCells.forEach((cell) => {
28384
+ cell.updateRangePreviewClasses(hoveredDate, parsedDateFrom);
28385
+ });
28386
+ }
28387
+
28388
+ /**
28389
+ * Clears range preview classes from all cells.
28390
+ * @private
28391
+ * @param {Object} [options] - Optional settings.
28392
+ * @param {boolean} [options.force=false] - When true, clears classes even
28393
+ * when both dateFrom and dateTo are set. Used by month nav handlers
28394
+ * since the subsequent re-render re-applies classMap-managed classes,
28395
+ * while `lastHoveredDate` (not in classMap) would otherwise persist.
28396
+ * @returns {void}
28397
+ */
28398
+ clearRangePreview(options) {
28399
+ const opts = options instanceof Event ? {} : options || {};
28400
+ if (!opts.force && this.dateFrom && this.dateTo) {
28401
+ return;
28402
+ }
28403
+
28404
+ const allCells = this.getAllFocusableCells();
28405
+ allCells.forEach((cell) => {
28406
+ cell.clearRangePreviewClasses();
28407
+ });
28408
+ }
28409
+
28410
+ /**
28411
+ * Overrides the base class handler to prevent setting `this.hoveredDate`
28412
+ * as a reactive property. Instead, handles the range preview imperatively.
28413
+ * @private
28414
+ * @param {CustomEvent} event - The hovered-date-changed event from a month.
28415
+ * @returns {void}
28416
+ */
28417
+ hoveredDateChanged(event) {
28418
+ const hoveredDate = event.detail.value;
28419
+ this.updateRangePreview(hoveredDate);
28420
+ }
28421
+
28422
+ /**
28423
+ * Scrolls the calendar to ensure the month containing the active cell is visible.
28424
+ * @private
28425
+ * @returns {void}
28426
+ */
28427
+ scrollToActiveCell() {
28428
+ if (this.activeCellDate === null || this.activeCellDate === undefined) {
28429
+ return;
28430
+ }
28431
+
28432
+ const date = new Date(this.activeCellDate * 1000);
28433
+ const month = date.getMonth() + 1;
28434
+ const year = date.getFullYear();
28435
+ const selector = `#month-${month}-${year}`;
28436
+ const monthElem = this.shadowRoot.querySelector(selector);
28437
+
28438
+ if (monthElem) {
28439
+ const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
28440
+ monthElem.scrollIntoView({ block: 'nearest',
28441
+ behavior: prefersReducedMotion ? 'instant' : 'smooth' });
28442
+ }
28443
+ }
28444
+
28445
+ /**
28446
+ * Returns (and lazily creates) an aria-live region inside the dropdown's
28447
+ * <dialog> element. This placement is critical for two reasons:
28448
+ *
28449
+ * 1. Inside the dialog's accessible scope — dialog.showModal() makes
28450
+ * everything outside the top-layer dialog inert, and desktop modal
28451
+ * mode uses _setPageInert() on document.body siblings. A live region
28452
+ * on document.body would be invisible to screen readers in both cases.
28453
+ *
28454
+ * 2. Not nested in shadow DOM — Chrome inconsistently observes aria-live
28455
+ * mutations inside shadow DOM across machines and versions. The dialog
28456
+ * element is only one shadow root deep (the dropdown bib's shadow DOM),
28457
+ * which Chrome handles reliably. The calendar's own shadow DOM (nested
28458
+ * inside the bib via slotting) is two+ levels deep and unreliable.
28459
+ *
28460
+ * @private
28461
+ * @returns {HTMLElement} The live region element.
28462
+ */
28463
+ getOrCreateLiveRegion() {
28464
+ if (this._liveRegion && this._liveRegion.isConnected) {
28465
+ return this._liveRegion;
28466
+ }
28467
+
28468
+ // Access the dialog element inside the dropdown bib's shadow DOM.
28469
+ const dialog = this.dropdown?.bibContent?.shadowRoot?.querySelector('dialog');
28470
+ if (!dialog) {
28471
+ return null;
28472
+ }
28473
+
28474
+ // Check if we already created one for this calendar instance.
28475
+ const regionId = `auro-calendar-live-${this._calendarInstanceId}`;
28476
+ const existing = dialog.querySelector(`#${regionId}`);
28477
+ if (existing) {
28478
+ this._liveRegion = existing;
28479
+ return existing;
28480
+ }
28481
+
28482
+ const el = document.createElement('div');
28483
+ el.id = regionId;
28484
+ el.setAttribute('aria-live', 'assertive');
28485
+ el.setAttribute('aria-atomic', 'true');
28486
+ 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;';
28487
+ dialog.appendChild(el);
28488
+
28489
+ this._liveRegion = el;
28490
+ return el;
28491
+ }
28492
+
28493
+ /**
28494
+ * Removes the live region when this calendar is disconnected.
28495
+ * @private
28496
+ * @returns {void}
28497
+ */
28498
+ disconnectedCallback() {
28499
+ super.disconnectedCallback();
28500
+
28501
+ // Cancel any pending announcements so they don't fire after teardown.
28502
+ if (this._announceRafId) {
28503
+ cancelAnimationFrame(this._announceRafId);
28504
+ this._announceRafId = null;
28505
+ }
28506
+ if (this._focusAnnounceTimer) {
28507
+ clearTimeout(this._focusAnnounceTimer);
28508
+ this._focusAnnounceTimer = null;
28509
+ }
28510
+
28511
+ if (this._liveRegion && this._liveRegion.isConnected) {
28512
+ this._liveRegion.remove();
28513
+ }
28514
+ this._liveRegion = null;
28515
+ }
28516
+
28517
+ /**
28518
+ * Announces a date selection or focus change via the live region.
28519
+ * Uses requestAnimationFrame to ensure the clear and set happen in
28520
+ * separate rendering frames — Chrome may coalesce synchronous or
28521
+ * microtask-deferred mutations into a single accessibility tree update.
28522
+ * @private
28523
+ * @param {String} dateStr - The localized date string to announce.
28524
+ * @returns {void}
28525
+ */
28526
+ announceSelection(dateStr) {
28527
+ // Cancel any previously queued rAF announcement so a rapid
28528
+ // sequence of calls (e.g. bib open → month nav) only announces
28529
+ // the last one.
28530
+ if (this._announceRafId) {
28531
+ cancelAnimationFrame(this._announceRafId);
28532
+ }
28533
+ const liveRegion = this.getOrCreateLiveRegion();
28534
+ if (!liveRegion) {
28535
+ return;
28536
+ }
28537
+
28538
+ // Double-rAF: clear in frame N, set in frame N+1. Chrome batches
28539
+ // accessibility tree mutations within a single animation frame, so
28540
+ // a same-frame clear+set can be coalesced into a no-op if the new
28541
+ // value matches a recently announced string. Splitting across two
28542
+ // frames guarantees Chrome sees two distinct tree states and fires
28543
+ // a new accessibility event for the content change.
28544
+ liveRegion.textContent = '';
28545
+ this._announceRafId = requestAnimationFrame(() => {
28546
+ this._announceRafId = requestAnimationFrame(() => {
28547
+ liveRegion.textContent = dateStr;
28548
+ this._announceRafId = null;
28549
+ });
28550
+ });
28551
+ }
28552
+
28553
+ /**
28554
+ * Debounced version of announceSelection for focus navigation.
28555
+ * Uses the assertive live region with a 150ms debounce so only the
28556
+ * final cell after rapid arrow-key traversal is announced. We
28557
+ * originally tried aria-live="polite" here, but VoiceOver treats
28558
+ * polite as "wait until idle" — which never happens during active
28559
+ * keyboard navigation — so the announcements were silently dropped.
28560
+ * @private
28561
+ * @param {String} dateStr - The localized date string to announce.
28562
+ * @returns {void}
28563
+ */
28564
+ announceFocusDebounced(dateStr) {
28565
+ if (this._focusAnnounceTimer) {
28566
+ clearTimeout(this._focusAnnounceTimer);
28567
+ }
28568
+ this._focusAnnounceTimer = setTimeout(() => {
28569
+ this.announceSelection(dateStr);
28570
+ this._focusAnnounceTimer = null;
28571
+ }, 150);
28572
+ }
28573
+
28574
+ /**
28575
+ * Formats a Unix timestamp (seconds) as a localized date string for SR announcements.
28576
+ * @private
28577
+ * @param {String|Number} timestamp - Unix timestamp in seconds.
28578
+ * @returns {String} Localized date string.
28579
+ */
28580
+ formatAnnouncementDate(timestamp) {
28581
+ const date = new Date(parseInt(timestamp, 10) * 1000);
28582
+ const localeCode = this.locale?.code || undefined;
28583
+ const formatter = new Intl.DateTimeFormat(localeCode, {
28584
+ weekday: 'long',
28585
+ year: 'numeric',
28586
+ month: 'long',
28587
+ day: 'numeric'
28588
+ });
28589
+ return formatter.format(date);
28590
+ }
28591
+
27064
28592
  firstUpdated() {
28593
+
27065
28594
  this.addEventListener('date-from-changed', () => {
27066
28595
  this.dispatchEvent(new CustomEvent('auroCalendar-dateSelected', {
27067
28596
  bubbles: true,
@@ -27080,6 +28609,21 @@ class AuroCalendar extends RangeDatepicker {
27080
28609
  composed: true,
27081
28610
  }));
27082
28611
  });
28612
+
28613
+ // Listen for cross-month boundary navigation events
28614
+ this.addEventListener('calendar-month-boundary', (event) => {
28615
+ this.handleMonthBoundary(event);
28616
+ });
28617
+
28618
+ // Listen for cell activation events
28619
+ this.addEventListener('calendar-cell-activate', (event) => {
28620
+ this.handleCellActivate(event);
28621
+ });
28622
+
28623
+ // Listen for cell focus events (SR announcements + range preview)
28624
+ this.addEventListener('calendar-cell-focused', (event) => {
28625
+ this.handleCellFocused(event);
28626
+ });
27083
28627
  }
27084
28628
 
27085
28629
  injectSlot(slotName, nodes) {
@@ -27104,7 +28648,37 @@ class AuroCalendar extends RangeDatepicker {
27104
28648
  }
27105
28649
 
27106
28650
  if (changedProperties.has('visible')) {
27107
- setTimeout(() => this.requestUpdate());
28651
+ if (this.visible) {
28652
+ // Compute the active date eagerly from data — no DOM needed.
28653
+ if (this.activeCellDate == null) { // eslint-disable-line no-eq-null, eqeqeq
28654
+ this.activeCellDate = this.computeActiveDate();
28655
+ }
28656
+
28657
+ this.requestUpdate();
28658
+ } else {
28659
+ this.requestUpdate();
28660
+ }
28661
+ }
28662
+
28663
+ // Announce date selection to screen readers when user clicks/selects a cell
28664
+ const isCellClick = this.datepicker?.wasCellClick || this.datepicker?.cellClickActive;
28665
+
28666
+ if (changedProperties.has('dateFrom') && this.dateFrom && isCellClick) {
28667
+ const dateStr = this.formatAnnouncementDate(this.dateFrom);
28668
+ const isRange = !this.noRange;
28669
+
28670
+ if (isRange) {
28671
+ const rangeLabel = this.datepicker.rangeLabelStart || 'range start';
28672
+ this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
28673
+ } else {
28674
+ this.announceSelection(`${dateStr}, selected`);
28675
+ }
28676
+ }
28677
+
28678
+ if (changedProperties.has('dateTo') && this.dateTo && isCellClick) {
28679
+ const dateStr = this.formatAnnouncementDate(this.dateTo);
28680
+ const rangeLabel = this.datepicker.rangeLabelEnd || 'range end';
28681
+ this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
27108
28682
  }
27109
28683
  }
27110
28684
 
@@ -27113,6 +28687,7 @@ class AuroCalendar extends RangeDatepicker {
27113
28687
  <${this.bibtemplateTag}
27114
28688
  ?large="${this.largeFullscreenHeadline}"
27115
28689
  ?isFullscreen="${this.isFullscreen}"
28690
+ ?showFooter="${!this.isFullscreen && this.dropdown?.desktopModal}"
27116
28691
  @close-click="${this.utilCal.requestDismiss}">
27117
28692
  <span slot="ariaLabel.close">${this.slots["ariaLabel.bib.close"]}</span>
27118
28693
 
@@ -27130,24 +28705,26 @@ class AuroCalendar extends RangeDatepicker {
27130
28705
  </div>
27131
28706
  </div>
27132
28707
 
27133
- <div class="calendarWrapper">
27134
- <div class="calendars">
27135
- ${this.renderAllCalendars()}
27136
- </div>
28708
+ <div class="calendarWrapper ${!this.isFullscreen && this.dropdown?.desktopModal ? 'hasFooter' : ''}">
27137
28709
  <div class="calendarNavButtons">
27138
28710
  ${this.showPrevMonthBtn ? u$c`
27139
- <button tabIndex="-1" class="calendarNavBtn prevMonth" @click="${this.handlePrevMonth}">
28711
+ <button tabIndex="0" class="calendarNavBtn prevMonth" aria-label="${this.datepicker?.navLabelPrevMonth || 'Previous month'}" @click="${this.handlePrevMonth}">
27140
28712
  ${this.util.generateIconHtml(chevronLeft)}
27141
28713
  </button>
27142
28714
  ` : undefined}
27143
28715
  ${this.showNextMonthBtn ? u$c`
27144
- <button tabIndex="-1" class="calendarNavBtn nextMonth" @click="${this.handleNextMonth}">
28716
+ <button tabIndex="0" class="calendarNavBtn nextMonth" aria-label="${this.datepicker?.navLabelNextMonth || 'Next month'}" @click="${this.handleNextMonth}">
27145
28717
  ${this.util.generateIconHtml(chevronRight)}
27146
28718
  </button>
27147
28719
  ` : undefined}
27148
28720
  </div>
28721
+ <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}">
28722
+ ${this.renderAllCalendars()}
28723
+ </div>
27149
28724
  </div>
27150
28725
 
28726
+ <div id="calendar-live-region" aria-live="assertive" aria-atomic="true" class="sr-only"></div>
28727
+
27151
28728
  <${this.buttonTag} slot="footer" fluid @click="${this.utilCal.requestDismiss}">Done</${this.buttonTag}>
27152
28729
  </${this.bibtemplateTag}>
27153
28730
  `;
@@ -30395,7 +31972,7 @@ function applyKeyboardStrategy$1$2(component, strategy, options = {}) {
30395
31972
  });
30396
31973
  }
30397
31974
 
30398
- var styleCss$2$1$2 = i$7`: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}`;
31975
+ var styleCss$2$1$2 = i$7`: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}`;
30399
31976
 
30400
31977
  var colorCss$2$7 = i$7`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
30401
31978
 
@@ -31026,7 +32603,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$4 {
31026
32603
  }
31027
32604
  };
31028
32605
 
31029
- var formkitVersion$1$2 = '202606081518';
32606
+ var formkitVersion$1$2 = '202606081904';
31030
32607
 
31031
32608
  let AuroElement$2$2 = class AuroElement extends i$4 {
31032
32609
  static get properties() {
@@ -31206,6 +32783,7 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
31206
32783
  _intializeDefaults() {
31207
32784
  this.appearance = 'default';
31208
32785
  this.chevron = false;
32786
+ this.desktopModal = false;
31209
32787
  this.disabled = false;
31210
32788
  this.disableKeyboardHandling = false;
31211
32789
  this.error = false;
@@ -31386,6 +32964,14 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
31386
32964
  reflect: true
31387
32965
  },
31388
32966
 
32967
+ /**
32968
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
32969
+ */
32970
+ desktopModal: {
32971
+ type: Boolean,
32972
+ reflect: true
32973
+ },
32974
+
31389
32975
  /**
31390
32976
  * If declared, the dropdown will only show by calling the API .show() public method.
31391
32977
  */
@@ -31673,6 +33259,15 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
31673
33259
 
31674
33260
  disconnectedCallback() {
31675
33261
  super.disconnectedCallback();
33262
+ this._clearPageInert();
33263
+ if (this._bibTabHandler) {
33264
+ this.removeEventListener('keydown', this._bibTabHandler);
33265
+ this._bibTabHandler = undefined;
33266
+ }
33267
+ if (this.focusTrap) {
33268
+ this.focusTrap.disconnect();
33269
+ this.focusTrap = undefined;
33270
+ }
31676
33271
  if (this.floater) {
31677
33272
  this.floater.hideBib('disconnect');
31678
33273
  this.floater.disconnect();
@@ -31700,19 +33295,45 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
31700
33295
  if (this.isPopoverVisible) {
31701
33296
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
31702
33297
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
31703
- const useModal = this.isBibFullscreen;
31704
- this.bibElement.value.open(useModal);
33298
+ this.bibElement.value.open(this.isBibFullscreen);
33299
+ this.updateFocusTrap();
33300
+
33301
+ // Desktop modal: make siblings inert so content outside is not interactive
33302
+ if (this.desktopModal && !this.isBibFullscreen) {
33303
+ this._setPageInert();
33304
+ }
31705
33305
  } else {
31706
33306
  this.bibElement.value.close();
33307
+ this._clearPageInert();
31707
33308
  }
31708
33309
  }
31709
33310
 
31710
33311
  // When fullscreen strategy changes while open, re-open dialog with correct mode
31711
33312
  // (e.g. resizing from desktop → mobile while dropdown is open)
31712
33313
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
31713
- const useModal = this.isBibFullscreen;
31714
33314
  this.bibElement.value.close();
31715
- this.bibElement.value.open(useModal);
33315
+ this.bibElement.value.open(this.isBibFullscreen);
33316
+
33317
+ // Re-initialize focus management for the new strategy
33318
+ this.updateFocusTrap();
33319
+
33320
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
33321
+ if (this.desktopModal && !this.isBibFullscreen) {
33322
+ this._setPageInert();
33323
+ } else {
33324
+ this._clearPageInert();
33325
+ }
33326
+ }
33327
+
33328
+ // Handle desktopModal toggled while the dropdown is already open.
33329
+ // Re-initialize focus trapping and page inert state to match the new mode.
33330
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
33331
+ this.updateFocusTrap();
33332
+ if (this.desktopModal) {
33333
+ this._setPageInert();
33334
+ } else {
33335
+ this._clearPageInert();
33336
+ }
31716
33337
  }
31717
33338
  }
31718
33339
 
@@ -31722,8 +33343,14 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
31722
33343
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
31723
33344
  */
31724
33345
  handleDropdownToggle(event) {
31725
- this.updateFocusTrap();
31726
33346
  this.isPopoverVisible = event.detail.expanded;
33347
+
33348
+ // Tear down FocusTrap when closing. Creation happens in updated()
33349
+ // after the dialog is open so getFocusableElements can find content.
33350
+ if (!this.isPopoverVisible) {
33351
+ this.updateFocusTrap();
33352
+ }
33353
+
31727
33354
  const eventType = event.detail.eventType || "unknown";
31728
33355
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
31729
33356
  this.trigger.focus();
@@ -31822,19 +33449,194 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
31822
33449
  * @private
31823
33450
  */
31824
33451
  updateFocusTrap() {
33452
+ // Always clean up existing handlers/traps before setting up new ones
33453
+ // to prevent duplicate listeners on repeated calls.
33454
+ if (this._bibTabHandler) {
33455
+ this.removeEventListener('keydown', this._bibTabHandler);
33456
+ this._bibTabHandler = undefined;
33457
+ }
33458
+
33459
+ if (this.focusTrap) {
33460
+ this.focusTrap.disconnect();
33461
+ this.focusTrap = undefined;
33462
+ }
33463
+
31825
33464
  if (this.isPopoverVisible) {
31826
33465
  if (!this.isBibFullscreen) {
31827
- // Desktop: show() doesn't trap focus, so use FocusTrap
31828
- this.focusTrap = new FocusTrap$3(this.bibContent);
31829
- this.focusTrap.focusFirstElement();
33466
+ if (this.desktopModal) {
33467
+ // Desktop modal: trap focus only within the bib content.
33468
+ // Can't use FocusTrap on the bib element because keydown events
33469
+ // from slotted content bubble through the dropdown host (light DOM),
33470
+ // not through the bib (shadow projection target). Using FocusTrap
33471
+ // on the dropdown would include the trigger in the tab cycle.
33472
+ // Instead, listen for Tab on the dropdown and manually wrap focus
33473
+ // within the bib's focusable elements.
33474
+ this._bibTabHandler = (event) => {
33475
+ if (event.key !== 'Tab') {
33476
+ return;
33477
+ }
33478
+
33479
+ // Collect focusable elements from the bib content.
33480
+ const focusables = getFocusableElements$3(this.bibContent);
33481
+
33482
+ // Fallback: try from slotted content directly
33483
+ if (!focusables.length) {
33484
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
33485
+ const assignedNodes = slot.assignedNodes({ flatten: true });
33486
+
33487
+ for (const node of assignedNodes) {
33488
+ if (node.nodeType === Node.ELEMENT_NODE) {
33489
+ focusables.push(...getFocusableElements$3(node));
33490
+ }
33491
+ }
33492
+ }
33493
+
33494
+ if (!focusables.length) {
33495
+ return;
33496
+ }
33497
+
33498
+ event.preventDefault();
33499
+
33500
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
33501
+
33502
+ // Walk the active element chain through shadow roots
33503
+ const actives = this._getActiveElements();
33504
+
33505
+ let idx = focusables.findIndex((el) => actives.includes(el));
33506
+
33507
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
33508
+ // Focus is not on a known element — move to first/last
33509
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
33510
+ }
33511
+
33512
+ // Try each element in order, skipping any that can't receive focus
33513
+ // (e.g. hidden elements, elements in collapsed sections)
33514
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
33515
+ let nextIdx = idx + direction;
33516
+
33517
+ // Wrap around
33518
+ if (nextIdx < 0) {
33519
+ nextIdx = focusables.length - 1;
33520
+ } else if (nextIdx >= focusables.length) {
33521
+ nextIdx = 0;
33522
+ }
33523
+
33524
+ focusables[nextIdx].focus();
33525
+
33526
+ // Verify focus actually moved to the target
33527
+ const newActives = this._getActiveElements();
33528
+
33529
+ if (newActives.includes(focusables[nextIdx])) {
33530
+ return;
33531
+ }
33532
+
33533
+ // Focus didn't stick — skip this element and try the next
33534
+ idx = nextIdx;
33535
+ }
33536
+ };
33537
+ this.addEventListener('keydown', this._bibTabHandler);
33538
+
33539
+ // Move initial focus into the bib content, matching FocusTrap behavior
33540
+ requestAnimationFrame(() => {
33541
+ const focusables = getFocusableElements$3(this.bibContent);
33542
+ if (focusables.length) {
33543
+ focusables[0].focus();
33544
+ }
33545
+ });
33546
+ } else {
33547
+ // Normal desktop: use FocusTrap on the bib element
33548
+ this.focusTrap = new FocusTrap$3(this.bibContent);
33549
+ this.focusTrap.focusFirstElement();
33550
+ }
31830
33551
  }
31831
33552
  // Fullscreen: showModal() provides native focus trapping
33553
+ }
33554
+ }
33555
+
33556
+ /**
33557
+ * Returns the chain of active (focused) elements through shadow roots.
33558
+ * @private
33559
+ * @returns {Array<HTMLElement>}
33560
+ */
33561
+ _getActiveElements() {
33562
+ let { activeElement } = document;
33563
+ const actives = [activeElement];
33564
+
33565
+ while (activeElement?.shadowRoot?.activeElement) {
33566
+ activeElement = activeElement.shadowRoot.activeElement;
33567
+ actives.push(activeElement);
33568
+ }
33569
+
33570
+ return actives;
33571
+ }
33572
+
33573
+ /**
33574
+ * Sets `inert` on sibling elements of the dropdown's top-level host
33575
+ * so that content outside the dropdown is not interactive while the modal is open.
33576
+ * Walks up through shadow DOM boundaries to find the outermost host element
33577
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
33578
+ * to ensure all page content outside the host subtree is inert.
33579
+ * @private
33580
+ */
33581
+ _setPageInert() {
33582
+ if (this._inertSiblings) {
31832
33583
  return;
31833
33584
  }
31834
33585
 
31835
- if (this.focusTrap) {
31836
- this.focusTrap.disconnect();
31837
- this.focusTrap = undefined;
33586
+ this._inertSiblings = [];
33587
+
33588
+ // Walk up through shadow DOM boundaries to find the topmost host
33589
+ // element in the light DOM. For example, if this dropdown is inside
33590
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
33591
+ // so we set inert on its siblings — not on the datepicker itself.
33592
+ let host = this;
33593
+ while (host.getRootNode() instanceof ShadowRoot) {
33594
+ host = host.getRootNode().host;
33595
+ }
33596
+
33597
+ // Walk up the ancestor chain, inerting siblings at each level
33598
+ // to ensure the entire page outside the host subtree is inert.
33599
+ // Uses a reference counter (data-auro-inert-count) so multiple
33600
+ // simultaneous modal dropdowns share inert state safely.
33601
+ let current = host;
33602
+ while (current.parentElement) {
33603
+ const parent = current.parentElement;
33604
+ for (const sibling of parent.children) {
33605
+ if (sibling !== current) {
33606
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
33607
+ if (count === 0) {
33608
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
33609
+ }
33610
+ sibling.dataset.auroInertCount = String(count + 1);
33611
+ sibling.inert = true;
33612
+ this._inertSiblings.push(sibling);
33613
+ }
33614
+ }
33615
+ current = parent;
33616
+ }
33617
+ }
33618
+
33619
+ /**
33620
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
33621
+ * Uses reference counting so inert is only cleared when the last modal
33622
+ * dropdown releases a given element. Preserves the original inert state
33623
+ * so externally-inerted elements are not inadvertently re-enabled.
33624
+ * @private
33625
+ */
33626
+ _clearPageInert() {
33627
+ if (this._inertSiblings) {
33628
+ for (const sibling of this._inertSiblings) {
33629
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
33630
+ if (count <= 0) {
33631
+ const wasInert = sibling.dataset.auroInertWas === 'true';
33632
+ delete sibling.dataset.auroInertCount;
33633
+ delete sibling.dataset.auroInertWas;
33634
+ sibling.inert = wasInert;
33635
+ } else {
33636
+ sibling.dataset.auroInertCount = String(count);
33637
+ }
33638
+ }
33639
+ this._inertSiblings = undefined;
31838
33640
  }
31839
33641
  }
31840
33642
 
@@ -32073,6 +33875,7 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
32073
33875
  shape="${this.shape}"
32074
33876
  ?data-show="${this.isPopoverVisible}"
32075
33877
  ?isfullscreen="${this.isBibFullscreen}"
33878
+ ?desktopmodal="${this.desktopModal}"
32076
33879
  .dialogLabel="${this.bibDialogLabel}"
32077
33880
  ${n$6(this.bibElement)}
32078
33881
  >
@@ -44277,7 +46080,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$4 {
44277
46080
  }
44278
46081
  };
44279
46082
 
44280
- var formkitVersion$8 = '202606081518';
46083
+ var formkitVersion$8 = '202606081904';
44281
46084
 
44282
46085
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
44283
46086
  // See LICENSE in the project root for license information.
@@ -45622,26 +47425,62 @@ function applyKeyboardStrategy$5(component, strategy, options = {}) {
45622
47425
  // components/datepicker/docs/partials/keyboardBehavior.md
45623
47426
  //
45624
47427
  // Current behavior (transitional — full bib keyboard navigation is planned for a future iteration):
45625
- // - The bib opens and closes via pointer/touch interaction only.
45626
47428
  // - Escape closes the bib and prevents the event from reaching parent containers.
47429
+ // - Enter opens the bib when it is closed (trigger input only, not clear button).
47430
+ // - Space opens the bib when it is closed (trigger input only, not clear button).
45627
47431
  // - Tab uses the browser's default tabindex sequence across trigger controls.
45628
- // - Enter and Space do not open or close the bib.
45629
47432
  //
45630
47433
  // This file is an intentional placeholder for most keys. When datepicker bib keyboard navigation is
45631
47434
  // added, handlers should go here following the same strategy pattern used by
45632
47435
  // auro-select (selectKeyboardStrategy.js) and auro-combobox (comboboxKeyboardStrategy.js).
45633
47436
  const datepickerKeyboardStrategy = {
45634
- Escape(component, evt) {
45635
- if (!component.dropdown || !component.dropdown.isPopoverVisible) {
47437
+ Escape(component, evt, ctx) {
47438
+ if (!ctx.isExpanded) {
45636
47439
  return;
45637
47440
  }
45638
47441
 
45639
- // Prevent the Escape key from bubbling up and closing any parent dialogs / drawers / popups.
45640
- // Because stopPropagation prevents the document-level floatingUI keydown handler from
45641
- // seeing this event, we must also close the dropdown explicitly.
47442
+ // Stop propagation so parent containers (auro-dialog, auro-drawer)
47443
+ // don't also react to Escape.
45642
47444
  evt.stopPropagation();
47445
+ evt.preventDefault();
45643
47446
 
45644
- component.dropdown.hide();
47447
+ component.hideBib();
47448
+ },
47449
+
47450
+ Enter(component, evt, ctx) {
47451
+ if (ctx.isExpanded) {
47452
+ return;
47453
+ }
47454
+
47455
+ // Only open from the trigger input, not the clear button or other internal elements.
47456
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
47457
+ // to find the real origin. The clear button is rendered with class "clearBtn".
47458
+ const path = evt.composedPath();
47459
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
47460
+ return;
47461
+ }
47462
+
47463
+ evt.preventDefault();
47464
+
47465
+ component.dropdown.show();
47466
+ },
47467
+
47468
+ ' '(component, evt, ctx) {
47469
+ if (ctx.isExpanded) {
47470
+ return;
47471
+ }
47472
+
47473
+ // Only open from the trigger input, not the clear button or other internal elements.
47474
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
47475
+ // to find the real origin. The clear button is rendered with class "clearBtn".
47476
+ const path = evt.composedPath();
47477
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
47478
+ return;
47479
+ }
47480
+
47481
+ evt.preventDefault();
47482
+
47483
+ component.dropdown.show();
45645
47484
  },
45646
47485
  };
45647
47486
 
@@ -45715,6 +47554,16 @@ class AuroDatePicker extends AuroElement$6 {
45715
47554
  this.required = false;
45716
47555
  this.onDark = false;
45717
47556
  this.range = false;
47557
+ this.rangeLabelStart = 'range start';
47558
+ this.rangeLabelEnd = 'range end';
47559
+ this.rangeLabelBeforeRange = 'before range';
47560
+ this.rangeLabelInRange = 'in range';
47561
+ this.rangeLabelAfterRange = 'after range';
47562
+ this.blackoutDates = [];
47563
+ this.blackoutLabel = 'unavailable';
47564
+ this.navLabelPrevMonth = 'Previous month';
47565
+ this.navLabelNextMonth = 'Next month';
47566
+ this.calendarGridLabel = 'Calendar days of the month';
45718
47567
  this.stacked = false;
45719
47568
  this.noValidate = false;
45720
47569
  this.validity = undefined;
@@ -45830,7 +47679,7 @@ class AuroDatePicker extends AuroElement$6 {
45830
47679
 
45831
47680
  /**
45832
47681
  * Defines whether the component will be on lighter or darker backgrounds.
45833
- * @property {'default', 'inverse'}
47682
+ * @type {'default' | 'inverse'}
45834
47683
  * @default 'default'
45835
47684
  */
45836
47685
  appearance: {
@@ -45847,6 +47696,22 @@ class AuroDatePicker extends AuroElement$6 {
45847
47696
  reflect: true
45848
47697
  },
45849
47698
 
47699
+ /**
47700
+ * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
47701
+ */
47702
+ blackoutDates: {
47703
+ type: Array,
47704
+ reflect: true
47705
+ },
47706
+
47707
+ /**
47708
+ * Label announced for blackout (disabled but in-range) date cells.
47709
+ */
47710
+ blackoutLabel: {
47711
+ type: String,
47712
+ reflect: true
47713
+ },
47714
+
45850
47715
  /**
45851
47716
  * The last date that may be displayed in the calendar.
45852
47717
  */
@@ -45855,6 +47720,14 @@ class AuroDatePicker extends AuroElement$6 {
45855
47720
  reflect: true
45856
47721
  },
45857
47722
 
47723
+ /**
47724
+ * Accessible label for the calendar grid containing the days of the month.
47725
+ */
47726
+ calendarGridLabel: {
47727
+ type: String,
47728
+ reflect: true
47729
+ },
47730
+
45858
47731
  /**
45859
47732
  * The date that will first be visually rendered to the user in the calendar.
45860
47733
  */
@@ -45902,27 +47775,6 @@ class AuroDatePicker extends AuroElement$6 {
45902
47775
  reflect: true
45903
47776
  },
45904
47777
 
45905
- hasFocus: {
45906
- type: Boolean,
45907
- reflect: false,
45908
- },
45909
-
45910
- /**
45911
- * @private
45912
- */
45913
- hasValue: {
45914
- type: Boolean,
45915
- reflect: false,
45916
- },
45917
-
45918
- /**
45919
- * @private
45920
- */
45921
- hasAllValues: {
45922
- type: Boolean,
45923
- reflect: false
45924
- },
45925
-
45926
47778
  /**
45927
47779
  * Specifies the date format. The default is `mm/dd/yyyy`.
45928
47780
  */
@@ -45952,6 +47804,27 @@ class AuroDatePicker extends AuroElement$6 {
45952
47804
  reflect: true
45953
47805
  },
45954
47806
 
47807
+ /**
47808
+ * @private
47809
+ */
47810
+ hasAllValues: {
47811
+ type: Boolean,
47812
+ reflect: false
47813
+ },
47814
+
47815
+ hasFocus: {
47816
+ type: Boolean,
47817
+ reflect: false,
47818
+ },
47819
+
47820
+ /**
47821
+ * @private
47822
+ */
47823
+ hasValue: {
47824
+ type: Boolean,
47825
+ reflect: false,
47826
+ },
47827
+
45955
47828
  /** Exposes inputmode attribute for input. */
45956
47829
  inputmode: {
45957
47830
  type: String,
@@ -45994,6 +47867,13 @@ class AuroDatePicker extends AuroElement$6 {
45994
47867
  reflect: true
45995
47868
  },
45996
47869
 
47870
+ /**
47871
+ * @private
47872
+ */
47873
+ monthFirst: {
47874
+ type: Boolean
47875
+ },
47876
+
45997
47877
  /**
45998
47878
  * Names of all 12 months to render in the calendar.
45999
47879
  * When omitted, month names will be automatically populated from the active `locale` (falling back to `en-US`).
@@ -46003,18 +47883,26 @@ class AuroDatePicker extends AuroElement$6 {
46003
47883
  },
46004
47884
 
46005
47885
  /**
46006
- * If declared, the bib will NOT flip to an alternate position
46007
- * when there isn't enough space in the specified `placement`.
47886
+ * Accessible label for the next month navigation button.
46008
47887
  */
46009
- noFlip: {
46010
- type: Boolean,
47888
+ navLabelNextMonth: {
47889
+ type: String,
46011
47890
  reflect: true
46012
47891
  },
46013
47892
 
46014
47893
  /**
46015
- * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
47894
+ * Accessible label for the previous month navigation button.
46016
47895
  */
46017
- shift: {
47896
+ navLabelPrevMonth: {
47897
+ type: String,
47898
+ reflect: true
47899
+ },
47900
+
47901
+ /**
47902
+ * If declared, the bib will NOT flip to an alternate position
47903
+ * when there isn't enough space in the specified `placement`.
47904
+ */
47905
+ noFlip: {
46018
47906
  type: Boolean,
46019
47907
  reflect: true
46020
47908
  },
@@ -46080,6 +47968,46 @@ class AuroDatePicker extends AuroElement$6 {
46080
47968
  reflect: true
46081
47969
  },
46082
47970
 
47971
+ /**
47972
+ * Label announced for cells after the range (or after start when no end is selected).
47973
+ */
47974
+ rangeLabelAfterRange: {
47975
+ type: String,
47976
+ reflect: true
47977
+ },
47978
+
47979
+ /**
47980
+ * Label announced for cells before the range start.
47981
+ */
47982
+ rangeLabelBeforeRange: {
47983
+ type: String,
47984
+ reflect: true
47985
+ },
47986
+
47987
+ /**
47988
+ * Label announced for the range end date cell.
47989
+ */
47990
+ rangeLabelEnd: {
47991
+ type: String,
47992
+ reflect: true
47993
+ },
47994
+
47995
+ /**
47996
+ * Label announced for cells within the selected range.
47997
+ */
47998
+ rangeLabelInRange: {
47999
+ type: String,
48000
+ reflect: true
48001
+ },
48002
+
48003
+ /**
48004
+ * Label announced for the range start date cell.
48005
+ */
48006
+ rangeLabelStart: {
48007
+ type: String,
48008
+ reflect: true
48009
+ },
48010
+
46083
48011
  /**
46084
48012
  * Dates that the user should have for reference as part of their decision making when selecting a date.
46085
48013
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
@@ -46106,6 +48034,7 @@ class AuroDatePicker extends AuroElement$6 {
46106
48034
 
46107
48035
  /**
46108
48036
  * Custom help text message to display when validity = `customError`.
48037
+ * Also used as the validation message when a blackout date is typed into the input.
46109
48038
  */
46110
48039
  setCustomValidityCustomError: {
46111
48040
  type: String
@@ -46132,6 +48061,14 @@ class AuroDatePicker extends AuroElement$6 {
46132
48061
  type: String
46133
48062
  },
46134
48063
 
48064
+ /**
48065
+ * If declared, the dropdown will shift its position to avoid being cut off by the viewport.
48066
+ */
48067
+ shift: {
48068
+ type: Boolean,
48069
+ reflect: true
48070
+ },
48071
+
46135
48072
  /**
46136
48073
  * Set true to make datepicker stacked style.
46137
48074
  */
@@ -46140,6 +48077,16 @@ class AuroDatePicker extends AuroElement$6 {
46140
48077
  reflect: true
46141
48078
  },
46142
48079
 
48080
+ /**
48081
+ * Indicates whether the datepicker is in a dirty state (has been interacted with).
48082
+ * @private
48083
+ */
48084
+ touched: {
48085
+ type: Boolean,
48086
+ reflect: true,
48087
+ attribute: false
48088
+ },
48089
+
46143
48090
  /**
46144
48091
  * Specifies the `validityState` this element is in.
46145
48092
  */
@@ -46160,16 +48107,6 @@ class AuroDatePicker extends AuroElement$6 {
46160
48107
  */
46161
48108
  valueEnd: {
46162
48109
  type: String
46163
- },
46164
-
46165
- /**
46166
- * Indicates whether the datepicker is in a dirty state (has been interacted with).
46167
- * @private
46168
- */
46169
- touched: {
46170
- type: Boolean,
46171
- reflect: true,
46172
- attribute: false
46173
48110
  }
46174
48111
  };
46175
48112
  }
@@ -46280,7 +48217,7 @@ class AuroDatePicker extends AuroElement$6 {
46280
48217
  /**
46281
48218
  * Common display value wrapper classes.
46282
48219
  * @private
46283
- * @return {Object} - An object containing the common classes for the display value wrapper.
48220
+ * @returns {Object} Class map for Lit's classMap directive.
46284
48221
  */
46285
48222
  get commonDisplayValueWrapperClasses() {
46286
48223
  return {
@@ -46495,6 +48432,74 @@ class AuroDatePicker extends AuroElement$6 {
46495
48432
  }));
46496
48433
  }
46497
48434
 
48435
+ /**
48436
+ * Attempts to focus the active calendar cell using a rAF retry loop.
48437
+ * Shared by both fullscreen and desktop open paths.
48438
+ * @private
48439
+ * @returns {void}
48440
+ */
48441
+ focusActiveCellWhenReady() {
48442
+ const MAX_ATTEMPTS = 20;
48443
+ let attempts = 0;
48444
+
48445
+ const tryFocus = () => {
48446
+ attempts += 1;
48447
+ const allCells = this.calendar.getAllFocusableCells();
48448
+
48449
+ if (!allCells.length && attempts < MAX_ATTEMPTS) {
48450
+ requestAnimationFrame(tryFocus);
48451
+ return;
48452
+ }
48453
+
48454
+ // Compute and mark the active cell
48455
+ if (this.calendar.activeCellDate === null || this.calendar.activeCellDate === undefined) {
48456
+ this.calendar.activeCellDate = this.calendar.computeActiveDate();
48457
+ }
48458
+ if (this.calendar.activeCellDate !== undefined) {
48459
+ this.calendar.setActiveCell(this.calendar.activeCellDate);
48460
+ }
48461
+
48462
+ // If no cell matched (e.g. centralDate month differs from the rendered
48463
+ // range on mobile), fall back to the first rendered enabled cell.
48464
+ let activeCell = allCells.find((cell) => cell.active);
48465
+ if (!activeCell && allCells.length) {
48466
+ const [fallback] = allCells;
48467
+ if (fallback.day) {
48468
+ this.calendar.activeCellDate = fallback.day.date;
48469
+ this.calendar.setActiveCell(this.calendar.activeCellDate);
48470
+ activeCell = allCells.find((cell) => cell.active);
48471
+ }
48472
+ }
48473
+
48474
+ // Focus the calendar grid wrapper (aria-activedescendant handles
48475
+ // the SR announcement for the active cell).
48476
+ if (activeCell) {
48477
+ this.calendar.focusActiveCell();
48478
+
48479
+ // Announce the initial active cell via the live region.
48480
+ // Delay the announcement so it arrives after VoiceOver finishes
48481
+ // speaking the focus-change announcement for the grid wrapper.
48482
+ // Without this delay, VoiceOver drops the live region update
48483
+ // because it's already mid-announcement from the focus move.
48484
+ const announcement = this.calendar.buildFocusAnnouncement(activeCell.day.date);
48485
+ setTimeout(() => {
48486
+ this.calendar.announceSelection(announcement);
48487
+ }, 500);
48488
+
48489
+ // On mobile fullscreen, scroll the month list so the active cell's
48490
+ // month is visible. Without this, the list stays scrolled to the
48491
+ // calendarStartDate month which may be far from the active cell.
48492
+ if (this.dropdown.isBibFullscreen) {
48493
+ this.calendar.scrollToActiveCell();
48494
+ }
48495
+ } else if (attempts < MAX_ATTEMPTS) {
48496
+ requestAnimationFrame(tryFocus);
48497
+ }
48498
+ };
48499
+
48500
+ requestAnimationFrame(tryFocus);
48501
+ }
48502
+
46498
48503
  /**
46499
48504
  * Binds all behavior needed to the dropdown after rendering.
46500
48505
  * @private
@@ -46503,6 +48508,12 @@ class AuroDatePicker extends AuroElement$6 {
46503
48508
  configureDropdown() {
46504
48509
  this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
46505
48510
 
48511
+ // The datepicker manages its own open/close lifecycle (Space/Escape/date-select/done).
48512
+ // Prevent the floater's document-level focusin handler from closing the bib
48513
+ // when focus moves from the trigger into the calendar cells (which live inside
48514
+ // a top-layer popover where :focus-within on the dropdown host returns false).
48515
+ this.dropdown.noHideOnThisFocusLoss = true;
48516
+
46506
48517
  // Pass label text to the dropdown bib for accessible dialog naming.
46507
48518
  // Without this, the fullscreen <dialog> has no accessible name and
46508
48519
  // screen readers announce it as just "dialog" with no context.
@@ -46520,6 +48531,23 @@ class AuroDatePicker extends AuroElement$6 {
46520
48531
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
46521
48532
  this.notifyDatepickerToggled();
46522
48533
 
48534
+ if (this.dropdown.isPopoverVisible) {
48535
+ // Reset calendar focus state so it recomputes from the current selection.
48536
+ // Without this, reopening after navigating to a month without a selected
48537
+ // date leaves activeCellDate pointing at a cell in a different month than
48538
+ // what centralDate renders, causing all cells to have tabindex="-1".
48539
+ this.calendar.activeCellDate = null;
48540
+
48541
+ // Show the month containing the selected date (or today) instead of
48542
+ // whichever month the user last navigated to.
48543
+ // Respect consumer-provided centralDate/calendarStartDate if no value is set.
48544
+ if (this.valueObject) {
48545
+ this.centralDate = this.value;
48546
+ } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
48547
+ this.centralDate = new Date();
48548
+ }
48549
+ }
48550
+
46523
48551
  // This forces the calendar to render when the dropdown is opened.
46524
48552
  // It is not rendered by default
46525
48553
  this.calendar.visible = this.dropdown.isPopoverVisible;
@@ -46552,12 +48580,23 @@ class AuroDatePicker extends AuroElement$6 {
46552
48580
  bibEl.open(true);
46553
48581
 
46554
48582
  doubleRaf$3(() => {
46555
- this.calendar.focusCloseButton();
48583
+ this.focusActiveCellWhenReady();
46556
48584
  });
46557
48585
  }
46558
48586
  });
46559
48587
 
46560
48588
  guardTouchPassthrough$2(this.shadowRoot.querySelector('.calendarWrapper'));
48589
+ } else {
48590
+ // Desktop (non-fullscreen) modal: make the trigger inert so users
48591
+ // cannot interact with the input while the modal bib is open.
48592
+ if (this.dropdown.desktopModal) {
48593
+ this.dropdown.trigger.inert = true;
48594
+ }
48595
+
48596
+ // Desktop (non-fullscreen): focus the active calendar cell.
48597
+ this.dropdown.updateComplete.then(() => {
48598
+ this.focusActiveCellWhenReady();
48599
+ });
46561
48600
  }
46562
48601
  } else {
46563
48602
  // Always clear the inert flag. Only restore focus to the input when the datepicker
@@ -46602,14 +48641,35 @@ class AuroDatePicker extends AuroElement$6 {
46602
48641
  if (bibEl && this.dropdown.isPopoverVisible) {
46603
48642
  bibEl.close();
46604
48643
  bibEl.open(true);
48644
+ }
48645
+
48646
+ // Re-render the calendar with the new fullscreen layout,
48647
+ // then restore focus after the re-render completes.
48648
+ this.calendar.isFullscreen = true;
48649
+ this.calendar.updateComplete.then(() => {
46605
48650
  doubleRaf$3(() => {
46606
- this.calendar.focusCloseButton();
48651
+ this.focusActiveCellWhenReady();
46607
48652
  });
46608
- }
48653
+ });
46609
48654
  });
46610
48655
  } else if (!this.dropdown.isBibFullscreen) {
46611
- // Switching from fullscreen to floating — restore trigger accessibility
46612
- this.dropdown.trigger.inert = false;
48656
+ // Switching from fullscreen to floating — only restore trigger accessibility
48657
+ // when the bib is closed or the desktop layout is not a modal. A desktopModal
48658
+ // dropdown keeps the trigger inert while open, matching the desktop-open path.
48659
+ if (!this.dropdown.isPopoverVisible || !this.dropdown.desktopModal) {
48660
+ this.dropdown.trigger.inert = false;
48661
+ }
48662
+
48663
+ // Re-render the calendar with the desktop layout,
48664
+ // then restore focus after the re-render completes.
48665
+ this.dropdown.updateComplete.then(() => {
48666
+ this.calendar.isFullscreen = false;
48667
+ this.calendar.updateComplete.then(() => {
48668
+ doubleRaf$3(() => {
48669
+ this.focusActiveCellWhenReady();
48670
+ });
48671
+ });
48672
+ });
46613
48673
  }
46614
48674
  });
46615
48675
  }
@@ -46797,14 +48857,8 @@ class AuroDatePicker extends AuroElement$6 {
46797
48857
 
46798
48858
  if (onEndValue) {
46799
48859
  this.valueEnd = newDate;
46800
- if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
46801
- this.focus('startDate');
46802
- }
46803
48860
  } else {
46804
48861
  this.value = newDate;
46805
- if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
46806
- this.focus('endDate');
46807
- }
46808
48862
  }
46809
48863
  }
46810
48864
  }
@@ -46844,6 +48898,23 @@ class AuroDatePicker extends AuroElement$6 {
46844
48898
  this.resetInputs();
46845
48899
  }
46846
48900
 
48901
+ /**
48902
+ * Checks whether a formatted date string matches a blackout date.
48903
+ * @private
48904
+ * @param {string} dateStr - A date string in the component's configured format.
48905
+ * @returns {boolean} True if the date is in the blackoutDates list.
48906
+ */
48907
+ isBlackoutDate(dateStr) {
48908
+ if (!Array.isArray(this.blackoutDates) ||
48909
+ this.blackoutDates.length === 0 ||
48910
+ !dateStr ||
48911
+ !dateFormatter$1.isValidDate(dateStr)) {
48912
+ return false;
48913
+ }
48914
+
48915
+ return this.blackoutDates.includes(dateStr);
48916
+ }
48917
+
46847
48918
  /**
46848
48919
  * Validates value.
46849
48920
  * @param {boolean} [force=false] - Whether to force validation.
@@ -46855,6 +48926,23 @@ class AuroDatePicker extends AuroElement$6 {
46855
48926
  }
46856
48927
 
46857
48928
  this.validation.validate(this, force);
48929
+
48930
+ // After standard validation, check blackout dates for typed input
48931
+ if (this.validity !== 'customError' &&
48932
+ (this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd)))) { // eslint-disable-line no-extra-parens
48933
+ const msg = this.setCustomValidityCustomError || 'Selected date is unavailable';
48934
+ this.validity = 'customError';
48935
+ this.errorMessage = msg;
48936
+
48937
+ this.dispatchEvent(new CustomEvent('auroFormElement-validated', {
48938
+ bubbles: true,
48939
+ composed: true,
48940
+ detail: {
48941
+ validity: this.validity,
48942
+ message: this.errorMessage
48943
+ }
48944
+ }));
48945
+ }
46858
48946
  }
46859
48947
 
46860
48948
  /**
@@ -46882,7 +48970,7 @@ class AuroDatePicker extends AuroElement$6 {
46882
48970
  }
46883
48971
 
46884
48972
  /**
46885
- * lifecycle method to check if the locale is valid.
48973
+ * Lifecycle method to check if the locale is valid.
46886
48974
  * @ignore
46887
48975
  * @param {Map} changedProperties - The map of properties that have changed since the last update.
46888
48976
  * @returns {void}
@@ -46893,17 +48981,20 @@ class AuroDatePicker extends AuroElement$6 {
46893
48981
  const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
46894
48982
  this._validLocale = supported.length > 0 ? this.locale : 'en-US';
46895
48983
  } catch {
46896
- console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`);
48984
+ console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
46897
48985
  this._validLocale = 'en-US';
46898
48986
  }
46899
48987
 
46900
- // if there was not an explicit format set, or the format set matches the previous locale's default format,
46901
- // update to the new locale's default format
46902
48988
  const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
46903
48989
  if (!changedProperties.has('format') && (!this.format || this.format.toLowerCase() === previousLocaleFormat)) {
46904
48990
  this.format = getDateFormatFromLocale$1(this._validLocale);
46905
48991
  }
46906
48992
  }
48993
+
48994
+ if (changedProperties.has('referenceDates') && this.calendar) {
48995
+ this.calendar.requestUpdate();
48996
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
48997
+ }
46907
48998
  }
46908
48999
 
46909
49000
  updated(changedProperties) {
@@ -46933,17 +49024,18 @@ class AuroDatePicker extends AuroElement$6 {
46933
49024
  if (changedProperties.has('value')) {
46934
49025
 
46935
49026
  // Change the calendar focus to the first valid date value only the first time the value is set
46936
- if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value)) {
46937
- if (!this.dropdown.isPopoverVisible) {
46938
- this.calendarFocusDate = this.value;
49027
+ if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value) && !this.dropdown.isPopoverVisible) {
49028
+ this.calendarFocusDate = this.value;
46939
49029
 
46940
- // Let the calendar know to scroll to the focus date when it is next rendered on mobile
46941
- this.forceScrollOnNextMobileCalendarRender = true;
46942
- }
49030
+ // Let the calendar know to scroll to the focus date when it is next rendered on mobile
49031
+ this.forceScrollOnNextMobileCalendarRender = true;
46943
49032
  }
46944
49033
 
46945
49034
  if (this.cellClickActive) {
46946
49035
  this.cellClickActive = false;
49036
+ this.wasCellClick = true;
49037
+ } else {
49038
+ this.wasCellClick = false;
46947
49039
  }
46948
49040
 
46949
49041
  if (this.value && dateFormatter$1.isValidDate(this.value)) {
@@ -46961,13 +49053,48 @@ class AuroDatePicker extends AuroElement$6 {
46961
49053
 
46962
49054
  // update the inputs — auro-input accepts ISO directly
46963
49055
  if (this.inputList[0].value !== this.value) {
46964
- this.inputList[0].value = this.value || '';
49056
+ if (this.value) {
49057
+ this.inputList[0].value = this.value;
49058
+ } else {
49059
+ this.inputList[0].value = '';
49060
+ }
49061
+ }
49062
+
49063
+ if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
49064
+ // Skip centralDate update when user clicked a cell in range mode
49065
+ // to prevent the displayed months from shifting
49066
+ this.centralDate = this.value;
49067
+ //TODO: TEST THIS CHANGE
49068
+ // this.calendarRenderUtil.updateCentralDate(this, this.value);
46965
49069
  }
46966
49070
 
46967
49071
  this.setHasValue();
46968
49072
  }
46969
49073
 
49074
+ if (changedProperties.has('blackoutDates')) {
49075
+ // Force calendar cells to re-render with updated blackout state.
49076
+ // requestUpdate on the calendar alone is insufficient because cells
49077
+ // don't receive blackoutDates as a bound property. Dispatching the
49078
+ // slot content event triggers handleSlotContent → requestUpdate on each cell.
49079
+ if (this.calendar) {
49080
+ this.calendar.requestUpdate();
49081
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
49082
+ }
49083
+
49084
+ // Re-run validation so that a previously valid value that now falls on
49085
+ // a blackout date is flagged, and vice versa.
49086
+ if (this.value || this.valueEnd) {
49087
+ this.validate();
49088
+ }
49089
+ }
49090
+
46970
49091
  if (changedProperties.has('valueEnd') && this.inputList[1]) {
49092
+ if (this.cellClickActive) {
49093
+ this.cellClickActive = false;
49094
+ this.wasCellClick = true;
49095
+ } else {
49096
+ this.wasCellClick = false;
49097
+ }
46971
49098
 
46972
49099
  // update the calendar
46973
49100
  if (this.valueEndObject) {
@@ -46985,7 +49112,19 @@ class AuroDatePicker extends AuroElement$6 {
46985
49112
 
46986
49113
  // update the inputs — auro-input accepts ISO directly
46987
49114
  if (this.inputList[1].value !== this.valueEnd) {
46988
- this.inputList[1].value = this.valueEnd || '';
49115
+ if (this.valueEnd) {
49116
+ this.inputList[1].value = this.valueEnd;
49117
+ } else {
49118
+ this.inputList[1].value = '';
49119
+ }
49120
+ }
49121
+
49122
+ if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
49123
+ // Skip centralDate update when user clicked a cell in range mode
49124
+ // to prevent the displayed months from shifting
49125
+ this.centralDate = this.valueEnd;
49126
+ // TODO: TEST THIS CHANGE
49127
+ // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
46989
49128
  }
46990
49129
 
46991
49130
  this.validate();
@@ -47028,16 +49167,14 @@ class AuroDatePicker extends AuroElement$6 {
47028
49167
  this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
47029
49168
  }
47030
49169
 
47031
- if (!changedProperties.has('value') && this.valueObject) {
47032
- if (this.minDateObject > this.valueObject) {
47033
- this.value = undefined;
47034
-
47035
- if (this.range && this.valueEnd) {
47036
- this.valueEnd = undefined;
47037
- }
49170
+ if (!changedProperties.has('value') && this.valueObject && this.minDateObject > this.valueObject) {
49171
+ this.value = undefined;
47038
49172
 
47039
- this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
49173
+ if (this.range && this.valueEnd) {
49174
+ this.valueEnd = undefined;
47040
49175
  }
49176
+
49177
+ this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
47041
49178
  }
47042
49179
 
47043
49180
  // When there is no focusDate and no value, set the focusDate to the minDate
@@ -47068,16 +49205,14 @@ class AuroDatePicker extends AuroElement$6 {
47068
49205
  }
47069
49206
  }
47070
49207
 
47071
- if (this.maxDate && !changedProperties.has('value') && this.valueObject) {
47072
- if (this.maxDateObject < this.valueObject) {
47073
- this.value = undefined;
47074
-
47075
- if (this.range && this.valueEnd) {
47076
- this.valueEnd = undefined;
47077
- }
49208
+ if (this.maxDate && !changedProperties.has('value') && this.valueObject && this.maxDateObject < this.valueObject) {
49209
+ this.value = undefined;
47078
49210
 
47079
- this.calendarRenderUtil.updateCentralDate(this, this.maxDateObject);
49211
+ if (this.range && this.valueEnd) {
49212
+ this.valueEnd = undefined;
47080
49213
  }
49214
+
49215
+ this.calendarRenderUtil.updateCentralDate(this, this.maxDateObject);
47081
49216
  }
47082
49217
 
47083
49218
  this.calendar.requestUpdate();
@@ -47135,6 +49270,7 @@ class AuroDatePicker extends AuroElement$6 {
47135
49270
  }
47136
49271
 
47137
49272
  firstUpdated() {
49273
+
47138
49274
  // Add the tag name as an attribute if it is different than the component name
47139
49275
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
47140
49276
 
@@ -47417,7 +49553,7 @@ class AuroDatePicker extends AuroElement$6 {
47417
49553
  /**
47418
49554
  * Handles click on the clear button.
47419
49555
  * @private
47420
- * @param {MouseEvent} event - The click event object.
49556
+ * @param {MouseEvent} event - The mouse event from the clear button click.
47421
49557
  * @returns {void}
47422
49558
  */
47423
49559
  handleClearClick(event) {
@@ -47565,7 +49701,7 @@ class AuroDatePicker extends AuroElement$6 {
47565
49701
  // Base HTML render() handles dropdown and calendar bib
47566
49702
  return u$c`
47567
49703
  <!-- Hidden slot for clear button aria-label -->
47568
- <slot name="ariaLabel.input.clear" hidden @slotchange=${this.requestUpdate}></slot>
49704
+ <slot name="ariaLabel.input.clear" hidden @slotchange=${() => this.requestUpdate()}></slot>
47569
49705
 
47570
49706
  <${this.dropdownTag}
47571
49707
  appearance="${this.onDark ? 'inverse' : this.appearance}"
@@ -47582,6 +49718,7 @@ class AuroDatePicker extends AuroElement$6 {
47582
49718
  .shape="${this.shape}"
47583
49719
  .size="${this.size}"
47584
49720
  class="${e$3(dropdownElementClassMap)}"
49721
+ desktopModal
47585
49722
  disableEventShow
47586
49723
  for="dropdownMenu"
47587
49724
  part="dropdown"
@@ -50838,7 +52975,7 @@ function applyKeyboardStrategy$4(component, strategy, options = {}) {
50838
52975
  });
50839
52976
  }
50840
52977
 
50841
- var styleCss$2$6 = i$7`: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}`;
52978
+ var styleCss$2$6 = i$7`: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}`;
50842
52979
 
50843
52980
  var colorCss$2$6 = i$7`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
50844
52981
 
@@ -51469,7 +53606,7 @@ let AuroHelpText$7 = class AuroHelpText extends i$4 {
51469
53606
  }
51470
53607
  };
51471
53608
 
51472
- var formkitVersion$7 = '202606081518';
53609
+ var formkitVersion$7 = '202606081904';
51473
53610
 
51474
53611
  let AuroElement$5 = class AuroElement extends i$4 {
51475
53612
  static get properties() {
@@ -51649,6 +53786,7 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
51649
53786
  _intializeDefaults() {
51650
53787
  this.appearance = 'default';
51651
53788
  this.chevron = false;
53789
+ this.desktopModal = false;
51652
53790
  this.disabled = false;
51653
53791
  this.disableKeyboardHandling = false;
51654
53792
  this.error = false;
@@ -51829,6 +53967,14 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
51829
53967
  reflect: true
51830
53968
  },
51831
53969
 
53970
+ /**
53971
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
53972
+ */
53973
+ desktopModal: {
53974
+ type: Boolean,
53975
+ reflect: true
53976
+ },
53977
+
51832
53978
  /**
51833
53979
  * If declared, the dropdown will only show by calling the API .show() public method.
51834
53980
  */
@@ -52116,6 +54262,15 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
52116
54262
 
52117
54263
  disconnectedCallback() {
52118
54264
  super.disconnectedCallback();
54265
+ this._clearPageInert();
54266
+ if (this._bibTabHandler) {
54267
+ this.removeEventListener('keydown', this._bibTabHandler);
54268
+ this._bibTabHandler = undefined;
54269
+ }
54270
+ if (this.focusTrap) {
54271
+ this.focusTrap.disconnect();
54272
+ this.focusTrap = undefined;
54273
+ }
52119
54274
  if (this.floater) {
52120
54275
  this.floater.hideBib('disconnect');
52121
54276
  this.floater.disconnect();
@@ -52143,19 +54298,45 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
52143
54298
  if (this.isPopoverVisible) {
52144
54299
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
52145
54300
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
52146
- const useModal = this.isBibFullscreen;
52147
- this.bibElement.value.open(useModal);
54301
+ this.bibElement.value.open(this.isBibFullscreen);
54302
+ this.updateFocusTrap();
54303
+
54304
+ // Desktop modal: make siblings inert so content outside is not interactive
54305
+ if (this.desktopModal && !this.isBibFullscreen) {
54306
+ this._setPageInert();
54307
+ }
52148
54308
  } else {
52149
54309
  this.bibElement.value.close();
54310
+ this._clearPageInert();
52150
54311
  }
52151
54312
  }
52152
54313
 
52153
54314
  // When fullscreen strategy changes while open, re-open dialog with correct mode
52154
54315
  // (e.g. resizing from desktop → mobile while dropdown is open)
52155
54316
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
52156
- const useModal = this.isBibFullscreen;
52157
54317
  this.bibElement.value.close();
52158
- this.bibElement.value.open(useModal);
54318
+ this.bibElement.value.open(this.isBibFullscreen);
54319
+
54320
+ // Re-initialize focus management for the new strategy
54321
+ this.updateFocusTrap();
54322
+
54323
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
54324
+ if (this.desktopModal && !this.isBibFullscreen) {
54325
+ this._setPageInert();
54326
+ } else {
54327
+ this._clearPageInert();
54328
+ }
54329
+ }
54330
+
54331
+ // Handle desktopModal toggled while the dropdown is already open.
54332
+ // Re-initialize focus trapping and page inert state to match the new mode.
54333
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
54334
+ this.updateFocusTrap();
54335
+ if (this.desktopModal) {
54336
+ this._setPageInert();
54337
+ } else {
54338
+ this._clearPageInert();
54339
+ }
52159
54340
  }
52160
54341
  }
52161
54342
 
@@ -52165,8 +54346,14 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
52165
54346
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
52166
54347
  */
52167
54348
  handleDropdownToggle(event) {
52168
- this.updateFocusTrap();
52169
54349
  this.isPopoverVisible = event.detail.expanded;
54350
+
54351
+ // Tear down FocusTrap when closing. Creation happens in updated()
54352
+ // after the dialog is open so getFocusableElements can find content.
54353
+ if (!this.isPopoverVisible) {
54354
+ this.updateFocusTrap();
54355
+ }
54356
+
52170
54357
  const eventType = event.detail.eventType || "unknown";
52171
54358
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
52172
54359
  this.trigger.focus();
@@ -52265,19 +54452,194 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
52265
54452
  * @private
52266
54453
  */
52267
54454
  updateFocusTrap() {
54455
+ // Always clean up existing handlers/traps before setting up new ones
54456
+ // to prevent duplicate listeners on repeated calls.
54457
+ if (this._bibTabHandler) {
54458
+ this.removeEventListener('keydown', this._bibTabHandler);
54459
+ this._bibTabHandler = undefined;
54460
+ }
54461
+
54462
+ if (this.focusTrap) {
54463
+ this.focusTrap.disconnect();
54464
+ this.focusTrap = undefined;
54465
+ }
54466
+
52268
54467
  if (this.isPopoverVisible) {
52269
54468
  if (!this.isBibFullscreen) {
52270
- // Desktop: show() doesn't trap focus, so use FocusTrap
52271
- this.focusTrap = new FocusTrap$2(this.bibContent);
52272
- this.focusTrap.focusFirstElement();
54469
+ if (this.desktopModal) {
54470
+ // Desktop modal: trap focus only within the bib content.
54471
+ // Can't use FocusTrap on the bib element because keydown events
54472
+ // from slotted content bubble through the dropdown host (light DOM),
54473
+ // not through the bib (shadow projection target). Using FocusTrap
54474
+ // on the dropdown would include the trigger in the tab cycle.
54475
+ // Instead, listen for Tab on the dropdown and manually wrap focus
54476
+ // within the bib's focusable elements.
54477
+ this._bibTabHandler = (event) => {
54478
+ if (event.key !== 'Tab') {
54479
+ return;
54480
+ }
54481
+
54482
+ // Collect focusable elements from the bib content.
54483
+ const focusables = getFocusableElements$2(this.bibContent);
54484
+
54485
+ // Fallback: try from slotted content directly
54486
+ if (!focusables.length) {
54487
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
54488
+ const assignedNodes = slot.assignedNodes({ flatten: true });
54489
+
54490
+ for (const node of assignedNodes) {
54491
+ if (node.nodeType === Node.ELEMENT_NODE) {
54492
+ focusables.push(...getFocusableElements$2(node));
54493
+ }
54494
+ }
54495
+ }
54496
+
54497
+ if (!focusables.length) {
54498
+ return;
54499
+ }
54500
+
54501
+ event.preventDefault();
54502
+
54503
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
54504
+
54505
+ // Walk the active element chain through shadow roots
54506
+ const actives = this._getActiveElements();
54507
+
54508
+ let idx = focusables.findIndex((el) => actives.includes(el));
54509
+
54510
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
54511
+ // Focus is not on a known element — move to first/last
54512
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
54513
+ }
54514
+
54515
+ // Try each element in order, skipping any that can't receive focus
54516
+ // (e.g. hidden elements, elements in collapsed sections)
54517
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
54518
+ let nextIdx = idx + direction;
54519
+
54520
+ // Wrap around
54521
+ if (nextIdx < 0) {
54522
+ nextIdx = focusables.length - 1;
54523
+ } else if (nextIdx >= focusables.length) {
54524
+ nextIdx = 0;
54525
+ }
54526
+
54527
+ focusables[nextIdx].focus();
54528
+
54529
+ // Verify focus actually moved to the target
54530
+ const newActives = this._getActiveElements();
54531
+
54532
+ if (newActives.includes(focusables[nextIdx])) {
54533
+ return;
54534
+ }
54535
+
54536
+ // Focus didn't stick — skip this element and try the next
54537
+ idx = nextIdx;
54538
+ }
54539
+ };
54540
+ this.addEventListener('keydown', this._bibTabHandler);
54541
+
54542
+ // Move initial focus into the bib content, matching FocusTrap behavior
54543
+ requestAnimationFrame(() => {
54544
+ const focusables = getFocusableElements$2(this.bibContent);
54545
+ if (focusables.length) {
54546
+ focusables[0].focus();
54547
+ }
54548
+ });
54549
+ } else {
54550
+ // Normal desktop: use FocusTrap on the bib element
54551
+ this.focusTrap = new FocusTrap$2(this.bibContent);
54552
+ this.focusTrap.focusFirstElement();
54553
+ }
52273
54554
  }
52274
54555
  // Fullscreen: showModal() provides native focus trapping
54556
+ }
54557
+ }
54558
+
54559
+ /**
54560
+ * Returns the chain of active (focused) elements through shadow roots.
54561
+ * @private
54562
+ * @returns {Array<HTMLElement>}
54563
+ */
54564
+ _getActiveElements() {
54565
+ let { activeElement } = document;
54566
+ const actives = [activeElement];
54567
+
54568
+ while (activeElement?.shadowRoot?.activeElement) {
54569
+ activeElement = activeElement.shadowRoot.activeElement;
54570
+ actives.push(activeElement);
54571
+ }
54572
+
54573
+ return actives;
54574
+ }
54575
+
54576
+ /**
54577
+ * Sets `inert` on sibling elements of the dropdown's top-level host
54578
+ * so that content outside the dropdown is not interactive while the modal is open.
54579
+ * Walks up through shadow DOM boundaries to find the outermost host element
54580
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
54581
+ * to ensure all page content outside the host subtree is inert.
54582
+ * @private
54583
+ */
54584
+ _setPageInert() {
54585
+ if (this._inertSiblings) {
52275
54586
  return;
52276
54587
  }
52277
54588
 
52278
- if (this.focusTrap) {
52279
- this.focusTrap.disconnect();
52280
- this.focusTrap = undefined;
54589
+ this._inertSiblings = [];
54590
+
54591
+ // Walk up through shadow DOM boundaries to find the topmost host
54592
+ // element in the light DOM. For example, if this dropdown is inside
54593
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
54594
+ // so we set inert on its siblings — not on the datepicker itself.
54595
+ let host = this;
54596
+ while (host.getRootNode() instanceof ShadowRoot) {
54597
+ host = host.getRootNode().host;
54598
+ }
54599
+
54600
+ // Walk up the ancestor chain, inerting siblings at each level
54601
+ // to ensure the entire page outside the host subtree is inert.
54602
+ // Uses a reference counter (data-auro-inert-count) so multiple
54603
+ // simultaneous modal dropdowns share inert state safely.
54604
+ let current = host;
54605
+ while (current.parentElement) {
54606
+ const parent = current.parentElement;
54607
+ for (const sibling of parent.children) {
54608
+ if (sibling !== current) {
54609
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
54610
+ if (count === 0) {
54611
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
54612
+ }
54613
+ sibling.dataset.auroInertCount = String(count + 1);
54614
+ sibling.inert = true;
54615
+ this._inertSiblings.push(sibling);
54616
+ }
54617
+ }
54618
+ current = parent;
54619
+ }
54620
+ }
54621
+
54622
+ /**
54623
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
54624
+ * Uses reference counting so inert is only cleared when the last modal
54625
+ * dropdown releases a given element. Preserves the original inert state
54626
+ * so externally-inerted elements are not inadvertently re-enabled.
54627
+ * @private
54628
+ */
54629
+ _clearPageInert() {
54630
+ if (this._inertSiblings) {
54631
+ for (const sibling of this._inertSiblings) {
54632
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
54633
+ if (count <= 0) {
54634
+ const wasInert = sibling.dataset.auroInertWas === 'true';
54635
+ delete sibling.dataset.auroInertCount;
54636
+ delete sibling.dataset.auroInertWas;
54637
+ sibling.inert = wasInert;
54638
+ } else {
54639
+ sibling.dataset.auroInertCount = String(count);
54640
+ }
54641
+ }
54642
+ this._inertSiblings = undefined;
52281
54643
  }
52282
54644
  }
52283
54645
 
@@ -52516,6 +54878,7 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$5 {
52516
54878
  shape="${this.shape}"
52517
54879
  ?data-show="${this.isPopoverVisible}"
52518
54880
  ?isfullscreen="${this.isBibFullscreen}"
54881
+ ?desktopmodal="${this.desktopModal}"
52519
54882
  .dialogLabel="${this.bibDialogLabel}"
52520
54883
  ${n$6(this.bibElement)}
52521
54884
  >
@@ -53648,7 +56011,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$4 {
53648
56011
  }
53649
56012
  };
53650
56013
 
53651
- var formkitVersion$6 = '202606081518';
56014
+ var formkitVersion$6 = '202606081904';
53652
56015
 
53653
56016
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
53654
56017
  // See LICENSE in the project root for license information.
@@ -54386,6 +56749,14 @@ let AuroBibtemplate$2 = class AuroBibtemplate extends i$4 {
54386
56749
  large: {
54387
56750
  type: Boolean,
54388
56751
  reflect: true
56752
+ },
56753
+
56754
+ /**
56755
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
56756
+ */
56757
+ showFooter: {
56758
+ type: Boolean,
56759
+ reflect: true
54389
56760
  }
54390
56761
  };
54391
56762
  }
@@ -54488,7 +56859,7 @@ let AuroBibtemplate$2 = class AuroBibtemplate extends i$4 {
54488
56859
  <slot></slot>
54489
56860
  </div>
54490
56861
 
54491
- ${this.isFullscreen ? u$c`
56862
+ ${this.isFullscreen || this.showFooter ? u$c`
54492
56863
  <div id="footerContainer">
54493
56864
  <slot name="footer"></slot>
54494
56865
  </div>` : null}
@@ -56644,7 +59015,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$4 {
56644
59015
  }
56645
59016
  };
56646
59017
 
56647
- var formkitVersion$5 = '202606081518';
59018
+ var formkitVersion$5 = '202606081904';
56648
59019
 
56649
59020
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
56650
59021
  // See LICENSE in the project root for license information.
@@ -58394,7 +60765,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$4 {
58394
60765
  }
58395
60766
  };
58396
60767
 
58397
- var formkitVersion$4 = '202606081518';
60768
+ var formkitVersion$4 = '202606081904';
58398
60769
 
58399
60770
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
58400
60771
  // See LICENSE in the project root for license information.
@@ -62961,7 +65332,7 @@ function applyKeyboardStrategy$2(component, strategy, options = {}) {
62961
65332
  });
62962
65333
  }
62963
65334
 
62964
- var styleCss$2$1$1 = i$7`: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}`;
65335
+ var styleCss$2$1$1 = i$7`: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}`;
62965
65336
 
62966
65337
  var colorCss$2$1 = i$7`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
62967
65338
 
@@ -63592,7 +65963,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$4 {
63592
65963
  }
63593
65964
  };
63594
65965
 
63595
- var formkitVersion$2 = '202606081518';
65966
+ var formkitVersion$2 = '202606081904';
63596
65967
 
63597
65968
  let AuroElement$2$1 = class AuroElement extends i$4 {
63598
65969
  static get properties() {
@@ -63772,6 +66143,7 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
63772
66143
  _intializeDefaults() {
63773
66144
  this.appearance = 'default';
63774
66145
  this.chevron = false;
66146
+ this.desktopModal = false;
63775
66147
  this.disabled = false;
63776
66148
  this.disableKeyboardHandling = false;
63777
66149
  this.error = false;
@@ -63952,6 +66324,14 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
63952
66324
  reflect: true
63953
66325
  },
63954
66326
 
66327
+ /**
66328
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
66329
+ */
66330
+ desktopModal: {
66331
+ type: Boolean,
66332
+ reflect: true
66333
+ },
66334
+
63955
66335
  /**
63956
66336
  * If declared, the dropdown will only show by calling the API .show() public method.
63957
66337
  */
@@ -64239,6 +66619,15 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
64239
66619
 
64240
66620
  disconnectedCallback() {
64241
66621
  super.disconnectedCallback();
66622
+ this._clearPageInert();
66623
+ if (this._bibTabHandler) {
66624
+ this.removeEventListener('keydown', this._bibTabHandler);
66625
+ this._bibTabHandler = undefined;
66626
+ }
66627
+ if (this.focusTrap) {
66628
+ this.focusTrap.disconnect();
66629
+ this.focusTrap = undefined;
66630
+ }
64242
66631
  if (this.floater) {
64243
66632
  this.floater.hideBib('disconnect');
64244
66633
  this.floater.disconnect();
@@ -64266,19 +66655,45 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
64266
66655
  if (this.isPopoverVisible) {
64267
66656
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
64268
66657
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
64269
- const useModal = this.isBibFullscreen;
64270
- this.bibElement.value.open(useModal);
66658
+ this.bibElement.value.open(this.isBibFullscreen);
66659
+ this.updateFocusTrap();
66660
+
66661
+ // Desktop modal: make siblings inert so content outside is not interactive
66662
+ if (this.desktopModal && !this.isBibFullscreen) {
66663
+ this._setPageInert();
66664
+ }
64271
66665
  } else {
64272
66666
  this.bibElement.value.close();
66667
+ this._clearPageInert();
64273
66668
  }
64274
66669
  }
64275
66670
 
64276
66671
  // When fullscreen strategy changes while open, re-open dialog with correct mode
64277
66672
  // (e.g. resizing from desktop → mobile while dropdown is open)
64278
66673
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
64279
- const useModal = this.isBibFullscreen;
64280
66674
  this.bibElement.value.close();
64281
- this.bibElement.value.open(useModal);
66675
+ this.bibElement.value.open(this.isBibFullscreen);
66676
+
66677
+ // Re-initialize focus management for the new strategy
66678
+ this.updateFocusTrap();
66679
+
66680
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
66681
+ if (this.desktopModal && !this.isBibFullscreen) {
66682
+ this._setPageInert();
66683
+ } else {
66684
+ this._clearPageInert();
66685
+ }
66686
+ }
66687
+
66688
+ // Handle desktopModal toggled while the dropdown is already open.
66689
+ // Re-initialize focus trapping and page inert state to match the new mode.
66690
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
66691
+ this.updateFocusTrap();
66692
+ if (this.desktopModal) {
66693
+ this._setPageInert();
66694
+ } else {
66695
+ this._clearPageInert();
66696
+ }
64282
66697
  }
64283
66698
  }
64284
66699
 
@@ -64288,8 +66703,14 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
64288
66703
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
64289
66704
  */
64290
66705
  handleDropdownToggle(event) {
64291
- this.updateFocusTrap();
64292
66706
  this.isPopoverVisible = event.detail.expanded;
66707
+
66708
+ // Tear down FocusTrap when closing. Creation happens in updated()
66709
+ // after the dialog is open so getFocusableElements can find content.
66710
+ if (!this.isPopoverVisible) {
66711
+ this.updateFocusTrap();
66712
+ }
66713
+
64293
66714
  const eventType = event.detail.eventType || "unknown";
64294
66715
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
64295
66716
  this.trigger.focus();
@@ -64388,19 +66809,194 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
64388
66809
  * @private
64389
66810
  */
64390
66811
  updateFocusTrap() {
66812
+ // Always clean up existing handlers/traps before setting up new ones
66813
+ // to prevent duplicate listeners on repeated calls.
66814
+ if (this._bibTabHandler) {
66815
+ this.removeEventListener('keydown', this._bibTabHandler);
66816
+ this._bibTabHandler = undefined;
66817
+ }
66818
+
66819
+ if (this.focusTrap) {
66820
+ this.focusTrap.disconnect();
66821
+ this.focusTrap = undefined;
66822
+ }
66823
+
64391
66824
  if (this.isPopoverVisible) {
64392
66825
  if (!this.isBibFullscreen) {
64393
- // Desktop: show() doesn't trap focus, so use FocusTrap
64394
- this.focusTrap = new FocusTrap$1(this.bibContent);
64395
- this.focusTrap.focusFirstElement();
66826
+ if (this.desktopModal) {
66827
+ // Desktop modal: trap focus only within the bib content.
66828
+ // Can't use FocusTrap on the bib element because keydown events
66829
+ // from slotted content bubble through the dropdown host (light DOM),
66830
+ // not through the bib (shadow projection target). Using FocusTrap
66831
+ // on the dropdown would include the trigger in the tab cycle.
66832
+ // Instead, listen for Tab on the dropdown and manually wrap focus
66833
+ // within the bib's focusable elements.
66834
+ this._bibTabHandler = (event) => {
66835
+ if (event.key !== 'Tab') {
66836
+ return;
66837
+ }
66838
+
66839
+ // Collect focusable elements from the bib content.
66840
+ const focusables = getFocusableElements$1(this.bibContent);
66841
+
66842
+ // Fallback: try from slotted content directly
66843
+ if (!focusables.length) {
66844
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
66845
+ const assignedNodes = slot.assignedNodes({ flatten: true });
66846
+
66847
+ for (const node of assignedNodes) {
66848
+ if (node.nodeType === Node.ELEMENT_NODE) {
66849
+ focusables.push(...getFocusableElements$1(node));
66850
+ }
66851
+ }
66852
+ }
66853
+
66854
+ if (!focusables.length) {
66855
+ return;
66856
+ }
66857
+
66858
+ event.preventDefault();
66859
+
66860
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
66861
+
66862
+ // Walk the active element chain through shadow roots
66863
+ const actives = this._getActiveElements();
66864
+
66865
+ let idx = focusables.findIndex((el) => actives.includes(el));
66866
+
66867
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
66868
+ // Focus is not on a known element — move to first/last
66869
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
66870
+ }
66871
+
66872
+ // Try each element in order, skipping any that can't receive focus
66873
+ // (e.g. hidden elements, elements in collapsed sections)
66874
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
66875
+ let nextIdx = idx + direction;
66876
+
66877
+ // Wrap around
66878
+ if (nextIdx < 0) {
66879
+ nextIdx = focusables.length - 1;
66880
+ } else if (nextIdx >= focusables.length) {
66881
+ nextIdx = 0;
66882
+ }
66883
+
66884
+ focusables[nextIdx].focus();
66885
+
66886
+ // Verify focus actually moved to the target
66887
+ const newActives = this._getActiveElements();
66888
+
66889
+ if (newActives.includes(focusables[nextIdx])) {
66890
+ return;
66891
+ }
66892
+
66893
+ // Focus didn't stick — skip this element and try the next
66894
+ idx = nextIdx;
66895
+ }
66896
+ };
66897
+ this.addEventListener('keydown', this._bibTabHandler);
66898
+
66899
+ // Move initial focus into the bib content, matching FocusTrap behavior
66900
+ requestAnimationFrame(() => {
66901
+ const focusables = getFocusableElements$1(this.bibContent);
66902
+ if (focusables.length) {
66903
+ focusables[0].focus();
66904
+ }
66905
+ });
66906
+ } else {
66907
+ // Normal desktop: use FocusTrap on the bib element
66908
+ this.focusTrap = new FocusTrap$1(this.bibContent);
66909
+ this.focusTrap.focusFirstElement();
66910
+ }
64396
66911
  }
64397
66912
  // Fullscreen: showModal() provides native focus trapping
66913
+ }
66914
+ }
66915
+
66916
+ /**
66917
+ * Returns the chain of active (focused) elements through shadow roots.
66918
+ * @private
66919
+ * @returns {Array<HTMLElement>}
66920
+ */
66921
+ _getActiveElements() {
66922
+ let { activeElement } = document;
66923
+ const actives = [activeElement];
66924
+
66925
+ while (activeElement?.shadowRoot?.activeElement) {
66926
+ activeElement = activeElement.shadowRoot.activeElement;
66927
+ actives.push(activeElement);
66928
+ }
66929
+
66930
+ return actives;
66931
+ }
66932
+
66933
+ /**
66934
+ * Sets `inert` on sibling elements of the dropdown's top-level host
66935
+ * so that content outside the dropdown is not interactive while the modal is open.
66936
+ * Walks up through shadow DOM boundaries to find the outermost host element
66937
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
66938
+ * to ensure all page content outside the host subtree is inert.
66939
+ * @private
66940
+ */
66941
+ _setPageInert() {
66942
+ if (this._inertSiblings) {
64398
66943
  return;
64399
66944
  }
64400
66945
 
64401
- if (this.focusTrap) {
64402
- this.focusTrap.disconnect();
64403
- this.focusTrap = undefined;
66946
+ this._inertSiblings = [];
66947
+
66948
+ // Walk up through shadow DOM boundaries to find the topmost host
66949
+ // element in the light DOM. For example, if this dropdown is inside
66950
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
66951
+ // so we set inert on its siblings — not on the datepicker itself.
66952
+ let host = this;
66953
+ while (host.getRootNode() instanceof ShadowRoot) {
66954
+ host = host.getRootNode().host;
66955
+ }
66956
+
66957
+ // Walk up the ancestor chain, inerting siblings at each level
66958
+ // to ensure the entire page outside the host subtree is inert.
66959
+ // Uses a reference counter (data-auro-inert-count) so multiple
66960
+ // simultaneous modal dropdowns share inert state safely.
66961
+ let current = host;
66962
+ while (current.parentElement) {
66963
+ const parent = current.parentElement;
66964
+ for (const sibling of parent.children) {
66965
+ if (sibling !== current) {
66966
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
66967
+ if (count === 0) {
66968
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
66969
+ }
66970
+ sibling.dataset.auroInertCount = String(count + 1);
66971
+ sibling.inert = true;
66972
+ this._inertSiblings.push(sibling);
66973
+ }
66974
+ }
66975
+ current = parent;
66976
+ }
66977
+ }
66978
+
66979
+ /**
66980
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
66981
+ * Uses reference counting so inert is only cleared when the last modal
66982
+ * dropdown releases a given element. Preserves the original inert state
66983
+ * so externally-inerted elements are not inadvertently re-enabled.
66984
+ * @private
66985
+ */
66986
+ _clearPageInert() {
66987
+ if (this._inertSiblings) {
66988
+ for (const sibling of this._inertSiblings) {
66989
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
66990
+ if (count <= 0) {
66991
+ const wasInert = sibling.dataset.auroInertWas === 'true';
66992
+ delete sibling.dataset.auroInertCount;
66993
+ delete sibling.dataset.auroInertWas;
66994
+ sibling.inert = wasInert;
66995
+ } else {
66996
+ sibling.dataset.auroInertCount = String(count);
66997
+ }
66998
+ }
66999
+ this._inertSiblings = undefined;
64404
67000
  }
64405
67001
  }
64406
67002
 
@@ -64639,6 +67235,7 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
64639
67235
  shape="${this.shape}"
64640
67236
  ?data-show="${this.isPopoverVisible}"
64641
67237
  ?isfullscreen="${this.isBibFullscreen}"
67238
+ ?desktopmodal="${this.desktopModal}"
64642
67239
  .dialogLabel="${this.bibDialogLabel}"
64643
67240
  ${n$6(this.bibElement)}
64644
67241
  >
@@ -76843,7 +79440,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$4 {
76843
79440
  }
76844
79441
  };
76845
79442
 
76846
- var formkitVersion$1$1 = '202606081518';
79443
+ var formkitVersion$1$1 = '202606081904';
76847
79444
 
76848
79445
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
76849
79446
  // See LICENSE in the project root for license information.
@@ -77849,6 +80446,14 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$4 {
77849
80446
  large: {
77850
80447
  type: Boolean,
77851
80448
  reflect: true
80449
+ },
80450
+
80451
+ /**
80452
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
80453
+ */
80454
+ showFooter: {
80455
+ type: Boolean,
80456
+ reflect: true
77852
80457
  }
77853
80458
  };
77854
80459
  }
@@ -77951,7 +80556,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$4 {
77951
80556
  <slot></slot>
77952
80557
  </div>
77953
80558
 
77954
- ${this.isFullscreen ? u$c`
80559
+ ${this.isFullscreen || this.showFooter ? u$c`
77955
80560
  <div id="footerContainer">
77956
80561
  <slot name="footer"></slot>
77957
80562
  </div>` : null}
@@ -77960,7 +80565,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$4 {
77960
80565
  }
77961
80566
  };
77962
80567
 
77963
- var formkitVersion$3 = '202606081518';
80568
+ var formkitVersion$3 = '202606081904';
77964
80569
 
77965
80570
  var styleCss$1$3 = i$7`.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}`;
77966
80571
 
@@ -86399,7 +89004,7 @@ function applyKeyboardStrategy(component, strategy, options = {}) {
86399
89004
  });
86400
89005
  }
86401
89006
 
86402
- var styleCss$2$1 = i$7`: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}`;
89007
+ var styleCss$2$1 = i$7`: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}`;
86403
89008
 
86404
89009
  var colorCss$2 = i$7`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
86405
89010
 
@@ -87030,7 +89635,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$4 {
87030
89635
  }
87031
89636
  };
87032
89637
 
87033
- var formkitVersion$1 = '202606081518';
89638
+ var formkitVersion$1 = '202606081904';
87034
89639
 
87035
89640
  class AuroElement extends i$4 {
87036
89641
  static get properties() {
@@ -87210,6 +89815,7 @@ class AuroDropdown extends AuroElement {
87210
89815
  _intializeDefaults() {
87211
89816
  this.appearance = 'default';
87212
89817
  this.chevron = false;
89818
+ this.desktopModal = false;
87213
89819
  this.disabled = false;
87214
89820
  this.disableKeyboardHandling = false;
87215
89821
  this.error = false;
@@ -87390,6 +89996,14 @@ class AuroDropdown extends AuroElement {
87390
89996
  reflect: true
87391
89997
  },
87392
89998
 
89999
+ /**
90000
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
90001
+ */
90002
+ desktopModal: {
90003
+ type: Boolean,
90004
+ reflect: true
90005
+ },
90006
+
87393
90007
  /**
87394
90008
  * If declared, the dropdown will only show by calling the API .show() public method.
87395
90009
  */
@@ -87677,6 +90291,15 @@ class AuroDropdown extends AuroElement {
87677
90291
 
87678
90292
  disconnectedCallback() {
87679
90293
  super.disconnectedCallback();
90294
+ this._clearPageInert();
90295
+ if (this._bibTabHandler) {
90296
+ this.removeEventListener('keydown', this._bibTabHandler);
90297
+ this._bibTabHandler = undefined;
90298
+ }
90299
+ if (this.focusTrap) {
90300
+ this.focusTrap.disconnect();
90301
+ this.focusTrap = undefined;
90302
+ }
87680
90303
  if (this.floater) {
87681
90304
  this.floater.hideBib('disconnect');
87682
90305
  this.floater.disconnect();
@@ -87704,19 +90327,45 @@ class AuroDropdown extends AuroElement {
87704
90327
  if (this.isPopoverVisible) {
87705
90328
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
87706
90329
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
87707
- const useModal = this.isBibFullscreen;
87708
- this.bibElement.value.open(useModal);
90330
+ this.bibElement.value.open(this.isBibFullscreen);
90331
+ this.updateFocusTrap();
90332
+
90333
+ // Desktop modal: make siblings inert so content outside is not interactive
90334
+ if (this.desktopModal && !this.isBibFullscreen) {
90335
+ this._setPageInert();
90336
+ }
87709
90337
  } else {
87710
90338
  this.bibElement.value.close();
90339
+ this._clearPageInert();
87711
90340
  }
87712
90341
  }
87713
90342
 
87714
90343
  // When fullscreen strategy changes while open, re-open dialog with correct mode
87715
90344
  // (e.g. resizing from desktop → mobile while dropdown is open)
87716
90345
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
87717
- const useModal = this.isBibFullscreen;
87718
90346
  this.bibElement.value.close();
87719
- this.bibElement.value.open(useModal);
90347
+ this.bibElement.value.open(this.isBibFullscreen);
90348
+
90349
+ // Re-initialize focus management for the new strategy
90350
+ this.updateFocusTrap();
90351
+
90352
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
90353
+ if (this.desktopModal && !this.isBibFullscreen) {
90354
+ this._setPageInert();
90355
+ } else {
90356
+ this._clearPageInert();
90357
+ }
90358
+ }
90359
+
90360
+ // Handle desktopModal toggled while the dropdown is already open.
90361
+ // Re-initialize focus trapping and page inert state to match the new mode.
90362
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
90363
+ this.updateFocusTrap();
90364
+ if (this.desktopModal) {
90365
+ this._setPageInert();
90366
+ } else {
90367
+ this._clearPageInert();
90368
+ }
87720
90369
  }
87721
90370
  }
87722
90371
 
@@ -87726,8 +90375,14 @@ class AuroDropdown extends AuroElement {
87726
90375
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
87727
90376
  */
87728
90377
  handleDropdownToggle(event) {
87729
- this.updateFocusTrap();
87730
90378
  this.isPopoverVisible = event.detail.expanded;
90379
+
90380
+ // Tear down FocusTrap when closing. Creation happens in updated()
90381
+ // after the dialog is open so getFocusableElements can find content.
90382
+ if (!this.isPopoverVisible) {
90383
+ this.updateFocusTrap();
90384
+ }
90385
+
87731
90386
  const eventType = event.detail.eventType || "unknown";
87732
90387
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
87733
90388
  this.trigger.focus();
@@ -87826,19 +90481,194 @@ class AuroDropdown extends AuroElement {
87826
90481
  * @private
87827
90482
  */
87828
90483
  updateFocusTrap() {
90484
+ // Always clean up existing handlers/traps before setting up new ones
90485
+ // to prevent duplicate listeners on repeated calls.
90486
+ if (this._bibTabHandler) {
90487
+ this.removeEventListener('keydown', this._bibTabHandler);
90488
+ this._bibTabHandler = undefined;
90489
+ }
90490
+
90491
+ if (this.focusTrap) {
90492
+ this.focusTrap.disconnect();
90493
+ this.focusTrap = undefined;
90494
+ }
90495
+
87829
90496
  if (this.isPopoverVisible) {
87830
90497
  if (!this.isBibFullscreen) {
87831
- // Desktop: show() doesn't trap focus, so use FocusTrap
87832
- this.focusTrap = new FocusTrap(this.bibContent);
87833
- this.focusTrap.focusFirstElement();
90498
+ if (this.desktopModal) {
90499
+ // Desktop modal: trap focus only within the bib content.
90500
+ // Can't use FocusTrap on the bib element because keydown events
90501
+ // from slotted content bubble through the dropdown host (light DOM),
90502
+ // not through the bib (shadow projection target). Using FocusTrap
90503
+ // on the dropdown would include the trigger in the tab cycle.
90504
+ // Instead, listen for Tab on the dropdown and manually wrap focus
90505
+ // within the bib's focusable elements.
90506
+ this._bibTabHandler = (event) => {
90507
+ if (event.key !== 'Tab') {
90508
+ return;
90509
+ }
90510
+
90511
+ // Collect focusable elements from the bib content.
90512
+ const focusables = getFocusableElements(this.bibContent);
90513
+
90514
+ // Fallback: try from slotted content directly
90515
+ if (!focusables.length) {
90516
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
90517
+ const assignedNodes = slot.assignedNodes({ flatten: true });
90518
+
90519
+ for (const node of assignedNodes) {
90520
+ if (node.nodeType === Node.ELEMENT_NODE) {
90521
+ focusables.push(...getFocusableElements(node));
90522
+ }
90523
+ }
90524
+ }
90525
+
90526
+ if (!focusables.length) {
90527
+ return;
90528
+ }
90529
+
90530
+ event.preventDefault();
90531
+
90532
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
90533
+
90534
+ // Walk the active element chain through shadow roots
90535
+ const actives = this._getActiveElements();
90536
+
90537
+ let idx = focusables.findIndex((el) => actives.includes(el));
90538
+
90539
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
90540
+ // Focus is not on a known element — move to first/last
90541
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
90542
+ }
90543
+
90544
+ // Try each element in order, skipping any that can't receive focus
90545
+ // (e.g. hidden elements, elements in collapsed sections)
90546
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
90547
+ let nextIdx = idx + direction;
90548
+
90549
+ // Wrap around
90550
+ if (nextIdx < 0) {
90551
+ nextIdx = focusables.length - 1;
90552
+ } else if (nextIdx >= focusables.length) {
90553
+ nextIdx = 0;
90554
+ }
90555
+
90556
+ focusables[nextIdx].focus();
90557
+
90558
+ // Verify focus actually moved to the target
90559
+ const newActives = this._getActiveElements();
90560
+
90561
+ if (newActives.includes(focusables[nextIdx])) {
90562
+ return;
90563
+ }
90564
+
90565
+ // Focus didn't stick — skip this element and try the next
90566
+ idx = nextIdx;
90567
+ }
90568
+ };
90569
+ this.addEventListener('keydown', this._bibTabHandler);
90570
+
90571
+ // Move initial focus into the bib content, matching FocusTrap behavior
90572
+ requestAnimationFrame(() => {
90573
+ const focusables = getFocusableElements(this.bibContent);
90574
+ if (focusables.length) {
90575
+ focusables[0].focus();
90576
+ }
90577
+ });
90578
+ } else {
90579
+ // Normal desktop: use FocusTrap on the bib element
90580
+ this.focusTrap = new FocusTrap(this.bibContent);
90581
+ this.focusTrap.focusFirstElement();
90582
+ }
87834
90583
  }
87835
90584
  // Fullscreen: showModal() provides native focus trapping
90585
+ }
90586
+ }
90587
+
90588
+ /**
90589
+ * Returns the chain of active (focused) elements through shadow roots.
90590
+ * @private
90591
+ * @returns {Array<HTMLElement>}
90592
+ */
90593
+ _getActiveElements() {
90594
+ let { activeElement } = document;
90595
+ const actives = [activeElement];
90596
+
90597
+ while (activeElement?.shadowRoot?.activeElement) {
90598
+ activeElement = activeElement.shadowRoot.activeElement;
90599
+ actives.push(activeElement);
90600
+ }
90601
+
90602
+ return actives;
90603
+ }
90604
+
90605
+ /**
90606
+ * Sets `inert` on sibling elements of the dropdown's top-level host
90607
+ * so that content outside the dropdown is not interactive while the modal is open.
90608
+ * Walks up through shadow DOM boundaries to find the outermost host element
90609
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
90610
+ * to ensure all page content outside the host subtree is inert.
90611
+ * @private
90612
+ */
90613
+ _setPageInert() {
90614
+ if (this._inertSiblings) {
87836
90615
  return;
87837
90616
  }
87838
90617
 
87839
- if (this.focusTrap) {
87840
- this.focusTrap.disconnect();
87841
- this.focusTrap = undefined;
90618
+ this._inertSiblings = [];
90619
+
90620
+ // Walk up through shadow DOM boundaries to find the topmost host
90621
+ // element in the light DOM. For example, if this dropdown is inside
90622
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
90623
+ // so we set inert on its siblings — not on the datepicker itself.
90624
+ let host = this;
90625
+ while (host.getRootNode() instanceof ShadowRoot) {
90626
+ host = host.getRootNode().host;
90627
+ }
90628
+
90629
+ // Walk up the ancestor chain, inerting siblings at each level
90630
+ // to ensure the entire page outside the host subtree is inert.
90631
+ // Uses a reference counter (data-auro-inert-count) so multiple
90632
+ // simultaneous modal dropdowns share inert state safely.
90633
+ let current = host;
90634
+ while (current.parentElement) {
90635
+ const parent = current.parentElement;
90636
+ for (const sibling of parent.children) {
90637
+ if (sibling !== current) {
90638
+ const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
90639
+ if (count === 0) {
90640
+ sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
90641
+ }
90642
+ sibling.dataset.auroInertCount = String(count + 1);
90643
+ sibling.inert = true;
90644
+ this._inertSiblings.push(sibling);
90645
+ }
90646
+ }
90647
+ current = parent;
90648
+ }
90649
+ }
90650
+
90651
+ /**
90652
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
90653
+ * Uses reference counting so inert is only cleared when the last modal
90654
+ * dropdown releases a given element. Preserves the original inert state
90655
+ * so externally-inerted elements are not inadvertently re-enabled.
90656
+ * @private
90657
+ */
90658
+ _clearPageInert() {
90659
+ if (this._inertSiblings) {
90660
+ for (const sibling of this._inertSiblings) {
90661
+ const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
90662
+ if (count <= 0) {
90663
+ const wasInert = sibling.dataset.auroInertWas === 'true';
90664
+ delete sibling.dataset.auroInertCount;
90665
+ delete sibling.dataset.auroInertWas;
90666
+ sibling.inert = wasInert;
90667
+ } else {
90668
+ sibling.dataset.auroInertCount = String(count);
90669
+ }
90670
+ }
90671
+ this._inertSiblings = undefined;
87842
90672
  }
87843
90673
  }
87844
90674
 
@@ -88077,6 +90907,7 @@ class AuroDropdown extends AuroElement {
88077
90907
  shape="${this.shape}"
88078
90908
  ?data-show="${this.isPopoverVisible}"
88079
90909
  ?isfullscreen="${this.isBibFullscreen}"
90910
+ ?desktopmodal="${this.desktopModal}"
88080
90911
  .dialogLabel="${this.bibDialogLabel}"
88081
90912
  ${n$6(this.bibElement)}
88082
90913
  >
@@ -88444,6 +91275,14 @@ class AuroBibtemplate extends i$4 {
88444
91275
  large: {
88445
91276
  type: Boolean,
88446
91277
  reflect: true
91278
+ },
91279
+
91280
+ /**
91281
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
91282
+ */
91283
+ showFooter: {
91284
+ type: Boolean,
91285
+ reflect: true
88447
91286
  }
88448
91287
  };
88449
91288
  }
@@ -88546,7 +91385,7 @@ class AuroBibtemplate extends i$4 {
88546
91385
  <slot></slot>
88547
91386
  </div>
88548
91387
 
88549
- ${this.isFullscreen ? u$c`
91388
+ ${this.isFullscreen || this.showFooter ? u$c`
88550
91389
  <div id="footerContainer">
88551
91390
  <slot name="footer"></slot>
88552
91391
  </div>` : null}
@@ -88783,7 +91622,7 @@ class AuroHelpText extends i$4 {
88783
91622
  }
88784
91623
  }
88785
91624
 
88786
- var formkitVersion = '202606081518';
91625
+ var formkitVersion = '202606081904';
88787
91626
 
88788
91627
  var styleCss = i$7`.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}`;
88789
91628