@aurodesignsystem-dev/auro-formkit 0.0.0-pr1509.1 → 0.0.0-pr1510.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 (50) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +3 -3
  7. package/components/combobox/demo/getting-started.min.js +3 -3
  8. package/components/combobox/demo/index.min.js +3 -3
  9. package/components/combobox/dist/index.js +3 -3
  10. package/components/combobox/dist/registered.js +3 -3
  11. package/components/counter/demo/customize.min.js +2 -2
  12. package/components/counter/demo/index.min.js +2 -2
  13. package/components/counter/dist/index.js +2 -2
  14. package/components/counter/dist/registered.js +2 -2
  15. package/components/datepicker/demo/accessibility.md +2 -1
  16. package/components/datepicker/demo/api.md +63 -62
  17. package/components/datepicker/demo/customize.md +12 -1
  18. package/components/datepicker/demo/customize.min.js +455 -167
  19. package/components/datepicker/demo/index.min.js +455 -167
  20. package/components/datepicker/dist/index.js +455 -167
  21. package/components/datepicker/dist/registered.js +455 -167
  22. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +14 -3
  23. package/components/datepicker/dist/src/auro-calendar.d.ts +87 -5
  24. package/components/datepicker/dist/src/auro-datepicker.d.ts +73 -3
  25. package/components/dropdown/demo/customize.min.js +1 -1
  26. package/components/dropdown/demo/getting-started.min.js +1 -1
  27. package/components/dropdown/demo/index.min.js +1 -1
  28. package/components/dropdown/dist/index.js +1 -1
  29. package/components/dropdown/dist/registered.js +1 -1
  30. package/components/form/demo/customize.min.js +471 -183
  31. package/components/form/demo/getting-started.min.js +471 -183
  32. package/components/form/demo/index.min.js +471 -183
  33. package/components/form/demo/registerDemoDeps.min.js +471 -183
  34. package/components/input/demo/customize.min.js +1 -1
  35. package/components/input/demo/getting-started.min.js +1 -1
  36. package/components/input/demo/index.min.js +1 -1
  37. package/components/input/dist/index.js +1 -1
  38. package/components/input/dist/registered.js +1 -1
  39. package/components/radio/demo/customize.min.js +1 -1
  40. package/components/radio/demo/getting-started.min.js +1 -1
  41. package/components/radio/demo/index.min.js +1 -1
  42. package/components/radio/dist/index.js +1 -1
  43. package/components/radio/dist/registered.js +1 -1
  44. package/components/select/demo/customize.min.js +2 -2
  45. package/components/select/demo/getting-started.min.js +2 -2
  46. package/components/select/demo/index.min.js +2 -2
  47. package/components/select/dist/index.js +2 -2
  48. package/components/select/dist/registered.js +2 -2
  49. package/custom-elements.json +1868 -1696
  50. package/package.json +2 -1
@@ -6176,7 +6176,7 @@ function normalizeDates$3(context, ...dates) {
6176
6176
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
6177
6177
  * //=> Tue Sep 02 2014 00:00:00
6178
6178
  */
6179
- function startOfDay$4(date, options) {
6179
+ function startOfDay$3(date, options) {
6180
6180
  const _date = toDate$3(date, options?.in);
6181
6181
  _date.setHours(0, 0, 0, 0);
6182
6182
  return _date;
@@ -6224,8 +6224,8 @@ function differenceInCalendarDays$3(laterDate, earlierDate, options) {
6224
6224
  earlierDate,
6225
6225
  );
6226
6226
 
6227
- const laterStartOfDay = startOfDay$4(laterDate_);
6228
- const earlierStartOfDay = startOfDay$4(earlierDate_);
6227
+ const laterStartOfDay = startOfDay$3(laterDate_);
6228
+ const earlierStartOfDay = startOfDay$3(earlierDate_);
6229
6229
 
6230
6230
  const laterTimestamp =
6231
6231
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$3(laterStartOfDay);
@@ -13372,7 +13372,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$3 {
13372
13372
  }
13373
13373
  };
13374
13374
 
13375
- var formkitVersion$8 = '202606241801';
13375
+ var formkitVersion$8 = '202606251933';
13376
13376
 
13377
13377
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
13378
13378
  // See LICENSE in the project root for license information.
@@ -15456,7 +15456,7 @@ function normalizeDates$1(context, ...dates) {
15456
15456
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
15457
15457
  * //=> Tue Sep 02 2014 00:00:00
15458
15458
  */
15459
- function startOfDay$2(date, options) {
15459
+ function startOfDay$1(date, options) {
15460
15460
  const _date = toDate$1(date, options?.in);
15461
15461
  _date.setHours(0, 0, 0, 0);
15462
15462
  return _date;
@@ -15504,8 +15504,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
15504
15504
  earlierDate,
15505
15505
  );
15506
15506
 
15507
- const laterStartOfDay = startOfDay$2(laterDate_);
15508
- const earlierStartOfDay = startOfDay$2(earlierDate_);
15507
+ const laterStartOfDay = startOfDay$1(laterDate_);
15508
+ const earlierStartOfDay = startOfDay$1(earlierDate_);
15509
15509
 
15510
15510
  const laterTimestamp =
15511
15511
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
@@ -24962,8 +24962,8 @@ class RangeDatepickerCell extends i$3 {
24962
24962
  const parsedDateFrom = parseInt(dateFrom, 10);
24963
24963
  const parsedDateTo = parseInt(dateTo, 10);
24964
24964
  if (day) {
24965
- if (getTime(startOfDay$2(parsedDateTo * 1000)) / 1000 === day.date ||
24966
- getTime(startOfDay$2(parsedDateFrom * 1000)) / 1000 === day.date) {
24965
+ if (getTime(startOfDay$1(parsedDateTo * 1000)) / 1000 === day.date ||
24966
+ getTime(startOfDay$1(parsedDateFrom * 1000)) / 1000 === day.date) {
24967
24967
  this.selected = true;
24968
24968
  }
24969
24969
  if (((hoveredDate === day.date || day.date < hoveredDate) &&
@@ -25151,7 +25151,7 @@ class RangeDatepickerCalendar extends i$3 {
25151
25151
  this.dayNamesOfTheWeek = [];
25152
25152
  this.daysOfMonth = [];
25153
25153
  this._locale = null;
25154
- this.currentDate = parseInt(format$1(startOfDay$2(Date.now()), 't'), 10);
25154
+ this.currentDate = parseInt(format$1(startOfDay$1(Date.now()), 't'), 10);
25155
25155
  this.localeChanged();
25156
25156
  this.yearAndMonthChanged(this.year, this.month);
25157
25157
  }
@@ -25625,7 +25625,7 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
25625
25625
  __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
25626
25626
  AuroLibraryRuntimeUtils$5$1.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
25627
25627
 
25628
- var styleCss$5$2 = i$6`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
25628
+ var styleCss$5$2 = i$6`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.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}`;
25629
25629
 
25630
25630
  var colorCss$5$2 = i$6`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day.activeCell:not(.selected){--ds-auro-calendar-cell-container-color: var(--ds-auro-calendar-cell-in-range-color);border-color:var(--ds-advanced-color-state-selected);outline-color:var(--ds-auro-calendar-cell-container-color)}:host .day.selected{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.selected ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success-subtle, #d6eac7)}:host .day.selected:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected-hover, #00274a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.reference:after{border-color:var(--ds-basic-color-border-default, #959595);box-shadow:inset 0 0 0 2px var(--ds-basic-color-surface-default, #ffffff)}:host .day.reference:hover::after{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background-muted, #f7f7f7)}:host .day:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host .day.disabled{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.blackout{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.inRange:before,:host .day.rangeDepartDate:before,:host .day.rangeReturnDate:before,:host .day.lastHoveredDate:before{background-color:var(--ds-auro-calendar-cell-in-range-color)}:host .day.sameDateTrip:before{--ds-auro-calendar-cell-in-range-color: transparent}`;
25631
25631
 
@@ -25652,12 +25652,6 @@ var popoverVersion = '6.0.1';
25652
25652
 
25653
25653
  /* eslint-disable curly, max-lines, no-underscore-dangle, no-magic-numbers, no-underscore-dangle, max-params, no-extra-parens, arrow-parens, max-lines, line-comment-position, no-inline-comments, lit/binding-positions, lit/no-invalid-html */
25654
25654
 
25655
- const startOfDay$1 = (ms) => {
25656
- const date = new Date(ms);
25657
- date.setHours(0, 0, 0, 0);
25658
- return date.getTime();
25659
- };
25660
-
25661
25655
  class AuroCalendarCell extends i$3 {
25662
25656
  constructor() {
25663
25657
  super();
@@ -25704,6 +25698,14 @@ class AuroCalendarCell extends i$3 {
25704
25698
  type: Boolean,
25705
25699
  reflect: true
25706
25700
  },
25701
+ /**
25702
+ * @deprecated Propagated from the legacy `auro-calendar.disabledDays`
25703
+ * Unix-timestamp array. The cell honors it for backward compatibility
25704
+ * (see the divergence-check fallback inside `isBlackout`), but
25705
+ * consumers should migrate to `auro-datepicker.blackoutDates`
25706
+ * (YYYY-MM-DD ISO strings). The calendar emits a one-time
25707
+ * deprecation warning the first time a non-empty value is observed.
25708
+ */
25707
25709
  disabledDays: { type: Array },
25708
25710
  isCurrentDate: { type: Boolean },
25709
25711
  locale: { type: String },
@@ -25749,8 +25751,8 @@ class AuroCalendarCell extends i$3 {
25749
25751
  const parsedDateTo = parseInt(dateTo, 10);
25750
25752
 
25751
25753
  if (day) {
25752
- const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
25753
- const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
25754
+ const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
25755
+ const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
25754
25756
 
25755
25757
  if (day.date === departTimestamp || day.date === returnTimestamp) {
25756
25758
  this.selected = true;
@@ -25834,22 +25836,42 @@ class AuroCalendarCell extends i$3 {
25834
25836
  return false;
25835
25837
  }
25836
25838
 
25837
- // Check against disabledDays timestamps (legacy path)
25839
+ // Delegate to the calendar's memoized blackout Set for O(1) lookup
25840
+ // (instead of rescanning disabledDays + blackoutDates per render). The
25841
+ // Set is rebuilt only when either source array reference changes — see
25842
+ // auro-calendar.js#_getBlackoutSet.
25843
+ if (this.calendar && typeof this.calendar._getBlackoutSet === 'function') {
25844
+ if (this.calendar._getBlackoutSet().has(this.day.date)) {
25845
+ return true;
25846
+ }
25847
+ // If the cell's local disabledDays diverged from the calendar's (a
25848
+ // consumer or test mutated cell.disabledDays directly), the Set does
25849
+ // not reflect that addition — fall through to the per-cell scan only
25850
+ // when the reference no longer matches. Production data flow keeps
25851
+ // these identical, so this branch stays cold.
25852
+ if (this.disabledDays && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
25853
+ if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
25854
+ return true;
25855
+ }
25856
+ }
25857
+ return false;
25858
+ }
25859
+
25860
+ // Pre-firstUpdated fallback — the cell may render once before the
25861
+ // ancestor calendar is wired up. Uses the legacy O(N) scan so the
25862
+ // result stays correct, just slower for the very first render.
25838
25863
  if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
25839
25864
  (this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
25840
25865
  return true;
25841
25866
  }
25842
25867
 
25843
- // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
25844
25868
  const blackoutDates = this.datepicker?.blackoutDates;
25845
-
25846
25869
  if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
25847
25870
  const date = new Date(this.day.date * 1000);
25848
25871
  const yyyy = date.getFullYear();
25849
25872
  const mm = String(date.getMonth() + 1).padStart(2, '0');
25850
25873
  const dd = String(date.getDate()).padStart(2, '0');
25851
- const cellDate = `${yyyy}-${mm}-${dd}`;
25852
- if (blackoutDates.includes(cellDate)) {
25874
+ if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
25853
25875
  return true;
25854
25876
  }
25855
25877
  }
@@ -25960,12 +25982,12 @@ class AuroCalendarCell extends i$3 {
25960
25982
  const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
25961
25983
  if (!Number.isFinite(parsedDateFrom)) return null;
25962
25984
 
25963
- const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
25985
+ const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
25964
25986
  const dayDate = this.day.date;
25965
25987
 
25966
25988
  const parsedDateTo = Number.parseInt(this.dateTo, 10);
25967
25989
  const hasDateTo = Number.isFinite(parsedDateTo);
25968
- const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
25990
+ const returnTimestamp = hasDateTo ? new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
25969
25991
 
25970
25992
  if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
25971
25993
 
@@ -25975,7 +25997,9 @@ class AuroCalendarCell extends i$3 {
25975
25997
 
25976
25998
  if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
25977
25999
 
25978
- // After start date, no end date yet, or after end date
26000
+ if (!hasDateTo && dayDate > departTimestamp) return this.datepicker.rangeLabelEndPreview || 'previewing range end';
26001
+
26002
+ // After end date when both dateFrom and dateTo are set.
25979
26003
  return this.datepicker.rangeLabelAfterRange || 'after range';
25980
26004
  }
25981
26005
 
@@ -25988,7 +26012,7 @@ class AuroCalendarCell extends i$3 {
25988
26012
  */
25989
26013
  isDepartDate(day, dateFrom) {
25990
26014
  const parsedDateFrom = parseInt(dateFrom, 10);
25991
- const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
26015
+ const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
25992
26016
 
25993
26017
  return this.selected && day.date === departTimestamp;
25994
26018
  }
@@ -26003,7 +26027,7 @@ class AuroCalendarCell extends i$3 {
26003
26027
  */
26004
26028
  isReturnDate(day, dateFrom, dateTo) {
26005
26029
  const parsedDateTo = parseInt(dateTo, 10);
26006
- const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
26030
+ const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
26007
26031
 
26008
26032
  return this.selected && day.date === returnTimestamp && dateFrom;
26009
26033
  }
@@ -26167,6 +26191,7 @@ class AuroCalendarCell extends i$3 {
26167
26191
  setTimeout(() => this.firstUpdated(), 0);
26168
26192
  return;
26169
26193
  }
26194
+ this.calendar = calendar;
26170
26195
  this.datepicker = calendar.datepicker;
26171
26196
  this._slotContentHandler = () => {
26172
26197
  this.handleSlotContent();
@@ -26224,12 +26249,13 @@ class AuroCalendarCell extends i$3 {
26224
26249
  this._cachedButton = this.shadowRoot.querySelector('button.day');
26225
26250
  });
26226
26251
 
26227
- // Update host-level aria attributes for ariaActiveDescendantElement.
26252
+ // Keep the host's gridcell aria attributes in sync with the day data.
26228
26253
  this.updateHostAria();
26229
26254
  }
26230
26255
 
26231
26256
  // Update host aria when selection changes (aria-selected, range labels)
26232
- if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
26257
+ // or when isCurrentDate flips (aria-current).
26258
+ if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
26233
26259
  this.updateHostAria();
26234
26260
  }
26235
26261
 
@@ -26240,8 +26266,8 @@ class AuroCalendarCell extends i$3 {
26240
26266
  }
26241
26267
 
26242
26268
  /**
26243
- * Updates ARIA attributes on the host element so that
26244
- * ariaActiveDescendantElement can expose cell info to the SR.
26269
+ * Sets host-level ARIA so each cell exposes its date, selection state,
26270
+ * and blackout status to assistive tech browsing the month grid.
26245
26271
  * @private
26246
26272
  * @returns {void}
26247
26273
  */
@@ -26252,14 +26278,20 @@ class AuroCalendarCell extends i$3 {
26252
26278
  if (outOfRange) {
26253
26279
  this.removeAttribute('role');
26254
26280
  this.removeAttribute('aria-label');
26281
+ this.removeAttribute('aria-current');
26255
26282
  return;
26256
26283
  }
26257
26284
 
26258
- // The host acts as the gridcell for ariaActiveDescendantElement.
26259
26285
  this.setAttribute('role', 'gridcell');
26260
26286
  this.setAttribute('aria-label', this.getAriaLabel());
26261
26287
  this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
26262
26288
 
26289
+ if (this.isCurrentDate) {
26290
+ this.setAttribute('aria-current', 'date');
26291
+ } else {
26292
+ this.removeAttribute('aria-current');
26293
+ }
26294
+
26263
26295
  if (this.isBlackout()) {
26264
26296
  this.setAttribute('aria-disabled', 'true');
26265
26297
  } else {
@@ -26274,7 +26306,7 @@ class AuroCalendarCell extends i$3 {
26274
26306
  * @returns {void}
26275
26307
  */
26276
26308
  focusButton() {
26277
- const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
26309
+ const button = this._cachedButton || this.shadowRoot.querySelector('button:not([disabled])');
26278
26310
  if (button) {
26279
26311
  button.focus({ focusVisible: true });
26280
26312
  }
@@ -26282,7 +26314,9 @@ class AuroCalendarCell extends i$3 {
26282
26314
 
26283
26315
  /**
26284
26316
  * Imperatively marks this cell as active without triggering a Lit re-render.
26285
- * Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
26317
+ * Buttons stay tabindex="-1" because DOM focus stays on the grid wrapper
26318
+ * arrow keys move the active cell imperatively and the live region carries
26319
+ * the SR announcement.
26286
26320
  * @returns {void}
26287
26321
  */
26288
26322
  setActive() {
@@ -26324,10 +26358,13 @@ class AuroCalendarCell extends i$3 {
26324
26358
  if (!btn || !this.day) return;
26325
26359
 
26326
26360
  const dayDate = this.day.date;
26327
- const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
26361
+ const departTimestamp = new Date(dateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
26328
26362
  const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
26329
- const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
26330
- const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
26363
+ // `>=` so hovering the depart cell itself (a same-day round-trip
26364
+ // preview) still surfaces a visual cue: the depart cell receives both
26365
+ // rangeDepartDate and lastHoveredDate.
26366
+ const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
26367
+ const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
26331
26368
 
26332
26369
  btn.classList.toggle('inRange', isInRange);
26333
26370
  btn.classList.toggle('lastHoveredDate', isLastHovered);
@@ -26385,7 +26422,6 @@ class AuroCalendarCell extends i$3 {
26385
26422
  @focus="${outOfRange ? undefined : this.handleFocus}"
26386
26423
  class="${e$2(buttonClasses)}"
26387
26424
  ?disabled="${outOfRange}"
26388
- aria-hidden="${outOfRange ? 'true' : A$7}"
26389
26425
  tabindex="-1">
26390
26426
  <div class="buttonWrapper" aria-hidden="true">
26391
26427
  <div class="currentDayMarker">${this.day?.title || A$7}</div>
@@ -27491,7 +27527,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$3 {
27491
27527
  }
27492
27528
  };
27493
27529
 
27494
- var formkitVersion$2$1 = '202606241801';
27530
+ var formkitVersion$2$1 = '202606251933';
27495
27531
 
27496
27532
  let l$1$2 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$2`${s$3(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1$2 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1$2 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1$3=i$6`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
27497
27533
  `,u$4$2=i$6`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -27614,7 +27650,11 @@ class AuroCalendar extends RangeDatepicker {
27614
27650
  this.calendarRangeMonths = null;
27615
27651
 
27616
27652
  /**
27617
- * Legacy array of disabled-date timestamps.
27653
+ * @deprecated Use `auro-datepicker.blackoutDates` (an array of
27654
+ * `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
27655
+ * timestamps is still honored for backward compatibility but emits a
27656
+ * one-time `console.debug` the first time a non-empty value is observed.
27657
+ * Support will be removed in a future major release.
27618
27658
  * @private
27619
27659
  */
27620
27660
  this.disabledDays = [];
@@ -27871,17 +27911,44 @@ class AuroCalendar extends RangeDatepicker {
27871
27911
  * @returns {void}
27872
27912
  */
27873
27913
  updateActiveCellForVisibleMonth() {
27874
- // Use double-rAF to ensure child month/cell components have fully
27875
- // rendered and cached their button references before we set tabindex.
27876
- requestAnimationFrame(() => {
27877
- requestAnimationFrame(() => {
27878
- const newDate = this.computeActiveDate({ skipDateFrom: true });
27914
+ this._afterMonthRender(() => {
27915
+ const newDate = this.computeActiveDate({ skipDateFrom: true });
27879
27916
 
27880
- if (newDate !== null && newDate !== undefined) {
27881
- this.activeCellDate = newDate;
27882
- this.setActiveCell(this.activeCellDate);
27883
- }
27884
- });
27917
+ if (newDate !== null && newDate !== undefined) {
27918
+ this.activeCellDate = newDate;
27919
+ this.setActiveCell(this.activeCellDate);
27920
+ }
27921
+ });
27922
+ }
27923
+
27924
+ /**
27925
+ * Schedules `callback` two animation frames out, giving the child
27926
+ * `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
27927
+ * a full render-and-paint cycle to settle before the callback reads or
27928
+ * mutates DOM.
27929
+ *
27930
+ * Why two frames, not one:
27931
+ * 1. Lit batches property updates and renders in a microtask, so frame N
27932
+ * schedules the render but the new DOM may not be painted yet.
27933
+ * 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
27934
+ * which also lands a tick later. Reading buttons from frame N+1
27935
+ * (after both renders + cache refresh have flushed) reliably hits the
27936
+ * new month's cells.
27937
+ *
27938
+ * Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
27939
+ * and then needs to inspect the freshly-rendered cells (cross-month
27940
+ * keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
27941
+ * Do NOT collapse to a single rAF — it intermittently lands before
27942
+ * `_cachedButton` is refreshed, which silently breaks focus restoration
27943
+ * and `setActiveCell` lookups.
27944
+ * @private
27945
+ * @param {() => void} callback - Runs once after the month re-render and
27946
+ * the cells' button caches have refreshed.
27947
+ * @returns {void}
27948
+ */
27949
+ _afterMonthRender(callback) {
27950
+ requestAnimationFrame(() => {
27951
+ requestAnimationFrame(callback);
27885
27952
  });
27886
27953
  }
27887
27954
 
@@ -27999,6 +28066,47 @@ class AuroCalendar extends RangeDatepicker {
27999
28066
  return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
28000
28067
  }
28001
28068
 
28069
+ /**
28070
+ * Picks the focusable cell whose date is closest to targetTs. Used as a
28071
+ * fallback after a month-boundary nav when the exact target date isn't
28072
+ * focusable — typically because the month re-render lagged or the date
28073
+ * was filtered out by isOutOfRange. When two cells are equidistant, the
28074
+ * navigation direction breaks the tie so the user moves the way they
28075
+ * pressed (forward → later cell, backward → earlier cell).
28076
+ * @private
28077
+ * @param {Array} cells - Focusable cells from getAllFocusableCells.
28078
+ * @param {Number} targetTs - Desired Unix timestamp (seconds).
28079
+ * @param {'next'|'prev'} direction - Navigation direction.
28080
+ * @returns {Object|null} The nearest cell, or null when cells is empty.
28081
+ */
28082
+ pickNearestCell(cells, targetTs, direction) {
28083
+ if (!cells.length) {
28084
+ return null;
28085
+ }
28086
+ const forward = direction === 'next';
28087
+ let best = null;
28088
+ let bestDelta = Infinity;
28089
+ cells.forEach((cell) => {
28090
+ if (!cell.day) {
28091
+ return;
28092
+ }
28093
+ const distance = Math.abs(cell.day.date - targetTs);
28094
+ if (distance < bestDelta) {
28095
+ best = cell;
28096
+ bestDelta = distance;
28097
+ return;
28098
+ }
28099
+ if (distance === bestDelta && best) {
28100
+ if (forward && cell.day.date > best.day.date) {
28101
+ best = cell;
28102
+ } else if (!forward && cell.day.date < best.day.date) {
28103
+ best = cell;
28104
+ }
28105
+ }
28106
+ });
28107
+ return best;
28108
+ }
28109
+
28002
28110
  /**
28003
28111
  * Gets all focusable cells across all rendered months.
28004
28112
  * @private
@@ -28015,9 +28123,9 @@ class AuroCalendar extends RangeDatepicker {
28015
28123
 
28016
28124
  /**
28017
28125
  * Sets the active cell across all months. Only one cell has tabindex="0" at a time.
28018
- * Uses imperative DOM manipulation — no Lit re-render triggered.
28019
- * Also updates ariaActiveDescendantElement on the grid wrapper so
28020
- * screen readers announce the active cell without moving DOM focus.
28126
+ * Uses imperative DOM manipulation — no Lit re-render triggered. DOM focus
28127
+ * stays on the grid wrapper; the live region (see getOrCreateLiveRegion)
28128
+ * is what announces the active cell to assistive tech.
28021
28129
  * @param {Number} date - Unix timestamp of the cell to activate.
28022
28130
  * @returns {void}
28023
28131
  */
@@ -28098,6 +28206,72 @@ class AuroCalendar extends RangeDatepicker {
28098
28206
  this.clearRangePreview();
28099
28207
  }
28100
28208
 
28209
+ /**
28210
+ * Returns a memoized Set of blackout timestamps (seconds) drawn from both
28211
+ * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
28212
+ * The cache invalidates when either source array's reference changes, which
28213
+ * matches Lit's own reactive identity semantics for array properties.
28214
+ * @private
28215
+ * @returns {Set<Number>}
28216
+ */
28217
+ _getBlackoutSet() {
28218
+ const disabledDays = this.disabledDays || [];
28219
+ const blackoutDates = this.datepicker?.blackoutDates;
28220
+ if (this._blackoutSet
28221
+ && this._cachedBlackoutDisabledDays === disabledDays
28222
+ && this._cachedBlackoutDates === blackoutDates) {
28223
+ return this._blackoutSet;
28224
+ }
28225
+
28226
+ if (disabledDays.length > 0) {
28227
+ this._warnDisabledDaysDeprecated();
28228
+ }
28229
+
28230
+ const set = new Set(disabledDays.map((day) => parseInt(day, 10)));
28231
+
28232
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
28233
+ if (Array.isArray(blackoutDates)) {
28234
+ for (const isoStr of blackoutDates) {
28235
+ const parts = isoStr.split('-');
28236
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
28237
+ if (Number.isFinite(ts)) {
28238
+ set.add(ts);
28239
+ }
28240
+ }
28241
+ }
28242
+
28243
+ this._blackoutSet = set;
28244
+ this._cachedBlackoutDisabledDays = disabledDays;
28245
+ this._cachedBlackoutDates = blackoutDates;
28246
+ return set;
28247
+ }
28248
+
28249
+ /**
28250
+ * Per-class flag that gates the `disabledDays` deprecation warning so it
28251
+ * fires exactly once per page no matter how many calendars or rebuild
28252
+ * cycles encounter the legacy array.
28253
+ * @private
28254
+ */
28255
+ static _warnedDisabledDaysDeprecation = false;
28256
+
28257
+ /**
28258
+ * One-time `console.debug` directing consumers from the legacy
28259
+ * `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
28260
+ * the first time `_getBlackoutSet` rebuilds from a non-empty
28261
+ * `disabledDays`; subsequent calls (on this or any other AuroCalendar
28262
+ * instance on the page) are silent.
28263
+ * @private
28264
+ * @returns {void}
28265
+ */
28266
+ _warnDisabledDaysDeprecated() {
28267
+ if (AuroCalendar._warnedDisabledDaysDeprecation) {
28268
+ return;
28269
+ }
28270
+ AuroCalendar._warnedDisabledDaysDeprecation = true;
28271
+ // eslint-disable-next-line no-console
28272
+ 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.');
28273
+ }
28274
+
28101
28275
  /**
28102
28276
  * Computes the initial active date from data properties alone — no DOM required.
28103
28277
  * Priority:
@@ -28142,21 +28316,10 @@ class AuroCalendar extends RangeDatepicker {
28142
28316
  const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
28143
28317
  const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
28144
28318
 
28145
- // Build a Set of blackout timestamps for O(1) lookup.
28146
- const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
28147
-
28148
- // Also include ISO-format blackoutDates from the datepicker if available.
28149
- // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
28150
- const isoBlackouts = this.datepicker?.blackoutDates;
28151
- if (Array.isArray(isoBlackouts)) {
28152
- for (const isoStr of isoBlackouts) {
28153
- const parts = isoStr.split('-');
28154
- const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
28155
- if (Number.isFinite(ts)) {
28156
- blackoutSet.add(ts);
28157
- }
28158
- }
28159
- }
28319
+ // Build a Set of blackout timestamps for O(1) lookup. Memoized by the
28320
+ // identity of the source arrays so rapid month nav doesn't rebuild the
28321
+ // Set (and re-parse every ISO string) on every keypress.
28322
+ const blackoutSet = this._getBlackoutSet();
28160
28323
 
28161
28324
  /**
28162
28325
  * A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
@@ -28352,8 +28515,8 @@ class AuroCalendar extends RangeDatepicker {
28352
28515
 
28353
28516
  /**
28354
28517
  * Handles arrow key navigation on the calendar grid wrapper.
28355
- * Focus stays on the grid wrapper; only ariaActiveDescendantElement
28356
- * and the visual active-cell indicator change.
28518
+ * Focus stays on the grid wrapper; only the visual active-cell indicator
28519
+ * changes. The live region announces the new active cell.
28357
28520
  * @private
28358
28521
  * @param {KeyboardEvent} event - The keyboard event.
28359
28522
  * @returns {void}
@@ -28418,21 +28581,21 @@ class AuroCalendar extends RangeDatepicker {
28418
28581
  } else {
28419
28582
  this.handlePrevMonth({ skipActiveUpdate: true });
28420
28583
  }
28421
- requestAnimationFrame(() => {
28422
- requestAnimationFrame(() => {
28423
- const cells = this.getAllFocusableCells();
28424
- const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
28425
- if (target) {
28426
- this.setActiveCell(target.day.date);
28427
- this.handleCellFocused({ detail: { date: target.day.date } });
28428
- } else if (cells.length > 0) {
28429
- const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
28584
+ this._afterMonthRender(() => {
28585
+ const cells = this.getAllFocusableCells();
28586
+ const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
28587
+ if (target) {
28588
+ this.setActiveCell(target.day.date);
28589
+ this.handleCellFocused({ detail: { date: target.day.date } });
28590
+ } else {
28591
+ const fallback = this.pickNearestCell(cells, targetTs, navDir);
28592
+ if (fallback) {
28430
28593
  this.setActiveCell(fallback.day.date);
28431
28594
  this.handleCellFocused({ detail: { date: fallback.day.date } });
28432
28595
  }
28433
- // Re-focus grid wrapper after month change re-render
28434
- this.focusActiveCell();
28435
- });
28596
+ }
28597
+ // Re-focus grid wrapper after month change re-render
28598
+ this.focusActiveCell();
28436
28599
  });
28437
28600
  }
28438
28601
  }
@@ -28458,26 +28621,20 @@ class AuroCalendar extends RangeDatepicker {
28458
28621
  } else {
28459
28622
  this.handlePrevMonth({ skipActiveUpdate: true });
28460
28623
  }
28461
- requestAnimationFrame(() => {
28462
- requestAnimationFrame(() => {
28463
- const cells = this.getAllFocusableCells();
28464
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28465
- if (target) {
28466
- this.setActiveCell(target.day.date);
28467
- this.handleCellFocused({ detail: { date: target.day.date } });
28468
- } else if (cells.length > 0) {
28469
- let nearest = null;
28470
-
28471
- if (navDirection === 'next') {
28472
- [nearest] = cells;
28473
- } else {
28474
- nearest = cells[cells.length - 1];
28475
- }
28624
+ this._afterMonthRender(() => {
28625
+ const cells = this.getAllFocusableCells();
28626
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28627
+ if (target) {
28628
+ this.setActiveCell(target.day.date);
28629
+ this.handleCellFocused({ detail: { date: target.day.date } });
28630
+ } else {
28631
+ const nearest = this.pickNearestCell(cells, targetDate, navDirection);
28632
+ if (nearest) {
28476
28633
  this.setActiveCell(nearest.day.date);
28477
28634
  this.handleCellFocused({ detail: { date: nearest.day.date } });
28478
28635
  }
28479
- this.focusActiveCell();
28480
- });
28636
+ }
28637
+ this.focusActiveCell();
28481
28638
  });
28482
28639
  }
28483
28640
  }
@@ -28527,19 +28684,17 @@ class AuroCalendar extends RangeDatepicker {
28527
28684
  }
28528
28685
 
28529
28686
  this.handleNextMonth({ skipActiveUpdate: true });
28530
- requestAnimationFrame(() => {
28531
- requestAnimationFrame(() => {
28532
- const cells = this.getAllFocusableCells();
28533
- const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
28534
- if (target) {
28535
- this.setActiveCell(target.day.date);
28536
- this.focusActiveCell();
28537
- } else if (cells.length > 0) {
28538
- // Fallback: first cell of the last rendered month
28539
- this.setActiveCell(cells[cells.length - 1].day.date);
28540
- this.focusActiveCell();
28541
- }
28542
- });
28687
+ this._afterMonthRender(() => {
28688
+ const cells = this.getAllFocusableCells();
28689
+ const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
28690
+ if (target) {
28691
+ this.setActiveCell(target.day.date);
28692
+ this.focusActiveCell();
28693
+ } else if (cells.length > 0) {
28694
+ // Fallback: first cell of the last rendered month
28695
+ this.setActiveCell(cells[cells.length - 1].day.date);
28696
+ this.focusActiveCell();
28697
+ }
28543
28698
  });
28544
28699
  } else if (direction === 'prev' && this.showPrevMonthBtn) {
28545
28700
  // Navigate to previous month and focus the computed previous date.
@@ -28553,19 +28708,17 @@ class AuroCalendar extends RangeDatepicker {
28553
28708
  }
28554
28709
 
28555
28710
  this.handlePrevMonth({ skipActiveUpdate: true });
28556
- requestAnimationFrame(() => {
28557
- requestAnimationFrame(() => {
28558
- const cells = this.getAllFocusableCells();
28559
- const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
28560
- if (target) {
28561
- this.setActiveCell(target.day.date);
28562
- this.focusActiveCell();
28563
- } else if (cells.length > 0) {
28564
- // Fallback: last cell of the first rendered month
28565
- this.setActiveCell(cells[0].day.date);
28566
- this.focusActiveCell();
28567
- }
28568
- });
28711
+ this._afterMonthRender(() => {
28712
+ const cells = this.getAllFocusableCells();
28713
+ const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
28714
+ if (target) {
28715
+ this.setActiveCell(target.day.date);
28716
+ this.focusActiveCell();
28717
+ } else if (cells.length > 0) {
28718
+ // Fallback: last cell of the first rendered month
28719
+ this.setActiveCell(cells[0].day.date);
28720
+ this.focusActiveCell();
28721
+ }
28569
28722
  });
28570
28723
  }
28571
28724
  } else if (key === 'ArrowDown' || key === 'ArrowUp') {
@@ -28593,20 +28746,18 @@ class AuroCalendar extends RangeDatepicker {
28593
28746
  } else {
28594
28747
  this.handlePrevMonth({ skipActiveUpdate: true });
28595
28748
  }
28596
- requestAnimationFrame(() => {
28597
- requestAnimationFrame(() => {
28598
- const cells = this.getAllFocusableCells();
28599
- const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28600
- if (target) {
28601
- this.setActiveCell(target.day.date);
28602
- this.focusActiveCell();
28603
- } else if (cells.length > 0) {
28604
- // Clamp to nearest focusable cell
28605
- const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
28606
- this.setActiveCell(nearest.day.date);
28607
- this.focusActiveCell();
28608
- }
28609
- });
28749
+ this._afterMonthRender(() => {
28750
+ const cells = this.getAllFocusableCells();
28751
+ const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
28752
+ if (target) {
28753
+ this.setActiveCell(target.day.date);
28754
+ this.focusActiveCell();
28755
+ } else if (cells.length > 0) {
28756
+ // Clamp to nearest focusable cell
28757
+ const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
28758
+ this.setActiveCell(nearest.day.date);
28759
+ this.focusActiveCell();
28760
+ }
28610
28761
  });
28611
28762
  }
28612
28763
  }
@@ -28645,8 +28796,9 @@ class AuroCalendar extends RangeDatepicker {
28645
28796
  return;
28646
28797
  }
28647
28798
 
28648
- // With aria-activedescendant, the button no longer receives native focus,
28649
- // so we use the debounced live region for the full context announcement.
28799
+ // DOM focus stays on the grid wrapper while arrow keys move the active
28800
+ // cell, so cell buttons never receive native focus. The debounced live
28801
+ // region carries the full-context announcement instead.
28650
28802
  const announcement = this.buildFocusAnnouncement(date);
28651
28803
  this.announceFocusDebounced(announcement);
28652
28804
 
@@ -28716,10 +28868,10 @@ class AuroCalendar extends RangeDatepicker {
28716
28868
  return null;
28717
28869
  }
28718
28870
 
28719
- const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
28871
+ const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
28720
28872
  const parsedTo = Number.parseInt(this.dateTo, 10);
28721
28873
  const hasTo = Number.isFinite(parsedTo);
28722
- const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
28874
+ const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
28723
28875
 
28724
28876
  if (date === departTs) {
28725
28877
  return this.datepicker.rangeLabelStart || 'range start';
@@ -28733,6 +28885,9 @@ class AuroCalendar extends RangeDatepicker {
28733
28885
  if (hasTo && date > departTs && date < returnTs) {
28734
28886
  return this.datepicker.rangeLabelInRange || 'in range';
28735
28887
  }
28888
+ if (!hasTo && date > departTs) {
28889
+ return this.datepicker.rangeLabelEndPreview || 'previewing range end';
28890
+ }
28736
28891
  return this.datepicker.rangeLabelAfterRange || 'after range';
28737
28892
  }
28738
28893
 
@@ -28929,9 +29084,34 @@ class AuroCalendar extends RangeDatepicker {
28929
29084
  // the last one.
28930
29085
  if (this._announceRafId) {
28931
29086
  cancelAnimationFrame(this._announceRafId);
29087
+ this._announceRafId = null;
28932
29088
  }
29089
+ this._deliverAnnouncement(dateStr, 0);
29090
+ }
29091
+
29092
+ /**
29093
+ * Writes `dateStr` to the live region. If the dropdown's dialog hasn't
29094
+ * mounted yet (so getOrCreateLiveRegion can't attach), retries on the
29095
+ * next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
29096
+ * dropping the announcement. The retry uses the same `_announceRafId`
29097
+ * the double-rAF below uses, so a newer announceSelection call (or
29098
+ * disconnectedCallback) cancels any in-flight retry.
29099
+ * @private
29100
+ * @param {String} dateStr - The localized date string to announce.
29101
+ * @param {Number} attempts - Number of prior retry attempts.
29102
+ * @returns {void}
29103
+ */
29104
+ _deliverAnnouncement(dateStr, attempts) {
28933
29105
  const liveRegion = this.getOrCreateLiveRegion();
28934
29106
  if (!liveRegion) {
29107
+ const MAX_LIVE_REGION_RETRIES = 10;
29108
+ if (attempts < MAX_LIVE_REGION_RETRIES) {
29109
+ this._announceRafId = requestAnimationFrame(() => {
29110
+ this._deliverAnnouncement(dateStr, attempts + 1);
29111
+ });
29112
+ } else {
29113
+ this._announceRafId = null;
29114
+ }
28935
29115
  return;
28936
29116
  }
28937
29117
 
@@ -29117,7 +29297,7 @@ class AuroCalendar extends RangeDatepicker {
29117
29297
  </button>
29118
29298
  ` : undefined}
29119
29299
  </div>
29120
- <div id="calendarGrid" class="calendars" role="group" tabindex="0" aria-label="${this.datepicker?.calendarGridLabel}" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}" @calendar-month-mouseleave="${this.clearRangePreview}">
29300
+ <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}">
29121
29301
  ${this.renderAllCalendars()}
29122
29302
  </div>
29123
29303
  </div>
@@ -33002,7 +33182,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$3 {
33002
33182
  }
33003
33183
  };
33004
33184
 
33005
- var formkitVersion$1$3 = '202606241801';
33185
+ var formkitVersion$1$3 = '202606251933';
33006
33186
 
33007
33187
  let AuroElement$2$2 = class AuroElement extends i$3 {
33008
33188
  static get properties() {
@@ -39399,7 +39579,7 @@ function normalizeDates$2(context, ...dates) {
39399
39579
  * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
39400
39580
  * //=> Tue Sep 02 2014 00:00:00
39401
39581
  */
39402
- function startOfDay$3(date, options) {
39582
+ function startOfDay$2(date, options) {
39403
39583
  const _date = toDate$2(date, options?.in);
39404
39584
  _date.setHours(0, 0, 0, 0);
39405
39585
  return _date;
@@ -39447,8 +39627,8 @@ function differenceInCalendarDays$2(laterDate, earlierDate, options) {
39447
39627
  earlierDate,
39448
39628
  );
39449
39629
 
39450
- const laterStartOfDay = startOfDay$3(laterDate_);
39451
- const earlierStartOfDay = startOfDay$3(earlierDate_);
39630
+ const laterStartOfDay = startOfDay$2(laterDate_);
39631
+ const earlierStartOfDay = startOfDay$2(earlierDate_);
39452
39632
 
39453
39633
  const laterTimestamp =
39454
39634
  +laterStartOfDay - getTimezoneOffsetInMilliseconds$2(laterStartOfDay);
@@ -46595,7 +46775,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$3 {
46595
46775
  }
46596
46776
  };
46597
46777
 
46598
- var formkitVersion$7 = '202606241801';
46778
+ var formkitVersion$7 = '202606251933';
46599
46779
 
46600
46780
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
46601
46781
  // See LICENSE in the project root for license information.
@@ -48072,6 +48252,7 @@ class AuroDatePicker extends AuroElement$5 {
48072
48252
  this.rangeLabelBeforeRange = 'before range';
48073
48253
  this.rangeLabelInRange = 'in range';
48074
48254
  this.rangeLabelAfterRange = 'after range';
48255
+ this.rangeLabelEndPreview = 'previewing range end';
48075
48256
  this.blackoutDates = [];
48076
48257
  this.blackoutLabel = 'unavailable';
48077
48258
  this.navLabelPrevMonth = 'Previous month';
@@ -48171,6 +48352,22 @@ class AuroDatePicker extends AuroElement$5 {
48171
48352
  */
48172
48353
  this.handleClick = this.handleClick.bind(this);
48173
48354
 
48355
+ /**
48356
+ * Single AbortController shared by every listener registered in the
48357
+ * configure* methods. Lets disconnectedCallback tear all of them down
48358
+ * with one abort() call.
48359
+ *
48360
+ * The genuine leak risk is the listeners attached to children that can
48361
+ * outlive the host if they get reparented — `this.dropdown`,
48362
+ * `this.calendar`, and the inputs inside the dropdown's slot.
48363
+ * Listeners attached to `this` (e.g. focusin/focusout on the host)
48364
+ * form a self-contained reference graph that the GC can collect with
48365
+ * the host anyway, but they share the same signal so the cleanup
48366
+ * pattern stays uniform across all configure* sites.
48367
+ * @private
48368
+ */
48369
+ this._listenerAbortController = new AbortController();
48370
+
48174
48371
  /**
48175
48372
  * @private
48176
48373
  */
@@ -48219,6 +48416,7 @@ class AuroDatePicker extends AuroElement$5 {
48219
48416
 
48220
48417
  /**
48221
48418
  * Label announced for blackout (disabled but in-range) date cells.
48419
+ * @default 'unavailable'
48222
48420
  */
48223
48421
  blackoutLabel: {
48224
48422
  type: String,
@@ -48235,6 +48433,7 @@ class AuroDatePicker extends AuroElement$5 {
48235
48433
 
48236
48434
  /**
48237
48435
  * Accessible label for the calendar grid containing the days of the month.
48436
+ * @default 'Calendar days of the month'
48238
48437
  */
48239
48438
  calendarGridLabel: {
48240
48439
  type: String,
@@ -48397,6 +48596,7 @@ class AuroDatePicker extends AuroElement$5 {
48397
48596
 
48398
48597
  /**
48399
48598
  * Accessible label for the next month navigation button.
48599
+ * @default 'Next month'
48400
48600
  */
48401
48601
  navLabelNextMonth: {
48402
48602
  type: String,
@@ -48405,6 +48605,7 @@ class AuroDatePicker extends AuroElement$5 {
48405
48605
 
48406
48606
  /**
48407
48607
  * Accessible label for the previous month navigation button.
48608
+ * @default 'Previous month'
48408
48609
  */
48409
48610
  navLabelPrevMonth: {
48410
48611
  type: String,
@@ -48483,6 +48684,7 @@ class AuroDatePicker extends AuroElement$5 {
48483
48684
 
48484
48685
  /**
48485
48686
  * Label announced for cells after the range (or after start when no end is selected).
48687
+ * @default 'after range'
48486
48688
  */
48487
48689
  rangeLabelAfterRange: {
48488
48690
  type: String,
@@ -48491,6 +48693,7 @@ class AuroDatePicker extends AuroElement$5 {
48491
48693
 
48492
48694
  /**
48493
48695
  * Label announced for cells before the range start.
48696
+ * @default 'before range'
48494
48697
  */
48495
48698
  rangeLabelBeforeRange: {
48496
48699
  type: String,
@@ -48499,14 +48702,27 @@ class AuroDatePicker extends AuroElement$5 {
48499
48702
 
48500
48703
  /**
48501
48704
  * Label announced for the range end date cell.
48705
+ * @default 'range end'
48502
48706
  */
48503
48707
  rangeLabelEnd: {
48504
48708
  type: String,
48505
48709
  reflect: true
48506
48710
  },
48507
48711
 
48712
+ /**
48713
+ * Label announced for the focused cell while previewing a range end
48714
+ * (dateFrom set, dateTo not yet selected). Tells AT users that
48715
+ * pressing Enter would commit this cell as the range end.
48716
+ * @default 'previewing range end'
48717
+ */
48718
+ rangeLabelEndPreview: {
48719
+ type: String,
48720
+ reflect: true
48721
+ },
48722
+
48508
48723
  /**
48509
48724
  * Label announced for cells within the selected range.
48725
+ * @default 'in range'
48510
48726
  */
48511
48727
  rangeLabelInRange: {
48512
48728
  type: String,
@@ -48515,6 +48731,7 @@ class AuroDatePicker extends AuroElement$5 {
48515
48731
 
48516
48732
  /**
48517
48733
  * Label announced for the range start date cell.
48734
+ * @default 'range start'
48518
48735
  */
48519
48736
  rangeLabelStart: {
48520
48737
  type: String,
@@ -48879,10 +49096,26 @@ class AuroDatePicker extends AuroElement$5 {
48879
49096
  // ─── Vendor calendar time conversions ─────────────────────────────────────
48880
49097
 
48881
49098
  /**
48882
- * Converts a Unix timestamp (seconds) from the vendor calendar to an ISO date string.
49099
+ * Converts a Unix timestamp (seconds) from the vendored range-datepicker
49100
+ * (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
49101
+ *
49102
+ * Timezone contract:
49103
+ * - INPUT: `time` is assumed to be the seconds-since-epoch of **local
49104
+ * midnight** for the intended calendar day. The vendor's Day constructor
49105
+ * builds it via `date-fns format(date, 't')` from a locally-constructed
49106
+ * Date, so this assumption currently holds end-to-end.
49107
+ * - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
49108
+ * getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
49109
+ * string matches the local calendar day.
49110
+ *
49111
+ * If the vendor ever switches to emitting UTC-midnight timestamps, this
49112
+ * conversion will silently shift the returned date by one day in zones
49113
+ * west of UTC. Any vendor swap should re-verify this contract; the TZ
49114
+ * regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
49115
+ *
48883
49116
  * @private
48884
- * @param {number} time - Unix timestamp in seconds.
48885
- * @returns {string} ISO date string (yyyy-mm-dd).
49117
+ * @param {number} time - Unix timestamp (seconds), local midnight of the day.
49118
+ * @returns {string} ISO date string (yyyy-mm-dd) reflecting the local calendar day.
48886
49119
  */
48887
49120
  convertWcTimeToDate(time) {
48888
49121
  return dateFormatter$1.toISOFormatString(new Date(time * 1000));
@@ -48984,8 +49217,8 @@ class AuroDatePicker extends AuroElement$5 {
48984
49217
  }
48985
49218
  }
48986
49219
 
48987
- // Focus the calendar grid wrapper (aria-activedescendant handles
48988
- // the SR announcement for the active cell).
49220
+ // Focus the calendar grid wrapper. The live region (announced just
49221
+ // below) handles the SR announcement for the active cell.
48989
49222
  if (activeCell) {
48990
49223
  this.calendar.focusActiveCell();
48991
49224
 
@@ -49035,11 +49268,13 @@ class AuroDatePicker extends AuroElement$5 {
49035
49268
  this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
49036
49269
  }
49037
49270
 
49271
+ const { signal } = this._listenerAbortController;
49272
+
49038
49273
  this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
49039
49274
  if (!this.isPopoverVisible) {
49040
49275
  this.dropdown.show();
49041
49276
  }
49042
- });
49277
+ }, { signal });
49043
49278
 
49044
49279
  this.dropdown.addEventListener('auroDropdown-toggled', () => {
49045
49280
  this.notifyDatepickerToggled();
@@ -49057,7 +49292,7 @@ class AuroDatePicker extends AuroElement$5 {
49057
49292
  if (this.valueObject) {
49058
49293
  this.centralDate = this.value;
49059
49294
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
49060
- this.centralDate = new Date();
49295
+ this.centralDate = dateFormatter$1.toISOFormatString(new Date());
49061
49296
  }
49062
49297
  }
49063
49298
 
@@ -49137,7 +49372,7 @@ class AuroDatePicker extends AuroElement$5 {
49137
49372
  this.forceScrollOnNextMobileCalendarRender = false;
49138
49373
  }, 0);
49139
49374
  }
49140
- });
49375
+ }, { signal });
49141
49376
 
49142
49377
  // Handle responsive strategy changes while the dropdown is open
49143
49378
  // (e.g. resizing from desktop → mobile or vice versa).
@@ -49184,7 +49419,7 @@ class AuroDatePicker extends AuroElement$5 {
49184
49419
  });
49185
49420
  });
49186
49421
  }
49187
- });
49422
+ }, { signal });
49188
49423
  }
49189
49424
 
49190
49425
  /**
@@ -49197,6 +49432,8 @@ class AuroDatePicker extends AuroElement$5 {
49197
49432
 
49198
49433
  this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
49199
49434
 
49435
+ const { signal } = this._listenerAbortController;
49436
+
49200
49437
  this.inputList.forEach((input, index) => {
49201
49438
  input.addEventListener('input', (event) => {
49202
49439
  event.stopPropagation();
@@ -49208,7 +49445,7 @@ class AuroDatePicker extends AuroElement$5 {
49208
49445
  }
49209
49446
 
49210
49447
  this.notifyValueChanged();
49211
- });
49448
+ }, { signal });
49212
49449
 
49213
49450
  input.addEventListener('auroFormElement-validated', (evt) => {
49214
49451
  // not to bubble up input's validated event.
@@ -49224,7 +49461,7 @@ class AuroDatePicker extends AuroElement$5 {
49224
49461
  this.validity = evt.detail.validity;
49225
49462
  this.errorMessage = evt.detail.message;
49226
49463
  }
49227
- });
49464
+ }, { signal });
49228
49465
  });
49229
49466
  }
49230
49467
 
@@ -49238,6 +49475,8 @@ class AuroDatePicker extends AuroElement$5 {
49238
49475
  this.calendar.datepicker = this;
49239
49476
  this.calendar.dropdown = this.dropdown;
49240
49477
 
49478
+ const { signal } = this._listenerAbortController;
49479
+
49241
49480
  this.calendar.addEventListener('auroCalendar-dateSelected', () => {
49242
49481
  if (this.inputList[0].value !== this.calendar.dateFrom && this.calendar.dateFrom !== undefined) {
49243
49482
  this.inputList[0].value = this.convertWcTimeToDate(this.calendar.dateFrom);
@@ -49246,11 +49485,11 @@ class AuroDatePicker extends AuroElement$5 {
49246
49485
  if (this.inputList[1] && this.calendar.dateTo && this.inputList[1].value !== this.calendar.dateTo) {
49247
49486
  this.inputList[1].value = this.convertWcTimeToDate(this.calendar.dateTo);
49248
49487
  }
49249
- });
49488
+ }, { signal });
49250
49489
 
49251
49490
  this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
49252
49491
  this.dropdown.hide();
49253
- });
49492
+ }, { signal });
49254
49493
 
49255
49494
  this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
49256
49495
  const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
@@ -49260,7 +49499,7 @@ class AuroDatePicker extends AuroElement$5 {
49260
49499
  }
49261
49500
 
49262
49501
  this.notifyMonthChanged(event);
49263
- });
49502
+ }, { signal });
49264
49503
  }
49265
49504
 
49266
49505
  /**
@@ -49269,10 +49508,17 @@ class AuroDatePicker extends AuroElement$5 {
49269
49508
  * @returns {void}
49270
49509
  */
49271
49510
  configureDatepicker() {
49511
+ // These listeners are on `this` (the host), so they would GC with the
49512
+ // host even without the abort signal — see the leak rationale on
49513
+ // `_listenerAbortController`. The signal is still passed for uniform
49514
+ // cleanup semantics with the child-element listeners in the other
49515
+ // configure* methods.
49516
+ const { signal } = this._listenerAbortController;
49517
+
49272
49518
  this.addEventListener('focusin', () => {
49273
49519
  this.touched = true;
49274
49520
  this.hasFocus = true;
49275
- });
49521
+ }, { signal });
49276
49522
 
49277
49523
  this.addEventListener('focusout', () => {
49278
49524
  this.hasFocus = false;
@@ -49284,7 +49530,7 @@ class AuroDatePicker extends AuroElement$5 {
49284
49530
  if (!this.matches(':focus-within')) {
49285
49531
  this.validate();
49286
49532
  }
49287
- });
49533
+ }, { signal });
49288
49534
 
49289
49535
  if (this.valueObject) {
49290
49536
  this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
@@ -49482,6 +49728,36 @@ class AuroDatePicker extends AuroElement$5 {
49482
49728
  return this.validity !== undefined && this.validity !== 'valid';
49483
49729
  }
49484
49730
 
49731
+ /**
49732
+ * Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
49733
+ * spans every datepicker instance on the page; lives on the class (not
49734
+ * at module scope) so it stays an encapsulated implementation detail of
49735
+ * this component and does not interfere with WCA's class-JSDoc
49736
+ * attachment.
49737
+ * @private
49738
+ */
49739
+ static _warnedInvalidLocales = new Set();
49740
+
49741
+ /**
49742
+ * Logs a one-time `console.debug` when an unsupported locale falls back to
49743
+ * en-US. Deduped by the offending tag so noisy re-renders that resurface
49744
+ * the same bad value stay quiet, but each new bad value still signals so
49745
+ * consumers can spot the typo or missing tag.
49746
+ * @private
49747
+ * @param {string|undefined} badLocale - The locale value that failed.
49748
+ * @returns {void}
49749
+ */
49750
+ _warnInvalidLocale(badLocale) {
49751
+ const key = String(badLocale ?? '');
49752
+ const seen = AuroDatePicker._warnedInvalidLocales;
49753
+ if (seen.has(key)) {
49754
+ return;
49755
+ }
49756
+ seen.add(key);
49757
+ // eslint-disable-next-line no-console
49758
+ 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".`);
49759
+ }
49760
+
49485
49761
  /**
49486
49762
  * Lifecycle method to check if the locale is valid.
49487
49763
  * @ignore
@@ -49492,10 +49768,15 @@ class AuroDatePicker extends AuroElement$5 {
49492
49768
  if (changedProperties.has('locale')) {
49493
49769
  try {
49494
49770
  const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
49495
- this._validLocale = supported.length > 0 ? this.locale : 'en-US';
49771
+ if (supported.length > 0) {
49772
+ this._validLocale = this.locale;
49773
+ } else {
49774
+ this._validLocale = 'en-US';
49775
+ this._warnInvalidLocale(this.locale);
49776
+ }
49496
49777
  } catch {
49497
- console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
49498
49778
  this._validLocale = 'en-US';
49779
+ this._warnInvalidLocale(this.locale);
49499
49780
  }
49500
49781
 
49501
49782
  const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
@@ -49577,8 +49858,6 @@ class AuroDatePicker extends AuroElement$5 {
49577
49858
  // Skip centralDate update when user clicked a cell in range mode
49578
49859
  // to prevent the displayed months from shifting
49579
49860
  this.centralDate = this.value;
49580
- //TODO: TEST THIS CHANGE
49581
- // this.calendarRenderUtil.updateCentralDate(this, this.value);
49582
49861
  }
49583
49862
 
49584
49863
  this.setHasValue();
@@ -49638,8 +49917,6 @@ class AuroDatePicker extends AuroElement$5 {
49638
49917
  // Skip centralDate update when user clicked a cell in range mode
49639
49918
  // to prevent the displayed months from shifting
49640
49919
  this.centralDate = this.valueEnd;
49641
- // TODO: TEST THIS CHANGE
49642
- // this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
49643
49920
  }
49644
49921
 
49645
49922
  this.validate();
@@ -49781,7 +50058,7 @@ class AuroDatePicker extends AuroElement$5 {
49781
50058
  * @returns {void}
49782
50059
  */
49783
50060
  configureClickHandler() {
49784
- this.addEventListener('click', this.handleClick);
50061
+ this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
49785
50062
  }
49786
50063
 
49787
50064
  firstUpdated() {
@@ -49803,6 +50080,17 @@ class AuroDatePicker extends AuroElement$5 {
49803
50080
  this.locale = this.domHandler.getLocale(this);
49804
50081
  }
49805
50082
 
50083
+ disconnectedCallback() {
50084
+ super.disconnectedCallback();
50085
+ // Defer so that re-parenting (auro-drawer slotting it into a dialog,
50086
+ // for example) does not abort listeners we still need after reconnect.
50087
+ queueMicrotask(() => {
50088
+ if (!this.isConnected) {
50089
+ this._listenerAbortController.abort();
50090
+ }
50091
+ });
50092
+ }
50093
+
49806
50094
  // layout render methods
49807
50095
  // ------------------------------------
49808
50096
 
@@ -51298,7 +51586,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$3 {
51298
51586
  }
51299
51587
  };
51300
51588
 
51301
- var formkitVersion$1$2 = '202606241801';
51589
+ var formkitVersion$1$2 = '202606251933';
51302
51590
 
51303
51591
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
51304
51592
  // See LICENSE in the project root for license information.
@@ -55626,7 +55914,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$3 {
55626
55914
  }
55627
55915
  };
55628
55916
 
55629
- var formkitVersion$6 = '202606241801';
55917
+ var formkitVersion$6 = '202606251933';
55630
55918
 
55631
55919
  let AuroElement$1$2 = class AuroElement extends i$3 {
55632
55920
  static get properties() {
@@ -59566,7 +59854,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$3 {
59566
59854
  }
59567
59855
  };
59568
59856
 
59569
- var formkitVersion$5 = '202606241801';
59857
+ var formkitVersion$5 = '202606251933';
59570
59858
 
59571
59859
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
59572
59860
  // See LICENSE in the project root for license information.
@@ -61316,7 +61604,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$3 {
61316
61604
  }
61317
61605
  };
61318
61606
 
61319
- var formkitVersion$4 = '202606241801';
61607
+ var formkitVersion$4 = '202606251933';
61320
61608
 
61321
61609
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
61322
61610
  // See LICENSE in the project root for license information.
@@ -66531,7 +66819,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
66531
66819
  }
66532
66820
  };
66533
66821
 
66534
- var formkitVersion$2 = '202606241801';
66822
+ var formkitVersion$2 = '202606251933';
66535
66823
 
66536
66824
  let AuroElement$2$1 = class AuroElement extends i$3 {
66537
66825
  static get properties() {
@@ -80124,7 +80412,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$3 {
80124
80412
  }
80125
80413
  };
80126
80414
 
80127
- var formkitVersion$1$1 = '202606241801';
80415
+ var formkitVersion$1$1 = '202606251933';
80128
80416
 
80129
80417
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
80130
80418
  // See LICENSE in the project root for license information.
@@ -81245,7 +81533,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$3 {
81245
81533
  }
81246
81534
  };
81247
81535
 
81248
- var formkitVersion$3 = '202606241801';
81536
+ var formkitVersion$3 = '202606251933';
81249
81537
 
81250
81538
  var styleCss$1$3 = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
81251
81539
 
@@ -90036,7 +90324,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
90036
90324
  }
90037
90325
  };
90038
90326
 
90039
- var formkitVersion$1 = '202606241801';
90327
+ var formkitVersion$1 = '202606251933';
90040
90328
 
90041
90329
  class AuroElement extends i$3 {
90042
90330
  static get properties() {
@@ -92057,7 +92345,7 @@ class AuroHelpText extends i$3 {
92057
92345
  }
92058
92346
  }
92059
92347
 
92060
- var formkitVersion = '202606241801';
92348
+ var formkitVersion = '202606251933';
92061
92349
 
92062
92350
  var styleCss = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
92063
92351