@aurodesignsystem-dev/auro-formkit 0.0.0-pr1510.2 → 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 +207 -601
  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 +207 -601
  37. package/components/datepicker/demo/styles.scss +1 -0
  38. package/components/datepicker/dist/index.js +207 -601
  39. package/components/datepicker/dist/registered.js +207 -601
  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 +355 -670
  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 +355 -670
  58. package/components/form/demo/index.js +5 -0
  59. package/components/form/demo/index.min.js +355 -670
  60. package/components/form/demo/registerDemoDeps.js +23 -0
  61. package/components/form/demo/registerDemoDeps.min.js +355 -670
  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 +25 -311
  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
@@ -1373,7 +1373,7 @@ function normalizeDates$1(context, ...dates) {
1373
1373
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
1374
1374
  * //=> Tue Sep 02 2014 00:00:00
1375
1375
  */
1376
- function startOfDay$1(date, options) {
1376
+ function startOfDay$2(date, options) {
1377
1377
  const _date = toDate$1(date, options?.in);
1378
1378
  _date.setHours(0, 0, 0, 0);
1379
1379
  return _date;
@@ -1421,8 +1421,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
1421
1421
  earlierDate,
1422
1422
  );
1423
1423
 
1424
- const laterStartOfDay = startOfDay$1(laterDate_);
1425
- const earlierStartOfDay = startOfDay$1(earlierDate_);
1424
+ const laterStartOfDay = startOfDay$2(laterDate_);
1425
+ const earlierStartOfDay = startOfDay$2(earlierDate_);
1426
1426
 
1427
1427
  const laterTimestamp =
1428
1428
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
@@ -10904,8 +10904,8 @@ class RangeDatepickerCell extends i$1 {
10904
10904
  const parsedDateFrom = parseInt(dateFrom, 10);
10905
10905
  const parsedDateTo = parseInt(dateTo, 10);
10906
10906
  if (day) {
10907
- if (getTime(startOfDay$1(parsedDateTo * 1000)) / 1000 === day.date ||
10908
- getTime(startOfDay$1(parsedDateFrom * 1000)) / 1000 === day.date) {
10907
+ if (getTime(startOfDay$2(parsedDateTo * 1000)) / 1000 === day.date ||
10908
+ getTime(startOfDay$2(parsedDateFrom * 1000)) / 1000 === day.date) {
10909
10909
  this.selected = true;
10910
10910
  }
10911
10911
  if (((hoveredDate === day.date || day.date < hoveredDate) &&
@@ -11093,7 +11093,7 @@ class RangeDatepickerCalendar extends i$1 {
11093
11093
  this.dayNamesOfTheWeek = [];
11094
11094
  this.daysOfMonth = [];
11095
11095
  this._locale = null;
11096
- this.currentDate = parseInt(format$1(startOfDay$1(Date.now()), 't'), 10);
11096
+ this.currentDate = parseInt(format$1(startOfDay$2(Date.now()), 't'), 10);
11097
11097
  this.localeChanged();
11098
11098
  this.yearAndMonthChanged(this.year, this.month);
11099
11099
  }
@@ -11567,7 +11567,7 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
11567
11567
  __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
11568
11568
  AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
11569
11569
 
11570
- var styleCss$5 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.rangeDepartDate.lastHoveredDate::before{border-radius:10px}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
11570
+ var styleCss$5 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
11571
11571
 
11572
11572
  var colorCss$5 = i$3`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day.activeCell:not(.selected){--ds-auro-calendar-cell-container-color: var(--ds-auro-calendar-cell-in-range-color);border-color:var(--ds-advanced-color-state-selected);outline-color:var(--ds-auro-calendar-cell-container-color)}:host .day.selected{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.selected ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success-subtle, #d6eac7)}:host .day.selected:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected-hover, #00274a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.reference:after{border-color:var(--ds-basic-color-border-default, #959595);box-shadow:inset 0 0 0 2px var(--ds-basic-color-surface-default, #ffffff)}:host .day.reference:hover::after{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background-muted, #f7f7f7)}:host .day:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host .day.disabled{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.blackout{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.inRange:before,:host .day.rangeDepartDate:before,:host .day.rangeReturnDate:before,:host .day.lastHoveredDate:before{background-color:var(--ds-auro-calendar-cell-in-range-color)}:host .day.sameDateTrip:before{--ds-auro-calendar-cell-in-range-color: transparent}`;
11573
11573
 
@@ -11592,104 +11592,14 @@ let s$2 = class s{registerComponent(e,t){customElements.get(e)||customElements.d
11592
11592
 
11593
11593
  var popoverVersion = '6.0.1';
11594
11594
 
11595
- /**
11596
- * Single source of truth for parsing and matching blackout dates across the
11597
- * datepicker. Both `auro-calendar` (memoized Set + `isDateBlackout`) and the
11598
- * pre-`firstUpdated` fallback inside `auro-calendar-cell` route through these
11599
- * helpers so the YYYY-MM-DD → seconds conversion and the merge-with-legacy
11600
- * `disabledDays` rules are defined exactly once.
11601
- */
11602
-
11603
- /**
11604
- * Converts a `YYYY-MM-DD` ISO date string to a Unix timestamp (seconds)
11605
- * representing local midnight on that calendar day. Returns `null` for
11606
- * inputs that don't parse to a finite timestamp.
11607
- *
11608
- * Uses the `new Date(year, monthIndex, day)` constructor (NOT
11609
- * `new Date(isoStr)`) so the result is local-midnight rather than UTC
11610
- * midnight — required to keep the calendar grid aligned with the user's
11611
- * local calendar day in negative-offset timezones.
11612
- *
11613
- * @param {string} isoStr - Date string in `YYYY-MM-DD` format.
11614
- * @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
11615
- */
11616
- function parseIsoToTimestamp(isoStr) {
11617
- if (typeof isoStr !== 'string') {
11618
- return null;
11619
- }
11620
- const parts = isoStr.split('-');
11621
- if (parts.length !== 3) {
11622
- return null;
11623
- }
11624
- const year = parseInt(parts[0], 10);
11625
- const month = parseInt(parts[1], 10);
11626
- const day = parseInt(parts[2], 10);
11627
- if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
11628
- return null;
11629
- }
11630
- // Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
11631
- // silently normalizes those to a different calendar day, which would
11632
- // disable the wrong date if we let the result through.
11633
- if (month < 1 || month > 12 || day < 1 || day > 31) {
11634
- return null;
11635
- }
11636
- const date = new Date(year, month - 1, day);
11637
- // Guard the residual case where JS still rolls a value (e.g. Feb 30 → Mar 2).
11638
- // After construction, getFullYear/getMonth/getDate should match the inputs.
11639
- if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
11640
- return null;
11641
- }
11642
- const ts = Math.floor(date.getTime() / 1000);
11643
- return Number.isFinite(ts) ? ts : null;
11644
- }
11645
-
11646
- /**
11647
- * Builds a `Set<number>` of seconds-since-epoch timestamps covering both the
11648
- * legacy `disabledDays` (already-numeric) array and the ISO `blackoutDates`
11649
- * array. Use this for O(1) membership checks in hot paths.
11650
- *
11651
- * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
11652
- * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
11653
- * @returns {Set<number>}
11654
- */
11655
- function buildBlackoutSet(disabledDays, blackoutDates) {
11656
- const set = new Set();
11657
- if (Array.isArray(disabledDays)) {
11658
- for (const day of disabledDays) {
11659
- const ts = parseInt(day, 10);
11660
- if (Number.isFinite(ts)) {
11661
- set.add(ts);
11662
- }
11663
- }
11664
- }
11665
- if (Array.isArray(blackoutDates)) {
11666
- for (const isoStr of blackoutDates) {
11667
- const ts = parseIsoToTimestamp(isoStr);
11668
- if (ts !== null) {
11669
- set.add(ts);
11670
- }
11671
- }
11672
- }
11673
- return set;
11674
- }
11675
-
11676
- /**
11677
- * One-shot membership test for a single timestamp against both blackout
11678
- * sources. Allocates a Set on each call; only use this in cold paths
11679
- * (e.g. the pre-`firstUpdated` cell fallback). Hot paths should hold the
11680
- * Set returned from `buildBlackoutSet` and `.has(ts)` directly.
11681
- *
11682
- * @param {number} dateTs - Unix timestamp (seconds) to test.
11683
- * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
11684
- * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
11685
- * @returns {boolean}
11686
- */
11687
- function isBlackoutTimestamp(dateTs, disabledDays, blackoutDates) {
11688
- return buildBlackoutSet(disabledDays, blackoutDates).has(dateTs);
11689
- }
11690
-
11691
11595
  /* 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 */
11692
11596
 
11597
+ const startOfDay$1 = (ms) => {
11598
+ const date = new Date(ms);
11599
+ date.setHours(0, 0, 0, 0);
11600
+ return date.getTime();
11601
+ };
11602
+
11693
11603
  class AuroCalendarCell extends i$1 {
11694
11604
  constructor() {
11695
11605
  super();
@@ -11736,14 +11646,6 @@ class AuroCalendarCell extends i$1 {
11736
11646
  type: Boolean,
11737
11647
  reflect: true
11738
11648
  },
11739
- /**
11740
- * @deprecated Propagated from the legacy `auro-calendar.disabledDays`
11741
- * Unix-timestamp array. The cell honors it for backward compatibility
11742
- * (see the divergence-check fallback inside `isBlackout`), but
11743
- * consumers should migrate to `auro-datepicker.blackoutDates`
11744
- * (YYYY-MM-DD ISO strings). The calendar emits a one-time
11745
- * deprecation warning the first time a non-empty value is observed.
11746
- */
11747
11649
  disabledDays: { type: Array },
11748
11650
  isCurrentDate: { type: Boolean },
11749
11651
  locale: { type: String },
@@ -11789,8 +11691,8 @@ class AuroCalendarCell extends i$1 {
11789
11691
  const parsedDateTo = parseInt(dateTo, 10);
11790
11692
 
11791
11693
  if (day) {
11792
- const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
11793
- const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
11694
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
11695
+ const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
11794
11696
 
11795
11697
  if (day.date === departTimestamp || day.date === returnTimestamp) {
11796
11698
  this.selected = true;
@@ -11874,33 +11776,27 @@ class AuroCalendarCell extends i$1 {
11874
11776
  return false;
11875
11777
  }
11876
11778
 
11877
- // Delegate to the calendar's memoized blackout Set for O(1) lookup
11878
- // (instead of rescanning disabledDays + blackoutDates per render). The
11879
- // Set is rebuilt only when either source array reference changes — see
11880
- // auro-calendar.js#_getBlackoutSet.
11881
- if (this.calendar && typeof this.calendar._getBlackoutSet === 'function') {
11882
- if (this.calendar._getBlackoutSet().has(this.day.date)) {
11779
+ // Check against disabledDays timestamps (legacy path)
11780
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
11781
+ (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
11782
+ return true;
11783
+ }
11784
+
11785
+ // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
11786
+ const blackoutDates = this.datepicker?.blackoutDates;
11787
+
11788
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
11789
+ const date = new Date(this.day.date * 1000);
11790
+ const yyyy = date.getFullYear();
11791
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
11792
+ const dd = String(date.getDate()).padStart(2, '0');
11793
+ const cellDate = `${yyyy}-${mm}-${dd}`;
11794
+ if (blackoutDates.includes(cellDate)) {
11883
11795
  return true;
11884
11796
  }
11885
- // If the cell's local disabledDays diverged from the calendar's (a
11886
- // consumer or test mutated cell.disabledDays directly), the Set does
11887
- // not reflect that addition — fall through to the per-cell scan only
11888
- // when the reference no longer matches. Production data flow keeps
11889
- // these identical, so this branch stays cold. Guarded with
11890
- // Array.isArray to match `_getBlackoutSet`'s contract: non-array
11891
- // values are treated as empty rather than crashing on `.findIndex`.
11892
- if (Array.isArray(this.disabledDays) && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
11893
- if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
11894
- return true;
11895
- }
11896
- }
11897
- return false;
11898
11797
  }
11899
11798
 
11900
- // Pre-firstUpdated fallback — the cell may render once before the
11901
- // ancestor calendar is wired up. Routes through the shared
11902
- // blackoutUtils helper so the parsing rules stay in one place.
11903
- return isBlackoutTimestamp(this.day.date, this.disabledDays, this.datepicker?.blackoutDates);
11799
+ return false;
11904
11800
  }
11905
11801
 
11906
11802
  /**
@@ -12006,12 +11902,12 @@ class AuroCalendarCell extends i$1 {
12006
11902
  const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
12007
11903
  if (!Number.isFinite(parsedDateFrom)) return null;
12008
11904
 
12009
- const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
11905
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
12010
11906
  const dayDate = this.day.date;
12011
11907
 
12012
11908
  const parsedDateTo = Number.parseInt(this.dateTo, 10);
12013
11909
  const hasDateTo = Number.isFinite(parsedDateTo);
12014
- const returnTimestamp = hasDateTo ? new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
11910
+ const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
12015
11911
 
12016
11912
  if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
12017
11913
 
@@ -12021,9 +11917,7 @@ class AuroCalendarCell extends i$1 {
12021
11917
 
12022
11918
  if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
12023
11919
 
12024
- if (!hasDateTo && dayDate > departTimestamp) return this.datepicker.rangeLabelEndPreview || 'previewing range end';
12025
-
12026
- // After end date when both dateFrom and dateTo are set.
11920
+ // After start date, no end date yet, or after end date
12027
11921
  return this.datepicker.rangeLabelAfterRange || 'after range';
12028
11922
  }
12029
11923
 
@@ -12036,7 +11930,7 @@ class AuroCalendarCell extends i$1 {
12036
11930
  */
12037
11931
  isDepartDate(day, dateFrom) {
12038
11932
  const parsedDateFrom = parseInt(dateFrom, 10);
12039
- const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
11933
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
12040
11934
 
12041
11935
  return this.selected && day.date === departTimestamp;
12042
11936
  }
@@ -12051,7 +11945,7 @@ class AuroCalendarCell extends i$1 {
12051
11945
  */
12052
11946
  isReturnDate(day, dateFrom, dateTo) {
12053
11947
  const parsedDateTo = parseInt(dateTo, 10);
12054
- const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
11948
+ const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
12055
11949
 
12056
11950
  return this.selected && day.date === returnTimestamp && dateFrom;
12057
11951
  }
@@ -12215,7 +12109,6 @@ class AuroCalendarCell extends i$1 {
12215
12109
  setTimeout(() => this.firstUpdated(), 0);
12216
12110
  return;
12217
12111
  }
12218
- this.calendar = calendar;
12219
12112
  this.datepicker = calendar.datepicker;
12220
12113
  this._slotContentHandler = () => {
12221
12114
  this.handleSlotContent();
@@ -12273,13 +12166,12 @@ class AuroCalendarCell extends i$1 {
12273
12166
  this._cachedButton = this.shadowRoot.querySelector('button.day');
12274
12167
  });
12275
12168
 
12276
- // Keep the host's gridcell aria attributes in sync with the day data.
12169
+ // Update host-level aria attributes for ariaActiveDescendantElement.
12277
12170
  this.updateHostAria();
12278
12171
  }
12279
12172
 
12280
12173
  // Update host aria when selection changes (aria-selected, range labels)
12281
- // or when isCurrentDate flips (aria-current).
12282
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
12174
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
12283
12175
  this.updateHostAria();
12284
12176
  }
12285
12177
 
@@ -12290,8 +12182,8 @@ class AuroCalendarCell extends i$1 {
12290
12182
  }
12291
12183
 
12292
12184
  /**
12293
- * Sets host-level ARIA so each cell exposes its date, selection state,
12294
- * and blackout status to assistive tech browsing the month grid.
12185
+ * Updates ARIA attributes on the host element so that
12186
+ * ariaActiveDescendantElement can expose cell info to the SR.
12295
12187
  * @private
12296
12188
  * @returns {void}
12297
12189
  */
@@ -12300,27 +12192,16 @@ class AuroCalendarCell extends i$1 {
12300
12192
 
12301
12193
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12302
12194
  if (outOfRange) {
12303
- // Strip every aria attribute the in-range branch may have set on a
12304
- // previous render — if a cell flips from in-range to out-of-range
12305
- // (calendar shifts months, minDate/maxDate change, etc.).
12306
12195
  this.removeAttribute('role');
12307
12196
  this.removeAttribute('aria-label');
12308
- this.removeAttribute('aria-current');
12309
- this.removeAttribute('aria-selected');
12310
- this.removeAttribute('aria-disabled');
12311
12197
  return;
12312
12198
  }
12313
12199
 
12200
+ // The host acts as the gridcell for ariaActiveDescendantElement.
12314
12201
  this.setAttribute('role', 'gridcell');
12315
12202
  this.setAttribute('aria-label', this.getAriaLabel());
12316
12203
  this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
12317
12204
 
12318
- if (this.isCurrentDate) {
12319
- this.setAttribute('aria-current', 'date');
12320
- } else {
12321
- this.removeAttribute('aria-current');
12322
- }
12323
-
12324
12205
  if (this.isBlackout()) {
12325
12206
  this.setAttribute('aria-disabled', 'true');
12326
12207
  } else {
@@ -12335,7 +12216,7 @@ class AuroCalendarCell extends i$1 {
12335
12216
  * @returns {void}
12336
12217
  */
12337
12218
  focusButton() {
12338
- const button = this._cachedButton || this.shadowRoot.querySelector('button:not([disabled])');
12219
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
12339
12220
  if (button) {
12340
12221
  button.focus({ focusVisible: true });
12341
12222
  }
@@ -12343,9 +12224,7 @@ class AuroCalendarCell extends i$1 {
12343
12224
 
12344
12225
  /**
12345
12226
  * Imperatively marks this cell as active without triggering a Lit re-render.
12346
- * Buttons stay tabindex="-1" because DOM focus stays on the grid wrapper
12347
- * arrow keys move the active cell imperatively and the live region carries
12348
- * the SR announcement.
12227
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
12349
12228
  * @returns {void}
12350
12229
  */
12351
12230
  setActive() {
@@ -12387,13 +12266,10 @@ class AuroCalendarCell extends i$1 {
12387
12266
  if (!btn || !this.day) return;
12388
12267
 
12389
12268
  const dayDate = this.day.date;
12390
- const departTimestamp = new Date(dateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
12269
+ const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
12391
12270
  const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
12392
- // `>=` so hovering the depart cell itself (a same-day round-trip
12393
- // preview) still surfaces a visual cue: the depart cell receives both
12394
- // rangeDepartDate and lastHoveredDate.
12395
- const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
12396
- const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
12271
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
12272
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
12397
12273
 
12398
12274
  btn.classList.toggle('inRange', isInRange);
12399
12275
  btn.classList.toggle('lastHoveredDate', isLastHovered);
@@ -12451,6 +12327,7 @@ class AuroCalendarCell extends i$1 {
12451
12327
  @focus="${outOfRange ? undefined : this.handleFocus}"
12452
12328
  class="${e$4(buttonClasses)}"
12453
12329
  ?disabled="${outOfRange}"
12330
+ aria-hidden="${outOfRange ? 'true' : A$4}"
12454
12331
  tabindex="-1">
12455
12332
  <div class="buttonWrapper" aria-hidden="true">
12456
12333
  <div class="currentDayMarker">${this.day?.title || A$4}</div>
@@ -13562,7 +13439,7 @@ class AuroBibtemplate extends i$1 {
13562
13439
  }
13563
13440
  }
13564
13441
 
13565
- var formkitVersion$2 = '202606252132';
13442
+ var formkitVersion$2 = '202606252142';
13566
13443
 
13567
13444
  let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$5`${s$5(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$4 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$3=i$3`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
13568
13445
  `,u$6=i$3`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -13685,11 +13562,7 @@ class AuroCalendar extends RangeDatepicker {
13685
13562
  this.calendarRangeMonths = null;
13686
13563
 
13687
13564
  /**
13688
- * @deprecated Use `auro-datepicker.blackoutDates` (an array of
13689
- * `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
13690
- * timestamps is still honored for backward compatibility but emits a
13691
- * one-time `console.debug` the first time a non-empty value is observed.
13692
- * Support will be removed in a future major release.
13565
+ * Legacy array of disabled-date timestamps.
13693
13566
  * @private
13694
13567
  */
13695
13568
  this.disabledDays = [];
@@ -13946,44 +13819,17 @@ class AuroCalendar extends RangeDatepicker {
13946
13819
  * @returns {void}
13947
13820
  */
13948
13821
  updateActiveCellForVisibleMonth() {
13949
- this._afterMonthRender(() => {
13950
- const newDate = this.computeActiveDate({ skipDateFrom: true });
13951
-
13952
- if (newDate !== null && newDate !== undefined) {
13953
- this.activeCellDate = newDate;
13954
- this.setActiveCell(this.activeCellDate);
13955
- }
13956
- });
13957
- }
13958
-
13959
- /**
13960
- * Schedules `callback` two animation frames out, giving the child
13961
- * `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
13962
- * a full render-and-paint cycle to settle before the callback reads or
13963
- * mutates DOM.
13964
- *
13965
- * Why two frames, not one:
13966
- * 1. Lit batches property updates and renders in a microtask, so frame N
13967
- * schedules the render but the new DOM may not be painted yet.
13968
- * 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
13969
- * which also lands a tick later. Reading buttons from frame N+1
13970
- * (after both renders + cache refresh have flushed) reliably hits the
13971
- * new month's cells.
13972
- *
13973
- * Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
13974
- * and then needs to inspect the freshly-rendered cells (cross-month
13975
- * keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
13976
- * Do NOT collapse to a single rAF — it intermittently lands before
13977
- * `_cachedButton` is refreshed, which silently breaks focus restoration
13978
- * and `setActiveCell` lookups.
13979
- * @private
13980
- * @param {() => void} callback - Runs once after the month re-render and
13981
- * the cells' button caches have refreshed.
13982
- * @returns {void}
13983
- */
13984
- _afterMonthRender(callback) {
13822
+ // Use double-rAF to ensure child month/cell components have fully
13823
+ // rendered and cached their button references before we set tabindex.
13985
13824
  requestAnimationFrame(() => {
13986
- requestAnimationFrame(callback);
13825
+ requestAnimationFrame(() => {
13826
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
13827
+
13828
+ if (newDate !== null && newDate !== undefined) {
13829
+ this.activeCellDate = newDate;
13830
+ this.setActiveCell(this.activeCellDate);
13831
+ }
13832
+ });
13987
13833
  });
13988
13834
  }
13989
13835
 
@@ -14101,47 +13947,6 @@ class AuroCalendar extends RangeDatepicker {
14101
13947
  return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
14102
13948
  }
14103
13949
 
14104
- /**
14105
- * Picks the focusable cell whose date is closest to targetTs. Used as a
14106
- * fallback after a month-boundary nav when the exact target date isn't
14107
- * focusable — typically because the month re-render lagged or the date
14108
- * was filtered out by isOutOfRange. When two cells are equidistant, the
14109
- * navigation direction breaks the tie so the user moves the way they
14110
- * pressed (forward → later cell, backward → earlier cell).
14111
- * @private
14112
- * @param {Array} cells - Focusable cells from getAllFocusableCells.
14113
- * @param {Number} targetTs - Desired Unix timestamp (seconds).
14114
- * @param {'next'|'prev'} direction - Navigation direction.
14115
- * @returns {Object|null} The nearest cell, or null when cells is empty.
14116
- */
14117
- pickNearestCell(cells, targetTs, direction) {
14118
- if (!cells.length) {
14119
- return null;
14120
- }
14121
- const forward = direction === 'next';
14122
- let best = null;
14123
- let bestDelta = Infinity;
14124
- cells.forEach((cell) => {
14125
- if (!cell.day) {
14126
- return;
14127
- }
14128
- const distance = Math.abs(cell.day.date - targetTs);
14129
- if (distance < bestDelta) {
14130
- best = cell;
14131
- bestDelta = distance;
14132
- return;
14133
- }
14134
- if (distance === bestDelta && best) {
14135
- if (forward && cell.day.date > best.day.date) {
14136
- best = cell;
14137
- } else if (!forward && cell.day.date < best.day.date) {
14138
- best = cell;
14139
- }
14140
- }
14141
- });
14142
- return best;
14143
- }
14144
-
14145
13950
  /**
14146
13951
  * Gets all focusable cells across all rendered months.
14147
13952
  * @private
@@ -14158,9 +13963,9 @@ class AuroCalendar extends RangeDatepicker {
14158
13963
 
14159
13964
  /**
14160
13965
  * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
14161
- * Uses imperative DOM manipulation — no Lit re-render triggered. DOM focus
14162
- * stays on the grid wrapper; the live region (see getOrCreateLiveRegion)
14163
- * is what announces the active cell to assistive tech.
13966
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
13967
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
13968
+ * screen readers announce the active cell without moving DOM focus.
14164
13969
  * @param {Number} date - Unix timestamp of the cell to activate.
14165
13970
  * @returns {void}
14166
13971
  */
@@ -14241,65 +14046,6 @@ class AuroCalendar extends RangeDatepicker {
14241
14046
  this.clearRangePreview();
14242
14047
  }
14243
14048
 
14244
- /**
14245
- * Returns a memoized Set of blackout timestamps (seconds) drawn from both
14246
- * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
14247
- * The cache invalidates when either source array's reference changes, which
14248
- * matches Lit's own reactive identity semantics for array properties.
14249
- * @private
14250
- * @returns {Set<Number>}
14251
- */
14252
- _getBlackoutSet() {
14253
- // Normalize non-array values to a stable `null` sentinel rather than a
14254
- // fresh `[]` per call — otherwise the reference-identity cache key
14255
- // (`_cachedBlackoutDisabledDays === disabledDays`) never matches on
14256
- // subsequent calls and the Set rebuilds every time. `buildBlackoutSet`
14257
- // already treats null/non-array as "no legacy disabledDays" via its
14258
- // own Array.isArray gate.
14259
- const disabledDays = Array.isArray(this.disabledDays) ? this.disabledDays : null;
14260
- const blackoutDates = this.datepicker?.blackoutDates;
14261
- if (this._blackoutSet &&
14262
- this._cachedBlackoutDisabledDays === disabledDays &&
14263
- this._cachedBlackoutDates === blackoutDates) {
14264
- return this._blackoutSet;
14265
- }
14266
-
14267
- if (disabledDays && disabledDays.length > 0) {
14268
- this._warnDisabledDaysDeprecated();
14269
- }
14270
-
14271
- this._blackoutSet = buildBlackoutSet(disabledDays, blackoutDates);
14272
- this._cachedBlackoutDisabledDays = disabledDays;
14273
- this._cachedBlackoutDates = blackoutDates;
14274
- return this._blackoutSet;
14275
- }
14276
-
14277
- /**
14278
- * Per-class flag that gates the `disabledDays` deprecation warning so it
14279
- * fires exactly once per page no matter how many calendars or rebuild
14280
- * cycles encounter the legacy array.
14281
- * @private
14282
- */
14283
- static _warnedDisabledDaysDeprecation = false;
14284
-
14285
- /**
14286
- * One-time `console.debug` directing consumers from the legacy
14287
- * `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
14288
- * the first time `_getBlackoutSet` rebuilds from a non-empty
14289
- * `disabledDays`; subsequent calls (on this or any other AuroCalendar
14290
- * instance on the page) are silent.
14291
- * @private
14292
- * @returns {void}
14293
- */
14294
- _warnDisabledDaysDeprecated() {
14295
- if (AuroCalendar._warnedDisabledDaysDeprecation) {
14296
- return;
14297
- }
14298
- AuroCalendar._warnedDisabledDaysDeprecation = true;
14299
- // eslint-disable-next-line no-console
14300
- 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.');
14301
- }
14302
-
14303
14049
  /**
14304
14050
  * Computes the initial active date from data properties alone — no DOM required.
14305
14051
  * Priority:
@@ -14344,10 +14090,21 @@ class AuroCalendar extends RangeDatepicker {
14344
14090
  const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
14345
14091
  const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
14346
14092
 
14347
- // Build a Set of blackout timestamps for O(1) lookup. Memoized by the
14348
- // identity of the source arrays so rapid month nav doesn't rebuild the
14349
- // Set (and re-parse every ISO string) on every keypress.
14350
- const blackoutSet = this._getBlackoutSet();
14093
+ // Build a Set of blackout timestamps for O(1) lookup.
14094
+ const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
14095
+
14096
+ // Also include ISO-format blackoutDates from the datepicker if available.
14097
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
14098
+ const isoBlackouts = this.datepicker?.blackoutDates;
14099
+ if (Array.isArray(isoBlackouts)) {
14100
+ for (const isoStr of isoBlackouts) {
14101
+ const parts = isoStr.split('-');
14102
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
14103
+ if (Number.isFinite(ts)) {
14104
+ blackoutSet.add(ts);
14105
+ }
14106
+ }
14107
+ }
14351
14108
 
14352
14109
  /**
14353
14110
  * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
@@ -14543,8 +14300,8 @@ class AuroCalendar extends RangeDatepicker {
14543
14300
 
14544
14301
  /**
14545
14302
  * Handles arrow key navigation on the calendar grid wrapper.
14546
- * Focus stays on the grid wrapper; only the visual active-cell indicator
14547
- * changes. The live region announces the new active cell.
14303
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
14304
+ * and the visual active-cell indicator change.
14548
14305
  * @private
14549
14306
  * @param {KeyboardEvent} event - The keyboard event.
14550
14307
  * @returns {void}
@@ -14609,21 +14366,21 @@ class AuroCalendar extends RangeDatepicker {
14609
14366
  } else {
14610
14367
  this.handlePrevMonth({ skipActiveUpdate: true });
14611
14368
  }
14612
- this._afterMonthRender(() => {
14613
- const cells = this.getAllFocusableCells();
14614
- const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
14615
- if (target) {
14616
- this.setActiveCell(target.day.date);
14617
- this.handleCellFocused({ detail: { date: target.day.date } });
14618
- } else {
14619
- const fallback = this.pickNearestCell(cells, targetTs, navDir);
14620
- if (fallback) {
14369
+ requestAnimationFrame(() => {
14370
+ requestAnimationFrame(() => {
14371
+ const cells = this.getAllFocusableCells();
14372
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
14373
+ if (target) {
14374
+ this.setActiveCell(target.day.date);
14375
+ this.handleCellFocused({ detail: { date: target.day.date } });
14376
+ } else if (cells.length > 0) {
14377
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
14621
14378
  this.setActiveCell(fallback.day.date);
14622
14379
  this.handleCellFocused({ detail: { date: fallback.day.date } });
14623
14380
  }
14624
- }
14625
- // Re-focus grid wrapper after month change re-render
14626
- this.focusActiveCell();
14381
+ // Re-focus grid wrapper after month change re-render
14382
+ this.focusActiveCell();
14383
+ });
14627
14384
  });
14628
14385
  }
14629
14386
  }
@@ -14649,20 +14406,26 @@ class AuroCalendar extends RangeDatepicker {
14649
14406
  } else {
14650
14407
  this.handlePrevMonth({ skipActiveUpdate: true });
14651
14408
  }
14652
- this._afterMonthRender(() => {
14653
- const cells = this.getAllFocusableCells();
14654
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14655
- if (target) {
14656
- this.setActiveCell(target.day.date);
14657
- this.handleCellFocused({ detail: { date: target.day.date } });
14658
- } else {
14659
- const nearest = this.pickNearestCell(cells, targetDate, navDirection);
14660
- if (nearest) {
14409
+ requestAnimationFrame(() => {
14410
+ requestAnimationFrame(() => {
14411
+ const cells = this.getAllFocusableCells();
14412
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14413
+ if (target) {
14414
+ this.setActiveCell(target.day.date);
14415
+ this.handleCellFocused({ detail: { date: target.day.date } });
14416
+ } else if (cells.length > 0) {
14417
+ let nearest = null;
14418
+
14419
+ if (navDirection === 'next') {
14420
+ [nearest] = cells;
14421
+ } else {
14422
+ nearest = cells[cells.length - 1];
14423
+ }
14661
14424
  this.setActiveCell(nearest.day.date);
14662
14425
  this.handleCellFocused({ detail: { date: nearest.day.date } });
14663
14426
  }
14664
- }
14665
- this.focusActiveCell();
14427
+ this.focusActiveCell();
14428
+ });
14666
14429
  });
14667
14430
  }
14668
14431
  }
@@ -14712,17 +14475,19 @@ class AuroCalendar extends RangeDatepicker {
14712
14475
  }
14713
14476
 
14714
14477
  this.handleNextMonth({ skipActiveUpdate: true });
14715
- this._afterMonthRender(() => {
14716
- const cells = this.getAllFocusableCells();
14717
- const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
14718
- if (target) {
14719
- this.setActiveCell(target.day.date);
14720
- this.focusActiveCell();
14721
- } else if (cells.length > 0) {
14722
- // Fallback: first cell of the last rendered month
14723
- this.setActiveCell(cells[cells.length - 1].day.date);
14724
- this.focusActiveCell();
14725
- }
14478
+ requestAnimationFrame(() => {
14479
+ requestAnimationFrame(() => {
14480
+ const cells = this.getAllFocusableCells();
14481
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
14482
+ if (target) {
14483
+ this.setActiveCell(target.day.date);
14484
+ this.focusActiveCell();
14485
+ } else if (cells.length > 0) {
14486
+ // Fallback: first cell of the last rendered month
14487
+ this.setActiveCell(cells[cells.length - 1].day.date);
14488
+ this.focusActiveCell();
14489
+ }
14490
+ });
14726
14491
  });
14727
14492
  } else if (direction === 'prev' && this.showPrevMonthBtn) {
14728
14493
  // Navigate to previous month and focus the computed previous date.
@@ -14736,17 +14501,19 @@ class AuroCalendar extends RangeDatepicker {
14736
14501
  }
14737
14502
 
14738
14503
  this.handlePrevMonth({ skipActiveUpdate: true });
14739
- this._afterMonthRender(() => {
14740
- const cells = this.getAllFocusableCells();
14741
- const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
14742
- if (target) {
14743
- this.setActiveCell(target.day.date);
14744
- this.focusActiveCell();
14745
- } else if (cells.length > 0) {
14746
- // Fallback: last cell of the first rendered month
14747
- this.setActiveCell(cells[0].day.date);
14748
- this.focusActiveCell();
14749
- }
14504
+ requestAnimationFrame(() => {
14505
+ requestAnimationFrame(() => {
14506
+ const cells = this.getAllFocusableCells();
14507
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
14508
+ if (target) {
14509
+ this.setActiveCell(target.day.date);
14510
+ this.focusActiveCell();
14511
+ } else if (cells.length > 0) {
14512
+ // Fallback: last cell of the first rendered month
14513
+ this.setActiveCell(cells[0].day.date);
14514
+ this.focusActiveCell();
14515
+ }
14516
+ });
14750
14517
  });
14751
14518
  }
14752
14519
  } else if (key === 'ArrowDown' || key === 'ArrowUp') {
@@ -14774,18 +14541,20 @@ class AuroCalendar extends RangeDatepicker {
14774
14541
  } else {
14775
14542
  this.handlePrevMonth({ skipActiveUpdate: true });
14776
14543
  }
14777
- this._afterMonthRender(() => {
14778
- const cells = this.getAllFocusableCells();
14779
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14780
- if (target) {
14781
- this.setActiveCell(target.day.date);
14782
- this.focusActiveCell();
14783
- } else if (cells.length > 0) {
14784
- // Clamp to nearest focusable cell
14785
- const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
14786
- this.setActiveCell(nearest.day.date);
14787
- this.focusActiveCell();
14788
- }
14544
+ requestAnimationFrame(() => {
14545
+ requestAnimationFrame(() => {
14546
+ const cells = this.getAllFocusableCells();
14547
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14548
+ if (target) {
14549
+ this.setActiveCell(target.day.date);
14550
+ this.focusActiveCell();
14551
+ } else if (cells.length > 0) {
14552
+ // Clamp to nearest focusable cell
14553
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
14554
+ this.setActiveCell(nearest.day.date);
14555
+ this.focusActiveCell();
14556
+ }
14557
+ });
14789
14558
  });
14790
14559
  }
14791
14560
  }
@@ -14824,9 +14593,8 @@ class AuroCalendar extends RangeDatepicker {
14824
14593
  return;
14825
14594
  }
14826
14595
 
14827
- // DOM focus stays on the grid wrapper while arrow keys move the active
14828
- // cell, so cell buttons never receive native focus. The debounced live
14829
- // region carries the full-context announcement instead.
14596
+ // With aria-activedescendant, the button no longer receives native focus,
14597
+ // so we use the debounced live region for the full context announcement.
14830
14598
  const announcement = this.buildFocusAnnouncement(date);
14831
14599
  this.announceFocusDebounced(announcement);
14832
14600
 
@@ -14896,10 +14664,10 @@ class AuroCalendar extends RangeDatepicker {
14896
14664
  return null;
14897
14665
  }
14898
14666
 
14899
- const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
14667
+ const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
14900
14668
  const parsedTo = Number.parseInt(this.dateTo, 10);
14901
14669
  const hasTo = Number.isFinite(parsedTo);
14902
- const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
14670
+ const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
14903
14671
 
14904
14672
  if (date === departTs) {
14905
14673
  return this.datepicker.rangeLabelStart || 'range start';
@@ -14913,22 +14681,36 @@ class AuroCalendar extends RangeDatepicker {
14913
14681
  if (hasTo && date > departTs && date < returnTs) {
14914
14682
  return this.datepicker.rangeLabelInRange || 'in range';
14915
14683
  }
14916
- if (!hasTo && date > departTs) {
14917
- return this.datepicker.rangeLabelEndPreview || 'previewing range end';
14918
- }
14919
14684
  return this.datepicker.rangeLabelAfterRange || 'after range';
14920
14685
  }
14921
14686
 
14922
14687
  /**
14923
- * Checks whether a given date is a blackout date. Delegates to the
14924
- * memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
14925
- * legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
14688
+ * Checks whether a given date is a blackout date.
14926
14689
  * @private
14927
14690
  * @param {Number} dateTs - Unix timestamp (seconds).
14928
14691
  * @returns {Boolean} True if the date is blacked out.
14929
14692
  */
14930
14693
  isDateBlackout(dateTs) {
14931
- return this._getBlackoutSet().has(dateTs);
14694
+ // Check legacy disabledDays.
14695
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
14696
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
14697
+ return true;
14698
+ }
14699
+ }
14700
+
14701
+ // Check ISO blackoutDates.
14702
+ const blackoutDates = this.datepicker?.blackoutDates;
14703
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
14704
+ const date = new Date(dateTs * 1000);
14705
+ const yyyy = date.getFullYear();
14706
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
14707
+ const dd = String(date.getDate()).padStart(2, '0');
14708
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
14709
+ return true;
14710
+ }
14711
+ }
14712
+
14713
+ return false;
14932
14714
  }
14933
14715
 
14934
14716
  /**
@@ -15095,34 +14877,9 @@ class AuroCalendar extends RangeDatepicker {
15095
14877
  // the last one.
15096
14878
  if (this._announceRafId) {
15097
14879
  cancelAnimationFrame(this._announceRafId);
15098
- this._announceRafId = null;
15099
14880
  }
15100
- this._deliverAnnouncement(dateStr, 0);
15101
- }
15102
-
15103
- /**
15104
- * Writes `dateStr` to the live region. If the dropdown's dialog hasn't
15105
- * mounted yet (so getOrCreateLiveRegion can't attach), retries on the
15106
- * next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
15107
- * dropping the announcement. The retry uses the same `_announceRafId`
15108
- * the double-rAF below uses, so a newer announceSelection call (or
15109
- * disconnectedCallback) cancels any in-flight retry.
15110
- * @private
15111
- * @param {String} dateStr - The localized date string to announce.
15112
- * @param {Number} attempts - Number of prior retry attempts.
15113
- * @returns {void}
15114
- */
15115
- _deliverAnnouncement(dateStr, attempts) {
15116
14881
  const liveRegion = this.getOrCreateLiveRegion();
15117
14882
  if (!liveRegion) {
15118
- const MAX_LIVE_REGION_RETRIES = 10;
15119
- if (attempts < MAX_LIVE_REGION_RETRIES) {
15120
- this._announceRafId = requestAnimationFrame(() => {
15121
- this._deliverAnnouncement(dateStr, attempts + 1);
15122
- });
15123
- } else {
15124
- this._announceRafId = null;
15125
- }
15126
14883
  return;
15127
14884
  }
15128
14885
 
@@ -15308,7 +15065,7 @@ class AuroCalendar extends RangeDatepicker {
15308
15065
  </button>
15309
15066
  ` : undefined}
15310
15067
  </div>
15311
- <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}">
15068
+ <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}">
15312
15069
  ${this.renderAllCalendars()}
15313
15070
  </div>
15314
15071
  </div>
@@ -19217,7 +18974,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
19217
18974
  }
19218
18975
  };
19219
18976
 
19220
- var formkitVersion$1 = '202606252132';
18977
+ var formkitVersion$1 = '202606252142';
19221
18978
 
19222
18979
  let AuroElement$2 = class AuroElement extends i$1 {
19223
18980
  static get properties() {
@@ -20489,6 +20246,7 @@ class AuroDropdown extends AuroElement$2 {
20489
20246
  role="${o$2(this.triggerContentFocusable ? undefined : this.a11yRole)}"
20490
20247
  aria-expanded="${o$2(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
20491
20248
  aria-controls="${o$2(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
20249
+ aria-haspopup="${o$2(this.a11yRole === 'combobox' ? 'listbox' : undefined)}"
20492
20250
  aria-labelledby="${o$2(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
20493
20251
  aria-disabled="${o$2(this.disabled ? 'true' : undefined)}"
20494
20252
  @focusin="${this.handleFocusin}"
@@ -32817,7 +32575,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
32817
32575
  }
32818
32576
  };
32819
32577
 
32820
- var formkitVersion = '202606252132';
32578
+ var formkitVersion = '202606252142';
32821
32579
 
32822
32580
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
32823
32581
  // See LICENSE in the project root for license information.
@@ -34294,7 +34052,6 @@ class AuroDatePicker extends AuroElement {
34294
34052
  this.rangeLabelBeforeRange = 'before range';
34295
34053
  this.rangeLabelInRange = 'in range';
34296
34054
  this.rangeLabelAfterRange = 'after range';
34297
- this.rangeLabelEndPreview = 'previewing range end';
34298
34055
  this.blackoutDates = [];
34299
34056
  this.blackoutLabel = 'unavailable';
34300
34057
  this.navLabelPrevMonth = 'Previous month';
@@ -34394,22 +34151,6 @@ class AuroDatePicker extends AuroElement {
34394
34151
  */
34395
34152
  this.handleClick = this.handleClick.bind(this);
34396
34153
 
34397
- /**
34398
- * Single AbortController shared by every listener registered in the
34399
- * configure* methods. Lets disconnectedCallback tear all of them down
34400
- * with one abort() call.
34401
- *
34402
- * The genuine leak risk is the listeners attached to children that can
34403
- * outlive the host if they get reparented — `this.dropdown`,
34404
- * `this.calendar`, and the inputs inside the dropdown's slot.
34405
- * Listeners attached to `this` (e.g. focusin/focusout on the host)
34406
- * form a self-contained reference graph that the GC can collect with
34407
- * the host anyway, but they share the same signal so the cleanup
34408
- * pattern stays uniform across all configure* sites.
34409
- * @private
34410
- */
34411
- this._listenerAbortController = new AbortController();
34412
-
34413
34154
  /**
34414
34155
  * @private
34415
34156
  */
@@ -34458,7 +34199,6 @@ class AuroDatePicker extends AuroElement {
34458
34199
 
34459
34200
  /**
34460
34201
  * Label announced for blackout (disabled but in-range) date cells.
34461
- * @default 'unavailable'
34462
34202
  */
34463
34203
  blackoutLabel: {
34464
34204
  type: String,
@@ -34475,7 +34215,6 @@ class AuroDatePicker extends AuroElement {
34475
34215
 
34476
34216
  /**
34477
34217
  * Accessible label for the calendar grid containing the days of the month.
34478
- * @default 'Calendar days of the month'
34479
34218
  */
34480
34219
  calendarGridLabel: {
34481
34220
  type: String,
@@ -34638,7 +34377,6 @@ class AuroDatePicker extends AuroElement {
34638
34377
 
34639
34378
  /**
34640
34379
  * Accessible label for the next month navigation button.
34641
- * @default 'Next month'
34642
34380
  */
34643
34381
  navLabelNextMonth: {
34644
34382
  type: String,
@@ -34647,7 +34385,6 @@ class AuroDatePicker extends AuroElement {
34647
34385
 
34648
34386
  /**
34649
34387
  * Accessible label for the previous month navigation button.
34650
- * @default 'Previous month'
34651
34388
  */
34652
34389
  navLabelPrevMonth: {
34653
34390
  type: String,
@@ -34725,11 +34462,7 @@ class AuroDatePicker extends AuroElement {
34725
34462
  },
34726
34463
 
34727
34464
  /**
34728
- * Label announced for cells after a fully selected range (both
34729
- * `dateFrom` and `dateTo` are set). While a range is still being
34730
- * picked (`dateFrom` set, `dateTo` unset), focused cells past the
34731
- * start use `rangeLabelEndPreview` instead.
34732
- * @default 'after range'
34465
+ * Label announced for cells after the range (or after start when no end is selected).
34733
34466
  */
34734
34467
  rangeLabelAfterRange: {
34735
34468
  type: String,
@@ -34738,7 +34471,6 @@ class AuroDatePicker extends AuroElement {
34738
34471
 
34739
34472
  /**
34740
34473
  * Label announced for cells before the range start.
34741
- * @default 'before range'
34742
34474
  */
34743
34475
  rangeLabelBeforeRange: {
34744
34476
  type: String,
@@ -34747,27 +34479,14 @@ class AuroDatePicker extends AuroElement {
34747
34479
 
34748
34480
  /**
34749
34481
  * Label announced for the range end date cell.
34750
- * @default 'range end'
34751
34482
  */
34752
34483
  rangeLabelEnd: {
34753
34484
  type: String,
34754
34485
  reflect: true
34755
34486
  },
34756
34487
 
34757
- /**
34758
- * Label announced for the focused cell while previewing a range end
34759
- * (dateFrom set, dateTo not yet selected). Tells AT users that
34760
- * pressing Enter would commit this cell as the range end.
34761
- * @default 'previewing range end'
34762
- */
34763
- rangeLabelEndPreview: {
34764
- type: String,
34765
- reflect: true
34766
- },
34767
-
34768
34488
  /**
34769
34489
  * Label announced for cells within the selected range.
34770
- * @default 'in range'
34771
34490
  */
34772
34491
  rangeLabelInRange: {
34773
34492
  type: String,
@@ -34776,7 +34495,6 @@ class AuroDatePicker extends AuroElement {
34776
34495
 
34777
34496
  /**
34778
34497
  * Label announced for the range start date cell.
34779
- * @default 'range start'
34780
34498
  */
34781
34499
  rangeLabelStart: {
34782
34500
  type: String,
@@ -34784,7 +34502,7 @@ class AuroDatePicker extends AuroElement {
34784
34502
  },
34785
34503
 
34786
34504
  /**
34787
- * Dates that the user should have for reference as part of their decision-making when selecting a date.
34505
+ * Dates that the user should have for reference as part of their decision making when selecting a date.
34788
34506
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
34789
34507
  */
34790
34508
  referenceDates: {
@@ -35141,26 +34859,10 @@ class AuroDatePicker extends AuroElement {
35141
34859
  // ─── Vendor calendar time conversions ─────────────────────────────────────
35142
34860
 
35143
34861
  /**
35144
- * Converts a Unix timestamp (seconds) from the vendored range-datepicker
35145
- * (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
35146
- *
35147
- * Timezone contract:
35148
- * - INPUT: `time` is assumed to be the seconds-since-epoch of **local
35149
- * midnight** for the intended calendar day. The vendor's Day constructor
35150
- * builds it via `date-fns format(date, 't')` from a locally-constructed
35151
- * Date, so this assumption currently holds end-to-end.
35152
- * - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
35153
- * getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
35154
- * string matches the local calendar day.
35155
- *
35156
- * If the vendor ever switches to emitting UTC-midnight timestamps, this
35157
- * conversion will silently shift the returned date by one day in zones
35158
- * west of UTC. Any vendor swap should re-verify this contract; the TZ
35159
- * regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
35160
- *
34862
+ * Converts a Unix timestamp (seconds) from the vendor calendar to an ISO date string.
35161
34863
  * @private
35162
- * @param {number} time - Unix timestamp (seconds), local midnight of the day.
35163
- * @returns {string} ISO date string (yyyy-mm-dd) reflecting the local calendar day.
34864
+ * @param {number} time - Unix timestamp in seconds.
34865
+ * @returns {string} ISO date string (yyyy-mm-dd).
35164
34866
  */
35165
34867
  convertWcTimeToDate(time) {
35166
34868
  return dateFormatter$1.toISOFormatString(new Date(time * 1000));
@@ -35262,8 +34964,8 @@ class AuroDatePicker extends AuroElement {
35262
34964
  }
35263
34965
  }
35264
34966
 
35265
- // Focus the calendar grid wrapper. The live region (announced just
35266
- // below) handles the SR announcement for the active cell.
34967
+ // Focus the calendar grid wrapper (aria-activedescendant handles
34968
+ // the SR announcement for the active cell).
35267
34969
  if (activeCell) {
35268
34970
  this.calendar.focusActiveCell();
35269
34971
 
@@ -35313,13 +35015,11 @@ class AuroDatePicker extends AuroElement {
35313
35015
  this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
35314
35016
  }
35315
35017
 
35316
- const { signal } = this._listenerAbortController;
35317
-
35318
35018
  this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
35319
35019
  if (!this.isPopoverVisible) {
35320
35020
  this.dropdown.show();
35321
35021
  }
35322
- }, { signal });
35022
+ });
35323
35023
 
35324
35024
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
35325
35025
  this.notifyDatepickerToggled();
@@ -35337,7 +35037,7 @@ class AuroDatePicker extends AuroElement {
35337
35037
  if (this.valueObject) {
35338
35038
  this.centralDate = this.value;
35339
35039
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
35340
- this.centralDate = dateFormatter$1.toISOFormatString(new Date());
35040
+ this.centralDate = new Date();
35341
35041
  }
35342
35042
  }
35343
35043
 
@@ -35417,7 +35117,7 @@ class AuroDatePicker extends AuroElement {
35417
35117
  this.forceScrollOnNextMobileCalendarRender = false;
35418
35118
  }, 0);
35419
35119
  }
35420
- }, { signal });
35120
+ });
35421
35121
 
35422
35122
  // Handle responsive strategy changes while the dropdown is open
35423
35123
  // (e.g. resizing from desktop → mobile or vice versa).
@@ -35464,7 +35164,7 @@ class AuroDatePicker extends AuroElement {
35464
35164
  });
35465
35165
  });
35466
35166
  }
35467
- }, { signal });
35167
+ });
35468
35168
  }
35469
35169
 
35470
35170
  /**
@@ -35477,8 +35177,6 @@ class AuroDatePicker extends AuroElement {
35477
35177
 
35478
35178
  this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
35479
35179
 
35480
- const { signal } = this._listenerAbortController;
35481
-
35482
35180
  this.inputList.forEach((input, index) => {
35483
35181
  input.addEventListener('input', (event) => {
35484
35182
  event.stopPropagation();
@@ -35490,7 +35188,7 @@ class AuroDatePicker extends AuroElement {
35490
35188
  }
35491
35189
 
35492
35190
  this.notifyValueChanged();
35493
- }, { signal });
35191
+ });
35494
35192
 
35495
35193
  input.addEventListener('auroFormElement-validated', (evt) => {
35496
35194
  // not to bubble up input's validated event.
@@ -35506,7 +35204,7 @@ class AuroDatePicker extends AuroElement {
35506
35204
  this.validity = evt.detail.validity;
35507
35205
  this.errorMessage = evt.detail.message;
35508
35206
  }
35509
- }, { signal });
35207
+ });
35510
35208
  });
35511
35209
  }
35512
35210
 
@@ -35520,32 +35218,19 @@ class AuroDatePicker extends AuroElement {
35520
35218
  this.calendar.datepicker = this;
35521
35219
  this.calendar.dropdown = this.dropdown;
35522
35220
 
35523
- const { signal } = this._listenerAbortController;
35524
-
35525
35221
  this.calendar.addEventListener('auroCalendar-dateSelected', () => {
35526
- // Compare the input's ISO value against the *converted* calendar
35527
- // timestamp (the vendor's `dateFrom`/`dateTo` are Unix-seconds
35528
- // strings — comparing the input ISO directly against them would
35529
- // never match, so the write would fire on every event and emit
35530
- // redundant input/change activity).
35531
- if (this.calendar.dateFrom !== undefined) {
35532
- const fromIso = this.convertWcTimeToDate(this.calendar.dateFrom);
35533
- if (this.inputList[0].value !== fromIso) {
35534
- this.inputList[0].value = fromIso;
35535
- }
35222
+ if (this.inputList[0].value !== this.calendar.dateFrom && this.calendar.dateFrom !== undefined) {
35223
+ this.inputList[0].value = this.convertWcTimeToDate(this.calendar.dateFrom);
35536
35224
  }
35537
35225
 
35538
- if (this.inputList[1] && this.calendar.dateTo) {
35539
- const toIso = this.convertWcTimeToDate(this.calendar.dateTo);
35540
- if (this.inputList[1].value !== toIso) {
35541
- this.inputList[1].value = toIso;
35542
- }
35226
+ if (this.inputList[1] && this.calendar.dateTo && this.inputList[1].value !== this.calendar.dateTo) {
35227
+ this.inputList[1].value = this.convertWcTimeToDate(this.calendar.dateTo);
35543
35228
  }
35544
- }, { signal });
35229
+ });
35545
35230
 
35546
35231
  this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
35547
35232
  this.dropdown.hide();
35548
- }, { signal });
35233
+ });
35549
35234
 
35550
35235
  this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
35551
35236
  const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
@@ -35555,7 +35240,7 @@ class AuroDatePicker extends AuroElement {
35555
35240
  }
35556
35241
 
35557
35242
  this.notifyMonthChanged(event);
35558
- }, { signal });
35243
+ });
35559
35244
  }
35560
35245
 
35561
35246
  /**
@@ -35564,17 +35249,10 @@ class AuroDatePicker extends AuroElement {
35564
35249
  * @returns {void}
35565
35250
  */
35566
35251
  configureDatepicker() {
35567
- // These listeners are on `this` (the host), so they would GC with the
35568
- // host even without the abort signal — see the leak rationale on
35569
- // `_listenerAbortController`. The signal is still passed for uniform
35570
- // cleanup semantics with the child-element listeners in the other
35571
- // configure* methods.
35572
- const { signal } = this._listenerAbortController;
35573
-
35574
35252
  this.addEventListener('focusin', () => {
35575
35253
  this.touched = true;
35576
35254
  this.hasFocus = true;
35577
- }, { signal });
35255
+ });
35578
35256
 
35579
35257
  this.addEventListener('focusout', () => {
35580
35258
  this.hasFocus = false;
@@ -35586,7 +35264,7 @@ class AuroDatePicker extends AuroElement {
35586
35264
  if (!this.matches(':focus-within')) {
35587
35265
  this.validate();
35588
35266
  }
35589
- }, { signal });
35267
+ });
35590
35268
 
35591
35269
  if (this.valueObject) {
35592
35270
  this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
@@ -35784,41 +35462,6 @@ class AuroDatePicker extends AuroElement {
35784
35462
  return this.validity !== undefined && this.validity !== 'valid';
35785
35463
  }
35786
35464
 
35787
- /**
35788
- * Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
35789
- * spans every datepicker instance on the page; lives on the class (not
35790
- * at module scope) so it stays an encapsulated implementation detail of
35791
- * this component and does not interfere with WCA's class-JSDoc
35792
- * attachment.
35793
- * @private
35794
- */
35795
- static _warnedInvalidLocales = new Set();
35796
-
35797
- /**
35798
- * Logs a one-time `console.debug` when an unsupported locale falls back to
35799
- * en-US. Deduped by the offending tag so noisy re-renders that resurface
35800
- * the same bad value stay quiet, but each new bad value still signals so
35801
- * consumers can spot the typo or missing tag.
35802
- * @private
35803
- * @param {string|undefined} badLocale - The locale value that failed.
35804
- * @returns {void}
35805
- */
35806
- _warnInvalidLocale(badLocale) {
35807
- // Stringify without coalescing — `String(undefined)` / `String(null)`
35808
- // surface the actual offending value in the log, instead of the
35809
- // ambiguous `Locale ""` that `String(badLocale ?? '')` would produce.
35810
- // Dedup still works correctly because each unique stringification
35811
- // becomes its own Set entry.
35812
- const key = String(badLocale);
35813
- const seen = AuroDatePicker._warnedInvalidLocales;
35814
- if (seen.has(key)) {
35815
- return;
35816
- }
35817
- seen.add(key);
35818
- // eslint-disable-next-line no-console
35819
- 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".`);
35820
- }
35821
-
35822
35465
  /**
35823
35466
  * Lifecycle method to check if the locale is valid.
35824
35467
  * @ignore
@@ -35829,15 +35472,10 @@ class AuroDatePicker extends AuroElement {
35829
35472
  if (changedProperties.has('locale')) {
35830
35473
  try {
35831
35474
  const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
35832
- if (supported.length > 0) {
35833
- this._validLocale = this.locale;
35834
- } else {
35835
- this._validLocale = 'en-US';
35836
- this._warnInvalidLocale(this.locale);
35837
- }
35475
+ this._validLocale = supported.length > 0 ? this.locale : 'en-US';
35838
35476
  } catch {
35477
+ console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
35839
35478
  this._validLocale = 'en-US';
35840
- this._warnInvalidLocale(this.locale);
35841
35479
  }
35842
35480
 
35843
35481
  const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
@@ -35919,6 +35557,8 @@ class AuroDatePicker extends AuroElement {
35919
35557
  // Skip centralDate update when user clicked a cell in range mode
35920
35558
  // to prevent the displayed months from shifting
35921
35559
  this.centralDate = this.value;
35560
+ //TODO: TEST THIS CHANGE
35561
+ // this.calendarRenderUtil.updateCentralDate(this, this.value);
35922
35562
  }
35923
35563
 
35924
35564
  this.setHasValue();
@@ -35978,6 +35618,8 @@ class AuroDatePicker extends AuroElement {
35978
35618
  // Skip centralDate update when user clicked a cell in range mode
35979
35619
  // to prevent the displayed months from shifting
35980
35620
  this.centralDate = this.valueEnd;
35621
+ // TODO: TEST THIS CHANGE
35622
+ // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
35981
35623
  }
35982
35624
 
35983
35625
  this.validate();
@@ -36119,7 +35761,7 @@ class AuroDatePicker extends AuroElement {
36119
35761
  * @returns {void}
36120
35762
  */
36121
35763
  configureClickHandler() {
36122
- this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
35764
+ this.addEventListener('click', this.handleClick);
36123
35765
  }
36124
35766
 
36125
35767
  firstUpdated() {
@@ -36127,15 +35769,6 @@ class AuroDatePicker extends AuroElement {
36127
35769
  // Add the tag name as an attribute if it is different than the component name
36128
35770
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
36129
35771
 
36130
- // If the element was disconnected before this first render finished,
36131
- // disconnectedCallback's microtask already aborted the controller. The
36132
- // connectedCallback reinit guard skips that case because `hasUpdated`
36133
- // is still false. Mint a fresh controller here so configure* registers
36134
- // listeners against a live signal.
36135
- if (this._listenerAbortController.signal.aborted) {
36136
- this._listenerAbortController = new AbortController();
36137
- }
36138
-
36139
35772
  this.configureDropdown();
36140
35773
  this.configureInput();
36141
35774
  this.configureCalendar();
@@ -36147,36 +35780,9 @@ class AuroDatePicker extends AuroElement {
36147
35780
  connectedCallback() {
36148
35781
  super.connectedCallback();
36149
35782
 
36150
- // True reconnect after `disconnectedCallback` aborted our controller:
36151
- // the existing signal is dead, so listeners registered against it
36152
- // would never fire. Create a fresh controller and re-run the
36153
- // configure* wiring (each method is idempotent — it just re-caches
36154
- // child refs and re-registers listeners against the new signal).
36155
- // `hasUpdated` gates this so the *first* connect (which precedes
36156
- // firstUpdated) still falls through to firstUpdated's initial wiring.
36157
- if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
36158
- this._listenerAbortController = new AbortController();
36159
- this.configureDropdown();
36160
- this.configureInput();
36161
- this.configureCalendar();
36162
- this.configureDatepicker();
36163
- this.configureClickHandler();
36164
- }
36165
-
36166
35783
  this.locale = this.domHandler.getLocale(this);
36167
35784
  }
36168
35785
 
36169
- disconnectedCallback() {
36170
- super.disconnectedCallback();
36171
- // Defer so that re-parenting (auro-drawer slotting it into a dialog,
36172
- // for example) does not abort listeners we still need after reconnect.
36173
- queueMicrotask(() => {
36174
- if (!this.isConnected) {
36175
- this._listenerAbortController.abort();
36176
- }
36177
- });
36178
- }
36179
-
36180
35786
  // layout render methods
36181
35787
  // ------------------------------------
36182
35788