@aurodesignsystem-dev/auro-formkit 0.0.0-pr1508.0 → 0.0.0-pr1508.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 (141) hide show
  1. package/components/bibtemplate/dist/index.js +1 -1
  2. package/components/bibtemplate/dist/registered.js +1 -1
  3. package/components/checkbox/demo/customize.min.js +8 -6
  4. package/components/checkbox/demo/getting-started.min.js +8 -6
  5. package/components/checkbox/demo/index.min.js +8 -6
  6. package/components/checkbox/dist/index.js +8 -6
  7. package/components/checkbox/dist/registered.js +8 -6
  8. package/components/combobox/README.md +1 -1
  9. package/components/combobox/demo/customize.md +2 -10
  10. package/components/combobox/demo/customize.min.js +386 -305
  11. package/components/combobox/demo/getting-started.min.js +386 -301
  12. package/components/combobox/demo/index.md +1 -1
  13. package/components/combobox/demo/index.min.js +386 -301
  14. package/components/combobox/demo/keyboard-behavior.md +2 -142
  15. package/components/combobox/demo/readme.md +1 -1
  16. package/components/combobox/demo/why-combobox.md +2 -2
  17. package/components/combobox/dist/auro-combobox.d.ts +23 -16
  18. package/components/combobox/dist/index.js +385 -300
  19. package/components/combobox/dist/registered.js +385 -300
  20. package/components/counter/demo/customize.min.js +18 -8
  21. package/components/counter/demo/index.min.js +18 -8
  22. package/components/counter/dist/index.js +18 -8
  23. package/components/counter/dist/registered.js +18 -8
  24. package/components/datepicker/demo/accessibility.md +2 -1
  25. package/components/datepicker/demo/api.md +63 -62
  26. package/components/datepicker/demo/customize.md +12 -1
  27. package/components/datepicker/demo/customize.min.js +932 -335
  28. package/components/datepicker/demo/index.min.js +932 -335
  29. package/components/datepicker/dist/{src/auro-calendar-cell.d.ts → auro-calendar-cell.d.ts} +20 -3
  30. package/components/datepicker/dist/{src/auro-calendar.d.ts → auro-calendar.d.ts} +121 -7
  31. package/components/datepicker/dist/{src/auro-datepicker.d.ts → auro-datepicker.d.ts} +78 -5
  32. package/components/datepicker/dist/blackoutUtils.d.ts +43 -0
  33. package/components/datepicker/dist/index.js +932 -335
  34. package/components/datepicker/dist/registered.js +932 -335
  35. package/components/dropdown/demo/customize.min.js +2 -1
  36. package/components/dropdown/demo/getting-started.min.js +2 -1
  37. package/components/dropdown/demo/index.min.js +2 -1
  38. package/components/dropdown/dist/index.js +2 -1
  39. package/components/dropdown/dist/registered.js +2 -1
  40. package/components/form/demo/customize.min.js +1690 -826
  41. package/components/form/demo/getting-started.min.js +1690 -826
  42. package/components/form/demo/index.min.js +1690 -826
  43. package/components/form/demo/registerDemoDeps.min.js +1690 -826
  44. package/components/input/demo/api.md +5 -5
  45. package/components/input/demo/customize.md +8 -8
  46. package/components/input/demo/customize.min.js +137 -95
  47. package/components/input/demo/getting-started.min.js +137 -95
  48. package/components/input/demo/index.min.js +137 -95
  49. package/components/input/dist/base-input.d.ts +33 -44
  50. package/components/input/dist/index.js +150 -96
  51. package/components/input/dist/registered.js +137 -95
  52. package/components/radio/demo/customize.min.js +8 -6
  53. package/components/radio/demo/getting-started.min.js +8 -6
  54. package/components/radio/demo/index.min.js +8 -6
  55. package/components/radio/dist/index.js +8 -6
  56. package/components/radio/dist/registered.js +8 -6
  57. package/components/select/demo/customize.md +86 -0
  58. package/components/select/demo/customize.min.js +194 -68
  59. package/components/select/demo/getting-started.min.js +196 -115
  60. package/components/select/demo/index.min.js +194 -68
  61. package/components/select/demo/keyboard-behavior.md +18 -4
  62. package/components/select/dist/auro-select.d.ts +20 -8
  63. package/components/select/dist/index.js +194 -68
  64. package/components/select/dist/registered.js +194 -68
  65. package/custom-elements.json +2365 -1819
  66. package/package.json +6 -2
  67. package/components/checkbox/demo/customize.js +0 -22
  68. package/components/checkbox/demo/demo-support.js +0 -1
  69. package/components/checkbox/demo/getting-started.js +0 -22
  70. package/components/checkbox/demo/index.js +0 -8
  71. package/components/checkbox/demo/styles.scss +0 -1
  72. package/components/combobox/demo/customize.js +0 -24
  73. package/components/combobox/demo/demo-support.js +0 -1
  74. package/components/combobox/demo/getting-started.js +0 -21
  75. package/components/combobox/demo/index.js +0 -23
  76. package/components/combobox/demo/styles.scss +0 -1
  77. package/components/counter/demo/customize.js +0 -21
  78. package/components/counter/demo/demo-support.js +0 -1
  79. package/components/counter/demo/index.js +0 -21
  80. package/components/counter/demo/styles.scss +0 -1
  81. package/components/datepicker/demo/customize.js +0 -17
  82. package/components/datepicker/demo/demo-support.js +0 -1
  83. package/components/datepicker/demo/index.js +0 -23
  84. package/components/datepicker/demo/styles.scss +0 -1
  85. package/components/dropdown/demo/customize.js +0 -9
  86. package/components/dropdown/demo/demo-support.js +0 -1
  87. package/components/dropdown/demo/getting-started.js +0 -9
  88. package/components/dropdown/demo/index.js +0 -16
  89. package/components/dropdown/demo/styles.scss +0 -1
  90. package/components/form/demo/customize.js +0 -28
  91. package/components/form/demo/demo-support.js +0 -1
  92. package/components/form/demo/getting-started.js +0 -9
  93. package/components/form/demo/index.js +0 -5
  94. package/components/form/demo/registerDemoDeps.js +0 -23
  95. package/components/form/demo/styles.scss +0 -1
  96. package/components/input/demo/customize.js +0 -25
  97. package/components/input/demo/demo-support.js +0 -1
  98. package/components/input/demo/getting-started.js +0 -8
  99. package/components/input/demo/index.js +0 -8
  100. package/components/input/demo/styles.css +0 -974
  101. package/components/input/demo/styles.scss +0 -1
  102. package/components/menu/demo/demo-support.js +0 -1
  103. package/components/menu/demo/index.js +0 -25
  104. package/components/menu/demo/styles.scss +0 -1
  105. package/components/radio/demo/customize.js +0 -22
  106. package/components/radio/demo/demo-support.js +0 -1
  107. package/components/radio/demo/getting-started.js +0 -24
  108. package/components/radio/demo/index.js +0 -8
  109. package/components/radio/demo/styles.scss +0 -1
  110. package/components/select/demo/customize.js +0 -11
  111. package/components/select/demo/demo-support.js +0 -1
  112. package/components/select/demo/getting-started.js +0 -26
  113. package/components/select/demo/index.js +0 -11
  114. package/components/select/demo/styles.scss +0 -1
  115. /package/components/datepicker/dist/{src/auro-calendar-month.d.ts → auro-calendar-month.d.ts} +0 -0
  116. /package/components/datepicker/dist/{src/buttonVersion.d.ts → buttonVersion.d.ts} +0 -0
  117. /package/components/datepicker/dist/{src/datepickerKeyboardStrategy.d.ts → datepickerKeyboardStrategy.d.ts} +0 -0
  118. /package/components/datepicker/dist/{src/iconVersion.d.ts → iconVersion.d.ts} +0 -0
  119. /package/components/datepicker/dist/{src/index.d.ts → index.d.ts} +0 -0
  120. /package/components/datepicker/dist/{src/popoverVersion.d.ts → popoverVersion.d.ts} +0 -0
  121. /package/components/datepicker/dist/{src/styles → styles}/classic/color-css.d.ts +0 -0
  122. /package/components/datepicker/dist/{src/styles → styles}/classic/style-css.d.ts +0 -0
  123. /package/components/datepicker/dist/{src/styles → styles}/color-calendar-css.d.ts +0 -0
  124. /package/components/datepicker/dist/{src/styles → styles}/color-cell-css.d.ts +0 -0
  125. /package/components/datepicker/dist/{src/styles → styles}/color-css.d.ts +0 -0
  126. /package/components/datepicker/dist/{src/styles → styles}/color-month-css.d.ts +0 -0
  127. /package/components/datepicker/dist/{src/styles → styles}/shapeSize-css.d.ts +0 -0
  128. /package/components/datepicker/dist/{src/styles → styles}/snowflake/color-css.d.ts +0 -0
  129. /package/components/datepicker/dist/{src/styles → styles}/snowflake/style-css.d.ts +0 -0
  130. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-cell-css.d.ts +0 -0
  131. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-css.d.ts +0 -0
  132. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-month-css.d.ts +0 -0
  133. /package/components/datepicker/dist/{src/styles → styles}/style-css.d.ts +0 -0
  134. /package/components/datepicker/dist/{src/styles → styles}/tokens-css.d.ts +0 -0
  135. /package/components/datepicker/dist/{src/utilities.d.ts → utilities.d.ts} +0 -0
  136. /package/components/datepicker/dist/{src/utilitiesCalendar.d.ts → utilitiesCalendar.d.ts} +0 -0
  137. /package/components/datepicker/dist/{src/utilitiesCalendarRender.d.ts → utilitiesCalendarRender.d.ts} +0 -0
  138. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/day.d.ts +0 -0
  139. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
  140. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
  141. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
@@ -657,15 +657,17 @@ let AuroFormValidation$1 = class AuroFormValidation {
657
657
  );
658
658
  }
659
659
 
660
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
661
- if (this.auroInputElements?.length === 2) {
662
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
660
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
661
+
662
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
663
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
664
+ // field (datepicker is the intended consumer — start/end are independently required).
665
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
666
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
663
667
  hasValue = false;
664
668
  }
665
669
  }
666
670
 
667
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
668
-
669
671
  if (isCombobox) {
670
672
 
671
673
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -1373,7 +1375,7 @@ function normalizeDates$1(context, ...dates) {
1373
1375
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
1374
1376
  * //=> Tue Sep 02 2014 00:00:00
1375
1377
  */
1376
- function startOfDay$2(date, options) {
1378
+ function startOfDay$1(date, options) {
1377
1379
  const _date = toDate$1(date, options?.in);
1378
1380
  _date.setHours(0, 0, 0, 0);
1379
1381
  return _date;
@@ -1421,8 +1423,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
1421
1423
  earlierDate,
1422
1424
  );
1423
1425
 
1424
- const laterStartOfDay = startOfDay$2(laterDate_);
1425
- const earlierStartOfDay = startOfDay$2(earlierDate_);
1426
+ const laterStartOfDay = startOfDay$1(laterDate_);
1427
+ const earlierStartOfDay = startOfDay$1(earlierDate_);
1426
1428
 
1427
1429
  const laterTimestamp =
1428
1430
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
@@ -10524,6 +10526,13 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10524
10526
  * @returns {string | undefined}
10525
10527
  */
10526
10528
  toFormattedValue(valueObject, format) {
10529
+ // Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
10530
+ // `format` argument has to fail gracefully rather than throw on
10531
+ // `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
10532
+ // as "no format → no display value".
10533
+ if (!format) {
10534
+ return undefined;
10535
+ }
10527
10536
  const normalizedFormat = format.toLowerCase();
10528
10537
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10529
10538
 
@@ -10803,11 +10812,11 @@ var snowflakeStyle = i$3`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
10803
10812
 
10804
10813
  var snowflakeColors = i$3`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
10805
10814
 
10806
- var styleCss$7 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;--desktop-footer-height: 80px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendars:focus{outline:none}.calendarNavButtons{position:absolute;z-index:1;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}.calendarWrapper.hasFooter{padding-bottom:var(--desktop-footer-height)}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}.sr-only{position:absolute;overflow:hidden;clip:rect(0, 0, 0, 0);width:1px;height:1px;margin:-1px;padding:0;border:0;white-space:nowrap}`;
10815
+ var styleCss$7 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;--desktop-footer-height: 80px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendars:focus{outline:none}.calendarNavButtons{position:absolute;z-index:1;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}: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}`;
10807
10816
 
10808
- var colorCss$7 = i$3`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);box-shadow:inset 0 0 0 1px var(--ds-auro-calendar-nav-btn-border-color)}.mobileHeader{background-color:var(--ds-auro-calendar-mobile-header-container-color)}.mobileDateLabel{color:var(--ds-auro-calendar-mobile-header-text-color)}:host(:not([noRange])) .headerDateTo:after{background-color:var(--ds-auro-calendar-mobile-header-divider-color)}::slotted([slot="bib.fullscreen.fromStr"]),::slotted([slot=mobileDateToStr]){color:var(--ds-auro-datepicker-placeholder-color)}@media screen and (max-width: 576px){.calendarNavBtn{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}}`;
10817
+ var colorCss$7 = i$3`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus-visible{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);outline:2px solid var(--ds-basic-color-brand-primary, #01426a);outline-offset:-2px}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);outline:2px solid var(--ds-basic-color-brand-primary, #01426a);outline-offset:-2px;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)}}`;
10809
10818
 
10810
- var styleCss$6 = i$3`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem) var(--ds-size-200, 1rem) 0}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:376px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%;border-radius:10px;overflow:hidden}.tr:not(:last-of-type){margin-bottom:var(--ds-size-100, 0.5rem)}`;
10819
+ var styleCss$6 = i$3`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:336px;margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem) var(--ds-size-200, 1rem) 0}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:376px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%;border-radius:10px;overflow:hidden}.tr:not(:last-of-type){margin-bottom:var(--ds-size-100, 0.5rem)}`;
10811
10820
 
10812
10821
  var colorCss$6 = i$3`:focus:not(:focus-visible){outline:3px solid transparent}:host{background-color:var(--ds-auro-calendar-month-container-color)}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{background-color:var(--ds-auro-calendar-month-divider-color)}}.header{color:var(--ds-auro-calendar-month-header-color)}`;
10813
10822
 
@@ -10905,8 +10914,8 @@ class RangeDatepickerCell extends i$1 {
10905
10914
  const parsedDateFrom = parseInt(dateFrom, 10);
10906
10915
  const parsedDateTo = parseInt(dateTo, 10);
10907
10916
  if (day) {
10908
- if (getTime(startOfDay$2(parsedDateTo * 1000)) / 1000 === day.date ||
10909
- getTime(startOfDay$2(parsedDateFrom * 1000)) / 1000 === day.date) {
10917
+ if (getTime(startOfDay$1(parsedDateTo * 1000)) / 1000 === day.date ||
10918
+ getTime(startOfDay$1(parsedDateFrom * 1000)) / 1000 === day.date) {
10910
10919
  this.selected = true;
10911
10920
  }
10912
10921
  if (((hoveredDate === day.date || day.date < hoveredDate) &&
@@ -11094,7 +11103,7 @@ class RangeDatepickerCalendar extends i$1 {
11094
11103
  this.dayNamesOfTheWeek = [];
11095
11104
  this.daysOfMonth = [];
11096
11105
  this._locale = null;
11097
- this.currentDate = parseInt(format$1(startOfDay$2(Date.now()), 't'), 10);
11106
+ this.currentDate = parseInt(format$1(startOfDay$1(Date.now()), 't'), 10);
11098
11107
  this.localeChanged();
11099
11108
  this.yearAndMonthChanged(this.year, this.month);
11100
11109
  }
@@ -11568,7 +11577,7 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
11568
11577
  __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
11569
11578
  AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
11570
11579
 
11571
- var styleCss$5 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
11580
+ var styleCss$5 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.rangeDepartDate.lastHoveredDate::before{border-radius:10px}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
11572
11581
 
11573
11582
  var colorCss$5 = i$3`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day.activeCell:not(.selected){--ds-auro-calendar-cell-container-color: var(--ds-auro-calendar-cell-in-range-color);border-color:var(--ds-advanced-color-state-selected);outline-color:var(--ds-auro-calendar-cell-container-color)}:host .day.selected{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.selected ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success-subtle, #d6eac7)}:host .day.selected:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected-hover, #00274a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.reference:after{border-color:var(--ds-basic-color-border-default, #959595);box-shadow:inset 0 0 0 2px var(--ds-basic-color-surface-default, #ffffff)}:host .day.reference:hover::after{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background-muted, #f7f7f7)}:host .day:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host .day.disabled{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.blackout{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.inRange:before,:host .day.rangeDepartDate:before,:host .day.rangeReturnDate:before,:host .day.lastHoveredDate:before{background-color:var(--ds-auro-calendar-cell-in-range-color)}:host .day.sameDateTrip:before{--ds-auro-calendar-cell-in-range-color: transparent}`;
11574
11583
 
@@ -11593,13 +11602,103 @@ let s$2 = class s{registerComponent(e,t){customElements.get(e)||customElements.d
11593
11602
 
11594
11603
  var popoverVersion = '6.0.1';
11595
11604
 
11596
- /* 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 */
11605
+ /**
11606
+ * Single source of truth for parsing and matching blackout dates across the
11607
+ * datepicker. Both `auro-calendar` (memoized Set + `isDateBlackout`) and the
11608
+ * pre-`firstUpdated` fallback inside `auro-calendar-cell` route through these
11609
+ * helpers so the YYYY-MM-DD → seconds conversion and the merge-with-legacy
11610
+ * `disabledDays` rules are defined exactly once.
11611
+ */
11597
11612
 
11598
- const startOfDay$1 = (ms) => {
11599
- const date = new Date(ms);
11600
- date.setHours(0, 0, 0, 0);
11601
- return date.getTime();
11602
- };
11613
+ /**
11614
+ * Converts a `YYYY-MM-DD` ISO date string to a Unix timestamp (seconds)
11615
+ * representing local midnight on that calendar day. Returns `null` for
11616
+ * inputs that don't parse to a finite timestamp.
11617
+ *
11618
+ * Uses the `new Date(year, monthIndex, day)` constructor (NOT
11619
+ * `new Date(isoStr)`) so the result is local-midnight rather than UTC
11620
+ * midnight — required to keep the calendar grid aligned with the user's
11621
+ * local calendar day in negative-offset timezones.
11622
+ *
11623
+ * @param {string} isoStr - Date string in `YYYY-MM-DD` format.
11624
+ * @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
11625
+ */
11626
+ function parseIsoToTimestamp(isoStr) {
11627
+ if (typeof isoStr !== 'string') {
11628
+ return null;
11629
+ }
11630
+ const parts = isoStr.split('-');
11631
+ if (parts.length !== 3) {
11632
+ return null;
11633
+ }
11634
+ const year = parseInt(parts[0], 10);
11635
+ const month = parseInt(parts[1], 10);
11636
+ const day = parseInt(parts[2], 10);
11637
+ if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
11638
+ return null;
11639
+ }
11640
+ // Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
11641
+ // silently normalizes those to a different calendar day, which would
11642
+ // disable the wrong date if we let the result through.
11643
+ if (month < 1 || month > 12 || day < 1 || day > 31) {
11644
+ return null;
11645
+ }
11646
+ const date = new Date(year, month - 1, day);
11647
+ // Guard the residual case where JS still rolls a value (e.g. Feb 30 → Mar 2).
11648
+ // After construction, getFullYear/getMonth/getDate should match the inputs.
11649
+ if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
11650
+ return null;
11651
+ }
11652
+ const ts = Math.floor(date.getTime() / 1000);
11653
+ return Number.isFinite(ts) ? ts : null;
11654
+ }
11655
+
11656
+ /**
11657
+ * Builds a `Set<number>` of seconds-since-epoch timestamps covering both the
11658
+ * legacy `disabledDays` (already-numeric) array and the ISO `blackoutDates`
11659
+ * array. Use this for O(1) membership checks in hot paths.
11660
+ *
11661
+ * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
11662
+ * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
11663
+ * @returns {Set<number>}
11664
+ */
11665
+ function buildBlackoutSet(disabledDays, blackoutDates) {
11666
+ const set = new Set();
11667
+ if (Array.isArray(disabledDays)) {
11668
+ for (const day of disabledDays) {
11669
+ const ts = parseInt(day, 10);
11670
+ if (Number.isFinite(ts)) {
11671
+ set.add(ts);
11672
+ }
11673
+ }
11674
+ }
11675
+ if (Array.isArray(blackoutDates)) {
11676
+ for (const isoStr of blackoutDates) {
11677
+ const ts = parseIsoToTimestamp(isoStr);
11678
+ if (ts !== null) {
11679
+ set.add(ts);
11680
+ }
11681
+ }
11682
+ }
11683
+ return set;
11684
+ }
11685
+
11686
+ /**
11687
+ * One-shot membership test for a single timestamp against both blackout
11688
+ * sources. Allocates a Set on each call; only use this in cold paths
11689
+ * (e.g. the pre-`firstUpdated` cell fallback). Hot paths should hold the
11690
+ * Set returned from `buildBlackoutSet` and `.has(ts)` directly.
11691
+ *
11692
+ * @param {number} dateTs - Unix timestamp (seconds) to test.
11693
+ * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
11694
+ * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
11695
+ * @returns {boolean}
11696
+ */
11697
+ function isBlackoutTimestamp(dateTs, disabledDays, blackoutDates) {
11698
+ return buildBlackoutSet(disabledDays, blackoutDates).has(dateTs);
11699
+ }
11700
+
11701
+ /* 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 */
11603
11702
 
11604
11703
  class AuroCalendarCell extends i$1 {
11605
11704
  constructor() {
@@ -11647,6 +11746,14 @@ class AuroCalendarCell extends i$1 {
11647
11746
  type: Boolean,
11648
11747
  reflect: true
11649
11748
  },
11749
+ /**
11750
+ * @deprecated Propagated from the legacy `auro-calendar.disabledDays`
11751
+ * Unix-timestamp array. The cell honors it for backward compatibility
11752
+ * (see the divergence-check fallback inside `isBlackout`), but
11753
+ * consumers should migrate to `auro-datepicker.blackoutDates`
11754
+ * (YYYY-MM-DD ISO strings). The calendar emits a one-time
11755
+ * deprecation warning the first time a non-empty value is observed.
11756
+ */
11650
11757
  disabledDays: { type: Array },
11651
11758
  isCurrentDate: { type: Boolean },
11652
11759
  locale: { type: String },
@@ -11692,8 +11799,8 @@ class AuroCalendarCell extends i$1 {
11692
11799
  const parsedDateTo = parseInt(dateTo, 10);
11693
11800
 
11694
11801
  if (day) {
11695
- const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
11696
- const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
11802
+ const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
11803
+ const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
11697
11804
 
11698
11805
  if (day.date === departTimestamp || day.date === returnTimestamp) {
11699
11806
  this.selected = true;
@@ -11777,27 +11884,33 @@ class AuroCalendarCell extends i$1 {
11777
11884
  return false;
11778
11885
  }
11779
11886
 
11780
- // Check against disabledDays timestamps (legacy path)
11781
- if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
11782
- (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
11783
- return true;
11784
- }
11785
-
11786
- // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
11787
- const blackoutDates = this.datepicker?.blackoutDates;
11788
-
11789
- if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
11790
- const date = new Date(this.day.date * 1000);
11791
- const yyyy = date.getFullYear();
11792
- const mm = String(date.getMonth() + 1).padStart(2, '0');
11793
- const dd = String(date.getDate()).padStart(2, '0');
11794
- const cellDate = `${yyyy}-${mm}-${dd}`;
11795
- if (blackoutDates.includes(cellDate)) {
11887
+ // Delegate to the calendar's memoized blackout Set for O(1) lookup
11888
+ // (instead of rescanning disabledDays + blackoutDates per render). The
11889
+ // Set is rebuilt only when either source array reference changes — see
11890
+ // auro-calendar.js#_getBlackoutSet.
11891
+ if (this.calendar && typeof this.calendar._getBlackoutSet === 'function') {
11892
+ if (this.calendar._getBlackoutSet().has(this.day.date)) {
11796
11893
  return true;
11797
11894
  }
11895
+ // If the cell's local disabledDays diverged from the calendar's (a
11896
+ // consumer or test mutated cell.disabledDays directly), the Set does
11897
+ // not reflect that addition — fall through to the per-cell scan only
11898
+ // when the reference no longer matches. Production data flow keeps
11899
+ // these identical, so this branch stays cold. Guarded with
11900
+ // Array.isArray to match `_getBlackoutSet`'s contract: non-array
11901
+ // values are treated as empty rather than crashing on `.findIndex`.
11902
+ if (Array.isArray(this.disabledDays) && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
11903
+ if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
11904
+ return true;
11905
+ }
11906
+ }
11907
+ return false;
11798
11908
  }
11799
11909
 
11800
- return false;
11910
+ // Pre-firstUpdated fallback — the cell may render once before the
11911
+ // ancestor calendar is wired up. Routes through the shared
11912
+ // blackoutUtils helper so the parsing rules stay in one place.
11913
+ return isBlackoutTimestamp(this.day.date, this.disabledDays, this.datepicker?.blackoutDates);
11801
11914
  }
11802
11915
 
11803
11916
  /**
@@ -11903,12 +12016,12 @@ class AuroCalendarCell extends i$1 {
11903
12016
  const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
11904
12017
  if (!Number.isFinite(parsedDateFrom)) return null;
11905
12018
 
11906
- const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
12019
+ const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
11907
12020
  const dayDate = this.day.date;
11908
12021
 
11909
12022
  const parsedDateTo = Number.parseInt(this.dateTo, 10);
11910
12023
  const hasDateTo = Number.isFinite(parsedDateTo);
11911
- const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
12024
+ const returnTimestamp = hasDateTo ? new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
11912
12025
 
11913
12026
  if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
11914
12027
 
@@ -11918,7 +12031,9 @@ class AuroCalendarCell extends i$1 {
11918
12031
 
11919
12032
  if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
11920
12033
 
11921
- // After start date, no end date yet, or after end date
12034
+ if (!hasDateTo && dayDate > departTimestamp) return this.datepicker.rangeLabelEndPreview || 'previewing range end';
12035
+
12036
+ // After end date when both dateFrom and dateTo are set.
11922
12037
  return this.datepicker.rangeLabelAfterRange || 'after range';
11923
12038
  }
11924
12039
 
@@ -11931,7 +12046,7 @@ class AuroCalendarCell extends i$1 {
11931
12046
  */
11932
12047
  isDepartDate(day, dateFrom) {
11933
12048
  const parsedDateFrom = parseInt(dateFrom, 10);
11934
- const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
12049
+ const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
11935
12050
 
11936
12051
  return this.selected && day.date === departTimestamp;
11937
12052
  }
@@ -11946,7 +12061,7 @@ class AuroCalendarCell extends i$1 {
11946
12061
  */
11947
12062
  isReturnDate(day, dateFrom, dateTo) {
11948
12063
  const parsedDateTo = parseInt(dateTo, 10);
11949
- const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
12064
+ const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
11950
12065
 
11951
12066
  return this.selected && day.date === returnTimestamp && dateFrom;
11952
12067
  }
@@ -12110,6 +12225,7 @@ class AuroCalendarCell extends i$1 {
12110
12225
  setTimeout(() => this.firstUpdated(), 0);
12111
12226
  return;
12112
12227
  }
12228
+ this.calendar = calendar;
12113
12229
  this.datepicker = calendar.datepicker;
12114
12230
  this._slotContentHandler = () => {
12115
12231
  this.handleSlotContent();
@@ -12167,15 +12283,28 @@ class AuroCalendarCell extends i$1 {
12167
12283
  this._cachedButton = this.shadowRoot.querySelector('button.day');
12168
12284
  });
12169
12285
 
12170
- // Update host-level aria attributes for ariaActiveDescendantElement.
12286
+ // Keep the host's gridcell aria attributes in sync with the day data.
12171
12287
  this.updateHostAria();
12172
12288
  }
12173
12289
 
12174
12290
  // Update host aria when selection changes (aria-selected, range labels)
12175
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
12291
+ // or when isCurrentDate flips (aria-current).
12292
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
12176
12293
  this.updateHostAria();
12177
12294
  }
12178
12295
 
12296
+ // When the rendered range shifts (month nav, min/max change), a cell
12297
+ // host may be re-rendered for a new date that is now out-of-range —
12298
+ // but its imperatively-set `active` flag and `activeCell` ring class
12299
+ // from the previous date persist because setActiveCell only iterates
12300
+ // focusable (in-range) cells when clearing the prior active state.
12301
+ // Drop the active state here so the disabled cell isn't left visually
12302
+ // ringed.
12303
+ if ((properties.has('day') || properties.has('min') || properties.has('max')) &&
12304
+ this.active && this.isOutOfRange(this.day, this.min, this.max)) {
12305
+ this.clearActive();
12306
+ }
12307
+
12179
12308
  // Configure popover when it first becomes rendered
12180
12309
  if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
12181
12310
  this.updateComplete.then(() => this.configurePopover());
@@ -12183,8 +12312,8 @@ class AuroCalendarCell extends i$1 {
12183
12312
  }
12184
12313
 
12185
12314
  /**
12186
- * Updates ARIA attributes on the host element so that
12187
- * ariaActiveDescendantElement can expose cell info to the SR.
12315
+ * Sets host-level ARIA so each cell exposes its date, selection state,
12316
+ * and blackout status to assistive tech browsing the month grid.
12188
12317
  * @private
12189
12318
  * @returns {void}
12190
12319
  */
@@ -12193,16 +12322,27 @@ class AuroCalendarCell extends i$1 {
12193
12322
 
12194
12323
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12195
12324
  if (outOfRange) {
12325
+ // Strip every aria attribute the in-range branch may have set on a
12326
+ // previous render — if a cell flips from in-range to out-of-range
12327
+ // (calendar shifts months, minDate/maxDate change, etc.).
12196
12328
  this.removeAttribute('role');
12197
12329
  this.removeAttribute('aria-label');
12330
+ this.removeAttribute('aria-current');
12331
+ this.removeAttribute('aria-selected');
12332
+ this.removeAttribute('aria-disabled');
12198
12333
  return;
12199
12334
  }
12200
12335
 
12201
- // The host acts as the gridcell for ariaActiveDescendantElement.
12202
12336
  this.setAttribute('role', 'gridcell');
12203
12337
  this.setAttribute('aria-label', this.getAriaLabel());
12204
12338
  this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
12205
12339
 
12340
+ if (this.isCurrentDate) {
12341
+ this.setAttribute('aria-current', 'date');
12342
+ } else {
12343
+ this.removeAttribute('aria-current');
12344
+ }
12345
+
12206
12346
  if (this.isBlackout()) {
12207
12347
  this.setAttribute('aria-disabled', 'true');
12208
12348
  } else {
@@ -12217,7 +12357,7 @@ class AuroCalendarCell extends i$1 {
12217
12357
  * @returns {void}
12218
12358
  */
12219
12359
  focusButton() {
12220
- const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
12360
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([disabled])');
12221
12361
  if (button) {
12222
12362
  button.focus({ focusVisible: true });
12223
12363
  }
@@ -12225,10 +12365,22 @@ class AuroCalendarCell extends i$1 {
12225
12365
 
12226
12366
  /**
12227
12367
  * Imperatively marks this cell as active without triggering a Lit re-render.
12228
- * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
12368
+ * Buttons stay tabindex="-1" because DOM focus stays on the grid wrapper
12369
+ * arrow keys move the active cell imperatively and the live region carries
12370
+ * the SR announcement.
12371
+ *
12372
+ * Refuses to activate out-of-range cells: those are aria-hidden, have no
12373
+ * click/focus handlers, and are filtered out of `getFocusableCells`. The
12374
+ * active class showing on a disabled cell would be visually misleading,
12375
+ * so this guard is the single source of truth across every code path
12376
+ * that might call setActive (keyboard nav, focus restore, cell click).
12229
12377
  * @returns {void}
12230
12378
  */
12231
12379
  setActive() {
12380
+ if (this.isOutOfRange(this.day, this.min, this.max)) {
12381
+ return;
12382
+ }
12383
+
12232
12384
  this.active = true;
12233
12385
 
12234
12386
  // Show the popover when this cell becomes active via keyboard navigation.
@@ -12267,10 +12419,13 @@ class AuroCalendarCell extends i$1 {
12267
12419
  if (!btn || !this.day) return;
12268
12420
 
12269
12421
  const dayDate = this.day.date;
12270
- const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
12422
+ const departTimestamp = new Date(dateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
12271
12423
  const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
12272
- const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
12273
- const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
12424
+ // `>=` so hovering the depart cell itself (a same-day round-trip
12425
+ // preview) still surfaces a visual cue: the depart cell receives both
12426
+ // rangeDepartDate and lastHoveredDate.
12427
+ const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
12428
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
12274
12429
 
12275
12430
  btn.classList.toggle('inRange', isInRange);
12276
12431
  btn.classList.toggle('lastHoveredDate', isLastHovered);
@@ -12328,7 +12483,6 @@ class AuroCalendarCell extends i$1 {
12328
12483
  @focus="${outOfRange ? undefined : this.handleFocus}"
12329
12484
  class="${e$4(buttonClasses)}"
12330
12485
  ?disabled="${outOfRange}"
12331
- aria-hidden="${outOfRange ? 'true' : A$4}"
12332
12486
  tabindex="-1">
12333
12487
  <div class="buttonWrapper" aria-hidden="true">
12334
12488
  <div class="currentDayMarker">${this.day?.title || A$4}</div>
@@ -13045,7 +13199,7 @@ class CalendarUtilities {
13045
13199
 
13046
13200
  var colorCss$4 = i$3`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
13047
13201
 
13048
- var styleCss$4 = i$3`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1 1 100%}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{position:absolute;right:0;bottom:0;left:0;padding:var(--ds-size-200, 1rem)}`;
13202
+ var styleCss$4 = i$3`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{padding:var(--ds-size-200, 1rem)}`;
13049
13203
 
13050
13204
  var tokenCss = i$3`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
13051
13205
 
@@ -13440,7 +13594,7 @@ class AuroBibtemplate extends i$1 {
13440
13594
  }
13441
13595
  }
13442
13596
 
13443
- var formkitVersion$2 = '202606231948';
13597
+ var formkitVersion$2 = '202607010104';
13444
13598
 
13445
13599
  let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$5`${s$5(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$4 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$3=i$3`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
13446
13600
  `,u$6=i$3`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -13545,6 +13699,15 @@ class AuroCalendar extends RangeDatepicker {
13545
13699
  */
13546
13700
  this.activeCellDate = null;
13547
13701
 
13702
+ /**
13703
+ * Cached reference to the active cell host. Set by setActiveCell and
13704
+ * refreshed by scrollToActiveCell when its cache check misses (stale
13705
+ * or missing). Lets scrollToActiveCell skip a full cell scan on each
13706
+ * arrow key.
13707
+ * @private
13708
+ */
13709
+ this._activeCell = null;
13710
+
13548
13711
  /**
13549
13712
  * Whether the #calendarGrid wrapper currently has focus.
13550
13713
  * Used to determine whether the visualFocus ring should be shown.
@@ -13563,7 +13726,11 @@ class AuroCalendar extends RangeDatepicker {
13563
13726
  this.calendarRangeMonths = null;
13564
13727
 
13565
13728
  /**
13566
- * Legacy array of disabled-date timestamps.
13729
+ * @deprecated Use `auro-datepicker.blackoutDates` (an array of
13730
+ * `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
13731
+ * timestamps is still honored for backward compatibility but emits a
13732
+ * one-time `console.debug` the first time a non-empty value is observed.
13733
+ * Support will be removed in a future major release.
13567
13734
  * @private
13568
13735
  */
13569
13736
  this.disabledDays = [];
@@ -13820,17 +13987,44 @@ class AuroCalendar extends RangeDatepicker {
13820
13987
  * @returns {void}
13821
13988
  */
13822
13989
  updateActiveCellForVisibleMonth() {
13823
- // Use double-rAF to ensure child month/cell components have fully
13824
- // rendered and cached their button references before we set tabindex.
13825
- requestAnimationFrame(() => {
13826
- requestAnimationFrame(() => {
13827
- const newDate = this.computeActiveDate({ skipDateFrom: true });
13990
+ this._afterMonthRender(() => {
13991
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
13828
13992
 
13829
- if (newDate !== null && newDate !== undefined) {
13830
- this.activeCellDate = newDate;
13831
- this.setActiveCell(this.activeCellDate);
13832
- }
13833
- });
13993
+ if (newDate !== null && newDate !== undefined) {
13994
+ this.activeCellDate = newDate;
13995
+ this.setActiveCell(this.activeCellDate);
13996
+ }
13997
+ });
13998
+ }
13999
+
14000
+ /**
14001
+ * Schedules `callback` two animation frames out, giving the child
14002
+ * `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
14003
+ * a full render-and-paint cycle to settle before the callback reads or
14004
+ * mutates DOM.
14005
+ *
14006
+ * Why two frames, not one:
14007
+ * 1. Lit batches property updates and renders in a microtask, so frame N
14008
+ * schedules the render but the new DOM may not be painted yet.
14009
+ * 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
14010
+ * which also lands a tick later. Reading buttons from frame N+1
14011
+ * (after both renders + cache refresh have flushed) reliably hits the
14012
+ * new month's cells.
14013
+ *
14014
+ * Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
14015
+ * and then needs to inspect the freshly-rendered cells (cross-month
14016
+ * keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
14017
+ * Do NOT collapse to a single rAF — it intermittently lands before
14018
+ * `_cachedButton` is refreshed, which silently breaks focus restoration
14019
+ * and `setActiveCell` lookups.
14020
+ * @private
14021
+ * @param {() => void} callback - Runs once after the month re-render and
14022
+ * the cells' button caches have refreshed.
14023
+ * @returns {void}
14024
+ */
14025
+ _afterMonthRender(callback) {
14026
+ requestAnimationFrame(() => {
14027
+ requestAnimationFrame(callback);
13834
14028
  });
13835
14029
  }
13836
14030
 
@@ -13948,6 +14142,47 @@ class AuroCalendar extends RangeDatepicker {
13948
14142
  return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
13949
14143
  }
13950
14144
 
14145
+ /**
14146
+ * Picks the focusable cell whose date is closest to targetTs. Used as a
14147
+ * fallback after a month-boundary nav when the exact target date isn't
14148
+ * focusable — typically because the month re-render lagged or the date
14149
+ * was filtered out by isOutOfRange. When two cells are equidistant, the
14150
+ * navigation direction breaks the tie so the user moves the way they
14151
+ * pressed (forward → later cell, backward → earlier cell).
14152
+ * @private
14153
+ * @param {Array} cells - Focusable cells from getAllFocusableCells.
14154
+ * @param {Number} targetTs - Desired Unix timestamp (seconds).
14155
+ * @param {'next'|'prev'} direction - Navigation direction.
14156
+ * @returns {Object|null} The nearest cell, or null when cells is empty.
14157
+ */
14158
+ pickNearestCell(cells, targetTs, direction) {
14159
+ if (!cells.length) {
14160
+ return null;
14161
+ }
14162
+ const forward = direction === 'next';
14163
+ let best = null;
14164
+ let bestDelta = Infinity;
14165
+ cells.forEach((cell) => {
14166
+ if (!cell.day) {
14167
+ return;
14168
+ }
14169
+ const distance = Math.abs(cell.day.date - targetTs);
14170
+ if (distance < bestDelta) {
14171
+ best = cell;
14172
+ bestDelta = distance;
14173
+ return;
14174
+ }
14175
+ if (distance === bestDelta && best) {
14176
+ if (forward && cell.day.date > best.day.date) {
14177
+ best = cell;
14178
+ } else if (!forward && cell.day.date < best.day.date) {
14179
+ best = cell;
14180
+ }
14181
+ }
14182
+ });
14183
+ return best;
14184
+ }
14185
+
13951
14186
  /**
13952
14187
  * Gets all focusable cells across all rendered months.
13953
14188
  * @private
@@ -13964,9 +14199,9 @@ class AuroCalendar extends RangeDatepicker {
13964
14199
 
13965
14200
  /**
13966
14201
  * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
13967
- * Uses imperative DOM manipulation — no Lit re-render triggered.
13968
- * Also updates ariaActiveDescendantElement on the grid wrapper so
13969
- * screen readers announce the active cell without moving DOM focus.
14202
+ * Uses imperative DOM manipulation — no Lit re-render triggered. DOM focus
14203
+ * stays on the grid wrapper; the live region (see getOrCreateLiveRegion)
14204
+ * is what announces the active cell to assistive tech.
13970
14205
  * @param {Number} date - Unix timestamp of the cell to activate.
13971
14206
  * @returns {void}
13972
14207
  */
@@ -13984,6 +14219,9 @@ class AuroCalendar extends RangeDatepicker {
13984
14219
  });
13985
14220
 
13986
14221
  this.activeCellDate = date;
14222
+ // Cache so scrollToActiveCell can scroll without re-querying all cells
14223
+ // on every arrow keypress.
14224
+ this._activeCell = newActiveCell;
13987
14225
 
13988
14226
  // Apply activeCell ring only when the grid currently has focus.
13989
14227
  if (newActiveCell && this._gridHasFocus) {
@@ -14015,10 +14253,23 @@ class AuroCalendar extends RangeDatepicker {
14015
14253
  /**
14016
14254
  * Shows the activeCell ring when the grid gains focus.
14017
14255
  * @private
14256
+ * @param {FocusEvent} [event] - The focusin event.
14018
14257
  * @returns {void}
14019
14258
  */
14020
- handleGridFocusIn() {
14259
+ handleGridFocusIn(event) {
14021
14260
  this._gridHasFocus = true;
14261
+
14262
+ // Only apply the activeCell ring when the grid wrapper itself receives focus
14263
+ // (Tab/programmatic). When focus moves into a cell button via mousedown,
14264
+ // event.target is the cell descendant — skip the ring here. The subsequent
14265
+ // click handler calls setActiveCell on the clicked cell, which applies the
14266
+ // ring there. Without this guard, mousedown briefly flashes the ring on the
14267
+ // previously-active cell (e.g. the 1st-of-month set by month navigation
14268
+ // when the grid was not focused).
14269
+ if (event && event.target !== event.currentTarget) {
14270
+ return;
14271
+ }
14272
+
14022
14273
  const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
14023
14274
  if (activeCell) {
14024
14275
  const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
@@ -14047,6 +14298,65 @@ class AuroCalendar extends RangeDatepicker {
14047
14298
  this.clearRangePreview();
14048
14299
  }
14049
14300
 
14301
+ /**
14302
+ * Returns a memoized Set of blackout timestamps (seconds) drawn from both
14303
+ * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
14304
+ * The cache invalidates when either source array's reference changes, which
14305
+ * matches Lit's own reactive identity semantics for array properties.
14306
+ * @private
14307
+ * @returns {Set<Number>}
14308
+ */
14309
+ _getBlackoutSet() {
14310
+ // Normalize non-array values to a stable `null` sentinel rather than a
14311
+ // fresh `[]` per call — otherwise the reference-identity cache key
14312
+ // (`_cachedBlackoutDisabledDays === disabledDays`) never matches on
14313
+ // subsequent calls and the Set rebuilds every time. `buildBlackoutSet`
14314
+ // already treats null/non-array as "no legacy disabledDays" via its
14315
+ // own Array.isArray gate.
14316
+ const disabledDays = Array.isArray(this.disabledDays) ? this.disabledDays : null;
14317
+ const blackoutDates = this.datepicker?.blackoutDates;
14318
+ if (this._blackoutSet &&
14319
+ this._cachedBlackoutDisabledDays === disabledDays &&
14320
+ this._cachedBlackoutDates === blackoutDates) {
14321
+ return this._blackoutSet;
14322
+ }
14323
+
14324
+ if (disabledDays && disabledDays.length > 0) {
14325
+ this._warnDisabledDaysDeprecated();
14326
+ }
14327
+
14328
+ this._blackoutSet = buildBlackoutSet(disabledDays, blackoutDates);
14329
+ this._cachedBlackoutDisabledDays = disabledDays;
14330
+ this._cachedBlackoutDates = blackoutDates;
14331
+ return this._blackoutSet;
14332
+ }
14333
+
14334
+ /**
14335
+ * Per-class flag that gates the `disabledDays` deprecation warning so it
14336
+ * fires exactly once per page no matter how many calendars or rebuild
14337
+ * cycles encounter the legacy array.
14338
+ * @private
14339
+ */
14340
+ static _warnedDisabledDaysDeprecation = false;
14341
+
14342
+ /**
14343
+ * One-time `console.debug` directing consumers from the legacy
14344
+ * `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
14345
+ * the first time `_getBlackoutSet` rebuilds from a non-empty
14346
+ * `disabledDays`; subsequent calls (on this or any other AuroCalendar
14347
+ * instance on the page) are silent.
14348
+ * @private
14349
+ * @returns {void}
14350
+ */
14351
+ _warnDisabledDaysDeprecated() {
14352
+ if (AuroCalendar._warnedDisabledDaysDeprecation) {
14353
+ return;
14354
+ }
14355
+ AuroCalendar._warnedDisabledDaysDeprecation = true;
14356
+ // eslint-disable-next-line no-console
14357
+ console.debug('[auro-datepicker] The `disabledDays` property (Unix timestamps) is deprecated. Migrate to the `blackoutDates` property on auro-datepicker (an array of `YYYY-MM-DD` ISO strings). `disabledDays` will be removed in a future major release.');
14358
+ }
14359
+
14050
14360
  /**
14051
14361
  * Computes the initial active date from data properties alone — no DOM required.
14052
14362
  * Priority:
@@ -14091,21 +14401,10 @@ class AuroCalendar extends RangeDatepicker {
14091
14401
  const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
14092
14402
  const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
14093
14403
 
14094
- // Build a Set of blackout timestamps for O(1) lookup.
14095
- const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
14096
-
14097
- // Also include ISO-format blackoutDates from the datepicker if available.
14098
- // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
14099
- const isoBlackouts = this.datepicker?.blackoutDates;
14100
- if (Array.isArray(isoBlackouts)) {
14101
- for (const isoStr of isoBlackouts) {
14102
- const parts = isoStr.split('-');
14103
- const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
14104
- if (Number.isFinite(ts)) {
14105
- blackoutSet.add(ts);
14106
- }
14107
- }
14108
- }
14404
+ // Build a Set of blackout timestamps for O(1) lookup. Memoized by the
14405
+ // identity of the source arrays so rapid month nav doesn't rebuild the
14406
+ // Set (and re-parse every ISO string) on every keypress.
14407
+ const blackoutSet = this._getBlackoutSet();
14109
14408
 
14110
14409
  /**
14111
14410
  * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
@@ -14301,8 +14600,8 @@ class AuroCalendar extends RangeDatepicker {
14301
14600
 
14302
14601
  /**
14303
14602
  * Handles arrow key navigation on the calendar grid wrapper.
14304
- * Focus stays on the grid wrapper; only ariaActiveDescendantElement
14305
- * and the visual active-cell indicator change.
14603
+ * Focus stays on the grid wrapper; only the visual active-cell indicator
14604
+ * changes. The live region announces the new active cell.
14306
14605
  * @private
14307
14606
  * @param {KeyboardEvent} event - The keyboard event.
14308
14607
  * @returns {void}
@@ -14367,21 +14666,24 @@ class AuroCalendar extends RangeDatepicker {
14367
14666
  } else {
14368
14667
  this.handlePrevMonth({ skipActiveUpdate: true });
14369
14668
  }
14370
- requestAnimationFrame(() => {
14371
- requestAnimationFrame(() => {
14372
- const cells = this.getAllFocusableCells();
14373
- const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
14374
- if (target) {
14375
- this.setActiveCell(target.day.date);
14376
- this.handleCellFocused({ detail: { date: target.day.date } });
14377
- } else if (cells.length > 0) {
14378
- const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
14669
+ this._afterMonthRender(() => {
14670
+ const cells = this.getAllFocusableCells();
14671
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
14672
+ if (target) {
14673
+ this.setActiveCell(target.day.date);
14674
+ this.handleCellFocused({ detail: { date: target.day.date } });
14675
+ } else {
14676
+ const fallback = this.pickNearestCell(cells, targetTs, navDir);
14677
+ if (fallback) {
14379
14678
  this.setActiveCell(fallback.day.date);
14380
14679
  this.handleCellFocused({ detail: { date: fallback.day.date } });
14381
14680
  }
14382
- // Re-focus grid wrapper after month change re-render
14383
- this.focusActiveCell();
14384
- });
14681
+ }
14682
+ // Scroll AFTER the cross-month setActiveCell so the freshly
14683
+ // activated cell is what gets scrolled into view.
14684
+ this.scrollToActiveCell();
14685
+ // Re-focus grid wrapper after month change re-render
14686
+ this.focusActiveCell();
14385
14687
  });
14386
14688
  }
14387
14689
  }
@@ -14407,26 +14709,23 @@ class AuroCalendar extends RangeDatepicker {
14407
14709
  } else {
14408
14710
  this.handlePrevMonth({ skipActiveUpdate: true });
14409
14711
  }
14410
- requestAnimationFrame(() => {
14411
- requestAnimationFrame(() => {
14412
- const cells = this.getAllFocusableCells();
14413
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14414
- if (target) {
14415
- this.setActiveCell(target.day.date);
14416
- this.handleCellFocused({ detail: { date: target.day.date } });
14417
- } else if (cells.length > 0) {
14418
- let nearest = null;
14419
-
14420
- if (navDirection === 'next') {
14421
- [nearest] = cells;
14422
- } else {
14423
- nearest = cells[cells.length - 1];
14424
- }
14712
+ this._afterMonthRender(() => {
14713
+ const cells = this.getAllFocusableCells();
14714
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14715
+ if (target) {
14716
+ this.setActiveCell(target.day.date);
14717
+ this.handleCellFocused({ detail: { date: target.day.date } });
14718
+ } else {
14719
+ const nearest = this.pickNearestCell(cells, targetDate, navDirection);
14720
+ if (nearest) {
14425
14721
  this.setActiveCell(nearest.day.date);
14426
14722
  this.handleCellFocused({ detail: { date: nearest.day.date } });
14427
14723
  }
14428
- this.focusActiveCell();
14429
- });
14724
+ }
14725
+ // Scroll AFTER the cross-month setActiveCell so the freshly
14726
+ // activated cell is what gets scrolled into view.
14727
+ this.scrollToActiveCell();
14728
+ this.focusActiveCell();
14430
14729
  });
14431
14730
  }
14432
14731
  }
@@ -14460,6 +14759,8 @@ class AuroCalendar extends RangeDatepicker {
14460
14759
  const targetCell = allCells[targetIndex];
14461
14760
  this.setActiveCell(targetCell.day.date);
14462
14761
  this.scrollToActiveCell();
14762
+ // Match the cross-month branches: keep DOM focus on the grid wrapper
14763
+ // so subsequent arrow keys continue to land on this handler.
14463
14764
  this.focusActiveCell();
14464
14765
  } else if (direction === 'next' && this.showNextMonthBtn) {
14465
14766
  // Navigate to next month and focus the computed next date.
@@ -14476,19 +14777,22 @@ class AuroCalendar extends RangeDatepicker {
14476
14777
  }
14477
14778
 
14478
14779
  this.handleNextMonth({ skipActiveUpdate: true });
14479
- requestAnimationFrame(() => {
14480
- requestAnimationFrame(() => {
14481
- const cells = this.getAllFocusableCells();
14482
- const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
14483
- if (target) {
14484
- this.setActiveCell(target.day.date);
14485
- this.focusActiveCell();
14486
- } else if (cells.length > 0) {
14487
- // Fallback: first cell of the last rendered month
14488
- this.setActiveCell(cells[cells.length - 1].day.date);
14489
- this.focusActiveCell();
14780
+ this._afterMonthRender(() => {
14781
+ const cells = this.getAllFocusableCells();
14782
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
14783
+ if (target) {
14784
+ this.setActiveCell(target.day.date);
14785
+ } else {
14786
+ // Same nearest-by-date fallback handleGridKeyDown uses — direct
14787
+ // `cells[length - 1]` would land on the end of the new month,
14788
+ // far from the user's intended `nextTs`.
14789
+ const fallback = this.pickNearestCell(cells, nextTs, 'next');
14790
+ if (fallback) {
14791
+ this.setActiveCell(fallback.day.date);
14490
14792
  }
14491
- });
14793
+ }
14794
+ this.scrollToActiveCell();
14795
+ this.focusActiveCell();
14492
14796
  });
14493
14797
  } else if (direction === 'prev' && this.showPrevMonthBtn) {
14494
14798
  // Navigate to previous month and focus the computed previous date.
@@ -14502,19 +14806,22 @@ class AuroCalendar extends RangeDatepicker {
14502
14806
  }
14503
14807
 
14504
14808
  this.handlePrevMonth({ skipActiveUpdate: true });
14505
- requestAnimationFrame(() => {
14506
- requestAnimationFrame(() => {
14507
- const cells = this.getAllFocusableCells();
14508
- const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
14509
- if (target) {
14510
- this.setActiveCell(target.day.date);
14511
- this.focusActiveCell();
14512
- } else if (cells.length > 0) {
14513
- // Fallback: last cell of the first rendered month
14514
- this.setActiveCell(cells[0].day.date);
14515
- this.focusActiveCell();
14809
+ this._afterMonthRender(() => {
14810
+ const cells = this.getAllFocusableCells();
14811
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
14812
+ if (target) {
14813
+ this.setActiveCell(target.day.date);
14814
+ } else {
14815
+ // Same nearest-by-date fallback handleGridKeyDown uses — direct
14816
+ // `cells[0]` would land on the start of the previous month, far
14817
+ // from the user's intended `prevTs`.
14818
+ const fallback = this.pickNearestCell(cells, prevTs, 'prev');
14819
+ if (fallback) {
14820
+ this.setActiveCell(fallback.day.date);
14516
14821
  }
14517
- });
14822
+ }
14823
+ this.scrollToActiveCell();
14824
+ this.focusActiveCell();
14518
14825
  });
14519
14826
  }
14520
14827
  } else if (key === 'ArrowDown' || key === 'ArrowUp') {
@@ -14542,20 +14849,22 @@ class AuroCalendar extends RangeDatepicker {
14542
14849
  } else {
14543
14850
  this.handlePrevMonth({ skipActiveUpdate: true });
14544
14851
  }
14545
- requestAnimationFrame(() => {
14546
- requestAnimationFrame(() => {
14547
- const cells = this.getAllFocusableCells();
14548
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14549
- if (target) {
14550
- this.setActiveCell(target.day.date);
14551
- this.focusActiveCell();
14552
- } else if (cells.length > 0) {
14553
- // Clamp to nearest focusable cell
14554
- const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
14852
+ this._afterMonthRender(() => {
14853
+ const cells = this.getAllFocusableCells();
14854
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14855
+ if (target) {
14856
+ this.setActiveCell(target.day.date);
14857
+ } else {
14858
+ // Same nearest-by-date fallback handleGridKeyDown uses — the
14859
+ // old direction-based `cells[0]`/`cells[length-1]` clamp
14860
+ // could land 25+ days from the intended target.
14861
+ const nearest = this.pickNearestCell(cells, targetDate, navDirection);
14862
+ if (nearest) {
14555
14863
  this.setActiveCell(nearest.day.date);
14556
- this.focusActiveCell();
14557
14864
  }
14558
- });
14865
+ }
14866
+ this.scrollToActiveCell();
14867
+ this.focusActiveCell();
14559
14868
  });
14560
14869
  }
14561
14870
  }
@@ -14594,8 +14903,9 @@ class AuroCalendar extends RangeDatepicker {
14594
14903
  return;
14595
14904
  }
14596
14905
 
14597
- // With aria-activedescendant, the button no longer receives native focus,
14598
- // so we use the debounced live region for the full context announcement.
14906
+ // DOM focus stays on the grid wrapper while arrow keys move the active
14907
+ // cell, so cell buttons never receive native focus. The debounced live
14908
+ // region carries the full-context announcement instead.
14599
14909
  const announcement = this.buildFocusAnnouncement(date);
14600
14910
  this.announceFocusDebounced(announcement);
14601
14911
 
@@ -14665,10 +14975,10 @@ class AuroCalendar extends RangeDatepicker {
14665
14975
  return null;
14666
14976
  }
14667
14977
 
14668
- const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
14978
+ const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
14669
14979
  const parsedTo = Number.parseInt(this.dateTo, 10);
14670
14980
  const hasTo = Number.isFinite(parsedTo);
14671
- const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
14981
+ const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
14672
14982
 
14673
14983
  if (date === departTs) {
14674
14984
  return this.datepicker.rangeLabelStart || 'range start';
@@ -14682,36 +14992,22 @@ class AuroCalendar extends RangeDatepicker {
14682
14992
  if (hasTo && date > departTs && date < returnTs) {
14683
14993
  return this.datepicker.rangeLabelInRange || 'in range';
14684
14994
  }
14995
+ if (!hasTo && date > departTs) {
14996
+ return this.datepicker.rangeLabelEndPreview || 'previewing range end';
14997
+ }
14685
14998
  return this.datepicker.rangeLabelAfterRange || 'after range';
14686
14999
  }
14687
15000
 
14688
15001
  /**
14689
- * Checks whether a given date is a blackout date.
15002
+ * Checks whether a given date is a blackout date. Delegates to the
15003
+ * memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
15004
+ * legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
14690
15005
  * @private
14691
15006
  * @param {Number} dateTs - Unix timestamp (seconds).
14692
15007
  * @returns {Boolean} True if the date is blacked out.
14693
15008
  */
14694
15009
  isDateBlackout(dateTs) {
14695
- // Check legacy disabledDays.
14696
- if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
14697
- if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
14698
- return true;
14699
- }
14700
- }
14701
-
14702
- // Check ISO blackoutDates.
14703
- const blackoutDates = this.datepicker?.blackoutDates;
14704
- if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
14705
- const date = new Date(dateTs * 1000);
14706
- const yyyy = date.getFullYear();
14707
- const mm = String(date.getMonth() + 1).padStart(2, '0');
14708
- const dd = String(date.getDate()).padStart(2, '0');
14709
- if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
14710
- return true;
14711
- }
14712
- }
14713
-
14714
- return false;
15010
+ return this._getBlackoutSet().has(dateTs);
14715
15011
  }
14716
15012
 
14717
15013
  /**
@@ -14769,7 +15065,28 @@ class AuroCalendar extends RangeDatepicker {
14769
15065
  }
14770
15066
 
14771
15067
  /**
14772
- * Scrolls the calendar to ensure the month containing the active cell is visible.
15068
+ * Scrolls the calendar so the active cell is visible.
15069
+ *
15070
+ * Walks the flat tree (rendered, slot-aware) outward from the active
15071
+ * cell's button and calls `scrollBy` on every vertically-scrollable
15072
+ * ancestor by whatever delta still separates the cell from that
15073
+ * ancestor's viewport. Native `scrollIntoView` is not used because the
15074
+ * cell sits inside multiple nested scroll containers (the dropdown bib's
15075
+ * `<dialog>`, the bibtemplate's `#bodyContainer`) and the algorithm only
15076
+ * scrolls one of them on its own, leaving the cell short of the
15077
+ * viewport in mobile fullscreen.
15078
+ *
15079
+ * Uses `behavior: 'auto'` (the spec's universally-supported non-animated
15080
+ * value) so each `scrollBy` resolves synchronously and the next
15081
+ * iteration's `getBoundingClientRect` reads post-scroll positions
15082
+ * accurately. This also satisfies `prefers-reduced-motion` users — the
15083
+ * scroll containers do not set CSS `scroll-behavior: smooth`, so `auto`
15084
+ * is effectively instant.
15085
+ *
15086
+ * The active cell is looked up from the cache populated by
15087
+ * `setActiveCell`. On a cache miss (stale or absent) the cache is
15088
+ * refreshed from a single full scan so subsequent calls stay on the
15089
+ * fast path.
14773
15090
  * @private
14774
15091
  * @returns {void}
14775
15092
  */
@@ -14778,16 +15095,69 @@ class AuroCalendar extends RangeDatepicker {
14778
15095
  return;
14779
15096
  }
14780
15097
 
14781
- const date = new Date(this.activeCellDate * 1000);
14782
- const month = date.getMonth() + 1;
14783
- const year = date.getFullYear();
14784
- const selector = `#month-${month}-${year}`;
14785
- const monthElem = this.shadowRoot.querySelector(selector);
15098
+ // Prefer the cell cached by setActiveCell so arrow-key navigation does
15099
+ // not rebuild the full cell list on every keypress. Fall back to a
15100
+ // lookup when the cache is stale (e.g. detached after month re-render)
15101
+ // or absent (scrollToActiveCell called without a prior setActiveCell);
15102
+ // refresh the cache on the fallback path so a subsequent call reuses it.
15103
+ const activeDate = this.activeCellDate;
15104
+ const cached = this._activeCell;
15105
+ const cacheFresh = cached && cached.isConnected && cached.day && cached.day.date === activeDate;
15106
+ let activeCell = null;
15107
+ if (cacheFresh) {
15108
+ activeCell = cached;
15109
+ } else {
15110
+ activeCell = this.getAllFocusableCells().find((cell) => cell.day && cell.day.date === activeDate);
15111
+ this._activeCell = activeCell || null;
15112
+ }
15113
+ if (!activeCell) {
15114
+ return;
15115
+ }
14786
15116
 
14787
- if (monthElem) {
14788
- const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
14789
- monthElem.scrollIntoView({ block: 'nearest',
14790
- behavior: prefersReducedMotion ? 'instant' : 'smooth' });
15117
+ // Scroll the button inside the cell — it has concrete dimensions,
15118
+ // which avoids quirks when the cell host has display: inline / contents
15119
+ // / flex-without-explicit-size.
15120
+ const target = activeCell._cachedButton ||
15121
+ activeCell.shadowRoot?.querySelector('button.day') ||
15122
+ activeCell;
15123
+
15124
+ // parentNode follows the authored DOM tree and steps over shadow roots
15125
+ // via slot projection. A slotted element's visual parent is its
15126
+ // assignedSlot's parent (inside the host's shadow tree), not the host
15127
+ // itself. Without this hop, the walk skips right past #bodyContainer
15128
+ // and <dialog> and finds no scrollable ancestor at all.
15129
+ const flatParent = (current) => {
15130
+ if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
15131
+ return current.host || null;
15132
+ }
15133
+ if (current.assignedSlot) {
15134
+ return current.assignedSlot.parentNode;
15135
+ }
15136
+ return current.parentNode;
15137
+ };
15138
+
15139
+ let node = flatParent(target);
15140
+ while (node && node !== document && node !== window) {
15141
+ if (node.nodeType === Node.ELEMENT_NODE) {
15142
+ const { overflowY } = window.getComputedStyle(node);
15143
+ if (overflowY === 'auto' || overflowY === 'scroll') {
15144
+ const targetRect = target.getBoundingClientRect();
15145
+ const scrollerRect = node.getBoundingClientRect();
15146
+ let delta = 0;
15147
+ if (targetRect.top < scrollerRect.top) {
15148
+ delta = targetRect.top - scrollerRect.top;
15149
+ } else if (targetRect.bottom > scrollerRect.bottom) {
15150
+ delta = targetRect.bottom - scrollerRect.bottom;
15151
+ }
15152
+ if (delta !== 0) {
15153
+ node.scrollBy({
15154
+ top: delta,
15155
+ behavior: 'auto'
15156
+ });
15157
+ }
15158
+ }
15159
+ }
15160
+ node = flatParent(node);
14791
15161
  }
14792
15162
  }
14793
15163
 
@@ -14878,9 +15248,34 @@ class AuroCalendar extends RangeDatepicker {
14878
15248
  // the last one.
14879
15249
  if (this._announceRafId) {
14880
15250
  cancelAnimationFrame(this._announceRafId);
15251
+ this._announceRafId = null;
14881
15252
  }
15253
+ this._deliverAnnouncement(dateStr, 0);
15254
+ }
15255
+
15256
+ /**
15257
+ * Writes `dateStr` to the live region. If the dropdown's dialog hasn't
15258
+ * mounted yet (so getOrCreateLiveRegion can't attach), retries on the
15259
+ * next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
15260
+ * dropping the announcement. The retry uses the same `_announceRafId`
15261
+ * the double-rAF below uses, so a newer announceSelection call (or
15262
+ * disconnectedCallback) cancels any in-flight retry.
15263
+ * @private
15264
+ * @param {String} dateStr - The localized date string to announce.
15265
+ * @param {Number} attempts - Number of prior retry attempts.
15266
+ * @returns {void}
15267
+ */
15268
+ _deliverAnnouncement(dateStr, attempts) {
14882
15269
  const liveRegion = this.getOrCreateLiveRegion();
14883
15270
  if (!liveRegion) {
15271
+ const MAX_LIVE_REGION_RETRIES = 10;
15272
+ if (attempts < MAX_LIVE_REGION_RETRIES) {
15273
+ this._announceRafId = requestAnimationFrame(() => {
15274
+ this._deliverAnnouncement(dateStr, attempts + 1);
15275
+ });
15276
+ } else {
15277
+ this._announceRafId = null;
15278
+ }
14884
15279
  return;
14885
15280
  }
14886
15281
 
@@ -15053,7 +15448,7 @@ class AuroCalendar extends RangeDatepicker {
15053
15448
  </div>
15054
15449
  </div>
15055
15450
 
15056
- <div class="calendarWrapper ${!this.isFullscreen && this.dropdown?.desktopModal ? 'hasFooter' : ''}">
15451
+ <div class="calendarWrapper">
15057
15452
  <div class="calendarNavButtons">
15058
15453
  ${this.showPrevMonthBtn ? u$a`
15059
15454
  <button tabIndex="0" class="calendarNavBtn prevMonth" aria-label="${this.datepicker?.navLabelPrevMonth || 'Previous month'}" @click="${this.handlePrevMonth}">
@@ -15066,7 +15461,7 @@ class AuroCalendar extends RangeDatepicker {
15066
15461
  </button>
15067
15462
  ` : undefined}
15068
15463
  </div>
15069
- <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}">
15464
+ <div id="calendarGrid" class="calendars" role="group" aria-roledescription="calendar" tabindex="0" aria-label="${this.datepicker?.calendarGridLabel}" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}" @calendar-month-mouseleave="${this.clearRangePreview}">
15070
15465
  ${this.renderAllCalendars()}
15071
15466
  </div>
15072
15467
  </div>
@@ -18975,7 +19370,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
18975
19370
  }
18976
19371
  };
18977
19372
 
18978
- var formkitVersion$1 = '202606231948';
19373
+ var formkitVersion$1 = '202607010104';
18979
19374
 
18980
19375
  let AuroElement$2 = class AuroElement extends i$1 {
18981
19376
  static get properties() {
@@ -20247,6 +20642,7 @@ class AuroDropdown extends AuroElement$2 {
20247
20642
  role="${o$2(this.triggerContentFocusable ? undefined : this.a11yRole)}"
20248
20643
  aria-expanded="${o$2(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
20249
20644
  aria-controls="${o$2(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
20645
+ aria-haspopup="${o$2(this.a11yRole === 'combobox' && !this.triggerContentFocusable ? 'listbox' : undefined)}"
20250
20646
  aria-labelledby="${o$2(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
20251
20647
  aria-disabled="${o$2(this.disabled ? 'true' : undefined)}"
20252
20648
  @focusin="${this.handleFocusin}"
@@ -24756,15 +25152,17 @@ class AuroFormValidation {
24756
25152
  );
24757
25153
  }
24758
25154
 
24759
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
24760
- if (this.auroInputElements?.length === 2) {
24761
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
25155
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
25156
+
25157
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
25158
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
25159
+ // field (datepicker is the intended consumer — start/end are independently required).
25160
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
25161
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
24762
25162
  hasValue = false;
24763
25163
  }
24764
25164
  }
24765
25165
 
24766
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
24767
-
24768
25166
  if (isCombobox) {
24769
25167
 
24770
25168
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -30700,6 +31098,13 @@ class AuroInputUtilities {
30700
31098
  * @returns {string | undefined}
30701
31099
  */
30702
31100
  toFormattedValue(valueObject, format) {
31101
+ // Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
31102
+ // `format` argument has to fail gracefully rather than throw on
31103
+ // `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
31104
+ // as "no format → no display value".
31105
+ if (!format) {
31106
+ return undefined;
31107
+ }
30703
31108
  const normalizedFormat = format.toLowerCase();
30704
31109
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
30705
31110
 
@@ -30851,76 +31256,19 @@ class BaseInput extends AuroElement$1 {
30851
31256
  constructor() {
30852
31257
  super();
30853
31258
 
30854
- this.appearance = "default";
30855
- this.disabled = false;
30856
- this.layout = 'classic';
30857
- this.locale = 'en-US';
30858
- this.max = undefined;
30859
- this.maxLength = undefined;
30860
- this.min = undefined;
30861
- this.minLength = undefined;
30862
- this.required = false;
30863
- this.onDark = false;
30864
- this.setCustomValidityForType = undefined;
30865
- this.size = 'lg';
30866
- this.shape = 'classic';
30867
- this.value = undefined;
30868
-
30869
- this._initializePrivateDefaults();
30870
- }
30871
-
30872
- /**
30873
- * Internal Defaults.
30874
- * @private
30875
- * @returns {void}
30876
- */
30877
- _initializePrivateDefaults() {
31259
+ // Single-source initialization. Alphabetized so duplicate or stale
31260
+ // defaults are immediately obvious on a diff. Every field is assigned
31261
+ // exactly once here (previously the constructor + the old
31262
+ // `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
31263
+ // fields and double-allocated `util` and `validation`, discarding the
31264
+ // first instance). `validation` is now allocated exactly once; `util`
31265
+ // is seeded here with an en-US default and then rebuilt in
31266
+ // `connectedCallback` once the consumer-resolved locale is available,
31267
+ // so a parent (datepicker/combobox) calling `validate()` synchronously
31268
+ // during its own update cycle sees a populated util instance.
30878
31269
  this.activeLabel = false;
30879
- this.appearance = "default";
30880
- this.icon = false;
30881
- this.disabled = false;
30882
- this.dvInputOnly = false;
30883
- this.hideLabelVisually = false;
30884
- this.max = undefined;
30885
- this.maxLength = undefined;
30886
- this.min = undefined;
30887
- this.minLength = undefined;
30888
- this.noValidate = false;
30889
- this.onDark = false;
30890
- this.required = false;
30891
- this.setCustomValidityForType = undefined;
30892
-
30893
- // Used for storing raw values returned from input mask.
30894
- this._rawMaskValue = undefined;
30895
-
30896
- /**
30897
- * @private
30898
- */
30899
- this.layout = 'classic';
30900
-
30901
- /**
30902
- * @private
30903
- */
30904
- this.shape = 'classic';
30905
-
30906
- /**
30907
- * @private
30908
- */
30909
- this.size = 'lg';
30910
-
30911
- this.touched = false;
30912
- this.util = new AuroInputUtilities({
30913
- locale: "en-US",
30914
- format: this.format
30915
- });
30916
- this.validation = new AuroFormValidation();
30917
- this.inputIconName = undefined;
30918
- this.showPassword = false;
30919
- this.validationCCLength = undefined;
30920
- this.hasValue = false;
30921
- this.label = 'Input label is undefined';
30922
-
30923
31270
 
31271
+ /** @private */
30924
31272
  this.allowedInputTypes = [
30925
31273
  "text",
30926
31274
  "number",
@@ -30929,7 +31277,9 @@ class BaseInput extends AuroElement$1 {
30929
31277
  "credit-card",
30930
31278
  "tel"
30931
31279
  ];
30932
- this.icon = false;
31280
+ this.appearance = "default";
31281
+
31282
+ /** @private */
30933
31283
  this.dateFormatMap = {
30934
31284
  'mm/dd/yyyy': 'dateMMDDYYYY',
30935
31285
  'dd/mm/yyyy': 'dateDDMMYYYY',
@@ -30946,27 +31296,62 @@ class BaseInput extends AuroElement$1 {
30946
31296
  'dd/mm': 'dateDDMM',
30947
31297
  'mm/dd': 'dateMMDD'
30948
31298
  };
31299
+ this.disabled = false;
31300
+
31301
+ /** @private */
30949
31302
  this.domHandler = new DomHandler();
30950
31303
  this.dvInputOnly = false;
30951
31304
  this.hasValue = false;
31305
+ this.hideLabelVisually = false;
31306
+ this.icon = false;
31307
+
31308
+ /** @private */
30952
31309
  this.inputIconName = undefined;
31310
+
31311
+ /** @private */
30953
31312
  this.label = 'Input label is undefined';
31313
+ this.layout = 'classic';
31314
+ this.locale = 'en-US';
31315
+ this.max = undefined;
31316
+ this.maxLength = undefined;
31317
+ this.min = undefined;
31318
+ this.minLength = undefined;
30954
31319
  this.noValidate = false;
30955
- this._rawMaskValue = undefined; // Used for storing raw values returned from input mask.
31320
+ this.onDark = false;
31321
+ // Raw values returned from the input mask before model normalization.
31322
+ this._rawMaskValue = undefined;
31323
+ this.required = false;
31324
+ this.setCustomValidityForType = undefined;
31325
+ // Credit Card is intentionally excluded — its mask manages the cursor
31326
+ // itself, and listing it here caused cursor placement issues in Safari.
31327
+ /** @private */
30956
31328
  this.setSelectionInputTypes = [
30957
31329
  "text",
30958
31330
  "password",
30959
31331
  "email"
30960
- ]; // Credit Card is not included as this caused cursor placement issues in Safari.
31332
+ ];
31333
+ this.shape = 'classic';
31334
+
31335
+ /** @private */
30961
31336
  this.showPassword = false;
31337
+ this.size = 'lg';
30962
31338
  this.touched = false;
31339
+
31340
+ /** @private */
30963
31341
  this.uniqueId = new UniqueId().create();
31342
+
31343
+ /** @private */
30964
31344
  this.util = new AuroInputUtilities({
30965
31345
  locale: this.locale,
30966
31346
  format: this.format
30967
31347
  });
31348
+
31349
+ /** @private */
30968
31350
  this.validation = new AuroFormValidation();
31351
+
31352
+ /** @private */
30969
31353
  this.validationCCLength = undefined;
31354
+ this.value = undefined;
30970
31355
  }
30971
31356
 
30972
31357
  // function to define props used within the scope of this component
@@ -31470,6 +31855,15 @@ class BaseInput extends AuroElement$1 {
31470
31855
 
31471
31856
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
31472
31857
 
31858
+ // Normalize the format token to lowercase so case-mixed values supplied
31859
+ // via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
31860
+ // lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
31861
+ // format silently misses the map and leaves `setCustomValidityForType`
31862
+ // unset.
31863
+ if (this.format) {
31864
+ this.format = this.format.toLowerCase();
31865
+ }
31866
+
31473
31867
  // use validity message override if declared when initializing the component
31474
31868
  if (this.hasAttribute('setCustomValidity')) {
31475
31869
  this.ValidityMessageOverride = this.setCustomValidity;
@@ -31553,6 +31947,13 @@ class BaseInput extends AuroElement$1 {
31553
31947
 
31554
31948
  if (typeToI18n.includes(this.type)) {
31555
31949
  this.setCustomValidityForType = i18n$1(this.lang, this.type);
31950
+ // COVERAGE: this `else if` branch is unreachable in WTR. connectedCallback
31951
+ // (L682) calls configureDataForType, which at L1266-1268 assigns
31952
+ // `this.format = this.util.getDateMaskFromLocale().toLowerCase()` for any
31953
+ // type=date input whose `format` attribute is unset. That runs before
31954
+ // firstUpdated invokes setCustomHelpTextMessage, so `!this.format` is
31955
+ // always false here. Retained as a defensive fallback; the whole function
31956
+ // is @deprecated per AB#1557296 and slated for removal.
31556
31957
  } else if (!this.format && this.type === 'date') {
31557
31958
  this.setCustomValidityForType = i18n$1(this.lang, 'dateMMDDYYYY');
31558
31959
  } else if (this.dateFormatMap[this.format]) {
@@ -31842,6 +32243,38 @@ class BaseInput extends AuroElement$1 {
31842
32243
  this.touched = true;
31843
32244
  this.validation.validate(this);
31844
32245
  }
32246
+
32247
+ // Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
32248
+ // update that can re-render the input and reset the native cursor; we
32249
+ // capture the caret position before that update commits and restore it
32250
+ // via `setSelectionRange` once the update has flushed. Gated on
32251
+ // `setSelectionInputTypes` so credit-card (and other masked types whose
32252
+ // formatter manages the cursor itself) doesn't get a competing write.
32253
+ // Capture the caret position INSIDE the gate — reading `selectionStart`
32254
+ // on input types that don't support text selection (number, email in
32255
+ // some browsers) throws InvalidStateError, which would crash all input
32256
+ // handling. Wrap the read in try/catch belt-and-suspenders even though
32257
+ // the gated types currently support it, since the list is a public
32258
+ // property a consumer could mutate.
32259
+ if (this.setSelectionInputTypes.includes(this.type)) {
32260
+ let selectionStart = null;
32261
+ try {
32262
+ ({ selectionStart } = this.inputElement);
32263
+ } catch (error) { // eslint-disable-line no-unused-vars
32264
+ return;
32265
+ }
32266
+ if (typeof selectionStart !== 'number') {
32267
+ return;
32268
+ }
32269
+ this.updateComplete.then(() => {
32270
+ try {
32271
+ this.inputElement.setSelectionRange(selectionStart, selectionStart);
32272
+ } catch (error) { // eslint-disable-line no-unused-vars
32273
+ // Some input types (number/email in certain UAs) throw on
32274
+ // setSelectionRange; swallow and let the native cursor stand.
32275
+ }
32276
+ });
32277
+ }
31845
32278
  }
31846
32279
 
31847
32280
  /**
@@ -31975,7 +32408,7 @@ class BaseInput extends AuroElement$1 {
31975
32408
  */
31976
32409
  get placeholderStr() {
31977
32410
  if (!this.placeholder && this.type === 'date') {
31978
- return this.format ? this.format.toUpperCase() : 'MM/DD/YYYY';
32411
+ return this.format.toUpperCase();
31979
32412
  }
31980
32413
  return this.placeholder || "";
31981
32414
  }
@@ -32466,7 +32899,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
32466
32899
  }
32467
32900
  };
32468
32901
 
32469
- var formkitVersion = '202606231948';
32902
+ var formkitVersion = '202607010104';
32470
32903
 
32471
32904
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
32472
32905
  // See LICENSE in the project root for license information.
@@ -32969,6 +33402,7 @@ class AuroInput extends BaseInput {
32969
33402
  <${this.buttonTag}
32970
33403
  @click="${this.handleClickShowPassword}"
32971
33404
  appearance="${this.onDark ? 'inverse' : this.appearance}"
33405
+ aria-pressed="${this.showPassword ? 'true' : 'false'}"
32972
33406
  class="notificationBtn passwordBtn"
32973
33407
  shape="circle"
32974
33408
  size="sm"
@@ -33042,25 +33476,29 @@ class AuroInput extends BaseInput {
33042
33476
  * @returns {html} - Returns HTML for the help text and error message.
33043
33477
  */
33044
33478
  renderHtmlHelpText() {
33479
+ // Single `<p>` with stable identity across validity transitions —
33480
+ // previously two distinct templates (valid vs invalid) caused Lit to
33481
+ // replace the node entirely on a flip, and VoiceOver wouldn't
33482
+ // re-announce because the live-region element it was watching had been
33483
+ // removed and a new one inserted. Keeping one node means the `role`,
33484
+ // `aria-live`, and text content all change in-place, which AT does
33485
+ // observe and announce.
33486
+ const isError = this.validity && this.validity !== 'valid';
33045
33487
  return u$a`
33046
- ${!this.validity || this.validity === undefined || this.validity === 'valid'
33047
- ? u$a`
33048
- <${this.helpTextTag}
33049
- appearance="${this.onDark ? 'inverse' : this.appearance}">
33050
- <p id="${this.uniqueId}" part="helpText">
33051
- <slot name="helpText">${this.getHelpText()}</slot>
33052
- </p>
33053
- </${this.helpTextTag}>
33054
- `
33055
- : u$a`
33056
- <${this.helpTextTag} error
33057
- appearance="${this.onDark ? 'inverse' : this.appearance}">
33058
- <p id="${this.uniqueId}" role="alert" aria-live="assertive" part="helpText">
33059
- ${this.errorMessage}
33060
- </p>
33061
- </${this.helpTextTag}>
33062
- `
33063
- }
33488
+ <${this.helpTextTag}
33489
+ appearance="${this.onDark ? 'inverse' : this.appearance}"
33490
+ ?error=${isError}>
33491
+ <p
33492
+ id="${this.uniqueId}"
33493
+ part="helpText"
33494
+ role="${o$2(isError ? 'alert' : undefined)}"
33495
+ aria-live="${o$2(isError ? 'assertive' : undefined)}">
33496
+ ${isError
33497
+ ? this.errorMessage
33498
+ : u$a`<slot name="helpText">${this.getHelpText()}</slot>`
33499
+ }
33500
+ </p>
33501
+ </${this.helpTextTag}>
33064
33502
  `;
33065
33503
  }
33066
33504
 
@@ -33207,6 +33645,15 @@ function formatISODate(isoStr, format) {
33207
33645
  try {
33208
33646
  const date = dateFormatter.stringToDateInstance(isoStr);
33209
33647
 
33648
+ // `stringToDateInstance` returns an `Invalid Date` for malformed strings
33649
+ // and `null` for non-string input — it does NOT throw. Without this
33650
+ // guard, `getFullYear()`/`getMonth()`/`getDate()` on an Invalid Date
33651
+ // yield `NaN`, and `String(NaN).padStart(4, '0')` produces literals
33652
+ // like "0NaN/0NaN/0NaN" instead of `undefined`.
33653
+ if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
33654
+ return undefined;
33655
+ }
33656
+
33210
33657
  const year = String(date.getFullYear()).padStart(4, '0');
33211
33658
  const month = String(date.getMonth() + 1).padStart(2, '0');
33212
33659
  const day = String(date.getDate()).padStart(2, '0');
@@ -33217,7 +33664,10 @@ function formatISODate(isoStr, format) {
33217
33664
  replace(/mm/iu, month).
33218
33665
  replace(/dd/iu, day);
33219
33666
  } catch (err) {
33220
- // If the input string is not a valid date, return undefined
33667
+ // Defensive: the Date-returning path is guarded above, but `parseDate`
33668
+ // (inside `stringToDateInstance`) could throw on pathological input
33669
+ // future-library-versions might introduce. Treat any thrown error as
33670
+ // "not a valid date" and return undefined.
33221
33671
  return undefined;
33222
33672
  }
33223
33673
  }
@@ -33943,6 +34393,7 @@ class AuroDatePicker extends AuroElement {
33943
34393
  this.rangeLabelBeforeRange = 'before range';
33944
34394
  this.rangeLabelInRange = 'in range';
33945
34395
  this.rangeLabelAfterRange = 'after range';
34396
+ this.rangeLabelEndPreview = 'previewing range end';
33946
34397
  this.blackoutDates = [];
33947
34398
  this.blackoutLabel = 'unavailable';
33948
34399
  this.navLabelPrevMonth = 'Previous month';
@@ -34042,6 +34493,22 @@ class AuroDatePicker extends AuroElement {
34042
34493
  */
34043
34494
  this.handleClick = this.handleClick.bind(this);
34044
34495
 
34496
+ /**
34497
+ * Single AbortController shared by every listener registered in the
34498
+ * configure* methods. Lets disconnectedCallback tear all of them down
34499
+ * with one abort() call.
34500
+ *
34501
+ * The genuine leak risk is the listeners attached to children that can
34502
+ * outlive the host if they get reparented — `this.dropdown`,
34503
+ * `this.calendar`, and the inputs inside the dropdown's slot.
34504
+ * Listeners attached to `this` (e.g. focusin/focusout on the host)
34505
+ * form a self-contained reference graph that the GC can collect with
34506
+ * the host anyway, but they share the same signal so the cleanup
34507
+ * pattern stays uniform across all configure* sites.
34508
+ * @private
34509
+ */
34510
+ this._listenerAbortController = new AbortController();
34511
+
34045
34512
  /**
34046
34513
  * @private
34047
34514
  */
@@ -34090,6 +34557,7 @@ class AuroDatePicker extends AuroElement {
34090
34557
 
34091
34558
  /**
34092
34559
  * Label announced for blackout (disabled but in-range) date cells.
34560
+ * @default 'unavailable'
34093
34561
  */
34094
34562
  blackoutLabel: {
34095
34563
  type: String,
@@ -34106,6 +34574,7 @@ class AuroDatePicker extends AuroElement {
34106
34574
 
34107
34575
  /**
34108
34576
  * Accessible label for the calendar grid containing the days of the month.
34577
+ * @default 'Calendar days of the month'
34109
34578
  */
34110
34579
  calendarGridLabel: {
34111
34580
  type: String,
@@ -34268,6 +34737,7 @@ class AuroDatePicker extends AuroElement {
34268
34737
 
34269
34738
  /**
34270
34739
  * Accessible label for the next month navigation button.
34740
+ * @default 'Next month'
34271
34741
  */
34272
34742
  navLabelNextMonth: {
34273
34743
  type: String,
@@ -34276,6 +34746,7 @@ class AuroDatePicker extends AuroElement {
34276
34746
 
34277
34747
  /**
34278
34748
  * Accessible label for the previous month navigation button.
34749
+ * @default 'Previous month'
34279
34750
  */
34280
34751
  navLabelPrevMonth: {
34281
34752
  type: String,
@@ -34353,7 +34824,11 @@ class AuroDatePicker extends AuroElement {
34353
34824
  },
34354
34825
 
34355
34826
  /**
34356
- * Label announced for cells after the range (or after start when no end is selected).
34827
+ * Label announced for cells after a fully selected range (both
34828
+ * `dateFrom` and `dateTo` are set). While a range is still being
34829
+ * picked (`dateFrom` set, `dateTo` unset), focused cells past the
34830
+ * start use `rangeLabelEndPreview` instead.
34831
+ * @default 'after range'
34357
34832
  */
34358
34833
  rangeLabelAfterRange: {
34359
34834
  type: String,
@@ -34362,6 +34837,7 @@ class AuroDatePicker extends AuroElement {
34362
34837
 
34363
34838
  /**
34364
34839
  * Label announced for cells before the range start.
34840
+ * @default 'before range'
34365
34841
  */
34366
34842
  rangeLabelBeforeRange: {
34367
34843
  type: String,
@@ -34370,14 +34846,27 @@ class AuroDatePicker extends AuroElement {
34370
34846
 
34371
34847
  /**
34372
34848
  * Label announced for the range end date cell.
34849
+ * @default 'range end'
34373
34850
  */
34374
34851
  rangeLabelEnd: {
34375
34852
  type: String,
34376
34853
  reflect: true
34377
34854
  },
34378
34855
 
34856
+ /**
34857
+ * Label announced for the focused cell while previewing a range end
34858
+ * (dateFrom set, dateTo not yet selected). Tells AT users that
34859
+ * pressing Enter would commit this cell as the range end.
34860
+ * @default 'previewing range end'
34861
+ */
34862
+ rangeLabelEndPreview: {
34863
+ type: String,
34864
+ reflect: true
34865
+ },
34866
+
34379
34867
  /**
34380
34868
  * Label announced for cells within the selected range.
34869
+ * @default 'in range'
34381
34870
  */
34382
34871
  rangeLabelInRange: {
34383
34872
  type: String,
@@ -34386,6 +34875,7 @@ class AuroDatePicker extends AuroElement {
34386
34875
 
34387
34876
  /**
34388
34877
  * Label announced for the range start date cell.
34878
+ * @default 'range start'
34389
34879
  */
34390
34880
  rangeLabelStart: {
34391
34881
  type: String,
@@ -34393,7 +34883,7 @@ class AuroDatePicker extends AuroElement {
34393
34883
  },
34394
34884
 
34395
34885
  /**
34396
- * Dates that the user should have for reference as part of their decision making when selecting a date.
34886
+ * Dates that the user should have for reference as part of their decision-making when selecting a date.
34397
34887
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
34398
34888
  */
34399
34889
  referenceDates: {
@@ -34750,10 +35240,26 @@ class AuroDatePicker extends AuroElement {
34750
35240
  // ─── Vendor calendar time conversions ─────────────────────────────────────
34751
35241
 
34752
35242
  /**
34753
- * Converts a Unix timestamp (seconds) from the vendor calendar to an ISO date string.
35243
+ * Converts a Unix timestamp (seconds) from the vendored range-datepicker
35244
+ * (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
35245
+ *
35246
+ * Timezone contract:
35247
+ * - INPUT: `time` is assumed to be the seconds-since-epoch of **local
35248
+ * midnight** for the intended calendar day. The vendor's Day constructor
35249
+ * builds it via `date-fns format(date, 't')` from a locally-constructed
35250
+ * Date, so this assumption currently holds end-to-end.
35251
+ * - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
35252
+ * getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
35253
+ * string matches the local calendar day.
35254
+ *
35255
+ * If the vendor ever switches to emitting UTC-midnight timestamps, this
35256
+ * conversion will silently shift the returned date by one day in zones
35257
+ * west of UTC. Any vendor swap should re-verify this contract; the TZ
35258
+ * regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
35259
+ *
34754
35260
  * @private
34755
- * @param {number} time - Unix timestamp in seconds.
34756
- * @returns {string} ISO date string (yyyy-mm-dd).
35261
+ * @param {number} time - Unix timestamp (seconds), local midnight of the day.
35262
+ * @returns {string} ISO date string (yyyy-mm-dd) reflecting the local calendar day.
34757
35263
  */
34758
35264
  convertWcTimeToDate(time) {
34759
35265
  return dateFormatter$1.toISOFormatString(new Date(time * 1000));
@@ -34855,8 +35361,8 @@ class AuroDatePicker extends AuroElement {
34855
35361
  }
34856
35362
  }
34857
35363
 
34858
- // Focus the calendar grid wrapper (aria-activedescendant handles
34859
- // the SR announcement for the active cell).
35364
+ // Focus the calendar grid wrapper. The live region (announced just
35365
+ // below) handles the SR announcement for the active cell.
34860
35366
  if (activeCell) {
34861
35367
  this.calendar.focusActiveCell();
34862
35368
 
@@ -34870,11 +35376,14 @@ class AuroDatePicker extends AuroElement {
34870
35376
  this.calendar.announceSelection(announcement);
34871
35377
  }, 500);
34872
35378
 
34873
- // On mobile fullscreen, scroll the month list so the active cell's
34874
- // month is visible. Without this, the list stays scrolled to the
34875
- // calendarStartDate month which may be far from the active cell.
34876
- if (this.dropdown.isBibFullscreen) {
35379
+ // On mobile fullscreen or when an explicit focusDate change has
35380
+ // requested a forced scroll on the next render scroll the active
35381
+ // cell into view. Doing this here (after activeCellDate has been
35382
+ // resolved by the rAF loop above) prevents a no-op scroll that
35383
+ // would happen if we tried to scroll before the cell was set.
35384
+ if (this.dropdown.isBibFullscreen || this.forceScrollOnNextMobileCalendarRender) {
34877
35385
  this.calendar.scrollToActiveCell();
35386
+ this.forceScrollOnNextMobileCalendarRender = false;
34878
35387
  }
34879
35388
  } else if (attempts < MAX_ATTEMPTS) {
34880
35389
  requestAnimationFrame(tryFocus);
@@ -34906,11 +35415,13 @@ class AuroDatePicker extends AuroElement {
34906
35415
  this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
34907
35416
  }
34908
35417
 
35418
+ const { signal } = this._listenerAbortController;
35419
+
34909
35420
  this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
34910
35421
  if (!this.isPopoverVisible) {
34911
35422
  this.dropdown.show();
34912
35423
  }
34913
- });
35424
+ }, { signal });
34914
35425
 
34915
35426
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
34916
35427
  this.notifyDatepickerToggled();
@@ -34928,7 +35439,7 @@ class AuroDatePicker extends AuroElement {
34928
35439
  if (this.valueObject) {
34929
35440
  this.centralDate = this.value;
34930
35441
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
34931
- this.centralDate = new Date();
35442
+ this.centralDate = dateFormatter$1.toISOFormatString(new Date());
34932
35443
  }
34933
35444
  }
34934
35445
 
@@ -34996,19 +35507,11 @@ class AuroDatePicker extends AuroElement {
34996
35507
  }
34997
35508
  }
34998
35509
 
34999
- // If on mobile, and the calendar is opened, scroll the focus date into view if the flag is set
35000
- if (this.dropdown.isPopoverVisible && this.forceScrollOnNextMobileCalendarRender) {
35001
-
35002
- // Since the calendar is not rendered until the dropdown is opened,
35003
- // and the auroDropdown-toggled event fires before the popover is actually open,
35004
- // we need to wait until the next frame to ensure the calendar is fully rendered
35005
- // and the area we're trying to scroll to is present in the DOM.
35006
- setTimeout(() => {
35007
- this.calendar.scrollMonthIntoView(this.calendarFocusDate);
35008
- this.forceScrollOnNextMobileCalendarRender = false;
35009
- }, 0);
35010
- }
35011
- });
35510
+ // Note: the forceScrollOnNextMobileCalendarRender scroll-into-view
35511
+ // happens inside focusActiveCellWhenReady() once activeCellDate has
35512
+ // been resolved by its rAF wait — not here in a setTimeout(0), which
35513
+ // fired before the active date was set and silently no-op'd.
35514
+ }, { signal });
35012
35515
 
35013
35516
  // Handle responsive strategy changes while the dropdown is open
35014
35517
  // (e.g. resizing from desktop → mobile or vice versa).
@@ -35055,7 +35558,7 @@ class AuroDatePicker extends AuroElement {
35055
35558
  });
35056
35559
  });
35057
35560
  }
35058
- });
35561
+ }, { signal });
35059
35562
  }
35060
35563
 
35061
35564
  /**
@@ -35068,6 +35571,8 @@ class AuroDatePicker extends AuroElement {
35068
35571
 
35069
35572
  this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
35070
35573
 
35574
+ const { signal } = this._listenerAbortController;
35575
+
35071
35576
  this.inputList.forEach((input, index) => {
35072
35577
  input.addEventListener('input', (event) => {
35073
35578
  event.stopPropagation();
@@ -35079,7 +35584,7 @@ class AuroDatePicker extends AuroElement {
35079
35584
  }
35080
35585
 
35081
35586
  this.notifyValueChanged();
35082
- });
35587
+ }, { signal });
35083
35588
 
35084
35589
  input.addEventListener('auroFormElement-validated', (evt) => {
35085
35590
  // not to bubble up input's validated event.
@@ -35095,7 +35600,7 @@ class AuroDatePicker extends AuroElement {
35095
35600
  this.validity = evt.detail.validity;
35096
35601
  this.errorMessage = evt.detail.message;
35097
35602
  }
35098
- });
35603
+ }, { signal });
35099
35604
  });
35100
35605
  }
35101
35606
 
@@ -35109,19 +35614,32 @@ class AuroDatePicker extends AuroElement {
35109
35614
  this.calendar.datepicker = this;
35110
35615
  this.calendar.dropdown = this.dropdown;
35111
35616
 
35617
+ const { signal } = this._listenerAbortController;
35618
+
35112
35619
  this.calendar.addEventListener('auroCalendar-dateSelected', () => {
35113
- if (this.inputList[0].value !== this.calendar.dateFrom && this.calendar.dateFrom !== undefined) {
35114
- this.inputList[0].value = this.convertWcTimeToDate(this.calendar.dateFrom);
35620
+ // Compare the input's ISO value against the *converted* calendar
35621
+ // timestamp (the vendor's `dateFrom`/`dateTo` are Unix-seconds
35622
+ // strings — comparing the input ISO directly against them would
35623
+ // never match, so the write would fire on every event and emit
35624
+ // redundant input/change activity).
35625
+ if (this.calendar.dateFrom !== undefined) {
35626
+ const fromIso = this.convertWcTimeToDate(this.calendar.dateFrom);
35627
+ if (this.inputList[0].value !== fromIso) {
35628
+ this.inputList[0].value = fromIso;
35629
+ }
35115
35630
  }
35116
35631
 
35117
- if (this.inputList[1] && this.calendar.dateTo && this.inputList[1].value !== this.calendar.dateTo) {
35118
- this.inputList[1].value = this.convertWcTimeToDate(this.calendar.dateTo);
35632
+ if (this.inputList[1] && this.calendar.dateTo) {
35633
+ const toIso = this.convertWcTimeToDate(this.calendar.dateTo);
35634
+ if (this.inputList[1].value !== toIso) {
35635
+ this.inputList[1].value = toIso;
35636
+ }
35119
35637
  }
35120
- });
35638
+ }, { signal });
35121
35639
 
35122
35640
  this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
35123
35641
  this.dropdown.hide();
35124
- });
35642
+ }, { signal });
35125
35643
 
35126
35644
  this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
35127
35645
  const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
@@ -35131,7 +35649,7 @@ class AuroDatePicker extends AuroElement {
35131
35649
  }
35132
35650
 
35133
35651
  this.notifyMonthChanged(event);
35134
- });
35652
+ }, { signal });
35135
35653
  }
35136
35654
 
35137
35655
  /**
@@ -35140,10 +35658,17 @@ class AuroDatePicker extends AuroElement {
35140
35658
  * @returns {void}
35141
35659
  */
35142
35660
  configureDatepicker() {
35661
+ // These listeners are on `this` (the host), so they would GC with the
35662
+ // host even without the abort signal — see the leak rationale on
35663
+ // `_listenerAbortController`. The signal is still passed for uniform
35664
+ // cleanup semantics with the child-element listeners in the other
35665
+ // configure* methods.
35666
+ const { signal } = this._listenerAbortController;
35667
+
35143
35668
  this.addEventListener('focusin', () => {
35144
35669
  this.touched = true;
35145
35670
  this.hasFocus = true;
35146
- });
35671
+ }, { signal });
35147
35672
 
35148
35673
  this.addEventListener('focusout', () => {
35149
35674
  this.hasFocus = false;
@@ -35155,7 +35680,7 @@ class AuroDatePicker extends AuroElement {
35155
35680
  if (!this.matches(':focus-within')) {
35156
35681
  this.validate();
35157
35682
  }
35158
- });
35683
+ }, { signal });
35159
35684
 
35160
35685
  if (this.valueObject) {
35161
35686
  this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
@@ -35353,6 +35878,41 @@ class AuroDatePicker extends AuroElement {
35353
35878
  return this.validity !== undefined && this.validity !== 'valid';
35354
35879
  }
35355
35880
 
35881
+ /**
35882
+ * Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
35883
+ * spans every datepicker instance on the page; lives on the class (not
35884
+ * at module scope) so it stays an encapsulated implementation detail of
35885
+ * this component and does not interfere with WCA's class-JSDoc
35886
+ * attachment.
35887
+ * @private
35888
+ */
35889
+ static _warnedInvalidLocales = new Set();
35890
+
35891
+ /**
35892
+ * Logs a one-time `console.debug` when an unsupported locale falls back to
35893
+ * en-US. Deduped by the offending tag so noisy re-renders that resurface
35894
+ * the same bad value stay quiet, but each new bad value still signals so
35895
+ * consumers can spot the typo or missing tag.
35896
+ * @private
35897
+ * @param {string|undefined} badLocale - The locale value that failed.
35898
+ * @returns {void}
35899
+ */
35900
+ _warnInvalidLocale(badLocale) {
35901
+ // Stringify without coalescing — `String(undefined)` / `String(null)`
35902
+ // surface the actual offending value in the log, instead of the
35903
+ // ambiguous `Locale ""` that `String(badLocale ?? '')` would produce.
35904
+ // Dedup still works correctly because each unique stringification
35905
+ // becomes its own Set entry.
35906
+ const key = String(badLocale);
35907
+ const seen = AuroDatePicker._warnedInvalidLocales;
35908
+ if (seen.has(key)) {
35909
+ return;
35910
+ }
35911
+ seen.add(key);
35912
+ // eslint-disable-next-line no-console
35913
+ console.debug(`[auro-datepicker] Locale "${key}" is not supported by Intl.DateTimeFormat. Falling back to "en-US". Pass a BCP 47 tag such as "en-US", "fr-FR", or "ja-JP".`);
35914
+ }
35915
+
35356
35916
  /**
35357
35917
  * Lifecycle method to check if the locale is valid.
35358
35918
  * @ignore
@@ -35363,10 +35923,15 @@ class AuroDatePicker extends AuroElement {
35363
35923
  if (changedProperties.has('locale')) {
35364
35924
  try {
35365
35925
  const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
35366
- this._validLocale = supported.length > 0 ? this.locale : 'en-US';
35926
+ if (supported.length > 0) {
35927
+ this._validLocale = this.locale;
35928
+ } else {
35929
+ this._validLocale = 'en-US';
35930
+ this._warnInvalidLocale(this.locale);
35931
+ }
35367
35932
  } catch {
35368
- console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
35369
35933
  this._validLocale = 'en-US';
35934
+ this._warnInvalidLocale(this.locale);
35370
35935
  }
35371
35936
 
35372
35937
  const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
@@ -35448,8 +36013,6 @@ class AuroDatePicker extends AuroElement {
35448
36013
  // Skip centralDate update when user clicked a cell in range mode
35449
36014
  // to prevent the displayed months from shifting
35450
36015
  this.centralDate = this.value;
35451
- //TODO: TEST THIS CHANGE
35452
- // this.calendarRenderUtil.updateCentralDate(this, this.value);
35453
36016
  }
35454
36017
 
35455
36018
  this.setHasValue();
@@ -35509,8 +36072,6 @@ class AuroDatePicker extends AuroElement {
35509
36072
  // Skip centralDate update when user clicked a cell in range mode
35510
36073
  // to prevent the displayed months from shifting
35511
36074
  this.centralDate = this.valueEnd;
35512
- // TODO: TEST THIS CHANGE
35513
- // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
35514
36075
  }
35515
36076
 
35516
36077
  this.validate();
@@ -35652,7 +36213,7 @@ class AuroDatePicker extends AuroElement {
35652
36213
  * @returns {void}
35653
36214
  */
35654
36215
  configureClickHandler() {
35655
- this.addEventListener('click', this.handleClick);
36216
+ this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
35656
36217
  }
35657
36218
 
35658
36219
  firstUpdated() {
@@ -35660,6 +36221,15 @@ class AuroDatePicker extends AuroElement {
35660
36221
  // Add the tag name as an attribute if it is different than the component name
35661
36222
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
35662
36223
 
36224
+ // If the element was disconnected before this first render finished,
36225
+ // disconnectedCallback's microtask already aborted the controller. The
36226
+ // connectedCallback reinit guard skips that case because `hasUpdated`
36227
+ // is still false. Mint a fresh controller here so configure* registers
36228
+ // listeners against a live signal.
36229
+ if (this._listenerAbortController.signal.aborted) {
36230
+ this._listenerAbortController = new AbortController();
36231
+ }
36232
+
35663
36233
  this.configureDropdown();
35664
36234
  this.configureInput();
35665
36235
  this.configureCalendar();
@@ -35671,9 +36241,36 @@ class AuroDatePicker extends AuroElement {
35671
36241
  connectedCallback() {
35672
36242
  super.connectedCallback();
35673
36243
 
36244
+ // True reconnect after `disconnectedCallback` aborted our controller:
36245
+ // the existing signal is dead, so listeners registered against it
36246
+ // would never fire. Create a fresh controller and re-run the
36247
+ // configure* wiring (each method is idempotent — it just re-caches
36248
+ // child refs and re-registers listeners against the new signal).
36249
+ // `hasUpdated` gates this so the *first* connect (which precedes
36250
+ // firstUpdated) still falls through to firstUpdated's initial wiring.
36251
+ if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
36252
+ this._listenerAbortController = new AbortController();
36253
+ this.configureDropdown();
36254
+ this.configureInput();
36255
+ this.configureCalendar();
36256
+ this.configureDatepicker();
36257
+ this.configureClickHandler();
36258
+ }
36259
+
35674
36260
  this.locale = this.domHandler.getLocale(this);
35675
36261
  }
35676
36262
 
36263
+ disconnectedCallback() {
36264
+ super.disconnectedCallback();
36265
+ // Defer so that re-parenting (auro-drawer slotting it into a dialog,
36266
+ // for example) does not abort listeners we still need after reconnect.
36267
+ queueMicrotask(() => {
36268
+ if (!this.isConnected) {
36269
+ this._listenerAbortController.abort();
36270
+ }
36271
+ });
36272
+ }
36273
+
35677
36274
  // layout render methods
35678
36275
  // ------------------------------------
35679
36276