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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/components/checkbox/demo/customize.js +22 -0
  2. package/components/checkbox/demo/customize.min.js +1 -1
  3. package/components/checkbox/demo/demo-support.js +1 -0
  4. package/components/checkbox/demo/getting-started.js +22 -0
  5. package/components/checkbox/demo/getting-started.min.js +1 -1
  6. package/components/checkbox/demo/index.js +8 -0
  7. package/components/checkbox/demo/index.min.js +1 -1
  8. package/components/checkbox/demo/styles.scss +1 -0
  9. package/components/checkbox/dist/index.js +1 -1
  10. package/components/checkbox/dist/registered.js +1 -1
  11. package/components/combobox/demo/customize.js +24 -0
  12. package/components/combobox/demo/customize.min.js +4 -3
  13. package/components/combobox/demo/demo-support.js +1 -0
  14. package/components/combobox/demo/getting-started.js +21 -0
  15. package/components/combobox/demo/getting-started.min.js +4 -3
  16. package/components/combobox/demo/index.js +23 -0
  17. package/components/combobox/demo/index.min.js +4 -3
  18. package/components/combobox/demo/styles.scss +1 -0
  19. package/components/combobox/dist/index.js +4 -3
  20. package/components/combobox/dist/registered.js +4 -3
  21. package/components/counter/demo/customize.js +21 -0
  22. package/components/counter/demo/customize.min.js +3 -2
  23. package/components/counter/demo/demo-support.js +1 -0
  24. package/components/counter/demo/index.js +21 -0
  25. package/components/counter/demo/index.min.js +3 -2
  26. package/components/counter/demo/styles.scss +1 -0
  27. package/components/counter/dist/index.js +3 -2
  28. package/components/counter/dist/registered.js +3 -2
  29. package/components/datepicker/demo/accessibility.md +1 -2
  30. package/components/datepicker/demo/api.md +62 -63
  31. package/components/datepicker/demo/customize.js +17 -0
  32. package/components/datepicker/demo/customize.md +1 -12
  33. package/components/datepicker/demo/customize.min.js +200 -608
  34. package/components/datepicker/demo/demo-support.js +1 -0
  35. package/components/datepicker/demo/index.js +23 -0
  36. package/components/datepicker/demo/index.min.js +200 -608
  37. package/components/datepicker/demo/styles.scss +1 -0
  38. package/components/datepicker/dist/index.js +200 -608
  39. package/components/datepicker/dist/registered.js +200 -608
  40. package/components/datepicker/dist/{auro-calendar-cell.d.ts → src/auro-calendar-cell.d.ts} +3 -14
  41. package/components/datepicker/dist/{auro-calendar.d.ts → src/auro-calendar.d.ts} +6 -90
  42. package/components/datepicker/dist/{auro-datepicker.d.ts → src/auro-datepicker.d.ts} +5 -78
  43. package/components/dropdown/demo/customize.js +9 -0
  44. package/components/dropdown/demo/customize.min.js +2 -1
  45. package/components/dropdown/demo/demo-support.js +1 -0
  46. package/components/dropdown/demo/getting-started.js +9 -0
  47. package/components/dropdown/demo/getting-started.min.js +2 -1
  48. package/components/dropdown/demo/index.js +16 -0
  49. package/components/dropdown/demo/index.min.js +2 -1
  50. package/components/dropdown/demo/styles.scss +1 -0
  51. package/components/dropdown/dist/index.js +2 -1
  52. package/components/dropdown/dist/registered.js +2 -1
  53. package/components/form/demo/customize.js +28 -0
  54. package/components/form/demo/customize.min.js +348 -677
  55. package/components/form/demo/demo-support.js +1 -0
  56. package/components/form/demo/getting-started.js +9 -0
  57. package/components/form/demo/getting-started.min.js +348 -677
  58. package/components/form/demo/index.js +5 -0
  59. package/components/form/demo/index.min.js +348 -677
  60. package/components/form/demo/registerDemoDeps.js +23 -0
  61. package/components/form/demo/registerDemoDeps.min.js +348 -677
  62. package/components/form/demo/styles.scss +1 -0
  63. package/components/input/demo/customize.js +25 -0
  64. package/components/input/demo/customize.min.js +1 -1
  65. package/components/input/demo/demo-support.js +1 -0
  66. package/components/input/demo/getting-started.js +8 -0
  67. package/components/input/demo/getting-started.min.js +1 -1
  68. package/components/input/demo/index.js +8 -0
  69. package/components/input/demo/index.min.js +1 -1
  70. package/components/input/demo/styles.css +974 -0
  71. package/components/input/demo/styles.scss +1 -0
  72. package/components/input/dist/index.js +1 -1
  73. package/components/input/dist/registered.js +1 -1
  74. package/components/menu/demo/demo-support.js +1 -0
  75. package/components/menu/demo/index.js +25 -0
  76. package/components/menu/demo/styles.scss +1 -0
  77. package/components/radio/demo/customize.js +22 -0
  78. package/components/radio/demo/customize.min.js +1 -1
  79. package/components/radio/demo/demo-support.js +1 -0
  80. package/components/radio/demo/getting-started.js +24 -0
  81. package/components/radio/demo/getting-started.min.js +1 -1
  82. package/components/radio/demo/index.js +8 -0
  83. package/components/radio/demo/index.min.js +1 -1
  84. package/components/radio/demo/styles.scss +1 -0
  85. package/components/radio/dist/index.js +1 -1
  86. package/components/radio/dist/registered.js +1 -1
  87. package/components/select/demo/customize.js +11 -0
  88. package/components/select/demo/customize.min.js +132 -55
  89. package/components/select/demo/demo-support.js +1 -0
  90. package/components/select/demo/getting-started.js +26 -0
  91. package/components/select/demo/getting-started.min.js +132 -55
  92. package/components/select/demo/index.js +11 -0
  93. package/components/select/demo/index.min.js +132 -55
  94. package/components/select/demo/keyboard-behavior.md +18 -4
  95. package/components/select/demo/styles.scss +1 -0
  96. package/components/select/dist/auro-select.d.ts +20 -8
  97. package/components/select/dist/index.js +132 -55
  98. package/components/select/dist/registered.js +132 -55
  99. package/custom-elements.json +577 -863
  100. package/package.json +2 -6
  101. package/components/datepicker/dist/blackoutUtils.d.ts +0 -43
  102. /package/components/datepicker/dist/{auro-calendar-month.d.ts → src/auro-calendar-month.d.ts} +0 -0
  103. /package/components/datepicker/dist/{buttonVersion.d.ts → src/buttonVersion.d.ts} +0 -0
  104. /package/components/datepicker/dist/{datepickerKeyboardStrategy.d.ts → src/datepickerKeyboardStrategy.d.ts} +0 -0
  105. /package/components/datepicker/dist/{iconVersion.d.ts → src/iconVersion.d.ts} +0 -0
  106. /package/components/datepicker/dist/{index.d.ts → src/index.d.ts} +0 -0
  107. /package/components/datepicker/dist/{popoverVersion.d.ts → src/popoverVersion.d.ts} +0 -0
  108. /package/components/datepicker/dist/{styles → src/styles}/classic/color-css.d.ts +0 -0
  109. /package/components/datepicker/dist/{styles → src/styles}/classic/style-css.d.ts +0 -0
  110. /package/components/datepicker/dist/{styles → src/styles}/color-calendar-css.d.ts +0 -0
  111. /package/components/datepicker/dist/{styles → src/styles}/color-cell-css.d.ts +0 -0
  112. /package/components/datepicker/dist/{styles → src/styles}/color-css.d.ts +0 -0
  113. /package/components/datepicker/dist/{styles → src/styles}/color-month-css.d.ts +0 -0
  114. /package/components/datepicker/dist/{styles → src/styles}/shapeSize-css.d.ts +0 -0
  115. /package/components/datepicker/dist/{styles → src/styles}/snowflake/color-css.d.ts +0 -0
  116. /package/components/datepicker/dist/{styles → src/styles}/snowflake/style-css.d.ts +0 -0
  117. /package/components/datepicker/dist/{styles → src/styles}/style-auro-calendar-cell-css.d.ts +0 -0
  118. /package/components/datepicker/dist/{styles → src/styles}/style-auro-calendar-css.d.ts +0 -0
  119. /package/components/datepicker/dist/{styles → src/styles}/style-auro-calendar-month-css.d.ts +0 -0
  120. /package/components/datepicker/dist/{styles → src/styles}/style-css.d.ts +0 -0
  121. /package/components/datepicker/dist/{styles → src/styles}/tokens-css.d.ts +0 -0
  122. /package/components/datepicker/dist/{utilities.d.ts → src/utilities.d.ts} +0 -0
  123. /package/components/datepicker/dist/{utilitiesCalendar.d.ts → src/utilitiesCalendar.d.ts} +0 -0
  124. /package/components/datepicker/dist/{utilitiesCalendarRender.d.ts → src/utilitiesCalendarRender.d.ts} +0 -0
  125. /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/day.d.ts +0 -0
  126. /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
  127. /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
  128. /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
@@ -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 = '202606252324';
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,22 +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 {
14722
- // Same nearest-by-date fallback handleGridKeyDown uses — direct
14723
- // `cells[length - 1]` would land on the end of the new month,
14724
- // far from the user's intended `nextTs`.
14725
- const fallback = this.pickNearestCell(cells, nextTs, 'next');
14726
- if (fallback) {
14727
- this.setActiveCell(fallback.day.date);
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);
14728
14488
  this.focusActiveCell();
14729
14489
  }
14730
- }
14490
+ });
14731
14491
  });
14732
14492
  } else if (direction === 'prev' && this.showPrevMonthBtn) {
14733
14493
  // Navigate to previous month and focus the computed previous date.
@@ -14741,22 +14501,19 @@ class AuroCalendar extends RangeDatepicker {
14741
14501
  }
14742
14502
 
14743
14503
  this.handlePrevMonth({ skipActiveUpdate: true });
14744
- this._afterMonthRender(() => {
14745
- const cells = this.getAllFocusableCells();
14746
- const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
14747
- if (target) {
14748
- this.setActiveCell(target.day.date);
14749
- this.focusActiveCell();
14750
- } else {
14751
- // Same nearest-by-date fallback handleGridKeyDown uses — direct
14752
- // `cells[0]` would land on the start of the previous month, far
14753
- // from the user's intended `prevTs`.
14754
- const fallback = this.pickNearestCell(cells, prevTs, 'prev');
14755
- if (fallback) {
14756
- this.setActiveCell(fallback.day.date);
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);
14757
14514
  this.focusActiveCell();
14758
14515
  }
14759
- }
14516
+ });
14760
14517
  });
14761
14518
  }
14762
14519
  } else if (key === 'ArrowDown' || key === 'ArrowUp') {
@@ -14784,22 +14541,20 @@ class AuroCalendar extends RangeDatepicker {
14784
14541
  } else {
14785
14542
  this.handlePrevMonth({ skipActiveUpdate: true });
14786
14543
  }
14787
- this._afterMonthRender(() => {
14788
- const cells = this.getAllFocusableCells();
14789
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14790
- if (target) {
14791
- this.setActiveCell(target.day.date);
14792
- this.focusActiveCell();
14793
- } else {
14794
- // Same nearest-by-date fallback handleGridKeyDown uses — the
14795
- // old direction-based `cells[0]`/`cells[length-1]` clamp
14796
- // could land 25+ days from the intended target.
14797
- const nearest = this.pickNearestCell(cells, targetDate, navDirection);
14798
- if (nearest) {
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];
14799
14554
  this.setActiveCell(nearest.day.date);
14800
14555
  this.focusActiveCell();
14801
14556
  }
14802
- }
14557
+ });
14803
14558
  });
14804
14559
  }
14805
14560
  }
@@ -14838,9 +14593,8 @@ class AuroCalendar extends RangeDatepicker {
14838
14593
  return;
14839
14594
  }
14840
14595
 
14841
- // DOM focus stays on the grid wrapper while arrow keys move the active
14842
- // cell, so cell buttons never receive native focus. The debounced live
14843
- // 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.
14844
14598
  const announcement = this.buildFocusAnnouncement(date);
14845
14599
  this.announceFocusDebounced(announcement);
14846
14600
 
@@ -14910,10 +14664,10 @@ class AuroCalendar extends RangeDatepicker {
14910
14664
  return null;
14911
14665
  }
14912
14666
 
14913
- const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
14667
+ const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
14914
14668
  const parsedTo = Number.parseInt(this.dateTo, 10);
14915
14669
  const hasTo = Number.isFinite(parsedTo);
14916
- const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
14670
+ const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
14917
14671
 
14918
14672
  if (date === departTs) {
14919
14673
  return this.datepicker.rangeLabelStart || 'range start';
@@ -14927,22 +14681,36 @@ class AuroCalendar extends RangeDatepicker {
14927
14681
  if (hasTo && date > departTs && date < returnTs) {
14928
14682
  return this.datepicker.rangeLabelInRange || 'in range';
14929
14683
  }
14930
- if (!hasTo && date > departTs) {
14931
- return this.datepicker.rangeLabelEndPreview || 'previewing range end';
14932
- }
14933
14684
  return this.datepicker.rangeLabelAfterRange || 'after range';
14934
14685
  }
14935
14686
 
14936
14687
  /**
14937
- * Checks whether a given date is a blackout date. Delegates to the
14938
- * memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
14939
- * legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
14688
+ * Checks whether a given date is a blackout date.
14940
14689
  * @private
14941
14690
  * @param {Number} dateTs - Unix timestamp (seconds).
14942
14691
  * @returns {Boolean} True if the date is blacked out.
14943
14692
  */
14944
14693
  isDateBlackout(dateTs) {
14945
- 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;
14946
14714
  }
14947
14715
 
14948
14716
  /**
@@ -15109,34 +14877,9 @@ class AuroCalendar extends RangeDatepicker {
15109
14877
  // the last one.
15110
14878
  if (this._announceRafId) {
15111
14879
  cancelAnimationFrame(this._announceRafId);
15112
- this._announceRafId = null;
15113
14880
  }
15114
- this._deliverAnnouncement(dateStr, 0);
15115
- }
15116
-
15117
- /**
15118
- * Writes `dateStr` to the live region. If the dropdown's dialog hasn't
15119
- * mounted yet (so getOrCreateLiveRegion can't attach), retries on the
15120
- * next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
15121
- * dropping the announcement. The retry uses the same `_announceRafId`
15122
- * the double-rAF below uses, so a newer announceSelection call (or
15123
- * disconnectedCallback) cancels any in-flight retry.
15124
- * @private
15125
- * @param {String} dateStr - The localized date string to announce.
15126
- * @param {Number} attempts - Number of prior retry attempts.
15127
- * @returns {void}
15128
- */
15129
- _deliverAnnouncement(dateStr, attempts) {
15130
14881
  const liveRegion = this.getOrCreateLiveRegion();
15131
14882
  if (!liveRegion) {
15132
- const MAX_LIVE_REGION_RETRIES = 10;
15133
- if (attempts < MAX_LIVE_REGION_RETRIES) {
15134
- this._announceRafId = requestAnimationFrame(() => {
15135
- this._deliverAnnouncement(dateStr, attempts + 1);
15136
- });
15137
- } else {
15138
- this._announceRafId = null;
15139
- }
15140
14883
  return;
15141
14884
  }
15142
14885
 
@@ -15322,7 +15065,7 @@ class AuroCalendar extends RangeDatepicker {
15322
15065
  </button>
15323
15066
  ` : undefined}
15324
15067
  </div>
15325
- <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}">
15326
15069
  ${this.renderAllCalendars()}
15327
15070
  </div>
15328
15071
  </div>
@@ -19231,7 +18974,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
19231
18974
  }
19232
18975
  };
19233
18976
 
19234
- var formkitVersion$1 = '202606252324';
18977
+ var formkitVersion$1 = '202606252142';
19235
18978
 
19236
18979
  let AuroElement$2 = class AuroElement extends i$1 {
19237
18980
  static get properties() {
@@ -20503,6 +20246,7 @@ class AuroDropdown extends AuroElement$2 {
20503
20246
  role="${o$2(this.triggerContentFocusable ? undefined : this.a11yRole)}"
20504
20247
  aria-expanded="${o$2(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
20505
20248
  aria-controls="${o$2(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
20249
+ aria-haspopup="${o$2(this.a11yRole === 'combobox' ? 'listbox' : undefined)}"
20506
20250
  aria-labelledby="${o$2(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
20507
20251
  aria-disabled="${o$2(this.disabled ? 'true' : undefined)}"
20508
20252
  @focusin="${this.handleFocusin}"
@@ -32831,7 +32575,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
32831
32575
  }
32832
32576
  };
32833
32577
 
32834
- var formkitVersion = '202606252324';
32578
+ var formkitVersion = '202606252142';
32835
32579
 
32836
32580
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
32837
32581
  // See LICENSE in the project root for license information.
@@ -34308,7 +34052,6 @@ class AuroDatePicker extends AuroElement {
34308
34052
  this.rangeLabelBeforeRange = 'before range';
34309
34053
  this.rangeLabelInRange = 'in range';
34310
34054
  this.rangeLabelAfterRange = 'after range';
34311
- this.rangeLabelEndPreview = 'previewing range end';
34312
34055
  this.blackoutDates = [];
34313
34056
  this.blackoutLabel = 'unavailable';
34314
34057
  this.navLabelPrevMonth = 'Previous month';
@@ -34408,22 +34151,6 @@ class AuroDatePicker extends AuroElement {
34408
34151
  */
34409
34152
  this.handleClick = this.handleClick.bind(this);
34410
34153
 
34411
- /**
34412
- * Single AbortController shared by every listener registered in the
34413
- * configure* methods. Lets disconnectedCallback tear all of them down
34414
- * with one abort() call.
34415
- *
34416
- * The genuine leak risk is the listeners attached to children that can
34417
- * outlive the host if they get reparented — `this.dropdown`,
34418
- * `this.calendar`, and the inputs inside the dropdown's slot.
34419
- * Listeners attached to `this` (e.g. focusin/focusout on the host)
34420
- * form a self-contained reference graph that the GC can collect with
34421
- * the host anyway, but they share the same signal so the cleanup
34422
- * pattern stays uniform across all configure* sites.
34423
- * @private
34424
- */
34425
- this._listenerAbortController = new AbortController();
34426
-
34427
34154
  /**
34428
34155
  * @private
34429
34156
  */
@@ -34472,7 +34199,6 @@ class AuroDatePicker extends AuroElement {
34472
34199
 
34473
34200
  /**
34474
34201
  * Label announced for blackout (disabled but in-range) date cells.
34475
- * @default 'unavailable'
34476
34202
  */
34477
34203
  blackoutLabel: {
34478
34204
  type: String,
@@ -34489,7 +34215,6 @@ class AuroDatePicker extends AuroElement {
34489
34215
 
34490
34216
  /**
34491
34217
  * Accessible label for the calendar grid containing the days of the month.
34492
- * @default 'Calendar days of the month'
34493
34218
  */
34494
34219
  calendarGridLabel: {
34495
34220
  type: String,
@@ -34652,7 +34377,6 @@ class AuroDatePicker extends AuroElement {
34652
34377
 
34653
34378
  /**
34654
34379
  * Accessible label for the next month navigation button.
34655
- * @default 'Next month'
34656
34380
  */
34657
34381
  navLabelNextMonth: {
34658
34382
  type: String,
@@ -34661,7 +34385,6 @@ class AuroDatePicker extends AuroElement {
34661
34385
 
34662
34386
  /**
34663
34387
  * Accessible label for the previous month navigation button.
34664
- * @default 'Previous month'
34665
34388
  */
34666
34389
  navLabelPrevMonth: {
34667
34390
  type: String,
@@ -34739,11 +34462,7 @@ class AuroDatePicker extends AuroElement {
34739
34462
  },
34740
34463
 
34741
34464
  /**
34742
- * Label announced for cells after a fully selected range (both
34743
- * `dateFrom` and `dateTo` are set). While a range is still being
34744
- * picked (`dateFrom` set, `dateTo` unset), focused cells past the
34745
- * start use `rangeLabelEndPreview` instead.
34746
- * @default 'after range'
34465
+ * Label announced for cells after the range (or after start when no end is selected).
34747
34466
  */
34748
34467
  rangeLabelAfterRange: {
34749
34468
  type: String,
@@ -34752,7 +34471,6 @@ class AuroDatePicker extends AuroElement {
34752
34471
 
34753
34472
  /**
34754
34473
  * Label announced for cells before the range start.
34755
- * @default 'before range'
34756
34474
  */
34757
34475
  rangeLabelBeforeRange: {
34758
34476
  type: String,
@@ -34761,27 +34479,14 @@ class AuroDatePicker extends AuroElement {
34761
34479
 
34762
34480
  /**
34763
34481
  * Label announced for the range end date cell.
34764
- * @default 'range end'
34765
34482
  */
34766
34483
  rangeLabelEnd: {
34767
34484
  type: String,
34768
34485
  reflect: true
34769
34486
  },
34770
34487
 
34771
- /**
34772
- * Label announced for the focused cell while previewing a range end
34773
- * (dateFrom set, dateTo not yet selected). Tells AT users that
34774
- * pressing Enter would commit this cell as the range end.
34775
- * @default 'previewing range end'
34776
- */
34777
- rangeLabelEndPreview: {
34778
- type: String,
34779
- reflect: true
34780
- },
34781
-
34782
34488
  /**
34783
34489
  * Label announced for cells within the selected range.
34784
- * @default 'in range'
34785
34490
  */
34786
34491
  rangeLabelInRange: {
34787
34492
  type: String,
@@ -34790,7 +34495,6 @@ class AuroDatePicker extends AuroElement {
34790
34495
 
34791
34496
  /**
34792
34497
  * Label announced for the range start date cell.
34793
- * @default 'range start'
34794
34498
  */
34795
34499
  rangeLabelStart: {
34796
34500
  type: String,
@@ -34798,7 +34502,7 @@ class AuroDatePicker extends AuroElement {
34798
34502
  },
34799
34503
 
34800
34504
  /**
34801
- * 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.
34802
34506
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
34803
34507
  */
34804
34508
  referenceDates: {
@@ -35155,26 +34859,10 @@ class AuroDatePicker extends AuroElement {
35155
34859
  // ─── Vendor calendar time conversions ─────────────────────────────────────
35156
34860
 
35157
34861
  /**
35158
- * Converts a Unix timestamp (seconds) from the vendored range-datepicker
35159
- * (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
35160
- *
35161
- * Timezone contract:
35162
- * - INPUT: `time` is assumed to be the seconds-since-epoch of **local
35163
- * midnight** for the intended calendar day. The vendor's Day constructor
35164
- * builds it via `date-fns format(date, 't')` from a locally-constructed
35165
- * Date, so this assumption currently holds end-to-end.
35166
- * - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
35167
- * getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
35168
- * string matches the local calendar day.
35169
- *
35170
- * If the vendor ever switches to emitting UTC-midnight timestamps, this
35171
- * conversion will silently shift the returned date by one day in zones
35172
- * west of UTC. Any vendor swap should re-verify this contract; the TZ
35173
- * regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
35174
- *
34862
+ * Converts a Unix timestamp (seconds) from the vendor calendar to an ISO date string.
35175
34863
  * @private
35176
- * @param {number} time - Unix timestamp (seconds), local midnight of the day.
35177
- * @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).
35178
34866
  */
35179
34867
  convertWcTimeToDate(time) {
35180
34868
  return dateFormatter$1.toISOFormatString(new Date(time * 1000));
@@ -35276,8 +34964,8 @@ class AuroDatePicker extends AuroElement {
35276
34964
  }
35277
34965
  }
35278
34966
 
35279
- // Focus the calendar grid wrapper. The live region (announced just
35280
- // 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).
35281
34969
  if (activeCell) {
35282
34970
  this.calendar.focusActiveCell();
35283
34971
 
@@ -35327,13 +35015,11 @@ class AuroDatePicker extends AuroElement {
35327
35015
  this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
35328
35016
  }
35329
35017
 
35330
- const { signal } = this._listenerAbortController;
35331
-
35332
35018
  this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
35333
35019
  if (!this.isPopoverVisible) {
35334
35020
  this.dropdown.show();
35335
35021
  }
35336
- }, { signal });
35022
+ });
35337
35023
 
35338
35024
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
35339
35025
  this.notifyDatepickerToggled();
@@ -35351,7 +35037,7 @@ class AuroDatePicker extends AuroElement {
35351
35037
  if (this.valueObject) {
35352
35038
  this.centralDate = this.value;
35353
35039
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
35354
- this.centralDate = dateFormatter$1.toISOFormatString(new Date());
35040
+ this.centralDate = new Date();
35355
35041
  }
35356
35042
  }
35357
35043
 
@@ -35431,7 +35117,7 @@ class AuroDatePicker extends AuroElement {
35431
35117
  this.forceScrollOnNextMobileCalendarRender = false;
35432
35118
  }, 0);
35433
35119
  }
35434
- }, { signal });
35120
+ });
35435
35121
 
35436
35122
  // Handle responsive strategy changes while the dropdown is open
35437
35123
  // (e.g. resizing from desktop → mobile or vice versa).
@@ -35478,7 +35164,7 @@ class AuroDatePicker extends AuroElement {
35478
35164
  });
35479
35165
  });
35480
35166
  }
35481
- }, { signal });
35167
+ });
35482
35168
  }
35483
35169
 
35484
35170
  /**
@@ -35491,8 +35177,6 @@ class AuroDatePicker extends AuroElement {
35491
35177
 
35492
35178
  this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
35493
35179
 
35494
- const { signal } = this._listenerAbortController;
35495
-
35496
35180
  this.inputList.forEach((input, index) => {
35497
35181
  input.addEventListener('input', (event) => {
35498
35182
  event.stopPropagation();
@@ -35504,7 +35188,7 @@ class AuroDatePicker extends AuroElement {
35504
35188
  }
35505
35189
 
35506
35190
  this.notifyValueChanged();
35507
- }, { signal });
35191
+ });
35508
35192
 
35509
35193
  input.addEventListener('auroFormElement-validated', (evt) => {
35510
35194
  // not to bubble up input's validated event.
@@ -35520,7 +35204,7 @@ class AuroDatePicker extends AuroElement {
35520
35204
  this.validity = evt.detail.validity;
35521
35205
  this.errorMessage = evt.detail.message;
35522
35206
  }
35523
- }, { signal });
35207
+ });
35524
35208
  });
35525
35209
  }
35526
35210
 
@@ -35534,32 +35218,19 @@ class AuroDatePicker extends AuroElement {
35534
35218
  this.calendar.datepicker = this;
35535
35219
  this.calendar.dropdown = this.dropdown;
35536
35220
 
35537
- const { signal } = this._listenerAbortController;
35538
-
35539
35221
  this.calendar.addEventListener('auroCalendar-dateSelected', () => {
35540
- // Compare the input's ISO value against the *converted* calendar
35541
- // timestamp (the vendor's `dateFrom`/`dateTo` are Unix-seconds
35542
- // strings — comparing the input ISO directly against them would
35543
- // never match, so the write would fire on every event and emit
35544
- // redundant input/change activity).
35545
- if (this.calendar.dateFrom !== undefined) {
35546
- const fromIso = this.convertWcTimeToDate(this.calendar.dateFrom);
35547
- if (this.inputList[0].value !== fromIso) {
35548
- this.inputList[0].value = fromIso;
35549
- }
35222
+ if (this.inputList[0].value !== this.calendar.dateFrom && this.calendar.dateFrom !== undefined) {
35223
+ this.inputList[0].value = this.convertWcTimeToDate(this.calendar.dateFrom);
35550
35224
  }
35551
35225
 
35552
- if (this.inputList[1] && this.calendar.dateTo) {
35553
- const toIso = this.convertWcTimeToDate(this.calendar.dateTo);
35554
- if (this.inputList[1].value !== toIso) {
35555
- this.inputList[1].value = toIso;
35556
- }
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);
35557
35228
  }
35558
- }, { signal });
35229
+ });
35559
35230
 
35560
35231
  this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
35561
35232
  this.dropdown.hide();
35562
- }, { signal });
35233
+ });
35563
35234
 
35564
35235
  this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
35565
35236
  const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
@@ -35569,7 +35240,7 @@ class AuroDatePicker extends AuroElement {
35569
35240
  }
35570
35241
 
35571
35242
  this.notifyMonthChanged(event);
35572
- }, { signal });
35243
+ });
35573
35244
  }
35574
35245
 
35575
35246
  /**
@@ -35578,17 +35249,10 @@ class AuroDatePicker extends AuroElement {
35578
35249
  * @returns {void}
35579
35250
  */
35580
35251
  configureDatepicker() {
35581
- // These listeners are on `this` (the host), so they would GC with the
35582
- // host even without the abort signal — see the leak rationale on
35583
- // `_listenerAbortController`. The signal is still passed for uniform
35584
- // cleanup semantics with the child-element listeners in the other
35585
- // configure* methods.
35586
- const { signal } = this._listenerAbortController;
35587
-
35588
35252
  this.addEventListener('focusin', () => {
35589
35253
  this.touched = true;
35590
35254
  this.hasFocus = true;
35591
- }, { signal });
35255
+ });
35592
35256
 
35593
35257
  this.addEventListener('focusout', () => {
35594
35258
  this.hasFocus = false;
@@ -35600,7 +35264,7 @@ class AuroDatePicker extends AuroElement {
35600
35264
  if (!this.matches(':focus-within')) {
35601
35265
  this.validate();
35602
35266
  }
35603
- }, { signal });
35267
+ });
35604
35268
 
35605
35269
  if (this.valueObject) {
35606
35270
  this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
@@ -35798,41 +35462,6 @@ class AuroDatePicker extends AuroElement {
35798
35462
  return this.validity !== undefined && this.validity !== 'valid';
35799
35463
  }
35800
35464
 
35801
- /**
35802
- * Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
35803
- * spans every datepicker instance on the page; lives on the class (not
35804
- * at module scope) so it stays an encapsulated implementation detail of
35805
- * this component and does not interfere with WCA's class-JSDoc
35806
- * attachment.
35807
- * @private
35808
- */
35809
- static _warnedInvalidLocales = new Set();
35810
-
35811
- /**
35812
- * Logs a one-time `console.debug` when an unsupported locale falls back to
35813
- * en-US. Deduped by the offending tag so noisy re-renders that resurface
35814
- * the same bad value stay quiet, but each new bad value still signals so
35815
- * consumers can spot the typo or missing tag.
35816
- * @private
35817
- * @param {string|undefined} badLocale - The locale value that failed.
35818
- * @returns {void}
35819
- */
35820
- _warnInvalidLocale(badLocale) {
35821
- // Stringify without coalescing — `String(undefined)` / `String(null)`
35822
- // surface the actual offending value in the log, instead of the
35823
- // ambiguous `Locale ""` that `String(badLocale ?? '')` would produce.
35824
- // Dedup still works correctly because each unique stringification
35825
- // becomes its own Set entry.
35826
- const key = String(badLocale);
35827
- const seen = AuroDatePicker._warnedInvalidLocales;
35828
- if (seen.has(key)) {
35829
- return;
35830
- }
35831
- seen.add(key);
35832
- // eslint-disable-next-line no-console
35833
- 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".`);
35834
- }
35835
-
35836
35465
  /**
35837
35466
  * Lifecycle method to check if the locale is valid.
35838
35467
  * @ignore
@@ -35843,15 +35472,10 @@ class AuroDatePicker extends AuroElement {
35843
35472
  if (changedProperties.has('locale')) {
35844
35473
  try {
35845
35474
  const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
35846
- if (supported.length > 0) {
35847
- this._validLocale = this.locale;
35848
- } else {
35849
- this._validLocale = 'en-US';
35850
- this._warnInvalidLocale(this.locale);
35851
- }
35475
+ this._validLocale = supported.length > 0 ? this.locale : 'en-US';
35852
35476
  } catch {
35477
+ console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
35853
35478
  this._validLocale = 'en-US';
35854
- this._warnInvalidLocale(this.locale);
35855
35479
  }
35856
35480
 
35857
35481
  const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
@@ -35933,6 +35557,8 @@ class AuroDatePicker extends AuroElement {
35933
35557
  // Skip centralDate update when user clicked a cell in range mode
35934
35558
  // to prevent the displayed months from shifting
35935
35559
  this.centralDate = this.value;
35560
+ //TODO: TEST THIS CHANGE
35561
+ // this.calendarRenderUtil.updateCentralDate(this, this.value);
35936
35562
  }
35937
35563
 
35938
35564
  this.setHasValue();
@@ -35992,6 +35618,8 @@ class AuroDatePicker extends AuroElement {
35992
35618
  // Skip centralDate update when user clicked a cell in range mode
35993
35619
  // to prevent the displayed months from shifting
35994
35620
  this.centralDate = this.valueEnd;
35621
+ // TODO: TEST THIS CHANGE
35622
+ // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
35995
35623
  }
35996
35624
 
35997
35625
  this.validate();
@@ -36133,7 +35761,7 @@ class AuroDatePicker extends AuroElement {
36133
35761
  * @returns {void}
36134
35762
  */
36135
35763
  configureClickHandler() {
36136
- this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
35764
+ this.addEventListener('click', this.handleClick);
36137
35765
  }
36138
35766
 
36139
35767
  firstUpdated() {
@@ -36141,15 +35769,6 @@ class AuroDatePicker extends AuroElement {
36141
35769
  // Add the tag name as an attribute if it is different than the component name
36142
35770
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
36143
35771
 
36144
- // If the element was disconnected before this first render finished,
36145
- // disconnectedCallback's microtask already aborted the controller. The
36146
- // connectedCallback reinit guard skips that case because `hasUpdated`
36147
- // is still false. Mint a fresh controller here so configure* registers
36148
- // listeners against a live signal.
36149
- if (this._listenerAbortController.signal.aborted) {
36150
- this._listenerAbortController = new AbortController();
36151
- }
36152
-
36153
35772
  this.configureDropdown();
36154
35773
  this.configureInput();
36155
35774
  this.configureCalendar();
@@ -36161,36 +35780,9 @@ class AuroDatePicker extends AuroElement {
36161
35780
  connectedCallback() {
36162
35781
  super.connectedCallback();
36163
35782
 
36164
- // True reconnect after `disconnectedCallback` aborted our controller:
36165
- // the existing signal is dead, so listeners registered against it
36166
- // would never fire. Create a fresh controller and re-run the
36167
- // configure* wiring (each method is idempotent — it just re-caches
36168
- // child refs and re-registers listeners against the new signal).
36169
- // `hasUpdated` gates this so the *first* connect (which precedes
36170
- // firstUpdated) still falls through to firstUpdated's initial wiring.
36171
- if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
36172
- this._listenerAbortController = new AbortController();
36173
- this.configureDropdown();
36174
- this.configureInput();
36175
- this.configureCalendar();
36176
- this.configureDatepicker();
36177
- this.configureClickHandler();
36178
- }
36179
-
36180
35783
  this.locale = this.domHandler.getLocale(this);
36181
35784
  }
36182
35785
 
36183
- disconnectedCallback() {
36184
- super.disconnectedCallback();
36185
- // Defer so that re-parenting (auro-drawer slotting it into a dialog,
36186
- // for example) does not abort listeners we still need after reconnect.
36187
- queueMicrotask(() => {
36188
- if (!this.isConnected) {
36189
- this._listenerAbortController.abort();
36190
- }
36191
- });
36192
- }
36193
-
36194
35786
  // layout render methods
36195
35787
  // ------------------------------------
36196
35788