@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
@@ -1356,7 +1356,7 @@ function normalizeDates$1(context, ...dates) {
1356
1356
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
1357
1357
  * //=> Tue Sep 02 2014 00:00:00
1358
1358
  */
1359
- function startOfDay$1(date, options) {
1359
+ function startOfDay$2(date, options) {
1360
1360
  const _date = toDate$1(date, options?.in);
1361
1361
  _date.setHours(0, 0, 0, 0);
1362
1362
  return _date;
@@ -1404,8 +1404,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
1404
1404
  earlierDate,
1405
1405
  );
1406
1406
 
1407
- const laterStartOfDay = startOfDay$1(laterDate_);
1408
- const earlierStartOfDay = startOfDay$1(earlierDate_);
1407
+ const laterStartOfDay = startOfDay$2(laterDate_);
1408
+ const earlierStartOfDay = startOfDay$2(earlierDate_);
1409
1409
 
1410
1410
  const laterTimestamp =
1411
1411
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
@@ -10862,8 +10862,8 @@ class RangeDatepickerCell extends LitElement {
10862
10862
  const parsedDateFrom = parseInt(dateFrom, 10);
10863
10863
  const parsedDateTo = parseInt(dateTo, 10);
10864
10864
  if (day) {
10865
- if (getTime(startOfDay$1(parsedDateTo * 1000)) / 1000 === day.date ||
10866
- getTime(startOfDay$1(parsedDateFrom * 1000)) / 1000 === day.date) {
10865
+ if (getTime(startOfDay$2(parsedDateTo * 1000)) / 1000 === day.date ||
10866
+ getTime(startOfDay$2(parsedDateFrom * 1000)) / 1000 === day.date) {
10867
10867
  this.selected = true;
10868
10868
  }
10869
10869
  if (((hoveredDate === day.date || day.date < hoveredDate) &&
@@ -11051,7 +11051,7 @@ class RangeDatepickerCalendar extends LitElement {
11051
11051
  this.dayNamesOfTheWeek = [];
11052
11052
  this.daysOfMonth = [];
11053
11053
  this._locale = null;
11054
- this.currentDate = parseInt(format$1(startOfDay$1(Date.now()), 't'), 10);
11054
+ this.currentDate = parseInt(format$1(startOfDay$2(Date.now()), 't'), 10);
11055
11055
  this.localeChanged();
11056
11056
  this.yearAndMonthChanged(this.year, this.month);
11057
11057
  }
@@ -11525,7 +11525,7 @@ __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "dayN
11525
11525
  __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
11526
11526
  AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
11527
11527
 
11528
- var styleCss$5 = css`.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}`;
11528
+ var styleCss$5 = css`.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}`;
11529
11529
 
11530
11530
  var colorCss$5 = css`: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}`;
11531
11531
 
@@ -11550,104 +11550,14 @@ class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,cl
11550
11550
 
11551
11551
  var popoverVersion = '6.0.1';
11552
11552
 
11553
- /**
11554
- * Single source of truth for parsing and matching blackout dates across the
11555
- * datepicker. Both `auro-calendar` (memoized Set + `isDateBlackout`) and the
11556
- * pre-`firstUpdated` fallback inside `auro-calendar-cell` route through these
11557
- * helpers so the YYYY-MM-DD → seconds conversion and the merge-with-legacy
11558
- * `disabledDays` rules are defined exactly once.
11559
- */
11560
-
11561
- /**
11562
- * Converts a `YYYY-MM-DD` ISO date string to a Unix timestamp (seconds)
11563
- * representing local midnight on that calendar day. Returns `null` for
11564
- * inputs that don't parse to a finite timestamp.
11565
- *
11566
- * Uses the `new Date(year, monthIndex, day)` constructor (NOT
11567
- * `new Date(isoStr)`) so the result is local-midnight rather than UTC
11568
- * midnight — required to keep the calendar grid aligned with the user's
11569
- * local calendar day in negative-offset timezones.
11570
- *
11571
- * @param {string} isoStr - Date string in `YYYY-MM-DD` format.
11572
- * @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
11573
- */
11574
- function parseIsoToTimestamp(isoStr) {
11575
- if (typeof isoStr !== 'string') {
11576
- return null;
11577
- }
11578
- const parts = isoStr.split('-');
11579
- if (parts.length !== 3) {
11580
- return null;
11581
- }
11582
- const year = parseInt(parts[0], 10);
11583
- const month = parseInt(parts[1], 10);
11584
- const day = parseInt(parts[2], 10);
11585
- if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
11586
- return null;
11587
- }
11588
- // Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
11589
- // silently normalizes those to a different calendar day, which would
11590
- // disable the wrong date if we let the result through.
11591
- if (month < 1 || month > 12 || day < 1 || day > 31) {
11592
- return null;
11593
- }
11594
- const date = new Date(year, month - 1, day);
11595
- // Guard the residual case where JS still rolls a value (e.g. Feb 30 → Mar 2).
11596
- // After construction, getFullYear/getMonth/getDate should match the inputs.
11597
- if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
11598
- return null;
11599
- }
11600
- const ts = Math.floor(date.getTime() / 1000);
11601
- return Number.isFinite(ts) ? ts : null;
11602
- }
11603
-
11604
- /**
11605
- * Builds a `Set<number>` of seconds-since-epoch timestamps covering both the
11606
- * legacy `disabledDays` (already-numeric) array and the ISO `blackoutDates`
11607
- * array. Use this for O(1) membership checks in hot paths.
11608
- *
11609
- * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
11610
- * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
11611
- * @returns {Set<number>}
11612
- */
11613
- function buildBlackoutSet(disabledDays, blackoutDates) {
11614
- const set = new Set();
11615
- if (Array.isArray(disabledDays)) {
11616
- for (const day of disabledDays) {
11617
- const ts = parseInt(day, 10);
11618
- if (Number.isFinite(ts)) {
11619
- set.add(ts);
11620
- }
11621
- }
11622
- }
11623
- if (Array.isArray(blackoutDates)) {
11624
- for (const isoStr of blackoutDates) {
11625
- const ts = parseIsoToTimestamp(isoStr);
11626
- if (ts !== null) {
11627
- set.add(ts);
11628
- }
11629
- }
11630
- }
11631
- return set;
11632
- }
11633
-
11634
- /**
11635
- * One-shot membership test for a single timestamp against both blackout
11636
- * sources. Allocates a Set on each call; only use this in cold paths
11637
- * (e.g. the pre-`firstUpdated` cell fallback). Hot paths should hold the
11638
- * Set returned from `buildBlackoutSet` and `.has(ts)` directly.
11639
- *
11640
- * @param {number} dateTs - Unix timestamp (seconds) to test.
11641
- * @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
11642
- * @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
11643
- * @returns {boolean}
11644
- */
11645
- function isBlackoutTimestamp(dateTs, disabledDays, blackoutDates) {
11646
- return buildBlackoutSet(disabledDays, blackoutDates).has(dateTs);
11647
- }
11648
-
11649
11553
  /* 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 */
11650
11554
 
11555
+ const startOfDay$1 = (ms) => {
11556
+ const date = new Date(ms);
11557
+ date.setHours(0, 0, 0, 0);
11558
+ return date.getTime();
11559
+ };
11560
+
11651
11561
  class AuroCalendarCell extends LitElement {
11652
11562
  constructor() {
11653
11563
  super();
@@ -11694,14 +11604,6 @@ class AuroCalendarCell extends LitElement {
11694
11604
  type: Boolean,
11695
11605
  reflect: true
11696
11606
  },
11697
- /**
11698
- * @deprecated Propagated from the legacy `auro-calendar.disabledDays`
11699
- * Unix-timestamp array. The cell honors it for backward compatibility
11700
- * (see the divergence-check fallback inside `isBlackout`), but
11701
- * consumers should migrate to `auro-datepicker.blackoutDates`
11702
- * (YYYY-MM-DD ISO strings). The calendar emits a one-time
11703
- * deprecation warning the first time a non-empty value is observed.
11704
- */
11705
11607
  disabledDays: { type: Array },
11706
11608
  isCurrentDate: { type: Boolean },
11707
11609
  locale: { type: String },
@@ -11747,8 +11649,8 @@ class AuroCalendarCell extends LitElement {
11747
11649
  const parsedDateTo = parseInt(dateTo, 10);
11748
11650
 
11749
11651
  if (day) {
11750
- const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
11751
- const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
11652
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
11653
+ const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
11752
11654
 
11753
11655
  if (day.date === departTimestamp || day.date === returnTimestamp) {
11754
11656
  this.selected = true;
@@ -11832,33 +11734,27 @@ class AuroCalendarCell extends LitElement {
11832
11734
  return false;
11833
11735
  }
11834
11736
 
11835
- // Delegate to the calendar's memoized blackout Set for O(1) lookup
11836
- // (instead of rescanning disabledDays + blackoutDates per render). The
11837
- // Set is rebuilt only when either source array reference changes — see
11838
- // auro-calendar.js#_getBlackoutSet.
11839
- if (this.calendar && typeof this.calendar._getBlackoutSet === 'function') {
11840
- if (this.calendar._getBlackoutSet().has(this.day.date)) {
11737
+ // Check against disabledDays timestamps (legacy path)
11738
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
11739
+ (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
11740
+ return true;
11741
+ }
11742
+
11743
+ // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
11744
+ const blackoutDates = this.datepicker?.blackoutDates;
11745
+
11746
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
11747
+ const date = new Date(this.day.date * 1000);
11748
+ const yyyy = date.getFullYear();
11749
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
11750
+ const dd = String(date.getDate()).padStart(2, '0');
11751
+ const cellDate = `${yyyy}-${mm}-${dd}`;
11752
+ if (blackoutDates.includes(cellDate)) {
11841
11753
  return true;
11842
11754
  }
11843
- // If the cell's local disabledDays diverged from the calendar's (a
11844
- // consumer or test mutated cell.disabledDays directly), the Set does
11845
- // not reflect that addition — fall through to the per-cell scan only
11846
- // when the reference no longer matches. Production data flow keeps
11847
- // these identical, so this branch stays cold. Guarded with
11848
- // Array.isArray to match `_getBlackoutSet`'s contract: non-array
11849
- // values are treated as empty rather than crashing on `.findIndex`.
11850
- if (Array.isArray(this.disabledDays) && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
11851
- if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
11852
- return true;
11853
- }
11854
- }
11855
- return false;
11856
11755
  }
11857
11756
 
11858
- // Pre-firstUpdated fallback — the cell may render once before the
11859
- // ancestor calendar is wired up. Routes through the shared
11860
- // blackoutUtils helper so the parsing rules stay in one place.
11861
- return isBlackoutTimestamp(this.day.date, this.disabledDays, this.datepicker?.blackoutDates);
11757
+ return false;
11862
11758
  }
11863
11759
 
11864
11760
  /**
@@ -11964,12 +11860,12 @@ class AuroCalendarCell extends LitElement {
11964
11860
  const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
11965
11861
  if (!Number.isFinite(parsedDateFrom)) return null;
11966
11862
 
11967
- const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
11863
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
11968
11864
  const dayDate = this.day.date;
11969
11865
 
11970
11866
  const parsedDateTo = Number.parseInt(this.dateTo, 10);
11971
11867
  const hasDateTo = Number.isFinite(parsedDateTo);
11972
- const returnTimestamp = hasDateTo ? new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
11868
+ const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
11973
11869
 
11974
11870
  if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
11975
11871
 
@@ -11979,9 +11875,7 @@ class AuroCalendarCell extends LitElement {
11979
11875
 
11980
11876
  if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
11981
11877
 
11982
- if (!hasDateTo && dayDate > departTimestamp) return this.datepicker.rangeLabelEndPreview || 'previewing range end';
11983
-
11984
- // After end date when both dateFrom and dateTo are set.
11878
+ // After start date, no end date yet, or after end date
11985
11879
  return this.datepicker.rangeLabelAfterRange || 'after range';
11986
11880
  }
11987
11881
 
@@ -11994,7 +11888,7 @@ class AuroCalendarCell extends LitElement {
11994
11888
  */
11995
11889
  isDepartDate(day, dateFrom) {
11996
11890
  const parsedDateFrom = parseInt(dateFrom, 10);
11997
- const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
11891
+ const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
11998
11892
 
11999
11893
  return this.selected && day.date === departTimestamp;
12000
11894
  }
@@ -12009,7 +11903,7 @@ class AuroCalendarCell extends LitElement {
12009
11903
  */
12010
11904
  isReturnDate(day, dateFrom, dateTo) {
12011
11905
  const parsedDateTo = parseInt(dateTo, 10);
12012
- const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
11906
+ const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
12013
11907
 
12014
11908
  return this.selected && day.date === returnTimestamp && dateFrom;
12015
11909
  }
@@ -12173,7 +12067,6 @@ class AuroCalendarCell extends LitElement {
12173
12067
  setTimeout(() => this.firstUpdated(), 0);
12174
12068
  return;
12175
12069
  }
12176
- this.calendar = calendar;
12177
12070
  this.datepicker = calendar.datepicker;
12178
12071
  this._slotContentHandler = () => {
12179
12072
  this.handleSlotContent();
@@ -12231,13 +12124,12 @@ class AuroCalendarCell extends LitElement {
12231
12124
  this._cachedButton = this.shadowRoot.querySelector('button.day');
12232
12125
  });
12233
12126
 
12234
- // Keep the host's gridcell aria attributes in sync with the day data.
12127
+ // Update host-level aria attributes for ariaActiveDescendantElement.
12235
12128
  this.updateHostAria();
12236
12129
  }
12237
12130
 
12238
12131
  // Update host aria when selection changes (aria-selected, range labels)
12239
- // or when isCurrentDate flips (aria-current).
12240
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
12132
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
12241
12133
  this.updateHostAria();
12242
12134
  }
12243
12135
 
@@ -12248,8 +12140,8 @@ class AuroCalendarCell extends LitElement {
12248
12140
  }
12249
12141
 
12250
12142
  /**
12251
- * Sets host-level ARIA so each cell exposes its date, selection state,
12252
- * and blackout status to assistive tech browsing the month grid.
12143
+ * Updates ARIA attributes on the host element so that
12144
+ * ariaActiveDescendantElement can expose cell info to the SR.
12253
12145
  * @private
12254
12146
  * @returns {void}
12255
12147
  */
@@ -12258,27 +12150,16 @@ class AuroCalendarCell extends LitElement {
12258
12150
 
12259
12151
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12260
12152
  if (outOfRange) {
12261
- // Strip every aria attribute the in-range branch may have set on a
12262
- // previous render — if a cell flips from in-range to out-of-range
12263
- // (calendar shifts months, minDate/maxDate change, etc.).
12264
12153
  this.removeAttribute('role');
12265
12154
  this.removeAttribute('aria-label');
12266
- this.removeAttribute('aria-current');
12267
- this.removeAttribute('aria-selected');
12268
- this.removeAttribute('aria-disabled');
12269
12155
  return;
12270
12156
  }
12271
12157
 
12158
+ // The host acts as the gridcell for ariaActiveDescendantElement.
12272
12159
  this.setAttribute('role', 'gridcell');
12273
12160
  this.setAttribute('aria-label', this.getAriaLabel());
12274
12161
  this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
12275
12162
 
12276
- if (this.isCurrentDate) {
12277
- this.setAttribute('aria-current', 'date');
12278
- } else {
12279
- this.removeAttribute('aria-current');
12280
- }
12281
-
12282
12163
  if (this.isBlackout()) {
12283
12164
  this.setAttribute('aria-disabled', 'true');
12284
12165
  } else {
@@ -12293,7 +12174,7 @@ class AuroCalendarCell extends LitElement {
12293
12174
  * @returns {void}
12294
12175
  */
12295
12176
  focusButton() {
12296
- const button = this._cachedButton || this.shadowRoot.querySelector('button:not([disabled])');
12177
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
12297
12178
  if (button) {
12298
12179
  button.focus({ focusVisible: true });
12299
12180
  }
@@ -12301,9 +12182,7 @@ class AuroCalendarCell extends LitElement {
12301
12182
 
12302
12183
  /**
12303
12184
  * Imperatively marks this cell as active without triggering a Lit re-render.
12304
- * Buttons stay tabindex="-1" because DOM focus stays on the grid wrapper
12305
- * arrow keys move the active cell imperatively and the live region carries
12306
- * the SR announcement.
12185
+ * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
12307
12186
  * @returns {void}
12308
12187
  */
12309
12188
  setActive() {
@@ -12345,13 +12224,10 @@ class AuroCalendarCell extends LitElement {
12345
12224
  if (!btn || !this.day) return;
12346
12225
 
12347
12226
  const dayDate = this.day.date;
12348
- const departTimestamp = new Date(dateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
12227
+ const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
12349
12228
  const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
12350
- // `>=` so hovering the depart cell itself (a same-day round-trip
12351
- // preview) still surfaces a visual cue: the depart cell receives both
12352
- // rangeDepartDate and lastHoveredDate.
12353
- const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
12354
- const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
12229
+ const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
12230
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
12355
12231
 
12356
12232
  btn.classList.toggle('inRange', isInRange);
12357
12233
  btn.classList.toggle('lastHoveredDate', isLastHovered);
@@ -12409,6 +12285,7 @@ class AuroCalendarCell extends LitElement {
12409
12285
  @focus="${outOfRange ? undefined : this.handleFocus}"
12410
12286
  class="${classMap(buttonClasses)}"
12411
12287
  ?disabled="${outOfRange}"
12288
+ aria-hidden="${outOfRange ? 'true' : nothing}"
12412
12289
  tabindex="-1">
12413
12290
  <div class="buttonWrapper" aria-hidden="true">
12414
12291
  <div class="currentDayMarker">${this.day?.title || nothing}</div>
@@ -13514,7 +13391,7 @@ class AuroBibtemplate extends LitElement {
13514
13391
  }
13515
13392
  }
13516
13393
 
13517
- var formkitVersion$2 = '202606252324';
13394
+ var formkitVersion$2 = '202606252142';
13518
13395
 
13519
13396
  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=literal`${unsafeStatic(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$1 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1=css`: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}
13520
13397
  `,u$4=css`.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}}
@@ -13637,11 +13514,7 @@ class AuroCalendar extends RangeDatepicker {
13637
13514
  this.calendarRangeMonths = null;
13638
13515
 
13639
13516
  /**
13640
- * @deprecated Use `auro-datepicker.blackoutDates` (an array of
13641
- * `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
13642
- * timestamps is still honored for backward compatibility but emits a
13643
- * one-time `console.debug` the first time a non-empty value is observed.
13644
- * Support will be removed in a future major release.
13517
+ * Legacy array of disabled-date timestamps.
13645
13518
  * @private
13646
13519
  */
13647
13520
  this.disabledDays = [];
@@ -13898,44 +13771,17 @@ class AuroCalendar extends RangeDatepicker {
13898
13771
  * @returns {void}
13899
13772
  */
13900
13773
  updateActiveCellForVisibleMonth() {
13901
- this._afterMonthRender(() => {
13902
- const newDate = this.computeActiveDate({ skipDateFrom: true });
13903
-
13904
- if (newDate !== null && newDate !== undefined) {
13905
- this.activeCellDate = newDate;
13906
- this.setActiveCell(this.activeCellDate);
13907
- }
13908
- });
13909
- }
13910
-
13911
- /**
13912
- * Schedules `callback` two animation frames out, giving the child
13913
- * `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
13914
- * a full render-and-paint cycle to settle before the callback reads or
13915
- * mutates DOM.
13916
- *
13917
- * Why two frames, not one:
13918
- * 1. Lit batches property updates and renders in a microtask, so frame N
13919
- * schedules the render but the new DOM may not be painted yet.
13920
- * 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
13921
- * which also lands a tick later. Reading buttons from frame N+1
13922
- * (after both renders + cache refresh have flushed) reliably hits the
13923
- * new month's cells.
13924
- *
13925
- * Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
13926
- * and then needs to inspect the freshly-rendered cells (cross-month
13927
- * keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
13928
- * Do NOT collapse to a single rAF — it intermittently lands before
13929
- * `_cachedButton` is refreshed, which silently breaks focus restoration
13930
- * and `setActiveCell` lookups.
13931
- * @private
13932
- * @param {() => void} callback - Runs once after the month re-render and
13933
- * the cells' button caches have refreshed.
13934
- * @returns {void}
13935
- */
13936
- _afterMonthRender(callback) {
13774
+ // Use double-rAF to ensure child month/cell components have fully
13775
+ // rendered and cached their button references before we set tabindex.
13937
13776
  requestAnimationFrame(() => {
13938
- requestAnimationFrame(callback);
13777
+ requestAnimationFrame(() => {
13778
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
13779
+
13780
+ if (newDate !== null && newDate !== undefined) {
13781
+ this.activeCellDate = newDate;
13782
+ this.setActiveCell(this.activeCellDate);
13783
+ }
13784
+ });
13939
13785
  });
13940
13786
  }
13941
13787
 
@@ -14053,47 +13899,6 @@ class AuroCalendar extends RangeDatepicker {
14053
13899
  return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
14054
13900
  }
14055
13901
 
14056
- /**
14057
- * Picks the focusable cell whose date is closest to targetTs. Used as a
14058
- * fallback after a month-boundary nav when the exact target date isn't
14059
- * focusable — typically because the month re-render lagged or the date
14060
- * was filtered out by isOutOfRange. When two cells are equidistant, the
14061
- * navigation direction breaks the tie so the user moves the way they
14062
- * pressed (forward → later cell, backward → earlier cell).
14063
- * @private
14064
- * @param {Array} cells - Focusable cells from getAllFocusableCells.
14065
- * @param {Number} targetTs - Desired Unix timestamp (seconds).
14066
- * @param {'next'|'prev'} direction - Navigation direction.
14067
- * @returns {Object|null} The nearest cell, or null when cells is empty.
14068
- */
14069
- pickNearestCell(cells, targetTs, direction) {
14070
- if (!cells.length) {
14071
- return null;
14072
- }
14073
- const forward = direction === 'next';
14074
- let best = null;
14075
- let bestDelta = Infinity;
14076
- cells.forEach((cell) => {
14077
- if (!cell.day) {
14078
- return;
14079
- }
14080
- const distance = Math.abs(cell.day.date - targetTs);
14081
- if (distance < bestDelta) {
14082
- best = cell;
14083
- bestDelta = distance;
14084
- return;
14085
- }
14086
- if (distance === bestDelta && best) {
14087
- if (forward && cell.day.date > best.day.date) {
14088
- best = cell;
14089
- } else if (!forward && cell.day.date < best.day.date) {
14090
- best = cell;
14091
- }
14092
- }
14093
- });
14094
- return best;
14095
- }
14096
-
14097
13902
  /**
14098
13903
  * Gets all focusable cells across all rendered months.
14099
13904
  * @private
@@ -14110,9 +13915,9 @@ class AuroCalendar extends RangeDatepicker {
14110
13915
 
14111
13916
  /**
14112
13917
  * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
14113
- * Uses imperative DOM manipulation — no Lit re-render triggered. DOM focus
14114
- * stays on the grid wrapper; the live region (see getOrCreateLiveRegion)
14115
- * is what announces the active cell to assistive tech.
13918
+ * Uses imperative DOM manipulation — no Lit re-render triggered.
13919
+ * Also updates ariaActiveDescendantElement on the grid wrapper so
13920
+ * screen readers announce the active cell without moving DOM focus.
14116
13921
  * @param {Number} date - Unix timestamp of the cell to activate.
14117
13922
  * @returns {void}
14118
13923
  */
@@ -14193,65 +13998,6 @@ class AuroCalendar extends RangeDatepicker {
14193
13998
  this.clearRangePreview();
14194
13999
  }
14195
14000
 
14196
- /**
14197
- * Returns a memoized Set of blackout timestamps (seconds) drawn from both
14198
- * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
14199
- * The cache invalidates when either source array's reference changes, which
14200
- * matches Lit's own reactive identity semantics for array properties.
14201
- * @private
14202
- * @returns {Set<Number>}
14203
- */
14204
- _getBlackoutSet() {
14205
- // Normalize non-array values to a stable `null` sentinel rather than a
14206
- // fresh `[]` per call — otherwise the reference-identity cache key
14207
- // (`_cachedBlackoutDisabledDays === disabledDays`) never matches on
14208
- // subsequent calls and the Set rebuilds every time. `buildBlackoutSet`
14209
- // already treats null/non-array as "no legacy disabledDays" via its
14210
- // own Array.isArray gate.
14211
- const disabledDays = Array.isArray(this.disabledDays) ? this.disabledDays : null;
14212
- const blackoutDates = this.datepicker?.blackoutDates;
14213
- if (this._blackoutSet &&
14214
- this._cachedBlackoutDisabledDays === disabledDays &&
14215
- this._cachedBlackoutDates === blackoutDates) {
14216
- return this._blackoutSet;
14217
- }
14218
-
14219
- if (disabledDays && disabledDays.length > 0) {
14220
- this._warnDisabledDaysDeprecated();
14221
- }
14222
-
14223
- this._blackoutSet = buildBlackoutSet(disabledDays, blackoutDates);
14224
- this._cachedBlackoutDisabledDays = disabledDays;
14225
- this._cachedBlackoutDates = blackoutDates;
14226
- return this._blackoutSet;
14227
- }
14228
-
14229
- /**
14230
- * Per-class flag that gates the `disabledDays` deprecation warning so it
14231
- * fires exactly once per page no matter how many calendars or rebuild
14232
- * cycles encounter the legacy array.
14233
- * @private
14234
- */
14235
- static _warnedDisabledDaysDeprecation = false;
14236
-
14237
- /**
14238
- * One-time `console.debug` directing consumers from the legacy
14239
- * `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
14240
- * the first time `_getBlackoutSet` rebuilds from a non-empty
14241
- * `disabledDays`; subsequent calls (on this or any other AuroCalendar
14242
- * instance on the page) are silent.
14243
- * @private
14244
- * @returns {void}
14245
- */
14246
- _warnDisabledDaysDeprecated() {
14247
- if (AuroCalendar._warnedDisabledDaysDeprecation) {
14248
- return;
14249
- }
14250
- AuroCalendar._warnedDisabledDaysDeprecation = true;
14251
- // eslint-disable-next-line no-console
14252
- 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.');
14253
- }
14254
-
14255
14001
  /**
14256
14002
  * Computes the initial active date from data properties alone — no DOM required.
14257
14003
  * Priority:
@@ -14296,10 +14042,21 @@ class AuroCalendar extends RangeDatepicker {
14296
14042
  const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
14297
14043
  const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
14298
14044
 
14299
- // Build a Set of blackout timestamps for O(1) lookup. Memoized by the
14300
- // identity of the source arrays so rapid month nav doesn't rebuild the
14301
- // Set (and re-parse every ISO string) on every keypress.
14302
- const blackoutSet = this._getBlackoutSet();
14045
+ // Build a Set of blackout timestamps for O(1) lookup.
14046
+ const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
14047
+
14048
+ // Also include ISO-format blackoutDates from the datepicker if available.
14049
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
14050
+ const isoBlackouts = this.datepicker?.blackoutDates;
14051
+ if (Array.isArray(isoBlackouts)) {
14052
+ for (const isoStr of isoBlackouts) {
14053
+ const parts = isoStr.split('-');
14054
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
14055
+ if (Number.isFinite(ts)) {
14056
+ blackoutSet.add(ts);
14057
+ }
14058
+ }
14059
+ }
14303
14060
 
14304
14061
  /**
14305
14062
  * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
@@ -14495,8 +14252,8 @@ class AuroCalendar extends RangeDatepicker {
14495
14252
 
14496
14253
  /**
14497
14254
  * Handles arrow key navigation on the calendar grid wrapper.
14498
- * Focus stays on the grid wrapper; only the visual active-cell indicator
14499
- * changes. The live region announces the new active cell.
14255
+ * Focus stays on the grid wrapper; only ariaActiveDescendantElement
14256
+ * and the visual active-cell indicator change.
14500
14257
  * @private
14501
14258
  * @param {KeyboardEvent} event - The keyboard event.
14502
14259
  * @returns {void}
@@ -14561,21 +14318,21 @@ class AuroCalendar extends RangeDatepicker {
14561
14318
  } else {
14562
14319
  this.handlePrevMonth({ skipActiveUpdate: true });
14563
14320
  }
14564
- this._afterMonthRender(() => {
14565
- const cells = this.getAllFocusableCells();
14566
- const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
14567
- if (target) {
14568
- this.setActiveCell(target.day.date);
14569
- this.handleCellFocused({ detail: { date: target.day.date } });
14570
- } else {
14571
- const fallback = this.pickNearestCell(cells, targetTs, navDir);
14572
- if (fallback) {
14321
+ requestAnimationFrame(() => {
14322
+ requestAnimationFrame(() => {
14323
+ const cells = this.getAllFocusableCells();
14324
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
14325
+ if (target) {
14326
+ this.setActiveCell(target.day.date);
14327
+ this.handleCellFocused({ detail: { date: target.day.date } });
14328
+ } else if (cells.length > 0) {
14329
+ const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
14573
14330
  this.setActiveCell(fallback.day.date);
14574
14331
  this.handleCellFocused({ detail: { date: fallback.day.date } });
14575
14332
  }
14576
- }
14577
- // Re-focus grid wrapper after month change re-render
14578
- this.focusActiveCell();
14333
+ // Re-focus grid wrapper after month change re-render
14334
+ this.focusActiveCell();
14335
+ });
14579
14336
  });
14580
14337
  }
14581
14338
  }
@@ -14601,20 +14358,26 @@ class AuroCalendar extends RangeDatepicker {
14601
14358
  } else {
14602
14359
  this.handlePrevMonth({ skipActiveUpdate: true });
14603
14360
  }
14604
- this._afterMonthRender(() => {
14605
- const cells = this.getAllFocusableCells();
14606
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14607
- if (target) {
14608
- this.setActiveCell(target.day.date);
14609
- this.handleCellFocused({ detail: { date: target.day.date } });
14610
- } else {
14611
- const nearest = this.pickNearestCell(cells, targetDate, navDirection);
14612
- if (nearest) {
14361
+ requestAnimationFrame(() => {
14362
+ requestAnimationFrame(() => {
14363
+ const cells = this.getAllFocusableCells();
14364
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14365
+ if (target) {
14366
+ this.setActiveCell(target.day.date);
14367
+ this.handleCellFocused({ detail: { date: target.day.date } });
14368
+ } else if (cells.length > 0) {
14369
+ let nearest = null;
14370
+
14371
+ if (navDirection === 'next') {
14372
+ [nearest] = cells;
14373
+ } else {
14374
+ nearest = cells[cells.length - 1];
14375
+ }
14613
14376
  this.setActiveCell(nearest.day.date);
14614
14377
  this.handleCellFocused({ detail: { date: nearest.day.date } });
14615
14378
  }
14616
- }
14617
- this.focusActiveCell();
14379
+ this.focusActiveCell();
14380
+ });
14618
14381
  });
14619
14382
  }
14620
14383
  }
@@ -14664,22 +14427,19 @@ class AuroCalendar extends RangeDatepicker {
14664
14427
  }
14665
14428
 
14666
14429
  this.handleNextMonth({ skipActiveUpdate: true });
14667
- this._afterMonthRender(() => {
14668
- const cells = this.getAllFocusableCells();
14669
- const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
14670
- if (target) {
14671
- this.setActiveCell(target.day.date);
14672
- this.focusActiveCell();
14673
- } else {
14674
- // Same nearest-by-date fallback handleGridKeyDown uses — direct
14675
- // `cells[length - 1]` would land on the end of the new month,
14676
- // far from the user's intended `nextTs`.
14677
- const fallback = this.pickNearestCell(cells, nextTs, 'next');
14678
- if (fallback) {
14679
- this.setActiveCell(fallback.day.date);
14430
+ requestAnimationFrame(() => {
14431
+ requestAnimationFrame(() => {
14432
+ const cells = this.getAllFocusableCells();
14433
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
14434
+ if (target) {
14435
+ this.setActiveCell(target.day.date);
14436
+ this.focusActiveCell();
14437
+ } else if (cells.length > 0) {
14438
+ // Fallback: first cell of the last rendered month
14439
+ this.setActiveCell(cells[cells.length - 1].day.date);
14680
14440
  this.focusActiveCell();
14681
14441
  }
14682
- }
14442
+ });
14683
14443
  });
14684
14444
  } else if (direction === 'prev' && this.showPrevMonthBtn) {
14685
14445
  // Navigate to previous month and focus the computed previous date.
@@ -14693,22 +14453,19 @@ class AuroCalendar extends RangeDatepicker {
14693
14453
  }
14694
14454
 
14695
14455
  this.handlePrevMonth({ skipActiveUpdate: true });
14696
- this._afterMonthRender(() => {
14697
- const cells = this.getAllFocusableCells();
14698
- const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
14699
- if (target) {
14700
- this.setActiveCell(target.day.date);
14701
- this.focusActiveCell();
14702
- } else {
14703
- // Same nearest-by-date fallback handleGridKeyDown uses — direct
14704
- // `cells[0]` would land on the start of the previous month, far
14705
- // from the user's intended `prevTs`.
14706
- const fallback = this.pickNearestCell(cells, prevTs, 'prev');
14707
- if (fallback) {
14708
- this.setActiveCell(fallback.day.date);
14456
+ requestAnimationFrame(() => {
14457
+ requestAnimationFrame(() => {
14458
+ const cells = this.getAllFocusableCells();
14459
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
14460
+ if (target) {
14461
+ this.setActiveCell(target.day.date);
14462
+ this.focusActiveCell();
14463
+ } else if (cells.length > 0) {
14464
+ // Fallback: last cell of the first rendered month
14465
+ this.setActiveCell(cells[0].day.date);
14709
14466
  this.focusActiveCell();
14710
14467
  }
14711
- }
14468
+ });
14712
14469
  });
14713
14470
  }
14714
14471
  } else if (key === 'ArrowDown' || key === 'ArrowUp') {
@@ -14736,22 +14493,20 @@ class AuroCalendar extends RangeDatepicker {
14736
14493
  } else {
14737
14494
  this.handlePrevMonth({ skipActiveUpdate: true });
14738
14495
  }
14739
- this._afterMonthRender(() => {
14740
- const cells = this.getAllFocusableCells();
14741
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14742
- if (target) {
14743
- this.setActiveCell(target.day.date);
14744
- this.focusActiveCell();
14745
- } else {
14746
- // Same nearest-by-date fallback handleGridKeyDown uses — the
14747
- // old direction-based `cells[0]`/`cells[length-1]` clamp
14748
- // could land 25+ days from the intended target.
14749
- const nearest = this.pickNearestCell(cells, targetDate, navDirection);
14750
- if (nearest) {
14496
+ requestAnimationFrame(() => {
14497
+ requestAnimationFrame(() => {
14498
+ const cells = this.getAllFocusableCells();
14499
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
14500
+ if (target) {
14501
+ this.setActiveCell(target.day.date);
14502
+ this.focusActiveCell();
14503
+ } else if (cells.length > 0) {
14504
+ // Clamp to nearest focusable cell
14505
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
14751
14506
  this.setActiveCell(nearest.day.date);
14752
14507
  this.focusActiveCell();
14753
14508
  }
14754
- }
14509
+ });
14755
14510
  });
14756
14511
  }
14757
14512
  }
@@ -14790,9 +14545,8 @@ class AuroCalendar extends RangeDatepicker {
14790
14545
  return;
14791
14546
  }
14792
14547
 
14793
- // DOM focus stays on the grid wrapper while arrow keys move the active
14794
- // cell, so cell buttons never receive native focus. The debounced live
14795
- // region carries the full-context announcement instead.
14548
+ // With aria-activedescendant, the button no longer receives native focus,
14549
+ // so we use the debounced live region for the full context announcement.
14796
14550
  const announcement = this.buildFocusAnnouncement(date);
14797
14551
  this.announceFocusDebounced(announcement);
14798
14552
 
@@ -14862,10 +14616,10 @@ class AuroCalendar extends RangeDatepicker {
14862
14616
  return null;
14863
14617
  }
14864
14618
 
14865
- const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
14619
+ const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
14866
14620
  const parsedTo = Number.parseInt(this.dateTo, 10);
14867
14621
  const hasTo = Number.isFinite(parsedTo);
14868
- const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
14622
+ const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
14869
14623
 
14870
14624
  if (date === departTs) {
14871
14625
  return this.datepicker.rangeLabelStart || 'range start';
@@ -14879,22 +14633,36 @@ class AuroCalendar extends RangeDatepicker {
14879
14633
  if (hasTo && date > departTs && date < returnTs) {
14880
14634
  return this.datepicker.rangeLabelInRange || 'in range';
14881
14635
  }
14882
- if (!hasTo && date > departTs) {
14883
- return this.datepicker.rangeLabelEndPreview || 'previewing range end';
14884
- }
14885
14636
  return this.datepicker.rangeLabelAfterRange || 'after range';
14886
14637
  }
14887
14638
 
14888
14639
  /**
14889
- * Checks whether a given date is a blackout date. Delegates to the
14890
- * memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
14891
- * legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
14640
+ * Checks whether a given date is a blackout date.
14892
14641
  * @private
14893
14642
  * @param {Number} dateTs - Unix timestamp (seconds).
14894
14643
  * @returns {Boolean} True if the date is blacked out.
14895
14644
  */
14896
14645
  isDateBlackout(dateTs) {
14897
- return this._getBlackoutSet().has(dateTs);
14646
+ // Check legacy disabledDays.
14647
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
14648
+ if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
14649
+ return true;
14650
+ }
14651
+ }
14652
+
14653
+ // Check ISO blackoutDates.
14654
+ const blackoutDates = this.datepicker?.blackoutDates;
14655
+ if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
14656
+ const date = new Date(dateTs * 1000);
14657
+ const yyyy = date.getFullYear();
14658
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
14659
+ const dd = String(date.getDate()).padStart(2, '0');
14660
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
14661
+ return true;
14662
+ }
14663
+ }
14664
+
14665
+ return false;
14898
14666
  }
14899
14667
 
14900
14668
  /**
@@ -15061,34 +14829,9 @@ class AuroCalendar extends RangeDatepicker {
15061
14829
  // the last one.
15062
14830
  if (this._announceRafId) {
15063
14831
  cancelAnimationFrame(this._announceRafId);
15064
- this._announceRafId = null;
15065
14832
  }
15066
- this._deliverAnnouncement(dateStr, 0);
15067
- }
15068
-
15069
- /**
15070
- * Writes `dateStr` to the live region. If the dropdown's dialog hasn't
15071
- * mounted yet (so getOrCreateLiveRegion can't attach), retries on the
15072
- * next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
15073
- * dropping the announcement. The retry uses the same `_announceRafId`
15074
- * the double-rAF below uses, so a newer announceSelection call (or
15075
- * disconnectedCallback) cancels any in-flight retry.
15076
- * @private
15077
- * @param {String} dateStr - The localized date string to announce.
15078
- * @param {Number} attempts - Number of prior retry attempts.
15079
- * @returns {void}
15080
- */
15081
- _deliverAnnouncement(dateStr, attempts) {
15082
14833
  const liveRegion = this.getOrCreateLiveRegion();
15083
14834
  if (!liveRegion) {
15084
- const MAX_LIVE_REGION_RETRIES = 10;
15085
- if (attempts < MAX_LIVE_REGION_RETRIES) {
15086
- this._announceRafId = requestAnimationFrame(() => {
15087
- this._deliverAnnouncement(dateStr, attempts + 1);
15088
- });
15089
- } else {
15090
- this._announceRafId = null;
15091
- }
15092
14835
  return;
15093
14836
  }
15094
14837
 
@@ -15274,7 +15017,7 @@ class AuroCalendar extends RangeDatepicker {
15274
15017
  </button>
15275
15018
  ` : undefined}
15276
15019
  </div>
15277
- <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}">
15020
+ <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}">
15278
15021
  ${this.renderAllCalendars()}
15279
15022
  </div>
15280
15023
  </div>
@@ -19159,7 +18902,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
19159
18902
  }
19160
18903
  };
19161
18904
 
19162
- var formkitVersion$1 = '202606252324';
18905
+ var formkitVersion$1 = '202606252142';
19163
18906
 
19164
18907
  let AuroElement$2 = class AuroElement extends LitElement {
19165
18908
  static get properties() {
@@ -20431,6 +20174,7 @@ class AuroDropdown extends AuroElement$2 {
20431
20174
  role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
20432
20175
  aria-expanded="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
20433
20176
  aria-controls="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
20177
+ aria-haspopup="${ifDefined(this.a11yRole === 'combobox' ? 'listbox' : undefined)}"
20434
20178
  aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
20435
20179
  aria-disabled="${ifDefined(this.disabled ? 'true' : undefined)}"
20436
20180
  @focusin="${this.handleFocusin}"
@@ -32752,7 +32496,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
32752
32496
  }
32753
32497
  };
32754
32498
 
32755
- var formkitVersion = '202606252324';
32499
+ var formkitVersion = '202606252142';
32756
32500
 
32757
32501
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
32758
32502
  // See LICENSE in the project root for license information.
@@ -34229,7 +33973,6 @@ class AuroDatePicker extends AuroElement {
34229
33973
  this.rangeLabelBeforeRange = 'before range';
34230
33974
  this.rangeLabelInRange = 'in range';
34231
33975
  this.rangeLabelAfterRange = 'after range';
34232
- this.rangeLabelEndPreview = 'previewing range end';
34233
33976
  this.blackoutDates = [];
34234
33977
  this.blackoutLabel = 'unavailable';
34235
33978
  this.navLabelPrevMonth = 'Previous month';
@@ -34329,22 +34072,6 @@ class AuroDatePicker extends AuroElement {
34329
34072
  */
34330
34073
  this.handleClick = this.handleClick.bind(this);
34331
34074
 
34332
- /**
34333
- * Single AbortController shared by every listener registered in the
34334
- * configure* methods. Lets disconnectedCallback tear all of them down
34335
- * with one abort() call.
34336
- *
34337
- * The genuine leak risk is the listeners attached to children that can
34338
- * outlive the host if they get reparented — `this.dropdown`,
34339
- * `this.calendar`, and the inputs inside the dropdown's slot.
34340
- * Listeners attached to `this` (e.g. focusin/focusout on the host)
34341
- * form a self-contained reference graph that the GC can collect with
34342
- * the host anyway, but they share the same signal so the cleanup
34343
- * pattern stays uniform across all configure* sites.
34344
- * @private
34345
- */
34346
- this._listenerAbortController = new AbortController();
34347
-
34348
34075
  /**
34349
34076
  * @private
34350
34077
  */
@@ -34393,7 +34120,6 @@ class AuroDatePicker extends AuroElement {
34393
34120
 
34394
34121
  /**
34395
34122
  * Label announced for blackout (disabled but in-range) date cells.
34396
- * @default 'unavailable'
34397
34123
  */
34398
34124
  blackoutLabel: {
34399
34125
  type: String,
@@ -34410,7 +34136,6 @@ class AuroDatePicker extends AuroElement {
34410
34136
 
34411
34137
  /**
34412
34138
  * Accessible label for the calendar grid containing the days of the month.
34413
- * @default 'Calendar days of the month'
34414
34139
  */
34415
34140
  calendarGridLabel: {
34416
34141
  type: String,
@@ -34573,7 +34298,6 @@ class AuroDatePicker extends AuroElement {
34573
34298
 
34574
34299
  /**
34575
34300
  * Accessible label for the next month navigation button.
34576
- * @default 'Next month'
34577
34301
  */
34578
34302
  navLabelNextMonth: {
34579
34303
  type: String,
@@ -34582,7 +34306,6 @@ class AuroDatePicker extends AuroElement {
34582
34306
 
34583
34307
  /**
34584
34308
  * Accessible label for the previous month navigation button.
34585
- * @default 'Previous month'
34586
34309
  */
34587
34310
  navLabelPrevMonth: {
34588
34311
  type: String,
@@ -34660,11 +34383,7 @@ class AuroDatePicker extends AuroElement {
34660
34383
  },
34661
34384
 
34662
34385
  /**
34663
- * Label announced for cells after a fully selected range (both
34664
- * `dateFrom` and `dateTo` are set). While a range is still being
34665
- * picked (`dateFrom` set, `dateTo` unset), focused cells past the
34666
- * start use `rangeLabelEndPreview` instead.
34667
- * @default 'after range'
34386
+ * Label announced for cells after the range (or after start when no end is selected).
34668
34387
  */
34669
34388
  rangeLabelAfterRange: {
34670
34389
  type: String,
@@ -34673,7 +34392,6 @@ class AuroDatePicker extends AuroElement {
34673
34392
 
34674
34393
  /**
34675
34394
  * Label announced for cells before the range start.
34676
- * @default 'before range'
34677
34395
  */
34678
34396
  rangeLabelBeforeRange: {
34679
34397
  type: String,
@@ -34682,27 +34400,14 @@ class AuroDatePicker extends AuroElement {
34682
34400
 
34683
34401
  /**
34684
34402
  * Label announced for the range end date cell.
34685
- * @default 'range end'
34686
34403
  */
34687
34404
  rangeLabelEnd: {
34688
34405
  type: String,
34689
34406
  reflect: true
34690
34407
  },
34691
34408
 
34692
- /**
34693
- * Label announced for the focused cell while previewing a range end
34694
- * (dateFrom set, dateTo not yet selected). Tells AT users that
34695
- * pressing Enter would commit this cell as the range end.
34696
- * @default 'previewing range end'
34697
- */
34698
- rangeLabelEndPreview: {
34699
- type: String,
34700
- reflect: true
34701
- },
34702
-
34703
34409
  /**
34704
34410
  * Label announced for cells within the selected range.
34705
- * @default 'in range'
34706
34411
  */
34707
34412
  rangeLabelInRange: {
34708
34413
  type: String,
@@ -34711,7 +34416,6 @@ class AuroDatePicker extends AuroElement {
34711
34416
 
34712
34417
  /**
34713
34418
  * Label announced for the range start date cell.
34714
- * @default 'range start'
34715
34419
  */
34716
34420
  rangeLabelStart: {
34717
34421
  type: String,
@@ -34719,7 +34423,7 @@ class AuroDatePicker extends AuroElement {
34719
34423
  },
34720
34424
 
34721
34425
  /**
34722
- * Dates that the user should have for reference as part of their decision-making when selecting a date.
34426
+ * Dates that the user should have for reference as part of their decision making when selecting a date.
34723
34427
  * This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
34724
34428
  */
34725
34429
  referenceDates: {
@@ -35076,26 +34780,10 @@ class AuroDatePicker extends AuroElement {
35076
34780
  // ─── Vendor calendar time conversions ─────────────────────────────────────
35077
34781
 
35078
34782
  /**
35079
- * Converts a Unix timestamp (seconds) from the vendored range-datepicker
35080
- * (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
35081
- *
35082
- * Timezone contract:
35083
- * - INPUT: `time` is assumed to be the seconds-since-epoch of **local
35084
- * midnight** for the intended calendar day. The vendor's Day constructor
35085
- * builds it via `date-fns format(date, 't')` from a locally-constructed
35086
- * Date, so this assumption currently holds end-to-end.
35087
- * - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
35088
- * getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
35089
- * string matches the local calendar day.
35090
- *
35091
- * If the vendor ever switches to emitting UTC-midnight timestamps, this
35092
- * conversion will silently shift the returned date by one day in zones
35093
- * west of UTC. Any vendor swap should re-verify this contract; the TZ
35094
- * regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
35095
- *
34783
+ * Converts a Unix timestamp (seconds) from the vendor calendar to an ISO date string.
35096
34784
  * @private
35097
- * @param {number} time - Unix timestamp (seconds), local midnight of the day.
35098
- * @returns {string} ISO date string (yyyy-mm-dd) reflecting the local calendar day.
34785
+ * @param {number} time - Unix timestamp in seconds.
34786
+ * @returns {string} ISO date string (yyyy-mm-dd).
35099
34787
  */
35100
34788
  convertWcTimeToDate(time) {
35101
34789
  return dateFormatter$1.toISOFormatString(new Date(time * 1000));
@@ -35197,8 +34885,8 @@ class AuroDatePicker extends AuroElement {
35197
34885
  }
35198
34886
  }
35199
34887
 
35200
- // Focus the calendar grid wrapper. The live region (announced just
35201
- // below) handles the SR announcement for the active cell.
34888
+ // Focus the calendar grid wrapper (aria-activedescendant handles
34889
+ // the SR announcement for the active cell).
35202
34890
  if (activeCell) {
35203
34891
  this.calendar.focusActiveCell();
35204
34892
 
@@ -35248,13 +34936,11 @@ class AuroDatePicker extends AuroElement {
35248
34936
  this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
35249
34937
  }
35250
34938
 
35251
- const { signal } = this._listenerAbortController;
35252
-
35253
34939
  this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
35254
34940
  if (!this.isPopoverVisible) {
35255
34941
  this.dropdown.show();
35256
34942
  }
35257
- }, { signal });
34943
+ });
35258
34944
 
35259
34945
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
35260
34946
  this.notifyDatepickerToggled();
@@ -35272,7 +34958,7 @@ class AuroDatePicker extends AuroElement {
35272
34958
  if (this.valueObject) {
35273
34959
  this.centralDate = this.value;
35274
34960
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
35275
- this.centralDate = dateFormatter$1.toISOFormatString(new Date());
34961
+ this.centralDate = new Date();
35276
34962
  }
35277
34963
  }
35278
34964
 
@@ -35352,7 +35038,7 @@ class AuroDatePicker extends AuroElement {
35352
35038
  this.forceScrollOnNextMobileCalendarRender = false;
35353
35039
  }, 0);
35354
35040
  }
35355
- }, { signal });
35041
+ });
35356
35042
 
35357
35043
  // Handle responsive strategy changes while the dropdown is open
35358
35044
  // (e.g. resizing from desktop → mobile or vice versa).
@@ -35399,7 +35085,7 @@ class AuroDatePicker extends AuroElement {
35399
35085
  });
35400
35086
  });
35401
35087
  }
35402
- }, { signal });
35088
+ });
35403
35089
  }
35404
35090
 
35405
35091
  /**
@@ -35412,8 +35098,6 @@ class AuroDatePicker extends AuroElement {
35412
35098
 
35413
35099
  this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
35414
35100
 
35415
- const { signal } = this._listenerAbortController;
35416
-
35417
35101
  this.inputList.forEach((input, index) => {
35418
35102
  input.addEventListener('input', (event) => {
35419
35103
  event.stopPropagation();
@@ -35425,7 +35109,7 @@ class AuroDatePicker extends AuroElement {
35425
35109
  }
35426
35110
 
35427
35111
  this.notifyValueChanged();
35428
- }, { signal });
35112
+ });
35429
35113
 
35430
35114
  input.addEventListener('auroFormElement-validated', (evt) => {
35431
35115
  // not to bubble up input's validated event.
@@ -35441,7 +35125,7 @@ class AuroDatePicker extends AuroElement {
35441
35125
  this.validity = evt.detail.validity;
35442
35126
  this.errorMessage = evt.detail.message;
35443
35127
  }
35444
- }, { signal });
35128
+ });
35445
35129
  });
35446
35130
  }
35447
35131
 
@@ -35455,32 +35139,19 @@ class AuroDatePicker extends AuroElement {
35455
35139
  this.calendar.datepicker = this;
35456
35140
  this.calendar.dropdown = this.dropdown;
35457
35141
 
35458
- const { signal } = this._listenerAbortController;
35459
-
35460
35142
  this.calendar.addEventListener('auroCalendar-dateSelected', () => {
35461
- // Compare the input's ISO value against the *converted* calendar
35462
- // timestamp (the vendor's `dateFrom`/`dateTo` are Unix-seconds
35463
- // strings — comparing the input ISO directly against them would
35464
- // never match, so the write would fire on every event and emit
35465
- // redundant input/change activity).
35466
- if (this.calendar.dateFrom !== undefined) {
35467
- const fromIso = this.convertWcTimeToDate(this.calendar.dateFrom);
35468
- if (this.inputList[0].value !== fromIso) {
35469
- this.inputList[0].value = fromIso;
35470
- }
35143
+ if (this.inputList[0].value !== this.calendar.dateFrom && this.calendar.dateFrom !== undefined) {
35144
+ this.inputList[0].value = this.convertWcTimeToDate(this.calendar.dateFrom);
35471
35145
  }
35472
35146
 
35473
- if (this.inputList[1] && this.calendar.dateTo) {
35474
- const toIso = this.convertWcTimeToDate(this.calendar.dateTo);
35475
- if (this.inputList[1].value !== toIso) {
35476
- this.inputList[1].value = toIso;
35477
- }
35147
+ if (this.inputList[1] && this.calendar.dateTo && this.inputList[1].value !== this.calendar.dateTo) {
35148
+ this.inputList[1].value = this.convertWcTimeToDate(this.calendar.dateTo);
35478
35149
  }
35479
- }, { signal });
35150
+ });
35480
35151
 
35481
35152
  this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
35482
35153
  this.dropdown.hide();
35483
- }, { signal });
35154
+ });
35484
35155
 
35485
35156
  this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
35486
35157
  const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
@@ -35490,7 +35161,7 @@ class AuroDatePicker extends AuroElement {
35490
35161
  }
35491
35162
 
35492
35163
  this.notifyMonthChanged(event);
35493
- }, { signal });
35164
+ });
35494
35165
  }
35495
35166
 
35496
35167
  /**
@@ -35499,17 +35170,10 @@ class AuroDatePicker extends AuroElement {
35499
35170
  * @returns {void}
35500
35171
  */
35501
35172
  configureDatepicker() {
35502
- // These listeners are on `this` (the host), so they would GC with the
35503
- // host even without the abort signal — see the leak rationale on
35504
- // `_listenerAbortController`. The signal is still passed for uniform
35505
- // cleanup semantics with the child-element listeners in the other
35506
- // configure* methods.
35507
- const { signal } = this._listenerAbortController;
35508
-
35509
35173
  this.addEventListener('focusin', () => {
35510
35174
  this.touched = true;
35511
35175
  this.hasFocus = true;
35512
- }, { signal });
35176
+ });
35513
35177
 
35514
35178
  this.addEventListener('focusout', () => {
35515
35179
  this.hasFocus = false;
@@ -35521,7 +35185,7 @@ class AuroDatePicker extends AuroElement {
35521
35185
  if (!this.matches(':focus-within')) {
35522
35186
  this.validate();
35523
35187
  }
35524
- }, { signal });
35188
+ });
35525
35189
 
35526
35190
  if (this.valueObject) {
35527
35191
  this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
@@ -35719,41 +35383,6 @@ class AuroDatePicker extends AuroElement {
35719
35383
  return this.validity !== undefined && this.validity !== 'valid';
35720
35384
  }
35721
35385
 
35722
- /**
35723
- * Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
35724
- * spans every datepicker instance on the page; lives on the class (not
35725
- * at module scope) so it stays an encapsulated implementation detail of
35726
- * this component and does not interfere with WCA's class-JSDoc
35727
- * attachment.
35728
- * @private
35729
- */
35730
- static _warnedInvalidLocales = new Set();
35731
-
35732
- /**
35733
- * Logs a one-time `console.debug` when an unsupported locale falls back to
35734
- * en-US. Deduped by the offending tag so noisy re-renders that resurface
35735
- * the same bad value stay quiet, but each new bad value still signals so
35736
- * consumers can spot the typo or missing tag.
35737
- * @private
35738
- * @param {string|undefined} badLocale - The locale value that failed.
35739
- * @returns {void}
35740
- */
35741
- _warnInvalidLocale(badLocale) {
35742
- // Stringify without coalescing — `String(undefined)` / `String(null)`
35743
- // surface the actual offending value in the log, instead of the
35744
- // ambiguous `Locale ""` that `String(badLocale ?? '')` would produce.
35745
- // Dedup still works correctly because each unique stringification
35746
- // becomes its own Set entry.
35747
- const key = String(badLocale);
35748
- const seen = AuroDatePicker._warnedInvalidLocales;
35749
- if (seen.has(key)) {
35750
- return;
35751
- }
35752
- seen.add(key);
35753
- // eslint-disable-next-line no-console
35754
- 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".`);
35755
- }
35756
-
35757
35386
  /**
35758
35387
  * Lifecycle method to check if the locale is valid.
35759
35388
  * @ignore
@@ -35764,15 +35393,10 @@ class AuroDatePicker extends AuroElement {
35764
35393
  if (changedProperties.has('locale')) {
35765
35394
  try {
35766
35395
  const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
35767
- if (supported.length > 0) {
35768
- this._validLocale = this.locale;
35769
- } else {
35770
- this._validLocale = 'en-US';
35771
- this._warnInvalidLocale(this.locale);
35772
- }
35396
+ this._validLocale = supported.length > 0 ? this.locale : 'en-US';
35773
35397
  } catch {
35398
+ console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
35774
35399
  this._validLocale = 'en-US';
35775
- this._warnInvalidLocale(this.locale);
35776
35400
  }
35777
35401
 
35778
35402
  const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
@@ -35854,6 +35478,8 @@ class AuroDatePicker extends AuroElement {
35854
35478
  // Skip centralDate update when user clicked a cell in range mode
35855
35479
  // to prevent the displayed months from shifting
35856
35480
  this.centralDate = this.value;
35481
+ //TODO: TEST THIS CHANGE
35482
+ // this.calendarRenderUtil.updateCentralDate(this, this.value);
35857
35483
  }
35858
35484
 
35859
35485
  this.setHasValue();
@@ -35913,6 +35539,8 @@ class AuroDatePicker extends AuroElement {
35913
35539
  // Skip centralDate update when user clicked a cell in range mode
35914
35540
  // to prevent the displayed months from shifting
35915
35541
  this.centralDate = this.valueEnd;
35542
+ // TODO: TEST THIS CHANGE
35543
+ // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
35916
35544
  }
35917
35545
 
35918
35546
  this.validate();
@@ -36054,7 +35682,7 @@ class AuroDatePicker extends AuroElement {
36054
35682
  * @returns {void}
36055
35683
  */
36056
35684
  configureClickHandler() {
36057
- this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
35685
+ this.addEventListener('click', this.handleClick);
36058
35686
  }
36059
35687
 
36060
35688
  firstUpdated() {
@@ -36062,15 +35690,6 @@ class AuroDatePicker extends AuroElement {
36062
35690
  // Add the tag name as an attribute if it is different than the component name
36063
35691
  this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
36064
35692
 
36065
- // If the element was disconnected before this first render finished,
36066
- // disconnectedCallback's microtask already aborted the controller. The
36067
- // connectedCallback reinit guard skips that case because `hasUpdated`
36068
- // is still false. Mint a fresh controller here so configure* registers
36069
- // listeners against a live signal.
36070
- if (this._listenerAbortController.signal.aborted) {
36071
- this._listenerAbortController = new AbortController();
36072
- }
36073
-
36074
35693
  this.configureDropdown();
36075
35694
  this.configureInput();
36076
35695
  this.configureCalendar();
@@ -36082,36 +35701,9 @@ class AuroDatePicker extends AuroElement {
36082
35701
  connectedCallback() {
36083
35702
  super.connectedCallback();
36084
35703
 
36085
- // True reconnect after `disconnectedCallback` aborted our controller:
36086
- // the existing signal is dead, so listeners registered against it
36087
- // would never fire. Create a fresh controller and re-run the
36088
- // configure* wiring (each method is idempotent — it just re-caches
36089
- // child refs and re-registers listeners against the new signal).
36090
- // `hasUpdated` gates this so the *first* connect (which precedes
36091
- // firstUpdated) still falls through to firstUpdated's initial wiring.
36092
- if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
36093
- this._listenerAbortController = new AbortController();
36094
- this.configureDropdown();
36095
- this.configureInput();
36096
- this.configureCalendar();
36097
- this.configureDatepicker();
36098
- this.configureClickHandler();
36099
- }
36100
-
36101
35704
  this.locale = this.domHandler.getLocale(this);
36102
35705
  }
36103
35706
 
36104
- disconnectedCallback() {
36105
- super.disconnectedCallback();
36106
- // Defer so that re-parenting (auro-drawer slotting it into a dialog,
36107
- // for example) does not abort listeners we still need after reconnect.
36108
- queueMicrotask(() => {
36109
- if (!this.isConnected) {
36110
- this._listenerAbortController.abort();
36111
- }
36112
- });
36113
- }
36114
-
36115
35707
  // layout render methods
36116
35708
  // ------------------------------------
36117
35709