@aurodesignsystem-dev/auro-formkit 0.0.0-pr1510.3 → 0.0.0-pr1511.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/components/checkbox/demo/customize.js +22 -0
  2. package/components/checkbox/demo/customize.min.js +1 -1
  3. package/components/checkbox/demo/demo-support.js +1 -0
  4. package/components/checkbox/demo/getting-started.js +22 -0
  5. package/components/checkbox/demo/getting-started.min.js +1 -1
  6. package/components/checkbox/demo/index.js +8 -0
  7. package/components/checkbox/demo/index.min.js +1 -1
  8. package/components/checkbox/demo/styles.scss +1 -0
  9. package/components/checkbox/dist/index.js +1 -1
  10. package/components/checkbox/dist/registered.js +1 -1
  11. package/components/combobox/demo/customize.js +24 -0
  12. package/components/combobox/demo/customize.min.js +4 -3
  13. package/components/combobox/demo/demo-support.js +1 -0
  14. package/components/combobox/demo/getting-started.js +21 -0
  15. package/components/combobox/demo/getting-started.min.js +4 -3
  16. package/components/combobox/demo/index.js +23 -0
  17. package/components/combobox/demo/index.min.js +4 -3
  18. package/components/combobox/demo/styles.scss +1 -0
  19. package/components/combobox/dist/index.js +4 -3
  20. package/components/combobox/dist/registered.js +4 -3
  21. package/components/counter/demo/customize.js +21 -0
  22. package/components/counter/demo/customize.min.js +3 -2
  23. package/components/counter/demo/demo-support.js +1 -0
  24. package/components/counter/demo/index.js +21 -0
  25. package/components/counter/demo/index.min.js +3 -2
  26. package/components/counter/demo/styles.scss +1 -0
  27. package/components/counter/dist/index.js +3 -2
  28. package/components/counter/dist/registered.js +3 -2
  29. package/components/datepicker/demo/accessibility.md +1 -2
  30. package/components/datepicker/demo/api.md +62 -63
  31. package/components/datepicker/demo/customize.js +17 -0
  32. package/components/datepicker/demo/customize.md +1 -12
  33. package/components/datepicker/demo/customize.min.js +200 -608
  34. package/components/datepicker/demo/demo-support.js +1 -0
  35. package/components/datepicker/demo/index.js +23 -0
  36. package/components/datepicker/demo/index.min.js +200 -608
  37. package/components/datepicker/demo/styles.scss +1 -0
  38. package/components/datepicker/dist/index.js +200 -608
  39. package/components/datepicker/dist/registered.js +200 -608
  40. package/components/datepicker/dist/{auro-calendar-cell.d.ts → src/auro-calendar-cell.d.ts} +3 -14
  41. package/components/datepicker/dist/{auro-calendar.d.ts → src/auro-calendar.d.ts} +6 -90
  42. package/components/datepicker/dist/{auro-datepicker.d.ts → src/auro-datepicker.d.ts} +5 -78
  43. package/components/dropdown/demo/customize.js +9 -0
  44. package/components/dropdown/demo/customize.min.js +2 -1
  45. package/components/dropdown/demo/demo-support.js +1 -0
  46. package/components/dropdown/demo/getting-started.js +9 -0
  47. package/components/dropdown/demo/getting-started.min.js +2 -1
  48. package/components/dropdown/demo/index.js +16 -0
  49. package/components/dropdown/demo/index.min.js +2 -1
  50. package/components/dropdown/demo/styles.scss +1 -0
  51. package/components/dropdown/dist/index.js +2 -1
  52. package/components/dropdown/dist/registered.js +2 -1
  53. package/components/form/demo/customize.js +28 -0
  54. package/components/form/demo/customize.min.js +348 -677
  55. package/components/form/demo/demo-support.js +1 -0
  56. package/components/form/demo/getting-started.js +9 -0
  57. package/components/form/demo/getting-started.min.js +348 -677
  58. package/components/form/demo/index.js +5 -0
  59. package/components/form/demo/index.min.js +348 -677
  60. package/components/form/demo/registerDemoDeps.js +23 -0
  61. package/components/form/demo/registerDemoDeps.min.js +348 -677
  62. package/components/form/demo/styles.scss +1 -0
  63. package/components/input/demo/customize.js +25 -0
  64. package/components/input/demo/customize.min.js +1 -1
  65. package/components/input/demo/demo-support.js +1 -0
  66. package/components/input/demo/getting-started.js +8 -0
  67. package/components/input/demo/getting-started.min.js +1 -1
  68. package/components/input/demo/index.js +8 -0
  69. package/components/input/demo/index.min.js +1 -1
  70. package/components/input/demo/styles.css +974 -0
  71. package/components/input/demo/styles.scss +1 -0
  72. package/components/input/dist/index.js +1 -1
  73. package/components/input/dist/registered.js +1 -1
  74. package/components/menu/demo/demo-support.js +1 -0
  75. package/components/menu/demo/index.js +25 -0
  76. package/components/menu/demo/styles.scss +1 -0
  77. package/components/radio/demo/customize.js +22 -0
  78. package/components/radio/demo/customize.min.js +1 -1
  79. package/components/radio/demo/demo-support.js +1 -0
  80. package/components/radio/demo/getting-started.js +24 -0
  81. package/components/radio/demo/getting-started.min.js +1 -1
  82. package/components/radio/demo/index.js +8 -0
  83. package/components/radio/demo/index.min.js +1 -1
  84. package/components/radio/demo/styles.scss +1 -0
  85. package/components/radio/dist/index.js +1 -1
  86. package/components/radio/dist/registered.js +1 -1
  87. package/components/select/demo/customize.js +11 -0
  88. package/components/select/demo/customize.min.js +132 -55
  89. package/components/select/demo/demo-support.js +1 -0
  90. package/components/select/demo/getting-started.js +26 -0
  91. package/components/select/demo/getting-started.min.js +132 -55
  92. package/components/select/demo/index.js +11 -0
  93. package/components/select/demo/index.min.js +132 -55
  94. package/components/select/demo/keyboard-behavior.md +18 -4
  95. package/components/select/demo/styles.scss +1 -0
  96. package/components/select/dist/auro-select.d.ts +20 -8
  97. package/components/select/dist/index.js +132 -55
  98. package/components/select/dist/registered.js +132 -55
  99. package/custom-elements.json +577 -863
  100. package/package.json +2 -6
  101. package/components/datepicker/dist/blackoutUtils.d.ts +0 -43
  102. /package/components/datepicker/dist/{auro-calendar-month.d.ts → src/auro-calendar-month.d.ts} +0 -0
  103. /package/components/datepicker/dist/{buttonVersion.d.ts → src/buttonVersion.d.ts} +0 -0
  104. /package/components/datepicker/dist/{datepickerKeyboardStrategy.d.ts → src/datepickerKeyboardStrategy.d.ts} +0 -0
  105. /package/components/datepicker/dist/{iconVersion.d.ts → src/iconVersion.d.ts} +0 -0
  106. /package/components/datepicker/dist/{index.d.ts → src/index.d.ts} +0 -0
  107. /package/components/datepicker/dist/{popoverVersion.d.ts → src/popoverVersion.d.ts} +0 -0
  108. /package/components/datepicker/dist/{styles → src/styles}/classic/color-css.d.ts +0 -0
  109. /package/components/datepicker/dist/{styles → src/styles}/classic/style-css.d.ts +0 -0
  110. /package/components/datepicker/dist/{styles → src/styles}/color-calendar-css.d.ts +0 -0
  111. /package/components/datepicker/dist/{styles → src/styles}/color-cell-css.d.ts +0 -0
  112. /package/components/datepicker/dist/{styles → src/styles}/color-css.d.ts +0 -0
  113. /package/components/datepicker/dist/{styles → src/styles}/color-month-css.d.ts +0 -0
  114. /package/components/datepicker/dist/{styles → src/styles}/shapeSize-css.d.ts +0 -0
  115. /package/components/datepicker/dist/{styles → src/styles}/snowflake/color-css.d.ts +0 -0
  116. /package/components/datepicker/dist/{styles → src/styles}/snowflake/style-css.d.ts +0 -0
  117. /package/components/datepicker/dist/{styles → src/styles}/style-auro-calendar-cell-css.d.ts +0 -0
  118. /package/components/datepicker/dist/{styles → src/styles}/style-auro-calendar-css.d.ts +0 -0
  119. /package/components/datepicker/dist/{styles → src/styles}/style-auro-calendar-month-css.d.ts +0 -0
  120. /package/components/datepicker/dist/{styles → src/styles}/style-css.d.ts +0 -0
  121. /package/components/datepicker/dist/{styles → src/styles}/tokens-css.d.ts +0 -0
  122. /package/components/datepicker/dist/{utilities.d.ts → src/utilities.d.ts} +0 -0
  123. /package/components/datepicker/dist/{utilitiesCalendar.d.ts → src/utilitiesCalendar.d.ts} +0 -0
  124. /package/components/datepicker/dist/{utilitiesCalendarRender.d.ts → src/utilitiesCalendarRender.d.ts} +0 -0
  125. /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/day.d.ts +0 -0
  126. /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
  127. /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
  128. /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
@@ -6176,7 +6176,7 @@ function normalizeDates$3(context, ...dates) {
6176
6176
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
6177
6177
  * //=> Tue Sep 02 2014 00:00:00
6178
6178
  */
6179
- function startOfDay$3(date, options) {
6179
+ function startOfDay$4(date, options) {
6180
6180
  const _date = toDate$3(date, options?.in);
6181
6181
  _date.setHours(0, 0, 0, 0);
6182
6182
  return _date;
@@ -6224,8 +6224,8 @@ function differenceInCalendarDays$3(laterDate, earlierDate, options) {
6224
6224
  earlierDate,
6225
6225
  );
6226
6226
 
6227
- const laterStartOfDay = startOfDay$3(laterDate_);
6228
- const earlierStartOfDay = startOfDay$3(earlierDate_);
6227
+ const laterStartOfDay = startOfDay$4(laterDate_);
6228
+ const earlierStartOfDay = startOfDay$4(earlierDate_);
6229
6229
 
6230
6230
  const laterTimestamp =
6231
6231
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$3(laterStartOfDay);
@@ -13372,7 +13372,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$3 {
13372
13372
  }
13373
13373
  };
13374
13374
 
13375
- var formkitVersion$8 = '202606252324';
13375
+ var formkitVersion$8 = '202606252142';
13376
13376
 
13377
13377
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
13378
13378
  // See LICENSE in the project root for license information.
@@ -15456,7 +15456,7 @@ function normalizeDates$1(context, ...dates) {
15456
15456
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
15457
15457
  * //=> Tue Sep 02 2014 00:00:00
15458
15458
  */
15459
- function startOfDay$1(date, options) {
15459
+ function startOfDay$2(date, options) {
15460
15460
  const _date = toDate$1(date, options?.in);
15461
15461
  _date.setHours(0, 0, 0, 0);
15462
15462
  return _date;
@@ -15504,8 +15504,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
15504
15504
  earlierDate,
15505
15505
  );
15506
15506
 
15507
- const laterStartOfDay = startOfDay$1(laterDate_);
15508
- const earlierStartOfDay = startOfDay$1(earlierDate_);
15507
+ const laterStartOfDay = startOfDay$2(laterDate_);
15508
+ const earlierStartOfDay = startOfDay$2(earlierDate_);
15509
15509
 
15510
15510
  const laterTimestamp =
15511
15511
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
@@ -24962,8 +24962,8 @@ class RangeDatepickerCell extends i$3 {
24962
24962
  const parsedDateFrom = parseInt(dateFrom, 10);
24963
24963
  const parsedDateTo = parseInt(dateTo, 10);
24964
24964
  if (day) {
24965
- if (getTime(startOfDay$1(parsedDateTo * 1000)) / 1000 === day.date ||
24966
- getTime(startOfDay$1(parsedDateFrom * 1000)) / 1000 === day.date) {
24965
+ if (getTime(startOfDay$2(parsedDateTo * 1000)) / 1000 === day.date ||
24966
+ getTime(startOfDay$2(parsedDateFrom * 1000)) / 1000 === day.date) {
24967
24967
  this.selected = true;
24968
24968
  }
24969
24969
  if (((hoveredDate === day.date || day.date < hoveredDate) &&
@@ -25151,7 +25151,7 @@ class RangeDatepickerCalendar extends i$3 {
25151
25151
  this.dayNamesOfTheWeek = [];
25152
25152
  this.daysOfMonth = [];
25153
25153
  this._locale = null;
25154
- this.currentDate = parseInt(format$1(startOfDay$1(Date.now()), 't'), 10);
25154
+ this.currentDate = parseInt(format$1(startOfDay$2(Date.now()), 't'), 10);
25155
25155
  this.localeChanged();
25156
25156
  this.yearAndMonthChanged(this.year, this.month);
25157
25157
  }
@@ -25625,7 +25625,7 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
25625
25625
  __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
25626
25626
  AuroLibraryRuntimeUtils$5$1.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
25627
25627
 
25628
- var styleCss$5$2 = i$6`.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}`;
25628
+ var styleCss$5$2 = i$6`.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}`;
25629
25629
 
25630
25630
  var colorCss$5$2 = i$6`: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}`;
25631
25631
 
@@ -25650,104 +25650,14 @@ class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,cl
25650
25650
 
25651
25651
  var popoverVersion = '6.0.1';
25652
25652
 
25653
- /**
25654
- * Single source of truth for parsing and matching blackout dates across the
25655
- * datepicker. Both `auro-calendar` (memoized Set + `isDateBlackout`) and the
25656
- * pre-`firstUpdated` fallback inside `auro-calendar-cell` route through these
25657
- * helpers so the YYYY-MM-DD → seconds conversion and the merge-with-legacy
25658
- * `disabledDays` rules are defined exactly once.
25659
- */
25660
-
25661
- /**
25662
- * Converts a `YYYY-MM-DD` ISO date string to a Unix timestamp (seconds)
25663
- * representing local midnight on that calendar day. Returns `null` for
25664
- * inputs that don't parse to a finite timestamp.
25665
- *
25666
- * Uses the `new Date(year, monthIndex, day)` constructor (NOT
25667
- * `new Date(isoStr)`) so the result is local-midnight rather than UTC
25668
- * midnight — required to keep the calendar grid aligned with the user's
25669
- * local calendar day in negative-offset timezones.
25670
- *
25671
- * @param {string} isoStr - Date string in `YYYY-MM-DD` format.
25672
- * @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
25673
- */
25674
- function parseIsoToTimestamp(isoStr) {
25675
- if (typeof isoStr !== 'string') {
25676
- return null;
25677
- }
25678
- const parts = isoStr.split('-');
25679
- if (parts.length !== 3) {
25680
- return null;
25681
- }
25682
- const year = parseInt(parts[0], 10);
25683
- const month = parseInt(parts[1], 10);
25684
- const day = parseInt(parts[2], 10);
25685
- if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
25686
- return null;
25687
- }
25688
- // Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
25689
- // silently normalizes those to a different calendar day, which would
25690
- // disable the wrong date if we let the result through.
25691
- if (month < 1 || month > 12 || day < 1 || day > 31) {
25692
- return null;
25693
- }
25694
- const date = new Date(year, month - 1, day);
25695
- // Guard the residual case where JS still rolls a value (e.g. Feb 30 → Mar 2).
25696
- // After construction, getFullYear/getMonth/getDate should match the inputs.
25697
- if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
25698
- return null;
25699
- }
25700
- const ts = Math.floor(date.getTime() / 1000);
25701
- return Number.isFinite(ts) ? ts : null;
25702
- }
25703
-
25704
- /**
25705
- * Builds a `Set<number>` of seconds-since-epoch timestamps covering both the
25706
- * legacy `disabledDays` (already-numeric) array and the ISO `blackoutDates`
25707
- * array. Use this for O(1) membership checks in hot paths.
25708
- *
25709
- * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
25710
- * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
25711
- * @returns {Set<number>}
25712
- */
25713
- function buildBlackoutSet(disabledDays, blackoutDates) {
25714
- const set = new Set();
25715
- if (Array.isArray(disabledDays)) {
25716
- for (const day of disabledDays) {
25717
- const ts = parseInt(day, 10);
25718
- if (Number.isFinite(ts)) {
25719
- set.add(ts);
25720
- }
25721
- }
25722
- }
25723
- if (Array.isArray(blackoutDates)) {
25724
- for (const isoStr of blackoutDates) {
25725
- const ts = parseIsoToTimestamp(isoStr);
25726
- if (ts !== null) {
25727
- set.add(ts);
25728
- }
25729
- }
25730
- }
25731
- return set;
25732
- }
25733
-
25734
- /**
25735
- * One-shot membership test for a single timestamp against both blackout
25736
- * sources. Allocates a Set on each call; only use this in cold paths
25737
- * (e.g. the pre-`firstUpdated` cell fallback). Hot paths should hold the
25738
- * Set returned from `buildBlackoutSet` and `.has(ts)` directly.
25739
- *
25740
- * @param {number} dateTs - Unix timestamp (seconds) to test.
25741
- * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
25742
- * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
25743
- * @returns {boolean}
25744
- */
25745
- function isBlackoutTimestamp(dateTs, disabledDays, blackoutDates) {
25746
- return buildBlackoutSet(disabledDays, blackoutDates).has(dateTs);
25747
- }
25748
-
25749
25653
  /* 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 */
25750
25654
 
25655
+ const startOfDay$1 = (ms) => {
25656
+ const date = new Date(ms);
25657
+ date.setHours(0, 0, 0, 0);
25658
+ return date.getTime();
25659
+ };
25660
+
25751
25661
  class AuroCalendarCell extends i$3 {
25752
25662
  constructor() {
25753
25663
  super();
@@ -25794,14 +25704,6 @@ class AuroCalendarCell extends i$3 {
25794
25704
  type: Boolean,
25795
25705
  reflect: true
25796
25706
  },
25797
- /**
25798
- * @deprecated Propagated from the legacy `auro-calendar.disabledDays`
25799
- * Unix-timestamp array. The cell honors it for backward compatibility
25800
- * (see the divergence-check fallback inside `isBlackout`), but
25801
- * consumers should migrate to `auro-datepicker.blackoutDates`
25802
- * (YYYY-MM-DD ISO strings). The calendar emits a one-time
25803
- * deprecation warning the first time a non-empty value is observed.
25804
- */
25805
25707
  disabledDays: { type: Array },
25806
25708
  isCurrentDate: { type: Boolean },
25807
25709
  locale: { type: String },
@@ -25847,8 +25749,8 @@ class AuroCalendarCell extends i$3 {
25847
25749
  const parsedDateTo = parseInt(dateTo, 10);
25848
25750
 
25849
25751
  if (day) {
25850
- const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
25851
- const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
25752
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
25753
+ const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
25852
25754
 
25853
25755
  if (day.date === departTimestamp || day.date === returnTimestamp) {
25854
25756
  this.selected = true;
@@ -25932,33 +25834,27 @@ class AuroCalendarCell extends i$3 {
25932
25834
  return false;
25933
25835
  }
25934
25836
 
25935
- // Delegate to the calendar's memoized blackout Set for O(1) lookup
25936
- // (instead of rescanning disabledDays + blackoutDates per render). The
25937
- // Set is rebuilt only when either source array reference changes — see
25938
- // auro-calendar.js#_getBlackoutSet.
25939
- if (this.calendar && typeof this.calendar._getBlackoutSet === 'function') {
25940
- if (this.calendar._getBlackoutSet().has(this.day.date)) {
25837
+ // Check against disabledDays timestamps (legacy path)
25838
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
25839
+ (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
25840
+ return true;
25841
+ }
25842
+
25843
+ // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
25844
+ const blackoutDates = this.datepicker?.blackoutDates;
25845
+
25846
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
25847
+ const date = new Date(this.day.date * 1000);
25848
+ const yyyy = date.getFullYear();
25849
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
25850
+ const dd = String(date.getDate()).padStart(2, '0');
25851
+ const cellDate = `${yyyy}-${mm}-${dd}`;
25852
+ if (blackoutDates.includes(cellDate)) {
25941
25853
  return true;
25942
25854
  }
25943
- // If the cell's local disabledDays diverged from the calendar's (a
25944
- // consumer or test mutated cell.disabledDays directly), the Set does
25945
- // not reflect that addition — fall through to the per-cell scan only
25946
- // when the reference no longer matches. Production data flow keeps
25947
- // these identical, so this branch stays cold. Guarded with
25948
- // Array.isArray to match `_getBlackoutSet`'s contract: non-array
25949
- // values are treated as empty rather than crashing on `.findIndex`.
25950
- if (Array.isArray(this.disabledDays) && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
25951
- if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
25952
- return true;
25953
- }
25954
- }
25955
- return false;
25956
25855
  }
25957
25856
 
25958
- // Pre-firstUpdated fallback — the cell may render once before the
25959
- // ancestor calendar is wired up. Routes through the shared
25960
- // blackoutUtils helper so the parsing rules stay in one place.
25961
- return isBlackoutTimestamp(this.day.date, this.disabledDays, this.datepicker?.blackoutDates);
25857
+ return false;
25962
25858
  }
25963
25859
 
25964
25860
  /**
@@ -26064,12 +25960,12 @@ class AuroCalendarCell extends i$3 {
26064
25960
  const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
26065
25961
  if (!Number.isFinite(parsedDateFrom)) return null;
26066
25962
 
26067
- const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
25963
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
26068
25964
  const dayDate = this.day.date;
26069
25965
 
26070
25966
  const parsedDateTo = Number.parseInt(this.dateTo, 10);
26071
25967
  const hasDateTo = Number.isFinite(parsedDateTo);
26072
- const returnTimestamp = hasDateTo ? new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
25968
+ const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
26073
25969
 
26074
25970
  if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
26075
25971
 
@@ -26079,9 +25975,7 @@ class AuroCalendarCell extends i$3 {
26079
25975
 
26080
25976
  if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
26081
25977
 
26082
- if (!hasDateTo && dayDate > departTimestamp) return this.datepicker.rangeLabelEndPreview || 'previewing range end';
26083
-
26084
- // After end date when both dateFrom and dateTo are set.
25978
+ // After start date, no end date yet, or after end date
26085
25979
  return this.datepicker.rangeLabelAfterRange || 'after range';
26086
25980
  }
26087
25981
 
@@ -26094,7 +25988,7 @@ class AuroCalendarCell extends i$3 {
26094
25988
  */
26095
25989
  isDepartDate(day, dateFrom) {
26096
25990
  const parsedDateFrom = parseInt(dateFrom, 10);
26097
- const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
25991
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
26098
25992
 
26099
25993
  return this.selected && day.date === departTimestamp;
26100
25994
  }
@@ -26109,7 +26003,7 @@ class AuroCalendarCell extends i$3 {
26109
26003
  */
26110
26004
  isReturnDate(day, dateFrom, dateTo) {
26111
26005
  const parsedDateTo = parseInt(dateTo, 10);
26112
- const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
26006
+ const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
26113
26007
 
26114
26008
  return this.selected && day.date === returnTimestamp && dateFrom;
26115
26009
  }
@@ -26273,7 +26167,6 @@ class AuroCalendarCell extends i$3 {
26273
26167
  setTimeout(() => this.firstUpdated(), 0);
26274
26168
  return;
26275
26169
  }
26276
- this.calendar = calendar;
26277
26170
  this.datepicker = calendar.datepicker;
26278
26171
  this._slotContentHandler = () => {
26279
26172
  this.handleSlotContent();
@@ -26331,13 +26224,12 @@ class AuroCalendarCell extends i$3 {
26331
26224
  this._cachedButton = this.shadowRoot.querySelector('button.day');
26332
26225
  });
26333
26226
 
26334
- // Keep the host's gridcell aria attributes in sync with the day data.
26227
+ // Update host-level aria attributes for ariaActiveDescendantElement.
26335
26228
  this.updateHostAria();
26336
26229
  }
26337
26230
 
26338
26231
  // Update host aria when selection changes (aria-selected, range labels)
26339
- // or when isCurrentDate flips (aria-current).
26340
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
26232
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
26341
26233
  this.updateHostAria();
26342
26234
  }
26343
26235
 
@@ -26348,8 +26240,8 @@ class AuroCalendarCell extends i$3 {
26348
26240
  }
26349
26241
 
26350
26242
  /**
26351
- * Sets host-level ARIA so each cell exposes its date, selection state,
26352
- * and blackout status to assistive tech browsing the month grid.
26243
+ * Updates ARIA attributes on the host element so that
26244
+ * ariaActiveDescendantElement can expose cell info to the SR.
26353
26245
  * @private
26354
26246
  * @returns {void}
26355
26247
  */
@@ -26358,27 +26250,16 @@ class AuroCalendarCell extends i$3 {
26358
26250
 
26359
26251
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
26360
26252
  if (outOfRange) {
26361
- // Strip every aria attribute the in-range branch may have set on a
26362
- // previous render — if a cell flips from in-range to out-of-range
26363
- // (calendar shifts months, minDate/maxDate change, etc.).
26364
26253
  this.removeAttribute('role');
26365
26254
  this.removeAttribute('aria-label');
26366
- this.removeAttribute('aria-current');
26367
- this.removeAttribute('aria-selected');
26368
- this.removeAttribute('aria-disabled');
26369
26255
  return;
26370
26256
  }
26371
26257
 
26258
+ // The host acts as the gridcell for ariaActiveDescendantElement.
26372
26259
  this.setAttribute('role', 'gridcell');
26373
26260
  this.setAttribute('aria-label', this.getAriaLabel());
26374
26261
  this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
26375
26262
 
26376
- if (this.isCurrentDate) {
26377
- this.setAttribute('aria-current', 'date');
26378
- } else {
26379
- this.removeAttribute('aria-current');
26380
- }
26381
-
26382
26263
  if (this.isBlackout()) {
26383
26264
  this.setAttribute('aria-disabled', 'true');
26384
26265
  } else {
@@ -26393,7 +26274,7 @@ class AuroCalendarCell extends i$3 {
26393
26274
  * @returns {void}
26394
26275
  */
26395
26276
  focusButton() {
26396
- const button = this._cachedButton || this.shadowRoot.querySelector('button:not([disabled])');
26277
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
26397
26278
  if (button) {
26398
26279
  button.focus({ focusVisible: true });
26399
26280
  }
@@ -26401,9 +26282,7 @@ class AuroCalendarCell extends i$3 {
26401
26282
 
26402
26283
  /**
26403
26284
  * Imperatively marks this cell as active without triggering a Lit re-render.
26404
- * Buttons stay tabindex="-1" because DOM focus stays on the grid wrapper
26405
- * arrow keys move the active cell imperatively and the live region carries
26406
- * the SR announcement.
26285
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
26407
26286
  * @returns {void}
26408
26287
  */
26409
26288
  setActive() {
@@ -26445,13 +26324,10 @@ class AuroCalendarCell extends i$3 {
26445
26324
  if (!btn || !this.day) return;
26446
26325
 
26447
26326
  const dayDate = this.day.date;
26448
- const departTimestamp = new Date(dateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
26327
+ const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
26449
26328
  const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
26450
- // `>=` so hovering the depart cell itself (a same-day round-trip
26451
- // preview) still surfaces a visual cue: the depart cell receives both
26452
- // rangeDepartDate and lastHoveredDate.
26453
- const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
26454
- const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
26329
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
26330
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
26455
26331
 
26456
26332
  btn.classList.toggle('inRange', isInRange);
26457
26333
  btn.classList.toggle('lastHoveredDate', isLastHovered);
@@ -26509,6 +26385,7 @@ class AuroCalendarCell extends i$3 {
26509
26385
  @focus="${outOfRange ? undefined : this.handleFocus}"
26510
26386
  class="${e$2(buttonClasses)}"
26511
26387
  ?disabled="${outOfRange}"
26388
+ aria-hidden="${outOfRange ? 'true' : A$7}"
26512
26389
  tabindex="-1">
26513
26390
  <div class="buttonWrapper" aria-hidden="true">
26514
26391
  <div class="currentDayMarker">${this.day?.title || A$7}</div>
@@ -27614,7 +27491,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$3 {
27614
27491
  }
27615
27492
  };
27616
27493
 
27617
- var formkitVersion$2$1 = '202606252324';
27494
+ var formkitVersion$2$1 = '202606252142';
27618
27495
 
27619
27496
  let l$1$2 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$2`${s$3(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1$2 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1$2 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1$3=i$6`: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}
27620
27497
  `,u$4$2=i$6`.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}}
@@ -27737,11 +27614,7 @@ class AuroCalendar extends RangeDatepicker {
27737
27614
  this.calendarRangeMonths = null;
27738
27615
 
27739
27616
  /**
27740
- * @deprecated Use `auro-datepicker.blackoutDates` (an array of
27741
- * `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
27742
- * timestamps is still honored for backward compatibility but emits a
27743
- * one-time `console.debug` the first time a non-empty value is observed.
27744
- * Support will be removed in a future major release.
27617
+ * Legacy array of disabled-date timestamps.
27745
27618
  * @private
27746
27619
  */
27747
27620
  this.disabledDays = [];
@@ -27998,44 +27871,17 @@ class AuroCalendar extends RangeDatepicker {
27998
27871
  * @returns {void}
27999
27872
  */
28000
27873
  updateActiveCellForVisibleMonth() {
28001
- this._afterMonthRender(() => {
28002
- const newDate = this.computeActiveDate({ skipDateFrom: true });
28003
-
28004
- if (newDate !== null && newDate !== undefined) {
28005
- this.activeCellDate = newDate;
28006
- this.setActiveCell(this.activeCellDate);
28007
- }
28008
- });
28009
- }
28010
-
28011
- /**
28012
- * Schedules `callback` two animation frames out, giving the child
28013
- * `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
28014
- * a full render-and-paint cycle to settle before the callback reads or
28015
- * mutates DOM.
28016
- *
28017
- * Why two frames, not one:
28018
- * 1. Lit batches property updates and renders in a microtask, so frame N
28019
- * schedules the render but the new DOM may not be painted yet.
28020
- * 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
28021
- * which also lands a tick later. Reading buttons from frame N+1
28022
- * (after both renders + cache refresh have flushed) reliably hits the
28023
- * new month's cells.
28024
- *
28025
- * Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
28026
- * and then needs to inspect the freshly-rendered cells (cross-month
28027
- * keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
28028
- * Do NOT collapse to a single rAF — it intermittently lands before
28029
- * `_cachedButton` is refreshed, which silently breaks focus restoration
28030
- * and `setActiveCell` lookups.
28031
- * @private
28032
- * @param {() => void} callback - Runs once after the month re-render and
28033
- * the cells' button caches have refreshed.
28034
- * @returns {void}
28035
- */
28036
- _afterMonthRender(callback) {
27874
+ // Use double-rAF to ensure child month/cell components have fully
27875
+ // rendered and cached their button references before we set tabindex.
28037
27876
  requestAnimationFrame(() => {
28038
- requestAnimationFrame(callback);
27877
+ requestAnimationFrame(() => {
27878
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
27879
+
27880
+ if (newDate !== null && newDate !== undefined) {
27881
+ this.activeCellDate = newDate;
27882
+ this.setActiveCell(this.activeCellDate);
27883
+ }
27884
+ });
28039
27885
  });
28040
27886
  }
28041
27887
 
@@ -28153,47 +27999,6 @@ class AuroCalendar extends RangeDatepicker {
28153
27999
  return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
28154
28000
  }
28155
28001
 
28156
- /**
28157
- * Picks the focusable cell whose date is closest to targetTs. Used as a
28158
- * fallback after a month-boundary nav when the exact target date isn't
28159
- * focusable — typically because the month re-render lagged or the date
28160
- * was filtered out by isOutOfRange. When two cells are equidistant, the
28161
- * navigation direction breaks the tie so the user moves the way they
28162
- * pressed (forward → later cell, backward → earlier cell).
28163
- * @private
28164
- * @param {Array} cells - Focusable cells from getAllFocusableCells.
28165
- * @param {Number} targetTs - Desired Unix timestamp (seconds).
28166
- * @param {'next'|'prev'} direction - Navigation direction.
28167
- * @returns {Object|null} The nearest cell, or null when cells is empty.
28168
- */
28169
- pickNearestCell(cells, targetTs, direction) {
28170
- if (!cells.length) {
28171
- return null;
28172
- }
28173
- const forward = direction === 'next';
28174
- let best = null;
28175
- let bestDelta = Infinity;
28176
- cells.forEach((cell) => {
28177
- if (!cell.day) {
28178
- return;
28179
- }
28180
- const distance = Math.abs(cell.day.date - targetTs);
28181
- if (distance < bestDelta) {
28182
- best = cell;
28183
- bestDelta = distance;
28184
- return;
28185
- }
28186
- if (distance === bestDelta && best) {
28187
- if (forward && cell.day.date > best.day.date) {
28188
- best = cell;
28189
- } else if (!forward && cell.day.date < best.day.date) {
28190
- best = cell;
28191
- }
28192
- }
28193
- });
28194
- return best;
28195
- }
28196
-
28197
28002
  /**
28198
28003
  * Gets all focusable cells across all rendered months.
28199
28004
  * @private
@@ -28210,9 +28015,9 @@ class AuroCalendar extends RangeDatepicker {
28210
28015
 
28211
28016
  /**
28212
28017
  * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
28213
- * Uses imperative DOM manipulation — no Lit re-render triggered. DOM focus
28214
- * stays on the grid wrapper; the live region (see getOrCreateLiveRegion)
28215
- * is what announces the active cell to assistive tech.
28018
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
28019
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
28020
+ * screen readers announce the active cell without moving DOM focus.
28216
28021
  * @param {Number} date - Unix timestamp of the cell to activate.
28217
28022
  * @returns {void}
28218
28023
  */
@@ -28293,65 +28098,6 @@ class AuroCalendar extends RangeDatepicker {
28293
28098
  this.clearRangePreview();
28294
28099
  }
28295
28100
 
28296
- /**
28297
- * Returns a memoized Set of blackout timestamps (seconds) drawn from both
28298
- * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
28299
- * The cache invalidates when either source array's reference changes, which
28300
- * matches Lit's own reactive identity semantics for array properties.
28301
- * @private
28302
- * @returns {Set<Number>}
28303
- */
28304
- _getBlackoutSet() {
28305
- // Normalize non-array values to a stable `null` sentinel rather than a
28306
- // fresh `[]` per call — otherwise the reference-identity cache key
28307
- // (`_cachedBlackoutDisabledDays === disabledDays`) never matches on
28308
- // subsequent calls and the Set rebuilds every time. `buildBlackoutSet`
28309
- // already treats null/non-array as "no legacy disabledDays" via its
28310
- // own Array.isArray gate.
28311
- const disabledDays = Array.isArray(this.disabledDays) ? this.disabledDays : null;
28312
- const blackoutDates = this.datepicker?.blackoutDates;
28313
- if (this._blackoutSet &&
28314
- this._cachedBlackoutDisabledDays === disabledDays &&
28315
- this._cachedBlackoutDates === blackoutDates) {
28316
- return this._blackoutSet;
28317
- }
28318
-
28319
- if (disabledDays && disabledDays.length > 0) {
28320
- this._warnDisabledDaysDeprecated();
28321
- }
28322
-
28323
- this._blackoutSet = buildBlackoutSet(disabledDays, blackoutDates);
28324
- this._cachedBlackoutDisabledDays = disabledDays;
28325
- this._cachedBlackoutDates = blackoutDates;
28326
- return this._blackoutSet;
28327
- }
28328
-
28329
- /**
28330
- * Per-class flag that gates the `disabledDays` deprecation warning so it
28331
- * fires exactly once per page no matter how many calendars or rebuild
28332
- * cycles encounter the legacy array.
28333
- * @private
28334
- */
28335
- static _warnedDisabledDaysDeprecation = false;
28336
-
28337
- /**
28338
- * One-time `console.debug` directing consumers from the legacy
28339
- * `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
28340
- * the first time `_getBlackoutSet` rebuilds from a non-empty
28341
- * `disabledDays`; subsequent calls (on this or any other AuroCalendar
28342
- * instance on the page) are silent.
28343
- * @private
28344
- * @returns {void}
28345
- */
28346
- _warnDisabledDaysDeprecated() {
28347
- if (AuroCalendar._warnedDisabledDaysDeprecation) {
28348
- return;
28349
- }
28350
- AuroCalendar._warnedDisabledDaysDeprecation = true;
28351
- // eslint-disable-next-line no-console
28352
- 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.');
28353
- }
28354
-
28355
28101
  /**
28356
28102
  * Computes the initial active date from data properties alone — no DOM required.
28357
28103
  * Priority:
@@ -28396,10 +28142,21 @@ class AuroCalendar extends RangeDatepicker {
28396
28142
  const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
28397
28143
  const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
28398
28144
 
28399
- // Build a Set of blackout timestamps for O(1) lookup. Memoized by the
28400
- // identity of the source arrays so rapid month nav doesn't rebuild the
28401
- // Set (and re-parse every ISO string) on every keypress.
28402
- const blackoutSet = this._getBlackoutSet();
28145
+ // Build a Set of blackout timestamps for O(1) lookup.
28146
+ const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
28147
+
28148
+ // Also include ISO-format blackoutDates from the datepicker if available.
28149
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
28150
+ const isoBlackouts = this.datepicker?.blackoutDates;
28151
+ if (Array.isArray(isoBlackouts)) {
28152
+ for (const isoStr of isoBlackouts) {
28153
+ const parts = isoStr.split('-');
28154
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
28155
+ if (Number.isFinite(ts)) {
28156
+ blackoutSet.add(ts);
28157
+ }
28158
+ }
28159
+ }
28403
28160
 
28404
28161
  /**
28405
28162
  * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
@@ -28595,8 +28352,8 @@ class AuroCalendar extends RangeDatepicker {
28595
28352
 
28596
28353
  /**
28597
28354
  * Handles arrow key navigation on the calendar grid wrapper.
28598
- * Focus stays on the grid wrapper; only the visual active-cell indicator
28599
- * changes. The live region announces the new active cell.
28355
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
28356
+ * and the visual active-cell indicator change.
28600
28357
  * @private
28601
28358
  * @param {KeyboardEvent} event - The keyboard event.
28602
28359
  * @returns {void}
@@ -28661,21 +28418,21 @@ class AuroCalendar extends RangeDatepicker {
28661
28418
  } else {
28662
28419
  this.handlePrevMonth({ skipActiveUpdate: true });
28663
28420
  }
28664
- this._afterMonthRender(() => {
28665
- const cells = this.getAllFocusableCells();
28666
- const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
28667
- if (target) {
28668
- this.setActiveCell(target.day.date);
28669
- this.handleCellFocused({ detail: { date: target.day.date } });
28670
- } else {
28671
- const fallback = this.pickNearestCell(cells, targetTs, navDir);
28672
- if (fallback) {
28421
+ requestAnimationFrame(() => {
28422
+ requestAnimationFrame(() => {
28423
+ const cells = this.getAllFocusableCells();
28424
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
28425
+ if (target) {
28426
+ this.setActiveCell(target.day.date);
28427
+ this.handleCellFocused({ detail: { date: target.day.date } });
28428
+ } else if (cells.length > 0) {
28429
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
28673
28430
  this.setActiveCell(fallback.day.date);
28674
28431
  this.handleCellFocused({ detail: { date: fallback.day.date } });
28675
28432
  }
28676
- }
28677
- // Re-focus grid wrapper after month change re-render
28678
- this.focusActiveCell();
28433
+ // Re-focus grid wrapper after month change re-render
28434
+ this.focusActiveCell();
28435
+ });
28679
28436
  });
28680
28437
  }
28681
28438
  }
@@ -28701,20 +28458,26 @@ class AuroCalendar extends RangeDatepicker {
28701
28458
  } else {
28702
28459
  this.handlePrevMonth({ skipActiveUpdate: true });
28703
28460
  }
28704
- this._afterMonthRender(() => {
28705
- const cells = this.getAllFocusableCells();
28706
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28707
- if (target) {
28708
- this.setActiveCell(target.day.date);
28709
- this.handleCellFocused({ detail: { date: target.day.date } });
28710
- } else {
28711
- const nearest = this.pickNearestCell(cells, targetDate, navDirection);
28712
- if (nearest) {
28461
+ requestAnimationFrame(() => {
28462
+ requestAnimationFrame(() => {
28463
+ const cells = this.getAllFocusableCells();
28464
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28465
+ if (target) {
28466
+ this.setActiveCell(target.day.date);
28467
+ this.handleCellFocused({ detail: { date: target.day.date } });
28468
+ } else if (cells.length > 0) {
28469
+ let nearest = null;
28470
+
28471
+ if (navDirection === 'next') {
28472
+ [nearest] = cells;
28473
+ } else {
28474
+ nearest = cells[cells.length - 1];
28475
+ }
28713
28476
  this.setActiveCell(nearest.day.date);
28714
28477
  this.handleCellFocused({ detail: { date: nearest.day.date } });
28715
28478
  }
28716
- }
28717
- this.focusActiveCell();
28479
+ this.focusActiveCell();
28480
+ });
28718
28481
  });
28719
28482
  }
28720
28483
  }
@@ -28764,22 +28527,19 @@ class AuroCalendar extends RangeDatepicker {
28764
28527
  }
28765
28528
 
28766
28529
  this.handleNextMonth({ skipActiveUpdate: true });
28767
- this._afterMonthRender(() => {
28768
- const cells = this.getAllFocusableCells();
28769
- const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
28770
- if (target) {
28771
- this.setActiveCell(target.day.date);
28772
- this.focusActiveCell();
28773
- } else {
28774
- // Same nearest-by-date fallback handleGridKeyDown uses — direct
28775
- // `cells[length - 1]` would land on the end of the new month,
28776
- // far from the user's intended `nextTs`.
28777
- const fallback = this.pickNearestCell(cells, nextTs, 'next');
28778
- if (fallback) {
28779
- this.setActiveCell(fallback.day.date);
28530
+ requestAnimationFrame(() => {
28531
+ requestAnimationFrame(() => {
28532
+ const cells = this.getAllFocusableCells();
28533
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
28534
+ if (target) {
28535
+ this.setActiveCell(target.day.date);
28536
+ this.focusActiveCell();
28537
+ } else if (cells.length > 0) {
28538
+ // Fallback: first cell of the last rendered month
28539
+ this.setActiveCell(cells[cells.length - 1].day.date);
28780
28540
  this.focusActiveCell();
28781
28541
  }
28782
- }
28542
+ });
28783
28543
  });
28784
28544
  } else if (direction === 'prev' && this.showPrevMonthBtn) {
28785
28545
  // Navigate to previous month and focus the computed previous date.
@@ -28793,22 +28553,19 @@ class AuroCalendar extends RangeDatepicker {
28793
28553
  }
28794
28554
 
28795
28555
  this.handlePrevMonth({ skipActiveUpdate: true });
28796
- this._afterMonthRender(() => {
28797
- const cells = this.getAllFocusableCells();
28798
- const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
28799
- if (target) {
28800
- this.setActiveCell(target.day.date);
28801
- this.focusActiveCell();
28802
- } else {
28803
- // Same nearest-by-date fallback handleGridKeyDown uses — direct
28804
- // `cells[0]` would land on the start of the previous month, far
28805
- // from the user's intended `prevTs`.
28806
- const fallback = this.pickNearestCell(cells, prevTs, 'prev');
28807
- if (fallback) {
28808
- this.setActiveCell(fallback.day.date);
28556
+ requestAnimationFrame(() => {
28557
+ requestAnimationFrame(() => {
28558
+ const cells = this.getAllFocusableCells();
28559
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
28560
+ if (target) {
28561
+ this.setActiveCell(target.day.date);
28562
+ this.focusActiveCell();
28563
+ } else if (cells.length > 0) {
28564
+ // Fallback: last cell of the first rendered month
28565
+ this.setActiveCell(cells[0].day.date);
28809
28566
  this.focusActiveCell();
28810
28567
  }
28811
- }
28568
+ });
28812
28569
  });
28813
28570
  }
28814
28571
  } else if (key === 'ArrowDown' || key === 'ArrowUp') {
@@ -28836,22 +28593,20 @@ class AuroCalendar extends RangeDatepicker {
28836
28593
  } else {
28837
28594
  this.handlePrevMonth({ skipActiveUpdate: true });
28838
28595
  }
28839
- this._afterMonthRender(() => {
28840
- const cells = this.getAllFocusableCells();
28841
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28842
- if (target) {
28843
- this.setActiveCell(target.day.date);
28844
- this.focusActiveCell();
28845
- } else {
28846
- // Same nearest-by-date fallback handleGridKeyDown uses — the
28847
- // old direction-based `cells[0]`/`cells[length-1]` clamp
28848
- // could land 25+ days from the intended target.
28849
- const nearest = this.pickNearestCell(cells, targetDate, navDirection);
28850
- if (nearest) {
28596
+ requestAnimationFrame(() => {
28597
+ requestAnimationFrame(() => {
28598
+ const cells = this.getAllFocusableCells();
28599
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28600
+ if (target) {
28601
+ this.setActiveCell(target.day.date);
28602
+ this.focusActiveCell();
28603
+ } else if (cells.length > 0) {
28604
+ // Clamp to nearest focusable cell
28605
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
28851
28606
  this.setActiveCell(nearest.day.date);
28852
28607
  this.focusActiveCell();
28853
28608
  }
28854
- }
28609
+ });
28855
28610
  });
28856
28611
  }
28857
28612
  }
@@ -28890,9 +28645,8 @@ class AuroCalendar extends RangeDatepicker {
28890
28645
  return;
28891
28646
  }
28892
28647
 
28893
- // DOM focus stays on the grid wrapper while arrow keys move the active
28894
- // cell, so cell buttons never receive native focus. The debounced live
28895
- // region carries the full-context announcement instead.
28648
+ // With aria-activedescendant, the button no longer receives native focus,
28649
+ // so we use the debounced live region for the full context announcement.
28896
28650
  const announcement = this.buildFocusAnnouncement(date);
28897
28651
  this.announceFocusDebounced(announcement);
28898
28652
 
@@ -28962,10 +28716,10 @@ class AuroCalendar extends RangeDatepicker {
28962
28716
  return null;
28963
28717
  }
28964
28718
 
28965
- const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
28719
+ const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
28966
28720
  const parsedTo = Number.parseInt(this.dateTo, 10);
28967
28721
  const hasTo = Number.isFinite(parsedTo);
28968
- const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
28722
+ const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
28969
28723
 
28970
28724
  if (date === departTs) {
28971
28725
  return this.datepicker.rangeLabelStart || 'range start';
@@ -28979,22 +28733,36 @@ class AuroCalendar extends RangeDatepicker {
28979
28733
  if (hasTo && date > departTs && date < returnTs) {
28980
28734
  return this.datepicker.rangeLabelInRange || 'in range';
28981
28735
  }
28982
- if (!hasTo && date > departTs) {
28983
- return this.datepicker.rangeLabelEndPreview || 'previewing range end';
28984
- }
28985
28736
  return this.datepicker.rangeLabelAfterRange || 'after range';
28986
28737
  }
28987
28738
 
28988
28739
  /**
28989
- * Checks whether a given date is a blackout date. Delegates to the
28990
- * memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
28991
- * legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
28740
+ * Checks whether a given date is a blackout date.
28992
28741
  * @private
28993
28742
  * @param {Number} dateTs - Unix timestamp (seconds).
28994
28743
  * @returns {Boolean} True if the date is blacked out.
28995
28744
  */
28996
28745
  isDateBlackout(dateTs) {
28997
- return this._getBlackoutSet().has(dateTs);
28746
+ // Check legacy disabledDays.
28747
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
28748
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
28749
+ return true;
28750
+ }
28751
+ }
28752
+
28753
+ // Check ISO blackoutDates.
28754
+ const blackoutDates = this.datepicker?.blackoutDates;
28755
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
28756
+ const date = new Date(dateTs * 1000);
28757
+ const yyyy = date.getFullYear();
28758
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
28759
+ const dd = String(date.getDate()).padStart(2, '0');
28760
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
28761
+ return true;
28762
+ }
28763
+ }
28764
+
28765
+ return false;
28998
28766
  }
28999
28767
 
29000
28768
  /**
@@ -29161,34 +28929,9 @@ class AuroCalendar extends RangeDatepicker {
29161
28929
  // the last one.
29162
28930
  if (this._announceRafId) {
29163
28931
  cancelAnimationFrame(this._announceRafId);
29164
- this._announceRafId = null;
29165
28932
  }
29166
- this._deliverAnnouncement(dateStr, 0);
29167
- }
29168
-
29169
- /**
29170
- * Writes `dateStr` to the live region. If the dropdown's dialog hasn't
29171
- * mounted yet (so getOrCreateLiveRegion can't attach), retries on the
29172
- * next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
29173
- * dropping the announcement. The retry uses the same `_announceRafId`
29174
- * the double-rAF below uses, so a newer announceSelection call (or
29175
- * disconnectedCallback) cancels any in-flight retry.
29176
- * @private
29177
- * @param {String} dateStr - The localized date string to announce.
29178
- * @param {Number} attempts - Number of prior retry attempts.
29179
- * @returns {void}
29180
- */
29181
- _deliverAnnouncement(dateStr, attempts) {
29182
28933
  const liveRegion = this.getOrCreateLiveRegion();
29183
28934
  if (!liveRegion) {
29184
- const MAX_LIVE_REGION_RETRIES = 10;
29185
- if (attempts < MAX_LIVE_REGION_RETRIES) {
29186
- this._announceRafId = requestAnimationFrame(() => {
29187
- this._deliverAnnouncement(dateStr, attempts + 1);
29188
- });
29189
- } else {
29190
- this._announceRafId = null;
29191
- }
29192
28935
  return;
29193
28936
  }
29194
28937
 
@@ -29374,7 +29117,7 @@ class AuroCalendar extends RangeDatepicker {
29374
29117
  </button>
29375
29118
  ` : undefined}
29376
29119
  </div>
29377
- <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}">
29120
+ <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}">
29378
29121
  ${this.renderAllCalendars()}
29379
29122
  </div>
29380
29123
  </div>
@@ -33259,7 +33002,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$3 {
33259
33002
  }
33260
33003
  };
33261
33004
 
33262
- var formkitVersion$1$3 = '202606252324';
33005
+ var formkitVersion$1$3 = '202606252142';
33263
33006
 
33264
33007
  let AuroElement$2$2 = class AuroElement extends i$3 {
33265
33008
  static get properties() {
@@ -34531,6 +34274,7 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
34531
34274
  role="${o$4(this.triggerContentFocusable ? undefined : this.a11yRole)}"
34532
34275
  aria-expanded="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
34533
34276
  aria-controls="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
34277
+ aria-haspopup="${o$4(this.a11yRole === 'combobox' ? 'listbox' : undefined)}"
34534
34278
  aria-labelledby="${o$4(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
34535
34279
  aria-disabled="${o$4(this.disabled ? 'true' : undefined)}"
34536
34280
  @focusin="${this.handleFocusin}"
@@ -39656,7 +39400,7 @@ function normalizeDates$2(context, ...dates) {
39656
39400
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
39657
39401
  * //=> Tue Sep 02 2014 00:00:00
39658
39402
  */
39659
- function startOfDay$2(date, options) {
39403
+ function startOfDay$3(date, options) {
39660
39404
  const _date = toDate$2(date, options?.in);
39661
39405
  _date.setHours(0, 0, 0, 0);
39662
39406
  return _date;
@@ -39704,8 +39448,8 @@ function differenceInCalendarDays$2(laterDate, earlierDate, options) {
39704
39448
  earlierDate,
39705
39449
  );
39706
39450
 
39707
- const laterStartOfDay = startOfDay$2(laterDate_);
39708
- const earlierStartOfDay = startOfDay$2(earlierDate_);
39451
+ const laterStartOfDay = startOfDay$3(laterDate_);
39452
+ const earlierStartOfDay = startOfDay$3(earlierDate_);
39709
39453
 
39710
39454
  const laterTimestamp =
39711
39455
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$2(laterStartOfDay);
@@ -46852,7 +46596,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$3 {
46852
46596
  }
46853
46597
  };
46854
46598
 
46855
- var formkitVersion$7 = '202606252324';
46599
+ var formkitVersion$7 = '202606252142';
46856
46600
 
46857
46601
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
46858
46602
  // See LICENSE in the project root for license information.
@@ -48329,7 +48073,6 @@ class AuroDatePicker extends AuroElement$5 {
48329
48073
  this.rangeLabelBeforeRange = 'before range';
48330
48074
  this.rangeLabelInRange = 'in range';
48331
48075
  this.rangeLabelAfterRange = 'after range';
48332
- this.rangeLabelEndPreview = 'previewing range end';
48333
48076
  this.blackoutDates = [];
48334
48077
  this.blackoutLabel = 'unavailable';
48335
48078
  this.navLabelPrevMonth = 'Previous month';
@@ -48429,22 +48172,6 @@ class AuroDatePicker extends AuroElement$5 {
48429
48172
  */
48430
48173
  this.handleClick = this.handleClick.bind(this);
48431
48174
 
48432
- /**
48433
- * Single AbortController shared by every listener registered in the
48434
- * configure* methods. Lets disconnectedCallback tear all of them down
48435
- * with one abort() call.
48436
- *
48437
- * The genuine leak risk is the listeners attached to children that can
48438
- * outlive the host if they get reparented — `this.dropdown`,
48439
- * `this.calendar`, and the inputs inside the dropdown's slot.
48440
- * Listeners attached to `this` (e.g. focusin/focusout on the host)
48441
- * form a self-contained reference graph that the GC can collect with
48442
- * the host anyway, but they share the same signal so the cleanup
48443
- * pattern stays uniform across all configure* sites.
48444
- * @private
48445
- */
48446
- this._listenerAbortController = new AbortController();
48447
-
48448
48175
  /**
48449
48176
  * @private
48450
48177
  */
@@ -48493,7 +48220,6 @@ class AuroDatePicker extends AuroElement$5 {
48493
48220
 
48494
48221
  /**
48495
48222
  * Label announced for blackout (disabled but in-range) date cells.
48496
- * @default 'unavailable'
48497
48223
  */
48498
48224
  blackoutLabel: {
48499
48225
  type: String,
@@ -48510,7 +48236,6 @@ class AuroDatePicker extends AuroElement$5 {
48510
48236
 
48511
48237
  /**
48512
48238
  * Accessible label for the calendar grid containing the days of the month.
48513
- * @default 'Calendar days of the month'
48514
48239
  */
48515
48240
  calendarGridLabel: {
48516
48241
  type: String,
@@ -48673,7 +48398,6 @@ class AuroDatePicker extends AuroElement$5 {
48673
48398
 
48674
48399
  /**
48675
48400
  * Accessible label for the next month navigation button.
48676
- * @default 'Next month'
48677
48401
  */
48678
48402
  navLabelNextMonth: {
48679
48403
  type: String,
@@ -48682,7 +48406,6 @@ class AuroDatePicker extends AuroElement$5 {
48682
48406
 
48683
48407
  /**
48684
48408
  * Accessible label for the previous month navigation button.
48685
- * @default 'Previous month'
48686
48409
  */
48687
48410
  navLabelPrevMonth: {
48688
48411
  type: String,
@@ -48760,11 +48483,7 @@ class AuroDatePicker extends AuroElement$5 {
48760
48483
  },
48761
48484
 
48762
48485
  /**
48763
- * Label announced for cells after a fully selected range (both
48764
- * `dateFrom` and `dateTo` are set). While a range is still being
48765
- * picked (`dateFrom` set, `dateTo` unset), focused cells past the
48766
- * start use `rangeLabelEndPreview` instead.
48767
- * @default 'after range'
48486
+ * Label announced for cells after the range (or after start when no end is selected).
48768
48487
  */
48769
48488
  rangeLabelAfterRange: {
48770
48489
  type: String,
@@ -48773,7 +48492,6 @@ class AuroDatePicker extends AuroElement$5 {
48773
48492
 
48774
48493
  /**
48775
48494
  * Label announced for cells before the range start.
48776
- * @default 'before range'
48777
48495
  */
48778
48496
  rangeLabelBeforeRange: {
48779
48497
  type: String,
@@ -48782,27 +48500,14 @@ class AuroDatePicker extends AuroElement$5 {
48782
48500
 
48783
48501
  /**
48784
48502
  * Label announced for the range end date cell.
48785
- * @default 'range end'
48786
48503
  */
48787
48504
  rangeLabelEnd: {
48788
48505
  type: String,
48789
48506
  reflect: true
48790
48507
  },
48791
48508
 
48792
- /**
48793
- * Label announced for the focused cell while previewing a range end
48794
- * (dateFrom set, dateTo not yet selected). Tells AT users that
48795
- * pressing Enter would commit this cell as the range end.
48796
- * @default 'previewing range end'
48797
- */
48798
- rangeLabelEndPreview: {
48799
- type: String,
48800
- reflect: true
48801
- },
48802
-
48803
48509
  /**
48804
48510
  * Label announced for cells within the selected range.
48805
- * @default 'in range'
48806
48511
  */
48807
48512
  rangeLabelInRange: {
48808
48513
  type: String,
@@ -48811,7 +48516,6 @@ class AuroDatePicker extends AuroElement$5 {
48811
48516
 
48812
48517
  /**
48813
48518
  * Label announced for the range start date cell.
48814
- * @default 'range start'
48815
48519
  */
48816
48520
  rangeLabelStart: {
48817
48521
  type: String,
@@ -48819,7 +48523,7 @@ class AuroDatePicker extends AuroElement$5 {
48819
48523
  },
48820
48524
 
48821
48525
  /**
48822
- * Dates that the user should have for reference as part of their decision-making when selecting a date.
48526
+ * Dates that the user should have for reference as part of their decision making when selecting a date.
48823
48527
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
48824
48528
  */
48825
48529
  referenceDates: {
@@ -49176,26 +48880,10 @@ class AuroDatePicker extends AuroElement$5 {
49176
48880
  // ─── Vendor calendar time conversions ─────────────────────────────────────
49177
48881
 
49178
48882
  /**
49179
- * Converts a Unix timestamp (seconds) from the vendored range-datepicker
49180
- * (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
49181
- *
49182
- * Timezone contract:
49183
- * - INPUT: `time` is assumed to be the seconds-since-epoch of **local
49184
- * midnight** for the intended calendar day. The vendor's Day constructor
49185
- * builds it via `date-fns format(date, 't')` from a locally-constructed
49186
- * Date, so this assumption currently holds end-to-end.
49187
- * - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
49188
- * getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
49189
- * string matches the local calendar day.
49190
- *
49191
- * If the vendor ever switches to emitting UTC-midnight timestamps, this
49192
- * conversion will silently shift the returned date by one day in zones
49193
- * west of UTC. Any vendor swap should re-verify this contract; the TZ
49194
- * regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
49195
- *
48883
+ * Converts a Unix timestamp (seconds) from the vendor calendar to an ISO date string.
49196
48884
  * @private
49197
- * @param {number} time - Unix timestamp (seconds), local midnight of the day.
49198
- * @returns {string} ISO date string (yyyy-mm-dd) reflecting the local calendar day.
48885
+ * @param {number} time - Unix timestamp in seconds.
48886
+ * @returns {string} ISO date string (yyyy-mm-dd).
49199
48887
  */
49200
48888
  convertWcTimeToDate(time) {
49201
48889
  return dateFormatter$1.toISOFormatString(new Date(time * 1000));
@@ -49297,8 +48985,8 @@ class AuroDatePicker extends AuroElement$5 {
49297
48985
  }
49298
48986
  }
49299
48987
 
49300
- // Focus the calendar grid wrapper. The live region (announced just
49301
- // below) handles the SR announcement for the active cell.
48988
+ // Focus the calendar grid wrapper (aria-activedescendant handles
48989
+ // the SR announcement for the active cell).
49302
48990
  if (activeCell) {
49303
48991
  this.calendar.focusActiveCell();
49304
48992
 
@@ -49348,13 +49036,11 @@ class AuroDatePicker extends AuroElement$5 {
49348
49036
  this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
49349
49037
  }
49350
49038
 
49351
- const { signal } = this._listenerAbortController;
49352
-
49353
49039
  this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
49354
49040
  if (!this.isPopoverVisible) {
49355
49041
  this.dropdown.show();
49356
49042
  }
49357
- }, { signal });
49043
+ });
49358
49044
 
49359
49045
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
49360
49046
  this.notifyDatepickerToggled();
@@ -49372,7 +49058,7 @@ class AuroDatePicker extends AuroElement$5 {
49372
49058
  if (this.valueObject) {
49373
49059
  this.centralDate = this.value;
49374
49060
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
49375
- this.centralDate = dateFormatter$1.toISOFormatString(new Date());
49061
+ this.centralDate = new Date();
49376
49062
  }
49377
49063
  }
49378
49064
 
@@ -49452,7 +49138,7 @@ class AuroDatePicker extends AuroElement$5 {
49452
49138
  this.forceScrollOnNextMobileCalendarRender = false;
49453
49139
  }, 0);
49454
49140
  }
49455
- }, { signal });
49141
+ });
49456
49142
 
49457
49143
  // Handle responsive strategy changes while the dropdown is open
49458
49144
  // (e.g. resizing from desktop → mobile or vice versa).
@@ -49499,7 +49185,7 @@ class AuroDatePicker extends AuroElement$5 {
49499
49185
  });
49500
49186
  });
49501
49187
  }
49502
- }, { signal });
49188
+ });
49503
49189
  }
49504
49190
 
49505
49191
  /**
@@ -49512,8 +49198,6 @@ class AuroDatePicker extends AuroElement$5 {
49512
49198
 
49513
49199
  this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
49514
49200
 
49515
- const { signal } = this._listenerAbortController;
49516
-
49517
49201
  this.inputList.forEach((input, index) => {
49518
49202
  input.addEventListener('input', (event) => {
49519
49203
  event.stopPropagation();
@@ -49525,7 +49209,7 @@ class AuroDatePicker extends AuroElement$5 {
49525
49209
  }
49526
49210
 
49527
49211
  this.notifyValueChanged();
49528
- }, { signal });
49212
+ });
49529
49213
 
49530
49214
  input.addEventListener('auroFormElement-validated', (evt) => {
49531
49215
  // not to bubble up input's validated event.
@@ -49541,7 +49225,7 @@ class AuroDatePicker extends AuroElement$5 {
49541
49225
  this.validity = evt.detail.validity;
49542
49226
  this.errorMessage = evt.detail.message;
49543
49227
  }
49544
- }, { signal });
49228
+ });
49545
49229
  });
49546
49230
  }
49547
49231
 
@@ -49555,32 +49239,19 @@ class AuroDatePicker extends AuroElement$5 {
49555
49239
  this.calendar.datepicker = this;
49556
49240
  this.calendar.dropdown = this.dropdown;
49557
49241
 
49558
- const { signal } = this._listenerAbortController;
49559
-
49560
49242
  this.calendar.addEventListener('auroCalendar-dateSelected', () => {
49561
- // Compare the input's ISO value against the *converted* calendar
49562
- // timestamp (the vendor's `dateFrom`/`dateTo` are Unix-seconds
49563
- // strings — comparing the input ISO directly against them would
49564
- // never match, so the write would fire on every event and emit
49565
- // redundant input/change activity).
49566
- if (this.calendar.dateFrom !== undefined) {
49567
- const fromIso = this.convertWcTimeToDate(this.calendar.dateFrom);
49568
- if (this.inputList[0].value !== fromIso) {
49569
- this.inputList[0].value = fromIso;
49570
- }
49243
+ if (this.inputList[0].value !== this.calendar.dateFrom && this.calendar.dateFrom !== undefined) {
49244
+ this.inputList[0].value = this.convertWcTimeToDate(this.calendar.dateFrom);
49571
49245
  }
49572
49246
 
49573
- if (this.inputList[1] && this.calendar.dateTo) {
49574
- const toIso = this.convertWcTimeToDate(this.calendar.dateTo);
49575
- if (this.inputList[1].value !== toIso) {
49576
- this.inputList[1].value = toIso;
49577
- }
49247
+ if (this.inputList[1] && this.calendar.dateTo && this.inputList[1].value !== this.calendar.dateTo) {
49248
+ this.inputList[1].value = this.convertWcTimeToDate(this.calendar.dateTo);
49578
49249
  }
49579
- }, { signal });
49250
+ });
49580
49251
 
49581
49252
  this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
49582
49253
  this.dropdown.hide();
49583
- }, { signal });
49254
+ });
49584
49255
 
49585
49256
  this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
49586
49257
  const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
@@ -49590,7 +49261,7 @@ class AuroDatePicker extends AuroElement$5 {
49590
49261
  }
49591
49262
 
49592
49263
  this.notifyMonthChanged(event);
49593
- }, { signal });
49264
+ });
49594
49265
  }
49595
49266
 
49596
49267
  /**
@@ -49599,17 +49270,10 @@ class AuroDatePicker extends AuroElement$5 {
49599
49270
  * @returns {void}
49600
49271
  */
49601
49272
  configureDatepicker() {
49602
- // These listeners are on `this` (the host), so they would GC with the
49603
- // host even without the abort signal — see the leak rationale on
49604
- // `_listenerAbortController`. The signal is still passed for uniform
49605
- // cleanup semantics with the child-element listeners in the other
49606
- // configure* methods.
49607
- const { signal } = this._listenerAbortController;
49608
-
49609
49273
  this.addEventListener('focusin', () => {
49610
49274
  this.touched = true;
49611
49275
  this.hasFocus = true;
49612
- }, { signal });
49276
+ });
49613
49277
 
49614
49278
  this.addEventListener('focusout', () => {
49615
49279
  this.hasFocus = false;
@@ -49621,7 +49285,7 @@ class AuroDatePicker extends AuroElement$5 {
49621
49285
  if (!this.matches(':focus-within')) {
49622
49286
  this.validate();
49623
49287
  }
49624
- }, { signal });
49288
+ });
49625
49289
 
49626
49290
  if (this.valueObject) {
49627
49291
  this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
@@ -49819,41 +49483,6 @@ class AuroDatePicker extends AuroElement$5 {
49819
49483
  return this.validity !== undefined && this.validity !== 'valid';
49820
49484
  }
49821
49485
 
49822
- /**
49823
- * Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
49824
- * spans every datepicker instance on the page; lives on the class (not
49825
- * at module scope) so it stays an encapsulated implementation detail of
49826
- * this component and does not interfere with WCA's class-JSDoc
49827
- * attachment.
49828
- * @private
49829
- */
49830
- static _warnedInvalidLocales = new Set();
49831
-
49832
- /**
49833
- * Logs a one-time `console.debug` when an unsupported locale falls back to
49834
- * en-US. Deduped by the offending tag so noisy re-renders that resurface
49835
- * the same bad value stay quiet, but each new bad value still signals so
49836
- * consumers can spot the typo or missing tag.
49837
- * @private
49838
- * @param {string|undefined} badLocale - The locale value that failed.
49839
- * @returns {void}
49840
- */
49841
- _warnInvalidLocale(badLocale) {
49842
- // Stringify without coalescing — `String(undefined)` / `String(null)`
49843
- // surface the actual offending value in the log, instead of the
49844
- // ambiguous `Locale ""` that `String(badLocale ?? '')` would produce.
49845
- // Dedup still works correctly because each unique stringification
49846
- // becomes its own Set entry.
49847
- const key = String(badLocale);
49848
- const seen = AuroDatePicker._warnedInvalidLocales;
49849
- if (seen.has(key)) {
49850
- return;
49851
- }
49852
- seen.add(key);
49853
- // eslint-disable-next-line no-console
49854
- 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".`);
49855
- }
49856
-
49857
49486
  /**
49858
49487
  * Lifecycle method to check if the locale is valid.
49859
49488
  * @ignore
@@ -49864,15 +49493,10 @@ class AuroDatePicker extends AuroElement$5 {
49864
49493
  if (changedProperties.has('locale')) {
49865
49494
  try {
49866
49495
  const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
49867
- if (supported.length > 0) {
49868
- this._validLocale = this.locale;
49869
- } else {
49870
- this._validLocale = 'en-US';
49871
- this._warnInvalidLocale(this.locale);
49872
- }
49496
+ this._validLocale = supported.length > 0 ? this.locale : 'en-US';
49873
49497
  } catch {
49498
+ console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
49874
49499
  this._validLocale = 'en-US';
49875
- this._warnInvalidLocale(this.locale);
49876
49500
  }
49877
49501
 
49878
49502
  const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
@@ -49954,6 +49578,8 @@ class AuroDatePicker extends AuroElement$5 {
49954
49578
  // Skip centralDate update when user clicked a cell in range mode
49955
49579
  // to prevent the displayed months from shifting
49956
49580
  this.centralDate = this.value;
49581
+ //TODO: TEST THIS CHANGE
49582
+ // this.calendarRenderUtil.updateCentralDate(this, this.value);
49957
49583
  }
49958
49584
 
49959
49585
  this.setHasValue();
@@ -50013,6 +49639,8 @@ class AuroDatePicker extends AuroElement$5 {
50013
49639
  // Skip centralDate update when user clicked a cell in range mode
50014
49640
  // to prevent the displayed months from shifting
50015
49641
  this.centralDate = this.valueEnd;
49642
+ // TODO: TEST THIS CHANGE
49643
+ // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
50016
49644
  }
50017
49645
 
50018
49646
  this.validate();
@@ -50154,7 +49782,7 @@ class AuroDatePicker extends AuroElement$5 {
50154
49782
  * @returns {void}
50155
49783
  */
50156
49784
  configureClickHandler() {
50157
- this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
49785
+ this.addEventListener('click', this.handleClick);
50158
49786
  }
50159
49787
 
50160
49788
  firstUpdated() {
@@ -50162,15 +49790,6 @@ class AuroDatePicker extends AuroElement$5 {
50162
49790
  // Add the tag name as an attribute if it is different than the component name
50163
49791
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
50164
49792
 
50165
- // If the element was disconnected before this first render finished,
50166
- // disconnectedCallback's microtask already aborted the controller. The
50167
- // connectedCallback reinit guard skips that case because `hasUpdated`
50168
- // is still false. Mint a fresh controller here so configure* registers
50169
- // listeners against a live signal.
50170
- if (this._listenerAbortController.signal.aborted) {
50171
- this._listenerAbortController = new AbortController();
50172
- }
50173
-
50174
49793
  this.configureDropdown();
50175
49794
  this.configureInput();
50176
49795
  this.configureCalendar();
@@ -50182,36 +49801,9 @@ class AuroDatePicker extends AuroElement$5 {
50182
49801
  connectedCallback() {
50183
49802
  super.connectedCallback();
50184
49803
 
50185
- // True reconnect after `disconnectedCallback` aborted our controller:
50186
- // the existing signal is dead, so listeners registered against it
50187
- // would never fire. Create a fresh controller and re-run the
50188
- // configure* wiring (each method is idempotent — it just re-caches
50189
- // child refs and re-registers listeners against the new signal).
50190
- // `hasUpdated` gates this so the *first* connect (which precedes
50191
- // firstUpdated) still falls through to firstUpdated's initial wiring.
50192
- if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
50193
- this._listenerAbortController = new AbortController();
50194
- this.configureDropdown();
50195
- this.configureInput();
50196
- this.configureCalendar();
50197
- this.configureDatepicker();
50198
- this.configureClickHandler();
50199
- }
50200
-
50201
49804
  this.locale = this.domHandler.getLocale(this);
50202
49805
  }
50203
49806
 
50204
- disconnectedCallback() {
50205
- super.disconnectedCallback();
50206
- // Defer so that re-parenting (auro-drawer slotting it into a dialog,
50207
- // for example) does not abort listeners we still need after reconnect.
50208
- queueMicrotask(() => {
50209
- if (!this.isConnected) {
50210
- this._listenerAbortController.abort();
50211
- }
50212
- });
50213
- }
50214
-
50215
49807
  // layout render methods
50216
49808
  // ------------------------------------
50217
49809
 
@@ -51707,7 +51299,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$3 {
51707
51299
  }
51708
51300
  };
51709
51301
 
51710
- var formkitVersion$1$2 = '202606252324';
51302
+ var formkitVersion$1$2 = '202606252142';
51711
51303
 
51712
51304
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
51713
51305
  // See LICENSE in the project root for license information.
@@ -56035,7 +55627,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$3 {
56035
55627
  }
56036
55628
  };
56037
55629
 
56038
- var formkitVersion$6 = '202606252324';
55630
+ var formkitVersion$6 = '202606252142';
56039
55631
 
56040
55632
  let AuroElement$1$2 = class AuroElement extends i$3 {
56041
55633
  static get properties() {
@@ -57307,6 +56899,7 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$1$2 {
57307
56899
  role="${o$4(this.triggerContentFocusable ? undefined : this.a11yRole)}"
57308
56900
  aria-expanded="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
57309
56901
  aria-controls="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
56902
+ aria-haspopup="${o$4(this.a11yRole === 'combobox' ? 'listbox' : undefined)}"
57310
56903
  aria-labelledby="${o$4(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
57311
56904
  aria-disabled="${o$4(this.disabled ? 'true' : undefined)}"
57312
56905
  @focusin="${this.handleFocusin}"
@@ -59975,7 +59568,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$3 {
59975
59568
  }
59976
59569
  };
59977
59570
 
59978
- var formkitVersion$5 = '202606252324';
59571
+ var formkitVersion$5 = '202606252142';
59979
59572
 
59980
59573
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
59981
59574
  // See LICENSE in the project root for license information.
@@ -61725,7 +61318,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$3 {
61725
61318
  }
61726
61319
  };
61727
61320
 
61728
- var formkitVersion$4 = '202606252324';
61321
+ var formkitVersion$4 = '202606252142';
61729
61322
 
61730
61323
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
61731
61324
  // See LICENSE in the project root for license information.
@@ -66940,7 +66533,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
66940
66533
  }
66941
66534
  };
66942
66535
 
66943
- var formkitVersion$2 = '202606252324';
66536
+ var formkitVersion$2 = '202606252142';
66944
66537
 
66945
66538
  let AuroElement$2$1 = class AuroElement extends i$3 {
66946
66539
  static get properties() {
@@ -68212,6 +67805,7 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
68212
67805
  role="${o$4(this.triggerContentFocusable ? undefined : this.a11yRole)}"
68213
67806
  aria-expanded="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
68214
67807
  aria-controls="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
67808
+ aria-haspopup="${o$4(this.a11yRole === 'combobox' ? 'listbox' : undefined)}"
68215
67809
  aria-labelledby="${o$4(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
68216
67810
  aria-disabled="${o$4(this.disabled ? 'true' : undefined)}"
68217
67811
  @focusin="${this.handleFocusin}"
@@ -80533,7 +80127,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$3 {
80533
80127
  }
80534
80128
  };
80535
80129
 
80536
- var formkitVersion$1$1 = '202606252324';
80130
+ var formkitVersion$1$1 = '202606252142';
80537
80131
 
80538
80132
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
80539
80133
  // See LICENSE in the project root for license information.
@@ -81654,7 +81248,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$3 {
81654
81248
  }
81655
81249
  };
81656
81250
 
81657
- var formkitVersion$3 = '202606252324';
81251
+ var formkitVersion$3 = '202606252142';
81658
81252
 
81659
81253
  var styleCss$1$3 = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
81660
81254
 
@@ -86467,19 +86061,24 @@ const selectKeyboardStrategy = {
86467
86061
  },
86468
86062
 
86469
86063
  End(component, evt, ctx) {
86470
- if (!ctx.isExpanded) {
86471
- return;
86472
- }
86473
86064
  evt.preventDefault();
86474
86065
  evt.stopPropagation();
86475
86066
  // `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
86476
86067
  const lastOption = getEnabledOptions(component.menu).pop();
86477
- if (lastOption) {
86478
- component.menu.updateActiveOption(lastOption);
86068
+ if (!lastOption) {
86069
+ return;
86479
86070
  }
86071
+ if (!ctx.isExpanded) {
86072
+ component.dropdown.show();
86073
+ }
86074
+ component.menu.updateActiveOption(lastOption);
86480
86075
  },
86481
86076
 
86482
86077
  Enter(component, evt, ctx) {
86078
+ // Prevent the keypress from bubbling to parent containers (e.g., forms)
86079
+ // which could interpret Enter as a submit. Matches APG select-only combobox
86080
+ // and native <select> behavior: Enter opens the listbox when closed, selects
86081
+ // the active option when open — it does not submit a parent form.
86483
86082
  evt.preventDefault();
86484
86083
  evt.stopPropagation();
86485
86084
  if (!ctx.isExpanded) {
@@ -86490,15 +86089,16 @@ const selectKeyboardStrategy = {
86490
86089
  },
86491
86090
 
86492
86091
  Home(component, evt, ctx) {
86493
- if (!ctx.isExpanded) {
86494
- return;
86495
- }
86496
86092
  evt.preventDefault();
86497
86093
  evt.stopPropagation();
86498
86094
  const [firstOption] = getEnabledOptions(component.menu);
86499
- if (firstOption) {
86500
- component.menu.updateActiveOption(firstOption);
86095
+ if (!firstOption) {
86096
+ return;
86097
+ }
86098
+ if (!ctx.isExpanded) {
86099
+ component.dropdown.show();
86501
86100
  }
86101
+ component.menu.updateActiveOption(firstOption);
86502
86102
  },
86503
86103
 
86504
86104
  Tab(component, evt, ctx) {
@@ -90445,7 +90045,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
90445
90045
  }
90446
90046
  };
90447
90047
 
90448
- var formkitVersion$1 = '202606252324';
90048
+ var formkitVersion$1 = '202606252142';
90449
90049
 
90450
90050
  class AuroElement extends i$3 {
90451
90051
  static get properties() {
@@ -91717,6 +91317,7 @@ class AuroDropdown extends AuroElement {
91717
91317
  role="${o$4(this.triggerContentFocusable ? undefined : this.a11yRole)}"
91718
91318
  aria-expanded="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
91719
91319
  aria-controls="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
91320
+ aria-haspopup="${o$4(this.a11yRole === 'combobox' ? 'listbox' : undefined)}"
91720
91321
  aria-labelledby="${o$4(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
91721
91322
  aria-disabled="${o$4(this.disabled ? 'true' : undefined)}"
91722
91323
  @focusin="${this.handleFocusin}"
@@ -92466,7 +92067,7 @@ class AuroHelpText extends i$3 {
92466
92067
  }
92467
92068
  }
92468
92069
 
92469
- var formkitVersion = '202606252324';
92070
+ var formkitVersion = '202606252142';
92470
92071
 
92471
92072
  var styleCss = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
92472
92073
 
@@ -92798,14 +92399,6 @@ class AuroSelect extends AuroElement$1 {
92798
92399
  reflect: true
92799
92400
  },
92800
92401
 
92801
- /**
92802
- * @private
92803
- */
92804
- options: {
92805
- type: Array,
92806
- state: true
92807
- },
92808
-
92809
92402
  /**
92810
92403
  * Specifies the current selected menuOption. Default type is `HTMLElement`, changing to `Array<HTMLElement>` when `multiSelect` is true.
92811
92404
  * @type {HTMLElement|Array<HTMLElement>}
@@ -93093,16 +92686,68 @@ class AuroSelect extends AuroElement$1 {
93093
92686
  this.dropdown.dropdownWidth = this.customBibWidth;
93094
92687
  }
93095
92688
 
93096
- // Pass label text to the dropdown bib for accessible dialog naming
93097
- const labelElement = this.querySelector('span[slot="label"]');
93098
- if (labelElement) {
93099
- this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
93100
- }
92689
+ this._syncLabelText();
93101
92690
 
93102
92691
  // Exposes the CSS parts from the dropdown for styling
93103
92692
  this.dropdown.exposeCssParts();
93104
92693
  }
93105
92694
 
92695
+ /**
92696
+ * Reads the current label slot text and pushes it to the dropdown bib
92697
+ * (for dialog naming) and the menu (for listbox aria-label). Safe to call
92698
+ * before either child has been wired up — each branch self-guards.
92699
+ * @private
92700
+ */
92701
+ _syncLabelText() {
92702
+ const labelElement = this.querySelector('[slot="label"]');
92703
+ const text = labelElement ? labelElement.textContent.trim() : '';
92704
+ if (this.dropdown) {
92705
+ this.dropdown.bibDialogLabel = text || undefined;
92706
+ }
92707
+ if (this.menu) {
92708
+ if (text) {
92709
+ this.menu.setAttribute('aria-label', text);
92710
+ } else {
92711
+ this.menu.removeAttribute('aria-label');
92712
+ }
92713
+ }
92714
+ }
92715
+
92716
+ /**
92717
+ * Keeps the dialog/menu accessible names in sync when consumers mutate the
92718
+ * label slot at runtime (e.g., i18n locale swap). `slotchange` alone is
92719
+ * insufficient — it doesn't fire when textContent of an already-assigned
92720
+ * slotted node changes, which is the common case. We scope the observer to
92721
+ * the label node itself (not the whole host subtree) so option-content
92722
+ * mutations don't trigger label re-syncs, and re-target on `slotchange`
92723
+ * when consumers add or replace the label element.
92724
+ * @private
92725
+ */
92726
+ _observeLabelChanges() {
92727
+ if (this._labelObserver) return;
92728
+ this._labelObserver = new MutationObserver(() => this._syncLabelText());
92729
+
92730
+ const retarget = () => {
92731
+ this._labelObserver.disconnect();
92732
+ const labelElement = this.querySelector('[slot="label"]');
92733
+ if (labelElement) {
92734
+ this._labelObserver.observe(labelElement, {
92735
+ childList: true,
92736
+ subtree: true,
92737
+ characterData: true
92738
+ });
92739
+ }
92740
+ this._syncLabelText();
92741
+ };
92742
+
92743
+ retarget();
92744
+
92745
+ this._retargetLabelObserver = retarget;
92746
+ this.shadowRoot.querySelectorAll('slot[name="label"]').forEach((slot) => {
92747
+ slot.addEventListener('slotchange', retarget);
92748
+ });
92749
+ }
92750
+
93106
92751
  /**
93107
92752
  * This will register this element with the browser.
93108
92753
  * @param {string} [name="auro-select"] - The name of element that you want to register to.
@@ -93253,11 +92898,7 @@ class AuroSelect extends AuroElement$1 {
93253
92898
  this.updateMenuShapeSize();
93254
92899
  this.setMenuValue(this.value);
93255
92900
 
93256
- // Set accessible name on the menu for screen readers based on the label slot content
93257
- const labelElement = this.querySelector('[slot="label"]');
93258
- if (labelElement) {
93259
- this.menu.setAttribute('aria-label', labelElement.textContent.trim());
93260
- }
92901
+ this._syncLabelText();
93261
92902
 
93262
92903
  if (this.multiSelect) {
93263
92904
  this.menu.multiSelect = this.multiSelect;
@@ -93269,8 +92910,21 @@ class AuroSelect extends AuroElement$1 {
93269
92910
  if (typeof this.menu.initItems === 'function') {
93270
92911
  this.menu.initItems();
93271
92912
  }
93272
- this.options = this.menu.options;
93273
92913
  this.updateOptionPositions();
92914
+ // renderNativeSelect reads this.menu.options, which the parent doesn't
92915
+ // observe — request an update so the hidden native <option> list reflects
92916
+ // the menu's options after initItems populates them.
92917
+ this.requestUpdate();
92918
+
92919
+ // Keep aria-setsize/aria-posinset (and the native <option> list) in sync
92920
+ // when the menu re-initializes its items — e.g., slotchange, async/lazy
92921
+ // loads, value-triggered re-init. Without this, stale set-size is
92922
+ // announced and the native select goes stale after dynamic mutations.
92923
+ this.menu.addEventListener('auroMenu-optionsChange', () => {
92924
+ this.updateOptionPositions();
92925
+ this.requestUpdate();
92926
+ });
92927
+
93274
92928
  this.menu.addEventListener("auroMenu-loadingChange", (event) => this.handleMenuLoadingChange(event));
93275
92929
 
93276
92930
  this.menu.addEventListener("auroMenu-selectValueFailure", () => {
@@ -93289,11 +92943,22 @@ class AuroSelect extends AuroElement$1 {
93289
92943
  this.dropdown.setActiveDescendant(this.optionActive);
93290
92944
  }
93291
92945
 
93292
- // Announce the active option for screen readers
93293
- if (this.optionActive) {
92946
+ // Announce the active option for screen readers. Skip when the activated
92947
+ // option is already selected: Enter triggers an auroMenu-selectedOption
92948
+ // re-announce, and aria-selected on the active descendant otherwise
92949
+ // conveys state without an explicit utterance.
92950
+ if (this.optionActive && !this.optionActive.hasAttribute('selected')) {
93294
92951
  const optionText = this.optionActive.textContent.trim();
93295
- const selectedState = this.optionActive.hasAttribute('selected') ? ', selected' : ', not selected';
93296
- announceToScreenReader(this._getAnnouncementRoot(), `${optionText}${selectedState}`);
92952
+ const message = `${optionText}, not selected`;
92953
+ if (this.dropdown.isPopoverVisible) {
92954
+ announceToScreenReader(this._getAnnouncementRoot(), message);
92955
+ } else {
92956
+ // Typeahead-on-closed fires this event before `show()` flips
92957
+ // isPopoverVisible. Defer so the announcement targets the bib's
92958
+ // live region once the fullscreen <dialog> opens — otherwise it
92959
+ // lands in the host root, which is inert under the active modal.
92960
+ queueMicrotask(() => announceToScreenReader(this._getAnnouncementRoot(), message));
92961
+ }
93297
92962
  }
93298
92963
 
93299
92964
  if (this.dropdown.isPopoverVisible) {
@@ -93425,24 +93090,32 @@ class AuroSelect extends AuroElement$1 {
93425
93090
 
93426
93091
  this.typeaheadBuffer += key;
93427
93092
 
93428
- const isRepeatedChar = this.typeaheadBuffer.length > 1 && new Set(this.typeaheadBuffer).size === 1;
93093
+ // Prefer the literal buffer as a prefix per WAI-ARIA APG ("focus moves to the
93094
+ // next item with a name that starts with the string of characters typed").
93095
+ // Only fall back to single-char cycling when the repeated buffer has no
93096
+ // longer prefix match — e.g. "aa" cycles through ["Apple", "Apricot"] only
93097
+ // because no option starts with "aa".
93098
+ let match = options.find((option) => this._getOptionDisplayText(option).startsWith(this.typeaheadBuffer));
93429
93099
 
93430
- let match = null;
93100
+ const isRepeatedChar = !match && this.typeaheadBuffer.length > 1 && new Set(this.typeaheadBuffer).size === 1;
93431
93101
  if (isRepeatedChar) {
93432
93102
  const matches = options.filter((option) => this._getOptionDisplayText(option).startsWith(key));
93433
93103
  if (matches.length) {
93434
93104
  const cycleIndex = (this.typeaheadBuffer.length - 1) % matches.length;
93435
93105
  match = matches[cycleIndex];
93436
93106
  }
93437
- } else {
93438
- match = options.find((option) => this._getOptionDisplayText(option).startsWith(this.typeaheadBuffer));
93439
93107
  }
93440
93108
 
93109
+ // Intentional: no-match leaves the bib closed (deviates from APG / some native <select>).
93441
93110
  if (match) {
93111
+ // Pre-stash the match so the auroDropdown-toggled handler's `!optionActive`
93112
+ // guard short-circuits and skips the firstActive/selected fallback —
93113
+ // otherwise show() synchronously fires the handler, which writes
93114
+ // aria-activedescendant once before we overwrite it.
93115
+ this.menu.updateActiveOption(match);
93442
93116
  if (!this.dropdown.isPopoverVisible) {
93443
93117
  this.dropdown.show();
93444
93118
  }
93445
- this.menu.updateActiveOption(match);
93446
93119
  }
93447
93120
  }
93448
93121
 
@@ -93559,6 +93232,16 @@ class AuroSelect extends AuroElement$1 {
93559
93232
  disconnectedCallback() {
93560
93233
  super.disconnectedCallback();
93561
93234
  this._clearTypeaheadBuffer();
93235
+ if (this._labelObserver) {
93236
+ this._labelObserver.disconnect();
93237
+ this._labelObserver = null;
93238
+ }
93239
+ if (this._retargetLabelObserver && this.shadowRoot) {
93240
+ this.shadowRoot.querySelectorAll('slot[name="label"]').forEach((slot) => {
93241
+ slot.removeEventListener('slotchange', this._retargetLabelObserver);
93242
+ });
93243
+ this._retargetLabelObserver = null;
93244
+ }
93562
93245
  }
93563
93246
 
93564
93247
  // lifecycle runs only after the element's DOM has been updated the first time
@@ -93569,6 +93252,7 @@ class AuroSelect extends AuroElement$1 {
93569
93252
  this.configureDropdown();
93570
93253
  this.configureMenu();
93571
93254
  this.configureSelect();
93255
+ this._observeLabelChanges();
93572
93256
  }
93573
93257
 
93574
93258
  setMenuValue(value) {
@@ -93705,21 +93389,8 @@ class AuroSelect extends AuroElement$1 {
93705
93389
  if (!selectedOption) return;
93706
93390
  const selectedValue = selectedOption.value;
93707
93391
 
93708
- if (this.multiSelect) {
93709
- const currentArray = this.menu.value || [];
93710
-
93711
- if (!currentArray.includes(selectedValue)) {
93712
- this.value = JSON.stringify([
93713
- ...currentArray,
93714
- selectedValue
93715
- ]);
93716
- }
93717
- } else {
93718
- const currentValue = this.value;
93719
-
93720
- if (currentValue !== selectedValue) {
93721
- this.value = selectedValue;
93722
- }
93392
+ if (this.value !== selectedValue) {
93393
+ this.value = selectedValue;
93723
93394
  }
93724
93395
  }
93725
93396